安装与基础命令
-
安装(默认未安装时)
- Ubuntu/Debian:
sudo apt-get install sysstat
- CentOS/RHEL:
sudo yum install sysstat
- 验证安装:
iostat -V
- Ubuntu/Debian:
-
基础语法
iostat [选项] [间隔时间] [执行次数]
- 示例:
iostat 2 5
→ 每 2 秒输出 1 次,共 5 次
- 示例:
核心选项解析
选项 | 作用 | 示例命令 |
---|---|---|
-c |
仅显示 CPU 使用率 | iostat -c 1 |
-d |
仅显示磁盘 I/O 统计 | iostat -d 2 |
-x |
显示扩展磁盘统计(关键指标) | iostat -x 1 |
-m |
以 MB/s 代替 KB/s 显示吞吐量 | iostat -d -m |
-p |
指定单个设备(如 sda) | iostat -p sda |
-t |
输出时包含时间戳 | iostat -t 1 |
-h |
人类可读格式(与 -m 配合) | iostat -d -m -h |
输出结果解读(重点)
执行 iostat -x 1
后的关键列:
-
磁盘标识
Device
: 磁盘名称(如 sda、nvme0n1)
-
I/O 性能指标
r/s
:每秒读请求次数w/s
:每秒写请求次数rkB/s
:每秒读取数据量(KB)wkB/s
:每秒写入数据量(KB)
-
队列与延迟(瓶颈判断核心)
%util
:磁盘繁忙百分比(>80% 表示可能过载)await
:I/O 平均等待时间(ms)(>10ms 需警惕)svctm
:磁盘处理 I/O 所需时间(ms)aqu-sz
:平均请求队列长度(>1 表示排队)
实战场景示例
-
诊断磁盘瓶颈
iostat -x 1 3 # 每1秒刷新,共3次,观察 %util 和 await
- 若
%util
持续 >90% 且await
飙升 → 磁盘过载
- 若
-
对比读写吞吐量
iostat -d -m 2 # 每2秒显示磁盘读写(MB/s)
- 输出示例:
Device rMB/s wMB/s sda 45.2 12.8
- 输出示例:
-
监控特定分区
iostat -p sdb1 -h 1 # 监控 /dev/sdb1 分区
高级技巧
-
结合 CPU 分析
iostat -c -d -x 1 # 同时监控 CPU 和磁盘
- 若
%iowait
(CPU 等待 I/O 时间)高 → 磁盘成为瓶颈
- 若
-
生成 CSV 日志
iostat -o JSON -d -x 1 10 > iostat.log # 保存为 JSON 格式
-
对比 SSD 与 HDD 性能
iostat -x -p nvme0n1,sda 1 # 同时监控 SSD 和机械硬盘
注意事项
- 数据来源:统计基于
/proc/diskstats
,非实时硬件监控。 - 首次输出:无间隔时间的命令(如
iostat
)显示系统启动至今的平均值。 - %util 误区:RAID 或 SSD 可能 >100%,因并行处理(需结合
await
判断)。 - 性能基线:长期运行
iostat -x 60 > log.txt
建立基准数据。
iostat 是诊断磁盘 I/O 性能的首选工具:
- 快速定位瓶颈:关注
%util
、await
、aqu-sz
- 关键命令组合:
iostat -x 1
(扩展统计) +iostat -d -m
(吞吐量) - 结合场景分析:高
%iowait
需联动磁盘指标排查
引用说明参考 Linux 手册页(
man iostat
)、IBM 性能分析文档及 Red Hat 系统监控指南,数据指标定义遵循 Sysstat 工具集官方标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6717.html