技术领域
本发明涉及一种具备单一系统映像的服务器机群系统,具体地 说,涉及一种利用虚拟化技术实现单一系统映像的服务器机群系统。
背景技术
虚拟化是一个广义的术语,在计算机方面通常是指计算和处理在 虚拟的
基础上而不是真实的基础上运行。虚拟化技术是指对物理资源 进行抽象的技术。虚拟化技术可在
硬件和
操作系统之间构建一个虚拟 平台,实现在同一个硬件平台上构建相互隔离的多个运行域,每一个 运行域中都可以分别运行自己的操作系统和应用
软件。
虚拟化技术起源于20世纪60年代,IBM公司在System/360计 算机系统中首先运用虚拟化技术实现了
虚拟机,随着System/370等 系列机的成功推广,虚拟化技术逐渐成为大型机中必然采用的一项重 要技术,主要目的是让更多的用户共享昂贵的硬件资源。
二十世纪八十年代,随着集成
电路技术的飞速发展,计算机硬件 成本急剧降低,特别是随着PC等微型机的广泛使用,共享硬件资源 的必要性随之降低,关于虚拟化技术的研究和开发工作几近停顿。
二十世纪九十年代末以来,随着网络技术的迅速发展以及PC和 服务器性能的大幅提高,各种新的网络应用不断涌现,同时也伴随着 出现很多新的问题,如,安全性问题、可用性问题、提高服务器和 PC机的资源利用率问题等。为了解决这些问题,虚拟化技术再次被 使用,虚拟机及虚拟化技术又成为当今计算机界一个重要的研究热 点。
当今的虚拟化技术研究的重点是基于ISA(指令集系统结构)虚 拟化构建虚拟机监视器VMM(Virtual Machine Monitor)。按照实现 方式不同可以分为全虚拟化技术和半虚拟化技术,全虚拟化是完全模 拟客户软件运行所需要的硬件环境,客户操作系统和
应用软件可以不 经
修改地运行在
虚拟环境中;半虚拟化是为客户软件模拟一个和物理 环境不完全相同的虚拟硬件环境,需要修改客户操作系统,使之与 VMM相互协作,共同完成执行客户软件的任务。
虚拟化技术可以通过两个方向来抽象物理资源:一个方向是 “分”,即把一个物理的计算机虚拟成若干个独立的逻辑计算机;另一 个方向是“合”,就是把若干个分散的物理计算机虚拟为一个大的逻辑 计算机。
当前虚拟化技术研究主要集中于服务器虚拟化(Server Virtualization)。服务器虚拟化主要是解决服务器系统的整体效能及资 源利用率问题。目前,服务器虚拟化研究的热点是位于操作系统之下 监控器层面的虚拟化技术Virtual Machine Monitor(简称VMM,也称 Hypervisor)。虚拟技术可在硬件和操作系统之间构建一个虚拟平台, 实现一个硬件平台上构建相互隔离的运行域,每一个运行域中都可以 分别运行自己的操作系统和应用软件。
虚拟化的核心是构建虚拟机,并将本来直接运行于实际硬件平台 的操作系统放在虚拟机中运行,这样的操作系统称为Guest操作系 统,其中原本可直接运行的某些操作通过
虚拟层来运行。以VMware 虚拟x86指令为例,将其分为:(1)非敏感(non-sensitive)且是非特 权(non-priviledged)的指令直接在物理处理机上运行。(2)敏感 (sensitive)且是特权(priviledged)的指令陷入(trap)。(3)敏感(sensitive) 但却是非特权(non-priviledged)的指令(在x86中有17条这样的指 令)由VMM监测。
虚拟化的关键问题是如何处理Guest操作系统中的敏感指令。不 同的虚拟化方法采取不同的处理方式,目前广泛研究和使用的有三种 方法:
全虚拟化(Full-Virtualization)方法:该方法提供了物理硬件的 完整模拟,采用软件模拟技术处理敏感指令,在虚拟层中完整地构造 一个和物理硬件相当的环境,Guest操作系统可以不加任何修改地运 行于虚拟环境中。该方法的优点是很明显的,即Guest操作系统可以 不加任何修改地在虚拟机上直接运行,同时也具有很好的灵活性和扩 展性。然而这种技术的
缺陷也很明显,最大的问题就是每条特权指令 的执行都要引起用户模式与特权模式的切换,导致虚拟机的运行效率 很低。典型的服务器虚拟化系统VMware ESX Server和IBM system/370都采用了全虚拟化方法。
部分虚拟化(Para-Virtualization)方法:该方法通过修改Guest源 代码中涉及到的敏感指令,用超级调用(hypercall)来代替特权指令, 让尽可能多的指令直接运行在物理处理器上。典型的服务器虚拟化系 统Xen成功地使用了部分虚拟化方法。Xen通过用超级调用来“包 装”多条特权指令的执行,Guest操作系统通过超级调用让VMM执 行特权指令,这样就可以减少模式切换,提高执行效率。这个方法的 效率可达到非虚拟化的常规执行效率的90%以上,但是,为之付出 的代价也很大,需对Guest操作系统代码进行相当大范围的修改,移 植成本较高,而且随着Guest操作系统的升级,其维护成本也很高。 此外,将新处理器特性集成到hypervisor API的代价也比完全虚拟化 方法要大得多。
预虚拟化(Pre-Virtualization)方法:德国Karlsruhe大学、澳大 利亚新南威尔士大学和IBM共同提出了预虚拟化方法。这是一种提 供工具支持的半自动Guest系统构造方法,利用汇编器的支持,对 Guest系统的代码进行扫描,将其中的部分特权指令进行静态替换, 对无法静态处理的指令采用profile方法动态地寻找并手工替换。这 个方法的指导思想是采用编译工具支持,尽可能地增加可以直接执行 的指令,减少需要模拟的指令。采用这个方法基于微
内核操作系统 L4或者开源Linux构造虚拟机,可以运行经过静态翻译和人工修改 的Linux Guest OS,其运行效率也可达到非虚拟化的常规执行效率的 90%以上。该方法中Guest代码需要人工干预的汇编级半自动扫描和 替换修改,也就是说依然需要获得源代码,至少是汇编代码。
硬件虚拟化技术:随着虚拟化技术研究的蓬勃兴起和虚拟机 应用的快速普及,为了占领此技术领域的优势地位,两大处理器 厂商Intel和AMD针对IA-32体系架构的处理器进行了扩展,从 硬件上支持虚拟化技术。Intel针对IA-32架构的硬件虚拟化技术 称为VT-x(Virtual Technology),AMD针对IA-32架构的硬件虚 拟化技术称为SVM(Safe Virtual Machine)。
以Intel的VT-x为例,它对IA32体系结构进行了如下扩展。
1、增加了一种新的处理器工作模式,称为VMX(Virtual Machine Extensions)模式,用于运行虚拟机系统。其中又分为两个子操作模 式,即VMX根(root)操作模式和VMX非根(not root)操作模式, VMX根操作模式用于运行VMM,VMX非根操作模式用于运行虚拟 机VM,这两种模式都能够支持四个特权级(ring0-ring3)。
2、定义了两种模式切换。由根模式进入非根模式的切换,称为 VM entry;由非根模式进入根模式的切换,称为VM exit。
3、增加一个控制结构VMCS(Virtual Machine Control Structure), 用于保存根模式和非根模式的上下文、控制虚拟机运行的相关信息以 及控制VM entry和VM exit过程的相关信息。
4、增加10条用于控制虚拟机的新指令。
通过配置VMCS可以实现所需的虚拟化策略,使得客户软件在 执行敏感指令或发生异常时能够切换到VMM,由VMM根据退出原 因相应地做出处理。
在VT-x技术支持下,可以简化VMM的设计,可以在不使用二 进
制动态翻译技术的情况下,实现全虚拟化,即客户操作系统和应用 软件可以不经修改地运行于虚拟机中。
单一系统映像,即SSI(Single System Image),就是使用软件或 硬件的方式给用户造成一种幻觉,使多个计算元素统一为单一计算资 源。换句话说,即使用户实际上面对的是一个分布式环境,但整个系 统给用户的感觉并不是一个分布式环境,用户在使用这个系统时,他 感觉不到系统中分布资源的存在,而是觉得自己正在使用一台独立的 PC或工作站,只不过台独立的PC或工作站的功能要强大得多。
一般来说,单一系统映像具有以下几个特性:
1、单一系统。从用户视图来看,系统是一个具有多个CPU的 单个系统,是一个整体的概念。
2、单点控制。用户在使用系统时,通过单一的
接口从同一点 获取服务;系统管理员在对系统进行管理和控制时,也是 通过单一的接口向整个系统发送控制信息的。
3、对称性。用户可以在不同的结点获得相同的服务,也就是 说,整个系统对用户而言是对称的。
4、
位置透明性。在系统中,提供服务的物理设备位置对于用 户是透明的。
目前,为分布式系统提供单一系统映像支持方面的研究已经成为 当前并行计算机研究领域的一个重点方向。通过以单一系统映像实现 的层次为标准可将现有的代表系统分为以下三类。
1、在操作系统级实现单一系统映像
有些系统的实现是在操作系统级进行的,通常可以采用修改已有 的操作系统源代码的方式,将单一系统映像的实现特征和内容加入到 现有操作系统的内核中去,或者采用直接实现一个新的单映像操作系 统内核的方式来实现单一系统映像。在这一级别实现的代表系统有 Solaris MC、SCO NSC UnixWare等。
2、在
中间件级(MiddleWare)实现单一系统映像
在操作系统和应用程序之间附加一个单一系统映像层,由这一层 来实现各种单一系统映像的功能。这是目前最为普遍的一种实现方 式,典型的系统有Berkeley大学的GLUnix系统以及一些针对单地址 空间的虚共享系统,如TreadMark,Condor等。
3、在应用级实现单一系统映像
这种实现方式是直接面向应用程序的。可以采用在应用程序中加 入一些单系统映像的特征和扩展,以达到用户对应用程序的需求,但 是以这种方式实现单一系统映像时,底层的分布集群环境对程序员来 说并非完全透明。这种方式的典型代表是并行
数据库软件如Parallel Oracle和并行系统管理软件如PARMON等。
要完整地实现一个单一系统映像系统,具体内容很多,其中比较 重要的方面包括:
1、单入口点
在支持单一系统映像的并行
计算机系统中,一般有多个物理主机 结点提供完全相同的登录服务;另外,一般都使用某种策略来平衡各 登录点的负载。
2、位置透明的全局文件系统
各结点的局部磁盘和文件系统集成为统一的文件映像,用户从任 意结点可以
访问分布在不同结点的文件系统,并且全局文件系统具有 位置透明性。
3、单点控制
系统管理员可以从任何一个结点登录,通过单一的控制点配置、 监测和管理整个系统。
4、单网络
从任何一个结点都可以使用分布在不同结点的网络设备。
5、单I/O
从任何一个结点都可以使用分布在不同结点的I/O设备。
6、单一
进程空间
运行在整个系统中的进程都具有全局进程标识,由虚拟的进程对 象进行全局控制,并且应该具有一套一致性进程转移机制,包括进程 的创建、迁移、
跟踪和调度等等。
7、单一存储空间
在单一系统映像系统中,所有结点的存储空间在逻辑上是全局编 址的,通过相应的一致性模型和一致性协议来保证和维护各个结点地 址空间的一致性,同时,单一存储空间为程序员提供了基于共享变量 的用户编程接口,体现了相对于基于消息传递的编程模型的优越性。
以上这些内容如果根据实现难易程度可分为两类:一类是在许多 实际系统中已经得到了较好支持的内容,包括单入口、单点控制、单 网络等;另一类是目前实现上还存在较大困难的内容,包括单一存储 空间映像和单一进程空间映像等。
虚拟化的本质是通过抽象物理资源使硬件结构细节对软件系统 透明,实现软件系统与硬件系统相隔离,单一系统映像的目标是隐藏 分布式硬件环境,使多结点系统呈现单一系统视图,二者的目标是一 致的,因此,可以利用虚拟化技术实现单一系统映像。
但现有的技术方法有的不能实现这个目标,有的能够实现但存在 不足,如分别存在成本高、不能完全实现单一系统映像、透明性不好、 灵活性差等缺陷。
发明内容
本发明需要解决的技术问题就在于克服
现有技术的缺陷,提供一 种具备单一系统映像的服务器机群系统,它基于对硬件资源的虚拟 化,在操作系统之下实现了服务器机群系统的单一系统映像。它是在 商用的服务器裸机上,设计、开发并部署分布式虚拟机监视器DVMM (Distributed Virtual Machine Monitor),通过分布式虚拟机监视器实 现单个服务器结点的物理资源的虚拟化,通过分布式虚拟机监视器之 间的通信协作,实现全局资源的
感知、整合、管理和调度,为上层操 作系统呈现一个具有单一系统映像的cc-NUMA结构特征的虚拟服务 器。
为解决上述问题,本发明采用如下技术方案:
本发明一种具备单一系统映像的服务器机群系统,所述系统包括 硬件层、分布式虚拟机监视器层和操作系统层;所述硬件层包括多个 结点,所述结点的CPU支持硬件虚拟化,各结点通过高速网络连接; 所述分布式虚拟机监视器层为在每个结点的硬件之上部署一个虚拟 机监视器,各结点上的虚拟机监视器之间通过底层通信软件、经由高 速网络进行通信;操作系统层为支持cc-NUMA的各类商用操作系统; 现行的各类面向cc-NUMA架构的并行软件可以不经修改地运行于所 述系统之上。
所述结点为SMP服务器结点,每个结点有若干个CPU,每个CPU 具有若干个计算核,CPU支持硬件虚拟化。
所述虚拟机监视器由初始化模
块、eBIOS模块、指令集系统虚拟 化模块、I/O虚拟化模块、中断虚拟化模块、MMU虚拟化模块、DSM 模块和通信模块构成:
所述初始化模块是在各个结点上引导并运行分布式虚拟机监视 器;包括加载分布式虚拟机监视器映像;初始化基本的软件运行环境; 初始化分布式虚拟机监视器的各个模块所必须的数据结构;为分布式 虚拟机监视器各个模块构建必要的上下文环境;加载分布式虚拟机监 视器的各个功能模块;为引导客户操作系统做准备;
所述指令集虚拟化模块是虚拟机监视器的入口点和出口点,所述 指令集虚拟化模块可以调用通信模块以外的所有模块,也会被这些模 块调用;
所述通信模块是各结点虚拟机监视器间协作的基础,该模块调用 指令集虚拟化模块以外的所有模块,也会被这些模块调用;所述通信 模块将其他模块的通信
请求可靠、高效地
送达目的结点,同时处理其 它结点发来的通信请求,根据不同的请求调用相应模块进行服务;
所述eBIOS模块仅在初始化分布式虚拟机监视器和启动操作系 统时起作用,指令集虚拟化模块捕获操作系统引导时的中断调用,将 信息传递给eBIOS,eBIOS根据请求信息的类型,以传统BIOS兼容 的方式将整个系统的虚拟资源信息反馈给操作系统,完成操作系统启 动时BIOS调用的功能,eBIOS模块通过中断虚拟化模块、I/O虚拟 化模块、通信模块完成操作系统引导前BIOS所做工作,感知并生成 整个系统的资源信息;
所述I/O虚拟化模块接受指令集虚拟化模块的请求,若判别为远 程I/O操作,则调用通信模块,向远程结点发出I/O操作请求,接收 远程操作结果,更新客户系统状态,完成此次I/O操作;当I/O虚拟 化模块接收到远程I/O请求后,对本地I/O设备进行操作,将结果经 由通信系统返回至请求结点;
指令集虚拟化模块调用中断虚拟化模块模拟操作系统对虚拟中 断
控制器操作的结果;将外部中断向量转化为操作系统可识别的虚拟 中断向量,并向操作系统注入一个虚拟中断;
所述MMU虚拟化模块只被指令集虚拟化模块调用,当指令集虚 拟化模块捕获客户指令流中MMU相关操作,或者与MMU有关异常 时,调用MMU虚拟化模块进行处理;
当MMU虚拟化模块发现客户所请求的页面不在本结点时,调用 DSM模块进行页面迁移,被MMU虚拟化模块调用时,DSM模块通 过通信系统向远程结点请求相应的页面;被通信模块调用时,DSM 模块对请求进行服务,并通过通信系统发送结果。
本发明基于硬件虚拟化技术实现SMP服务器机群的单一系统映 像。在SMP服务器机群硬件之上构建一层分布式虚拟机监视器层, 由分布于各结点之上的虚拟机监视器组成,各虚拟机监视器完全对 称;在分布式虚拟机监视器之上运行支持cc-NUMA的操作系统;分 布式虚拟机监视器感知整个机群的物理资源并分类整合生成全局物 理资源信息,虚拟化全局物理资源,构建全局虚拟资源信息并呈现给 操作系统;操作系统基于所感知的虚拟资源集,调度、执行进程,管 理、分配资源,对底层的分布式虚拟机监视器透明;分布式虚拟机监 视器截获并代理操作系统执行访问资源的操作,实现虚拟资源到物理 资源的映射,操纵物理资源。这样,保证了操作系统既能够感知到机 群系统所拥有的资源,又能够管理和使用所感知的资源,从而隐藏了 底层硬件的分布式特性,使整个机群对操作系统呈现为一台 cc-NUMA虚拟机,实现了SMP服务器机群的单一系统映像。
分布式虚拟机监视器的功能是感知、整合、虚拟化底层的物理资 源,将整合后的全局系统资源呈现给客户操作系统,截获并代理操作 系统执行所有的资源访问操作,向操作系统通报中断信息等。操作系 统的功能是管理、分配它所感知到的全局虚拟资源,加载用户作业运 行,处理虚拟中断等。
本发明通过分布式虚拟机监视器和操作系统的配合与协作成功 地实现了整个机群系统的单一系统映像,具有下列优点:
1、单入口点:因为每个结点上部署的分布式虚拟机监视器是 完全对等的,在其之上运行的操作系统只有一个,所以用户无论从哪 个结点登陆系统所获得的用户视图是一致的,也就是说,在用户看来 整个机群就是一个系统环境。同理,单点控制得到支持。
2、位置透明的全局文件系统:由于操作系统是基于分布式虚 拟机监视器为其整合的全局资源来加载和运行的,并且操作系统负责 管理和分配全局虚拟资源,因此整个虚拟文件系统是由操作系统创建 和管理的,也就是说整个系统只有一个文件系统,所以对用户来说是 位置透明的。
3、单一I/O空间:首先,操作系统感知到的是全局的I/O资 源;其次,操作系统负责管理和分配虚拟的I/O资源,不受分布式虚 拟机监视器的干涉;最后,操作系统在分布式虚拟机监视器的支持下 能够进行跨结点的I/O操作,也能够响应跨结点的I/O设备中断。因 此,对于操作系统和用户来说整个系统的I/O空间是统一的。
4、单一存储空间:首先,分布式虚拟机监视器通过MMU虚 拟化模块、DSM模块、指令集虚拟化模块和通信模块的协作,将整 个机群的内存资源整合为一个统一的内存空间,并将客户操作系统负 责管理和使用的内存空间通过eBIOS模块呈现给客户操作系统;其 次,客户操作系统能够自由地管理和分配其所感知的全局虚拟内存资 源;最后,分布式虚拟机监视器通过MMU虚拟化(影子页表技术) 技术和DSM技术支持客户操作系统进行跨结点的内存访问。所以, 通过虚拟化技术,整个机群呈现给客户操作系统的是一个统一的存储 空间。
5、单一进程空间:首先,分布式虚拟机监视器通过指令集虚 拟化模块整合全局的处理器资源并呈现给客户操作系统;其次,客户 操作系统负责管理和分配所有的虚拟处理器资源,并基于此加载客户 进程运行;再次,由于所有进程都是由客户操作系统进行管理和调度, 不受分布式虚拟机监视器的影响,所以进程号是统一的;最后,进程 的指令和数据的跨机器传输是通过缺页异常的方式实现的,也就是通 过内存一致性
算法解决的。这样,通过单一的物理地址空间来确保单 一进程空间的正确性。比如,Guest OS将某个进程加载到另一台物理 机器上的某个CPU上运行,该CPU的指令
指针就会指向该进程代码 段的第一条指令的地址,CPU在取指令时,发现指令所在页面不在 本机上,则通过DSM算法将该页面读入本机,然后进行取指、执行。 这样就通过内存管理策略,透明地实现了进程跨物理
节点执行,也就 是实现了单一的进程空间。
本发明基于虚拟化技术,通过分布式虚拟机监视器和支持 cc-NUMA架构的客户操作系统的密切配合,成功地实现了整个服务 器机群系统的单一系统映像。具有透明性好、性能较高、应用面广和 实现难度适中等优势。
附图说明
图1为本发明所述系统结构
框图。
图2为本发明所述DVMM结构框图。
图3为本发明所述DVMM各个模块之间的关系框图。
具体实施方式
实施例1
本发明在商用的SMP服务器裸机上,设计、开发并部署分布式 虚拟机监视器DVMM(Distributed Virtual Machine Monitor),通过 DVMM实现单个SMP服务器结点的物理资源的虚拟化,通过分布式 DVMM之间的通信协作,实现全局资源的感知、整合、管理和调度, 为上层操作系统呈现一个具有单一系统映像的cc-NUMA结构特征的 虚拟服务器。
如图1所示,本发明整个系统逻辑上分成三个层次,
自下而上, 分别为物理硬件层、分布式虚拟机监视器DVMM层、操作系统层。 各层的构成和功能如下:
第一层为物理硬件层。该层可以包括若干个SMP架构的物理服 务器结点,每个结点可以有若干个CPU,每个CPU可以具有若干个 计算核,CPU支持硬件虚拟化(Intel VT-x);各物理结点通过千兆以 太网连接(或者通过infiniband等高速网络连接)。如图1所示,本实 施例系统中包括四个SMP架构的物理服务器结点,每个结点具有两 个CPU,每个CPU具有两个计算核,CPU支持硬件虚拟化(Intel VT-x);每个结点具有4G字节的物理内存空间,73G的SAS
硬盘存 储器;四个结点通过千兆以太网连接起来,构成系统的物理硬件结构。 该层是整个系统的物理基础。
第二层是分布式虚拟机监视器(DVMM)层,由各结点上的虚拟 机监视器(VMM)共同组成。在每个结点的硬件之上,部署一个虚 拟机监视器(VMM),通过VMM实现本结点硬件资源的虚拟化和管 理;各结点VMM之间通过底层通信软件,经由千兆以太网进行相互 通信,实现各VMM之间的协作。通过各VMM之间的协作,实现对 全局硬件资源的感知和整合,并按照操作系统启动时所需要的信息格 式进行整合,使整个机群系统对操作系统呈现为具有单一系统映像的 cc-NUMA架构特征的虚拟服务器系统,即,整个系统具有统一的内 存空间,统一的进程空间,统一的控制点。
第三层是操作系统层,可选用支持cc-NUMA架构的各种操作系 统。本实施例所述系统选用LINUX的支持cc-NUMA架构的版本。 操作系统基于DVMM所整合的系统资源集进行加载和初始化,因而, 操作系统感知到的是整个系统的全部硬件资源,而不是单一结点的硬 件资源。操作系统以其感知的资源为基础,进行进程的调度和资源的 分配与管理。通常的指令执行和虚拟资源的分配、管理由操作系统负 责,对底层的DVMM是透明的;当操作系统执行敏感指令、出现中 断或异常时,由硬件虚拟化机制保证系统控制权切换到DVMM, DVMM区分不同原因进行针对性的处理,将结果返回给操作系统; 必要时,各结点DVMM之间会进行协作,共同完成任务。
现行的各类面向cc-NUMA架构的并行软件可以不经修改地运行 于该虚拟服务器之上。
如图2所示,DVMM按照功能分成如下几个模块。
DVMM初始化模块:该模块的功能是在各个结点上引导并运行 DVMM。具体包括加载DVMM映像;初始化基本的软件运行环境; 初始化DVMM的各个模块所必须的数据结构;为DVMM各个模块 构建必要的上下文环境;加载DVMM的各个功能模块;为引导客户 操作系统做准备。
eBIOS模块(extended Basic Input/Output System扩展的基本输入 输出系统):该模块的主要功能是收集、整合并向客户操作系统提供 整个系统的资源配置。eBIOS模块在DVMM初始化阶段,一方面通 过本机BIOS获得本结点的资源信息,另一方面通过与其它VMM之 间的通信收集其它结点的资源信息,然后按照操作系统引导所需要的 格式将所感知的全局资源信息进行整合,并在客户操作系统引导时依 照客户操作系统的请求呈现给客户操作系统,使得客户操作系统不但 可以获得启动所必须的信息,同时也能感知到整个系统的资源。
指令集系统(ISA Instruction System Architecture)虚拟化模块: 该模块的功能是实现指令集系统虚拟化,并与中断虚拟化模块协作使 客户操作系统如同控制本地CPU一样地控制分布于不同物理结点上 的CPU,从而使客户操作系统能够管理和调度整个机群系统的计算 资源。具体是在Intel VT-X技术的支持下,利用VT提供的陷入/返回 功能在执行客户指令流的特定情况下触发陷入(这些特定情况包括执 行特权指令、发生异常和发生硬件中断),将控制权转移至DVMM, DVMM区分陷入原因,有针对性地进行处理后,将控制权返还客户 操作系统,从而实现DVMM对客户操作系统的监视和控制。
I/O虚拟化模块(Input/Output输入输出系统):该模块的功能是 使客户操作系统可以感知并使用整个机群上的I/O资源。具体是通过 指令集虚拟化的方式接管客户操作系统的I/O操作,根据由eBIOS模 块所生成的全局I/O资源表,判别是否本地I/O操作,如果是本地I/O 操作,则DVMM执行所截获的I/O指令,并将结果反馈给客户操作 系统,随后将系统控制权返还客户操作系统;如果是跨结点的I/O操 作,则DVMM将I/O指令传至宿主结点(I/O设备所在结点)的 DVMM,宿主结点的DVMM执行I/O指令,并将结果传回请求结点 DVMM,请求结点的DVMM将结果反馈给客户操作系统,随后将系 统控制权返还客户操作系统。这样,客户操作系统就能像利用本地资 源一样利用整个机群的I/O资源。
中断虚拟化模块:该模块的功能是实现中断控制机制的虚拟化, 负责以虚拟中断的方式通知客户操作系统中断事件的到达。是实现 I/O虚拟化和CPU虚拟化的基础。具体是通过软件对各种可编程中断 控制逻辑进行模拟,一方面,该模块截获客户操作系统对可编程中断 控制器的操作,并相应地修改虚拟可编程中断控制器的内容以反映客 户操作的效果,另一方面,该模块根据硬件中断的情况,修改虚拟可 编程中断控制器的内容以便将硬件中断的情况呈现给客户操作系统, 同时,通过底层通信机制实现跨结点的中断通知。
MMU虚拟化模块(Memory Management Unit内存管理单元):该 模块的功能是在保证客户线性地址到客户物理地址映射的同时,实现 客户线性地址到机器物理地址的映射,保证客户操作系统在虚拟化的 地址空间中正确地运行。同时也是实现DSM(Distributed Shared Memory)的基础。具体是将地址空间区分为三个层次,即客户线性 地址、物理地址和机器地址,其中,线性地址是指客户操作系统寻址 空间0-4G,物理地址是DVMM分配给客户操作系统使用的物理内存 的编址,机器地址是真实的物理内存的地址,也就是总线地址。客户 操作系统管理的页表维护线性地址到物理地址的映射,但这只是形式 上的,不是真正的操作地址;DVMM维护一个与客户页表保持一致 的页表,称为客户页表的影子页表,影子页表中维护客户线性地址到 机器地址的映射,这才是真正的用于机器寻址的页表;DVMM通过 截获缺页故障、TLB刷新等操作,维持影子页表与客户页表的一致。 通过影子页表与客户页表的同步,也就反映了客户操作系统的地址映 射操作的效果。
DSM模块(Distributed Shared Memory分布式共享存储):该模块 的功能是在MMU虚拟化的基础上实现透明的DSM,将整个系统的 内存资源整合成一个分布式共享内存,为上层客户操作系统提供一个 虚拟化的单一客户物理地址空间,客户操作系统如同在本地运行一样 地运行于该单一客户物理地址空间中,保证客户操作系统可以充分利 用整个系统的内存资源。具体策略是采用IVY算法,实现顺序一致 性模型;DVMM维护物理地址到机器地址的映射表P2M表,其中包 含内存页面所在结点的信息。当客户所要读取的页面在本地结点时, 直接根据影子页表的寻址结果进行读写操作即可;当客户所要读写的 内存页面不在本结点时,若为读操作,则拷贝该页面的一个副本到本 地结点,再从该副本页面中读取数据,若为写操作,则将目标页面迁 移至本结点,将页面的所有者更新为本结点,使该页面的所有副本页 面无效,然后再对目标页面进行写操作。这样,就既维持整个内存系 统的一致性,又实现了单一的内存空间,使客户系统像使用本地内存 一样地使用外部结点的内存资源。
通信模块:该模块的功能是为运行于各个结点上的相互协作的各 个DVMM提供低延迟、高带宽、可靠的通信服务。具体是在无操作 系统支持的情况下,通过底层通信软件,实现DVMM之间的通信和 协作。包括设计、实现简洁清晰的协议栈和网卡驱动程序两个部分。
DVMM各个模块之间的关系如图3所示,
指令集虚拟化模块是整个DVMM系统的入口点,在以下三种情 况下,VT-x会中断客户指令流的执行,陷入到DVMM中:
1、客户执行必须由DVMM模拟执行才能得到预期结果的指令, 这些是特权指令和敏感指令。
2、客户指令的执行引发异常,而该异常必须由DVMM捕获才能 实现相应的虚拟化策略。
3、外部设备中断产生,DVMM负责按照I/O虚拟化策略处理中 断。
当产生陷入时,DVMM的指令集虚拟化模块负责分析引发陷入的 原因,并调用DVMM的其它模块模拟相应指令的执行、处理异常或 中断或者实现相应的虚拟化策略。
eBIOS模块仅在客户操作系统启动时起作用。指令集虚拟化模块 捕获客户操作系统在引导时的中断调用,并将相应的信息传递给 eBIOS模块。eBIOS模块根据客户操作系统请求信息的类型,按照 与传统BIOS兼容的方式将整个机群的信息反馈给客户操作系统,完 成客户操作系统启动时BIOS调用的功能。eBIOS模块同时通过中断 虚拟化模块、I/O虚拟化模块、通信模块完成客户操作系统引导前 BIOS所做工作,感知并生成整个系统的资源信息,一方面用于 DVMM对全局资源的虚拟化,另一方面用于确保客户操作系统的顺 利引导。
通信模块是各结点DVMM中相同模块之间协作的基础,通信模 块将本地各模块的远程通信请求经过协议栈处理后可靠、高效地送达 目的结点。同时负责处理其它结点发来的通信请求,并根据不同的请 求调用相应模块进行服务。
指令集虚拟化模块与通信模块都可能调用其它模块。一般地,由 指令集虚拟化模块发起的调用都是为本地客户指令流提供服务,由通 信模块发起的调用都是为远程客户指令流提供服务。
I/O虚拟化模块在接受到从指令集虚拟化模块发出的请求后,首先 判断本次I/O是否为本地I/O,如果是则直接操纵本地外部设备完成 此次请求;如果是远程I/O请求,则调用通信模块,向远程结点发出 I/O操作请求。当I/O虚拟化模块接收到远程I/O请求后,对本地I/O 设备进行操作,并将结果经由通信系统返回至请求结点,请求结点根 据收到的操作结果,相应地更新客户系统的状态以体现此次I/O操作 的结果,这样就完成一次I/O操作的模拟。
中断虚拟化模块主要是为客户操作系统提供虚拟的可编程中断控 制器服务。当指令集虚拟化模块发起调用时,中断虚拟化模块要负责 处理:模拟客户操作系统对虚拟可编程中断控制器操作执行的结果; 将DVMM可见的外部中断向量经过相应的可编程中断控制器模拟例 程转化为客户操作系统可识别的虚拟中断向量,并向客户操作系统注 入一个虚拟的中断。当通信系统发起对中断虚拟化模块的调用时,是 为了模拟跨处理器中断的执行。
MMU虚拟化模块一般只由指令集虚拟化模块调用,当指令集虚 拟化模块捕获客户指令流中MMU相关操作,或者与MMU有关异常 时,调用MMU虚拟化模块进行处理。当MMU虚拟化模块发现需要 实现分布式共享存储时,也就是客户所请求的页面不在本结点时,会 调用DSM模块进行页面迁移。
当DSM模块被MMU虚拟化模块调用时,DSM模块作为请求发 起者通过通信系统向远程结点请求相应的页面。当DSM模块被通信 模块调用时,DSM模块作为服务方,对DSM请求进行服务,并通过 通信系统发送结果。
当不同模块完成各自任务需要返回时,会调用指令集虚拟化模块 返回客户指令流。
通过以上各模块间的紧密协作,利用分步式虚拟机监视器,在具 有SMP架构的物理服务器机群上虚拟出一个具有单一系统映像的 cc-NUMA架构的虚拟服务器,使支持cc-NUMA架构的客户操作系 统可以不经修改地运行于该虚拟服务器之上。
本发明整个虚拟机系统的工作流程分为两个大的阶段,即初始化 阶段和运行阶段。初始化阶段包括DVMM自身的加载、运行阶段和 客户操作系统的加载和启动阶段;运行阶段是指客户操作系统运行 后,执行用户软件的阶段。
(1)初始化阶段
开机后,DVMM初始化模块开始运行,它主要完成以下工作。
①加载DVMM映像,然后进行单结点的初始化工作,主要包括 创建内存分配表、中断向量表(IDT)、全局描述符表(GDT);
②初始化网卡设备和通信子系统,加载eBIOS模块,通过各结 点eBIOS模块之间的通信,感知其它结点的资源信息,将感知到的 全局资源信息按照BIOS的常规格式进行分类整合,生成全局资源信 息;
③DVMM基于全局资源表进行全局内存的初始分配,进行单结 点处理器的初始化工作,加载MMU虚拟化模块、DSM虚拟化模块、 I/O虚拟化模块和中断虚拟化模块,完成单结点的启动和初始化;
④进行跨结点多CPU的初始化,建立全局中断向量表,为客户 操作系统构建全局信息表;
⑤加载处理器虚拟化模块,启动客户操作系统。在客户操作系统 启动的过程中,eBIOS模块负责为其提供系统拥有的资源信息,这样 保证客户操作系统能够感知到整个机群系统的资源,并能够管理和使 用这些资源,也就是说整个机群系统呈现给客户操作系统的是一个单 一映像的cc-NUMA系统。
(2)运行阶段
客户操作系统基于全局资源信息启动以后,基于其所管理的资 源进行进程的调度和资源分配,正常地运行作业,无需DVMM的干 预,也就是说,客户软件的运行对DVMM是透明的。只有当客户执 行特权指令、出现异常或发生硬件中断时,才由硬件虚拟化机制触发 VM exit,进入DVMM环境,DVMM分析退出的原因,调用相应的 功能模块进行处理,期间可能需要进行跨结点DVMM之间的协作才 能完成服务。完成服务后,DVMM通过VM entry机制返回客户状态, 期间有可能通过VMCS结构向客户操作系统注入中断。此后客户操 作系统继续执行用户作业。
例如,当客户操作系统发生缺页异常时,就会引起VM exit进入 DVMM环境,DVMM通过分析退出原因获知客户发生了缺页异常, 接着会检查内部数据结构P2M表确定请求的页面是否在本结点,分 别进行处理。如果请求页在本结点,则DVMM调用MMU虚拟化模 块更新客户页表以及由DVMM维护的与客户页表保持一致的“影子 页表”,然后返回客户环境继续执行;如果请求页面在远程结点,则 MMU虚拟化模块调用DSM模块,通过通信机制向远程结点的 DVMM请求页面,远程结点的DVMM收到页面请求后,调用MMU 虚拟化模块和DSM模块,经由通信机制将请求页面发送给请求结点, 请求结点收到所需页面后,更新客户页表和“影子页表”的映射项,然 后返回客户环境继续执行。这样就完成了一次缺页异常的处理,也是 完成了客户操作系统和DVMM之间的一次交互过程。
综上所述,在系统运行期间,虚拟资源的管理和分配,用户进程 的调度、执行由客户操作系统负责,客户操作系统和DVMM之间的 唯一交互途径是通过VT-x所提供的VM exit和VM entry机制。通过 客户操作系统和DVMM之间的相互协作,实现了整个服务器机群系 统的单一系统映像,从而在分布式的服务器机群之上可以透明地运行 支持cc-NUMA架构的客户操作系统和客户应用程序。
DVMM与Virtual Multiprocessor和vNUMA比较
层次 技术 难 度 透 明 对 称 性 能 SMP结 点 架构 Multiprocessor 应用 泛虚拟 高 差 否 低 不支持 IA-32
层 化 vNUMA 系统 软件 预虚拟 化 较 高 好 否 较 高 不支持 IA64 DVMM 系统 软件 硬件虚 拟化 较 低 好 是 高 支持 IA-32
由表1可知,与Virtual Multiprocessor和vNUMA相比,本发明 DVMM具有如下优势:首先,DVMM支持SMP结点,能够实现SMP 服务器机群的单一系统映像,而Virtual Multiprocessor和vNUMA都 不支持SMP结点,因而不能够实现SMP服务器机群的单一系统映像; 其次,DVMM利用最新的硬件虚拟化技术,在硬件的支持下实现全 虚拟化,无需修改客户操作系统,因而设计和实现难度较低,而Virtual Multiprocessor和vNUMA分别采用泛虚拟化和预虚拟化技术,都需 要修改客户操作系统,实现难度高且应用受限;再次,DVMM在硬 件辅助下实现,运行在裸机之上,因而性能高,而Virtual Multiprocessor和vNUMA都是以纯软件方式实现,性能较低,并且 Virtual Multiprocessor实现在应用层,穿越的软件层次多,因而性能 更低;最后,DVMM中的各节点是对称的,而Virtual Multiprocessor 和vNUMA中的节点都有主次之分。此外,DVMM实现在
系统软件 层而Virtual Multiprocessor实现在应用层,因而DVMM在透明性方 面优于Virtual Multiprocessor;IA-32比IA64应用广泛,因而DVMM 比vNUMA具有更广的应用前景和更高的实用价值。
最后应说明的是:以上实施例仅用以说明本发明而并非限制本发 明所描述的技术方案;因此,尽管本
说明书参照上述的各个实施例对 本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解, 仍然可以对本发明进行修改或等同替换;而一切不脱离本发明的精神 和范围的技术方案及其改进,均应涵盖在本发明的
权利要求范围中。