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