iostat
和 iotop
是 Linux 系统中用于监控磁盘 I/O 活动的两个非常有用的工具。下面分别介绍它们的使用方法和一些运维场景案例。
iostat
iostat
是一个系统监控工具,主要用于监控 CPU 使用率和磁盘 I/O 活动。它是 sysstat
包的一部分,因此在某些发行版中可能需要先安装 sysstat
。
基本语法
iostat [options] [delay [count]]
参数
-
options
:可选参数,用于指定要显示的信息。 -
delay
:采样间隔(以秒为单位)。 -
count
:采样次数。
常用选项
-
-c
:显示 CPU 使用情况。 -
-d
:显示磁盘设备的统计信息。 -
-k
:以 KB/s 显示 I/O 速率。 -
-m
:以 MB/s 显示 I/O 速率。 -
-x
:显示额外的磁盘统计信息,如 %util(设备利用率)和 await(平均等待时间)。 -
-t
:显示时间戳。 -
-N
:显示设备名称。
示例
显示磁盘设备的统计信息,每 5 秒刷新一次,共显示 10 次:
iostat -d -k 5 10
显示 CPU 和磁盘的统计信息:
iostat -cd
iotop
iotop
类似于 top
命令,但专门用于监控进程级别的磁盘 I/O 活动。它显示了正在使用磁盘 I/O 的进程列表,按 I/O 使用情况排序。
基本语法
iotop [options]
参数
options
:可选参数,用于定制显示信息。
常用选项
-
-b
:以批处理模式运行,适合脚本使用。 -
-d delay
:设置刷新间隔。 -
-q
:安静模式,减少输出。
示例
显示所有进程的 I/O 使用情况,每 2 秒刷新一次:
iotop -d 2
运维案例
使用 iostat 监控磁盘瓶颈
假设你注意到系统响应变慢,可以使用 iostat
来检查是否有磁盘 I/O 瓶颈:
iostat -dxk 1 10
这将显示磁盘设备的详细 I/O 统计信息,包括读写速度和设备利用率。如果 %util
接近 100%,可能表示磁盘 I/O 是瓶颈。
使用 iotop 查找高 I/O 使用率的进程
如果 iostat
显示磁盘 I/O 使用率很高,你可以使用 iotop
来查找消耗 I/O 最多的进程:
iotop
这将显示所有正在使用 I/O 的进程,你可以根据需要终止或调整这些进程的优先级。
小结
iostat
和 iotop
都是强大的工具,可以帮助诊断和解决磁盘 I/O 相关的问题。在日常运维工作中,定期检查这些统计数据可以帮助提前发现潜在的性能瓶颈,从而避免系统故障。