iostat -xdm 1 是监控磁盘io性能的核心命令,需先安装sysstat包;它每秒输出扩展指标(await、avgqu-sz、%util等),重点关注await与avgqu-sz配合吞吐量判断瓶颈,而非孤立看待%util。

直接用 iostat -xdm 1 就能实时看磁盘块设备的 IO 性能,关键不是看单个数字,而是盯住几个指标之间的关系。
先装好再运行
它属于 sysstat 包,没装就先装:
- CentOS/RHEL:
yum install -y sysstat - Debian/Ubuntu:
apt install -y sysstat
装完就能用,不需要额外启动服务(新版默认启用数据收集)。
最实用的命令组合
iostat -xdm 1 是日常排查的主力命令:
-
-x:打开扩展模式,显示await、avgqu-sz、%util等关键字段 -
-d:只显示磁盘设备,不混 CPU 行,更干净 -
-m:单位是 MB/s,比 KB/s 更直观 -
1:每秒刷新一次,方便观察趋势
如果只想看某块盘,比如 sdb,加设备名:iostat -xdm 1 /dev/sdb。
重点看哪几列
输出里真正要关注的是这三组值的配合:
- await(平均响应时间):读写请求从发出到完成的毫秒数。机械盘持续 >15ms、SSD >5ms 就该留意;超过 30ms 且稳定,基本说明有排队或响应变慢
- avgqu-sz(平均队列长度):正在等待处理的请求数。HDD 长期 >2、SSD >1、NVMe >4 就提示上层下发过快,设备或调度器跟不上
-
rkB/s + wkB/s(实际吞吐):和设备理论带宽对比。比如 SATA SSD 理论约 500MB/s,如果吞吐才 50MB/s,但
await和avgqu-sz却很高,问题大概率不在磁盘本身,而在文件系统、应用逻辑或挂载选项
避开常见误判
%util 容易误导人,尤其对 NVMe 或多队列设备:
- 它只是“设备忙的时间占比”,不是“使用率”。现代 SSD 能并发处理大量请求,
%util到 90%+ 可能完全正常 - 真正要看的是
await和avgqu-sz是否异常,再结合吞吐判断——高%util+ 低await+ 高吞吐,其实是高效工作状态 - 如果
await高但%util很低(比如 20%),说明请求卡在内核层,比如 ext4 日志锁、频繁小文件 write、或块设备队列调度问题











