Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Les technologies d'amélioration des performances basées sur l'utilisation de disques SSD et largement utilisées dans les systèmes de stockage ont été inventées depuis longtemps. Tout d’abord, c’est l’utilisation du SSD comme espace de stockage, efficace à 100%, mais coûteuse. Par conséquent, des technologies de fatigue et de mise en cache sont utilisées, où les SSD ne sont utilisés que pour les données les plus populaires (« chaudes »). La hiérarchisation est adaptée aux scénarios d’utilisation à long terme (jours-semaines) de données « chaudes ». La mise en cache, au contraire, est destinée à une utilisation à court terme (minutes-heures). Ces deux options sont implémentées dans le système de stockage QSAN XCubeSAN. Dans cet article, nous examinerons la mise en œuvre du deuxième algorithme - Mise en cache SSD.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

L’essence de la technologie de mise en cache SSD réside dans l’utilisation des SSD comme cache intermédiaire entre les disques durs et la RAM du contrôleur. Les performances du SSD sont bien entendu inférieures aux performances du propre cache du contrôleur, mais le volume est d'un ordre de grandeur supérieur. On obtient donc un certain compromis entre vitesse et volume.

Indications d'utilisation du cache SSD pour la lecture :

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

Les indications pour utiliser un cache SSD en lecture+écriture sont les mêmes, sauf pour la nature des opérations – 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 QSAN Ils offrent également la possibilité d'utiliser le cache pour l'écriture. Pour activer la fonctionnalité de mise en cache SSD dans les systèmes de stockage QSAN, vous devez acheter une licence distincte (fournie électroniquement).

Le cache SSD dans XCubeSAN est physiquement implémenté sous la forme de 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 disques SSD. Et déjà dans les propriétés du disque virtuel, nous déterminons s'il utilisera un 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. Vous pouvez également ajouter à chaud des disques SSD au pool et les supprimer de là. Lors de la création d'un cache de pool SSD, vous devez choisir dans quel mode il fonctionnera : lecture seule ou lecture+écriture. Son organisation physique en dépend. Puisqu'il peut y avoir plusieurs pools de cache, leurs fonctionnalités peuvent être différentes (c'est-à-dire que le système peut disposer simultanément de pools de cache en lecture et en lecture+écriture).

Si un pool de cache en lecture seule est utilisé, il peut être composé de 1 à 8 disques SSD. Les disques ne doivent pas nécessairement avoir la même capacité ni le même 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. Si l'un des SSD tombe en panne, rien de grave ne se produira : après tout, le cache ne contient qu'une copie des données stockées sur la matrice de disques durs. C'est juste que la quantité de cache SSD disponible diminuera (ou deviendra nulle si vous utilisez le cache SSD d'origine à partir d'un lecteur).

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Si le cache est utilisé pour des 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 des paires de disques (la structure NRAID 1+ est utilisée). 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, une panne du SSD du pool de cache entraînerait une perte d’informations. Dans le cas du NRAID 1+, une panne du SSD entraînera simplement le transfert du cache vers un état de lecture seule, les données non écrites étant vidées sur la matrice de disques durs. Après avoir remplacé le SSD défectueux, le cache reviendra à son mode de fonctionnement d'origine. À propos, pour plus de sécurité, vous pouvez attribuer des disques de secours dédiés à un cache en lecture et en écriture.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Lors de l'utilisation de la fonction de mise en cache SSD dans XCubeSAN, il existe un certain nombre d'exigences concernant la quantité de mémoire des contrôleurs de stockage : plus il y a de mémoire système, plus le pool de cache sera disponible.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Contrairement à la plupart des fabricants de systèmes de stockage, qui proposent uniquement une option pour activer/désactiver le cache SSD, QSAN offre plus d'options. Vous pouvez notamment sélectionner le mode de fonctionnement du cache en fonction de la nature de la charge. Il existe trois modèles prédéfinis dont le fonctionnement est le plus proche 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 des paramètres requis :

  • Taille du bloc (taille du bloc de cache) – 1/2/4 Mo
  • Nombre de requêtes pour lire un bloc afin qu'il soit copié dans le cache (seuil de remplissage lors de la lecture) – 1..4
  • Nombre de requêtes pour écrire un bloc afin qu'il soit copié dans le cache (seuil de remplissage lors de l'écriture) – 0..4

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Les profils peuvent être modifiés à la volée, mais bien sûr avec le contenu de la réinitialisation du cache et son nouveau « préchauffage ».

Compte tenu du principe de fonctionnement du cache SSD, nous pouvons souligner les principales opérations lors de son utilisation :

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

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

  1. Une requête de l'hôte arrive au contrôleur ;
  2. Puisque ceux demandés ne sont pas dans le cache SSD, ils sont lus sur les disques durs ;
  3. Les données lues sont envoyées à l'hôte. Parallèlement, on vérifie si ces blocs sont « chauds » ;
  4. Si oui, ils sont copiés dans le cache SSD pour une utilisation ultérieure.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Lire les données lorsqu'elles sont présentes dans le cache

  1. Une requête de l'hôte arrive au contrôleur ;
  2. Puisque les données demandées se trouvent dans le cache SSD, elles sont lues à partir de là ;
  3. Les données lues sont envoyées à l'hôte.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

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

  1. Une demande d'écriture de l'hôte arrive au contrôleur ;
  2. Les données sont écrites sur des disques durs ;
  3. Une réponse indiquant la réussite de l'enregistrement est renvoyée à l'hôte ;
  4. En même temps, il est vérifié si le bloc est « chaud » (le paramètre Populate-on-Write Threshold est comparé). Si oui, il est copié dans le cache SSD pour une utilisation ultérieure.

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Écriture de données lors de l'utilisation d'un cache en lecture+écriture

  1. Une demande d'écriture de l'hôte arrive au contrôleur ;
  2. Les données sont écrites dans le cache SSD ;
  3. Une réponse indiquant la réussite de l'enregistrement est renvoyée à l'hôte ;
  4. Les données du cache SSD sont écrites sur les disques durs en arrière-plan ;

Action d'enregistrement

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 RAM/contrôleur).

Nous avons utilisé 16 x Seagate Constellation ES, ST500NM0001, 500 Go, SAS 6 Gb/s, combinés en RAID5 (15+1), pour la baie 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 de 1 à 8 SSD

Cache SSD

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

Modèle d'E/S

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

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

En théorie, plus il y a de SSD dans le pool de cache, plus les performances sont élevées. En pratique, cela s'est confirmé. La seule augmentation significative du nombre de SSD avec un petit nombre de volumes n'entraîne pas d'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 après lecture : 1
  • Seuil de remplissage sur écriture : 1

Modèle d'E/S

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

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Le même résultat : une croissance explosive des performances et une mise à l’échelle à mesure que le nombre de disques SSD augmente.

Dans les deux tests, la quantité de données de travail é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, en fait, a déjà été réalisé avec des 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 l'évolution de ses performances en fonction du nombre de SSD.

Revenons maintenant sur terre et vérifions une situation plus réaliste, où la quantité de données est supérieure à la taille du cache. Pour que le test réussisse dans un délai raisonnable (la période de « préchauffage » du cache augmente considérablement à mesure que la taille du volume augmente), nous limiterons la taille du volume à 120 Go.

Test 3. Émulation de base de données

Cache SSD

  • Type d'E/S : Base de données
  • Taille du bloc de cache : 1 Mo
  • Seuil de remplissage après lecture : 2
  • Seuil de remplissage sur écriture : 1

Modèle d'E/S

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

Implémentation de la mise en cache SSD dans le système de stockage QSAN XCubeSAN

Verdict

La conclusion évidente est bien entendu la bonne efficacité de l’utilisation d’un cache SSD pour améliorer les performances de tout système de stockage. Appliqué à QSAN XCubeSAN Cette affirmation s'applique pleinement : la fonction de mise en cache SSD est parfaitement implémentée. Cela concerne la prise en charge des modes lecture et lecture + écriture, les paramètres flexibles pour tout scénario d'utilisation, ainsi que les performances globales du système dans son ensemble. Ainsi, pour un coût très raisonnable (le prix de la licence est comparable au coût de 1 à 2 SSD), vous pouvez augmenter considérablement les performances globales.

Source: habr.com

Ajouter un commentaire