在多个信息处理系统之间执行虚拟机迁移的方法和设备转让专利

申请号 : CN200810215532.1

文献号 : CN101382906B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·P·卡特里R·霍尔穆特

申请人 : 戴尔产品有限公司

摘要 :

本发明公开了处理器架构之间的虚拟机迁移。更具体地,公开了一种用于执行VM迁移的系统和方法,所述系统和方法管理池中的机器集群动态迁移到相同的特征集或者状态。在某些实施方式中,池中的机器能够被配置以仿真某个特征集,从而能够在相似池之中进行VM迁移。可以通过屏蔽特征集报表或者激活/禁用特征集来进行仿真。对硬件中的仿真寄存器的处理发生在固件级别而不是操作系统或者监控程序级别。

权利要求 :

1.一种用于在多个信息处理系统之间执行虚拟机迁移的方法,该方法包括:通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息,以识别所述多个信息处理系统内具有共同特征集的处理器,所述共同特征集包括指令集等级兼容性;

将包括具有所述共同特征集的处理器的信息处理系统聚集到一起,以提供多个相似信息处理系统池;

向带外信息处理系统广播对应于所述多个池的特征;

等待带外信息处理系统识别每个带外信息处理系统应与哪个池相关联;以及执行从第一信息处理系统到所述多个相似信息处理系统池中的一个相似信息处理系统池中的信息处理系统的虚拟机迁移,所述虚拟机迁移将一个虚拟机从一个信息处理系统移动到另一个信息处理系统。

2.根据权利要求1所述的方法,所述共同特征集包括下列中的至少一者:共同的处理器制造商、共同的处理器世代和共同的指令集。

3.根据权利要求1所述的方法,其中通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器进一步包括在每个所述处理器上执行处理器识别操作,所述处理器识别操作返回每个所述处理器的处理器识别信息。

4.根据权利要求1所述的方法,其中每个所述处理器包括:虚拟机迁移寄存器,所述虚拟机迁移寄存器被所述信息处理系统的固件控制以修改所述处理器内的特征报表,对特征报表进行修改有助于共同特征集的识别。

5.根据权利要求4所述的方法,其中:

所述虚拟机迁移寄存器使所述处理器响应于处理器识别操作来报告修改后的识别信息。

6.一种用于在多个信息处理系统之间执行虚拟机迁移的设备,该设备包括:用于通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器的装置,所述共同特征集包括指令集等级兼容性;

用于将包括具有所述共同特征集的处理器的信息处理系统聚集到一起,以提供多个相似信息处理系统池的装置;

用于向带外信息处理系统广播对应于所述多个池的特征的装置;

用于等待带外信息处理系统识别每个带外信息处理系统应与哪个池相关联的装置;以及用于执行从第一信息处理系统到所述多个相似信息处理系统池中的一个相似信息处理系统池中的信息处理系统的虚拟机迁移的装置,所述虚拟机迁移将虚拟机从一个信息处理系统移动到另一个信息处理系统。

7.根据权利要求6所述的设备,其中所述共同特征集包括下列中的至少一者:共同的处理器制造商、共同的处理器世代和共同的指令集。

8.根据权利要求6所述的设备,其中所述用于通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器的装置还包括:用于在每个所述处理器上执行处理器识别操作的装置,所述处理器识别操作返回每个所述处理器的处理器识别信息。

9.根据权利要求6所述的设备,其中每个所述处理器包括:虚拟机迁移寄存器,所述虚拟机迁移寄存器被所述信息处理系统的固件控制以修改所述处理器内的特征报表,对特征报表进行修改有助于共同特征集的识别。

10.根据权利要求9所述的设备,其中:

所述虚拟机迁移寄存器使所述处理器响应于处理器识别操作来报告修改后的识别信息。

说明书 :

在多个信息处理系统之间执行虚拟机迁移的方法和设备

技术领域

[0001] 本发明涉及信息处理系统,以及更具体地涉及处理器架构之间的虚拟机迁移。

背景技术

[0002] 随着信息的价值和使用的持续增加,个人和商务寻求额外的方式来处理和存储信息。用户的一个可选途径是信息处理系统。信息处理系统通常为商务、个人或者其它目的处理、编译、和/或传输信息或数据从而允许用户利用信息的价值。因为不同用户或应用之间的技术和信息处理的需要和要求不同,所述信息处理系统在处理信息的类型;处理信息的方法;用于处理、存储或传输信息的方法;处理、存储或传输的信息量;以及处理、存储或传输信息的速度和效率方面也可能不同。信息处理系统的变化允许信息处理系统是通用的或者为特定用户或者特定用途而被设置,所述特定使用例如金融交易处理、机票预定、企业数据存储或全球通信。另外,信息处理系统可以包括可以被配置成处理、存储和传输信息的多种硬件或者软件组件,以及可以包括一个或者多个计算机系统、数据存储系统和网络系统。
[0003] 涉及信息处理系统的一个议题是虚拟化,所述虚拟化涉及信息处理系统资源的抽象化。更具体地,虚拟化在其它系统、应用、或者终端用户与信息处理系统资源交互的方式中隐藏信息处理系统资源的物理特征。虚拟化包括使得单个物理资源(例如服务器、操作系统、应用或存储设备)看起来是起多逻辑资源的作用;或者使得多物理资源(例如多个存储设备或者多个服务器)看起来是单个逻辑资源。
[0004] 虚拟化在企业信息处理系统环境中尤其普遍。当执行虚拟机(VM)迁移(即将一个虚拟机从一个系统(逻辑的或者物理的)移到另一个系统)时,通常需要使用虚拟化。然而,使用VM迁移,特别是动态VM迁移(live VM migration)(即正在一个系统上执行的VM被迁移到另一个系统上,其中迁移过程不需要使系统处于关闭或者中止状态),不同的CPU供应商以及甚至同一个供应商的不同代产品之间会自己出现构架问题。该构架问题通常是供应商之间和同一个供应商的各代产品之间的不同特征所引起的。从而,例如,当试图将正执行第4版本的流指令扩展指令集(SSE4)的动态虚拟机迁移到只能够支持第3版本的SSE(SSE3)而不支持SSE4指令的系统就会存在问题。当正要迁移的VM不处于动态状态(例如正工作于关闭状态或者挂起状态)时,也可能存在VM迁移问题。
[0005] 当应用程序加载和执行处理器识别(例如CPUID)指令时,本身会出现问题。该指令返回处理器标识符(ID)和特征信息。应用程序基于给定CPU的特征和指令集来使用该信息,以设置所采用路径。CPUID指令和结果的示例可以在“ 64and IA-32构架软件开发者手册—卷2A—指令集参考,A-M( 64and IA-32Architectures Software Developer's Manual-Volume2A-Instruction Set Reference,A-M)”中找到。当应用程序处于活动状态而且正在执行到给定指令集和/或特征集时,只有在目标系统具有和源系统相同特征支持的情况下,系统之间的动态迁移才可能发生。例如,标有现有技术的图1显示了示例性的程序加载的流程图。
[0006] 当应用程序没有发出处理器识别指令来确定代码路径时,可能出现涉及VM迁移的另一个问题。在该情况下,应用程序不知道完整的处理器指令和特征集。

发明内容

[0007] 根据本发明,提出了一种用于执行VM迁移的方法,该方法管理池中的机器群集从一个虚拟机向另一个虚拟机动态迁移特征集或状态。在某些实施方式中,池中的机器可以被配置为仿真某一特征集,以使得能够在相似池中间进行VM迁移。可用通过屏蔽特征集报表(reporting)或激活/禁用特征集来进行仿真。对硬件中的仿真寄存器(即,当工作在仿真模式中时,对特征集的操作)的处理发生在固件(例如基本输入输出系统(BIOS))级别,而不是操作系统或者监控程序级别。
[0008] 更具体地,在实施方式中,本发明涉及一种用于在多个信息处理系统之间执行虚拟机迁移的方法。所述方法包括识别所述多个信息处理系统中具有共同特征集的处理器,所述共同特征集包括指令集等级兼容性;将包括具有共同特征集的处理器的信息处理系统聚集到一起,以提供相似信息处理系统池;以及执行从第一信息处理系统到相似信息处理系统池中的信息处理系统的虚拟机迁移,所述虚拟机迁移将一个虚拟机从一个信息处理系统移动到另一个信息处理系统。
[0009] 本发明提供了一种用于在多个信息处理系统之间执行虚拟机迁移的方法,该方法包括:通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息,以识别所述多个信息处理系统内具有共同特征集的处理器,所述共同特征集包括指令集等级兼容性;将包括具有所述共同特征集的处理器的信息处理系统聚集到一起,以提供多个相似信息处理系统池;向带外信息处理系统广播对应于所述多个池的特征;等待带外信息处理系统识别每个带外信息处理系统应与哪个池相关联;以及执行从第一信息处理系统到所述多个相似信息处理系统池中的一个相似信息处理系统池中的信息处理系统的虚拟机迁移,所述虚拟机迁移将一个虚拟机从一个信息处理系统移动到另一个信息处理系统。
[0010] 优选地,所述共同特征集包括下列中的至少一者:共同的处理器制造商、共同的处理器世代和共同的指令集。
[0011] 优选地,通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器进一步包括在每个所述处理器上执行处理器识别操作,所述处理器识别操作返回每个所述处理器的处理器识别信息。
[0012] 优选地,每个所述处理器包括:虚拟机迁移寄存器,所述虚拟机迁移寄存器被所述信息处理系统的固件控制以修改所述处理器内的特征报表,对特征报表进行修改有助于共同特征集的识别。
[0013] 优选地,所述虚拟机迁移寄存器使所述处理器响应于处理器识别操作来报告修改后的识别信息。
[0014] 在另一个实施方式中,本发明涉及用于在多个信息处理系统之间执行虚拟机迁移的设备。所示设备包括用来识别所述多个信息处理系统中具有共同特征集的处理器的装置,所述共同特征集包括指令集等级兼容性;用于聚集包括具有共同特征集的处理器的信息处理系统,以提供相似信息处理系统池的装置;以及用于执行从第一信息处理系统到所述相似信息处理系统池中的信息处理系统的虚拟机迁移的装置,所述虚拟机迁移将虚拟机从一个信息处理系统移动到另一个信息处理系统。
[0015] 本发明还提供了一种用于在多个信息处理系统之间执行虚拟机迁移的设备,该设备包括:用于通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器的装置,所述共同特征集包括指令集等级兼容性;用于将包括具有所述共同特征集的处理器的信息处理系统聚集到一起,以提供多个相似信息处理系统池的装置;用于向带外信息处理系统广播对应于所述多个池的特征的装置;用于等待带外信息处理系统识别每个带外信息处理系统应与哪个池相关联的装置;以及用于执行从第一信息处理系统到所述多个相似信息处理系统池中的一个相似信息处理系统池中的信息处理系统的虚拟机迁移的装置,所述虚拟机迁移将虚拟机从一个信息处理系统移动到另一个信息处理系统。
[0016] 优选地,所述共同特征集包括下列中的至少一者:共同的处理器制造商、共同的处理器世代和共同的指令集。
[0017] 优选地,所述用于通过信息技术管理应用程序收集所述多个信息处理系统中期望执行虚拟机迁移的信息处理系统的处理器识别信息以识别所述多个信息处理系统内具有共同特征集的处理器的装置还包括:用于在每个所述处理器上执行处理器识别操作的装置,所述处理器识别操作返回每个所述处理器的处理器识别信息。
[0018] 优选地,每个所述处理器包括:虚拟机迁移寄存器,所述虚拟机迁移寄存器被所述信息处理系统的固件控制以修改所述处理器内的特征报表,对特征报表进行修改有助于共同特征集的识别。
[0019] 优选地,所述虚拟机迁移寄存器使所述处理器响应于处理器识别操作来报告修改后的识别信息。
[0020] 在另一个实施方式中,本发明涉及信息技术环境,所述信息技术环境包括多个信息处理系统和用于执行在多个信息处理系统之间的虚拟机迁移的系统。所述多个信息处理系统中的每一个包括处理器,以及连接到该处理器的存储器。用于执行虚拟机迁移的系统包括可以被处理器执行以识别所述多个信息处理系统中具有共同特征集的的处理器的指令,所述共同特征集包括指令集等级兼容性;将包括具有共同特征集的处理器的信息处理系统聚集到一起,以提供相似信息处理系统池;以及执行从第一信息处理系统到所述相似信息处理系统池中的信息处理系统的虚拟机迁移,所述虚拟机迁移将虚拟机从一个信息处理系统移动到另一个信息处理系统。

附图说明

[0021] 通过参考附图,可以更好的理解本发明,并且本发明的多个目的、特征和优点对于本领域的技术人员将显而易见。所有附图中相同的附图标记用来指示相同的或者相似的元件。
[0022] 图1被标记为现有技术,显示了示例性的程序加载的流程图;
[0023] 图2显示了信息处理系统的系统框图;
[0024] 图3显示了BIOS的操作流程图;
[0025] 图4显示了用于执行VM迁移的系统的操作流程图。

具体实施方式

[0026] 现在参考图2,显示了信息处理系统200的系统框图。信息处理系统200包括处理器202和输入/输出(I/O)装置204,例如显示器、键盘、鼠标。所述信息处理系统200还包括相关的控制器和存储器206,所述存储器206包括例如随机存取存储器(RAM)的易失性存储器和例如只读存储器(ROM)和硬盘驱动器的非易失性存储器。所述信息处理系统200还包括其它存储装置208和各种其它子系统210,所述其它存储装置208例如软盘和软盘驱动器或者CD-ROM盘和CD-ROM盘驱动器,上述所有装置通过一个或者多个总线212互相连接。存储器206包括基本输入输出系统(BIOS)238以及VM迁移模块230。
[0027] 提出了能够执行VM迁移的VM迁移模块230,该VM迁移模块230管理池中的机器群集动态迁移到相同的特征集或者状态。在某些实施方式中,池中的机器能够被配置成仿真某特征集,以使得能够在相似的池中间进行VM迁移。可用通过屏蔽特征集报表或激活/禁用特征集来进行仿真。对硬件中仿真寄存器的处理(即,当工作在仿真模式中时,对特征集硬件寄存器的操作)发生在固件级别(例如通过BIOS)而不是操作系统或者监控程序级别。
[0028] 为了本公开的目的,信息处理系统可以包括任何手段或者手段的集合,所述手段用于计算、分类、处理、传送、接收、获取、创建、转换、存储、显示、显现、检测、记录、复制、操作或者利用任何形式的用于商业、科学、控制或者其他目的的信息、指令或者数据。例如,信息处理系统可以是个人计算机、网络存储设备或者其他合适的设备,并且可以在大小、形状、性能、功能和价格上有所不同。所述信息处理系统可以包括随机存取存储器(RAM)、一个或者多个诸如中央处理单元(CPU)或者硬件或软件控制逻辑的处理资源、ROM、和/或其他类型的非易失性存储器。所述信息处理系统的附加组件可以包括一个或者多个磁盘驱动器、一个或者多个用于与外部设备进行通信的网络端口以及各种输入和输出(I/O)设备,例如键盘、鼠标和视频显示器。所述信息处理系统还可以包括一个或者多个用于在所述各种硬件组件之间传送通信信息的总线。
[0029] 参考图3,显示了BIOS的操作流程图。每个信息处理系统处理器202包括BIOS220可以操作的VM迁移寄存器。在所述寄存器中的是禁用(或屏蔽)特征的存储单元。处理器202将这些存储单元用于提供给软件的各种特征。而且,每个系统的处理器202包括虚拟CPUID(vCPUID)域,以返回CPUID,以及其它资源信息,例如,步进系列信息(stepping family information)。当BIOS228设置这些域时,BIOS228还设置特定模块寄存器(model specific register)(MSR),所述特定模块寄存器一旦接收到CPUID指令,就促使VM迁移寄存器返回修改后的数据。从而,MSR用作给BIOS提供与特定处理器执行相关的信息的控制寄存器。
[0030] 因而,在步骤310,当BIOS228开始执行时,底板管理控制器服务处理器(BMC)(或者一些其它的可以不用BMC的应用程序接口(API))给BIOS228提供最基本共同特性(Least Common Denominator(LCD))信息。接下来,在步骤320,BIOS228产生处理器识别指令(例如CPUID指令)并将结果保存在暂存存储器中。接着在步骤330,每个信息处理系统上的BIOS228使用最基本共同特性输入来禁用硬件中的特征,并且相应地设置虚拟CPUID域。接着,BIOS228随意地设置MSR中的一个比特来激活虚拟CPUID寄存器的使用以及虚拟CPUID寄存器内所确定的特征。然后在步骤340,如果需要的话,BIOS228向BMC发信号以实现允许带外(out of band)通信。因此,系统内的处理器被设置为与最基本共同特性相同的特征。而且,CPU ID/系列/步进信息被设置成允许发生动态迁移,而不会遇到架构界线。该操作可以通过通用API而一个系统接着一个系统地执行,或者在系统池执行。
[0031] 参考图4,示出了VM迁移操作的流程图。一般地,用于执行VM迁移的系统使用BIOS228来执行硬件特征禁用和虚拟CPUID处理操作。由信息技术(IT)管理应用程序410来实现用于执行VM迁移230的系统。
[0032] 更具体的,在步骤420,IT管理应用410收集需要执行VM迁移的系统群集中的系统的CPUID信息。然后同样的系统自动地或者手动地聚集成池。例如在某些实施方式中,在步骤430,IT管理器(或者操作IT管理应用程序410的其它用户)象征性地将系统聚集成池(例如通过拖拽或者投入)来确定相似系统(即,符合某最基本共同特性的系统)的池。例如,池可以包括第一制造商SSE3池432a、第一制造商SSE4池432b、第二制造商SSE3池
432c、以及普通制造商池432d。每个池包括相应的标识符434。
[0033] 接下来,在步骤440,用于执行VM迁移230的系统向带外系统(以及任意的带内系统)广播对应于每个池的特征。然后在步骤442,系统等待带外系统确定每个系统应该和哪个池相关联。在步骤444,现在能够使用VM迁移软件来在与每个所配置的池相匹配的系统之间进行动态迁移。
[0034] 在步骤450,在每个执行系统中,BMC接收VM迁移的新配置,并将该信息保存在系统BIOS域内,以在重启操作期间获取该信息。在步骤460,可以的话,一旦重启,当每个系统上第一次加载BIOS时,BIOS228通过设置虚拟迁移域(例如vCPUID域)来直接将各个系统中的特征集中的不同点进行屏蔽。因而,当执行CPUID指令时,每个系统返回由BIOS激活或者禁用的特征,以及IT管理应用程序所进行的任何设置。然后在步骤470,BMC向IT管理应用程序登记所述系统。所述登记包括这样的信息:已针对具有特定特征的特定CPU ID对系统进行了配置,并且系统已经加入了特定的系统池。
[0035] 因而,用于执行VM迁移的系统通过允许IT管理器将所述池降低到任何处理器可兼容的水平(即,任何最基本共同特性),例如任何x86可兼容的水平,以允许越过处理器架构界线。
[0036] 本发明非常适于达到上述优点和其它内在固有的优点。虽然已经通过参考本发明的特定实施方式而对本发明进行了图示、描述以及定义,但这样的参考不表示对本发明的限制,并不能推断得到对本发明的限制。对于相关领域的熟练技术人员,本发明能够在形式和功能上有很多修改、变化和等价替换。图示和描述的实施方式只是示例,并不表示本发明的全部范围。
[0037] 例如,在另一个实施方式中,可以使用监控程序二进制转换来执行VM迁移。更具体的,当确定系统池时,IT管理软件确定最基本共同特性特征集,并将该特征集广播到在每个系统上执行的监控程序。当应用程序加载到系统上时,监控程序执行该程序的二进制转换。即监控程序搜索CPUID指令并替换为可选执行路径,所述可选执行路径会产生所期望的CPUID返回值,以欺骗应用程序。因而,集群中的所有机器都看似在执行相同的特征集。
[0038] 例如,源代码可以是:
[0039] ……MOV EAX,INPUT
[0040] CPUID
[0041] [使用返回标记来设置代码执行路径的代码]
[0042] 然而修改后的代码可以是:
[0043] MOV EAX,INPUT
[0044] JMP[CPUID_replacemen_function]跳到可选程序
[0045] [使用返回标记来设置代码执行路径的代码]
[0046] :CPUID_replacement_function
[0047] /*保存输入变量*/
[0048] CPUID_function_call_input=EAX;
[0049] /*来自群集mgmt的输入*/
[0050] HYPERVISOR_common_denominator=XYZ;
[0051] /*执行原始的CPUID以获得CPU特征*/
[0052] MOV EAX,CPUID_function_call_input;CPUID
[0053] [根据HYPERVISOR_common_denominator
[0054] 设置EAX,EBX,ECX,EDX……]
[0055] Return;
[0056] 还例如,在另一个实施方式中,当执行VM迁移时,可以使用CUPID陷阱操作(Trap operation)。更具体地,陷阱操作为CPUID指令的结果设置陷阱。然后BIOS228中的处理程序执行二进制转换操作。
[0057] 例如,利用陷阱操作(TRAP operation),示例性的指令流程可以如下:
[0058] MOV EAX,INPUT
[0059] CPUID
[0060] [使用返回标记来设置代码执行路径的代码]
[0061] 然而,包括陷阱特征的修改代码可以是:
[0062] MOV EAX,INPUT
[0063] CPUID/*运行和增大EAX,EBX,ECX,EDX*/TRAP HANDLER
[0064] [根据HYPERVISOR_common_denominator
[0065] 设置EAX,EBX,ECX,EDX……
[0066] Return;
[0067] [使用返回标记来设置代码执行路径的代码]
[0068] 为了支持该方式,处理器允许CPUID指令来激活例外事件和为处理程序分配向量单元。一旦接收到意外事件,处理器将转到处理程序的向量单元。该方法和VM_EXIT操作不同,VM_EXIT操作因为不是所有的处理器都被VT激活,所以被虚拟化技术(VT)激活的处理器试图将共同特性传递到带内监控程序,因此相比于仅仅通过BIOS在现有的带外管理平面中中进行虚拟化,增加了管理平面的复杂性(增加了另一个平面),允许CPUID陷阱将容许虚拟化管理环境之外的其它应用,并且需要更少的处理器逻辑改变来欺骗应用程序,其中,终端用户可以改变给定系统的特征集来允许执行特定程序。
[0069] 还例如,上述的实施方式包括执行特定任务的软件模块。这里讨论的软件模块可以包括脚本、批处理或其它可执行的文件。软件模块可以被存储在机器可读或者计算机可读的存储介质上,例如硬盘驱动器。用于存储根据本发明实施方式的软件模块的存储装置可以是例如磁性软盘、硬盘或任何例如CD-ROM或CD-R的光盘。用于存储根据本发明实施方式的固件或者硬件模块的存储装置也可以包括基于半导体的存储器,该存储器可以是永久的、可移动的或者远程地连接到微处理器/存储器系统。因而,模块可以被存储在计算机系统存储器中以将计算机系统配置为执行模块的功能。可以使用其它新的或者各种计算机可读存储介质来存储这里讨论的模块。另外,本领域的技术人员可以理解将功能分割成模块是为了说明的目的。可选实施方式可以将多个模块的功能合成一个模块或者可以对模块的功能进行可选的分解。例如,用于调用子模块的软件可以被分解,以使得每个子模块执行其功能并将控制直接传递到另一个子模块。
[0070] 因此,从各个方面给出了对等价替换的全面认识,本发明并不仅限于所附权利要求的精神和范围。