如何在 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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告