V Linuxu nejnovější fanotify
syscall aktivoval pěkný nástroj nazvaný fatrace
který informuje o tom, který proces naráží na který soubor, buď pro celý systém nebo konkrétní oddíl. Rozhodně můj oblíbený nástroj pro tento druh věcí:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
Můžete se podívat na http://samwel.tk/laptop_mode/ . Tato stránka sice není primárně o vašem problému, ale poskytuje dobrý celkový obrázek o tom, jak IO funguje, a nápady, jak ztišit vaše disky jejich vypnutím.
Krátká odpověď na váš problém:
echo 1 > /proc/sys/vm/block_dump
vytvoří zprávy v syslog jako:
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
Použil jsem jednoduchý příkaz ls
POZNÁMKA:Než to uděláte, ujistěte se, že je protokolování vašeho systému vypnuto nebo zapsáno na ramdisk (typ:tmpfs), protože (citace):"váš systém se může dostat do smyčky zpětné vazby, kde syslogd způsobí aktivitu disku, což způsobí výstup jádra, a to způsobí, že syslogd bude dělat více diskové aktivity"
Doporučuji připojit /tmp jako ramdisk a poté nastavit protokolování do /tmp/syslog. Toto v /etc/fstab (a restartování) udělá:
none /tmp tmpfs defaults,size=256M 0 0
Používal jsem iotop, abych zjistil, co používá disk. Z webu musíte mít "Linuxové jádro ≥ 2.6.20 s povolenými možnostmi TASK_DELAY_ACCT a TASK_IO_ACCOUNTING".
Zdá se, že vás zajímá pouze jeden konkrétní disk. Můžete zvážit napsání skriptu, který rutinně kontroluje pomocí lsof nebo fixační jednotky přístup k dané jednotce/oddílu.