iostat命令详解
iostat(Input/Output Statistics)是 Linux 系统中用于监控系统磁盘和 CPU 使用情况的工具。它可以报告设备的 I/O 负载和 CPU 使用率,主要用于分析系统性能瓶颈,尤其是磁盘 I/O 相关的性能问题。
1. 基本语法
iostat [选项] [时间间隔] [报告次数]
2. 常用选项
-c: 仅显示 CPU 使用率。-d: 仅显示磁盘 I/O 统计(默认显示 CPU 和磁盘)。-x: 显示扩展统计信息(更详细的 I/O 指标)。-m: 以 MB/s 为单位显示读写速度(默认单位为 KB/s)。-p[设备名]: 显示指定磁盘的详细信息。-t: 显示时间戳(便于记录监控数据的时间点)。-N: 显示 LVM 逻辑卷名称而非设备名。-h: 友好格式输出(例如,自动转换单位)。
3. 输出字段详解
启用 iostat -x 的扩展输出时会显示以下关键指标:
CPU 统计(默认显示)
%user: 用户态程序占用 CPU 比例。%nice: 高优先级(nice调整过)的用户进程占用的 CPU 比例。%system: 内核态程序占用 CPU 比例。%iowait: CPU 等待 I/O 操作完成的时间比例(高可能表示 I/O 瓶颈)。%steal: 在虚拟化环境中,被其他虚拟机占用的 CPU 时间。%idle: CPU 空闲时间比例。
磁盘 I/O 统计
Device: 磁盘名称(如sda、nvme0n1)。rrqm/s: 每秒合并的读取请求数量(合并 I/O 请求优化性能)。wrqm/s: 每秒合并的写入请求数量。r/s和w/s: 每秒实际完成的读/写请求次数。rkB/s和wkB/s: 每秒读/写的数据量(单位 KB,使用-m后为 MB)。avgrq-sz: 平均每个请求的数据大小(单位为扇区,1 扇区 = 512B)。avgqu-sz: 平均等待队列长度(队列越长,I/O 越繁忙)。await: 平均每个 I/O 请求的等待时间(包括排队和服务时间,单位毫秒)。r_await和w_await: 读取和写入的单独等待时间。svctm: 磁盘处理 I/O 请求的平均服务时间(单位毫秒,实际可能有误差)。%util: 磁盘 I/O 使用率(接近 100% 表示磁盘满负荷,可能存在瓶颈)。
4. 实际应用示例
例 1:实时监控所有磁盘的 I/O
iostat -dx 2 5
- 每隔 2 秒输出一次扩展 I/O 统计,共输出 5 次。

例 2:查看指定磁盘的详细信息
iostat -x -p sda 1
- 监控磁盘
sda的扩展统计,每秒刷新一次。

例 3:以 MB 为单位显示磁盘吞吐量
iostat -d -m 1
- 仅显示磁盘统计,数据单位为 MB/s。

例 4:组合查看 CPU 和磁盘
iostat -c -d -x -t 2
- 显示 CPU、磁盘的扩展信息,并带时间戳,每隔 2 秒输出一次。

5. 关键指标分析
%iowait高:CPU 在等待 I/O 操作,可能是磁盘速度不足或 I/O 请求过多。avgqu-sz> 0:表明 I/O 队列中有堆积的请求。await远高于svctm:表示请求在队列中等待时间较长,可能是磁盘忙碌或负载不均。%util持续接近 100%:磁盘已达到性能极限,需优化或升级硬件(如更换 SSD)。
6. 注意事项
- 需要
root或sudo权限才能获取完整的设备信息。 iostat的统计值是基于时间间隔的均值,建议结合具体场景分析。- 不同 Linux 发行版的
iostat输出可能略有差异。 - 对于更复杂的分析,可结合
vmstat、iotop、sar等工具。
如果需要进一步分析磁盘性能,可以查看磁盘的 fstab 挂载参数、文件系统类型(如 ext4/XFS)以及 RAID/SSD 配置。
浙公网安备 33010602011771号