xen架构

article/2025/9/11 6:31:56

Xen是一个虚拟机监视器(Virtual machine monitor),针对X86系列计算机设计,它能够支持多个客户计算机的同时运行,并且能够达到较好的一个性能水平和资源隔离。Xen是一个开放源代码软件,在GNU General Public License 下发布。

基本功能:

Xen通过对Linux,NetBSD和Solaris内核进行一些简单修改,来提高系统虚拟化后的性能,经过修改后的内核就是Linux With Xen的一个操作系统,可以直接作为一个操作系统来使用,也就是说Xen是直接运行于硬件之上的一个操作系统(Xen技术中所称的domain 0(dom0)),其他的被虚拟化的操作系统(domainU)运行于硬件之上的第二层(第一层是Xen-Linux,第二层就是客户操作系统)。

可以被虚拟化的操作系统包括UNIX-like系列(经过修改可以作为客户操作系统),对于Microsoft Windows操作系统可以不经修改运行于Xen V3.0以上的版本,但是需要CPU支持IntelVT技术或者AMDV技术。

技术特点:

       半虚拟化(Paravirtualization)或叫做超虚拟化技术,该技术需要客户操作系统做一些修改。这种技术意味着客户操作系统被修改之后,使用特殊的系统调用ABI,而不是调用原有的接口。通过这种超虚拟化技术,Xen能够达到高性能。

       在硬件支持的情况下,允许不经修改的客户操作系统运行。Intel的VT技术和AMD的V技术。

可控性:

功能特点:

虚拟机的性能更接近真实硬件环境)

在真实物理环境的平台和虚拟平台间自由切换)

在每个客户虚拟机支持到 32个虚拟CPU,通过 VCPU热插拔)

支持PAE指令集的x86/32, x86/64平台

通过Intel 虚拟支持VT的支持来用虚拟原始操作系统(未经修改的)支持(包括Microsoft Windows)

优秀的硬件支持.支持几乎所有的Linux设备驱动

应用范围:

服务器整合:在虚拟机范围内,在一台物理主机上安装多个服务器, 用于演示及故障隔绝;

无硬件依赖:允许应用程序和操作系统对新硬件的移值测试;

多操作系统配置:以开发和测试为目的,同时运行多个操作系统;

内核开发:在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一台独立的机器;

集群运算:和单独的管理每个物理主机相比较,在VM级管理更加灵活,在负载均衡方面,更易于控制,和隔离;

为客户操作系统提供硬件技术支持:可以开发新的操作系统, 以得益于现存操作系统的广泛硬件支持,比如Linux;

局限:

是否开源:

       是

备注:

       在http://jailtime.org/这个网站上提供了很多Linux操作系统的压缩包,可以直接下载用于Xen的虚拟操作,这些压缩包中已经添加了内核和一些基本的软件包。

       在Linux发行版Ubuntu8.10Server版中,最新加入了关于虚拟化技术,可以通过VM-Builder来很迅速的建立一个虚拟环境。

       如果使用Intel的VT技术的CPU,Xen可以虚拟不经任何修改的操作系统,例如Windows。


 

 

Xen VMM是一个剑桥大学的开源项目,它可以创建多个虚拟机。这些虚拟的客户操作系统是一个修改过的Linux kernel,2.4或者2.6,或者是一个修改过的NetBSD,FreeBSD。运行于其上的应用程序保持原样,不需要改变就可用。Sun公司同样也正在开始基于Xen的项目--Solaris-on-Xen port.。

全虚拟化是通过一些硬件模拟器,这其中的一个最为流行的开源项目就是Bochs IA-32 Emulator。另一个就是qemu.。而对于硬件模拟器的一个明显的劣势就是它们的性能。

Xen项目(半虚拟化)所依赖的思想并不是新的。它可以达到较高的性能。但是通过处理器的支持,Xen可以不对操作系统进行修改就虚拟化。例如:intel的VT技术以及AMD的Pacifica处理器。

2005年8月,XenSource,一个开发基于Xen的虚拟化解决方案的商业公司,对外宣布,利用Intel的VT技术已经可以对windows进行虚拟化。

在这个领域中,Vmware是一个商业公司开发ESX Server,但是它并没有基于Xen项目进行开发。Vmware在2005年的8月宣称它将开放它的ESX Server的源代码,VMware Community Source

一个Vmware明显的有点就是它并不需要对于客户操作系统进行修改。VMWare的解决方案大概会比Xen慢一些,因为它使用影子页表,然而Xen使用的是直接和影子页表。

Xen同样对Intel的新技术IA-64留有开发接口,对于其他类型处理器的支持正在开发过程中。

 

 

1.       Xen采用由IBM VM/370发起的“whole machine”虚拟化技术,但是做了一定的修改,Xen并没有完全的将底层机器进行虚拟化,而只是将客户计算机进行部分的修改来与Xen的核心管理部件进行交互,因为将一个操作系统移植到一个新的硬件平台只需要修改的是依赖于硬件的代码,其用户级的API是不需要变化的。

除过导出虚拟化的CPU,内存,网络以及块设备,Xen还向外暴露一组控制接口,这些接口控制这些虚拟化过的资源是如何在不同的运行操作系统直接分配的。这组控制接口严格限制在特定的domain下,既dom0也就是Xen本身。

2.       虚拟架构:

在一个Xen/x86系统中,只有hypervisor超级管理程序运行在最高特权级(ring 0)。它能够操作物理内存,负责对各个客户操作系统分配内存。

在一个32位的x86系统中,客户操作系统使用ring 1,ring 2 或者ring 3。这些分配严格限制了客户操作系统可能访问到Xen的地址空间。期望的是大多数的客户操作系统都能够运行在ring1下,而将其应用程序运行在ring 3下。

在64位的操作系统下,不可能将超级管理程序与不可信的运行在ring1和ring2下的客户代码相隔离。所以客户操作只能被严格限制运行在ring3下。而客户操作系统的核心是通过上下文转换来与用户应用程序隔离的。




该文档对Xen Hypervisor(管理程序)和其相关的工具以及所有支撑一个虚拟化环境所必需的应用程序做了一个较高层的,对于架构的综述。

Xen Components

一个Xen虚拟环境包括几个重要组成部分:

Xen Hypervisor

Domain 0

Domain Management and Control(Xen DM&C)

Domain U(Dom U)PV Guest

Domain U(Dom U)HVM Guest

下图描述了这几部分之间的关系:



 Xen Hypervisor

Xen hypervisor是对这个软件的最基本、最底层的抽象层。它主要负责针对运行在该硬件设备之上的多个虚拟机的CPU轮转,内存划分的工作。Hypervisor不仅仅对底层硬件设备进行了抽象,而且同时控制着虚拟机的执行。它不负责联网、外存、显示以及任何其他IO功能。

Domain 0

Domain 0是一个修改过的Linxu kernel,一个运行在Xen hypervisor之上的独特的虚拟机,它可以控制物理IO资源,并且同时与其他运行于该平台上的虚拟机进行交互(Domain U:PV and HVM Guests)。所有的Xen虚拟环境都需要一个运行着的Domain 0来启动其他的虚拟机。

Domain 0包括了两个驱动,来支持来自于其他虚拟机的网络和本地磁盘请求。(见下图);Network Backend Driver和Block Backend Driver。NB Driver直接与本地网络硬件进行交互,来处理所有来自于Domain U的虚拟机请求。BB Driver直接与本地磁盘进行交互,基于Domain U的请求来从驱动器读写数据。



 Domain U

所有的运行于Xen hypervisor之上的半虚拟机(Paravirtualization),都叫做Domain U PV Guests,他们(PV Guests)运行的是修改后的Linux OS,Solaris, FreeBSD和其他UNIX OS。所有运行于Xen hypervisor之上的全虚拟机都是叫做Domain U HVM Guests,并且可以运行标准的Windows或者任何没有修改过的操作系统。

Domain U PV Guests知道不能直接访问硬件,并且知道在本地机器上运行的其他虚拟机。Domain U HVM Guests不知道它在分享处理器时间以及其他虚拟机的存在。

PV Guest包含有两个针对网络和磁盘访问的驱动,PV Network Driver和PV Block Driver



 HVM Guest没有PV驱动安装在虚拟机上,但是针对每一个启动的HVM Guest都有一个特殊的daemon---- Qemu-dm。Qemu-dm支持HVM Guests进行网络互联和磁盘访问请求。

HVM Guests必须初始化,以便于软件能够添加到HVM Guests,Xen Virtual firmware来模拟BIOS来启动操作系统。(??The Domain U HVM Guest must initialize as it would on a typical machine so software is added to the Domain U HVM Guest,Xen virtual firmware, to simulate the BIOS an operating system would expect on startup.)。



 域管理和控制

很多的Linux daemons都被开源社区定义为域管理和控制的。这些服务支持对整个虚拟环境的管理和控制,存在于Domain 0的虚拟机中。

Xend

Xend daemon是一个python程序,它被认为是Xen环境的系统管理员。它利用libxenctrl库来发起对Xen hypervisor的请求。所有由Xend所处理的请求都是通过一个XML RPC接口,这些RPC请求来自于Xm工具。



 

Xm

一个命令行工具,它获取用户输入,通过XML RPC传递给Xend。

Xenstored

Xenstored daemon 维护一个注册信息,这些信息包括了内存和事件管道(event channel),其将Domain 0 与所有其他的Domain U连接起来。Domain 0 虚拟机利用这个注册信息来设置与其他虚拟机的通信管道。

Libxenctrl

Libxenctrl是一个C函数库,它提供给Xend与Xen hypervisor进行交互的能力,通过Domain 0.在Domain 0 中的一个特殊驱动,privcmd将这些请求发送给hypervisor。

 

  

 Qemu-dm

每一个HVM Guest都需要一个Qemu daemon。这个工具处理所有从HVM Guest发出的联网和磁盘请求。Qemu必须存在于Xen hypervisor的外面,因为它需要访问网络和IO,因此它存在于Domain 0。

Xen Virtual Firmware

Xen Virtual Firmware是一个虚拟的BIOS,它被插入到每一个Domain U HVM Guest中,来确保操作系统收到所有标准的启动指令。

Xen Operation

Domain 0 与Domain U交互

Xen hypervisor是不支持网络或者平请求的,因此一个Domain U PV Guest必须通过xen hypervisor与Domain 0通信来完成一个网络或磁盘请求。

下图中的事件管道是Domain 0 和Domain U之间的一个直接连接。事实上,事件管道贯穿Xen hypervisor,并且已经在Xenstored注册了具体的中断,允许Domain 0 和Domain U的PV Guest通过本地内存快速的共享信息。



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

相关文章

Xen概述

http://my.oschina.net/davehe/blog/94039 1 Xen概述 1.1 简介 Xen是由剑桥大学计算机实验室开发的一个开源项目。是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS&#xff…

KVM和Xen虚拟化有什么区别?Xen和KVM优缺点对比

KVM和Xen是两大虚拟化技术,KVM和Xen又是免费开源的管理程序,新手站长网分享虚拟化技术KVM和Xen的区别优势对比: KVM和Xen的区别 KVM:KVM是轻量级的虚拟化管理程序模块,该模块主要来自Linux内核;KVM的虚拟…

Xen与XenServer的区别

说到XenServer,总是离不开Xen,所以我要说他们的区别,得首先从Xen开始说起! Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) 位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件…

xen的安装

一、 Xen介绍 : 在虚拟化软件的部份,可分为VMWare、Xen、KVM、VritualBox是较为常见的。在Xen这到自由软件上主要可分为半虚拟化(Para-virtualization) 及全虚拟化 (Full virtualization) 两种,其中半虚拟化主要是透过修改 Linux 核心来达成的虚拟技术。…

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

转载于https://www.cnblogs.com/youxia/p/linux022.html#_label0 阅读目录 总结: 这一篇我要体验的虚拟机系统是 Xen。在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现。同时 Xen 也具有非常高的难度,别说玩转…

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;…