mdadm 卷可以工作,但是在启动时无法组装/挂载?

mdadm 卷可以工作,但是在启动时无法组装/挂载?

我有一个在 Ubuntu 10.04 中创建的包含 4 个 HD 的 mdadm/lvm2 卷。我刚刚将计算机升级到 Ubuntu 10.10。

我重做了 mdadm 命令来启动并运行卷,执行了 mdadm --detail --scan > /etc/mdadm/mdadm.conf 来获取配置文件。

但是现在,每次我重新启动时,它都会告诉我卷尚未准备好。 /proc/mdstat 表示我始终有一个卷的磁盘处于“非活动”状态,即 md_d127。我需要停止此卷并重新组装整个卷才能使其正常工作。

这是我从 mdadm --detail --scan 中获得并放入 /etc/mdadm/mdadm.conf 中的内容:

ARRAY /dev/md127 level=raid5 num-devices=4 metadata=01.02 name=:r0 UUID=7610a895:a54fe65b:c9876d2a:67f4a179

这是我启动时的 /proc/mdstat:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md127 : inactive sdb1[2](S) sdd1[0](S) sda1[4](S)
      2930279595 blocks super 1.2

md_d127 : inactive sdc1[1](S)
      976759865 blocks super 1.2

unused devices: <none>

我需要执行 mdadm -S /dev/md_d127、mdadm -S /dev/md127、mdadm -A --scan 才能使该卷再次工作。

发生了什么事?Ubuntu 10.04 没有发生这种情况。我现在真的很担心我的 raid5 数据会丢失。

答案1

问题是 的更新版本mdadm依赖于mdadm.conf中的现有内容initrd,而这可能不准确/不完整。要验证其内容,请执行以下操作:

gunzip -c /boot/initrd.img-2.6.38-11-generic | cpio -i --quiet --to-stdout etc/mdadm/mdadm.conf

如果它不包含准确的 ARRAY 条目,mdadm 将尝试使用超级块中配置的名称作为 下的链接名称/dev/md/,这将链接到类似 的内容/dev/md127。这显然与之前的行为不符。

mdadm -Ds与直接使用或mdadm -Es生成相比/etc/mdadm/mdadm.conf,使用脚本可能更好/usr/share/mdadm/mkconf

sudo /usr/share/mdadm/mkconf force-generate /etc/mdadm/mdadm.conf

最重要的步骤是重建你的 initramfs 以包含更新的配置:

sudo update-initramfs -u

实际上,得益于 中的魔法/usr/share/initramfs-tools/hooks/mdadm,如果不存在或不包含数组,/usr/share/mdadm/mkconf会自动运行。如果它存在并且仅包含活动数组的子集,则会为每个缺失的数组显示警告,您应该手动生成一个新的。/etc/mdadm/mdadm.confmdadm.conf

答案2

您还可以检查 udev 是否​​正在加载 mdadm。

寻找/lib/udev/rules.d/85-mdadm.rules;确保它有类似这样的内容:

\# This file causes block devices with Linux RAID (mdadm) signatures to
\# automatically cause mdadm to be run.
\# See udev(8) for syntax

SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid*", \
        RUN+="/sbin/mdadm --incremental $env{DEVNAME}"

如果没有,请将其复制到/etc/udev/rules.d/85-mdadm.rules-请/etc注意/lib

答案3

我已采取重新格式化整个阵列的措施。这在 Ubuntu 10.10 中有效。

sudo mdadm -C /dev/md0 -l 5 -n 4 -e 1.2 /dev/sd[bcde]1
sudo mdadm -Ds | sudo tee /etc/mdadm/mdadm.conf

sudo pvcreate /dev/md0
sudo vgcreate vg0 /dev/md0
sudo lvcreate vg0 --name lv0 --extents '100%FREE'

sudo mkfs.ext4 /dev/vg0/lv0

答案4

请编辑此

metadata=01.02

metadata=1.02

因为结果

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

并不完全正确。

相关内容