06 noviembre 2011

Reparar pendrives dañados


Con el uso los pendrives también se deterioran. A veces, un simple formateo de la unidad puede resolver el problema, pero en otras, la información se corrompe aunque haya sido todo formateado.
El objetivo de este texto es mostrar el uso de la herramienta badblocks que busca los bloques defectuosos en un pendrive o en un disco duro extraíble.

Un poco de teoría
La información se almacena en un disco duro (o un pendrive) usando bloques. Pero, ¿qué son los bloques? Imaginad que tenéis un gran armario lleno de cajones. Vosotros guardáis vuestra ropa en los cajones de dicho armario. Pues bien, en esta analogía el armario representa el pendrive, y los cajones son los bloques, que son pequeñas divisiones de igual tamaño donde se almacena la información.
En Linux la información tarda un poco en almacenarse en los discos. Se usa la memoria RAM libre para gestionar las lecturas y escrituras en el disco. Es como si llegáis con mucha ropa al armario y antes de guardarla la ponéis encima de la cama para ordenarla. ¿Qué sucede si saco el pendrive antes de que esa información se almacene en él? La respuesta es sencilla, se pierde. En el ejemplo del armario es como cerrarlo con una llave antes de guardar la ropa. La ropa quedará encima de la cama y lo más probable es que acabe “vete a saber dónde” cuando nos vayamos a acostar y la quitemos de encima de la cama.
Esta es la razón por la que hay que desmontar los pendrives (“extraer unidad de forma segura” en los menús de Ubuntu) antes de sacarlos del puerto USB al que están conectados:

Si no lo hacemos así, se puede perder información, o incluso corromper la información que se tenga en el pendrive. En este caso, si la información ha corrompido el sistema de ficheros, con formatear el pendrive, lo tendremos como nuevo.
Volvamos al ejemplo del armario. De tanto usarlo, o usarlo mal, puede suceder que algunos cajones se rompan, por lo que no se podrá guardar ropa en ellos. También puede suceder que el cajón se rompa y queden clavos o astillas que desagarren la ropa.  Esto es lo que sucede cuando se estropean los bloques. supongamos que nuestro pendrive ha sido sometido a una tensión eléctrica muy alta o simplemente hay un defecto de fábrica que hemos tardado en detectar. Los bloques en los se almacena la información se romperán. La información que se introduzca en ellos se corromperá.
Esto se suele detectar cuando ya es demasiado tarde. Un buen día vamos a buscar la información que almacenamos el día de antes y nos encontramos que un archivo o directorios enteros muestran una información totalmente incoherente. ¿Qué hacer? La solución en este caso es sencilla, no usar los bloques que estén defectuosos. Por desgracia no todos los dispositivos permiten marcar los bloques defectuosos, pero en los que sí lo permitan podremos recuperarlos.

Badblocks: buscando bloques defectuosos
Supongamos que tenemos un pendrive que falla o sospechamos que falla. Podemos buscar los bloques defectuosos con la herramienta badblocks. Para usarla seguimos los siguientes pasos:
Se conecta el pendrive en cuestión y se ejecuta el comando mount en un terminal:

Buscamos el pendrive, generalmente el último de la lista, y anotamos su dispositivo, en este caso /dev/sdd1. Para no perdernos, con toda la información que muestra mount, podemos fijarnos en que los pendrives siempre se montan en el directorio /media, en este caso se llama /media/PENGUIN/ y buscar este directorio en la salida de mount.
Una vez localizado el dispositivo, se desmonta, pero no se desconecta y se escribe en un terminal la siguiente orden:
sudo badblocks -sw /dev/nombre del dispositivo -o bloques_malos.txt
En “/dev/nombre del dispositivo” se ha de introducir el del pendrive.
El proceso de búsqueda de los bloques defectuosos puede llevar horas. Lo que hace la aplicación es escribir en cada bloque diferentes tipos de información, esperando encontrar algún fallo a la hora de verificar lo que se ha escrito. Por ejemplo, en hacer un test a un pendrive de 8 Gb, badblocks tardó del orden de hora y media. Está fue la salida del comando:

Cuando el proceso termina, en el fichero bloques_malos.txt puede que haya una lista de números, la del número de bloque defectuoso. Este fichero se puede ver con solo hacer doble clic sobre él. Procederemos a guardar una copia de este fichero con otro nombre para compararla más adelante.
Habría que repetir el proceso anterior una segunda vez. Se volverá a generar el fichero bloques_malos.txt. Se compara el contenido de este fichero con el que se generó en el paso anterior y que se guardó con otro nombre. Si no coinciden, no se puede reparar el dispositivo usando este método (quizás por otro método sí).
Formateando la unidad
Una vez localizados los bloques defectuosos, hay que formatear la unidad. A la herramienta de formateo hay que pasarle los bloques que han resultado defectuosos. Para ello se usa el comando:
sudo mkfs.vfat  -l bloques_malos.txt -n nombre /dev/nombre del dispositivo
En el nombre se le ha de introducir un nombre que nos sirva para identificar el dispositivo. En “/dev/nombre del dispositivo” se ha de introducir el del pendrive.
Cuando finalice el formateo, los bloques defectuosos no se usarán para almacenar información. Estarán ocupados. Por lo que no os extrañe tener el pendrive completamente vacío y ver algo de espacio ocupado. Por ejemplo, el siguiente pendrive está vacío (incluso se ha vaciado la papelera y los contenidos con “rm -f”) y tiene muchos bloques defectuosos, fijaros en el espacio ocupado:
Consideraciones
¿Con esto recuperaré mi pendrive? A no ser que esté muy dañado, se podrá seguir usando sin problemas, aunque con cierta pérdida de espacio.
Siempre es bueno hacer algunas pruebas para ver si la información no se corrompe, antes de usarlo para nuestro trabajo habitual. Puede ser que el fallo sea de otro tipo y el dispositivo ya no sea recuperable. Por ejemplo, en la imagen anterior es muy sospechoso que haya 250 Mb de bloques defectuosos, de hecho, después de hacer algunas pruebas, el pendrive seguía corrompiendo la información.
Lo anterior se ha contado para pendrives, pero también se podría usar para discos duros.
En el caso de querer recuperar la información de un fichero borrado o una unidad estropeada, se puede usar la herramienta testdisk.

Fuente via: http://naudygeek.blogspot.com/2011/01/como-reparar-los-pendrives-danados.html

No hay comentarios: