Di Linux, fanotify
ish terbaru syscall mengaktifkan utilitas bagus bernama fatrace
yang menginformasikan proses mana yang mengenai file mana baik untuk keseluruhan sistem atau partisi tertentu. Pasti alat favorit saya untuk hal semacam ini:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
Anda dapat memeriksa http://samwel.tk/laptop_mode/ . Meskipun halaman ini pada dasarnya bukan tentang masalah Anda, tetapi memberikan gambaran keseluruhan yang baik tentang cara kerja dan ide IO, cara membisukan disk Anda dengan mematikannya.
Jawaban singkat untuk masalah Anda:
echo 1 > /proc/sys/vm/block_dump
itu akan menghasilkan pesan di syslog seperti:
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
Saya telah menggunakan perintah ls sederhana
CATATAN:pastikan logging sistem Anda dimatikan atau ditulis ke ramdisk (ketik:tmpfs) sebelum melakukannya, karena (kutipan):"sistem Anda mungkin masuk ke loop umpan balik, di mana syslogd menyebabkan aktivitas disk, ini menyebabkan keluaran kernel, dan ini menyebabkan syslogd melakukan lebih banyak aktivitas disk"
Saya merekomendasikan untuk memasang /tmp sebagai ramdisk lalu menyiapkan logging ke /tmp/syslog. Ini di /etc/fstab (dan reboot) akan melakukan:
none /tmp tmpfs defaults,size=256M 0 0
Saya telah menggunakan iotop untuk mencari tahu apa yang menggunakan drive tersebut. Dari situs web Anda harus memiliki "kernel Linux ≥ 2.6.20 dengan opsi TASK_DELAY_ACCT dan TASK_IO_ACCOUNTING diaktifkan".
Sepertinya Anda hanya tertarik pada satu drive tertentu. Anda dapat mempertimbangkan untuk menulis skrip yang secara rutin memeriksa dengan lsof atau fuser untuk akses ke drive/partisi tersebut.