我正在将旧的 Arch Linux 系统迁移到 Ubuntu Xenial,但遇到了 RAID 设备问题。
RAID-1 设备的描述如下:
iliv@sega:~$ grep ARRAY /etc/mdadm/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=sega:0 UUID=c4cf4a52:6daa94c8:6d88a2fa:8f604199
ARRAY /dev/md1 metadata=1.2 name=sega:1 UUID=f7f0d240:f9fb5369:bdfe8219:325d8184
/etc/fstab中有相应记录:
/dev/md0 /mnt/RAIDVault-BACKUP ext4 defaults 0 0
/dev/md1 /mnt/RAIDVault ext4 defaults 0 0
发生的情况是,如果在 Xenial 启动时 /etc/fstab 中有这两行,它显然会忽略 mdadm.conf,为我的设备分配 /dev/md126 和 /dev/md127 设备名称,显然无法挂载它们,因为 /etc/fstab 中没有任何内容解释如何处理 /dev/md126 和 /dev/md127,最终让我进入紧急 shell。
在紧急外壳中,我可以看到我的设备处于“自动只读”模式,已组装并且运行正常。
现在,如果我注释掉 /etc/fstab 中的 RAID 记录,系统就可以正常启动,再次将 /dev/md126 和 /dev/md127 分配给 RAID 设备。最有趣的是,如果在系统启动后立即断开并重新连接我的 RAID 设备,它们就会像它们应该的那样组装为 /dev/md0 和 /dev/md1。然后我可以取消注释 /etc/fstab 条目并照常挂载它们,一切都很顺利。
那么,这里发生了什么,我怎样才能获得“这是 Xenial 的哪个部分??”以遵守 mdadm.conf,但它似乎并没有这样做?
答案1
我的理解是,发生这种情况的原因是因为我的软件 RAID 设备最初不是在此系统上创建的。因此,initramfs 映像对它们一无所知,并且显然试图分配某种默认设备名称 /dev/md126 和 /dev/md127。
为了解决这个问题,我所要做的就是运行:
sudo update-initramfs -k all -u