Linux

iostat 命令详解

·5 分钟阅读·1663 字
📋 目录

iostat 命令详解

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

一、安装与基础语法

安装

# CentOS/RHEL
yum install -y sysstat

# Ubuntu/Debian
apt install -y sysstat

基础格式

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

示例

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

二、常用选项

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

三、默认输出解读

CPU 统计字段

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

基础磁盘字段

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

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

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

关键字段详解

字段说明参考值
%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每秒写次数

五、典型故障判断

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

六、常用组合命令

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

# 2. 只看 CPU 状态
iostat -c 2

# 3. 查看磁盘 + 分区详情
iostat -xdp 2

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

七、小结

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

关联文档

  • 服务器 IO 过高排查流程 — IO 排查实战
  • ../../network/网络 — 网络 IO 排查
  • ../../monitoring/监控与可观测性 — 系统指标采集