如何安全地更换Linux RAID5阵列中尚未出现故障的磁盘?
作者:互联网
我在4个磁盘上有一个软件RAID5阵列(Linux md).
我想用一个新磁盘替换其中一个磁盘,而不是将阵列置于降级状态,如果可能的话,在线.怎么可能呢?
这很重要,因为我不想:
>冒着给其他磁盘施加压力的风险,因此在重建期间可能会崩溃,
>冒着处于“非平价状态”的风险,所以我有一段时间没有安全网.
我想在网上做的太多了,我应该只是将旧磁盘的数据原始复制(dd)到新的离线然后替换它,但我认为理论上可行……
一些情况:这些磁盘几乎连续旋转超过5.5年.它们目前仍然完美无缺,它们都通过了(长期)SMART自检.但是,我有理由认为这4个磁盘中的一个不会持续更长时间(假设预测失败).
解决方法:
使用mdadm 3.3
自mdadm
3.3(2013年9月3日发布)以来,如果您有3.2+ kernel,则可以按以下步骤操作:
# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1
sdd1是要替换的设备,sdc1是首选设备,必须在阵列上声明为备用设备.
–with选项是可选的,如果未指定,将使用任何可用的备用.
较旧的mdadm版本
注意:您仍然需要3.2+ kernel.
首先,添加一个新驱动器作为备用驱动器(分别用RAID和磁盘设备替换md0和sdc1):
# mdadm /dev/md0 --add /dev/sdc1
然后,启动这样的复制替换操作(sdd1是失败的设备):
# echo want_replacement > /sys/block/md0/md/dev-sdd1/state
结果
系统会将所有可读块从sdd1复制到sdc1.如果涉及一个不可读的块,它将从奇偶校验重建它.操作完成后,前备用(此处:sdc1)将变为活动状态,故障驱动器将被标记为失败(F),因此您可以将其删除.
注意:信用发送到frostschutz和Ansgar Esztermann,他们找到了原始解决方案(参见duplicate question).
较旧的内核
其他答案表明:
> Johnny的approach:将阵列转换为RAID6,“替换”磁盘,然后再转回RAID5,
> Hauke Laging的approach:从RAID5阵列中短暂删除磁盘,使其成为新磁盘的RAID1(镜像)的一部分,并将该镜像驱动器添加回RAID5阵列(理论上)……
标签:linux,mdadm,software-raid,raid5 来源: https://codeday.me/bug/20190808/1624226.html