Ubuntu java 开源 微软 mysql Firefox HTML5 google nginx linux命令 shell centos linux apache wordpress Android php 程序员 Python Windows

Xen的起源与工作原理概述

如今,虚拟化市场上满是各种不同的虚拟化解决方案。多年以来,VMware一直控制着基于i386的虚拟化市场。然而,现在的开源解决方案Xen也在迅速地扩张自己的市场。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将介绍什么是Xen、它如何工作以及Xen如何与其它虚拟化解决方案一争高下。

要理解Xen的虚拟化方法,首先你必须了解什么是虚拟化。在计算时代早期,虚拟化并不存在。那时,使用的是模拟(Emulation)。在模拟技术中,软件程序模拟了计算机(硬件和软件)的行为。模拟层与操作系统对话,而操作系统与计算机硬件对话。在模拟层中安装的操作系统并不知道自己是被安装在模拟环境下的,你可以按照常规的方法安装操作系统。市场上有两大开源的模拟器:QEMU和Bochs。

模拟技术最重要的特点之一是所有硬件都是模拟的,包括CPU。此外,还能在自己的架构中运行为其它架构开发的操作系统。不过,它也有一个缺点:虚拟完整的CPU要付出很大的性能代价。

在下一代中,虚拟化被带到了一个更高的级别。在模拟层(负责被虚拟机器的指令翻译)和硬件之间,不需要任何主机操作系统运行硬件上的虚拟机。虚拟机监控器(也称hypervisor或管理程序)被直接放在硬件之上运行。有了这种新型架构之后,虚拟化变得更加高效。例如,VMware在VMware ESX中应用了该架构,取得了巨大的成功。

在基于hypervisor的虚拟化中,有两种实现方法。第一种,虚拟机器产生的所有指令都需要被翻译成CPU能识别的指令格式,这会给hypervisor带来大量的工作负荷。另一种方法(VMware ESX Server采用的就是这种方法)直接执行大部分子机CPU指令,直接在主机物理CPU中运行指令,性能负担很小。

在Xen使用的方法中,没有指令翻译。这是通过两种方法之一实现的。第一,使用一个能理解和翻译虚拟操作系统发出的未修改指令的CPU(此方法称作完全虚拟化或full virtualization)。另一种,修改操作系统,从而使它发出的指令最优化,便于在虚拟化环境中执行(此方法称作准虚拟化或paravirtualization)。

完全虚拟化与准虚拟化

完全虚拟化(full virtualization)是虚拟一台机器的一种方法。在此方法中,虚拟机与一个叫做虚拟机监控器(VMM)的部件进行通信,而VMM则与硬件平台进行通信。要在Xen中利用完全虚拟化方法,需要一个特殊的CPU,此CPU能理解虚拟操作系统发出的未修改指令。如果没有这样的特殊CPU功能,是不可能在Xen中使用完全虚拟化的。这是因为,在Xen方法中不是每条虚拟操作系统发出的指令都可以被翻译为每个CPU都能识别的格式,因为这非常耗费资源。完全虚拟化的主要优势在于,它安装了一个未修改的操作系统,这意味着运行于同样架构的所有操作系统都可以被虚拟化。

效率最高的虚拟化方法是准虚拟化(paravirtualization)。在准虚拟化中,子操作系统使用一个专门的API与VMM通信,VMM则负责处理虚拟化请求,并将这些请求递交到硬件上。由于有了这个特殊的API,VMM不需去做耗费资源的指令翻译工作。而且,使用准虚拟化API时,虚拟操作系统能够发出更有效的指令。然而,准虚拟化也有一个缺点,就是需要修改包含这个特殊API的操作系统。而且,这个缺点对于某些操作系统(主要是Windows)来说更要命,因为它们没有这种API。

现在,准虚拟化是获得最佳性能的方法,因为虚拟操作系统发出的指令不需要翻译。遗憾的是,在某些操作系统中不能完全使用准虚拟化,因为它需要一个特殊版本的操作系统。在这样环境下,为了确保高性能,可以准虚拟化个别的设备。这意味着,可以通过硬件虚拟化来处理某些指令(如,CPU发出的指令)。不过,有些特殊设备发出的指令(如,network board或graphical interface card)在离开虚拟机之前可以通过准虚拟化驱动被修改。有些厂商提供专门操作系统的准虚拟化驱动包,这些驱动包经常可以单独购买。通常,这些专门的驱动包都物有所值,能够大大地提高设备性能,如网板(network board)和硬盘。

Xen虚拟化方法

在Xen环境中,主要有两个组成部分。一个是虚拟机监控器(VMM),也叫hypervisor。Hypervisor层在硬件与虚拟机之间,是必须最先载入到硬件的第一层。Hypervisor载入后,就可以部署虚拟机了。在Xen中,虚拟机叫做“domain”。在这些虚拟机中,其中一个扮演着很重要的角色,就是domain0,具有很高的特权。通常,在任何虚拟机之前安装的操作系统才有这种特权。

Domain0要负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(Xen术语叫domainU)。这些domainU也叫无特权domain。这是因为在基于i386的CPU架构中,它们绝不会享有最高优先级,只有domain0才可以。

在domain0中,还会载入一个xend进程。这个进程会管理所有其它虚拟机,并提供这些虚拟机控制台的访问。在创建虚拟机时,管理员使用配置程序与domain0直接对话。(在本系列的第二部分,我们将探讨如何使用配置程序。)

Xen与其它开源项目

使用Xen时,开源项目与其它项目的一些差异有时会让人感到迷惑。Xen起源于英国的剑桥大学计算机实验室,该实验室开发了Xen开源项目。这个项目包括虚拟机监控器,即Xen环境的核心组成部分。除了剑桥大学的科学家以外,很多其它IT领域集团也都参与了Xen开源项目,其中包括IBM、AMD、HP、Red Hat和Novell。

由于Xen方法使虚拟化领域迈出了一大步,因此Xen的创始人成立了他们自己的公司XenSource(最近被Citrix收购)。他们成立XenSource的目的是为了基于Xen hypervisor而提供一个完善的虚拟化解决方案,与其它虚拟化产品(如VMware ESX)竞争。其它企业也在它们自己的产品中综合应用了Xen hypervisor。例如,Linux厂商Red Hat和Novell公司都在自己的操作系统中包含了各自版本的Xen。由于Xen的大多数部分都是开源的,所以这些解决方案都非常相似。

文章来源:IT中国

延伸阅读

  • 抱歉,暂无相关内容!

评论