EDAC工具助力检测服务器内存故障

什么是EDAC

EDAC(Error Detection And Correction 错误检测与纠正),是Linux系统的错误检测和纠正的框架,它的目的是在linux系统运行过程中,当错误发生时能够发现并且报告出硬件错误。

内存有两种错误类型分别是CE和UE,CE 是 Correctable Error 的简称, UE是Uncorrectable Error的简称,CE即可恢复的错误,暂不影响系统的正常运行。可以在找时机停机换掉。UE为不可恢复的内存错误,通常会导致宕机。

那么EDAC是如何控制和报告设备故障的呢?它又是如何将故障定位以及记录到对应的内存条上的呢?

  • Linux 是通过sysfs文件系统来展示内核设备的层次关系,EDAC则通过它来控制和报告设备故障。EDAC是通过抽象出来的内存控制器模型,将故障定位到对应的内存条上,这主要也是与内存在系统中的排列结构相关。CPU对应的每个MC(memory controller)设备控制着一组DIMM内存模块,这些模块通以片选行(Chip-Select Row,csrowX)和通道(Channel,chX)的方式排布,在系统中可以有多个csrow和多个通道。

故障确认及定位故障内存槽位

grep "[0-9]" /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count
  • count:不为0的行即代表存在内存错误。
  • mc: 内存控制器
  • csrow:内存通道。
  • ch*:通道内的第几根内存。

在/sys/devices/system/edac/mc/mc0/csrow4/下面还要如下几个文件,也可以助力你查询问题

使用edac工具来检测服务器内存故障

在linux中提供了一个edac-utils 内存纠错诊断工具,也可以用来检查服务器内存潜在的故障。

1.安装 edac-utils 工具

yum install -y libsysfs edac-utils

2.执行检测命令,可查看纠错提示如下

其中

  • mc X表示 表示内存控制器0;
  • CPU_Src_ID#0 表示源CPU0;
  • Channel#0 表示通道0;
  • DIMM#0 标示内存槽0;
  • Corrected Errors 代表已经纠错的次数

 

posted @ 2024-05-11 14:39  杨灏  阅读(312)  评论(0编辑  收藏  举报