服务器升级后恢复 Linux 软件 RAID5 阵列

服务器升级后恢复 Linux 软件 RAID5 阵列

我最近将一台服务器从 Fedora 6 升级到了 Fedora 14。除了安装操作系统的主硬盘之外,我还通过软件配置了 3 个 1TB 硬盘,用于 RAID5。升级后,我注意到其中一个硬盘已从 RAID 阵列中移除。我尝试使用 mdadm --add 将其添加回来,但它只是将其作为备用硬盘放入。我想我稍后再回来处理它。

然后,在执行重新启动时,系统根本无法安装 raid 阵列。我将其从 fstab 中删除,以便可以启动系统,现在我正尝试恢复 raid 阵列。

我运行了以下命令:

mdadm --create /dev/md0 --assume-clean --level=5 --chunk=64 --raid-devices=3 missing /dev/sdc1 /dev/sdd1

我知道我的块大小是 64k,“丢失”是指被踢出阵列的驱动器(/dev/sdb1)。

这似乎起了作用,并且 mdadm 报告阵列在缺少驱动器的情况下“干净、降级”地运行。

但是,我无法安装 RAID 阵列。当我尝试:

mount -t ext3 /dev/md0 /mnt/foo

我得到:

mount: wrong fs type, bad option, bad superblock on /dev/md0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

/var/log/messages 显示:

EXT3-fs (md0): error: can't find ext3 filesystem on dev md0.

有人知道下一步该尝试什么吗?

答案1

您可能将missing驱动器放在了错误的位置。只有驱动器的位置正确,missing才会起作用。只需运行:

mdadm --examine  /dev/sdb1

这将输出(除其他信息外)RAID 中的编号是真的缺失。查找以下this行:

      Number   Major   Minor   RaidDevice State
this     0     253       13        0      active sync   /dev/dm-13

在本例中,它是 0 号(=第一个设备),active因为我的 RAID 现在在线。现在你知道应该指定哪个驱动器了missing

但你仍然有两个选择:在职的驱动器可能也需要更换。但是,这些信息会丢失,因为它被您的重新组装尝试覆盖了。

答案2

我发现,mdadm --create /dev/md0 --assume-clean只有使用与创建原始阵列时相同(或接近)的 mdadm 版本,才能正常工作。这是因为它们对数据和元数据使用不同的偏移量,即使超级块版本相同(如 1.2)

问题是 mdadm 输出总是说它重新创建了阵列,但是 /dev/md0 中包含的数据是错误的。

例如,使用最新的 mdadm 3.3.2 甚至之前的 3.2.5 对我来说不起作用,但回退到 mdadm 3.1.4(创建了数组)就可以了。

请注意,在重新创建阵列时,我还注意按正确的顺序指定驱动器(如中所述mdadm --examine /dev/sd?),并使用覆盖文件进行所有测试(以免增加损坏),使用说明https://raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID

在我的例子中,问题出在 6 磁盘 RAID5 上,它正在扩展到 7 磁盘,但它根本没有进展,所以被中止了,并且不会再组装mdadm: Failed to restore critical section for reshape, sorry.,并且--force--invalid-backup也没有帮助,所以我不得不使用--create --assume-clean

相关内容