使用mdadm 3.3
从mdadm
3.3(2013年9月3日发布)开始,如果您的内核为3.2+,则可以按以下步骤操作:
# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1
sdd1
是要替换的设备,sdc1
是首选的设备,必须在阵列上声明为备用设备。
该--with
选项是可选的,如果未指定,则将使用任何可用的备用件。
较旧的mdadm版本
注意:您仍然需要3.2+内核。
首先,添加一个新的驱动器作为备用(替换md0
,并sdc1
分别与RAID和磁盘设备):
# mdadm /dev/md0 --add /dev/sdc1
然后,启动像这样的复制替换操作(sdd1
是发生故障的设备):
# echo want_replacement > /sys/block/md0/md/dev-sdd1/state
结果
系统会将所有可读块从复制sdd1
到sdc1
。如果涉及不可读的块,它将根据奇偶校验对其进行重构。操作完成后,以前的备用磁盘(此处:)sdc1
将变为活动状态,并且发生故障的驱动器将被标记为发生故障(F),因此您可以将其删除。
注:归功于frostschutz和安斯加尔Esztermann谁发现原来的解决方案(见重复的问题)。
较旧的内核
其他答案表明:
- 约翰尼的方法:将阵列转换为RAID6,“替换”磁盘,然后再恢复为RAID5,
- Hauke Laging的方法:短暂地从RAID5阵列中删除磁盘,使其与新磁盘一起成为RAID1(镜像)的一部分,然后将该镜像驱动器添加回RAID5阵列(理论上)...
mdadm --add
在--replace
工作之前仍然需要。(mdadm
3.3,Ubuntu 15.10)。如果你这样做了--add
之后--replace
,复制将尽快为备用加入开始。(设备保持标记为“需要更换”)。