Tengo un disco de 3 Tb defectuoso. Hay muchos bloques defectuosos, pero todavía tiene aproximadamente 2,6 Tb de espacio utilizable y me gustaría utilizarlo para almacenar basura (música, vídeos, etc.). Al principio me encontré con el manual de un tipo. Cortó el disco en varias particiones y luego hizo RAID JBOD (solo un montón de discos) (si está interesado, hay un enlace (ruso): https://habr.com/ru/post/252211). Pero alguien en los comentarios de ese artículo mencionó que el propio mkfs puede hacer lo mismo con la tecla '-c'. Y ahora me pregunto ¿cómo funciona? Sí, hay una página de manual, que nos dice:
-c Verifique el dispositivo en busca de bloques defectuosos antes de crear el sistema de archivos. Si esta opción se especifica dos veces, se utiliza una prueba de lectura y escritura más lenta en lugar de una prueba rápida de solo lectura.
Hay un artículo de Arch Wiki que dice casi lo mismo. Comprueba el dispositivo en busca de bloques defectuosos, ¿y luego qué? La gente aquí y allá en Internet dice que marca bloques defectuosos y que el sistema operativo no los usa. ¿Cómo puedo comprobarlo? ¿Existe alguna utilidad que muestre bloques marcados para su uso posterior (creación futura de particiones, tal vez)?
Respuesta1
Es cierto man mkfs.ext4
( man 8 mke2fs
) dice lo que citaste:
-c
Verifique el dispositivo en busca de bloques defectuosos antes de crear el sistema de archivos. Si esta opción se especifica dos veces, se utiliza una prueba de lectura y escritura más lenta en lugar de una prueba rápida de solo lectura.
Pero también hay -l
:
-l filename
Lea la lista de bloques defectuosos del nombre del archivo. Tenga en cuenta que los números de bloque en la lista de bloques defectuosos deben generarse utilizando el mismo tamaño de bloque que utilizamke2fs
. Como resultado, la-c
opciónmke2fs
es un método mucho más simple y menos propenso a errores para verificar si un disco tiene bloques defectuosos antes de formatearlo, ya quemke2fs
pasará automáticamente los parámetros correctos albadblocks
programa.
Así que investiguemos man 8 badblocks
:
Nota importante: si la salida de
badblocks
se va a enviar a los programase2fsck
omke2fs
, es importante que el tamaño del bloque se especifique correctamente, ya que los números de bloque que se generan dependen mucho del tamaño de bloque que utiliza el sistema de archivos. Por esta razón, se recomienda encarecidamente que los usuarios no ejecutenbadblocks
directamente, sino que utilicen la-c
opción de los programase2fsck
ymke2fs
.
Menciona e2fsck
(también conocido como fsck.ext4
en el caso de ext4), así que revisemos man 8 e2fsck
[el énfasis es mío]:
-c
Esta opción hacee2fsck
que se utilicebadblocks(8)
el programa para realizar un escaneo de solo lectura del dispositivo para encontrar bloques defectuosos.Si se encuentran bloques defectuosos, se agregan al inodo del bloque defectuoso para evitar que se asignen a un archivo o directorio.Si esta opción se especifica dos veces, el análisis de bloques defectuosos se realizará mediante una prueba de lectura y escritura no destructiva.
Y dado que mke2fs
y e2fsck
son partes del mismo conjunto de herramientas,esperar -c
para mke2fs
funcionar de la misma manera a pesar de que su descripción no lo indique explícitamente.
Luego, para verificar los bloques defectuosos, el sistema de archivos conoce su uso dumpe2fs
. De man 8 dumpe2fs
:
-b
Imprime los bloques que están reservados como malos en el sistema de archivos.
(créditos paraesta respuesta).
Tenga en cuenta que es el sistema de archivos el que almacena la información. Para usarlo en sistemas de archivos futuros, debe guardarlo antes de destruir el actual. Y si cambia la tabla de particiones o elige un tamaño de bloque diferente para un nuevo sistema de archivos, deberá volver a calcular los números.