在硬盘驱动器上是一个真正的问题? 可以做些什么呢?

一位朋友正在跟我谈论随机翻转硬盘上的位元腐蚀问题,破坏了数据。 非常罕见,但有足够的时间,这可能是一个问题,而且不可能检测到。

该驱动器不会认为它是一个坏的部门,备份只会认为文件已经改变。 没有校验和来validation完整性。 即使在RAID设置中,也会检测到差异,但无法知道哪个镜像副本是正确的。

这是一个真正的问题吗? 如果是的话,可以做些什么呢? 我的朋友推荐zfs作为解决scheme,但我无法想象我们的文件服务器正在工作,把Solaris和zfs放在一起。

首先:您的文件系统可能没有校验和,但是您的硬盘本身有它们。 例如,有SMART。 一旦有太多的翻转,错误当然不能纠正。 如果你真的不走运,那么可以改变位数,使得校验和不会失效; 那么错误甚至不会被检测到。 所以, 可能会发生讨厌的事情; 但声称随机翻转会立即破坏你的数据是假的。

然而,是的,当你把数万亿比特放在硬盘上的时候,它们不会永远保持这样的状态。 这是一个真正的问题! 每次读取数据时,ZFS都可以进行完整性检查; 这与您的硬盘驱动器本身已经具备的function类似,但这是您牺牲一些空间的另一个保障措施,因此您可以提高对数据损坏的适应能力。

当你的文件系统足够好的时候,没有被检测到的错误发生的可能性变得如此之低,以至于你不必再关心这个问题,你可能会决定将你所使用的数据存储格式内置的校验和不必要。

无论哪种方式: 不,这不是不可能的

但是文件系统本身并不能保证每一次失败都能从中恢复; 这不是一个银弹。 您仍然必须备份和计划/algorithm,以便在检测到错误时执行该操作。

是的,这是一个问题,主要是随着驱动器尺寸的增加。 大多数SATA驱动器的URE(不可纠正的读取错误)率为10 ^ 14。 或者从统计数据中读取每12TB的数据,驱动器供应商表示驱动器将返回读取失败(通常您可以在驱动器规格表中查找它们)。 驱动器将继续适用于驱动器的所有其他部分。 企业FC和SCSI驱动器通常具有10 ^ 15(120TB)的URE率以及less量的SATA驱动器,这有助于降低它。

我从来没有见过磁盘在同一时间停止旋转,但我有一个raid5卷(5年前与5400RPM消费者PATA驱动器)的问题。 驱动器出现故障,标记为死,并且重新启动到备用驱动器。 问题是在重build期间,第二个驱动器无法读取一小块数据。 根据谁做的整个卷可能已经死亡或只是小块可能已经死了。 假设只有一个块死了,如果你尝试读取它,你会得到一个错误,但是如果你写了它,驱动器将重新映射到另一个位置。

有多种方法可以防范:raid6(或相当于),防止双磁盘故障是最好的,额外的是一个URE感知文件系统,如ZFS,使用较小的RAID组,所以在统计上,你有较低的机会击中URE驱动器限制(镜像大型驱动器或raid5较小的驱动器),磁盘清理和SMART也有帮助,但本身并不是一个真正的保护,但是除了上述方法之外,还可以使用。

我在arrays中pipe理了近3000个主轴,而arrays则不断地清理寻找潜在URE的驱动器。 我收到了一个相当稳定的数据stream(每当它发现一个它在驱动器故障之前修复它,并提醒我),如果我使用的是raid5而不是raid6,其中一个驱动器完全死了…我会如果碰到某些地方会遇到麻烦

硬盘驱动器通常不会将数据位编码为单个磁畴 – 硬盘驱动器制造商一直都知道,磁畴可能会翻转,并在驱动器中进行错误检测和纠正。

如果一个位翻转,则驱动器包含足够的冗余数据,在下一次读取该扇区时可以纠正该数据。 如果您检查驱动器上的SMART统计信息,则可以看到这一点,如“可更正错误率”。

根据驱动器的细节,它甚至应该能够从扇区中的多个翻转位中恢复。 翻转位的数量有一个限制,可以被静默地纠正,而且可能被检测为错误的翻转位的数目可能是另一个限制(即使没有足够的可靠数据来纠正)

这一切都加起来,硬盘驱动器可以自动纠正大多数错误发生,并可以可靠地检测大部分其余的事实。 在单个扇区中必须有大量的位错误,所有的错误都发生在该扇区再次被读取之前,并且错误必须使得内部错误检测代码再次将其视为有效数据。将永远有一个沉默的失败。 这不是不可能的,而且我确信,运行非常大的数据中心的公司确实发生了这种情况(或者说,它发生了,而且他们没有看到这种情况发生),但它肯定不像你想象的那么大。

现代硬盘驱动器(自199x以来)不仅具有校验码,而且还具有ECC,能够检测和纠正相当多的“随机”位错误。 请参阅: http : //en.wikipedia.org/wiki/SMART 。

另一方面,固件和设备驱动程序中的某些错误也会破坏罕见的数据(否则QA会捕获错误),如果没有更高级别的校验和,则很难检测到这些错误。 早期的SATA和NIC设备驱动程序在Linux和Solaris上都损坏了数据。

ZFS校验和主要针对下级软件中的错误。 较新的存储/数据库系统像Hypertable也有每个更新的校验,以防止文件系统中的错误:)

理论上,这是值得关注的。 实际上,这是我们保留孩子/父母/祖父母备份的部分原因。 年度备份需要保存至less5年,国际海事组织,如果你有这样的情况远远超过这个,文件显然不是那么重要。

除非你正在处理可能会让某人的大脑液化的碎片 ,否则我不确定风险与回报是否相当于文件系统的变化。

是的,这是一个问题。

这就是RAID6现在stream行的原因之一(以及增加HD尺寸增加时间来重buildarrays)。 有两个奇偶校验块允许额外的备份。

RAID系统现在还会执行RAID Scrubbing,它定期读取磁盘块,检查奇偶校验,并在发现块不良时将其replace。

关于OP关于RAID的陈述,不了解什么数据好坏。

RAID控制器至less使用每条数据条带上的(奇/偶)奇偶校验位。 这是为了一切; 磁盘上的数据条纹和奇偶校验(备份)数据条纹。

这意味着对于任何具有冗余分条(RAID 5/6)的RAIDtypes,控制器都可以准确判断原始数据条带是否已更改,以及冗余数据条带是否已更改。

如果您引入第二个冗余条带如RAID6,则必须有三个数据条带,在三个不同的驱动器上被损坏,所有这些都对应于相同的实际文件数据。 请记住,大多数RAID系统使用相对较小的数据条(128kb或更less),因此几乎不可能在同一个文件中排列相同的128kb的“比特stream”的机会。

是的,这是一个真实的世界问题,但问题是如果你担心或不担心。

如果你只有一个硬盘的照片,这可能是不值得的努力。 这是它充满了重要的科学数据可能是另一种故事,你有这个想法。