0x01 写在前面的话
我的QNAP采用QTIER分层存储+raid1模式,NAS由于硬件原因无法开机且机器不在手里,故尝试挂载Linux下恢复和使用Windows版本R-Linux恢复。目前品牌NAS都基于Linux存储框架,定制了自己的内容,使得普通用户无法在其他操作系统下访问数据(ZFS除外,可以直接导入zpool)。
本文讨论恢复QNAP QTIER未加密存储池的方式,后续会有相应文章讨论品牌NAS的最佳存储实践。
0x02 失败的恢复过程 (建立对QNAP QTier结构的理解)
2.1 环境准备
创建虚拟机,直通sas卡,卡上面有qnap下使用两块HC550组的raid1
虚拟机开机后,通过ssh登录,之后查看这两个盘是否可以显示
在Ubuntu中安装mdadm和lvm2
2.2 检查现有信息
通过以下命令扫描现有raid阵列
sudo mdadm --examine --scan
检查现有raid结构
sudo cat /proc/mdstat
黄框内即为QNAP数据分区所组合的raid1,我们的数据也在里面,也就是每个盘的sdc3和sdb3分区
2.3 尝试恢复
通过如下命令使用mdadm启动单独的raid1分区
sudo mdadm -A -R /dev/md9 /dev/sdb3
之后通过如下命令挂载到新创建的目录下
sudo mkdir /mnt/qnap_recover
sudo mount /dev/md9 /mnt/qnap_recover/
至此,如果你的QNAP未开启QTIER,那么此时可以正常挂在ext4,并且成功恢复数据,但是我的QNAP开启了QTIER,同时QNAP定制的LVM模块无法在其他机器上安装,所以需要使用其他方法恢复数据。
使用QuTSCloud,威联通的云NAS系统来尝试重新导入存储池,进而恢复数据
使用专业数据恢复软件,这次尝试使用R-Linux
0x03 使用R-Linux恢复数据
由于在Linux下使用R-Linux需要X11转发等配置,所以本次使用Windows平台,同样把SAS卡直通到Windows虚拟机内,启动虚机。
在Windows虚拟机内可以看到正确识别了对应两个磁盘
3.1 软件下载扫描
下载安装好R-Linux后启动,即可看到磁盘内QNAP的用户数据分区,即之前的drbd(即使配置好了drbd分布式块存储服务,也无法直接读取,因为QNAP定制了LVM模块)
扫描对应分区
扫描整个驱动器,并且把扫描结果保存到文件,以免中途失败丢失结果
3.2 等待扫描结果
等待扫描结束,对于18T的HC550,需要20小时左右,请耐心等待
3.3 分析扫描文件
部分扫描结果如下
扫描出来原始文件名丢失,目录结构丢失,成功恢复的文件也无法打开(初步怀疑还是底层采用drbd的问题),所以还是需要原始QNAP的LVM来加载才可以正确获取相关文件。后续可以尝试使用QuTS Cloud导入现有存储池的方式恢复,由于时间原因和数据重要程度,本次不再做处理,欢迎讨论实践。