Linux では、最近っぽい fanotify
syscall は fatrace
という便利なユーティリティを有効にしました これは、システム全体または特定のパーティションのどのプロセスがどのファイルにアクセスしているかを通知します。この種のツールには間違いなく私のお気に入りのツールです:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
http://samwel.tk/laptop_mode/ を確認できます。このページは主にあなたの問題に関するものではありませんが、IO がどのように機能するかの全体像とアイデアを提供し、ディスクを停止してディスクをサイレントにする方法を提供します。
あなたの問題に対する簡単な答え:
echo 1 > /proc/sys/vm/block_dump
syslog に次のようなメッセージが生成されます:
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340136 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 4335136 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 15505568 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340160 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340168 on dm-4
単純な ls コマンドを使用しました
注:実行する前に、システム ログが停止されているか、RAM ディスク (タイプ:tmpfs) に書き込まれていることを確認してください。これにより、syslogd がより多くのディスク アクティビティを行うようになります"
/tmp を ramdisk としてマウントしてから、/tmp/syslog へのロギングを設定することをお勧めします。 /etc/fstab (および再起動) でこれを行います:
none /tmp tmpfs defaults,size=256M 0 0
ドライブを使用しているものを把握するために iotop を使用しています。 Web サイトから、「TASK_DELAY_ACCT および TASK_IO_ACCOUNTING オプションを有効にした Linux カーネル ≥ 2.6.20」が必要です。
1 つの特定のドライブにのみ関心があるようです。そのドライブ/パーティションへのアクセスを lsof または fuser で定期的にチェックするスクリプトを作成することを検討してください。