我正在编写一个脚本来自动化创建 RAID 阵列的过程,目前正在尝试弄清楚如何让多台机器识别阵列,以便在收集后可以传输数据。
最终目标是在 RAID 5 阵列中使用一组 5 个 SATA 驱动器,但我目前正在使用 3 个 USB 驱动器进行概念验证。我认为在尝试将其组装到另一台机器上之前停止原始机器上的 RAID 阵列时,我在此过程中遗漏了一些东西。/etc/fstab
我将数组的条目从原始机器复制/etc/mdadm.conf
到另一台机器(我不确定这是否有必要......我假设我可以在没有这个的情况下完成它,只需使用更长的--assemble
命令)。我不得不改变/dev
位置,因为/dev/md0
已经存在于第二个系统上,但没有进行其他更改。然而,在第二台机器上组装它时,3 个驱动器中只有两个报告为活动的,第三个驱动器被忽略,因为它报告其他驱动器之一发生故障。使用--examine
时,数组状态信息如下:
/dev/sdd - Array State: AA.
/dev/sde - Array State: AA.
/dev/sdf - Array State: ..A
/dev/sdf
驱动器是被忽略的驱动器。所以看起来前两个驱动器报告sdf
丢失,但sdf
认为其他两个驱动器丢失。
要停止第一个系统上的阵列,我只需卸载 RAID 位置,然后--fail
ed 和--remove
d 驱动器并--stop
ped RAID。还有什么我忘了做的吗?还是我手动复制 RAID 配置信息造成的这种混乱?或者是其他东西?
不要
--fail
开车出去,也不要--remove
他们。通常,您手动使驱动器脱离阵列的唯一时间是驱动器实际上是烤面包时,或者如果您需要回收驱动器以用于其他目的。您应该能够按照您的程序进行操作,但跳过失败并移除驱动器。
当阵列中的某个驱动器出现故障时,其他阵列成员会说“该驱动器不再是该阵列的一部分”。你不能用它组装。阵列组装好后,您必须重新添加它。这就是你看到“AA”的原因。在两个驱动器上。看起来元数据也被刷新到您失败的驱动器中,因为他认为他也不在阵列中。当您尝试
--fail
将第二个驱动器移出时,它会创建一个不起作用的数组,因此它不会写出元数据。所以你应该在第一个系统上:
mdadm --stop
第一台机器上的阵列。eject
它们。然后将它们移动到第二台机器并执行
mdadm --assemble /dev/mdX /dev/sdX /dev/sdY /dev/sdZ
.