Linux 主机出现 dmesg 磁盘报错时的排查与处置
一、快速定位与初步判断
mount | grep sd;若根分区显示为 ro(只读),多为文件系统检测到严重 I/O 错误触发的自我保护。dmesg | egrep -i "error|fail|sda|sdb";journalctl -xe | egrep -i "error|fail|sda|sdb"。I/O error、Buffer I/O error、EXT4-fs error(文件系统层错误)。sense key: Medium Error、UnrecovData 10B8B BadCRC、failed command: READ FPDMA QUEUED、hard resetting link(链路/线缆/控制器/盘体异常征兆)。lsblk -f、blkid,看是否仍能识别设备与文件系统类型。二、判断硬件健康与坏块扫描
apt-get install smartmontools 或 yum install smartmontools。smartctl -a /dev/sda、smartctl -H /dev/sda。重点看:
Reallocated_Sector_Ct(重映射扇区计数)Current_Pending_Sector(待重映射扇区)Offline_Uncorrectable(离线不可纠正错误)SMART overall-health self-assessment(整体健康评估)badblocks -sv /dev/sda;结果可重定向到文件以便分析。badblocks -sw /dev/sda END START。三、文件系统修复与临时恢复
mount -o remount,rw /。e2fsck -f -y /dev/sdaX。xfs_repair /dev/sdaX;如日志损坏严重,可尝试 xfs_repair -L(会清空日志,风险高,务必先备份)。e2fsck -l bads.txt /dev/sdaX(bads.txt 由 badblocks 生成)。四、常见 dmesg 报错含义与处置要点
| 日志关键词 | 可能原因 | 建议操作 |
|---|---|---|
I/O error / Buffer I/O error |
扇区读写失败、介质退化 | 立即备份;SMART 检测;必要时更换磁盘 |
EXT4-fs error |
文件系统一致性受损 | 卸载后 e2fsck;必要时从备份恢复 |
sense key: Medium Error / UnrecovData |
介质错误、不可恢复读 | 备份;SMART 看重映射/不可纠正计数;更换盘 |
READ FPDMA QUEUED / 10B8B BadCRC / hard resetting link |
SATA 链路不稳、线缆/供电/控制器问题 | 更换高质量 SATA 线与端口;检查供电与背板;更新固件;排除控制器/驱动问题 |
五、处置决策与后续预防
Reallocated/Pending/Uncorrectable 计数不为 0 且持续增长 → 立即更换磁盘。badblocks 读写扫描反复失败 → 物理坏道概率高 → 更换磁盘。smartd 守护进程做长期健康监控与告警。