Como sou notificado de erros de ECC no Linux?

23

Como sou notificado quando uma máquina Linux equipada com memória ECC reconhece uma falha de memória? Estou interessado em erros corrigíveis e incorrigíveis.

  • se uma mensagem for escrita em dmesg / the syslog, isso já está bom, mas eu adoraria saber o que procurar
  • a instalação de daemons adicionais (como smartmontools para discos rígidos) é aceitável
  • O monitoramento de Nagios / Icinga seria outro caminho a percorrer
  • nem todas as máquinas a serem monitoradas possuem IPMI

Os sistemas de interesse têm placas Supermicro (X9SCM-F), no que diz respeito a um microserver HP N54L. Estou apenas curioso, mas não me importo muito. Todos os sistemas rodam Debian ou Ubuntu Linux.

Jens Erat
fonte
Descreva o tipo e a marca / modelo do servidor, a versão de distribuição do SO e quaisquer outros detalhes relevantes de hardware.
ewwhite
2
Eu nem sabia que foi relatado ...
Halfgaar
Executar mcelogenquanto monitora o syslog parece ser o caminho a percorrer.
Jens Erat

Respostas:

6

O kernel do Linux suporta os recursos de detecção e correção de erros ( EDAC ) de alguns chipsets. Em um sistema suportado com ECC, o status do seu controlador de memória é acessível via sysfs:

/sys/devices/system/edac/mc

A árvore de diretórios nesses locais deve corresponder ao seu hardware, por exemplo:

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

Dependendo do seu hardware, pode ser necessário carregar explicitamente o driver edac correto, cf .:

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

O edac-utilspacote fornece uma interface de linha de comando e uma biblioteca para acessar esses dados, por exemplo:

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

Você pode configurar algum tipo de tarefa cron que periodicamente chama eac-utile alimenta os resultados em seu sistema de monitoramento, onde é possível configurar algumas notificações.

Além disso, correr mceloggeralmente é uma boa ideia. Depende do sistema, mas os erros ECC incorrigíveis / corrigíveis provavelmente também são relatados como exceção de verificação da máquina ( MCE ). Quero dizer, mesmo breves períodos de otimização da CPU devido a temperaturas mais altas são relatados como MCE.

maxschlepzig
fonte
9

mcelogmonitorará o controlador de memória e reportará eventos de erro de memória para o syslog e, em algumas configurações, pode offline páginas de memória ruim . Isso é claro, além do uso usual para monitorar exceções de verificação da máquina e uma variedade de outros erros de hardware.

A maioria das distribuições Linux possui um serviço configurado para executá-lo como um daemon, por exemplo, para o EL 6:

chkconfig mcelog on
service mcelog start
Michael Hampton
fonte
Não é mais suportado pelo Ubuntu. A instalação apresenta erros.
DimiDak 19/02
Sim, obrigado, eu já vi isso, se não me engano, ele fala sobre o ubuntu18, mas também não funciona no Ubuntu 14.
DimiDak 19/02
@DimiDak Essa é uma questão diferente e não relevante aqui. Você pode fazer uma nova pergunta se precisar de ajuda.
Michael Hampton
O cara que postou a pergunta diz "Todos os sistemas executam Debian ou Ubuntu" e sua resposta não funciona. Portanto, é bastante relevante ...
DimiDak 19/02
6

Isso depende do hardware do servidor. Uma caixa branca ou um sistema Supermicro lidará com isso de maneira diferente da Dell, HP ou IBM ...

Um dos recursos de valor agregado dos servidores de ponta é que há um nível de integração de hardware / sistema operacional. Os servidores mais agradáveis ​​reportarão o que você procura como parte dos agentes de gerenciamento e / ou da solução de gerenciamento fora de banda (ILO, DRAC, IPMI).

Você deve usar as ferramentas nativas da sua plataforma de hardware.

Trecho de um servidor HP ProLiant executando o Linux e os agentes de gerenciamento HP:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

e

Trap-ID=6052
Advanced ECC Memory  Engaged

ou um mais grave

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

ou o pior ... Ignorando um erro por 6 dias até o servidor travar devido à falta de 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

Eles foram registrados, além de traps SNMP e e-mails enviados.

Genericamente, você verá Exceções de verificação de máquina no buffer de anel do kernel, para poder verificar dmesgou executar o mcelog . Nas minhas experiências com o equipamento Supermicro sem IPMI, isso não pegou tudo, e eu ainda tinha erros de RAM que escapavam pelas rachaduras e causavam interrupções. Infelizmente, isso levou a políticas arcaicas de queima de RAM antes das implantações do sistema.

ewwhite
fonte