RAID 设备上的单位错误?

Ex *_*ris 8 raid hard-drive raid-1

自从我拥有一台 PC(30 年)以来,我第一次遇到了未检测到、未更正的单位磁盘错误。在 RAID 阵列中。事件的顺序是

  1. 从 CF 卡上传一组数字图像(Camera Raw 文件)
  2. 在 Lightroom 中进行一些编辑(不会更新原始文件)
  3. 将所有内容备份到外部存档磁盘(使用 Retrospect)
    ...时间过去了(大约 1 周)...
  4. 在 Lightroom 中再次打开文件 - 它已损坏(一个大的方形洋红色斑点)
  5. 从存档磁盘还原副本 - 还原的副本未损坏
  6. 比较两个文件。只有一个位差异......最初是 0x34 的字节现在是 0xB4

在线设备是硬件RAID 卡 (3WARE 9560SE-4LPML)上 RAID-1 中的一对 2TB 驱动器。

鉴于上述顺序,由于存档副本未损坏,因此在第 3 步之后的某个时间显然会引入该错误,因此它不可能在原始写入期间发生。该文件是佳能 CR2 原始文件,Lightroom 从不更新原始 RAW 文件,它们被视为“数字底片”并且从不更新。相反,它将所有编辑保存为包含应用的编辑序列的 sidecar XMP 文件。文件日期/时间未修改原始文件。

显然,位错误以某种方式发生并由 RAID 硬件传播而没有产生警告。我检查了 RAID 错误日志,过去 18 个月没有任何值得注意的事情(自从我上次升级软件和固件以来)。

总结一下:

  1. 数据最初是正确写入的
  2. 然后当它被复制到备份时被正确读取。
  3. 在那之后的某个时间,该位在磁盘上被翻转(因为没有任何内容重写了文件)。
  4. RAID 硬件设置为每周运行一次“验证”。它没有检测到错误。

这简直太离谱了。我预计 RAID 硬件日志中会出现错误比较错误。

此外,我可以排除故障磁盘,因为两个驱动器上的 SMART 数据对于所有适用的错误属性都显示为零

196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0
Run Code Online (Sandbox Code Playgroud)

其他一切也都是名义上的。

任何人都有这样一种情况,在这种情况下会发生而未被发现

Jas*_*n C 5

一种可能性是 RAM 中的随机位翻转或第 4 步中读取的控制器。如果数据在读取时损坏,那么您将在第 4 步中看到它,然后如果它仍然被缓存,您也会在第 6 步比较时看到它文件,因为可能仍会使用损坏的缓存数据。

要测试这种情况,请重启所有硬件以确保清除缓存并再次尝试打开文件(并与备份运行比较)。如果一切顺利,那么这就是问题所在(无法知道位翻转发生在读取的哪个阶段,因此您只需将其作为未解之谜就可以解决)。

如果做不到这一点,第二个甚至更不幸的可能性可能是随机 RAM(或者更可能在 RAID 控制器上,根据您的描述)在步骤 1 中写入时发生位翻转;但是,尽管磁盘上存在损坏的副本,但您在第 2 步和第 3 步中对一个良好的缓存副本进行了操作。一周后,当你再次访问数据时,你当然从磁盘重新读取它,结果是原来写入的损坏数据。这做出了许多假设,并依赖于一点运气。如果是这种情况,您只需恢复备份文件并继续。

这是我唯一能想到的两件事,真的。这听起来不像是驱动器本身的问题。在任何情况下,由于无法确定错误发生在硬件中的哪个位置,我建议运行全内存诊断以确保安全,尽管原因更有可能是不幸的 EMI 或宇宙射线。正如加拿大卢克在他的回答中提到的,ECC RAM,如果您的主板支持它,将防止这种类型的事件,至少在 RAM 方面。这实际上并不少见。


这种情况最终成为 OP 的问题,而不是第二种可能性。