我有一个驱动器(曾经,它已经被换出,要求将其用于将来使用),该驱动器通过内部 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。无论如何,这种方法风险更大,因为你必须重写所有磁盘上的所有数据。