当装有ECC内存的Linux机器识别到内存故障时,如何得到通知? 我对可纠正和不可纠正的错误感兴趣。
感兴趣的系统有超微板(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