代码之家  ›  专栏  ›  技术社区  ›  Rick Minerich

如何保护文件数据免受磁盘损坏?

  •  2
  • Rick Minerich  · 技术社区  · 16 年前

    最近,我读了一篇题为 "SATA vs. SCSI reliability" . 它主要讨论了消费级SATA驱动器中非常高的比特翻转率,并得出结论:“现在有56%的机会无法从特定磁盘读取所有数据”。即使是raid-5也不能保存我们,因为它必须不断地扫描问题,如果一个磁盘确实死掉了,您几乎可以保证在您重建的文件系统上有一些翻转位。

    考虑事项:

    我听说过太阳的伟大事迹 ZFS 具有 Raid-Z 但是Linux和BSD实现仍然是试验性的。我不确定它是否准备好迎接黄金时间。

    我也读了不少关于 Par2 文件格式。似乎在每个文件中存储一些额外的%奇偶校验可以让您从大多数问题中恢复。但是,我不知道有一个文件系统在内部执行此操作,而且似乎很难管理单独的文件。

    备份(编辑):

    我知道备份至关重要。但是,如果没有某种类型的签入,您可能很容易将坏数据发送给人们,甚至不知道它。另外,要确定哪个备份具有该数据的良好副本可能很困难。

    例如,您有一个运行了一年的RAID-5阵列,并且发现一个损坏的文件。现在你必须回去检查备份,直到找到一个好的副本。理想情况下,您将转到包含该文件的第一个备份,但这可能很难确定,特别是如果该文件已被编辑多次。更糟糕的是,考虑该文件是否是在损坏发生后附加到或编辑的。仅此一点就足以进行块级奇偶校验,如par2。

    3 回复  |  直到 16 年前
        1
  •  0
  •   unwieldy    16 年前

    ZFS是一个开始。许多存储供应商也为520B驱动器提供额外的数据保护。但是,这只会在数据进入存储结构时保护数据。如果它在主机级别被损坏,那么无论如何您都将被主机托管。

    目前有一些基于标准的解决方案很有希望解决这个问题。端到端数据保护。

    考虑t10 dif(数据完整性字段)。这是一个新兴的标准(它是5年前起草的)和一项新技术,但它具有解决数据腐败问题的崇高目标。

        2
  •  2
  •   tialaramex    16 年前

    那篇文章严重夸大了问题的根源。它假定数据丢失事件是独立的,也就是说,如果我取1000个磁盘,并得到500个错误,那么可能是500个磁盘上的每个错误。但事实上,任何有磁盘问题的人都知道,一个磁盘上可能有500个错误(仍然只是磁盘总容量的一小部分),另外的9999个也没问题。因此,在实践中,并不是说你有56%的机会不能读取所有的磁盘,而是说,它可能更像1%或更少,但在1%的人会发现他们丢失了几十或数百个扇区,即使磁盘作为一个整体没有失败。

    可以肯定的是,实际实验反映了这种理解,而不是本文提供的理解。

    基本上,这就是“中国人耳语”的一个例子。此处链接的文章指的是另一篇文章,而这篇文章又间接指的是已发表的论文。报纸上说这些事件当然是 不独立 但在向易于消化的博客格式过渡的过程中,这一重要事实消失了。

        3
  •  0
  •   typemismatch    16 年前

    我有56%的机会看不懂东西,我对此表示怀疑。我运行了一个混合的RAID 5和其他优点,只是良好的备份实践,但有了RAID 5和一个热备盘,我从来没有数据丢失,所以我不确定所有的麻烦是什么。如果您正在存储奇偶校验信息…好吧,您正在使用软件创建一个RAID系统,R5中的磁盘故障会导致一个类似校验的检查,以返回丢失的磁盘数据,所以…它已经在那里了。

    运行raid,备份您的数据,您会没事的:)