Partager via


Présentation du cache du pool de stockage

S’applique à : Azure Stack HCI, versions 22H2 et 21H2 ; Windows Server 2022, Windows Server 2019

Les espaces de stockage direct, la technologie de virtualisation de stockage fondamentale derrière Azure Stack HCI et Windows Server, disposent d’un cache intégré côté serveur pour optimiser les performances de stockage tout en réduisant les coûts. Il s’agit d’un cache de lecture et d’écriture en temps réel volumineux et persistant qui est configuré automatiquement lors du déploiement. Dans la plupart des cas, aucune gestion manuelle n’est requise. Le fonctionnement du cache dépend des types de lecteurs présents.

Types de lecteurs et options de déploiement

Les espaces de stockage direct fonctionnent actuellement avec quatre types de lecteurs :

Type de lecteur Descriptif
PMem PMem fait référence à la mémoire persistante, un nouveau type de faible latence, un stockage hautes performances.
NVMe NVMe (Mémoire Express non volatile) fait référence aux lecteurs à état solide qui se trouvent directement sur le bus PCIe. Les facteurs de forme courants sont 2,5" U.2, PCIe Add-In-Card (AIC) et M.2. NVMe offre des IOPS plus élevées et un débit d’E/S supérieur avec une latence plus basse que n’importe quel autre type de disque que nous prenons en charge aujourd’hui, à l’exception de PMem.
SSD SSD fait référence aux disques SSD, qui se connectent via SATA ou SAS conventionnel.
Disque dur HDD fait référence aux disques durs magnétiques de rotation, qui offrent une grande capacité de stockage à faible coût.

Elles peuvent être combinées de différentes manières, que nous groupons en deux catégories : « all-flash » et « hybrid ». Les déploiements avec tous les disques durs ne sont pas pris en charge.

Remarque

Cet article traite des configurations de cache avec NVMe, SSD et HDD. Pour plus d’informations sur l’utilisation de la mémoire persistante en tant que cache, consultez Comprendre et déployer la mémoire persistante.

Possibilités de déploiement flash

Les déploiements flash visent à optimiser les performances de stockage et à ne pas inclure de disque dur.

Le diagramme montre tous les déploiements flash, notamment NVMe pour la capacité, NVMe pour le cache avec SSD pour la capacité et SSD pour la capacité.

Possibilités de déploiement hybride

Les déploiements hybrides visent à équilibrer les performances et la capacité ou à optimiser la capacité et à inclure hdD.

Le diagramme montre les déploiements hybrides, notamment NVMe pour le cache avec HDD pour la capacité, SSD pour le cache avec HDD pour la capacité, et NVMe pour le cache avec HDD et SSD pour la capacité.

Remarque

Le déploiement hybride n’est pas pris en charge dans la configuration d’un serveur unique. Toutes les configurations de type de stockage unique plat (par exemple all-NVMe ou all-SSD) sont le seul type de stockage pris en charge pour un serveur unique.

Les lecteurs de cache sont sélectionnés automatiquement

Dans les déploiements avec plusieurs types de lecteurs, les espaces de stockage direct utilisent automatiquement tous les lecteurs du type le plus rapide pour la mise en cache. Les lecteurs restants sont utilisés pour augmenter la capacité de stockage.

Quel type est « le plus rapide » est déterminé en fonction de la hiérarchie suivante.

Le diagramme montre les types de disques organisés plus rapidement pour ralentir dans l’ordre NVMe, SSD, disque non étiqueté représentant HDD.

Par exemple, si vous avez des NVMe et des SSD, le cache NVMe pour les SSD.

Si vous avez des SSD et des disques durs, les SSD mettent en cache les données des disques durs.

Remarque

Les lecteurs de cache ne contribuent pas à la capacité de stockage utilisable au cluster. Toutes les données stockées dans le cache sont également stockées ailleurs, ou le seront une fois qu’il sera désactivé. Cela signifie que la capacité de stockage brute totale de votre cluster est la somme de vos lecteurs de capacité uniquement.

Lorsque tous les lecteurs sont du même type, aucun cache n’est configuré automatiquement. Vous avez la possibilité de configurer manuellement des lecteurs d’endurance plus élevés afin de mettre en cache les lecteurs à faible endurance du même type . Consultez la section Configuration manuelle pour savoir comment procéder.

Conseil / Astuce

Dans certains cas, l’utilisation du cache du pool de stockage n’est pas logique. Par exemple, dans les déploiements entièrement NVMe ou entièrement SSD, en particulier à très petite échelle, le fait de ne pas avoir de lecteur utilisé pour le cache peut améliorer l’efficacité du stockage et optimiser les performances. De même, de petits déploiements distants ou de succursales peuvent avoir un espace limité pour les lecteurs de cache.

Le comportement du cache est défini automatiquement

Le comportement du cache est déterminé automatiquement en fonction du ou des types de lecteurs en cours de mise en cache. Lors de la mise en cache pour les lecteurs flash (comme la mise en cache NVMe pour les disques SSD), seules les écritures sont mises en cache. Lors de la mise en cache pour les disques durs rotatifs (comme l'utilisation de SSD pour les HDD), les lectures et les écritures sont mises en cache.

Diagramme comparant la mise en cache pour tout flash, où les écritures sont mises en cache et les lectures ne sont pas, avec hybride, où les lectures et les écritures sont mises en cache.

Mise en cache en écriture seule pour les déploiements flash

La mise en cache peut être utilisée dans un scénario tout flash, par exemple en utilisant NVMe comme cache pour accélérer les performances des disques SSD. Lors de la mise en cache pour tous les déploiements flash, seules les écritures sont mises en cache. Cela réduit l’usure des disques de capacité, car de nombreuses écritures et réécritures peuvent se regrouper dans le cache, puis être transférées uniquement si nécessaire, réduisant le trafic cumulé vers les disques de capacité et prolongeant leur durée de vie. Pour cette raison, nous vous recommandons de sélectionner des disques à haute endurance et optimisés pour l’écriture en cache. Les lecteurs de capacité peuvent raisonnablement avoir une endurance d’écriture inférieure.

Étant donné que les lectures n’affectent pas considérablement la durée de vie du flash, et parce que les disques SSD offrent une faible latence de lecture, les lectures ne sont pas mises en cache : elles sont servies directement à partir des lecteurs de capacité (sauf lorsque les données ont été écrites si récemment qu’elles n’ont pas encore été déphasées). Cela permet au cache d’être entièrement dédié aux écritures, ce qui optimise son efficacité.

Cela entraîne des caractéristiques d’écriture, telles que la latence d’écriture, étant dictées par les lecteurs de cache, tandis que les caractéristiques de lecture sont dictées par les lecteurs de capacité. Les deux sont cohérents, prévisibles et uniformes.

Mise en cache en lecture/écriture pour les déploiements hybrides

Lors de la mise en cache pour HDD, les lectures et les écritures sont mises en cache, afin de fournir une latence similaire à celle des disques flash (souvent environ 10 fois meilleure) pour les deux. Le cache de lecture stocke les données récemment et fréquemment lues pour un accès rapide et afin de réduire le trafic aléatoire vers les disques durs. (En raison des retards de recherche et de rotation, la latence et les pertes de temps encourus par l’accès aléatoire à un disque dur sont significatives.) Les écritures sont mises en cache pour absorber les rafales et, comme précédemment, pour fusionner les écritures et réécritures et réduire le trafic cumulé vers les lecteurs de capacité.

Les espaces de stockage direct mettent en œuvre un algorithme qui rend les écritures moins aléatoires avant leur gestion intermédiaire. Cette technique permet d’émuler un modèle d’E/S sur disque qui semble séquentiel, même si les E/S réelles provenant de la charge de travail (telles que les machines virtuelles) sont aléatoires. Cela optimise les IOPS et le débit sur les disques HDD.

Mise en cache dans les déploiements avec NVMe, SSD et HDD

Lorsque les lecteurs des trois types sont présents, les lecteurs NVMe fournissent une mise en cache pour les disques SSD et les disques DURS. Le comportement est décrit ci-dessus : seules les écritures sont mises en cache pour les disques SSD, et les lectures et les écritures sont mises en cache pour les disques DURS. La charge de la mise en cache pour les disques durs est répartie uniformément entre les disques de cache.

Résumé

Ce tableau récapitule les lecteurs utilisés pour la mise en cache, ceux utilisés pour la capacité et le comportement de la mise en cache pour chaque possibilité de déploiement.

Déploiement Lecteurs de cache Lecteurs de capacité Comportement du cache (par défaut)
Tous les NVMe Aucun (Facultatif : configurer manuellement) NVMe Mode écriture seule (si configuré)
Tous les disques SSD Aucun (Facultatif : configurer manuellement) SSD (Disque à État Solide) Mode écriture seule (si configuré)
NVMe + SSD NVMe SSD (Disque à État Solide) Écriture seule
NVMe + HDD NVMe disque dur Lire + écrire
SSD + HDD SSD (Disque à État Solide) disque dur Lire + écrire
NVMe + SSD + HDD NVMe SSD + HDD Lecture + écriture pour HDD, écriture seule pour SSD

Architecture côté serveur

Le cache est implémenté au niveau du lecteur : les lecteurs de cache individuels au sein d’un serveur sont liés à un ou plusieurs lecteurs de capacité au sein du même serveur.

Étant donné que le cache se trouve sous le reste de la pile de stockage définie par le logiciel Windows, il n’a pas besoin de connaître les concepts tels que les espaces de stockage ou la tolérance de panne. Vous pouvez le considérer comme la création de lecteurs « hybrides » (mémoire flash, disque de partie) qui sont ensuite présentés au système d’exploitation. Comme avec un disque hybride réel, le déplacement en temps réel de données chaudes et froides entre les parties plus rapides et plus lentes du média physique est presque invisible à l’extérieur.

Étant donné que la résilience dans les espaces de stockage direct est au moins au niveau du serveur (ce qui signifie que les copies de données sont toujours écrites sur différents serveurs ; au plus une copie par serveur), les données du cache bénéficient de la même résilience que les données non dans le cache.

Le diagramme représente trois serveurs joints par un miroir tridirectionnel dans une couche espace de stockage, qui accède à une couche de cache de lecteurs NVMe qui accèdent aux lecteurs de capacité non étiquetés.

Par exemple, lors de l’utilisation de la mise en miroir tridirectionnel, trois copies de toutes les données sont écrites sur différents serveurs, où elles atterrissent dans le cache. Désactivés ou non, trois copies existent toujours.

Les liaisons de lecteur sont dynamiques

La liaison entre le cache et les lecteurs de capacité peut avoir n’importe quel rapport, comprise entre 1:1 et 1:12 et au-delà. Il s’ajuste dynamiquement chaque fois que des lecteurs sont ajoutés ou retirés, par exemple lors d'une mise à l’échelle ou après des pannes. Cela signifie que vous pouvez ajouter des lecteurs de cache ou des lecteurs de capacité indépendamment, chaque fois que vous le souhaitez.

Le diagramme animé montre deux lecteurs de cache NVMe qui se mappent dynamiquement d'abord sur quatre lecteurs de capacité, puis sur six, et enfin sur huit.

Nous vous recommandons de faire en sorte que le nombre de lecteurs de capacité soit un multiple du nombre de lecteurs de cache, pour la symétrie. Par exemple, si vous avez 4 lecteurs de cache, vous rencontrez plus de performances avec 8 lecteurs de capacité (ratio 1:2) que avec 7 ou 9.

Gestion des pannes de disque de cache

Lorsqu’un lecteur de cache échoue, toutes les écritures qui n’ont pas encore été déphasées sont perdues sur le serveur local, ce qui signifie qu’elles existent uniquement sur les autres copies (dans d’autres serveurs). Comme après toute autre panne de lecteur, les espaces de stockage peuvent se rétablir automatiquement en consultant les copies survivantes, ce qu’ils font d'ailleurs.

Pendant une courte période, les lecteurs de capacité liés au lecteur de cache perdu apparaissent non sain. Une fois que la liaison du cache a eu lieu (automatiquement) et que la réparation des données est terminée (automatiquement), ils s'affichent à nouveau comme sains.

Ce scénario est pourquoi au minimum deux lecteurs de cache sont requis par serveur pour préserver les performances.

Le diagramme animé montre deux lecteurs de cache SSD mappés à six lecteurs de capacité jusqu’à ce qu’un lecteur de cache échoue, ce qui entraîne le mappage des six lecteurs au lecteur de cache restant.

Vous pouvez ensuite remplacer le lecteur de cache comme n’importe quel autre remplacement de lecteur.

Remarque

Vous devrez peut-être éteindre l'appareil pour remplacer en toute sécurité une NVMe, qu'elle soit du type carte Add-In (AIC) ou de format M.2.

Relation avec d’autres caches

Il existe plusieurs autres caches non liés dans la pile de stockage définie par logiciel Windows. Les exemples incluent le cache d'écriture différée des espaces de stockage et le cache de lecture en mémoire du volume partagé des clusters (CSV).

Avec Azure Stack HCI, le cache d’écriture différée des espaces de stockage ne doit pas être modifié à partir de son comportement par défaut. Par exemple, les paramètres tels que -WriteCacheSize sur l’applet de commande New-Volume ne doivent pas être utilisés.

Vous pouvez choisir d’utiliser le cache CSV, ou non , c’est à vous. Il est activé par défaut dans Azure Stack HCI, mais il n’est pas en conflit avec le cache décrit dans cette rubrique. Dans certains scénarios, il peut fournir des gains de performances précieux. Pour plus d’informations, consultez Utiliser le cache de lecture en mémoire CSV avec Azure Stack HCI.

Configuration manuelle

Pour la plupart des déploiements, la configuration manuelle n’est pas nécessaire. Si vous en avez besoin, consultez les sections suivantes.

Si vous devez apporter des modifications au modèle d’appareil de cache après l’installation, modifiez le document des composants de support du service de santé, comme décrit dans la vue d’ensemble du service de santé.

Spécifier le modèle de lecteur de cache

Dans les déploiements où tous les lecteurs sont de même type, tels que tous les déploiements NVMe ou tous ssd, aucun cache n’est configuré, car Windows ne peut pas distinguer les caractéristiques telles que l’endurance de l’écriture automatiquement entre les lecteurs du même type.

Pour utiliser des lecteurs à endurance plus élevée pour mettre en cache ceux à endurance plus faible du même genre, vous pouvez spécifier le modèle de lecteur à utiliser avec le paramètre -CacheDeviceModel de l’applet de commande Enable-ClusterS2D. Tous les lecteurs de ce modèle sont utilisés pour la mise en cache.

Conseil / Astuce

Veillez à faire correspondre la chaîne de modèle exactement comme elle apparaît dans la sortie de Get-PhysicalDisk.

Exemple :

Tout d’abord, obtenez la liste des disques physiques :

Get-PhysicalDisk | Group Model -NoElement

Voici un exemple de sortie :

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

Entrez ensuite la commande suivante, en spécifiant le modèle d’appareil de cache :

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Vous pouvez vérifier que les lecteurs que vous souhaitez utiliser pour la mise en cache en exécutant Get-PhysicalDisk dans PowerShell et en vérifiant que leur propriété d’utilisation indique « Journal ».

Possibilités de déploiement manuel

La configuration manuelle permet les possibilités de déploiement suivantes :

Le diagramme montre les possibilités de déploiement, notamment NVMe pour le cache et la capacité, ssd pour le cache et la capacité, et SSD pour le cache et SSD mixte et HDD pour la capacité.

Définir le comportement du cache

Il est possible de remplacer le comportement par défaut du cache. Par exemple, vous pouvez le définir pour mettre en cache les lectures même dans un déploiement flash complet. Nous déconseillons de modifier le comportement, sauf si vous êtes certain que la valeur par défaut ne correspond pas à votre charge de travail.

Pour remplacer le comportement, utilisez l’applet de commande Set-ClusterStorageSpacesDirect et ses paramètres -CacheModeSSD et -CacheModeHDD . Le paramètre CacheModeSSD définit le comportement du cache lors de la mise en cache pour SSD. Le paramètre CacheModeHDD définit le comportement du cache lors de la mise en cache pour HDD.

Vous pouvez utiliser Get-ClusterStorageSpacesDirect pour vérifier que le comportement est défini.

Exemple :

Tout d’abord, obtenez les paramètres direct des espaces de stockage :

Get-ClusterStorageSpacesDirect

Voici un exemple de sortie :

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Ensuite, procédez comme suit :

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Voici un exemple de sortie :

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Dimensionnement du cache

Le cache doit être dimensionné pour prendre en charge le jeu de travail (les données lues ou écrites activement à tout moment) de vos applications et charges de travail.

Cela est particulièrement important dans les déploiements hybrides avec des disques durs. Si la plage de travail actif dépasse la taille du cache, ou si elle dérive trop rapidement, les échecs de lectures en cache augmentent et les écritures doivent être déstockées de manière plus agressive, ce qui nuit aux performances globales.

Vous pouvez utiliser l’utilitaire Performance Monitor intégré (PerfMon.exe) dans Windows pour vérifier le taux de ratés de cache. Plus précisément, vous pouvez comparer les échecs de lecture en cache/sec du jeu de compteurs de l’Espace de stockage en cluster du disque hybride à l’ensemble des IOPS de lecture de votre déploiement. Chaque disque hybride correspond à un lecteur de capacité.

Par exemple, 2 lecteurs de cache liés à 4 lecteurs de capacité entraînent 4 instances d’objet « Disque hybride » par serveur.

Analyseur de performances.

Il n’existe aucune règle universelle, mais si trop d’accès ne passent pas par le cache, il peut être sous-dimensionné et vous devez envisager d’ajouter des lecteurs de cache pour augmenter la taille de votre cache. Vous pouvez ajouter des lecteurs de cache ou des lecteurs de capacité indépendamment chaque fois que vous le souhaitez.

Étapes suivantes

Pour plus d’informations sur le stockage, consultez également :