20 votes

expliquer le raid10, f2 de md

Je sais comment la plupart des différents RAID fonctionnent. Mais je suis tombé sur la recommandation raid10,f2 en faisant des recherches sur le logiciel linux raid. Je ne comprends pas vraiment comment cela fonctionne sur 2 ou 3 disques. Quelqu'un pourrait-il me l'expliquer ? ou m'indiquer un très bon article qui l'explique ?

25voto

Daniel Points 2171

En fait, je pense Wikipedia l'explique mieux que les documents actuels. Voici le texte de l'article.

Le pilote RAID 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) comme un niveau unique avec quelques extensions intéressantes. La disposition standard "near", où chaque morceau est répété n fois dans une matrice de bandes à k voies, est équivalente à la disposition 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 à ceci :

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 au RAID 1. Le pilote prend également en charge une disposition "far" où tous les disques sont divisés en f sections. Tous les chunks sont répétés dans chaque section mais décalés d'un périphérique. Par exemple, les dispositions f2 sur des matrices à 2 et 3 disques ressembleraient à ceci :

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

Il est conçu pour les performances de striping d'une matrice miroir ; les lectures séquentielles peuvent être stripées, comme dans 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 à peu près égales à celles des autres raids 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 striping sur un ensemble miroir de seulement 2 disques. Les options near et far peuvent être utilisées en même temps. Les chunks de chaque section sont décalés de n périphérique(s). Par exemple, la disposition n2 f2 stocke 2×2 = 4 copies de chaque secteur, ce qui nécessite au moins 4 lecteurs :

4 drives              4 drives
--------------        -------------------
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 décalée où chaque bande est répétée o fois. Par exemple, les dispositions o2 sur les matrices à 2 et 3 disques sont disposé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 disques, n#, f# et o# sont les paramètres de l'option mdadm --layout. Linux peut également créer d'autres configurations RAID standard en utilisant le pilote md (0, 1, 4, 5, 6).

9voto

jammus Points 1796

D'après ce que j'ai lu, un f2 La matrice RAID10 conserve au moins 2 copies de chaque bloc et elles sont stockées loin les unes des autres.

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 raid5 et raid10.
...
Enfin, les options de mise en page pour le RAID10 sont l'une des options 'n', 'o' ou 'p', suivie d'un d'un petit nombre. La valeur par défaut est "n2".

n signale des copies "proches". Plusieurs copies d'un bloc de données se trouvent décalages similaires dans différents dispositifs.

o signale des copies "décalées". Plutôt que de les morceaux ne sont pas dupliqués au sein d'une bande, ce sont des bandes entières qui sont dupliquées. mais sont tournées par un dispositif de sorte que blocs dupliqués se trouvent sur différents différents. Ainsi, les copies ultérieures d'un bloc bloc sont dans le lecteur suivant, et sont un chunk plus bas.

f signaux ' loin copies (multiples copies ont des décalages très différents). Voir md(4) pour plus de détails sur la fonction 'near'. et 'loin'.

md(4)

RAID10 offre une combinaison de RAID1 et RAID0, et parfois connu sous le nom de RAID1+0. Chaque bloc de données est dupliqué un certain nombre de fois. un certain nombre de fois, et la la collection de blocs de données qui en résulte est distribués sur plusieurs lecteurs. Lorsque 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 de chaque bloc de données (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 la 2.6.18).

Quand près de ' sont choisies, les répliques copies multiples d'un morceau donné sont disposées consécutivement sur les bandes de la matrice, donc les deux copies d'un bloc de données seront probablement à la même position sur deux périphériques périphériques adjacents.

Quand loin ' répliques sont choisies, les copies multiples d'un morceau donné sont disposées assez loin les unes des autres l'une de l'autre. La première copie de tous les blocs de données blocs de données sera stripée à travers la partie initiale de tous les disques en RAID0 puis la copie suivante de tous les blocs blocs sera répartie sur une section ultérieure section ultérieure de tous les disques, en s'assurant toujours que toutes les copies d'un bloc donné sont sur des disques différents.

Le loin L'arrangement peut donner performance de lecture séquentielle égale à celle d'une matrice RAID0, mais au prix d'une dégradation des d'une dégradation des performances d'écriture.

Lorsque des répliques "décalées" sont choisies, la fonction copies multiples d'un morceau donné sont sont disposées sur des lecteurs consécutifs et à des consécutifs et à des décalages consécutifs. En fait, chaque bande est dupliquée et les copies sont décalées d'un périphérique. Cela devrait donner des caractéristiques de lecture similaires à loin' si une taille de morceaux suffisamment grande est utilisée, mais sans chercher autant pour les écritures.

Il convient de noter que le nombre de périphériques dans une matrice RAID10 n'a pas besoin d'être un multiple du nombre de répliques de chaque bloc de données, ceux ci doivent être au moins autant de périphériques que de répliques.

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

0 votes

On dirait que l'offset est la solution...

2 votes

Je pense que l'explication plus visuelle de Wikipedia est plus claire... alors je l'ai postée ici.

2voto

alphanet Points 21

C'est intéressant et bien expliqué. Cependant, le RAID1 simple a aussi la caractéristique, au moins sur le RAID logiciel de Linux, de pouvoir supporter plusieurs lecteurs en parallèle avec de très bonnes performances :

Les données sont lues à partir de n'importe quel dispositif. Le pilote tente de répartir les demandes de lecture sur tous les périphériques afin de maximiser les performances.
[ ... ] En théorie, avoir un RAID1 à N disques permettra à N threads séquentiels de lire sur tous les disques. séquentiels de lire sur tous les disques. (man 4 md, section RAID1)

Il semble que RAID10, dans sa disposition proche, soit plus adapté à ce comportement (accélérant non pas les E/S monofilaires comme RAID0 mais les E/S multi-filaires). n2f2 avec 4 disques étant 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 l'ordonnanceur RAID10 md de Linux est bien implémenté, un thread devrait 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 benchmarks.

1voto

Gediz GÜRSU Points 402

Tout d'abord mdadm R10 est un mode spécial ce n'est pas R0(R1,R1,R1..) f2 est 2 copies distantes pour la redondance.

Les deux réponses sont bonnes mais je veux faire un ajout avec des résultats de benchmark. Mais je n'ai pas pu les insérer dans la section des commentaires...

J'ai testé avec un contrôleur sata intel X79 C200 series chipset (2x6Gbps 4x3Gbps) 64GB ram Xeon 2680.

Utilisation de la ligne de référence fio :

sudo fio --refill_buffers --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=1024K --iodepth=32 --rw=read --size=5G --filename=testfile --timeout=60

remplacez read par write et vous aurez un test d'écriture ...

Results for 6x 1TB Seagate Barraccuda chunk=512k (MB/sec) : 
SingleDisk      189/183
R0              1132/1078
R10 n2 c=32k    911/350 (w parts)
R10 n2          940/311 (w parts)
R10 n2          981/262 (w parts, bs=10M)
R10 f2          1032/264 (w parts)
R0(R1+R1+R1)    578/385 (w parts)
R1(R0+R0)       550/300 (w/o parts) !!! RETEST needed 
R0(R5+R5)       686/236 (w/o parts) !!! RETEST needed 

8 Disk Western Digital Gold 18TB Datacenter Disks chunk=512k (MB/sec):
R0 c=512k           1334/1313
R10 f2 c=512k       1316/283

Note:
(w parts) --> converted and joined ext4 partitions used sdX1
(w/o parts) --> used raw disk as sdX

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X