La utilidad badblocks sigue informando "último bloque no válido"

La utilidad badblocks sigue informando "último bloque no válido"

Estoy intentando ejecutar badblocksen una unidad con una sola partición. La unidad contiene un sistema de archivos FreeBSD.

Arranco usando una unidad USB en vivo de Linux. La unidad está desmontada. La salida de fdisk -les:

   Device  Boot     Start          End    Id     System
/dev/sda1     *        63   976773167+    a5     FreeBSD

Entonces corro:

# badblocks -v /dev/sda1

Y dice:

badblocks: invalid last block - /dev/sda1

No puedo encontrar ninguna información útil sobre esto. ¿Estoy usando la badblocksutilidad correctamente aquí? ¿O es esto una indicación de que algo anda mal con el disco?

Respuesta1

No, esto no es una indicación de que algo anda mal con la unidad. Recibes este error porque badblocks acepta /dev/sda1 como argumento del último bloque en lugar de aceptarlo como dispositivo.

La sintaxis de su pregunta me parece correcta. Intente especificar el argumento del último bloque después del dispositivo:
badblocks -v /dev/sda1 976773167

Si eso no funciona, intente agregarle también el primer bloque:
badblocks -v /dev/sda1 976773167 63

Sólo para asegurarle que esto no indica que algo anda mal con su disco, aquí está el resultado cuando agrego un argumento de último bloque no válido "no":

sudo badblocks -v /dev/sdb1 no
badblocks: último bloque no válido - no


Aquí hay un ejemplo de mi historial de bash de la última vez que usé badblocks (se requiere acceso sudo para acceder a estas unidades en mi sistema):
sudo badblocks -v /dev/sdb1

Producción:

Comprobando bloques 0 a 976751967
Comprobación de bloques defectuosos (prueba de sólo lectura):

Si cancelo el proceso después de un tiempo con Ctrl+C, el resultado es:

Interrumpido en el bloque 7470720

Aquí está la sintaxis para reanudar el proceso (ver man badblocks):
badblocks -v dispositivo [último bloque] [primer bloque]

El "último bloque" es el último bloque que se leerá en el dispositivo y el "primer bloque" es donde debe comenzar a leer. Ejemplo:
sudo badblocks -v /dev/sdb1 976751967 7470720

Producción:

Comprobando los bloques 7470720 a 976751967 Comprobación de bloques defectuosos (prueba de sólo lectura):

Respuesta2

El comando badblocks en el hardware de unidad de disco moderno no vale la pena hoy en día. Esto se debe a que la placa controladora de la unidad identifica internamente los bloques defectuosos y los sustituye a partir de bloques "de repuesto" inicialmente asignados para el reemplazo automático. Si se ha quedado sin estos bloques de repuesto y tiene problemas con los bloques defectuosos, le sugiero ENCARECIDAMENTE que reemplace el disco ya que el hardware se está estropeando.

Si está buscando conocer el estado de la unidad, la mayoría de las unidades modernas admiten la interfaz de unidad SMART para informar el estado del disco. Existen muchas utilidades que indican el estado y presentan esta información sobre el estado del disco. Pruebe uno de estos.

Respuesta3

Copiaste tu comando de una página web. El guión fue reemplazado por algún carácter de guión diferente en -v. (un poco más largo que el guión normal) Escriba el comando o corríjalo de alguna manera.

Respuesta4

Si recibe este error a pesar de utilizar la sintaxis correcta y está utilizando discos grandes (por ejemplo, varios TB) con un tamaño de bloque pequeño (por ejemplo, 512 bytes), es posible que se encuentre con una badblockslimitación al usar 32 bits para los números de bloque.

Como solución alternativa, puede utilizar un bloque más grande. Para encontrar el tamaño de bloque mínimo badblockscon el que puede funcionar, simplemente puede ejecutar badblockscon diferentes valores para -by sin bloque inicial/final. Si recibe un error como este

badblocks: valor demasiado grande para el tipo de datos definido bloque final no válido: debe ser un valor de 32 bits

luego intente aumentar el tamaño del bloque (por ejemplo, -b 512a -b 1024o -b 2048) hasta que funcione. Con esto usas algo de resolución, pero es mejor que nada.

También puede utilizarlo ddrescueen este punto o ponerse en contacto con el proveedor de mantenimiento badblockspara solucionar el problema en la próxima versión.

información relacionada