Linux中國

在 Linux 中如何使用 iotop 和 iostat 監控磁碟 I/O 活動?

你知道在 Linux 中我們使用什麼工具檢修和監控實時的磁碟活動嗎?如果 Linux 系統性能變慢,我們會用 top 命令 來查看系統性能。它被用來檢查是什麼進程在伺服器上佔有如此高的使用率,對於大多數 Linux 系統管理員來說很常見,現實世界中被 Linux 系統管理員廣泛採用。

如果在進程輸出中你沒有看到很大的不同,你仍然有選擇查看其他東西。我會建議你在 top 輸出中檢查 wa 狀態,因為大多數時間裡伺服器性能由於在硬碟上的高 I/O 讀和寫降低了性能。如果它很高或者波動,很可能就是它造成的。因此,我們需要檢查硬碟上的 I/O 活動。

我們可以在 Linux 中使用 iotopiostat 命令監控所有的磁碟和文件系統的磁碟 I/O 統計。

什麼是 iotop

iotop 是一個類似 top 的工具,用來顯示實時的磁碟活動。

iotop 監控 Linux 內核輸出的 I/O 使用信息,並且顯示一個系統中進程或線程的當前 I/O 使用情況。

它顯示每個進程/線程讀寫 I/O 帶寬。它同樣顯示當等待換入和等待 I/O 的線程/進程花費的時間的百分比。

Total DISK READTotal DISK WRITE 的值一方面表示了進程和內核線程之間的總的讀寫帶寬,另一方面也表示內核塊設備子系統的。

Actual DISK READActual 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

10

如果你想檢查那個進程實際在做 I/O,那麼運行 iotop 命令加上 -o 或者 --only 參數。

# iotop --only

11

細節:

  • 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...