位或块上的数据错误

位或块上的数据错误

我将数据存储在 HDD 和 SSD 上,我担心数据损坏。数据是否会出现单比特错误,还是整个块都无法正确读取?我相信磁盘控制器上有某种纠错功能,所以我不确定单比特错误是如何发生的。

答案1

您要找的答案是 ECC 或错误校正。每个存储设备上的每个扇区都内置有 ECC 数据。此数据用于纠正单比特甚至多比特错误。它有限制,一旦超过这些限制,整个扇区将被视为丢失。

您可以使用允许您访问 SMART 的程序(如 smartctl -a /dev/sda)来验证这一点。它将打印出一整屏的数据,但会有几个专门用于 ECC 的条目。当驱动器是新的时,ECC 校正扇区将为 0,而当驱动器接近使用寿命结束时,它将达到数亿甚至数十亿。它甚至可能滚动到 0 并重新开始。

如果您每天有数亿个 ECC,请更换驱动器。

答案2

数据硬盘损坏,等等SSD 电源故障JEDEC 规定SSD 无需断电即可保留数据一年。损坏的原因可能是关机不当、盘片上的微小灰尘、SSD 中的电荷泄漏、宇宙射线翻转单个位等。故障可能是单个位或磁盘上的某个区域。磁盘检查程序可以发现任何错误并尝试重写并重新读取数据。软错误可以通过覆盖来修复;硬错误是永久损坏的块

最安全的方法是存储多份副本校验和或者循环冗余校验. 航天飞机使用的由于任务的关键性和屏蔽大气之上的辐射率较高,因此需要使用冗余计算机。

对于档案存储,

  • 选择可以在没有电源的情况下长时间使用的媒体。目前最好的媒体可能是蓝宝石圆盘HDD 和 SSD 在使用过程中的故障率可能差不多,但是 HDD 在没有电源的情况下也是可靠的,而 SSD 在机械损坏的情况下更可靠,只要有电源即可。
  • 使用校验和检查文件完整性。如果您存档数据,zip 包含内置校验和验证文件是否有效。如果一个或多个位被损坏,则在尝试打开 zip 文件时会发出警报。
  • 在多个环境中冗余存储数据。将最重要的数据放在云端在本地多个驱动器上。如果一个 zip 存档将某些数据标记为已损坏,则另一个副本应该是好的。考虑故障的统计数据:如果单个文件发生故障的几率为百万分之一(10 -6),则两个文件同时发生故障的几率单独存放副本将两个都损坏的概率是 10 -6 * 10 -6,即万亿分之一 (10 -12 )。当然,如果文件存储在同一个位置,而灾难摧毁了建筑物,数据就没了。
  • 最重要的,核实存储的数据是可读的。我工作过的一家公司努力地制作磁带备份,结果却发现,在需要备份的那天,没有任何备份是可读的。

答案3

我非常同意 cybernard 的观点。

但是如果您担心数据完整性,那么必须使用支持多磁盘冗余、校验和以及清理过程的现代文件系统(如 ZFS 或 Btrfs)。(现代是一个相对术语,ZFS 于 2005 年推出)。

相关内容