间歇性数据损坏,如何诊断?

间歇性数据损坏,如何诊断?

总结:我以为我的 2 个 SSD 上出现了静态数据损坏错误,但我认为是在读取数据后发生的。我该如何诊断故障部件在哪里?

我的 ML 训练算法打开了数千个文件(只读),昨天其中一个文件显示已损坏。然而,当我开始探索 3 个副本(2 个 SSD 和 1 个 HDD 上各一个)之间的差异时,事情变得更加奇怪。所有日期和大小都完全匹配,但 md5sum 显示 10 个文件存在差异。

更奇怪的是,在我确保所有 3 个副本都同步(使用带校验和的 rsync)后,1 个 SSD 上的另一个文件随机显示损坏。因此,我比较了 md5sum,发现它是 3 个副本中奇怪的一个。但是,当我 2 分钟后再次测试时,md5sum 与其他 2 个匹配。这表明磁盘(静态数据)上没有损坏。

我该如何找出问题所在?我将运行一个长时间的内存测试(一年前已经通过了),但我不确定我还能做什么。

眼镜

  • Dell T7500(A18 BIOS - 戴尔最新产品)
  • 2个至强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 个驱动器上运行了新的 md5sums 匹配)

          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,Riser 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 次测试,md5sum 差异为 0。看来 SATA 卡有问题,注定要扔掉。

答案1

来自评论...

  • 成功运行戴尔内置系统诊断程序

  • 确认 BIOS 当前版本为 A18

  • 成功运行 memtest 且无错误,内存已正确安装以进行内存交叉

  • 将 SATA 驱动器重新配置到主板上,而不是 PCIe SATA 卡,然后进行测试

  • 已下载Samsung Magician并将检查 SSD 固件更新(1)

(1)强烈怀疑我们会在这里找到一些东西


来自IO Crest 4-port SATA III PCIe 2.0 x2 Controller Card Green, SI-PEX40057手册这里,我们看到特殊的 Linux 安装说明......

内核版本为 2.6.19 及以上的 Linux 发行版包含 IDE/ATA 设备的内置驱动程序。在大多数发行版中,内核默认不会加载内置 IDE/ATA 设备的驱动程序。在 Linux 中启用对 IDE/ATA 设备的支持的步骤如下:

Enabling support for IDE/ATA devices during a Clean Installation of Linux
 To enable support during a Clean Installation of Linux:
 1. Boot from the Linux Installation CD/DVD
 2. Select Installation and press Enter
 3. Type the following command into the Boot Options command line:
        ata_generic.all_generic_ide=1
 4. Press Enter to continue with the Linux OS installation

Enabling Support for IDE/ATA Device on an Existing Installation of Linux
 To enable support during a Existing Installation of Linux:
 1. Login as root.
 2. Right-click the Desktop and select Open in Terminal.
 3. Type the following commands:
        ls
        cd/boot/grub
         vim menu.lst
 4. Type the following command at the end of the kernel line for the title 
    paragraph that lists the version information for the Linux distribution.
        ata_generic.all_generic_ide=1
 5. Browse to File and select Save.
 6. Reboot the system for the changes to take effect. 

更新#1:

怀疑有缺陷的 PCIe SATA 卡已从系统中移除。

相关内容