Système de fichiers distribués de Qumulo
Codage d'effacement
Protection des données basée sur le codage d'effacement
La protection contre la perte de données en cas de défaillance du disque inclut toujours une forme de redondance ou de duplication des informations sur les périphériques de stockage.
La forme la plus simple de protection des données est la mise en miroir. La mise en miroir signifie qu'il y a deux copies complètes ou plus des données à protéger. Chaque copie réside sur un disque différent afin qu’elle soit récupérable en cas de défaillance de l’un des disques. La mise en miroir est simple à mettre en œuvre, mais présente des inconvénients par rapport aux techniques de protection des données plus modernes. La mise en miroir est un gaspillage en termes d'espace requis pour la protection des données; de plus, il ne gère qu'une seule défaillance de disque, ce qui ne constitue généralement pas un niveau de sécurité suffisant car la densité des nœuds et la taille des grappes augmentent.
D'autres stratégies de protection des données incluent l'entrelacement RAID. Le RAID nécessite une administration extrêmement complexe et les temps de reconstruction lents obligent l'administrateur à choisir entre une reconstruction trop longue ou une efficacité de stockage inacceptable.
SBS met en œuvre sa protection des données basée sur des blocs avec une technique efficace appelée codage d'effacement (EC).
EC est plus rapide, plus configurable et plus économe en espace que des alternatives telles que la mise en miroir et le striping RAID. EC code les données de bloc en utilisant des segments redondants stockés sur différents supports physiques. Grâce à l'efficacité d'EC, davantage de disques sont disponibles pour les données par rapport aux systèmes RAID et de mise en miroir, ce qui réduit le coût par téraoctet utilisable.
EC peut être configuré avec des compromis pour les performances, le temps de récupération en cas de support physique défaillant et le nombre de défaillances simultanées autorisées. Nous utiliserons les notations «m» et «n» pour indiquer une configuration EC spécifique, où «m» indique le nombre total de blocs de supports physiques qui seront utilisés pour encoder en toute sécurité «n» blocs utilisateur. Le codage a la propriété que «jusqu'à m - n» blocs peuvent être détruits sans perte de données utilisateur. En d'autres termes, la survie de toute collection de «n» disques est suffisante pour récupérer toutes les données utilisateur, même si certains des disques défaillants contenaient des données utilisateur. L'efficacité du codage peut être calculée comme le nombre «n / m», ou le rapport de blocs utilisateur divisé par tous les blocs.
EC est le plus facile à comprendre avec des exemples. Voici un exemple simple appelé encodage (3,2).
Un codage (3,2) nécessite trois blocs (m = 3), stockés sur trois périphériques physiques distincts pour coder en toute sécurité deux blocs (n = 2). Deux des blocs contiennent les données utilisateur que nous voulons protéger et le troisième est appelé bloc de parité. Le contenu du bloc de parité est calculé par l'algorithme de codage d'effacement. Même ce schéma simple est plus efficace que la mise en miroir: vous écrivez seulement un bloc de parité pour deux blocs de données. Dans un codage (3, 2), si le disque contenant l'un des trois blocs tombe en panne, les données utilisateur des blocs 1 et 2 sont protégées.
Voici comment ça fonctionne. Si le bloc de données 1 est disponible, il vous suffit de le lire. Il en va de même pour le bloc de données 2. Cependant, si le bloc de données 1 est en panne, le système EC lit le bloc de données 2 et le bloc de parité et reconstruit la valeur du bloc de données 1 en utilisant la formule de Reed-Solomon (qui dans cet exemple particulier est simplement XOR par bit).
De même, si le bloc de données 2 réside sur le disque défaillant, les systèmes lisent le bloc de données 1 et le bloc de parité. SBS s'assure que les blocs se trouvent sur des piles différentes afin que le système puisse lire simultanément des blocs. Un codage (3,2) a une efficacité de 2 / 3 (n / m), ou 67 pourcent. Bien qu'il soit supérieur au pourcentage d'efficacité de la mise en miroir de 50 en termes de stockage de données, le codage (3,2) ne peut toujours protéger que contre une seule défaillance de disque.
Au minimum, Qumulo utilise l'encodage (6, 4), qui stocke un tiers de données utilisateur de plus dans la même quantité d'espace que la mise en miroir, et la capacité de tolérer deux pannes de disque au lieu d'une seule comme le fait la mise en miroir. Même si deux blocs contenant des données utilisateur ne sont pas disponibles, le système n'a encore besoin que de lire les deux blocs de données restants et les deux blocs de parité pour récupérer les données manquantes.
Distribution de blocs virtuels protégés sur des nœuds
Il y a de nombreuses considérations pratiques à prendre en compte lorsque mise en œuvre du codage d'effacement dans des systèmes avec une évolutivité massive. Pour faciliter le processus d'écriture des blocs de parité requis (et pour restaurer les données en cas de panne d'un disque), SBS divise son espace d'adressage virtuel de blocs de 4K en segments logiques appelés magasins protégés ou pstores.
SBS gère chaque pstore individuellement, ce qui rend plus flexible le schéma de mappage associant l'espace d'adressage protégé aux disques. Tous les magasins ont la même taille. La protection des données est entièrement mise en œuvre au niveau pstore du système. Un pstore peut être considéré comme une table qui mappe des plages d'adresses de bloc virtuel protégées à des régions de stockage contiguës résidant sur des disques virtuels des noeuds du cluster Qumulo.
Les régions contiguës sont appelées bstores. La mappe de pstores à bstores est stockée par chaque nœud du cluster.
Pour la fiabilité, les nœuds du cluster utilisent un algorithme distribué appelé Paxos maintenir un consensus sur les connaissances partagées globalement, telles que la carte pstore-to-bstore. Le cluster forme un quorum de nœuds pour assurer la sécurité des structures de données critiques du cluster. Chaque bstore utilise un segment d'un disque virtuel spécifique (en d'autres termes, le bstore est associé à une paire de disques SSD et HDD particulière).
Un espace contigu est attribué à chaque bstore sur le disque dur associé, tandis que l’espace sur le disque SDD associé au bstore est alloué de manière dynamique. Des métadonnées sur un magasin de stockage existent également sur son disque SSD associé. Les métadonnées Bstore incluent des informations telles que les adresses utilisées et une carte qui indique les adresses de bloc dans le stockage SSD de référence bstore et celles qui se trouvent sur le disque dur.
Pendant une lecture ou une écriture, le magasin de stockage décide quels magasins de magasin doivent être utilisés. Lorsqu'un client du système de fichiers lance une opération d'écriture, il passe dans SBS sous forme de flux de données brutes. Le système détermine dans quels magasins de base les données à écrire, calcule les données de parité et écrit les données brutes et les données de parité sur les disques SSD en même temps, même si les disques SSD se trouvent sur de nombreux nœuds différents. Une fois les données écrites, l'utilisateur reçoit un accusé de réception indiquant que l'écriture a eu lieu.
Les blocs de données contenant des données utilisateur et des blocs de parité sont tous deux écrits dans bstores. Un magasin particulier, pour sa durée de vie, contient des blocs de parité ou des blocs de données, mais pas les deux. Comme EC est implémenté au niveau de la couche pstore de SBS, les stockages contenant des blocs de parité et ceux contenant des blocs de données se comportent de manière identique. La quantité de mémoire allouée à un magasin de stockage dépend du choix de l'environnement de stockage. Pour que la taille de pstore soit cohérente, la taille du bstore du système change en fonction du schéma de codage. Par exemple, si le magasin de base est 70GB, alors, avec le codage (6,4), chaque magasin de base traite de 17.5GB, ce qui le divise en magasins de base 4. Pour l'encodage (10, 8), les magasins de base auront environ la moitié de cette taille.
Dans le cloud, Qumulo utilise le même schéma de protection des données que sur site, à une exception près. Sur site, le schéma de protection des données nécessite qu'il y ait au moins quatre nœuds dans un cluster. Dans le cloud, il est possible d'avoir un cluster à nœud unique car le système de fichiers de Qumulo peut utiliser la mise en miroir intégrée qui se trouve dans chaque bloc de stockage élastique. Les clusters Qumulo à nœud unique dans le cloud utilisent le codage d'effacement (5, 4).
Temps de reconstruction rapides
Les temps de reconstruction de Qumulo sont mesurés en heures. En revanche, les systèmes de stockage existants conçus pour des charges de travail contenant beaucoup moins de données ont des temps de reconstruction mesurés en jours.
Un grand nombre de fichiers, des charges de travail mixtes et une densité de disque croissante ont tous contribué à la crise en temps de reconstruction des appliances de stockage héritées. L’avantage spectaculaire de Qumulo découle directement de la protection avancée par blocs de SBS. La protection par blocs est idéale pour les charges de travail modernes d'aujourd'hui, où il existe des pétaoctets de données et des millions de fichiers, dont beaucoup sont petits.
Le système de protection SBS n'a pas besoin d'effectuer des parcours d'arborescence fastidieux ou des opérations de reconstruction fichier par fichier. Au lieu de cela, les opérations de reconstruction fonctionnent sur les pstores. Le résultat est que les temps de reconstruction ne sont pas affectés par la taille du fichier. Les petits fichiers sont traités aussi efficacement que les gros fichiers, et la protection de millions de fichiers est tout à fait possible. De plus, le système de fichiers de Qumulo est conçu pour que les temps de reconstruction ne soient pas affectés par la taille du cluster. En fait, le contraire est vrai. Avec Qumulo, les clusters plus grands ont des temps de reconstruction plus rapides que les clusters plus petits.
La raison en est que SBS répartit les efforts de reconstruction sur les nœuds du cluster. Plus le nombre de nœuds est élevé, moins chaque nœud doit effectuer de travail lors de la reconstruction. Les dispositifs de stockage hérités avec des temps de reconstruction lents sont exposés à des défaillances supplémentaires pouvant survenir lors du processus de reconstruction prolongée.
En d'autres termes, les temps de reconstruction lents ont un impact négatif sur la fiabilité. En règle générale, les administrateurs compensent cela en surapprovisionnant (c'est-à-dire en diminuant l'efficacité en ajoutant de la redondance des données). Avec les temps de reconstruction rapides de Qumulo, les administrateurs peuvent maintenir leurs cibles MTTDL (Mean Time To Data Loss) sans beaucoup de redondance, économisant ainsi du temps et de l'argent.
Reconstruire les pstores
Lorsqu'un disque tombe en panne, le magasin protégé existe toujours. Il peut toujours être lu et écrit depuis. Toutefois, certains magasins auront des magasins manquants ou endommagés. Celles-ci sont appelées pstores dégradés. Grâce à EC, vous pouvez continuer à lire les pstores dégradés, mais les données ne sont plus totalement protégées. En d'autres termes, à la première défaillance, l'intégrité des données est toujours présente, mais un disque est sur le point de perdre des données. Pour re-protéger les données, le système utilise pstore par pstore (plutôt que fichier par fichier avec des groupes RAID, comme dans les systèmes hérités) pour reconstruire les bstores situés sur le lecteur de disque défaillant.
SBS alloue une petite quantité d'espace disque supplémentaire, il y a donc de la place pour le faire. C'est ce qu'on appelle l'épargne. Étant donné que la carte globale pstore-to-bstore contient l'ID du disque virtuel associé au bstore, ces informations permettent de savoir facilement quels pstore doivent être traités en cas de défaillance d'un disque particulier. Étant donné que la carte qui associe les pstores aux bstores est suffisamment petite pour résider dans la mémoire de chaque nœud, les nœuds peuvent traduire rapidement les adresses de blocs virtuels de pstore en bstore.
Au cours du processus de reconstruction, SBS lit et écrit les magasins de manière séquentielle. Etant donné que les disques stockés sont disposés de manière contiguë sur le disque, les disques stockés dégradés peuvent être reconstruits très rapidement. Les opérations séquentielles sont beaucoup plus rapides que de nombreuses petites opérations d'E / S, qui peuvent être lentes et provoquer des conflits de disque. Le processus de reconstruction de SBS est efficace: les disques sont impliqués dans exactement un flux de lecture ou d'écriture à la fois pendant le processus de reconstruction. Aucune opération aléatoire n'est requise.
De plus, les magasins de base sont suffisamment petits pour que le travail de re-protection soit efficacement réparti sur l'ensemble du cluster.
Opérations de fichier normales non affectées par les reconstructions
Dans les systèmes de fichiers hérités, les conflits de verrous affectent les temps de reconstruction et ralentissent les opérations du système de fichiers standard lors de la reconstruction. En effet, ces opérations sur les fichiers entrent en concurrence avec les threads de reconstruction / reprotection. Qumulo utilise la superposition d'écriture avec des schémas de verrouillage indépendants afin que les opérations de reconstruction ne soient pas gênées par une utilisation normale du système de fichiers.
En cas d’échec, cela n’a aucun sens d’écrire sur l’ensemble incomplet de bstores dans les pstores dégradés. Les nouvelles écritures ne seraient pas entièrement protégées et cela compliquerait le travail de reconstruction du magasin. Cependant, le cluster ne doit pas connaître de temps d'arrêt pendant l'opération de reconstruction et, par conséquent, les opérations d'écriture lancées par l'utilisateur ne peuvent pas attendre qu'un pstore soit re-protégé. Pour effectuer ces écritures, le système ajoute une nouvelle couche de magasins de stockage virtuels au magasin de stockage dégradé. Cela s'appelle «pousser un calque». Les écritures vont sur le nouveau calque de bstores et les lectures combinent les valeurs de chaque calque. Voici un exemple:
Les nouvelles écritures vont dans la couche supérieure des magasins. Une lecture combine les valeurs de la couche supérieure et de la couche inférieure en utilisant EC. Une fois le magasin de base reconstruit, la couche Push disparaît. Les couches sont construites à l'aide de composants du système de transaction de SBS de manière à ne pas les bloquer.
Les petits fichiers sont aussi efficaces que les gros fichiers
Comme le système de fichiers Qumulo utilise une protection par bloc, les petits fichiers sont aussi efficaces que les gros.
Ils peuvent partager des bandes avec d'autres fichiers et partager la protection. Chaque fichier est constitué des blocs de données, d'au moins un bloc inode et de tous les autres blocs requis. De très petits fichiers sont alignés dans le bloc inode. Le système utilise des blocs 4K et tous les blocs sont protégés selon le rapport de protection du système.
L’efficacité de Qumulo avec les petits fichiers est un avantage considérable par rapport aux dispositifs de stockage existants, qui utilisent une mise en miroir peu efficace pour les petits fichiers et les métadonnées système.
Toute la capacité fournie est disponible pour les fichiers utilisateur.
Les fichiers utilisateur Qumulo peuvent occuper X% de la capacité allouée, alors que la démultiplication héritée recommande uniquement l’utilisation de 100 à 80. La protection par bloc de Qumulo ne nécessite aucune capacité de ré-protection fournie par l'utilisateur, hormis une petite quantité d'espace pour la sauvegarde, qui est exclue de la capacité fournie par l'utilisateur. En revanche, les dispositifs de stockage hérités implémentent la protection avec des groupes RAID fixes ou avec un codage d'effacement fichier par fichier, ce qui signifie qu'une nouvelle protection se produit également au niveau du fichier et nécessite une capacité de récupération allouée par l'utilisateur. En outre, le système de fichiers Qumulo indique avec précision la capacité disponible pour les fichiers utilisateur.
Là encore, cette prévisibilité est une conséquence de la protection par bloc. Dans les systèmes hérités, l'utilisation du stockage dépend de la taille du fichier. Par conséquent, ces systèmes ne peuvent générer des rapports que sur l'espace brut. Les administrateurs doivent alors deviner leur espace réel. Lorsque vous comparez Qumulo à des systèmes existants, vous voudrez certainement prendre en compte la capacité réellement disponible pour les utilisateurs et pouvant être utilisée dans chaque type de système.