Linux comprueba RAID6 tres veces más rápido, a cambio de 512 MB de RAM

Linux comprueba RAID6 tres veces más rápido, a cambio de 512 MB de RAM

Un desarrollador descubre una forma sorprendentemente simple de eliminar un viejo cuello de botella

image

La comprobación de arreglos RAID de varios terabytes en Linux se ha triplicado gracias a un cambio en el orden de lectura de los datos. El desarrollador David Guillén Fandos logró ese resultado en la utilidad raid6check. El parche se incluyó en el código fuente de mdadm, que gestiona los arreglos RAID por software. Se aceleró una utilidad de diagnóstico independiente, no todo el subsistema de discos de Linux.

Antes del cambio, raid6check procesaba de forma secuencial una franja de datos en cada unidad. Ese enfoque generaba muchas operaciones pequeñas y no permitía aprovechar completamente las capacidades de la subcapa de discos. Ahora la utilidad agrupa la lectura de varias franjas en lotes, reduciendo la sobrecarga y cargando las unidades con porciones de trabajo de mayor tamaño.

Para el nuevo esquema, el desarrollador eligió un búfer de 512 MB. Según su estimación, aumentar más la memoria apenas aportaba aceleración adicional. La comprobación se hizo más rápida gracias a un distinto orden de las operaciones de entrada/salida, no por un nuevo algoritmo de cálculo de paridad. El precio por la ganancia fue una mayor carga sobre la memoria RAM del servidor.

El incremento de rendimiento de tres veces se obtuvo en un arreglo compuesto por seis discos duros convencionales de 4 TB cada uno. Para la prueba se emplearon un núcleo moderno de Linux y un sistema con amplia memoria RAM disponible. El desarrollador espera un resultado parecido en configuraciones cercanas, pero no ha presentado mediciones en SSD, en otras cantidades de discos ni en servidores con memoria limitada.

La utilidad raid6check comprueba RAID6, donde dos conjuntos de información de control permiten detectar errores y recuperar datos en caso de fallo de unidades. El programa compara la información de paridad en cada franja e intenta identificar el disco problemático. En el modo normal el arreglo permanece accesible y la comprobación no escribe datos, salvo que se active explícitamente la corrección automática.

La aceleración tiene limitaciones. Según la documentación, raid6check se ejecuta solo en un arreglo RAID6 sano y no degradado. La utilidad se niega a comprobar un arreglo con un disco ausente o averiado. La actualización tampoco acelera RAID5, controladores hardware, ZFS ni el mecanismo de comprobación habitual a través de la interfaz del núcleo md, porque el código se cambió exclusivamente en la utilidad de espacio de usuario.

La optimización no elimina otras causas de corrupción. Por ejemplo, el error de escritura directa O_DIRECT, tratado con anterioridad, pudo causar desincronización del contenido de los discos del arreglo por software. La corrección actual cambia solo la forma de leer y verificar los datos en raid6check. El aumento de velocidad no debe considerarse una reparación de las causas de la corrupción de la información.

El nuevo código ya fue aceptado en el repositorio principal de mdadm; sin embargo, la versión oficial más reciente, la 4.6, se publicó en marzo de 2026, antes de que apareciera el parche. Por tanto, la versión incluida en una distribución no necesariamente admite el procesamiento por lotes. Para obtener la aceleración será necesario compilar mdadm con el cambio correspondiente o disponer de un paquete de la distribución que incorpore el parche.