当配备 ECC 内存的 Linux 机器识别到内存故障时,我如何收到通知?我对可纠正和不可纠正的错误都感兴趣。
- 如果将消息写入 dmesg/syslog,这已经很好了,但我很想知道要查找什么
- 可以安装其他守护进程(如硬盘的 smartmontools)
- Nagios/Icinga 监控是另一种方式
- 并非所有要监控的机器都具有 IPMI
感兴趣的系统有 Supermicro 主板 (X9SCM-F),关于 HP N54L Microserver,我只是好奇,但不太在意。所有系统都运行 Debian 或 Ubuntu Linux。
答案1
这Linux 内核支持错误检测和纠正(欧共体数字咨询委员会) 某些芯片组的功能。在支持的系统上椭圆曲线您可以通过 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,定期调用eac-util
并将结果提供给您的监控系统,然后您可以在其中配置一些通知。
除此之外,跑步mcelog
通常是一个好主意。取决于系统,但不可纠正/可纠正的 ECC 错误可能会被报告为机器检查异常(麦考林) 也是如此。我的意思是,即使由于温度较高而导致的短暂 CPU 节流也会被报告为 MCE。
答案2
正如另一位发帖者提到的那样,mcelog
它已被弃用并被有效取代rasdaemon
。我做了一个写上去关于如何在多个 Linux 发行版上安装和配置它,包括正确设置 DIMM 标签的说明。
答案3
答案4
这取决于您的服务器硬件。白盒或 Supermicro 系统处理这个问题的方式与戴尔、惠普或 IBM 不同...
高端服务器的增值功能之一是具有一定程度的硬件/操作系统集成。更优质的服务器会将您正在寻找的内容作为管理代理和/或带外管理解决方案(ILO、DRAC、IPMI)的一部分进行报告。
您应该使用适合您的硬件平台的工具。
摘自运行 Linux 和 HP 管理代理的 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
这些都已被记录,另外还发送了 SNMP 陷阱和电子邮件。
一般来说,你会在内核环形缓冲区中看到机器检查异常,因此你可以检查dmesg
或运行麦克洛格在我使用没有 IPMI 的 Supermicro 设备的经验中,它并没有捕捉到所有的东西,我仍然会遇到 RAM 错误并导致停机。不幸的是,这导致了过时的 RAM 老化政策在系统部署之前。