热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux折腾记(十九):虚拟机体验之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呢?性能是否会有质的飞跃?敬请期待下篇。






推荐阅读
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 前言整个信息技术的很多领域,都是相互关联的,IT也是一样,他们有着他们的规律,在其中摩尔定律,安迪——比尔定律,反摩尔定律组成了计算机行业的发展规律摩尔定律科技行业流传着一个 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 技嘉秀高端B450主板:不再支持第七代APU,性价比高且兼容锐龙一代和二代
    在台北电脑展上,技嘉展示了一款高端的B450主板,型号为“b450 aorus pro wi-fi”。该主板具有10+1相供电、散热片覆盖的供电区域和芯片组,以及两个m.2插槽和背部IO挡板。虽然不支持第七代APU bristol ridge,但它兼容锐龙一代和二代,且具有较高的性价比。该主板还配备了音频声卡、Wi-Fi无线网卡等功能,是一款性能出色且设计精良的主板。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
author-avatar
手机用户2702936363
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有