我使用libvirt和KVM在Ubuntu 15.04服务器中设置了虚拟化的Ubuntu 15.10 guest虚拟机。
存储在主机系统中:
# mount | grep ext4 /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/sdb1 on /media/hdd type ext4 (rw,relatime,data=ordered)
/ dev / sda是一个SSD, / dev / sdb是一个硬盘。
最初的configuration是使用virt-manager完成的。
问题:
来宾系统的总体性能似乎是好的,但是一些操作,使用apt-get(因此来宾系统安装)显着地安装软件包是非常缓慢的。
来宾磁盘映像是原始格式,我已经尝试将它放在SSD和HDD作为一个文件,也作为一个单独的硬盘分区。 不同的位置会对性能有所影响,但是使用apt-get安装某些软件包仍然比主机系统慢两到三倍。
我也尝试了各种qemu磁盘caching选项, 并使用不安全的caching似乎完全消除了这个问题 。 但是,任何其他caching设置(包括none和writeback)都performance出糟糕的性能。 当然,使用不安全看起来不是一个真正的解决scheme。
这里是从客户xmlconfiguration摘录:
<disk type='block' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source dev='/dev/sdb2'/> <target dev='vda' bus='virtio'/> <boot order='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk>
当使用映像文件而不是分区变成:
<disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none' io='native'/> <source file='/media/hdd/dsi/vm/ubuntu4.bin'/> <backingStore/> <target dev='vda' bus='virtio'/> <boot order='2'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
在试图解决这个问题时,我注意到硬盘上的第一个分区没有正确alignment,所以我重新创build了正确的分区(对于这个硬盘是4096)。 这也没有太大的帮助。
我也尝试设置电梯=诺普为客人,无济于事。
当我使用VirtualBox在Windows PC上运行类似的客户系统时,我不会遇到这种性能下降,所以我希望有一种方法可以在KVM上运行具有相同性能的客户端。
尝试
cache=directsync
要么
cache=writethrough
也
vm.swappiness=1 vm.vfs_cache_pressure=75 (play around with this)
使用截止date而不是cfq / noop(我发现ssds和raidperformance不佳)。
忽略人们对cache = none或writeback的评价是最好的。 并不总是那么简单。