Recuperação mais rápida de um disco com setores defeituosos

10

Recentemente, tentei dd de um HDD não íntegro em um arquivo. Eu usei dd if=/dev/sdb of=somefile bs=4096 conv=noerror,sync . Meu problema foi que dd perdeu muito tempo quando encontrou um bloco ruim. No meu caso de uso, eu ficaria feliz em pagar com alguma perda de dados para um resultado mais rápido.

Existe alguma maneira de acelerar o tratamento de erros? Talvez um ajuste do kernel (dizendo ao HDD para fazer menos esforço para ler um bloco)? Ou outro programa?

    
por Notinlist 24.04.2015 / 20:42

3 respostas

23

Primeiro, para o software usar: você pode tentar usar ddrescue em vez de dd .

ddrescue tem um switch para fazer apenas um número limitado de novas tentativas. Ele também pode usar um arquivo de log, então ele registra quais blocos foram ruins. Se mais tarde você sentir vontade de fazer mais tentativas, poderá usar o arquivo de log mesmo para executar ddrescue novamente com opções diferentes (como mais tentativas) e só tentará novamente blocos.

Exemplo de uso:

# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log

Do ddrescue info-page:

   -n, --no-scrape     
          Skip the scraping phase. Avoids spending a lot of time
          trying to rescue the most difficult parts of the file.

   -r, --retry-passes=<n>
          Exit after given number of retry passes. Defaults to 0.
          -1 means infinity. Every bad sector is tried only once 
          in each pass. To retry bad sectors detected on a previous
          run, you must specify a non-zero number of retry passes.

Aqui estão algumas fontes adicionais para usar ddrescue :

Editar

Caso o disco rígido esteja demorando muito, você pode tentar ativar um recurso chamado TLER ( T ime L imitado E rror R ecovery) ou CCTL ( C ommand C omplemento T ime L imit). Nem todos os HDDs possuem, mas você pode usá-lo para limitar o tempo no próprio controlador do HD. Essa abordagem pode ser combinada com o uso de ddrecue , é claro.

O Linux tem uma ferramenta chamada smartctl (no pacote smartmontools ).

Para verificar a configuração atual ("desativado" significa um tempo ilimitado, que você não deseja):

# smartctl -l scterc /dev/sda

Para configurá-lo para um valor fixo (5,0 segundos neste exemplo. Configurar para 0 desativa TLER):

# smartctl -l scterc,50,50 /dev/sda

Origem do TLER: link

    
por 24.04.2015 / 20:49
2

Eu tive bons resultados de discos que não poderiam ser lidos com este software.

link

Este próximo é uma ferramenta de recuperação sólida também. Pode obter arquivos mesmo se sua tabela de arquivos estiver quebrada ou se eles forem excluídos. É uma ótima ferramenta forense. Ele despeja as coisas de uma maneira realmente desorganizada, mas você pode obter todos os dados movidos.

link

    
por 30.04.2015 / 14:22
2

Para uma opção rápida e rápida de resgatar o disco, você pode usar um arquivo de script sh e executar o arquivo com sh. Ele contém esta linha, apenas repita sudo ddrescue e sleep 3 mais algumas vezes. O sono é usado para fazer a unidade descansar por alguns segundos:

#! /bin/sh -e 
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile 
sleep 3

As opções usadas acima:

  • -r0 : sem tentativas
  • -e +0 : sair no primeiro erro
  • -T 1s : sair com 1 segundo de falha de leitura
  • -d : E / S direta
  • -n : não raspe

Você pode usar -R depois de terminar com a opção -A uma vez, isso irá reverter e remover todos os erros e recomeçar de novo. Significa que vai ler erros de forma diferente.

    
por 06.11.2016 / 18:33