¿Técnicas avanzadas de recuperación de archivos de partición NTFS para unidades dañadas (errores de E / S)?

8

Recientemente he sufrido una cantidad enloquecedoramente pequeña pero bastante importante de daño en un disco duro en un host ESXi que afecta a un par de máquinas virtuales. Hay un archivo que me gustaría mucho recuperar y, por supuesto, de alguna manera quedó fuera de mi copia de seguridad habitual. Las copias más recientes tienen 6 meses. Resulta que necesito eso ... oops.

Detalles:

1) He usado ddrescue (herramienta IMPRESIONANTE) dentro de un ISO de arranque Parted Magic para recuperar el 99.98% de la unidad de VM en cuestión. Desafortunadamente, los errores parecen ser casi por completo de escrituras RECIENTES de archivos ... así que, por supuesto, son exactamente los sectores que más necesito recuperar.

2) ¡La unidad da errores de E / S en lecturas de sectores defectuosos, pero ocasionalmente TIENE ÉXITO al leer un sector previamente defectuoso! Entonces, la recuperación aún es posible. Un poco más que eso tendrá algún tipo de mal funcionamiento importante y hará girar la unidad hacia abajo y hacia arriba. Ah, y aproximadamente 1/4 de esos spin-ups no volverán a subir. (Se requiere un ciclo de energía duro, el apagado no funcionará) Por último, casi todas las lecturas de sectores defectuosos vienen con un agradable sonido de clic audible.

3) El disco VM importante tiene formato NTFS.

4) Puedo (normalmente) montar el volumen NTFS dañado de solo lectura, y puedo (un poco menos frecuente) navegar a la carpeta que contiene el archivo que necesito. Sin embargo, el archivo en cuestión parece dar siempre un error de IO cuando hago un 'ls' de la carpeta. Los otros archivos en la carpeta no dan un error IO.

5) He intentado usar ntfsinfo / etc ... que suena exactamente como lo que necesito ... pero no abrirá la partición en absoluto. (Frustrante, ya que 'montar' generalmente lo hará)

6) El archivo es un archivo XLS de la era Excel 2003, por lo que no estoy seguro de poder encontrar ninguna cadena para buscar la imagen de disco sin procesar. (¿Posiblemente partes de la versión anterior de 6 meses?)

Realmente me gustaría usar algo como las instalaciones de debugfs. Sin embargo, de las páginas del manual parece que las herramientas ntfs podrían hacer el trabajo si solo pudieran hacerse para abrir la partición. En particular, me pregunto si los errores de IO podrían estar exclusivamente dentro de los metadatos del archivo, y si el registro del directorio podría restaurarse lo suficientemente bien como para copiar el contenido del archivo. Como último recurso, cualquier contenido parcial de archivo que pueda recuperar sería genial.

He escrito módulos de kernel (relativamente simples) antes, por lo que podría compilar un módulo NTFS especial con más información de depuración habilitada (o agregada). (El archivo vale al menos unos días de retoques para intentar recuperar ... además, estoy aprendiendo cosas interesantes en el proceso)

Cualquier puntero?

EDITAR:

Más información de error de unidad:

El / var / log / messages muestra muchos errores NTFS-fs, por supuesto ... pero finalmente me molesté en traducir el mensaje de código de detección no manejado que generalmente obtengo: clave de detección 0x3, ASC = 0x11, ASCQ = 0x4. (que parece traducirse a ERROR DE LECTURA NO RECUPERADA - ERROR AUTOMÁTICO).

Cuando la unidad gira hacia abajo, veo el mensaje "scsi0: * BusLogic BT-958 Initialized". No estoy seguro de si es el controlador SCSI de Linux, el controlador ESXi o la unidad en sí la que decide girar la unidad hacia abajo. Si fue el controlador de Linux, entonces tal vez podría modificar el controlador para evitar girar hacia abajo. Todo este asunto de ddrescue se vuelve enormemente más doloroso por estos spindowns que requieren un ciclo de energía.

EDIT2:

usando el mensaje de registro "end_request: error de E / S, dev sda, sector 7238859" justo después de 'ls' el directorio que contiene el archivo en cuestión, he dirigido mi operación ddrescue a ese sector. Actualmente planeo arriesgarme y ESCRIBIR ese sector nuevamente en el disco en vivo si esto tiene éxito. Tal vez pueda reconstruir lentamente mi camino al archivo en cuestión de esta manera. Aún así, la mayoría de los sectores defectuosos recuperables se recuperan en menos de 20 reintentos ... este es más de 150 hasta ahora ... * suspiro *

EDITAR3:

El error de sector de 'ls' en el archivo que necesito no es del todo cooperativo (más de 1000 intentos durante la noche y sin suerte). Espero que solo sean metadatos cuando haces un 'ls'? :)

Tengo la mayor parte de una copia ddrescue, pero eso no se monta (o se monta sin archivos). La unidad dañada se monta correctamente la mayor parte del tiempo ... ¿tal vez los errores de E / S en la unidad de montaje dañada se caigan al espejo que funciona?

** EDITAR4: **

Me he rendido por ahora, a la espera de nuevas sugerencias. Quité el disco y reconstruí la caja. Seguiré conduciendo por si surge algo.

Darron
fuente
3
Lo primero que debe hacer es hacer una copia del disco, utilizando ddrescueu otra herramienta similar para copiar tantos sectores como sea posible. No realice ninguna recuperación a nivel del sistema de archivos del disco dañado, hágalo desde la copia.
Gilles 'SO- deja de ser malvado'
1
@Gilles Mencioné que usé ddrescue. Aparentemente hay errores en los lugares equivocados para que se monte una copia. No está claro en qué compensaciones debo centrarme con ddrescue para solucionar ese problema ... por lo tanto, la pregunta sobre algo como debugfs (o una información ntfs que puede funcionar con una partición al menos tan bien como la lata de 'montaje' normal). Mi mejor apuesta en este punto es mirar / var / log / messages en busca de errores de sector a medida que accedo a la unidad defectuosa en una montura de solo lectura e intento rescatarlos a la copia hasta que funcione.
darron
1
¿Has estado enfriando activamente la unidad durante este proceso? Mantener el disco lo más frío posible ayuda significativamente.
Nathan V

Respuestas:

4

Algunas notas de mi experiencia:

  1. (la causa) Si escucha un sonido inusual durante los intentos de acceso de alta definición, y los problemas no ocurren en (más o menos) ubicaciones de disco aleatorias, entonces la causa principal probablemente esté en la superficie del disco (no en la electrónica), desafortunadamente Ese es el triste escenario. Si fuera "solo" la electrónica, podría haber tenido la oportunidad de recuperar la mayoría o incluso todos sus datos.
  2. (sectores defectuosos) Si aún no lo ha hecho, busque en la web la herramienta de diagnóstico / recuperación de arranque del fabricante del disco, descárguela, inicie, ejecute una prueba profunda y deje que intente reasignar sectores defectuosos; es el mejor entre los métodos gratuitos. Tenga en cuenta que los sectores defectuosos tienden a crecer, por lo que incluso si logra capturar un fragmento de su archivo después de un intento de lectura de 2314, es probable que esos intentos solo hagan crecer los sectores defectuosos cercanos, disminuyendo efectivamente las posibilidades de recuperar otras partes del archivo
  3. (recuperación de NTFS) Nada puede arreglar un sistema de archivos NTFS, así como las herramientas nativas de MS Windows. Si la imagen NTFS no se puede montar (¡también asegúrese de que estaba intentando montar la partición, no todo el disco!), Puede intentar cosas como testdisken Linux, pero si fallan, Windows chkdiskpuede ayudar. Si tiene Windows instalado en una máquina virtual, puede convertir la imagen en bruto obtenida ddrescuea un formato compatible con esa máquina virtual (como VDIo VMDK), agregarla a la VM e iniciar Windows en modo de línea de comandos para reparar el sistema de archivos. Si usa VirtualBox, el comando para convertir dicha imagen es VBoxManage convertfromraw <filename> <outputfile>opcionalmente --format VDI|VMDK|VHDpara obtener el formato de salida especificado.
rozcietrzewiacz
fuente