epespad

formateos accidentales en discos ¿cómo recuperarse?

Anoche hice algo que te arrepientes por mucho tiempo, tomé un disco de la mesa y “mentalmente” seguro era el correcto lo puse en el portátil y reinicié, salí a tomarme un café para encontrarme con que tomé el disco de recuperación de la portátil (ni idea de por qué estaba allí sobre la mesa), borrando todo y apareciendo un gracioso logo de Windows Vista donde antes había Linux Debian.

¿Horror?, si, hubo mucho pavor en ese momento (era mi instalación Linux de trabajo), así que me tocó echar mano de las herramientas de recuperación para poder ganarle una al Windows.

Estado Inicial

Luego de la instalación automática y desasistida del equipo, terminé con dos particiones NTFS que ocupaban la totalidad del disco, como la primera había ocupado más de 10Gb, asumí que los datos de las primeras particiones (/boot, /root) estaría sumamente corrompidos, pero me preocupaba /HOME, que estaba en un volumen LVM, así tomé mis herramientas:

gpart
testdisk
lvm-tools
Y manos a la obra!.

Inicio: obteniendo información de las particiones perdidas

Lo más importante, es saber toda la información de las particiones perdidas, entre esa información hay una muy importante, TESTDISK requiere saber con exactitud la geometría correcta del disco; sino, se las verá muy mal a la hora de recuperar el disco.

Para esta información viene al rescate gpart (que no gparted, gpart!).

cuando ejecutamos:


gpart /dev/sdb


Donde /dev/sdb es el disco duro que deseamos escanear, este devolverá información acerca de todas las particiones presentes en el disco.

Primary partition(1)
type: 131(0x83)(Linux ext2 filesystem)
size: 507mb #s(1038976) s(144224640-145263615)
chs: (1023/254/63)-(1023/254/63)d (8977/145/1)-(9042/61/43)r


Como ven, el disco fué formateado con una geometría de 254 heads (cabezales) y 63 sectores (números resaltados), anoten esto para utilizarlo con parted (modo rescue) o en mi caso, testdisk.

Segunda parte: ejecutando testdisk

Lo segundo que deben hacer es ejecutar testdisk, si no lo tienen pueden instalarlo (se llama: testdisk y está en los repositorios de Debian, Ubuntu y Fedora).

al ejecutar testdisk aparece esta ventana:

formateos accidentales en discos ¿cómo recuperarse?

Nos pregunta si deseamos crear un log (llamado testdisk.log) de todas nuestras actividades, por seguridad, indiquen que sí.

De segundo, nos mostrará los discos a revisar, en mi caso:

Select a media (use Arrow keys, then press Enter):
Disk /dev/sda - 160 GB / 149 GiB - ATA SAMSUNG HM160HI
Disk /dev/sdb - 160 GB / 149 GiB - Generic External


Ya que el disco de 160Gb es un ATA Seagate que lo conecté por USB storage.

Seleccionamos el disco (flecha abajo), presionamos la tecla ENTER (INTRO, ustedes entienden .

Luego pregunta el tipo de partición:

Please select the partition table type, press Enter when done.
[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64…)
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection

Escojan “Intel” (no usé GPT en este disco).

En las opciones que salen, es donde vienen los cambios, escojan “[Geometry]“.

Luego, verán una pantalla como esta:

GNU

Acá es donde en [ Heads ] colocaremos los valores que recuperamos con gpart (en mi caso: Heads: 254 y Sectors: 63).

Presionen al terminar y ahora vamos al escaneo.

Presionen “Analyze”, luego de analizar (Quick Scan) ejecuten un “Deeper Scan” para revisar toda la superficie del disco.

Al terminar verán que encontró nuestra partición:

5 L Linux LVM 1862 42 31 19291 137 19 278904832

Presionen flecha derecha para cambiar los modos:

Modo “*” = Primaria, boot

Modo “P” = partición primaria

Modo “D” = partición borrada (útil si consigue una partición nueva que solapa una vieja)

Modo “L” = partición lógica

En algunos casos, testdisk no puede entender que es un Linux LVM, para ello podemos presionar la letra T (Change Type) y escogen el modo Linux LVM.

Nota mental: una partición linux clásica tiene un modo 0×83.

Esta partición que iba a recuperar era un grupo de volúmenes LVM, era lógica, verifico los datos con gpart (heads, sectors, sector de inicio y sector final, tamaño, etc).

Si todos los datos concuerdan, presiono ENTER y luego escojo “[ WRITE ]” para escribir los cambios al disco, deberán reiniciar (si es un disco atachado al computador) o desconectarlo (si es un USB storage) para que reconozca los cambios.

ya respiramos un poco más aliviados, ahora a recuperar el grupo de volúmenes.

Paso 3: Recuperar el grupo de volúmenes

Obviamente para este paso tu computador debe reconocer grupos de volúmenes (tener instalado el paquete lvm2), al volver a conectar el disco duro, ejecutamos el comando:

pvscan


Este buscará todos los grupos de volúmenes en todos los discos, encontrando este:

pvscan
PV /dev/sdb5 VG VgCANTV lvm2 [132,99 GiB / 57,96 GiB free]
Total: 1 [132,99 GiB] / in use: 1 [132,99 GiB] / in no VG: 0 [0 ]


Entonces lo chequeamos (para verificar consistencia):

pvck -a /dev/sdb5
Found label on /dev/sdb5, sector 1, type=LVM2 001
Found text metadata area: offset=4096, size=192512


Lo vemos con pvdisplay:

pvdisplay
--- Physical volume ---
PV Name /dev/sdb5
VG Name VgCANTV
PV Size 132,99 GiB / not usable 4,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 34045
Free PE 14837
Allocated PE 19208
PV UUID A3m31N-wy5p-0zMl-0T3q-Nx45-jQR3-1Rjc4Q


Y lo activamos:

vgchange -a y VgCANTV
49 logical volume(s) in volume group "VgCANTV" now active


Wow! 49 volúmenes (es donde tengo mis VMs de Xen de mi trabajo).

Luego de activado el volumen, vgdisplay nos retornará información:

vgdisplay
--- Volume group ---
VG Name VgCANTV
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 83
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 49
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 132,99 GiB
PE Size 4,00 MiB
Total PE 34045
Alloc PE / Size 19208 / 75,03 GiB
Free PE / Size 14837 / 57,96 GiB
VG UUID PhZqJE-44xs-F0tP-XAXr-s2jZ-LlON-5LBL0t


Al tener su propio UUID el grupo de volúmenes (y sus particiones) ya pueden ser accedidas de manera usual.

Paso 4: montando y chequeando

Uno de los peligros de usar XFS es la corrupción de los descriptores, en mi caso no hubo problemas, antes de montar ejecutamos:

xfs_check /dev/mapper/VgCANTV-volHOME


Y chequeará cualquier detalle del Filesystem, en caso de necesitar reparación, ejecutamos:

xfs_repair /dev/mapper/VgCANTV-volHOME


Si acaso hubo una pérdida de los logs de descriptores, pueden hacer que repare el sistema haciendo caso omiso de los logs y buscando los descriptores directamente del FS:

xfs_repair -L /dev/mapper/VgCANTV-volHOME


Por seguridad, le generamos un nuevo UUID a la partición XFS:

xfs_admin -U generate /dev/mapper/VgCANTV-volHOME


Y por último ya podemos montarla:

mount -t xfs /dev/mapper/VgCANTV-volHOME /media/respaldo/home


Respaldamos nuestros datos y ¡listo!, ya nos recuperamos!.

Lo bueno de herramientas como Testdisk o Gpart es que vienen incluídas en varias distribuciones LiveCD para recuperación de datos, como por ejemplo SystemRescueCD. Por desgracia no contaba ni con unidad de CD ni con mi SystemRescueUSB, pero testdisk y gpart son herramientas bastante pequeñas y se instalan en cualquier linux muy rápidamente.

12 comentarios - formateos accidentales en discos ¿cómo recuperarse?

the_wakonero -5
se me volvio a formatear con esto ke dijiste
pozimi +2
Cuanndo se te quema (como en mi caso) ya no puedes hacer nada D:
Ultrademente
Excelente info , te dejo +10 por el aporte . Si tenes ganas , fijate algunos posts mios , que hay algunas cosas interesantes sobre Linux . Saludos .
primerpatolucas
y photorec???? no te ayuda a recuperar archivos???
Ultrademente
trisomia_ciber dijo:
Ultrademente dijo:Excelente info , te dejo +10 por el aporte . Si tenes ganas , fijate algunos posts mios , que hay algunas cosas interesantes sobre Linux . Saludos .

Me gustarían mas si no usaras Ubuntu!


Jajjaja y bue che , es lo que hay !
aleiex
+10, yo también me he mandado tremendas cagadas con los discos duros por error