Linux入门学习教程:虚拟机体验之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%的情况。如果用 ps -ef | grep qemu 命令查看一下,发现kvm命令运行的还是qemu-system-x86_64程序,只不过加上了-enable-kvm参数,如下图:

  另外,对于桌面用户来说,有一个好用的图形化界面也是很重要的。虽然QEMU和KVM自身不带图形界面的虚拟机管理器,但是我们可以使用第3方软件,比如virt-manager。只需要使用 sudo apt-get install virt-manager 即可安装该软件。该软件依赖于libvirt,在安装过程中也会自动安装。运行virt-manager的效果如下图,注意必须使用sudo运行,因为该软件需要超级用户权限:

  该软件可自动识别系统中的虚拟机环境是QEMU+KVM还是Xen。新建一个虚拟机,由于之前安装过一个WinXP系统,所以选择导入现有硬盘镜像。点下一步后,出现如下界面:

  这一步没什么好说的,再点下一步,如下图:

  这里可以设置网络选项。如果勾选“在安装前自定义配置”的话,还可以对硬件进行进一步的自定义,如下图:

  在上图中,我们可以看到虚拟机支持的所有虚拟显卡的类型,在这里,我当然选择的是VMVGA,因为我以前经常用VMWare,知道这些操作系统
在VMWare的虚拟显卡设置下运行得都没有问题。当然,其它的选项都可以试一下,不过在虚拟的操作系统中需要安装相应的驱动程序。

  最后,虚拟机运行的效果图如下:

  可以看到,该程序提供的界面有非常丰富的功能菜单,功能是非常强大的,甚至可以向虚拟机中的操作系统发送组合按键。

  可以这么说,如果没有VirtualBox的话,QEMU+KVM的组合应该是桌面用户的首选。下一篇我将尝试VirtualBox,VirtualBox号称是最强大的开源虚拟机系统,具体见 Linux入门学习教程:虚拟机体验之VirtualBox篇 http://www.linuxidc.com/Linux/2015-03/114463.htm  。

--------------------------------------分割线 --------------------------------------

RHEL6 KVM虚拟化创建桥接网卡-网桥 http://www.linuxidc.com/Linux/2013-08/88517.htm

RedHat Linux KVM虚拟机桥接 http://www.linuxidc.com/Linux/2013-02/79934.htm

CentOS 5.6下KVM的安装/桥接设置/虚拟机创建及运行 http://www.linuxidc.com/Linux/2012-12/76883.htm

Ubuntu下用libvirt安装KVM虚拟机时找不到/bin/qemu-kvm问题解决 http://www.linuxidc.com/Linux/2013-08/88985.htm

RedHat6.5下安装配置KVM虚拟机 http://www.linuxidc.com/Linux/2014-10/107972.htm

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-03/114462.htm

时间: 2024-12-26 12:51:12

Linux入门学习教程:虚拟机体验之KVM篇的相关文章

Linux江湖020:虚拟机体验之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

2018年最新Linux入门学习路线图

进入全新的2018年之后,感觉Linux入门学习的路线也应该进行一下更新了.过去一年里Linux版本更新过不少版本,而且很多新技术冲击了应用市场,不及时更新一下很可能跟用人需求南辕北辙. 正好拿到一份不错的入门路线图,所以就先发出来给大家做个参考. 原文地址:http://blog.51cto.com/12592106/2072693

Linux 入门学习-windows上使用VM安装LINUX

Linux基础入门之(系统安装) 虚拟机步骤 1.创建虚拟操作简介 文件--> 新建虚拟机---> 自定义-(高级)--> 硬件兼容性尽量选择最高---> 我以后安装操作系统--> 选择准备好的安装光盘--> 虚拟机命名和配置配置文件存放路径--> 根据自身的主机硬件来决定给虚拟机分配cpu的核心数--> 根据自身的主机硬件来决定给虚拟机分配占用多少物理内存--> 选择网络连接方式,推荐选择桥接后或者主机方式--> 选择I/O接口来配置设备接口-

PHP 入门学习教程及进阶(源于知乎网友的智慧)

思过崖历程: 自学的动机.自学的技巧.自学的目标三个方面描述学习PHP的经历 一.自学的动机: 一定要有浓厚的兴趣,兴趣是最后的老师,可以在你迷茫的时候不断地支撑着你走下去. 自学不是为了工作,不是为了梦想,仅仅是随便玩玩而已,大可不必各种纠结,互联网很发达,教程随便一搜就一大堆,学个一知半解装装B还是很轻松的,特别是慕课网上的各种眼花缭乱的视频教程,绝B会让你恨时间如流水,何其宝贵--然而这并没有什么卵用,在大部分的情况下,它仅仅适合学习某一门语言的一个专题,并没有针对某一门语言提供由浅入深,

Linux 入门学习之rpm软件包管理

Linux入门之软件包管理 在linux有很多类的软件包管理机制,但是在redhat.centos这类版本的系统中,都会使用一种相同的机制,就是rpm软件包管理机制,当然,还有其它版本的linux使用的不同机制: debian:使.deb文件,dpkg包管理器 redhat:使用.rpm文件,rpm包管理器 软件包在使用中又分类两种(源码包和二进制包): 源码包:一般是提供了一些源码模块和编译脚步组合起来的压缩文件,命令格式如: name-version.tar.{gz|bz2|xz} 等,这里

Linux 入门学习之bash基础原理之一

Linux入门之bash基础 编程语言分类: 机器语言.汇编语言.高级语言 静态语言:编译型语言 特点: 变量为强类型 实现转化为一定的可执行格式 常见:C.C++.JAVA.C#.Object-C 注意:一般需要解释器的编程语言一般为静态语言 动态语言:解释性语言 特点: 变量未弱类型,边解释边执行 常见: PHP.SHELL.python.perl lua : 嵌入式脚步语言 编程语言的模型.思想分类 面向过程: shell,C 面向对象: java,python,perl,c++ 一个变量