如何找到哪个进程正在不断写入磁盘?
我喜欢我的工作站接近安静,我只是构建了一个新系统(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.conf
该flush
选项是否设置为none
。
如果文件经常被刷新,则可能的罪魁祸首是系统日志。例如,如果您记录失败的传入连接尝试并且有人正在探测您的计算机,则会生成大量条目;这可能会导致磁盘发出机关枪般的噪音。使用基本日志守护进程 sysklogd,检查/etc/syslog.conf
:如果日志文件名前面没有-
,则该日志会在每次写入后刷新到磁盘。
答案4
你可以稍微尝试一下。对于大多数人来说应该缩小范围。
find / -mount -newer /proc -print
给出自启动以来在/文件系统的物理设备上修改的文件。了解这些文件可能有助于识别作者。