如何查找哪个进程正在定期写入磁盘?

如何查找哪个进程正在定期写入磁盘?

如何找到哪个进程正在不断写入磁盘?

我喜欢我的工作站接近安静,我只是构建了一个新系统(P8B75-M + Core i5 3450s - 's',因为它的最大 TDP 较低)和安静的风扇等,并安装了 Debian Wheezy 64 位在上面。

有些事情让我感到不安:我可以听到某种模式,就像硬盘正在写入或寻找某些东西一样(勾选...勾选...勾选...trrrrrr冲洗并每隔一秒左右重复一次)。

过去我(很多很多年前)也遇到过类似的问题,结果发现是一些 CUPS 日志或其他东西,我只是将这个(不重要)日志记录重定向到(真实的)RAM 磁盘。

但这里我不确定。

我尝试了以下方法:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

但那里什么都没有改变。

现在奇怪的是,当显示要求我输入 LVM 解密密码的提示时,我也听到了该模式。

可能是我刚刚安装的内核/系统中的某些内容或者我的硬盘有故障?

hdparm -tT /dev/sda报告正确的高清速度(130 GB/s 非缓存,sata 6GB),并且我已经从大型源(Emacs)安装和编译,没有问题,所以我不认为系统不好。

(高清为希捷Barracude 500GB)

答案1

您是否尝试过检查类似的程序iotop正在显示?它会准确地告诉您当前正在写入磁盘的进程类型。

示例输出:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

答案2

您可以通过启用 IO 调试echo 1 > /proc/sys/vm/block_dump,然后在中查看调试消息/var/log/系统日志。这样做的优点是可以获取包含过去活动的某种类型的日志文件,而iotop仅显示当前活动。

答案3

假设磁盘噪音是由导致写入的进程引起的,而不是由于一些磁盘旋转问题,您可以使用审计子系统(安装auditd包裹)。对sync通话及其好友进行监视:

auditctl -S sync -S fsync -S fdatasync -a exit,always

观看日志/var/log/audit/audit.log。如果审核日志本身被刷新,请小心不要这样做!检查/etc/auditd.confflush选项是否设置为none

如果文件经常被刷新,则可能的罪魁祸首是系统日志。例如,如果您记录失败的传入连接尝试并且有人正在探测您的计算机,则会生成大量条目;这可能会导致磁盘发出机关枪般的噪音。使用基本日志守护进程 sysklogd,检查/etc/syslog.conf:如果日志文件名前面没有-,则该日志会在每次写入后刷新到磁盘。

答案4

你可以稍微尝试一下。对于大多数人来说应该缩小范围。

find / -mount -newer /proc -print

给出自启动以来在/文件系统的物理设备上修改的文件。了解这些文件可能有助于识别作者。

相关内容