TL;DR:我以为我在 2 个 SSD 上遇到了静态数据损坏错误,但我认为是在读取数据之后。如何诊断故障部分在哪里?
我的 ML 训练算法打开了数千个文件(只读),昨天其中一个文件显示已损坏。然而,当我开始探索 3 个副本(2 个 SSD 和 1 个 HDD 各 1 个)之间的差异时,事情变得更加奇怪。所有日期和大小都完美匹配,但 md5sum 显示 10 个文件存在差异。
更奇怪的是,在我确保所有 3 个副本都同步(使用带有校验和的 rsync)之后,1 个 SSD 上的不同文件随机显示损坏。所以我比较了 md5sum,它是 3 个副本中的奇数个。但是,当我在 2 分钟后再次对其进行测试时,md5sum 与另外 2 个匹配。这表明它不是磁盘损坏(静态数据)。
我该如何找出失败的原因?我将运行一个很长的 memtest(之前通过,一年前),但我不确定我还能做什么。
眼镜
- 戴尔 T7500(A18 BIOS - 来自戴尔的最新版本)
- 2x 至强 X5675
- 64GB (4x16GB ECC)
- 驱动器:
- 三星 850 EVO 250GB (SSD FW:EMT03B6Q)
- 三星 860 EVO 500GB (SSD FW:RVT01B6Q)
- WD Blue 4TB(硬盘固件:80.00A80)
- 所有 3 个驱动器都连接到:
- IO Crest 4 端口 SATA III PCIe 2.0 x2 控制器卡绿色,SI-PEX40057(芯片组 Marvell 88SE9230)
- 使用是因为主板是 SATA 2.0,我需要更高的吞吐量。鉴于戴尔的 BIOS 限制,这是我唯一可以启动的 SATA 卡。
free -h
(缓存已满,因为我刚刚在所有 3 个驱动器上运行了新的 md5sum 匹配)的输出
total used free shared buff/cache available
Mem: 62G 1.2G 312M 11M 61G 61G
Swap: 2.0G 0B 2.0G
的输出sudo lshw -C memory
(我可以根据手册确认 4 个棒位于正确的插槽中。MB DIMM 1 和 2,竖管 DIMM 1 和 2)
*-firmware
description: BIOS
vendor: Dell Inc.
physical id: 0
version: A18
date: 10/15/2018
size: 64KiB
capacity: 1984KiB
capabilities: pci pnp apm upgrade shadowing escd cdboot bootselect edd int13floppytoshiba int13floppy720 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification netboot
*-cache:0
description: L1 cache
physical id: 700
size: 384KiB
capacity: 384KiB
capabilities: internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 701
size: 1536KiB
capacity: 1536KiB
capabilities: internal varies unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 704
size: 12MiB
capacity: 12MiB
capabilities: internal varies unified
configuration: level=3
*-cache:0
description: L1 cache
physical id: 702
size: 384KiB
capacity: 384KiB
capabilities: internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 703
size: 1536KiB
capacity: 1536KiB
capabilities: internal varies unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 705
size: 12MiB
capacity: 12MiB
capabilities: internal varies unified
configuration: level=3
*-memory
description: System Memory
physical id: 1000
slot: System board or motherboard
size: 64GiB
capabilities: ecc
configuration: errordetection=multi-bit-ecc
*-bank:0
description: DIMM DDR3 1333 MHz (0.8 ns)
product: 9965516-433.A00LF
vendor: AMD
physical id: 0
serial: CF38EF94
slot: DIMM 1
size: 16GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:1
description: DIMM DDR3 1333 MHz (0.8 ns)
product: 9965434-110.A00LF
vendor: AMD
physical id: 1
serial: 2D25C605
slot: DIMM 2
size: 16GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:2
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 2
serial: FFFFFFFF
slot: DIMM 3
width: 64 bits
*-bank:3
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 3
serial: FFFFFFFF
slot: DIMM 4
width: 64 bits
*-bank:4
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 4
serial: FFFFFFFF
slot: DIMM 5
width: 64 bits
*-bank:5
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 5
serial: FFFFFFFF
slot: DIMM 6
width: 64 bits
*-bank:6
description: DIMM DDR3 1333 MHz (0.8 ns)
product: 9965434-110.A00LF
vendor: AMD
physical id: 6
serial: 2E25EB05
slot: RISER DIMM 1
size: 16GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:7
description: DIMM DDR3 1333 MHz (0.8 ns)
product: 9965434-110.A00LF
vendor: AMD
physical id: 7
serial: 2F25DC05
slot: RISER DIMM 2
size: 16GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:8
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 8
serial: FFFFFFFF
slot: RISER DIMM 3
width: 64 bits
*-bank:9
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: 9
serial: FFFFFFFF
slot: RISER DIMM 4
width: 64 bits
*-bank:10
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: a
serial: FFFFFFFF
slot: RISER DIMM 5
width: 64 bits
*-bank:11
description: DIMM DDR3 Synchronous [empty]
vendor: FFFFFFFFFFFF
physical id: b
serial: FFFFFFFF
slot: RISER DIMM 6
width: 64 bits
更新 1
戴尔的内置系统诊断程序运行没有问题(我阻止它进行内存测试,而是使用 memtest86 进行了测试)。
完成了 memtest86 v4 的 1-8 次测试,没有问题。
我编写了一个 python 脚本来获取目录中所有 md5sum 的字典,并同时针对 3 个副本运行它(但每个驱动器只有 1 个线程*)。它发现了 7 个新的差异(在 3000 个文件中)。这些在 3 个驱动器之间大约平均分配(因此这不仅仅是 SSD 的问题)。当我回去检查 7 个奇数中的每一个时,每个 md5sum 现在都与其他 2 个匹配。
目前的想法:
- 我认为可能有 2/3 的工作人员同时访问每个驱动器的文件可能是问题所在,但我现在做了一些测试,错误仍然出现在顺序访问中。
- SATA卡在某种程度上是坏的。我会将所有 3 个驱动器重新连接到主板并再次运行相同的测试。
似乎可能是 SATA 卡在将所有 3 个驱动器直接连接到 MB 后,现在在所有 3 个驱动器上运行 3 次,md5sum 差异为 0。看起来 SATA 卡是片状的,注定要被扔进垃圾桶。