我的文件系统中安装了两个 NTFS 分区。其中一个分区用于存放我的项目,因此它非常重要。
我的电脑时不时会变得很慢,有时甚至会卡死。我注意到,每当发生这种情况时,进程mount.ntfs
都会显示disk sleep
在系统监视器 ksysguard 的 CPU 列中(见下面的屏幕截图)。
值得注意的是,在这种情况下,记忆是不是快用完了,而且 CPU不是满负荷运转。
出现此问题的可能原因是什么?我该如何解决?
我运行的是 Kubuntu 19.04,64 位。
答案1
从某种意义上来说,“磁盘睡眠”并不是原因这只是经济放缓的一个症状。
目前,该进程除了等待接收磁盘读/写请求的响应外,没有执行任何操作。因此,如果磁盘响应时间过长,任何尝试读取或写入的进程将进入“磁盘休眠”或“I/O等待”状态,直到其操作完成。
我猜系统感觉很慢是因为你的许多程序只是想从你的 NTFS 分区读取文件,所以自然他们会等待 mount.ntfs 恢复 - 而 mount.ntfs 本身无法满足这些访问请求,因为它正在等待你的 HDD 恢复。
可能存在多种原因:
有很多磁盘读取或写入次数(针对整个物理磁盘;不一定针对特定分区)。要确定这是否是原因,请先执行以下操作:
iotop
或者iotop -Pao
查看当前正在执行 I/O 的单个程序;iostat -h 1
报告全部的每个物理存储设备的 I/O 速率。
磁盘正忙于尝试读取损坏的区域。(HDD 偶尔会出现损坏的扇区 - 有时该扇区需要重试十几次后才能读取;有时它完全无法读取,但您必须等待 HDD 放弃尝试。)
dmesg
或者dmesg -w
查看磁盘是否报告任何读取错误或其他硬件问题。
内核可能存在错误,例如在高性能“UAS”模式下通过USB 3.0连接的磁盘经常会使整个系统卡住。
- 再次 dmesg,但这次查找内核报告其自身的锁定没有相关的磁盘读取错误。
如果你的项目很重要,即使是单身的dmesg 中报告的错误意味着你应该停止一切并将备份到另一个磁盘。(实际上,如果你的项目实际上很重要,你应该已经做好备份了。)