Solución 1:
mcelog
monitoreará el controlador de memoria e informará eventos de error de memoria a syslog, y en algunas configuraciones puede desconectar páginas de memoria incorrecta. Esto es, por supuesto, además de su uso habitual para monitorear las excepciones de verificación de la máquina y una variedad de otros errores de hardware.
La mayoría de las distribuciones de Linux tienen un servicio configurado para ejecutarlo como un demonio, p. para EL 6:
chkconfig mcelog on
service mcelog start
Solución 2:
El kernel de Linux es compatible con las funciones de detección y corrección de errores (EDAC) de algunos conjuntos de chips. En un sistema compatible con ECC, se puede acceder al estado de su controlador de memoria a través de sysfs:
/sys/devices/system/edac/mc
El árbol de directorios debajo de esas ubicaciones debe corresponder a su hardware, por ejemplo:
/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
...
Dependiendo de su hardware, es posible que deba cargar explícitamente el controlador edac correcto, cf.:
find /lib/modules/$(uname -r) -name '*edac*'
El edac-utils
El paquete proporciona una interfaz de línea de comandos y una biblioteca para acceder a esos datos, por ejemplo:
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
Puede configurar algún tipo de trabajo cron que llame periódicamente a eac-util
y envía los resultados a su sistema de monitoreo, donde luego puede configurar algunas notificaciones.
Además de eso, ejecutar mcelog
generalmente es una buena idea. Depende del sistema, pero es probable que los errores de ECC corregibles/no corregibles también se informen como excepción de verificación de la máquina (MCE). Es decir, incluso los períodos breves de aceleración de la CPU debido a una temperatura más alta se informan como MCE.
Solución 3:
Esto depende del hardware de su servidor. Un sistema de caja blanca o Supermicro manejará esto de manera diferente a Dell, HP o IBM...
Una de las características de valor agregado de los servidores de gama alta es que existe un nivel de integración de hardware/SO. Los servidores más agradables informarán lo que está buscando como parte de los agentes de administración y/o la solución de administración fuera de banda (ILO, DRAC, IPMI).
Debe usar las herramientas nativas de su plataforma de hardware.
Extracto de un servidor HP ProLiant que ejecuta Linux y los agentes de gestión de HP:
Trap-ID=6056
ECC Memory Correctable Errors detected.
y
Trap-ID=6052
Advanced ECC Memory Engaged
o uno más severo
Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.
o lo peor... Ignorar un error durante 6 días hasta que el servidor falla debido a una mala memoria 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
Estos se registraron, además de que se enviaron trampas SNMP y correos electrónicos.
En general, verá Excepciones de verificación de máquina en el búfer de anillo del núcleo, por lo que puede verificar dmesg
o ejecute mcelog. En mis experiencias con el equipo Supermicro sin IPMI, eso no captó todo, y todavía tenía errores de RAM que se escapaban y causaban interrupciones. Desafortunadamente, esto condujo a políticas arcaicas de quemado de RAM antes de las implementaciones del sistema.
Solución 4:
El rasdaemon
el paquete se creó como reemplazo de edac-tools
, y los núcleos más nuevos ni siquiera son compatibles con edac-tools
o mcelog
.
Una actualización de los controladores del kernel de Linux de EDAC cambió la forma en que se administraban los contadores de errores de memoria en el espacio de usuario, por lo que edac-tools
y mcelog
están efectivamente en desuso.