expliquer le raid de md10, f2

14

Je sais comment la plupart des différents RAID fonctionnent. Mais je suis tombé sur le mode raid10, f2 recommandé tout en recherchant le logiciel raid linux. Je ne comprends pas vraiment comment cela fonctionne sur 2 ou 3 disques. quelqu'un pourrait-il me l'expliquer? ou me pointer vers un très bon article qui l'explique?

xénoterracide
la source

Réponses:

17

en fait, je pense que Wikipedia l' explique mieux que les documents réels. Voici le texte de l'article.

Le pilote RAID du logiciel du noyau Linux (appelé md, pour "multiple device") peut être utilisé pour construire une matrice RAID 1 + 0 classique, mais aussi (depuis la version 2.6.9) en un seul niveau [4] avec quelques extensions intéressantes [ 5]. La disposition "proche" standard, où chaque bloc est répété n fois dans un réseau de bandes k-way, est équivalente à la configuration RAID-10 standard, mais elle ne nécessite pas que n divise k. Par exemple, une disposition n2 sur 2, 3 et 4 disques ressemblerait à:

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
..  ..           ..  ..  ..        ..  ..  ..  ..

L'exemple à 4 disques est identique à une matrice RAID-1 + 0 standard, tandis que l'exemple à 3 disques est une implémentation logicielle de RAID-1E. L'exemple à 2 disques est équivalent à RAID 1. Le pilote prend également en charge une disposition "éloignée" où tous les disques sont divisés en sections f. Tous les morceaux sont répétés dans chaque section mais décalés par un seul appareil. Par exemple, les dispositions f2 sur des baies à 2 et 3 disques ressembleraient à:

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
..  ..               ..   ..   ..

Ceci est conçu pour les performances de répartition d'une matrice en miroir; les lectures séquentielles peuvent être agrégées par bandes, car en RAID-0, les lectures aléatoires sont un peu plus rapides (peut-être 10 à 20% en raison de l'utilisation des secteurs externes plus rapides des disques, et des temps de recherche moyens plus petits), et les écritures séquentielles et aléatoires ont des performances égales à d'autres raids en miroir. La disposition fonctionne bien pour les systèmes où les lectures sont plus fréquentes que les écritures, ce qui est une situation très courante sur de nombreux systèmes. Le premier 1 / f de chaque disque est une matrice RAID-0 standard. Ainsi, vous pouvez obtenir des performances de répartition sur un ensemble en miroir de seulement 2 lecteurs. Les options proche et éloigné peuvent être utilisées en même temps. Les morceaux de chaque section sont compensés par n périphérique (s). Par exemple, la disposition n2 f2 stocke 2 × 2 = 4 copies de chaque secteur, nécessite donc au moins 4 disques:

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
..  ..  ..  ..        ..  ..  ..  ..  ..

Depuis Linux 2.6.18, le pilote prend également en charge une disposition de décalage où chaque bande est répétée o fois. Par exemple, les dispositions o2 sur les baies à 2 et 3 disques sont présentées comme suit:

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
..  ..         ..  ..  ..

Remarque: k est le nombre de lecteurs, n #, f # et o # sont des paramètres dans l'option mdadm --layout. Linux peut également créer d'autres configurations RAID standard à l'aide du pilote md (0, 1, 4, 5, 6).

xénoterracide
la source
6

D'après ce que je lis un f2 tableau RAID10 conserve au moins 2 copies de chaque bloc et ils stockés loin de l'autre.

Voici les sections pertinentes des pages de manuel.

mdadm (8)

-p, --layout = Cette option configure les détails fins de la disposition des données pour les tableaux raid5 et raid10
...
Enfin, les options de disposition pour RAID10 sont l'une de 'n', 'o' ou 'p' suivie d'un petit nombre. La valeur par défaut est 'n2'.

n signale des copies «proches». Plusieurs copies d'un bloc de données sont à des décalages similaires dans différents appareils.

o signale les copies «offset». Plutôt que de dupliquer des morceaux dans une bande, des bandes entières sont dupliquées mais tournées par un seul périphérique, les blocs en double se trouvent sur différents périphériques. Ainsi, les copies suivantes d'un bloc se trouvent dans le lecteur suivant et sont un morceau plus bas.

f signale les copies « éloignées » (plusieurs copies ont des décalages très différents). Voir md (4) pour plus de détails sur «près» et «loin».

md (4)

RAID10 fournit une combinaison de RAID1 et RAID0, et parfois appelé RAID1 + 0. Chaque bloc de données est dupliqué un certain nombre de fois, et la collection résultante de blocs de données est distribuée sur plusieurs lecteurs. Lors de la configuration d'une matrice RAID10, il est nécessaire de spécifier le nombre de répliques de chaque bloc de données qui sont requises (ce sera normalement 2) et si les répliques doivent être «proches», «décalées» ou «éloignées». (Notez que la disposition 'offset' n'est disponible qu'à partir de 2.6.18).

Lorsque des répliques ` ` proches '' sont choisies, les multiples copies d'un bloc donné sont disposées consécutivement sur les bandes de la baie, de sorte que les deux copies d'un bloc de données seront probablement au même décalage sur deux périphériques adjacents.

Lorsque des répliques « éloignées » sont choisies, les multiples copies d'un morceau donné sont disposées assez loin les unes des autres. La première copie de tous les blocs de données sera répartie sur la première partie de tous les lecteurs en mode RAID0, puis la copie suivante de tous les blocs sera répartie sur une section ultérieure de tous les lecteurs, en veillant toujours à ce que toutes les copies d'un bloc donné soient sur différents lecteurs.

L' arrangement « éloigné » peut donner des performances de lecture séquentielle égales à celles d'une matrice RAID0, mais au prix de performances d'écriture dégradées.

Lorsque des répliques «offset» sont choisies, les multiples copies d'un morceau donné sont disposées sur des disques consécutifs et à des décalages consécutifs. En effet, chaque bande est dupliquée et les copies sont compensées par un périphérique. Cela devrait donner des caractéristiques de lecture similaires à «loin» si une taille de bloc suffisamment grande est utilisée, mais sans autant de recherches d'écritures.

Il convient de noter que le nombre de périphériques dans une matrice RAID10 ne doit pas nécessairement être un multiple du nombre de répliques de chaque bloc de données, il doit y avoir au moins autant de périphériques que de répliques.

Si, par exemple, une baie est créée avec 5 périphériques et 2 répliques, un espace équivalent à 2,5 des périphériques sera disponible et chaque bloc sera stocké sur deux périphériques différents.

Zoredache
la source
sonne comme le décalage est le chemin à parcourir ...
xenoterracide
Je pense que l'explication plus visuelle de Wikipedia est plus claire ... alors je l'ai posté ici.
xénoterracide
2

C'est intéressant et bien expliqué. Cependant, le RAID1 ordinaire a également la fonctionnalité, au moins sur le RAID logiciel Linux, de pouvoir soutenir plusieurs lecteurs en parallèle avec de très bonnes performances:

Les données sont lues à partir de n'importe quel appareil. Le pilote tente de distribuer les demandes de lecture sur tous les appareils pour maximiser les performances.
[...] En théorie, avoir un RAID1 à N disques permettra à N threads séquentiels de lire à partir de tous les disques. (homme 4 md, section RAID1)

Il semble que RAID10, dans sa disposition proche, est plus adapté à ce comportement (accélération des E / S non monofil comme RAID0 mais des E / S multithreads). n2f2 avec 4 disques est similaire à RAID1 avec 4 disques.

La disposition n2 avec 4 disques fera les deux: doubler les performances de lecture pour un seul thread, et quadrupler les performances de lecture pour deux threads (si le planificateur Linux md RAID10 est bien implémenté, un thread doit lire sur une paire et l'autre sur l'autre paire).

Tout dépend de ce dont vous avez besoin! Je n'ai pas encore fait de repères.

alphanet
la source