Partager via


Tolérance de panne et efficacité du stockage sur les clusters Azure Local et Windows Server

Cet article explique les options de résilience disponibles et décrit les exigences de mise à l’échelle, l’efficacité du stockage et les avantages généraux et les compromis de chacun d’eux.

Overview

Les espaces de stockage direct offrent une tolérance de panne, souvent appelée « résilience », pour vos données. Son implémentation est similaire à RAID, sauf distribuée entre les serveurs et implémentée dans les logiciels.

Comme avec RAID, il existe plusieurs façons pour les Espaces de stockage de réaliser cela, ce qui implique différents compromis entre tolérance aux pannes, efficacité du stockage et complexité du calcul. Elles appartiennent généralement à une des deux catégories suivantes : « mise en miroir » et « parité » (parfois appelée « codage d’effacement »).

Mirroring

La mise en miroir offre une tolérance de panne en conservant plusieurs copies de toutes les données. Cela ressemble le plus étroitement à RAID-1. La façon dont ces données sont rayées et placées n’est pas triviale (consultez ce blog pour en savoir plus), mais il est absolument vrai de dire que toutes les données stockées à l’aide de la mise en miroir sont écrites, dans son intégralité, plusieurs fois. Chaque copie est écrite dans un matériel physique différent (lecteurs différents dans différents serveurs) qui sont supposés échouer indépendamment.

Vous pouvez choisir entre deux types de mise en miroir : « bidirectionnelle » et « tridirectionnelle ».

Miroir bidirectionnel

La mise en miroir bidirectionnelle écrit deux copies de tout. Son efficacité de stockage est de 50 % : pour écrire 1 To de données, vous avez besoin d’au moins 2 To de capacité de stockage physique. De même, vous avez besoin d’au moins deux « domaines d’erreur » matériels – avec Storage Spaces Direct, cela signifie deux serveurs.

two-way-mirror

Warning

Si vous avez plus de deux serveurs, nous vous recommandons d’utiliser la mise en miroir tridirectionnel à la place.

Miroir tridirectionnel

La mise en miroir tridirectionnelle écrit trois copies de tout. Son efficacité de stockage est de 33,3 % pour écrire 1 To de données, vous avez besoin d’au moins 3 To de capacité de stockage physique. De même, vous avez besoin d’au moins trois domaines de défaillance matériel : avec Espaces de Stockage Direct, cela signifie trois serveurs.

La mise en miroir tridirectionnelle peut tolérer sans problème au moins deux problèmes matériels (lecteur ou serveur) à la fois. Par exemple, si vous redémarrez un serveur quand un autre lecteur ou serveur échoue soudainement, toutes les données restent sécurisées et accessibles en permanence.

three-way-mirror

Parity

L’encodage de parité, souvent appelé « codage d’effacement », fournit une tolérance de panne à l’aide de l’arithmétique au niveau du bit, ce qui peut être remarquablement compliqué. La façon dont cela fonctionne est moins évidente que la mise en miroir, et il existe de nombreuses ressources en ligne intéressantes (par exemple, ce Guide tiers pour les Nuls sur le codage d’effacement) qui peuvent vous aider à comprendre le concept. Il suffit de dire qu'il offre une meilleure efficacité du stockage sans compromettre la tolérance de panne.

Les espaces de stockage offrent deux saveurs de parité : la parité « unique » et la parité « double », ce dernier utilisant une technique avancée appelée « codes de reconstruction locale » à plus grande échelle.

Important

Nous vous recommandons d’utiliser la mise en miroir pour la plupart des charges de travail sensibles aux performances. Pour en savoir plus sur la façon d’équilibrer les performances et la capacité en fonction de votre charge de travail, consultez Planifier les volumes.

Parité unique

La parité unique ne conserve qu’un seul symbole de parité sous forme binaire, ce qui offre une capacité de tolérance aux pannes pour une seule défaillance à la fois. Il ressemble le plus étroitement à RAID-5. Pour utiliser une simple parité, vous avez besoin d’au moins trois domaines de défaillance matériel – avec Storage Spaces Direct, ce qui signifie trois serveurs. Étant donné que la mise en miroir tridirectionnelle offre une tolérance de panne plus grande à la même échelle, nous vous déconseillons d’utiliser une parité simple. Mais c'est disponible si vous insistez pour l'utiliser, et il est entièrement pris en charge.

Warning

Nous déconseillons d’utiliser une parité unique, car elle ne peut tolérer qu’une défaillance matérielle à la fois : si vous redémarrez un serveur quand un autre lecteur ou serveur échoue soudainement, vous rencontrerez un temps d’arrêt. Si vous n’avez que trois serveurs, nous vous recommandons d’utiliser la mise en miroir tridirectionnel. Si vous avez quatre ou plus, consultez la section suivante.

Parité double

La parité double implémente les codes de correction d'erreurs Reed-Solomon pour conserver deux symboles de parité au niveau du bit, fournissant ainsi la même tolérance de panne que la mise en miroir tridirectionnelle, pouvant tolérer jusqu’à deux défaillances simultanées, mais avec une meilleure efficacité de stockage. Il ressemble le plus étroitement à RAID-6. Pour utiliser la parité double, vous avez besoin d’au moins quatre domaines de défaillance matérielle – avec Storage Spaces Direct, cela signifie quatre serveurs. À cette échelle, l’efficacité du stockage est de 50% : pour stocker 2 To de données, vous avez besoin de 4 To de capacité de stockage physique.

dual-parity

L'efficacité du stockage par double parité augmente avec le nombre de domaines de panne matériel dont vous disposez, passant de 50 % à 80 %. Par exemple, à sept (avec espaces de stockage direct, cela signifie sept serveurs), l’efficacité passe à 66,7 % pour stocker 4 To de données, vous avez besoin de seulement 6 To de capacité de stockage physique.

dual-parity-wide

Consultez la section Résumé pour connaître l’efficacité des codes de reconstruction à deux parties et locales à chaque échelle.

Codes de reconstruction locaux

Les espaces de stockage introduisent une technique avancée développée par Microsoft Research, appelée « codes de reconstruction locale », ou LRC. À grande échelle, la parité double utilise LRC pour fractionner son encodage/décodage en quelques groupes plus petits afin de réduire la surcharge nécessaire pour effectuer des écritures ou récupérer après des défaillances.

Avec les disques durs (HDD), la taille du groupe est de quatre symboles ; avec des disques SSD (SSD), la taille du groupe est de six symboles. Par exemple, voici à quoi ressemble la disposition avec les lecteurs de disque dur et 12 domaines d’erreur matériel (c’est-à-dire 12 serveurs) : il existe deux groupes de quatre symboles de données. Elle atteint une efficacité de stockage de 72,7 %.

local-reconstruction-codes

Nous vous recommandons d’utiliser cette procédure pas à pas approfondie et particulièrement lisible de la façon dont les codes de reconstruction locaux gèrent différents scénarios d’échec, et pourquoi ils sont attrayants, par Claus Joergensen.

Parité avec accélération par miroir

Un volume Storage Spaces Direct peut être à la fois en partie miroir et en partie parité. Les écritures arrivent d’abord dans la partie mise en miroir et sont progressivement déplacés dans la partie parité plus tard. En fait, ceci utilise la mise en miroir pour accélérer le codage d’effacement.

Pour combiner un miroir triple et une parité double, vous avez besoin d’au moins quatre domaines d’erreur, ce qui signifie quatre serveurs.

L’efficacité de stockage de la parité accélérée par miroir est comprise entre ce que vous obtiendriez à l’aide de tous les miroirs ou de toutes les parités, et dépend des proportions que vous choisissez.

Important

Nous vous recommandons d’utiliser la mise en miroir pour la plupart des charges de travail sensibles aux performances. Pour en savoir plus sur la façon d’équilibrer les performances et la capacité en fonction de votre charge de travail, consultez Planifier les volumes.

Summary

Cette section récapitule les types de résilience disponibles dans les espaces de stockage direct, les exigences minimales d’échelle pour utiliser chaque type, le nombre d’échecs que chaque type peut tolérer et l’efficacité de stockage correspondante.

Types de résilience

Resiliency Tolérance aux défaillances Efficacité du stockage
Miroir bidirectionnel 1 50.0%
Miroir tridirectionnel 2 33.3%
Parité double 2 50,0 % - 80,0 %
Mixed 2 33,3 % - 80,0 %

Exigences minimales pour la mise à l'échelle

Resiliency Nombre minimal de domaines d’erreur requis
Miroir bidirectionnel 2
Miroir tridirectionnel 3
Parité double 4
Mixed 4

Tip

Sauf si vous utilisez une tolérance de panne de châssis ou de rack, le nombre de domaines de panne fait référence au nombre de serveurs. Le nombre de lecteurs de chaque serveur n’affecte pas les types de résilience que vous pouvez utiliser, tant que vous respectez la configuration minimale requise pour les espaces de stockage direct.

Efficacité de parité double pour les déploiements hybrides

Ce tableau montre l'efficacité du stockage de la parité double et des codes de reconstruction locale à chaque échelle pour les déploiements hybrides, qui contiennent à la fois des disques durs (HDD) et des disques à semi-conducteurs (SSD).

Domaines d’erreur Layout Efficiency
2
3
4 RS 2+2 50.0%
5 RS 2+2 50.0%
6 RS 2+2 50.0%
7 RS 4+2 66.7%
8 RS 4+2 66.7%
9 RS 4+2 66.7%
10 RS 4+2 66.7%
11 RS 4+2 66.7%
12 LRC (8, 2, 1) 72.7%
13 LRC (8, 2, 1) 72.7%
14 LRC (8, 2, 1) 72.7%
15 LRC (8, 2, 1) 72.7%
16 LRC (8, 2, 1) 72.7%

Efficacité de la parité double pour les déploiements 100 % flash

Ce tableau montre l’efficacité du stockage de la parité double et des codes de reconstruction locaux à chaque échelle pour les déploiements 100 % flash, qui contiennent seulement des disques SSD. La disposition de parité peut utiliser des tailles de groupe plus grandes et améliorer l’efficacité du stockage dans une configuration flash entière.

Domaines d’erreur Layout Efficiency
2
3
4 RS 2+2 50.0%
5 RS 2+2 50.0%
6 RS 2+2 50.0%
7 RS 4+2 66.7%
8 RS 4+2 66.7%
9 RS 6+2 75.0%
10 RS 6+2 75.0%
11 RS 6+2 75.0%
12 RS 6+2 75.0%
13 RS 6+2 75.0%
14 RS 6+2 75.0%
15 RS 6+2 75.0%
16 LRC (12, 2, 1) 80.0%

Examples

À moins que vous n’ayez que deux serveurs, nous vous recommandons d’utiliser la mise en miroir tridirectionnelle et/ou la parité double, car ils offrent une meilleure tolérance de panne. Plus précisément, ils garantissent que toutes les données restent sécurisées et accessibles en permanence même quand deux domaines d’erreur ( avec des espaces de stockage direct, ce qui signifie que deux serveurs ) sont affectés par des défaillances simultanées.

Exemples où tout reste en ligne

Ces six exemples montrent ce que la mise en miroir tridirectionnel et/ou double parité peut tolérer.

  • 1. Un lecteur perdu (inclut des lecteurs de cache)
  • 2. Un serveur a perdu

fault-tolerance-examples-1-and-2

  • 3. Un serveur et un lecteur perdus
  • 4. Deux lecteurs perdus dans différents serveurs

fault-tolerance-examples-3-and-4

  • 5. Plus de deux lecteurs perdus, tant qu’au plus deux serveurs sont affectés
  • 6. Deux serveurs ont perdu

fault-tolerance-examples-5-and-6

... dans tous les cas, tous les volumes restent en ligne. Assurez-vous que votre cluster maintient le quorum.

Exemples où tout est hors connexion

Au cours de leur durée de vie, les espaces de stockage peuvent tolérer un nombre quelconque de défaillances, car ils se restaurent avec une résilience complète après chacune des défaillances, à condition de disposer d’un temps suffisant. Toutefois, au plus deux domaines d’erreur peuvent être affectés en toute sécurité par des défaillances à un moment donné. Voici des exemples de ce que la mise en miroir tridirectionnel et/ou la parité double ne peuvent pas tolérer.

  • 7. Lecteurs perdus en trois ou plusieurs serveurs à la fois
  • 8. Trois serveurs ou plus perdus à la fois

fault-tolerance-examples-7-and-8

Usage

Consultez Créer des volumes.

Étapes suivantes

Pour en savoir plus sur les sujets mentionnés dans cet article, consultez les rubriques suivantes :