Implémenter la mise en cache SSD dans le stockage QSAN XCubeSAN

Les technologies d'amélioration des performances basées sur SSD qui sont largement utilisées dans les systèmes de stockage ont longtemps été inventées. Tout d'abord, c'est l'utilisation de SSD comme espace de stockage, qui est 100% efficace mais cher. Par conséquent, les technologies d'appairage et de mise en cache sont utilisées, où les SSD ne sont utilisés que pour les données les plus populaires ("à chaud"). La déchirure est bonne pour les scénarios d'utilisation à long terme (jours-semaines) de données "à chaud". Et la mise en cache, au contraire, est destinée à une utilisation à court terme (minutes-heures). Ces deux options sont implémentées dans le stockage QSAN XCubeSAN . Dans cet article, nous considérerons l'implémentation du deuxième algorithme - la mise en cache SSD .




L'essence de la technologie de mise en cache SSD est l'utilisation de SSD comme cache intermédiaire entre les disques durs et la mémoire du contrôleur. Les performances des SSD, bien sûr, sont inférieures à celles du cache du contrôleur, mais le volume est supérieur d’un ordre de grandeur. Par conséquent, nous obtenons un compromis entre vitesse et volume.


Indications d'utilisation du cache de lecture SSD:


  • La prédominance des opérations de lecture sur les opérations d'écriture (le plus souvent caractéristique des bases de données et des applications Web);
  • La présence d'un goulot d'étranglement sous la forme de performances d'un ensemble de disques durs;
  • La quantité de données demandées est inférieure à la taille du cache SSD.

Les indications pour l'utilisation du cache SSD en lecture / écriture sont les mêmes raisons, à l'exception de la nature des opérations - un type mixte (par exemple, serveur de fichiers).


La plupart des fournisseurs de stockage utilisent un cache SSD en lecture seule dans leurs produits. La différence fondamentale entre QSAN et eux est la possibilité d'utiliser le cache également pour l'écriture. Pour activer la fonctionnalité de mise en cache SSD dans le stockage QSAN, une licence distincte est requise (livrée sous forme électronique).


Le cache SSD dans XCubeSAN est physiquement implémenté en tant que pools de cache SSD distincts. Il peut y en avoir jusqu'à quatre dans le système. Bien entendu, chaque pool utilise son propre ensemble de SSD. Et déjà dans les propriétés d'un disque virtuel, nous déterminons s'il utilisera le pool de cache et lequel. L'activation et la désactivation de l'utilisation du cache pour les volumes peuvent être effectuées en ligne sans arrêter les E / S. Toujours sur le "hot", vous pouvez ajouter des SSD au pool et les retirer de là. Lors de la création d'un cache de pool SSD, vous devez choisir dans quel mode cela fonctionnera: lecture seule ou lecture + écriture. Son organisation physique en dépend. Comme le cache des pools peut être multiple, la fonctionnalité peut être différente (c'est-à-dire que le système peut avoir des pools de cache pour la lecture et la lecture + écriture en même temps).


Si vous utilisez un cache de pool en lecture seule, il peut être composé de 1 à 8 SSD. Les disques ne doivent pas nécessairement avoir le même volume et un seul fournisseur, car ils sont combinés dans une structure NRAID +. Tous les SSD du pool sont partagés. Le système essaie indépendamment de paralléliser les requêtes entrantes entre tous les SSD pour obtenir des performances maximales. En cas de panne de l'un des SSD, rien de terrible ne se produira: après tout, le cache ne contient qu'une copie des données stockées sur un ensemble de disques durs. C'est juste que la quantité de cache SSD disponible diminuera (ou zéro si vous utilisez le cache SSD d'origine à partir d'un seul lecteur).



Si le cache est utilisé pour les opérations de lecture + écriture, le nombre de disques SSD dans le pool doit être un multiple de deux, car le contenu est mis en miroir sur les paires de lecteurs (à l'aide de la structure NRAID 1+). La duplication du cache est nécessaire car il peut contenir des données qui n'ont pas encore été écrites sur les disques durs. Et dans ce cas, l'échec du SSD du pool de cache entraînerait une perte d'informations. Dans le cas de NRAID 1+, une panne de SSD entraînera simplement une transition de cache vers un état en lecture seule avec le vidage des données non enregistrées sur une matrice à partir de disques durs. Après avoir remplacé le SSD défectueux, le cache reviendra à son mode de fonctionnement d'origine. Soit dit en passant, pour plus de sécurité, un cache fonctionnant pour la lecture et l'écriture peut être affecté à un disque de secours dédié.



Lorsque vous utilisez la fonction de mise en cache SSD dans XCubeSAN, il existe un certain nombre d'exigences pour la capacité de stockage des contrôleurs de stockage: plus il y a de mémoire système, plus le pool de cache sera disponible.



Contrairement, encore une fois, à la majorité des fournisseurs de stockage qui n'offrent que l'option marche / arrêt en tant que paramètres de cache SSD, QSAN propose plus d'options. En particulier, vous pouvez sélectionner le mode de fonctionnement du cache en fonction de la nature de la charge. Il existe trois modèles prédéfinis les plus proches dans leur travail des services correspondants: base de données, système de fichiers, service Web. De plus, l'administrateur peut créer son propre profil en définissant les valeurs de paramètre requises:


  • Taille de bloc (taille de bloc de cache) - 1/2/4 Mo
  • Le nombre de demandes de lecture d'un bloc afin qu'il soit copié dans le cache (seuil de remplissage en lecture) est de 1 à 4.
  • Le nombre de requêtes pour écrire un bloc afin qu'il soit copié dans le cache (seuil de remplissage sur écriture) est de 0 à 4.


Les profils peuvent être modifiés à la volée, mais, bien sûr, avec la mise à zéro du contenu du cache et son nouveau «réchauffement».


Compte tenu du principe de fonctionnement du cache SSD, on peut distinguer les principales opérations lors de son utilisation:







Lecture des données lorsqu'elles ne sont pas dans le cache


  1. La demande de l'hôte va au contrôleur;
  2. Étant donné que ceux demandés ne sont pas dans le cache SSD, ils sont lus à partir des disques durs;
  3. Les données lues sont envoyées à l'hôte. Dans le même temps, une vérification est en cours pour voir si ces blocs sont «chauds»;
  4. Si tel est le cas, ils sont copiés dans le cache SSD pour référence future.





Lecture des données lorsqu'elles sont présentes dans le cache


  1. La demande de l'hôte va au contrôleur;
  2. Comme les données demandées sont dans le cache SSD, elles sont lues à partir de là;
  3. Les données lues sont envoyées à l'hôte.





Écrire des données lors de l'utilisation du cache de lecture


  1. Une demande d'écriture de l'hôte est envoyée au contrôleur;
  2. Les données sont écrites sur les disques durs;
  3. L'hôte renvoie une réponse concernant l'enregistrement réussi;
  4. Dans le même temps, il est vérifié si le bloc est «chaud» (le paramètre Seuil de remplissage sur écriture est comparé). Si tel est le cas, il est copié dans le cache SSD pour une utilisation future.





Écriture de données lors de l'utilisation du cache en lecture / écriture


  1. Une demande d'écriture de l'hôte est envoyée au contrôleur;
  2. Les données sont écrites dans le cache SSD;
  3. L'hôte renvoie une réponse concernant l'enregistrement réussi;
  4. Les données du cache SSD en arrière-plan sont écrites sur les disques durs;



Vérification en entreprise


Banc d'essai

2 serveurs (CPU: 2 x Xeon E5-2620v3 2,4 Hz / RAM: 32 Go) sont connectés par deux ports via Fibre Channel 16G directement au système de stockage XCubeSAN XS5224D (16 Go de RAM / contrôleur).


Utilisé 16 x Seagate Constellation ES, ST500NM0001, 500 Go, SAS 6 Gb / s, combinés en RAID5 (15 + 1), pour la matrice de données et 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100 Go, SAS 12 Gb / s comme cache


2 volumes ont été créés: un pour chaque serveur.



Test 1. Cache SSD en lecture seule avec 1-8 SSD


Cache SSD


  • Type d'E / S: personnalisation
  • Taille du bloc de cache: 4 Mo
  • Seuil de remplissage en lecture: 1
  • Seuil de remplissage en écriture: 0

Modèle d'E / S


  • Outil: IOmeter V1.1.0
  • Travailleurs: 1
  • Exceptionnel (profondeur de file d'attente): 128
  • Spécifications d'accès: 4Ko, 100% lecture, 100% aléatoire



En théorie, plus il y a de SSD dans le pool de cache, plus les performances sont élevées. En pratique, cela a été confirmé. La seule augmentation significative du nombre de SSD avec un petit nombre de volumes ne conduit pas à un effet explosif.


Test 2. Cache SSD en mode lecture + écriture avec 2-8 SSD


Cache SSD


  • Type d'E / S: personnalisation
  • Taille du bloc de cache: 4 Mo
  • Seuil de remplissage en lecture: 1
  • Seuil de remplissage en écriture: 1

Modèle d'E / S


  • Outil: IOmeter V1.1.0
  • Travailleurs: 1
  • Exceptionnel (profondeur de file d'attente): 128
  • Spécifications d'accès: 4Ko, 100% écriture, 100% aléatoire



Le même résultat: une croissance et une évolutivité explosives des performances avec une augmentation du nombre de SSD.


Dans les deux tests, la quantité de données opérationnelles était inférieure à la taille totale du cache. Par conséquent, au fil du temps, tous les blocs ont été copiés dans le cache. Et le travail a été, en fait, effectué avec un SSD, pratiquement sans affecter les disques durs. Le but de ces tests était de démontrer clairement l'efficacité du réchauffement du cache et de la mise à l'échelle de ses performances en fonction du nombre de SSD.


Maintenant, revenons du paradis sur terre et vérifions une situation plus vitale lorsque la quantité de données est supérieure à la taille du cache. Pour que le test passe dans un temps raisonnable (le terme de «réchauffement» du cache augmente considérablement avec l'augmentation de la taille du volume), nous nous limitons à la taille du volume de 120 Go.


Test 3. Emulation de la base de données


Cache SSD


  • Type d'E / S: base de données
  • Taille du bloc de cache: 1 Mo
  • Seuil de remplissage en lecture: 2
  • Seuil de remplissage en écriture: 1

Modèle d'E / S


  • Outil: IOmeter V1.1.0
  • Travailleurs: 1
  • Exceptionnel (profondeur de file d'attente): 128
  • Spécifications d'accès: 8 Ko, 67% lecture, 100% aléatoire


Le verdict


Comme conclusion évidente, bien sûr, une bonne efficacité d'utilisation du cache SSD suggère d'augmenter les performances de tout système de stockage. En ce qui concerne QSAN XCubeSAN, cette déclaration est pleinement applicable: la fonction de mise en cache SSD est parfaitement implémentée. Cela s'applique à la prise en charge de la lecture et de la lecture + écriture, aux paramètres de travail flexibles pour tous les cas d'utilisation, ainsi qu'aux performances finales du système dans son ensemble. Par conséquent, pour un coût très raisonnable (le prix d'une licence est comparable au coût de 1 à 2 SSD), vous pouvez augmenter considérablement les performances globales.

Source: https://habr.com/ru/post/fr432366/


All Articles