记一次群晖NAS数据恢复
2024年7月31日
背景:群晖坏了 买个二手
我在2019年购入了群晖DS218+作为家里的主要存储设备,几年来一直正常使用,除了归档的文件之外,还存了家里几个人所有的照片视频,并时常从手机上自动备份新的照片视频。
前几天,我突然发现群晖所有的灯都不亮了,一开始以为是某次关机后没有再次开机,于是手工开机试了一下,才发现没有任何反应。在排除了电源的问题后,我开始怀疑是NAS硬件出了问题。
自己拆开看了一下,发现主板上有一颗芯片有明显的烧毁痕迹,应该是短路导致的。鉴于这已经超出我的能力范围,于是在网上找了一家维修店,后来对方反馈除了我看到的芯片短路之外,EC芯片也有问题,而EC芯片中有加密的程序,导致第三方无法维修。
经过5分钟的快速思考,我决定先买个二手低端机顶一下,能正常读写数据和备份照片即可,至于其他的后续再打算。于是就在闲鱼上淘了一台DS218J,于是踩坑之旅正式开始。
数据恢复方案
一开始想得很简单:直接把硬盘换到新的机器上,然后就能一切照旧。但在我兴奋地插上两块硬盘之后,发现新的机器上无法看到原来的文件夹,看了下存储管理器,发现原来DS218J不能使用BTRFS文件系统,而我的DS218+上的硬盘正是BTRFS文件系统!
对于这一点,我至今仍然在震惊当中,BTRFS是Linux底层的文件系统,为什么群晖会在不同型号的机器上使用不同的文件系统?
于是开始手忙脚乱地设计数据恢复方案,我所拥有的条件:
- 一台DS218J,不支持BTRFS文件系统
- 两块RAID 1硬盘,BTRFS文件系统
- 一台macbook笔记本,可以安装Linux虚拟机
- 一个USB 3.0硬盘盒
- 一个macbook扩展坞,集充电、HDMI、USB、网络接口等功能于一体
- 一个国外的网络存储,有和硬盘中完全一样的数据备份
最终设计的数据恢复方案(省略中间各种决策过程):
- 将原本作为RAID 1使用的两块硬盘拆开使用,一块放入USB 3.0硬盘盒中,另一块放入DS218J中
- 将USB 3.0硬盘盒通过扩展坞连接到macbook上,使用Linux虚拟机挂载硬盘
- 通过虚拟机文件共享机制,先将硬盘上的数据复制到macbook上
- 逐步将macbook上的数据复制到DS218J中
- 当所有的数据全部存入DS218J中的硬盘之后,再重新将两块硬盘组成RAID 1
操作步骤
参考群晖官方文档
sh
# 安装mdadm和lvm2
apt-get update
apt-get install -y mdadm lvm2
# 重组磁盘阵列
mdadm -AsfR && vgchange -ay
# 获取磁盘阵列的信息
cat /proc/mdstat
lvs
# 只读挂载目录
mkdir /mnt/ds
mount /dev/vg1000/lv /mnt/ds -o ro
# 安装mdadm和lvm2
apt-get update
apt-get install -y mdadm lvm2
# 重组磁盘阵列
mdadm -AsfR && vgchange -ay
# 获取磁盘阵列的信息
cat /proc/mdstat
lvs
# 只读挂载目录
mkdir /mnt/ds
mount /dev/vg1000/lv /mnt/ds -o ro
踩的一些坑和注意事项
- 虚拟机必须用Ubuntu 18.04.4以下的版本,否则在读取磁盘阵列的时候会出现错误,具体原因可参见这篇文章。
- 虚拟机软件用的UTM,可能是因为USB 3.0支持有问题,当macOS中显示的扩展坞是USB 3.0 Hub时,虚拟机中无法识别硬盘,最终我找了一根“不那么厉害”的线,插上去之后macOS中显示为USB 2.0 Hub,此时才能在虚拟机中识别硬盘,但USB 2.0速度很慢,这导致从硬盘中读取文件需要很长时间
- 由于硬盘是BTRFS文件系统,所以在虚拟机中挂载硬盘的时候,需要先安装BTRFS工具,否则会报错。
- 文件传输到DS218J速度极慢,尤其是大量小文件时,速度可能只有20M/s左右,大约1G/分钟,并且无论是SMB协议还是NFS、FTP协议,速度都差不多,原因不明。
一些感想
- 硬件产品还是挺麻烦的,不出问题的时候啥都好,一旦出问题就得全靠自己
- 数据备份非常重要,尽管群晖坏了,但我完全不担心数据会丢失,因为硬盘是好的,且两块硬盘互为备份,而且还有一份在网络存储中
- 除了数据不丢之外,数据能被访问到也很重要,比如这次群晖坏掉之后所有的数据都无法访问
- 群晖的官方文档还是比较清晰的,只不过我在查了很多第三方资料,踩了很多坑之后才发现官方文档,浪费了不少时间