Linux 怎么使用 iostat 排查由于磁盘坏道引起的 IO 飙升

阿婷君_6160

阿婷君_6160

2026-09-07

816人浏览

原创

iostat不能直接检测坏道,但能暴露坏道引发的io异常特征:w_await持续远超阈值(机械盘>50ms、ssd>10ms)且波动剧烈,%util高但wkb/s极低或归零,avgqu-sz显著升高而w/s偏低,r_await与w_await同步飙升且svctm接近await。

linux 怎么使用 iostat 排查由于磁盘坏道引起的 io 飙升

iostat 本身不能直接检测磁盘坏道,但它能敏锐反映出坏道引发的典型 IO 异常特征——比如写入延迟骤增、请求堆积、利用率虚高但吞吐低下。排查的关键是:把 iostat 当作“症状观察仪”,结合其他工具交叉验证是否指向物理介质故障。


看哪些指标异常,才值得怀疑坏道

坏道(尤其是不可修复的硬错误)会让磁盘在底层反复重试、超时、降速,iostat 会暴露这些“挣扎痕迹”:

  • w_await 持续远高于正常值

    • 机械盘 > 50ms、SSD > 10ms 且波动剧烈(不是稳定高,而是忽高忽低、跳变明显)
    • 注意区分:单纯负载高时 await 可能升高但较平稳;坏道导致的 await 往往伴随尖峰抖动
  • %util 高但 wkB/s 极低或不稳定

    • 例如 %util 95%,但 wkB/s 只有几 MB/s,甚至频繁归零 → 磁盘卡在重试/纠错,实际写不进去
  • avgqu-sz 显著升高 + w/s 却不高

    CMIC Skill Scanner (Linux ARM64)
    CMIC Skill Scanner (Linux ARM64)

    使用 auto、native 或 external 引擎审计待安装的 skill 包或归档,并可选启用 LLM 语义分析。

    下载
    • 队列里堆了大量请求(如 avgqu-sz > 5),但每秒完成的写请求(w/s)却只有个位数 → 请求“堵死”在驱动层,很可能是底层响应失败
  • r_await 和 w_await 同时飙升,且 svctm 接近或超过 await

    • 虽然 svctm 在新版内核中已弃用,但如果它和 await 差值极小(比如 svctm=48ms, await=52ms),说明几乎没排队时间,延迟全花在设备处理上 → 设备自身响应慢,非队列问题

✅ 实用命令:iostat -xmd 1(每秒刷新,MB 单位,扩展指标)
关注 sda(或对应盘符)这一行,连续观察 30 秒以上,不要只看单次采样。


发现可疑后,下一步必须做的三件事

iostat 提示“可能坏了”,但不能下结论。要快速验证是否真为坏道,需立刻执行:

  • 检查系统日志是否有硬件级报错

    dmesg | grep -i "ata\|nvme\|sd.\|error\|failed\|timeout\|uncorrect"
    • 出现 UNCORRECT, ABRT, timeout, retrying, media error, SMART failure 等关键词,基本坐实坏道或盘故障
    • 特别注意 end_request: I/O error 或 sector 后跟具体扇区号(如 sector 123456789)
  • 运行 SMART 自检(对 HDD/SSD 都适用)

    sudo smartctl -a /dev/sda     # 查看完整健康状态
    sudo smartctl -t short /dev/sda   # 快速自检(几分钟)
    sudo smartctl -t long /dev/sda    # 全盘扫描(数小时,生产环境慎用)
    • 重点关注 Reallocated_Sector_Ct, Current_Pending_Sector, UDMA_CRC_Error_Count, Media_Wearout_Indicator(SSD)等属性值是否非零或正在增长
    • smartctl -l selftest /dev/sda 查看最近一次自检结果
  • 用 dd + direct 方式做扇区级读写验证(谨慎操作)
    若日志或 SMART 已提示某区域异常,可定位测试:

    # 假设 dmesg 提到 sector 123456789,换算成 512 字节偏移:123456789 × 512
    sudo dd if=/dev/sda of=/dev/null bs=512 skip=123456789 count=1 iflag=direct
    • 如果卡住、报 Input/output error 或耗时极长(>30s),基本确认该扇区失效

坏道引发的 IO 飙升 vs 其他原因的区别点

现象 坏道典型表现 其他常见原因(如日志刷盘、DB checkpoint)
%util 高但“假忙”:吞吐低、w/s 少、avgqu-sz 高 高且真实:wkB/s 高、w/s 高、吞吐匹配
await 曲线 抖动剧烈,出现毫秒级尖峰或长时间挂起 相对平滑上升/回落,无突兀断点
dmesg 日志 大量 ATA/NVMe 底层错误、sector 报告 无硬件错误,可能有 jbd2, klogd, rsyslogd 进程日志
SMART 属性 Reallocated/Pending Sector 数上升 所有关键属性正常

不复杂但容易忽略:iostat 是起点,不是终点。它告诉你“这里疼”,但得靠 dmesg、SMART 和定向读写,才能看清是肌肉拉伤还是骨头裂了。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2612

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

876

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

394

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2376

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4372

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

707

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习