在过去的两个晚上,我们在运行 Ubuntu Linux 12.04 LTS 和 Linux mdadm 软件 RAID10 的服务器上遇到了神秘事件:
DeviceDisappeared /dev/md0
NewArray /dev/md127
两条消息都出现在同一秒内,与 logrotate cron 操作发生的时间相同。尽管数组仍在/dev/md0
中命名,但它在 的输出中/etc/mdadm/mdadm.conf
显示为:/dev/md127
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md127 : active raid10 sdb1[0] sdg1[5] sdc1[1] sdh1[6] sdf1[4] sdd1[2] sdk1[9] sdj1[8] sde1[3] sdi1[7]
9746600960 blocks 512K chunks 2 near-copies [10/10] [UUUUUUUUUU]
unused devices: <none>
为什么会这样?我该如何解决这个问题?
答案1
我搞清楚了:/etc/mdadm/mdadm.conf
由于三天前发生了一些“不小心”的系统管理员活动,文件中的 UUID 与此服务器中实际软件 RAID 阵列的 UUID 不匹配。将此文件中的 UUID 编辑为以下命令显示的 UUID(就我而言,YMMV):
mdadm --examine /dev/sdb1
并使用命令重新创建 initrd 映像(参见下面的 EDIT2021):
update-initramfs -u -k all
并且随后的重新启动将命名修复回/dev/md0
。
编辑:@Michael Hamptons 评论:配置文件中行/dev/md0
中提到的设备名称可能会被替换为类似 之类的名称。但我还没有尝试过:mdadm.conf 手册页中的示例使用类似 的设备名称。我不确定这样的替换是否可行:或中更抽象的设备名称稍后会动态创建。ARRAY
/etc/mdadm/mdadm.conf
/dev/disk/by-label/DATA
/dev/md*
/dev/disk/by-label/*
/dev/disk/by-uuid/*
编辑2021:上面提到的命令:
update-initramfs
是 Debian/Ubuntu 衍生 Linux 发行版特有的脚本。在 RedHat 衍生发行版(Fedora、CentOS 等)上,可以使用以下命令为当前活动内核创建一个新的 initramfs 文件:
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`