badblocks es una utilidad disponible para Linux que permite localizar y aislar los sectores defectuosos de una unidad de disco. Este programa genera una lista de los sectores dañados en el disco que puede ser leída por otros programas, como mkfs
, a fin de evitar su uso y prevenir así problemas de corrupción y pérdida de datos. Es parte del proyecto e2fsprogs,[1] y está disponible una versión portada a sistemas BSD.[2]
Ejecutado como programa independiente, badblocks devuelve una lista de bloques defectuosos, si los hubiera. Para visualizar la lista de los bloques corruptos generada por e2fsck
o tune2fs
, bastaría con ejecutar la orden: dumpe2fs -b
.
Se trata de una buena opción a la hora de chequear problemas en un disco duro, con independencia de otras tecnologías de control de errores como SMART o las incluidas en el propio sistema de archivos.[3]
La forma más común de uso es hacer la llamada a badblocks como parte de e2fsck
, con la opción "-c"
para identificar los sectores dañados y prevenir que se almacenen datos en ellos. Esto se consigue añadiendo la lista de los sectores dañados al nodo índice de dichos sectores, previniendo que puedan ser asignados a un archivo o directorio. Puede hacerse la prueba aplicando un método de solo-lectura ("-c"
) o bien de lectura-escritura no-destructiva "-cc"
).[4]
La opción "-c"
de badblocks permite a los usuarios configurar el número de bloques que se van a examinar en cada momento. Por lo general, el uso de esta opción no suele afectar a la velocidad de escaneado.[5]
badblocks -nvs /dev/sdb
La orden anterior comprueba el disco "sdb"
en modo lectura-escritura no-destructiva, y muestra el progreso a medida que se escriben los números de bloques chequeados.
badblocks -wvs /dev/sdb6
Lo anterior comprueba la sexta partición del dispositivo "sdb"
, en modo lectura-escritura destructiva, y muestra el progreso al escribir y examinar los bloques. Todos los datos serán sobrescritos, bloque por bloque. Si se aplica al disco entero, como en el ejemplo anterior, destruirá el registro MBR, las particiones creadas y los datos almacenados en la unidad.
badblocks -wvsb 4096 /dev/sdb
Esto escribe 4 patrones diferentes en todo el disco "/dev/sdb"
, y lo verifica leyéndolo de nuevo. Es probable que los discos actuales no muestren ningún sector defectuoso, ya que por sí mismos se ocupan de descartar los sectores dañados.[6] No obstante, ejecutar el programa sobre una unidad nueva durante unos días permite una revisión completa de la superficie del disco, y junto con los datos S.M.A.R.T., sirve para determinar qué sectores han sido reasignados.
Debe notarse que la opción -w
conlleva el borrado completo de la unidad, por lo que debe evitarse su uso en toda unidad que contenga información útil para el usuario.