---
title: 记一次拯救NAS硬盘
date: 2021-11-15T10:02:30+08:00
lastmod: 2021-11-15T10:02:30+08:00
draft: false
description: "黑群晖拿下来的硬盘不小心删除分区后进行数据拯救。"
authors:
  - Kushidou
tags:
  - NAS
  - 群晖
  - 数据恢复
categories: []
toc: true
comments: true
---

更新家里的NAS，手滑把原来NAS硬盘的分区信息删掉了。如何拯救盘里的数据？

<!--more-->



*图片稍后补充。*

## v 0 起因

双十一买了两块新的4T紫盘，打算升级一下家里的黑群晖。原来黑群晖是用一台N手工控机+1TB希捷笔记本硬盘（看缓存和速度肯定是SMR盘了），数据安全几乎为0.

考虑到小工控机的电源带不动那么多硬盘，机箱也没有空间，就把家里闲置的i3台式机整了过来，拆掉原来的硬盘装上紫盘组新nas了。顺手拆了一个捡来的监控机上的1TB西数紫盘。

为了节约迁移系统和数据的时间，我打算拿两个sata易驱线，用DiskGenuies进行克隆。后来网上冲浪发现群晖系统是认硬盘SN的，也就是说我克隆的数据没有一丁点用，加上手头上没有2.5转3.5的转接件，就考虑把笔记本盘放回老nas，然后直接拷贝或者备份到新nas。

## v-1 杯具

当我按下取消的时候，惨剧发生了。其实整盘克隆的时候，DG会删除所有分区，克隆完了再重建分区。我取消克隆，然后退出DG。它提示我是否保存分区更改，我以为是1T紫盘的分区，顺手点了个否。当我重启DG的时候，发现希捷笔记本盘只剩一条灰色，未分区的区域。

## v-2 尝试

DG有个功能是搜索重建分区表，我第一时间进行搜索。此时还没有网盘内**写入任何内容**，也**没有格式化**。数据应该是都在的，只要按照原来的样子重新分区应该就能重新读写数据了。

为什么不手动分区？因为群晖会在硬盘上先建立一个系统分区，然后建立swap分区，空一段空间后再建立数据分区。每个分区开始和结束的位置都是未知的，网络上也没有可以参考的内容。

经过一个多小时的搜索，除了第一个2.4GB的系统分区被找到以外，一无所获。我怀疑是不是我期间制作黑裙启动盘影响了，又搜索了一遍，好家伙还是没有。

搜索期间网上冲浪找前人的肩膀，结果他们要么是分区没被删直接装Windows下btrfs驱动（gitee开源）读取（群晖坏了），要么是DG轻松搜出全部分区（和群晖无关）。我还尝试查找丢失文件，依然一无所获。

难道就这么放弃了么？

## v 1 曙光

群晖使用的BTRFS格式不是什么群晖专用格式，而是SUN（Oracle收购）开发的新一代文件系统，针对ext3/4进行优化升级。所以比较新的Linux系统都支持使用这个格式；装个驱动也能轻易读取。

我本来笔记本是有Deepin系统的，上次win10损毁了我就格掉装了win11。后来想起来我还有块树莓派正跑着linux系统。但是没有分区的硬盘上了Linux也啥都读不到。恰好这时候新nas的系统已经起来了，1T紫盘上的独立分区也建立好了。两款空间一样的盘，同样版本的群晖系统，建立一样的存储空间后，那不就是连分区也一模一样了么？！

开搞，ssh连上群晖，用sudo blkid看到硬盘实际的分区信息，它正好是显示的扇区起止、大小。打开DG，手动分区，按照群晖的磨样给小硬盘手动分区。DG不支持btrfs分区，那我随便挂一个ext4吧。分区过程和保存的时候，千万不要格式化了。

把小硬盘用易驱线连上树莓派，`lsblk`看到这个硬盘有三个分区，其中`/dev/sda3`下面还有一个`md127`，不知道是啥，查看发现是raid。群晖的数据区，哪怕是单盘basic也是以raid方式存在的，方便以后升级raid模式吧大概。也就是说，虽然我分区表是瞎分的，Linux还是能够正确读取到原来的分区和文件系统。

## v 2 得到数据

安装`mdadm`软件包，我的树莓派不带这个，然后就能挂载raid盘了。

```bash
sudo mount /dev/md127 ~/disk
```

disk目录提前建立好了，把机械盘挂载上去，cd到目录里，然后我就发现了新世界的大门。盘里有个`NasData`目录，这正是我当时保存文件的地方。cd进去，在！都还在！

## v 3 移动数据

我打算直接把就数据拷贝到新NAS里去了，烤到移动硬盘再复制到nas大费周章的。

在NAS里的主共享文件夹启动NFS服务，映射为root，允许所有来源的读写，然后到树莓派中挂载nfs

```bash
sudo mount -t nfs 10.x.x.x:/volume2/NasData ~/Nasdata
```

主目录下提前建立Nasdata目录，挂载完成后新Nas的内容也都出现了。不想一个个复制文件，CP指令不支持排除不想要的文件（毕竟还有部分文件依然保存在移动硬盘和笔记本里，树莓派只支持2.4GHz的wifi太慢），最终我选择了rsync指令进行“本地复制”。

```bash
rsync -vrultD --exclude '文件名' --exclude '目录名' ~/disk/NasData/* ~/Nasdata/临时目录
# -v 详细输出 -r 递归拷贝(保留目录结构) -u 仅更新，防止中断再开后重新拷贝 -l 保留软连接 -t 保留时间信息 -D 保持设备文件信息
# 不用-a 是因为对拷过去的文件赋权限时疯狂报错失败
```

经历树莓派三次死机两次中断后，我终于抢救了500G数据中的50G（另外450包括百度云同步、移动硬盘依然保存着的动漫视频等）。

## v 4 结论

现在数据和小姐姐们都住在一个raid1备份的空间中，应该轻易不会发生无家可归的情况了。

这次事件完全是我自己作死，群晖其实提供了备份功能，可以完整的把数据、部分设置乃至我的Docker容器都完整备份到新NAS里（只要两台都在线），而且树莓派的wifi只有5MiB/s，比起家里千兆的内网，速度慢了数十倍，时间也花了我整整一下午。

总之硬盘出了事故不要慌，只要不是物理损坏，都有机会修复。除了事故后第一时间就要停止读写，更不要格式化，先尝试重建分区表，失败了换个系统试试。说不定我不重建，放到Linux上也能看到正常的三个分区呢？

![image-20211115095410121](https://cdn.jsdelivr.net/gh/kushidou/PicLibrary//img/202111150957877.png)
