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

8

Recentemente, sofri um dano muito pequeno, mas muito importante, em um disco rígido em um host ESXi que afeta algumas VMs. Há um arquivo que eu gostaria muito de recuperar, e é claro que de alguma forma ele ficou de fora do meu backup regular. As cópias mais recentes têm 6 meses. Acontece que eu preciso disso ... opa.

Detalhes:

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

2) O drive gera erros de IO em leituras de setores defeituosos, mas ocasionalmente faz sucesso em ler um setor anteriormente ruim! Então, a recuperação ainda é possível. Um pouco mais 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 voltas não voltam. (O ciclo de energia rígido é necessário, o desligamento não funciona) Por último, praticamente todas as leituras ruins do setor vêm com um som de clique audível.

3) O importante disco da VM é o formato NTFS.

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

5) Eu tentei usar o ntfsinfo / etc ... que parece exatamente o que eu preciso ... mas ele não abre a partição. (Frustrante, uma vez que 'monte' geralmente vai)

6) O arquivo é um arquivo XLS da era do Excel 2003, portanto, não tenho certeza se posso criar strings para pesquisar a imagem bruta do disco. (Possivelmente partes da versão de 6 meses de idade?)

Eu realmente gostaria de usar algo como os recursos do debugfs. No entanto, a partir das páginas do manual, as ferramentas NTFS podem fazer o trabalho se elas puderem abrir a partição. Em particular, estou querendo saber se os erros de E / S podem estar puramente dentro dos metadados do arquivo e se o registro de diretório pode ser restaurado bem o suficiente para copiar o conteúdo do arquivo. Como último recurso, qualquer conteúdo de arquivo parcial que eu possa recuperar seria ótimo.

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

Algum apontador?

EDITAR:

Mais informações sobre erros da unidade:

O / var / log / messages está mostrando muitos erros de NTFS-fs, é claro ... mas eu finalmente me preocupei em traduzir a mensagem de código sem sentido que normalmente recebo: sense key 0x3, ASC = 0x11, ASCQ = 0x4 . (que parece traduzir para UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED).

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 desligar. Toda essa coisa de ddrescue é maciçamente mais dolorosa por causa dessas fendas de ciclo de força.

EDIT2:

usando a mensagem de log "end_request: Erro de E / S, dev sda, setor 7238859" logo depois de 'ls' o diretório que contém o arquivo em questão, direcionei minha operação ddrescue para esse setor. No momento, pretendo me arriscar e ESCREVER esse setor de volta ao disco ao vivo se isso for bem-sucedido. Talvez eu possa lentamente reconstruir meu caminho para o arquivo em questão dessa maneira. Ainda assim, os setores defeituosos mais recuperáveis são recuperados em menos de 20 tentativas ... esta é mais de 150 até agora ... * suspiro *

EDIT3:

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

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

** EDIT4: **

Eu desisti por enquanto, aguardando novas sugestões. Eu removi a unidade e reconstruí a caixa. Eu vou manter a unidade no caso de algo acontecer.

    
por darron 06.07.2012 / 08:07

2 respostas

4

Algumas notas da minha experiência:

  1. (a causa) Se você ouvir um som incomum durante tentativas de acesso em HD e problemas não ocorrerem em (mais ou menos) apenas locais de disco aleatórios, a causa raiz provavelmente estará na superfície do disco (não a eletrônica) - infelizmente, esse é o cenário triste. Se fosse "apenas" a parte eletrônica, você poderia ter a chance de recuperar a maioria ou até mesmo todos os seus dados.
  2. (setores defeituosos) Se você ainda não fez isso, pesquise na Web a ferramenta de diagnóstico / recuperação inicializável do fabricante do disco, faça o download, execute um teste profundo e tente remapear os setores defeituosos - isso é o melhor entre os métodos livres. Note que setores defeituosos tendem a crescer - então, mesmo que você consiga pegar um pedaço do seu arquivo depois de uma tentativa de leitura, é provável que essas tentativas apenas tenham feito crescer setores ruins próximos, diminuindo efetivamente as chances de recuperar outras partes do arquivo.
  3. (recuperando NTFS) Nada pode consertar um sistema de arquivos NTFS, assim como ferramentas nativas do MS Windows. Se a imagem NTFS não for montável (também certifique-se de estar montando a partição, não o disco inteiro!), Você pode tentar coisas como testdisk no Linux, mas se elas falharem, o% ' chkdisk do Windows pode ajudar . Se você tiver o Windows instalado em uma máquina virtual, poderá converter a imagem bruta obtida de ddrescue em um formato suportado por essa máquina virtual (como VDI ou VMDK ), adicioná-la à VM e inicializar o Windows em modo de linha de comando para corrigir o sistema de arquivos. Se você usa o VirtualBox, o comando para converter tal imagem é VBoxManage convertfromraw <filename> <outputfile> opcionalmente com --format VDI|VMDK|VHD para obter o formato de saída especificado.
por 14.12.2012 / 12:34
0

Isso pode ou não se aplicar ao seu caso, mas uma medida de último recurso é o "truque do freezer". Veja Recuperando dados de um disco rígido danificado: o "truque do freezer" para uma discussão sobre o método.

    
por 01.02.2014 / 19:39