可能是一个快死的硬盘驱动器,但读取、写入工作 - 不确定日志条目

tom*_*ums 5 linux samba hard-drive sata smart

我最近收到了一个有 Samba 共享问题的 Linux 机器——首先,无法连接,其次ls -la显示了一些I/O error(接近下面可以看到的)但没有列出。

现在,我已经完全更新了盒子,更新后,RAID 正常,所有数据都可以访问,Samba 工作得非常好。显然,我没有保存以前的日志。

现在,即使一切正常,也会时不时地出现在我的journalctl

kernel: ata4: EH complete
kernel: end_request: I/O error, dev sdc, sector 2839546656
kernel: cdb[0]=0x28: 28 00 a9 40 0b 20 00 00 f0 00
kernel: sd 3:0:0:0: [sdc] CDB:
kernel: ASC=0x47 ASCQ=0x0
kernel: sd 3:0:0:0: [sdc]
kernel:         a9 40 0b a0
kernel:         72 0b 47 00 00 00 00 0c 00 0a 80 00 00 00 00 00
kernel: Descriptor sense data with sense descriptors (in hex):
kernel: Sense Key : 0xb [current] [descriptor]
kernel: sd 3:0:0:0: [sdc]
kernel: Result: hostbyte=0x00 driverbyte=0x08
kernel: sd 3:0:0:0: [sdc]
kernel: ata4.00: configured for UDMA/133
kernel: ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 330)
kernel: ata4: hard resetting link
kernel: ata4.00: error: { ICRC ABRT }
kernel: ata4.00: status: { DRDY ERR }
kernel: [145B blob data]
kernel: ata4.00: failed command: READ DMA EXT
kernel: ata4: SError: { UnrecovData 10B8B BadCRC }
kernel: ata4.00: BMDMA stat 0x26
kernel: ata4.00: exception Emask 0x10 SAct 0x0 SErr 0x280100 action 0x6
Run Code Online (Sandbox Code Playgroud)

smartctl -t extended (智能长(最大)扫描)已经说三遍了。

“一切正常”,我的意思是:

// Read from drive, write to drive.
find > files.txt

// Another read->write.
du -bc > sizes.txt

// 100 GB random writer
dd if=/dev/urandom of=fillerd bs=512 count=209715200
Run Code Online (Sandbox Code Playgroud)

这些文件最终不会损坏,完全可读。

错误描述了什么?我应该担心吗?我如何解决它?

saw*_*ust 6

突出的日志条目是:

  • 内核:ata4.00:错误:{ ICRC ABRT }
  • 内核:ata4:SError:{ UnrecovData 10B8B BadCRC }

这些日志条目表明 PC 和 HDD 之间的 SATA 接口发生错误。
SATA 接口携带用于数据、命令和状态报告的 ATAPI 数据包,这些数据、命令和状态报告使用 CRC、循环冗余校验、代码进行验证。
ICRC ABRT消息指示“接口 CRC 错误”事件和“命令中止”。其他日志条目是与中止命令相关的辅助信息。
这不是报告与 HDD 的 R/W 磁头或盘片有关的错误,因为扇区是使用 ECC 验证的,而不是较弱的 CRC。
有关这些消息的更多详细信息位于此 libata wiki 页面


请参阅有关“SATA 驱动器或芯片组抛出 DRDY ERR 和 ICRC ABRT”的类似问题,其中问题的根源在于 SATA 接口的主机端,而不是 HDD。

请注意,偶尔出现的 SATA 接口错误不会被视为有问题:

   For SATA drives, occasional transmission problems are expected even on
   otherwise pretty healthy systems. No need to worry about it too much
   unless the problem repeats itself a lot.
Run Code Online (Sandbox Code Playgroud)

引自这篇Linux 帖子


smartctl -t extended (SMART long (maximum) scan) 已经说了三遍了。

Extended SMART 测试是在驱动器本地执行的自检,显然不会对 SATA 接口施加压力。因此,它无助于解决问题,但确实强化了问题出在界面而非媒体上的观念。

您需要查找从主机 PC 执行的磁盘诊断程序或练习程序。
由于扩展 SMART 测试显然可以无误地读取每个扇区,因此读取每个扇区并将该扇区通过 SATA 总线传输到 PC的几乎相同的测试是:

dd if=/dev/sdc of=/dev/null
Run Code Online (Sandbox Code Playgroud)

SATA 接口上的硬件故障可能有以下三种来源:

  • SATA 电缆。例如, 我的驱动器快死了吗?
    简单测试:更换电缆。
  • 主板的SATA接口。
    测试:使用不同的 SATA 端口,或使用新电缆安装备用接口,例如 PCI 或 USB 转 SATA 适配器。
  • 驱动器的 SATA 接口。
    测试:用新电缆将硬盘安装在另一台电脑上,看看驱动器是否有错误。

但除了此问题的硬件故障外,还有报道称 Linux 内核是导致 SATA 错误的原因:


底线

如果您只是ICRC ABRT在日志中以不频繁的“不时”频率看到这些条目,那么您可能不再有问题。也许最初的问题可能是由于更新系统时消除了一些内核问题。

尝试使用系统,并勤奋备份。