How to configure Persistent Memory/NVDIMM on Windows Server 2019 Guest OS

How to configure Persistent Memory/NVDIMM on Windows Server 2019 Guest OS

On the previous article, "Configuring NVDIMM-N on PowerEdge Servers with Windows Server 2019", you learned about how NVDIMM-N works and how to configure Persistent Memory on Windows Server 2019. This article explains how to configure NVDIMM/PMEM on Windows Server 2019 Guest OS (VM).

Example on how to configure NVDIMM on WS2019 Guest OS.


Server: R740xd fully updated (BIOS, Firmware, Drivers and OS)
  • 2 x CPUs (Intel(R) Xeon(R) Gold 6126T CPU @ 2.60GHz)
  • 2 x NVDIMM-N (16GB DDR4 2666MHz) + 12 x regular RDIMMS (also 16GB DDR4 2666MHz)
  • BOSS (Boot Optimization Storage Solution) – 2xM.2 SATA SSD in HW RAID used for the OS Installation
    DellEMC recommends updating BIOS, firmware, drivers and Operating System as part of your scheduled update cycle. BIOS, firmware, driver and OS updates are intended to improve the reliability, stability and security of your system.

    Storage-Class Memory support for VMs - Limitations

  • No VM Migrations
  • No runtime resizing
  • No Thin-Provisioning or Snapshots
  • Implemented through PowerShell

    Configuring NVDIMM/PMEM in a Windows VM

    1. Enable Persistent Memory in the R740xd BIOS.

    Figure 1. BIOS Memory Settings

    Figure 2. Memory Settings

    Figure 3. Persistent Memory Menu

    2. Install Windows Server 2019.
    3. Install the Hyper-V role.
    4. Verify if SCM disk has been detected by the Hypervisor.

    Figure 4. Memory Devices on Device Manager

    Figure 5. PMEM Devices listed on PowerShell

    Figure 6. Physical Disks

    5. Create a PMEM Disk.

    Figure 7. PMEM Unused Regions

    Figure 8. Creating New PMEM disks

    Figure 9. PMEM Disks on Get-Physical Disk output

    6. Initialize the new PMEM Disks, create new volumes, then format them. Use the parameter -DAX $True in order to properly enable SCM for Hyper-V utilization. You won’t be able to present NVDIMM to VMs if -DAX option is not present.

    Figure 10. Identify PMEM Disks only

    Figure 11. Initialize Disk, Create New Volume and Format Volume

    7. Confirm that DAX is enabled.

    Figure 12. DAX Mode Enabled

    8. Create a new Gen2 Virtual Machine, then Install Windows Server 2019.
    9. Shutdown the VM.
    10. Add PMEM Controller to the VM.

    Figure 13. Adding VM PMEM Controller

    11. Create .vhdpmem file (new file extension). You will need to specify the -Fixed parameter. The vhdpmem disk won’t work with dynamic VHD configuration.

    Figure 14. Creating New VHDPMEM VHD

    12. Attach VHDPMEM to the VM.

    Figure 15. Attaching VHDPMEM Disk to VM

    13. Start the VM.
    14. Connect to the VM (PowerShell, Console or RDP) and verify if PMEM disks are available.

    Figure 16. PMEM in the VM

    15. Initialize Disk, create new volume, then format it. For the SQL guys (SQL 2016 or above), if you want to take advantage of NVDIMMs, format the volume as DAX inside the VM (use the -IsDAX $True parameter).

    Figure 17. PMEM on VM – Initialize Disk, Create Volume and Format Volume

    Reference Powershell Cmdlets

    #Get PMEM Physical Device Information

    #Get Physical Disk Information

    #Get PMEM Unused Region and Create New PMEM Disk
    Get-PmemUnusedRegion | New-PmemDisk -Atomicity BlockTranslationTable

    #Get PMEM Disk Information, Initialize Disk, Create New Partition and Format the Volume in DAX Mode
    Get-Disk -FriendlyName Persistent* | Initialize-Disk
    Get-Disk -FriendlyName Persistent* | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -isDAX $True

    #Verify if DAX is Enabled
    Get-Volume -DriverLetter x,x | Get-Partition | FT DriverLetter,IsDAX

    #Get VM, Add PMEM Controller to the VM and Verify PMEM Controller Information
    Add-VMPmemController -VMName xxxxxx
    Get-VMPmemController -VMName xxxxxx

    #Create VDHPMEM File
    New-VHD -Path X:\xxxxx.vhdpmem -SizeBytes xxGB -Fixed

    #Attach VHDPMEM File to the VM, Get VM Disk Information
    Add-VMHardDiskDrive -VMName xxx -ControllerType PMEM -Path X:\xxxxx.vhdpmem
    Get-VMHardDiskDrive -VMName xxxxxx

    This article was written by Fabiano Teixeira.
    Have any comments, questions or suggestions? Please contact us on

  • Quick Tips content is self-published by the Dell Support Professionals who resolve issues daily. In order to achieve a speedy publication, Quick Tips may represent only partial solutions or work-arounds that are still in development or pending further proof of successfully resolving an issue. As such Quick Tips have not been reviewed, validated or approved by Dell and should be used with appropriate caution. Dell shall not be liable for any loss, including but not limited to loss of data, loss of profit or loss of revenue, which customers may incur by following any procedure or advice set out in the Quick Tips.

    Article ID: HOW16794

    Last Date Modified: 02/13/2019 05:03 PM

    Rate this article

    Easy to understand
    Was this article helpful?
    0/3000 characters
    Please provide ratings (1-5 stars).
    Please provide ratings (1-5 stars).
    Please provide ratings (1-5 stars).
    Please select whether the article was helpful or not.
    Comments cannot contain these special characters: <>()\
    characters left.