lunes, 10 de febrero de 2014

reparando errores del disco duro (gnu/linux)


¿Quién no ha sufrido algún error de disco duro alguna vez? Muchos optan por rendirse ante esta situación, aunque, en realidad, en muchos casos la información puede llegar a recuperarse totalmente, o podemos llegar a ganar algo de tiempo extra de utilización para ese disco. ¿Y quien no quiso en esa situación más tiempo para poder realizar una copia de seguridad o para poder seguir utilizando el equipo mientras no tiene otro disco?


Cuando hablamos de erroes en discos duros, lo primero que tenemos que hacer es distinguir entre errores lógicos y físicos. Los errores lógicos son los producidos a nivel de software (un superbloque corrupto, una partición eliminada, etc), mientras que los errores físicos son aquellos que se producen a nivel de hardware, daños directos en el disco (sectores, platos o mecanismos dañados).

Errores lógicos

Los errores lógicos suelen ser los más fácilmente recuperables, mientras no se haya formateado la partición. En este último caso ya tendríamos que utilizar herramientas específicas de recuperación de datos y ver qué información se puede salvar.
Dentro de los errores más comunes que nos encontramos en este apartado se encuentran tablas FAT o superbloques corruptos, particiones eliminadas, o sectores de arranque dañados o eliminados. Para reparar este tipo de errores mi herramienta preferida es testdisk. Testdisk es capaz de solucionar todos estos problemas (y algunos más) en un tiempo espectacularmente breve y, todo ello, siendo multiplataforma. Incluso dando soporte a sistemas RAID. En alguna ocasión, para estas tareas, también he utilizado gparted (que además dispone de una distribución en modo live). Y, aunque ha funcionado correctamente, he de confesar que me sentí un poco como Indiana Jones cuando cambiaba la estatuilla de oro por un saco de arena ;)

Errores físicos

Dentro de los errores físicos, principalmente nos podemos encontrar dos escenarios: Un disco duro con errores graves o un disco duro con algunos sectores dañados.

Si nos encontramos en el primer caso (un disco duro con el motor quemado o con platos rallados), lo único que podríamos hacer es sustituir estas piezas. Para ello habría que recurrir a empresas especializadas y sería sustancialmente caro. Por lo que deberíamos evaluar si el coste compensa la recuperación de la información perdida.

Cuando nos encontramos en el segundo caso (un disco con sectores dañados), es obvio que el disco empieza a fallar, lo más probable es que el fallo total sea sólo cuestión de tiempo. Lo primero que deberemos hacer es una copia de seguridad (o backup). Lo segundo, intentar reparar los errores.

Para reparar este tipo de errores yo utilizo e2fsck en combinación con badblocks. Badblocks (incluido en el proyecto e2fsprogs) genera una lista de los sectores dañados de un disco. Su principal ventaja es que esta lista puede ser leída por otras herramientas y que puede trabajar conjuntamente con e2fsck. Utilizando e2fsck conjuntamente con badblocks mediante el comando: # e2fsck -c /foo/bar/ podremos localizar y aislar los sectores defectuosos del disco, añadiéndolos automáticamente al inodo bad block para que no puedan ser utilizados por ningún fichero. Con esto habremos ganado algo de tiempo y podremos seguir utilizando el disco, sin preocuparnos por la corrupción de datos hasta su próximo fallo o su fallo total.

Lo ideal es prevenir este tipo de fallos, y para ello es recomendable realizar tests periódicamente con smartctl y/o badblocks.
Smartctl (incluído en el paquete smartmontools) controla y monitoriza la información S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology), una tecnología incluida en la mayoría de los discos duros. En mi opinión, es recomendable complementar estos test con badblocks, ya que más de una vez S.M.A.R.T. me ha devuleto un estado correcto para un disco duro dañado.

Aunque los test realizados por smartctl, se pueden realizar "en caliente" y sobre particiones montadas, los tests basados en badblocks es recomendable realizarlos sobre particiones desmontadas. Aunque dependiendo del test y del caso en particular se podrían realizar sobre particiones montadas en modo sólo lectura ("read only" o "ro").

*La duración de estos test va a depender de diversos factores. Smartctl dispone de test rápidos y tests largos, mientras que la duración de los test realizados por badblocks va a depender de la cantidad de datos almaceados en el disco.

Happy recovering! ;)

2 comentarios:

  1. A parte de marcar sectores como defectuosos, ¿te consta si es capaz de recuperar la información de ellos?

    ResponderEliminar
    Respuestas
    1. Supongo que te referirás a badblocks y e2fsck. Hasta dónde yo sé, no. No recuerdo haber leído (en sus man) nada sobre recuperar información :/

      Eliminar