Técnicas avançadas de recuperação de arquivos de partição NTFS para unidades danificadas (erros de E / S)?

8

Recentemente, sofri uma quantidade irritantemente pequena, mas bastante importante, de um disco rígido em um host ESXi que afeta algumas VMs. Há um arquivo que eu gostaria muito de recuperar e, é claro, foi deixado de fora do meu backup regular. As cópias mais recentes têm 6 meses de idade. Acontece que eu preciso disso ... oops.

Detalhes:

1) Eu usei o ddrescue (ferramenta AWESOME) em um ISO inicializável do Parted Magic para recuperar 99,98% da unidade da VM em questão. Infelizmente, os erros parecem ser quase inteiramente de gravação de arquivos RECENTES ... então é claro que são exatamente os setores que eu mais preciso recuperar.

2) A unidade apresenta erros de E / S em leituras ruins do setor, mas ocasionalmente SUCESSO na leitura de um setor ruim anteriormente! Portanto, a recuperação ainda é possível. Um pouco mais frequentemente do que isso terá algum tipo de mau funcionamento e gire a unidade para baixo e para trás. Ah, e cerca de 1/4 dessas mudanças não voltarão. (É necessário um ciclo de energia rígido, o desligamento não funciona) Por último, quase todas as leituras incorretas do setor vêm com um som agradável de clique.

3) O disco importante da VM está formatado em NTFS.

4) Posso (normalmente) montar o volume NTFS danificado somente leitura e posso (um pouco menos frequentemente) navegar para a pasta que contém o arquivo necessário. No entanto, o arquivo em questão parece sempre fornecer um erro de entrada / saída quando eu faço um 'ls' da pasta. Os outros arquivos na pasta não fornecem um erro de E / S.

5) Tentei usar o ntfsinfo / etc ... que parece exatamente o que eu preciso ... mas não abrirá a partição. (Frustrante, já que 'montar' geralmente vai)

6) O arquivo é um arquivo XLS da era do Excel 2003, portanto, não tenho certeza de que posso criar qualquer sequência de caracteres para pesquisar a imagem do disco bruto. (Possivelmente partes da versão antiga de 6 meses?)

Eu realmente gostaria de usar algo como as instalações do debugfs. No entanto, nas páginas de manual, parece que as ferramentas ntfs poderiam fazer o trabalho se pudessem ser feitas para abrir a partição. Em particular, estou me perguntando se os erros de E / S podem estar puramente dentro dos metadados do arquivo e se o registro do diretório pode ser restaurado o suficiente para copiar o conteúdo do arquivo. Como último recurso, qualquer conteúdo parcial do arquivo que eu possa recuperar seria ótimo.

Eu escrevi módulos do kernel (relativamente simples) antes, para poder compilar um módulo NTFS especial com mais informações de depuração ativadas (ou adicionadas). (O arquivo vale pelo menos alguns dias para tentar recuperar ... além disso, estou aprendendo coisas interessantes no processo)

Alguma dica?

EDITAR:

Mais informações sobre erros de unidade:

As / var / log / messages estão mostrando muitos erros NTFS-fs, é claro ... mas finalmente me preocupei em traduzir a mensagem de código de detecção não tratada que normalmente recebo: chave de detecção 0x3, ASC = 0x11, ASCQ = 0x4. (que parece ser traduzido para ERRO DE LEITURA NÃO RECUPERADO - FALHA NA REOCOCAÇÃO AUTOMÁTICA).

Quando a unidade gira, vejo uma mensagem "scsi0: * BusLogic BT-958 Initialized". Não tenho certeza se é o driver SCSI do Linux, o driver ESXi ou a própria unidade que decide girar a unidade para baixo. Se fosse o driver do Linux, talvez eu pudesse modificar o driver para evitar a redução. Essa coisa toda de gravação de disco é massivamente mais dolorosa por essas rotações que exigem ciclo de energia.

EDIT2:

usando a mensagem de log "end_request: erro de E / S, dev sda, setor 7238859" logo após o diretório que contém o arquivo em questão, direcionei minha operação do ddrescue para esse setor. Atualmente, planejo arriscar e ESCREVER esse setor de volta ao disco ativo, se isso der certo. Talvez eu possa reconstruir lentamente meu caminho para o arquivo em questão dessa maneira. Ainda assim, a maioria dos setores defeituosos recuperáveis ​​são recuperados em menos de 20 tentativas ... este é mais de 150 até agora ... * suspiro *

EDIT3:

O erro de setor de 'ls' no arquivo que eu preciso é totalmente não cooperativo (mais de 1000 tentativas durante a noite e sem sorte). Espero que sejam apenas metadados quando você faz um 'ls'? :)

Eu tenho a maior parte de uma cópia do ddrescue, mas isso não monta (ou monta sem arquivos). A unidade danificada é montada corretamente na maioria das vezes ... talvez os erros de E / S na unidade danificada forçam o 'suporte' a voltar ao espelho que funciona?

** EDIT4: **

Desisti por enquanto, aguardando mais sugestões. Eu removi a unidade e reconstruí a caixa. Vou manter a unidade por perto, caso algo aconteça.

darron
fonte
3
A primeira coisa a fazer é fazer uma cópia do disco, usando ddrescueou outra ferramenta semelhante para copiar o maior número possível de setores. Não faça nenhuma recuperação no nível do sistema de arquivos do disco danificado, faça-o na cópia.
Gilles 'SO- stop be evil'
1
@ Gilles eu mencionei que usei o ddrescue. Aparentemente, existem erros nos lugares errados para uma cópia ser montada. Não está claro em quais compensações eu preciso focar com o ddrescue para corrigir esse problema ... assim, a pergunta sobre algo como debugfs (ou um ntfsinfo que pode funcionar com uma partição pelo menos tão bem quanto a lata 'mount' comum). Minha melhor aposta nesse momento é observar / var / log / messages quanto a erros do setor, pois eu acesso a unidade defeituosa em uma montagem somente leitura e tento gravar esses na cópia até que funcione.
1111 darron
1
Você esteve resfriando ativamente a unidade durante esse processo? Manter a unidade o mais frio possível ajuda significativamente.
Nathan V

Respostas:

4

Algumas notas da minha experiência:

  1. (a causa) Se você ouvir um som incomum durante as tentativas de acesso ao HD e os problemas não ocorrerem em (mais ou menos) apenas locais aleatórios do disco, a causa raiz provavelmente está na superfície do disco (não nos eletrônicos) - infelizmente , esse é o cenário triste. Se fosse "apenas" a eletrônica, você pode ter tido a chance de recuperar a maioria ou até todos os seus dados.
  2. (setores defeituosos) Se você ainda não o fez, pesquise na Web a ferramenta de diagnóstico / recuperação inicializável do fabricante do disco, faça o download, inicie, execute um teste profundo e tente remapear setores defeituosos - é o melhor entre os métodos gratuitos. Observe que setores defeituosos tendem a crescer - portanto, mesmo que você consiga capturar um pedaço do seu arquivo após uma tentativa de leitura de 2314, as chances são de que essas tentativas acabaram de fazer com que setores ruins próximos cresçam, diminuindo efetivamente as chances de recuperar outras partes do arquivo.
  3. (recuperação de NTFS) Nada pode corrigir um sistema de arquivos NTFS, bem como ferramentas nativas do MS Windows. Se a imagem NTFS não for montável (também verifique se você estava tentando montar a partição, não o disco inteiro!), Tente coisas como testdiskno Linux, mas se essas falharem, o Windows chkdiskpode ajudar. Se você tiver o Windows instalado em uma máquina virtual, poderá converter a imagem bruta obtida ddrescueem um formato suportado por essa máquina virtual (como VDIou VMDK), adicioná-la à VM e inicializar o Windows no modo de linha de comando para corrigir o sistema de arquivos. Se você usar o VirtualBox, o comando para converter essa imagem é VBoxManage convertfromraw <filename> <outputfile>opcionalmente --format VDI|VMDK|VHDpara obter o formato de saída especificado.
rozcietrzewiacz
fonte