Můžete zkusit následující příkazy, které mi fungovaly v RHEL6:
1) Bez ohledu na to, jaké zařízení vidíte na výstupu „iostat“ s vyšším I/O, použijte jej s fuser
příkaz takto:
fuser -uvm device
2) Získáte seznam procesů s uživatelským jménem způsobujících více I/O. Vyberte tyto PIDS a použijte je v lsof
příkaz takto:
lsof -p PID | more
3) Získáte seznam souborů/adresářů spolu s uživatelem, který provádí maximální I/O.
Zdá se, že neexistují žádné nástroje pro zjištění propustnosti I/O na soubor kromě procesu využívajícího soubor. Existují však způsoby, jak zjistit propustnost I/O procesu.
iotop – Jedná se o nástroj typu top/iftop, který ukazuje propustnost I/O procesu.
Po určení, který proces má těžké I/O, pomocí následujícího zjistěte, jaký soubor se používá
lsof -c <process name>
To by mělo zúžit rozsah a pomoci určit zdroj.
Můžete použít inotifywait
od inotify-tools
abyste přesně zjistili, do kterého souboru se zapisuje. To vám neřekne, kolik dat se zapisuje, ale alespoň vám to řekne, do jakých souborů se během toho zapisuje.
Tento příkaz například vytiskne název souboru, jakmile bude nějaký soubor vytvořen, upraven nebo odstraněn v /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
Bohužel budete muset uhodnout, který adresář obsahuje soubory, do kterých se zapisují. Toto selže, pokud se jej pokusíte použít v kořenovém adresáři, i když to lze zjevně přepsat:
$ 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'.