分类: 虚拟化
2010-07-19 18:37:31
自从IBM开发出IBM 370/390之后,硬件虚拟机技术的发展日新月异。为了克服虚拟机技术应用在x86上遇到的困难,英特尔推出了Intel-VT技术。Intel-VT技术综合了全虚拟化和半虚拟化的优点:跟全虚拟化比起来,由于大部分客户操作系统的指令都是由处理器执行,所以理论上性能接近于在裸机上运行的性能;跟半虚拟化比起来,客户操作系统不需要修改,就可以在硬件上运行,大大减轻了虚拟机监控器的开发难度。
由于Intel-VT技术的优点,目前,不管是公司,还是研究机构,都在开展Intel-VT技术的应用研究。我们实验室对这方面的技术积累已经达到了一定程度。该课题设立的目的,就是为了能够在国家基金的支持下,研究硬件虚拟机监控器如何充分利用Intel-VT技术。
VMware是一个“虚拟PC”软件。它可以在一台机器上同时运行二个或更多、、系统。与“多启动”系统相比,VMware采用了完全不同的概念。“多启动”系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMware是真正“同时”运行多个操作系统在主系统的平台上。VMware是提供一套虚拟机解决方案的软件公司,主要产品分为如下四个:
a) VMware-ESX-Server:这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程web管理和客户端管理功能;
b) VMware-GSX-Server:这个版本就要安装在一个操作系统下了,这个操作系统叫做HOST OS. 这个HOST OS可以是Windows 2000 Server以上的Windows系统或者是Linux(官方支持列表中只有RH, SUSE, Mandrake很少的几种),和VMware-ESX- Server一样带有远程web管理和客户端管理功能;
c) VMware-WorkStation:这个版本和VMware-GSX-Server版本的机构是一样的。也是要安装在一个操作系统 下,对操作系统的要求也是Windows 2000以上或者Linux。和Vmware-GSX-Server的区别就是没有web远程管理和客户端管理;
d) 瘦客户机终端操作系统(DeTOS)6.0:戴闻(Devon) IT公司与vmware 公司合作开发的瘦客户机终端操作系统(DeTOS)6.0是一种基于Linux操作系统的,可捆绑多客户并连接到众多的各类服务器,利用不同类型协议的网络终端管理软件;
下面,重点介绍两款比较有代表性的产品:
VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试、部署新的应用程序的最佳解决方案。VMware Workstation 可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 IT 开发人员和系统管理员而言, VMware 在虚拟网路,实时快照,拖曳共享文件夹,支持 PXE 等方面的特点使它成为必不可少的工具。
VMware Workstation的安装跟在Windows上安装普通的应用程序一样方便。而且针对每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。
VMware Workstation主要的功能有:
1. 不需要分区或重开机就能在同一台PC上使用多个不同的操作系统;
2. 完全隔离并且保护不同操作系统的操作环境以及所有安装在操作系统上面的应用软件和资料;
3. 不同的操作系统之间还能互动操作,包括网络、周边、文件分享以及复制粘贴功能;
4. 有复原功能;
5. 能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等;
除了为网络适配器、CD-ROM读盘机、硬盘驱动器、以及USB设备的访问提供了桥梁外,VMware工作站还提供了模拟某些硬件的能力。例如,能将一个ISO文件作为一张CDROM安装在系统上、也能将.vmdk文件作为硬盘驱动器安装、以及可将网络适配器驱动程序配置为通过宿主计算机使用网络地址转换(NAT)来访问网络,而非使用与宿主机桥接的方式(该方式为:宿主网络上的每个客户操作系统必须分配一个IP地址)。
VMware工作站还允许无须将LiveCD烧录到真正的光盘上、也无须重启计算机,而对这些 LiveCD进行测试。还可以捕获在VMware工作站下运行的某个操作系统的快照。每个快照可以用来在任何时候将虚拟机回滚到保存的状态。这种多快照功能使VMware工作站成为销售人员演示复杂的软件产品、开发人员建立虚拟开发和测试环境的非常流行的工具。VMware工作站包含有将多个虚拟机指定为编队的能力,编队可以作为一个物体来开机、关机、挂起和恢复—这使VMware工作站在用于测试客户端-服务器环境时特别有用。
VMware ESX Server 是为IT 环境提供基于虚拟化的分布式服务的基础。作为VMware Infrastructure的核心组成部分,ESX Server 是一个强大且经过生产验证虚拟化层,它将处理器、内存、存储器和网络资源抽象成多台虚拟机,这些虚拟机可以并行在同一台物理服务器上运行。在多个虚拟机间共享硬件资源可以提高硬件的利用率,并大幅度降低资金和运营成本。虚拟机具有高可用性、资源优化、操作自动化和安全功能,这些功能甚至可以向资源要求极高的关键应用程序提供服务级别。ESX Server为企业 IT 环境提供了最高级别的性能、可扩展性和稳定性。
使用 VMware ESX Server[1]:
1. 在专用系统上运行的应用程序可以转移到位于一个单一、更为可靠和可扩展的系统上的不同虚拟机中。
2. 可以从任何位置对服务器实行远程管理,从而简化了服务器维护。
3. 可以通过高级资源管理保证服务级别。
图1.1[1]展示了VMware ESX的架构图。VMware虚拟机监控器作为隔离层,运行在x86硬件上,客户操作系统运行在VMware虚拟机监控器之上。
图 1.1 VMware ESX架构图
如今,虚拟化市场上满是各种不同的虚拟化解决方案。多年以来,VMware一直控制着基于 i386 的虚拟化市场。然而,现在的开源解决方案 Xen 也在迅速地扩张自己的市场。
Xen是一个开放源代码虚拟机监视器,由开发。Xen项目刚开始的目标,是单个上运行多达100个的操作系统。操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化[2]。
目前,Xen提供了两种的虚拟化技术可供选择:
l 一种是半虚拟化技术。Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失, 典型的情况下大约损失2%, 在最糟的情况下会有 8% 的效能耗损; 与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(如x86),Xen也有极佳的表现。与那些传统透过软件模拟实现硬件的虚拟机不同,在3.0版本及在Intel VT-X支援前的Xen需要让客户操作系统与Xen API进行连接。到目前为止,这样连结已经可以运用在NetBSD, GNU/Linux, FreeBSD和贝尔实验室的Plan 9系统上。在Brainshare 2005会议上,展示了NetWare与 Xen的连通。与Windows XP连通的技术曾在Xen开发初期进行,但微软的协议未能允许它发布。Sun微系统公司也正积极研究Solaris与Xen的连结,使其能在Xen平台上运作。
l 另一种是硬件辅助虚拟化。英特尔对Xen贡献修改以支持Vanderpool架构扩展。如果主系统支持Vanderpool或者Pacifica扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将允许未修改的客操作系统运行在Xen虚拟机中。事实上,那意味著性能的提升,并且你可以在没有进行任何协议不允许的修改的情况下对Windows进行虚拟。
Xen虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。
图 1.2 Xen架构图
图1.2[3]是Xen的架构图。Xen Hypervisor是一个介于硬件和操作系统之间的软件层,它负责在各虚拟机之间进行CPU调度和内存分配。Xen Hypervisor不仅抽象出硬件层,同时控制虚拟机的执行,因为这些虚拟机共享同一个处理环境。Xen Hypervisor不会处理网络、存储设备、视频以及其他I/O。
Domain 0是一个修改过的Linux kernel,是唯一运行在Xen Hypervisor之上的虚拟机,它拥有访问物理I/O资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0需要在其它Domain启动之前启动。
Domain U 运行在Xen Hypervisor上的所有半虚拟化虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD等其它UNIX操作系统。所有的全虚拟化虚拟机被称为 “Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如Windows等。Domain U PV Guests的内核知道它自己不能直接访问物理硬件,因为他知道有其他的虚拟机也运行在同一个环境中。而Domain U HVM Guests的内核不知道他正在和其他虚拟机共享一个处理环境,它认为它运转在物理硬件上。Domain U PV Guests包含两个驱动:“PV Network Driver”和“PV Block Driver”。
Domain U HVM Guests虚拟机内没有PV Driver,而是在Domain 0里为每一个HVM Guest启动一个特殊守护进程:Qemu-dm,由Qemu-dm负责客户操作系统的网络和磁盘请求。Domain U HVM Guests必须进行初始化为某类机器,所以要在Domain U上附加一个软件:Xen虚拟固件,来模拟BIOS。
Hyper-V采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V底层的Hypervisor运行在最高的特权级别下,微软将其称为ring-1(而Intel则将其称为root mode),而虚拟机的OS内核和驱动运行在ring 0,应用程序运行在ring 3下,这种架构就不需要采用复杂的BT(二进制特权指令翻译)技术,可以进一步提高安全性。
由于Hyper-V底层的Hypervisor代码量很小,不包含任何第三方的驱动,非常精简,所以安全性更高。Hyper-V采用基于VMbus的高速内存总线架构,来自虚拟机的硬件请求(显卡、鼠标、磁盘、网络),可以直接经过VSC,通过 VMbus总线发送到根分区的VSP,VSP调用对应的设备驱动,直接访问硬件,中间不需要Hypervisor的帮助。
图1.3[4]是Hyper-V架构图。这种架构效率很高,不再像以前的Virtual Server,每个硬件请求,都需要经过用户模式、内核模式的多次切换转移。更何况Hyper-V现在可以支持Virtual SMP,Windows Server 2008虚拟机最多可以支持4个虚拟CPU;而Windows Server 2003最多可以支持2个虚拟CPU。每个虚拟机最多可以使用64GB内存,而且还可以支持X64操作系统。
与之前的Virtual PC、Virtual Server类似,Hyper-V也是微软的一种虚拟化技术解决方案,但在各方面都取得了长足的发展。
图 1.3 Hyper-V架构图
从架构上讲Hyper-V只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。
按照微软的虚拟化产品路线,微软在将2008年第四季度,推出脱离Windows Server 2008 的、独立的虚拟化产品Hyper-V Server。
KVM 是一种完全,它有一个方面非常独特:它将 Linux 内核转换为一个内核模块的 hypervisor。这个模块允许使用其他客户,然后在宿主 Linux 内核的用户空间中运行。内核中的 KVM 通过/dev/kvm字符设备来公开虚拟化后的硬件。客户操作系统使用为 PC 硬件仿真修改过的 QEMU 进程与 KVM 模块接口。
图1.4[5]是KVM的架构图。KVM 模块向内核中引入了一个新的执行模块。普通内核支持内核模式和用户模式,而 KVM 则引入了一种客户模式。客户模式用来执行所有非 I/O 客户代码,而普通用户模式支持客户 I/O。
KVM 的引入代表了作为主流 Linux 内核一部分的第一个虚拟化。它已经存在于 2.6.20 树中,不过也可以作为 2.6.19 内核的一个内核模块使用。当在支持虚拟化的硬件上运行时,KVM 支持 Linux(32 位和 64 位)和 Windows(32 位)客户机。
图 1.4 KVM架构图
半虚拟化:在半虚拟化中,客户操作系统使用一个专门的 API (半虚拟化接口)与 VMM 通信,VMM 则负责处理虚拟化请求,并将这些请求递交到硬件上。
半虚拟化接口(Virtual Machine Interfaces: VMI):为了便于半虚拟化虚拟机的开发,VMware和开源社区共同开发出了一套半虚拟化接口。
Intel-VT(Intel Virtualization Technology):英特尔公司的虚拟化技术。
客户操作系统:指运行在虚拟机监控器之上,接受虚拟机监控器监控的操作系统。
全虚拟化:虚拟机与一个叫做虚拟机监控器的部件进行通信,而虚拟机监控器则与硬件平台进行通信。
VMX(Virtual Machine Extensions):用于支持Intel-VT技术的处理器模式。
虚拟8086监控器:Smart-VM虚拟机监控器的一个子模块,用于监控在虚拟8086模式下运行的8086程序。
虚拟机管理程序:通过虚拟机管理程序,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问等。
虚拟机监控器(VMM):与虚拟机管理程序同。
虚拟机控制结构(VMCS, Virtual Machine Control Structure):用于支持VMX操作的数据结构。
硬件辅助虚拟化:指虚拟机监控器利用硬件提供的特殊功能(如Intel-VT, AMD-V等),来实现虚拟化功能。
硬件虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
近几年来,硬件虚拟机的产品层出不穷,显示出了这个领域的活力。
本章主要介绍了我们的课题背景。还有就是针对目前市面上的几款流行的硬件虚拟机进行了简要的介绍。
VMware是在x86平台上,占有绝对领先的地位。但是Xen等其他几款硬件虚拟机也逐渐壮大起来了,开始与VMware争夺市场资源。Xen的优势是它是开源软件,可以得到开源社区的技术支持。而Hyper-V则是微软的产品,作为全球IT行业的领袖企业之一,Hyper-V有它得天独厚的先天优势。