iostat:磁盘 I/O 性能监控与瓶颈识别实战教程

在 Linux 服务器运维中,CPU 高、内存高、负载高都比较容易发现,但很多时候服务器卡顿、业务响应慢,根源其实在磁盘 I/O 瓶颈

数据库读写、文件上传下载、日志大量刷盘、消息队列持久化等场景,都极易造成 I/O 拥堵。而 iostat 正是 Linux 下最经典、最实用的磁盘 I/O 监控工具,能帮你快速定位:

  • 哪块盘最忙
  • 是读多还是写多
  • I/O 响应慢不慢
  • 磁盘是否已经跑满瓶颈

本文用最直白的方式,带你从零学会使用 iostat,看懂每一列指标,快速定位磁盘 I/O 瓶颈。

如果要监控系统进程资源的可以参考:《htop/top 实时系统资源监控 新手如何看懂


一、iostat 是什么 & 安装

iostat 属于 sysstat 工具集,用于统计系统磁盘 I/O 使用情况、CPU 使用率,重点面向块设备 I/O 监控。

安装

# CentOS / RHEL
yum install -y sysstat

# Ubuntu / Debian
apt install -y sysstat

最常用命令

# 实时刷新,每隔 1 秒输出一次,无限刷新
iostat -x 1

# 刷新 3 次后退出
iostat -x 1 3

# 只看磁盘,不看 CPU
iostat -d -x 1

# 查看指定设备 sda
iostat -x -d sda 1
iostat监控磁盘性能

参数说明:

  • -x:显示扩展统计信息(必须加,看瓶颈全靠它)
  • -d:仅显示磁盘统计,不显示 CPU
  • 1:每隔 1 秒刷新一次
  • 3:总共输出 3 次

二、iostat 关键指标详解(看懂这些就够了)

重点看 Device 后面的扩展字段,下面是线上排查最核心的几个指标:

1. rrqm/s & wrqm/s

  • 每秒合并的读请求数写请求数
  • 数值越高说明系统 I/O 调度效率越好

2. r/s & w/s

  • 每秒向磁盘发起的实际读 I/O写 I/O 次数
  • 直接反映 I/O 并发量

3. rMB/s & wMB/s

  • 每秒读取、写入的数据量
  • 直观判断流量大小

4. await(非常关键)

  • 每次 I/O 请求的平均等待时间(毫秒)
  • 包含排队时间 + 磁盘实际处理时间
  • 正常:< 20ms
  • 轻微繁忙:20~50ms
  • 严重瓶颈:> 100ms,业务一定会卡顿

5. svctm(重要)

  • 磁盘实际处理 I/O 的平均时间(毫秒)
  • 不包含队列等待
  • 正常:< 20ms
  • 过高说明磁盘硬件或固件存在性能瓶颈

6. % util(核心瓶颈指标)

  • 磁盘繁忙时间占比
  • 接近 100% 说明磁盘已跑满,I/O 饱和
  • 只要 % util 持续 100%,服务器一定卡顿

7. aqu-sz

  • 平均等待中的 I/O 请求队列长度
  • 队列越长,I/O 拥堵越严重

三、最简单的瓶颈判断套路(新手直接照抄)

场景 1:% util 接近 100%

磁盘 I/O 已饱和,成为系统瓶颈

可能原因:

  • 数据库大量随机读写
  • 日志疯狂刷盘
  • 大文件读写密集
  • 磁盘性能过低(HDD 机械盘尤其常见)

场景 2:await 很大,但 svctm 很小

磁盘本身不慢,但 I/O 排队严重

问题:I/O 请求太多,队列拥堵

优化方向:程序限流、异步化、减少刷盘频率

场景 3:await 和 svctm 都很大

磁盘硬件性能不足

优化方向:更换 SSD、升级云盘性能、RAID 优化

场景 4:w/s 很高,r/s 很低

→ 典型写密集型业务

如:日志收集、消息队列、大数据写入

场景 5:r/s 很高,w/s 很低

→ 典型读密集型业务

如:数据库查询、静态文件服务、搜索引擎


四、常用组合命令

1. 实时查看完整 I/O 详情

iostat -x 1

2. 只看磁盘,不看 CPU

iostat -d -x 1

3. 按设备查看(如 sdb)

iostat -x -d sdb 1

4. 查看历史启动以来的汇总统计

iostat

五、I/O 瓶颈常见优化方向

当你通过 iostat 确认磁盘瓶颈后,可以从这些方向优化:

  1. 业务层:减少同步刷盘、批量写入、减少小文件 I/O
  2. 应用层:加缓存(Redis / PageCache),降低磁盘读
  3. 系统层:调整 I/O 调度算法(mq-deadline、none、bfq)
  4. 硬件层:HDD 换 SSD、提升云盘 IOPS 与吞吐量
  5. 架构层:读写分离、分库分表、分布式存储

六、总结

iostat 是 Linux 磁盘 I/O 排查的第一工具,不需要复杂操作,重点盯紧三个指标就能解决 90% 问题:

  • %util:是否跑满
  • await:是否等待过久
  • rMB/s、wMB/s:读写压力大小

只要学会看懂这几个值,你就能快速判断:

  • 是磁盘慢
  • 是 I/O 太多
  • 还是队列拥堵 从而针对性优化,快速解决服务器卡顿、业务延迟高的问题。
本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress