[Linux] 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:

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:

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

Presionen [OK] 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 0x83.

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 (del cual hice un artículo acá). 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.

 

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 16 enero 2012 en contraloría social, Cultura Libre, PlanetaLinux, Software Libre, trucos de la abuela y etiquetado en , , , , , , , , , . Guarda el enlace permanente. 16 comentarios.

  1. Exelente manual de rescate, muy agradecido por compartirlo !!
    Pido permiso para publicaro en mi blog
    Saludos.-

    • Permiso siempre concedido!, todos mis artículos son licenciados CC-by-SA y tienen derecho de copia siempre que se mencione la fuente …

      Gracias!

  2. Saludos!

    Tengo problemas con la tabla de particiones de un disco de 10GB, el caso es que el sistema lo reconoce como si fuera de 2TB:

    Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes
    255 heads, 63 sectors/track, 267349 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000

    Disk /dev/sdb doesn’t contain a valid partition table

    Entonces cuando intento ejecutar gpart, este es el error:
    *** Fatal error: ioctl(BLKGETSIZE) failed: File too large.

  3. Jesús, como siempre excelente material el que publicas.

    Por otro lado quiero seguir / publica tus entradas (todas, ya que son muy buenas) en http://www.humanbyte.net con la opcion de RSS de las entradas (https://phenobarbital.wordpress.com/feed/) , pero al tratar de hacer eso me arroja un error, te comento que no soy el editor de la pagina de humanbyte ( y no se mucho de desarrollos web)

    This page contains the following errors:
    error on line 54 at column 30: Input is not proper UTF-8, indicate encoding !
    Bytes: 0x01 0x0A 0xC2 0xA0
    Below is a rendering of the page up to the first error.

    Saludos

  4. una vez experimentando con los unicos discos que he tenido (todos dañados recuperados que conste) logre poner el mbr en solo lectura, corrobore no se podia cambiar, repeti la operacion cientos de veces pero descubri que nunca supe como lo hce, fue hace 12 anios ya.

    si llegaste a este nivel.. puede que llegues a lograr algo parecido, creo seria util para evitar desastres? si se llega encontrar alguna idea de como, avisaos

    • Había oido de que con un bit se podía colocar la MBR de solo lectura en un sistema GPT (olvidate de montar Windows y particiones tipo DOS), esto evita que cualquier instalación “accidental” ocurra … claro, nunca lo he intentado (ni tengo discos *por ahora* para probarlo), pero seguro leeré más al respecto y te comento …
      Saludos!

  5. Saludos Doña, Tuve un accidente FATAL, te resumo que el disco tenía dos particiones NTFS donde en una de ella estaban los documentos, iba a clonar una partición con Canaima (y sustituir WinBugs XP) pero en lugar de clonar partición clone fué el disco duro borrando TOOODA la información y lo grave que es la única DATA de un liceo y están que me guindan (que no sería el problema, sino recuperar los datos que fueron formateados y se sobrescribió el disco) he intentado con estos datos pero el gpart /dev/sdb me arroja

    Primary partition(1)
    type: 000(0x00)(unused)
    size: 0mb #s(0) s(0-0)
    chs: (0/0/0)-(0/0/0) d (0/0/0)-(0/0/0) r

    Primary partition(2)
    type: 000(0x00)(unused)
    size: 0mb #s(0) s(0-0)
    chs: (0/0/0)-(0/0/0) d (0/0/0)-(0/0/0) r

    Primary partition(3)
    type: 000(0x00)(unused)
    size: 0mb #s(0) s(0-0)
    chs: (0/0/0)-(0/0/0) d (0/0/0)-(0/0/0) r

    Primary partition(4)
    type: 000(0x00)(unused)
    size: 0mb #s(0) s(0-0)
    chs: (0/0/0)-(0/0/0) d (0/0/0)-(0/0/0) r

    El testdisk sólo me dió archivos corruptos (imagino que tal vez sea porque no puse la geometria) trate de restaurar las particiones pero sólo logre dañar y reinstalar Canaima, e intenten con una distro llamada CAINE GNU/Linux (http://www.caine-live.net/) usando Autopsy && Guymager pero no lo supe hacer, el paso a paso de los tutoriales (videos mayormente) difiere con los resultados y no sé que seguir, inclusive estoy con una herramienta privativa que la corrien en winBugs7 porque fué la copia no autorizada que encontre en la red (R-Studio, que me ayudo a recuperar solo unos .doc y .jpg y el resto son archivos de la 1ra vez que instalé canaima, eso es señal de mi desesperación usar software privativo) ¿Que consejo podrías darle a un aprendíz como yo?

    • phenobarbital

      Ok, Lo primero que debes hacer es conseguir un disco igual, o tal vez más grande, y ejecutar un DD (disk Dump) de todo el disco contra el otro, así, podrás utilizar cualquier herramienta de recuperación sobre la copia y no sobre el disco real, cada paso de una herramienta destructiva, pierdes la oportunidad de recuperar la data.

      Exito y suerte!

      • Ya había hecho un dd if=/dev/sdb of=/media/otro/dd y copio unos 84.7GB (el disco es de 160GB) estoy trabajando con Autopsy y aprendiendo con los “golpes”. Gracias por tu comentario.

    • la unica manera fiable que conozco es saber los principios y finales de las particones, asi como la geometria exacta.. en caso de no conseguir el disco y realizar el diskdump.. si tienes la geometria, y los inicio y fin de las particiones, puedes ejecutar salvamento directo sobre estas una vez “re”-asignadas .. y ojo lastimosamente alli el disdump no sirve, porque usa el magnetismo de los discos, esto con el software utra modificado y privatidisimo de mi massenkoh, .. o con el rescuedisk de winbuntu,,. digo wnbugs

      NOTA: ojo en el caso de disdump mosca, cada vez que debas emplear una herramienta en la copia debes realizar un nuevo disdump por herramienta distinta o intento.. lo que resulta en un proceso larrrrgo.. larrgggoo larrgg cof cof cof..

      • phenobarbital

        Ciertamente, en casos de entes en producción, debería ser algo “normal” guardar en un archivo en disco (vía testdisk o vía partx) la estructura y geometría de disco para no perderla en caso de una falla drástica de los mismos, pero sabemos que rara vez lo hacemos.

      • Alguno de ustedes tendrá tiempo para que me haga el inmenso favor de ayudarme fisicamente con el mismo? Creanme que con el desespero y presión que tengo por recuperar la información soy capaz de hacer muchas cosas, además entiendo perfectamente que hay honorarios que cubrir.

      • err deje una llave abierta ya vengo (pasos que se alejan)

        pana, puedo pero con el método anterior, y como dice pheno, si no tengo los numeros no puedo.. porque no uso ninguna herramienta windows.. recomiendfo lleves a datarecovery en parque carabobo en caracas.. cobran caro y solo dan 50% fiabilidad..

      • otra cosa, si te lo hago nunca se veran los datos en otro linux que no sea el massenkoh mio el cual es 100% incompatible con cosas windo.. inclusive inconpatible con algunas de las cposas de venenux … comenzando porque es mas viejo..

        te recomiendo como dije antes, data recovery en parque carabobo caracas..

  6. Con respecto a la compatibilidad me interesa primordialmente los archivos .doc y .ppt que son el formato donde tienen sus proyectos. Ya contacté con ellos y tocará enviar el disco mañana gracias Piccoro Lenz McMay.

  1. Pingback: [Linux] Formateos accidentales en discos, ¿cómo recuperarse? « Cursos en SmartDreams.cl

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: