Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La mémoire persistante (ou PMem) est un nouveau type de technologie de mémoire qui conserve son contenu au fil des cycles d’alimentation, et peut être utilisée en tant que stockage de niveau supérieur. C’est pourquoi la PMem est parfois appelée « mémoire de classe de stockage » ou SCM. Cet article fournit un arrière-plan sur la mémoire persistante et explique comment le déployer en tant que niveau de stockage supérieur dans Azure Local et Windows Server.
Qu’est-ce que la mémoire persistante ?
La mémoire persistante est un type de support de sauvegarde non volatil qui tient dans un emplacement DIMM (mémoire) standard. Elle est plus lente que la DRAM, mais offre un débit plus élevé que les technologies SSD et NVMe. Par rapport à la DRAM, les modules de mémoire persistante offrent des capacités beaucoup plus importantes et sont moins onéreux par Go, mais sont plus coûteux que la technologie NVMe. Le contenu de la mémoire subsiste même en cas de coupure de courant du système suite à perte d’alimentation inattendue, à un arrêt déclenché par l’utilisateur ou à une panne du système. Cela signifie que vous pouvez utiliser des modules de mémoire persistante en guise de stockage ultra-rapide et persistant.
Azure Local et Windows Server 2019 prennent en charge l’utilisation de la mémoire persistante en tant que cache ou lecteur de capacité. Toutefois, étant donné le modèle de tarification, une mémoire persistante offre un maximum de valeur en tant que cache ou petit stockage dédié pour des données de mappage de mémoire. Dans la plupart des cas, les lecteurs de mémoire persistante sont automatiquement utilisés comme lecteurs de cache. Tout ce qui est plus lent est utilisé comme lecteur de capacité. Pour plus d’informations sur la configuration des lecteurs de cache et de capacité, consultez Compréhension du cache de pool de stockage et Planifier des volumes.
Concepts de mémoire persistante
Cette section décrit les concepts de base que vous devez comprendre afin de déployer la mémoire persistante dans les environnements Windows Server et Azure Local pour réduire les goulots d’étranglement des E/S et améliorer les performances.
Méthodes d’accès
Il existe deux méthodes d’accès à la mémoire persistante. Elles sont les suivantes :
- Bloquer l’accès, qui fonctionne comme le stockage pour la compatibilité des applications. Dans cette configuration, les données circulent de manière normale dans le système de fichiers et les piles de stockage. Vous pouvez utiliser cette configuration en combinaison avec NTFS et ReFS, qui est recommandée pour la plupart des cas d’utilisation.
- Accès direct (DAX), qui fait office de mémoire pour obtenir la latence la plus faible. Vous ne pouvez utiliser la méthode DAX qu’en association avec la technologie NTFS. Si vous n’utilisez pas la méthode DAX correctement, vous vous exposez à des pertes de données. Nous vous recommandons vivement d’utiliser la méthode DAX avec une table des traductions de bloc (BTT) afin de réduire le risque d’erreurs d’écriture. Pour plus d’informations, consultez Comprendre et configurer DAX.
Warning
DAX n’est pas pris en charge dans les environnements locaux Azure. Azure Local prend uniquement en charge le blocage de l’accès, avec BTT activé.
Regions
Une région est un ensemble d’un ou de plusieurs modules de mémoire persistante. Les régions sont souvent créées en tant que jeux entrelacés dans lesquels plusieurs modules de mémoire persistante apparaissent sous la forme d’un espace d’adressage virtuel logique unique pour augmenter le débit. Pour augmenter la bande passante disponible, les adresses virtuelles adjacentes sont réparties entre plusieurs modules de mémoire persistante. Il est généralement possible de créer des régions dans le BIOS d’une plateforme serveur.
PmemDisks
Pour utiliser la mémoire persistante comme stockage, vous devez définir au moins un PmemDisk, qui est un disque dur virtuel (VHD) sur l’hôte qui énumère en tant que PmemDisk à l’intérieur d’une machine virtuelle. Un PmemDisk est une plage d’adresses contiguës de mémoire non volatile que vous pouvez considérer comme une partition de disque dur ou LUN. Vous pouvez créer plusieurs PmemDisks à l’aide des applets de commande Windows PowerShell pour répartir la capacité brute disponible. Chaque module de mémoire persistante contient une zone de stockage d’étiquette (LSA) qui stocke les métadonnées de configuration.
Table des traductions de bloc
Contrairement aux disques SSD, les modules de mémoire persistante ne protègent pas contre les « écritures déchirées » qui peuvent se produire en cas de panne d’alimentation ou de panne du système, mettant ainsi les données en danger. La BTT atténue ce risque en fournissant une sémantique de mise à jour de secteur atomique pour les périphériques mémoire persistants, et en activant essentiellement les écritures de secteur de type bloc de sorte que les applications puissent éviter de mélanger des données anciennes et nouvelles en cas de défaillance. Nous vous recommandons vivement d’activer la BTT dans presque tous les cas. Étant donné que la BTT est une propriété de PmemDisk, elle doit être activée lors de la création du PmemDisk.
En mode d’accès en bloc, nous vous recommandons d’utiliser BTT, car toutes les données utilisent la sémantique de bloc. La BTT est également utile en mode DAX, car les opérations de métadonnées continuent d’utiliser une sémantique de bloc, même si les opérations de données de l’application ne le font pas. Même si toutes les opérations d’application utilisent des fichiers mappés en mémoire avec une sémantique de DAX, des erreurs d’écriture peuvent se produire pour les opérations de métadonnées. L’activation de la BTT est donc toujours précieuse.
Matériel pris en charge
Le tableau suivant présente le matériel de mémoire persistante pris en charge pour Azure Local et Windows Server. Windows Server 2019 prend entièrement en charge la mémoire persistante, y compris dans les espaces de stockage direct.
| Technologie de mémoire persistante | Windows Server 2016 | Azure Local 2311.2 et versions ultérieures / Windows Server 2019 et versions ultérieures |
|---|---|---|
| NVDIMM-N en mode persistant | Supported | Supported |
| Mémoire persistante DC Intel Optane™ en mode direct d’application | Non pris en charge | Supported |
| Mémoire persistante DC Intel Optane™ en mode mémoire | Supported | Supported |
Intel Optane DC Persistent Memory prend en charge les modes d’exploitation Mémoire (volatile) et App Direct (persistant). Pour utiliser des modules de mémoire persistante en guise de stockage, ce qui constitue le cas d’usage principal pour les charges de travail de serveur, vous devez utiliser le mode Direct d’application. Le mode Mémoire utilise essentiellement la mémoire persistante en tant que RAM plus lente, qui ne remplit généralement pas les exigences de performances des charges de travail de serveur. Le mode Mémoire diffère du DAX, qui est un volume de stockage persistant accessible à l’aide d’une sémantique de type mémoire.
Le mode de fonctionnement est souvent préconfiguré par le fabricant de l’appareil d’origine.
Note
Quand vous redémarrez un système contenant plusieurs modules de mémoire persistante Intel® Optane™ en mode Direct d’application qui sont divisés en plusieurs PmemDisks, vous risquez de perdre l’accès à certains ou à tous les disques de stockage logiques associés. Ce problème se produit sur les versions de Windows Server 2019 antérieures à la version 1903.
Cette perte d’accès se produit parce qu’un module de mémoire persistante n’est pas formé ou est défaillant lors du démarrage du système. Dans ce cas, tous les PmemDisks sur n’importe quel module de mémoire persistante sur le système échouent, y compris ceux qui ne sont pas mappés physiquement au module ayant échoué.
Pour restaurer l’accès à tous les PmemDisks, remplacez le module défaillant.
Si un module échoue sur Windows Server 2019 version 1903 ou plus récente, vous perdez uniquement l’accès aux PmemDisks physiquement mappés au module affecté. Les autres ne sont pas affectés.
Configurer la mémoire persistante
Si vous utilisez la mémoire persistante Intel Optane, suivez les instructions ci-dessous. Si vous utilisez des modules de mémoire persistante d’un autre fournisseur, consultez leur documentation.
Pour créer un PmemDisk qui prend en charge la BTT, utilisez l’applet de commande New-VHD :
New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT
L’extension de disque dur virtuel doit être « vhdpmem ».
Vous pouvez également convertir un disque dur virtuel ne prenant pas en charge la BTT en disque dur virtuel prenant en charge la BTT à l’aide de l’applet de commande Convert-VHD :
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
Après la conversion, le nouveau VHD a le même GUID d’espace de noms que celui d’origine. Cela peut occasionner des problèmes, en particulier si les deux disques sont attachés à la même machine virtuelle. Pour créer un nouvel UUID d’espace de noms pour le disque dur virtuel converti, utilisez l’applet de commande Set-VHD :
Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem
Comprendre les ensembles entrelacés
Il est généralement possible de créer des ensembles entrelacés dans le BIOS d’une plateforme serveur afin de faire apparaître plusieurs périphériques mémoire persistants en tant que disque unique pour le système d’exploitation hôte, ce qui permet d’augmenter le débit de ce disque.
Note
Windows Server 2016 ne prend pas en charge les ensembles entrelacés de modules de mémoire persistante.
Rappelez-vous qu’un module de mémoire persistante réside dans un emplacement DIMM (mémoire) standard, ce qui rapproche les données du processeur. Cette configuration réduit la latence et améliore les performances de récupération. Pour augmenter le débit, au moins deux modules de mémoire persistante créent un ensemble entrelacé bidirectionnel pour effectuer les opérations de lecture/écriture. Les configurations les plus courantes sont un entrelacement bidirectionnel ou quadridirectionnel.
Vous pouvez utiliser l’applet de commande PowerShell Get-PmemDisk pour vérifier la configuration de tels disques logiques, comme suit :
Get-PmemDisk
DiskNumber Size HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ---- ------------ ------------- ------------ ----------------- -------------------
2 252 GB Healthy None True {20, 120} 0
3 252 GB Healthy None True {1020, 1120} 0
Nous pouvons voir que le disque logique PMem 2 utilise les périphériques physiques Id20 et Id120, et que le disque logique PMem 3 utilise les périphériques physiques Id1020 et Id1120.
Pour récupérer des informations supplémentaires sur l’ensemble entrelacé qu’un lecteur logique utilise, exécutez l’applet de commande Get-PmemPhysicalDevice :
(Get-PmemDisk)[0] | Get-PmemPhysicalDevice
DeviceId DeviceType HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ---------- ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
20 Intel INVDIMM device Healthy {Ok} CPU1_DIMM_C1 102005310 126 GB 0 GB
120 Intel INVDIMM device Healthy {Ok} CPU1_DIMM_F1 102005310 126 GB 0 GB
Configurer des ensembles entrelacés
Pour configurer un ensemble entrelacé, exécutez l’applet de commande Get-PmemUnusedRegion afin d’examiner toutes les régions de mémoire persistante qui ne sont pas attribuées à un disque de mémoire persistante logique sur le système :
Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
1 270582939648 {20, 120}
3 270582939648 {1020, 1120}
Pour afficher toutes les informations du périphérique PMem dans le système, dont son type, son emplacement, son intégrité, son état opérationnel, et autres, exécutez l’applet de commande Get-PmemPhysicalDevice :
Get-PmemPhysicalDevice
DeviceId DeviceType HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile
memory size
-------- ---------- ------------ ----------------- ---------------- ---------------- ---------------------- --------------
1020 Intel INVDIMM device Healthy {Ok} CPU2_DIMM_C1 102005310 126 GB 0 GB
1120 Intel INVDIMM device Healthy {Ok} CPU2_DIMM_F1 102005310 126 GB 0 GB
120 Intel INVDIMM device Healthy {Ok} CPU1_DIMM_F1 102005310 126 GB 0 GB
20 Intel INVDIMM device Healthy {Ok} CPU1_DIMM_C1 102005310 126 GB 0 GB
Étant donné que nous disposons d’une région PMem non utilisée, nous pouvons créer des disques de mémoire persistante. Nous pouvons utiliser la région inutilisée pour créer plusieurs disques de mémoire persistante en exécutant les applets de commande suivantes :
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
Une fois cette opération effectuée, nous pouvons voir les résultats en exécutant l’applet de commande suivante :
Get-PmemDisk
DiskNumber Size HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ---- ------------ ------------- ------------ ----------------- -------------------
2 252 GB Healthy None True {20, 120} 0
3 252 GB Healthy None True {1020, 1120} 0
Il est important de noter que nous pouvons exécuter Get-PhysicalDisk | Where MediaType -eq SCM au lieu de Get-PmemDisk pour obtenir les mêmes résultats. Le disque de mémoire persistante nouvellement créé correspond à un des lecteurs qui s’affichent dans PowerShell et dans Windows Admin Center.
Remplacer la mémoire persistante
Si vous devez remplacer un module défaillant, vous devez ré-approvisionner le disque PMem (vois les étapes décrites précédemment).
Lorsque de la résolution de problèmes, il se peut que vous deviez utiliser l’applet de commande Remove-PmemDisk. Cette applet de commande supprime un disque de mémoire persistante spécifique. Nous pouvons supprimer tous les disques mémoire persistante actuels en exécutant les applets de commande suivantes :
Get-PmemDisk | Remove-PmemDisk
cmdlet Remove-PmemDisk at command pipeline position 1
Supply values for the following parameters:
DiskNumber: 2
This will remove the persistent memory disk(s) from the system and will result in data loss.
Remove the persistent memory disk(s)?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Removing the persistent memory disk. This may take a few moments.
Important
La suppression d’un disque de mémoire persistante entraîne une perte de données sur ce disque.
Il se peut que vous deviez également exécuter l’applet de commande Initialize-PmemPhysicalDevice . Cette applet de commande initialise les zones de stockage d’étiquette sur les périphériques physiques de mémoire persistante, et peut effacer des informations de stockage d’étiquette endommagées sur ceux-ci.
Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice
This will initialize the label storage area on the physical persistent memory device(s) and will result in data loss.
Initializes the physical persistent memory device(s)?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): A
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Important
Initialize-PmemPhysicalDevice entraîne une perte de données dans la mémoire persistante. Ne l’utilisez qu’en dernier recours pour résoudre des problèmes liés à la mémoire persistante.
Mémoire persistante en action à Microsoft Ignite 2018
Pour voir certains des avantages de la mémoire persistante, examinons cette vidéo de Microsoft Ignite 2018.
Tout système de stockage offrant une tolérance de panne effectue nécessairement des copies distribuées d’écritures. Ces opérations doivent traverser le réseau et amplifier le trafic d’écriture principal. Pour cette raison, les chiffres absolus de référence d’IOPS les plus élevés sont généralement obtenus en mesurant uniquement les lectures, en particulier si le système de stockage dispose d’optimisations de bon sens pour lire à partir de la copie locale autant que possible. Les espaces de stockage direct sont optimisés pour ce faire.
Mesuré en utilisant uniquement les opérations de lecture, le cluster a produit 13 798 674 IOPS.
Si vous regardez la vidéo de près, vous remarquerez que la latence est plus étonnante encore. Même à plus de 13,7 millions d’IOPS, le système de fichiers dans Windows signale une latence constamment inférieure à 40 μs (symbole de microseconde, soit un millionième de seconde). Cette vitesse est un sensiblement plus rapide que celles qu’annoncent fournisseurs les fournisseurs classiques de mémoire flash.
Ensemble, les espaces de stockage direct dans Windows Server 2019 et la mémoire persistante DC Intel® Optane™ offrent des performances exceptionnelles. Ce benchmark de plus de 13,7 M D’E/S par seconde, accompagné d’une latence prévisible et extrêmement faible, est plus de deux fois notre point de référence précédent de 6,7 M IOPS. Qui plus est, cette fois, nous n’avons besoin que de 12 nœuds serveurs, soit 25 % en moins qu’avant.
Le matériel de test était un cluster 12 serveurs configuré pour utiliser la mise en miroir tridirectionnel et les volumes ReFS délimités, 12 x Intel® S2600WFT, 384 Gio de mémoire, 2 x 28 cœurs « CascadeLake », 1,5 To de mémoire persistante Intel® Optane™ DC en tant que cache, 32 To NVMe (4 x 8 To Intel® DC P4510) comme capacité, 2 x Mellanox ConnectX-4 25 Gbits/s.
Le tableau suivant présente tous les chiffres de performances.
| Benchmark | Performance |
|---|---|
| Lecture aléatoire à 100 % de 4 Ko | 13,8 millions d’IOPS |
| Lecture/écriture aléatoires à 90/10 % de 4 Ko | 9,45 millions d’IOPS |
| Lecture séquentielle de 2 Mo | Débit de 549 Go/s |
Étapes suivantes
Pour plus d’informations, consultez également :