我有一个带有 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 恢复并不便宜。