¿Puede LVM marcar/evitar bloques defectuosos?

¿Puede LVM marcar/evitar bloques defectuosos?

Ya que comobtrfs no rastrea bloques defectuosos, como solución alternativaesta publicación de la lista de correo de btrfssugirió usar una configuración mdadm RAID0 subyacente para admitir badblocks.

¿Se podría utilizar LVM en lugar de mdadm para este propósito?

Respuesta1

En general, como se ha mencionado en uncomentarioAquí y en el hilo de la lista de correo al que se vinculó, los discos duros modernos que están tan agotados que tienen bloques defectuosos irreemplazables deberían descartarse. (Ha explicado por qué está interesado en esto, pero vale la pena señalarlo para otros lectores).

No creo que haya nada en LVM para evitar bloques defectuosos como tales; normalmente lo abordaría debajo de LVM, en la capa del dispositivo. Una forma de abordar el problema es utilizar el asignador de dispositivos: cree una tabla que proporcione el mapeo de sectores necesario para omitir todos los bloques defectuosos y cree un dispositivo usándolo. Una tabla así se vería así

0 98 linear /dev/sda 0
98 98 linear /dev/sda 99

etc. (esto crea un dispositivo de 196 sectores, utilizando /dev/sdapero omitiendo el sector 98). Le das esto admsetup:

dmsetup create nobbsda --table mytable

y luego cree un PV en el /dev/nobbsdadispositivo resultante (en lugar de /dev/sda).

Usando este método, con un poco de planificación anticipada, puedes incluso manejar sectores defectuosos en el futuro, de la misma manera que el firmware de una unidad: deja libres algunos sectores al final de la unidad (o incluso repartidos alrededor de la unidad, si lo deseas). para distribuir el riesgo), y luego utilizarlos para llenar los agujeros dejados por los sectores fallidos. Usando el ejemplo anterior, si consideramos que los sectores que comienzan desde, digamos, 200 son sectores de repuesto, y el sector 57 se vuelve malo:

0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99

La creación de una tabla de mapeador de dispositivos utilizando una lista de sectores defectuosos proporcionada por badblocksse deja como ejercicio para el lector.

Otra solución que funcionaría con una configuración LVM existente sería utilizarpvmoveLa capacidad de mover extensiones físicas para sacar LV de áreas defectuosas. Pero eso no impediría que esas áreas se reutilicen cada vez que se crea un nuevo LV o se cambia el tamaño o se mueve un LV existente.

información relacionada