利用硬件中的网络包缓冲的基于检查点的高可用性转让专利

申请号 : CN201210249258.6

文献号 : CN102891882B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·诺斯

申请人 : 国际商业机器公司

摘要 :

本发明涉及利用硬件中的网络包缓冲的基于检查点的高可用性。一种通过在虚拟化环境中的检查点建立期间提供基于硬件的网络包缓冲来增强资源/过程可用性的方法和系统。HAC设备预配置物理网络适配器以缓冲来自采用检查点建立技术的虚拟机的输出网络包。响应于接收来自虚拟机的输出网络包并确定该虚拟机采用预先指定的检查点建立技术,物理网络适配器缓冲输出网络包。主要主机执行/促成利用辅助主机的检查点操作。当检查点操作成功完成时,HAC设备触发从网络适配器向网络目的地传输缓冲的网络包。通过与源自未建检查点虚拟机的新的网络包相比把更高优先级预分配给来自检查点建立虚拟机的缓冲的网络包,物理网络适配器使检查点建立网络等待时间最小。

权利要求 :

1.一种数据处理系统中的方法,该数据处理系统具有处理器、耦合到处理器的内存、能够实现与外部网络进行连接的至少一个输入/输出(I/O)适配器和在数据处理系统内执行的虚拟化管理部件,并且该数据处理系统产生多个操作系统(OS)分区,该方法包括:预配置物理网络适配器以缓冲来自采用检查点建立技术的虚拟机的输出网络包,其中所述物理网络适配器对于主要主机表现为所述至少一个输入/输出适配器,其中所述至少一个输入/输出适配器被分配给多个虚拟机,并且每个输入/输出适配器被分配不同的MAC地址;

在物理网络适配器处,接收提供一个或多个虚拟机分别采用检查点建立技术的指示的配置信息;

在物理网络适配器处,接收来自第一虚拟机的一个或多个输出网络包;

响应于由物理网络适配器接收来自第一虚拟机的输出网络包,所述物理网络适配器:确定产生输出网络包的虚拟机是否采用检查点建立技术;以及响应于确定产生输出网络包的虚拟机采用检查点建立技术,对输出网络包进行缓冲;

接收检查点建立操作已成功完成的通知;以及

响应于接收到检查点建立操作已成功完成的通知,触发从网络适配器向对应网络内的目的地传输缓冲的网络包。

2.如权利要求1所述的方法,还包括:

促成检查点建立操作的执行,在检查点建立操作中产生输出网络包的第一虚拟机的状态信息被同步到辅助主机上的第二虚拟机,其中所述促成包括:把与第一虚拟机关联的内存和CPU状态信息转发到选择的辅助主机上的第二虚拟机以便在主要主机发生故障的情况下用作备份;以及向所述辅助主机提供所述输出网络包的预期传输的指示。

3.如权利要求1所述的方法,还包括:

把较高优先级分配给源自采用检查点建立技术的虚拟机的缓冲的网络包;并且把较低优先级分配给当前源自未采用检查点建立技术的不同虚拟机的网络包;以及使用分配给网络包的优先级确定包传输调度;

其中分配给缓冲的网络包的所述较高优先级使网络等待时间最小化。

4.如权利要求1所述的方法,其中所述缓冲还包括:为所述主要主机上的所述网络适配器预分配以下的一项或多项:(a)板上内存的分配;

和(b)对系统内存的访问;以及

使用所述板上内存的分配和对系统内存的访问,缓冲源自已指示使用所述检查点建立技术的所述虚拟机的输出网络包。

5.如权利要求1所述的方法,还包括:

为所述虚拟机分配以下的一项或多项:(a)专用缓冲器空间;和(b)全局缓冲器,其能够实现来自多个检查点建立虚拟机的交织的包的存储;

其中所述全局缓冲器能够按照接收缓冲的网络包的次序实现所述缓冲的网络包的自动传输;以及其中所述全局缓冲器用于避免需要网络适配器来确定要首先清空一组虚拟机检查点建立缓冲器中的哪一个。

6.如权利要求1所述的方法,还包括:

配置与物理网络适配器关联的缓冲器以提供循环操作,通过该循环操作,允许在传输根据先前执行的检查点建立操作缓冲的网络包的同时缓冲新的网络包;

检测缓冲器何时变满;以及

响应于缓冲器变满,向采用检查点建立技术的一个或多个虚拟机发送通知以指示停止另外的包传输直至另一检查点建立操作完成,其中所述另一检查点建立操作的完成允许清空缓冲器。

7.一种数据处理装置,包括:

处理器;

输入/输出(I/O)接口,耦合到外部网络;

物理网络适配器,实现SR-IOV技术;和

存储器,耦合到所述处理器,其中所述存储器包括:管理程序;

检查点应用;

多个操作系统(OS)分区;

多个虚拟机(VM);以及

当在处理器上执行时使物理网络适配器执行以下操作的设备:预配置物理网络适配器以缓冲来自采用检查点建立技术的虚拟机的输出网络包,其中所述物理网络适配器对于主要主机表现为至少一个输入/输出适配器,其中所述至少一个输入/输出适配器被分配给多个虚拟机,并且每个输入/输出适配器被分配不同的MAC地址;

接收提供一个或多个虚拟机分别采用检查点建立技术的指示的配置信息;

在物理网络适配器处,接收来自第一虚拟机的一个或多个输出网络包;

响应于由物理网络适配器接收来自第一虚拟机的输出网络包,所述物理网络适配器:确定产生输出网络包的虚拟机是否采用检查点建立技术;以及响应于由物理网络适配器确定产生输出网络包的虚拟机采用检查点建立技术,对输出网络包进行缓冲;

接收检查点建立操作已成功完成的通知;以及

响应于接收到检查点建立操作已成功完成的通知,触发从网络适配器向对应网络内的目的地传输缓冲的网络包。

8.如权利要求7所述的数据处理装置,其中所述物理网络适配器还通过以下方式促成检查点建立操作的执行,在检查点建立操作中产生输出网络包的第一虚拟机的状态信息被同步到辅助主机上的第二虚拟机:把与虚拟机关联的内存和CPU状态更新转发到辅助主机以便在主要主机发生故障的情况下用作备份;以及向所述辅助主机提供所述输出网络包的预期传输的指示。

9.如权利要求7所述的数据处理装置,还包括以下功能:把较高优先级分配给源自采用检查点建立技术的虚拟机的缓冲的网络包;并且把较低优先级分配给当前源自未采用检查点建立技术的不同虚拟机的网络包;以及使用分配给网络包的优先级确定包传输调度;

其中分配给缓冲的网络包的所述较高优先级使网络等待时间最小化。

10.如权利要求7所述的数据处理装置,其中所述缓冲功能还包括以下功能:为所述主要主机上的所述网络适配器预分配以下的一项或多项:(a)板上内存的分配;

和(b)对系统内存的访问;

使用所述板上内存的分配和对系统内存的访问,缓冲源自已指示使用所述检查点建立技术的所述虚拟机的输出网络包。

11.如权利要求7所述的数据处理装置,还包括以下功能:为所述虚拟机分配以下的一项或多项:(a)专用缓冲器空间;和(b)全局缓冲器,其能够实现来自多个检查点建立虚拟机的交织的包的存储;

其中所述全局缓冲器能够按照接收缓冲的网络包的次序实现所述缓冲的网络包的自动传输;以及其中所述全局缓冲器用于避免需要网络适配器来确定要首先清空一组虚拟机检查点建立缓冲器中的哪一个。

12.如权利要求7所述的数据处理装置,还包括以下功能:配置与物理网络适配器关联的缓冲器以提供循环操作,通过该循环操作,允许在传输根据先前执行的检查点建立操作缓冲的网络包的同时缓冲新的网络包;

检测缓冲器何时变满;以及

响应于缓冲器变满,向采用检查点建立技术的一个或多个虚拟机发送通知以指示停止另外的包传输直至另一检查点建立操作完成,其中所述另一检查点建立操作的完成允许清空缓冲器。

说明书 :

利用硬件中的网络包缓冲的基于检查点的高可用性

技术领域

[0001] 本发明一般地涉及数据处理系统,具体地讲,涉及数据处理系统内的检查点操作。更具体地讲,本发明涉及数据处理系统内的利用网络包缓冲的检查点操作。

背景技术

[0002] 基于检查点的高可用性(Checkpoint-Based High-Availability)是一种方法,根据该方法,在一个主机(即,“主要主机(primary host)”)上运行的虚拟机定期地(例如以25ms的间隔)在另一主机(即,“辅助主机(secondary host)”)上建立对应CPU和内存状态的镜像。这种镜像建立(mirroring)过程包括:(1)跟踪虚拟机的内存的变化;(2)周期性地停止虚拟机;(3)在网络上把这些变化以及CPU状态更新变化发送给辅助主机;(4)等待辅助主机确认内存和CPU状态更新的接收;和(5)使虚拟机继续执行。镜像建立/“检查点建立(checkpointing)”过程确保了:如果主要主机遭受突然硬件故障,则辅助主机能够继续执行工作负荷而不丢失服务。
[0003] 关于常规检查点建立方案中的网络包的传输,虚拟机通常通过“拥有”网络适配器的单个虚拟化点(例如,虚拟输入/输出服务器(VIOS)或管理程序)对网络业务进行代理。这些常规方案通常要求对每次网络包传输执行检查点。结果,网络等待时间时间增加并且由这些常规方案引入了软件复杂性。

发明内容

[0004] 公开了一种用于通过在虚拟化环境中的检查点建立期间提供基于硬件的网络包缓冲来增强资源/过程可用性的方法、系统和计算机程序产品。高可用性检查点(HAC)设备对物理网络适配器进行预配置以缓冲来自采用检查点建立技术的虚拟机的输出网络包。响应于接收到来自虚拟机的输出网络包并确定该虚拟机采用预先指定的检查点建立技术,物理网络适配器对输出网络包进行缓冲。另外,主要主机执行/促进利用辅助主机的检查点操作(与该虚拟机关联)。当检查点操作成功完成时,HAC设备触发将缓冲的网络包从网络适配器传输到网络目的地。通过与源自未建检查点虚拟机的新网络包相比把更高优先级预分配给来自检查点建立虚拟机的缓冲的网络包,物理网络适配器使检查点建立网络等待时间最小化。
[0005] 以上概述包含细节的简化、概括和省略,并且不应视为要求保护的主题的全面描述,而是旨在提供与其关联的一些功能的简要概览。通过检查下面的附图和详细的书面描述,对于本领域技术人员而言,要求保护的主题的其它系统、方法、功能、特征和优点将会是清楚的或者将会变得清楚。
[0006] 在下面的详细的书面描述中,本发明的以上以及另外的目的、特征和优点将会变得清楚。

附图说明

[0007] 应结合附图阅读所描述的实施例,在附图中:
[0008] 图1示出根据一个实施例的构造为实现了所描述的实施例的各种功能特征的虚拟化系统的数据处理系统的网络;
[0009] 图2示出根据一个实施例的具有几个虚拟机的主要主机的内部结构;
[0010] 图3示出根据一个实施例的主要主机和辅助主机的功能部件的框图表示,这些主机都被构造为能够进行针对在主要主机上执行的虚拟机的检查点操作;
[0011] 图4是根据一个实施例的虚拟机经由网络适配器与基于硬件的网络包缓冲的使用相关联地执行检查点操作的示例性方法的高级逻辑流程图;和
[0012] 图5是根据一个实施例的主要主机在检查点操作之后使用包优先级调度缓冲的网络包的传输的示例性方法的高级逻辑流程图。

具体实施方式

[0013] 例示性实施例提供一种用于通过在虚拟化环境中的检查点建立期间提供基于硬件的网络包缓冲来增强资源/过程可用性的方法、数据处理系统和计算机程序产品。高可用性检查点(HAC)设备对物理网络适配器进行预配置以缓冲来自采用检查点建立技术的虚拟机的输出网络包。响应于接收到来自虚拟机的输出网络包并确定该虚拟机采用预先指定的检查点建立技术,物理网络适配器对输出网络包进行缓冲。另外,主要主机执行/促进针对辅助主机的检查点操作(与该虚拟机关联)。当检查点操作成功完成时,HAC设备触发把缓冲的网络包从网络适配器传输到网络目的地。通过与源自未建检查点虚拟机的新网络包相比把更高优先级预分配给来自检查点建立虚拟机的缓冲的网络包,物理网络适配器使检查点建立网络等待时间最小化。
[0014] 在本发明的示例性实施例的下面的详细说明中,足够详细地描述可实施本发明的特定示例性实施例以使本领域技术人员能够实施本发明,并且应该理解,可利用其它实施例,并且在不脱离本发明的精神或范围的情况下可做出逻辑、架构、规划、机械、电气和其它变化。下面的详细描述因此不应认为是限制性意义上的,并且本发明的范围由所附权利要求及其等同物定义。
[0015] 在附图的不同视图的描述内,为相似元件提供与在前附图的名称和标号相似的名称和标号。分配给元件的特定数字仅用于辅助描述,而非意图暗示对所描述的实施例的任何限制(结构的或功能的限制或者在其它方面)。
[0016] 应该理解,特定部件、装置和/或参数名称(诸如,本文描述的执行设备/逻辑/固件的名称)的使用例如仅是示例性的,而非意图暗示对本发明的任何限制。本发明可因此利用用于非限制性地在本文描述部件/装置/参数的不同命名法/术语实现。在描述实施例的一个或多个元件、特征或概念时对任何特定协议或专有名称的引用仅用作一种实现方式的例子,并且这种引用并不把限制把本发明扩展到使用不同元件、特征或概念名称的实施例。因此,考虑到使用本文使用的每个术语的上下文,该术语应该被给予它的最广泛的解释。
[0017] 如以下进一步所述,在处理装置/结构内提供本发明的功能特征的实现方式并且该实现方式包括使用硬件、固件以及几种软件级别构造(例如,程序代码)的组合。提供的附图示出示例数据处理架构内的硬件部件和软件部件,该数据处理架构具有布置/构造为一个或多个计算电子组合体的许多处理节点。描述的例示性实施例假设该系统架构可被调整用于大得多的数量的处理节点。
[0018] 现在具体地参照图1,描述了可有益地实现所描述的实施例的各功能方面的虚拟化数据处理系统(DPS)的网络的示例架构(100)的框图。为了简单,DPS网络架构(100)将会在本文简单称为DPS 100。DPS100包括多个主机计算机装置,其中示出了主要主机110A和辅助主机110B。DPS 100内的主机装置的数量可变化,从较小系统中的单个主机装置扩展直至较大规模系统中的几百或几千个主机装置。为了简单,将从单个主机装置(主要主机110A)或两个主机装置(主要主机装置110A、辅助主机装置110B)的角度描述实施例。在每个主机系统110A-110B内提供了虚拟机,其中分别示出了前两个虚拟机VM114a和VM114b、以及VM114c和VM114d。如以下所述,参照图2,VM 114是虚拟化(或操作系统划分的)计算系统的逻辑分区。每个主机装置110内的客户机/虚拟机的实际数量可以不同,并且非限制性地,可以是单个客户机/虚拟机到几百或几千个客户机/虚拟机。为了高效地在本文提供本发明的构思,在各种例示性的描述的实施例的每个主机装置110内仅提供两个客户机/虚拟机。
[0019] DPS 100还包括每个(计算机)主机系统/装置110和主机系统110内的部件可访问的分布式(共享)存储设施。在一个实施例中,主要主机110A和辅助主机110B都能够访问分布式存储设施。在另一实施例中,主要主机和辅助主机访问分离的/不同的存储设施。
[0020] DPS 100内的每个主机装置110经由一个或多个网络和/或I/O互连/开关构造(通常表示为互连/网络构造170)连接到分布式存储器150。描述和说明假设:DPS 100的至少一些主机装置(110)和分布式存储器150能够相对于彼此位于很远的地方(例如,包括位于不同的国家),从而在各装置之间不一定需要直接物理连接。为了简单,实施例被描述为具有包括专用广域网(WAN)或公共WAN(诸如,互联网)的主要互连/网络170,但其它网络类型(例如,局域网)也是可以的并且得到支持。
[0021] 如上所述,在一个或多个实施例中,每个主机装置(例如,主要主机110A)也连接到一个或多个邻居主机装置(例如,辅助主机110B),以便提供高效的故障切换(fail-over)和/或移动性支持和其它功能,如下文所述。本文所使用的术语邻居是指第一主机装置能够与之通信的连接的第二主机装置,并且对邻居主机装置的引用不限于在地理上接近第一主机装置的第二主机装置。主要主机110A和辅助主机110B被例示为经由某连接介质彼此连接,该连接介质可包括不同的网络(诸如,局域网)172或者当在物理上彼此接近时的某种类型的直接互连(例如,光纤信道连接)。邻居主要主机110A和辅助主机110B之间的连接被例示为主要主机110A和辅助主机110B之间的直接线连接或辅助网络连接(172)。然而,应该理解,该连接不是必须是直接的,并且实际上可通过与到分布式存储器150的其它主机系统连接相同的一般互连/网络170对所述连接进行路由。
[0022] 如图中所述,每个主机系统110包括一个或多个网络接口134和一个或多个I/O适配器132以使主机系统110并且因此使主机系统110的其它部件(即,虚拟机)能够参与网络级别通信。示例主要主机110A的硬件部件130包括一个或多个处理器(例如,131A)、一个或多个内存(例如,133A)和本地存储器144。处理器经由总线、互连/开关或互连构造(未具体地示出)与一个或多个内存以及本地存储器144互连。每个虚拟机(例如,VM 114A)接收特定虚拟化硬件和OS资源(包括虚拟化CPU 105A、内存110A和OS 114A)的分配。应用116在VM 114A上执行。每个VM 114包括各自的主机操作系统114,该主机操作系统114控制对主要主机110A的硬件层(130)和/或虚拟化I/O功能和/或服务的低级访问。另外,HAC设备250在主要主机110A上执行并且以可通信的方式连接到管理程序(HYP)125。在一个实施例中,HAC设备250集成在HYP125内。在一个实施例中,管理控制台175用于执行各种实施例中的个体VM114和/或作为整体的网络的本文描述的检查点建立操作的设置和/或初始化。
[0023] 在DPS 100中,单根IO虚拟化技术(即,SR-IOV)能够提供用于执行虚拟机的网络适配器功能。特别地,SR-IOV技术用于允许单个物理网络适配器(例如,网络适配器/接口134)对于主机系统(例如,主要主机110A)表现为大量的个体网络适配器。在一个实施例中,这种大量的(概念性的/虚拟的)个体网络适配器由分配给每个虚拟机的虚拟适配器/“功能”表示。结果,网络资源可以被分配给在同一主机上运行的许多虚拟机(例如,客户逻辑分区),从而允许每个虚拟机直接与网络硬件通信,同时仍然允许在虚拟机之间共享适配器。另外,SR-IOV适配器知道不同虚拟机的存在和源自各虚拟机的单独业务。
[0024] 现在参照图2,提供了示例DPS 100的另一视图,强调虚拟化处理系统架构200(即,个体主机系统的架构,具体地讲,主要主机110A的架构)。主要主机110A用作示例主机系统,并且在图2中以及在整个说明书中被更详细地描述。提供主要主机110A作为服务器,该服务器包括硬件部件和在逻辑上划分以创建多个虚拟化机器分区(这些虚拟化机器分区被分配作为虚拟机(VM))的软件/固件/OS部件。示例主要主机110A的硬件部件230包括一个或多个处理器231A-231P、一个或多个内存233A-233M和本地存储器234。处理器231A-231P经由总线、互连/开关或互连构造(未具体地示出)与一个或多个内存233A-233M以及本地存储器234互连。可分布在大规模互连构造上的部件的特定内部连接性与所描述的实施例没有密切关系,并且不提供关于系统硬件部件之间的特定类型的互连性的进一步细节。
[0025] 在硬件部件230内还包括一个或多个物理网络接口134,主要主机110A通过该一个或多个物理网络接口134连接到外部网络,诸如网络170等。另外,硬件部件230包括多个I/O适配器232A-232E,I/O适配器232A-232E为主要主机110A提供I/O接口。I/O适配器232A-232E是使主要主机110能够支持经由I/O接口与本地连接的以及远程(联网)连接的I/O装置(包括分布式存储器150)的I/O操作的物理适配器。I/O适配器的例子包括外设部件接口(PCI)、PCI-X或PCIExpress适配器和小型计算机系统互连(SCSI)适配器等。在逻辑上划分主机系统110,以使不同的I/O适配器232被虚拟化,并且虚拟I/O适配器能够随后被唯一地分配给不同的逻辑分区。在一个或多个实施例中,与分配给VM的虚拟化适配器和其它部件相关的配置数据被保持在每个VM内,并且在对这种配置做出改变时以及在增加和/或去除和/或分配适配器时,能够由VM保持并更新所述配置数据。
[0026] 作为一个实施例,在逻辑上位于硬件级别(230)之上的是作为管理程序(HYP)225提供的虚拟化管理部件。尽管在各种实施例中始终表示并描述为HYP 225,但完全应该理解,可使用其它类型的虚拟化管理部件并且它们同样适用于各种实施例的实现方式。HYP 225具有在主机系统110内与它耦合的关联的服务处理器227。服务处理器227可用于为一个或多个逻辑分区提供各种服务。HYP 225还耦合到硬件管理控制器(HMC)229,HMC 229存在于物理主机系统110外面。HMC 229是由图1表示的管理控制台175的一种可能的实现方式。
在这个图示内具体地使用HMC 229仅用于例示几种可用选项之中的一个实际实施例。通过HMC 229能够控制不同逻辑分区的操作,HMC 229是单独的数据处理系统,系统管理员可从HMC 229执行各种功能,诸如把资源重新分配给不同逻辑分区。很重要地,在本实施例中,通过HMC建立与OS分区的故障切换并且特别地与虚拟机和数据处理网络的故障切换相关的特征。
[0027] 主要主机110A还包括多个客户级别虚拟机(VM),其中显示了前两个,在主要主机110A内表示为个体VM 114A-114B。根据各种说明性实施例,主要主机110A支持在虚拟化环境内“创建”的多个客户机和其它功能操作OS分区。每个VM(例如,VM 114B)接收特定虚拟化硬件和OS资源(包括虚拟化CPU 205B、内存210B、OS 214B、本地固件216和本地存储器(LStore)218)的分配。根据当前描述的实施例,第一VM 114A包括MEM 210A,MEM 210A包括处理器状态262、内存页264和检查点应用266,它们都在利用辅助主机110B的检查点相关操作中被使用和/或交换。特别地,如MEM 270中的镜像处理器状态272和镜像内存页274所示,辅助主机110B包含来自前一检查点建立操作的第一VM 114A的内存页和处理器状态的拷贝。MEM 270还包括检查点应用276以使辅助主机110B能够参与针对主要主机110A的检查点操作。每个VM 114包括各自的主机操作系统214,该主机操作系统214控制对主要主机110A的硬件层(230)和/或虚拟化I/O功能和/或服务的低级访问。在一个实施例中,可使用设计为与分区管理固件(诸如,HYP 225)对接的可从IBM公司得到的IBM i(或其它虚拟化操作系统)实现所述操作系统。应该理解,根据具体实现方式,可使用例如其它类型的操作系统(诸如高级交互执行程序(AIX)操作系统(IBM公司的商标)或者 (Linus 
Torvalds的注册商标)),并且IBM i仅用作例子。
[0028] 本领域普通技术人员将会理解,在图1和2中描述的硬件、固件/软件设备和软件部件及其基本结构可以变化。DPS 100的说明性部件(具体地讲,主要主机110A、第一VM和第二VM内的那些说明性部件)不是穷举性的,而是代表性的,以突出用于实现某些描述的实施例的一些部件。例如,可提供数据处理系统/主机装置的不同结构,包含可除描述的硬件之外或者替代于描述的硬件而使用的其它装置/部件,并且可进行不同配置。描述的例子并不意图暗示关于当前描述的实施例和/或一般发明的架构或其它限制。在各附图中描述的主机装置110可以是例如运行高级交互执行程序(AIX)操作系统或LINUX操作系统的IBM eServer pSeries系统(纽约Armonk的International Business Machines公司的产品)。
[0029] 根据当前描述的实施例,高可用性检查点(HAC)设备(250)在第一主机装置110A(即,主要主机)内执行以便能够支持特定虚拟机的检查点操作的执行。另外,单独的HAC设备250的模块在辅助主机110B上执行以提供对针对主要主机110A的检查点操作的支持。HAC设备250预配置网络适配器134以缓冲来自采用检查点建立技术的虚拟机的输出包。HAC设备250分别从在主要主机上运行的一个或多个虚拟机接收提供虚拟机采用检查点建立技术的指示的配置信息。网络适配器确定由第一虚拟机发送的输出网络包是否源自采用检查点建立技术的虚拟机。如果第一虚拟机确实采用检查点建立技术,则主要主机110A上的一个或多个VM启动利用辅助主机110B的检查点操作以便在辅助主机110B(上的第二虚拟机)上形成第一虚拟机的内存数据和CPU状态更新数据的镜像。由管理程序和/或能够实现主要主机和辅助主机110B之间的通信的网络适配器134促成检查点建立操作。当检查点操作成功完成时,HAC设备250向与虚拟机关联的物理网络适配器134发送检查点命令,以触发从网络适配器向(远程和/或本地)网络目的地释放/传输缓冲的网络包。网络适配器134(通过使用SR-IOV技术)知道不同虚拟机的存在和源自这些虚拟机的单独通信业务。例如,每个“虚拟功能”/虚拟适配器226被分配不同的MAC地址,因此物理网络适配器134能够把输入包路由至正确的虚拟功能/虚拟适配器226并且把中断传递给正确的虚拟机。
[0030] HAC设备250提供在主机装置110内的一个或多个VM 114的一个或多个虚拟处理器资源上执行以提供特定功能的代码/程序指令。在当执行HAC设备250时提供的并且在本文更详细地描述的功能之中有下面的非排他性列表:(a)预配置SR-IOV适配器以缓冲源自采用检查点建立技术的虚拟机的输出网络包;(b)从在主要主机上运行的一个或多个虚拟机接收指示一个或多个虚拟机采用检查点建立技术的配置信息;(c)响应于由虚拟机启动当前输出网络包的传输,经由SR-IOV适配器确定当前输出网络包是否源自采用检查点建立技术的虚拟机;(d)响应于确定当前输出网络包源自采用检查点建立技术的虚拟机,经由SR-IOV适配器缓冲来自所述虚拟机的输出网络包;(e)启动利用辅助主机的一组检查点操作;和(f)当检查点操作已成功完成时,使用检查点命令触发从网络适配器向对应网络内的目的地传输/释放缓冲的网络包。在一个实施例中,以上一系列功能中的几种功能由与管理程序和一个或多个VM通信的网络适配器134使能和/或执行。网络适配器134通过支持/使能主机装置之间的交叉通信,促成一个或多个VM的检查点建立操作的执行。
[0031] 现在参照图3,示出了根据一个实施例的主要主机和辅助主机的功能部件的框图表示,这些主机都构造为能够实现在主要主机上执行的虚拟机的检查点操作。数据处理系统(DPS)300的网络包括主要主机110A和辅助主机110B。在主要主机110A内提供了第一虚拟机(VM)114A。在第一VM 114A内示出了MEM 210A和虚拟I/O适配器226。虚拟I/O适配器226包括专用缓冲器340。在VM 114A中还显示了输出网络包320。主要主机110A还包括物理网络适配器/接口134。网络适配器134包括缓冲器347。在一个实施例中,缓冲器347代表全局缓冲器。检查点应用360也示出在主要主机110A内。SR-IOV技术软件/模块343也随主要主机110A一起显示。检查点技术类型信息325和网络包优先级信息335也显示在主要主机110A内。在主要主机110A中还包括网络适配器134。在一个实施例中,网络适配器134被构造为支持单根IO虚拟化技术(即,SR-IOV)。SR-IOV允许单个物理网络适配器对于主机系统(例如,主要主机110A)表现为大量的个体网络适配器(“虚拟功能”)。这些“虚拟功能”示出为虚拟I/O适配器(例如虚拟I/O适配器226)。结果,网络资源可以被分配给在同一主机上运行的许多虚拟机,从而允许每个虚拟机直接与网络硬件通信,同时仍然允许在虚拟机之间共享适配器。辅助主机110B包括MEM 355,MEM 355还包括检查点应用276和检查点数据镜像310B。检查点数据镜像310B代表与在主要主机110A上执行的虚拟机114A(在前一检查点处)关联的内存状态和CPU状态信息和更新(由检查点数据310A统一示出)。
[0032] HAC设备250也在主要主机110A内或者在HYP225(图2中示出)内执行以提供检查点相关功能/操作(由网络适配器134促成),从而经由输出网络包320的缓冲而实现/增强高系统可用性。为了提供检查点相关功能,HAC设备250配置第一VM 114A(例如,经由检查点应用360)以指示检查点建立技术是否被第一VM 114A采用。结果,如果检查点建立技术正被VM 
114A使用,则HAC设备250从VM 114A接收配置信息325。
[0033] 就在由先前指示了使用检查点建立技术的虚拟机114传输输出网络包320之前,HAC设备250在主要主机启动第一虚拟机的检查点的执行。在另一实施例中,盘写入的启动也用于启动检查点的执行。网络包传输或盘写入触发检查点的执行,以防止在主要主机110A先前释放了网络包或执行了盘写入并失败的情况下从先前/上一个检查点恢复执行的辅助主机不得不重新传输包或重新执行盘写入。通过经由网络I/O和盘I/O启动检查点,消除了执行冗余,因为不从主要主机或辅助主机重复在上一个检查点之后发生的包传输和盘写入。例如,在一个实施例中,HAC设备250在虚拟机执行对底层管理程序的管理程序调用(HCALL)以传输网络包之后立即启动检查点的执行。
[0034] 在检查点期间,HAC设备250(经由检查点数据310A)把主要主机上的第一VM的CPU和内存状态传输给辅助主机系统(上的第二VM),包括关于虚拟机的传输网络包的“意图”的信息。检查点数据310A被作为检查点数据镜像310B复制到辅助主机110B的内存355中。
[0035] 再次参照SR-IOV技术的使用,SR-IOV适配器(例如,网络接口/适配器134)知道不同虚拟机的存在和源自各虚拟机的单独通信业务。在特定结构例子中,每个“虚拟功能”/虚拟I/O适配器226能够被分配不同的MAC地址,以使物理网络适配器把输入包路由至正确/合适的“虚拟功能”/虚拟I/O适配器226并且把中断传递给正确/合适的虚拟机。结果,SR-IOV适配器解决方案严重不同于常规虚拟网络适配器方案,通过常规虚拟网络适配器方案,虚拟机通过“拥有”网络适配器的单个虚拟化点(例如,VIOS或管理程序)代理各自的业务。
[0036] SR-IOV网络适配器(即,使用SR-IOV技术343配置的网络适配器134)能够不同地处理来自不同虚拟机的业务,并且特别地,通过使用HAC设备250的SR-IOV网络适配器允许虚拟机指示这些虚拟机分别使用检查点建立技术。使用检查点建立技术的指示的接收为适配器提供了特定虚拟机“意图”缓冲直至已与辅助主机交换了检查点时的输出网络包的另外指示。
[0037] 网络适配器134(a)配置有板上内存(例如,存储缓冲器340)或(b)设置有对系统内存的访问。网络适配器134使用内存来缓冲源自先前指示了使用检查点建立技术的虚拟机的输出网络包。当虚拟机指示检查点完成时,网络适配器134开始把针对该VM的缓冲的网络包发出到网络上。
[0038] 根据一个实施例,为了使检查点建立由于缓冲而为网络传输增加的等待时间最小化,相对于新接收的源自未建检查点虚拟机的网络包,网络适配器134优先处理所述缓冲的网络包(例如,通过使用网络包优先级信息335)。在一个实施例中,网络适配器134内的缓冲器(例如,缓冲器340)以循环方式工作,从而在传输根据上一个检查点缓冲的网络包的同时能够缓冲新的网络包。如果缓冲器变满,则向当前配置为执行检查点建立的虚拟机(例如,经由广播)发送信号以指示直至执行检查点前不能再发生包传输并且能够清空缓冲器。
[0039] HAC设备250为虚拟机114A分配以下的一项或多项:(a)专用缓冲器空间;和(b)全局缓冲器(例如,缓冲器347),其能够实现来自检查点建立虚拟机的交织的包的存储。全局缓冲器能够按照接收业务的次序实现建立了检查点的业务的自动传输。另外,全局缓冲器用于避免需要网络适配器确定首先要清空一组虚拟机检查点建立缓冲器340中的哪一个。
[0040] 图4和5是示出完成说明性实施例的以上处理的方法的流程图。虽然可参照由图1-3表示并参照图1-3描述的部件和功能来描述图4和5中表示的方法,但应该理解,这仅是为了方便,并且当实现各种方法时能够采用另外的部件和/或结构。方法的某些部分可由在VM114(图1或2)内的一个或多个(虚拟)处理器(CPU 231/206A)上执行的HAC设备250或者由SR-IOV适配器134完成。执行的处理随后控制主机装置110、VM 114和SR-IOV适配器134的特定操作或者对主机装置110、VM 114和SR-IOV适配器134的特定操作。为了简单,在描述方法时,从HAC设备250和SR-IOV适配器134中的任一个/二者和/或VM 114的角度描述所有的方法处理。
[0041] 在图4中,根据一个实施例,虚拟机经由网络适配器结合基于硬件的网络包的缓冲的使用,执行检查点操作。该方法开始于开始块402并前进到块404,在块404,HAC设备250预配置SR-IOV适配器134以缓冲来自采用检查点建立技术的虚拟机的输出包。例如,各种类型的检查点建立技术可以是来自各公司的专有检查点软件包(使用不同通信协议)的集合。另外,专有软件包的集合可包括来自同一企业的检查点软件的早先和以后的版本(这些版本具有增加/增强的特征)。在块406,HAC设备250从在主要主机上运行的虚拟机接收配置信息,该配置信息提供虚拟机采用检查点建立技术的指示。在块408,SR-IOV 134从虚拟机接收输出网络包。在判定块410,SR-IOV适配器134确定输出网络包是否源自采用检查点建立技术的虚拟机。如果在判定块410,SR-IOV适配器134确定输出网络包不是源自采用检查点建立技术的虚拟机,则SR-IOV适配器134不缓冲输出网络包,如块412中所示。然而,如果在判定块410,SR-IOV适配器134确定输出网络包确实源自采用检查点建立技术的虚拟机,则SR-IOV适配器134缓冲输出网络包,如块414中所示。在一个实施例中,HAC设备250为主要主机上的网络适配器预分配以下的一项或多项:(a)板上内存的分配;和(b)对系统内存的访问。板上内存的分配或对系统内存的访问用于缓冲源自先前指示使用了检查点建立技术的虚拟机的输出网络包。另外,在块416,主要主机(与检查点建立虚拟机关联)通过使用HAC设备250启动/促成利用辅助主机的一组检查点操作。在判定块418,HAC设备250确定检查点操作是否成功完成。如果在判定块418,HAC设备250确定检查点操作未成功完成,则流程移至块420,在块420,主要主机重新尝试/重复利用辅助主机的检查点操作。然而,响应于检查点操作成功完成,HAC设备250触发从网络适配器向对应网络内的目的地释放/传输缓冲的网络包,如块422中所示。在一个实施例中,HAC设备250把较高优先级分配给缓冲的网络包并且把较低优先级分配给当前源自未采用检查点建立技术的不同虚拟机的网络包。HAC设备250把这种较高优先级分配给缓冲的网络包以使网络等待时间最小化。流程结束于块424。
[0042] 在图5中,根据一个实施例,主要主机在检查点操作之后使用包优先级调度缓冲的网络包的传输。该方法开始于开始块502并前进至块504,在块504,SR-IOV适配器134缓冲来自配置用于检查点建立的第一虚拟机的第一输出网络包。在块506,SR-IOV适配器134把高优先级分配给缓冲的来自第一虚拟机的第一网络包。在块508,SR-IOV适配器134接收来自不是配置用于检查点建立的第二虚拟机的第二输出网络包。在块510,SR-IOV适配器134缓冲来自第二虚拟机的第二网络包。在块512,SR-IOV适配器134把低优先级分配给来自第二虚拟机的第二缓冲网络包。在块514,SR-IOV适配器134基于第一缓冲网络包的较高优先级,在来自第二虚拟机的第二缓冲输出网络包之前调度来自第一虚拟机的第一缓冲网络包进行传输(在与第一虚拟机关联的检查点操作成功完成之后)。流程结束于块516。
[0043] 本文提供并描述的各附图中的流程图和框图表示根据本发明各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这个方面,流程图或框图中的每个方框可代表包括用于实现指定的逻辑功能的一个或多个可执行指令的代码的模块、段或一部分。还应该注意的是,在一些另外的实现方式中,方框中标注的功能可以不按附图中标注的次序执行。例如,事实上,根据涉及的功能,连续示出的两个方框可以基本上同时执行,或者这些方框有时候可以以相反的次序执行。还应该注意的是,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合能够由执行指定的功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合实现。
[0044] 在以上流程图中,一种或多种方法包含于包含计算机可读代码的计算机可读介质中,从而当在计算装置上(由处理单元)执行计算机可读代码时,执行一系列步骤。在一些实现方式中,在不脱离本发明的精神和范围的情况下,方法的某些过程被组合,同时或按照不同次序执行,或者也许被省略。因此,尽管按照特定顺序描述并表示了方法过程,但过程的特定顺序的使用并不意图暗示对本发明的任何限制。在不脱离本发明的精神和范围的情况下,可关于过程的顺序做出改变。因此,不应在限制性意义上解释特定顺序的使用,并且本发明的范围扩展至所附权利要求及其等同物。
[0045] 本领域技术人员应该理解,本发明的各方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采用通常全部可在本文称为“电路”、“模块”或“系统”的完全硬件实施例、完全软件实施例(包括固件、常驻软件、微码等)或组合了软件和硬件方面的实施例的形式。另外,本发明的各方面可以采用实现于具有计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。
[0046] 可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子、磁、光学、电磁、红外或半导体系统、设备或装置或者前述各项的任何合适的组合。计算机可读存储介质的更具体的例子(非穷举列表)将会包括下述各项:具有一个或多个线的电气连接、便携式计算机盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储装置、磁存储装置或前述各项的任何合适的组合。在本文的上下文中,计算机可读存储介质可以是能够包含或存储由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置使用的程序的任何有形介质。
[0047] 计算机可读信号介质可包括例如基带中或作为载波的一部分的嵌入了计算机可读程序代码的传播数据信号。这种传播信号可采用多种形式中的任何形式,包括但不限于电磁信号、光学信号或者它们的任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质并且能够传送、传播或传输由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置使用的程序的任何计算机可读介质。
[0048] 可以使用合适的介质(包括但不限于无线、有线、光缆、RF等或前述各项的任何合适的组合)传输计算机可读介质上包含的程序代码。可以按照一种或多种编程语言的任何组合编写用于执行本发明的各方面的操作的计算机程序代码,所述编程语言包括:面向对象的编程语言,诸如Java、Smalltalk、C++等;和常规的过程编程语言,诸如“C”编程语言或类似编程语言。程序代码可以完全在用户计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上并且部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后面的方案中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以(例如,使用互联网服务提供商通过互联网)连接到外部计算机。
[0049] 以下参考根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应该理解,流程图和/或框图中的每个方框以及流程图和/或框图中的方框的组合能够由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机或者其它可编程数据处理设备,以产生一台机器,从而指令(所述指令经由计算机或者其它可编程数据处理设备的处理器执行)产生用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的装置。
[0050] 这些计算机程序指令也可存储在计算机可读介质中,该计算机可读介质能够指示计算机、其它可编程数据处理设备或其它装置按照特定的方式发挥作用,从而存储在计算机可读介质中的指令产生一种制造产品,所述制造产品包括实现流程图和/或框图的一个或多个方框中指定的功能/动作的指令。计算机程序指令也可被加载到计算机、其它可编程数据处理设备或其它装置上,以使得在所述计算机、其它可编程设备或其它装置上执行一系列的操作步骤以产生计算机实现的过程,从而在该计算机或其它可编程设备上执行的指令提供用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的过程。
[0051] 将会进一步理解,本发明的实施例中的过程可使用软件、固件或硬件的任何组合实现。作为按照软件实施本发明的准备步骤,编程代码(不管软件还是固件)将会典型地存储在一种或多种机器可读存储介质中,诸如固定(硬盘)驱动器、盘、光盘、磁带、半导体存储器(诸如,ROM、PROM等),由此制造根据本发明的一件制品。通过直接从存储装置执行代码,通过把代码从该存储装置复制到另一存储装置(诸如,硬盘、RAM等)中,或者通过使用传输类型介质(诸如,数字和模拟通信链路)传输代码以进行远程执行,使用包含编程代码的所述一件制品。通过组合包含根据本发明的代码的一种或多种机器可读存储介质与用于执行其中包含的代码的合适的处理硬件,可实施本发明的方法。用于实施本发明的设备能够是包含根据本发明编码的程序或具有对该程序的网络访问权的一种或多种处理装置和存储系统。
[0052] 因此,很重要地,尽管在具有安装(或执行)的软件的全功能计算机(服务器)系统的情况下描述了本发明的说明性实施例,但本领域技术人员将会理解,本发明的说明性实施例的软件方面能够以各种形式作为程序产品分发,并且本发明的说明性实施例同样适用而不管用于实际执行分发的介质的特定类型如何。
[0053] 尽管已参照示例性实施例描述了本发明,但本领域技术人员将会理解,在不脱离本发明的范围的情况下,可做出各种改变并且可用等同物替换其元件。另外,在不脱离本发明的基本范围的情况下,可做出各种修改以使特定系统、装置或其部件适应于本发明的教导。因此,本发明不应局限于为了执行本发明而公开的特定实施例,而是本发明将会包括落在所附权利要求的范围内的所有实施例。此外,术语第一、第二等的使用并不表示任何次序或重要性,相反地,术语第一、第二等用于使元件彼此区分。
[0054] 本文使用的术语仅用于描述特定实施例的目的而非意在限制本发明。如本文所使用,单数形式“a”“an”和“the”也包括复数形式,除非上下文清楚地指示了相反的情况。另外,应该理解,当在本说明书中使用时,术语“包括”和/或“包含”指定存在已说明的特征、整数、步骤、操作、元件和/或部件,但并不表示排除存在或增加一个或多个其它特征、整数、步骤、操作、元件、部件和/或其组合。
[0055] 以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物意在包括用于结合具体要求保护的其它要求保护的元件执行功能的任何结构、材料或动作。本发明的描述是为了说明和描述的目的,而非是穷举的或者将本发明为所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变型对于本领域普通技术人员而言是清楚的。选择并描述实施例以便最好地解释本发明的原理和实际应用,并且使其他本领域普通技术人员能够针对具有适合设想的特定用途的各种修改的各种实施例理解本发明。