我遇到了一个问题,我像往常一样通过 mdadm 组装 RAID0 而不是 RAID6,之后我可以创建文件系统并安装新创建的 RAID60 阵列,没有任何问题。我更新了 mdadm.conf,更新了 initramfs 并检查了 /proc/mdstat,以确保万无一失。
重启后,我可以看到一切都按计划组装,dmesg 日志提供了有关它的信息,一切看起来都很好。
如果我再次重新启动,RAID0 阵列将永远不会再次组装,系统不知道它的存在,dmesg 日志仅显示 RAID6 阵列组装,仅此而已。命令如下:
mdadm -D --scan
cat /proc/mdstat
mdadm --detail /dev/md11 (un-assembeled RAID0 array)
仅显示 RAID6 阵列,或/并且对之前见过的 RAID0 阵列没有任何线索。(md11 不存在)
我可以用
root@server:~# mdadm --assemble --scan
mdadm: /dev/md/11 has been started with 2 drives.
mdadm: /dev/md/14 has been started with 2 drives.
mdadm: /dev/md/15 has been started with 2 drives.
mdadm: /dev/md/13 has been started with 2 drives.
mdadm: /dev/md/12 has been started with 2 drives
现在 RAID0 阵列将组装并启动,我可以看到它们、安装它们、使用它们,先前的命令也证明了它的存在。此外,我现在可以重新启动,在第一次重新启动后再次看到它们,但如果我再次重新启动,同样的故事会继续 - 除非手动组装,否则 RAID0 阵列会丢失。
有任何线索知道为什么会发生这种情况吗?
答案1
您可以编辑 etc/rc.local 并在文件结束之前添加挂载。
或者,您可以配置 conf 和 initrd/initramfs 钩子。
添加conf是第一步:mdadm -D --scan > /etc/mdadm.conf
然后(Debian 示例,可能因发行版而异):
pkg -L mdadm | grep initr.*hook
/usr/share/initramfs-tools/hooks
/usr/share/initramfs-tools/hooks/mdadm
update-initramfs -u
update-grub
另一个建议是在 fstab 中使用 UUID 而不是 dev/md。
其他需要检查的事项:
确保在 mdadm conf 中没有对同一个 RAID 设备 /dev/md 有两个定义。
如果以上没有问题,您可以使用
dpkg-reconfigure mdadm
和update-initramfs -u
(选择“所有”磁盘在启动时启动并更新信息)
答案2
所以我设法用不太好的解决方案解决了
我简单地创建了 rc.local:
#!/bin/sh
mdadm --assemble --scan
mount /dev/md11 /mnt/vol0
mount /dev/md12 /mnt/vol1
mount /dev/md13 /mnt/vol2
mount /dev/md14 /mnt/vol3
mount /dev/md15 /mnt/vol4
exit 0
这样,阵列总是会组装起来,一切看起来都很好,我尝试在每个卷上创建一些文件,重新启动几次,它按预期工作
无论如何,我不太喜欢这个解决方案,但由于我无法找到针对这个有趣的错误的任何其他解决方案,因此它就是这样 :/