Linux 软件 RAID10:将 /dev/md0 神秘地重命名为 /dev/md127:为什么?

pef*_*efu 4 linux mdadm software-raid

在过去的两个晚上,我们在运行 Ubuntu Linux 12.04 LTS 和 Linux mdadm 软件 RAID10 的服务器上发生了一些神秘事件:

DeviceDisappeared /dev/md0
NewArray /dev/md127
Run Code Online (Sandbox Code Playgroud)

两条消息出现在同一秒,与 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>
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该如何解决?

pef*_*efu 6

我想通了:/etc/mdadm/mdadm.conf由于三天前发生的一些“不小心”的系统管理员活动,文件中的 UUID 与该服务器中实际软件 raid 阵列的 UUID 不匹配。将此文件中的 UUID 编辑为(在我的情况下为 YMMV)命令显示的 UUID:

mdadm --examine /dev/sdb1 
Run Code Online (Sandbox Code Playgroud)

并使用以下命令重新创建 initrd 映像:

update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)

并且随后的重新启动将命名修复为/dev/md0.
编辑: @Michael Hamptons 评论:配置文件/dev/md0中的ARRAY行中提到的设备名称/etc/mdadm/mdadm.conf可能会替换为例如/dev/disk/by-label/DATA. 但我还没有尝试过:mdadm.conf 手册页中的示例使用设备名称,如/dev/md*. 我不确定这样的替换是否可行:更抽象的设备名称/dev/disk/by-label/*/dev/disk/by-uuid/*稍后动态创建。