在我的mdadm软件RAID上删除/添加驱动器后,如何修复我的服务器以正确启动

我为挂载在/mnt/data上的数据分区configuration了一个RAID-5arrays。 我的系统没有启动//boot在专用驱动器上, 而不是任何RAIDarrays的一部分)。

我通过mdadm(软件RAID)在Ubuntu 12.04上添加了第四个驱动器到我的3个磁盘RAID-5软件arrays。 我的RAIDarrays包含/dev/sdb1dev/sdc1/dev/sdd1.

我用那个命令来添加第四个驱动器:

 mdadm --add /dev/md0 /dev/sde 

然后,我升级了arrays,将其转换成RAID-6 RAID:

 mdadm --grow /dev/md0 --raid-devices 4 --level 6 --backup-file=backup/raid-backup-file 

它工作很好。 服务器工作,并没有启动问题。 唯一的问题是,我看到我添加了第四个驱动器作为整个驱动器。 我应该添加/dev/sde1而不是sde!

为了清理这个,我删除驱动器,并重新添加它,但这次与分区:

 mdadm /dev/md0 --fail /dev/sde --remove --/dev/sde mdadm --add /dev/md0 /dev/sde1 

迁移之后,它工作(arrays是可访问的),除了在下次启动时,由于/ dev / sde丢失(我所有的驱动器都标记为备用),我收到一条消息,说RAIDarrays已经降级,并进入initramfs提示符。 退出该shell之后,服务器将继续启动,而不从我的RAIDarrays挂载数据分区。

login后,我可以停止RAIDarrays,并通过以下方式对其进行重新configuration:

 mdadm --stop /dev/md0 mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 

然后挂载文件系统。 所有数据都在那里,RAIDarrays是干净的。

但是,系统无法正常启动了。 我最后的尝试是删除最后一个驱动器,并通过以下方式将RAID-6arrays重新更改为RAID-5:

 mdadm /dev/md0 --remove /dev/sde1 mdadm --grow /dev/md0 --raid-devices 3 --level 5 --backup-file=backup/raid-backup-file 

但是这并没有解决问题。 在启动时,系统表示arrays已降级,但仍然缺less驱动器sde。

退出initramfs shell之后,像以前一样login并重新组装数组,请参阅数组

 cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdb1[0] sdd1[2] sdc1[1] 3907026816 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 

我还发现,在我的内核消息,驱动器发现(sda,sdb,sdc,sde)和网卡发现后,奇怪的行

 md: bind<sde> 

从哪里来,我怎么能改变这个?

我的RAIDarrays根本不应该包含/ dev / sde的任何参考。

我没有更新initramfs第一次在我的数组更改,我试过后,但没有任何改变。

顺便说一句,这是我的/etc/mdadm.conf:

 DEVICE partitions CREATE owner=root group=disk mode=0660 auto=yes HOMEHOST <system> MAILADDR root ARRAY /dev/md0 metadata=0.90 UUID=4d84e24c:e40f825f:3ba42e3c:267295e2 

sde设备上必须保留一些md元数据。

  • 从RAID设备中删除sde1。
  • 完全擦除sde md元数据(使用dd并取决于元数据的版本及其在磁盘上的位置),如下所示:

    dd if = / dev / zero of = / dev / sde bs = 4096 count = 1 seek = 1

    甚至更好:

    mdadm –misc –zero-superblock / dev / sde

  • 重新创build您的sde1并将其添加到md0设备,并更新您的mdadm.conf,如果您仍然希望它包含UUID(您也可以恢复以前的元数据,如果您第一次备份)

你更新你的md设备后,是否尝试重新生成initrd? 尝试更新initramfs或匹配您的分配的工具。 也可能是更新你的盗版者(grub-pc的update-grub2)

还尝试在mdadm.conf中为md0指定分区uuids。