Come posso essere informato degli errori ECC in Linux?


23

Come posso ricevere una notifica quando una macchina Linux dotata di memoria ECC riconosce un errore di memoria? Sono interessato a errori correggibili e non corretti.

  • se un messaggio è scritto su dmesg / the syslog, questo va già bene, ma mi piacerebbe sapere cosa cercare
  • l'installazione di demoni aggiuntivi (come smartmontools per hard disk) è accettabile
  • Il monitoraggio di Nagios / Icinga sarebbe un'altra strada da percorrere
  • non tutte le macchine da monitorare hanno IPMI

I sistemi di interesse hanno schede Supermicro (X9SCM-F), per quanto riguarda un microserver HP N54L, sono solo curiosità, ma non importa troppo. Tutti i sistemi eseguono Debian o Ubuntu Linux.


Descrivere il tipo di server e la marca / modello, la versione di distribuzione del sistema operativo e qualsiasi altro dettaglio hardware rilevante.
ewwhite,

2
Non sapevo nemmeno che fosse stato riferito ...
Halfgaar,

Correre mcelogmentre si controlla il syslog sembra la strada da percorrere.
Jens Erat,

Risposte:


6

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 controller di memoria è accessibile tramite sysfs:

/sys/devices/system/edac/mc

L'albero delle directory in 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 dell'hardware, potrebbe essere necessario caricare esplicitamente il driver edac corretto, vedere:

find /lib/modules/$(uname -r) -name '*edac*'

Il edac-utilspacchetto fornisce un frontend da 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

È possibile impostare una sorta di cron-job che chiama eac-utile inserisce periodicamente i risultati nel proprio sistema di monitoraggio, dove è quindi possibile configurare alcune notifiche.

Inoltre, correre mcelogè generalmente una buona idea. Dipende dal sistema, ma probabilmente anche errori ECC non correggibili / correggibili come eccezione di controllo macchina ( MCE ). Voglio dire, anche brevi periodi di limitazione della CPU dovuti a temperature più elevate sono riportati come MCE.


9

mcelogmonitorerà il controller di memoria e segnalerà eventi di errore di memoria al syslog, e in alcune configurazioni può pagine offline di memoria errata . Questo, naturalmente, oltre al suo uso abituale per monitorare le eccezioni di controllo della macchina e una varietà di altri errori hardware.

La maggior parte delle distribuzioni Linux ha un servizio impostato per eseguirlo come demone, ad esempio per EL 6:

chkconfig mcelog on
service mcelog start

Non più supportato da Ubuntu. L'installazione dà errori.
DimiDak,


Sì, grazie. L'ho visto, se non sbaglio parla di Ubuntu18 ma non funziona neanche su Ubuntu 14.
DimiDak,

@DimiDak Questo è un problema diverso e non rilevante qui. Puoi fare una nuova domanda a riguardo se hai bisogno di aiuto.
Michael Hampton

Il ragazzo che ha pubblicato la domanda dice "Tutti i sistemi eseguono Debian o Ubuntu" e la tua risposta non funziona. Quindi è abbastanza rilevante ...
DimiDak,

6

Questo dipende dall'hardware del server. Un whitebox o un sistema Supermicro gestiranno questo in modo diverso rispetto a un Dell, HP o IBM ...

Una delle funzionalità a valore aggiunto dei server di fascia alta è che esiste un livello di integrazione hardware / SO. Server più belli segnaleranno ciò che stai cercando come parte degli agenti di gestione e / o della soluzione di gestione fuori banda (ILO, DRAC, IPMI).

È necessario utilizzare gli strumenti nativi per la propria piattaforma hardware.

Estratto da un server HP ProLiant con Linux e agenti di gestione HP:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

e

Trap-ID=6052
Advanced ECC Memory  Engaged

o un più grave

Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.

o il peggio ... Ignorando un errore per 6 giorni fino a quando il server si arresta in modo anomalo 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.

In genere, vedrai Eccezioni controllo macchina nel buffer dell'anello del kernel, in modo da poter controllare dmesgo eseguire mcelog . Nelle mie esperienze con gli equipaggiamenti Supermicro senza IPMI, ciò non ha catturato tutto, e ho ancora avuto errori RAM che scivolavano attraverso le crepe e causavano interruzioni. Sfortunatamente, questo ha portato a criteri di burn-in RAM arcaici prima delle distribuzioni del sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.