Linux iostat await 和 util 怎么看:区分磁盘延迟、队列堆积与设备忙碌
磁盘告警里最容易被误读的是 %util:看到它接近 100%,就直接下结论说“磁盘满了”。实际排查 Linux I/O 时,await、aqu-sz 和 %util 必须放在同一个采样窗口里看,才能分清请求是在排队、设备服务慢,还是并行设备的统计口径让利用率看起来很高。
先用
iostat -x -y 2 6取得连续样本,再把await、aqu-sz、%util与读写方向放在一起判断;单看一列,尤其是%util,不足以证明设备已经到达性能上限。
await包含排队时间和设备实际服务时间,适合观察请求端到端等待。aqu-sz持续升高而吞吐没有同步增加,通常要优先检查队列堆积。%util接近 100% 对串行设备更有警示意义,对并行 SSD 或 RAID 不能单独当作饱和证据。- 首次历史报告容易混入开机以来的平均值,使用
-y后再按固定间隔复测。
先把 iostat 的首次报告排除掉
iostat 默认会先输出一段从系统启动到当前时刻的累计统计。服务器刚经历过批处理或备份时,这一行可能和眼前的故障窗口完全不是一回事。排查现场先固定设备、间隔和样本数:
iostat -x -y 2 6
-x 展开设备级指标,-y 跳过第一份历史报告,2 6 表示每 2 秒采样一次,共输出 6 份报告。先观察第二到第六份是否稳定,再谈某个数字是不是异常。样本期间最好不要同时重启服务或手工制造大量 I/O,否则你看到的是操作本身的影响。

await 高,究竟高在排队还是高在服务时间
await 是 I/O 请求从发出到完成的平均时间,包含请求在队列里等待的时间,也包含设备真正处理请求的时间。它不是“磁盘转速”的别名,也不能直接当成某个固定硬件的健康阈值。
排查时至少把它和 aqu-sz、读写方向、吞吐一起看:
| 读数组合 | 优先假设 | 下一步 |
|---|---|---|
await 高、aqu-sz 也升高 | 请求在设备前排队 | 确认是谁在产生读写,检查队列是否持续增长 |
await 高、aqu-sz 很低 | 单个请求服务耗时高,或样本量太小 | 延长采样窗口,区分读写方向并复测 |
await 低、吞吐正常 | 暂未看到明显设备等待 | 不要仅凭高 %util 判定饱和 |
这里别急着把参数改成“更大的队列”。队列变长可能只是把等待藏起来,应用侧的请求延迟反而更难解释。先用 pidstat -d 2 6 或业务日志找出读写来源,再回到设备行核对。
%util 接近 100% 时,先确认设备是不是并行处理
%util 表示在统计时间里,设备有 I/O 请求处于活动状态的比例。对一次只能服务有限并发请求的设备,它接近 100% 往往值得警惕;但现代 SSD、NVMe 或 RAID 可以同时处理多个请求,此时设备持续忙碌不等于已经达到吞吐或 IOPS 极限。
更稳妥的判断是看趋势:%util 很高、await 持续上升、aqu-sz 同时堆积,且业务延迟同步变差,才更像设备或下游路径正在成为瓶颈。如果 %util 高但 await 平稳、队列接近零,先检查业务负载类型、设备并行度和采样窗口,不要直接扩容或替换磁盘。

用固定采样结果做一次反向验证
假设某次采样显示 await=18ms、aqu-sz=0.20、%util=98%。这个组合只能说明设备在窗口内几乎一直有请求,但队列并不长,不能单独证明“磁盘已经跑满”。如果下一轮业务高峰中 await 变成 80ms、aqu-sz 逐步增大,且读写吞吐接近不再增长,证据才开始指向排队和服务能力不足。
复测时保持三件事不变:同一个设备名、同一个采样间隔、同一个业务负载。若设备被 LVM、容器或虚拟化层包住,还要把上层设备和底层块设备放在同一时间段对照,避免只看其中一层。
常见问题:iostat 三列读数怎么避免误判
为什么第一次 iostat 输出总是和后面不同?
第一次报告可能覆盖系统启动以来的累计区间,历史负载会稀释或放大当前现象。使用 -y 跳过它,再用固定间隔采样。
await 高是不是一定要换磁盘?
不是。先确认请求是否排队、读写方向是否变化,以及高等待是否和业务延迟同步出现。样本太少或只发生在单一请求类型时,不能直接推导硬件结论。
%util 为什么高了但 aqu-sz 还是很低?
设备可能一直有请求但并没有形成长队列,或者设备具备并行处理能力。继续观察 await、吞吐和业务延迟,再判断是否接近真正上限。
把判断落到三列联读
日常值班可以把结论压缩成一句话:先用 await 看请求等了多久,再用 aqu-sz 看是否在排队,最后用 %util 判断设备是否持续有活跃请求;遇到 SSD、NVMe 或 RAID,再把并行处理能力和业务延迟补进证据链。这样得到的判断可复测,也比“util 100% 所以磁盘坏了”更接近真实现场。
Go io.NewSectionReader 怎么读取文件切片:Offset、Seek 与越界返回
- 上一篇
- Go io.NewSectionReader 怎么读取文件切片:Offset、Seek 与越界返回
- 下一篇
- Web Components 的 customElements.whenDefined 怎么处理组件先渲染后注册:升级时机与失败分支
-
- 文章 · linux | 6小时前 |
- Linux ss -Htnp 定位监听端口:socket 状态、进程归属与权限边界
- 400浏览 收藏
-
- 文章 · linux | 14小时前 | 定时任务 · 任务调度 · linux运维 · 故障排查 · 服务管理 · Linux 定时任务 OnCalendar Persistent Linux 定时单元
- Linux 定时单元如何选择 OnCalendar 与 Persistent:错过窗口后的补跑取舍
- 375浏览 收藏
-
- 文章 · linux | 17小时前 | Linux · 日志排查 · journalctl · 服务管理器 · 故障定位 · Linux 时区 journalctl --since --until 日志时间窗口
- Linux journalctl --since 与 --until 怎么精确截取故障窗口:时间边界与时区
- 134浏览 收藏
-
- 文章 · linux | 21小时前 | Linux · 运维 · 磁盘管理 · tmpfiles.d · Linux 临时文件清理 tmpfiles.d 年龄阈值
- Linux 临时文件为什么会自动清理:tmpfiles.d 规则、年龄阈值与手动验证
- 126浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ljg-skills
- ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
- 5344次使用
-
- MELO音乐
- MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
- 4854次使用
-
- UniScribe
- UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
- 4806次使用
-
- 剧云
- 剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
- 5053次使用
-
- 万象有声
- 万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
- 5010次使用
-
- 详解golang执行Linuxshell命令完整场景下的使用方法
- 2023-01-07 426浏览
-
- go程序部署到linux上运行的实现方法
- 2023-01-02 387浏览
-
- Linux系统下Go语言开发环境搭建
- 2023-01-07 242浏览
-
- logrus hook输出日志到本地磁盘的操作
- 2022-12-29 328浏览
-
- 使用golang获取linux上文件的访问/创建/修改时间
- 2022-12-31 238浏览

