¿Configuración rápida RAID mdadm con unidades vacías?

9

Estoy recreando algunos discos RAID5 como RAID6 con mdadm. No hay datos sobre las unidades que me interesan.

La configuración de RAID toma un tiempo para configurar la forma: acepto que cuando hay datos que deben dividirse y calcularse la paridad, sin embargo, con estas unidades, están vacías, o al menos quiero que se consideren vacías.

Entonces, ¿hay alguna manera de omitir el cálculo de paridad y decirle a mdadm que solo configure los superbloques y termine, o de lo contrario, qué es exactamente lo que pasa todo este tiempo cuando no hay datos para moverse?

md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
      1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  resync =  1.3% (6790144/488278528) finish=409.3min speed=19604K/sec

Tenga en cuenta que no estoy hablando de --assume-cleandónde está reconstruyendo una matriz a partir de un conjunto de discos preexistentes que contienen una matriz RAID que sabe que es correcta. Estoy hablando de una matriz que debería considerarse vacía, no considerada correctamente dividida en rayas.

Entonces, por el bien de esta pregunta, los dispositivos se han rellenado previamente con ceros.

Pablo
fuente

Respuestas:

8

Puede usar, --assume-cleanpero a menos que esté usando raid5 (no raid6) y los discos estén realmente llenos de ceros, la primera vez que ejecute una verificación de paridad, aparecerá errores que deberán corregirse, por lo que no debe hacer esto. No necesita esperar a que finalice la resincronización antes de poder comenzar a usar la matriz; se moverá en el fondo hasta que termine.

psusi
fuente
Gracias psusi, esto no responde a la pregunta.
Paul
2
@Paul, umm ... sí, lo hace. No existe tal cosa como "vacío", solo está sincronizado o no sincronizado.
psusi
No aborda la pregunta que estoy haciendo. El xor de un bloque de ceros es cero. Entonces, si pudiera decirle a mdadm que el espacio puede considerarse vacío, podría crear paridad muy rápidamente. La paridad solo necesitaría calcularse correctamente cuando se escribe un bloque específico, en ese punto no importa que haya sido "incorrecto" anteriormente. Incluso podría poner a cero el disco.
Paul
2
@Paul, de nuevo, no existe tal cosa como "vacío". En general, sí, no importará que la paridad en las franjas que nunca se hayan escrito sea incorrecta, por lo que puede salirse con la suya: suponer-limpio, incluso cuando los discos no están llenos de ceros, pero la paridad incorrecta sí lo hará. ser detectado y corregido cuando mdadm hace una verificación de paridad.
psusi
2
@Paul, el significado de "vacío" no está bien definido. La mayoría de las personas lo usan para significar que no han puesto ningún archivo o sistema de archivos en el dispositivo, y no saben ni les importa lo que contiene actualmente. Si sabe que todos los discos están llenos de ceros, entonces --asum-clean es lo que desea. Tendrá su palabra de que todos los discos están a cero y no vuelven a calcular la paridad, y como usted menciona, una paridad de cero será correcta para los discos de datos de todos los ceros, al menos para raid5 (no para raid6).
psusi
2

No puede hacer esto con un RAID de software o hardware. Todas las sumas de verificación deben escribirse en los discos, lo que lleva tiempo. Puede hacerlo más tarde, pero las partes del disco en las que no está escrito tendrán que hacerlo antes de poder usarlas.

Esto se debe básicamente a que el sistema RAID y los sistemas de archivos no saben nada el uno del otro. ZFS tiene una solución para esto, pero allí las partes RAID están profundamente integradas con el sistema de archivos. Por lo tanto, el subsistema RAID realmente sabe qué partes de los discos se usan para almacenar datos y cuáles se pueden usar más tarde y luego escribirles las sumas de verificación.

Puede agregar velocidad de rendimiento al RAID de software o comenzar a usar el RAID antes de que se escriban todas las sumas de verificación, y dejar que el RAID de software se encargue de esto más adelante. Bruja es lo que escribió @psusi.

Anders
fuente
Entiendo cómo funciona RAID, estoy tratando de entender qué ocurre con las sumas de verificación en un disco vacío. Las sumas de verificación deben calcularse cada vez que se escribe algo en el disco, por lo que calcularlas antes de que haya datos presentes no tiene mucho sentido: "hacerlo más tarde" es sensato cuando no hay nada allí. No hay un sistema de archivos para considerar en este escenario.
Paul
66
Hay siempre los datos presentes. Puede que no sea importante o significativo, pero cada sector siempre tiene un valor. (¡Cero también es un valor!) La implementación de RAID no sabe qué sectores contienen datos importantes, por lo que debe tratarlos a todos como importantes y calcular su paridad.
Wyzard