Soluzione 1:
mcelog
monitorerà il controller di memoria e riporterà gli eventi di errore di memoria a syslog e in alcune configurazioni può offline pagine di memoria danneggiate. Questo è, ovviamente, in aggiunta al suo normale utilizzo per monitorare le eccezioni del controllo della macchina e una varietà di altri errori hardware.
La maggior parte delle distribuzioni Linux ha un servizio configurato per eseguirlo come demone, ad es. per EL 6:
chkconfig mcelog on
service mcelog start
Soluzione 2:
Il kernel Linux supporta le funzionalità di rilevamento e correzione degli errori (EDAC) di alcuni chipset. Su un sistema supportato con ECC lo stato del tuo controller di memoria è accessibile tramite sysfs:
/sys/devices/system/edac/mc
L'albero delle directory sotto quelle posizioni dovrebbe corrispondere al tuo hardware, ad esempio:
/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
...
A seconda del tuo hardware, potresti dover caricare esplicitamente il driver edac corretto, vedi:
find /lib/modules/$(uname -r) -name '*edac*'
Il edac-utils
fornisce un'interfaccia a riga di comando e una libreria per l'accesso a tali dati, ad esempio:
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
Puoi impostare una sorta di cron-job che periodicamente chiama eac-util
e inserisce i risultati nel tuo sistema di monitoraggio, dove puoi quindi configurare alcune notifiche.
Inoltre, eseguendo mcelog
è generalmente una buona idea. Dipende dal sistema, ma è probabile che anche gli errori ECC non correggibili/correggibili vengano segnalati come eccezioni di controllo macchina (MCE). Voglio dire, anche brevi periodi di throttling della CPU a causa di temperature più elevate vengono segnalati come MCE.
Soluzione 3:
Questo dipende dall'hardware del tuo server. Un sistema whitebox o Supermicro lo gestirà in modo diverso rispetto a Dell, HP o IBM...
Una delle funzionalità a valore aggiunto dei server di fascia alta è che esiste un livello di integrazione hardware/sistema operativo. I server migliori segnaleranno ciò che stai cercando come parte degli agenti di gestione e/o della soluzione di gestione fuori banda (ILO, DRAC, IPMI).
Dovresti utilizzare gli strumenti nativi della tua piattaforma hardware.
Estratto da un server HP ProLiant che esegue Linux e gli agenti di gestione HP:
Trap-ID=6056
ECC Memory Correctable Errors detected.
e
Trap-ID=6052
Advanced ECC Memory Engaged
o più grave
Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.
o il peggio... Ignorare un errore per 6 giorni finché il server non va in crash a causa di RAM difettosa
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
Questi sono stati registrati, oltre a trap SNMP ed e-mail inviate.
Genericamente, vedrai le eccezioni del controllo della macchina nel ring buffer del kernel, quindi puoi controllare dmesg
o eseguire mcelog. Nelle mie esperienze con l'attrezzatura Supermicro senza IPMI, ciò non ha rilevato tutto e ho ancora avuto errori di RAM che scivolavano attraverso le fessure e causavano interruzioni. Sfortunatamente, ciò ha portato a politiche di burn-in della RAM arcaiche prima dell'implementazione del sistema.
Soluzione 4:
Il rasdaemon
il pacchetto è stato creato in sostituzione di edac-tools
e i kernel più recenti non supportano nemmeno edac-tools
o mcelog
.
Un aggiornamento ai driver del kernel Linux EDAC ha cambiato il modo in cui i contatori degli errori di memoria sono stati gestiti nello spazio utente, quindi edac-tools
e mcelog
sono effettivamente deprecati.