当配备 ECC 内存的 Linux 机器识别出内存故障时,我如何得到通知?我对可纠正和不可纠正的错误都感兴趣。
感兴趣的系统有 Supermicro 板 (X9SCM-F),关于 HP N54L 微服务器我只是好奇,但不要太在意。所有系统都运行 Debian 或 Ubuntu Linux。
Mic*_*ton 10
mcelog将监控内存控制器并向系统日志报告内存错误事件,并且在某些配置中可以脱机坏内存页面。当然,除了它通常用于监视机器检查异常和各种其他硬件错误之外,这当然是额外的。
大多数 Linux 发行版都设置了一个服务来将其作为守护程序运行,例如对于 EL 6:
chkconfig mcelog on
service mcelog start
Run Code Online (Sandbox Code Playgroud)
的Linux内核支持的错误检测和校正(EDAC一些芯片组的)功能。在支持ECC的系统上,可以通过 sysfs 访问内存控制器的状态:
/sys/devices/system/edac/mc
Run Code Online (Sandbox Code Playgroud)
该位置下的目录树应对应于您的硬件,例如:
/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
...
Run Code Online (Sandbox Code Playgroud)
根据您的硬件,您可能必须明确加载正确的 edac 驱动程序,参见:
find /lib/modules/$(uname -r) -name '*edac*'
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
您可以设置某种定期调用eac-util并将结果提供给您的监控系统的 cron 作业,然后您可以在其中配置一些通知。
除此之外,跑步mcelog通常是一个好主意。取决于系统,但不可纠正/可纠正的 ECC 错误也可能报告为机器检查异常 ( MCE )。我的意思是,即使由于温度升高而导致 CPU 节流的短暂时间也会报告为 MCE。
这取决于您的服务器硬件。白盒或 Supermicro 系统处理此问题的方式与戴尔、惠普或 IBM 不同……
高端服务器的增值功能之一是硬件/操作系统集成水平。更好的服务器将报告您要查找的内容,作为管理代理和/或带外管理解决方案(ILO、DRAC、IPMI)的一部分。
您应该使用硬件平台原生的工具。
摘自运行 Linux 和 HP 管理代理的 HP ProLiant 服务器:
Trap-ID=6056
ECC Memory Correctable Errors detected.
Run Code Online (Sandbox Code Playgroud)
和
Trap-ID=6052
Advanced ECC Memory Engaged
Run Code Online (Sandbox Code Playgroud)
或更严重的
Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.
Run Code Online (Sandbox Code Playgroud)
或者最坏的情况...忽略错误 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
Run Code Online (Sandbox Code Playgroud)
这些都被记录下来,此外还发送了 SNMP 陷阱和电子邮件。
通常,您会在内核环形缓冲区中看到 Machine Check Exceptions,因此您可以检查dmesg或运行mcelog。在我使用没有 IPMI 的 Supermicro 设备的经验中,这并没有解决所有问题,而且我仍然有 RAM 错误从裂缝中溜走并导致中断。不幸的是,这导致了在系统部署之前过时的 RAM 老化策略。
该rasdaemon包被创造作为替代edac-tools,而新的内核甚至不支持edac-tools或mcelog。
在EDAC Linux内核驱动程序的更新改变了内存错误计数器是如何在用户空间的管理,所以edac-tools和mcelog有效地弃用。
| 归档时间: |
|
| 查看次数: |
33083 次 |
| 最近记录: |