`
happmaoo
  • 浏览: 4601656 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

深入学习Xen新起点 全面介绍Xen虚拟机

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>
Xen VMM(virtual machine monitor)是由剑桥大学计算机实验室开发的一个开源项目,它能够让我们创建更多的虚拟机,每一个虚拟机都是运行在同一个操作系统上的实例。
  这些客户OS可以是修补过的Linux内核2.4或2.6,也可以是修补过的NetBSD/FreeBSD内核。用户应用程序就运行在这些客户OS上,并不需要修改任何代码。
  我曾经紧密跟踪Xen项目一年多。对Xen产生兴趣是在读了2004年的OLS(Ottawa Linux Symposium)论文集之后。
  完全虚拟化已经被一些硬件仿真程序实现了。硬件仿真器的不利因素是它们的性能。
  Xen项目(半虚拟化)的思想已经不是很新鲜了。性能度量和它达到的高效性,能够被看作是一个突破,运行Xen的系统开销确实非常小,大约占3%。
  就像刚才所说的那样,现在的Xen要为内核打补丁,但是,将来的处理器能支持虚拟化,内核也就不需要打补丁了。比如说,Intel的VT和AMD的Pacifica处理器都将包括这种支持。
  XenSource公司2005年8月在Intel开发者论坛(IDF)上发表声明说,它已经利用Intel的VT-Enabled平台和Xen技术虚拟化了Linux和Windows XP SP 2。
  如果没有其它虚拟化方法的话,Intel的VT和AMD的Pacifica将会在对Xen的支持上展开竞争。
  同时参与竞争的还有VMWare公司的ESX Server,它不是基于Xen的虚拟化解决方案。VMWare公司2005年8月初声明,他将通过一个叫VMware Community Source的计划允许他的合作伙伴使用VMware ESX Server的源代码和接口。
VMware的一个显著优势就是它不需要在客户OS上打补丁。VMware可能比Xen运行地慢一些,因为它使用影子页表(shadow page tables),而Xen同时使用直接和影子页表。
  Xen已经在像Fedora Core 4、Debian和SuSE Professional 9.3这些产品中捆绑发行了,它也将被包含在RHEL 5中。
  针对其它处理器的支持正在有条不紊地进行着。Xen小组致力于x86_64 port,同时IBM着手于提供Power 5芯片的支持。

保护环
  在Xen中,一个“系统管理程序”运行在0环,客户OS运行在1环,应用程序运行在3环。这种关系对于x64/64有一点不同,就是客户内核和应用程序都运行在3环上。
  Xen自身被称为“系统管理程序”,是因为它比客户OS的系统管理代码运行所需的特权级还高。
  当系统引导的时候,Xen被装载到0环的内存中。它在1环上启动修补过的内核,这被称作是domain 0(译者注:domain是指一个运行中的虚拟机,在其上有一个guest OS在执行)。从这个domain开始,你可以创建更多的domain,也可以销毁它们,可以进行domain的迁移、设置参数等等。你创建的那些domain也运行在1环它们的内核中。用户应用程序运行在3环。
目前,修补过的Linux内核2.4和2.6可以作为domain 0。据Xen开发者所说,将来domain 0仅支持2.6的内核补丁。构造domain 0的大部分工作是在xen/arch/x86/domain_build.c中的construct_dom0()方法中实现的。
  物理设备驱动程序只能运行在特权级,也就是domain 0上。Xen依靠Linux或其它修补过的OS内核对它所有的设备提供虚拟化支持。这样的好处就是Xen的开发者不必再去开发设备驱动程序。
  在一个有标签TLB的处理器上使用Xen能够大大提高性能。标签TLB能够把ASID(address space identifier)放在TLB入口处。有了这个特性,当处理器在系统管理程序和客户OS之间切换时就不需要刷新TLB了,这大大减少了系统开销。
Xend Deamon
  首先,我们介绍一下Xend,它是Xen控制器daemon,意思是说它负责处理创建、销毁、迁移以及其它许多domain管理的任务。它很大一部分动作是基于一个HTTP服务器的。大量对domain的控制请求都是通过发送HTTP请求来实现的。
  我们在引导进入Xen后通过命令行命令xend start来启动Xend daemon。它需要Python2.3的支持。
  Xend daemon的工作是建立在与XCS server(the control Switch)的交互上。所以,当我们启动Xend daemon时,需要检查一下XCS是否已经启动和运行了。如果没有,我们将试着去启动它。
  Srv Daemon是Xend的主要程序,启动Xend daemon就会创建一个Srv Daemon类的实例。
  接下来在createFactories()方法中创建一个Channel Factory。Channel Factory有一个隐含的notifier对象。Xend daemon的大量工作都是基于这个notifier接收的消息的。这个factory创建一个线程,在一个无限循环中读取这个notifier。

创建domain
  创建一个domain是通过使用一个hypercall(DOM0_CREATEDOMAIN)来完成的。Hypercall是Linux内核中的一个系统调用,通过它,用户空间可以调用内核中的方法,它通过一个中断(Int 0x80)来完成。在Xen中,类似的系统调用就是hypervisor,通过它,domain 0 调用hypervisor中的方法,它也是通过中断(Int 0x82)来完成的。hypervisor通过它的虚拟CPU访问每一个domain。
  XendDomain类和XendDomainInfo类在创建和销毁domain中扮演着非常重要的角色。我们通过调用XendDomain中的domain_create()方法创建一个新的domain。
  XendDomainInfo类和它的方法主要用于一个domain的实际构造。
XCS Server
  XCS server有两个TCP套接字,分别是控制连接和数据连接,它们不同的地方在于前者是同步的,后者是异步的。前面提到的notifier对象,就是XCS服务器的一个客户端。

创建虚拟设备
  XendDomainInfo中的create()方法启动一个创建domain的动作链。首先被创建的是这个domain的虚拟设备。这个create()方法调用create_blkif()创建一个块设备接口(blkif),即使VM不需要磁盘它也是必须被创建的。另一个虚拟设备通过create_configured_devices()创建。
 所有的设备类都从Dev继承,Dev是一个联系设备控制器的抽象类。它的attach()抽象方法在每一个Dev类的子类中实现,这个方法把前端和后端联系了起来。图2展示了设备的层次。
Domain 0运行后端驱动,同时最新创建domain运行前端驱动。许多消息在后端和前端驱动之间传送。前端驱动感觉上是虚拟的,它不需要使用特定硬件的详细信息。
  联系虚拟设备的中断是虚拟中断。

结论
  Xen项目是一个很有趣同时充满了希望的项目。它的代码很复杂,特别是虚拟内存管理、活动域合并工具和授权表机制。本文仅仅是介绍性的,并不涉及这些话题。然而,我希望它能够成为想要了解和深入研究代码的一个出发点。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1373415


分享到:
评论

相关推荐

    c语言监控xen虚拟机

    本文将深入探讨如何利用C语言获取Xen虚拟机的相关信息,包括存储池状态、虚拟机状态、CPU信息、CPU利用率、内存以及网络信息。 首先,要与Xen进行交互,我们需要使用Xen的公共控制接口(XenAPI),这是一个基于XML-...

    xen虚拟机迁移技术

    xen虚拟机 xen虚拟机在线迁移详细介绍及应用

    xen虚拟机调用usb设备

    本文将详细介绍如何在Xen虚拟机中实现USB设备的Pass-through(透传),并提供具体的步骤和注意事项。 #### 二、基础知识 在深入了解具体操作之前,我们首先需要了解一些基础知识: 1. **Xen虚拟化平台**:Xen是一...

    Xen虚拟机企业版.xenenterprise_license.

    根据提供的文件信息,我们可以深入探讨Xen虚拟机企业版的相关知识点。主要涵盖Xen虚拟机技术的基本概念、Xen虚拟机企业版的功能特性以及如何理解并应用提供的license信息等内容。 ### Xen虚拟机技术概述 Xen是一种...

    Xen虚拟机配置与应用

    xen虚拟机概述 xen的配置安装方法 xen服务设置 虚拟系统安装树

    Xen虚拟机的一些常用操作.pdf

    ### Xen虚拟机的基础操作与管理 #### 一、Xen虚拟化技术概览 Xen是一种开源的虚拟机监视器,由XenSource公司(现为Citrix Systems的一部分)开发,用于实现对多个计算系统的虚拟化。Xen支持全虚拟化、半虚拟化以及...

    Xen虚拟机cpu检测工具

    本文将深入探讨“Xen虚拟机CPU检测工具”,帮助管理员更好地理解和监控其Linux系统下的Xen环境。 首先,我们要理解Xen虚拟化平台。Xen是一款基于类型一(或称为裸金属) hypervisor 的虚拟化解决方案,它直接运行在...

    CentOS Linux 6.2 64位版安装调试Xen虚拟机指南

    在本指南中,我们将深入探讨如何在 CentOS Linux 6.2 64位系统上安装和调试Xen虚拟机。Xen是一款开源的虚拟化平台,它允许在一个物理服务器上运行多个独立的操作系统实例,提高了硬件资源的利用率并简化了管理。 ...

    Xen-4.0.1虚拟机API接口

    Xen API是一组全面的远程调用(RPC)接口,通过这些接口,管理员或开发者可以远程控制Xen Hypervisor。API包括一系列的函数调用,涵盖了虚拟机生命周期的各个阶段,如启动、停止、迁移、配置参数修改等。Xen API的...

    Xen server 虚拟机 迁移到 VMware esxi

    在这篇文章中,我们将详细介绍如何使用 VMware Converter 工具迁移 Xen Server 虚拟机,并且对迁移后的虚拟机进行必要的配置和设置,以便在 VMware ESXi 平台上顺利运行。 第一部分:使用 VMware Converter 迁移 ...

    虚拟机xen权威资料集合

    这些资料旨在为学习和研究Xen虚拟化技术的人员提供详实、全面的参考资料。 Xen是一种开源的全虚拟化解决方案,它允许在一个物理主机上运行多个操作系统实例,每个实例被称为一个域(Domain)。Xen的设计目标是提供...

    基于Xen虚拟机实现Apache tomcat 集群搭建

    1. Xen虚拟机技术:Xen是一个开源的虚拟机监视器,允许用户在同一台物理主机上运行多个虚拟机,每个虚拟机可以运行不同的操作系统。Xen具有高性能和高扩展性的特点,适用于构建云服务平台和服务器集群。 2. Linux...

    ubuntu10.04安装xen虚拟机

    Ubuntu 10.04 安装 Xen 虚拟机 Xen 是一个开源的虚拟机监视器,可以在多种操作系统上运行。安装 Xen 虚拟机可以让我们在 Ubuntu 10.04 上运行多个虚拟机,从而提高系统的灵活性和可靠性。本文将指导您如何在 ...

    Ubuntu_12.04上安装基于Xen的虚拟机.pdf

    Ubuntu 12.04操作系统环境下安装基于Xen的虚拟机涉及到一系列的具体操作步骤和对Xen及其管理工具的深入了解。以下是根据文件中的信息整理出的详细知识点。 ### 安装前的准备工作 1. **软件包和补丁程序安装**:在...

    xen配置必备,xen开源虚拟机配置文档xl_cfg 中文

    通过学习xl_cfg文件,我们可以更好地理解Xen虚拟机的配置和使用。 xl_cfg文件语法 xl_cfg文件是由一系列的KEY=VALUE对构成的,其中有些KEY是强制的,有些则是对所有虚拟机都适用,而还有一部分只适用于特定类型的...

    虚拟机xen体系结构分析.pdf

    《虚拟机Xen体系结构分析》 Xen是一款开源的虚拟化平台,广泛应用于云计算环境,为用户提供高效、可靠的虚拟化解决方案。...通过深入学习和实践,我们可以更好地利用Xen来构建和优化云计算基础设施。

    虚拟机Xen网络配置及原理

    Xen 虚拟机网络配置及原理 Xen 是一款开源的虚拟机监视器(Hypervisor),它可以在一台物理机上同时运行多个操作系统(OS),从而提高服务器的利用率和性能。在服务器虚拟化方面,Xen 是一款常用的虚拟机监视器,...

    xen虚拟化实战

    总的来说,《Xen虚拟化实战》是一本全面而深入的指南,不仅适合初学者入门,也对有经验的IT专业人士有价值,他们可以从中获取提高虚拟化基础设施效率和可靠性的实用技巧。通过阅读这本书,读者将能够熟练地运用Xen...

    Xen3.0虚拟机入门

    ### Xen 3.0 虚拟机入门详解 #### Xen简介 Xen是一款由剑桥大学开发并开源的虚拟机软件,首次发布版本为Xen Release 1.0,时间为2003年10月。Xen以其卓越的性能和广泛的适用性而在虚拟化领域占据了一席之地。它...

    Ubuntu10.04安装xen虚拟机

    在本文中,我们将详细介绍如何在 Ubuntu 10.04 系统上安装 Xen 虚拟机的过程。Xen 是一个开放源码的虚拟机监控程序,它能够在同一台物理服务器上运行多个操作系统实例,每个实例都拥有独立的硬件资源,如同它们各自...

Global site tag (gtag.js) - Google Analytics