共计 1366 个字符,预计需要花费 4 分钟才能阅读完成。
目前,主流的共有云提供商大部分采用的 hypervisor 还是 XEN,所以,很多人会笼统的认为 xen 比 kvm 更好。个人认为,这是个误区。国外的 amazon 和国内的阿里云,华为云之所以选择 xen 作为 hypervisor,个人认为只是他们从事 hypervisor 方面的研究更早,当时最好的 hypervisor 就是 xen,这么多年了投入了大量的人力和物力,已经形成了一定的知识积累,所以才会一直用 xen 而已,也就是说决定因素并不是,从技术上讲,xen 比 kvm 更好。相反,我反倒认为,kvm 在技术上走在了 xen 的前面。
相关阅读:
RHEL6 KVM 虚拟化创建桥接网卡 - 网桥 http://www.linuxidc.com/Linux/2013-08/88517.htm
RedHat Linux KVM 虚拟机桥接 http://www.linuxidc.com/Linux/2013-02/79934.htm
CentOS 5.6 下 KVM 的安装 / 桥接设置 / 虚拟机创建及运行 http://www.linuxidc.com/Linux/2012-12/76883.htm
Ubuntu 下用 libvirt 安装 KVM 虚拟机时找不到 /bin/qemu-kvm 问题解决 http://www.linuxidc.com/Linux/2013-08/88985.htm
1. KVM IO 性能测试
下面来介绍下,kvm 在 IO 方面的一个 new feature – virtio-blk-data-plane,首先来看下性能测试的结果
(1)测试环境配置参数
(2)测试结果
测试结果总结:
(1)在 block size = 4K 的情况下,采用了 virtio-blk-data-plane 的 KVM 的性能是最好的,达到了 1577684 IOPS,是 sphere 5.1 的 1.5 倍,是 hyper- v 的 4 倍,是 KVM 默认采用的 io 驱动 virt-blk 的 10 倍
(2)在 block size 从 512B 到 8K 情况下,采用了 virtio-blk-data-plane 的 KVM 的性能也是最好的.
2. virtio-blk-data-plane 的基本原理
virtio-blk-data-plane 是在原来 virt-blk 的基础上,通过给每个 io device 创建一个专门的线程来负责设备的 io 操作,目的是允许不同设备的 IO 能够并发的进行。由于每个 io 设备的 io 都由单独的线程来处理,一方面,减少了多个 io 设备之间的同步问题,另一方面,减少了 io 操作与 qemu 主进程之间的同步。另外,io 线程采用了 io eventfd/irqfd 机制,使得 io 处理与 guest os 的执行解耦,充分利用了 host os 的 AIO,因此,极大的提高了 guest os 的 io 性能。
virtio-blk-data-plane 的架构如下图所示。
由于 virtio-blk-data-plane 在 redhat 6.4 中属于 tecnology preview,所以,目前还有很多限制,主要在存储方面:
(1)仅支持 raw 格式的镜像
(2)KVM 的一些比较新的 features,目前还不能使用 virtio-blk-data-plane,比如 storage migration, disk hot unplug, io throtting, image streaming and driver mirroring.