跳到主要内容

iostat命令 监控磁盘 IO 性能与 CPU 使用率

最后更新于:

iostat命令

常用汇总

常用命令:

 1# 运维最常用:实时磁盘I/O详情
 2iostat -y -x -m 1
 3
 4# 只看CPU实时
 5iostat -c 1
 6
 7# 只看磁盘,MB单位,实时
 8iostat -d -m 1
 9
10
11## 效果
12avg-cpu:  %user   %nice %system %iowait  %steal   %idle
13           1.51    0.00    1.26    0.00    0.00   97.24
14
15Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
16vda               0.00    23.00    0.00    6.00     0.00     0.12    40.00     0.00    0.50    0.00    0.50   0.83   0.50
17scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

说明:

-x显示扩展 I/O 详情(关键) -y跳过首次累计值(自开机以来)

字段含义:

  • %iowait:CPU 等待 I/O 完成的时间占比(I/O 瓶颈核心指标)–avg-cpu
  • await:读写平均等待时间(部分版本显示) –硬盘
  • %util设备繁忙时间占比(接近 100% 表示 I/O 饱和)–硬盘

速记:🍊

  1. %iowait > 10%:CPU 频繁等 I/O,存在 I/O 瓶颈(CPU 经常在等磁盘)(I/O 瓶颈核心指标
  2. await 持续偏高:I/O 响应慢,可能是队列长或硬件慢
  3. %util > 80%:磁盘接近饱和(磁盘忙不过来)

1、命令介绍

iostat(Input/Output Statistics)是 Linux 系统中监控磁盘 I/O 性能与 CPU 使用率的核心命令,用于定位存储瓶颈、分析 I/O 负载。

一、安装(如未预装)

iostat 属于 sysstat 工具包,安装命令:

1# Debian/Ubuntu
2sudo apt install sysstat
3
4# RHEL/CentOS/Rocky
5sudo dnf install sysstat

二、基础语法

1iostat [选项] [时间间隔] [次数]
  • 时间间隔:采样周期(秒),如 1 表示每秒刷新一次
  • 次数:输出报告的总次数,省略则持续输出

三、常用核心选项

选项功能典型用法
-c仅显示 CPU 统计iostat -c 1
-d仅显示 磁盘 I/O 统计iostat -d 1
-x显示扩展 I/O 详情(关键)iostat -x 1
-k / -mKB/MB 为单位显示iostat -m 1
-t每条报告前显示时间戳iostat -t 1
-y跳过首次累计值(自开机以来)iostat -y -x 1
-p显示磁盘分区统计iostat -p sda 1

四、输出字段详解

1. CPU 部分(avg-cpu

1avg-cpu:  %user   %nice %system %iowait  %steal   %idle
2           0.25    0.00    0.50    0.00    0.00   99.25
  • %user:用户态 CPU 占比
  • %system:内核态 CPU 占比
  • %iowait:CPU 等待 I/O 完成的时间占比(I/O 瓶颈核心指标
  • %idle:空闲 CPU 占比

2. 磁盘 I/O 部分(Device-x 扩展)

1Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2sda               0.00    2.00      0.00      0.01     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     4.00   0.00   0.00
  • r/s / w/s:每秒读/写 I/O 请求数
  • rMB/s / wMB/s:每秒读/写吞吐量
  • r_await / w_await:读/写请求平均等待时间(ms,含排队)
  • aqu-sz:平均请求队列长度
  • %util设备繁忙时间占比(接近 100% 表示 I/O 饱和)

五、实战常用命令

  1. 每秒刷新、持续看扩展 I/O(最常用)

    1iostat -x 1
  2. 只看磁盘、忽略首次累计值

    1iostat -y -d -x 1
  3. 监控指定磁盘(如 sdb

    1iostat -x 1 sdb
  4. 仅看 CPU 状态

    1iostat -c 1
  5. 输出 5 次、保存到日志

    1iostat -x 1 5 > iostat.log

六、性能判断要点

  • %iowait > 10%:CPU 频繁等 I/O,存在 I/O 瓶颈
  • %util > 80%:磁盘接近饱和
  • await 持续偏高:I/O 响应慢,可能是队列长或硬件慢

2、iostat 字段详细解释

这里给你整理最清晰、运维最常用的 iostat 字段解释,按默认输出 / 扩展输出(-x)分开,直接对照看就行。

一、默认 iostat 输出字段

执行 iostat 会出现两段:CPU 统计 + 磁盘统计

1. avg-cpu(CPU 部分)

1avg-cpu:  %user   %nice %system %iowait  %steal   %idle
2           1.25    0.00    0.89    0.12    0.00   97.74
  • %user:用户进程 CPU 占比
  • %nice:低优先级进程 CPU 占比
  • %system:内核系统调用 CPU 占比
  • %iowait:CPU 等待磁盘 I/O 的时间占比
  • %steal:虚拟机被宿主机抢占的 CPU 时间
  • %idle:空闲 CPU 占比

2. Device(磁盘基础统计)

1Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
2sda               0.30         0.00        10.20    1234567    89101112
  • Device:磁盘/分区名(sda、vda、nvme0n1 等)
  • tps:每秒向磁盘发起的 I/O 请求数
  • kB_read/s:每秒读取数据量(KB)
  • kB_wrtn/s:每秒写入数据量(KB)
  • kB_read:总读取量(KB)
  • kB_wrtn:总写入量(KB)

二、iostat -x 扩展字段(排障核心)

执行 iostat -x 才会显示,排查 I/O 瓶颈必看

1Device         r/s   w/s   rMB/s   wMB/s  rrqm/s  wrqm/s  %rrqm  %wrqm  r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2sda           0.00  2.10   0.00    0.01    0.00    0.00   0.00   0.00    0.50    0.30   0.00     0.00     5.12   0.10   0.02

读写速度

  • r/s:每秒读 I/O 次数
  • w/s:每秒写 I/O 次数
  • rMB/s:每秒读 MB
  • wMB/s:每秒写 MB

合并请求(I/O 合并效率)

  • rrqm/s:每秒合并的读请求
  • wrqm/s:每秒合并的写请求
  • %rrqm:读请求合并比例
  • %wrqm:写请求合并比例

等待时间(关键性能指标)

  • r_await:读请求平均等待时间(ms)
  • w_await:写请求平均等待时间(ms)
  • await:读写平均等待时间(部分版本显示)
  • aqu-sz:平均 I/O 请求队列长度

请求大小

  • rareq-sz:平均读请求大小(KB)
  • wareq-sz:平均写请求大小(KB)

服务时间与繁忙度

  • svctm:平均每次 I/O 服务时间(ms)
  • %util磁盘繁忙百分比
    • 接近 100% = I/O 饱和瓶颈

三、一句话判断瓶颈

  • %util 持续 >80% → 磁盘忙不过来
  • await 明显变大 → I/O 响应慢
  • %iowait 高 → CPU 经常在等磁盘

需要我把这些做成一行式速记卡片,方便你存到笔记里吗?

3、iostat 常用命令速查表

一、基础监控

1# 基础磁盘+CPU统计
2iostat
3
4# 每秒刷新1次,持续输出
5iostat 1
6
7# 每秒1次,共输出10次
8iostat 1 10

二、只看磁盘 I/O

1# 仅磁盘统计
2iostat -d
3
4# 每秒刷新
5iostat -d 1
6
7# 以 MB 为单位
8iostat -d -m 1

三、只看 CPU

1# 仅CPU统计
2iostat -c
3
4# 实时刷新
5iostat -c 1

四、扩展详细信息(排障必备)

1# 扩展I/O详情(await、util、队列等)
2iostat -x
3
4# 实时扩展监控(最常用)
5iostat -x 1
6
7# 跳过开机累计值,只看实时数据
8iostat -y -x 1

五、指定磁盘/分区

1# 只看 sda
2iostat -x 1 sda
3
4# 看 sda + sdb
5iostat -x 1 sda sdb
6
7# 显示分区统计
8iostat -p sda 1

六、常用组合(直接复制用)

1# 运维最常用:实时磁盘I/O详情
2iostat -y -x -m 1
3
4# 只看CPU实时
5iostat -c 1
6
7# 只看磁盘,MB单位,实时
8iostat -d -m 1

七、关键指标速记

  • %util:磁盘繁忙度,接近100% 饱和
  • await:I/O等待时间,越大越慢
  • %iowait:CPU等I/O时间,高则I/O瓶颈
最新文章

文档导航