2012-09-27 10 views
8

Me doy cuenta de que la pregunta que hago no es simple: "¡O, eso es fácil! ¡Haz un simple esto y lo otro y voilá!" El hecho es que, sin pensar una noche, borré la partición equivocada. Probé algunas herramientas de Windows y Linux (Partition disk doctor, Easeus, Test disk, etc.) pero ninguna de ellas funcionó. Y creo que es por la forma en que eliminé la partición.Escribiendo tu propia recuperación de partición

He escrito mis propios creadores del sector de arranque/herramientas de copia de seguridad en C++ antes, así como uno o dos núcleos en C y Ensamblador (aunque kernels bastante inútiles ...) así que creo que tengo suficiente conocimiento para al menos TRATE de recuperarlo manualmente.

Mi unidad se estableció de la siguiente manera:

Size: 1.82TB 
part0 100MB (redundant windows recovery partition) 
part1 ~1760MB (my data partition) 

Cómo lo rompí:

En Windows 7, que suprime la primera partición. Luego extendí el segundo para ocupar el primer espacio libre, lo que significaba que todavía tenía 2 particiones, ahora actuando como una partición dinámica. Reinicié mi sistema operativo Ubuntu y me di cuenta de que ya no podía leerlo. Reinicié nuevamente en Windows, eliminé la primera partición, luego pensé, esperaba ... no debería haber hecho eso. No hace falta decir que está muerto ahora.

Lo que me gustaría es algunos consejos/buenos enlaces sobre dónde comenzar, qué no hacer y qué no esperar. Espero que si las publicaciones aún están intactas, podré recuperar el disco.

Editar:
Esta es una unidad NTFS. Después de publicar esta pregunta, me preguntaba: dado que conozco la ubicación aproximada de dónde estaba ubicada mi partición, ¿hay alguna manera de identificar fácilmente las publicaciones? Tal vez pueda reconstruir alguna de la otra información de unidad/partición y escribirla en el disco.

+2

Podría ayudar a otros a decir qué FS estaba allí. NTFS? EXT \ *? –

+3

Esto probablemente pertenece al superusuario, no veo cómo está relacionado con la programación. Está pidiendo ayuda para recuperar manualmente una partición en este caso particular, ¿verdad? –

+2

@Charles, creo (basado en las etiquetas 'c',' C++ 'y' assembly') que el OP desea escribir una aplicación para recuperarlo. – SingerOfTheFall

Respuesta

1

El primer paso, creo, es averiguar cómo funcionan exactamente esas "particiones dinámicas" como las llama en Windows 7. Según su descripción, parece que creó un tipo de volumn lógico a partir de dos particiones físicas . Supongo que la segunda partición ahora contiene algún tipo de encabezado para ese volumen, por lo que las herramientas de recuperación que no están familiarizadas con ese formato no funcionan.

Si se da cuenta de qué Windows 7 hizo exactamente cuando fusionó las dos particiones, debería poder escribir una aplicación que extraiga una imagen del volumen lógico.

O bien, puede consultar NTFS-3G, la implementación FUSE de NTFS en http://www.tuxera.com/community/ntfs-3g-download/. Al estudiar ese código, apuesto a que puede encontrar una forma de ubicar el sistema de archivos NTFS en su disco borked. Una vez que tenga eso, intente extraer todo desde el principio del sistema de archivos hasta el final del disco en una imagen, y ejecute algún verificador ntfs del sistema de archivos. Con un poco de suerte, obtendrás un sistema de archivos mutable.

Si se está preguntando cómo acceder al disco, simplemente abra el dispositivo correspondiente en Linux como si fuera un archivo normal. Sin embargo, es posible que necesite alinear sus lecturas a 512 bytes (o cualquiera que sea el tamaño del sector de su disco. 512 y, en menor medida, 4096 son valores comunes), de lo contrario, read() podría devolver un error.