总结
在我的新电脑(Windows 8.1 x64)上,本地 SATA-HDD 上的某些文件在没有明显原因的情况下(在空闲一段时间后)被损坏。
不是病毒/恶意软件!(已安装 AVG 防病毒软件进行测试,并且使用全新 8.1 版且没有任何第三方软件/驱动程序)
各种测试工具均未检测到硬件故障。
长版本
我注意到我的档案中的某些文件在闲置一段时间后被损坏了。
似乎总是相同的文件被损坏:我上次对超过 33000 个 jpeg 文件集进行测试时,我得到了相同的 30 个文件列表,这些文件总是被损坏。看起来这 30 个文件包含一些特定的字节序列,在某些条件下会“激活”损坏。
(意识到存在问题后,我会定期从备份中恢复文件,然后使用 WinMerge/BeyondCompare 将它们与备份进行比较)
损坏模式非常相似:在大多数情况下,最后几个字节(大约最后 10-20 个字节)填充有随机数据。但并非总是如此 - 也遇到过在文件开头/中间有随机数据的文件。
我对硬件问题进行了一些测试,但没有发现任何问题:
- 测试了 RAM(使用 MemTest86+ 和其他一些工具 - 整夜使用不同的填充模式进行测试 - 未检测到问题)
- 测试了 HDD(在 0x05‘重新分配的扇区数’属性上检测到 SMART 问题,通过保修更换了 HDD(相同型号)。现在没有 SMART 问题,表面扫描也没有坏扇区。
还做了很多不同的实验。例如:
- 重新安装窗户
- 尝试使用干净的 Windows(即使没有主板制造商的驱动程序,只有 Microsoft 提供的默认驱动程序)
- 尝试安装所有正确的驱动程序(从制造商主页下载)
- 删除所有分区并重新分区/格式化硬盘
- 尝试安装 AVG Antivirus,并且没有任何
一项测试给出了肯定的结果(可能):使用从 USB 启动的 PartedMagic Linux。使用 Linux 几周后,我没有遇到任何损坏。但我仍然不确定这个 Linux 发行版是否使用相同的硬件访问模式(如内存使用或某些 SATA 连接等),或者这根本不是偶然发生的。
一开始我以为是 Windows 驱动程序/缓存配置的问题。我在 Microsoft Community 上提出了同样的问题,但没有得到解决方案。(answers.microsoft.com/en-us/windows/forum/windows8_1-files/files-on-hdd-getting-corrupted/e2b04d4f-d3ea-492d-a181-c1d437ab1507)
问题仍在分析中:我仍未获得稳定/可预测的序列来重现问题。目前我正在使用或多或少准稳定的重现序列(仍需要几天时间才能重现问题):
- 修改配置(硬件或软件)
- 从备份恢复文件
- 启动 WinMerge,比较 HDD 上的存档与 NAS 上的备份副本(通过本地网络)
- 如果没有检测到损坏,则转至步骤 3。
步骤 3. 需要几个小时 (4-6),而且经过几次迭代后可能会检测到损坏。如果我在比较时尝试使用计算机,可能会发生这种情况 - 不确定。
我目前的理论:它可能与 RAM 有关(即使损坏的文件从未在写入模式下访问过。可能是 Windows 在某些内部文件索引过程中对压缩的 NTFS 内容进行了一些透明的重新分配……不知道)。
- 移除单个 DDR 模块:经过 3 天的连续测试后问题未重现。
- 用之前提取的潜在“坏”模块替换“好”模块:问题在 1 天内重现。(尽管 MemTest86+ 在问题发生后没有立即检测到 RAM 的任何问题 - 进行了 6 次扩展测试)
- 保持安装的“坏”模块,但在 BIOS 中修改了 RAM 频率 1600MHz->1300MHz - 已经运行了 3 天的对比测试 - 到目前为止没有重现问题。
硬件
- Zotac ZBOX ID90
- 硬盘:东芝 2.5 英寸 1Tb(MQ01ABD100)。计算机中的单个硬盘。
- 内存:金士顿 HyperX PnP 8GB 1600MHz DDRIII (KHX1600C9S3P1K2/8G)- 两个模块套件 4Gb+4Gb
软件
- Windows 8.1 64 位(包含所有最新更新)
- 文件系统:NTFS 压缩
问题
考虑到以上所有因素,有人可以建议或确认我的假设吗:
有人知道可能是什么原因吗?或者我还能做什么来检测原因?还有其他测试工具可以进行一些深度测试吗(例如在密集使用视频内存期间进行内存测试等)?
如果我现在的假设是正确的(可能我的 KINGSTON RAM 型号与主板不完全兼容,或者一个 RAM 模块有点缺陷,在 1600MHz 下无法正常工作),我可以用哪种测试工具来证明这一点?(MemTest86+ 和其他几个工具没有检测到任何问题)
今天我还注意到:当我在 BIOS 中将内存时序从自动切换到手动时,默认值与 KINGSTON 规格推荐的值不同:tRAS 应该>33.75(在 BIOS 中默认值为 27),tRFC 应该>260(在 BIOS 中默认值为 208,但最大值为 255,仍小于推荐的 260ns)。理论上这可能是原因吗?(也会测试手动时序,但需要一些时间)。
答案1
因此,经过两个月和一些其他实验。:-)
总结;
通过禁用 NTFS 压缩已解决该问题。
这根原因仍然未知:我相信它可能是由 HDD、内存或主板引起的。 或者通过实施 NTFS 压缩。
长版本
我尝试过 RAM 计时 - 但没用。
联系制造商支持人员询问已知硬件问题。RAM 和主板制造商没有关于已知问题的任何信息。HDD 制造商(东芝)没有回答 :-)
无论如何,在我禁用压缩后,在正常使用计算机近 2 个月后,问题没有重现。而存储在压缩文件夹中的另一个示例副本被破坏/恢复了多次。
Windows 8.1 中使用的压缩算法的实现可能存在错误。
我也对 Windows 10 版本进行了测试 - 压缩文件在一天 IDLE 期间就会损坏。
答案2
您是否尝试过更换 SATA 数据线?如果您有备用数据线,请尝试一下。尝试找到一根末端没有金属夹的数据线。我遇到过很多麻烦。
答案3
在命令提示符(管理员模式)中运行 CHKDSK C: /F - 注意命令中的空格 - 看看这是否有帮助。检查磁盘将在重新启动期间和 Windows 本身加载之前扫描并修复错误。