我在 Open Media Vault 上有一个 raid5 NAS,带有 3x 2To 磁盘。
几天前,我插入了另一个 raid 中的备用磁盘。一开始我没有看到它,但我认为这改变了磁盘顺序。然后我运行 cfdisk 来创建一个新卷,可能在错误的 /dev/ 上。我想,不确定。
直到系统重新启动为止一切都正常。
现在我卡在启动界面,出现了一条非常糟糕的消息
日志控制:
Dec 27 20:44:13 pacem systemd-fsck[362]: /dev/md1: One or more block group descriptor checksums are invalid. FIXED.
Dec 27 20:44:13 pacem systemd-fsck[362]: /dev/md1: Group descriptor 0 checksum is 0x0000, should be 0xbd42.
Dec 27 20:44:13 pacem systemd-fsck[362]: /dev/md1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
Dec 27 20:44:13 pacem systemd-fsck[362]: (i.e., without -a or -p options)
突袭似乎还不错
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdd1[0] sdc1[3] sdb1[1]
3907026624 blocks super 1.0 level 5, 32k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/15 pages [0KB], 65536KB chunk
我还检查了dumpe2fs /dev/md1 | grep -i superblock
它说“ext2fs_read_bb_inode:inode 表中缺少一个块组”,但我看到了超级块备份列表。
是否有机会恢复此文件系统?首先尝试的最佳方法是什么?
答案1
由于我成功检索了我的数据,我将回答我自己的问题,这也许对某些人有用。
警告 :
- 我一直很困惑,当“修复”后
fsck
,我的驱动器的根目录“隐藏”在lost+found
目录内 - 我将在这里描述如何“安全地”尝试修复有故障的 ext4
- 一如既往:保留所有数据的备份。部分备份很麻烦,我没想到这一点。
- 对我来说,热插拔驱动器托架确实是一个优势:在驱动器之间切换时无需重新启动
准备
- 我买了一个 6TB 的硬盘(名为备份)
- 将备份驱动器安装到位并格式化 (etx4) 后,我使用 dd 复制了 3 个 raid5 驱动器中的 2 个:
dd if=/dev/sdb of=/mnt/backup/sdb1.img ; dd if=/dev/sdc of=/mnt/backup/sdc1.img
。耗时 10 小时 @ 110mb/s - 切换到另一台带有备份驱动器的电脑
- 使用回送设备,使用以前的映像创建设备,作为一种虚拟驱动器
losetup -f
(如果缺失,则启动 /dev/loopX)losetup /dev/loop0 /mnt/backup/sdb1.img
创建 /dev/loop0losetup /dev/loop1 /mnt/backup/sdc1.img
创建 /dev/loop1- 现在,启动一个新的 raid5,只有 2 个驱动器
mdadm --assemble --run /dev/md1 /dev/loop0 /dev/loop1
。它应该标有[UU_]
显示cat /prod/mdstat
- 请注意,稍后,一旦
/dev/loopX is created, mdadm might create
/dev/md127on his own. you can stop it with
mdadm --stop /dev/md127to create your own
/dev/mdX`
维修
- 现在是时候尝试修复文件系统了,因为尝试挂载会
/dev/md0
显示Group descriptor 0 checksum is 0x0000, should be 0xbd42 ...
- 跑步
fsck.ext4 /dev/md0
- 要回答所有问题的“是”,请按下键
a
- 需要几个小时,可能需要 2 个 fsck 周期(修复后,fsck 会从头重新启动)
挂载和备份
- 然后我就可以跑了
mount /dev/md0 /mnt/data
- 但
/mnt/data
却是空的,除外lost+found/
! - 似乎根目录有些损坏,然后我的所有数据都存储在
lost+found/#17xxxxxx
文件夹中! ls -la /mnt/data/lost+found/\#17*
显示所有内容- ..然后再次备份到我的新 raid(在 3x 4TB 之间购买)
资源 :
https://askubuntu.com/questions/322070/how-can-i-fix-mounting-my-data-drive-after-a-crash
https://askubuntu.com/questions/19901/how-to-make-a-disk-image-and-restore-from-it-later
https://superuser.com/questions/962395/assemble-3-drive-software-raid5-with-one-disk-missing