首页/系统/服务器硬件与 RAID 速查/dmesg 中的内存错误线索
内存与电源72 条

dmesg 中的内存错误线索

内核把内存错误写进环形缓冲区:EDAC 与 Machine Check 消息包含控制器、通道与 DIMM 编号,是定位故障内存的一手证据。

内核里的内存错误线索

内存出现可纠正或不可纠正错误时,内核会通过 EDAC 子系统与机器检查异常机制把消息写进内核环形缓冲区,dmesg 里能看到控制器、通道与 DIMM 的定位字段,这是不拆机就能定位到具体内存条的一手证据。要注意缓冲区会滚动覆盖,重要消息必须及时导出,或者用守护进程持续落库。

基本信息

消息来源EDAC 子系统与 CPU 上报的机器检查异常
关键字段DIMM 定位、可纠正与不可纠正错误计数、错误地址
易失性内核环形缓冲区容量有限,旧消息会被覆盖
落库方式用 rasdaemon 或 mcelog 持续采集
权限要求root

典型使用场景

  • 排查偶发进程崩溃或数据校验失败时找内存线索
  • 定位具体是哪一条内存需要更换
  • 复盘硬件故障与业务异常的时间关系
  • 交付验收时确认没有历史内存错误记录
  • 为厂商工单提供内核侧证据

收集证据

收集证据
dmesg -T | grep -iE 'EDAC|Machine check|memory error' | tail -30      # 当前缓冲区里的内存错误
journalctl -k --since '7 days ago' --no-pager | grep -iE 'EDAC|mce' | tail -30   # 从持久化日志回溯
dmesg -T > /tmp/ticket/dmesg.txt                                       # 导出完整证据留档
ras-mc-ctl --errors 2>/dev/null | tail -30                             # 装了 rasdaemon 时读汇总

消息类型

类型含义关注点
EDAC 可纠正错误已被纠正,业务未受影响计数持续增长说明内存在劣化
EDAC 不可纠正错误未被纠正,可能影响数据通常需要立即更换并核对业务数据
机器检查异常CPU 上报的硬件异常含错误地址与状态位
DIMM 定位字段控制器通道与内存条编号对应到物理槽位才能换对条
dmesg 缓冲区会滚动覆盖,重要消息要尽快导出,或者依赖 rasdaemon 这类守护进程落库。
可纠正错误单次出现可以观察,不可纠正错误通常意味着要立即更换,并回查同一时段业务是否有数据异常。
把错误记录与业务时间线对齐之后再判断影响:同样一次可纠正错误,发生在数据写入窗口内还是空闲时段,处置的紧迫程度完全不同。

易错点

  • 只看当前缓冲区:历史错误可能已经被覆盖,收集太晚就没有证据了
  • 不关联业务时间线:无法判断影响范围,也说不清要不要回滚或校验数据
  • 把可纠正错误当无事发生:单次可以观察,持续增长说明内存条正在劣化
  • 记录里缺少 DIMM 定位字段:后续无法确认到底该换哪一条内存

数据来源与参考

  • Linux 内核文档(EDAC/MCE 消息格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌