Linux

iostat 命令详解

·5 分钟阅读·1652 字

iostat 是 Linux 系统 IO 性能排查的核心工具,用于监控 CPU 和磁盘 I/O 负载。

📋 目录

iostat 命令详解

iostat 是 Linux 系统 IO 性能排查的核心工具,用于监控 CPU 和磁盘 I/O 负载。

1. 安装与基础语法

1.1. 安装


# CentOS/RHEL

yum install -y sysstat

# Ubuntu/Debian

apt install -y sysstat

1.2. 基础格式


iostat [选项] [间隔秒数] [输出次数]

示例:

  • iostat:输出单次统计(开机至今平均值)
  • iostat 2:每 2 秒输出一次,持续刷新
  • iostat 2 5:每 2 秒输出一次,共输出 5 次

2. 常用选项

选项作用
-c仅显示 CPU 统计
-d仅显示磁盘统计(最常用)
-x显示扩展详细 IO 统计(重点,排查瓶颈必用)
-k单位改为 KB(默认块)
-m单位改为 MB
-N显示 LVM/设备名
-p显示分区统计(如 sda1、sda2)

3. 默认输出解读

3.1. CPU 统计字段

字段说明
%user用户态 CPU 占比
%nice低优先级进程 CPU 占比
%system内核态 CPU 占比
%iowaitIO 等待占比(关键),数值高 = 磁盘存在瓶颈
%steal虚拟化场景被宿主机抢占的 CPU
%idle空闲 CPU 占比

3.2. 基础磁盘字段

字段说明
Device磁盘设备名(sda、sdb)
tps每秒 I/O 请求数(合并后次数)
kB_read/s每秒读取量(KB)
kB_wrtn/s每秒写入量(KB)

4. 扩展统计(-x 核心重点,排障必用)

命令:iostat -xdm 2(只看磁盘、单位 MB、2 秒刷新)

4.1. 关键字段详解

字段说明参考值
%util设备繁忙百分比(重中之重)>80% 存在 I/O 瓶颈
awaitI/O 请求平均等待时间(ms)<5ms 理想,>20ms 拥堵
r_await读请求平均等待时间(ms)区分读慢还是写慢
w_await写请求平均等待时间(ms)区分读慢还是写慢
svctm设备实际处理 I/O 时间(ms)远小于 await 表示队列排队严重
rrqm/s每秒合并读请求数:
wrqm/s每秒合并写请求数:
r/s每秒读次数:
w/s每秒写次数:

5. 典型故障判断

现象结论
%iowait 高、%idle 高,CPU 不忙但系统卡磁盘 IO 瓶颈,优先看 await、%util
await 很高,但 svctm 很小I/O 请求太多,队列阻塞
await 和 svctm 都很大磁盘硬件性能不足/故障
%util 接近 100%,但读写量不大随机小 IO(数据库、日志频繁刷盘)

6. 常用组合命令


# 1. 磁盘详细统计,MB 单位,2 秒刷新

iostat -xdm 2

# 2. 只看 CPU 状态

iostat -c 2

# 3. 查看磁盘 + 分区详情

iostat -xdp 2

# 4. 开机至今整体汇总(静态统计)

iostat -xd

7. 小结

  • 日常巡检:iostat -d 2 看基础读写
  • 排查卡顿/慢 IO:必加 -x,重点盯 await、%util、%iowait
  • 机械硬盘对随机 IO 敏感,SSD 高 %util 不一定代表瓶颈,结合等待时间综合判断

关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro