Saltar al contenido principal
hard-driveINFO

badblocks: la prueba de disco que su propio manual te dice que no ejecutes

badblocks busca bloques defectuosos en un dispositivo, y una de sus opciones borra hasta el último byte del disco. Lo que recomienda de verdad el manual, qué modo es seguro y cuándo probar el disco es justo lo que no debes hacer.

Por Eric Gerard · Editor · Save My Disk6 min de lecturaPhoto via Pexels

badblocks es una de esas herramientas a las que la gente recurre cuando un disco empieza a comportarse de forma extraña. Está en casi cualquier sistema Linux, suena exactamente a lo que necesitas, y una de sus opciones borrará el disco que intentabas diagnosticar. El manual es inusualmente directo sobre todo esto, así que veamos lo que dice realmente.

Qué hace, y qué no hace

La descripción es una sola línea: badblocks busca bloques defectuosos en un dispositivo. Lo que produce es una lista.

Ese es todo su trabajo. No repara nada. La reasignación de sectores la gestiona el firmware del disco según su propio calendario, no un escáner en espacio de usuario. La lista existe para entregarse a e2fsck o mke2fs, de modo que el sistema de archivos sepa qué bloques debe dejar en paz.

Esto lo sitúa en la misma categoría que smartctl, que informa de los atributos SMART sin repararlos tampoco. Ambos te dicen algo. Ninguno arregla nada.

La opción que borra tu disco

De todo lo que hay aquí, esta es la parte que conviene recordar.

La opción -w ejecuta una prueba en modo escritura. Escribe los patrones 0xaa, 0x55, 0xff y 0x00 en todos los bloques del dispositivo, vuelve a leer cada uno y los compara. Es una prueba minuciosa precisamente porque utiliza toda la superficie.

El manual incluye una advertencia explícita:

Nunca uses la opción -w en un dispositivo que contenga un sistema de archivos existente. ¡Esta opción borra los datos! (en el texto original: «Never use the -w option on a device containing an existing file system. This option erases data!»)

No hay deshacer, ni conservación parcial, ni un "solo sobrescribe las partes defectuosas". Se escribe en todos los bloques.

Varios discos duros apilados sobre una superficie blanca, que muestran sus placas de circuito verdes y azules al descubierto y un conector SATA.
Varios discos duros apilados sobre una superficie blanca, que muestran sus placas de circuito verdes y azules al descubierto y un conector SATA.

Los modos seguros

Por defecto, badblocks realiza una prueba no destructiva de solo lectura. Al ejecutarlo sin ninguna opción de modo, lee el dispositivo e informa de lo que no consigue leer. No se escribe nada.

La opción -n añade una prueba no destructiva de lectura y escritura: escribe patrones pero va restaurando el contenido original sobre la marcha. El manual la recomienda como sustituta de -w cuando hay un sistema de archivos presente, y es honesto sobre la contrapartida: es más lenta, pero conservará tus datos.

-n y -w son mutuamente excluyentes, lo cual es una pequeña misericordia.

La recomendación que casi nadie sigue

Aquí viene la parte que sorprende a quienes llevan años usando esta herramienta. El manual dice, en la propia descripción:

se recomienda encarecidamente que los usuarios no ejecuten badblocks directamente, sino que utilicen la opción -c de los programas e2fsck y mke2fs (en el texto original: «it is strongly recommended that users not run badblocks directly, but rather use the -c option of the e2fsck and mke2fs programs»)

El motivo es el tamaño de bloque. Los números de bloque que produce badblocks dependen del tamaño de bloque que usa el sistema de archivos, y el valor por defecto es de 1024 bytes. Si tu sistema de archivos usa otro y no has pasado -b, los números de la salida no se refieren a los bloques que tú crees. Ejecutar el escaneo a través de e2fsck -c o mke2fs -c implica que el tamaño de bloque es correcto por construcción.

Así que el planteamiento honesto es este: badblocks es un componente, y las herramientas que lo invocan suelen saber invocarlo mejor que tú.

Por qué se niega a tocar un dispositivo montado

Normalmente badblocks rechazará una prueba de lectura y escritura o no destructiva sobre un dispositivo montado, porque cualquiera de las dos puede bloquear el sistema o dañar el sistema de archivos, incluso si está montado en solo lectura.

Existe una opción -f para anular esa negativa, y el comentario del manual al respecto es una de las líneas más memorables de una página man de Linux:

Esto puede anularse con la opción -f, pero casi nunca debería usarse: si crees que eres más listo que el programa badblocks, casi con toda seguridad no lo eres. (en el texto original: «This can be overridden using the -f flag, but should almost never be used --- if you think you're smarter than the badblocks program, you almost certainly aren't.»)

Lo correcto es desmontar el dispositivo. El manual admite exactamente una excepción: un /etc/mtab que afirme erróneamente que un dispositivo está montado.

Las opciones que conviene conocer

Unas cuantas opciones cambian la forma de una ejecución:

  • -b define el tamaño de bloque. Por defecto, 1024. Es la que hace que la salida tenga sentido o no lo tenga.
  • -c define cuántos bloques se prueban a la vez. Por defecto, 64.
  • -p repite el escaneo hasta que no aparezcan nuevos bloques defectuosos en ese número de pasadas consecutivas. Por defecto, 0, es decir, una sola pasada.
  • -e aborta después de un número dado de bloques defectuosos. Útil para responder a "¿hay alguno?", y el manual señala que produce una lista posiblemente incompleta, así que no la uses cuando quieras la imagen completa.
  • -o escribe la lista en un archivo con el formato que esperan e2fsck -l y mke2fs -l.
  • -s muestra el progreso, lo que importa porque una pasada completa en un disco grande se mide en horas.

Cuándo probar el disco es la decisión equivocada

Este es el juicio que el manual no puede hacer por ti.

Una pasada completa de badblocks lee, o lee y escribe, todos los bloques del dispositivo. En un disco sano es un ejercicio largo pero inofensivo. En un disco que ya está fallando, son horas de carga adicional sobre un hardware que ya está sufriendo, y horas durante las cuales no estás rescatando nada.

Si los datos aún importan, el orden es: primero clonar, después investigar. Clonar con una herramienta diseñada para soportes dañados, que reintenta y salta de forma inteligente en vez de insistir sobre el mismo sector ilegible, saca tus bytes del disco mientras el disco todavía gira. Lo tratamos en la guía sobre clonar un disco que falla con ddrescue. Ejecuta después tus pruebas sobre la imagen, tantas veces como quieras, sin nada que perder.

Selección editorial
4.5 / 5

Cuando el escaneo confirma que el disco está fallando

Fundada en 2004Garantía de 30 díasVersión gratuita 2 GB
Ver la oferta

La versión corta

badblocks busca bloques defectuosos y anota lo que encuentra. No repara nada.

El modo por defecto es de solo lectura y seguro. -n escribe y restaura. -w borra el dispositivo entero, y el manual dice que nunca se use donde exista un sistema de archivos. El manual también recomienda no llamar a badblocks directamente en absoluto, sino a través de e2fsck -c o mke2fs -c, para que el tamaño de bloque sea el correcto. Si se niega a ejecutarse porque el dispositivo está montado, desmóntalo en lugar de recurrir a -f.

Y si el disco se está muriendo en vez de resultar simplemente sospechoso, no dediques sus horas restantes a probarlo. Cópialo antes.

El comportamiento descrito aquí, incluidos los patrones del modo escritura, la advertencia contra -w, la recomendación de usar e2fsck y mke2fs en lugar de badblocks directamente, la negativa ante un dispositivo montado y los valores por defecto, está tomado de la página de manual badblocks(8) tal como se distribuye con e2fsprogs 1.47.0. Las opciones y los valores por defecto pueden variar entre versiones; consulta el manual del sistema que estés usando realmente. Los enlaces comerciales llevan el atributo rel="sponsored nofollow"; puede aplicarse una comisión de afiliado sin coste adicional para ti.

Selección editorial
4.5 / 5

Recupera los datos de tu disco duro → EaseUS

Escaneo gratis · archivos borrados, formateados, perdidos · Windows y Mac

Fundada en 2004Garantía de 30 díasVersión gratuita 2 GB
Ver la oferta

Preguntas frecuentes

¿badblocks repara los sectores defectuosos?

No. Su propia descripción dice que busca bloques defectuosos en un dispositivo. Lo que produce es una lista. La reparación, en el sentido de reasignar un sector que está fallando, la realiza el firmware del disco, no badblocks. La salida está pensada para pasarse a e2fsck o mke2fs, de modo que el sistema de archivos pueda evitar esos bloques.

¿Qué opción de badblocks destruye los datos?

La prueba en modo escritura, -w. Escribe los patrones 0xaa, 0x55, 0xff y 0x00 en todos los bloques del dispositivo y después vuelve a leer cada uno para compararlo. El manual incluye una advertencia explícita: nunca uses -w en un dispositivo que contenga un sistema de archivos existente, porque esta opción borra los datos. Usa -n en su lugar, que es más lento pero conserva lo que hay.

¿Es cierto que el manual desaconseja ejecutar badblocks directamente?

Sí, y es fácil pasarlo por alto. El manual afirma que se recomienda encarecidamente que los usuarios no ejecuten badblocks directamente, sino que utilicen la opción -c de los programas e2fsck y mke2fs. El motivo es el tamaño de bloque: los números de bloque que genera badblocks dependen del tamaño de bloque que usa el sistema de archivos, así que un desajuste produce una lista de números que no significan lo que crees.

¿Por qué badblocks se niega a probar mi disco montado?

Porque una prueba de lectura y escritura, o no destructiva, sobre un dispositivo montado puede bloquear el sistema o dañar el sistema de archivos, incluso cuando está montado en solo lectura. La opción -f anula esa negativa, y el comentario del propio manual al respecto es tajante: si crees que eres más listo que el programa badblocks, casi con toda seguridad no lo eres. Desmonta el dispositivo en su lugar.

¿Debería ejecutar badblocks en un disco que ya está fallando?

Normalmente no. Un escaneo completo lee o escribe todos los bloques del dispositivo, lo que supone mucho trabajo adicional para un disco que ya está sufriendo, y el tiempo dedicado a probarlo es tiempo que no dedicas a rescatarlo. Si los datos aún importan, clona antes el disco con una herramienta pensada para soportes dañados y luego investiga sobre la copia.