Förstå och distribuera beständigt minne
Gäller för: Azure Stack HCI, versionerna 22H2 och 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10
Viktigt!
Azure Stack HCI är nu en del av Azure Local. Namnbytet av produktdokumentation pågår. Äldre versioner av Azure Stack HCI, till exempel 22H2, fortsätter dock att referera till Azure Stack HCI och återspeglar inte namnändringen. Läs mer.
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 bakgrund om beständigt minne och förklarar hur du distribuerar det som den översta lagringsnivån i Azure Stack HCI 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 Stack HCI 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
Det här avsnittet beskriver de grundläggande begrepp som du behöver förstå för att distribuera beständigt minne i Windows Server- och Azure Stack HCI-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. Dessa ä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.
Varning
DAX stöds inte i Azure Stack HCI-miljöer. Azure Stack HCI stöder endast blockåtkomst med BTT aktiverat.
Regioner
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 för blockå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 Stack HCI och Windows Server. Beständigt minne stöds fullt ut i Windows Server 2019, inklusive Lagringsutrymmen Direct.
Teknik för beständigt minne | Windows Server 2016 | Azure Stack HCI v20H2/Windows Server 2019 |
---|---|---|
NVDIMM-N i persis tältläge | Stöds | Stöds |
Intel Optane™ DC Beständigt minne i appdirigeringsläge | Stöds inte | Stöds |
Intel Optane™ DC Beständigt minne i minnesläge | Stöds | Stöds |
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.
Kommentar
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å 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
När du har konverterat 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å mellanlagrade 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.
Kommentar
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 icke-vägs interfolierad uppsättning till randläsnings-/skrivåtgärder. De vanligaste konfigurationerna är dubbelriktad 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 du cmdleten 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 beständiga minnesdisken motsvarar en-till-en med enheter som visas i PowerShell och i 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.
Viktigt!
Om du tar bort en beständig minnesdisk går det inte att förlora data på 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.
Viktigt!
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 passera nätverket och förstärka serverdelsskrivningstrafiken. 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. Lagringsutrymmen Direct är optimerad för att göra det.
När klustret mättes med hjälp av skrivskyddade åtgärder levererade det 13 798 674 IOPS.
Om du tittar noga på videon kommer du att märka att det som är ännu mer käftande är svarstiden. Ä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 annonsera idag.
Tillsammans levererade Lagringsutrymmen Direct i Windows Server 2019 och Intel® Optane™ DC beständigt minne banbrytande prestanda. Detta HCI-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 cache, 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 | Prestanda |
---|---|
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äsning | 549 GB/s-dataflöde |
Nästa steg
Relaterad information finns också: