我正在运行 Ubuntu 18.04 作为主机,运行 Windows 10 作为客户机,使用 QEMU/KVM 作为我的虚拟机管理程序,使用 libvirt 作为我的管理工具。
我有一个 nvme ssd /dev/nvmewin,我想将其传递给 Windows 客户机(客户机将从此设备启动)
我也使用 OVMF 以 UEFI 模式启动。
目前,它仅在设备作为 IDE 设备公开时才有效。如果设备在 SCSI、SATA 或 Virtio 下,客户机将无法启动(蓝屏,错误代码为 INACCESSIBLE_BOOT_DEVICE)
我使用不同总线的动机是我认为它将产生更好的 I/O 性能。
我的问题是:
- 使用不同的总线确实会产生更好的 I/O 性能吗?
- 如果是这样,我该如何在不同的总线下公开该设备并启动?
这是我的有关该设备的域配置部分:
<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>
答案1
使用不同的总线确实会产生更好的 I/O 性能吗?
是的。我使用 virtio 总线时,在cache=none io=native
Hypervisor 默认属性下获得了接近本机的速度,使用 crystal disk mark 进行基准测试时cache
,io
设置似乎更快,但实际上缓存已启用,因此测试结果必须谨慎对待。
如果是这样,我该如何在不同的总线下公开该设备并启动?
只需安装 virtio 总线驱动程序。Windows 内核没有这些驱动程序,因此如果没有安装驱动程序,Windows 在启动时将无法找到磁盘。
更多信息请见这里