NOTA : Ce billet est repris du site Technet de Microsoft (voir lien de la source en fin d'article)
Le cache est configuré automatiquement lorsque les espaces de stockage direct sont activés. 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 sont disponibles pour trois types de dispositifs de stockage :
|
Mémoire non volatile NVMe (Non-Volatile Memory Express)
|
|
Disque SSD (Solid-State Drive) SATA/SAS
|
|
Disque dur HDD (Hard Disk Drive)
|
Ces formats peuvent être combinés de six façons, que nous regroupons dans les deux catégories « 100 % Flash » et « hybride ».
Possibilités de déploiement 100 % Flash
Les déploiements 100 % Flash visent à optimiser les performances de stockage, et n'incluent pas de disques durs rotatifs (HDD).
Possibilités de déploiement hybride
Les déploiements hybrides visent à équilibrer performances et capacité de stockage, ou à optimiser la capacité. Ils comprennent des disques durs rotatifs (HDD).
Les lecteurs de cache sont sélectionnés automatiquement
Dans les déploiements comprenant plusieurs types de lecteurs, les espaces de stockage direct utilisent automatiquement tous les lecteurs les plus « rapides » pour la mise en cache. Les lecteurs restants sont utilisés pour la capacité.
Les types de lecteurs les plus « rapides » sont déterminés selon la hiérarchie suivante.
Par exemple, si vous avez des lecteurs NVMe et SSD, les NVMe seront utilisés pour la mise en cache des SSD.
Si vous avez des lecteurs SSD et HDD, les SSD seront utilisés pour la mise en cache des HDD.
Remarque
Les lecteurs de cache ne sont pas compris dans la capacité de stockage utilisable. Toutes les données stockées en cache sont également stockées ailleurs, même si cette opération peut se faire lors d'une étape ultérieure. Autrement dit, la capacité de stockage brute totale de votre déploiement correspond à la somme de vos lecteurs de capacité uniquement.
Lorsque les lecteurs sont tous du même type, aucun cache n'est configuré automatiquement. Vous avez la possibilité de configurer des lecteurs plus endurants pour la mise en cache de lecteurs moins endurants du même type. Pour en savoir plus, consultez la section Configuration manuelle.
Le comportement du cache est défini de manière automatique
Le comportement du cache est déterminé automatiquement en fonction du ou des types de lecteurs utilisés. Si vous créez un cache pour des disques SSD (par exemple, avec des NVMe), seules les écritures sont mises en cache. Si vous créez un cache pour des disques HDD (par exemple, avec des SSD), les écritures et les lectures sont mises en cache.
Mise en cache en écriture seulement pour les déploiements 100 % Flash
Si vous créez un cache pour des disques SSD (NVMe ou SSD), seules les écritures sont mises en cache. Avec cette méthode, les lecteurs de capacité s'usent moins rapidement. En effet, vous pouvez regrouper de nombreuses écritures et réécritures dans le cache, et ne les déstocker que lorsque c'est nécessaire. Le trafic cumulatif sur les lecteurs de capacité est ainsi réduit, ce qui permet de prolonger leur durée de vie. Pour cette raison, nous vous recommandons de sélectionner des lecteurs très endurants et optimisés pour l'écriture pour le cache. Vous pouvez raisonnablement choisir des lecteurs de capacité moins endurants en écriture.
Les lectures ne sont pas mises en cache, étant donné qu'elles n'affectent pas la durée de vie des lecteurs Flash de manière significative, et que les disques SSD offrent généralement une faible latence dans ce domaine. Aussi, elles arrivent directement des lecteurs de capacité (sauf quand les données ont été écrites trop récemment et qu'elles n'ont pas encore été déstockées du cache). Le cache est ainsi dédié intégralement aux écritures pour une efficacité optimale.
Par conséquent, les caractéristiques d'écriture, comme la latence, sont dictées par les lecteurs de cache, alors que les caractéristiques de lecture sont dictées par les lecteurs de capacité. Dans les deux cas, elles sont cohérentes, prévisibles et uniformes.
Mise en cache en lecture/écriture pour les déploiements hybrides
Si vous créez un cache pour des disques HDD, les écritures et les lectures sont mises en cache. Dans les deux cas, la latence est équivalente à celle des lecteurs Flash (souvent env. 10x meilleure). Le cache de lecture stocke les données lues récemment et fréquemment pour un accès rapide et pour réduire au maximum le trafic aléatoire vers les disques durs. (En raison des délais de recherche et de rotation, la latence et le temps perdu causés par l'accès aléatoire à un disque dur sont considérables.) Les écritures sont mises en cache pour absorber les pics de trafic, et comme précédemment, vous pouvez regrouper les écritures et réécritures afin de réduire au maximum le trafic cumulatif sur les lecteurs de capacité.
Les espaces de stockage direct font appel à un algorithme qui annule l'aspect aléatoire des écritures avant de les déstocker du cache. Cela permet d'émuler un schéma d'E/S d'apparence séquentielle au niveau du lecteur, même quand les E/S réelles provenant de la charge de travail (par exemple, des machines virtuelles) sont aléatoires. Les E/S par seconde et le débit au niveau des disques durs sont ainsi optimisés.
Mise en cache dans des déploiements comprenant les trois types de lecteurs
Lorsque les trois types de lecteurs sont présents, les lecteurs NVMe fournissent le cache pour les disques SSD et HDD. Le comportement est celui décrit ci-dessus : seules les écritures sont mises en cache pour les SSD. Pour les HDD, les lectures et les écritures sont mises en cache. Le fardeau de la mise en cache pour les HDD est réparti équitablement entre les lecteurs de cache.
Récapitulatif
Ce tableau récapitule les lecteurs utilisés pour la mise en cache et la capacité, et rappelle les comportements de cache associés à chaque déploiement.
Déploiement
|
Lecteurs de cache
|
Lecteurs de capacité
|
Comportement du cache (par défaut)
|
Uniquement des disques NVMe
|
Aucun (configuration manuelle possible, mais facultative)
|
NVMe
|
Écriture seulement (si configuré)
|
Disques SSD uniquement
|
Aucun (configuration manuelle possible, mais facultative)
|
SSD
|
Écriture seulement (si configuré)
|
NVMe + SSD
|
NVMe
|
SSD
|
Écriture seulement
|
NVMe + HDD
|
NVMe
|
HDD
|
Lecture + Écriture
|
SSD + HDD
|
SSD
|
HDD
|
Lecture + Écriture
|
NVMe + SSD + HDD
|
NVMe
|
SSD + HDD
|
Lecture + Écriture pour les HDD, Écriture seulement pour les SSD
|
Architecture côté serveur
Le cache est mis en œuvre côté lecteur : les différents lecteurs formant le cache au niveau d'un serveur sont reliés à un ou plusieurs lecteurs de capacité au sein de ce même serveur.
Étant donné que le cache est situé sous le reste de la pile de stockage à définition logicielle Windows, les concepts d'espaces de stockage et de tolérance de panne ne sont pas implémentés, ni nécessaires. Vous pouvez considérer cela comme des lecteurs « hybrides » (mi-Flash, mi-disque) qui sont ensuite présentés à Windows. Comme avec un véritable lecteur hybride, le mouvement en temps réel des données à chaud et à froid entre les portions plus rapides et plus lentes du support physique est presque invisible de l'extérieur.
Étant donné que la résilience dans les espaces de stockage direct relève au moins du niveau serveur (à savoir que les copies des données sont toujours écrites sur différents serveurs, avec au moins une copie par serveur), les données en cache bénéficient de la même résilience que les données qui ne sont pas en cache.
Par exemple, lorsque vous utilisez une mise en miroir triple, trois copies des données sont écrites sur différents serveurs quand elles arrivent en cache. Indépendamment du fait qu'elles soient ou non déstockées du cache, il existera toujours trois copies.
Les mappages de lecteurs sont dynamiques
Le mappage entre les lecteurs de cache et de capacité peut être effectué selon n'importe quel ratio, de 1:1 jusqu'à 1:12 et au-delà. Il s'ajuste automatiquement lors de l'ajout ou du retrait de lecteurs, par exemple quand vous agrandissez le système ou en cas de panne. Cela signifie que vous pouvez ajouter des lecteurs de cache ou de capacité de manière indépendante, quand vous le souhaitez.
Nous vous recommandons de choisir un nombre de lecteurs de capacité qui soit un multiple du nombre de lecteurs de cache, pour des raisons de symétrie. Par exemple, si vous avez quatre lecteurs de cache, vous obtiendrez des performances plus équilibrées avec huit lecteurs de capacité plutôt qu'avec sept ou neuf.
Gestion des pannes au niveau des lecteurs de cache
En cas de panne d'un lecteur de cache, les écritures qui n'ont pas encore été déstockées de ce dernier sont perdues pour le serveur local, autrement dit il ne reste que les autres copies (sur les autres serveurs). Tout comme dans n'importe quel scénario de panne de lecteur, les espaces de stockage récupèrent automatiquement les données en consultant les copies survivantes.
Pendant une brève période, les lecteurs de capacité rattachés au lecteur de cache perdu seront considérés comme défectueux. Une fois que le mappage de cache aura été renouvelé (automatiquement) et que les données auront été réparées (automatiquement), ces lecteurs seront de nouveau considérés comme intègres.
C'est pour cette raison qu'il faut au moins deux lecteurs de cache par serveur pour préserver les performances.
Vous pouvez remplacer un lecteur de cache tout comme n'importe quel autre lecteur.
Remarque
Il vous faudra peut-être couper l'alimentation pour remplacer en toute sécurité un disque NVMe de type carte d'extension ou M.2.
Relation avec les autres caches
Il existe plusieurs autres caches non reliés dans la pile de stockage à définition logicielle Windows. Par exemple, le cache en écriture différée des espaces de stockage, le cache de lecture ReFS et le cache de lecture en mémoire pour le volume partagé de cluster.
Avec les espaces de stockage direct, le comportement par défaut du cache en écriture différée des espaces de stockage et du cache de lecture ReFS ne doit pas être modifié. Par exemple, vous ne pouvez pas utiliser de paramètres tels que -WriteCacheSize sur l'applet de commande New-Volume.
Vous pouvez utiliser ou non le cache de volume partagé de cluster, au choix. Il est désactivé par défaut dans les espaces de stockage direct, mais il n'entre pas en conflit avec le nouveau cache décrit dans cette rubrique. Dans certains cas, il peut grandement améliorer les performances. Pour plus d'informations, consultez le message de blog How to Enable CSV Cache (Comment activer le cache de volume partagé de cluster).
Configuration manuelle
Pour la plupart des déploiements, la configuration manuelle n'est pas requise. Si vous en avez besoin, lisez ce qui suit.
Spécifier le modèle du lecteur de cache
Dans les déploiements où tous les lecteurs sont de même type (par exemple, uniquement NVMe ou uniquement SSD), aucun cache n'est configuré, car Windows ne distingue pas automatiquement les caractéristiques telles que l'endurance en écriture sur des lecteurs de même type.
Pour utiliser les lecteurs les plus endurants pour la mise en cache et les lecteurs les moins endurants pour la capacité, vous pouvez spécifier le modèle de lecteur à utiliser avec le paramètre -CacheDeviceModel de l'applet de commande Enable-ClusterS2D. Une fois les espaces de stockage direct activés, tous les lecteurs de ce modèle seront utilisés pour le cache.
Conseil
Assurez-vous d'utiliser exactement le modèle spécifié en sortie de Get-PhysicalDisk.
Exemple
PS C:\> Get-PhysicalDisk | Group Model -NoElement
Count Name
----- ----
8 FABRIKAM NVME-1710
16 CONTOSO NVME-1520
PS C:\> Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"
Vous pouvez vérifier que les lecteurs que vous avez choisis sont utilisés pour le cache en exécutant Get-PhysicalDisk dans PowerShell et en vérifiant que la propriété Usage indique bien "Journal".
Possibilités de déploiement manuel
La configuration manuelle offre les possibilités de déploiement suivantes :
Définir le comportement du cache
Vous pouvez changer le comportement par défaut du cache. Par exemple, vous pouvez mettre en cache les lectures, même dans un déploiement 100 % Flash. Nous vous déconseillons de modifier ce comportement à moins d'être certain que le comportement par défaut ne convient pas à votre charge de travail.
Pour modifier le comportement, utilisez l'applet de commande Set-ClusterS2D et ses paramètres -CacheModeSSD et -CacheModeHDD. Le paramètre CacheModeSSD définit le comportement d'un cache associé à des disques SSD. Le paramètre CacheModeHDD définit le comportement d'un cache associé à des disques durs. Vous pouvez le faire à tout moment une fois les espaces de stockage activés.
Vous pouvez utiliser Get-ClusterS2D pour vérifier le comportement.
Exemple
PS C:\> Get-ClusterS2D
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
...
PS C:\> Set-ClusterS2D -CacheModeSSD ReadWrite
PS C:\> Get-ClusterS2D
CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite
...
Définir la taille du cache
La taille du cache doit être définie en fonction des besoins de votre charge de travail ou de vos applications (les données lues ou écrites activement à un instant T).
C'est important notamment pour les déploiements hybrides avec des disques durs. Si les plages de travail actives sont plus volumineuses que votre cache ou si elles dérivent trop vite, le nombre de lectures manquées risque d'augmenter et il faudra déstocker les écritures plus agressivement, ce qui nuira aux performances globales.
Vous pouvez utiliser l'utilitaire intégré Analyseur de performances (PerfMon.exe) dans Windows pour inspecter le taux d'absences dans le cache. Plus particulièrement, vous pouvez comparer la valeur Cache Miss Reads/sec au niveau du décompte Cluster Storage Hybrid Disk et le nombre total d'E/S par seconde en lecture de votre déploiement. Chaque « lecteur hybride » correspond à un lecteur de capacité.
Par exemple, deux lecteurs de cache pour quatre lecteurs de capacité vous donneront quatre instances de « lecteurs hybrides » par serveur.
Il n'y a pas de règle universelle, mais si vous constatez qu'il manque trop de lectures au niveau du cache, ce dernier est probablement trop petit et vous devez envisager d'ajouter des lecteurs de cache. Vous pouvez ajouter des lecteurs de cache ou de capacité indépendamment les uns des autres, à tout moment.