kvm虚拟化Windows获得低磁盘性能

放弃

这确实是这个线程的延续。 由于目标已经慢慢转移,所以我开了一个新的问题,所以我认为开新帖是件好事。 如果需要,我会合并回去。

build立

  • 带有B140i软驱控制器的HP DL160g9服务器
  • 4 LFF 7.2K RAID-5
  • Centos 7.2上有来自centos virt sig的kvm和qemu。 规格与以前的post不变。
  • 所有的虚拟机存储在服务器上都是本地的
  • 所有NIC和提供的VHDD都通过virtio(virt-scsi)传递,caching是none,io是本地的。
  • 所有虚拟机都有2个VNICS:一个暴露在局域网内,一个内部到服务器(默认的libvirt NATnetworking)

经过testing的系统

  • linux主机(作为参考)
  • 本地linux虚拟机
  • 本地Win8.1和Win10虚拟机(64位)
  • 远程win10 64bit专业工作站
  • 通过virtualbox在这样的WS上运行的远程linux虚拟机
  • 通过virtualbox运行在这样的WS上的远程win8.1 64bit专业版VM

经过testing的存储types

为了理解为什么Win10 / 8.1 pro 64bit在KVM下非常糟糕,我们尝试了一些testing。 磁盘性能衡量:

iozone -i 0 -i 8 -t 1 -s 4m 

当然,testing是从目标存储设备的文件夹中运行的。 以下不同的configuration已经过testing:

  1. 准备一个LVM思考卷作为virtio scsi驱动程序传递给linux和windows VM。

    • 在其上运行iozone:testing本地linux和windows虚拟机。
  2. 对虚拟和物理LAN上提供的iscsi目标使用与块设备相同的LVM密集卷。 这次虚拟机启动了,我们已经从正在运行的虚拟机中手工添加了iscsi目标而不通过kvm / libvirt。 在这种情况下,kvm只能在networking上进行调解。

    • 在这种情况下,我们还对外部Windows工作站和运行在其上的linux虚拟机进行了基准testing。

结果

结果是相当有意义的。 如果存在以下情况,所有存储 (本地虚拟磁盘和iscsi目标)

  • 我们从主机内testing它们(通过LAN ip not loopbackloginiscsi目标)

  • 我们在任何本地的linux虚拟机上testingvirtio-scsi / iscsi目标

  • 我们testingwindows工作站或虚拟机上运行的虚拟机的iscsi卷:linux和Win。

当我说很好的意思是,给定或采取的吞吐量几乎是本地的,以每秒1至170万KB (本地本地LVM为200万)的顺序!

如果存在以下情况, 存储 (本地virtsi磁盘和iscsi目标)的所有组合执行不良

  • 我们从本地赢得KVM上的8.1 ​​/ 10个虚拟机:例如50万KB /秒

注意事项

  • virtio-scsi性能不好,因为virtio驱动程序使用vscsi存储。

  • 另一方面,在iscsi目标的情况下,这应该意味着即使是virtionetworking驱动程序也是如此,因为linux和Win在其他场景(native或Virtual Box)中工作得很好!

帮帮我

说实话,我不认为即使在networking上,Windows的virtio驱动程序也是如此糟糕。 请分享一些经验来了解虚拟机的调整方式吗?