我为安装在/mnt/data
. 我的系统未在其上启动(/
并且位于不属于任何 RAID 阵列/boot
的专用驱动器上)。
我通过 mdadm(软件 RAID)在 Ubuntu 12.04 上为我的 3 个磁盘 RAID-5 软件阵列添加了第 4 个驱动器。/dev/sdb1
我的dev/sdc1
RAID阵列包含/dev/sdd1.
我使用该命令添加了第四个驱动器:
mdadm --add /dev/md0 /dev/sde
然后,我升级了阵列以将其转换为 RAID-6 RAID:
mdadm --grow /dev/md0 --raid-devices 4 --level 6 --backup-file=backup/raid-backup-file
它工作得很好。服务器工作正常,启动时没有问题。唯一的问题是我看到我将第 4 个驱动器添加为整个驱动器。我应该 add/dev/sde1
而不是 sde !
为了清理它,我删除了驱动器并再次添加它,但这次是分区:
mdadm /dev/md0 --fail /dev/sde --remove --/dev/sde
mdadm --add /dev/md0 /dev/sde1
迁移后,它工作了(阵列可访问),但在下次启动时,我收到一条消息说 RAID 阵列已降级,因为 /dev/sde 丢失(我的所有驱动器都标记为备用)并进入 initramfs 提示符。退出该外壳后,服务器继续启动,而不从我的 RAID 阵列安装数据分区。
登录后,我能够停止 RAID 阵列并通过以下方式对其进行重新排序:
mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
然后挂载文件系统。所有数据都在那里,RAID 阵列很干净。
但是,系统不再正常启动。我最后一次尝试是移除最后一个驱动器并将 RAID-6 阵列再次更改为 RAID-5:
mdadm /dev/md0 --remove /dev/sde1
mdadm --grow /dev/md0 --raid-devices 3 --level 5 --backup-file=backup/raid-backup-file
但这并没有解决问题。在启动时,系统说阵列已降级并且仍然缺少驱动器 sde。
退出 initramfs shell 后,登录并像以前一样重新组装数组,数组是干净的,请参阅
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>
那是从哪里来的,我该如何改变呢?
我的 RAID 阵列根本不应该包含对 /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 元数据。
完全擦除 sde md 元数据(使用 dd 并取决于元数据的版本及其在磁盘上的位置),例如:
dd if=/dev/zero of=/dev/sde bs=4096 count=1 seek=1
甚至更好:
mdadm --misc --zero-superblock /dev/sde
重新创建您的 sde1 并将其再次添加到 md0 设备并更新您的 mdadm.conf 如果您仍然希望它包含 UUID(如果您首先备份它们,您也可以恢复以前的元数据)
您是否尝试在更新您的 md 设备后重新生成 initrd?尝试 update-initramfs 或与您的发行版匹配的工具。并且更新您的盗版者可能是一个好主意(更新-grub2 for grub-pc)
还尝试在 mdadm.conf 中为 md0 指定分区 uuid。