把虚拟化平台尝试从从Xen切换到KVM已经有好几个月了,二者从架构,特性,性能等维度的优劣对比网上相关的文章很多,也不再重复了。
KVM虽然好,但是我们对它还是不尽满意,原因有这么几个:
1)代码结构:不管是还是QEMU还是KVM, 都被IBM严重绑架,这么说可能有点夸大其实,但是我至今也想不通有什么技术和架构原因QEMU需要将ppc和s390静态包含进来; 还有官方git的commit, ppc和s390好像都比x86的多。要知道,虚拟化之所以最近如日中天,主要是x86的贡献,全世界一共有多少机器是IBM的pSeries和zSeries.
2) 性能问题:比如,单个KVM虚拟机空载时CPU的负载,在E5 2P的服务器上, 会占用0.1个逻辑CPU, 如果使用spice播放声音,会占用到0.5个逻辑CPU;还有虚拟磁盘IO的延迟和性能,较物理设备相比,有大于30%的差距。
3)兼容性: 已经发现好几个windows的应用程序在QEMU-KVM虚拟机上会导致BSOD, 其中有一些已经在Redhat的网站上存在好久了,但是一直没有解决。
4) 稳定性:QEMU-KVM版本节奏很快,特性也比较多,但是其中真正能够稳定可靠运行的其实并不多,比如block migration, 在源端一个2G的QCOW2镜像,迁移到目的端以后竟然变成了12G;还有一些很有意思的特性比如FT, Postcopy Live Migration, 好像也是一直游离在主干版本以外。
基于QEMU-KVM的这些不足,我最近开始分析QMEU-KVM的代码,选择的版本是最新的QEMU稳定版1.3.0; 力图一点一点的去解决他们!