Windows Server 2019 and Windows Server 2022 provides a PersistentMemory PowerShell module that enables user management of the persistent storage space.
PS C:\> Get-Command -Module PersistentMemory
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-PmemDisk 1.0.0.0 PersistentMemory
Cmdlet Get-PmemPhysicalDevice 1.0.0.0 PersistentMemory
Cmdlet Get-PmemUnusedRegion 1.0.0.0 PersistentMemory
Cmdlet Initialize-PmemPhysicalDevice 1.0.0.0 PersistentMemory
Cmdlet New-PmemDisk 1.0.0.0 PersistentMemory
Cmdlet Remove-PmemDisk 1.0.0.0 PersistentMemory
- Get-PmemDisk—Returns one or more logical persistent memory disks that were created by New-PmemDisk. The returned object includes information about size, health status, and the underlying physical NVDIMM devices.
- Get-PmemPhysicalDevice—Returns one or more physical persistent memory NVDIMM devices. The returned object includes information about size, firmware, physical location, and health status. In App Direct Interleaved mode, each INVDIMM device displays its full capacity as
Persistent memory size
.Note: The Intel Optane DC Persistent Memory firmware might have to be periodically updated. For the supported firmware version, see the Support Matrix for Microsoft HCI Solutions. After identifying the required firmware version, download the Intel Optane DC Persistent Memory Firmware Package from Dell Technologies Support or use the Microsoft HCI Solutions from Dell Technologies Update Catalog.
- Get-PmemUnusedRegion—Returns aggregate persistent memory (Pmem) regions that are available for provisioning a logical device. The returned object has a unique region ID, total size, and list of physical devices that contribute to the unused region.
- Initialize-PmemPhysicalDevice—Writes zeroes to the label storage area, writes new label index blocks, and then rebuilds the storage class memory (SCM) stacks to reflect the changes. This cmdlet is intended as a recovery mechanism and is not recommended for normal use.
- New-PmemDisk—Creates a disk out of a given unused region. This cmdlet writes out the labels to create the namespace, and then rebuilds the SCM stacks to expose the new logical device. The new logical persistent disk is added in Device Manager under
Persistent memory disks
. Get-PhysicalDisk displays the storage device as MediaTypeSCM
. -
Remove-PmemDisk—Removes the given persistent memory disk. This cmdlet accepts the output of Get-PmemDisk. It deletes the namespace labels and then rebuilds the SCM stacks to remove the logical device.
Configuring persistent memory as SCM logical devices
On each server node, verify unused persistent memory regions and configure them as new SCM logical devices:
- Run Get-PmemPhysicalDevice to verify that 12 INVDIMM physical devices are available and healthy:
PS C:\> Get-PmemPhysicalDevice
DeviceId DeviceType HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ---------- ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
1 008906320000 INVDIMM device Healthy {Ok} A7 102005395 126 GB 0 GB
1001 008906320000 INVDIMM device Healthy {Ok} B7 102005395 126 GB 0 GB
101 008906320000 INVDIMM device Healthy {Ok} A10 102005395 126 GB 0 GB
1011 008906320000 INVDIMM device Healthy {Ok} B8 102005395 126 GB 0 GB
1021 008906320000 INVDIMM device Healthy {Ok} B9 102005395 126 GB 0 GB
11 008906320000 INVDIMM device Healthy {Ok} A8 102005395 126 GB 0 GB
1101 008906320000 INVDIMM device Healthy {Ok} B10 102005395 126 GB 0 GB
111 008906320000 INVDIMM device Healthy {Ok} A11 102005395 126 GB 0 GB
1111 008906320000 INVDIMM device Healthy {Ok} B11 102005395 126 GB 0 GB
1121 008906320000 INVDIMM device Healthy {Ok} B12 102005395 126 GB 0 GB
121 008906320000 INVDIMM device Healthy {Ok} A12 102005395 126 GB 0 GB
21 008906320000 INVDIMM device Healthy {Ok} A9 102005395 126 GB 0 GB - Run Get-PmemUnusedRegion to verify that two unused Pmem regions are available, one region for each physical CPU:
PS C:\> Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
1 811748818944 {1, 111, 21, 101...}
3 811748818944 {1001, 1111, 1021, 1101...} - Run the Get-PmemUnusedRegion | New-PmemDisk script to create two Pmem disks, one for each Pmem region:
PS C:\> Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
Creating new persistent memory disk. This may take a few moments. - Run the Get-PhysicalDisk | ?{$_.MediaType -eq "SCM"} script to verify that both Pmem disks are available as physical disk devices:
PS C:\> Get-PmemDisk
DiskNumber Size HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds
---------- ---- ------------ ------------- ------------ -----------------
11 756 GB Healthy None True {1, 111, 21, 101...}
12 756 GB Healthy None True {1001, 1111, 1021, 1101...}
When you run the Enable-ClusterS2D command to enable Storage Spaces Direct, the SCM logical devices are automatically detected and used as cache for NVMe and SSD capacity devices.