如何在不先降级的情况下预先修复/更换 Linux md 阵列中的驱动器?

如何在不先降级的情况下预先修复/更换 Linux md 阵列中的驱动器?

我有一个驱动器(曾经,它已经被换出,要求将其用于将来使用),该驱动器通过内部 SMART 测试和坏块重新映射指示即将发生故障。

mdadm --fail即将损坏的驱动器进行直接重建是将其重建为热备用驱动器,或者拉出驱动器并放入新的驱动器,然后重建该驱动器。

问题是,这会导致阵列在整个重新同步期间处于降级状态,从而产生额外的故障风险和降级运行的性能开销。如果驱动器确实发生故障,这是意料之中的事情,但如果驱动器尚未真正发生故障,那么这是一种不必要的风险。

我如何才能预先将该单个驱动器替换/重建为热备用驱动器没有先让它停止服务?

答案1

我不确定这项技术有多强韧,但它“应该有效”。在真正执行之前,我想在其他驱动器上对这个过程进行一些测试。

如果您有两磁盘 RAID-1,您可以mdadm --grow将其转换为三磁盘 RAID-1。这是一个三重镜像,而不是 RAID-1E。然后,您可以使您担心的驱动器故障并将--grow其恢复为两个磁盘。如下所示:

mdadm --grow /dev/md0 --level=1 --raid-devices=3 --add /dev/sdgood

# wait for the resync to complete, then fail the drive out that's starting to go bad:

mdadm /dev/md0 --fail /dev/sdbad --remove /dev/sdbad

# then, set the RAID-1 back to two devices.
mdadm --grow /dev/md0 --raid-devices=2

如果您这样做,您将始终拥有至少一份数据的镜像副本。

据说,你可以将--grow阵列从 RAID-5 升级到 RAID-6,但我从未听说有人之后又恢复到 RAID-5。无论如何,这种方法风险更大,因为你必须重写所有磁盘上的所有数据。

相关内容