Como ser notificado sobre problemas de RAID do mdadm?

4

Estou executando o Ubuntu 12.04 LTS. Ontem encontrei uma mensagem na minha caixa postal dizendo que meu servidor estava desligado. Eu continuei a reinicializar o sistema, mas ele não apareceu depois de muitos minutos, e eu não tinha um sistema KVM de hardware para ver o que o kernel estava imprimindo no terminal. Então eu reiniciei o sistema para uma imagem de resgate do Linux e vi que o RAID 1 do software estava fora de sincronia. O sistema de resgate também começou a reconstruir a matriz RAID.

Até o momento, não há evidências de que algum disco tenha erros de hardware. Status SMART parecem bons até agora.

Eu nunca recebi uma notificação por email do mdadm, mesmo que a notificação por e-mail tenha sido ativada em /etc/mdadm/mdadm.conf.

Este servidor também foi configurado para encaminhar todas as mensagens do syslog para um host de registro, então verifiquei meu host de registro. As partes relevantes são:

May 20 15:38:40 kernel: [    1.869825] md0: detected capacity change from 0 to 536858624
May 20 15:38:40 kernel: [    1.870687]  md0: unknown partition table
May 20 15:38:40 kernel: [    1.877412] md: bind
May 20 15:38:40 kernel: [    1.878337] md/raid1:md1: not clean -- starting background reconstruction
May 20 15:38:40 kernel: [    1.878376] md/raid1:md1: active with 2 out of 2 mirrors
May 20 15:38:40 kernel: [    1.878418] md1: detected capacity change from 0 to 3000052808704
May 20 15:38:40 kernel: [    1.878575] md: resync of RAID array md1
[snip]
May 20 15:52:33 kernel: Kernel logging (proc) stopped.
May 20 15:52:33 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="845" x-info="http://www.rsyslog.com"] exiting on signal 15.

Como você pode ver, o sistema (o normal, não o sistema de recuperação) já detectou que algo estava errado com a matriz RAID durante a inicialização do sistema. Então, pouco depois, algo (não eu) parou o sistema.

Então, minhas perguntas são:

  1. O que poderia fazer com que os discos fiquem subitamente fora de sincronia?
  2. Por que não fui notificado por e-mail?
  3. Por que o erro não foi registrado corretamente no syslog antes de parar o sistema? Será que o sistema tentou logar ao syslog, mas o fez depois de parar o daemon syslog? Se sim, o que posso fazer para evitar isso?
  4. O que posso fazer para descobrir o que aconteceu? Ou, se não há como eu agora descobrir o que aconteceu, como posso melhorar o registro e as notificações para que, da próxima vez, eu possa fazer um post-mortem melhor?

Minha pergunta é não sobre a prática correta de backup. Eu já sei que o RAID não é um backup, etc. Minha pergunta é apenas sobre notificações e diagnóstico.

    
por Hongli Lai 21.05.2013 / 11:39

2 respostas

1

What could cause the disks to suddenly become out of sync?

Pode ser qualquer falha de hardware ou software no caminho entre os discos da unidade e os dados na memória. O que poderia significar, mas não se limita a: cabeça de acionamento, controlador de acionamento, cabeça de conexão no cabo, o próprio cabo (quebra de fio interno), a porta na qual o cabo é conectado na unidade, a porta na placa-mãe ou placa filha , o chip controlador na placa-mãe ou placa-filha, ou até mesmo uma falha no software (em algum lugar).

História real: uma vez eu tive um espelho RAID que era esquisito, deixando o disco sem nenhum motivo. As unidades check-out fine, os pratos eram limpos (passes inteligentes de repetição transformou-se nada), e tudo funcionou bem - até que seria flake novamente, e novamente. Eu substituí o cabo SATA de US $ 3 e os problemas instantaneamente foram embora. Moral da história: há muito que pode dar errado, e você não pode sempre assumir que "está tudo bem" se você não verificar todos os componentes no caminho dos dados.

Why was I not notified by email?

A notificação por email só ocorre quando (a) monitora ativamente o array, ou (b) quando o array é interrogado.

Meu conselho é: você precisa ter o mdadm monitorando ativamente a matriz de unidades como um processo. Isso pode ser feito com algo semelhante (mas não exatamente como):

mdadm --monitor --scan --syslog

Você precisará ajustar a linha acima para sua instalação específica.

Why was the error not properly logged to syslog before halting the system? Could it be that the system tried to log to syslog, but did so after stopping the syslog daemon? If so what can I do to prevent that?

Poderia haver vários problemas que causaram a queda do registro.

Primeiro, há toda a questão de como o syslog funciona em geral; e enquanto muitos anos se passaram a torná-lo robusto e confiável, há certos casos extremos em que os dados podem não chegar ao disco. Este é um problema de design bem conhecido e um que foi abordado de forma ativa com o gerenciamento de serviços com estilo de supervisão (também conhecido como daemontools e sua turma). A solução era ignorar completamente o syslog e gravar a saída em um criador de logs que tivesse um descritor de arquivo aberto o tempo todo, de modo que nada fosse descartado e o registrador despejaria a saída no disco o mais rápido possível; embora não seja uma solução 100% eficaz, melhora significativamente as chances de ter eventos gravados na unidade antes que o kernel entre em pânico ou seja encerrado.

Em segundo lugar, existe a possibilidade de que o kernel tenha um pânico total, ou algum outro evento ocorrido que forçaria a máquina a um canto. Até mesmo hardware defeituoso pode causar um problema - eu vi máquinas com PSUs insuficientes causar desligamentos espontâneos no Windows 8. A substituição da PSU corrigiu o problema de desligamento permanentemente. Obviamente, o nothing que o kernel pode fazer irá proteger contra uma máquina que acabou de decidir "eu já tive o suficiente disso" e saiu para reiniciar a terra.

What can I do to find out what happened? Or, if there's no way for me now to find out what happened, how can I improve logging and notifications so that next time I can do a better post-mortem?

Existem várias abordagens:

  • Coloque o registro em uma partição separada. Embora isso não seja uma garantia de que você obterá logs intactos, ele ajuda a isolar problemas do sistema de arquivos, como disco-completo-não-gravar, corrupção que faz com que uma remontagem seja somente leitura, etc. Isso certamente ajuda naqueles casos específicos.

  • Veja as informações vitais do sistema de registro remoto. Novamente, isso não é uma garantia, mas ajudará se o último pacote puder "sair pela porta" antes que a reinicialização aconteça, e que o pacote tenha pistas importantes sobre o motivo da reinicialização.

  • Para serviços críticos específicos, procure substituir a saída para syslog por outra coisa, como o registro no estilo supervisão, em que um registrador dedicado intercepta a saída e a grava no disco o mais rápido possível. Isso aumenta a confiabilidade da saída, fazendo com que ela seja armazenada. Com um pouco de trabalho, pode-se coexistir lado a lado com outros acordos de gerenciamento de serviços.

por 11.02.2015 / 22:59
2

What could cause the disks to suddenly become out of sync?

Falha na unidade, falha do controlador, alguma outra falha de hardware. Algum problema de software obscuro.

Why was I not notified by email?

O Ubuntu tem um cronjob /etc/cron.d/mdadm que resulta na verificação dos volumes RAID uma vez por dia às 00:57. Se o seu sistema não estava tendo problemas, ou já havia falhado, então não havia como enviar uma mensagem.

Why was the error not properly logged to syslog before halting the system?

Bem, se as unidades estão falhando, não faz sentido tentar escrever para elas, já que qualquer outra gravação poderia estragar o que sobrou. Não sabendo a natureza exata de sua falha, pode ser que seu volume ou sistema de arquivos tenham sido somente leitura. Por padrão, o Ubuntu é configurado para mudar para um sistema de arquivos somente leitura se houver erros no volume raiz.

how can I improve logging and notifications so that next time I can do a better post-mortem?

Configurar o log para um host syslog remoto. Dessa forma, uma falha de armazenamento não significa que nada possa ser registrado.

    
por 21.05.2013 / 18:41