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

  说起虚拟机,大家都不陌生。需要使用虚拟机的场景也非常的多,比如有志于写操作系统的同志,往往需要一个虚拟机来运行和调试他写的系统;再比如喜欢研究网络体系结构的朋友,需要在自己的电脑上虚拟出N个系统组成各种各样的网络。(这个需要电脑的配置够强大才行,幸好本人的电脑够。)还比如用Windows的想玩Linux,用Linux想玩Windows,这样用虚拟机玩起来也比较方便;最后比如有人想研究一下目前最流行的大数据啊、云计算啊,想试一试Hadoop、Spark、OpenStack什么的,没有虚拟机怎么搭建实验环境。我自己也经常用虚拟机,在Windows中用的是VMWare,感觉它功能强大、使用方便,运行效率也非常的高。我的博客中有不少内容都是在虚拟机中折腾出来的,你们能分得出来吗?在Linux系统下,我也用虚拟机。比如在我的这一篇《使用GCC和GNU Binutils编写能在x86实模式运行的16位代码》中,我就使用QEMU来运行一个FreeDOS系统,用来调试我的16位代码。其实我自己也是一个喜欢研究操作系统的主,结识QEMU就是从《自己动手写操作系统》这本书开始的。

  虚拟机的分类很复杂。什么全虚拟、半虚拟什么的搞得人头晕。我用过的虚拟机也不少了,也总是分不清这些概念。而且桌面用户和企业级用户对虚拟机的期望值是不一样的。比如说,我可能期望这样一个虚拟机:

  1.它能模拟出一台完整的个人电脑,我可以给它安装任何我想安装的操作系统;

  2.它要有比较好用的图形界面,模拟出的电脑也要能无障碍运行Windows或Gnome这样的图形系统,能打游戏最好;

  3.客户操作系统所用的硬盘就是宿主操作系统中的一个镜像文件,随时可复制粘贴,随时可打包带走;

  4.最好能模拟出一些本身不存在的硬件,比如多个网卡什么的。

  很显然,VMWare Workstation就是这样一个可以完美满足我要求的桌面用户最满意的虚拟机。我经常使用它来折腾各个Linux发行版,而且运行流畅。当然,在Linux这个开源的世界我们是不该去使用破解版这样的东西的。不过不用担心,在Linux江湖中,还有VirtualBox、QEMU这样的虚拟机软件可用。

  而企业级用户呢,他们期望的虚拟机可能是这样的:

  1.它不一定要能模拟出一台完整的电脑,重点是CPU、内存、磁盘和网卡,重点是能当服务器使用;

  2.它性能一定要好,虚拟的CPU性能一定要接近物理CPU,一定要充分利用物理CPU的所有特性,为了性能,甚至只能安装经过修改过内核的操作系统;(所谓的半虚拟化技术。)

  3.它隔离性一定要好,它的目的是把一台机器分成N台机器用,而管理这N台虚拟机的宿主机要越不占用资源越好,客户机是主,宿主机是次;(正如Xen这样。)

  4.由于企业级用户对性能的追求,所以客户机所用的硬盘可能真是一个独立的物理硬盘、磁盘阵列、网络文件系统什么的,而不仅仅只是宿主机上的一个镜像文件;

  5.它不一定需要有图形界面,因为使用命令行界面更容易管理,比如自动化啊、远程化啊、批量化啊什么的;

  6.更多的企业级高可用性需求,比如什么热备份啊、动态迁移啊什么的。

  从上面这些期望值可以看出,虚拟机领域水很深,市场前景也比较广阔。各个虚拟机厂家把自家产品吹得天花乱坠那也是很常见的,因为每一个用户期望的点都可以大做文章嘛。所谓临渊羡鱼,不如退而结网,各种虚拟机看得再过瘾,也不如自己尝试一下。

  今天我介绍的是QEMU。还是老规矩,我的博文并不是该软件的使用手册,所以,它的学习资料还请参考QEMU的官网:

  http://wiki.qemu.org/Main_Page

  或者,在自己的系统中输入如下命令:

  man qemu-system-i386

  man qemu-img

  等等...

  QEMU本身是一个非常强大的虚拟机,甚至在Xen、KVM这些虚拟机产品中都少不了QEMU的身影。在QEMU的官方文档中也提到,QEMU可以利用Xen、KVM等技术来加速。为什么需要加速呢,那是因为如果单纯使用QEMU的时候,它自己模拟出了一个完整的个人电脑,它里面的CPU啊什么的都是模拟出来的,它甚至可以模拟不同架构的CPU,比如说在使用Intel X86的CPU的电脑中模拟出一个ARM的电脑或MIPS的电脑,这样模拟出的CPU的运行速度肯定赶不上物理CPU。使用加速以后呢,可以把客户操作系统的CPU指令直接转发到物理CPU,自然运行效率大增。

  QEMU同时也是一个非常简单的虚拟机,给它一个硬盘镜像就可以启动一个虚拟机,如果想定制这个虚拟机的配置,比如用什么样的CPU啊、什么样的显卡啊、什么样的网络配置啊,指定相应的命令行参数就可以了。它支持许多格式的磁盘镜像,包括VirtualBox创建的磁盘镜像文件。它同时也提供一个创建和管理磁盘镜像的工具qemu-img。QEMU及其工具所使用的命令行参数,直接查看其文档即可。

  下面开始体验。先看看Ubuntu软件源中和QEMU有关的包有哪些:

  我的电脑是Intel的CPU,而我想虚拟的也是个人电脑,所以我安装的自然是qemu-system-x86,另外一个有用的是qemu-utils。查看QEMU软件包中的工具及文档:

  使用qemu-img创建磁盘映像文件,使用qemu-system-i386启动虚拟机,并安装操作系统:

  WinXP估计是目前全网络上最好下载的操作系统了。运行以上命令后,弹出熟悉的系统安装界面。安装过程我就不啰嗦了。下图是安装完WinXP操作系统之后的效果。可以给qemu-system-i386指定更多的参数,在再一次启动WinXP的时候,我除了给它分配了2G内存,我还使用-smp 2参数为它分配了两个CPU,还使用-vga vmware为它指定和VMWare虚拟显卡一样的显卡。虽然指定两个CPU,但是性能仍较差。随便拖动一下窗口CPU使用率就飙升到100%。

  而且从上图中可以看到,虚拟机中的CPU虽然显示为3.5GHz,但是很显然是QEMU模拟出来的,和物理CPU有显著差别。事实上我的电脑配置相当强悍,Core i7-4770K的四核八线程CPU,请看lshw的输出结果:

结论:

  Intel Core i7-4770K的CPU,虚拟出的XP也分配了2G的内存和两个CPU,但是流畅度仍较差。说明单纯使用QEMU还是不能满足我们桌面用户的需要。配合Xen或者KVM呢?性能是否会有质的飞跃?敬请期待下下篇。(为什么不是下篇呢?因为下篇我要试试VirtualBox。)

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

时间: 2024-10-10 15:17:28

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

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

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

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

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

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下安装虚拟机qemu kqemu

一,为什么要装虚拟机,为什么选择qemu 我的系统里面有3个linux系统,这些系统都是独立的,有的时候,我想一台电脑,能更真实的模拟二台,这个时候我们就可以装个虚拟机.其实如果真的很有钱的话,可能考虑在买一台电脑,这样就不用模拟了.能模拟二台服务器可以做很多事情,比如测试heartbeat等 为什么要选择qemu呢?我的cpu(奔腾系列)不支持完全虚拟化,所以装不了KVM等,先前试着装了xen,但是安装过于复杂,一直没有装成功.qemu安装比较简单,尽量不要把时间放在装机上,或者装虚拟机,浪费

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江湖系列是一会儿方法论一会儿工具论,每过一段时间也谈谈编程语言.今天