Bagaimana saya bisa memonitor disk io?

267

Saya ingin melakukan pemantauan io disk umum pada server linux debian. Apa alat yang harus saya ketahui tentang monitor disk io sehingga saya dapat melihat apakah kinerja disk dimaksimalkan atau lonjakan pada waktu tertentu sepanjang hari?

camomileCase
sumber
4
serverfault.com/questions/9428/… || superuser.com/questions/115358/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

225

Untuk tren I / O disk ada beberapa opsi. Favorit pribadi saya adalah sarperintah dari sysstat. Secara default, ini memberikan output seperti ini:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

Ini %iowaitadalah waktu yang dihabiskan menunggu pada I / O. Menggunakan paket Debian, Anda harus mengaktifkan kolektor stat melalui /etc/default/sysstatfile konfigurasi setelah instalasi paket.

Untuk melihat pemanfaatan saat ini dipecah oleh perangkat, Anda dapat menggunakan iostatperintah, juga dari paket sysstat:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

Beberapa opsi lain yang dapat menunjukkan penggunaan disk dalam grafik berarah adalah munin dan kaktus .

jordanm
sumber
Munin atau Cacti lebih dari yang saya cari. Terima kasih untuk petunjuknya.
camomileCase
6
Perhatikan bahwa% iowait hanya menunjukkan waktu ketika kernel tidak melakukan apa-apa selain menunggu IO. Pada server yang terikat CPU 100% ini akan menjadi nol terlepas dari berapa banyak IO yang dilakukannya.
Jürgen Strobel
iostat -x dm-0 | Perangkat grep; iostat -xd 2 -y dm-0 | grep dm-0
Juan Medina
104

Lihatlah iotop.

Atau iodump, jika itu lebih ke cara berpikir Anda.

Catatan: Ini membutuhkan setidaknya kernel 2.6.20 untuk berfungsi.

Tink
sumber
Ini bukan hanya Linux saja, tetapi juga membutuhkan kernel yang lebih baru (atau ditambal).
jordanm
Ini terlihat bagus untuk mencari tahu apa yang sedang terjadi saat ini, tetapi saya sedang mencari pemantauan gambar yang lebih besar.
camomileCase
8
@camomileCase - Anda tidak menentukan itu dalam pertanyaan Anda ...
tink
90

Saya suka dstat. Itu dapat menampilkan total dan statistik per disk dan bahkan md-devices (RAID), juga dapat menggunakan warna untuk gambaran umum yang lebih baik:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t untuk cap waktu
  • -d untuk statistik disk
  • -D untuk menentukan perangkat yang tepat untuk dilaporkan
  • 60rata-rata lebih dari 60 detik. Layar diperbarui setiap detik, tetapi hanya sekali per 60 detik baris baru akan dimulai.

  • tidak digunakan dalam contoh ini, tetapi -cdapat melaporkan menunggu persentase IO, yang dalam banyak kasus terkait dengan CPU menunggu data dari disk.

Ini tersedia untuk sebagian besar distribusi Linux, tetapi kadang-kadang perlu diinstal dari repositori.

jippie
sumber
49

Hanya dari file di komputer Anda (dengan asumsi kernel terbaru) Anda dapat bertanya /sys/block/sda/statatau /proc/diskstats. Namun, ini perlu diterjemahkan. Tapi bagus untuk pemeriksaan cepat dan kotor.

jembatan Charles
sumber
22
/sys/block/sda/statdidokumentasikan di https://www.kernel.org/doc/Documentation/block/stat.txt
ignis
10
/proc/diskstatsdidokumentasikan di kernel.org/doc/Documentation/iostats.txt
Rikard Söderström
2
Keuntungan besar untuk jawaban ini adalah tidak ada alat yang perlu diinstal. Itu ada di sana. (Berpotensi :-)
Ben Aveling
2
misalnya gema "baca io sektor gabungan kutu tulis io gabungan sektor kutu dalam ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; sleep 10; cat / sys / block / vda / vda1 / stat
Ben Aveling
35

Pilihan lain adalah menggunakan: sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

Program ini akan memberi tahu Anda berapa banyak proses telah ditulis ke disk dan membaca dari disk sejak iotop dimulai.

lanoxx
sumber
Saya mendengar sesuatu mengakses disk, tetapi akumulasi output meningkat sangat lambat, terkadang tidak sama sekali dalam sekejap ... ???
Michael
Jika Anda mendengar disk, mungkin sudah tua dan / atau lambat. HDD modern cenderung sangat sunyi. Suara apa yang dihasilkannya? Gunakan smartctluntuk melihat apakah disk tersebut sehat.
rudolfbyker
8

Memantau Disk Io dapat dilakukan oleh beberapa alat seperti berikut ini.

  1. Iostat
  2. Iozone
  3. SAR
  4. vmstat

Juga beberapa konsep sistem operasi yang penting sangat diperlukan untuk memahaminya..baca tutorial lengkap IO Linux

sarath
sumber
2
iozone untuk pengujian, bukan pemantauan: "Iozone adalah alat benchmark sistem file. Benchmark menghasilkan dan mengukur berbagai operasi file."
Andrew Beals
7

Alat hebat lainnya untuk ikhtisar cepat dari mana beban berasal adalah atop

Ini dapat menunjukkan kepada Anda gambaran umum atas semua sumber daya (CPU, memori / swap, jaringan dan disk I / O) atau Anda dapat menelusuri ke satu sumber daya tunggal dan mengurutkan proses berdasarkan jumlah yang mereka konsumsi.

Aaron Digulla
sumber
5

Mengapa tidak mencoba nmon . Itu disk dan jaringan dengan proses. Awalnya untuk AIX tetapi telah porting ke Linux selama beberapa tahun sekarang.

Steve Rowe
sumber
1

Hal terbaik untuk dilakukan jika Anda ingin melihat kinerja dalam jangka waktu lama adalah dengan menggunakan Centreon yang merupakan alat canggih yang dibangun di atas nagios . Centreon membuat Anda dapat memantau dengan menggambar grafik kinerja sumber daya dan banyak hal lainnya.

omar
sumber
Hal apa lagi Ada tangkapan layar? Harap perluas jawaban Anda.
Konrad Gajewski