双磁盘故障后软件 Raid 10 超级块损坏,如何恢复?

双磁盘故障后软件 Raid 10 超级块损坏,如何恢复?

我有一个带有 6 x 2tb 硬盘的软件 raid 10(raid 1 用于 /boot),ubuntu 10.04 是操作系统。

我遇到了 raid 控制器故障,导致 2 个驱动器不同步,导致系统崩溃,并且最初操作系统无法启动而是进入 initramfs,提示驱动器正忙,但我最终设法通过停止和组装驱动器来启动 raid。

操作系统启动并提示文件系统错误,我选择忽略,因为如果出现问题,它会以只读模式重新挂载文件系统。

一切似乎都运行良好,并且 2 个驱动器开始重建,我确信这是 SATA 控制器故障,因为我的日志文件中出现了 dma 错误。

此后不久,操作系统就因扩展错误而崩溃。

现在它没有启动突袭,它说 /dev/sda2 上没有超级块,即使我手动组装了所有设备名称。

除了其他一切之外,我还做了内存测试并更换了主板。

编辑:这是我的分区布局

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0009c34a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      511999      254976   83  Linux
/dev/sdb2          512000  3904980991  1952234496   83  Linux
/dev/sdb3      3904980992  3907028991     1024000   82  Linux swap / Solaris

所有 6 个磁盘的布局相同,分区 #1 用于 raid 1 /boot,分区 #2 用于 raid 10 far plan,分区 #3 是交换分区,但 sda 未启用交换分区

EDIT2:这是 mdadm --detail /dev/md1 的输出

Layout : near=1, far=2
Chunk Size : 64k

UUID : a0feff55:2018f8ff:e368bf24:bd0fce41
Events : 0.3112126

Number Major Minor RaidDevice State
0      8     34    0          spare rebuilding /dev/sdc2
1      0     0     1          removed
2      8     18    2          active sync /dev/sdb2
3      8     50    3          active sync /dev/sdd2
4      0     0     4          removed
5      8     82    5          active sync /dev/sdf2

6      8     66    -          spare /dev/sde2

EDIT3:我运行了 ddrescue,它从 sda 复制了所有内容,除了一个 4096 字节扇区,我怀疑它是 raid 超级块

EDIT4:这里有一些信息太长,不适合在这里放。

左手边:http://pastebin.com/2eKrh7nF

mdadm --detail /dev/sd[abcdef]1 (raid1):http://pastebin.com/cgMQWerS

mdadm --detail /dev/sd[abcdef]2 (raid10):http://pastebin.com/V5dtcGPF

/dev/sda2 的 dumpe2fs(来自 ddrescue 克隆的驱动器):http://pastebin.com/sp0GYcJG

我尝试使用命令根据此信息重新创建 md1

mdadm --create /dev/md1 -v --assume-clean --level=10 --raid-devices=6 --chunk=64K --layout=f2 /dev/sda2 missing /dev/sdc2 /dev/sdd2 missing /dev/sdf2

但我无法挂载它,我也尝试根据我的初始 mdadm --detail /dev/md1 重新创建它,但它仍然无法挂载

它还警告我 /dev/sda2 是一个 ext2fs 文件系统,但我猜这是因为 ddrescue

EDIT5:我发现 /dev/sdb 实际上是 /dev/sdc,反之亦然,而且我还犯了一个重大错误,因为我使用的较新的 live cd 默认为 1.2 元数据,这可能已经破坏了这些磁盘上的数据,幸好我将它们克隆到了其他 6 个驱动器上。

EDIT6:我最终设法通过再次重建阵列来恢复阵列,这次使用了正确的 --metadata 选项。如果有人处于我的情况并正在阅读本文,那么镜像数据非常重要,这样您就可以像我一样从错误中恢复过来,还要确保 mdadm --examine 所有驱动器,因为它们的名称在启动实时 CD 时会发生变化,并且按正确的顺序重建很重要,任何标记为备用的驱动器都必须设置为丢失。

答案1

作为专业数据恢复公司的所有者,重建此类损坏的 RAID 的正确方法是创建每个驱动器的克隆或映像。切勿使用原始驱动器。一旦您拥有驱动器映像,您就需要使用某种软件(如 X-Ways)重新创建 RAID。务必保持驱动器的正确顺序!重建 RAID 阵列可能相当复杂,如果数据很重要,您应该给驱动器贴上标签并将其发送给信誉良好的公司,但大多数 RAID 恢复并不便宜。

相关内容