Detectar sectores defectuosos en linux.

DETECTAR Y MARCAR SECTORES DEFETUOSOS EN LINUX

Tengo en mi servidor (Debian Etch) un disco duro de 80 GB con el que tenía problemas a la hora de montarlo dándome errores de sectores defectuosos y de I/O.
La solución es muy simple cuando tengamos un disco duro con sectores defectuosos sea del tipo de sistemas de ficheros que tenga.

Primero buscamos el disco duro con el siguiente comando:

# fdisk -l

Nos mostrará todos los discos duros que tengamos con sus diferentes particiones, por ejemplo, con el mio de 80 GB:
Disco /dev/hdb: 80.0 GB, 80026361856 bytes
16 cabezas, 63 sectores/pista, 155061 cilindros
Unidades = cilindros de 1008 * 512 = 516096 bytes

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hdb1 1 155061 78150712+ 83 Linux
Nos apuntamos el número de bloques que tenga la partición, en este caso /dev/hdb1 tiene 78150712 bloques. Utilizamos ahora badblocks con la partición e indicando su sectores:

# badblocks /dev/hdb1 78150712 > bloquesmalos.hdb1 &

Todo los sectores defectuosos lo guardamos en un fichero (por ejemplo, bloquesmalos.hdb1) y utilizamos el ampersand (&) para que se quede el proceso en background y poder cerrar la sesión, dejando el badblocks buscando sectores, porque puede tardar dependiendo de los sectores que haya — a mi me tardo casi 3 días — que después podremos saber si ha terminado el proceso con el comando:

# ps aux | grep badblocks

Una vez que tengamos el fichero (yo tenía 16610 sectores defectuosos :P) utilizamos mkfs o e2fsck. Yo en mi caso utilice mkfs, porque e2fsck no permite ejecutarlo en background, aunque este último paso no suele tardar tanto.

Ahora entonces ejecutamos mkfs con mi tipo de sistema de ficheros que es ext3:

# mkfs.ext3 -l bloquesmalos.hdb1 -v /dev/hdb1 > mkfs.hdb1 &

Le damos el fichero que creó badblocks, le indicamos la partición y si queremos que nos vuelque el resultado en un fichero. Una vez comprobado que el proceso ha terminado — el mismo comando que para badblocks — comprobamos cuantos GB nos ha quitado.

Así que montamos la unidad y con el siguiente comando veremos que nos ha hecho:

# df -h

Nos mostrará las particiones con su capacidad, por ejemplo el mio ahora de 80 GB hay 74 GB, había 6 GB de sectores defectuosos.

Toda la infomación está sacada del blog de Charlie en http://blog.charli.es/

Anuncios

2 comentarios en “Detectar sectores defectuosos en linux.

  1. uno dijo:

    me parece leer en el manual de mkfs.ext3 que es mejor no usar la opcion -l sino, usar el comando “e2fsck-c” que hace el mismo efecto con menos riesgos de cagarla:

    -l filename
    Read the bad blocks list from filename.
    Note that the block numbers in the bad
    block list must be generated using the
    same block size as used by mke2fs. As a
    result, the -c option to mke2fs is a much
    simpler and less error-prone method of
    checking a disk for bad blocks before
    formatting it, as mke2fs will automati‐
    cally pass the correct parameters to the
    badblocks program.

  2. nikitux dijo:

    Estuve leyendo tu post y esta muy bueno pero leo una parte al principio que dice “no importa el tipo de sistemas de ficheros que tenga”

    Empezé haciendo las pruebas y todo iba bien hasta que quise formateas con mkfs.ntfs y no existe la posibilidad de la opción -l donde direccionamos el fichero con los badblocks. Si lo hiciste con algun disco en NTFS sería buenisimo si lo posteas..

    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