Bagaimana saya bisa memonitor beban hard disk di Linux?


101

Apakah ada utilitas baris perintah yang baik untuk memantau beban hard disk di linux? Sesuatu seperti toptapi kemudian memantau aktivitas penggunaan disk iso cpu.

Lebih khusus lagi, saya menduga bahwa untuk beberapa server (beban berat) setelah beberapa optimasi pada berbagai bagian program yang berjalan di atasnya, sekarang bottleneck hanyalah logging ke file pada disk. Tetapi saya merasa sangat sulit untuk menilai seberapa banyak lalu lintas yang dapat ditangani oleh server.

Alat ideal saya akan menjadi sesuatu yang mencetak "Anda menggunakan 35% dari bandwidth disk Anda sekarang". Ada ide?


1
Pertanyaan sempurna, persis apa yang saya cari =)
rafa.ferreira

Mungkin untuk membaca sysfs secara langsung, seperti /sys/block/sda/stat. Kolom # 1 memberikan total # dari bacaan, bidang # 5 adalah total # dari penulisan, bidang # 9 adalah jumlah operasi I / O yang sedang berlangsung. Lihat lebih lanjut di kernel.org/doc/Documentation/iostats.txt Nilai-nilainya tidak ditandai lama dan mungkin terbungkus.
sastanin

Ini adalah pertanyaan yang sangat bagus karena kami selalu berjuang dengan masalah ini di server Plesk. Namun, yang hilang adalah how do you do it with SNMP?. Tidak apa-apa untuk masuk dan memeriksa hal-hal, tetapi yang benar-benar membutuhkan data historis.
Eugene van der Merwe

Jawaban:


83

Anda bisa mendapatkan ukuran yang cukup baik dari ini menggunakan iostatalat ini.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Pemanfaatan disk tercantum di kolom terakhir. Ini didefinisikan sebagai

Persentase waktu CPU selama permintaan I / O dikeluarkan untuk perangkat (pemanfaatan bandwidth untuk perangkat). Saturasi perangkat terjadi ketika nilai ini mendekati 100%.


3
Dalam paket apa ini berada di Debian, jika ada? apt-cache dumptidak mengubah apa pun untuk iostat
hBy2Py

9
@ Brian: Ada dalam paket sysstat (toh yum ...)
Joe

Tidak dapat menemukan ini di RHEL 6.5. Apakah ini tersedia untuk RHEL?
Hazok

Bisakah ini bekerja tanpa harus melanjutkan dengan penundaan? Mencoba menjalankan satu instance untuk mendapatkan data dari mendapatkan nomor yang sama mungkin karena tidak dapat mengambil sampel ???
Wilf

@Hazok Ini adalah bagian dari RPM sysstat di RHEL 6.5.
TheGeneral

81

iotop adalah versi top yang melihat seberapa banyak IO yang digunakan setiap proses. Ada dalam repositori standar ubuntu; Saya tidak tahu apakah itu di RHEL atau Fedora, tetapi seharusnya begitu.

masukkan deskripsi gambar di sini

Untuk kernel yang lebih lama (misalkan CentOS 5.x atau RHEL 5.x) yang tidak mendukung iotop, gunakan topio sebagai gantinya (didokumentasikan di sini: http://yong321.freeshell.org/freeware/pio.html#linux . Ini bergantung pada / proc // io untuk statistik io dan menyediakan fungsionalitas yang mirip dengan iotop. Lihat tautan untuk perincian lebih lanjut.


1
Memang, itu tidak diinstal secara default di Ubuntu, jadi orang bisa mengeluarkan: sudo apt-get install iotop untuk mendapatkannya
Moshe

1
iotop membutuhkan kernel yang lebih tinggi dari 2.6.20, yang sayangnya mengesampingkan RedHat el4 dan el5.
Dave Cheney

2
Pada RedHat 5.4, bit yang diperlukan untuk membuat pekerjaan iotop telah di-backport. Nikmati!
Dave Cheney

Itu di Fedora :).
jamie

13

Seperti yang disarankan oleh sastanin dalam komentar, Anda dapat memproses langsung nilai yang diberikan dalam /sys/block/sda/statatau /proc/diskstats. Ini mungkin membantu ketika tidak ada alat lain yang disebutkan tersedia dan Anda tidak dapat menginstalnya dengan mudah.

Misalnya (IIUC) sesuatu seperti ini (dalam bash) harus memberikan jumlah pembacaan per detik:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Lihat https://www.kernel.org/doc/Documentation/iostats.txt dan https://www.kernel.org/doc/Documentation/block/stat.txt untuk dokumentasi.


7

Anda harus melihat di atas , yang menggabungkan kekuatan iotop / top / iftop, semuanya di satu tempat, dan menyoroti bagian-bagian penting pada sistem Anda.


5

Saya akan merekomendasikan untuk melihat alat nmon. Ini akan menunjukkan kepada Anda beban langsung pada sejumlah parameter sistem dan juga merekam data ke file untuk pembacaan selanjutnya. Ini alat gratis yang tersedia di sini :


5

untuk mengetahui berapa total bandwidth Anda, Anda dapat menggunakan hdparm -T /dev/sdauntuk menguji kinerja cache buffer (fileio) hdparm -t /dev/sdauntuk menguji kinerja perangkat yang dibaca

contoh: laptop saya mendapat 82MB / detik dari disk SATA dan 2GB / detik dari cache. Dekstop saya mendapatkan 12GB / detik dari cache dan 500MB / detik dari array HW RAID. Saya menduga angka-angka terakhir bisa menjadi dua kali lipat pada perangkat keras kelas server.

atur readahead lebih tinggi dari 256, 4096 paling cocok untuk saya

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

kali membaca 1GB pada ukuran blok yang berbeda dan berbagai baca-depan


Selamat datang di SF. Anda dapat menggunakan penyorotan kode dalam posting Anda dengan menempatkan tanda kutip di belakang string atau indentasi paragraf.
ℝaphink

Dua hal - 1) --setrasekarang -a, dan 2), hdparm -{T,t}perintah hanya mengeluarkan disk yang dibaca, menurut strace, jadi tidak rusak. (Penafian standar tentang saran di Internet berlaku)
i336_

4

Alat standar untuk menampilkan beban hard disk adalah iostat.

Itu tidak akan memberi tahu Anda berapa banyak usia disk bandwidth yang Anda gunakan, karena tidak tahu berapa banyak bandwidth yang dimiliki disk Anda. Bagaimanapun, disk Anda hanya memiliki angka yang dikutip dari pabrikan untuk transfer besar data yang berdekatan.


3

Saya pikir RRDtool harus melakukan apa yang Anda inginkan di sini menggunakan daemon untuk membuang data sistem dan kemudian memungkinkan Anda untuk memprosesnya sesuka Anda. Saya sering menggunakannya untuk menghasilkan grafik dll untuk mengukur beban sistem.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.