Marque sectores defectuosos en el disco duro sin formatear

22

Me he dado cuenta de que en mi servidor Ubuntu doméstico una unidad se lee solo por alguna razón. Desenterrando descubrí que esto puede suceder cuando los discos duros tienen errores. Utilicé badblocks para verificar errores, y de hecho tengo algunos sectores dañados.

En la mayoría de los casos, el único curso de acción racional es intentar hacer una copia de seguridad de los datos, eliminar el HDD y comprar uno nuevo. Sin embargo, este servidor no tiene nada que ya no haya respaldado en varios lugares, y me gustaría usarlo hasta que muera. Lo uso para transmitir música y ejecutar algunos scripts simples. En cualquier caso, sería un gran alboroto reinstalar todo.

¿Hay alguna manera de marcar estos bloques defectuosos sin formatear un disco duro?

enedene
fuente

Respuestas:

29

Supongo que está hablando de bloques físicos defectuosos en un disco y no de sistemas de archivos dañados.

Para verificar la condición física de su disco, es mejor instalar smartmontools

sudo apt-get install smartmontools

Esto funciona porque todos los discos modernos registran su estado de salud utilizando un sistema llamado SMART

Use el smartctrlcomando para leer este estado. Por ejemplo, para leer todos los atributos de la primera llamada de disco

sudo smartctl --all /dev/sda

Tenga cuidado con una línea que habla sobre el estado general de salud. Una vez que esto indica un error, es muy probable que el disco falle pronto.

SMART overall-health self-assessment test result: PASSED

Otras líneas que desea verificar son el recuento de sectores pendientes y los sectores reasignados.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

Las listas reasignadas generalmente en el campo sin procesar el número de sectores defectuosos que el disco intercambió por los que funcionan. Están pendientes los sectores que podrían reasignarse en caso de que falle la próxima escritura.

Incluso puede activar las autocomprobaciones del disco cuando sea compatible con su modelo

sudo smartctl -t long /dev/sda

Para forzar la comprobación de todos los sectores, utilice badblocksen un modo en el que se escriben los datos. Tenga en cuenta que, aunque en general es seguro ejecutarlo, pondrá una carga adicional en sus discos, lo que podría provocar que fallen. Siempre tenga una copia de seguridad de sus datos.

sudo badblocks -svvn -c 262144 /dev/sda

Si ha procesado completamente su disco de esta manera, el controlador de disco debería haber reemplazado todos los bloques defectuosos por otros que funcionen y el recuento reasignado aumentará en el registro SMART.

usuario228505
fuente
2
¿Cuál es la influencia -co el número de bloques que se prueban a la vez o, en otras palabras, por qué tiene un valor tan grande en comparación con el valor predeterminado de 64?
greole
44
El tamaño de bloque predeterminado de 1024 bytes multiplicado por el valor predeterminado de 64 bloques a la vez conduce a que solo se procesen 64k en cada solicitud. Con discos modernos con un rendimiento de hasta 150 MiB / s, esto introduce más sobrecarga de la que me siento cómodo. Quiero dar al disco la oportunidad de procesar los datos de la manera más eficiente sin esperar los datos en el bus.
user228505
Dice: / dev / sda aparentemente está en uso por el sistema; ¡No es seguro ejecutar bloques malos!
Dims
1
@Dims Le dice que no ejecute esto en un disco montado activamente. Desmonta el disco primero. En su caso, podría ser la unidad de su sistema. Así que primero arranque a un sistema de rescate.
user228505
2
@Dims Hay una opción de fuerza si desea ejecutarla de todos modos. es decir, sudo badblocks -svvn -c 262144 / dev / sda -force
ADR