Nah, Anda dapat mencoba perintah berikut yang bekerja untuk saya di RHEL6:
1) Perangkat apa pun yang Anda lihat di output "iostat" melakukan lebih banyak I/O, gunakan dengan fuser
perintah sebagai berikut:
fuser -uvm device
2) Anda akan mendapatkan daftar proses dengan nama pengguna yang menyebabkan lebih banyak I/O. Pilih PIDS tersebut dan gunakan di lsof
perintah sebagai berikut:
lsof -p PID | more
3) Anda akan mendapatkan daftar file/direktori beserta pengguna yang melakukan I/O maksimum.
Sepertinya tidak ada alat untuk mengetahui throughput I/O per file selain dalam proses menggunakan file. Namun ada cara untuk mengetahui throughput proses I/O.
iotop - Ini adalah utilitas seperti top/iftop yang menunjukkan throughput proses I/O.
Setelah menunjukkan proses mana yang mengalami I/O berat, gunakan berikut ini untuk mencari tahu file apa yang sedang digunakan
lsof -c <process name>
Itu akan mempersempit ruang lingkup dan membantu menentukan sumbernya.
Anda dapat menggunakan inotifywait
dari inotify-tools
untuk mengetahui file mana yang sedang ditulis. Ini tidak akan memberi tahu Anda berapa banyak data yang sedang ditulis, tetapi setidaknya akan memberi tahu Anda file apa yang sedang ditulis saat itu terjadi.
Sebagai contoh, perintah ini akan mencetak nama file segera setelah dibuat, diubah, atau dihapus di /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
Sayangnya Anda harus menebak direktori mana yang berisi file yang sedang ditulis. Ini gagal jika Anda mencoba menggunakannya di direktori root, meskipun tampaknya itu dapat diganti:
$ 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'.