Permanent geheugen begrijpen en implementeren

Van toepassing op: Azure Stack HCI, versies 22H2 en 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10

Permanent geheugen (of PMem) is een nieuw type geheugentechnologie die de inhoud ervan behoudt via energiecycli en kan worden gebruikt als opslag op de hoogste laag. Daarom kunt u horen dat mensen naar PMem verwijzen als 'storage-class memory' of SCM. In dit artikel vindt u achtergrondinformatie over permanent geheugen en wordt uitgelegd hoe u dit implementeert als de bovenste opslaglaag in Azure Stack HCI en Windows Server.

Wat is permanent geheugen?

Permanent geheugen is een type niet-vluchtige media dat in een standaard DIMM-sleuf (geheugen) past. Het is langzamer dan DRAM, maar biedt een hogere doorvoer dan SSD en NVMe. Vergeleken met DRAM zijn permanente geheugenmodules beschikbaar in veel grotere capaciteiten en zijn ze minder duur per GB, maar ze zijn nog steeds duurder dan NVMe. De inhoud van het geheugen blijft behouden, zelfs wanneer de systeemvoeding uitvalt in het geval van onverwacht stroomuitval, door de gebruiker geïnitieerde afsluiting of een systeemcrash. Dit betekent dat u permanente geheugenmodules kunt gebruiken als ultrasnelle, permanente opslag.

Azure Stack HCI en Windows Server 2019 ondersteunen het gebruik van permanent geheugen als een cache of een capaciteitsstation. Gezien het prijsmodel biedt persistent geheugen echter de meeste waarde als een cache of als een kleine hoeveelheid toegewezen opslag voor geheugentoewijzingsgegevens. In de meeste gevallen worden permanente geheugenstations automatisch gebruikt als cachestations en worden langzamere stations gebruikt als capaciteitsstations. Zie Inzicht in de opslaggroepcache en Volumes plannen voor meer informatie over het instellen van cache- en capaciteitsstations.

Concepten voor permanent geheugen

In deze sectie worden de basisconcepten beschreven die u moet begrijpen om permanent geheugen te implementeren in Windows Server- en Azure Stack HCI-omgevingen om I/O-knelpunten te verminderen en de prestaties te verbeteren.

Toegangsmethoden

Er zijn twee methoden voor toegang tot permanent geheugen. Dit zijn:

  • Toegang blokkeren, die werkt als opslag voor app-compatibiliteit. In deze configuratie stromen gegevens zoals normaal door het bestandssysteem en de opslagstacks. U kunt deze configuratie gebruiken in combinatie met NTFS en ReFS. Dit wordt aanbevolen voor de meeste gebruiksscenario's.
  • Directe toegang (DAX) die werkt als geheugen om de laagste latentie te krijgen. U kunt DAX alleen gebruiken in combinatie met NTFS. Als u DAX niet correct gebruikt, is er mogelijk gegevensverlies. We raden u ten zeerste aan DAX te gebruiken met BTT (Block Translation Table) ingeschakeld om het risico van gescheurde schrijfbewerkingen te beperken. Zie DAX begrijpen en configureren voor meer informatie.

Waarschuwing

DAX wordt niet ondersteund in Azure Stack HCI-omgevingen. Azure Stack HCI ondersteunt alleen toegang blokkeren, waarbij BTT is ingeschakeld.

Regio's

Een regio is een set van een of meer permanente geheugenmodules. Regio's worden vaak gemaakt als interleaved sets waarin meerdere permanente geheugenmodules worden weergegeven als één logische virtuele adresruimte om de doorvoer te verhogen. Om de beschikbare bandbreedte te vergroten, worden aangrenzende virtuele adressen verspreid over meerdere modules voor persistent geheugen. Regio's kunnen meestal worden gemaakt in het BIOS van een serverplatform.

PmemDisks

Als u permanent geheugen als opslag wilt gebruiken, moet u ten minste één PmemDisk definiëren. Dit is een virtuele harde schijf (VHD) op de host die als een PmemDisk in een virtuele machine (VM) wordt opgesomd. Een PmemDisk is een aaneengesloten bereik van niet-vluchtig geheugen dat u kunt beschouwen als een harde schijf partitie of LUN. U kunt meerdere PmemDisks maken met behulp van Windows PowerShell cmdlets om de beschikbare onbewerkte capaciteit op te delen. Elke module voor persistent geheugen bevat een Label Storage Area (LSA) waarin de configuratiemetagegevens worden opgeslagen.

Blokvertalingstabel

In tegenstelling tot SSD-schijven beschermen modules met permanent geheugen niet tegen 'gescheurde schrijfbewerkingen' die kunnen optreden in het geval van een stroomstoring of systeemstoring, waardoor gegevens in gevaar komen. BTT vermindert dit risico door semantiek van atomische sectorupdates te bieden voor permanente geheugenapparaten, waardoor blokachtige sectorschrijfbewerkingen worden ingeschakeld, zodat apps kunnen voorkomen dat oude en nieuwe gegevens in een foutscenario worden vermengd. We raden u ten zeerste aan om BTT in bijna alle gevallen in te schakelen. Omdat BTT een eigenschap van de PmemDisk is, moet deze worden ingeschakeld wanneer de PmemDisk wordt gemaakt.

In de modus voor geblokkeerde toegang raden we u aan BTT te gebruiken, omdat voor alle gegevens bloksemantiek wordt gebruikt. BTT is ook handig in de DAX-modus omdat metagegevensbewerkingen nog steeds gebruikmaken van bloksemantiek, zelfs als de gegevensbewerkingen van de toepassing dat niet doen. Zelfs als alle toepassingsbewerkingen gebruikmaken van geheugen-toegewezen bestanden met DAX-semantiek, kunnen er nog steeds gescheurde schrijfbewerkingen plaatsvinden voor de metagegevensbewerkingen; daarom is het inschakelen van BTT nog steeds waardevol.

Ondersteunde hardware

De volgende tabel bevat ondersteunde permanente geheugenhardware voor Azure Stack HCI en Windows Server. Permanent geheugen wordt volledig ondersteund in Windows Server 2019, inclusief Opslagruimten Direct.

Technologie voor persistent geheugen Windows Server 2016 Azure Stack HCI v20H2/Windows Server 2019
NVDIMM-N in permanente modus Ondersteund Ondersteund
Intel Optane™ DC Persistent Memory in App Direct Mode Niet ondersteund Ondersteund
Permanent geheugen van Intel Optane™ DC in de geheugenmodus Ondersteund Ondersteund

Intel Optane DC Persistent Memory ondersteunt zowel geheugenmodus (vluchtig) als App Direct (permanent). Als u permanente geheugenmodules wilt gebruiken als opslag, wat het primaire gebruiksvoorbeeld is voor serverworkloads, moet u de App Direct-modus gebruiken. De geheugenmodus maakt in wezen gebruik van permanent geheugen als langzamer RAM-geheugen, dat meestal niet voldoet aan de prestatievereisten van serverworkloads. De geheugenmodus verschilt van DAX, een permanent opslagvolume dat kan worden geopend met behulp van geheugenachtige semantiek.

De bedrijfsmodus is vaak vooraf geconfigureerd door de oorspronkelijke fabrikant van het apparaat.

Notitie

Wanneer u een systeem opnieuw opstart dat meerdere permanente Intel® Optane-geheugenmodules in app Direct-modus heeft die zijn onderverdeeld in meerdere PmemDisks, verliest u mogelijk de toegang tot sommige of alle gerelateerde™ logische opslagschijven. Dit probleem treedt op in Windows Server 2019-versies die ouder zijn dan versie 1903.

Dit verlies van toegang treedt op omdat een permanente geheugenmodule niet is getraind of op een andere manier mislukt wanneer het systeem wordt gestart. In een dergelijk geval mislukken alle PmemDisks op een module met persistent geheugen op het systeem, inclusief de modules die niet fysiek zijn toegewezen aan de mislukte module.

Als u de toegang tot alle PmemDisks wilt herstellen, vervangt u de mislukte module.

Als een module mislukt op Windows Server 2019 versie 1903 of nieuwere versies, verliest u alleen toegang tot PmemDisks die fysiek zijn toegewezen aan de betreffende module; andere worden niet beïnvloed.

Permanent geheugen configureren

Als u permanent Intel Optane-geheugen gebruikt, volgt u de instructies hier. Als u permanente geheugenmodules van een andere leverancier gebruikt, raadpleegt u de documentatie van die leverancier.

Als u een PmemDisk wilt maken die BTT ondersteunt, gebruikt u de New-VHD cmdlet:

New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT

De VHD-extensie moet 'vhdpmem' zijn.

U kunt ook een VHD waarvoor BTT niet is ingeschakeld converteren naar een VHD die dat wel doet (en omgekeerd) met behulp van de Convert-VHD cmdlet:

Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem

Na het converteren heeft de nieuwe VHD dezelfde naamruimte-GUID als de oorspronkelijke. Dit kan leiden tot problemen, met name als ze beide zijn gekoppeld aan dezelfde virtuele machine. Als u een nieuwe naamruimte UUID wilt maken voor de geconverteerde VHD, gebruikt u de Set-VHD cmdlet:

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Inzicht in interleaved sets

Interleaved-sets kunnen meestal worden gemaakt in het BIOS van een serverplatform om meerdere permanente geheugenapparaten als één schijf naar het hostbesturingssysteem te laten verschijnen, waardoor de doorvoer voor die schijf wordt verhoogd.

Notitie

Windows Server 2016 biedt geen ondersteuning voor interleaved sets permanente geheugenmodules.

Zoals u zich herinnert, bevindt een module voor permanent geheugen zich in een standaard DIMM-sleuf (geheugen), waardoor gegevens dichter bij de processor worden geplaatst. Deze configuratie vermindert de latentie en verbetert de ophaalprestaties. Om de doorvoer verder te verhogen, maken twee of meer permanente geheugenmodules een n-way interleaved set voor stripe-lees-/schrijfbewerkingen. De meest voorkomende configuraties zijn tweerichtings- of vierrichtings-interleaving.

U kunt de Get-PmemDisk PowerShell-cmdlet als volgt gebruiken om de configuratie van dergelijke logische schijven te controleren:

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

We kunnen zien dat de logische PMem-schijf 2 de fysieke apparaten Id20 en Id120 gebruikt, en logische PMem-schijf 3 de fysieke apparaten Id1020 en Id1120 gebruikt.

Voer Get-PmemPhysicalDevice de cmdlet uit om meer informatie op te halen over de interleaved set die door een logisch station wordt gebruikt:

(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

Interleaved sets configureren

Als u een interleaved set wilt configureren, voert u de Get-PmemUnusedRegion cmdlet uit om alle permanente geheugenregio's te controleren die niet zijn toegewezen aan een logische permanente geheugenschijf op het systeem:

Get-PmemUnusedRegion

RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}

Voer Get-PmemPhysicalDevice de cmdlet uit om alle PMem-apparaatgegevens in het systeem te zien, waaronder apparaattype, locatie, status en operationele status, enzovoort:

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

Omdat we een beschikbare ongebruikte PMem-regio hebben, kunnen we nieuwe permanente geheugenschijven maken. We kunnen de ongebruikte regio gebruiken om meerdere permanente geheugenschijven te maken door de volgende cmdlets uit te voeren:

Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.

Nadat dit is gedaan, kunnen we de resultaten zien door het volgende uit te voeren:

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

Het is vermeldenswaardig dat we kunnen uitvoeren Get-PhysicalDisk | Where MediaType -eq SCM in plaats van Get-PmemDisk dezelfde resultaten te krijgen. De zojuist gemaakte permanente geheugenschijf komt één-op-één overeen met stations die worden weergegeven in PowerShell en in Windows Admin Center.

Permanent geheugen vervangen

Als u een mislukte module moet vervangen, moet u de PMem-schijf opnieuw inrichten (raadpleeg de stappen die we eerder hebben beschreven).

Wanneer u problemen oplost, moet u mogelijk gebruiken Remove-PmemDisk. Met deze cmdlet verwijdert u een specifieke permanente geheugenschijf. We kunnen alle huidige permanente geheugenschijven verwijderen door de volgende cmdlets uit te voeren:

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.

Belangrijk

Het verwijderen van een permanente geheugenschijf veroorzaakt gegevensverlies op die schijf.

Een andere cmdlet die u mogelijk nodig hebt, is Initialize-PmemPhysicalDevice. Deze cmdlet initialiseert de labelopslaggebieden op de fysieke permanente geheugenapparaten en kan beschadigde labelopslaggegevens op de apparaten wissen.

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.

Belangrijk

Initialize-PmemPhysicalDevice veroorzaakt gegevensverlies in het permanente geheugen. Gebruik het alleen als laatste redmiddel om permanente problemen met betrekking tot geheugen op te lossen.

Permanent geheugen in actie op Microsoft Ignite 2018

Bekijk deze video van Microsoft Ignite 2018 om enkele van de voordelen van permanent geheugen te bekijken.

Elk opslagsysteem dat fouttolerantie biedt, maakt per se gedistribueerde kopieën van schrijfbewerkingen. Dergelijke bewerkingen moeten het netwerk doorkruisen en het schrijfverkeer van de back-end versterken. Om deze reden worden de absolute grootste IOPS-benchmarknummers doorgaans bereikt door alleen-lezen te meten, met name als het opslagsysteem gezond verstand van optimalisaties heeft om waar mogelijk uit de lokale kopie te lezen. Opslagruimten Direct is hiervoor geoptimaliseerd.

Bij meting met behulp van alleen leesbewerkingen heeft het cluster 13.798.674 IOPS geleverd.

Als u de video nauwkeurig watch, zult u merken dat de latentie nog overweldigender is. Zelfs met meer dan 13,7 M IOPS rapporteert het bestandssysteem in Windows latentie die consistent lager is dan 40 μs! (Dat is het symbool voor microseconden, een miljoenste van een seconde.) Deze snelheid is een orde van grootte sneller dan wat typische all-flash leveranciers trots adverteren vandaag.

Samen hebben Opslagruimten Direct in Windows Server 2019 en permanent Intel® Optane™ DC-geheugen baanbrekende prestaties geleverd. Deze HCI-benchmark van meer dan 13,7 miljoen IOPS, vergezeld van voorspelbare en extreem lage latentie, is meer dan het dubbele van onze vorige toonaangevende benchmark van 6,7 miljoen IOPS. Bovendien hebben we deze keer slechts 12 serverknooppunten nodig, 25 procent minder dan voorheen.

De testhardware was een cluster met 12 servers dat is geconfigureerd voor het gebruik van spiegeling in drie richtingen en gescheiden ReFS-volumes, 12 x Intel® S2600WFT, 384 GiB-geheugen , 2 x 28-core "CascadeLake", 1,5 TB Intel® Optane™ DC persistent geheugen als cache, 32 TB NVMe (4 x 8 TB Intel® DC P4510) als capaciteit, 2 x Mellanox ConnectX-4 25 Gbps.

In de volgende tabel ziet u de volledige prestatienummers.

Benchmark Prestaties
4K 100% willekeurig lezen 13,8 miljoen IOPS
4K 90/10% willekeurig lezen/schrijven 9,45 miljoen IOPS
2 MB sequentiële leesbewerkingen Doorvoer van 549 GB/s

Volgende stappen

Zie ook voor gerelateerde informatie: