dmesg 掉盘信息解读
内核日志里的 ATA/SCSI 报错是盘与链路问题的起始线索:medium error 与 Unrecovered read error 指向介质读取失败,hard resetting link 与 link down 指向链路,command timeout 也常见于链路不稳而不是盘体损坏。读这些日志的价值在于把「卡侧认定故障」和「盘体真的坏了」区分开——两者的处置方式完全不同,前者往往先查线缆、背板与供电。
常用搜索
常用搜索
dmesg -T | grep -i -E "ata[0-9]|medium error|i/o error|link|reset" | tail -40
journalctl -k --since "2 hours ago" | grep -i -E "sd[a-z]|ata" | tail -40
dmesg -T | grep -i -E "medium error|Unrecovered read error" | tail -20
cat /sys/block/sdb/device/state # 盘当前可见状态(running/offline)典型报错
| 报错文本 | 含义 | 排查方向 |
|---|---|---|
| medium error / Unrecovered read error | 介质读失败 | SMART 与坏道检查 |
| hard resetting link | 链路复位 | 线缆、背板、供电 |
| failed command: READ FPDMA | 命令失败 | 盘或链路 |
| I/O error, dev sdb | 块层 IO 失败 | 结合上层状态判断影响 |
| long (xxx) command timeout | 命令超时 | 链路稳定性或盘固件 |
按报错分流的处理路径
- 介质类报错:查 SMART 关键属性与错误日志,判断是否需要换盘
- 链路类报错:更换线缆与背板插槽,观察是否复发,别急着换盘
- 命令超时反复出现:核对固件版本与已知问题列表,必要时升固件
- 报错伴随阵列降级:先按阵列流程恢复冗余,再分析根因
把日志变成结论的四步
- 截取时间窗口:按故障时间前后各取一段,不要只看文件末尾
- 分类计数:把报错按介质类、链路类、超时类分别统计,找出主因
- 交叉验证:与 SMART 属性、卡的物理盘状态、业务监控延迟三条线对照
- 形成处置:判断是换盘、换线还是升级固件,并记录验证结果
时间戳能对上业务告警才叫证据:用 dmesg -T 让日志显示人类可读时间,再与监控告警、机房变更记录对齐。