Delen via


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

Belangrijk

Azure Stack HCI maakt nu deel uit van Azure Local. De naam van productdocumentatie wordt nog steeds bijgewerkt. Oudere versies van Azure Stack HCI, bijvoorbeeld 22H2, blijven verwijzen naar Azure Stack HCI en geven de naamwijziging niet weer. Meer informatie.

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

Wat is permanent geheugen?

Permanent geheugen is een type niet-vluchtige media die in een standaard DIMM-sleuf (geheugen) past. Het is langzamer dan DRAM, maar biedt een hogere doorvoer dan SSD en NVMe. In vergelijking met DRAM zijn permanente geheugenmodules veel groter en goedkoper per GB, maar ze zijn nog steeds duurder dan NVMe. Geheugeninhoud blijft zelfs behouden wanneer systeemstroom uitvalt in het geval van een onverwacht stroomverlies, door de gebruiker geïnitieerde afsluiting of systeemcrash. Dit betekent dat u permanente geheugenmodules kunt gebruiken als ultrasnelle, permanente opslag.

Ondersteuning voor Azure Stack HCI en Windows Server 2019 met behulp van permanent geheugen als een cache of een capaciteitsstation. Gezien het prijsmodel biedt permanent 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 wordt alles langzamer gebruikt als capaciteitsstations. Zie Inzicht in de cachecache en planvolumes 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 normaal door het bestandssysteem en de opslagstacks. U kunt deze configuratie gebruiken in combinatie met NTFS en ReFS en wordt aanbevolen voor de meeste gebruiksvoorbeelden.
  • 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, kan er sprake zijn van gegevensverlies. We raden u ten zeerste aan DAX te gebruiken met BTT (Block Translation Table) ingeschakeld om het risico op 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 biedt alleen ondersteuning voor bloktoegang, 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 verhogen, worden aangrenzende virtuele adressen verdeeld over meerdere permanente geheugenmodules. 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) opsommen. Een PmemDisk is een aaneengesloten bereik van niet-vluchtig geheugen dat u kunt beschouwen als een harde schijfpartitie of LUN. U kunt meerdere PmemDisks maken met windows PowerShell-cmdlets om de beschikbare onbewerkte capaciteit te verdelen. Elke permanente geheugenmodule bevat een LSA (Label Storage Area) waarin de metagegevens van de configuratie worden opgeslagen.

Vertaaltabel blokkeren

In tegenstelling tot ssd-stations, beschermen permanente geheugenmodules niet tegen 'gescheurde schrijfbewerkingen' die kunnen optreden in het geval van een stroomstoring of systeemstoring, waardoor gegevens risico lopen. BTT vermindert dit risico door semantiek van atomische sectorupdates te bieden voor permanente geheugenapparaten, waardoor blokachtige sectorschrijfbewerkingen worden ingeschakeld, zodat apps oude en nieuwe gegevens in een foutscenario kunnen combineren. 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 blokkeringsmodus wordt u aangeraden BTT te gebruiken omdat alle gegevens gebruikmaken van bloksemantiek. 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 geheugentoewijzingsbestanden met DAX-semantiek gebruiken, kunnen gescheurde schrijfbewerkingen nog steeds plaatsvinden voor de metagegevensbewerkingen; daarom is het inschakelen van BTT nog steeds waardevol.

Ondersteunde hardware

In de volgende tabel ziet u ondersteunde permanente geheugenhardware voor Azure Stack HCI en Windows Server. Permanent geheugen wordt volledig ondersteund in Windows Server 2019, waaronder Opslagruimten Direct.

Permanente geheugentechnologie Windows Server 2016 Azure Stack HCI v20H2/Windows Server 2019
NVDIMM-N in persis tentmodus Ondersteund Ondersteund
Permanent geheugen van Intel Optane™ DC in de directe modus van de app Niet ondersteund Ondersteund
Permanent geheugen van Intel Optane™ DC in geheugenmodus Ondersteund Ondersteund

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

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

Notitie

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

Dit toegangsverlies treedt op omdat een permanente geheugenmodule niet-getraind is of anders mislukt wanneer het systeem wordt gestart. In dat geval mislukken alle PmemDisks op een permanente geheugenmodule op het systeem, inclusief de modules die niet fysiek zijn toegewezen aan de mislukte module.

Vervang de mislukte module om de toegang tot alle PmemDisks te herstellen.

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

Permanent geheugen configureren

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

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 converteren waarvoor BTT niet is ingeschakeld in een VHD die wel (en vice versa) doet 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, vooral als ze beide zijn gekoppeld aan dezelfde VIRTUELE machine. Als u een nieuwe naamruimte-UUID voor de geconverteerde VHD wilt maken, gebruikt u de Set-VHD cmdlet:

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Interleaved sets begrijpen

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

Notitie

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

Zoals u weet, bevindt een permanente geheugenmodule zich in een standaard DIMM-sleuf (geheugen) waarmee gegevens dichter bij de processor worden geplaatst. Deze configuratie vermindert de latentie en verbetert de prestaties van het ophalen. Als u de doorvoer verder wilt verhogen, maken twee of meer permanente geheugenmodules een interleaved n-way ingesteld op 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 gebruikmaakt van de fysieke apparaten Id20 en Id120 en logische PMem-schijf 3 gebruikmaakt van de fysieke apparaten Id1020 en Id1120.

Als u meer informatie wilt ophalen over de interleaved set die door een logisch station wordt gebruikt, voert u de Get-PmemPhysicalDevice cmdlet uit:

(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}

Als u alle PMem-apparaatgegevens in het systeem wilt zien, inclusief apparaattype, locatie, status en operationele status, enzovoort, voert u de Get-PmemPhysicalDevice cmdlet uit:

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 voltooid, 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 de moeite waard om te noteren dat we kunnen worden uitgevoerd Get-PhysicalDisk | Where MediaType -eq SCM in plaats van Get-PmemDisk dezelfde resultaten te krijgen. De zojuist gemaakte permanente geheugenschijf komt een-op-een overeen met stations die worden weergegeven in PowerShell en in het Windows-beheercentrum.

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 wordt een specifieke permanente geheugenschijf verwijderd. 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. Met deze cmdlet worden de labelopslaggebieden op de fysieke permanente geheugenapparaten geïnitialiseerd en kunnen beschadigde labelopslaggegevens op de apparaten worden gewist.

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 permanent geheugen. Gebruik dit 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 noodzakelijkerwijs gedistribueerde kopieën van schrijfbewerkingen. Dergelijke bewerkingen moeten het netwerk doorkruisen en het schrijfverkeer van de back-end versterken. Daarom worden de absolute grootste IOPS-benchmarknummers doorgaans bereikt door alleen-lezen te meten, met name als het opslagsysteem optimalisaties voor algemene betekenis heeft om waar mogelijk uit de lokale kopie te lezen. Opslagruimten Direct is geoptimaliseerd om dit te doen.

Wanneer het cluster wordt gemeten met alleen leesbewerkingen, levert het cluster 13.798.674 IOPS.

Als u de video nauwkeurig bekijkt, zult u merken dat wat nog krachtiger is dan de latentie. Zelfs bij meer dan 13,7 M IOPS rapporteert het bestandssysteem in Windows latentie die consistent kleiner 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 levert Opslagruimten Direct in Windows Server 2019 en Intel® Optane™ DC permanent geheugen baanbrekende prestaties. 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 van 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 permanent 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: