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.