我正在编写一个脚本来自动化创建 RAID 阵列的过程,目前正在尝试弄清楚如何让多台机器识别该阵列,以便在收集后可以传输数据。
最终目标是在 RAID 5 阵列中使用一组 5 个 SATA 驱动器,但我目前正在使用 3 个 USB 驱动器进行概念验证。我认为在尝试在另一台机器上组装 RAID 阵列之前,在原始机器上停止 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 配置信息造成的?还是其他原因?
答案1
不要让--fail
驱动器出故障,也不要让--remove
它们出故障。通常,您手动将驱动器从阵列中移除的唯一情况是驱动器实际上已损坏,或者您需要回收驱动器用于其他用途。
您应该能够按照您的程序进行操作,但要跳过故障和移除驱动器。
当您将一个驱动器从阵列中取出时,其他阵列成员会说“该驱动器不再是该阵列的一部分”。您无法组装它。组装阵列后,您必须重新添加它。这就是为什么您会在两个驱动器上看到“AA。”的原因。看起来元数据也被刷新到了您失败的驱动器中,因为它认为它也不在阵列中。当您尝试将--fail
第二个驱动器取出时,它会创建一个无法运行的阵列,因此它不会写出元数据。
因此,您应该在第一个系统上:
- 卸载您在第一台机器上的阵列上创建的文件系统。
mdadm --stop
第一台机器上的阵列。- 因为它们是 USB 驱动器,所以您应该使用
eject
它们。
然后将它们移至第二台机器并执行mdadm --assemble /dev/mdX /dev/sdX /dev/sdY /dev/sdZ
。