0

I'm running Ubuntu 18.04 as host and windows 10 as guest, using QEMU/KVM as my hypervisor and libvirt as my management tool.

I have a nvme ssd /dev/nvmewin that I want to pass to the windows guest (guest will boot from this device)

I'm also using OVMF to boot in UEFI mode.

Currently it only works if the device is exposed as an IDE device. The guest will not boot if the device is under SCSI, SATA or Virtio (blue screen with error code INACCESSIBLE_BOOT_DEVICE)

My motivation of using a different bus is that I think it will yield better I/O performance.

So my question:

  • Is it true that using a different bus will yield better I/O performance?
  • If so, how can I expose the device under a different bus and boot?

Here's my domain configuration part about the device:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source dev='/dev/nvmewin'/>
  <target dev='hda' bus='ide'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
0

Is it true that using a different bus will yield better I/O performance?

Yes. I got near native speed with virtio bus with attributes cache=none io=native Hypervisor default cache and io settings seems to be faster when benchmarked with crystal disk mark, but in reality the cache is enabled so the test results must be taken with a grain of salt.

If so, how can I expose the device under a different bus and boot?

Just need to install the virtio bus drivers. Windows kernel does not have them so windows will not be able to find the disks at boot time if the drivers are not installed.

More information can be found here

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.