技术篇
不同层次的虚拟化技术
近年来,服务器虚拟化技术逐渐成为人们关注的热点技术。伴随着多年来人们对虚拟化技术的研究,形成了不同层次的虚拟化技术,其中有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的一个主要应用是进行系统软件的调试和测试。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



