Como recuperar um sistema de arquivos ext2 do Linux

por vchoi — publicado 29/10/2001 01h00, última modificação 13/08/2003 11h05
Quando o computador é desligado sem se executar o correto procedimento, os arquivos no disco rígido podem ser corrompidos. Quando isso acontece, o Linux mostra uma mensagem de erro, solicitando a senha de root ou CTRL-D para reiniciar. Este artigo aborda as causas da verificação de disco na inicialização do Linux e ensina como reparar um sistema de arquivos danificado.

Todo sistema operacional trabalha com unidades de disco a partir de uma camada de abstração chamada sistema de arquivos. Essa camada é responsável por traduzir nomes de arquivos em trilhas, cabeças e setores dos discos, sejam eles rijos, flexíveis, óticos (cd-rom), magneto-óticos ou mesmo virtuais. No DOS e Windows, o sistema de arquivos padrão é o FAT e no Linux o padrão atualmente é o Ext2.

Historicamente, o acesso às unidades de armazenamento é uma das operações mais lentas nos computadores. E para melhorar a performance no acesso aos discos, os sistemas operacionais usam mais uma ferramenta chamada cache. O cache de disco é uma porção de memória RAM reservada para armazenar temporariamente o conteúdo lido ou escrito no disco. Para os programas sendo executados, e para o usuário, fica a ilusão de que ao disco é muito mais rápido do que realmente é.

Entretanto, todo esse trabalho fica prejudicado no momento em que o computador é desligado bruscamente, sem o procedimento de shutdown ou desligamento, onde, entre outras coisas, o sistema operacional certifica-se de que as informações escritas pelos programas realmente foram gravadas no disco rígido. Além disso, ele também informa aos programas que estão rodando de que o sistema será desligado, dando a eles um certo tempo para que encerrem suas atividades, fecha conexões de rede, desliga os dispositivos do computador e até, nos mais novos computadores, desliga o próprio computador!

Quando o computador é desligado sem o shutdown, informações escritas pelos programas podem ser perdidas (como aquele arquivo importante, que você ficou horas digitando) ou, pior, o próprio sistema de arquivos, que é o responsável por organizar todos os arquivos em uma unidade de disco!

Vê-se então a importância de se desligar corretamente o computador, que no Windows significa selecionar "Desligar" ou "Shutdown" no Menu Iniciar, e no Linux pode ser feita de várias maneiras:

  • No Gnome, selecionando "Sistema" e "Desligar o Computador" na tela de logon
  • No KDE, selecionando "Sair" e "Desligar o Computador"
  • Na linha de comandos, como super-usuário, executando qualquer um destes comandos:
shutdown -h now
init 0
halt
poweroff
  • No console de texto, pressionando CTRL+ALT+DEL
  • Entretanto, isso nem sempre é possível. As razões para tanto são variadas. Desde quedas de energia até a tropeços em fios elétricos. É importante prevenir-se contra esses acontecimentos utilizando-se no-break onde a energia elétrica for instável ou simplesmente evitando deixar fios nos locais de passagem.

    Mas e quando o pior acontece? Depois de nos concentrar para acreditar que algumas horas de nosso precioso trabalho foi perdido, é preciso ter a cabeça no lugar para não piorar a situação. Por exemplo, se a queda de luz aconteceu por causa de um raio, espere passar o temporal antes de religar o equipamento. Com sorte, o que acontece na maioria das vezes, nenhuma atividade no disco rígido estava sendo realizada no momento da queda de energia, então após uma breve checagem de disco o Linux continuará normalmente com a inicialização. Caso contrário, continue lendo para aprender como lidar com essa situação.

    Quando o sistema de arquivos é corrompido de forma séria, a seguinte mensagem de erro aparece na tela:

    *** An error occurred during the file system check.
    *** Dropping you to a shell; the system will reboot
    *** when you leave the shell.
    Give root password for maintenance
    (or type Control-D for normal startup):
    

    O sistema pede a senha de root para que se possa fazer a manutenção do sistema ou que se aperte CTRL+D para abortar o boot e reiniciar o sistema (caso o usuário não possua a senha de root.

    Tão logo seja fornecida a senha adequada, deve-se executar o utilitário de verificação de disco, análogo ao scandisk no Windows:

    /sbin/e2fsck -y /dev/hda2
    

    Com a linha de comando acima, o programa e2fsck irá verificar e corrigir automaticamente, se possível, qualquer erro encontrado no sistema de arquivos localizado no dispositivo /dev/hda2. Note que o comando tem um espaço entre o -y e o /dev/hda2, e lembrar que se trata da barra normal, que divide a tecla com o ponto de interrogação e não a contrabarra. Verifique com atenção as mensagens exibidas no console para determinar em qual dispositivo está o sistema de arquivos a ser consertado e em caso de dúvida, consulte o arquivo /etc/fstab.

    Digite o comando

    exit
    e aguarde a reinicialização do computador. Agora o Linux deve passar rapidamente pelo procedimento de verificação de discos e inicializar normalmente.

    Com sorte, tudo voltará ao normal, mas se algum arquivo estiver faltando, procure no diretório /lost+found. É lá que o e2fsck grava os arquivos "perdidos" no disco.

    Muito trabalho vem sendo feito no campo de sistemas de arquivos. Em especial, dois sistemas: ReiserFS e Ext3. Ambos são sistemas de arquivos transacionais, que visam minimizar o tempo de recuperação e os estragos no evento de um desligamento abrupto do Linux.

    Além de melhoras nos sistemas de arquivos em si, também vêm sendo desenvolvidos trabalhos no sentido de automatizar a verificação e correção de erros nos sistemas de arquivo do Linux, com o auxílio de ajudantes ou wizards.

    Vitor Choi Feitosa <vchoi@interlegis.gov.br>
    Consultor de TI