Saltar al contenido

Comprobar y reparar sectores defectuosos de disco en Linux

Comprobar y reparar sectores defectuosos de disco en Linux

Los discos fallan, siendo la media de vida aceptada por la industria, para los discos giratorios o HDD, de unos 6 años. Normalmente no fallan de forma súbita, sino que empiezan a dar diferentes síntomas de no estar en estado óptimo.

No voy a entrar de lleno en esto porque daría para mucho (puede darse el típico «click» que indica un problema en la pinza, fallos catastróficos en la controladora, fallos del software del sistema operativo que ni siquiera sean del disco…) pero podemos decir que un síntoma muy común es la reubicación de sectores (sector reallocation) por parte del sistema operativo, si es que este tiene tal capacidad.

El setor de un disco es la unidad de información más pequeña con la que este puede trabajar. Un sector de disco tiene tradicionalmente 512 bytes de tamaño, aunque ciertos discos aceptan 4096 bytes. Un bloque es un conjunto de sectores, que pueden contener información de forma contigua, su tamaño es variable.

Un sector o bloque defectuoso es una sección o conjunto de secciones del disco que no pueden ya ser utilizadas porque dan fallo al leerse o escribirse por la controladora. Puede ser un fallo a nivel de transistores o un pequeño daño producido en la superficie del disco.

Normalmente, hasta que no tenemos un mínimo de 4 o más bloques reasignados (esto es, descartados por el disco para su uso futuro) no podemos ejecutar la garantía del mismo, ni tampoco deberíamos necesariamente preocuparnos, aunque sí hacer un seguimiento para reaccionar ante una degradación mayor.

En caso de no tomar medidas, eventualmente podrían reproducirse más fallos en sectores de disco, llevando a su vez a destrucción de información o incluso incapacidad de usar el disco en absoluto.

Usando Badblocks para encontrar sectores o bloques defectuosos

Un programa como badblocks nos permite analizar un dispositivo de almacenamiento en buca de sectores o bloques dañados. Puede ser una memoria o disco externo, o interno.

Para localizar nuestro disco, antes podemos utilizar la herramienta fdisk.

sudo fdisk -l 
Salida de fdisk -l para listar discos en Linux

Ahora que tenemos claro qué disco interesa, lanzaremos el comando para analizar el disco y volcar los resultados en un archivo, además podemos lanzarlo de forma no interactiva con &. y en varios discos al mismos tiempo. O podemos usar | tee para que el listado se muestre a la vez por pantalla.

sudo badblocks /dev/sdb -v > badblocks.txt &
Verificar sectores defectuosos de disco en Linux

Esta comprobación demora mucho tiempo en discos grandes. En mi caso tengo entre manos un disco por el que hay que preocuparse, ya que presenta varias decenas de sectores marcados como inutilizables.

Veremos un resultado final, con el recuento de sectores dañados.

Pass completed, 3213 bad blocks found. (3213/0/0 errors)

¿Qué hacer si encontramos sectores defectuosos?

Con nuestro detalle de sectores guardado, lo que haremos ahora es desmontar (umount) el dispositivo de disco y decirle al sistema que no se deben utilizar en adelante.

Para ello usaremos la herramienta correcta según nuestro sistema de archivos dentro del disco.

e2fsckext2/ext3/ext4
fsckOtros filesystem
Tipos de filesystem y herramienta necesaria

Es decir, para un sistema de archivos diferente a ext*.

sudo fsck -l hddcomprobado.txt /dev/sdb1

Mientras que para el caso contrario.

sudo e2fsck -l hddcomprobado.txt /dev/sdb1

Con la opción -l, le estamos diciendo a la utilidad que tome como referencia de sectores aquellos contenidos en el archivo de texto referido.

Otra opción es lanzar el siguiente comando:

sudo e2fsck -cfpv /dev/<dispositivo>

Este comando tiene la siguiente función. Requiere de un sistema basado en extN.

  • C busca sectores defectuosos y los añade a la lista
  • F fuerza un chequeo del sistema de archivos
  • P reparará los sectores si puede hacerse con seguridad
  • V es modo «verbose» para ver el progreso del comando
Resúmen con resultado de la operación anterior

Aislar sectores defectuosos de disco

Si lo que deseamos es aislar -marcar como no utilizables- aquellos sectores del disco identificados como dañados, también se puede utilizar la utilidad fsck.

Es recomendable utilizarla en conjunto con badblocks, para realizar un análisis preventivo de fallos en unidades de almacenamiento en equipos Linux. Antes de continuar, si el dispositivo está montado, lo desmontaremos.

sudo umount /dev/<dispositivo>

Ahora, desde el terminal, lanzaremos este comando:

sudo fsck -cfvr /dev/<dispositivo>

Sintaxis

  • C para comprobar los bloques de disco
  • F para forzar el chequeo
  • V para mostrar más información
  • R para modo interactivo (espera a nuestra respuesta)
fsck linux - marcar sectores defectuosos de disco como no utilizables
Ejemplo de salida para el comando anterior

Para acabar, quisiera recordarte de que debes tener un sistema de copias de seguridad fiable (probado) y sustituir el disco cuando tengas más que unos pocos sectores afectados.

Alejandro Ver todo

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

Deja tu comentario (puedes hacerlo de forma anónima)

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.