是什么让我的磁盘旋转?

是什么让我的磁盘旋转?

长话短说Linux下有没有办法知道哪个文件访问导致硬盘旋转?

完整故事我的笔记本电脑有一个 NVME 磁盘,其中包含操作系统和我的主目录,以及一个旋转硬盘,其中包含第二个主目录,我用它来存储不适合 NVME 的批量数据。我相信这是一种常见的安排。

这种布局的好处之一是,当我不处理需要旋转磁盘上的文件的项目时,磁盘本身可以旋转下来,从而节省能源、电池时间、噪音等。这种情况经常发生。

然而,即使我当时所做的事情与存储在那里的数据没有明确的联系,硬盘也会时不时地旋转。它仍然是我所做的操作的结果,而不是 cron 脚本或其他东西的结果,因为它仍然是我做某事(例如打开应用程序)的结果。但是,我看不到打开该应用程序应该产生对旋转磁盘的访问,知道哪个文件应该在那里。所以我想更多地了解发生的事情,这证明了上述问题的合理性。

答案1

编辑一段时间后我发现有一个很好的实用程序叫做fatrace这使一切变得更容易,因为您不必弄乱服务和设备:只需调用fatrace,您就会看到所有文件访问的日志。如果您只想查看某个设备,仅查看grep其安装点,或者将 dir 更改为安装点并使用该-c标志。


auditd可用于监控Linux系统调用,并且支持根据涉及的设备进行过滤。以下说明适用于 Debian 系统,但其他系统可能非常相似。

首先安装并启动auditd

# apt-get install auditd
# service auditd start

然后找到您要监控的设备的主设备号和次设备号,/dev/sda在我的例子中:

# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 feb 17 09:58 /dev/sda

所以8是大调,0是小调。最后,创建并auditd规则如下:

# auditctl -a always,exit -F devmajor=8 -F devminor=0

现在看看/var/log/audit/audit.log,所有文件访问都将被记录。这可能有助于找出哪个进程导致硬盘旋转。

该日志可能非常详细,并且可能很快就会填满磁盘。完成后,您可以关闭auditd

# service auditd stop

相关内容