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.