CentOS dmesg 常见错误与排查要点
一、快速定位与常用命令
二、常见错误模式与处理建议
| 错误模式 | 典型 dmesg 关键词 | 可能原因 | 排查与处理 |
|---|---|---|---|
| 磁盘 I/O 错误 | blk_update_request: I/O error, end_request: I/O error, Buffer I/O error, I/O error, dev sda, sector N | 磁盘/云盘故障、设备未正确挂载、掉线、线缆/背板问题 | 1) 用 lsblk 确认设备是否存在;2) 云盘执行“重新挂载/重新Attach”;3) 检查 dmesg 持续报错扇区;4) 用 smartctl -a /dev/sdX 看健康;5) 离线扫描坏块(维护窗口);6) 文件系统只读时卸载后修复:e2fsck -f -y /dev/sdX2 或 xfs_repair /dev/sdX2;7) 存在大量重映射/不可恢复扇区时尽快更换磁盘 |
| 文件系统只读 | EXT4-fs (recover) read-only filesystem, 挂载为 ro | 严重 I/O 错误触发只读保护 | 1) 先看 dmesg 的 I/O 错误;2) 备份关键数据;3) 卸载后在维护窗口修复文件系统;4) 修复后 mount -o remount,rw /;5) 若频繁复发,检查磁盘健康与阵列状态 |
| 内存不足 OOM | Out of memory: Killed process, oom-kill | 应用内存超限、内存泄漏、系统内存不足 | 1) 用 **dmesg -T |
| 连接跟踪表满 | nf_conntrack: table full, dropping packet | 高并发短连接、连接跟踪上限过低 | 1) 临时调大哈希表:echo 131072 > /sys/module/nf_conntrack/parameters/hashsize;2) 永久调大上限:net.netfilter.nf_conntrack_max = 524288(/etc/sysctl.conf);3) 优化应用连接复用与超时;4) 考虑在 PREROUTING 对不需要跟踪的流量使用 NOTRACK |
| Kdump 未预留内存 | No memory reserved for crash kernel | 未正确配置 crashkernel 或生成 grub.cfg 失败 | 1) 在 /etc/default/grub 设置合适的 crashkernel=;2) 重新生成配置:grub2-mkconfig -o /boot/grub2/grub.cfg;3) 重启并启用 kdump 服务;4) 确认 /var/crash/ 能生成 vmcore |
| 内存硬件/配置告警 | DIMM checksum error, Advanced ECC disabled, mirror mode disabled, memory initialization warning | 内存条不匹配/故障、BIOS 内存模式与物理配置不一致 | 1) 按主板手册成对、同规格安装内存;2) 进入 BIOS 关闭不匹配的内存高级特性(如高级 ECC/镜像);3) 依据告警更换故障内存;4) 复核节点交叉存取等设置与内存条布局 |
| 以上模式覆盖了磁盘、文件系统、内存、网络与内核崩溃取证的高频场景,可据此快速定位并采取措施。 |
三、实用排查流程
四、注意事项