Análise de falhas do Ubuntu 12.04 - dados binários estranhos em todos os arquivos abertos no momento da falha

4

Algumas horas atrás, tivemos uma falha no sistema no Ubuntu 12.04. Verificamos todos os arquivos de log e não há nada de suspeito para culpar.

O último material que foi registrado foi alguma atividade dovecot. Não há mensagens de kernel panic. Nada.

É um novo servidor (novo hardware) que estamos testando antes da produção. E porque é novo, eu suspeito que o problema pode ser devido a algum hardware defeituoso.

Já rodamos o memtester sem nenhum problema detectado. Ficarei feliz em ouvir de outras ferramentas de teste de hardware (a máquina tem SSD).

De qualquer forma, o que eu queria te perguntar é diferente. O estranho é que em cada arquivo aberto no momento da falha, encontramos a próxima sequência de símbolos que foi escrita neles: "@ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ...".

Por exemplo, no arquivo de log do syslog nós recebemos:

Apr 16 15:53:56 odyssey dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<info>, method=PLAIN, rip=46.29.255.73, lip=5.9.58.177
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ [these continues for about 1000 chars...] ^@^@^@^@Apr 16 15:55:12 odyssey kernel: imklog 5.8.6, log source = /proc/kmsg started.

Temos todos esses símbolos em todos os arquivos abertos. Estes incluem: syslog, mail.log, kern.log, ... Mas também em alguns logs que são gerados por scripts php executados em CRONs de contas de usuário (não raiz).

Então, alguma ideia de por que todos os arquivos abertos receberam esses caracteres durante a falha? Isso é muito ruim, já que a falha corrompeu muitos arquivos (nem sabemos quais outros podem ser afetados). Suspeitamos que todos os arquivos abertos (no modo de gravação talvez) no momento da falha tenham todos esses símbolos inseridos. Por que isso?

BTW [caso isso ajude], o sistema reinicializou automaticamente após o travamento, mas o Apache não iniciou. Não havia rastreios em / var / apache2 / * log porque o apache não foi iniciado. Depois de executar um "serviço apache2 start", ele foi iniciado sem problemas. Além disso, reiniciamos a máquina manualmente e o Apache também iniciou a reinicialização. Mas não começou após o acidente e nenhum erro foi relatado.

Obrigado pessoal!

    
por landabaso 16.04.2014 / 18:41

1 resposta

0

Esses ^@ são quase certamente zeros binários. Ou seja, xxd corruptfile | tail -3 provavelmente emitirá algo como:

#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

A gravação foi sinalizada para o kernel, mas o conteúdo nunca foi liberado para o disco. Portanto, o arquivo foi estendido, em antecipação a uma gravação, portanto, o arquivo é inadvertidamente esparso.

Isso é especialmente provável se você não estiver usando um sistema de arquivos de registro no diário, pois um diário deve fazer com que a gravação seja revertida se não for concluída corretamente (como não foi, devido a o acidente).

    
por 05.07.2018 / 21:38