Pourquoi RAID 1 + 6 n'est-il pas une disposition plus courante?

17

Pourquoi les niveaux RAID imbriqués 1 + 5 ou 1 + 6 sont-ils presque inconnus? L' article Wikipedia sur les niveaux RAID imbriqués manque actuellement de sections. Je ne comprends pas pourquoi ils ne sont pas plus courants que RAID 1 + 0, surtout par rapport à la mise en miroir triple RAID 1 + 0.

Il est évident que le temps de reconstruction devient de plus en plus problématique car les capacités des disques augmentent plus rapidement que leurs performances ou leur fiabilité. On me dit que RAID 1 se reconstruit plus rapidement et qu'une matrice RAID 0 de paires RAID 1 évite le problème, mais il en irait sûrement de même pour une matrice RAID 5 ou 6 de paires RAID 1. Je m'attendrais au moins à ce qu'ils soient une alternative courante à RAID 1 + 0.

Pour 16 disques de 1 To, voici mes calculs de la probabilité naïve de recourir à la sauvegarde, c'est-à-dire avec l'hypothèse simplificatrice que les disques sont indépendants avec une probabilité paire:

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

Si cela est correct, il est tout à fait clair que RAID 1 + 6 est exceptionnellement plus fiable que RAID 1 + 0 pour seulement une réduction de 25% de la capacité de stockage. Comme c'est le cas en général, le débit d'écriture théorique (sans compter les temps de recherche) est la capacité de stockage / la taille de la baie × le nombre de disques × le débit d'écriture du disque le plus lent de la baie (les niveaux RAID avec redondance ont une amplification d'écriture plus élevée pour les écritures qui ne remplissez pas une bande mais cela dépend de la taille des morceaux), et le débit de lecture théorique est la somme des débits de lecture des disques de la matrice (sauf que RAID 0, RAID 5 et RAID 6 peuvent toujours être théoriquement limités par les débits de lecture de lecteur les plus lents, le deuxième le plus lent et le troisième le plus lent respectivement). Autrement dit, en supposant des lecteurs identiques, ce serait respectivement 8 ×, 7 ×,

En outre, envisagez un quadruple RAID 0 de triplets RAID 1, c'est-à-dire une triple mise en miroir RAID 1 + 0 de 12 disques, et un sextuple RAID 6 de paires RAID 1, c'est-à-dire RAID 1 + 6 de 12 disques. Encore une fois, ce sont des disques identiques de 1 To. Les deux configurations ont le même nombre de lecteurs (12), la même quantité de capacité de stockage (4 To), la même proportion de redondance (2/3), le même débit d'écriture maximal (4 ×) et le même débit de lecture maximal ( 12 ×). Voici mes calculs (jusqu'à présent):

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

Oui, cela peut sembler exagéré, mais lorsque la triple mise en miroir est utilisée pour séparer un clone pour la sauvegarde, RAID 1 + 6 peut tout aussi bien être utilisé, simplement en gelant et en supprimant 1 de chaque disque de tous sauf 2 du RAID 1 paires, et ce faisant, il a toujours une bien meilleure fiabilité lorsqu'il est dégradé que la matrice RAID 1 + 0 dégradée. Voici mes calculs pour 12 disques dégradés par 4 de cette manière:

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

Cependant, le débit de lecture pourrait être dégradé jusqu'à 6 × pendant cette période pour RAID 1 + 6, tandis que RAID 1 + 0 n'est réduit qu'à 8 ×. Néanmoins, si un disque tombe en panne alors que la matrice est dans cet état dégradé, la matrice RAID 1 + 6 aurait 50 à 50 chances de rester à environ 6 × ou d'être limitée à 5 ×, tandis que la matrice RAID 1 + 0 le serait être limité à un goulot d'étranglement 4 × . Le débit d'écriture ne doit pas être affecté (il peut même augmenter si les lecteurs pris pour la sauvegarde sont les lecteurs les plus lents limitants).

En fait, les deux peuvent être considérés comme une «triple mise en miroir» car la matrice RAID 1 + 6 dégradée est capable de séparer un groupe RAID 6 supplémentaire de 4 disques. En d'autres termes, cette configuration RAID 1 + 6 à 12 disques peut être divisée en 3 baies RAID 6 dégradées (mais fonctionnelles)!

Alors, est-ce juste que la plupart des gens ne sont pas entrés dans les mathématiques en détail? Verrons-nous plus de RAID 1 + 6 à l'avenir?

James Haigh
la source
2
Votre calcul de débit ne semble pas avoir pris en compte l'amplification d'écriture pour créer la parité.
JamesRyan
1
@JamesRyan: Oui, j'ai en effet considéré que la parité doit être écrite. C'est à cela que sert la «capacité de stockage / taille de la baie» - l'inverse est le facteur d'amplification d'écriture, sans compter l'amplification d'écriture supplémentaire associée aux disques SSD. Notez que cela inclut également l'amplification en écriture de la redondance RAID 1. Fondamentalement, le facteur d'amplification d'écriture est égal à l'inverse de 1 moins la proportion de redondance. Ainsi, une redondance de 50% donne un facteur d'amplification d'écriture de 2; La redondance de 62,5% (10/16) donne un facteur d'amplification d'écriture d'environ 2,67 (16/6).
James Haigh
1
non c'est incorrect. Chaque écriture RAID6 prend 6 E / S et chaque écriture RAID1 prend 2 E / S, celles-ci sont multiplicatives. Donc, en RAID 1 + 6, chaque écriture prendra 12 E / S, pour RAID 10, c'est 2 E / S. Le débit d'écriture sur 12 disques sera 1x pour RAID1 + 6 et 6x pour RAID10!
JamesRyan
@JamesRyan: Oh, je vois où vous en êtes maintenant - pour les écritures qui sont inférieures à une bande complète, le facteur d'amplification d'écriture peut doubler pour RAID 1 + 6, réduisant ainsi de moitié le débit d'écriture maximal. Pour une bande complète, oui, il y a 12 écritures dans l'exemple 6 × 2, mais vous oubliez que c'est pour 4 morceaux de données. Pour 4, 3, 2, 1 morceaux respectivement, les facteurs d'amplification d'écriture sont (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3,33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, ce qui donne des débits d'écriture maximum de 4 ×, 3,6 ×, 3 ×, 2 ×. Pour RAID 1 + 0 4 × 3, c'est (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1 donnant un 4 × constant. …
James Haigh
2
Vous avez déclaré sur la base de vos calculs que RAID1 + 6 a le même débit d'écriture que RAID10 avec des triplets. En réalité, RAID1 + 6 n'a même pas à distance le débit d'écriture de RAID10, donc vos calculs ou les hypothèses sur lesquels ils sont basés sont faux . J'essayais de vous aider à comprendre pourquoi, si vous refusez d'écouter alors nous pourrions perdre notre temps mais c'est vous qui le perdez.
JamesRyan

Réponses:

17

En général, je dirais que RAID 1 + 0 aura tendance à être plus largement utilisé que 1 + 5 ou 1 + 6 car RAID 1 + 0 est suffisamment fiable et offre des performances légèrement meilleures et un stockage plus utilisable.

Je pense que la plupart des gens considéreraient l'échec d'une paire RAID 1 complète au sein du groupe RAID 1 + 0 comme un événement assez incroyablement rare qui vaut la peine d'éclater les sauvegardes - et ne sont probablement pas trop enthousiastes à l'idée d'obtenir moins de 50% de leur physique disque comme espace utilisable.

Si vous avez besoin d'une meilleure fiabilité que RAID 1 + 0, alors foncez! ..mais la plupart des gens n'en ont probablement pas besoin.

Shane Madden
la source
1
Le problème que j'ai avec RAID 1 + 0 est qu'il a un mauvais rapport de fiabilité au stockage. Si RAID 6 était arbitrairement extensible à n'importe quel nombre de parités (en dessous de n - 1), alors pour les mêmes disques, vous pourriez obtenir à la fois un stockage accru et une meilleure fiabilité que RAID 1 + 0. Pour l'exemple ci-dessus, s'il était possible d'avoir RAID 6 avec 4 parités, vous auriez 50% de stockage en plus et un débit d'écriture maximum que RAID 1 + 0 tout en ayant une fiabilité exceptionnellement plus élevée. RAID 6 avec 3 ou 4 parités aurait un bon compromis fiabilité-stockage.
James Haigh
4
@JamesHaigh RAID 6 vs RAID 1 + 0 est une discussion très différente de RAID 1 + 6 vs RAID 1 + 0, vous avez un peu changé de sujet. Le raidz3 de ZFS semble être de votre ressort? Quoi qu'il en soit, à votre point, il y a certains avantages de performance que RAID 1 + 0 maintient par rapport à RAID 6, tels que les petites écritures monobloc devant toucher un nombre beaucoup plus petit de disques (et de retour à raidz3, ZFS gère cela intelligemment en écrivant plusieurs copies complètes au lieu d’écrire sur tous les disques pour de petites écritures)
Shane Madden
Désolé, oui, je pense que c'est vraiment ce que je recherche. Depuis ce dernier commentaire, j'ai écrit une nouvelle question spécifiquement sur le RAID avec 3 parités ou plus . Ce serait mieux que RAID 1 + 6 je pense. Il serait également plus flexible et plus simple d'obtenir le compromis souhaité. Vous voudrez peut-être continuer sur cette question.
James Haigh
3
RAID 6 ne peut pas être étendu linéairement, car il ne fonctionne pas de cette façon. Le calcul du syndrome pour la deuxième parité ne s'adapte pas de manière triviale à un tiers. Mais vous pouvez assez facilement faire des groupes RAID 6 plus petits - il n'y a aucune vraie raison pour laquelle vous devez faire 14 + 2, et pourriez plutôt faire 2 + 2 ou 4 + 2 et gagner beaucoup de fiabilité.
Sobrique
1
@JamesHaigh Ce que vous semblez vouloir, c'est un raidz8 à 12 voies. Basé sur la logique qui entre dans les calculs de parité, cela va arrimer les processeurs à perpétuité même avec des données triviales. La parité simple est essentiellement XOR (facile). La double parité est quelque chose à voir avec les carrés (pas difficile, mais pas facile). La parité triple est basée sur un cube ou similaire (difficile). La parité 4, 5, 6, 7 ou 8 exige des calculs encore plus importants (selon une échelle exponentielle) (qui pourraient nécessiter des ordinateurs quantiques pour suivre). N'oubliez pas que lorsque la forme grandit, il y a une augmentation ZÉRO des IOPS. Pour les médias, qui s'en soucie? Pour les VM, ça tue.
killermist
16

La réponse pratique se situe quelque part à l'intersection des spécifications du contrôleur RAID matériel, de la taille moyenne des disques, des facteurs de forme des disques et de la conception du serveur.

La plupart des contrôleurs RAID matériels sont limités dans les niveaux RAID qu'ils prennent en charge. Voici les options RAID pour un contrôleur HP ProLiant Smart Array:

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

note: "l'adm" est juste un triple miroir

Les contrôleurs RAID LSI prennent en charge: 0, 1, 5, 6, 10, 50, and 60

Ces contrôleurs sont donc uniquement capables de RAID 50 et 60 en tant que niveaux imbriqués. LSI ( née Dell PERC ) et HP constituent l'essentiel du marché des adaptateurs de stockage pour serveurs d'entreprise. C'est la principale raison pour laquelle vous ne voyez pas quelque chose comme RAID 1 + 6 ou RAID 61 sur le terrain.

Au-delà de cette considération, les niveaux RAID imbriqués au-delà de RAID 10 nécessitent un nombre relativement important de disques. Compte tenu des capacités de disques de plus en plus disponibles aujourd'hui (avec des disques SAS et SATA 3,5 pouces nearline), couplées au fait que de nombreux châssis de serveurs sont conçus autour de cages de disques 8 x 2,5 pouces, il n'y a pas beaucoup d'opportunité de configurer physiquement RAID 1+ 6 ou RAID 61.

Les domaines où vous pouvez voir quelque chose comme RAID 1 + 6 seraient des solutions RAID logicielles de châssis de grande taille. Linux MD RAID ou ZFS en sont définitivement capables. Mais à ce moment-là, la panne du disque peut être atténuée par des disques de secours à chaud ou à froid. La fiabilité du RAID n'est plus vraiment un problème ces jours-ci, à condition d'éviter le niveau de RAID toxique et les combinaisons matérielles (par exemple les disques RAID 5 et 6 To). De plus, les performances de lecture et d'écriture seraient abstraites par des couches de hiérarchisation et de mise en cache. Les charges de travail de stockage moyennes bénéficient généralement de l'une ou de l'autre.

Donc, au final, il semble que le besoin / la demande n'est tout simplement pas là.

ewwhite
la source
1
Il y a une demande sous forme de réplication de baies. Je connais plusieurs sites qui font de la DR multisite, qui est pratiquement du RAID 10 ou 5 ou 6 répliqué sur un site distant distant (RAID 10 ou 5 ou 6). En grande partie - au-delà d'un certain niveau de fiabilité du disque, vos processeurs, contrôleurs, réseaux, alimentation, climatisation, datacentre-catching-fire constituent de plus grandes menaces pour votre fiabilité.
Sobrique
1
Je ne pense pas que l'OP ait même envisagé la réplication ou l'utilisation multisite.
ewwhite
1
Non, probablement pas. Comme vous le dites - il n'y a tout simplement pas de demande car c'est exagéré. C'est le seul cas d'utilisation auquel je peux penser quand il n'est pas exagéré :)
Sobrique
J'ai (brièvement) configuré quelque chose comme un raid 6 + 1- un syncmirror local Netapp créera une copie identique de lui-même et multiplexera les lectures sur les deux plex, tout en mettant en miroir les écritures. Il est principalement utilisé pour la migration de Netapp V-Series vers de nouveaux LUN principaux, mais si je voulais doubler ma fiabilité, je pourrais le faire avec cela.
Basil
12
  • Vous avez des rendements décroissants sur la fiabilité. Il est peu probable que RAID 6 aggrave les défaillances, même sur des disques SATA désagréables avec un taux UBER de 1 sur 10 ^ 14. Sur les lecteurs FC / SAS, votre UBER est de 1 sur 10 ^ 16 et vous obtenez également beaucoup plus de performances.

  • La fiabilité du groupe RAID ne vous protège pas contre une suppression accidentelle. (vous avez donc besoin des sauvegardes de toute façon)

  • au-delà de certains niveaux de RAID, vos chances de défaillance composée sur les disques deviennent plus faibles que la défaillance composée de l'infrastructure de support (alimentation, réseau, fuite d'air, etc.)

  • Ecrire une pénalité. Chaque écriture entrante sur votre RAID 61 déclenchera 12 opérations d'E / S (naïvement). RAID 6 est déjà pénible dans les scénarios de «bas niveau» en termes d'E / S par écriture aléatoire TB. (et dans un niveau supérieur, votre taux d'échec est de toute façon 100 fois meilleur)

  • ce n'est pas une «réduction de 25%», c'est une réduction supplémentaire de 25%. Votre 16 To se transforme en 6 To. Vous obtenez donc 37,5% de stockage utilisable. Vous avez besoin de 3 fois plus de disques par capacité et de 3 fois plus d'espace de centre de données. Vous obtiendriez probablement plus de fiabilité en fabriquant simplement des ensembles RAID6 plus petits. Je n'ai pas fait le calcul, mais essayez - par exemple, les sommes de RAID 6 en ensembles 3x 3 + 2 (15 disques, moins de surcharge de stockage que votre RAID10). Ou faire des miroirs à 3 voies à la place.

Cela dit - il est plus courant que vous ne le pensez de faire de la DR multisite. J'exécute des baies de stockage répliquées où j'ai des groupes RAID RAID5 / 6 / DP asynchrones ou synchrones sur un site DR. (Ne faites pas de synchronisation si vous pouvez l'éviter - ça a l'air bien, c'est en fait horrible).

Avec mes NetApps, c'est un métrocluster avec quelques agrégats en miroir. Avec mes VMAX, nous avons Symmetrix Remote Data Facility (SRDF). Et mes 3PAR effectuent la copie à distance.

C'est cher, mais fournit des niveaux de DR de «centre de données prenant feu».

En ce qui concerne les miroirs triples - je les ai utilisés, mais pas en tant que mesures directes de résilience RAID, mais plutôt en tant que clones complets dans le cadre d'une stratégie de sauvegarde. Synchronisez un troisième miroir, divisez-le, montez-le sur un serveur séparé et sauvegardez-le en utilisant une infrastructure entièrement différente. Et parfois, faites pivoter le troisième miroir comme option de récupération.

Le point que j'essaie de faire est que, dans mon expérience directe en tant qu'administrateur de stockage - dans un parc de ~ 40 000 broches (oui, nous remplaçons des dizaines de disques quotidiennement) - nous avons dû recourir à des sauvegardes pour une variété de raisons au cours des 5 dernières années, mais aucune d’elles n’a été une panne de groupe RAID. Nous discutons des mérites relatifs et du temps de récupération acceptable, du point de récupération et des fenêtres d'interruption. Et le fondement de tout cela est TOUJOURS le coût de la résilience supplémentaire.

Notre gamme prédispose tous les nettoyages et pannes de supports, et épargne et teste agressivement les disques.

Même s'il y avait une implémentation RAID appropriée, le rapport coût-avantages n'est tout simplement pas là. L'argent dépensé sur l'espace de stockage serait mieux investi dans une rétention plus longue ou un cycle de sauvegarde plus fréquent. Ou des communications plus rapides. Ou simplement des broches généralement plus rapides, car même avec des nombres de résilience identiques, une reconstruction plus rapide des pièces de rechange améliore la probabilité de défaillance de votre composé.

Je pense donc que je proposerais donc la réponse à votre question:

Vous ne voyez pas très souvent les RAID 1 + 6 et 1 + 5, car les avantages en termes de coûts ne se cumulent tout simplement pas. Compte tenu d'une somme d'argent limitée et du besoin de mettre en œuvre une solution de sauvegarde en premier lieu, tout ce que vous faites, c'est dépenser de l'argent pour réduire votre fréquence de panne. Il existe de meilleures façons de dépenser cet argent.

Sobrique
la source
«La fiabilité du groupe RAID ne vous protège pas contre une suppression accidentelle. (vous avez donc besoin des sauvegardes de toute façon) »- Je n'ai pas laissé entendre que cela rend les sauvegardes inutiles (je suis bien conscient que RAID n'est pas une sauvegarde ). J'implique en fait l'inverse en disant «probabilités cumulatives de recourir à la sauvegarde» - je le prends comme étant donné que les sauvegardes sont une pratique standard. Je suis d'accord avec ce point, cependant, il est présenté comme contrant mon raisonnement sur RAID 1 + 6, ce qui n'a pas de sens.
James Haigh
«RAID 61» - RAID 6 + 1 serait une matrice RAID 1 de matrices RAID 6. C'est une imbrication inversée, et je pense que cela aurait beaucoup moins de fiabilité. C'est-à-dire, que se passe-t-il si 3 disques tombent en panne dans la même matrice RAID 6 imbriquée? Cette matrice RAID 6 imbriquée entière n'a-t-elle pas besoin d'être reconstruite? Les mêmes disques imbriqués en RAID 1 + 6 pourraient supporter ces mêmes 3 pannes de disque sans mettre hors ligne les disques qui fonctionnent.
James Haigh
«Au-delà de certains niveaux de RAID, vos chances d'une défaillance composée sur les disques deviennent inférieures à une défaillance composée de l'infrastructure de support (alimentation, réseau, fuite de l'air conditionné, etc.)»; «C'est une réduction supplémentaire de 25%» - Vrai et vrai, c'est une disposition d'imbrication exagérée. Mais alors pourquoi une Terre utiliserait-elle une matrice RAID 0 de triplets RAID 1? Merci de m'avoir rappelé la mise en miroir triple RAID 1 + 0! «Je n'ai pas fait le calcul du nombre»; "Ou faire des miroirs à 3 voies à la place." - Vous devriez vraiment faire quelques calculs avant de donner un cas de support comme contre-exemple. Ces calculs devraient être explorés…
James Haigh
1
Mon expérience directe est la suivante: j'ai 40 000 broches dans mon domaine, dans une variété de configurations. Nous n'avons pas connu d'échec de groupe de raid au cours des 5 dernières années. J'ai utilisé des miroirs triples, mais pas pour la résilience - ils servent à faire des copies de clones pour des raisons de sauvegarde. J'ai utilisé des répliques multisites pour des raisons de reprise après sinistre - que j'ai utilisées - mais aucune de celles-ci n'a été nécessaire pour les défaillances RG non plus.
Sobrique
1
Vous vous méprenez sur la pénalité en écriture. C'est que pour un seul écrasement, vous devez lire à partir de vos deux périphériques de parité, calculer la parité, réécrire sur vos périphériques de parité twp et votre bloc cible. Ainsi 6 entrées / sorties par «écriture». Il ne s'agit pas d'une limitation de logiciel ou d'implémentation. Vous atténuez partiellement avec une bonne mise en cache en écriture, mais seulement partiellement.
Sobrique
3

Les systèmes modernes et avancés n'implémentent pas de telles formes parce qu'ils sont excessivement compliqués, complètement inutiles et contraires à tout semblant d'efficacité.

Comme d'autres l'ont souligné, le rapport de l'espace brut à l'espace utilisable est essentiellement de 3: 1. Il s'agit essentiellement de trois copies (deux copies redondantes). En raison du coût de calcul de «raid6» (deux fois supérieur, s'il est en miroir) et de la perte d'IOPS qui en résulte, cela est très inefficace. Dans ZFS, qui est très bien conçu et réglé, la solution équivalente, en termes de capacité, serait de créer une bande de miroirs à 3 voies.

Par exemple, au lieu d'un miroir de formes raid6 / raidz2 à 6 voies (12 disques au total), ce qui serait très inefficace (pas non plus quelque chose que ZFS ait un mécanisme à mettre en œuvre), vous auriez 4 miroirs à 3 voies (également 12 disques). Et au lieu de 1 lecteur IOPS, vous auriez 4 disques IOPS. Surtout avec les machines virtuelles, c'est une grande différence. La bande passante totale pour les deux formes peut être très similaire dans les lectures / écritures séquentielles, mais la bande de miroirs à 3 voies serait certainement plus réactive avec la lecture / écriture aléatoire.

Pour résumer: raid1 + 6 est généralement peu pratique, inefficace, et sans surprise, personne de sérieux sur le stockage n'envisagerait de développer.

Pour clarifier la disparité IOPS: Avec un miroir de formes raid6 / raidz2, à chaque écriture, les 12 disques doivent agir comme un seul. Il n'y a aucune possibilité pour la forme totale de diviser l'activité en plusieurs actions que plusieurs formes peuvent effectuer indépendamment. Avec une bande de miroirs à 3 voies, chaque écriture peut être quelque chose que seul un des 4 miroirs doit traiter, de sorte qu'une autre écriture qui arrive n'a pas à attendre que la forme omnibus entière soit traitée avant de regarder d'autres actions .

killermist
la source
2

Puisque personne ne l'a dit assez directement: les performances d'écriture de Raid6 ne sont pas légèrement inférieures. C'est horrible au-delà de toute description s'il est mis sous charge.

L'écriture séquentielle est OK et tant que la mise en cache, la fusion d'écriture, etc. est capable de le couvrir, tout semble correct. Sous une charge élevée, les choses semblent mauvaises et c'est la principale raison pour laquelle une configuration 1 + 5/6 n'est presque jamais utilisée.

Florian Heigl
la source
Je suis d'accord, mais c'est principalement parce que ce que vous avez dit n'est qu'une version très résumée de ce que j'ai dit. Et bien sûr, je suis d'accord avec moi-même.
killermist
1

Cherchez fois

Le problème est que l' amplification de la recherche d' écriture se comporte très différemment de l' amplification du débit d' écriture . L'amplification minimale du débit d'écriture avec parité se produit lorsqu'une bande entière est écrite à la fois (appelons cet adjectif `` pleine bande '') mais l'amplification de recherche d'écriture minimale se produit, à l'inverse, lorsque toute l'écriture suivant une recherche dans le périphérique virtuel s'inscrit dans un seul morceau. Avant d'entrer dans les détails, les relations sont beaucoup plus faciles à transmettre sous forme de tableaux:

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

où n est le nombre total de disques, n₁ est le nombre de disques dans les groupes RAID 1 et n₅ et n₆ sont le nombre de groupes dans les matrices RAID 5 ou RAID 6 respectivement. Les exemples se rapportent à l'exemple à 12 lecteurs de la question (les lignes pertinentes sont «*bolded* '); des exemples pour les niveaux RAID 1 + 0, 1 + 5, 1 + 6 sont respectivement 4 × 3, 6 × 2, 6 × 2.

Notez que seul le facteur d'amplification du débit d'écriture pleine bande est directement lié à la proportion de redondance. Les cas à un seul bloc sont plus compliqués pour ceux qui ont la parité. Ils surviennent parce que l'écriture d'un seul bloc nécessite de lire le plus simple des morceaux de parité ou des autres morceaux de données, avant d'écrire les morceaux de parité avec le nouveau morceau de données. (Ils ne sont pas directement multiplicatifs car les lectures induites doivent plutôt être multipliées par le facteur d'amplification de débit de lecture / recherche respectif pour RAID 1, les deux étant 1; voir ci-dessous.)

Malheureusement, le choix d'une taille de bloc qui minimise cette amplification supplémentaire du débit d'écriture a pour effet secondaire de maximiser réellementl'amplification de recherche d'écriture. Pour les écritures minuscules avec un temps d'écriture négligeable par rapport au temps de recherche, les performances d'écriture du striping avec une très petite taille de bloc (pour être pleine bande) ne sont que de 1 ×, comme la mise en miroir, car elles nécessitent que tous les lecteurs cherchent à les morceaux pour chaque écriture et le débit gagné en mobilisant tous ces lecteurs ne sont pas pertinents. Il a divisé le rapport entre le temps d'écriture et le temps de recherche par le nombre de disques dans la matrice, mais pour les petites écritures, c'était déjà négligeable. Il ne serait pas logique d'utiliser une taille de bloc si petite que même les plus petites écritures soient à pleine bande. Pour les écritures suffisamment petites pour ressentir les effets de la recherche, il est préférable qu'elles tiennent dans un seul morceau.

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

Remarque: Les 2 colonnes de débit du milieu peuvent être ignorées étant donné une taille de bloc sensible qui est plus grande que les écritures pour lesquelles le temps de recherche est important, mais suffisamment petite pour que les écritures de grande taille soient pleine bande. La grande taille de bloc de la deuxième colonne de débit s'apparente davantage aux disques fractionnés. Une écriture «minuscule» est l'endroit où l'effet du débit est négligeable.

Le fait d'avoir une taille de bloc inappropriée augmente également l'effet de la recherche d'amplification pour les lectures, mais pas autant et uniquement dans le cas pleine bande.

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

Remarque: le «à n» est dû au fait que lorsqu'une seule lecture se produit simultanément, il est théoriquement possible de mobiliser tous les lecteurs pour rechercher les emplacements appropriés et lire collectivement les données pour un débit de lecture contigu maximal maximal.

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

Remarque: Encore une fois, les 2 colonnes de débit du milieu peuvent être ignorées étant donné une taille de bloc sensible. La troisième colonne de débit est à nouveau étroitement liée à la proportion de redondance.

Cependant, une taille de bloc suffisamment grande signifie que les lectures minuscules ne sont jamais pleine bande. Donc, étant donné une implémentation efficace et une taille de bloc appropriée, les performances de lecture doivent être proportionnelles au nombre de disques identiques lorsqu'elles ne sont pas dégradées.

Donc, vraiment, le «facteur d'amplification» est beaucoup plus compliqué que la formule dans la question, où seule l'amplification du débit pleine bande avait été envisagée. En particulier, les performances d'écriture de 6 × 2 RAID 1 + 6 pour des écritures simultanées suffisamment petites pour être liées à la recherche seront moins bonnes que celles de 4 × 3 RAID 1 + 0. Et pour les écritures minuscules, qui sont toutes recherchées, les performances ne peuvent être que d'environ un tiers de celles du RAID 1 + 0 4 × 3 au mieux (c'est-à-dire avec une implémentation parfaite).

Après avoir résolu ce problème, la comparaison à 12 disques n'a pas de vainqueur absolu:

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

Remarque 1: Une copie complète des données stockées est respectivement une matrice RAID 0 quadruple ou une matrice RAID 6 dégradée 4/6. Remarque 2: Il y a une chance égale de savoir si la panne de disque déconnecte l'une des 4 paires RAID 1 dégradées ou dégrade l'une des 2 paires normales.

Néanmoins, il aurait le double des performances de lecture d'une matrice RAID 6 de 6 disques et le débit d'écriture minuscule devrait être 25% meilleur (1,5 / 1,2) en raison de la répartition des lectures requises entre les paires RAID 1, et RAID 6 le fait évidemment ont des applications appropriées, donc dans les applications de haute disponibilité qui ont de plus grandes écritures ou qui sont plus préoccupés par les performances de lecture que les performances d'écriture, peut - être il est un créneau pour RAID 1 + 6 afterall. Mais ce n'est pas tout…

Complexité

Jusqu'à présent, cela est juste en théorie (principalement la combinatoire ), dans la pratique, la complexité signifie que les implémentations de RAID 1 + 6 peuvent avoir des lacunes qui manquent des opportunités et n'atteignent pas les résultats théoriques. RAID 6 est déjà plus complexe, et l'imbrication ajoute un peu plus de complexité en plus de cela.

Par exemple, il n'est pas immédiatement évident que 6 × 2 RAID 1 + 6 peut être résumé comme ayant 3 têtes de lecture virtuelles indépendantes capables de lire simultanément 3 grandes lectures contiguës à 4 × débit chacune, tout comme 4 × 3 RAID 1 + 0. L'imbrication simple de 6 paires RAID 1 dans une matrice RAID 6 à l'aide d'un RAID logiciel peut ne pas être aussi élégante; l'implémentation peut être stupide et trash (je n'ai pas encore testé cette hypothèse).

La complexité présente également un coût accru de développement d'implémentations et d'outils. Même si certaines applications peuvent bénéficier d'une telle imbrication, les améliorations peuvent ne pas valoir les coûts de développement.

James Haigh
la source
Veuillez indiquer votre source pour ces informations. Un test pratique avec des écritures grandes ou minuscules ne correspond pas aux performances que vous avez suggérées.
JamesRyan
@JamesRyan: Ce ne sont pas des informations de seconde main. Les résultats théoriques sont dérivés des principes fondamentaux du fonctionnement des niveaux RAID standard. Tout ce qui est nécessaire pour la théorie est une compréhension du fonctionnement du RAID et une compréhension de la logique et de la dérivation mathématique. Si ces calculs ont été effectués par quelqu'un d'autre, je le mentionnerais bien sûr et fournirais des liens de référence si possible. Notez qu'il existe de nombreuses façons dont une implémentation RAID 1 + 6 pratique peut être sous-optimale, mais les différentes implémentations varient. Ce que j'aimerais savoir, c'est pourquoi votre test pratique n'est pas d'accord.
James Haigh
@JamesRyan: Pouvez-vous donner plus de détails sur l'implémentation que vous avez utilisée, les lecteurs que vous avez utilisés, dans quelles configurations, avec quelles méthodes d'analyse comparative? Avez-vous essayé à la fois une matrice RAID 6 de 6 paires RAID 1 et une matrice RAID 0 de 4 triples RAID 1 avec les mêmes 12 disques et la même taille de bloc? S'agissait-il d'un RAID logiciel?
James Haigh
Puisque vous proposez une théorie non testée qui défie la sagesse conventionnelle, pourquoi ne pas détailler votre configuration là où vous l'avez montrée fonctionner? Je suppose que puisque vos mathématiques diffèrent de toutes les autres sources sur ce sujet ainsi que les tests du monde réel, la raison pour laquelle cela ne fonctionne pas est que vos mathématiques sont erronées.
JamesRyan