FAST VP dans le stockage Unity : comment ça marche

Aujourd'hui, nous allons parler d'une technologie intéressante implémentée dans les systèmes de stockage Unity/Unity XT - FAST VP. Si c'est la première fois que vous entendez parler d'Unity, vous pouvez consulter les caractéristiques du système en utilisant le lien à la fin de l'article. J'ai travaillé sur FAST VP au sein de l'équipe projet Dell EMC pendant plus d'un an. Aujourd'hui, je souhaite parler plus en détail de cette technologie et révéler quelques détails de sa mise en œuvre. Bien entendu, seuls ceux qui sont autorisés à être révélés. Si vous êtes intéressé par les questions de stockage efficace des données ou si vous n'avez tout simplement pas entièrement compris la documentation, cet article sera certainement utile et intéressant.

FAST VP dans le stockage Unity : comment ça marche

Je vais vous dire tout de suite ce qui ne sera pas dans le matériel. Il n'y aura pas de recherche de concurrents ni de comparaison avec eux. Je n’ai pas non plus l’intention de parler de technologies open source similaires, car le lecteur curieux les connaît déjà. Et bien sûr, je ne ferai aucune publicité.

Hiérarchisation du stockage. Buts et objectifs de FAST VP

FAST VP signifie Fully Automated Storage Tiering for Virtual Pool. Un peu difficile? Pas de problème, nous allons le découvrir maintenant. La hiérarchisation est un moyen d'organiser le stockage des données dans lequel il existe plusieurs niveaux (niveaux) où ces données sont stockées. Chacun a ses propres caractéristiques. Le plus important : performances, volume et prix de stockage d'une unité d'information. Bien sûr, il existe une relation entre eux.

Une caractéristique importante de la hiérarchisation est que l'accès aux données est fourni de manière uniforme, quel que soit le niveau de stockage auquel elles se trouvent actuellement, et que la taille du pool est égale à la somme des tailles des ressources qu'il contient. C'est là que résident les différences avec le cache : la taille du cache n'est pas ajoutée au volume total de la ressource (le pool dans ce cas), et les données du cache dupliquent un fragment des données principales du média (ou seront dupliquées si le cache est utilisé). les données du cache n'ont pas encore été écrites). De plus, la répartition des données par niveaux est cachée à l'utilisateur. Autrement dit, il ne voit pas exactement quelles données se trouvent à chaque niveau, bien qu'il puisse influencer cela indirectement en définissant des politiques (nous y reviendrons plus tard).

Examinons maintenant les fonctionnalités de la mise en œuvre de la hiérarchisation du stockage dans Unity. Unity a 3 niveaux, ou niveaux :

  • Performances extrêmes (SSD)
  • Performances (disque dur SAS 10 15/XNUMX XNUMX tr/min)
  • Capacité (HDD NL-SAS 7200 XNUMX tr/min)

Ils sont présentés par ordre décroissant de performances et de prix. Les performances extrêmes incluent uniquement les disques SSD (Solid State Drives). Les deux autres niveaux incluent des disques magnétiques, qui diffèrent par leur vitesse de rotation et, par conséquent, leurs performances.

Les supports de stockage de même niveau et de même taille sont combinés dans une matrice RAID, formant un groupe RAID (groupe RAID, en abrégé RG) ; Vous pouvez en savoir plus sur les niveaux RAID disponibles et recommandés dans la documentation officielle. Les pools de stockage sont constitués de groupes RAID d'un ou plusieurs niveaux, à partir desquels l'espace libre est ensuite distribué. Et à partir du pool, l'espace est alloué aux systèmes de fichiers et aux LUN.

FAST VP dans le stockage Unity : comment ça marche

Pourquoi ai-je besoin d'une hiérarchisation ?

En bref et abstraitement : pour obtenir de meilleurs résultats avec un minimum de ressources. Plus précisément, le résultat est généralement compris comme un ensemble de caractéristiques du système de stockage : vitesse et temps d'accès, coût de stockage, etc. Le minimum de ressources signifie le moins de dépenses : argent, énergie, etc. FAST VP implémente des mécanismes de redistribution des données entre différents niveaux dans les systèmes de stockage Unity/Unity XT. Si vous me croyez, vous pouvez sauter le paragraphe suivant. Pour le reste, je vous en dis un peu plus.

Une répartition appropriée des données entre les niveaux de stockage vous permet d'économiser sur le coût global du stockage en sacrifiant la vitesse d'accès à certaines informations rarement utilisées, et d'améliorer les performances en déplaçant les données fréquemment utilisées vers des supports plus rapides. Ici, quelqu'un pourrait affirmer que même sans hiérarchisation, un administrateur normal sait où placer quelles données, quelles sont les caractéristiques souhaitables d'un système de stockage pour sa tâche, etc. C'est sans aucun doute vrai, mais la distribution manuelle des données a ses inconvénients :

  • nécessite du temps et de l'attention de la part de l'administrateur ;
  • Il n'est pas toujours possible de « redessiner » les ressources de stockage pour les adapter aux conditions changeantes ;
  • un avantage important disparaît : un accès unifié aux ressources situées à différents niveaux de stockage.

Pour que les administrateurs de stockage se soucient moins de la sécurité de l’emploi, j’ajouterai qu’une planification compétente des ressources est également nécessaire ici. Maintenant que les tâches de hiérarchisation sont brièvement décrites, examinons ce que vous pouvez attendre de FAST VP. Il est maintenant temps de revenir à la définition. Les deux premiers mots – Fully Automated – sont littéralement traduits par « entièrement automatisé » et signifient que la répartition entre les niveaux se fait automatiquement. Eh bien, Virtual Pool est un pool de données qui comprend des ressources de différents niveaux de stockage. Voici à quoi cela ressemble :

FAST VP dans le stockage Unity : comment ça marche

Pour l'avenir, je dirai que FAST VP déplace les données uniquement au sein d'un seul pool, et non entre plusieurs pools.

Problèmes résolus par FAST VP

Parlons d'abord de manière abstraite. Nous disposons d'un pool et d'un mécanisme qui peut redistribuer les données au sein de ce pool. En gardant à l’esprit que notre objectif est d’atteindre une productivité maximale, demandons-nous : de quelles manières pouvons-nous y parvenir ? Il peut y en avoir plusieurs, et ici FAST VP a quelque chose à offrir à l'utilisateur, car la technologie est bien plus qu'une simple hiérarchisation du stockage. Voici quelques façons dont FAST VP peut augmenter les performances du pool :

  • Répartition des données sur différents types de disques, niveaux
  • Répartition des données sur des disques du même type
  • Distribution des données lors de l'extension du pool

Avant d'examiner comment ces tâches sont résolues, nous devons connaître quelques faits nécessaires sur le fonctionnement de FAST VP. FAST VP fonctionne avec des blocs d'une certaine taille - 256 mégaoctets. Il s'agit du plus petit « morceau » de données contigu qui peut être déplacé. Dans la documentation, c'est ainsi qu'ils l'appellent : slice. Du point de vue de FAST VP, tous les groupes RAID sont constitués d'un ensemble de ces « pièces ». En conséquence, toutes les statistiques d'E/S sont accumulées pour de tels blocs de données. Pourquoi cette taille de bloc a-t-elle été choisie et sera-t-elle réduite ? Le bloc est assez volumineux, mais il s'agit d'un compromis entre la granularité des données (une taille de bloc plus petite signifie une distribution plus précise) et les ressources informatiques disponibles : compte tenu des limitations strictes existantes sur la RAM et d'un grand nombre de blocs, les données statistiques peuvent occuper trop, et le nombre de calculs augmentera proportionnellement.

Comment FAST VP alloue les données au pool. Les politiciens

Pour contrôler le placement des données dans un pool avec FAST VP activé, les stratégies suivantes existent :

  • Niveau disponible le plus élevé
  • Niveau automatique
  • Démarrer haut puis niveau automatique (par défaut)
  • Niveau disponible le plus bas

Ils affectent à la fois l’allocation initiale des blocs (données écrites en premier) et la réallocation ultérieure. Lorsque les données sont déjà localisées sur les disques, la redistribution sera initiée selon un planning ou manuellement.

Le niveau le plus élevé disponible tente de placer un nouveau bloc au niveau le plus performant. S'il n'y a pas assez d'espace, elles sont placées au niveau le plus productif suivant, mais les données peuvent ensuite être déplacées vers un niveau plus productif (s'il y a de l'espace ou en déplaçant d'autres données). Auto-Tier place les nouvelles données à différents niveaux en fonction de la quantité d'espace disponible, et elles sont redistribuées en fonction de la demande et de l'espace libre. Démarrer haut, puis niveau automatique est la politique par défaut et également recommandée. Lorsqu'il est initialement placé, il fonctionne comme le niveau disponible le plus élevé, puis les données sont déplacées en fonction de leurs statistiques d'utilisation. La politique du niveau le plus bas disponible vise à placer les données dans le niveau le moins productif.

Le transfert de données s'effectue avec une faible priorité afin de ne pas interférer avec le fonctionnement utile du système de stockage. Cependant, il existe un paramètre « Taux de relocalisation des données » qui modifie la priorité. Il y a ici une particularité : tous les blocs de données n'ont pas le même ordre de redistribution. Par exemple, les blocs marqués comme métadonnées seront d'abord déplacés vers un niveau plus rapide. Les métadonnées sont, pour ainsi dire, des « données sur les données », des informations supplémentaires qui ne sont pas des données utilisateur, mais stockent leur description. Par exemple, des informations dans le système de fichiers sur le bloc dans lequel se trouve un fichier particulier. Cela signifie que la vitesse d'accès aux données dépend de la vitesse d'accès aux métadonnées. Étant donné que la taille des métadonnées est généralement beaucoup plus petite, les avantages de leur déplacement vers des disques plus performants devraient être plus importants.

Critères que Fast VP utilise dans son travail

Le critère principal pour chaque bloc, en gros, est la caractéristique de la « demande » de données, qui dépend du nombre d'opérations de lecture et d'écriture d'un fragment de données. Nous appelons cette caractéristique « Température ». Certaines données demandées (chaudes) sont « plus chaudes » que les données non réclamées. Il est calculé périodiquement, par défaut à intervalles d'une heure.

La fonction de calcul de température a les propriétés suivantes :

  • En l’absence d’E/S, les données « se refroidissent » avec le temps.
  • Sous une charge plus ou moins égale dans le temps, la température augmente d'abord puis se stabilise dans une certaine plage.

Ensuite, les politiques décrites ci-dessus et l'espace libre à chaque niveau sont pris en compte. Pour plus de clarté, je fournirai une image de la documentation. Ici, les couleurs rouge, jaune et bleue indiquent respectivement des blocs à températures élevées, moyennes et basses.

FAST VP dans le stockage Unity : comment ça marche

Mais revenons aux tâches. Nous pouvons donc commencer à analyser ce qui est fait pour résoudre les problèmes de FAST VP.

A. Répartition des données sur différents types de disques, niveaux

En fait, c'est la tâche principale de FAST VP. Le reste, en un sens, en est un dérivé. En fonction de la politique sélectionnée, les données seront réparties sur différents niveaux de stockage. Tout d'abord, la politique de placement est prise en compte, puis la température des blocs et la taille/vitesse des groupes RAID.

Pour les politiques de niveau disponible le plus élevé/le plus bas, tout est assez simple. C'est le cas pour les deux autres. Les données sont réparties sur différents niveaux en tenant compte de la taille et des performances des groupes RAID : de sorte que le rapport entre la « température » totale des blocs et les « performances maximales conditionnelles » de chaque groupe RAID soit approximativement le même. Ainsi, la charge est répartie plus ou moins uniformément. Les données les plus demandées sont déplacées vers des supports rapides, et les données rarement utilisées sont déplacées vers des supports plus lents. Idéalement, la distribution devrait ressembler à ceci :

FAST VP dans le stockage Unity : comment ça marche

B. Répartition des données entre disques du même type

Rappelez-vous, au début, j'ai écrit que les supports de stockage de un ou plus les niveaux sont combinés en un seul pool ? Dans le cas d'un seul niveau, FAST VP a aussi du pain sur la planche. Pour obtenir des performances maximales à n'importe quel niveau, il est conseillé de répartir les données uniformément entre les disques. Cela vous permettra (en théorie) d’obtenir le montant maximum d’IOPS. Les données au sein d'un groupe RAID peuvent être considérées comme réparties uniformément sur les disques, mais ce n'est pas toujours le cas entre les groupes RAID. En cas de déséquilibre, FAST VP déplacera les données entre les groupes RAID proportionnellement à leur volume et à leurs « performances conditionnelles » (en termes numériques). Pour plus de clarté, je vais montrer un schéma de rééquilibrage entre trois groupes RAID :

FAST VP dans le stockage Unity : comment ça marche

B. Distribution des données lors de l'extension du pool

Cette tâche est un cas particulier de la précédente et est effectuée lorsqu'un groupe RAID est ajouté au pool. Pour garantir que le groupe RAID nouvellement ajouté ne reste pas inactif, certaines données y seront transférées, ce qui signifie que la charge sera redistribuée entre tous les groupes RAID.

Nivellement de l'usure du SSD

En utilisant le nivellement d'usure, FAST VP peut prolonger la durée de vie d'un SSD, bien que cette fonctionnalité ne soit pas directement liée à la hiérarchisation du stockage. Puisque les données de température sont déjà disponibles, que le nombre d'opérations d'écriture est également pris en compte et que nous savons comment déplacer les blocs de données, il serait logique que FAST VP résolve ce problème.

Si le nombre d'entrées dans un groupe RAID dépasse largement le nombre d'entrées dans un autre, FAST VP redistribuera les données en fonction du nombre d'opérations d'écriture. D'une part, cela soulage la charge et économise les ressources de certains disques, d'autre part, cela ajoute du « travail » pour les moins chargés, augmentant ainsi les performances globales.

De cette manière, FAST VP relève les défis traditionnels de la hiérarchisation du stockage et fait un peu plus que cela. Tout cela vous permet de stocker les données de manière assez efficace dans le système de stockage Unity.

Quelques conseils

  1. Ne négligez pas la lecture de la documentation. Il existe des bonnes pratiques et elles fonctionnent plutôt bien. Si vous les suivez, en règle générale, aucun problème grave ne se pose. Le reste des conseils les reprend ou les complète essentiellement.
  2. Si vous avez configuré et activé FAST VP, il est préférable de le laisser activé. Laissez-le distribuer les données dans le temps imparti et petit à petit une fois par an et avoir un impact sérieux sur l'exécution d'autres tâches. Dans de tels cas, la redistribution des données peut prendre beaucoup de temps.
  3. Soyez prudent lorsque vous choisissez une fenêtre de relocalisation. Bien que cela soit évident, essayez de choisir une heure avec le moins de charge sur Unity et allouez-y une période de temps suffisante.
  4. Prévoyez d'étendre votre système de stockage, faites-le à temps. Il s’agit d’une recommandation générale qui est également importante pour FAST VP. Si la quantité d'espace libre est très faible, le mouvement des données ralentira ou deviendra impossible. Surtout si vous avez négligé le point 2.
  5. Lorsque vous développez un pool avec FAST VP activé, vous ne devez pas commencer avec les disques les plus lents. Autrement dit, soit nous ajoutons tous les groupes RAID prévus en même temps, soit nous ajoutons d'abord les disques les plus rapides. Dans ce cas, la redistribution des données vers de nouveaux disques « rapides » augmentera la vitesse globale du pool. Sinon, démarrer avec des disques « lents » peut conduire à une situation très désagréable. Premièrement, les données seront transférées vers de nouveaux disques relativement lents, puis, lorsque des disques plus rapides seront ajoutés, dans la direction opposée. Il existe ici des nuances liées aux différentes politiques de FAST VP, mais en général, une situation similaire est possible.

Si vous regardez ce produit, vous pouvez essayer Unity gratuitement en téléchargeant l'appliance virtuelle Unity VSA.

FAST VP dans le stockage Unity : comment ça marche

À la fin du matériel, je partage plusieurs liens utiles :

Conclusion

J'aimerais écrire sur beaucoup de choses, mais je comprends que tous les détails n'intéresseront pas le lecteur. Par exemple, vous pouvez parler plus en détail des critères selon lesquels FAST VP prend des décisions concernant le transfert de données, des processus d'analyse des statistiques d'E/S. Aussi, le sujet de l'interaction avec Piscines dynamiques, et cela mérite un article séparé. On peut même fantasmer sur le développement de cette technologie. J'espère que ce n'était pas ennuyeux et que je ne t'ai pas ennuyé. À la prochaine!

Source: habr.com

Ajouter un commentaire