Linux

如何在 Linux 中收到 ECC 錯誤通知?

  • March 14, 2020

當配備 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。

引用自:https://serverfault.com/questions/643542