Recentemente, sofri uma quantidade irritantemente pequena, mas muito importante, de danos a um disco rígido em um host ESXi, afetando algumas VMs. Há um arquivo que eu gostaria muito de recuperar e, claro, ele foi deixado de fora do meu backup regular. As cópias mais recentes têm 6 meses. Acontece que eu preciso disso... opa.
Detalhes:
1) Usei o ddrescue (ferramenta INCRÍVEL) 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ções de arquivos RECENTES... então é claro que são exatamente os setores que mais preciso recuperar.
2) A unidade apresenta erros de E/S em leituras de setores defeituosos, mas ocasionalmente tem sucesso na leitura de um setor anteriormente defeituoso! Portanto, a recuperação ainda é possível. Um pouco mais frequentemente do que isso, haverá algum tipo de mau funcionamento grave e girará a unidade para baixo e para trás. Ah, e cerca de 1/4 dessas desacelerações não voltarão. (É necessário um ciclo de energia forte, o desligamento não funciona) Por último, quase toda leitura de setor defeituoso vem com um belo som de clique audível.
3) O disco VM importante está formatado em NTFS.
4) Posso (normalmente) montar o volume NTFS danificado somente leitura e posso (com um pouco menos de frequência) navegar até a pasta que contém o arquivo que preciso. No entanto, o arquivo em questão parece sempre apresentar um erro de IO quando faço um 'ls' da pasta. Os outros arquivos da pasta não apresentam erro de IO.
5) Eu tentei usar ntfsinfo/etc... que parece exatamente o que eu preciso... mas não abre a partição. (Frustrante, já que 'montar' normalmente o fará)
6) O arquivo é um arquivo XLS da era Excel 2003, então não tenho certeza se consigo encontrar alguma string para pesquisar a imagem bruta do disco. (Possivelmente partes da versão de 6 meses?)
Eu realmente gostaria de usar algo como as facilidades do debugfs. No entanto, nas páginas de manual, parece que as ferramentas NTFS poderiam fazer o trabalho se pudessem abrir a partição. Em particular, estou me perguntando se os erros de IO podem estar puramente nos metadados do arquivo e se o registro do diretório pode ser restaurado bem o suficiente para copiar o conteúdo do arquivo. Como último recurso, qualquer conteúdo parcial de arquivo que eu possa recuperar seria ótimo.
Eu escrevi módulos de kernel (relativamente simples) antes, para poder compilar um módulo NTFS especial com mais informações de depuração habilitadas (ou adicionadas). (O arquivo vale pelo menos alguns dias de ajustes para tentar recuperá-lo... além disso, estou aprendendo coisas legais no processo)
Alguma indicação?
EDITAR:
Mais informações sobre erros de unidade:
O /var/log/messages está mostrando muitos erros de NTFS-fs, é claro... mas finalmente me preocupei em traduzir a mensagem de código de sentido não tratada que normalmente recebo: chave de sentido 0x3, ASC=0x11, ASCQ=0x4. (que parece ser traduzido como ERRO DE LEITURA NÃO RECUPERADO - FALHA NA REALLOCAÇÃO AUTOMÁTICA).
Quando a unidade gira, vejo um "scsi0:*Mensagem BusLogic BT-958 inicializado ". Não tenho certeza se é o driver SCSI do Linux, o driver ESXi ou a própria unidade que decide desacelerar a unidade. Se fosse o driver do Linux, talvez eu pudesse modificar o driver para evitar a desaceleração. Toda essa coisa do ddrescue se torna muito mais dolorosa por causa dessas desacelerações que exigem o ciclo de energia.
EDITAR2:
usando a mensagem de log "end_request: I/O error, dev sda, sector 7238859" logo após eu 'ls' o diretório que contém o arquivo em questão, direcionei minha operação ddrescue para esse setor. Atualmente pretendo arriscar e ESCREVER esse setor de volta no disco ativo se isso for bem-sucedido. Talvez eu possa reconstruir lentamente meu caminho até o arquivo em questão desta forma. Ainda assim, a maioria dos setores defeituosos recuperáveis são recuperados em menos de 20 tentativas... esta já ultrapassou 150... *suspiro*
EDITAR3:
O erro de setor de 'ls' no arquivo que preciso não é totalmente 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 ela não é montada (ou é montada sem arquivos). A unidade danificada é montada corretamente na maioria das vezes ... talvez erros de IO na unidade danificada forcem a 'montagem' para retornar ao espelho que funciona?
**EDIT4:**
Desisti por enquanto, aguardando novas sugestões. Eu removi a unidade e reconstruí a caixa. Vou continuar dirigindo caso algo aconteça.
Responder1
Algumas notas da minha experiência:
- (a causa)Se você ouvir um som incomum durante as tentativas de acesso ao HD e os problemas não ocorrerem (mais ou menos) apenas em locais aleatórios do disco, então a causa raiz está provavelmente na superfície do disco (não na eletrônica) - infelizmente, essa é a triste cenário. Se fossem “apenas” os componentes eletrônicos, você poderia ter tido a chance de recuperar a maioria ou até mesmo todos os seus dados.
- (setores defeituosos)Se ainda não o fez, pesquise na web a ferramenta inicializável de diagnóstico/recuperação do fabricante do disco, baixe-a, inicialize, execute um teste profundo e deixe-a tentar remapear setores defeituosos - esse é o melhor entre os métodos gratuitos. Observe que os setores defeituosos têm tendência a crescer - portanto, mesmo que você consiga capturar um pedaço do seu arquivo após uma 2314ª tentativa de leitura, é provável que essas tentativas tenham feito com que os setores defeituosos próximos cresçam, diminuindo efetivamente as chances de recuperar outras partes do arquivo.
- (recuperando NTFS)Nada pode consertar um sistema de arquivos NTFS tão bem quanto as ferramentas nativas do MS Windows. Se a imagem NTFS não for montável (certifique-se também de que você estava tentando montar a partição, não o disco inteiro!), você pode tentar coisas como
testdisk
no Linux, mas se falharem, o Windowschkdisk
pode ajudar. Se você tiver o Windows instalado em uma máquina virtual, poderá converter a imagem bruta obtida emddrescue
um formato suportado por essa máquina virtual (comoVDI
ouVMDK
), 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 tal imagem éVBoxManage convertfromraw <filename> <outputfile>
opcionalmente para--format VDI|VMDK|VHD
obter o formato de saída especificado.
Responder2
Isso pode ou não se aplicar ao seu caso, mas uma medida de último recurso é o “truque do congelador”. VerRecuperando dados de um disco rígido danificado: o “truque do freezer”para uma discussão do método.