martes, septiembre 17, 2013

Tragedia de 500 GB

PRÓLOGO

Diana dice que el disco externo de su ordenador ya no funciona. Se oye como gira, pero Windows no lo reconoce... "Tete, ¿me ayudas?"

PRIMER EPISODIO - NIVEL LÓGICO

El disco me aparece a mí como dispositivo /dev/sdb

marcos@marcos-xm1:~$ ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 may 13 11:05 /dev/sda
brw-rw---- 1 root disk 8,  1 may  7 13:06 /dev/sda1
brw-rw---- 1 root disk 8,  2 may  7 13:06 /dev/sda2
brw-rw---- 1 root disk 8,  5 may  7 13:06 /dev/sda5
brw-rw---- 1 root disk 8, 16 may 13 13:48 /dev/sdb


Pero no veo ninguna tabla de particiones:

marcos@marcos-xm1:~$ sudo fdisk -l /dev/sdb
marcos@marcos-xm1:~$


dmesg devuelve mensajes que desaniman (sdb: unknown partition table), así que el objetivo número uno es salvar el máximo de datos de cualquier manera y luego ya veremos cómo los recopongo:

marcos@marcos-xm1:~$ sudo dd if=/dev/sdb of=sdb.img
0+0 registros leídos
0+0 registros escritos
0 bytes (0 B) copiados, 4,2576e-05 s, 0,0 kB/s


¡Uuups!.. es que ni siquiera tratar de sacar los bits a palo seco funciona. ddrescue (que es como un dd, pero especializado en el rescate de datos) tampoco lee nada. testdisk pasa olímpicamente de la unidad.

Parece que no voy a poder solucionar el problema con un teclado, sino que necesitaré un destornillador.

SEGUNDO EPISODIO - NIVEL FÍSICO MACROSCÓPICO

Fernando me dio en su día una idea: quizás un golpe haya dañado la tarjeta electrónica de control. Así que compro un disco de segunda mano gemelo (idéntico modelo e idéntico firmware) que hará de donante. Desmonto las dos tarjetas PCB, las intercambio y vuelvo a montar.

Izquierda paciente, derecha donante

Pero incluso tras el transplante, el paciente no mejora. El fallo debe de estar en otra parte... ¿pero dónde? Sólo veo la posibilidad de una operación a corazón abierto.

TERCER EPISODIO - NIVEL FÍSICO MICROSCÓPICO

Entorno limpio, guantes de látex, pulsera antiestática. Al abrir el disco veo que uno de los cabezales de lectura/escritura anda suelto por el interior. En ese momento se me suelta también el alma de sus fijaciones y se me cae a los pies.

No es una garrapata, es un cabezal

La cara visible del plato no parece estar rayada. Los datos están ahí, ¡maldita sea! Así que el único clavo ardiendo al que aferrarse es la opción del híbrido: plato del disco original con cabezales del donante. Me decido a mudar los platos con datos al cuerpo del donante. Al inspeccionar me doy cuenta de que la operación va a durar algo más de lo previsto: no es un disco duro de un plato, sino de dos. Desatornillo el eje del motor de rotación y... aquí acaba la historia con parada cardiorrespiratoria sin que yo aún lo sepa.

ÉXODO

Cuando un disco duro tiene más de un plato están todos ellos montados en una vertical y mantenidos equidistantes con anillos metálicos espaciadores. Por los huecos que dejan los platos entran los cabezales (ver figura). Todos los platos giran a la vez y así los sectores permanecen alineados en rotación.


Mantener esa alineación es importante porque los datos de un fichero se encuentran repartidos entre todos los sectores de las caras en una vertical y son leídos y escritos por los cabezales simultáneamente. Si se pierde la alineación es como si mantienes las páginas de un libro en su sitio, pero dentro de cada página sacudes las letras y las repartes al azar. Ni siquiera el título o el índice del libre es después legible.

Yo habría esperado que los dos platos del disco duro estuvieran fijados entre sí a través del anillo espaciador, pero al desatornillar el eje del motor me di cuenta de que había supuesto mal: el plato superior ya giraba de por libre, el inferior no. El resto ya es tragedia griega de la buena: tratar de mantener los dos platos alineados a pulso fue un chiste, sacrificar completamente al donante (que aún funcionaba) quitándole sus propios platos y metiendo los del paciente fue un acto de desesperación, y tratar de realinear los platos al tuntún el resto de la noche, intento tras intento, cuando fracciones de micra son decisivas en el éxito de la misión fue una absoluta pérdida de tiempo.

R.I.P. - Lo siento de verdad, Diana
Nota mental nr. 1: No en vano se vende equipo profesional para hacer este tipo de transplantes.

Nota mental nr. 2: Teniendo en cuenta que el motor del paciente funcionaba bien, también podría haber optado por dejar los platos (alineados) en su sitio y mudar el brazo con cabezales del donante al cuerpo del paciente. Si la historia hubiera acabado mejor... nunca lo sabremos y sinceramente, no tengo ganas de tener que probarlo nunca.

4 comentarios:

Anónimo dijo...

Gracias por tu esfuerzo y dedicación, Marcos. Fue una gran pérdida, pero, por lo menos, murió en buenas manos. :-(

Diana

El Salsero dijo...

*snif*
Qué historia tan bonita! Qué cantidad de giros y altibajos! Cómo hemos sentido nuestros corazones latir más rápido con cada nueva idea para salvar al pequeño disco duro, y cómo hemos llorado al aproximarse el inevitable final trágico!

Esta historia tiene todos los elementos de una superproducción de Hollywood. Con Tom Hanks interpretando al disco duro. ;-)

Marcos dijo...

No, Tom Hanks hace de Bárcenas. Yo soy el ingeniero que llega después de la destrucción de los discos y dice "Everybody stand back! I know regular expressions!"...

Anónimo dijo...

Muy bueno el relato. Y qué grande que esté basado en hechos reales. Lástima que acabara mal.
Por un momento me parecía un capítulo de "How it's made" con los que suelo quedarme abobado mirándolos. Alguna vez pensé en lo de los transplantes, pero veo que es de todo menos fácil.
Habrá que ir mirando algún SSD para Diana...

Alejandro.