我的情况与这个不同。
我有一个带有 3 个硬盘驱动器和以下软件 RAID 阵列的 CentOS 系统:
/boot on RAID 1 over 2 disks
/ on RAID 5 over 3 disks
swap on RAID 0 over 2 disks (I believe)
我的第三个驱动器失败了。一开始,没什么大不了的,阵列还在工作。但是 1 天后,当我准备更换坏盘时,系统无法再用新盘启动:
md: md2: raid array is not clean -- starting background reconstruction
raid5: cannot start dirty degraded array for md2
raid5: failed to run raid set md2
[...]
Kernel panic
它停在那里。我没有贝壳。我试图在救援磁盘上,但我不知道如何从那里开始:我的阵列没有被看到,所以我无法重建它们。如果我使用 2 个磁盘启动,或者将坏磁盘作为我的第三个驱动器,则会出现完全相同的问题。
有了新驱动器后,如何修复阵列?
不知何故,您设法将阵列停止在脏状态(这意味着 RAID 系统无法确定所有磁盘上的奇偶校验是否正常)。如果机器突然断电,或者其他一些导致写入空洞的事件,就会发生这种情况。
我怀疑使用 --force 选项从救援 CD 手动重新组装阵列可能会起作用,如下所示:
(用构成 RAID-5 阵列的现有设备替换 /dev/sd... )。假设这有效并且 /proc/mdstat 显示了已组装的数组(处于降级状态),那么您可以添加新分区,如下所示:
如果最初的强制组装没有奏效,那么你就深陷困境。在谷歌几分钟后发现http://www.linuxforums.org/forum/servers/77867-eeek-cant-assemble-degraded-dirty-raid6-array.html似乎处理了类似的问题,所以它可能值得尝试所谓的在那里工作(
echo "clean" > /sys/block/md0/md/array_state
),但这是一种稍微丑陋的做事方式。无论您如何设法将 RAID 组重新组合在一起,它肮脏和降级的事实意味着内容真的不再可信。文件系统可能存在元数据损坏(fsck应该修复),或者一个或多个文件的内容可能已损坏(如果不验证分区上所有文件的内容,您将不会知道这一点)。
System Rescue CD有mdadm 工具,所以如果您知道如何使用它们,它应该对您有用。