¿Cómo funciona la paridad en una matriz RAID-5?

31

Estoy buscando construir una pequeña y agradable matriz RAID para copias de seguridad dedicadas. Me gustaría tener alrededor de 2-4 TB de espacio disponible, ya que tengo este desagradable hábito de digitalizar todo. Por lo tanto, necesito mucho almacenamiento y mucha redundancia en caso de falla de la unidad. Básicamente, también haré una copia de seguridad de las /homecarpetas de 2-3 computadoras usando uno de los clones de "Time Machine" para Linux. Esta matriz será accesible a través de mi red local a través de SSH.

Tengo dificultades para comprender cómo RAID-5 logra la paridad y cuántas unidades se requieren realmente. Uno supondría que necesita 5 unidades, pero podría estar equivocado. La mayoría de los diagramas que he visto todavía me han confundido. Parece que así es como funciona RAID-5, corrígeme ya que estoy seguro de que no lo estoy entendiendo correctamente:

/---STORAGE---\    /---PARITY----\
|   DRIVE_1   |    |   DRIVE_4   |
|   DRIVE_2   |----|     ...     |
|   DRIVE_3   |    |             |
\-------------/    \-------------/

Parece que las unidades 1-3 aparecen y funcionan como una sola unidad masiva ( capacity * number_of_drives) y las unidades de paridad respaldan esas unidades. Lo que me parece extraño es que generalmente veo más de 3 unidades de almacenamiento en un diagrama de solo 1 o 2 unidades de paridad. Digamos que estamos ejecutando 4 unidades de 1 TB en una matriz RAID-5, 3 de almacenamiento en ejecución y 1 de paridad en ejecución, tenemos 3 TB de almacenamiento real, ¡pero solo tenemos 1 TB de paridad !?

Sé que me estoy perdiendo algo aquí, ¿alguien puede ayudarme? Además, para mi caso de uso, ¿qué sería mejor, RAID-5 o RAID-6? La tolerancia a fallas es la máxima prioridad para mí en este momento, ya que se ejecutará en una red solo para uso doméstico, la velocidad no es muy crítica.

Naftuli Kay
fuente

Respuestas:

30

Simplemente XOR cada bit correspondiente de cada unidad: si pierde alguna unidad, puede reconstruir los datos que faltan.

Para el fondo:

A B (A XOR B)
0 0    0
1 1    0
0 1    1
1 0    1

Suponga que D es el XOR de las otras columnas, luego, siempre y cuando solo pierda una unidad, puede averiguar lo que perdió.

A B C D
1 0 0 1
0 1 0 1
1 1 0 0

Algunas veces el bit stripe se distribuirá entre las unidades, pero el concepto es el mismo.

Entonces, para RAID-5, no importa cuántas unidades, solo necesita 1 unidad para una paridad igual o mayor que la unidad más pequeña de la matriz que desea RAID.

RAID-5 para uso personal es probablemente mejor ya que la complejidad computacional es mucho menor que RAID-6.

RAID-6 es más complicado usando Galois Fields para calcular la paridad. Y eso puede gravar los cálculos de paridad. Sin embargo, puede perder más unidades, pero si reconstruye su matriz tan pronto como tenga una sola falla, debería estar bien con RAID-5.

Mate
fuente
Excelente respuesta Estaba pensando en una escala demasiado grande, en un disco duro real completo, en lugar de un nivel de bits. Entonces, ¿RAID-5 utiliza una unidad dedicada para la paridad, o más bien todas las unidades para la paridad? Estoy confundido sobre eso.
Naftuli Kay
2
Creo que el enfoque moderno es distribuir la paridad diagonalmente en todas las unidades. Esto tiene el efecto de acelerar el tiempo de lectura a bits de paridad ya que se pueden enviar múltiples solicitudes de E / S en paralelo a diferentes unidades, pero no me cite al respecto.
Matt
¿Existe una fórmula matemática que pueda usar para determinar la capacidad de las xunidades y yGB disponibles en cada unidad?
Naftuli Kay
2
Sí, es el (tamaño de unidad más pequeño) * (número de unidades en la matriz - 1)
Matt
1
Si la paridad es solo un XOR de los otros dos discos, ¿cómo sabe cuál de los dos discos estaba dañado? ¿Un poco de cambio en cualquiera de los discos daría como resultado un poco de cambio en la paridad?
Jay Sullivan
8

Esto es lo que creo que es un mejor diagrama para mostrar cómo funciona la paridad en RAID4 y RAID5

RAID4

Disk1  Disk2  Disk3  Disk4
----------------------------
data1  data1  data1  parity1
data2  data2  data2  parity2
data3  data3  data3  parity3
data4  data4  data4  parity4

RAID5

Disk1   Disk2   Disk3   Disk4
----------------------------
parity1 data1   data1   data1   
data2   parity2 data2   data2  
data3   data3   parity3 data3
data4   data4   data4   parity4
camster342
fuente
O echa un vistazo a este SVG en Wikipedia en.wikipedia.org/wiki/Standard_RAID_levels#/media/…
Giuseppe Crinò
4

Recomiendo leer este artículo de Wikipedia sobre Raid 5 y Raid 6

http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5_parity_handling

RAID 5 escribe un bloque de paridad en cada tira, por lo que para la tira A de una matriz de 4 discos escribe la verificación de paridad en el 4to disco, con datos en los discos 1, 2 y 3

Para la tira B, el bloque de paridad está en el disco 3, con datos en los discos 1,2 y 4 ... etc.

Si dicho disco 4 falla, los datos se pueden recuperar para la Franja B, ya que conoce los datos en los discos 1 y 2 y tiene la comprobación de paridad en el disco 3.

Si la tira B tenía una paridad de "2" y el disco 1 tiene datos de "1" y los datos del disco 2 "0", entonces el disco 4 debe haber tenido datos iguales a "1" para que el disco se escriba con datos = "1"

Todo el disco se puede recrear de esta manera, RAID 6 extiende esto al tener 2 bloques de partes por banda.

Con respecto al espacio para la incursión 5, solo perderás un disco por paridad, ya que solo escribe en el bloque de paridad por banda, mientras que con la incursión 6 perderás 2 discos pero también puedes perder dos discos en lugar del que puedes perder en Raid 5;)

¡El artículo de Wikipedia lo explica mejor!

Markfknight
fuente
3

RAID 5 usa una unidad para la paridad, independientemente de cuántas unidades de datos haya en la matriz. Esto significa que se vuelve más eficiente, en términos de espacio utilizable, cuantas más unidades se agreguen.

La paridad se logra haciendo una operación XOR a través del mismo bloque en cada unidad; El contenido de la unidad de paridad se ajusta de modo que todas las unidades XOR se pongan a cero . Esto significa que RAID 5 está restringido por la capacidad más pequeña de todas las unidades de la matriz.

RAID 6 es similar, excepto que se pueden tolerar dos fallas simultáneas de la unidad. Esto es útil porque el proceso de " recuperación " de una matriz después de una falla de una sola unidad puede ser lo suficientemente estresante como para causar que falle una segunda unidad.

sblair
fuente
Entonces, ¿eso significa esencialmente que puedo tener 4 unidades de 2 TB y 6 TB de almacenamiento efectivo y redundante?
Naftuli Kay
@TK Kocheran Con RAID 5, sí. Tenga en cuenta que el almacenamiento efectivo será un poco menor debido al sistema de archivos. Por ejemplo, mi NAS con 4 unidades de 2TB en RAID-Z1 (la versión de ZFS de RAID 5) tiene un espacio útil de 5.18TB.
sblair
Pues sí, por supuesto :) Siempre sucede de esa manera. La siguiente pregunta es qué sistema de archivos usar ...
Naftuli Kay
0

Si su objetivo es la tolerancia a fallas, RAID-6 proporcionará suficiente redundancia para perder dos unidades. Por lo general, RAID-5 solo tolerará una falla de una sola unidad.

Nate
fuente
¿Cuál es la relación de unidades a paridad (almacenamiento total) para RAID-6? drive_size * (drive_count - 2)?
Naftuli Kay
1
Además de la tolerancia a fallas para que una segunda unidad se dañe antes de que pueda reemplazar la primera, hay otra situación para la que es excelente y me he encontrado más de una vez: una unidad se daña en una matriz RAID, y así Se ordena un nuevo disco. Un tipo aleatorio que no sabe nada acerca de las matrices RAID entra en la sala de servidores con una nueva unidad en la mano, desordena la numeración y expulsa la unidad incorrecta de la matriz para reemplazarla. Bajo RAID5, su matriz se atornilla allí mismo. RAID6 significa que aún puede recuperarse.
camster342