记一次拯救NAS硬盘

2021-11-15
update 2021-11-15
Featured Image

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

图片稍后补充。

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盘了。

sudo mount /dev/md127 ~/disk

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

v 3 移动数据

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

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

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

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

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

Avatar
Kushidou 什么都学,却什么都不精通的一个小白:)