Linux 存储系统日志分析:如何定位磁盘 IO 错误信息

定位磁盘IO错误应聚焦dmesg报错源头,执行dmesg | grep -i “error|fail|timeout|i/o|buffer”筛选关键线索,如”Buffer I/O error on device sda1″、”end_request: I/O error”、”ata1.00: failed command”或”nvme … controller is down”,再联动smartctl检查SMART属性、/var/log/messages确认持续性,并结合iotop、lsof定位阻塞进程与业务文件。

linux 存储系统日志分析:如何定位磁盘 io 错误信息

定位磁盘 IO 错误,关键不是翻遍所有日志,而是聚焦内核层报错源头——dmesg 是第一入口。它记录了设备驱动与硬件交互时的真实反馈,比应用日志更底层、更可信。

盯住 dmesg 里的硬件级错误线索

执行 dmesg | grep -i "error|fail|timeout|i/o|buffer",重点识别这几类典型输出:

  • “Buffer I/O error on device sda1”:明确指向某分区读写失败,通常伴随扇区号(如 “logical block: 123456”),这是后续验证的坐标
  • “end_request: I/O error” 或 “blk_update_request: critical target error”:说明请求在块层已无法完成,问题大概率在硬件或驱动
  • “ata1.00: failed command: READ FPDMA QUEUED”:SATA控制器层面报错,可能涉及线缆松动、电源不稳或硬盘固件异常
  • “nvme 0000:01:00.0: controller is down”:NVMe盘掉线,需查 PCIe 链路状态和温度

交叉验证系统日志与硬件健康

仅看 dmesg 不够,要联动其他日志确认是否持续发生:

  • /var/log/messages/var/log/syslog(视发行版而定)中相同时间点是否有重复报错,判断是偶发还是持续恶化
  • smartctl -a /dev/sdx 检查 SMART 属性,特别关注:
      • Reallocated_Sector_Ct(重映射扇区数)非零即存在物理坏道
      • Current_Pending_Sector(待重映射扇区)持续增长,说明硬盘正在失效边缘
      • UDMA_CRC_Error_Count(CRC校验错误)高值提示数据线或接口接触不良

区分错误类型:是硬件故障,还是文件系统或配置问题?

报错现象相似,但根源差异很大:

  • 若 dmesg 报错集中在同一物理扇区(如反复出现 “sector 123456”),且 smartctl 显示该扇区已重映射 → 硬件老化,应尽快备份并更换磁盘
  • 若报错随机出现在不同位置,且 smartctl -H 显示“PASSED”,但 fsck 修复后暂时恢复 → 文件系统损坏,可能由异常断电或内核 bug 引起
  • 若只在高负载时出现 timeout 类错误,而空闲时正常 → IO 调度器或队列深度不匹配,比如 SSD 用了 deadline 调度器,或 RQ-SIZE 设置过小

快速确认是否影响业务进程

错误发生时,立即检查哪些进程被阻塞:

  • 运行 iotop -oP,观察是否有进程 IO 状态卡在 “D”(不可中断睡眠),这通常是等待磁盘响应未果
  • lsof +D /mount/point 查看挂载点上打开的文件,结合报错设备名(如 sda1),定位具体业务文件(如数据库表文件、日志文件)
  • 执行 cat /proc/[pid]/stack(需 root),若栈回溯中频繁出现 generic_make_requestblk_mq_start_request → 确认该进程正陷入底层 IO 等待

文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/xitongjiaocheng/31957.html

苹果手机相机会抖动 拍照抖动原因与稳定方法
上一篇 2026-06-25 10:50
vivo官方网站登录入口 vivo云服务网页版
下一篇 2026-06-25 10:50

相关推荐