将存储器从一个虚拟机动态再分配到另一个的方法、装置和系统的制作方法

文档序号:6566661阅读:153来源:国知局
专利名称:将存储器从一个虚拟机动态再分配到另一个的方法、装置和系统的制作方法
将存储器从一个虚拟机动态再分配到另一个的方法、装置和系统 背景技术随着处理器技术的进步,对虚拟技术的兴趣也稳步增长。虚拟技术的一个方面使得运行虚拟机监控器("VMM")的单个主机能够提 供主机的多个抽象(abstraction)和/或视图(view),使得主机的底层硬件 表现为一个或多个独立操作的虚拟机("VM")。每个VM可以用作 自主式平台,运行其自己的操作系统("OS")和/或软件应用程序。 VMM管理主机上的资源分配,并根据循环法(round-robin)或其它预 定方案执行各种虚拟机之间的循环所必需的上下文转接。


本发明以实例的方式来说明,而不局限于附图,附图中相似的参 考标记指示相似的元件,并且其中图1说明了一个典型的虚拟机主机的实例; 图2说明了本发明一个实施例的概观;图3说明了根据本发明一个实施例向图2中的"弹出的"存储器 分配新的VM的概观;以及图4是说明本发明的一个实施例的流程图。
具体实施方式
本发明的实施例提供了一种不需要重新启动虚拟机上的操作系 统就能将资源从一个虚拟机动态再分配到另一个的方法、装置和系 统。说明书中提及的本发明的"一个实施例"或"一实施例"意味着 结合该实施例描述的一个特定特征、结构或特性包括在本发明的至少 一个实施例中。因此,在整个说明书的各个地方出现的短语"在一个 实施例中"、"根据一个实施例"等的出现不一定都指代相同的实施例。图1说明了一个典型的虚拟机主机平台("主机100")的实例。
如前所述,虚拟机监控器("VMM130")通常运行在主机平台上,并 向其它软件提供平台的抽象和/或视图(也称作"虚拟机"或"VM")。 虽然只说明了两个VM分区("VM 110"和"VM 120",下文中统称 为"VM"),但是这些VM只是说明性的,也可以向主机添加额外的 虚拟机。VMM 130可以以软件(如,作为一个独立的程序和/或主机操 作系统的一部分)、硬件、固件和/或其任意组合中来实现。VM 110和VM 120可以分别用作自主式平台,运行它们自己的 "客户操作系统"(即,由VMM 130作为主机的操作系统,表示为"客 户OS 111"和"客户OS 121",下文中统称为"客户OS")和其它软 件(称作"客户软件112"和"客户软件122",下文中统称为"客户 软件")。每个客户OS和/或客户软件如同运行在专用计算机上而不 是在虚拟机上一样进行操作。也就是说,每个客户OS和/或客户软件 可以预期控制各种事件,并可以访问主机100上的硬件资源。事实上, VMM 130对事件和硬件资源具有最终控制,并根据它自己的策略向 虚拟机分配资源。图1中的每个VM通常包括高级配置和电源接口("ACPI")驱动 器("ACPI OS驱动器113"和"ACPI OS驱动器123"),用于监控 和/或动态再分配存储器。ACPI(如2002年10月11日的修订版2.0b) 是用于平台配置和电源管理方案的公开的行业标准规范。ACPI驱动 器是当前已有的,并且对本领域普通技术人员是公知的。这些驱动器 用于使虚拟主机上的VMM和VM之间能够进行典型的ACPI交互。 虽然下面的描述假设使用ACPI协议,但是也可以在不脱离本发明的 实施例的精神的情况下,使用其它的配置协议。各种存储器资源对于主机100是可用的(在图1中集中表示为存 储器资源140,其中存储器资源140的一部分可以被分配给VM 110, 而另一部分可以被分配给VM 120)。将存储器资源分配给主机100上 的各个VM是由VMM 130来管理的。通常,当VM被实例化时, VMM130向VM分配存储器资源。现有的再分配这些资源以增加一 个新VM的方案通常很麻烦。例如,VMM 130可能关闭主机100上 的VM,然后重新启动所有的VM(最初的和新的VM),同时再分配
资源。这种方案使各个VM中的客户OS检测存储器资源中的变化以 作为VM初始化过程的一部分。但是,该方案不允许任何形式的资源 的动态再分配,并且必须要求主机100上的活动的VM "重新启动", 以便能够实例化新的VM。或者,专有软件(如,软件驱动器,在图1的VM 110中概念性地 示出为"软件驱动器150")可以被添加到主机100上的每个VM,用 来处理存储器资源140的再分配。软件驱动器150可以通过从一个 VM有效地移除存储器资源,并使VMM 130将这些资源再分配到其 它VM,来负责存储器资源140的再分配。可能不得不创建并维护多 个软件驱动器,以用于不同类型和/或版本的操作系统。向VM添加 软件驱动器通常包括向VMM130添加显著数量的新代码。此外,这 些驱动器还可能需要软件驱动器和VMM130之间的专用接口。最后, 这个方案难于维护,并可能导致VMM130的稳定性问题,从而影响 主机100的性能。本发明的实施例能够动态再分配虚拟主机上的存储器资源。更具 体而言,在本发明的一个实施例中,存储器资源可以被再分配,而不 必"重新启动"主机100上的VM,并且不需要额外的软件。图2进 一步详细说明了本发明的一个实施例。如图所示,改进的VMM230 可以与各种VM上的ACPI OS驱动器113和ACPI OS驱动器123相互作用,以监控和/或动态再分配存储器,同时避免向VM增加软件 的需要。如下面进一步详细描述的,本发明的实施例中的改进的VMM230可以使用ACPI驱动器来动态再分配主机100上的存储器。对本 领域普通技术人员来说显而易见的是,改进的VMM 230可以包括对 现有VMM和/或可能结合现有VMM工作的其它元件进行的改进。 因此改进的VMM 230可以以软件(如,作为一个独立的程序和/或主 机操作系统的一部分)、硬件、固件和/或其任何组合来实现。存储器资源140可以包括"静态"部分和"动态"部分。在一个 实施例中,如图2中所示,存储器资源140的一部分("静态存储器 214"和"静态存储器224")可以被专用于每个VM,而存储器资源 140的另一部分可以在VM 110和VM 120之间动态分配和/或共享。 在替换实施例中,所有的存储器资源140可以被VM 110和VM 120 共享,即,VM可能不具有供每个专用的存储器的静态部分,而是可 能每个都被动态分配了适当数量的存储器。出于解释的目的,下面使 用前一种假设(即,存储器的静态部分和动态部分)。在这个实施例中, 动态存储器的一部分可以被初始分配给每个VM(在图2中显示为动 态存储器215被分配给VM 110和动态存储器225被分配给VM 120), 但是这些部分可以在任何时候被动态地移除和/或添加。根据本发明 的一个实施例,改进的VMM 230可以确定存储器资源应该被再分配。 这个决定可以基于提供给改进的VMM 230的标准来自动做出,和/ 或可以响应于来自VM的对额外资源的请求而做出。对这个实例来 说,假设资源被从VM110移除,并被再分配给VM120。在做出再分配资源的决定后,改进的VMM 230可以向VMM 110 产生ACPI通用事件("GPE")。在一个实施例中,由改进的VMM230 产生的ACPI事件可以用软件仿真,而不是由主机100的硬件产生和 /或处理。在接收到GPE后,VM 110中的客户OS 111可以读取ACPI 事件状态寄存器和/或进行其它操作(如,在主机总线中进行与配置寄 存器有关的查询(下文中称为"配置查询")),以确定GPE的目的。 改进的VMM 130可以侦听这些操作并向VM 110通知动态存储器 215正在被移除。结果是,虽然存储器不是实际上被"移除",但是 对VM 110来说看起来是在被移除。在接收到这个信息后,客户OS 111 可以与主机100的硬盘交换存储器中的任何当前信息,并且此后"弹 出"动态存储器215,即,客户OS 111可以发送消息给动态存储器 215,以通知存储器它正在被关闭和/或移除。因为事实上动态存储器215不是实际上被关闭,所以改进的 VMM 230侦听从VM 110到动态存储器215的消息。其后,动态存 储器215变得可用,以被再分配给另一VM。改进的VMM230现在 可以将动态存储器215再分配给主机100上的另一 VM,如,VM 120(如图3中所示)。尤其是,在一个实施例中,改进的VMM230可 以再次产生仿真的ACPI GPE,这次是给VM 120的。VM 120中的客 户OS 121可以读取ACPI事件状态寄存器和/或进行其它操作,以确
定GPE的原因。此外,改进的VMM 230可以侦听这些操作,并向 VM 120通知动态存储器215是可用的。在一个实施例中,改进的 VMM230可以通过在客户VM 120中的存储器空间中创建设备表(如 ACPI规范所定义的)来通知VM 120。在接收到这个信息后,客户OS 121结合ACPI OS驱动器123可以将动态存储器215添加到VM 120 可用的存储器资源(如,将存储器添加到页面表中,等),并且其后具 有对这个存储器的独占访问,直到设备被另一 VM请求和/或改进的 VMM 230决定再分配动态存储器215时。客户OS 121和ACPI OS 驱动器123如何向VM 121添加存储器的细节对本领域普通技术人员 是众所周知的,在此省略其进一步描述。因此本发明的实施例使改进的VMM 230能够将存储器从一个 VM动态地再分配到另一个,而不必重新启动客户OS 111和客户OS 121,并且不需要额外的软件。随着越来越多的VM在主机100上实 例化,这种灵活性将变得更加有价值,因为根据需要动态再分配存储 器资源的能力使得改进的VMM 230能够优化每个VM的性能(如, 通过确保存储器资源被有效地分配)。图4是说明本发明一个实施例 的概观的流程图。虽然下面的操作可以描述为顺序过程,但是许多操 作实际上可以被并行和/或同时执行。此外,在不脱离本发明实施例的精神的情况下,操作的顺序可以重新安排。在401中,改进的VMM 230接收请求和域做出再分配动态存储器215的决定。在402中,改 进的VMM 230可以给VM 110产生ACPI GPE, VM 110同时具有专 用于它的动态存储器215。如前面讨论的,虽然本发明的实施例在这 里针对ACPI进行描述,但是在不脱离本发明实施例的精神的情况下, 其它接口和/或协议可以用来实现同样的效果。在403中,VM110中 的客户OS 111可以读取ACPI事件状态寄存器和/或执行其它操作, 以确定GPE的原因。在404中这些操作可以被改进的VMM 230侦听, 并且改进的VMM 230可以向VM 110通知动态存储器215正在关闭。 其后,在405中,客户OS 111可以与主机100的硬盘交换动态存储 器215中的信息,并弹出该设备。在406中,改进的VMM230可以 向VM 120发送第二 ACPI GPE。在407中,VM 120中的客户OS 121
可以读取ACPI事件状态寄存器和/或执行其它操作,以确定GPE的 原因。在408中,这些操作可以被改进的VMM230侦听,并且改进 的VMM 230可以向VM 120通知动态存储器215是可用的。其后, 在409中,客户OS 121(结合ACPI OS驱动器123)可以将动态存储器 215映射为它可用的资源,然后,可以具有对动态存储器215的独占 访问。虽然上面的描述集中在运行多个VM的主机上,但是本发明的实 施例并不局限于此。而是,本发明的实施例可以在任何具有共享一个 总线的多个独立计算机系统(虚拟或其它)的平台上实现。因此,例如, 在一个具有多个独立计算机系统的服务器系统中,计算机系统中的一 个可以被用作故障时的备用系统。在主计算机系统故障时,可以通过 一个监控和/或管理组件将所有的存储器资源动态再分配给备用计算 机系统,从而使得服务器系统继续运行,而不必重新启动任何操作系 统,来利用本发明的实施例。各种其它类型的系统也可以从本发明的 其它实施例获益。根据本发明实施例的主机可以在多种计算设备上实现。根据本发 明的一个实施例,计算设备可以包括各种能够执行指令以实现本发明 的实施例的组件。例如,计算设备可以包括和/或连接到至少一个机器可访问介质。如本说明书中所使用的,"机器"包括但不限于,任 何具有一个或多个处理器的计算设备。如本说明书中所使用的,机器可访问介质包括存储和/或发送可被计算设备访问的任何形式的信息 的任何机制,机器可访问介质包括但不限于,可记录/不可记录介质(如 只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储 介质和闪速存储设备),以及电、光、声或其它形式的传播信号(如载 波、红外信号和数字信号)。根据一个实施例,计算设备可以包括各种其它已知的组件,如一 个或多个处理器。处理器和机器可访问介质可以使用电桥/存储器控 制器来可通信地连接,并且处理器能够执行存储在机器可访问介质中 的指令。电桥/存储器控制器可以连接到图形控制器,图形控制器可 以控制在显示设备上输出显示数据。电桥/存储器控制器可以连接到 一个或多个总线。 一个或多个这些元件可以与处理器一起集成在单个 插件上,或者使用多个插件或管芯。主机总线控制器,如通用串行总线("USB")主机控制器可以连接到总线,并且多个设备可以连接到 USB。例如,用户输入设备,如键盘和鼠标可以包括在计算设备中, 用于提供输入数据。在替换实施例中,主机总线控制器可以兼容各种 其它互连标准,包括PCI、 PCIExpress、火线(FireWire)和其它这种现 有的和将来的标准。在前述说明书中,己经参考其具体示例性实施例描述了本发明。 然而,可以理解,在不脱离所附权利要求中阐明的本发明的更宽的精 神和范围的情况下,可以对其进行各种变化和修改。因此,说明书和 附图应被认为是说明性的,而不是限制性的。
权利要求
1、一种用于将存储器从第一虚拟机(“VM”)动态再分配到第二VM的方法,包括向所述第一VM通知所述存储器已经被移除;使所述第一VM向所述存储器发出关闭指令;侦听所述关闭指令;以及向所述第二VM通知所述存储器可用。
2、 根据权利要求1所述的方法,其中向所述第一VM通知所述存储器已经被移除进一步包括代表所述存储器向所述第一 VM产生第一消息; 侦听来自所述第一VM的关于所述第一消息的原因的第一査询;以及响应于所述第一查询,向所述第一 VM通知分配给所述第一 VM 的所述存储器正在关闭。
3、 根据权利要求2所述的方法,进一步包括使所述第一 VM发 出指令以弹出所述存储器。
4、 根据权利要求1所述的方法,其中向所述第一VM通知所述 存储器已经被移除进一步包括根据高级配置和电源接口( "ACPI") 协议,向所述第一VM通知所述存储器已经被移除。
5、 根据权利要求1所述的方法,其中向所述第二VM通知所述 存储器可用进一步包括将所述存储器分配给所述第二 VM; 向所述第二 VM产生第二消息;侦听来自所述第二VM的关于所述第二消息的原因的第二查询;以及响应于所述第二査询,向所述第二VM通知所述存储器可用。
6、 根据权利要求5所述的方法,其中向所述第二 VM通知所述 存储器可用进一步包括根据高级配置和电源接口( "ACPI")协议,通 知所述第二 VM。
7、 根据权利要求5所述的方法,进一步包括侦听由所述第二 VM 发出的配置査询。
8、 根据权利要求1所述的方法,进一步包括接收用户请求,所 述用户请求要求将所述存储器从所述第一虚拟机再分配到所述第二 虚拟机。
9、 根据权利要求1所述的方法,其中将所述存储器从所述第一 虚拟机再分配到所述第二虚拟机是基于预定的分配策略的。
10、 一种能够动态再分配存储器的主机系统,包括 监控模块;连接到所述监控模块的第一计算机系统; 连接到所述监控模块的第二计算机系统;以及 连接到所述监控模块的物理设备,所述监控模块能够通过向所述 第一计算机系统通知所述存储器已经被移除,来将所述存储器从所述第一计算机系统动态再分配到所述第二计算机系统。
11、 根据权利要求10所述的系统,其中所述监控模块进一步能 够通过向所述第一计算机系统产生消息来向所述第一计算机系统通 知所述存储器已经被移除。
12、 根据权利要求11所述的系统,其中所述监控模块进一步能 够侦听由所述第一计算机系统向所述存储器发出的消息。
13、 根据权利要求10所述的系统,其中所述监控模块进一步能 够将所述存储器分配给所述第二计算机系统,并向所述第二计算机系 统通知所述存储器可用。
14、 根据权利要求10所述的系统,其中所述第一计算机系统和 所述第二计算机系统是主机上的虚拟机("VM")。
15、 一种包括机器可访问介质的产品,其中所述机器可访问介质 上存储有指令,当所述指令被机器执行时,通过如下过程使所述机器 将存储器从第一虚拟机("VM")动态再分配到第二VM:向所述第一 VM通知所述存储器已经被移除; 使所述第一 VM向所述存储器发出关闭指令; 侦听所述关闭指令;以及 向所述第二 VM通知所述存储器可用。
16、 根据权利要求15所述的产品,其中当所述指令被机器执行 时,进一步通过如下过程使所述机器向所述第一 VM通知所述存储器 已经被移除代表所述存储器向所述第一 VM产生第一消息; 侦听来自所述第一VM的关于所述第一消息的原因的第一查询;以及响应于所述第一査询,向所述第一VM通知分配给所述第一VM 的所述存储器正在关闭。
17、 根据权利要求16所述的产品,其中当所述指令被机器执行 时,进一步使所述机器使所述第一 VM发出指令,以弹出所述存储器。
18、 根据权利要求15所述的产品,其中当所述指令被机器执行 时,进一步使所述机器根据高级配置和电源接口("ACPI")协议,向 所述第一 VM通知所述存储器已经被移除。
19、 根据权利要求15所述的产品,其中当所述指令被机器执行 时,进一步通过以下过程使所述机器向所述第二 VM通知所述存储器 可用将设备分配给所述第二 VM; 向所述第二 VM产生第二消息;侦听来自所述第二VM的关于所述第二消息的原因的第二查询;以及响应于所述第二査询,向所述第二VM通知所述存储器可用。
20、 根据权利要求19所述的产品,其中当所述指令被机器执行 时,进一步使所述机器根据高级配置和电源接口("ACPI")协议,向 所述第二 VM通知所述存储器可用。
全文摘要
一种使虚拟机管理器(“VMM”)将存储器从一个虚拟机(“VM”)动态再分配到另一个的方法、装置和系统。VMM可以向存储器当前被分配的VM产生一个消息,并向该设备通知所述存储器正在关闭。其后当前VM可以将存储器的内容复制到主机硬盘,并弹出该存储器。然后VMM可以通知另一VM该存储器可用,然后第二VM可以将该存储器添加到其可用的存储器资源。
文档编号G06F9/455GK101120317SQ200680005223
公开日2008年2月6日 申请日期2006年1月30日 优先权日2005年2月17日
发明者R·曼戈尔德 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1