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.
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.
Les fonctions le noyau Linux prend en charge la détection et la correction des 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
...
En fonction de votre matériel, vous devrez peut-être charger explicitement le bon pilote edac, cf.:
find /lib/modules/$(uname -r) -name '*edac*'
Le edac-utils
package fournit une interface de 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-util
et introduit les résultats dans votre système de surveillance, où vous pouvez ensuite configurer certaines notifications.
En plus de cela, exécuter mcelog
est généralement une bonne idée. Dépend du système, mais des erreurs ECC non corrigibles/corrigibles sont probablement signalées comme exception de vérification de la machine ( MCE ), également. 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.
mcelog
surveillera le contrôleur de mémoire et signalera les événements d'erreur de mémoire dans syslog, et dans certaines configurations, pages de mémoire hors ligne défectueuses . 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
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 des exceptions de vérification de la machine dans le tampon d'anneau du noyau, vous pouvez donc vérifier dmesg
ou exécuter mcelog . Dans mes expériences avec les engins Supermicro sans IPMI, cela n'a pas tout attrapé, et j'avais encore des erreurs RAM glissent à travers les fissures et provoquent des pannes. Malheureusement, cela a conduit à archaïque = RAM politiques de rodage avant les déploiements du système.
Le package rasdaemon
a été créé en remplacement de edac-tools
, et les noyaux plus récents ne prennent même pas en charge edac-tools
ou mcelog
.
Une mise à jour des pilotes du noyau EDAC linux a changé la façon dont les compteurs d'erreurs de mémoire étaient gérés dans l'espace utilisateur, donc edac-tools
et mcelog
sont effectivement obsolètes.
Comme mentionné par une autre affiche, mcelog
est obsolète et effectivement remplacé par rasdaemon
. J'ai fait un writeup sur la façon de l'installer et de le configurer sur de nombreuses distributions Linux, y compris des instructions pour configurer correctement les étiquettes DIMM.