Categories
ubuntu

Sobreescribir sectores de disco defectuosos para forzar a que se reparen

Cuando un disco duro falla es posible que pasen dos cosas: se ha roto para siempre y no volverá a funcionar nunca más, o se han vuelto ilegibles algunos sectores y el firmware del disco puede asignarlos a una lista negra y seguir funcionando con normalidad.

Si ocurre lo primero, el disco duro acabará en el reciclado. Con lo segundo tenemos suerte y es posible forzar al disco a que intente escribir en esos sectores y así el microcontrolador del mismo se dará cuenta de lo que ocurre y los reasignará a algún lugar “sano”.

Lo primero es saber la cantidad de sectores afectados. Para ello lo mejor es arrancar con un live-cd y ejecutar este comando sobre el disco sospechoso/defectuoso:

sudo badblocks -b 1024 /dev/sdb
57373756
57373757
57373758

Si el resultado es una lista más o menos corta de números estamos de suerte y podemos realizar lo dicho anteriormente. Sino… mejor vamos comprando otro disco duro y sacando las copias de seguridad.

Ahora que sabemos los sectores afectados escribimos sobre ellos cualquier tipo de datos (en este ejemplo ceros). Evidentemente al hacer esto estamos perdiendo algunos datos, y sin saber cuales en concreto, pero por lo menos podremos acceder luego al resto de información contenida en el disco.

sudo dd if=/dev/zero of=/dev/sdb bs=1024 count=3 seek=57373756 oflag=direct
3+0 registros de entrada
3+0 registros de salida
3072 bytes (3,0 kB) copiados, 0,000918141 s, 3,3 MB/s

Y por último comprobamos que el disco ha solucionado el problema intentando volver a leer los sectores afectados:

sudo dd if=/dev/sdb of=/dev/null bs=1024 count=3 skip=57373756
3+0 registros de entrada
3+0 registros de salida
3072 bytes (3,0 kB) copiados, 0,000918141 s, 3,3 MB/s

Y si todo ha ido bien, ¡ya podemos seguir utilizando nuestro disco duro y leer nuestros datos!

Imagen: Alpha six

Leave a Reply

Your email address will not be published. Required fields are marked *