NAS急救 数据恢复 实战经验

📌 前言
当群晖NAS中的硬盘出现故障或需要更换时,我们往往需要将旧硬盘中的数据安全地拷贝出来。本文以一台DS218Play为例,详细记录了将一块16TB的故障硬盘通过USB硬盘盒连接到NAS,手动组装RAID、激活LVM并最终使用rsync后台拷贝数据的全过程。此方法适用于硬盘为Basic模式、数据分区包含Linux RAID元数据且使用了LVM的场景。

一、准备工作

1.1 硬件连接

  • 将目标16TB故障硬盘装入USB硬盘盒,连接到NAS的USB接口。
  • 将另一块接收数据的移动硬盘(目标盘)也连接到NAS(本文示例为1TB NTFS格式)。

1.2 开启NAS SSH并登录

在DSM中启用SSH:控制面板 → 终端机和SNMP → 终端机 → 启动SSH功能

使用SSH客户端(如Terminal、PuTTY)登录NAS:

ssh admin@你的NAS_IP -p 端口号

输入密码后,切换到root用户(如果需要):

sudo -i

1.3 安装必要工具(如果缺失)

群晖系统通常自带mdadmlvm2,但部分版本可能没有。可以通过Entware安装:

# 如果未安装Entware,先安装(适用于ARMv8架构)
wget -O - https://bin.entware.net/aarch64-k3.10/installer/generic.sh | /bin/sh
export PATH="/opt/bin:/opt/sbin:$PATH"
opkg update
opkg install lvm2 mdadm rsync

注意:如果你的NAS已自带这些命令(可通过which mdadm查看),则可跳过此步。

二、识别硬盘设备

执行fdisk -l列出所有磁盘,根据容量找到16TB硬盘(本文为/dev/sdr)和目标盘(/dev/sdq):

fdisk -l

输出片段:

Disk /dev/sdr: 14.6 TiB, 16000900661248 bytes, 31251759104 sectors
...
Device        Start         End     Sectors  Size Type
/dev/sdr3  21241856 31251554303 31230312448 14.6T Linux RAID

Disk /dev/sdq: 931.5 GiB, 1000170586112 bytes, 1953458176 sectors
...
/dev/sdq1        2048 1953458175 1953456128 931.5G  7 HPFS/NTFS/exFAT

三、处理RAID元数据

群晖Basic模式硬盘的数据分区(如/dev/sdr3)带有Linux RAID元数据,必须先用mdadm组装为RAID设备。

3.1 查看当前RAID状态

cat /proc/mdstat

此时可能只有系统自带的RAID(如md0md1md3),没有16T硬盘的。

3.2 手动组装RAID设备

选择一个未被占用的md编号(例如md9):

/sbin/mdadm --assemble --run /dev/md9 /dev/sdr3

成功后会显示:

mdadm: /dev/md9 has been started with 1 drive.

再次查看/proc/mdstat,确认新增了md9设备:

md9 : active raid1 sdr3[0]
      15615155200 blocks super 1.2 [1/1] [U]

四、激活LVM并挂载数据卷

4.1 扫描并激活卷组

vgscan
vgchange -ay

输出示例:

Found volume group "vg2" using metadata type lvm2
2 logical volume(s) in volume group "vg2" now active

4.2 查看逻辑卷

lvdisplay

找到数据卷(大小约14.5T),本文为/dev/vg2/volume_3

4.3 创建挂载点并挂载(只读模式)

mkdir -p /volumeUSB1/syno_16t
mount -o ro /dev/vg2/volume_3 /volumeUSB1/syno_16t

4.4 验证挂载

ls /volumeUSB1/syno_16t

应该能看到你的共享文件夹(如photohomes等)。

五、挂载目标硬盘

目标盘/dev/sdq1为NTFS格式,系统已自动挂载到/volumeUSB1/usbshare(可通过df -h查看):

df -h

输出:

/dev/sdq1          932G  128M  932G   1% /volumeUSB1/usbshare

如果未自动挂载,可手动挂载:

mkdir -p /volumeUSB1/target
mount -t ntfs /dev/sdq1 /volumeUSB1/target

六、使用rsync后台拷贝数据

为确保SSH窗口关闭后拷贝仍在继续,使用nohuprsync放入后台运行,并将输出保存到日志文件。

6.1 启动拷贝命令

nohup rsync -avP --exclude="@sharesnap" --exclude="@database" /volumeUSB1/syno_16t/ /volumeUSB1/usbshare/syno_backup/ > /volumeUSB1/usbshare/rsync.log 2>&1 &

命令解释:
-a:归档模式,保留权限、时间戳等。
-v:显示详细信息。
-P:显示进度并支持断点续传(中断后重新运行可继续)。
--exclude:排除群晖系统文件夹,只备份个人数据。
> /volumeUSB1/usbshare/rsync.log:将标准输出重定向到日志文件。
2>&1:将错误输出也重定向到同一日志文件。
&:将命令放入后台执行。

执行后会显示一个进程ID(PID),表示任务已开始。

6.2 查看拷贝进度

重新SSH登录后,使用tail实时查看日志:

tail -f /volumeUSB1/usbshare/rsync.log

Ctrl+C退出查看。

6.3 监控后台任务

如果想确认rsync是否仍在运行:

ps aux | grep rsync

七、注意事项

  1. 只读挂载:务必使用-o ro挂载源盘,防止写入加重硬盘损坏。
  2. 供电稳定:3.5英寸大容量硬盘必须使用带独立电源的USB硬盘盒,避免拷贝中断。
  3. 断点续传rsync -P支持中断后继续,即使拷贝中断,重新运行相同命令即可。
  4. 坏道处理:如果遇到输入/输出错误,说明硬盘坏道区域被触及,rsync会跳过该文件并继续后续任务,这是目前最好的结果。
  5. 目标盘格式:NTFS格式可直接在Windows下读取,方便后续使用。

八、结语

通过以上步骤,你可以将群晖NAS中有故障的硬盘通过USB外接方式,安全、稳定地将数据拷贝到另一块健康硬盘中。整个过程利用了Linux强大的软RAID和LVM管理能力,以及rsync的断点续传特性,即使硬盘存在物理坏道,也能最大限度地抢救数据。希望本文能帮助遇到类似问题的朋友们。


—— 全文完 ——

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐