Como testear discos en busca de bloques defectuosos?

Ayer me encontré con un pendrive, del que sospechaba que tenía ciertos sectores defectuosos en el disco, dado que muchas veces que guardaba archivos en el mismo, al leerlos, estos estaban corruptos.

Buscando como testear el pendrive, me encontré con una aplicación que se llama badblocks, que como su nombre lo indica, se encarga de buscar bloques defectuosos en las particiones o en discos.

La forma de usar esta aplicación es muy simple, solo basta con ejecutar

sudo badblocks /dev/sdX

donde sdX es el nombre del dispositivo, en mi caso sdb.

Esto realizará el testeo y mostrará los errores que encuentre. En el caso de que la partición ó el disco (en este caso un pendrive) no contenga errores, no mostrará nada en la salida.

Badblocks tiene un montón de opciones (man badblocks para más info 😉 ), una de las interesantes es -o, que nos permite guardar la lista de bloques malos en un archivo, el que luego puede ser pasado como parámetro al programa mkfs para decirle que, a la hora de crear el filesystem, no utilice dichos bloques 😉 .

En definitiva, los pasos para detectar y no utilizar bloques malos en un dispositivos, son los siguientes (Ojo!!!, esto borrará el contenido completo del dispositivo!!!):

# busca bloques malos y los lista en un archivo
sudo badblocks -o bloquesmalos /dev/sdX
# Crea el filesystem, ignorando los bloques malos.
sudo mkfs.vfat -l bloquesmalos /dev/sdX

(Donde sdX es el dispositivo en cuestión)

y listo 😀 .

Anuncios

4 comentarios sobre “Como testear discos en busca de bloques defectuosos?

  1. guacho publica más seguido que está bueno lo que pones!! ya además te voy a dar un trabajito si este disco mio me sigue andando mal, por ahora no.. pero cualquier cosa te mando un mail 😛

    1. Bazofie, si es un pendrive tenes que ejecutar en la consola el siguiente comando
      sudo tail -f /var/log/syslog
      después enchufas el pendrive, y vas a ver que en la consola donde ejecutaste el comando aparecen un montón de cosas como las siguientes

      Nov 22 19:37:07 mambo-tango kernel: [ 3442.837224] sd 6:0:0:0: [sdb] No Caching mode page present
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.837231] sd 6:0:0:0: [sdb] Assuming drive cache: write through
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.839719] sd 6:0:0:0: [sdb] No Caching mode page present
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.839725] sd 6:0:0:0: [sdb] Assuming drive cache: write through
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.840749] sdb: sdb1
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.843471] sd 6:0:0:0: [sdb] No Caching mode page present
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.843479] sd 6:0:0:0: [sdb] Assuming drive cache: write through
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.843486] sd 6:0:0:0: [sdb] Attached SCSI removable disk

      Donde si te fijas, en la 5 línea dice algo como
      Nov 22 19:37:07 mambo-tango kernel: [ 3442.840749] sdb: sdb1
      eso quiere decir que el dispositivo completo (el pendrive) se detecto como el dispositivo de bloques /dev/sdb, y lo más importante de todo es que se detecto que tenía una partición la que figura como “sdb1”, o sea, en definitiva, lo que buscas es el sdb1, con lo que te quedaría (en este caso) como /dev/sdb1 lo que tenes que pasarle al badblocks para que busque sectores defectuosos. Si no te llega a detectar alguna partición y aparece solo sdb, lo que quiere decir que el filesystem esta directamente en el dispositivo de bloques, sin ninguna tabla de particiones (algunos pendrives vienen así formateados), el comando te quedaría badblocks /dev/sdb
      Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s