iostat 命令介绍
Linux iostat 命令详解:CPU 和磁盘 I/O 监控
在 Linux 服务器上,性能优化和故障排查是日常运维的重要任务,而 iostat 命令是分析 CPU 负载 和 磁盘 I/O 的利器。
本文将深入解析 iostat 的使用方法,并通过 实例解析 CPU 和磁盘 I/O 指标,帮助大家掌握其应用场景。
1. 什么是 iostat?
iostat(I/O Statistics)用于 监控 CPU 使用率 和 磁盘 I/O 性能,帮助判断:
- CPU 是否因 I/O 过载
- 磁盘是否存在瓶颈
- 系统整体负载情况
iostat 主要包含两部分:
- CPU 负载信息(用户态、系统态、I/O 等待等)
- 磁盘 I/O 负载信息(吞吐量、TPS、读写速率等)
2. iostat 命令安装
如果系统没有安装 iostat,可以通过 sysstat 软件包进行安装:
# CentOS / RHEL
yum install -y sysstat
# Ubuntu / Debian
apt install -y sysstat
3. iostat 命令基本使用
(1) 查看 CPU 和磁盘 I/O 负载
iostat
示例输出:
Linux 2.6.32-696.10.1.el6.x86_64 (devhost32) 03/20/2025 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.15 0.00 0.06 0.04 0.00 99.76
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 2.97 0.53 76.33 8195476 1180424664
sdb 1.56 0.98 45.19 15172746 698917744
📌 分析:
- CPU 部分:
%iowait = 0.04%→ 说明磁盘 I/O 没有严重影响 CPU 性能。%idle = 99.76%→ CPU 资源充足,负载较低。
- 磁盘部分:
sda的Blk_wrtn/s = 76.33→ 磁盘写入压力较大,但 TPS(2.97)不高。
4. 详细参数解析
(1) CPU 负载指标
avg-cpu: %user %nice %system %iowait %steal %idle
| 指标 | 说明 |
|---|---|
| %user | 用户态 CPU 使用率(应用程序占用) |
| %nice | 低优先级任务 CPU 使用率(nice 调度的进程) |
| %system | 内核态 CPU 使用率(驱动程序、系统调用等) |
| %iowait | CPU 等待磁盘 I/O 的时间,高于 10% 可能存在 I/O 瓶颈 |
| %steal | 被虚拟机管理程序(hypervisor)抢占的 CPU 时间,用于虚拟化环境 |
| %idle | CPU 空闲率,越高代表负载越低 |
(2) 磁盘 I/O 指标
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
| 指标 | 说明 |
|---|---|
| Device | 设备名称(如 sda、sdb、dm-* 等) |
| tps | 每秒 I/O 传输数(事务数),代表磁盘 IOPS |
| Blk_read/s | 每秒读取的块数(默认 512B/块) |
| Blk_wrtn/s | 每秒写入的块数 |
| Blk_read | 读取的总块数 |
| Blk_wrtn | 写入的总块数 |
📌 重点关注 tps 和 iowait:
tps高,但iowait低 → 说明磁盘可以承受压力,I/O 性能正常。tps低,但iowait高 → 可能是磁盘 I/O 瓶颈,建议优化存储。
5. iostat 高级用法
(1) 每秒更新一次,连续监控
iostat 1
📌 适用于实时监控系统 I/O 变化趋势。
(2) 只显示磁盘 I/O 统计
iostat -d 2
📌 每 2 秒刷新一次,仅显示磁盘 I/O 信息。
(3) 显示扩展 I/O 信息
iostat -x 1
📌 包含 util 指标,显示磁盘利用率:
Device: rrqm/s wrqm/s r/s w/s svctm %util
sda 0.00 45.33 10.21 78.14 1.32 85.23
| 指标 | 说明 |
|---|---|
| rrqm/s | 每秒合并的读请求数 |
| wrqm/s | 每秒合并的写请求数 |
| r/s | 每秒读取次数 |
| w/s | 每秒写入次数 |
| svctm | 平均 I/O 响应时间(毫秒) |
| %util | 磁盘忙碌率(接近 100% 表示磁盘瓶颈) |
📌 如何判断磁盘瓶颈?
%util > 80%:磁盘负载过高。svctm过大(> 10ms):I/O 响应变慢,可能是磁盘性能问题。
6. 典型故障分析
(1) iowait 过高(磁盘瓶颈)
%user %system %iowait %idle
1.5 1.2 40.3 57.0
📌 解决方案:
- 确认磁盘负载:
iostat -x 1 - 查看 I/O 进程:
iotop - 增加 SSD、优化磁盘 RAID 或 I/O 调度策略
(2) %steal 过高(虚拟化瓶颈)
%user %system %steal %idle
5.0 3.2 45.7 46.1
📌 解决方案:
%steal过高 → 说明 CPU 资源被虚拟化管理器抢占,需要增加物理 CPU 资源。
7. 总结
| 关注点 | 现象 | 可能问题 |
|---|---|---|
%iowait 过高 |
>10% |
磁盘 I/O 瓶颈 |
%util 过高 |
>80% |
磁盘压力大 |
%steal 过高 |
>20% |
虚拟机资源不足 |
✅ iostat 是 分析 CPU 与磁盘 I/O 瓶颈的利器,可以与 iotop、vmstat 等工具结合使用,快速定位系统性能问题。

浙公网安备 33010602011771号