RAID5 中的两个磁盘在同一天损坏的可能性有多大?

RAID5 中的两个磁盘在同一天损坏的可能性有多大?

我有一台配置为 RAID5 的 Perc H710,配有 4 个 3TB Seagate 7200rpm 硬盘。

两个月前,我得到了这些虚假错误让我相信我的控制器有问题

我更换了控制器,一切工作正常,直到几天前我开始遇到类似的错误。驱动器 00 和 03 被报告为故障、脱机或丢失。戴尔又给我寄来了另一个(第三个) RAID 控制器,现在 perc bios 显示:

Drive 00 missing
Drive 03 missing

所以我拔出驱动器,并用磁盘实用程序分别检查它们。确实,驱动器 00 和驱动器 03 有坏扇区。我使用的 Linux 磁盘实用程序显示驱动器 00 有“几个坏扇区”,而驱动器 03 有“很多坏扇区”。

真的吗?同一天有两个硬盘坏了?

另一方面,是否有可能一个驱动器在一段时间前出现故障,然后另一个驱动器也出现故障,因为它在不断旋转,试图重建第一个驱动器......或者类似的事情?

答案1

我们不可能准确地说出 X 个驱动器在 Y 时间内出故障的概率,但可以肯定地说,驱动器故障并不像通常认为的那样完全独立。同一阵列中多个磁盘在时间上相近的时间内发生故障实际上是​​相当常见的情况。

不到一个月前,我们的一台生产服务器(同一 RAID 组)上同一周末有 4 个驱动器相继出现故障。我们刚更换一个驱动器,另一个驱动器就出现故障……为了安全起见,我们最终更换了所有 7 个驱动器。

正如您所提到的,原因之一是重建过程是磁盘密集型的,因此,处于故障边缘的磁盘很有可能被推到边缘并发生故障,因为它在提供数据重建新磁盘时承受的压力越来越大。

要考虑的另一个因素是,RAID 阵列中的所有成员往往处于相同的物理环境中,并受到非常相似的物理压力(热量、振动、电源波动等),这往往会导致类似故障的发生率高于不同环境中的磁盘。

而且,如果你和大多数人一样,你可能只是从同一个地方购买了 4 个相同的磁盘,并且最终得到了来自同一批次的 4 个磁盘,这导致 4 个磁盘具有相同的制造特性(该制造批次中的任何缺陷或异常都可能在所有四个磁盘上共享)。因此,在相同环境中使用相同的磁盘……它们可能共享其他相似的特性,例如当它们发生故障时,这是有道理的。

最后,磁盘故障并非呈正态分布(如钟形曲线)。磁盘在刚开始使用时(早期故障)故障率较高,经过很长一段时间后,当磁盘因受到的物理压力而磨损并损坏时,中间阶段的故障率相对较低(浴盆曲线)。

因此,是的,同一个 RAID 阵列中的多个驱动器故障确实会定期发生,这也是您始终需要良好备份的原因之一。

答案2

这其实相当常见,这也是为什么经常建议购买单个 RAID 组中不同批次的硬盘的主要原因。相同批次的硬盘通常具有相同的缺陷或阈值。

此外,故障并不总是由驱动器老化引起,它们也可能由最小的电涌、几分钟的意外负载、相同的睡眠停机等引起。因此,发生故障的几率当然小于单个驱动器故障,但不是该百分比的平方。此外,不要忘记单个磁盘故障意味着其他 3 个磁盘的负载增加,因为它们需要协同工作以重新计算丢失的数据。这也可能将另一个磁盘推向边缘。关于同一问题,更换驱动器后的重建是一项高度密集的操作,涉及所有磁盘的每个扇区,这意味着磁盘又一次处于危险之中。

最后,问题可能并不总是磁盘。我曾经遇到过 RAID-5 组死机的情况,因为控制器认为 4 个磁盘中的 3 个在几分钟内同时被移除。当然这是控制器的故障,但它仍然在日志中显示为 3 个磁盘在一分钟内相继死机。

答案3

是的,由于重建时的磁盘压力而导致的第二次故障(以及重建时读取的原始数据量,在密集的现代磁盘上读取错误的可能性相对较高)是 RAID-5 具有某些固有风险的原因之一。

虽然听起来 RAID 控制器并没有明确地将任何一个磁盘标记为故障,而只是“丢失”,但这可能是您需要利用备份的情况。

答案4

问题可能是您的某个磁盘在一段时间内出现坏块,但由于没有程序从该扇区读取数据,因此没有被注意到。

然后另一个磁盘上出现了坏扇区。其中一个扇区被读取,控制器移除了该驱动器或尝试重建它。然后它需要读取整个第二个磁盘,并在第二个驱动器上遇到了第二个坏扇区。然后你的 RAID 就坏了。

这就是为什么定期测试驱动器是否有坏扇区至关重要——这样它们就不会长时间被忽视。有一个实用程序——smartd来自smartmontools软件包——可以在所有磁盘空闲时定期检查它们是否有坏块。但并非所有控制器都允许向磁盘发送 SMART 命令——这就是我更喜欢软件 RAID 的原因。

磁盘将在再次写入时纠正(重新映射)坏扇区。因此,如果您知道哪个扇区是坏的(smartctl -a可以告诉您)并且可以检查哪个文件正在使用此扇区,则可以从备份中重写此文件以使磁盘恢复正常。但不要尝试读取它,因为读取失败可能会强制磁盘脱离阵列。

相关内容