Windows Server 2008软件Raid 5 – 数据完整性问题

我有一台运行Windows Server 2008 R2的服务器,带有一个(Windows本地)软件raid-5arrays。 arrays由7x 1TB Western Digital RE3和RE4驱动器组成。 我有这个数组的离线备份。

问题是这样的:我注意到几天前把一个大文件复制到磁盘后,那个文件出现了一个完整性问题 – 我通过uTorrent下载了一个〜12GB的文件。 移动到RAIDarrays后,我使用uTorrent重新安置下载位置,并执行重新检查,以便可以从该位置播种。 重新检查发现,只有6308/6310复制文件块完好无损。

我的下一步是编写一个快速的powershell脚本,将文件复制到数组中,同时对原始文件和结果文件执行SHA1散列并对其进行比较。 更小的文件(100-1000MB)复制过来就好了。 当我开始复制更大的数据(〜15GB)时,我发现散列检查在大约2/3的时间内失败了。 损坏的文件具有非常小的不一致性 – 小于.01%(编辑 – 稍后的实验已经表明,损坏的数据块总是60字节,每15GB复制文件一般显示1到3个数据。 ,没有翻转位的一致模式)。 通过将这个大文件放在服务器的C:\,并从那里反复复制到arrays,我进一步消除了networking或客户端问题的可能性,看到类似的结果。

通过资源pipe理器,PowerShell或标准的Windows命令提示符复制数据会产生相同的结果。 没有任何副本失败或报告任何问题。 RAIDarrays本身在磁盘pipe理中被列为健康的。

经过几次实验之后,我closures了服务器,并在一夜之间运行了memtest。 没有发现错误。 CHKDSK的一个基本运行没有发现问题,但我没有使用/ R标志,因为我不确定这可能会影响软件RAID-5卷。

接下来,我运行Crystal Disk Info来检查驱动器上的智能数据 – 但发现CDI只检测到arrays中7个磁盘中的5个。 我不知道为什么。 不过,CDI在单个驱动器上显示下列“警告”标志:

05 199 199 140 000000000001 Reallocated Sectors Count C5 200 200 __0 000000000001 Current Pending Sector Count 

这有点令人担忧,但我不知道如何处理这些信息。 我感觉不到一个重新分配的部门可能会造成这种情况。

在这一点上,我正在寻找一些关于接下来要做什么的指导。 我需要确定这个问题的原因,但是我对运行chkdsk / R或任何可启动磁盘健康检查器犹豫不决,因为我担心它们可能会破坏arrays。 我曾经考虑触发一个数组的重新同步,但我不知道如何做到这一点,而不是像做手动删除磁盘一样愚蠢,然后恢复它。

任何意见,可以帮助我找出这个问题的确切原因将不胜感激。

由于没有你正在执行的操作失败,运行chkdsk /R可能不会产生任何结果 – chkdsk将无法恢复任何不被检测到损坏的东西。

像你看到的数据损坏将有一些可能的来源:

  1. 在写入数据之前在软件RAIDalgorithm执行中翻转
  2. 写入数据时在硬件实现中翻转
  3. 在磁介质上翻转
  4. 读数据时硬件实现翻转

你应该select一种方法来排除你可以排除的方法:

  • 在读取时,第4位翻转 – 应该很容易通过在不同的数据区域发生翻转这一事实来识别,所以md5或sha1的散列值会随着您试图通过大文件计算而有所不同

  • 编号3 – 在磁介质上翻转 – 不太可能不被发现,因为每个硬盘都包含前向纠错algorithm以及错误检测校验和,而且您肯定会看到不可恢复的扇区读取错误的数量级比位翻转滑动通过 – 看看SMART不可恢复的读取错误应该足以排除这一个

  • 2号 – 这个可能很难察觉。 尽pipeSATA协议通过纠错algorithm来保护传输的数据,在这种情况下,应用3情况的逻辑,并且在通过翻转的位扇区之前减缓任何传输到爬行,这种损坏可能发生在其他地方并且不被发现 – 例。

  • 1号 – 我认为这是最可能的情况。 无论是实施中的一个错误,或者(在操作系统发布后的四年内,更有可能作为这种重要性的错误可能会被注意到并logging在其他地方),硬件故障(如内存不足)可能会导致此类错误。 做几个memtest通行证排除RAM,特别是如果您不使用ECC内存。 在具有相同软件configuration(最好是系统映像)的类似环境中重新运行testing,以排除基于软件的原因。

您也可以扩展您的testing,以复制15 GB的较小文件,以查看在写入一定数量的数据之后,损坏是否也会影响其中的一个。 如果是这种情况(根据您的描述可能会出现这种情况),您应该认为数据已经放置在您的磁盘上发生了类似的损坏 – 请尝试与较大的文件比较原始数据或已知良好的encryption哈希以估计损坏程度。

此外,运行XOR校验和的重新计算以及将它们与存储在磁盘上的奇偶校验数据进行比较的能力本来就不错,而且大多数RAID 5系统提供这种通常称为“清理”的function。 在Windows中,似乎没有办法做到这一点的开箱即用。 我只能find数据恢复服务为你做这个。

好狩猎

chkdsk(没有/ R)将会是你运行的第一个东西。 如果运行chkdsk / R时出现问题。 您可能会遇到磁盘控制器问题,而不是磁盘。 如果chkdsk报告不同的块每次都是坏的,你运行它(没有/ R),那么这是一个控制器,而不是磁盘问题。