大多数便宜的 SATA 磁盘驱动器被评为“每读取 10^14 位 1 个不可恢复的读取错误”。
这是什么意思?
10^14 位只是 12.5 TByte。如果我有一个完整的 2 TByte 磁盘并将其复制到第二个磁盘,实际上是否有大约 1/6 的可能性是其中一个文件损坏?
如果发生这种情况,受影响的块是否会被标记并重新分配?我认为是这样,因为如果读取在重试时成功,则它不是不可恢复的读取错误。
但是,我使用这些磁盘驱动器已有几年了,我没有注意到坏块数量有任何增加,而且 RAID 控制器日志也没有显示任何读取问题。
编辑:RAID 控制器每周对每个磁盘进行一次巡读,因此每年大约 100 TByte。那仍然小于 10^15 位。
另一方面,2 年内 50 个磁盘中总共有 4 个磁盘故障,这增加了错误率。
我没有足够的具有统计意义的数据来发表声明,但在我的情况下,实际错误率似乎在 10^14 和 10^15 之间,这与规范一致。
在 10^14 中给出 1 个读取错误的统计数据就是这样,一个统计数据点。这并不意味着在任何给定的磁盘中您都会看到错误,也不是说它一定会从磁盘寿命开始到结束发生。这仅意味着该磁盘的评级不如企业磁盘,并且根据我的经验(开发企业存储系统),消费者和企业磁盘也从未达到完整的 MTBF 数字。我也不记得他们之间有什么大的区别。有一些区别,但不是很大。
当正在读取一个块并且失败时,磁盘会将扇区放入保存列表中。当下次写入该扇区时,将尝试写入并验证该扇区,如果有效,则不会再做任何事情。如果验证失败,扇区将被重新分配。
在许多情况下,磁盘和 RAID 甚至可以在它们成为大问题之前即时纠正坏扇区。有磁盘的后台媒体扫描和 RAID 阵列的磁盘清理,这两者都可以保护数据。企业存储阵列使用更细粒度的检查来确保即使是轻微问题的磁盘扇区也会得到处理和修复。
在 RAID 阵列中使用消费级驱动器还有其他问题,TLER 就是其中之一,这实际上意味着您可能会丢失一个坏扇区的磁盘,因为磁盘会停止响应,直到它成功读取该扇区。TLER实际上是避免RAID调用磁盘失败的方法,当它只是一个小的媒体问题时。如果您启用了 TLER,磁盘将很快放弃该扇区并让 RAID 在其级别处理故障。
您应该小心使用 RAID 和消费者驱动器。根据您的 RAID 控制器,如果由于没有TLER而磁盘响应时间过长,它将抛出。
此处描述了不可恢复的块会发生什么
至于您关于块损坏的可能性为 1/6 的问题,对于块来说确实如此,但是,操作系统/文件系统有自己的方式来处理坏块并从中恢复,所以很有可能OS/FS 能够自行恢复坏块,而您不会注意到任何文件损坏。
这意味着他们的质量控制设置使得您可能期望在每 12.5TB 读取中都有一个不可恢复的读取。这并不意味着会有一个,只是他们的质量控制已经过校准。
当您考虑 RAID 组时,这会产生一些非常严重的影响 - 5+1 RAID 5 组的 2TB 驱动器即将接近这个数字。RAID 重建需要重新扫描整个 RAID 组,因此重建失败的几率开始变得很大。部分解决方案涉及较小的 RAID 组或使用 RAID 6,但这会带来其自身的后果。(特别是 RAID-6,虽然很聪明,但会在写惩罚上烧伤你,尤其是在“更便宜/更慢”的磁盘上)。
这就是为什么“服务器磁盘”“如此昂贵”的原因——其中一个关键原因是它们往往是 1 / 10^16——这大大降低了复合故障的几率。
但是你应该注意——仅仅因为预期的错误率是 12.5TB,这并不意味着你不会倒霉。RAID 永远不能替代备份。(但我怀疑你已经知道了。)