Linux入门学习教程:虚拟机体验之KVM篇

作者:杏彩彩票app下载

  前两篇体验了QEMU和经过KVM加速的QEMU,并体验了第三方虚拟机管理工具virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能。这一篇,我来剖析一下VirtualBox。VirtualBox号称是目前开源界最强大的虚拟机产品,在Linux平台上,基本上都被大家选择为首选的虚拟机软件。VirtualBox的强大不是盖的,毕竟其后台是超有钱的Oracle公司。VirtualBox的任性也不是盖的,它硬是没有使用我前文所述的那些qemu、kvm、libvirt等被各个虚拟机使用的开源组件,它的前端、后端以及内核加速模块都是自己开发的,唯有远程桌面所需要的VNC大约使用了libvncserver。

  在上一篇中,我展示了虚拟机软件QEMU的使用、效果及其性能,同时也分析了不同用户对虚拟机的不同追求。但是不管是桌面用户还是企业级用户,对虚拟机软件的追求有一点是共同的,那就是性能。QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统。QEMU的运行模式如下图:
图片 1

相关文章:

  很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要。模拟出的硬件的性能和物理硬件的性能相比,必然会大打折扣。为了提高虚拟机软件的性能,开发者们各显神通。其中,最常用的办法就是在主操作系统中通过内核模块开一个洞,通过这个洞将虚拟机中的操作直接映射到物理硬件上,从而提高虚拟机中运行的操作系统的性能。如下图:
图片 2

  1. http://www.linuxidc.com/Linux/2015-03/114461.htm
  2. http://www.linuxidc.com/Linux/2015-03/114462.htm

  其中KVM就是这种加速模式的典型代表。在社区中,大家常把KVM和Xen相提并论,但是它们其实完全不一样。从上图可以看出,使用内核模块加速这种模式,主操作系统仍然占主导地位,内核模块只是在主操作系统中开一个洞,用来连接虚拟机和物理硬件,给虚拟机加速,但是虚拟机中的客户操作系统仍然受到很大的限制。这种模式比较适合桌面用户使用,主操作系统仍然是他们的主战场,不管是办公还是打游戏,都通过主操作系统完成,客户操作系统只是按需使用。至于Xen,则完全使用不同的理念,比较适合企业级用户使用,桌面用户就不要轻易去碰了,具体内容下一篇我再讲。

  我在标题中说到VirutalBox是使用的经典架构。所谓经典,主要体现在以下几个方面:

  其实VirtualBox也是采取的这种内核模块加速的模式。我之所以这么说,是因为在安装VirtualBox时,它会要求安装DKMS。如下图:
图片 3

  1.虚拟机及虚拟机中的系统(Guest System)仍运行于主操作系统(Host System)之上,只是通过主操作系统的内核模块进行加速;

  熟悉Linux的人知道,DKMS就是为了方便用户管理内核模块而存在的,不熟悉DKMS的人Google一下也可以了解个大概。关于VirtualBox的具体使用方面的内容,我下一篇再讲。这一篇主要讲KVM。

  2.Unix系统中Front-End模式的经典架构,在VirtualBox中,VirtualBox的图形界面只不过是命令行界面的虚拟机软件VBoxManage的图形包装而已,同时,它还提供VBoxSDL、VBoxHeadless等命令行工具。比如VBoxHeadless就可以运行一个不显示虚拟机桌面的虚拟机,如果要显示桌面,可以运行一个远程桌面连接它。前后端分离有一个好处,就是对于桌面用户,可以使用前端的图形界面简化操作,而对于企业级用户,可以使用命令行工具构建自动化脚本,甚至在系统启动时自动运行虚拟机。

  KVM和QEMU是相辅相成的,QEMU可以使用KVM内核模块加速,而KVM需要使用QEMU运行虚拟机。从上图可以看到,如果要使用Ubuntu的包管理软件安装KVM,其实安装的就是qemu-kvm。而qemu-kvm并不是一个什么很复杂的软件包,它只包含很少量几个文件,如下图:
图片 4

  我并不是一开始就喜欢上VirtualBox的,一点小小的插曲差点就让我错过了这么好的虚拟机软件。本来我刚开始看到在各个Linux论坛都将VirtualBox放到首位,而不是在新闻中铺天盖地的KVM、Xen,我就觉得VirutalBox可能有点不够专业,再加上第一次使用VirtualBox时,发现它不能完美转发Ctrl+Alt+Fx(x=1~12),发现它的有些配置不能完全在图形界面中设置,需要手动更改配置文件,然后我就放弃了。直到我掌握的正确的折腾Linux的方法论,看完了它长达369页的用户手册,我才真正了解了它的强大,并深深爱上了它。

  用man命令查看一下它的文档,发现qemu-kvm包不仅包含的文件很少,而且它的可执行文件kvm也只是对qemu-system-x86_64命令的一个简单包装,如下图:
图片 5

  首先,在Ubuntu中安装VirutalBox是非常容易的,只需要一个 sudo apt-get install virtualbox 即可。

  那么问题来了,kvm内核模块究竟是由哪个包提供的呢?其实,自从Linux 2.6开始,kvm就已经被加入内核了。如果非要找出kvm内核模块kvm.ko是由哪个包提供的,可以用如下命令考察一下:
图片 6

  安装完VirtualBox后,可以考察一下它所遵守的我之前提到的“经典架构”,命令和运行结果如下图:
图片 7

  写到这里,已经可以看出KVM的使用是很简单的了。下面,我使用KVM运行一下上一篇中安装的WinXP操作系统,体验一下QEMU经过KVM加速后的运行效率。使用如下命令运行使用KVM加速的QEMU:
图片 8

  lsmod 命令可以看到VirtualBox安装后,在主操作系统中安装了好几个内核模块,用来对虚拟机进行加速。至于使用内核模块对虚拟机加速的图片我这里就不再贴了,请大家参考我的上一篇。通过 dpkg -L 命令可以考察VirtualBox提供了哪些命令行工具。最后,通过 dpkg -S 命令可以看到,VirtualBox这个可执行程序其实是属于 virtualbox-qt 软件包的,它只是一个图形界面的封装。

  可以看出,使用KVM加速后,虚拟机中的WinXP运行速度提升了不少,开机只用了34秒。我将分辨率调整为1366*768,图形界面运行也很流畅,不管是打开IE浏览器还是Office办公软件都没有问题,再也没有出现CPU使用率飙升到100%的情况。如果用 ps -ef | grep qemu 命令查看一下,发现kvm命令运行的还是qemu-system-x86_64程序,只不过加上了-enable-kvm参数,如下图:
图片 9

本文由杏彩发布,转载请注明来源

关键词: