Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Beständigt minne (eller PMem) är en ny typ av minnesteknik som behåller sitt innehåll via energicykler och kan användas som lagring på den översta nivån, vilket är anledningen till att du kan höra personer referera till PMem som "lagringsklassminne" eller SCM. Den här artikeln innehåller bakgrundsinformation om beständigt minne och förklarar hur du distribuerar det som den översta lagringsnivån i Azure Local och Windows Server.
Vad är beständigt minne?
Beständigt minne är en typ av icke-flyktiga medier som passar i ett standard-DIMM-fack (minne). Det är långsammare än DRAM, men ger högre dataflöde än SSD och NVMe. Jämfört med DRAM kommer beständiga minnesmoduler i mycket större kapaciteter och är billigare per GB, men de är fortfarande dyrare än NVMe. Minnesinnehållet finns kvar även när systemkraften går ner i händelse av en oväntad strömförlust, användarinitierad avstängning eller systemkrasch. Det innebär att du kan använda beständiga minnesmoduler som ultrasnabb, beständig lagring.
Azure Local och Windows Server 2019 stöder användning av beständigt minne som antingen en cache eller en kapacitetsenhet. Men med tanke på prismodellen ger beständigt minne mest värde som antingen en cache eller som en liten mängd dedikerad lagring för minnesmappningsdata. I de flesta fall används beständiga minnesenheter automatiskt som cacheenheter och allt långsammare används som kapacitetsenheter. Mer information om hur du konfigurerar cache- och kapacitetsenheter finns i Förstå lagringspoolens cacheminne och planera volymer.
Beständiga minnesbegrepp
I det här avsnittet beskrivs de grundläggande begrepp som du behöver förstå för att distribuera beständigt minne i Windows Server- och Azure Local-miljöer för att minska I/O-flaskhalsar och förbättra prestanda.
Åtkomstmetoder
Det finns två metoder för att komma åt beständigt minne. De är:
- Blockera åtkomst, som fungerar som lagring för appkompatibilitet. I den här konfigurationen flödar data genom filsystemet och lagringsstackarna som vanligt. Du kan använda den här konfigurationen i kombination med NTFS och ReFS, och det rekommenderas för de flesta användningsfall.
 - Direktåtkomst (DAX) som fungerar som minne för att få den lägsta svarstiden. Du kan bara använda DAX i kombination med NTFS. Om du inte använder DAX korrekt finns det risk för dataförlust. Vi rekommenderar starkt att du använder DAX med blocköversättningstabellen (BTT) aktiverad för att minska risken för sönderrivna skrivningar. Mer information finns i Förstå och konfigurera DAX.
 
Warning
DAX stöds inte i lokala Azure-miljöer. Azure Local stöder endast blockåtkomst med BTT aktiverat.
Regions
En region är en uppsättning med en eller flera beständiga minnesmoduler. Regioner skapas ofta som interfolierade uppsättningar där flera beständiga minnesmoduler visas som ett enda logiskt virtuellt adressutrymme för att öka dataflödet. För att öka den tillgängliga bandbredden sprids angränsande virtuella adresser över flera beständiga minnesmoduler. Regioner kan vanligtvis skapas i en serverplattforms BIOS.
PmemDisks
Om du vill använda beständigt minne som lagring måste du definiera minst en PmemDisk, som är en virtuell hårddisk (VHD) på värden som räknas upp som en PmemDisk i en virtuell dator (VM). En PmemDisk är ett sammanhängande adresserat intervall av icke-flyktigt minne som du kan tänka dig som en hårddiskpartition eller LUN. Du kan skapa flera PmemDisks med hjälp av Windows PowerShell-cmdletar för att dela upp den tillgängliga råkapaciteten. Varje beständig minnesmodul innehåller ett LSA (Label Storage Area) som lagrar konfigurationsmetadata.
Blockera översättningstabell
Till skillnad från solid state-enheter skyddar beständiga minnesmoduler inte mot "sönderrivna skrivningar" som kan inträffa vid strömavbrott eller systemfel, vilket äventyrar data. BTT minskar den här risken genom att tillhandahålla atomisk sektorsuppdateringssemantik för beständiga minnesenheter, vilket i huvudsak aktiverar blockliknande sektorskrivningar så att appar kan undvika att blanda gamla och nya data i ett felscenario. Vi rekommenderar starkt att du aktiverar BTT i nästan alla fall. Eftersom BTT är en egenskap för PmemDisk måste den aktiveras när PmemDisk skapas.
I läget blockera åtkomst rekommenderar vi att du använder BTT eftersom alla data använder blocksemantik. BTT är också användbart i DAX-läge eftersom metadataåtgärder fortfarande använder blocksemantik, även om programmets dataåtgärder inte gör det. Även om alla programåtgärder använder minnesmappade filer med DAX-semantik kan sönderrivna skrivningar fortfarande inträffa för metadataåtgärderna. Därför är det fortfarande värdefullt att slå på BTT.
Maskinvara som stöds
I följande tabell visas beständig minnesmaskinvara som stöds för Azure Local och Windows Server. Beständigt minne stöds fullt ut i Windows Server 2019, inklusive Storage Spaces Direct.
| Teknik för beständigt minne | Windows Server 2016 | Azure Local 2311.2 och senare/Windows Server 2019 och senare | 
|---|---|---|
| NVDIMM-N i beständigt läge | Supported | Supported | 
| Intel Optane™ DC Beständigt minne i appdirigeringsläge | Stöds inte | Supported | 
| Intel Optane™ DC Persistent Memory i minnesläge | Supported | Supported | 
Intel Optane DC Persistent Memory stöder både minneslägen (flyktiga) och appdirigeringslägen (beständiga). Om du vill använda beständiga minnesmoduler som lagring, vilket är det primära användningsfallet för serverarbetsbelastningar, måste du använda App Direct-läge. Minnesläget använder i princip beständigt minne som långsammare RAM-minne, vilket vanligtvis inte uppfyller prestandakraven för serverarbetsbelastningar. Minnesläget skiljer sig från DAX, som är en beständig lagringsvolym som kan nås med hjälp av minnesliknande semantik.
Driftläget är ofta förkonfigurerat av den ursprungliga enhetstillverkaren.
Note
När du startar om ett system som har flera Intel® Optane-beständiga™ minnesmoduler i App Direct-läge som är indelade i flera PmemDisks kan du förlora åtkomsten till vissa eller alla relaterade logiska lagringsdiskar. Det här problemet uppstår i Windows Server 2019-versioner som är äldre än version 1903.
Den här åtkomstförlusten beror på att en beständig minnesmodul är otränad eller på annat sätt misslyckas när systemet startar. I sådana fall misslyckas alla PmemDisks på alla beständiga minnesmoduler i systemet, inklusive de som inte fysiskt mappas till den misslyckade modulen.
Om du vill återställa åtkomsten till alla PmemDisks ersätter du den misslyckade modulen.
Om en modul misslyckas på Windows Server 2019 version 1903 eller senare versioner förlorar du bara åtkomst till PmemDisks som fysiskt mappar till den berörda modulen. andra påverkas inte.
Konfigurera beständigt minne
Om du använder Intel Optane-beständigt minne följer du anvisningarna här. Om du använder beständiga minnesmoduler från en annan leverantör kan du läsa deras dokumentation.
Om du vill skapa en PmemDisk som stöder BTT använder du cmdleten New-VHD :
New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT
VHD-tillägget måste vara "vhdpmem".
Du kan också konvertera en virtuell hårddisk som inte har BTT aktiverat till en som gör det (och vice versa) med hjälp av cmdleten Convert-VHD :
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
Efter konverteringen har den nya virtuella hårddisken samma namnområdes-GUID som den ursprungliga. Det kan leda till problem, särskilt om de båda är kopplade till samma virtuella dator. Om du vill skapa en ny UUID för namnområdet för den konverterade virtuella hårddisken använder du cmdleten Set-VHD :
Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem
Förstå interfolierade uppsättningar
Mellanlagrade uppsättningar kan vanligtvis skapas i en serverplattforms BIOS så att flera beständiga minnesenheter visas som en enda disk för värdoperativsystemet, vilket ökar dataflödet för den disken.
Note
Windows Server 2016 stöder inte interfolierade uppsättningar med beständiga minnesmoduler.
Kom ihåg att en beständig minnesmodul finns i ett standard-DIMM-fack (minne) som placerar data närmare processorn. Den här konfigurationen minskar svarstiden och förbättrar hämtningsprestanda. För att ytterligare öka dataflödet, skapar två eller flera beständiga minnesmoduler en fler-vägs sammanflätad uppsättning för att fördela läs-/skrivoperationer över flera enheter. De vanligaste konfigurationerna är tvåvägs eller fyrvägs interfoliering.
Du kan använda Get-PmemDisk PowerShell-cmdleten för att granska konfigurationen av sådana logiska diskar på följande sätt:
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
Vi kan se att den logiska PMem-disken 2 använder de fysiska enheterna Id20 och Id120, och den logiska PMem-disken 3 använder de fysiska enheterna Id1020 och Id1120.
Om du vill hämta ytterligare information om den interleaved-uppsättning som en logisk enhet använder, kör cmdlet 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
Konfigurera mellanlagrade uppsättningar
Om du vill konfigurera en mellanlagrad uppsättning kör du cmdleten Get-PmemUnusedRegion för att granska alla beständiga minnesregioner som inte har tilldelats till en logisk beständig minnesdisk i systemet:
Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}
Om du vill se all PMem-enhetsinformation i systemet, inklusive enhetstyp, plats, hälsotillstånd och driftstatus, och så vidare, kör du cmdleten 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
Eftersom vi har en tillgänglig oanvänd PMem-region kan vi skapa nya beständiga minnesdiskar. Vi kan använda den oanvända regionen för att skapa flera beständiga minnesdiskar genom att köra följande cmdletar:
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
När detta är klart kan vi se resultatet genom att köra:
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
Det är värt att notera att vi kan köra Get-PhysicalDisk | Where MediaType -eq SCM i stället Get-PmemDisk för att få samma resultat. Den nyligen skapade icke-flyktiga minnesdisken har en direkt motsvarighet med enheterna som visas i PowerShell och Windows Admin Center.
Ersätt beständigt minne
Om du måste ersätta en misslyckad modul måste du återskapa PMem-disken (se de steg som vi beskrev tidigare).
När du felsöker kan du behöva använda Remove-PmemDisk. Den här cmdleten tar bort en specifik beständig minnesdisk. Vi kan ta bort alla aktuella beständiga minnesdiskar genom att köra följande cmdletar:
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
Om du tar bort en ihållande minnesdisk förloras data på den disken.
En annan cmdlet som du kan behöva är Initialize-PmemPhysicalDevice. Den här cmdleten initierar etikettlagringsområdena på de fysiska beständiga minnesenheterna och kan rensa skadad lagringsinformation för etiketter på enheterna.
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 orsakar dataförlust i beständigt minne. Använd det bara som en sista utväg för att åtgärda beständiga minnesrelaterade problem.
Beständigt minne i praktiken på Microsoft Ignite 2018
Om du vill se några av fördelarna med beständigt minne ska vi titta på den här videon från Microsoft Ignite 2018.
Alla lagringssystem som ger feltolerans gör nödvändigtvis distribuerade kopior av skrivningar. Sådana åtgärder måste gå igenom nätverket och öka skrivtrafiken till backend. Av den anledningen uppnås vanligtvis de absolut största IOPS-benchmark-talen genom att endast mäta läsningar, särskilt om lagringssystemet har optimeringar av sunt förnuft att läsa från den lokala kopian när det är möjligt. Storage Spaces Direct är optimerat för detta ändamål.
När klustret mättes med endast läsoperationer levererade det 13 798 674 IOPS.
Om du tittar noga på videon kommer du att märka att det som är ännu mer häpnadsväckande är fördröjningen. Även vid över 13,7 M IOPS rapporterar filsystemet i Windows svarstider som konsekvent är mindre än 40 μs! (Det är symbolen för mikrosekunder, en miljondels sekund.) Denna hastighet är en storleksordning snabbare än vad typiska all-flash leverantörer stolt annonserar idag.
Tillsammans levererade Storage Spaces Direct i Windows Server 2019 och Intel® Optane™ DC Beständigt Minne banbrytande prestanda. Detta riktmärke på över 13,7 miljoner IOPS, tillsammans med förutsägbar och extremt låg svarstid, är mer än dubbelt så mycket som vårt tidigare branschledande riktmärke på 6,7 miljoner IOPS. Dessutom behövde vi den här gången bara 12 servernoder – 25 procent färre än tidigare.
Testmaskinvaran var ett 12-serverkluster som har konfigurerats för att använda trevägsspegling och avgränsade ReFS-volymer. 12 x Intel® S2600WFT, 384 GiB-minne , 2 x 28 kärnor "CascadeLake", 1,5 TB Intel® Optane™ DC beständigt minne som cacheminne, 32 TB NVMe (4 x 8 TB Intel® DC P4510) som kapacitet, 2 x Mellanox ConnectX-4 25 Gbit/s.
I följande tabell visas de fullständiga prestandanumren.
| Benchmark | Performance | 
|---|---|
| 4K 100% slumpmässig läsning | 13,8 miljoner IOPS | 
| 4K 90/10% slumpmässig läsning/skrivning | 9,45 miljoner IOPS | 
| 2 MB sekventiell läshastighet | 549 GB/s-dataflöde | 
Nästa steg
Relaterad information finns också: