Linux查看磁盘IO负载iostat命令使用教程
时间:2026-11-14 07:09 作者:emer 分类: Linux
前言
服务器 CPU、内存都正常,但业务响应慢、数据库卡顿,很多时候瓶颈在磁盘 IO。top 只能看整体负载,无法区分是 CPU 还是磁盘排队。iostat 属于 sysstat 工具集,可以按设备显示磁盘读写速率、IO 等待时间和繁忙百分比,是定位磁盘瓶颈的首选命令。本文讲解 iostat 安装、常用参数、重点指标含义,以及如何判断磁盘是否打满,适配 CentOS、Ubuntu、Debian。
操作步骤
1. 安装 sysstat
# CentOS/Rocky
sudo dnf install -y sysstat
# Ubuntu/Debian
sudo apt install -y sysstat
2. 基本查看,显示 CPU 和磁盘统计
iostat
第一行是系统自启动以来的平均值,要看实时情况需加间隔参数。
3. 每隔 2 秒刷新一次,共 5 次
iostat -x 2 5
-x 显示扩展统计,最关键的列就在这里。
4. 只看某块磁盘,并显示 MB 单位
iostat -x -m 2 5
-m 把 kB 换算成 MB,更直观;也可指定设备:
iostat -x -m /dev/sda 2 5
5. 重点关注的指标
%util:磁盘繁忙百分比,接近 100% 说明磁盘几乎被占满。await:每次 IO 的平均等待时间(毫秒),越高越慢。svctm:服务时间,新版已废弃参考。rMB/s、wMB/s:每秒读写流量。rrqm/s、wrqm/s:合并读写请求数量。
6. 结合进程定位是谁在写盘
iotop
没有 iotop 可安装:
sudo dnf install -y iotop
sudo iotop -o
-o 只显示正在产生 IO 的进程。
常见坑
- 只看 iostat 第一行平均值,它是开机以来累计值,不代表当前负载,必须用间隔采样。
- 机械磁盘 %util 高是正常瓶颈,SSD 才看 await 飙升。
- 云盘(云硬盘)受网络后端影响,本地 iostat 正常但远端仍慢。
- 没装 sysstat,直接敲 iostat 报 command not found。
- 把 r/s、w/s 请求数当流量看,单位是次不是字节,需配合 -m。
- 数据库场景磁盘瓶颈常表现为 await 高,应优先检查慢查询和日志刷盘,而不是先换盘。
总结
iostat -x 间隔 次数 是定位磁盘瓶颈的标准用法,重点看 %util 是否接近满、await 是否异常升高。发现 IO 瓶颈后再用 iotop 找到对应进程,区分是大文件写入、日志堆积还是数据库刷盘导致。平时把 iostat 加入巡检脚本,可在故障前发现磁盘趋势。
遇到问题加QQ23979811 协助处理