In Linux, il recente fanotify
syscall ha abilitato una simpatica utility chiamata fatrace
che informa su quale processo sta colpendo quale file per l'intero sistema o per una particolare partizione. Sicuramente il mio strumento preferito per questo genere di cose:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
Puoi dare un'occhiata a http://samwel.tk/laptop_mode/ . Sebbene questa pagina non riguardi principalmente il tuo problema, ma fornisce una buona immagine generale di come funziona IO e idee su come silenziare i tuoi dischi spegnendoli.
La risposta breve al tuo problema:
echo 1 > /proc/sys/vm/block_dump
produrrà messaggi in syslog come:
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
Ho usato un semplice comando ls
NOTA:assicurati che la registrazione del tuo sistema sia disattivata o scritta su un ramdisk (digita:tmpfs) prima di farlo, perché (citazione):"il tuo sistema potrebbe entrare in un ciclo di feedback, dove syslogd causa l'attività del disco, questo causa l'output del kernel, e questo fa sì che syslogd faccia più attività sul disco"
Raccomando di montare /tmp come ramdisk, quindi impostare la registrazione su /tmp/syslog. Questo in /etc/fstab (e un riavvio) farà:
none /tmp tmpfs defaults,size=256M 0 0
Ho usato iotop per capire cosa sta usando l'unità. Dal sito web devi avere "Linux kernel ≥ 2.6.20 con le opzioni TASK_DELAY_ACCT e TASK_IO_ACCOUNTING abilitate".
Sembra che tu sia interessato solo a un disco in particolare. Potresti considerare di scrivere uno script che controlla regolarmente con lsof o fuser l'accesso a quell'unità/partizione.