Após não conseguir que o GlusterFS se comportasse corretamente, decidi mover minha configuração para o NFS, com um mestre ao vivo e um espelho sincronizados a cada hora para fornecer um grau de failover no caso de o servidor principal ficar inativo.
Recentemente, estávamos realizando manutenção no servidor fornecendo o espelho e descobrimos que estávamos tendo problemas semelhantes com a corrupção de dados no NFS nesse servidor.
Depois de muita depuração das possíveis causas da corrupção, nós eventualmente rastreamos a transferência de hardware para a interface de rede, depois percebi que também ocasionalmente recebíamos Disconnecting: Packet corrupt
de erros com pacotes grandes em SSH.
Analisando as possíveis causas dos erros de SSH, encontrei o seguinte Unix & Questão do Linux: packet_write_wait Tubulação quebrada mesmo saindo em alta velocidade?
Algumas das discussões neste tópico sugeriram que um driver de interface de rede com bugs poderia levar à corrupção de pacotes quando a segmentação e a soma de verificação rx / tx fossem passadas para a interface.
Depois de desativar o rx / tx e o descarregamento de segmentação (seguindo as instruções na postagem do blog a seguir: Como resolver problemas de corrupção do pacote de desconexão ssh ) e testar o servidor sob carga de rede pesada, descobri que os erros de SSH e a corrupção de dados no NFS desapareceram.
Como não tenho mais o GlusterFS configurado nos servidores, não posso verificar se essa foi a causa da corrupção de dados que tivemos. No entanto, considerando que o problema persistiu em um dos servidores depois que nos mudamos para o NFS, é provável que isso tenha sido a causa de nossos problemas.
Como uma nota secundária, o driver da interface de rede estava usando o driver e1000e
. Posteriormente, encontrei a seguinte discussão sobre o rastreador de bugs do RHEL: Bug 504811 - e1000 silenciosamente corrompendo dados , o que sugere que a corrupção de pacotes é possível como resultado do descarregamento de hardware para uma interface de rede, como certos cartões usando o driver e1000e
.