ext4 raid5 损坏的组描述符

ext4 raid5 损坏的组描述符

我在 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

由于我成功检索了我的数据,我将回答我自己的问题,这也许对某些人有用。

警告 :

  1. 我一直很困惑,当“修复”后fsck,我的驱动器的根目录“隐藏”在lost+found目录内
  2. 我将在这里描述如何“安全地”尝试修复有故障的 ext4
  3. 一如既往:保留所有数据的备份。部分备份很麻烦,我没想到这一点。
  4. 对我来说,热插拔驱动器托架确实是一个优势:在驱动器之间切换时无需重新启动

准备

  • 我买了一个 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/loop0
  • losetup /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/md127 on his own. you can stop it withmdadm --stop /dev/md127 to 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

相关内容