在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?
你知道在 Linux 中我們使用什麼工具檢修和監控實時的磁碟活動嗎?如果 Linux 系統效能變慢,我們會用 top 命令 來檢視系統效能。它被用來檢查是什麼程序在伺服器上佔有如此高的使用率,對於大多數 Linux 系統管理員來說很常見,現實世界中被 Linux 系統管理員廣泛採用。
如果在程序輸出中你沒有看到很大的不同,你仍然有選擇檢視其他東西。我會建議你在 top
輸出中檢查 wa
狀態,因為大多數時間裡伺服器效能由於在硬碟上的高 I/O 讀和寫降低了效能。如果它很高或者波動,很可能就是它造成的。因此,我們需要檢查硬碟上的 I/O 活動。
我們可以在 Linux 中使用 iotop
和 iostat
命令監控所有的磁碟和檔案系統的磁碟 I/O 統計。
什麼是 iotop?
iotop
是一個類似 top
的工具,用來顯示實時的磁碟活動。
iotop
監控 Linux 核心輸出的 I/O 使用資訊,並且顯示一個系統中程序或執行緒的當前 I/O 使用情況。
它顯示每個程序/執行緒讀寫 I/O 頻寬。它同樣顯示當等待換入和等待 I/O 的執行緒/程序花費的時間的百分比。
Total DISK READ
和 Total DISK WRITE
的值一方面表示了程序和核心執行緒之間的總的讀寫頻寬,另一方面也表示核心塊裝置子系統的。
Actual DISK READ
和 Actual DISK WRITE
的值表示在核心塊裝置子系統和下面硬體(HDD、SSD 等等)對應的實際磁碟 I/O 頻寬。
如何在 Linux 中安裝 iotop ?
我們可以輕鬆在包管理器的幫助下安裝,因為該軟體包在所有的 Linux 發行版倉庫中都可以獲得。
對於 Fedora 系統,使用 DNF 命令 來安裝 iotop
。
$ 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
在 Linux 中如何使用 iotop 命令來監控磁碟 I/O 活動/統計?
iotop
命令有很多引數來檢查關於磁碟 I/O 的變化:
# iotop
如果你想檢查那個程序實際在做 I/O,那麼執行 iotop
命令加上 -o
或者 --only
引數。
# iotop --only
細節:
IO
:它顯示每個程序的 I/O 利用率,包含磁碟和交換。SWAPIN
: 它只顯示每個程序的交換使用率。
什麼是 iostat?
iostat
被用來報告中央處理單元(CPU)的統計和裝置與分割槽的輸出/輸出的統計。
iostat
命令透過觀察與它們平均傳輸率相關的裝置活躍時間來監控系統輸入/輸出裝置負載。
iostat
命令生成的報告可以被用來改變系統配置來更好的平衡物理磁碟之間的輸入/輸出負載。
所有的統計都在 iostat
命令每次執行時被報告。該報告包含一個 CPU 頭部,後面是一行 CPU 統計。
在多處理器系統中,CPU 統計被計算為系統層面的所有處理器的平均值。裝置頭行後緊跟顯示每個配置的裝置一行的統計。
iostat
命令生成兩種型別的報告,CPU 利用率報告和裝置利用率報告。
在 Linux 中怎樣安裝 iostat?
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
在 Linux 中如何使用 sysstat 命令監控磁碟 I/O 活動/統計?
在 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: https://www.2daygeek.com/check-monitor-disk-io-in-linux-using-iotop-iostat-command/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:warmfrog 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- 使用 iotop 監控哪些程式在進行I/O操作
- 如何監測 Linux 的磁碟 I/O 效能Linux
- 在Linux中,如何進行磁碟效能監控?Linux
- Linux下磁碟I/O測試Linux
- 如何進行I/O評估、監控、定位和最佳化?
- Linux中監控磁碟分割槽和使用情況的幾個工具Linux
- 在Linux中,如何監控系統資源使用情況?Linux
- 在Linux中,如何進行使用者行為監控?Linux
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器
- 在Linux中,如何監控系統的效能?Linux
- 使用iostat檢視磁碟IOiOS
- 監控報I/O問題,怎麼辦?
- 在Linux中,如何實時監控網路流量?Linux
- 在Linux中,如何進行硬體效能監控?Linux
- 在Linux中,如何進行系統效能監控?Linux
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- Linux中監控磁碟分割槽及使用情況的命令有哪些?Linux
- 系統服務監控指標--load、CPU利用率、磁碟剩餘空間、磁碟I/O、記憶體使用情況等指標記憶體
- 如何通過Linux 命令測量磁碟活動Linux
- Linux 中如何使用 Htop 監控工具?【網路安全】Linux
- iostat終於讓我知道分割槽的I/O流量了iOS
- IO實時監控命令iostat詳解iOS
- 監控 Linux 伺服器活動的幾個命令Linux伺服器
- 在Linux中,如何檢視磁碟詳細使用情況?Linux
- 在Linux中,如何進行系統資源的監控?Linux
- 在Linux中,如何進行網路服務的監控?Linux
- 在Linux中,如何管理磁碟配額?Linux
- Zabbix 5.0:磁碟自動發現和讀寫監控
- Linux iostat命令基本使用LinuxiOS
- 監控資料庫活動資料庫
- 5. 監控磁碟使用率
- MySQL之磁碟I/O過高排查MySql
- 用bonnie++測試磁碟I/O
- 在 Linux 上監控 CPU 和 GPU 溫度LinuxGPU
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- 在Linux中,如何進行系統效能的持續監控?Linux
- 如何更改Linux的I/O排程器Linux
- 在Linux中,如何配置和使用Xen?Linux