可能是硬盘坏了,但可以读取和写入 - 不确定日志条目

可能是硬盘坏了,但可以读取和写入 - 不确定日志条目

我最近收到了一个 Linux 机器,它在 Samba 共享方面存在问题 —— 首先,无法连接,其次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

smartctl -t extended(SMART 长(最大)扫描)已经三次什么都没说了。

我说的“一切正常”是指:

// 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

文件最终没有损坏,并且完全可读。

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

答案1

重要的日志条目是:

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

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


请参阅此类似问题“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.

引自此Linux 帖子


smartctl -t extended (SMART 长(最大)扫描)已经三次没有说什么了。

扩展 SMART 测试是在驱动器本地执行的自检,显然不会对 SATA 接口造成压力。因此,它无助于解决问题,但确实强化了问题出在接口而不是介质上的概念。

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

dd if=/dev/sdc of=/dev/null

SATA 接口上可能存在三个硬件故障来源:

  • SATA 电缆。例如 我的硬盘是不是坏了?
    简单测试:更换电缆。
  • 主板的SATA接口。
    测试:使用不同的 SATA 端口,或安装备用接口,例如带有新电缆的 PCI 或 USB 转 SATA 适配器。
  • 驱动器的 SATA 接口。
    测试:使用新电缆将 HDD 安装到另一台 PC 上,然后查看驱动器是否出现错误。

但除了该问题由硬件故障引起之外,还有报告指出 Linux 内核是导致 SATA 错误的原因:


结论

如果你只是ICRC ABRT偶尔在日志中看到这些条目“时不时”率,那么您可能不再有问题。也许原始问题可能是由一些内核问题引起的,这些问题在您更新系统时被消除了。

尝试使用该系统,并认真备份。

答案2

无论操作系统是什么,我总是发现,当某个硬盘驱动器开始出现类似这样的异常情况时,它几乎肯定会在接下来的几个月内损坏。如果可能的话,我建议您用新的硬盘驱动器替换该硬盘驱动器。硬盘驱动器损坏的其他症状包括您仍然可以复制和移动无法使用的文件,以及程序突然出现一些怪异现象。

在我的其中一台笔记本电脑中,硬盘快要坏了。当时我可以正常启动操作系统,但当我执行一分钟前还运行正常的操作时,突然出现有关操作系统最奇怪进程的错误消息 - 由于硬盘损坏,操作系统的一个系统文件半损坏。更换硬盘后,这种情况完全停止了,到目前为止,系统已经正常运行了 4 年。

您也可以尝试运行完整的聪明的硬盘扫描。您可以从制造商的网站上找到这些。Seagate 和 Western Digital 至少有一个,但我不确定它们是否适用于 Linux。有时完整扫描会发现损坏的驱动器,而 POST 期间的快速扫描无法发现。

编辑:我在 Linux 上找到了这个,但我没有亲身使用过它:http://sourceforge.net/apps/trac/smartmontools/wiki

答案3

您的硬盘即将坏掉(尽管有智能结果)。可能是控制器出了问题,但更有可能是硬盘出了问题。

相关内容