由于启动时 /dev/sd[af] 反复重新排序(Debian7),所以我无法组装小型 RAID5。
md0 最初使用 sd[abc]1,它包含一个 LUKS 设备,而该设备又包含一个 ext4 文件系统。ext4 文件系统(已使用 fsck 验证)以及所有磁盘 sd[abc](已使用 smartctl 验证)均正常运行。
目前,RAID 设备不是 sd[abc]1 而是 sd[abd]1。mdadm --examine 可以正确识别所有设备(相同的 UUID、相同的事件计数),但即使在检查 /dev/sdd1 时也会显示 sdc1 是阵列的一部分。
我认为如果重新启动能给我原始顺序,一切都会再次正常工作。
现在我看到两种解决方案,但我都找不到如何实现它们:
- 阻止 Debian 重新排序
- 确保 mdadm 不依赖于 /dev/sd[af]1 设备的精确匹配
我怎样才能实现这两个目标之一,或者我还能做些什么来让 mdadm 运行?
mdadm.conf:
DEVICE /dev/sd[abcef]1
CREATE owner=root group=disk mode=0660 auto=yes
HOMEHOST <system>
MAILADDR root
ARRAY /dev/md0 UUID=b00e130c:359e5dfc:461cb5c0:61dedce4
编辑:
我刚刚发现了一些相当琐碎的事情,我不记得在任何地方明确地读过,以前也不知道:以正确的顺序传递匹配的 RAID 设备(可能与前一个不同)有助于组装……至少手动组装。就我而言(另一次重新启动给了我设备的 sd[bcd]1,按此顺序):
# mdadm --assemble -v /dev/md0 /dev/sd[bcd]1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 2.
mdadm: added /dev/sdc1 to /dev/md0 as 1
mdadm: added /dev/sdd1 to /dev/md0 as 2
mdadm: added /dev/sdb1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 3 drives.
mdadm --detail 和 mdadm --examine 现在也会在其列表中显示正确的设备名称,例如,现在在检查 sdd1 时也会正确报告 sdd1 是阵列的一部分。
编辑2:
我刚刚注意到,实际上 mdadm.conf 中缺少 sdd1。虽然这肯定不对,但我还尝试在调用 madam 以及扫描时明确列出所有设备,即mdadm --assemble /dev/md0 /dev/sd[abcd]1
和mdadm --assemble --scan
。两者都没有组装。
答案1
找到了问题的解决方案。我的 mdadm.conf 中缺少 sdd1 导致了所有问题:
一旦 mdadm.conf 包含所有设备(它可能包含比必要更多的设备),mdadm --assemble --scan 也会起作用。
附注:在显式调用 mdadm --assemble /dev/md0 /dev/sd* 中,sd* 的顺序并不重要,但正确的设备集很重要。因此,如果 sd[acd] 是数组的一部分,则 sd[dca] 可以工作,而 sd[abcdef] 则不行。这与 mdadm.conf 中的内容无关。