XFS Falha na Verificação / Reparação

3

Eu tenho um servidor de banco de dados mysql em uma instância do EC2 com 3 unidades em uma matriz Raid 0. Esta manhã o servidor travou e depois de inspecionar os logs, notei um erro de limpeza de estrutura precisa (ou seja, código de erro do sistema 117). Com isso, tentei executar um xfs_check na unidade afetada, mas o seguinte é o que retornou:

xfs_repair: /dev/md0 contains a mounted filesystem

fatal error -- couldn't initialize XFS library

Eu tenho todas as ferramentas / pacotes necessários instalados, então eu verifiquei o syslog e ele retornou isto:

Filesystem "md0": XFS internal error xfs_da_do_buf(2) at line 2112 of file /build/buildd/linux-ec2-2.6.32/fs/xfs/xfs_da_btree.c.  Caller 0xffffffff81261bb5

Depois de tentar um xfs_repair, ainda vejo a mesma saída acima e a mesma entrada do syslog.

Como o problema é apenas em um diretório de banco de dados, existe uma maneira de corrigir os problemas mencionados ou fazer com que o mysql ignore o diretório do banco de dados para continuar em operação (isto é, excluir manualmente o banco de dados enquanto o diretório lib estiver intacto). Qualquer sugestão seria útil.

    
por Bryan 30.05.2011 / 00:20

1 resposta

2

desmonte o que estiver atualmente montado. xfs_repair é um pouco exigente sobre isso às vezes. lsof / mountedpartition para ver o que ainda pode estar mantendo essa partição aberta se você não conseguir desmontá-la.

Dependendo de como desligar, talvez seja necessário fazer -L para limpar os logs e, independentemente de sua preferência, use -P no xfs_repair - o xfs_repair geralmente é executado e fica preso e apenas fica lá, o - P permite continuar.

Se você quiser verificar o progresso, a partir de outra sessão de terminal, strace -p (pid de xfs_repair) e você pode ver se ainda está fazendo alguma coisa.

Eu não sei qual versão do xfsprogs / xfsdump você está executando, mas, veja se há uma atualização disponível para o seu sistema operacional - há uma série de atualizações recentes (últimos 8 meses) que abordam alguns dos Estouros de buffer ímpares. Ferramentas XFS estão atualmente em 3.1.5.

Você não poderá excluir diretórios seletivamente durante um reparo com muita facilidade - embora, essa mensagem de erro sugira que você verá alguma perda de dados ou localizará os arquivos em / lost + found. Dependendo de quão ruim a estrutura é, você pode encontrar pouca perda de dados. Se você realmente quisesse aprofundar-se, poderia propositalmente atravessar a meta-estrutura e esclarecer certas partes, mas acho que poderia ser extraordinariamente complexo.

Como alternativa, mkfs e restaure a partir de backups.

Na releitura, parece que o sistema de arquivos está montado, o que você pode fazer é desligar o mysql, mover o diretório do banco de dados inválido para fora do diretório mysql, reiniciar o mysql. O sistema de arquivos deve ser limpo em algum momento, mas, se o único problema é aquele diretório e você é capaz de montar o sistema de arquivos, você deve ser capaz de escrever / mover esse diretório para fora do caminho.

    
por 30.05.2011 / 06:42