如何获得Linux中ECC错误的通知?


23

当配备ECC内存的Linux计算机识别出内存故障时,如何通知我?我对可纠正和不可纠正错误都感兴趣。

  • 如果将消息写入dmesg / syslog,这已经可以了,但是我很想知道要查找的内容
  • 可以安装其他守护程序(例如用于硬盘驱动器的smartmontools)
  • Nagios / Icinga监视将是另一种方式
  • 并非所有要监视的计算机都具有IPMI

感兴趣的系统有Supermicro主板(X9SCM-F),关于HP N54L微型服务器,我只是好奇而已,但不必太在意。所有系统都运行Debian或Ubuntu Linux。


请描述服务器类型和品牌/型号,操作系统发行版本以及任何其他相关的硬件详细信息。
ewwhite 2014年

2
我什至不知道有报道……
Halfgaar 2014年

mcelog在监视系统日志的同时运行似乎是一种方法。
詹斯·埃拉特

Answers:


6

Linux内核支持的错误检测和校正(EDAC一些芯片组的)功能。在具有ECC的受支持系统上,可通过sysfs访问内存控制器的状态:

/sys/devices/system/edac/mc

该位置下的目录树应与您的硬件相对应,例如:

/sys/devices/system/edac/mc/mc0/csrow2/power
/sys/devices/system/edac/mc/mc0/csrow0/power
/sys/devices/system/edac/mc/mc0/dimm2/power
/sys/devices/system/edac/mc/mc0/dimm0/power
/sys/devices/system/edac/mc/mc1/power
...

根据您的硬件,您可能必须显式加载正确的edac驱动程序,请参阅:

find /lib/modules/$(uname -r) -name '*edac*'

edac-utils软件包提供了一个命令行前端和一个用于访问该数据的库,例如:

edac-util -rfull          
mc0:csrow0:mc#0memory#0:CE:0
mc0:csrow2:mc#0memory#2:CE:0
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0
mc1:noinfo:all:UE:0
mc1:noinfo:all:CE:0

您可以设置某种cron-job,该cron-job定期调用eac-util并将结果馈入监视系统,然后您可以在其中配置一些通知。

除此之外,跑步mcelog通常是个好主意。取决于系统,但是无法纠正/纠正的ECC错误也可能会报告为机器检查异常(MCE)。我的意思是,甚至由于温度升高而导致的短暂CPU节流也被报告为MCE。


9

mcelog将监视内存控制器并将内存错误事件报告给syslog,并且在某些配置中可以使坏的内存页面脱机。当然,这是通常用于监视机器检查异常和各种其他硬件错误的方法。

大多数Linux发行版都设置了将其作为守护程序运行的服务,例如EL 6:

chkconfig mcelog on
service mcelog start

Ubuntu不再支持。安装会出现错误。
DimiDak


是的,thanx我已经看到了,如果我没记错的话,它是关于ubuntu18的,但是它在Ubuntu 14上也不起作用。
DimiDak

@DimiDak这是一个不同的问题,与此处无关。如果您需要帮助,可以提出一个新问题。
迈克尔·汉普顿

提出问题的人说:“所有系统都运行Debian或Ubuntu”,您的答案对此不起作用。所以这很相关……
DimiDak

6

这取决于您的服务器硬件。白盒或Supermicro系统与Dell,HP或IBM的处理方式不同。

高端服务器的增值功能之一是具有一定级别的硬件/ OS集成。Nicer服务器将报告您在管理代理和/或带外管理解决方案(ILO,DRAC,IPMI)中正在寻找的内容。

您应该使用硬件平台固有的工具。

摘自运行Linux的HP ProLiant服务器和HP Management Agent:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

Trap-ID=6052
Advanced ECC Memory  Engaged

或更严重的

Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.

或最坏的情况...忽略错误6天,直到服务器由于RAM损坏而崩溃

0004 Repaired       22:21  12/01/2008 22:21  12/01/2008 0001
LOG: Corrected Memory Error threshold exceeded (Slot 1, Memory Module 1)

0007 Repaired       02:58  12/07/2008 02:58  12/07/2008 0001
LOG: POST Error: 201-Memory Error Single-bit error occured during 
memory initialization, 
Board 1, DIMM 1. Bank containing DIMM(s) has been disabled.

0008 Repaired       19:31  12/08/2009 19:31  12/08/2009 0001
LOG: ASR Detected by System ROM

这些已记录,加上SNMP陷阱和电子邮件已发送。

通常,您会在内核环形缓冲区中看到计算机检查异常,因此您可以检查dmesg或运行mcelog。在我使用不带IPMI的Supermicro齿轮的经验中,这并不能解决所有问题,而且我仍然遇到RAM错误贯穿裂缝并导致停机的问题。不幸的是,这导致了在系统部署之前过时的RAM老化策略

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.