介绍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:第几个CPU。
- csrow:内存通道。
- ch*:通道内的第几根内存。
在/sys/devices/system/edac/mc/mc0/csrow4/下面还要如下几个文件,也可以助力你查询问题
使用edac工具来检测服务器内存故障
在linux中提供了一个edac-utils 内存纠错诊断工具,也可以用来检查服务器内存潜在的故障。
1.安装 edac-utils 工具
yum install -y libsysfs edac-utils
2.执行检测命令,可查看纠错提示如下
edac-util -v mc0: csrow0: CPU_SrcID#0_Ha#0_Chan#0_DIMM#0: A1 mc0: csrow0: CPU_SrcID#0_Ha#0_Chan#1_DIMM#0: A2 mc0: csrow0: CPU_SrcID#0_Ha#0_Chan#2_DIMM#0: A3 mc0: csrow0: CPU_SrcID#0_Ha#0_Chan#3_DIMM#0: A4 mc0: csrow1: CPU_SrcID#0_Ha#0_Chan#0_DIMM#1: A5 mc0: csrow1: CPU_SrcID#0_Ha#0_Chan#1_DIMM#1: A6 mc0: csrow1: CPU_SrcID#0_Ha#0_Chan#2_DIMM#1: A7 mc0: csrow1: CPU_SrcID#0_Ha#0_Chan#3_DIMM#1: A8 mc0: csrow2: CPU_SrcID#0_Ha#0_Chan#0_DIMM#2: A9 mc0: csrow2: CPU_SrcID#0_Ha#0_Chan#1_DIMM#2: A10 mc0: csrow2: CPU_SrcID#0_Ha#0_Chan#2_DIMM#2: A11 mc0: csrow2: CPU_SrcID#0_Ha#0_Chan#3_DIMM#2: A12
其中
- mc XX 表示 表示内存控制器0;
- CPU_Src_ID#0 表示源CPU0;
- Channel#0 表示通道0;
- DIMM#0 标示内存槽0;
- Corrected Errors 代表已经纠错的次数
当出现纠错计数时会在对应内存后面加Corrected Errors A1的字样
标签:EDAC,Chan,DIMM,内存,服务器,Ha,CPU,mc0 From: https://www.cnblogs.com/HByang/p/18186477