explica la incursión de md10, f2

14

Sé cómo funcionan la mayoría de los diversos RAID. Pero me topé con el raid10 recomendado , el modo f2 mientras investigaba el raid de software de Linux. Realmente no entiendo cómo funciona en 2 o 3 discos. alguien me lo puede explicar? o señalarme un artículo realmente bueno que lo explique?

xenoterracida
fuente

Respuestas:

17

De hecho, creo que Wikipedia lo explica mejor que los documentos reales. Aquí está el texto del artículo.

El controlador RAID del software del kernel de Linux (llamado md, para "dispositivo múltiple") puede usarse para construir una matriz RAID 1 + 0 clásica, pero también (desde la versión 2.6.9) como un solo nivel [4] con algunas extensiones interesantes [ 5] El diseño estándar "cercano", donde cada fragmento se repite n veces en una matriz de bandas en k, es equivalente a la disposición estándar RAID-10, pero no requiere que n divida k. Por ejemplo, un diseño n2 en unidades 2, 3 y 4 se vería así:

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..

El ejemplo de 4 unidades es idéntico a una matriz RAID-1 + 0 estándar, mientras que el ejemplo de 3 unidades es una implementación de software de RAID-1E. El ejemplo de 2 unidades es RAID 1. equivalente. El controlador también admite un diseño "lejano" donde todas las unidades se dividen en f secciones. Todos los fragmentos se repiten en cada sección, pero se compensan con un dispositivo. Por ejemplo, los diseños de f2 en matrices de 2 y 3 unidades se verían así:

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..

Está diseñado para el rendimiento de trazado de una matriz reflejada; las lecturas secuenciales se pueden dividir, como en RAID-0, las lecturas aleatorias son algo más rápidas (tal vez 10-20% debido al uso de los sectores externos más rápidos de los discos y los tiempos de búsqueda promedio más pequeños), y las escrituras secuenciales y aleatorias tienen un rendimiento similar a otras incursiones espejadas. El diseño funciona bien para sistemas donde las lecturas son más frecuentes que las escrituras, lo cual es una situación muy común en muchos sistemas. El primer 1 / f de cada unidad es una matriz RAID-0 estándar. Por lo tanto, puede obtener un rendimiento de franjas en un conjunto duplicado de solo 2 unidades. Las opciones cerca y lejos se pueden usar al mismo tiempo. Los fragmentos en cada sección están compensados ​​por n dispositivo (s). Por ejemplo, el diseño n2 f2 almacena 2 × 2 = 4 copias de cada sector, por lo que requiere al menos 4 unidades:

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..

A partir de Linux 2.6.18, el controlador también admite un diseño de desplazamiento donde cada banda se repite o veces. Por ejemplo, los diseños de O2 en matrices de 2 y 3 unidades se presentan como:

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..

Nota: k es el número de unidades, n #, f # y o # son parámetros en la opción mdadm --layout. Linux también puede crear otras configuraciones RAID estándar utilizando el controlador md (0, 1, 4, 5, 6).

xenoterracida
fuente
6

Por lo que leí, una matriz RAID10 f2 mantiene al menos 2 copias de cada bloque y se almacenan lejos una de otra.

Aquí están las secciones relevantes de las páginas del manual.

mdadm (8)

-p, --layout = Esta opción configura los detalles finos del diseño de datos para las matrices raid5 y raid10
...
Finalmente, las opciones de diseño para RAID10 son 'n', 'o' o 'p' seguidas de un pequeño número. El valor predeterminado es 'n2'.

n señala copias 'cercanas'. Varias copias de un bloque de datos están en compensaciones similares en diferentes dispositivos.

o señala copias 'offset'. En lugar de que los fragmentos se dupliquen dentro de una franja, las franjas enteras se duplican pero un dispositivo las gira para que los bloques duplicados estén en diferentes dispositivos. Por lo tanto, las copias posteriores de un bloque están en la siguiente unidad, y están un trozo más abajo.

f señala copias " lejanas " (varias copias tienen desplazamientos muy diferentes). Ver md (4) para más detalles sobre 'cerca' y 'lejos'.

md (4)

RAID10 proporciona una combinación de RAID1 y RAID0, y a veces se conoce como RAID1 + 0. Cada bloque de datos se duplica varias veces, y la colección resultante de bloques de datos se distribuye en varias unidades. Al configurar una matriz RAID10, es necesario especificar el número de réplicas de cada bloque de datos que se requieren (normalmente será 2) y si las réplicas deben estar 'cerca', 'desplazado' o 'lejos'. (Tenga en cuenta que el diseño 'offset' solo está disponible desde 2.6.18).

Cuando se eligen réplicas ' cercanas ', las múltiples copias de un fragmento dado se distribuyen consecutivamente a través de las franjas de la matriz, por lo que las dos copias de un bloque de datos probablemente estarán en el mismo desplazamiento en dos dispositivos adyacentes.

Cuando se eligen réplicas " lejanas ", las copias múltiples de un fragmento dado se presentan bastante distantes entre sí. La primera copia de todos los bloques de datos se dividirá en la primera parte de todas las unidades en forma RAID0, y luego la siguiente copia de todos los bloques se dividirá en una sección posterior de todas las unidades, asegurando siempre que todas las copias de cualquier bloque dado sean en diferentes unidades.

La disposición ' lejana ' puede proporcionar un rendimiento de lectura secuencial igual al de una matriz RAID0, pero a costa de un rendimiento de escritura degradado.

Cuando se eligen réplicas 'offset', las múltiples copias de un fragmento dado se presentan en unidades consecutivas y en compensaciones consecutivas. Efectivamente, cada banda se duplica y las copias se compensan con un dispositivo. Esto debería dar características de lectura similares a 'lejos' si se usa un tamaño de fragmento adecuadamente grande, pero sin tanta búsqueda de escrituras.

Cabe señalar que la cantidad de dispositivos en una matriz RAID10 no necesita ser un múltiplo de la cantidad de réplicas de cada bloque de datos, debe haber al menos tantos dispositivos como réplicas.

Si, por ejemplo, se crea una matriz con 5 dispositivos y 2 réplicas, entonces estará disponible un espacio equivalente a 2.5 de los dispositivos, y cada bloque se almacenará en dos dispositivos diferentes.

Zoredache
fuente
sonidos como offset es el camino a seguir ...
xenoterracide
Creo que la explicación más visual de Wikipedia es más clara ... así que la publiqué aquí.
xenoterracide
2

Eso es interesante y bien explicado. Sin embargo, RAID1 simple también tiene la característica, al menos en RAID de software de Linux, para poder sostener múltiples lectores en paralelo con un rendimiento muy bueno:

Los datos se leen desde cualquier dispositivo. El controlador intenta distribuir las solicitudes de lectura en todos los dispositivos para maximizar el rendimiento.
[...] En teoría, tener un N-disk RAID1 permitirá que N subprocesos secuenciales se lean desde todos los discos. (hombre 4 md, sección RAID1)

Parece que RAID10, en su diseño cercano, es más adecuado para este comportamiento (acelerando no E / S de un solo subproceso como RAID0 sino E / S de subprocesos múltiples). n2f2 con 4 discos es similar a RAID1 con 4 discos.

El diseño n2 con 4 discos hará ambas cosas: duplicará el rendimiento de lectura para un solo subproceso y cuadruplicará el rendimiento de lectura para dos subprocesos (si el programador md RAID10 de Linux está bien implementado, un subproceso debería leer en un par y el otro en el otro par)

Todo depende de lo que necesites! Todavía no hice puntos de referencia.

alphanet
fuente