首页> 中国专利> 一种具备单一系统映像的服务器机群系统

一种具备单一系统映像的服务器机群系统

摘要

本发明公开了一种具备单一系统映像的服务器机群系统,所述系统包括硬件层、分布式虚拟机监视器层和操作系统层;所述硬件层包括多个结点,所述结点的CPU支持硬件虚拟化,各结点通过高速网络连接;所述分布式虚拟机监视器层为在每个结点的硬件之上部署一个虚拟机监视器,各结点上的虚拟机监视器之间通过底层通信软件、经由高速网络进行通信;操作系统层为支持cc-NUMA的各类商用操作系统;现行的各类面向cc-NUMA架构的并行软件可以不经修改地运行于所述系统之上。它基于对硬件资源的虚拟化,在操作系统之下实现了服务器机群系统的单一系统映像。具有透明性好、性能较高、应用面广和实现难度适中等优势。

著录项

  • 公开/公告号CN101271401A

    专利类型发明专利

  • 公开/公告日2008-09-24

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN200810094232.2

  • 申请日2008-04-23

  • 分类号G06F9/455(20060101);G06F9/46(20060101);

  • 代理机构11244 北京市合德专利事务所;

  • 代理人王文会

  • 地址 100083 北京市海淀区学院路37号

  • 入库时间 2023-12-17 20:45:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-18

    未缴年费专利权终止 IPC(主分类):G06F9/455 授权公告日:20100414 终止日期:20170423 申请日:20080423

    专利权的终止

  • 2011-11-16

    专利权的转移 IPC(主分类):G06F9/455 变更前: 变更后: 登记生效日:20110926 申请日:20080423

    专利申请权、专利权的转移

  • 2010-04-14

    授权

    授权

  • 2008-11-19

    实质审查的生效

    实质审查的生效

  • 2008-09-24

    公开

    公开

说明书

技术领域

本发明涉及一种具备单一系统映像的服务器机群系统,具体地说,涉及一种利用虚拟化技术实现单一系统映像的服务器机群系统。

背景技术

虚拟化是一个广义的术语,在计算机方面通常是指计算和处理在虚拟的基础上而不是真实的基础上运行。虚拟化技术是指对物理资源进行抽象的技术。虚拟化技术可在硬件和操作系统之间构建一个虚拟平台,实现在同一个硬件平台上构建相互隔离的多个运行域,每一个运行域中都可以分别运行自己的操作系统和应用软件。

虚拟化技术起源于20世纪60年代,IBM公司在System/360计算机系统中首先运用虚拟化技术实现了虚拟机,随着System/370等系列机的成功推广,虚拟化技术逐渐成为大型机中必然采用的一项重要技术,主要目的是让更多的用户共享昂贵的硬件资源。

二十世纪八十年代,随着集成电路技术的飞速发展,计算机硬件成本急剧降低,特别是随着PC等微型机的广泛使用,共享硬件资源的必要性随之降低,关于虚拟化技术的研究和开发工作几近停顿。

二十世纪九十年代末以来,随着网络技术的迅速发展以及PC和服务器性能的大幅提高,各种新的网络应用不断涌现,同时也伴随着出现很多新的问题,如,安全性问题、可用性问题、提高服务器和PC机的资源利用率问题等。为了解决这些问题,虚拟化技术再次被使用,虚拟机及虚拟化技术又成为当今计算机界一个重要的研究热点。

当今的虚拟化技术研究的重点是基于ISA(指令集系统结构)虚拟化构建虚拟机监视器VMM(Virtual Machine Monitor)。按照实现方式不同可以分为全虚拟化技术和半虚拟化技术,全虚拟化是完全模拟客户软件运行所需要的硬件环境,客户操作系统和应用软件可以不经修改地运行在虚拟环境中;半虚拟化是为客户软件模拟一个和物理环境不完全相同的虚拟硬件环境,需要修改客户操作系统,使之与VMM相互协作,共同完成执行客户软件的任务。

虚拟化技术可以通过两个方向来抽象物理资源:一个方向是“分”,即把一个物理的计算机虚拟成若干个独立的逻辑计算机;另一个方向是“合”,就是把若干个分散的物理计算机虚拟为一个大的逻辑计算机。

当前虚拟化技术研究主要集中于服务器虚拟化(ServerVirtualization)。服务器虚拟化主要是解决服务器系统的整体效能及资源利用率问题。目前,服务器虚拟化研究的热点是位于操作系统之下监控器层面的虚拟化技术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和IBMsystem/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 MachineExtensions)模式,用于运行虚拟机系统。其中又分为两个子操作模式,即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、在应用级实现单一系统映像

这种实现方式是直接面向应用程序的。可以采用在应用程序中加入一些单系统映像的特征和扩展,以达到用户对应用程序的需求,但是以这种方式实现单一系统映像时,底层的分布集群环境对程序员来说并非完全透明。这种方式的典型代表是并行数据库软件如ParallelOracle和并行系统管理软件如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支持硬件虚拟化(IntelVT-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 SharedMemory)的基础。具体是将地址空间区分为三个层次,即客户线性地址、物理地址和机器地址,其中,线性地址是指客户操作系统寻址空间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利用最新的硬件虚拟化技术,在硬件的支持下实现全虚拟化,无需修改客户操作系统,因而设计和实现难度较低,而VirtualMultiprocessor和vNUMA分别采用泛虚拟化和预虚拟化技术,都需要修改客户操作系统,实现难度高且应用受限;再次,DVMM在硬件辅助下实现,运行在裸机之上,因而性能高,而VirtualMultiprocessor和vNUMA都是以纯软件方式实现,性能较低,并且Virtual Multiprocessor实现在应用层,穿越的软件层次多,因而性能更低;最后,DVMM中的各节点是对称的,而Virtual Multiprocessor和vNUMA中的节点都有主次之分。此外,DVMM实现在系统软件层而Virtual Multiprocessor实现在应用层,因而DVMM在透明性方面优于Virtual Multiprocessor;IA-32比IA64应用广泛,因而DVMM比vNUMA具有更广的应用前景和更高的实用价值。

最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,均应涵盖在本发明的权利要求范围中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号