Lo hice y lo entendí

El blog de Vicente Navarro
06 oct

Recuperando los datos de los discos de un fakeRAID

Mi viejo ordenador de sobremesa que no me había fallado nunca desde el 2005 murió hace un par de días. Creo que es la fuente de alimentación, aunque al abrirlo también he descubierto que uno de los anclajes de plástico de la placa base en los que se ancla el ventilador también se había roto y el ventilador no estaba bien sujeto. Sea como sea, he decidido no intentar arreglarlo. Uno ya no tiene tiempo para según que cosas como antes…

Lo único que quedaba era recuperar los datos del sistema. Intentar recuperar los datos de unos discos duros sin daños no sería ningún notición (los conectas a otro ordenador o los pones en una carcasa de disco USB y ya está) si no fuera porque dos de los tres discos duros del sistema estaban en fakeRAID, con RAID 0, tal como conté en Instalar Ubuntu 8.04 Hardy Heron sobre un fakeRAID.

Cuando monté el ordenador y compré aquellos dos flamantes Maxtor SATA de 200GB ya con la idea de ponerlos en RAID 0, la idea parecía muy buena, sobre todo para alguien como yo que sólo tenía los benchmarks en mente. El rendimiento de los discos en RAID 0 era brutal. Pero claro, mantener un fakeRAID tiene muchas complicaciones: Cuesta más instalar Windows (Integrar drivers de SATA/RAID en un CD de instalación de Windows XP), cuesta más instalar Linux (Instalar Ubuntu 8.04 Hardy Heron sobre un fakeRAID), te toca andar personalizando los initrd (Hibernación en Linux con TuxOnIce. Notas sobre los initrd y sobre cpio.)… Y por supuesto, que estás corriendo muchos más riesgo de pérdida de datos.

Pero eso sí, el rendimiento era mucho mejor, así que valía la pena… ¿De verdad? Bueno, al principio sí era llamativo (recuerdo que en el SiSoft Sandra batía récords) pero unos pocos años más tarde añadí al sistema un Seagate de 750GB y bueno, resulta que él sólo ya tenía mejor tasa de transferencia que los dos Maxtor de 200GB en RAID 0.

En cualquier caso, estando obsesionado con que si algún día le pasaba algo a uno de los discos lo perdería todo, he sido muy formal haciendo mis backups semanales y aunque no hubiera intentado recuperar el contenido de los discos, los muy pocos cambios de los días previos no hubieran sido ninguna gran pérdida.

Pero bueno, había que intentarlo. Había llegado el momento: Tenía dos discos Maxtor de 200GB en las manos que habían estado en un fakeRAID de una controladora NVIDIA NForce 4 y el reto era ver si sería posible acceder a su contenido. Durante muchos años me había preguntado si se podría hacer. Mi duda principalmente era: ¿Es necesaria la controladora para que poniendo los discos en otro ordenador un Linux pueda entender a los datos del fakeRAID?

Y afortunadamente, la respuesta ha sido que no.

Puse los dos discos en sendas bases convertidoras de SATA a USB, una de ellas una Sharkoon como ésta (a la que se le rompió la tapa, los discos duros ya no se sujetaban bien, y tuve que retirarla y comprar la otra de marca Zaapa):

y tras conectar las bases a un portátil con Linux y al ejecutar el bendito dmraid, el resultado no pudo ser mejor:

# dmraid -ay -v -v -v 
WARN: locking /var/lock/dmraid/.lock
NOTICE: skipping removable device /dev/sdb
NOTICE: /dev/sdd: asr     discovering
NOTICE: /dev/sdd: ddf1    discovering
NOTICE: /dev/sdd: hpt37x  discovering
NOTICE: /dev/sdd: hpt45x  discovering
NOTICE: /dev/sdd: isw     discovering
NOTICE: /dev/sdd: jmicron discovering
NOTICE: /dev/sdd: lsi     discovering
NOTICE: /dev/sdd: nvidia  discovering
NOTICE: /dev/sdd: nvidia metadata discovered
NOTICE: /dev/sdd: pdc     discovering
NOTICE: /dev/sdd: sil     discovering
NOTICE: /dev/sdd: via     discovering
NOTICE: /dev/sdc: asr     discovering
NOTICE: /dev/sdc: ddf1    discovering
NOTICE: /dev/sdc: hpt37x  discovering
NOTICE: /dev/sdc: hpt45x  discovering
NOTICE: /dev/sdc: isw     discovering
NOTICE: /dev/sdc: jmicron discovering
NOTICE: /dev/sdc: lsi     discovering
NOTICE: /dev/sdc: nvidia  discovering
NOTICE: /dev/sdc: nvidia metadata discovered
NOTICE: /dev/sdc: pdc     discovering
NOTICE: /dev/sdc: sil     discovering
NOTICE: /dev/sdc: via     discovering
NOTICE: /dev/sda: asr     discovering
NOTICE: /dev/sda: ddf1    discovering
NOTICE: /dev/sda: hpt37x  discovering
NOTICE: /dev/sda: hpt45x  discovering
NOTICE: /dev/sda: isw     discovering
NOTICE: /dev/sda: jmicron discovering
NOTICE: /dev/sda: lsi     discovering
NOTICE: /dev/sda: nvidia  discovering
NOTICE: /dev/sda: pdc     discovering
NOTICE: /dev/sda: sil     discovering
NOTICE: /dev/sda: via     discovering
NOTICE: added /dev/sdd to RAID set "nvidia_bdehcbaa"
NOTICE: added /dev/sdc to RAID set "nvidia_bdehcbaa"
RAID set "nvidia_bdehcbaa" already active
INFO: Activating stripe raid set "nvidia_bdehcbaa"
NOTICE: discovering partitions on "nvidia_bdehcbaa"
NOTICE: /dev/mapper/nvidia_bdehcbaa: dos     discovering
NOTICE: /dev/mapper/nvidia_bdehcbaa: dos metadata discovered
NOTICE: created partitioned RAID set(s) for /dev/mapper/nvidia_bdehcbaa
RAID set "nvidia_bdehcbaa1" already active
INFO: Activating partition raid set "nvidia_bdehcbaa1"
RAID set "nvidia_bdehcbaa2" already active
INFO: Activating partition raid set "nvidia_bdehcbaa2"
RAID set "nvidia_bdehcbaa3" already active
INFO: Activating partition raid set "nvidia_bdehcbaa3"
RAID set "nvidia_bdehcbaa5" already active
INFO: Activating partition raid set "nvidia_bdehcbaa5"
RAID set "nvidia_bdehcbaa6" already active
INFO: Activating partition raid set "nvidia_bdehcbaa6"
WARN: unlocking /var/lock/dmraid/.lock

Vemos que el dmraid revisa todos los discos para ver si encuentra metadatos de una de las controladoras fakeRAID que soporta. En este caso, encuentra metadatos de una controladora NForce (“nvidia metadata discovered“) en los discos /dev/sdc y /dev/sdd y así, es capaz de descubrir las particiones que podemos montar sin problemas y recuperar los datos.

Por tanto, la lección que he aprendido esta semana es que la controladora fakeRAID realmente no aporta nada más que el soporte en la BIOS para poder arrancar de los discos en RAID, pero ciertamente, todo el resto del trabajo lo hace la CPU y el sistema operativo. Y de hecho, por eso es un fakeRAID, porque la controladora realmente no hace que la existencia de un RAID sea transparente para el sistema operativo. Como nota curiosa, en el sistema también tenía MS-DOS, y el MS-DOS no necesitaba un driver especial para poder estar instalado en un sistema con fakeRAID como sí necesitan Windows y Linux, por lo que parecería que el RAID sí era transparente para MS-DOS, pero porque en realidad MS-DOS usa llamadas a la BIOS para acceder al disco y era en este caso la BIOS la que hacía el trabajo extra.

:wq

Entradas relacionadas

7 Comentarios a “Recuperando los datos de los discos de un fakeRAID”

  • RuBiCK dice:

    ! Que bueno verte de vuelta casi un año después !

    Sí es curioso, sí. No sabia que algún programa podría hablar con la bios para conseguir una IO. Mis bases informáticas se están tambaleando jajaja

  • gau dice:

    Encantado de volver a verte leerte!! Un saludo

  • Adama dice:

    ¡Ey! no es un error del RSS… ¡Has vuelto! :)

    Yo tuve la mala suerte de empezar a leerte poco antes de tu parón y me dejaste con la miel en los labios.
    Qué suerte que has tenido de no necesitar la controladora. Yo creo que no merece la pena el riesgo del RAID 0.

    Un placer leerte de nuevo, un saludo. :)

  • Jvare dice:

    Una alegría volverte a leer.

    Cuando comentas en el articulo que conectaste los dos discos, te refieres a la vez, cada uno en su dock, conectada a un puerto usb para simular el fakeraid?

  • Santiago dice:

    Con qué buena noticia me encontré hoy! Qué bueno que estés escribiendo en el blog, aprendí varias cosas acá y parece ser que seguiré aprendiéndo (mil gracias por tus entradas sobre rsync). Saludos!

Trackbacks y pingbacks:

Tema LHYLE09, creado por Vicente Navarro