Linux江湖020:虚拟机体验之KVM篇

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

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

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

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

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

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

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

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

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

  可以看出,使用KVM加速后,虚拟机中的WinXP运行速度提升了不少,开机只用了34秒。我将分辨率调整为1366*768,图形界面运行也很流畅,不管是打开IE浏览器还是Office办公软件都没有问题,再也没有出现CPU使用率飙升到100%的情况。

  可以这么说,如果没有VirtualBox的话,QEMU+KVM的组合应该是桌面用户的首选。下一篇我将尝试VirtualBox。

(京山游侠于2015-02-24发布于博客园,转载请注明出处。)

时间: 2024-10-27 11:53:53

Linux江湖020:虚拟机体验之KVM篇的相关文章

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

在上一篇中,我展示了虚拟机软件QEMU的使用.效果及其性能,同时也分析了不同用户对虚拟机的不同追求.但是不管是桌面用户还是企业级用户,对虚拟机 软件的追求有一点是共同的,那就是性能.QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同 架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统.QEMU的运行模式如下图: 很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要.模拟出的硬件的性能和物理硬件的性能相比,必然会

Linux江湖019:虚拟机体验之QEMU篇

说起虚拟机,大家都不陌生.需要使用虚拟机的场景也非常的多,比如有志于写操作系统的同志,往往需要一个虚拟机来运行和调试他写的系统:再比如喜欢研究网络体系结构的朋友,需要在自己的电脑上虚拟出N个系统组成各种各样的网络.(这个需要电脑的配置够强大才行,幸好本人的电脑够.)还比如用Windows的想玩Linux,用Linux想玩Windows,这样用虚拟机玩起来也比较方便:最后比如有人想研究一下目前最流行的大数据啊.云计算啊,想试一试Hadoop.Spark.OpenStack什么的,没有虚拟机怎么搭建

Linux江湖21:虚拟机体验之VirtualBox篇——性能强大的经典架构

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

Linux江湖22:虚拟机体验之Xen篇——令人脑洞大开的奇异架构

这一篇我要体验的虚拟机系统是Xen.在虚拟机领域,Xen具有非常高的知名度,其名字经常在各类文章中出现.同时Xen也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易.之所以如此,那是因为Xen采用了和我前面介绍的那几个虚拟机完全不同的架构.在这里,我称之为令人脑洞大开的奇异架构. 比如说在经典的虚拟机架构中,虚拟机软件运行于Host System之中,而Guest System运行于虚拟机软件之中.为了提高Guest System的运行速度,虚拟机软件一般会在Host System

Linux江湖01:玩转Linux系统的方法论 (转载)

http://www.blogjava.net/youxia/archive/2015/01/08/linux001.html 2014年上半年,我是在写RCP系列.然后,由于要准备研究生毕业论文和答辩, 所以就中途停了下来.再后来,我又在博客园主站开始写Linux江湖系列.经过大半年的努力,Linux江湖系列已经有十几篇了.在这里,我将把其中的内 容整理后,转发到我的Java博客中.至于RCP系列,我还是会接着写的,不过要等我的心再次沉下来才行. Linus说“Just for fun”,而我

Linux初体验之练习篇(七)

Linux初体验之练习篇(七) tr IO重定向 神奇的自动挂载 tr 主要用途 转换或删除字符 tr - translate or delete characters tr [OPTION]... SET1 [SET2] tr命令是一个强大的字符转换工具,可以对来自标准输入的字符进行各种转换,包括字符集对应转换.删除或都取字符补集.压缩和格式调整.格式调整包括换行.回车.加入制表符等. 常用参数 -c, -C: --complemen, 取字符集的补集 -d: --delete, 删除所有属于

Linux江湖07:硬盘分区的陷阱及应对

之所以想到写这篇,是因为本人在折腾Linux系统的过程中,有多次掉入硬盘分区的陷阱的经历.最近几天,再一次掉入坑中,折腾了两天才从坑中爬出来.经过多方查询资料,终于弄明白了硬盘分区的一些概念.下面将其记录下来,以警示来者. 说起我自己掉坑的经历,无不与WinXP和Linux的激烈碰撞有关.多年前,我就开始在一台电脑上同时安装WinXP和Linux,只要遵守先安装WinXP再安装Linux的顺序,就不会出问题,Linux的安装程序会自动识别多系统,安装完成后可顺利启动多系统.有一天,我觉得单用Li

Linux江湖17:适合数值计算的语言需要具备什么样的特色

2015年1月,我继续徜徉在数值计算的海洋中.这段时间里,我抽空看了Python科学计算和数值分析方面的书,也仔细研读了Octave的用户手册,甚至连古老的Fortran.新兴的R语言我都去逐一了解.对于数值计算的库,我了解了一下Boost的uBLAS,以前也用过OpenCV,当然,了解最多的还是Python中的NumPy.SciPy和pandas. 前几篇随笔搞了不少工具论,所以今天我就专门来论一论编程语言.我的这个Linux江湖系列是一会儿方法论一会儿工具论,每过一段时间也谈谈编程语言.今天

Linux江湖12:桌面美化那点事儿

各个Linux桌面发行版刚拿到手的时候,都或多或少有点不满意,对它们进行一些改造是必须的.网上不乏各种Linux桌面美化的教程和经验贴,对我们这些Linux爱好者来说都是很好的参考资料.进行桌面美化之前,请谨记以下几点: 1.桌面美化是一个仁者见仁.智者见智的事.有可能你认为很美的界面,别人认为土得掉渣:有可能你认为很炫的特效,别人认为华而不实.就拿我来说,我就不喜欢桌面小部件,不管是在电脑上还是在手机上.所以我的电脑桌面总是光秃秃,除了背景图片啥都没有.但是我喜欢将控制台窗口半透明化.所以,对