内核空间:KVM悄然驶入快车道

时间:2022-07-25 09:11:53

KVM代表着基于内核的虚拟机,是一个为包含虚拟化扩展的X86硬件设计的完全虚拟化方案。从最初将KVM合并到Linunx内核2.6.20,KVM一直吸引着IT人的眼球。

最近,KVM的核心程序员Avi Kivity宣布,最新的KVM版本,已经在性能上作了极大的改进,用以支持运行32位的Windows Vista作为客户机。

在Xen精英们着手于虚拟化代码之际,KVM似乎已进入快车道。虚拟化世界的进程有时看起来确实很缓慢。Xen成为虚拟化领域的热门话题也已有好几年了─其第一个“稳定”版本于2003年─但其代码仍滞留于传统的主流Linux内核之外,关于此项目的消息相对来说数量少而且速度慢,虽然Xen黑客的确仍在认真从事此代码的工作。

另一方面,KVM看起来已加快了步伐。这项工程首先在2006年10月开始崭露头角,随后的几个月里很快发展到2.6.20内核。内核版本2.6.20 包含一系列的修正和特性,最显著的就是对传统内核KVM虚拟化的引入。2007年2月25日,KVM15,此版本有一个有趣的特性:活动迁移。KVM的开发者们认为其增加高级特性的速度是如此引人注目,同样引人注目的还有实施活动迁移的简易代码。

目前,此行业争着采用虚拟化基于多方面的原因:那些低效率的服务器群组可被更少的计算机所替代;软件可在无害的分区上实施测试;数据中心可以流畅地切换优先权限。

正如Xen一样,KVM可运行Windows和Linux。KVM需要更新的X86处理器的有效的虚拟化硬件支持,如AMD处理器中的AMD-V技术和Intel的IVT技术。

KVM在其它虚拟化项目中开始具备得天独厚的好处:它依赖于硬件的支持,而这一特点只在新近的处理器中才具备。由此引起的结果是,KVM在当前部署的系统中无法工作。另一方面是,为未来的硬件而设计总是一个好主意─这个未来在技术领域来得如此迅猛:通过专注于硬件支持的虚拟化,KVM能够集中力量来开发新的有趣特性,以运行于公司目前所购买的系统之上。

KVM的迁移代码内建于QEMU仿真程序中,相关的源文件还不到800行。活动迁移任务涉及到如下几个步骤:

连接与目标系统息息相关。目前,这可以使用一个直接的与目标系统上的开放端口的TCP连接(这不会是最安全的方法)来实现,也可以通过SSH方法实现。

客户机的存储被复制到目标系统中。此过程即是在客户端物理地址空间(这是主机上的虚拟存储器)循环往复,并且不断发送到目标系统,每次发送一页。在每页复制的过程中,这一页被变为客户机只读的状态。

在复制过程进行时,客户机仍在继续运行。只要它试图修改一个已经复制的页时,就会转回到QEMU,这就恢复了对它的写访问,并且将此页标记为“脏”的。这样复制存储就成为一个反复的过程。一旦整个区域全部完成,活动迁移代码就会返回到初始并再复制被客户机修改的所有页。

一旦这种所谓的“脏”页数量低于一个界限时,客户机系统就会终止,剩余页就会被复制。然后就将当前的客户机(特别是寄存器)状态进行传输。任务完成,迁移的客户机可在新的宿主机系统上重新启动。

在此过程中,客户机系统可在Intel和AMD处理器之间转移,而不会产生任何问题。将一个64位的客户机移动到32位的客户机仍是不可能的;KVM开发者们似乎对修正这个限制并不感兴趣,可有更多的信息在KVM迁移页上发现。

另一个宣称的著名特性就是冻结KVM的2.6.21界面。此界面升级进展速度迅猛,虽然这是一个用户空间的API问题。这种灵活性已被许可,因为KVM是新的、试验性的,并且仍没有真实的用户基础。API的冻结暗示着KVM的开发者们认为事情已经达到了一个稳定点,在这个点上KVM可被放置在生产系统中进行工作。可能这还意味着,我们会发现投资支持KVM的Qumranet公司,会计划以此谋取其生存的权利。

正如Brian Stevens所认为的,我们认为KVM将在一年左右的时间里大行其道,而且开源团体将会更加趋向于KVM。

上一篇:变电站站用电源分段开关自投装置的改造设计 下一篇:电网发展的转型之路