Linux
如何在 Linux 中收到 ECC 錯誤通知?
當配備 ECC 記憶體的 Linux 機器辨識出記憶體故障時,我如何獲得通知?我對可糾正和不可糾正的錯誤都感興趣。
- 如果將消息寫入 dmesg/syslog,這已經很好了,但我很想知道要查找什麼
- 安裝額外的守護程序(如用於硬碟的 smartmontools)是可以接受的
- Nagios/Icinga 監控將是另一種方式
- 並非所有要監控的機器都有 IPMI
感興趣的系統有 Supermicro 板 (X9SCM-F),關於 HP N54L 微型伺服器,我只是好奇,但不要太在意。所有系統都執行 Debian 或 Ubuntu Linux。
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 定期呼叫
eac-util
並將結果提供給您的監控系統,然後您可以在其中配置一些通知。除此之外,跑步
mcelog
通常是一個好主意。取決於系統,但不可糾正/可糾正的 ECC 錯誤也可能報告為機器檢查異常 ( MCE )。我的意思是,即使是由於溫度升高而導致的短暫 CPU 節流也被報告為 MCE。