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

article/2025/9/11 6:29:02

转载于https://www.cnblogs.com/youxia/p/linux022.html#_label0

 

阅读目录

  • 总结:

这一篇我要体验的虚拟机系统是 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的架构如下图:

从图中可以看出,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 xen
sudo aptitude install xen-hypervisor-4.4-amd64

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

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

前面提到 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”的虚拟机。运行效果如下图:

关于 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 下虚拟机相关的内容,就写到这里吧。欢迎大家批评指正。


http://chatgpt.dhexx.cn/article/cmlGfTk2.shtml

相关文章

xen基础

xen结构概述 一个 Xen 虚拟化环境包括一组项目,它们一起工作来提供虚拟化环境:Xen hypervisor;dom0;domain management and control,域的管理和控制;domU PV 客户机;domU HVM 客户机。 它们之间…

Xen 简介

---------------------------------同样来自 IBM ------------------------------------ Xen 是一种类型 1 虚拟机管理程序,它创建系统资源的逻辑池,使许多虚拟机可共享相同的物理资源。 Xen 是一个直接在系统硬件上运行的虚拟机管理程序。Xen 在系统硬…

全面详解Python与Ruby,到底哪款更优秀

今天,我和大家讨论一下是Python开发语言web好还是Ruby开发语言web好,有需要的小伙伴,可以参考一下。对这方面有自己见解的大神,可以交流一下。希望大家可以认真阅读哦! Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 …

Ruby入门级示例代码

【实例简介】 针对入门级的新手参考 【实例截图】 目录结构&#xff1a; 文件&#xff1a;590m.com/f/25127180-494436327-f5ef7f&#xff08;访问密码&#xff1a;551685&#xff09; 【核心代码】class ItemController < ApplicationControllerscaffold :itemdef creat…

Ruby基础教程(Day1)—— Ruby初探

前提&#xff1a;自行安装ruby 一、Ruby初探 最常见的方法是使用ruby命令执行&#xff08;在helloruby.rb中输入print("Hello,Ruby.\n")&#xff09; 在命令行输入ruby helloruby.rb irb命令&#xff0c;以交互命令行方式来执行 在控制台执行irb如下图所示 对象 …

RubyPloticus

原文&#xff1a; RubyPloticus ruby 2006年6月19日 Bliki 索引 译注&#xff1a;代码和生成的图片示例可从这里下载。 在最近的帖子“ 评估Ruby”中&#xff0c;我提到一位同事曾在一个Web应用中加入了一些漂亮的数据图表&#xff0c;有人email问我是…

Ruby(一)

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言&#xff0c;可运行于多种平台&#xff0c;如 Windows、MAC OS 和 UNIX 的各种版本。Ruby流行起来的根本原因是因为基于Ruby的Web开发框架Rails的广泛使。 1、ruby环境 windows&#xff1a;Downloads (rubyinstaller.org…

Python 和 Ruby 的对比

&#xff08;点击上方公众号&#xff0c;可快速关注&#xff09; 来源&#xff1a;js信仰者 segmentfault.com/a/1190000010756033 如有好文章投稿&#xff0c;请点击 → 这里了解详情 最近在考虑学习一门后端语言&#xff0c;在ruby和python直接犹豫&#xff0c;然后自己做了…

【Python】Pyyaml和ruamel.yaml

目录 PYYAML 读取yaml 保存yaml 读取保存的yaml文件 yaml文件规则 yaml文件数据结构 ruamel.yaml 格式化保存yaml 使用ruamel.yaml读取yaml 使用ruamel.yaml时python中符号对应于yaml中符号 PYYAML config.yaml文件 username: zxx age: 18 orther:height: 175CMwei…

Ruby教程(基础篇)

1. Print和puts的区别 puts输出内容独立成行、自动换行&#xff0c;而print会把输出的内容打印在同一行。 2. 变量和常量 character_name "Kevin" #variable name变量character_age "21"puts ("name:" character_name)puts (character_a…

Ruby语言简介

Ruby是一种解释型、面向对象、动态类型的语言。Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点。随着Rails框架的出现&#xff0c;Ruby也在2006年前后一鸣惊人&#xff0c;同时也指引人们重新找回编程乐趣。尽管从执行速度上说&#xff0c;Ruby谈不上有多高效&#xff0c…

Ruby基本介绍

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言&#xff0c;在 20 世纪 90 年代中期由日本的松本行弘&#xff08;まつもとゆきひろ/Yukihiro Matsumoto&#xff09;设计并开发。在 Ruby 社区&#xff0c;松本也被称为马茨&#xff08;Matz&#xff09;。Ruby 可运行于多…

字典生成----在线密码破解工具hydra和medusa的使用

大家好&#xff0c;我是SuieKa。 本次主要稍微详细分析一下字典的生成和在线密码破解工具hydra和medusa及使用案例&#xff0c;希望对大家学习上有帮助&#xff01; 目录表 一、常见字典生成工具及使用方法1、字典生成工具crunch2、cupp自定义字典3、cewl-根据网站信息生成字典…

入侵AI Medusa 的赛博之海,诚邀#光点2022

未来性 | 突破性 | 跨领域 TEA 新媒体社区发起光点国际新媒体艺术节已经迈入第五年&#xff0c;每年推出的活动板块具前瞻视野&#xff0c;深受赞誉&#xff0c;感谢大家的支持和厚爱。 光点2022国际新媒体艺术节组委会通过 TEA 新媒体社区的力量&#xff0c;打造全球化、合作式…

Medusa学习Medusa参数使用

Medusa学习&&Medusa参数使用 文章目录 Medusa学习&&Medusa参数使用一、Medusa学习二、Medusa参数使用三、我的公众号 一、Medusa学习 Medusa(美杜莎)是一个速度快&#xff0c;支持大规模并行&#xff0c;模块化的爆力破解工具。可以同时对多个主机&#xff0c;…

Medusa和Hydra快速入门手册

Hydra入门使用手册 vanHauser TheHackersChoice http://www.thc.org/thc-hydra 目录 什么是Hydra&#xff1f; Hydra-GTK 如何安装 如何使用Hydra&#xff1f; 参考文档 爆破实例 免责说明 联系我们 防范措施 什么是Hydra&#xff1f; 一个非常快速的网络登录破解程序&#xff…

【kali-密码攻击】(5.1.2)密码在线破解:Medusa

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

Kali 暴力破解--medusa/hydra/xhydra

目录 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 环境 Kali Centos7(192.168.0.…

密码爆破工具:Medusa(美杜莎)-操作说明

科普下: Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (AUTH/VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC的密码爆破工具。 最近搞一个项目,需要爆破postgres这个数据库的…

新增X-Helios、X-Medusa算法研究

纯属技术研究&#xff0c;如有侵权&#xff0c;请联系删除 抓个包&#xff0c;在抖音最新的23.7.0版本中&#xff0c;已经新增加了2个参数x-helios&#xff0c;x-medusa 进去解开看了一下,解开得内容和argus得内容相差并不是很大.第一个pb参数从四字节数变成了一段字节串,其他…