如何在 Linux 系統中監控磁碟 I/O


摘要

磁碟監控是在維護 Linux 系統時需要執行的一項重要任務。從根本上說,從磁盤獲取資料需要時間。因此,磁碟 I/O 子系統被認為是最慢的部分,並且會減慢整個系統的速度。

因此,檢查磁碟效能至關重要。我們必須確定哪個程序正在等待 I/O 請求完成,並確定是否存在瓶頸以及是什麼導致了瓶頸。為了檢查 Linux 系統中的磁碟 I/O 效能,我們將學習如何使用 iostat、iotop 等工具。

Linux 中 iotop 的安裝

由於該軟體包存在於所有 Linux 發行版的儲存庫中,因此使用軟體包管理器安裝起來非常簡單。

可以在 Fedora 和 RHEL/CentOS 8 系統上使用 DNF 命令安裝 Iotop。

$ sudo dnf install iotop

可以使用 APT-GET 命令或 APT 命令在 Debian/Ubuntu 系統上安裝 Iotop。

$ sudo apt install iotop

可以在 RHEL/CentOS 6/7 系統上使用 YUM 命令安裝 Iotop

$ sudo yum  install iotop

使用 iotop 命令監控磁碟 I/O

iotop 命令提供了廣泛的選項來檢查各種磁碟 I/O 統計資訊。

要檢視每個程序或執行緒的當前 I/O 利用率,請在不帶任何引數的情況下執行 iotop 命令。

$ sudo iotop

輸出

 Total DISK READ :      18.27 K/s   |  Total DISK WRITE :       0.00 B/s
 0.00 B DISK READ:      18.27 K/s  |  Actual DISK WRITE:      14.61 K/s
     TID  PRIO  USER    DISK READ   DISK WRITE   SWAPIN     IO>        COMMAND                                                                                                
      509 be/3 root         0.00 B/s    0.00 B/s           0.00 %     3.91 %    [jbd2/dm-0-8]
      247269 be/4           0.00 B/s    0.00 B/s           0.00 %     0.21 %    kworker/0:2]
      2507 be/4 nwd         18.2 B/s    0.00 B/s           3.57 %     0.00 %    gnome-terminal
      1 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    systemd --switch
      2 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [kthreadd]
      3 be/0 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_gp]
      4 be/0 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_par_gp]
      6 be/0 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [kworker/0]
      9 be/0 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [mm_percpu_wq]
     10 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_tasks_kthre]
     11 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_tasks_rude_]
     12 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_tasks_trace]
     13 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [ksoftirqd/0]
     14 be/4 root           0.00 B/s    0.00 B/s           0.00 %     0.00 %    [rcu_sched]

Linux 中 iostat 的安裝

可以在 Fedora 和 RHEL/CentOS 8 系統上使用 DNF 命令安裝 Iostat。

$ sudo dnf install sysstat

可以使用 APT-GET 命令或 APT 命令在 Debian/Ubuntu 系統上安裝 Iostat。

$ sudo apt install sysstat

可以在 RHEL/CentOS 6/7 系統上使用 YUM 命令安裝 Iostat

$ sudo yum  install sysstat

使用 iostat 命令監控磁碟 I/O

iostat 命令提供了廣泛的選項來檢查各種 CPU 和磁碟 I/O 統計資訊。

要檢視整個系統統計資訊,請在不帶任何引數的情況下執行 iostat 命令。

$ iostat

輸出

Linux 4.19.32-1-MANJARO  	Thursday 18 April 2022 	_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
sda               3.14        63.31         38.14       0.00      19772796    11911070         0
scd0              0.00         0.00         0.00        0.00      1                 0          0
zram0             7.74         9.36         21.58       0.00      2924188     6738944          0

結論

在本文中,我們學習瞭如何使用 iostat 和 iotop 檢查磁碟 I/O 效能。我們還討論瞭如何使用 iotop 命令檢視按程序細分的磁碟讀寫活動。

還有其他幾個命令,例如 vmstat 和 sar 命令,可用於在 Linux 系統中監控磁碟 I/O。我希望您發現這些命令示例有用,並且學習和使用 Linux 很容易。

更新於: 2023 年 8 月 1 日

452 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告