更安全的RAID5重build使用部分失效的磁盘?

最近发表了很多关于RAID5是如何危险的文章,特别是因为在重启期间遇到URE的机会越来越多。 显然这是一个重要的问题。 但是, 在许多情况下 (如果你对磁盘保持某种程度的关注),似乎在重buildarrays时,我所replace的磁盘仍然是大部分可读的。

如果你试图向普通的外行解释这种困境,他们通常很困惑,为什么你有两个几乎完全function的磁盘,但不能产生一个工作arrays。 在我看来,应该有办法利用这一点来使重build更安全,只要我愿意让RAID5在重build期间只读几天。 从概念上讲,我脑子里面是这样的:

  1. 当磁盘发生故障时,请立即使RAID5脱机或将其挂载到只读位置
  2. 连接一个新磁盘(或者在备用托架中,或者通过eSATA外部连接),然后开始重build它以replace失败的磁盘。 如果知道,也许从出现故障的条带开始,以尽量减less另一个磁盘发生故障时丢失的可能性。
  3. 如果第二个磁盘在重build过程中遇到URE或其他故障,请尝试从正在被replace的磁盘获取该数据。 据推测,如果发生这种情况,更多的重build将是必要的。
  4. 完成后,closures服务器,根据需要将更换的驱动器交换到原来的托架中,然后重新装上arrays。

很明显,这样的过程不适用于正常运行时间很关键或数据丢失是不能容忍的应用,但是在我看来,这对于提高RAID5的可靠性有很大的帮助。

我认为现在还没有一个好的方法来实现这样的恢复,因为我没有看到任何devise用来做这件事的工具的迹象,而且看起来似乎是用手工来解决这个问题。 还有技术上的问题,我没有想到(我还是相当新的RAID的东西)? 任何想这样的事情会如何实现(例如在Linux MD的RAID)?

编辑 :如果其他人发现这一点,而我正在寻找同样的事情,这原来已经是在新版本的MD的一对function。 坏块列表(如果启用)允许md单个块而不是整个磁盘失败,热replace允许build立一个新的磁盘,主要从它将要replace的磁盘开始工作,但是从数组中的其他磁盘需要的时候。 最近的mdadm的联机帮助页有更多关于如何做这些的说明。