我想更换处于故障前状态的硬盘驱动器(一些重新分配的扇区),该硬盘驱动器用于具有 3 个磁盘的 raid5 阵列(带有 的软件 raid mdadm
)。
是否可以将新硬盘设置为热备用并初始化从故障到备用驱动器的接管?
有些方法建议添加驱动器,然后设置驱动器故障命令。据我所知,在这种状态下,raid5 会降级,驱动器故障最终会导致......
因此,是否有可能将数据实时(或重建 raid)从故障驱动器“复制”到备用驱动器(不取消其奇偶校验功能),并在复制或重建过程完成后,删除故障驱动器。
答案1
是的,您可以(只要您有3.2+ 内核)。首先,添加一个新驱动器作为备用驱动器:
mdadm /dev/md0 --add /dev/sdc1
(分别将md0
和替换sdc1
为您的 RAID 和磁盘设备)。
然后,启动复制替换操作,如下所示:
echo want_replacement > /sys/block/md0/md/dev-sdd1/state
md0
同样,您的 RAID 设备在哪里,并且sdd1
是发生故障的驱动器。 (实际上,sdd1 是故障驱动器上的一个分区——我更喜欢在分区上而不是在原始磁盘上创建 RAID 集)。
系统会将所有可读块从 复制sdd1
到sdc1
。如果遇到不可读的块,它将根据奇偶校验来重建它。操作完成后,前一个备用驱动器(此处:sdc1
)将变为活动驱动器,并且故障驱动器将被标记为故障 (F),以便您可以将其删除。
答案2
您可以将其扩展为 RAID 6。这将允许两个驱动器发生故障。它会将您的新磁盘集成到现有 RAID 中,而无需删除旧磁盘。
另一方面,这将打乱所有数据。因此,同步将花费更长的时间,如果您想删除坏磁盘并恢复到 RAID 5,则必须再次执行相同的操作。并且数据的这种增长和洗牌会带来其自身的危险,特别是在意外断电的情况下。或者,在单个驱动器发生故障的情况下,增长将继续,只是没有故障磁盘,此时该“故障”磁盘的数据变得无用,因为它不再与其余磁盘共享相同的布局。
总体来说不太推荐。
如果数据安全是您的首要考虑因素(而不是正常运行时间),请坚持使用 RAID5 并从救援系统中更换磁盘,在重新同步时不会向 RAID 写入任何内容;如果驱动器在同步过程中发生故障,那么您不会丢失任何尚未丢失的内容。如果您在开始删除/添加/重新同步之前备份每个磁盘的 md 元数据,则可以使用原始配置轻松重新组装。
大多数人只是阅读了驱动器,并相信它会起作用;如果它不起作用,您必须使用备份。
驱动器同时发生故障的情况很少见;在大多数情况下,驱动器很久以前就已经发生故障,您只是由于缺乏监控而从未注意到。