Recuperando partições danificadas

detalhes:

por Carlos E. Morimoto

Assim como no Windows, você nunca deve desligar o micro no botão ao rodar qualquer distribuição Linux.

Mas, acidentes acontecem. A energia elétrica acaba de vez em quando, alguns dos drivers de softmodems podem fazer o micro travar (estes drivers são proprietários, por isso não é possível corrigir bugs, como em outras partes do sistema; você depende unicamente da boa vontade do fabricante) e assim por diante.

Durante o boot, o sistema verifica as partições em busca de problemas, tentando resolver qualquer inconsistência no sistema de arquivos causado por um desligamento incorreto. Você pode perder alguns arquivos que ainda não tivessem sido salvos no HD, mas a idéia é que a verificação coloque todo o resto em ordem.

Para partições em ReiserFS é usado o reiserfsck, para partições em EXT2 ou EXT3 é usado (respectivamente) o fsck.ext2 ou o fsck.ext3 e para partições em XFS é usado o xfs_repair.

Mas, em alguns casos, o dano pode ser grande o suficiente para que não seja possível repará-lo automaticamente, fazendo com que o sistema simplesmente deixe de dar boot.

Não há motivo para pânico. Você pode dar boot pelo CD do Kurumin e usá-lo para reparar as partições danificadas.

Abra um terminal e vire root (su), lembre-se de que, ao rodar o Kurumin pelo CD, você pode definir a senha de root usando o comando “sudo passwd”. A partição a ser reparada precisa estar desmontada. Vou usar como exemplo a partição /dev/hda1.

Se for uma partição EXT3, use o comando:

# fsck.ext3 /dev/hda1

Ele vai começar a apontar os erros e perguntar se cada um deve ser corrigido. Normalmente você pode ir apenas respondendo “y” para tudo, mas caso existam dados realmente importantes na partição é melhor prestar mais atenção. Arquivos danificados ou fragmentos de arquivos que puderam ser recuperados vão para a pasta “lost+found” no diretório raiz da partição.

Você pode também adicionar o parâmetro “-f”, que força a verificação da partição, mesmo que o sistema de arquivos pareça não ter problemas:

# fsck.ext3 -f /dev/hda1

O fsck não é capaz de recuperar o sistema de arquivos em casos de problemas com o superbloco, o setor que contém informações essenciais, como o tipo, tamanho, status e informações sobre a estrutura do sistema de arquivos. Quando não encontra o superbloco, o fsck simplesmente falha miseravelmente, exibindo um “fatal error”, sem maiores explicações.

É difícil estimar quantas reinstalações já foram feitas, e qual foi o efeito negativo sobre a reputação do sistema durante sua história por causa deste simples problema, que é felizmente fácil de resolver.

Sempre que a partição é criada, são criados vários superblocos alternativos, que servem justamente de backups para casos de problemas com o primeiro. Você pode ver a lista de endereços usando o comando “mkfs.ext3 -n partição”, como em:

# mkfs.ext3 -n /dev/hda1

Ao usar o comando, nunca esqueça de incluir o “-n”, caso contrário ao invés de mostrar as informações, ele vai formatar a partição. No final do relatório você encontra:

Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Alternativamente, você pode usar também o comando “dumpe2fs /dev/hda1 | grep -i superblock”. O Testdisk (que vimos a pouco) também oferece uma opção para listar superblocos alternativos em partições EXT, que você acessa em “Advanced > Superblock”.

Chame novamente o comando “fsck.ext3″, adicionando a opção “-b”, seguida do endereço do superbloco que será usado. Caso eventualmente o primeiro resulte em erro, experimente o segundo, e assim por diante:

# fsck.ext3 -f -b 32768 /dev/hda2

Para partições EXT2, use o comando “fsck.ext2″, que suporta os mesmos parâmetros.

Numa partição ReiserFS, comece com o comando:

# reiserfsck –check /dev/hda1

Ele exibe um aviso: Do you want to run this program?[N/Yes] (note need to type Yes if you do):

Ou seja, você precisa digitar “Yes” para continuar, caso apenas dê Enter ele aborta a operação.

Ele vai verificar toda a estrutura do sistema de arquivos e indicar os erros encontrados. O próximo passo é usar a opção “–fix-fixable”:

# reiserfsck –fix-fixable /dev/hda1

Este segundo comando efetivamente corrige todos os erros simples, que possam ser corrigidos sem colocar em risco as demais estruturas do sistema de arquivos. Em 90% dos casos isto é suficiente.

Caso seja encontrado algum erro grave, ele vai abortar a operação. Estes erros mais graves podem ser corrigidos com o comando:

# reiserfsck –rebuild-tree /dev/hda1

Este comando vai reconstruir do zero todas as estruturas do sistema de arquivos, vasculhando todos os arquivos armazenados. Esta operação pode demorar bastante, de acordo com o tamanho e quantidade de arquivos na partição. Nunca interrompa a reconstrução, caso contrário você não vai conseguir acessar nada dentro da partição até que recomece e realmente termine a operação.

O “–rebuild-tree” vai realmente corrigir qualquer tipo de erro no sistema de arquivos. Ele só não vai resolver o problema caso realmente existe algum problema físico, como, por exemplo, um grande número de setores defeituosos no HD.

Finalmente, caso você esteja usando uma partição formatada em XFS, comece com o:

# xfs_check /dev/hda1

Ele vai indicar os problemas encontrados. Para realmente corrigi-los, rode o:

# xfs_repair /dev/hda1

Assim como no caso do reiserfsck, todo o processo é automático. Ao contrário do EXT2, tanto o ReiserFS quanto o XFS são sistemas de arquivos muito complexos, por isso qualquer intervenção manual só aumentaria a possibilidade de destruir tudo.

Mas, ambos incluem algumas opções avançadas, que podem ser especificadas no comando. Você pode dar uma olhada dentro dos manuais: “man reiserfsck” ou “man xfs_repair”.

Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comentários

Ainda não há comentários.

Escreva um Comentário

(obrigatório)

(obrigatório)


Get Adobe Flash playerPlugin by wpburn.com wordpress themes