Comment puis-je être averti des erreurs ECC sous Linux?

23

Comment puis-je être averti lorsqu'une machine Linux équipée de mémoire ECC reconnaît une défaillance de mémoire? Je suis intéressé par les erreurs corrigibles et non corrigibles.

  • si un message est écrit dans dmesg / le syslog, c'est déjà très bien, mais j'aimerais savoir quoi chercher
  • l'installation de démons supplémentaires (comme smartmontools pour les disques durs) est acceptable
  • La surveillance de Nagios / Icinga serait une autre voie à suivre
  • toutes les machines à surveiller n'ont pas IPMI

Les systèmes d'intérêt ont des cartes Supermicro (X9SCM-F), concernant un microserveur HP N54L, je suis juste curieux, mais je m'en fiche trop. Tous les systèmes exécutent Debian ou Ubuntu Linux.

Jens Erat
la source
Veuillez décrire le type et la marque / le modèle du serveur, la version de distribution du système d'exploitation et tout autre détail matériel pertinent.
ewwhite
2
Je ne savais même pas que cela avait été rapporté ...
Halfgaar
L'exécution mcelogtout en surveillant le syslog semble être la voie à suivre.
Jens Erat

Réponses:

6

Le noyau Linux prend en charge les fonctionnalités de détection et de correction d'erreurs ( EDAC ) de certains chipsets. Sur un système pris en charge avec ECC, l'état de votre contrôleur de mémoire est accessible via sysfs:

/sys/devices/system/edac/mc

L'arborescence des répertoires sous ces emplacements doit correspondre à votre matériel, par exemple:

/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
...

Selon votre matériel, vous devrez peut-être charger explicitement le bon pilote edac, cf.:

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

Le edac-utilspackage fournit une interface en ligne de commande et une bibliothèque pour accéder à ces données, par exemple:

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

Vous pouvez configurer une sorte de tâche cron qui appelle périodiquement eac-utilet alimente les résultats dans votre système de surveillance, où vous pouvez ensuite configurer certaines notifications.

En plus de cela, la course mcelogest généralement une bonne idée. Dépend du système, mais des erreurs ECC non corrigibles / corrigibles sont également signalées comme exception de vérification de la machine ( MCE ). Je veux dire, même de brèves périodes de limitation du processeur en raison d'une température plus élevée sont signalées comme MCE.

maxschlepzig
la source
9

mcelogsurveillera le contrôleur de mémoire et signalera les événements d'erreur de mémoire à syslog et, dans certaines configurations, peut déconnecter les pages de mauvaise mémoire . Ceci, bien sûr, s'ajoute à son utilisation habituelle pour surveiller les exceptions de vérification de la machine et diverses autres erreurs matérielles.

La plupart des distributions Linux ont un service configuré pour l'exécuter en tant que démon, par exemple pour EL 6:

chkconfig mcelog on
service mcelog start
Michael Hampton
la source
Plus supporté par Ubuntu. L'installation donne des erreurs.
DimiDak
Oui, merci, je l'ai vu, si je ne me trompe pas, cela parle d'ubuntu18 mais cela ne fonctionne pas non plus sur Ubuntu 14.
DimiDak
@DimiDak C'est un problème différent et non pertinent ici. Vous pouvez poser une nouvelle question à ce sujet si vous avez besoin d'aide.
Michael Hampton
Le gars qui a posté la question dit "Tous les systèmes exécutent Debian ou Ubuntu" et votre réponse ne fonctionne pas pour cela. C'est donc assez pertinent ...
DimiDak
6

Cela dépend du matériel de votre serveur. Une boîte blanche ou un système Supermicro traitera cela différemment d'un Dell, HP ou IBM ...

L'une des caractéristiques à valeur ajoutée des serveurs haut de gamme est qu'il existe un niveau d'intégration matériel / système d'exploitation. Des serveurs plus agréables indiqueront ce que vous recherchez dans le cadre des agents de gestion et / ou de la solution de gestion hors bande (ILO, DRAC, IPMI).

Vous devez utiliser les outils natifs de votre plate-forme matérielle.

Extrait d'un serveur HP ProLiant exécutant Linux et les agents de gestion HP:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

et

Trap-ID=6052
Advanced ECC Memory  Engaged

ou plus grave

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

ou le pire ... Ignorer une erreur pendant 6 jours jusqu'à ce que le serveur plante en raison d'une mauvaise 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

Ceux-ci ont été enregistrés, ainsi que des pièges SNMP et des e-mails ont été envoyés.

De manière générale, vous verrez les exceptions de vérification de la machine dans le tampon d'anneau du noyau, vous pouvez donc vérifier dmesgou exécuter mcelog . Dans mes expériences avec les engins Supermicro sans IPMI, cela n'a pas tout attrapé, et j'ai toujours eu des erreurs de RAM glissant à travers les fissures et provoquant des pannes. Malheureusement, cela a conduit à des politiques de rodage de la RAM archaïques avant les déploiements du système.

ewwhite
la source