虚拟化 频道

开源虚拟化入门之Linux KVM虚拟化架构

  【IT168 报道】现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。

  准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。
 

  各部分示意图

  至此,你已经可以使用QEMU工具创建虚拟机了。但我们会发现RedHat的虚拟化并非如此简单。与之相关的还有libvirt、VMM等。原因就是因为QEMU工具效率不高,不易于使用。libvirt是一套C语言的API,现在也有其他语言的了。它负责将不同类型的虚拟化工具的差异完全屏蔽掉。例如Xen的管理命令是xm,而KVM则是qemu-kvm。使用libvirt,你只需要通过libvirt提供的函数连接到Xen或者KVM宿主机,便可以用同样的命令指挥不同的虚拟机了。libvirt不仅提供了API,还自带了一套管理虚拟机的命令——virsh。你可以通过使用virsh命令来进一步了解libvirt。但最终用户更渴望的是图形用户界面,这就是VMM的事情了。VMM是一套用python写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。VMM就是利用了libvirt的API参数实现的。

  以上这些就是RedHat虚拟化技术的大致架构了,RedHat还有一套用于大规模管理KVM虚拟机的工具,叫oVirt,现正处于开发过程中。有兴趣的朋友可以去看看。上述软件的官方链接在本网站首页上均有。

0
相关文章