CentOS dmesg 日志常见错误解析与排查
一 快速定位与阅读要点
dmesg -Tdmesg -l err,warndmesg -wdmesg | grep -i "error\|fail\|usb\|nvme\|xfs\|segfault"dmesg > dmesg_$(date +%F).log)。/var/log/messages、journalctl 可补充用户空间与持久化视角。二 常见错误模式与处理建议
| 日志模式/关键词 | 典型含义 | 快速检查 | 处理建议 |
|---|---|---|---|
| segfault at |
用户态程序段错误;error 的 bit2/bit1/bit0 分别表示用户/内核态、读/写、权限/映射 | `dmesg | grep segfault;ulimit -c` 查看是否生成 core |
| usb 1-1: device not responding to setup address, error -71 | USB 设备枚举失败,常见于线缆/供电/端口/设备异常 | 更换端口/线缆、换设备、查看 `dmesg | grep -i usb` |
| pci 0000:xx:xx.x: BAR 14/15: failed to assign [mem size 0x…] | PCI 桥/设备内存空间分配失败,多见于资源冲突/固件/主板问题 | lspci -vv、`dmesg |
grep -i pci` |
| XFS (dm-0): Starting recovery (logdev: internal) | XFS 检测到异常关机/日志不一致,进入恢复 | `dmesg | grep -i xfs;xfs_info /mount/point` |
| nvme0: I/O error, status: 0x4002 | NVMe I/O 错误,可能掉盘/超时/温度 | `dmesg | grep -i nvme;nvme list/smartctl -a /dev/nvmeX` |
| CPU: 1 PID: 0 Comm: swapper/1 Tainted: G … Oops: 0002 [#1] SMP | 内核 Oops,严重内核错误,可能由驱动/硬件触发 | 查看 Call Trace 与寄存器;dmesg -T |
收集完整日志与 vmlinux 符号,向驱动维护者/厂商提交;临时回退内核或禁用相关模块 |
| Out of memory: Kill process |
内存不足触发 OOM Killer | `dmesg | grep -i “out of memory”;free -m、vmstat 1` |
以上模式与处理要点对应的示例与排查方法可参考实际案例与工具说明。
三 实战排查流程
dmesg -T -l err,warn | head -n 50 找出最近的关键错误,记录时间戳、设备名、错误码。lspci、lsusb、lshw 确认设备是否存在与驱动绑定情况;必要时查看 /sys/bus/*/devices/*/uevent。dmesg > /root/dmesg_$(date +%F_%T).log;同时用 journalctl -k -b 获取本次启动的内核日志。dmesg | tail -n 50。smartctl -a、nvme smart-log /dev/nvmeX;检查温度与散热。xfs_repair -n /dev/mapper/...;确认无硬件故障后再修复。memtest86+ 等内存诊断;结合 vmstat、sar -r 观察压力与泄漏。pci=realloc、nvme_core.io_timeout);对关键业务建立告警与日志轮转。四 常见错误码速查