如何调查或修复 Linux 上的随机 IO HDD 和系统冻结?

如何调查或修复 Linux 上的随机 IO HDD 和系统冻结?

我家用的桌面系统是 Ubuntu 18.04.1,内核定期更新,目前是 5.3.0。有时,主要是在浏览时,但不一定,系统在 IO 上会变慢:- 硬盘 LED 一直亮着 - 系统在所有磁盘请求上都很慢。例如控制台登录或ls ~/需要几分钟 - 系统在其他事情上很快(鼠标移动、虚拟控制台切换)- iotop 显示多个应用程序 99% 等待 IO - iostat 显示高 wrqm,低 wrkb/s

几分钟后系统完全冻结,我只能硬重启

我可以做什么来更好地调查问题?您会推荐什么调度程序?如果是单个应用程序杀死了我的硬盘,有没有办法禁止它这样做?

更新:磁盘是HDD,即旋转磁盘。显示 IO 等待的应用程序实际上都在进行 IO。不用交换,内存足够。系统日志中没有相关行,下次出现时我将看到 /var/log/messages

答案1

除了使用topor等​​工具之外glances,您的第一个选择是journalctl.

我遇到了类似的问题,我journalctl -b -f从终端开始并将其留在那里。出现问题时,显示消息内核:i915 0000:00:02.0:GPU挂起:ecode 9:1:0x00000000,挂在rcs0上,结果是一个漏洞至少在内核 5.3 和 5.4 中。

答案2

您还需要验证磁盘的健康状态。有些磁盘在读取块失败时可能会持续重试相当长一段时间。如果读取最终成功,则可能不会报告任何 I/O 错误。但如果磁盘重试时间过长,内核最终可能会导致操作超时。

类似的东西sudo smartctl -a /dev/sda会产生一份相当全面的报告。在仅提供磁盘制造商、型号和其他标识信息的第一部分之后,您将需要看到以下几行:

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

如果结果不是PASSED,则需要确保您的备份正常。如果您将计算机用于任何重要的事情,我建议尽快更换此类故障磁盘,而不要等待它们完全耗尽。

在大多数情况下,还应该有一个 SMART 属性及其值的表。这些值以缩放形式表示:只要每个值高于报告的阈值,磁盘的内部诊断仍然认为磁盘“足够好”。还有一个单独的原始值列,如果有“开机时间”等属性,该列可能会很有趣。

根据特定磁盘型号的 SMART 功能,还可能显示更详细的错误日志和/或自检结果。

如果磁盘看起来不错,您可能需要尝试不同的 SATA 电缆。看来近年来市场上出现了一些不良批次的SATA线。

相关内容