Maneira correta de lidar com sistemas de arquivos XFS corrompidos

18

Recentemente, tive um sistema de arquivos XFS corrompido devido a um powerfail. (Sistema CentOS 7). O sistema não inicializou corretamente.

Eu inicializei a partir de um CD de resgate e tentei xfs_repair, ele me disse para montar a partição para lidar com o log.

Montei a partição e fiz um lspara verificar se sim, parece estar lá. Desmontei a partição e tentei xfs_repairnovamente e recebi a mesma mensagem.

O que devo fazer nesta situação? Há algo de errado com o meu cd de resgate (System Rescue CD, versão 4.7.1)? Existe algum outro procedimento que eu deveria ter usado?

Acabei restaurando o sistema a partir de backups (neste caso, foi rápido e fácil), mas gostaria de saber o que fazer no futuro.

Michael Kohne
fonte

Respostas:

19

Se você estiver tentando executar o xfs_repair , recebendo a mensagem de erro que sugere a montagem do sistema de arquivos para reproduzir o log e depois de continuar recebendo a mesma mensagem de erro, talvez seja necessário executar um reparo forçado (usando o -Lsinalizador com xfs_repair). Esta opção deve ser o último recurso.

Por exemplo, usarei um caso em que tive uma partição raiz corrompida na minha instalação do CentOS 7. Ao tentar montar a partição, recebi continuamente a mensagem de erro abaixo:

mount: mount / dev / mapper / centos-root em / mnt / centos-root falhou: A estrutura precisa de limpeza

Infelizmente, forçar um reparo envolveria zerar (destruir) o log antes de tentar um reparo. Ao usar esse método, existe o potencial de acabar com mais dados corrompidos do que o inicialmente previsto; no entanto, podemos usar as ferramentas xfs apropriadas para ver que tipo de dano pode ser causado antes de fazer alterações permanentes.

Usando xfs_metadump e xfs_mdrestore , você pode criar uma imagem de metadados da partição afetada e executar o reparo forçado na imagem em vez da própria partição. Os benefícios disso são a capacidade de ver os danos que vêm com um reparo forçado antes de executá-lo na partição.

Para fazer isso, você precisará de um disco rígido externo ou USB de tamanho decente. Comece montando a unidade USB - meu USB foi localizado em /dev/sdb1, o seu pode ter um nome diferente.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Depois de montada, execute xfs_metadumppara criar uma cópia dos metadados da partição para o USB - novamente, a partição afetada pode ser diferente. Nesse caso, eu tinha uma partição raiz corrompida localizada em /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Em seguida, você desejará restaurar os metadados em uma imagem para que possamos executar um reparo e medir o dano.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Descobri que no modo de recuperação xfs_mdrestorenão está disponível e, em vez disso, você precisa estar no modo de recuperação de um CD ao vivo do CentOS.

Por fim, podemos executar o reparo na imagem:

xfs_repair -L /mnt/usb/centos-root.img

Após a conclusão do reparo e você ter avaliado a saída e os possíveis danos, é possível determinar se deseja executar o reparo na partição.

Para executar o reparo na partição, basta executar:

xfs_repair -L /dev/mapper/centos-root

Não esqueça de verificar também as outras partições. Após os reparos, reinicie o sistema e você poderá inicializar com êxito.

Lembre-se de que a -Lbandeira deve ser usada como último recurso, onde não há outras opções possíveis para reparar.

Descobri que esses artigos on-line ajudavam:

brendonofficial
fonte
OK, então -L é o último recurso, e estas são EXCELENTES instruções sobre como ver o quão ruim será se usarmos -L. Que outras opções tenho aquém de usar -L?
Michael Kohne
11
@MichaelKohne Restaurando do backup, é claro. Você não deve chegar nem perto desse nível do inferno, a menos que não tenha backups.
Michael Hampton
11
@ MichaelHampton - OK, justo o suficiente. Mas acho que NUNCA perdi um sistema de arquivos como esse para erros ext4 no powerfail - o xfs é menos resistente? Ou eu tive realmente muito azar desta vez?
Michael Kohne
@ MichaelKohne Eu acho que você ficou extraordinariamente azarado. O XFS é um sistema de arquivos bastante confiável.
Michael Hampton
3
costumávamos simplesmente fazer isso a partir do initrd. que maravilhoso "progresso" fizemos.
Florian Heigl
1

Eu tive esse erro quando o centos 7 parou de funcionar dentro de uma máquina virtual kvm:

corrupção de metadados detectada no xfs ...

quando eu uso o log com “journalctl -xe”, encontrei um erro ao montar:

/ dev / mapper / root / sysroot

Eu resolvo isso usando:

xfs_repair / dev / mapper / root

Em seguida, o sistema conclui as sete fases e reinicia usando

./desligar

E então a máquina virtual centos 7 funciona bem…

Saudações

Nota: talvez você tenha / dev / mapper / root com outro nome, observe o seu log de erros com journalctl -xe para encontrar o nome da sua unidade mal montada

davidleosam
fonte