系统相关
首页 > 系统相关> > 如何安全地更换Linux RAID5阵列中尚未出现故障的磁盘?

如何安全地更换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