Saiba como tentar solucionar problemas encontrados em um disco rígido usando o Linux

recuperar-discos-defeituosos-linux

Problemas com disco rígido talvez tenham ocorrido pelo menos uma vez durante sua vida digital. Inconsistência na persistência dos dados, dados corrompidos, setores de disco defeituosos, sistema de arquivos corrompido e muitos outros. Pode ser que nunca tenha acontecido com você, mas saiba que quando ocorrer causará uma grande dor de cabeça (principalmente, se não tiver cópias de segurança dos seus dados). Isso se deve a grande dificuldade em obter êxito na maioria das vezes em que a pessoa tenta recuperar um disco rígido corrompido ou defeituoso. Portanto, saiba que existem um conjunto de ferramentas que podem auxiliar nessa tarefa; e que aumentam as chances, satisfatoriamente, da recuperação dos dados contidos nesse dispositivo de armazenamento.

Os discos rígidos

A tecnologia do disco rígido (HDD) vem desde do século passado. Popularmente, encontrada na maioria dos computadores no mundo; mesmo com a existente tecnologia SSD (Unidade de Estado Sólido). Mesmo com sua popularidade, os dispositivos HDD são suscetíveis a falhas por sua própria natureza. Os discos rígidos são equipamentos feitos por componentes mecânicos, vulneráveis a desgastes com o passar do tempo (isso é inevitável). Um simples toque brusco, pode travar e danificar um HDD. Devido ao magnetismo, os HDDs precisam permanecer parados, em, constante, repouso.

landscape-1440797569-hard-drives

Além disso, prever quando um HDD irá falhar é quase impossível. Defeitos podem começar a aparecer por vários motivos; até mesmo pela própria utilização normal do dispositivo. Contudo, existem maneiras para verificar a vida útil atual do disco; e evitar surpresas desagradáveis. Mesmo com a chegada dos SSDs e suas grandes vantagens, os HDDs ainda são bastante usados por conta do baixo custo; comparados aos SSDs.

Tipos de falhas

Com o disco rígido em uso, diversas falhas podem ocorrer. Para podermos encontrar as melhores ferramentas de resoluções dos problemas encontrados é preciso categorizar as principais falhas de disco:

1- Falhas de hardware – por exemplo, disco rígido com setores defeituosos (badblocks – setores defeituosos na superfície do disco magnético, que dificultam a leitura/escrita de dados deixando o tempo de resposta do disco muito lento;

2 – Falhas de software – fisicamente o disco rígido físico está bom, mas o sistema de arquivos está corrompido;

3 – Falha humana – o hardware e o sistema de arquivos estão intactos, mas os dados sobre eles foram excluídos acidentalmente.

Claro, as causas muitas vezes podem não ser tão simples. Por exemplo, uma falha no disco pode ser devido a um bug do kernel ou por causa de uma falha de hardware na controladora do disco; e outros. Entretanto, com essas categorias, fica mais fácil encontrar as ferramentas para resolver o problema.

Falhas de hardware e/ou software

Se você está usando um sistema Linux, saiba que ele é, geralmente, bastante resistente a falhas no sistema de arquivos. Pois, os principais sistemas de arquivos do Linux (isso inclue o EXT3, EXT4, ReiserFSs e XFS) suportam o journaling – técnica que mantém o controle das modificações feitas no sistema de arquivos em um arquivo de log (journal) antes de escrevê-las no disco.

consistencia-sistema-arquivos-linux

Basicamente, no momento da inicialização do sistema operacional, se o sistema de arquivos não estava totalmente inoperante (sem nenhum dado sendo escrito) quando houve o desligamento inesperado do computador (devido a uma reinicialização forçada, por exemplo), é acionado este registro completo (journal) das alterações feitas no sistema de arquivos antes do desligamento. Embora as mudanças de dados feitas no disco, no momento do acidente, possam ser perdidas, o processo de journaling garante que a estrutura do sistema de arquivos permaneça consistente; evitando corromper o sistema de arquivos do sistema.

Entretanto, mesmo o Linux sendo muito resistente a falhas de consistência no sistema de arquivos; ele não é completamente imune. Um sistema de arquivos pode corromper, por exemplo, por erros de software ou falhas de hardware. Em alguns casos, quando se tenta acessar determinados arquivos/pastas e o resultado mostrado contêm erros de I/O (entrada/saída); a causa, provável, é hardware.

Para confirmar, execute o comando dmesg com filtro para ‘I/O error':

dmesg | grep ‘I/O error’

Outros casos podem ser mais difíceis de diagnosticar. Se você tiver problemas com alguns arquivos/pastas, mas sem erros de I/O sendo exibidos com o comando acima pode ser que o hardware do disco esteja bem, mas o sistema de arquivos esteja corrompido. A melhor saída é iniciar o computador a partir de um Live CD para melhor diagnosticar o problema.

O uso dos Lives CDs é recomendado porque as partições do disco, em questão, não devem estar em uso no momento das verificações do sistema de arquivos. Além disso, os Lives CDs tendem a vir com um monte de ferramentas de recuperação de dados, como o SystemRescueCD. Ele é um sistema Linux que roda em um DVD/CD ou num pendrive, projetado para reparar um sistema e os dados após uma falha.

Outro passo importante para tentar solucionar os problemas encontrados no disco rígido é fazer uma busca por setores defeituosos (badblocks) no disco rígido. Atualmente os HDDs modernos podem realocar ou marcar os badblocks automaticamente através do serviço de monitoramento chamado SMART. Isso é imperceptível ao sistema operacional e ao usuário por ser um tratamento na camada de hardware do HDD sendo desnecessário a intervenção manual, mas nem sempre esse tratamento é feito com sucesso.

Para realizar o processo manual, use o comando ‘badblocks’ para executar a verificação (como root). O comando ‘badblocks’, gera uma lista com os blocos/setores danificados encontrados no disco:

badblocks -sv /dev/sda

Onde, /dev/sda é o dispositivo de armazenamento que contém as partições de disco do sistema. Para descobrir isso, execute o comando ‘fdisk -l’ (como root).

Caso não detecte falha alguma, o próximo passo é buscar problemas na camada de software; ou seja, no sistema de arquivos. Cada sistema de arquivos possui ferramentas apropriadas para o seu próprio reparo e/ou diagnóstico. Por exemplo, para os sistemas de arquivos EXT3 e EXT4 (presentes na maioria das distros Linux), use a ferramenta ‘fsck’. Essa ferramenta toma todas as medidas necessárias para corrigir o sistema de arquivos:

fsck -vy /dev/sda

Para o sistema de arquivos XFS, use o comando ‘xfs_repair':

xfs_repair /dev/sda

Para o sistema de arquivos ReiserFS, execute uma verificação do sistema de arquivos:

reiserfsck –check /dev/sda

Se o resultado desse comando apresentar problemas “solucionáveis” (fixable), você pode executar o mesmo comando usando a opção ‘–fix-fixable’ para reparar o sistema de arquivos. Se for relatado problemas críticos e mais graves, você pode tentar a opção mais extrema (e demorada) ‘–rebuild-tree’.

E se o disco morreu?!

No caso de uma falha grave no hardware do HDD, tudo o que você pode fazer é copiar todos os dados possíveis para outra unidade de armazenamento (HDD externo ou pendrive). A tradicional ferramenta ‘dd’ pode fazer isso sem complicações – ela efetua cópias de baixo nível, copiando byte a byte a informação, da origem ao destino.

Para suprimir os erros ignoráveis no momento da transferência dos dados, execute:

dd if=/dev/sda1 of=/dev/sdb1 bs=4k conv=noerror,sync

Onde, /dev/sda1 é a primeira partição do disco /dev/sda. E /dev/sdb1 é a primeira partição do outro disco (que pode ser um pendrive também). Tudo isso, você pode descobrir usando o comando ‘fdisk -l’.

Entretanto, a melhor opção nessas situações será usar a ferramenta ddrescue GNU que está disponível na maioria das distribuições, e também está disponível no Live CD SystemRescueCD. É mais rápido e seguro do que ‘dd’, pois obtém melhores resultados e também mantém um arquivo de log que registra cada um dos blocos defeituosos encontrados. O ‘ddrescue’ faz uso de um algoritmo que otimiza a recuperação dos dados.

Utilize o comando abaixo para uma transferência dos dados contidos somente nos setores/blocos não defeituosos:

ddrescue -n /dev/sda1 /dev/sdb1 log-arquivo.txt

Em seguida, repita a transferência dos dados; agora dos setores/blocos defeituosos (badblocks) repetidamente 3 vezes (são apenas tentativas de recuperação dos dados nessas regiões do disco):

ddrescue -dr3 /dev/sda1 /dev/sdb1 log-arquivo.txt

Pronto! Depois de ter recuperado o máximo de dados a partir do dispositivo defeituoso, você pode executar o comando apropriado de reparação do sistema de arquivos (fsck, por exemplo) na nova unidade de armazenamento para corrigir os erros causados ​​pelos blocos ilegíveis, e, em seguida, montar o novo sistema de arquivos, como de costume para acessar os arquivos (mount -t ext3 /dev/sdb1 /mnt).

Falha humana

Quando você apaga um arquivo no Linux, não há nada na estrutura dos sistemas de arquivos que permita a recuperação desses dados nativamente. É por isso que gerenciadores de arquivos, bem como: Nautilus e Konqueror usam as pastas de lixeiras 😉

delete

Se você tiver excluído, acidentalmente, arquivos importantes, e está usando o sistema de arquivos EXT3 ou EXT4, você pode tentar recuperá-los usando a ferramenta extundelete. O extundelete promete recuperar arquivos apagados contidos em sistemas de arquivos ext3 e ext4. Baseado na ferramenta ext3grep, que vasculha um sistema de arquivo “ext3″ por rastros de arquivos apagados, o extundelete é capaz de recuperar informações dos ponteiros de blocos do inode; onde ficaram salvos os arquivos removidos. Por fim, todo o conteúdo recuperado é enviado para um diretório específico.

Outro problema possível é corromper uma tabela de partição. Particionar um disco é, geralmente, uma operação segura. Mas, se algo der errado ao escrever a tabela de partição no disco, ou se você acidentalmente excluir algumas partições, você pode perder acesso a alguns ou todos os dados do sistema.

Se isso ocorrer, inicie seu computador por um LiveCD (SystemRescueCD, por exemplo) e execute um comando da ferramenta testDisk:

testdisk /dev/sda

Essa ferramenta repara a tabela de partições, tenta recuperar partições removidas acidentalmente e constrói uma nova tabela de partições.

Prevenção, prevenção e prevenção

Primeiramente, faça cópias de segurança (backup) periodicamente dos seus arquivos.

Se tiver condições e recurso, use a tecnologia RAID (Redundant Array of Independent Disks) no seu sistema. Essa solução só é possível no uso de 2 ou mais discos rígidos. Em resumo, a tecnologia RAID garante redundância e integridade dos dados, pois “espalha” os dados por todos os discos contidos na máquina.

Contudo, a prevenção mais simples e com um mínimo de esforço é usufruir da tecnologia presente na maioria ndos discos rígidos, atualmente – a tecnologia S.M.A.R.T (Self-Monitoring Analysis e Reporting Technology). Ela mantém o controle, em tempo real, de como está a “saúde” dos dispositivos de armazenamento.

É possível monitorar os erros de leitura do HDD (mesmo antes dos badblocks começarem a aparecer) usando o SMART. No Linux, este recurso é disponibilizado através do “smartmontools“, um pacote disponível nos repositórios da maioria das distribuições e também no http://smartmontools.sourceforge.net/.

Para maiores informações sobre esse recurso, saiba como verificar a vida útil do seu disco rígido.


Via | pcauthority

Ricardo Ferreira

Ricardo Ferreira

Fundador do Linux Descomplicado - LD.

Sempre em busca de novos conhecimentos, preza por conteúdo de qualidade e auto-explicativo. Por isso, persiste em criar um site com artigos relevantes para todos os leitores do Linux Descomplicado!
Ricardo Ferreira

Comentários

comentários

Curso Docker - Introdução a administração de containers

Docker é uma plataforma para desenvolvimento, provisionamento e execução de aplicações usando tecnologia de containers.

Se você é um desenvolvedor ou sysadmin você poderá ter diversas vantagens usando a plataforma Docker:
  • Desenvolve uma vez...executa em qualquer lugar;
  • Sem preocupações (dependências e/ou pacotes)... foco no desenvolvimento;
  • Elimina inconsistências na entrega das aplicações e/ou serviços;;
  • Evita o “localhost funciona”;
  • Promove uma infraestrutura escalável;

Este curso é introdutório a plataforma Docker e lhe dará melhor compreensão sobre as vantagens da ferramenta.


Inscreva-se agora »

VOCÊ TAMBÉM PODERÁ LER...