我有一个在 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.conf
mdadm.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
并不完全正确。