预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Xen虚拟化背景知识 虚拟化简述 通俗说来,虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构间的壁垒。虚拟化技术就其本质而言属于一种资源管理技术,它将硬件、软件、网络、存储等硬件设备隔离开来,使用户能更合理更充分的控制与管理各种资源。虚拟化技术本身有很多的方向,网络级(VLan)、芯片级(IntelVT/AMD-V)、硬件级(存储设备/服务器)、操作系统级等。虚拟化的主要目的是简化IT基础设施的控制管理。 虚拟化技术由来已久,从60年代Unix诞生起,虚拟化技术就出现了,经历了从硬件分区、虚拟机、准虚拟机、虚拟操作系统的发展历程。虚拟化技术的最初应用于大型主机,通过将一台大型服务器分割成若干分区,同时运行多个彼此独立的操作系统实例,以提高硬件利用率。目前虚拟化主要应用在服务器器虚拟方面。 虚拟化发展阶段 1)虚拟化初级阶段:在虚拟化早期,人们采用模拟软件技术模拟出计算机硬件和软件。模拟层与操作系统对话,而操作系统与计算机硬件对话。在模拟层中安装的操作系统并不知道自己是被安装在模拟环境下的,你可以按照常规的方法安装操作系统。这种虚拟化需要付出很大的性能代价。 2)虚拟化高级阶段:随着虚拟技术发展的不断深化,虚拟化被带到了一个更高的级别。在模拟层(负责被虚拟机器的指令翻译)和硬件之间,不需要任何主机操作系统运行硬件上的虚拟机。虚拟机监控器直接运行在硬件上。由此虚拟化变得更加高效。 虚拟化技术主要类型 实现虚拟化的方法有多种,可以通过不同层次的抽象来实现相同的结果。 序号虚拟化技术类型具体描述1硬件仿真HardwareEmulation在宿主系统上创建一个硬件VM来仿真出一套硬件。速度比较慢,不需要作任何修改。可以运行多个虚拟机,每个虚拟器仿真一个不同的处理器。2完全虚拟化Fullvirtualization完全虚拟化是将应用程序完全跟硬件抽象出来。虚拟机与虚拟机监控器(VMM)进行通信,而VMM则与硬件平台进行通信。其主要优势在于,它安装了一个未修改的操作系统,以VMware的ESXServer为代表。1超虚拟化Para-virtualization在宿主系统上创建一个硬件VM来仿真出一套硬件。速度比较慢,不需要作任何修改。可以运行多个虚拟机,每个虚拟器仿真一个不同的处理器。完全虚拟化与超虚拟化架构图 完全虚拟化与超虚拟化两者都有一个叫做虚拟机监控器(VMM)的软件层,它包含一个虚拟机调度程序,能够提供粗粒度的内存管理和I/O虚拟化。超虚拟化模式包含API,用于在某些实例中协助虚拟机。 完全虚拟化与超虚拟化比较 基于完全虚拟化的虚拟机采用了一个虚拟层,它能协调对硬件资源的访问,并允许多个操作系统实例(甚至是互不兼容的操作系统)同时在一个服务器上和谐共存。无需修改客户操作系统。然而,这一中介层要求虚拟机捕获并模拟所有特权指令,导致性能可能降低50%。另外,当在同一台机器中同时运行两个虚拟机时,完全虚拟化不支持资源的和谐共享。例如,运行在同一个服务器硬件上的两个Web服务器虚拟机不能共享他们当前未使用的网页。因此,他们之间的分区仍是粗粒度的。另外,在完全虚拟化中,运行虚拟机的主机操作系统可能产生单点故障。许可复杂性及扩展性的限制也是无法消除的顾虑。VMware*(Novell合作伙伴)服务器是最常用的基于完全虚拟化的虚拟机。 基于超虚拟化的虚拟机与完全虚拟化不同之处在于,超虚拟或部分虚拟的操作系统实例将被修改,从而使他们能够识别虚拟化层。因此,超级管理程序可以避免难以虚拟化的处理器指令,方法是使用具备此功能的程序调用来替换这些指令。结果,性能优于完全虚拟化的虚拟机。采用超虚拟化模式的虚拟化可以在现有的芯片上获得更好的性能,而且能在下一代启用了虚拟化的x86芯片上提供有力的优势,因此成为了一个新趋势。同时,它还可以在不修改主机操作系统的情况下实现机器间的和谐内存共享。另外,它保留了虚拟机的优点,能与Linux主机操作系统完美配合。 数据中心虚拟化技术介绍 目前数据中心有三种发展最快的虚拟化技术。如下所示: 序号虚拟化技术虚拟化技术简要说明1超级管理程序虚拟机该技术使多个操作系统实例能够同时部署并运行在单个物理服务器上,不需要使用通用主机操作系统作为访问硬件的主要方法。然而,该技术不支持硬件资源进行分散式分配。到2008年,超级管理程序技术将有可能占Linux上的虚拟机部署的90%。2聚合虚拟化该技术能够聚合分散的计算资源(服务器/处理器、内存、输入/输出处理器),以供一个操作系统的单个实例使用。3共享操作系统虚拟化该技术支持多个应用程序使用单个操作系统实例,并能够向各应用程序动态分配合适的资源,而不会对这些应用程序的操作产生影响。