你知道在 Linux 中咱們使用什麼工具檢修和監控實時的磁盤活動嗎?若是 Linux 系統性能變慢,咱們會用 top 命令 來查看系統性能。它被用來檢查是什麼進程在服務器上佔有如此高的使用率,對於大多數 Linux 系統管理員來講很常見,現實世界中被 Linux 系統管理員普遍採用。linux
若是在進程輸出中你沒有看到很大的不一樣,你仍然有選擇查看其餘東西。我會建議你在 top
輸出中檢查 wa
狀態,由於大多數時間裏服務器性能因爲在硬盤上的高 I/O 讀和寫下降了性能。若是它很高或者波動,極可能就是它形成的。所以,咱們須要檢查硬盤上的 I/O 活動。ios
咱們能夠在 Linux 中使用 iotop
和 iostat
命令監控全部的磁盤和文件系統的磁盤 I/O 統計。git
iotop
是一個相似 top
的工具,用來顯示實時的磁盤活動。github
iotop
監控 Linux 內核輸出的 I/O 使用信息,而且顯示一個系統中進程或線程的當前 I/O 使用狀況。ubuntu
它顯示每一個進程/線程讀寫 I/O 帶寬。它一樣顯示當等待換入和等待 I/O 的線程/進程花費的時間的百分比。centos
Total DISK READ
和 Total DISK WRITE
的值一方面表示了進程和內核線程之間的總的讀寫帶寬,另外一方面也表示內核塊設備子系統的。bash
Actual DISK READ
和 Actual DISK WRITE
的值表示在內核塊設備子系統和下面硬件(HDD、SSD 等等)對應的實際磁盤 I/O 帶寬。服務器
咱們能夠輕鬆在包管理器的幫助下安裝,由於該軟件包在全部的 Linux 發行版倉庫中均可以得到。工具
對於 Fedora 系統,使用 DNF 命令 來安裝 iotop
。oop
$ sudo dnf install iotop
複製代碼
對於 Debian/Ubuntu 系統,使用 API-GET 命令 或者 APT 命令 來安裝 iotop
。
$ sudo apt install iotop
複製代碼
對於基於 Arch Linux 的系統,使用 Pacman Command 來安裝 iotop
。
$ sudo pacman -S iotop
複製代碼
對於 RHEL/CentOS 的系統,使用 YUM Command 來安裝 iotop
。
$ sudo yum install iotop
複製代碼
對於使用 openSUSE Leap 的系統,使用 Zypper Command 來安裝 iotop
。
$ sudo zypper install iotop
複製代碼
iotop
命令有不少參數來檢查關於磁盤 I/O 的變化:
# iotop
複製代碼
若是你想檢查那個進程實際在作 I/O,那麼運行 iotop
命令加上 -o
或者 --only
參數。
# iotop --only
複製代碼
細節:
IO
:它顯示每一個進程的 I/O 利用率,包含磁盤和交換。SWAPIN
: 它只顯示每一個進程的交換使用率。iostat
被用來報告中央處理單元(CPU)的統計和設備與分區的輸出/輸出的統計。
iostat
命令經過觀察與它們平均傳輸率相關的設備活躍時間來監控系統輸入/輸出設備負載。
iostat
命令生成的報告能夠被用來改變系統配置來更好的平衡物理磁盤之間的輸入/輸出負載。
全部的統計都在 iostat
命令每次運行時被報告。該報告包含一個 CPU 頭部,後面是一行 CPU 統計。
在多處理器系統中,CPU 統計被計算爲系統層面的全部處理器的平均值。設備頭行後緊跟顯示每一個配置的設備一行的統計。
iostat
命令生成兩種類型的報告,CPU 利用率報告和設備利用率報告。
iostat
工具是 sysstat
包的一部分,因此咱們能夠輕鬆地在包管理器地幫助下安裝,由於在全部的 Linux 發行版的倉庫都是能夠得到的。
對於 Fedora 系統,使用 DNF Command 來安裝 sysstat
。
$ sudo dnf install sysstat
複製代碼
對於 Debian/Ubuntu 系統,使用 APT-GET Command 或者 APT Command 來安裝 sysstat
。
$ sudo apt install sysstat
複製代碼
對於基於 Arch Linux 的系統,使用 Pacman Command 來安裝 sysstat
。
$ sudo pacman -S sysstat
複製代碼
對於 RHEL/CentOS 系統,使用 YUM Command 來安裝 sysstat
。
$ sudo yum install sysstat
複製代碼
對於 openSUSE Leap 系統,使用 Zypper Command 來安裝 sysstat
。
$ sudo zypper install sysstat
複製代碼
在 iostat
命令中有不少參數來檢查關於 I/O 和 CPU 的變化統計信息。
不加參數運行 iostat
命令會看到完整的系通通計。
# iostat
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.45 0.02 16.47 0.12 0.00 53.94
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 6.68 126.95 124.97 0.00 58420014 57507206 0
sda 0.18 6.77 80.24 0.00 3115036 36924764 0
loop0 0.00 0.00 0.00 0.00 2160 0 0
loop1 0.00 0.00 0.00 0.00 1093 0 0
loop2 0.00 0.00 0.00 0.00 1077 0 0
複製代碼
運行 iostat
命令加上 -d
參數查看全部設備的 I/O 統計。
# iostat -d
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 6.68 126.95 124.97 0.00 58420030 57509090 0
sda 0.18 6.77 80.24 0.00 3115292 36924764 0
loop0 0.00 0.00 0.00 0.00 2160 0 0
loop1 0.00 0.00 0.00 0.00 1093 0 0
loop2 0.00 0.00 0.00 0.00 1077 0 0
複製代碼
運行 iostat
命令加上 -p
參數查看全部的設備和分區的 I/O 統計。
# iostat -p
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.42 0.02 16.45 0.12 0.00 53.99
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 6.68 126.94 124.96 0.00 58420062 57512278 0
nvme0n1p1 6.40 124.46 118.36 0.00 57279753 54474898 0
nvme0n1p2 0.27 2.47 6.60 0.00 1138069 3037380 0
sda 0.18 6.77 80.23 0.00 3116060 36924764 0
sda1 0.00 0.01 0.00 0.00 3224 0 0
sda2 0.18 6.76 80.23 0.00 3111508 36924764 0
loop0 0.00 0.00 0.00 0.00 2160 0 0
loop1 0.00 0.00 0.00 0.00 1093 0 0
loop2 0.00 0.00 0.00 0.00 1077 0 0
複製代碼
運行 iostat
命令加上 -x
參數顯示全部設備的詳細的 I/O 統計信息。
# iostat -x
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.41 0.02 16.45 0.12 0.00 54.00
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
nvme0n1 2.45 126.93 0.60 19.74 0.40 51.74 4.23 124.96 5.12 54.76 3.16 29.54 0.00 0.00 0.00 0.00 0.00 0.00 0.31 30.28
sda 0.06 6.77 0.00 0.00 8.34 119.20 0.12 80.23 19.94 99.40 31.84 670.73 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.13
loop0 0.00 0.00 0.00 0.00 0.08 19.64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
loop1 0.00 0.00 0.00 0.00 0.40 12.86 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
loop2 0.00 0.00 0.00 0.00 0.38 19.58 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
複製代碼
運行 iostat
命令加上 -d [設備名]
參數查看具體設備和它的分區的 I/O 統計信息。
# iostat -p [Device_Name]
# iostat -p sda
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.38 0.02 16.43 0.12 0.00 54.05
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 0.18 6.77 80.21 0.00 3117468 36924764 0
sda2 0.18 6.76 80.21 0.00 3112916 36924764 0
sda1 0.00 0.01 0.00 0.00 3224 0 0
複製代碼
運行 iostat
命令加上 -m
參數以 MB 爲單位而不是 KB 查看全部設備的統計。默認以 KB 顯示輸出。
# iostat -m
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.36 0.02 16.41 0.12 0.00 54.09
Device tps MB_read/s MB_wrtn/s MB_dscd/s MB_read MB_wrtn MB_dscd
nvme0n1 6.68 0.12 0.12 0.00 57050 56176 0
sda 0.18 0.01 0.08 0.00 3045 36059 0
loop0 0.00 0.00 0.00 0.00 2 0 0
loop1 0.00 0.00 0.00 0.00 1 0 0
loop2 0.00 0.00 0.00 0.00 1 0 0
複製代碼
運行 iostat
命令使用特定的間隔使用以下的格式。在這個例子中,咱們打算以 5 秒捕獲的間隔捕獲兩個報告。
# iostat [Interval] [Number Of Reports]
# iostat 5 2
Linux 4.19.32-1-MANJARO (daygeek-Y700) Thursday 18 April 2019 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
29.35 0.02 16.41 0.12 0.00 54.10
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 6.68 126.89 124.95 0.00 58420116 57525344 0
sda 0.18 6.77 80.20 0.00 3118492 36924764 0
loop0 0.00 0.00 0.00 0.00 2160 0 0
loop1 0.00 0.00 0.00 0.00 1093 0 0
loop2 0.00 0.00 0.00 0.00 1077 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3.71 0.00 2.51 0.05 0.00 93.73
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
nvme0n1 19.00 0.20 311.40 0.00 1 1557 0
sda 0.20 25.60 0.00 0.00 128 0 0
loop0 0.00 0.00 0.00 0.00 0 0 0
loop1 0.00 0.00 0.00 0.00 0 0 0
loop2 0.00 0.00 0.00 0.00 0 0 0
複製代碼
運行 iostat
命令與 -N
參數來查看 LVM 磁盤 I/O 統計報告。
# iostat -N
Linux 4.15.0-47-generic (Ubuntu18.2daygeek.com) Thursday 18 April 2019 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.38 0.07 0.18 0.26 0.00 99.12
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 3.60 57.07 69.06 968729 1172340
sdb 0.02 0.33 0.00 5680 0
sdc 0.01 0.12 0.00 2108 0
2g-2gvol1 0.00 0.07 0.00 1204 0
複製代碼
運行 nfsiostat
命令來查看 Network File System(NFS)的 I/O 統計。
# nfsiostat
複製代碼
via: www.2daygeek.com/check-monit…
做者:Magesh Maruthamuthu 選題:lujun9972 譯者:warmfrog 校對:wxy