Présentation technique de l'architecture de stockage Infinidat

InfiniBox est un système de stockage moderne qui est immédiatement tombé dans le côté droit du carré magique. Quelle est sa spécificité?

Un bref historique

Qu'est - ce qu'InfiniBox? Il s'agit d'un système de stockage Infinidat. Qu'est-ce que Infinidat? Il s'agit d'une entreprise créée par Moshe Yanay (créateur de Symmetrix et XIV) pour mettre en œuvre un projet de stockage de niveau entreprise idéal.

La société a été créée en tant que développeur de logiciels, qui utilise un équipement éprouvé, c'est-à-dire SDS, mais se présente sous la forme d'un ensemble monolithique unique.

introduction

Dans cet article, nous examinerons le système de stockage InfiniBox, son architecture, son fonctionnement et la fiabilité élevée (99,99999%), les performances, la capacité à un prix relativement bas. Étant donné que la base du système de stockage est son logiciel, et pour ce système en particulier, l'accent principal sera mis sur le logiciel, il n'y aura pas de belles glandes photo.

Pourquoi avez-vous besoin d'un autre système de stockage sur le marché?

Il existe un certain nombre de tâches pour lesquelles une très grande capacité est nécessaire, tandis que la fiabilité et les performances sont également importantes. Par exemple, les systèmes cloud, les tâches standard des grandes entreprises, l'Internet des objets, la recherche génétique, les systèmes de sécurité pour les grandes structures. Il est assez difficile de trouver le système de stockage optimal pour de telles tâches, surtout si vous regardez le prix. Avec un œil sur ces tâches, l'architecture logicielle d'InfiniBox a été construite.

Adressage

Comment puis-je stocker des quantités illimitées de données? En fournissant un espace d'adressage illimité. Pour ce faire, InfiniBox utilise VUA - Espace d'adressage utilisateur virtuel. Tous les objets créés sur l'InfiniBox qui sont accessibles à l'utilisateur (volumes, instantanés, systèmes de fichiers) sont inclus dans ce VUA, et la taille totale de ces objets est la taille actuelle du VUA. L'adressage est mince et n'est pas associé aux disques: c'est-à-dire que la taille VUA peut être beaucoup plus grande que la capacité de disque disponible et est en fait illimitée.



Ensuite, nous devons diviser cet espace en parties que nous servirons, il est donc plus facile de travailler avec eux.



L'ensemble de l'espace d'adressage est divisé en 6 parties - VU (unité virtuelle - pièce virtuelle). L'espace d'adressage de chaque objet, tel qu'un volume, est réparti uniformément entre ces parties. L'enregistrement se déroule en blocs de 64 Ko, et dans le processus, vous pouvez comprendre incroyablement simplement et rapidement à quelle VU cette adresse de volume appartient (le reste de la division LBA / 64 Ko, la fonction modulo, se fait très rapidement pour le nombre minimum de cycles CPU).

En plus de simplifier le travail avec des espaces plus petits, les VU sont le premier niveau d'abstraction des disques physiques et la base de la tolérance aux pannes du système au niveau du contrôleur. Par exemple, il y a 3 contrôleurs (serveurs physiques), dont chacun est responsable de l'opération et est le principal pour deux VU, ainsi que la sauvegarde pour deux autres VU. Le contrôleur ne dessert pas le VU pour lequel il est une réserve, mais reçoit en même temps des métadonnées et des opérations d'écriture de l'autre contrôleur pour ce VU, de sorte qu'en cas de défaillance du contrôleur principal, il reprend immédiatement tout le travail avec ce VU.



En cas de défaillance d'un contrôleur, les deux autres prennent le relais - travailler avec son VU.



Adressage, instantanés, mise en cache



VUA est un espace d'adressage virtuel disponible pour l'utilisateur et pratiquement illimité. VDA (Virtual Disk Address) est un espace de stockage interne virtuel. Sa taille est strictement déterminée à l'avance par le nombre et la capacité des disques durs (moins la parité, les métadonnées et l'espace pour remplacer les disques défectueux). La connexion entre VUA et VDA est organisée via un trie (arborescence de préfixes). Chaque entrée de l'arborescence est un pointeur de l'espace utilisateur (VUA) vers l'espace intérieur (VDA). L'adressage sous la forme d'une arborescence de préfixes vous permet d'adresser des blocs de toute taille. Autrement dit, lorsqu'un élément de n'importe quelle taille (fichier, flux de données série, objet) est ajouté aux disques, il peut être adressé avec un enregistrement dans l'arborescence et l'arborescence reste compacte.

Cependant, la caractéristique la plus importante de l'arborescence est sa haute performance lors de la recherche et de l'expansion de l'arborescence. La recherche est effectuée lors de l'opération de lecture, lorsqu'il est nécessaire de trouver le bloc avec l'adresse donnée sur le disque. L'extension de l'arborescence se produit lors d'une opération d'écriture, lorsque nous ajoutons de nouvelles données sur le disque et devons ajouter une adresse à l'arborescence où elles peuvent être trouvées. Les performances sont extrêmement importantes lorsque vous travaillez avec de grandes structures, et l'arborescence de préfixes vous permet de l'atteindre avec une énorme marge pour l'avenir, par exemple, en cas d'augmentation de la capacité du disque.

Que peut-on dire de la relation entre VUA et VDA:

  1. La taille VUA peut dépasser de loin la taille VDA
  2. VUA n'a rien à voir avec VDA tant que le provisionnement fin n'y est pas écrit
  3. Plusieurs VUA peuvent référencer un VDA (instantanés / clones)

Ainsi, l'organisation de VUA et VDA, les connexions entre eux et l'adressage de ces connexions vous permettent d'implémenter des instantanés très rapides et un provisionnement fin. Étant donné que la création d'un instantané ne fait que mettre à jour les métadonnées en mémoire et est une opération qui se produit constamment pendant le travail, en fait, cette opération ne prend pas de temps. En règle générale, lors de la création d'instantanés, les systèmes de stockage classiques arrêtent de mettre à jour les métadonnées et / ou les E / S afin de garantir l'intégrité des transactions. Cela entraîne une latence d'E / S inégale. Le système en question fonctionne différemment: rien ne s'arrête et l'horodatage des métadonnées de bloc (64 + 4Ko) est utilisé pour déterminer si l'opération est dans l'instantané. Ainsi, le système peut prendre des centaines de milliers de photos sans ralentir le travail,et les performances d'un volume avec des centaines d'instantanés et d'un volume sans instantanés ne sont pas différentes. Étant donné que tout se fait en mémoire et qu'il s'agit de processus réguliers, des dizaines d'instantanés par seconde peuvent être pris sur des groupes de volumes. Cela vous permet d'implémenter la réplication asynchrone sur les instantanés avec une différence entre les copies en quelques secondes ou même moins et sans affecter les performances, ce qui est également important.

Regardons le système dans son ensemble, comment vont les données. Les opérations sont reçues via les ports des trois contrôleurs (serveurs). Les pilotes de port fonctionnent dans l'espace utilisateur, ce qui vous permet de les redémarrer simplement si toute combinaison d'événements sur les ports suspend le pilote. Dans les implémentations classiques, cela se fait dans le noyau et le problème est résolu en redémarrant l'intégralité du contrôleur.

Ensuite, le flux est divisé en sections de 64 Ko + 4 Ko. Quels sont ces 4Ko supplémentaires? Il s'agit d'une protection contre les erreurs silencieuses et il contient des sommes de contrôle, l'heure et des informations supplémentaires sur l'opération, qui sont utilisées pour classer cette opération et sont utilisées pour optimiser la mise en cache et la lecture anticipée.



L'enregistrement de la mise en cache est une chose assez simple qui ne peut pas être dite pour la lecture. La mise en cache de lecture fonctionne bien si nous savons quoi lire. Les systèmes classiques utilisent des algorithmes de lecture anticipée à accès séquentiel. Mais que faire de l'arbitraire? L'accès complètement aléatoire est extrêmement rare dans le travail des applications réelles, même l'émuler correctement est assez difficile, écrire un générateur de nombres aléatoires réels est une tâche plutôt intéressante. Mais si nous considérons chaque opération d'E / S séparément, comme cela se fait dans les systèmes classiques, alors elles sont toutes arbitraires et imprévisibles, à l'exception de celles complètement séquentielles. Cependant, si vous regardez l'intégralité du flux d'E / S pendant un certain temps, vous pouvez voir des modèles qui combinent différentes opérations.

Le cache système ne sait rien sur les volumes, les fichiers, aucune structure logique basée sur VUA. Le cache ne regarde que les sections et leurs métadonnées, basant la mise en cache sur leur comportement et leurs attributs, ce qui vous permet de trouver des dépendances entre différentes applications réellement connectées. Pour les opérations d'entrée-sortie, des vecteurs d'activité sont construits.



Le système accumule des statistiques, crée ces vecteurs d'activité, puis essaie d'identifier les E / S actuelles et de les lier à des vecteurs connus ou d'en créer un nouveau. Après identification, une lecture prédictive en fonction du vecteur se produit, c'est-à-dire que le comportement des applications est prédit et que la lecture prédictive est effectuée pour une charge apparemment arbitraire.

Graver sur disques

14 sections sont assemblées en bande pour le disque. Cela se fait par un processus spécial qui sélectionne les sections pour une telle bande.



Ensuite, deux sections de parité sont considérées - la bande est prête pour l'écriture sur les disques. La parité est comptée à travers plusieurs opérations basées sur XOR, ce qui est deux fois plus rapide que sur la base du code Reed-Solomon. Une bande supplémentaire (14 + 2 sections) est affectée à un groupe RAID (RG). Un groupe RAID n'est qu'un objet pour stocker plusieurs bandes, rien de plus. Les bandes sont regroupées comme indiqué ci-dessous, l'une au-dessus de l'autre, et la colonne verticale est appelée membre du groupe RAID. VDS (Virtual Disk Space) est l'espace disque disponible pour les données utilisateur, et VDA est l'adresse qu'il contient.



Une colonne ou un membre d'un groupe RAID est écrit sur un disque (PD - lecteur physique) dans une étagère (unité de disque). L'endroit où un membre du groupe RAID est écrit s'appelle la partition de disque (DP - partition de lecteur). Le nombre de DP sur le disque est constant et égal à 264, la taille dépend de la taille du disque. Cette conception vous permet de charger uniformément tous les disques. En même temps, l'algorithme distribue les colonnes d'un groupe RAID aussi loin que possible les unes des autres, sur différents disques et étagères. Cela conduit au fait que lorsque deux disques tombent en panne, le nombre de bandes communes sur eux est minimal en même temps, et le système passe de l'état de protection N à N + 1 en quelques minutes, reconstruisant ces bandes où deux colonnes manquent immédiatement (la fiabilité est de sept neuf )



En conséquence, la conception logique du système dans son ensemble semble assez simple et est présentée dans le diagramme ci-dessous.



Implémentation physique

Le système est conçu pour que tous ses composants soient protégés selon le schéma N + 2 ou 2N, y compris les canaux d'alimentation et de données à l'intérieur de la baie. Voici le schéma d'implémentation de l'alimentation.

ATS (Automatic Transfer Switch) - ATS, interrupteur de phase
BBU (Battery Backup Unit) - UPS, alimentation sans coupure
Node - contrôleur



Ce schéma vous permet de protéger les contrôleurs et l'intégrité de la mémoire lors d'événements complexes, par exemple en cas de panne d'alimentation et d'arrêt temporaire d'un circuit d'alimentation. Les onduleurs sont gérables, ce qui vous permet d'obtenir des informations de charge précises et de modifier de manière flexible la taille du cache afin que le contrôleur ait toujours le temps de le réinitialiser. Autrement dit, le système commencera à utiliser activement le cache beaucoup plus tôt, contrairement au schéma classique, lorsque le cache n'est activé que lorsque la batterie est complètement chargée.

Voici un schéma des canaux de données au sein du système.



Les contrôleurs sont interconnectés via Infiniband et ils sont connectés aux disques via SAS. Chaque contrôleur peut accéder à chaque disque du système. De plus, si la connexion entre le contrôleur et le disque ne fonctionne pas, le contrôleur peut demander des données via un autre contrôleur agissant en tant que proxy via Infiniband. Les étagères contiennent des commutateurs SAS pour un accès simultané aux disques. Chaque étagère contient 60 disques, les étagères peuvent être deux, quatre ou huit, totalisant jusqu'à 480 disques de 3, 4, 6, 8 ou 12 To. La capacité totale disponible pour l'utilisateur est supérieure à 4,1 Po sans compression. En parlant de compression, afin de mettre en œuvre la compression sans perte de performances, la mémoire n'est pas compressée, par conséquent, le système fonctionne parfois avec une compression activée encore plus rapidement - lors de la lecture, vous devez lire moins, il y a suffisamment de puissance de processeur avec une marge,et lors de l'enregistrement, la réponse va directement de la mémoire et la compression se fait de manière asynchrone pendant l'enregistrement direct sur les disques.

Les contrôleurs contiennent deux groupes de disques en eux-mêmes: un, système, pour vider la RAM et le second, sur SSD, pour mettre en cache les opérations de lecture (jusqu'à 368 To par système). Un cache aussi important permet de lire de gros morceaux de manière prédictive, et comme les données dans la bande sont sélectionnées avec approximativement la même fréquence d'accès, ces gros morceaux non seulement réduisent la charge sur les disques physiques, mais ont également de grandes chances d'être en demande dans un avenir proche.

Résumé

Nous avons donc parlé d'un système de stockage très intéressant, qui a une architecture moderne et offre une capacité élevée, une grande fiabilité, d'excellentes performances et un coût adéquat.



Sources
1 https://techfieldday.com/video/infinidat-solution-deep-dive/
2 https://support.infinidat.com/hc/en-us

All Articles