Linux mdadm software RAID 6: ¿admite la recuperación de corrupción de bits?


15

Wikipedia dice "RAID 2 es el único nivel RAID estándar, aparte de algunas implementaciones de RAID 6, que puede recuperar automáticamente datos precisos de la corrupción de un solo bit en los datos".

¿Alguien sabe si la implementación RAID 6 mdadm en Linux es una de esas implementaciones que puede detectar y recuperarse automáticamente de la corrupción de datos de un solo bit. Esto pertenece a CentOS / Red Hat 6 si son diferentes de otras versiones. Intenté buscar en línea pero no tuve mucha suerte.

Con tasas de error SATA de 1 en 1E14 bits, y un disco SATA de 2TB que contiene 1.6E13 bits, esto es especialmente relevante para prevenir la corrupción de datos.

EDITAR 17-jun-2015

Creo que esto es menos preocupante de lo que originalmente pensé (ver Disco duro / SSD) - detección y manejo de errores - ¿se evita de manera confiable la corrupción silenciosa de datos? para más detalles

Respuestas:


15

El software RAID de Linux no lo protegerá de la corrupción de bits y la corrupción silenciosa de datos es un problema bien conocido. De hecho, si el núcleo puede leer los datos de un disco, nunca sabría que es malo. El RAID solo se activa si hay un error de E / S al leer los datos.

Si le preocupa la integridad de los datos, debería considerar usar un sistema de archivos como Btrfs o ZFS que garantice la integridad de los datos almacenando y verificando sumas de verificación. Estos sistemas de archivos también se encargan de la funcionalidad RAID, por lo que no necesita la incursión del software del kernel si sigue ese camino.


Gracias. En caso de que sea útil para alguien, obtuve algunas ideas de búsqueda de la respuesta de chutz y vi que el responsable de mdadm (creo) dijo el 17 de febrero de 2011 que no tiene planes de agregar la capacidad de forzar la verificación de paridad en cada lectura. Ver spinics.net/lists/raid/msg32816.html
sa289

3

RAID5 y RAID6 pueden detectar y, por lo general, corregir la corrupción de bits si verifica la paridad de toda la unidad. Esto se denomina "depuración" o "comprobación de paridad" y, por lo general, tarda entre 24 y 48 horas en la mayoría de los sistemas RAID de producción. Durante ese tiempo, el rendimiento puede verse significativamente degradado. (Algunos sistemas permiten al operador priorizar el fregado sobre el acceso de lectura / escritura o debajo de él). RAID6 tiene una mayor probabilidad de corregirlo, porque puede corregirlo si tiene dos fallas en la unidad, mientras que RAID5 solo puede manejar una falla en la unidad, y las fallas en la unidad son más probables cuando está fregando debido al aumento de la actividad.


1
No es universalmente cierto que el rendimiento se degradará notablemente durante un barrido RAID. Si el exfoliante utiliza todos los recursos del sistema disponibles y es "tonto", lo hará. Pero, todas las SAN e imagino que la mayoría de los controladores RAID ejecutarán el scrub con una prioridad más baja o "agradable", ajustando la utilización de los recursos dinámicamente para que no consuma los recursos necesarios para mantener el rendimiento de la producción.
Jeremy el

Estás en lo correcto. Edité la respuesta para agregar matices.
vy32

si su matriz mdadm raid 6 es / dev / md1, entonces es el comando para verificar la paridad e intentar reparar la corrupción de un solo bit "echo check> / sys / block / md1 / md / sync_action"
BeowulfNode42

2
No "protegen contra la corrupción de bits", detectan la corrupción de bits si se friega. Vea mi pregunta aquí para más detalles.

Sugiero cambiar la respuesta a "RAID5 y RAID6 pueden reparar la corrupción de bits"
Waxhead

2

Hubiera agregado esto como un comentario pero no tengo suficiente reputación; Quería aclarar: RAID5 puede DETECTAR la corrupción de bits, pero no sabe qué unidad tiene la corrupción sin un error de lectura. Como resultado, un exfoliante no pudo solucionar esto sin un error de lectura; lo más probable es que simplemente lo registre y actualice el bit de paridad para que coincida. El algoritmo de RAID6 depende de la posición, por lo que puede detectar qué unidad contiene el error y corregir la corrupción de bits.


¡Eso sería genial si es verdad! ¿Puede proporcionar algún enlace sobre dónde está documentado?
Alek_A

2

Todas las respuestas anteriores son incorrectas con respecto a las capacidades de RAID 6. Los algoritmos RAID 6 operan byte por byte al igual que RAID 5, y si un solo byte en cualquier unidad está dañado, incluso si la unidad no indica ningún error, puede ser detectado y corregido. El algoritmo para hacerlo se explica completamente en

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

Para realizar esta verificación, las unidades de paridad P y Q también deben leerse junto con las unidades de datos. Si la paridad calculada P 'y Q' difiere sin errores de unidad, un análisis puede determinar cuál de las unidades es incorrecta y corregir los datos.

Además, si la identificación de la unidad es para una unidad que no está presente (como la unidad 137 si solo hay 15 unidades), más de una unidad está proporcionando datos corruptos PARA ESTE BYTE, lo que indica un error de error no corregible. Cuando hay mucho menos de 256 unidades en el conjunto, esto se detecta con alta probabilidad por byte, y dado que hay muchos bytes en un bloque, con una probabilidad extremadamente alta por bloque. Si la identificación de la unidad no es consistente para todos los bytes dentro del bloque RAID, nuevamente, más de una unidad está proporcionando datos corruptos, y generalmente uno puede rechazar la condición, pero siempre y cuando todas las identificaciones de la unidad sean válidas, el bloque no necesariamente necesita ser rechazado.

Se necesita más tiempo que el tiempo de verificación habitual para realizar esta corrección, pero solo se debe realizar con el cálculo del síndrome (P y Q) muestra un error.

Dicho todo esto, sin embargo, no he examinado el código mdadm para determinar si se maneja la corrupción de un solo byte. Soy consciente de que mdadm informa errores del síndrome RAID6 en la exploración mensual, pero del mensaje de error no está claro si se están corrigiendo; no detiene la matriz de unidades ni identifica ninguna unidad particular en el mensaje.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.