作者:mobiledu2502936427 | 来源:互联网 | 2017-08-22 00:45
早在大型机时代,IBM的VM/370就采用虚拟化技术来划分其硬件资源,提供给多用户使用。现在,x86服务器已成为企业应用的主流,探索x86服务器的虚拟化技术成为各个企业和研究机构的重要课题。
技术篇不同层次的虚拟化技术近年来,服务器虚拟化技术逐渐成为人们关注的热点技术。伴随着多年来人们对虚拟化技术的研究,形成了不同层次的虚拟化技术,其中有ISA层次、硬件抽象层、操作系统层、Library API层,以及编程语言层的虚拟化技术。
1.ISA层的虚拟化技术ISA层的虚拟化技术,通常采用软件模拟指令集的方式实现。一个典型的计算机系统由处理器、内存、总线、硬盘控制器、时钟、各种I/O设备组成。ISA层的虚拟化软件的实现方式是截获客户操作系统发出的指令,并把它们“翻译”成Host平台上的可用指令进行执行(包括处理器内部指令和IO指令)。由于这种指令的模拟方式,ISA层的虚拟化技术可以完全模拟一台真实机器所能做的一切。这种实现方式的好处在于,分离了操作系统和硬件平台的紧绑定关系。
这方面具有代表性的系统有很多。Bochs是用C++语言编写的开源的x86平台的PC模拟器,可以方便地在多种平台上模拟IA32 PC系统。它能够模拟多种版本的x86系统,如386、486、Pentium、Pentium Pro、SSE、SSE2等指令。Bochs解释客户系统从开机到关机的全部指令,模拟了Intel x86 CPU、BIOS以及PC设备。因此,在客户操作系统看来,就好像是运行在一台真实的机器上一样。虽然Bochs系统的性能问题,使其很难有广泛的应用,但它也在某些方面有着重要的应用,如在非x86平台上运行Windows系统,进行新开发的操作系统的debug工作,进行老式x86系统的兼容性测试等。
QEMU是一个采用动态翻译技术的快速的模拟器,它支持两种工作模式:用户空间模拟和全系统模拟。在用户空间模式下,QEMU可以在物理CPU上执行为其他CPU编译的程序。在全系统模拟的模式下,它支持模拟x86、arm、PowerPC、Sparc等结构。它可以快速地把客户操作系统的指令动态地翻译成本地指令进行执行。其动态翻译过程的基本思想是把每条指令分解成少量的简单指令。每条简单指令由一段C代码实现,通过动态代码生成器把这些简单指令的目标文件连接起来,构建指定的功能。它把基本块作为翻译的基本单位,并采用16M的指令翻译Cache. 2.硬件抽象层的虚拟化技术硬件抽象层的虚拟化技术,利用客户系统环境和Host平台的相似性来减少理解客户系统指令的延迟。目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。虚拟化软件进行从虚拟资源到物理资源的映射,并利用本地物理平台进行实际的计算。当虚拟系统访问关键的系统资源时,虚拟化软件接管其请求,并进行相应的处理。为了使这种机制能够有效地工作,虚拟机必须能够trap每条特权指令,并使得VMM接管进行相关的处理。这是因为,在同一个物理平台上有多个客户系统存在,这些客户系统发出特权指令希望CPU进行处理。这时把这些指令trap到VMM进行处理,以免系统发生异常或冲突。此时,VMM模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统,保证了各个客户虚拟系统的有效隔离。然而,x86平台并不是完全支持虚拟化的,因为某些x86特权指令在特权级不够的情况下执行,并不能方便地产生trap.对这一问题的解决方案有:一种是指令扫描结合动态指令修改的软件技术,有许多商业的虚拟化产品采用了这种方案;另一种方案是修改x86 CPU,使它支持虚拟化,也就是Intel的Vanderpool技术和AMD的Pacifica技术的目标。此种虚拟化技术的代表 产品是EMC公司的VMware. Microsoft的Virtual Server系列产品。Microsoft的Virtual Server 2005来源于2003年收购Connectix的虚拟化技术。这是一种类似于VMware Workstation结构的虚拟化产品。除了虚拟化的功能外,还有两种特色的功能:undo磁盘功能可以使用户方便地undo客户虚拟系统之前对磁盘的操作,有利于某些情况下的数据恢复;另一种特色技术是二进制翻译,它可以在基于Macintosh的机器上提供x86的虚拟机。但Virtual Server产品其对操作系统种类的支持不是很广泛,主要支持Windows和Linux客户虚拟系统。Linux系统还不能做为Virtual Server的Host平台。
Xen是最初由剑桥大学计算机实验室发起的开源虚拟机项目。它的开发得到了Intel、HP、IBM等公司的支持。Xen是在x86平台上支持同时运行多个虚拟系统的高性能VMM.它支持x86_32、x86_64、IA64等多种平台,并支持Intel Vanderpool和AMD Pacifica技术。它采用para-virtualization的技术,也就是需要对客户虚拟系统的内核进行适当的修改,使其能够在VMM的管理下尽可能地直接访问本地硬件平台。Xen利用Para-virtualization技术降低了由于虚拟化而引入的系统性能损失。
Xen的Para-virtualization技术的主要内容是:对于内存分段管理的虚拟化,要求客户操作系统对硬件分段描述符的更新由Xen进行验证,这也就要求客户操作系统不能有高于Xen的特权级别和不允许访问Xen的保留地址空间;对于内存分页管理的虚拟化,要求客户操作系统可以直接读硬件页表,但对页表的更新需要Xen进行验证和处理,Xen支持客户虚拟系统可以分布在不连续的物理内存上;对于客户虚拟系统,其只能运行在低于Xen的特权级别上;客户虚拟系统需要注册一个异常(Exception)处理函数的描述符表,直接支持Xen的虚拟化;客户虚拟系统的硬件中断机制被Xen中的Event处理机制代替;每个客户虚拟系统都有自己的时钟接口,并且可以了解真实的时间和虚拟的时间;客户虚拟系统通过异步I/O rings的内存区域和外部设备(网络、硬盘)来传递数据,采用事件处理机制代替硬件中断通知机制。
目前,Xen作为高性能的虚拟机软件,越来越受到业界的关注。它可以为企业的生产系统所使用。
UML(User Mode Linux)是让一个Linux作为一个独立进程,运行在另一个Linux上的开源项目。它是一种在同一时间运行多 Linux 的安全方式。每个进程都独立于其他进程,这非常安全。例如,在同一机器上进行多种测试和开发而不互相干扰,如果一些测试进程被损坏,并不会影响宿主系统或者开发进程。
与VMware等实现方式不同,UML不需要额外的虚拟化软件。它只需要在Linux Kernel源码上打上相关的补丁。UML的补丁把Linux标准内核转化成一个可以作为独立进程执行的操作系统。当运行UML kernel时,需要指定一个文件系统给其使用。此时,我们就有了一个独立的Linux系统。新的系统内核作为一个用户空间的应用运行。UML内核接收来自应用的系统请求,然后发送Host内核进行处理。由于客户虚拟系统的内核和进程在同一地址空间内,因此,需要把内核的代码和数据段放在虚拟系统进程通常不会使用的地方。由于每个虚拟系统的进程通过Host内核获得,为了让虚拟系统进程共享虚拟系统内核的数据,虚拟系统内核数据被映射到一个文件,然后这个文件被映射到虚拟系统的进程。目前,UML的一个主要应用是进行系统软件的调试和测试。
硬件抽象层的虚拟化技术有着高度的客户虚拟系统的隔离性(包括客户虚拟系统之间,客户虚拟系统和Host系统之间)。这种隔离性使得在同一个物理平台上,可以同时运行不同类型的操作系统,而且它们的重启等操作不会互相影响。在用户看来,隔离性使得物理平台被划分成不同虚拟机器。由于用户面对的是虚拟机器,用户需要更多的系统安装和配置工作。如果用户希望客户虚拟系统有和Host相同的操作系统,并只是想把多个应用系统进行分离,那么可以考虑采用操作系统层的虚拟化技术。
3.操作系统层虚拟化技术典型的应用程序环境包括:操作系统、用户函数库、文件系统、环境设置等。如果应用系统的这些周边环境保持不变,应用程序自身是无法区分是运行在物理系统内,还是运行在虚拟系统外。操作系统层的虚拟化技术的主要思想在于,在Host操作系统上动态复制操作系统环境,以此来创建虚拟系统环境。
Jail是FreeBSD系统上的操作系统层虚拟化技术。它可以把操作系统划分成多个独立操作系统环境,称之为Jail.每个Jail内都包含典型的操作系统资源,如进程、文件系统、网络资源。在Jail中的用户会发现,其资源访问范围被限制在Jail内。Jail是通过Jail系统调用创建的,Jail内的第一个进程的所有子进程都属于该Jail.任何一个进程不能同时属于多个Jail.Jail虚拟化技术在隔离应用程序方面有一定的应用价值。
Virtual Private Server(VPS)技术把服务器的操作系统环境,分割成多个彼此隔离的系统环境,称之为VPS.管理员可以给每个VPS分配指定数量的内存、CPU、网络带宽等资源,还可以支持从物理服务器到虚拟环境或物理服务器之间,进行客户虚拟系统的迁移。VPS技术在网站的服务器整合,提高资源利用率等方面有很好的应用。
对编程语言级别的虚拟化技术,我们最熟悉的就是Java虚拟机——JVM.Java程序被编译成由JVM可以识别的指令形式,称为Java Bytes Code.当代码被执行时,由JVM进行解释或利用Just-In-Time(JIT)编译器在本地机器上执行。类似的编程语言级别的虚拟化技术还有Microsoft .NET CLI和Perl 6的Parrot.虽然有着多种层次的虚拟化技术,但目前各企业和厂商最为关注的是硬件抽象层的虚拟化技术,它也是目前最有应用潜力的虚拟化技术。
图1 服务器虚拟化的典型结构
图2 Standalone服务器虚拟化结构
图3 Hosted服务器虚拟化结构产品链接VMware服务器虚拟化产品VMware是业界著名的虚拟机产品,它有VMware workstation、VMware GSX Server、VMware ESX server等系列产品。VMware的VMM可以有两种结构形式,即Standalone和Hosted.Standalone的结构形式是指,VMM作为一层直接运行在硬件平台上的软件层,在它上面可以创建和管理多个客户虚拟系统。这种结构的VMM有点像一个操作系统,它包含硬件平台的驱动,会受到硬件平台种类的限制。它适合于服务器的应用环境,其典型的产品是VMware ESX Server.其大致结构如图2所示。
Hosted结构的VMM作为操作系统的一个应用程序运行,它可以利用操作系统自身的内存管理、CPU调动、硬件驱动和资源管理。VMware Workstation使用的就是Hosted的结构,其大致结构如图3所示。
由于VMware的目标平台是x86平台,因此,它也同样面临着x86平台不完全支持虚拟化的问题。VMware的解决方法是其专利技术,在需要VMM参与的地方,动态重写部分虚拟系统的指令,使其可以trap到VMM.对于硬件支持虚拟化的方案,今年VMware新推出的VMware Server是一款面向Windows和Linux服务器的,并支持英特尔虚拟化技术的免费产品。
[1] [2] 下一页