Bene, potresti provare i seguenti comandi che hanno funzionato per me in RHEL6:
1) Qualunque dispositivo tu veda nell'output "iostat" che esegue più I/O, usalo con fuser
comando come segue:
fuser -uvm device
2) Otterrai un elenco di processi con il nome utente che causa più I/O. Seleziona quei PIDS e usali nel lsof
comando come segue:
lsof -p PID | more
3) Otterrai un elenco di file/directory insieme all'utente che esegue il massimo I/O.
Sembra che non ci siano strumenti per scoprire il throughput I/O per file se non all'interno del processo che utilizza il file. Ma ci sono modi per scoprire il throughput I/O del processo.
iotop - È un'utilità simile a top/iftop che mostra il throughput I/O del processo.
Dopo aver individuato quale processo sta avendo un I/O pesante, usa quanto segue per scoprire quale file è in uso
lsof -c <process name>
Ciò dovrebbe restringere l'ambito e aiutare a individuare la fonte.
Puoi usare inotifywait
da inotify-tools
per scoprire esattamente in quale file viene scritto. Questo non ti dirà quanti dati vengono scritti, ma almeno ti dirà su quali file vengono scritti man mano che accade.
Ad esempio, questo comando stamperà il nome del file non appena ne vengono creati, modificati o eliminati in /tmp
:
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test
Sfortunatamente dovrai indovinare quale directory contiene i file in cui stai scrivendo. Questo fallisce se provi ad usarlo nella directory root, anche se apparentemente può essere sovrascritto:
$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches. Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.