長い話を短くLinuxでどのファイルアクセスによってハードドライブが回転するのかを知る方法はありますか?
完全な物語私のラップトップには、OSとホームディレクトリを含むNVMEディスクと、NVMEに適していない一括データを格納するために使用する2番目のホームディレクトリを含む回転ハードドライブがあります。私はこれが一般的な合意だと思います。
このレイアウトの利点の1つは、ディスク上のファイルの回転が必要なプロジェクトで作業していないときにディスク自体を回転させることで、エネルギー、バッテリ時間、ノイズなどを節約できることです。これは頻繁に起こります。
しかし、当時私がやっていた作業がそこに保存されたデータと明確にリンクされていない場合でも、ハードドライブが時々回転しました。それはまだ私がしたことの結果であり、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