¿Cómo funciona mkfs -c?

¿Cómo funciona mkfs -c?

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 utiliza mke2fs. Como resultado, la -copción mke2fses un método mucho más simple y menos propenso a errores para verificar si un disco tiene bloques defectuosos antes de formatearlo, ya que mke2fspasará automáticamente los parámetros correctos al badblocksprograma.

Así que investiguemos man 8 badblocks:

Nota importante: si la salida de badblocksse va a enviar a los programas e2fscko mke2fs, 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 ejecuten badblocksdirectamente, sino que utilicen la -copción de los programas e2fscky mke2fs.

Menciona e2fsck(también conocido como fsck.ext4en el caso de ext4), así que revisemos man 8 e2fsck[el énfasis es mío]:

-c
Esta opción hace e2fsckque se utilice badblocks(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 mke2fsy e2fsckson partes del mismo conjunto de herramientas,esperar -cpara mke2fsfuncionar 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.

información relacionada