【转】Linux内核虚拟化KVM详解
<br />Linux 2.6.20内核包含一个全新的虚拟技术: KVM(Kernel-based Virtual Machine), 全称为基于内核的虚拟机。 它很友好, 稳定和高性能。KVM发布到网上后,很容易就赶上其它的虚拟化解决方案如Xen, OpenVZ和Vserver, 它们都基于其它的方法, 都在努力集成到Linux内核之中,但KVM成了最后的赢家。 <br /> 从简单CPU性能
Linux 2.6.20内核包含一个全新的虚拟技术: KVM(Kernel-based Virtual Machine), 全称为基于内核的虚拟机。 它很友好, 稳定和高性能。KVM发布到网上后,很容易就赶上其它的虚拟化解决方案如Xen, OpenVZ和Vserver, 它们都基于其它的方法, 都在努力集成到Linux内核之中,但KVM成了最后的赢家。
从简单CPU性能测评来看,KVM的效率与native的效率相当,与传统虚拟技术比,有相当的竞争力。它的出现可能会完全改变我们使用集群和部署系统的方式。
原理简介
当前存在几种不同的虚拟技术: 一种是半虚拟化技术(Paravirtualization), 客户操作系统需做一些修改;另一种是全虚拟化技术(Full Virtualization), 客户操作系统无需任何修改。
我们知道全虚拟化技术是以降低性能来提高兼容性, 因为在虚拟化环境中如果没有客户操作系统的协助, 系统将很难达到较好的性能。另一方面, 近来新处理器的开发缩短了这方面的差距。最新的Intel VT(虚拟技术, Virtualization Technology)和AMD SVM(安全虚拟机, Secure Virtual Machine)从硬件上支持了虚拟技术, 试图取代半虚拟化技术。KVM在标准的Linux内核中增加了虚拟技术, 从而我们可以通过优化的内核来使用虚拟技术。
在KVM模型中, 每一个虚拟机都是一个由Linux调度程序管理的标准进程。 一个普通的Linux进程有两种运行模式: 内核和用户。而KVM增加了第三种模式: 客户模式(有自己的内核和用户模式。图1)
KVM由两个部分组成:
◆一个是管理虚拟硬件的设备驱动, 该驱动使用字符串设备/dev/kvm做为管理接口。
◆另一个是模拟PC硬件的用户空间组件, 这是一个稍做修改的qemu进程。
基准测试
Windows XP的安装速度很快, 接下来进行一些基准测试。这里测试工作是部分性的, 非标准测试,目的是从实验来理解KVM的一些特性。一旦完成Windows系统的安装, Windows客户机甚至可以在未经修改的QEMU上运行, 而且重新编译和安装了kqemu, kqemu是一个由qemu原作者开发的QEMU加速模块(QEMU accelerator module)。最后,选择了两个测试软件: PCMark2002和Super PI(版本 1.1e)。注意测试硬件的处理器是Intel E6600(图2、3)。
可以发现kqemu和KVM比单独的QEMU模拟器的性能要强很多。而且可以看到kqemu只比kvm好一点点。但是随着技术的发展,KVM的性能会不断改进的, 毕竟比起其它虚拟技术,KVM还很年轻。(图4)。
运行Super PI的结果是: KVM速度最快, 相当于原始(单机运行)速度(在实际硬件上运行, 无任何虚拟机软件)的84%。而QEMU的速度是最慢的, 上面图表没有显示实际数据,把所有的结果列出来(数值越低越快, 每秒处理100万条指令): QEMU: 492.5 sec, kqemu: 28.5 sec, KVM: 25.5 sec, native: 21.5 sec。
结论
KVM仍在开发当中, 它向我们展示了其真实的潜力。近期,我们会看到更多好的有关kvm的新闻。KVM集成到Linux官方内核当中, 它将变成一个日用品. 而且KVM不仅会应用到数据中心和服务器系统加固上, 而且也会应用到Linux桌面上。
更多推荐
所有评论(0)