要快速掌握磁盘实时读写速度、IOPS和负载饱和度,必须用iostat -dxm 1 5命令:-d屏蔽CPU行,-x启用扩展字段(含%util),-m以MB/s显示吞吐量,重点关注rMB/s、wMB/s和%util三列。

要快速掌握当前磁盘的实时读写速度(MB/s)、每秒I/O次数(IOPS)和负载饱和度(%util),必须用iostat命令配合关键参数组合,否则默认输出既不显示速率单位也不反映瞬时压力。
确认并安装iostat工具
执行 iostat -V 检查是否已安装;若提示 command not found,则需先安装 sysstat 包。
Ubuntu/Debian 系统运行:sudo apt-get install sysstat;CentOS/RHEL 系统运行:sudo yum install sysstat 或 sudo dnf install sysstat。
【安装后需重启系统或手动启动服务才能采集历史数据,但实时监控无需等待】
查看磁盘实时读写速度与负载(推荐组合)
直接运行以下命令,每秒刷新一次,持续输出 5 次:
iostat -dxm 1 5
其中 -d 屏蔽 CPU 行,-x 启用扩展字段(含 await、svctm、%util),-m 以 MB/s 单位显示读写吞吐量,比默认 KB/s 更直观。输出中重点关注 Device 下方的 rMB/s(读速)、wMB/s(写速)、%util(利用率)三列。
若只关心某一块盘(如 nvme0n1),可限定为:iostat -dxm 1 5 /dev/nvme0n1;注意设备名必须完整且存在,输错会静默返回空结果。
快速识别高负载磁盘(两步筛查法)
第一步:执行 iostat -dx 1,观察 %util 列 —— 若某设备持续 ≥85%,立即进入第二步;
第二步:在同一终端按 Ctrl+C 中断后,立刻执行 iostat -dx 1 1 | grep -A 1 "Device",提取最后一次采样中 r_await 和 w_await 值;【await 超过 20ms 且 %util >90% 时,基本可判定该磁盘是性能瓶颈】
这一步跳过中间冗余行,直取关键指标,避免在滚动日志里手动翻找。
排查低速但高负载的假象(方法一:看 svctm 与 await 差值)
运行 iostat -dx 2 2,对比两次输出中的 svctm(服务时间)和 await(平均等待时间)。
若 await 远大于 svctm(例如 await=45ms,svctm=0.8ms),说明请求大量堆积在队列中,不是磁盘本身慢,而是上层并发太高或调度延迟大。
此时应配合 iotop -oPa 查具体进程,而不是盲目升级硬盘。
导出人眼友好格式(方法二:自动过滤+单位优化)
执行:iostat -dh 1 3,-h 参数让数值自动缩放为 KB/s、MB/s、GB/s,并对齐列宽,适合截图发给同事快速判断。
注意:-h 不能与 -x 同时使用,所以它不显示 await、svctm 等深度指标,仅作初筛用。











