适用机型:所有 TNAS型号
适用版本:TOS 4.2.x(备注中为TOS 5.0.x上存在差别的操作)
当硬盘出现故障,或在硬盘读写时发生停电或异常关机,有可能导致元数据出错或者超级块损坏,从而导致文件系统损坏,系统无法运行,数据无法正常读写。这时我们可以尝试用一些文件系统修复指令来修复损坏的文件系统。
免责声明:
为了您的数据安全,建议由专业人员操作。 在修复过程中,误操作、断电、碰撞等可能导致修复失败导致数据丢失,您的数据仍有机会被彻底破坏。 如果您的数据异常重要,建议您通过专业的数据恢复服务来挽救您的数据。 如果您决定进行维修操作,您需要自行承担所有风险。
如果您有其它足够大的整块存储空间(大于问题卷内的数据量), 建议在尝试修复前优先将数据导出到目标空间.(请通过专用SSH/Telnet工具如putty/FinalShell执行, 且避免电脑进入休眠防止断连.)
代码: 全选
btrfs restore /dev/mapper/vg0-lv0 [目标空间目录]
1. 通过SSH 登录您的TNAS。如何使用SSH 终端登录您的TNAS?
2. 执行以下指令,查看系统日志:
代码: 全选
dmesg

若发现明显的红色字体标识,或带有“Btrfs error”字样的信息,如下图,表示 BTRFS文件系统必定存在异常.
(如果您没有发现类似错误,这并不一定说明完全没有相关错误,可能是本次启动并未触发错误.)

EXT4文件系统的常规修复方式:
(关于第3-7步,如果你的TNAS曾使用过早期的TOS 4.0甚至TOS 3.x.由于当时没有采用LVM管理,可能没有"/dev/mapper/vg0-lv0"这样的目录.请使用"/dev/md0"代替.)
1、在进行修复之前,请先停用 SSD 缓存(如已启用)。如果没有启用缓存,请忽略此步骤。然后,根据您的 TOS 系统版本,执行以下命令以卸载当前的文件系统(卷)。
TOS4.x:
代码: 全选
cd /
umount /mnt/md0
umount /home代码: 全选
cd /
umount /Volume1
umount /home2. 若提示“Target is busy”,请参考以下操作指引解除其他进程对卷的占用,并取消 SSD 缓存, 然后继续执行步骤1。
viewtopic.php?t=4080
若因此导致 root用户自动登出了,请再次登录 SSH并切换到 root用户。
(在 TOS 5 中,卷1对应“/Volume1”而不是“/mnt/md0”)
3. 执行修复指令,并等待修复完成:
代码: 全选
e2fsck -p /dev/mapper/vg0-lv0代码: 全选
/etc/tos/script/mntdata6.若依然存在异常,可重复步骤1、2,然后执行:
代码: 全选
e2fsck -b 32768 /dev/mapper/vg0-lv0 -y7.若依然存在异常,可重复步骤1、2,并执行强制修复指令(有风险,请谨慎考虑):
代码: 全选
e2fsck -f /dev/mapper/vg0-lv0 -yBTRFS文件系统的常规修复方式:
(关于第3-4步,如果你的TNAS曾使用过早期的TOS 4.0甚至TOS 3.x.由于当时没有采用LVM管理,可能没有"/dev/mapper/vg0-lv0"这样的目录.请使用"/dev/md0"代替.)
注意:BTRFS 在使用较早 linux 内核版本的 210 系列型号中并不完美。
如果您的设备型号是 F2-210 或 F4-210,我们建议您备份数据,然后将 BTRFS 卷重建为更稳定的 EXT4 卷。
1、在进行修复之前,请先停用 SSD 缓存(如已启用)。如果没有启用缓存,请忽略此步骤。然后,根据您的 TOS 系统版本,执行以下命令以卸载当前的文件系统(卷)。
TOS4.x:
代码: 全选
cd /
umount /mnt/md0
umount /home代码: 全选
cd /
umount /Volume1
umount /home代码: 全选
cd /
umount /Volume1
umount /var/subvols/8vEbTxkKvwa
umount /home注意:
无论是 ext4 还是 btrfs 文件系统,若要卸载的卷并非该文件系统中的第一个卷,在执行卸载命令时,都需将默认命令 umount /Volume1 中的 /Volume1 修改为对应的卷名,例如要卸载第二个卷,则命令为 umount /Volume2。
另外,在 btrfs 文件系统格式下,后续执行 umount /var/subvols/8vEbTxkKvwa 这类命令时,若涉及非首个卷对应的子卷,也需将命令修改为 umount /var/subvols/8vEbTxkKvw?,其中 “?” 处为对应的子卷名称。这些名称均可通过 df -T 命令查看确认。如下图:

2. 若提示“Target is busy”,请参考以下操作指引其他进程对卷的占用,并取消 SSD 缓存, 然后继续执行步骤1。
viewtopic.php?t=4080
若因此导致 root用户自动登出了,请再次登录 SSH并切换到 root用户。
(在 TOS 5 中,卷1对应“/Volume1”而不是“/mnt/md0”)
3. 执行以下指令,检测 BTRFS文件系统:
代码: 全选
btrfs check /dev/mapper/vg0-lv0
4. 检测完成后,执行以下指令,恢复文件系统:
代码: 全选
btrfs check --repair /dev/mapper/vg0-lv0
5. 如上图,若出现“10 9 8 7 6 5 4 3 2 1”,表示文件系统恢复的概率很大。仅需等待恢复过程结束后,执行以下指令,重新挂载已卸除的文件系统:
代码: 全选
/etc/tos/scripts/mntdata