Řešení 1:
mcelog
bude monitorovat paměťový řadič a hlásit chybové události paměti do syslog a v některých konfiguracích může odpojit špatné stránky paměti. To je samozřejmě navíc k obvyklému použití ke sledování výjimek kontroly stroje a řady dalších hardwarových chyb.
Většina linuxových distribucí má službu nastavenou tak, aby jej spouštěla jako démona, např. pro EL 6:
chkconfig mcelog on
service mcelog start
Řešení 2:
Linuxové jádro podporuje funkce detekce a opravy chyb (EDAC) některých čipových sad. Na podporovaném systému s ECC je stav vašeho paměťového řadiče přístupný přes sysfs:
/sys/devices/system/edac/mc
Strom adresářů pod těmito umístěními by měl odpovídat vašemu hardwaru, např.:
/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
...
V závislosti na vašem hardwaru možná budete muset explicitně načíst správný ovladač edac, viz:
find /lib/modules/$(uname -r) -name '*edac*'
edac-utils
balíček poskytuje rozhraní příkazového řádku a knihovnu pro přístup k těmto datům, např.:
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
Můžete nastavit nějaký druh cron-job, který pravidelně volá eac-util
a odešle výsledky do vašeho monitorovacího systému, kde pak můžete nakonfigurovat některá upozornění.
Kromě toho spuštění mcelog
je obecně dobrý nápad. Závisí na systému, ale neopravitelné/opravitelné chyby ECC jsou pravděpodobně hlášeny také jako výjimka kontroly stroje (MCE). Myslím tím, že i krátká období omezení CPU kvůli vyšší teplotě jsou hlášena jako MCE.
Řešení 3:
To závisí na hardwaru vašeho serveru. Whitebox nebo systém Supermicro to zvládnou jinak než Dell, HP nebo IBM...
Jednou z funkcí s přidanou hodnotou špičkových serverů je určitá úroveň integrace hardwaru a operačního systému. Lepší servery budou hlásit to, co hledáte, jako součást agentů pro správu a/nebo řešení správy mimo pásmo (ILO, DRAC, IPMI).
Měli byste používat nástroje nativní pro vaši hardwarovou platformu.
Výňatek ze serverů HP ProLiant se systémem Linux a agenty správy HP:
Trap-ID=6056
ECC Memory Correctable Errors detected.
a
Trap-ID=6052
Advanced ECC Memory Engaged
nebo závažnější
Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.
nebo nejhorší... Ignorování chyby po dobu 6 dnů, dokud se server nezhroutí kvůli špatné paměti 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
Tyto byly protokolovány a byly odeslány depeše SNMP a e-maily.
Obecně se ve vyrovnávací paměti jádra zobrazí Výjimky kontroly stroje, takže můžete zkontrolovat dmesg
nebo spusťte mcelog. Podle mých zkušeností s výbavou Supermicro bez IPMI to nestihlo všechno a stále mi chyby RAM proklouzly a způsobily výpadky. Bohužel to vedlo k archaickým zásadám vypalování RAM před nasazením systému.
Řešení 4:
rasdaemon
balíček byl vytvořen jako náhrada za edac-tools
a novější jádra dokonce nepodporují edac-tools
nebo mcelog
.
Aktualizace ovladačů linuxového jádra EDAC změnila způsob správy čítačů chyb paměti v uživatelském prostoru, takže edac-tools
a mcelog
jsou fakticky zastaralé.