Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Azure Stack HCI, versioni 22H2 e 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 10
La memoria persistente (o PMem) è un nuovo tipo di tecnologia di memoria che conserva il contenuto tramite cicli di alimentazione e può essere usata come risorsa di archiviazione di livello superiore, motivo per cui è possibile che gli utenti facciano riferimento a PMem come "memoria della classe di archiviazione" o SCM. Questo articolo fornisce informazioni generali sulla memoria persistente e spiega come distribuirlo come livello di archiviazione principale in Azure Stack HCI e Windows Server.
Che cos'è la memoria persistente?
La memoria persistente è un tipo di supporto non volatile che si inserisce in uno slot DIMM (memoria) standard. È più lento rispetto alla DRAM, ma offre una velocità effettiva superiore rispetto a SSD e NVMe. Rispetto alle DRAM, i moduli di memoria persistente sono dotati di capacità molto più grandi e sono meno costosi per GB, ma sono comunque più costosi rispetto a NVMe. I contenuti della memoria rimangono anche in caso di interruzione dell'alimentazione del sistema, perdita di alimentazione imprevista, spegnimento iniziato dall'utente o arresto anomalo del sistema. Ciò significa che è possibile usare moduli di memoria persistente come archiviazione ultra veloce e persistente.
Azure Stack HCI e Windows Server 2019 supportano l'uso della memoria persistente come cache o unità di capacità. Tuttavia, dato il modello di determinazione prezzi, la memoria persistente fornisce il massimo valore come cache o come piccola quantità di spazio di archiviazione dedicato per i dati di mapping della memoria. Nella maggior parte dei casi, le unità di memoria persistente vengono usate automaticamente come unità cache e qualsiasi elemento più lento viene usato come unità di capacità. Per ulteriori informazioni su come configurare le unità cache e capacità, vedere Comprendere la cache del pool di archiviazione e Pianificare i volumi.
Concetti relativi alla memoria persistente
Questa sezione descrive i concetti di base che è necessario comprendere per distribuire memoria persistente negli ambienti Windows Server e Azure Stack HCI per ridurre i colli di bottiglia di I/O e migliorare le prestazioni.
Access methods
Esistono due metodi per accedere alla memoria persistente. They are:
- Block access, which operates like storage for app compatibility. In questa configurazione i dati passano attraverso il file system e gli stack di archiviazione come di consueto. È possibile usare questa configurazione in combinazione con NTFS e ReFS ed è consigliabile per la maggior parte dei casi d'uso.
- Accesso diretto (DAX), che funziona come la memoria per ottenere la latenza più bassa. È possibile usare DAX solo in combinazione con NTFS. Se non si usa correttamente DAX, è possibile che si verifichi una perdita di dati. Raccomandiamo vivamente di usare DAX con la tabella di traduzione di blocchi (BTT) attivata per attenuare il rischio di scritture strappate. Per altre informazioni, vedere Informazioni e configurazione di DAX.
Warning
DAX non è supportato in ambienti Azure Stack HCI. Azure Stack HCI supporta solo l'accesso a blocchi, con BTT attivato.
Regions
Un'area è un set di uno o più moduli di memoria persistente. Regions are often created as interleaved sets in which multiple persistent memory modules appear as a single logical virtual address space to increase throughput. Per aumentare la larghezza di banda disponibile, gli indirizzi virtuali adiacenti vengono distribuiti tra più moduli di memoria persistente. Le aree possono in genere essere create nel BIOS di una piattaforma server.
PmemDisks
To use persistent memory as storage, you must define at least one PmemDisk, which is a virtual hard disk (VHD) on the host that enumerates as a PmemDisk inside a virtual machine (VM). Un pmemDisk è un intervallo contiguo di memoria non volatile che può essere considerata come una partizione del disco rigido o un LUN. È possibile creare più pmemDisk usando i cmdlet di Windows PowerShell per suddividere la capacità non elaborata disponibile. Ogni modulo di memoria persistente contiene un'area di archiviazione etichette (LSA) che archivia i metadati di configurazione.
Tabella di traduzione a blocchi
A differenza delle unità ssd, i moduli di memoria persistente non proteggono dalle "scritture non eliminate" che possono verificarsi in caso di interruzione dell'alimentazione o interruzione del sistema, mettendo a rischio i dati. BTT riduce questo rischio fornendo una semantica di aggiornamento del settore atomico per i dispositivi di memoria persistente, consentendo essenzialmente scritture di settori simili a blocchi in modo che le app possano evitare di combinare dati obsoleti e nuovi in uno scenario di errore. È consigliabile attivare BTT in quasi tutti i casi. Poiché BTT è una proprietà di PmemDisk, deve essere attivata al momento della creazione di PmemDisk.
In modalità di accesso a blocchi, è consigliabile usare BTT perché tutti i dati usano la semantica del blocco. BTT è utile anche in modalità DAX perché le operazioni sui metadati usano ancora la semantica del blocco, anche se le operazioni sui dati dell'applicazione non lo sono. Anche se tutte le operazioni dell'applicazione usano file mappati alla memoria con semantica DAX, le scritture interrotte potrebbero comunque verificarsi per le operazioni sui metadati; quindi, attivare BTT è ancora vantaggioso.
Supported hardware
La tabella seguente illustra l'hardware di memoria persistente supportato per Azure Stack HCI e Windows Server. La memoria persistente è completamente supportata in Windows Server 2019, inclusi Spazi di archiviazione diretta.
Tecnologia di memoria persistente | Windows Server 2016 | Azure Stack HCI v20H2/Windows Server 2019 |
---|---|---|
NVDIMM-N in persistent mode | Supported | Supported |
Memoria persistente Intel Optane™ DC in modalità App Direct | Not Supported | Supported |
Memoria persistente Intel Optane™ DC in modalità memoria | Supported | Supported |
Intel Optane DC Persistent Memory supports both Memory (volatile) and App Direct (persistent) operating modes. Per usare moduli di memoria persistente come risorsa di archiviazione, ovvero il caso d'uso principale per i carichi di lavoro del server, è necessario usare la modalità App Direct. La modalità memoria usa essenzialmente la memoria persistente come RAM più lenta, che in genere non soddisfa i requisiti di prestazioni dei carichi di lavoro del server. La modalità di memoria è distinta da DAX, ovvero un volume di archiviazione permanente a cui è possibile accedere usando la semantica simile alla memoria.
La modalità operativa è spesso preconfigurata dal produttore originale del dispositivo.
Note
Quando si riavvia un sistema che dispone di più moduli di memoria persistente Intel® Optane™ in modalità App Direct divisi in più pmemDisk, si potrebbe perdere l'accesso ad alcuni o a tutti i dischi di archiviazione logici correlati. Questo problema si verifica nelle versioni di Windows Server 2019 precedenti alla versione 1903.
Questa perdita di accesso si verifica perché un modulo di memoria persistente non è configurato o fallisce all'avvio del sistema. In questo caso, tutti i pmemDisks in qualsiasi modulo di memoria persistente nel sistema hanno esito negativo, inclusi quelli che non eseguono fisicamente il mapping al modulo non riuscito.
Per ripristinare l'accesso a tutti i pmemDisks, sostituire il modulo non riuscito.
Se un modulo non riesce in Windows Server 2019 versione 1903 o versioni successive, si perde l'accesso solo ai dischi Pmem che eseguono fisicamente il mapping ai moduli interessati; gli altri non sono influenzati.
Configurare la memoria persistente
If you're using Intel Optane persistent memory, follow the instructions here. Se si usano moduli di memoria persistente di un altro fornitore, consultare la relativa documentazione.
Per creare un pmemDisk che supporta BTT, usare il New-VHD
cmdlet :
New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT
L'estensione VHD deve essere "vhdpmem".
È anche possibile convertire un disco rigido virtuale che non ha BTT abilitato in uno che lo ha abilitato (e viceversa) usando il Convert-VHD
cmdlet:
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
Dopo la conversione, il nuovo VHD ha lo stesso GUID del namespace di quello originale. Ciò può causare problemi, soprattutto se sono collegati alla stessa macchina virtuale. Per creare un nuovo UUID dello spazio dei nomi per il disco rigido virtuale convertito, usare il cmdlet Set-VHD
:
Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem
Informazioni sui set interleaved
I set interleaved possono in genere essere creati nel BIOS di una piattaforma server per rendere più dispositivi di memoria persistente come un singolo disco nel sistema operativo host, aumentando la velocità effettiva per tale disco.
Note
Windows Server 2016 non supporta set interleaved di unità di memoria persistente.
Tenere presente che un modulo di memoria persistente risiede in uno slot DIMM (memoria) standard, che avvicina i dati al processore. Questa configurazione riduce la latenza e migliora le prestazioni di recupero. Per aumentare ulteriormente la velocità effettiva, due o più moduli di memoria persistente creano un set n-vie interleaved per eseguire operazioni di lettura/scrittura in modalità striping. Le configurazioni più comuni sono l'interleaving bidirezionale o a quattro vie.
È possibile usare il Get-PmemDisk
cmdlet di PowerShell per esaminare la configurazione di tali dischi logici, come indicato di seguito:
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
È possibile notare che il disco PMem logico 2 usa i dispositivi fisici Id20 e Id120 e il disco PMem logico 3 usa i dispositivi fisici Id1020 e Id1120.
Per recuperare altre informazioni sul set interleaved usato da un'unità logica, eseguire il Get-PmemPhysicalDevice
cmdlet :
(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
Configurare set interlacciati
Per configurare un set interleaved, eseguire il Get-PmemUnusedRegion
cmdlet per esaminare tutte le aree di memoria persistente non assegnate a un disco di memoria persistente logico nel sistema:
Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
1 270582939648 {20, 120}
3 270582939648 {1020, 1120}
Per visualizzare tutte le informazioni sul dispositivo PMem nel sistema, tra cui tipo di dispositivo, posizione, integrità e stato operativo e così via, eseguire il Get-PmemPhysicalDevice
cmdlet :
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
Poiché è disponibile un'area PMem inutilizzata, è possibile creare nuovi dischi di memoria persistente. È possibile usare l'area inutilizzata per creare più dischi di memoria persistente eseguendo i cmdlet seguenti:
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
Al termine, è possibile visualizzare i risultati eseguendo:
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
Vale la pena notare che è possibile eseguire Get-PhysicalDisk | Where MediaType -eq SCM
invece di Get-PmemDisk
ottenere gli stessi risultati. Il disco di memoria persistente appena creato corrisponde uno a uno alle unità visualizzate in PowerShell e nel Windows Admin Center.
Sostituire la memoria persistente
Se è necessario sostituire un modulo non riuscito, è necessario eseguire nuovamente il provisioning del disco PMem (vedere i passaggi descritti in precedenza).
Quando si esegue la risoluzione dei problemi, potrebbe essere necessario usare Remove-PmemDisk
. Questo cmdlet rimuove un disco di memoria persistente specifico. È possibile rimuovere tutti i dischi di memoria persistente correnti eseguendo i cmdlet seguenti:
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 rimozione di un disco di memoria persistente causa la perdita di dati su tale disco.
Un altro cmdlet che potrebbe essere necessario è Initialize-PmemPhysicalDevice
. Questo cmdlet inizializza le aree di archiviazione delle etichette nei dispositivi di memoria persistente fisica e può cancellare le informazioni di archiviazione delle etichette danneggiate nei dispositivi.
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
causa la perdita di dati nella memoria persistente. Usarlo solo come ultima risorsa per risolvere i problemi relativi alla memoria persistente.
Memoria persistente in azione in Microsoft Ignite 2018
To see some of the benefits of persistent memory, let's look at this video from Microsoft Ignite 2018.
Qualsiasi sistema di archiviazione che fornisce la tolleranza di errore crea necessariamente copie distribuite di scritture. Tali operazioni devono attraversare la rete e amplificare il traffico di scrittura back-end. Per questo motivo, i più alti numeri di benchmark IOPS vengono generalmente ottenuti misurando soltanto le letture, specialmente se il sistema di archiviazione include ottimizzazioni intuitive per leggere dalla copia locale ove possibile. "Storage Spaces Direct è ottimizzato per farlo."
Se misurato usando solo operazioni di lettura, il cluster ha fornito 13.798.674 operazioni di I/O al secondo.
Se si guarda attentamente il video, si noterà che ciò che è ancora più sorprendente è la latenza. Anche con più di 13,7 M di I/O al secondo, il file system in Windows segnala una latenza costantemente inferiore a 40 μs! Questo è il simbolo per i microsecondi, un milionesimo di secondo. Questa velocità è un ordine di grandezza più veloce rispetto a quello che i tipici fornitori all-flash annunciano con orgoglio oggi.
Insieme, Spazi di archiviazione diretta in Windows Server 2019 e memoria persistente Intel® Optane™ DC hanno offerto prestazioni rivoluzionarie. Questo benchmark HCI di oltre 13,7 milioni di operazioni di I/O al secondo, accompagnato da una latenza prevedibile e estremamente bassa, è superiore al doppio del benchmark precedente leader del settore di 6,7 milioni di operazioni di I/O al secondo. Inoltre, questa volta era necessario solo 12 nodi del server, il 25% meno di prima.
The test hardware was a 12-server cluster that was configured to use three-way mirroring and delimited ReFS volumes, 12 x Intel® S2600WFT, 384 GiB memory, 2 x 28-core "CascadeLake," 1.5 TB Intel® Optane™ DC persistent memory as cache, 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity, 2 x Mellanox ConnectX-4 25 Gbps.
Nella tabella seguente vengono illustrati i numeri di prestazioni completi.
Benchmark | Performance |
---|---|
4K 100% lettura aleatoria | 13,8 milioni di IOPS |
4K 90/10% lettura/scrittura casuale | 9,45 milioni di IOPS |
Velocità di lettura sequenziale di 2 MB | Velocità effettiva di 549 GB/s |
Next steps
Per informazioni correlate, vedere anche: