我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解Linux中Xen的奇异架构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解Linux中Xen的奇异架构

如何理解Linux中Xen的奇异架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

  比如说在经典的虚拟机架构中,虚拟机软件运行于Host System之中,而Guest System运行于虚拟机软件之中。为了提高Guest System的运行速度,虚拟机软件一般会在Host System中使用内核模块开一个洞,将Guest System的运行指令直接映射到物理硬件上。但是在Xen中,则根本没有Host System的概念,传说它所有的虚拟机都直接运行于硬件之上,虚拟机运行的效率非常的高,虚拟机之间的隔离性非常的好。

  当然,传说只是传说。我刚开始也是很纳闷,怎么可能让所有的虚拟机都直接运行于硬件之上。后来我终于知道,这只是一个噱头。虚拟机和硬件之间,还是有一个管理层的,那就是Xen Hypervisor。当然Xen Hypervisor的功能毕竟是有限的,怎么样它也比不上一个操作系统,因此,在Xen Hypervisor上运行的虚拟机中,有一个虚拟机是具有特权的,它称之为Domain 0,而其它的虚拟机都称之为Domain U。

  Xen的架构如下图:

如何理解Linux中Xen的奇异架构从图中可以看出,Xen虚拟机架构中没有Host System,在硬件层之上是薄薄的一层Xen Hypervisor,在这之上就是各个虚拟机了,没有Host System,只有Domain 0,而Guest System都是Domain U,不管是Domain 0还是Domain U,都是虚拟机,都是被虚拟机软件管理的对象。

  既然Domain 0也是一个虚拟机,也是被管理的对象,所以可以给它分配很少的资源,然后将其余的资源公平地分配到其它的Domain。但是很奇怪的是,所有的虚拟机管理软件其实都是运行在这个Domain 0中的。同时,如果要连接到其它Guest System的控制台,而又不是使用远程桌面(VNC)的话,这些控制台也是显示在Domian 0中的。所以说,这是一个奇异的架构,是一个让人很不容易理解的架构。

  这种架构桌面用户不喜欢,因为Host System变成了Domain 0,本来应该掌控所有资源的主操作系统变成了一个受管理的虚拟机,本来用来打游戏、编程、聊天的主战场受到限制了,可能不能完全发挥硬件的性能了,还有可能运行不稳定了,自然会心里不爽。(Domain 0确实不能安装专用显卡驱动,确实会运行不稳定,这个后面会讲。)但是企业级用户喜欢,因为所有的Domain都是虚拟机,所以可以更加公平地分配资源,而且由于Domain U不再是运行于Domian 0里面的软件,而是和Domain 0平级的系统,这样即使Domain 0崩溃了,也不会影响到正在运行的Domain U。(真的不会有丝毫影响吗?我表示怀疑。)

  下面开始在Ubuntu系统中体验Xen。使用如下命令可以在Ubuntu的软件源中搜索和Xen相关的软件包以及安装Xen Hypervisor:

代码如下:

sudo aptitude search xensudo aptitude install xen-hypervisor-4.4-amd64

  传说在旧版本的Xen Hypervisor上只能运行经过修改过的Linux内核。但是在目前的版本中不存在该问题。我机器上的Ubuntu 14.10系统不经任何修改,就可以当成Domain 0中的系统运行。至于是否让该系统运行于Xen Hypervisor上,在启动时可以选择,如下图:

如何理解Linux中Xen的奇异架构

  通过查看Grub的配置文件,可以看到通过Xen虚拟机启动Ubuntu系统时,Grub先启动的是/boot/xen-4.4-amd64.gz,然后才把Linux内核以及initrd文件作为模块载入内存。也就是说,Grub启动Xen Hypervisor,然后Xen Hypervisor运行Domian 0。

如何理解Linux中Xen的奇异架构

  前面提到Host System一下子变成了Domain 0中的操作系统是让桌面用户比较不爽的事,这里详细论述。虽然说目前的Xen同时支持全虚拟化和半虚拟化,支持操作系统不经任何修改就运行于Xen虚拟机上(全虚拟),但是系统是否稳定还是和内核有很大关系的。比如说我在Ubuntu 14.04刚推出的那段时间,在Ubuntu 14.04中使用Xen是没有什么问题的,但是经过几次系统升级后,Xen就出问题了,没办法成功进入Domain 0中的Ubuntu 14.04。现在我用的是Ubuntu 14.10,已经升过好几次级了,目前使用Xen还是很稳定的。其次就是显卡驱动的问题,我的Ubuntu当主系统用时,使用的是NVIDIA的显卡驱动,但是当Ubuntu运行于Domain 0中时,就不能使用NVIDIA的显卡驱动了,否则无法进入图形界面。

  下面来测试一下Xen虚拟机的运行效果。通过前文的探讨,可以看出一个虚拟机的运行需要两个要素:一是一套虚拟的硬件系统,二是一个包含了操作系统的磁盘镜像。QEMU虚拟机关于硬件的配置全由命令行指定,VirtualBox虚拟机的硬件配置存在于配置文件中,而Xen呢,它也存在于配置文件中,这个配置文件要我们自己写。至于磁盘镜像,还是复用我之前创建的那个WinXP.img吧,记住,它是qcow2格式的。

  先进入我主目录的virtual-os目录,ls 看一下,里面有我之前创建的WinXP.img。然后,我们创建一个WinXP_Xen.hvm配置文件,其内容如下:

代码如下:

builder = "hvm"
name = "WinXP_Xen.hvm"
memory = 2048
vcpus = 2
disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]
sdl = 1

  这段配置文件很简单,也很容易懂。 hvm 代表这是一个全虚拟化的虚拟机,和全虚拟化相对的是半虚拟化,半虚拟化只能运行经过修改的内核,但是可以获得更高的性能。为该虚拟机分配2个CPU和2G内存,并指定硬盘镜像文件。最后一个 sdl=1 表示使用SDL图形库显示虚拟操作系统的界面,如果不想用SDL,也可以写成 vnc=1,这样需要使用 vncviewer 才能连接到虚拟机操作系统的桌面。

  至于Xen的配置文件怎么写,管理命令怎么用,这个必须得有学习资料。通过 man xl 和 man xl.cfg 查看手册页是可以的,但是最全面的资料还是在Xen的官网 http://www.xenproject.org 上。

  使用 sudo xl list 命令可以看到系统中只有一个Domain 0在运行,然后使用 sudo xl create -c WinXP_Xen.hvm 即可运行一个Domian U虚拟机,该虚拟机使用WinXP_Xen.hvm配置文件。 xl 命令的 -c 选项表示把Domain U的控制台显示在Domain 0中,如果不用 -c 选项而使用 -V 选项,则创建虚拟机后使用 vncviewer 进行连接。新建的虚拟机运行起来后,再次使用 sudo xl list 命令,可以看到除了Domain 0,还多了一个名称为“WinXP_Xen.hvm”的虚拟机。运行效果如下图:

如何理解Linux中Xen的奇异架构

  关于Xen更多更高级的功能,比如动态迁移什么的,我这里就不试了。至于说到Xen虚拟机的隔离性,如果一个Domain U崩溃了,肯定是不会影响到Domain 0和其它Domain U的,但是如果Domain 0崩溃了,Domain U真的不会受到任何影响吗?Domain 0崩溃了怎么重启它呢?这都是我没想明白的问题。在折腾Xen的过程中,我曾多次重启过机器,重启后一看,WinXP_Xen.hvm还在继续运行,似乎是没有受到Domain 0的影响,但是我就想,我机器都重启了,电源都断了,Domain U它真的能丝毫不受影响吗?

总结:

  1.Xen虚拟机不应该是桌面用户的首选,因为它架构比较奇异不容易理解,可能因内核升级而出现不稳定,不能充分发挥桌面硬件的性能,比如显卡;桌面用户还是应该首选VirtualBox。

  2.企业及客户可以考虑Xen,因为它可以提供较好的性能和隔离性,企业级用户不需要桌面用户那么多的功能,所以可以把Domain 0做到很薄,可以完全不要图形界面,也不用经常升级内核,甚至可以选择一个经过修改优化的内核,这样就可以在一套硬件上运行尽可能多的虚拟机。

关于如何理解Linux中Xen的奇异架构问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解Linux中Xen的奇异架构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何理解Linux中Xen的奇异架构

如何理解Linux中Xen的奇异架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  这一篇我要体验的虚拟机系统是Xen。在虚拟机领域,Xen具有非常高的知名度,其名字经常
2023-06-13

如何解析Linux系统架构中的内核

如何解析Linux系统架构中的内核,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述Linux系统一般有4个主要部分组成,内核、shell、文件系统和应用程序。内核、shell
2023-06-16

如何理解SAP Kyma的架构

如何理解SAP Kyma的架构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SAP kyma主要分三大块组成:(1) 应用程序连接器简化并安全地将外部系统连接到
2023-06-04

如何理解FACEBOOK的系统架构

本篇文章为大家展示了FACEBOOK 的系统架构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Web 前端是由 PHP 写的。Facebook 的 HipHop 会把PHP转成 C++ 并用 g++
2023-06-05

如何理解Netflix的信息处理架构

本篇内容介绍了“如何理解Netflix的信息处理架构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Netflix是一家在线影片租赁提供商,该
2023-06-10

linux如何显示机器的处理器架构

本指南详细介绍了如何获取Linux机器处理器的架构,以及该信息的用途。使用uname-a命令可轻松查看架构(例如x86_64),这对于选择兼容软件、优化应用程序、诊断问题和确定升级需求至关重要。文章还提供了其他获取架构的方法,包括/proc/cpuinfo文件、sysctl命令和dmidecode命令。最后强调了处理器架构随时间变化,并在虚拟化环境中的相关性。
linux如何显示机器的处理器架构
2024-04-02

如何理解Java常见知识点中的Jvm架构

如何理解Java常见知识点中的Jvm架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种
2023-06-05

如何理解Linux内核及其相关架构的依赖关系

这篇文章主要介绍“如何理解Linux内核及其相关架构的依赖关系”,在日常操作中,相信很多人在如何理解Linux内核及其相关架构的依赖关系问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Linux内核及其
2023-06-12

深入理解Linux exit函数在异常处理框架中的作用

exit() 函数是 Linux C 库中的一个标准函数,用于正常终止程序的执行在异常处理框架中,exit() 函数通常与信号处理和进程间通信(IPC)机制结合使用。当程序遇到无法处理的错误或异常时,可以发送一个信号来通知其他进程或线程。
深入理解Linux exit函数在异常处理框架中的作用
2024-08-29

如何理解Amazon的网站数据存储架构

这篇文章主要讲解了“如何理解Amazon的网站数据存储架构”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Amazon的网站数据存储架构”吧!一、系统概述1、Amazon平台概述
2023-06-10

如何理解Spring Cloud和Docker的微服务架构

如何理解Spring Cloud和Docker的微服务架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  Spring Cloud和Docker的微服务架构  功能服务
2023-06-04

如何理解spring框架中的ioc

这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Co
2023-06-17

如何理解linux中的lvm

这篇文章给大家介绍如何理解linux中的lvm,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。[root@ndb ~]# df -hFilesystem Size Used Avail Use%
2023-06-05

如何理解Tungsten Fabric架构以及vRouter的部署选项

本篇文章为大家展示了如何理解Tungsten Fabric架构以及vRouter的部署选项,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Tungsten Fabric项目是一个开源项目协议,它基于标
2023-06-03

编程热搜

目录