我已经创建了一个 Raid0,它按预期工作。阵列文件创建于/dev/md0
。我希望通过在文件末尾添加此行来自动安装它/etc/fstab
:
/dev/md0 /mnt/storage ext4 noatime,commit=60,data=writeback,nodiratime,journal_async_commit,nouser_xattr 0 0
并且在末尾有以下一行/etc/mdadm/mdadm.conf
:
ARRAY /dev/md0 metadata=1.2 name=lil-RIKO:lil-RIKO UUID=6016d5e4:6e42cb97:6b2a8e6e:098c1982
在启动时,我看到 /mnt/storage 正在等待挂载,并提供两个选项:跳过...或挂载...我忘了它说了什么。我等了太久,以至于觉得出了什么问题。我进入了“维护模式”,这是一个 root shell,然后我快速检查了文件的存在。文件不在那里,只有 /dev/md127。我尝试挂载该文件,但它抱怨找不到超级块。我在删除文件后/dev/md0
手动挂载了 raid ,然后继续启动。下次重启时,我遇到了同样的问题。mdadm --assemble /md0
/dev/md127
mdadm --stop /dev/md*
为什么 raid 没有自动挂载?启动时没有 /dev/md0,所以我可以手动挂载它。
EDIT1:我已设法通过移除磁盘将其“合并”为 /dev/md127,问题仍然存在,但是当我发出此信息时,cat /proc/mdstat
我得到了以下信息:
md127 : inactive sdc[1](S) sdb[0](S)
7830528 blocks super 1.2
这意味着(我认为)突袭尚未激活。但是当我重新连接它时,它像这样激活:
md127 : active raid0 sdc1[1] sdb1[0]
7830528 blocks super 1.2 512k chunks
这次到底出了什么问题?
答案1
update-initramfs
您是否记得在组装阵列后运行md0
?如果没有,请尝试停止并重新组装阵列,然后再次执行此操作,即
sudo mdadm --stop /dev/md127
sudo mdadm --assemble /dev/md0
sudo update-initramfs -u
这应该使初始根文件系统在启动时“意识到”该阵列
答案2
希望您已经找到答案;如果没有,我刚刚已经解决了这个问题,简短的答案是在 /etc/mdadm/mdadm.conf 中编辑您的阵列定义;基本上删除除 /dev/md* 和 UUID= 信息之外的所有内容(删除元数据、名称等)。重新启动后,您的阵列应该不再存在 md127、md126 等问题。
因此,根据上面的内容,更改
ARRAY /dev/md0 metadata=1.2 name=lil-RIKO:lil-RIKO UUID=6016d5e4:6e42cb97:6b2a8e6e
到
ARRAY /dev/md0 UUID=6016d5e4:6e42cb97:6b2a8e6e
答案3
我遇到了类似的问题,在 fstab 中挂载 md0 阵列失败,并显示“尝试挂载 /mnt/md0 时遇到严重错误”(或类似信息)。我为此折腾了一个小时,但还是无法正常工作。检查了 UUID、/proc/mdstat、mdadm.conf 等,一切似乎都正常。
在 fstab 中添加了 nobootwait 选项,因此它不会锁定启动过程(无头服务器)
对我来说这看起来像是一种竞争条件,因为启动后手动发出 mount 命令可以正常工作。
对我有用的解决方法:
编辑 rc.local,在 exit 0 前添加以下行
睡眠 10 && mount -t auto /dev/md0 /mnt/md0
副作用是挂载点在 10 秒后出现,但我可以忍受。如果没有 sleep 命令,它就不起作用。
希望这对某人有帮助。