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.
ddrescue
ou 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.