NVMe storage controller support in PD15 - is it automatic?

Discussion in 'Installation and Configuration' started by KorkyPlunger, Aug 16, 2019.

  1. KorkyPlunger

    KorkyPlunger Hunter

    PD 15 has support for NVMe controllers. If we are migrating pre-PD15 virtual machines to PD15, is there anything that needs to be done to enable this option, or is it automatic? I did not see any option for explicitly enabling this in the settings.
  2. JasperV3

    JasperV3 Junior Member

    It is not automatic. Under the VM settings, go to Hardware tab and select Hard Disk, under Advanced Settings change the location from SCSI to NVMe.

    For Linux VMs, Ubuntu appears to recognize the drive when you attempt to install, but when you go to reboot, I get a "No boot device is available, press Enter to continue", so it appears you cannot use it as a boot drive for Linux as of yet.
    For Windows 10, when I changed the boot drive to NVMe, it started a diagnostic/automatic repair screen but would not boot. You may have to try a clean install to get it to work.

    However, running a quick benchmark using fio random read/write shows the following performance improvements:

    SATA: 124 MB/sec read, 41MB/sec write, iops read/write 30918/10310
    NVMe: 276 MB/sec read, 92MB/sec write, iops read/write 68929/22986


    The relevant command was here (just update the filename to point to a directory on the drive you want to test):
    fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
    Dmitry@Parallels likes this.
  3. KorkyPlunger

    KorkyPlunger Hunter

    Thanks @JasperV3, I was able to find the NVMe option thanks to your post.

    However, I also have the same issue with my existing VM -- it will not boot if I change the location from SATA 0:1 to NVMe1. Is there any way to migrate the HD for an existing windows 10 VM?
  4. KorkyPlunger

    KorkyPlunger Hunter

    To provide more context, when I change the controller location from SATA to NVMe, the error I get is "There is no operating system installed on this virtual machine". If I then change it back to SATA I can boot again.

    Screen Shot 2019-08-28 at 9.51.11 AM.png
  5. JasperV3

    JasperV3 Junior Member

  6. Dmitry@Parallels

    Dmitry@Parallels Parallels Team

    Hi @KorkyPlunger, theoretically, it's possible to make Windows boot from the disk on NVMe controller if Windows will have NVMe controller in boot drivers. To try it, (while having boot disk on SATA) add a second virtual disk with NVMe controller to Windows VM, then boot to Windows > shut down Win > now switch boot disk to NVMe controller > try to boot Windows. Let me know if it helped.
    Thor99 likes this.
  7. JasperV3

    JasperV3 Junior Member

    You can try this, which works on Ubuntu:

    To enable NVMe:
    1. Shut down your VM.
    2. Right click on the VM in Control Center to show in Finder.
    3. Right click on the VM in the and Show Package Contents
    4. Open config.pvs with Text Editor
    5. Set <EfiEnabled> to 1
    6. Save and exit
    7. Back in Control Center, click on configuration
    8. Under Hardware:Hard Disk 1:Advanced Settings, change Location: to NVMe1
    RaphaelF and Thor99 like this.
  8. KorkyPlunger

    KorkyPlunger Hunter

    @JasperV3 Thank you for your suggestions. I tried your step by step approach but this does not work; windows goes into repair mode. Perhaps the issue is indeed that my VM's boot drive is using MBR and not GPT.

    @Dmitry@Parallels I tried your approach as well of adding a second hard drive. I was able to add a second drive using NVME to my vm, boot to windows and add it to windows (formatting it to use GBT), then shutting down and switching the original boot drive to NVME, but unfortunately windows still reports a missing operating system. In fact, it's interesting -- if I enable the "select boot device on startup" option, the bios seems to think it's still a SATA drive (or it's confusing it with something else... the boot options don't make sense):

    Screen Shot 2019-09-16 at 10.38.59 AM.png
  9. KorkyPlunger

    KorkyPlunger Hunter

    @JasperV3 and @Dmitry@Parallels -- I got this to work. This missing piece was that I needed to convert my boot partition to use GPT instead of MBR, which I did using the mbr2gbt.exe tool provided by Microsoft.

    After converting to GBT and reconfiguring the VM's hard drive to use NVMe1, it still would not boot; it seemed to be using the normal BIOS instead of UEFI. I couldn't figure out how to change that via the configuration screen, so I changed it in the config.pvs as @JasperV3 suggested here. After that change, the VM booted with no issues.

    Thanks for all the help!
  10. RichardM20

    RichardM20 Bit poster

    I am having problems setting up a Windows 10 VM to use NVMe. When I look at a VM that is running NVMe ok I can see a second SCSI controller "Standard NVM Expres Controller" in System Information. This is missing from the VM that will not boot as NVMe.

    Can anyone tell me how to install the SCSI controller for "Standard NVM Expres Controller".
  11. RichardM20

    RichardM20 Bit poster

    I have worked out the process to migrate an old VM to use NVMe, steps are as follows:

    1. Use Microsoft tools to convert disk to GBT
    2. Set EFIEnabed to 1 in VM configuration file
    3. Start Windows
    4. Shutdown Windows
    5. Add a small second Disk to VM and assign to NVMe1
    6 . Start Windows
    7. Use Disk Management to Initialise the new Disk
    8. Shutdown Windows
    9. Remove small second Disk
    10. Change Disk to NVMe1
    11. Start Windows
    Thor99 likes this.
  12. Thor99

    Thor99 Bit poster

    For me the missing piece was adding the second virtual disk. I had created my Windows 10 VM using Parallels 14, and the virtual disk was already using GPT, EFIEnabled was already set to 1, and the disk was set to SATA 0:1. And when I added the second virtual disk to the VM it automatically was set to NVMe 1. So essentially what @Dmitry@Parallels recommended above worked for me, as I didn't have to make any of the other changes mentioned in this thread. I also followed the steps that @RichardM20 added: I made sure to initialize the second virtual disk before shutting down Windows and then removed it prior to changing the primary disk to NVMe 1.

    Before I added the second virtual disk I tried to switch the primary virtual disk to NVMe 1, seeing as that disk was already using GPT and EFIEnabled already = 1, but I got a BSOD with the error INACCESSIBLE BOOT DEVICE when I tried to boot.
  13. RandyB3

    RandyB3 Member

    Many, many hours of frustration and I finally managed to convert a SATA to NVMe. Short story is that trying all the mbr2gpt / reagentc / bcdedit / bootrec commands were full of unfixable errors, then restarting the VM couldn't boot and couldn't load WinRE or boot into anything. Only option was to restore from a backup and try again. Finally after many errors with those commands from the initial try in WinRE, some combination of failing to restart with advanced options, then given another restart succeeded. I'm going to record my log of attempts here just for the record.
    Host: MacBook Pro 16" 2019 running Parallels 17.
    Guest: Windows 10 Enterprise Version 21H1 all updates current.
    I did these in this order:
    DISM /Online /Cleanup-Image /RestoreHealth
    SFC /scannow
    1. In guest, Settings, Update & Security, Recovery, Advanced Startup, Restart now.
    2. Troubleshoot, Advanced Options, Command Prompt.
    3. mbr2gpt /convert: MBR2GPT: Failed to update ReAgent. xml, please try to manually disable and enable WinRE. To fix, you need to reboot and manually disable and enable WinRE.
    4. Changed to \windows\system32 directory.
    5. reagentc /info shows Windows RE status disabled, location is empty, does show a bcd identifier
    6. reagentc /enable /osguid {guid here} result - Operation failed: 3b3c (dec 15164)
    Can't find that code with Google.
    7. reagentc /setreimage /path D:\Recovery\WindowsRE succeeded.
    regagentc /info results unchanged, with /enable still same error
    8. bcdedit /enum all result is error: The boot configuration data store could not be opened."
    9. chkdsk c: /r /f no issues
    10. bootrec /rebuildbcd, responded Y, error: The requested system device cannot be found.
    11. bootrec /fixboot, error Access is denied.
    12. bootrec /fixmbr was successful, then /fixboot same error, /rebuildbcd same error.
    13. retry all reagentc, bootrec, bcdedit commands tried above, same results.
    14. Exit cmd, run Startup Repair: Startup repair couldn't repair your PC.
    15. Reset this PC, local install: There was a problem resetting your PC, no changes were made.
    16. Restart your pc with advanced settings failed, simple Restart button only presented, Restart your PC succeeded.
    At this point the VM booted into Windows and the boot disk was GPT. What a mess that was!
    Dmitry@Parallels likes this.

Share This Page