什么告诉initramfs或Ubuntu Server启动过程如何组装RAID阵列?

一个简单的问题:initramfs如何知道如何在启动时组装mdadm RAID阵列?

我的问题:我启动服务器并得到:

Gave up waiting for root device.
ALERT! /dev/disk/by-uuid/[UUID] does not exist. Dropping to a shell!

发生这种情况是因为/ dev / md0(/ boot,RAID 1)和/ dev / md1(即/,RAID 5)未正确组装.我得到的是/ dev / md0根本没有组装. / dev / md1是汇编的,但不是使用/ dev / sda2,/ dev / sdb2,/ dev / sdc2和/ dev / sdd2,而是使用/ dev / sda,/ dev / sdb,/ dev / sdc,/开发/ SDD.

为了解决这个问题并启动我的服务器我做:

$(initramfs) mdadm --stop /dev/md1
$(initramfs) mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
$(initramfs) mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
$(initramfs) exit

它启动正常,一切正常.现在我只需要在启动时正确组装RAID阵列,这样我就不必手动组装它们了.我检查了/etc/mdadm/mdadm.conf,该文件中列出的两个数组的UUID与$mdadm –detail / dev / md [0,1]中的UUID相匹配.

其他细节:Ubuntu 10.10,GRUB2,mdadm 2.6.7.1

更新:我觉得它与超级块有关. $mdadm –examine / dev / sda输出与$mdadm –examine / dev / sda2相同的内容. $mdadm –examine / dev / sda1似乎没问题,因为它输出有关/ dev / md0的信息.我不知道这是不是问题,但它似乎适合/ dev / md1汇编/ dev / sd [abcd]而不是/ dev / sd [abcd] 2.

我尝试将/ dev / sd [abcd]上的超级块归零.这也从/ dev / sd [abcd] 2中删除了超级块,并阻止我完全组装/ dev / md1.我不得不$mdadm – 创建它来取回它.这也使超级块恢复原状.

看看用于组装initramfs的脚本,我认为问题可能只是你的/etc/mdadm/mdadm.conf已经过时了.

当系统与阵列组合时,执行以下命令来更新mdadm配置.您可能需要仔细检查它以防万一.

mdadm --detail --scan > /etc/mdadm/mdadm.conf

完成后,使用以下命令更新initramfs:

update-initramfs

如果这始终失败,则可能会拍摄超级块(用于组装阵列的元数据).您可能需要检查每个驱动器及其分区以进行验证.更糟糕的情况是,通过mdadm将超级块清零并重新创建.

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...