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

当装有ECC内存的Linux机器识别到内存故障时,如何得到通知? 我对可纠正和不可纠正的错误感兴趣。

  • 如果一条消息被写入到dmesg / syslog中,这已经很好了,但是我很想知道要查找什么
  • 安装额外的守护进程(如用于硬盘的smartmontools)是可以接受的
  • Nagios / Icinga监测将是另一种方式
  • 并非所有要监视的机器都具有IPMI

感兴趣的系统有超微板(X9SCM-F),关于惠普N54L微服务器,我只是好奇,但不在乎太多。 所有系统运行Debian或Ubuntu Linux。

    这取决于您的服务器硬件。 白盒或超微系统的处理方式与戴尔,惠普或IBM不同。

    高端服务器的增值function之一是硬件/操作系统集成水平。 更好的服务器将报告您正在寻找的pipe理代理和/或带外pipe理解决scheme(ILO,DRAC,IPMI)的一部分。

    您应该使用本地硬件平台的工具。

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

     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 

    这些被logging,加上SNMP陷阱和电子邮件被发送。

    通常情况下,您会在内核环形缓冲区中看到“机器检查exception”,因此您可以检查dmesg或运行mcelog 。 在我没有使用IPMI的Supermicro设备的经验中,这并没有抓住所有的东西,而且我仍然存在内存错误,并导致故障。 不幸的是,在系统部署之前,这导致了陈旧的RAM老化策略 。

    mcelog将监视内存控制器并将内存错误事件报告给syslog,并且在某些configuration中可以使不良内存页脱机 。 当然,除了通常用于监视机器检查exception和各种其他硬件错误之外,这也是。

    大多数Linux发行版都有一个服务,可以将其作为守护进程来运行,例如EL6:

     chkconfig mcelog on service mcelog start