虚拟化技术概述关于虚拟化技术一、什么是虚拟化技术•在计算机科学中,虚拟化(Virtualization)是一个表现逻辑群组或计算机资源的子集的进程,用户可以用比原本的组织管理更好的方式来存取这些进程。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料储存。•虚拟化是企业IT整体发展趋势的一部分,在把计算机的处理能力被视为用户按需承担开销的一种工具,它包括自主计算、通过认知活动和计算工具进行自主管理。•虚拟化技术并不是一个新技术,早在60-70年代,IBM就已经在360/67,370等硬件体系实现上虚拟化。IBM的虚拟化通过VMM(VirtualMachineMonitor)把一个硬件虚拟成多个硬件(VM,VirtualMachine),各VM之间可以认为是完全隔离的。这个隔离不同于各进程之间的地址空间隔离。无论是内存,设备,还是处理器等对各VM来讲,都被认为是自已独一套的。在VM上可以运行”任何”的操作系统(称为GuestOS)而不会对其它的VM产生影响。什么是虚拟化技术•在计算机集群中,许多小型服务器正在被一个大型服务器取代以增加硬件资源的利用率(如CPU等)。虽然硬件正在被整合,但是典型的操作系统仍然是独立的。取而代之地,每一个运行在独立的服务器上的操作系统被转移到在虚拟机中。大型的服务器可以“寄宿”许多这样的“客户”虚拟机。这就是物理到虚拟(Physical-to-Virtual,P2V)的转换。•虚拟机比真实的机器可以被更容易从外部被控制和检查,并且可以配置更灵活。这在内核开发与操作系统课程教学中尤为有用。[3]•创建一个新的虚拟机不需要预先购买硬件。同时,一个新的虚拟机可以容易地从一台计算机转移到另一台上。举例来说,一个销售员可以复制一个包含试用版软件的虚拟机到他的笔记本电脑去访问他的客户而不用更换电脑。类似的,虚拟机中的故障不会对宿主机产生损害,所以不会令笔记本上的操作系统死机。•由于可以被容易地迁移,虚拟机可以被用于远距离灾难恢复方案。为什么需要虚拟化技术虚拟化的主要类型全虚拟化/半虚拟化/平行虚拟化(准虚拟化)Fullvirtualization/Partialvirtualization/Paravirtualization系统虚拟化/应用虚拟化/工作环境虚拟化Operatingsystem-levelvirtualization/Applicationvirtualization/Workspacevirtualization内存聚合技术/虚拟内存隔离技术Memoryvirtualization/Virtualmemory物理存储的逻辑抽象处理/分布式文件系统Storagevirtualization/Distributedfilesystem桌面虚拟化/地址空间虚拟化(VPN)Desktopvirtualization/Networkvirtualization虚拟化的主要类型(*参考)•硬件平台虚拟化,将操作系统和硬件平台资源分割开(稍后展开)•软件系统虚拟化,在操作系统和应用程序间建立虚拟环境–操作系统级虚拟化(稍后展开)–便携式应用程序,允许程序在便携式设备中运行而不用在操作系统中安装–跨平台虚拟化,允许针对特定CPU或者操作系统的软件不做修改就能运行在其他平台上,例如Wine,AdobeAIR,Java–虚拟设备,运行于虚拟化平台之上,面向应用的虚拟机映像•虚拟内存,将不相邻的内存区,甚至硬盘空间虚拟成统一连续的内存地址•存储虚拟化,将实体存储空间(如硬盘)分隔成不同的逻辑存储空间•网络虚拟化,将不同网络的硬件和软件资源结合成一个虚拟的整体–虚拟专用网络(VPN),在大型网络(通常是Internet)中的不同计算机(节点)通过加密连接而组成的虚拟网络,具有类似局域网的功能–存储器虚拟化,将网络系统中的随机存储器聚合起来,形成统一的虚拟内存池•桌面虚拟化,在本地计算机显示和操作远程计算机桌面,在远程计算机执行程序和储存信息•数据库虚拟化硬件虚拟化•在完全虚拟化(fullvirtualization)中,虚拟机模拟一个足够强大的硬件使客户机操作系统独立运行。其中还包括硬件辅助虚拟化(hardware-assistedvirtualization),在硬件辅助虚拟化中,硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行。•在部分虚拟化(partialvirtualization)中(包括地址空间虚拟化),虚拟机模拟数个(但不是全部)底层硬件环境,特别是地址空间。这样的环境支持资源共享和线程独立,但是不允许独立的客户机操作系统。虽然这并不被视为一般意义上的虚拟机,但这在历史上是非常重要的一页。这项技术曾被用于CTSS(试验性的IBMM44/44X),以及争议性的系统比如MVS及Commodore64(两个都是“taskswitch”程序)。•在准虚拟化(paravirtualization)中,虚拟机不需要模拟硬件,而是提供一个特殊的API只能被特制的客户机操作系统使用。完全虚拟化之硬件辅助虚拟化•在硬件辅助虚拟化(hardware-assistedvirtualization)中,硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行。硬件辅助虚拟化在1972年,为了使用第一个虚拟机操作系统VM/370,第一次由IBMSystem/370引入。在2005年与2006年,Intel和AMD为虚拟化提供了额外的硬件支持。支持硬件辅助虚拟化的有LinuxKVM,VMwareWorkstation,VMwareFusion,MicrosoftVirtualPC,Xen,ParallelsDesktopforMac,VirtualBoxandParallelsWorkstation。•支持完整的虚拟化技术的硬件平台包括:–x86(andx86_64)—AMD-V(代号Pacifica),IntelVT(代号Vanderpool)–IOMMU由AMD和Intel共同开发。–PowerArchitecture(IBM/Power.org)–Virtage(Hitachi)–UltraSPARCT1,T2及T2+(Sun)软件虚拟化之操作系统层虚拟化•在操作系统层虚拟化(OS-levelvirtualization)中,独立主机被虚拟化在操作系统层中,这使得多个独立且安全虚拟化的服务器运行在一台计算机上。客户操作系统环境与宿主服务器分享同一个操作系统,例如,相同的系统内核被用来创建客户机环境。程序运行在被视为独立系统的客户机环境中。这种方式由FreeBSDjails首创;类似的例子包括SolarisContainers,OpenVZ,Linux-VServer,AIXWorkloadPartitions,ParallelsVirtuozzoContainers,以及iCoreVirtualAccounts。为什么需要操作系统虚拟化为什么需要操作系统虚拟化虚拟设备(VirtualAppliance)•虚拟设备(英语:VirtualAppliance),或译为虚拟电器[1]、虚拟器件[2],是一类运行于虚拟化平台(如VMware、Xen、VirtualBox)之上的、面向应用的虚拟机映像。虚拟设备是软件设备的子集,与其它软件设备类似,它简化了复杂应用程序栈的安装、配置过程,降低了运营维护成本。•虚拟设备通常具有基于web的配置管理界面,作为单一应用的宿主运行。因此,虚拟设备是网络应用部署一种新的方式,可用于“软件即服务”(SaaS)的商业模式。几种常见的硬件虚拟化解决方案XenServerVMwareWorkstationVirtualBoxParallelsWorkstation硬件虚拟化解决方案——XenXen的介绍•Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。•在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化Xen的使用•IBM经常在其主机和服务器上使用虚拟机来尽可能发挥其性能,并类似chroot监禁那样将程序置于隔离的虚拟OS中以增强安全性。除此之外,它还能使不同和不兼容的OS运行在同一台计算机上。Xen支持在运行时进行迁移,保证正常运行并且避免宕机。Xen的半虚拟化•Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失,典型的情况下大约损失2%,在最糟的情况下会有8%的效能耗损;与其它使用完全的虚拟化却造成最高到20%损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。与那些传统透过软件模拟实现硬件的虚拟机不同,在3.0版本及在IntelVT-X支援前的Xen需要让客座作业系统(guestoperatingsystems)与XenAPI进行连接。到目前为止,这样连结已经可以运用在NetBSD,GNU/Linux,FreeBSD和贝尔实验室的Plan9系统上。在Brainshare2005会议上,Novell展示了NetWare与Xen的连通。与WindowsXP连通的技术曾在Xen开发初期进行,但微软的协议未能允许它发布。Sun微系统公司也正积极研究Solaris与Xen的连结,使其能在Xen平台上运作。Xen的完全虚拟化•Intel对Xen贡献修改以支持其VT-X架构扩展,而AMD则修改以支持其AMD-V架构扩展。如系统处理器支持虚拟硬件扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将允许未修改的客操作系统运行在Xen虚拟机中。事实上,那意味着性能的提升,并且你可以在没有进行任何协议不允许的修改的情况下对Windows进行虚拟。Xen虚拟机的迁移•Xen虚拟机可以在不停止的情况下在多个物理主机之间即时迁移(livemigration)。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。Xen的系统平台支持•Xen目前可以运行在x86及x86-64系统上,并正在向IA64、PPC移植。移植到其他平台从技术上是可行的,未来有可能会实现。•由于Xen可以安装在众多Linux操作系统至上,因此目前许多Linux发行版都在发布的时候内置了Xen。•Citrix也提供一套集成度更好的XenServer软件,该软件不需要额外的操作系统,可以作为操作系统直接安装到硬件上。操作系统虚拟化解决方案——VirtuozzoContainersParallelsVirtuozzoContainers简介ParallelsVirtuozzoContainers简介•Virtuozzo是SWsoft公司的操作系统虚拟化软件的命名,该操作系统虚拟化软件是一项服务器虚拟化和自动化技术,它采用的是操作系统虚拟化技术。操作系统虚拟化的概念是基于共用操作系统内核,这样虚拟服务器就无需额外的虚拟化内核的过程,因而虚拟过程资源损耗就更低,从而可以在一台物理服务器上可以实现更多的虚拟化服务器。这些VPS以最大化的效率共享硬件、软件许可证以及管理资源。每一个VPS均可独立进行重启,并拥有自己的root访问权限、用户、IP地址、内存、过程、文件、应用程序、系统函数库以及配置文件。Virtuozzo技术同时支持Linux和Windows平台。Linux版Virtuozzo服务器还支持在虚拟服务器上实现同版本内核的不同Linux发行版。Virtuozzo技术优点•高密集度:与其他的虚拟化技术相比,ParallelsVirtuozzo在单台物理服务器(硬件节点)上可获得超过