虚拟机失效转移管理的方法及其支持系统 |
|||||||
申请号 | CN201180060585.0 | 申请日 | 2011-12-19 | 公开(公告)号 | CN103262044B | 公开(公告)日 | 2016-03-30 |
申请人 | 国际商业机器公司; | 发明人 | A.J.麦克尼内; J.马尔卡伊; | ||||
摘要 | 在利用检查点程序控制数据从主要 虚拟机 (402)转移到次要虚拟机(406)的镜像虚拟机环境中,内部网络(400)使主要虚拟机能与其它虚拟机(404)交换网络分组而不必等待检查点发生。提供一种确保可看见特定虚拟机的网络流量的所有主要虚拟机在检查点完成之前不会影响外部环境的机制。这可通过同步化所有主要虚拟机之间的检查点,以及若其中之一失效则确保全部失效转移到相应次要虚拟机来实现。 | ||||||
权利要求 | 1.一种用于操作一丛集的虚拟机的方法,所述丛集包含两个或更多个主要虚拟机,其中每个虚拟机链接到外部数据总线,且每个主要虚拟机可操作以产生数据并传送数据到所述外部总线,以及从所述外部总线接收并处理数据,包含: |
||||||
说明书全文 | 虚拟机失效转移管理的方法及其支持系统技术领域[0001] 本发明涉及用于运行在计算机系统上的虚拟机的管理的方法,尤其是涉及其中备援(back-up)或取代虚拟机可用于从刚好失效或已经失效的虚拟机接管操作的容错系统。此外,本发明涉及实施此类方法的软件工具以及也涉及用于实施此类方法的计算机系统。 背景技术[0002] 在计算机系统中,虚拟机的使用越来越普及,其中相应的虚拟机用于处理相应程序的任何事或处理到全操作系统。相应处理器可能主持一个或多个此类虚拟机,其中支持虚拟机的处理器软件层被熟知为虚拟机监视器或超管理器(hypervisor)。使用虚拟机的特别优点在于其为彼此隔离,也在于在许多状况中虚拟机之间需要相互通讯。 [0003] 在容错系统中(通常是例如服务器架构或警报系统等非常重要的系统),备援供应是在组件失效时可切换成替代者而在最小中断下让操作继续进行。在多个虚拟机的系统中,备援供应包含额外的处理能力,在某些实例中是在连接但实体分开的机器上,其中在失效发生时可实例化取代的虚拟机。如所得知,为了最小化延迟,取代的虚拟机应能尽快接管失效机的操作,因此应要知道失效机已进行到程序或例程的何处,并能从该点接收操作。一个选项为取代机与第一机同时执行,其中取代机接收与第一机相同的输入数据并不输出,使其成为第一机的确实镜像:此配置耗费双倍的处理功率以维持取代机的操作。美国专利申请案2008/0189468号(Schmidt等人)及美国专利7,213,246号(van Rietschote等人)描述了利用交替策略的多个虚拟机系统。在操作时,对特定虚拟机而言,周期性地收集并储存机器的说明及目前的机器状态,使得在第一机失效时能产生取代的虚拟机。美国专利申请公开案2008/0155208号(Hiltgen等人)描述了类似的系统并讨论了处理取得的状态数据的安全性观点。此种系统比执行并行的虚拟机具有较低的处理开销,但是在失效发生时转换较慢,因其在能接管操作前需要先实例化取代的虚拟机。 [0004] 虚拟机镜像是一种在失效发生时几乎可立即在第二机重新开始的虚拟机执行方式。状态数据持续地在主要虚拟机与次要虚拟机之间交换。这是利用已知技术如将主要虚拟机作为检查点(checkpointing)来实现的,其中周期性获得主要虚拟机的状态并传送到次要虚拟机。检查点虚拟机系统的示例描述于美国专利申请案2010/0107158号(Chen等人)。在失效发生时,次要虚拟机为主要虚拟机在失效前的最后检查点的镜像,并可从该检查点接管操作。如所得知,检查点间的区间越短,次要虚拟机的状态越接近主要虚拟机。然而,检查点操作会产生处理开销,因此在开销与检查点频率之间必须取得平衡。检查点系统的另一问题在于为了避免复制主要虚拟机及其相应次要虚拟机在失效事件前后所产生的外部网络流量,主要虚拟机所产生的任何外部网络数据分组在通过下个检查点之前必须缓冲储存。此缓冲储存的要求造成操作延迟,使用相对长的检查点区间时尤其严重。 发明内容[0005] 因此,现有技术中需要解决上述问题。 [0006] 根据本发明的第一方面,提供一种操作一丛集(cluster)的虚拟机的方法,该丛集包含两个或更多个主要虚拟机,其中每个虚拟机链接到外部数据总线且每个主要虚拟机可操作以产生数据并传送数据到该外部总线,以及可操作以从该外部总线接收并处理数据,包含: [0007] a.针对该丛集的每个主要虚拟机,利用检查点程序,以维持相应次要虚拟机在失效转移发生时承担该主要虚拟机的任务;以及 [0008] b.在失效转移时,使每个次要虚拟机从紧接在失效转移发生前的检查点承担其相应主要虚拟机的任务, [0009] 其中该丛集的每个主要虚拟机被连接以经由内部总线接收该主要虚拟机或每个其它主要虚拟机的数据并在接收时处理数据,该方法还包含: [0010] c.同步化该丛集的所有主要虚拟机的检查点; [0011] d.针对该丛集的每个主要虚拟机,在下个检查点发生前避免将基于所收到的内部总线数据所产生的数据释出到外部总线;以及 [0012] e.在该丛集中的一个主要虚拟机失效转移时,使该丛集的所有主要虚拟机失效转移到它们相应的次要虚拟机。 [0013] 通过使用内部总线,虚拟机可从丛集的其它虚拟机接收并处理数据,而不必等待检查点通过。通过同步化检查点并一起失效转移所有的主要虚拟机,可避免产生伪外部总线流量的可能性。 [0014] 在此种方法中,针对丛集的至少一个主要虚拟机,在丛集内发生失效转移时,若确定该至少一个主要虚拟机自前个检查点后并未收到内部总线数据,则当丛集的其它主要虚拟机失效转移时,可防止该至少一个主要虚拟机失效转移到其相应的次要虚拟机。换言之,仅自从前个检查点开始已收到内部总线数据的那些主要虚拟机被失效转移。 [0015] 丛集可还包含至少一个另一主要虚拟机,其中此方法还包含:当丛集的其它主要虚拟机失效转移时,停止该另一主要虚拟机的操作:如此能容许主要虚拟机没有相应次要虚拟机。在此种配置中,该丛集的该另一主要虚拟机或各另一主要虚拟机可被连接,以经由该内部总线接收该主要虚拟机或各其它主要虚拟机的数据并在接收时处理数据,其中此方法还包含:针对丛集的该另一主要虚拟机或各另一主要虚拟机,在下个检查点发生前,防止将基于所接收到的内部总线数据所产生的数据释出到外部总线。 [0017] 再者,根据本发明提供一种包含计算机系统的设备,该计算机系统具有连接于一或多个数据储存装置的至少一个处理器装置,该系统被配置为用于操作一丛集的虚拟机,该丛集包含两个或更多个主要虚拟机,其中每个虚拟机链接到外部数据总线,其中: [0018] 1.每个主要虚拟机可操作以产生数据并传送数据到外部总线,以及可操作以从外部总线接收并处理数据; [0019] 2.针对该丛集的每个主要虚拟机,该系统利用检查点程序,维持相应次要虚拟机在失效转移发生时承担该主要虚拟机的任务; [0020] 3.在检测到失效转移时,该系统将每个主要虚拟机的任务转移到其相应次要虚拟机,其中每个次要虚拟机镜像紧接在失效转移发生前的检查点时其相应主要虚拟机的状态; [0021] 其中: [0022] 4.该系统控制该丛集的所有主要虚拟机的检查点以进行同步化; [0023] 5.该系统还包含内部总线机制,其中该丛集的每个主要虚拟机被连接,以经由该内部总线、从该主要虚拟机或各其它主要虚拟机接收数据,并在接收时处理该数据; [0024] 6.利用一个或多个储存装置,该丛集的每个主要虚拟机缓冲储存基于所收到的内部总线数据所产生的外部总线数据,并在下个检查点发生时将数据释出到外部总线;以及[0025] 7.在该丛集中的一个主要虚拟机失效转移时,该系统指示该丛集的所有主要虚拟机失效转移到它们相应的次要虚拟机。 [0026] 在此种设备中,每个主要虚拟机及次要虚拟机经由相应超管理器链接到该系统的其余虚拟机。在一实施例中,该丛集的所有主要虚拟机由单一处理器装置主持,并经由单一超管理器链接。可替换地,该丛集的该些主要虚拟机可由两个或更多个处理器装置主持,其中连接相应超管理器以交换内部总线数据。 [0027] 如上所述,针对该丛集的至少一个主要虚拟机,在丛集内发生失效转移时,该系统可确定该至少一个主要虚拟机自前个检查点后是否已收到内部总线数据,以及若未收到,则当丛集的其它主要虚拟机失效转移时,该系统可防止该至少一个主要虚拟机失效转移到其相应的次要虚拟机。 [0028] 该丛集可还包含至少一个另一主要虚拟机,当丛集的其它主要虚拟机失效转移时,该系统停止该至少一个另一主要虚拟机的操作。该丛集的该另一主要虚拟机或各该另一主要虚拟机可被连接,以经由内部总线接收该主要虚拟机或各其它主要虚拟机的数据并在接收时处理数据,且可被配置为利用一个或多个储存装置,缓冲储存该另一主要虚拟机或各该另一主要虚拟机基于所收到的内部总线数据所产生的外部总线数据,并在下个检查点发生时将该数据释出到外部总线。 [0029] 从另一方面看,本发明提供一种计算机程序产品,用于在客户计算机上创建第一计算机资源,该计算机程序产品包含:可由处理电路读取的、存储用于由处理电路执行的指令的计算机可读储存介质,用于执行一方法,用于执行本发明的上述步骤。 [0031] 有利地,本发明提供一种改善网络通信性能的方法,特别是利用检查点减少运行于系统上的虚拟机之间的通信的等待时间。 [0033] 现在将参考如附图所示的较佳实施例仅示例性地描述本发明: [0034] 图1为示出根据现有技术的计算机组件的方块图,其中可以实现本发明的较佳实施例; [0035] 图2表示根据本发明的较佳实施例的一对链接的处理器装置,每个处理器装置具有(host)多个虚拟机; [0036] 图3显示根据本发明的较佳实施例的检查点程序中的数据转移; [0037] 图4显示根据本发明的较佳实施例的、由于检查点程序造成的外部网络数据的延迟输出;以及 [0038] 图5示出根据本发明的较佳实施例的、在检查点期间到期前内部网络的供应及数据的转移。 具体实施方式[0039] 图1示意地表示适合用于实施本发明的计算机系统的组件。中央处理单元(CPU)处理器10通过地址与数据总线16连接于随机存取存储器RAM12以及只读存储器ROM14。补充CPU10的功能的协处理器装置42也经由地址与数据总线16连接到CPU10,以处理例如浮点运算、图形处理、信号处理及加密的例程。这些内部硬件装置10、12、14、42各包含支持连接到总线16的各自接口(未显示)。这些接口在形式上是现有的而无须进一步详细描述。 [0040] 多个外部硬件装置接口级(通常标示为18)也经由总线16连接到CPU10。第一接口级20支持外部输入/输出装置(例如鼠标22及/或键盘24)的连接。第二接口级26支持外部输出装置的连接,例如显示屏幕28及/或音频输出装置30(例如耳机或扬声器)。第三接口级32支持与计算机可读取介质形式的外部数据储存装置的连接,此种外部储存装置可如图所示为可移除光盘或磁盘34(其可让适当配置的盘片读取器36所存取)。 可替换地或额外地,外部储存装置可为固态存储器装置,例如扩展驱动器或记忆卡。第四接口级38支持系统经由有线或无线网络40与远程装置的连接,例如经由局域网络LAN或因特网。 [0041] 图2显示经由网络104连接的第一实体机100及第二实体机102,其中实体机为处理器装置。实体机100、102的每一个提供各自的超管理器106、108。第一超管理器106主持(host)两个主要虚拟机(VMP)110、112以及次要虚拟机(VMS)114。第二超管理器108主持一个主要虚拟机120及两个次要虚拟机116、118。这三个主要虚拟机110、112、120形成用于数据交换的丛集(在下文中详述),且各自与次要虚拟机116、118、114其中一个关联。虚拟机镜像是执行虚拟机(VM)的一种方法,其中若发生失效,几乎可立即重新在第二个机器上执行。在所示实例中,若主要虚拟机112失效,其操作重新在次要虚拟机118执行。 [0042] 状态数据周期性地从主要虚拟机及其各自的次要机传递。这是利用进行主要虚拟机的检查点程序来执行的,其包含获得主要虚拟机状态并将数据传给次要虚拟机。在本文中所述的发明是一种改良网络通讯性能的方法,尤其是降低在相同或分开的实体机上执行的主要虚拟机VMP之间的通讯的等待时间。 [0043] 图3显示了在检查点程序中主要虚拟机PRI及次要虚拟机SEC间的数据转移。当发生检查点时,发生多个操作: [0044] 1.200暂停主要虚拟机PRI的所有CPU线程。 [0045] 2.202获得每个虚拟机线程的CPU状态。 [0046] 3.204获得自从前个检查点已改变的存储器分页(MP)。 [0047] 4.206转移存储器改变及CPU状态到次要虚拟机SEC。 [0048] 5.208恢复主要虚拟机。 [0049] 如本领域技术人员所知,某些操作可同时发生或以语义上等效的顺序发生。举例而言,主要虚拟机PRI可在传送到次要虚拟机SEC前恢复。次要虚拟机的些微时间偏差是由于在操作206传送所需的时间。主要虚拟机与次要虚拟机间有快速数据连接时,时间偏差是可忽略的:为简明之故,从下面的附图中省略时间偏差。程序中的两个设定区间是检查点区间CINT及检查点等待时间CLAT。由图中可知,检查点区间CINT最好是固定的时间区间,其先前由重新开始延迟及处理器开销(overhead)之间的取舍所决定。检查点等待时间CLAT是主要虚拟机获得及传送CPU202及存储器204的状态到次要虚拟机所需的时间,当加到主要虚拟机执行其指派工作的期间210时,则构成检查点区间CINT。 [0050] 失效转移(failover)是次要虚拟机接管被镜像的主要虚拟机正在进行的工作的程序。当主要虚拟机或硬件失效时,会发生失效转移。当发生失效转移时,次要虚拟机会从前个检查点继续,而失去主要虚拟机在此检查点后所做的任何工作(例如CPU周期、存储器改变)。 [0051] 计算机(虚拟或其它)不会独自存在。它们执行外部环境可见的操作。更显著的是,其发送网络流量并储存信息到盘片。本发明不涵盖储存方面,所以在此不赘言。 [0052] 如上所述,当发生失效转移时,次要虚拟机在前个检查点继续。这意味着外部环境必须反映对应于该检查点的状态。以网络分组(packet)而言,这意味着直到次要虚拟机已收到检查点后,才能释出网络分组(可由外界看见)。如图4所示,主要虚拟机300及次要虚拟机302执行检查点操作,如图3且通常以304指示。在306,主要虚拟机产生经由外部总线或网络308向前传输的数据分组。此分组不会立即被释出,而是放置于队列310中,直到已完成下个检查点,在点312,其会被释出到外部网络。相对地,要送到主要虚拟机并在点314在外部网络接收的进入分组会无延迟地直接被传给虚拟机。 [0053] 与外部环境间的控制互动是任何虚拟机镜像方案的重要部分,并且是判定任何此种方案性能的重要因素。网络操作的延迟(等待时间增加)会造成严重的性能衰退,因此可最小化此类衰退的任何方案都是较好的。 [0054] 本发明容许其它虚拟机看见镜像虚拟机的网络分组而不必等候检查点发生。为达此作用,设置一种确保所有其它虚拟机可“看见”网络流量的机制: [0055] 1.在完成检查点前对外部环境不会有作用;以及 [0056] 2.若发生传送者失效,则必须能回到看见网络流量前的状态。 [0057] 通过以下方式配置其中所有虚拟机被镜像的环境,以达到目标: [0058] ·同步化所有虚拟机之间的检查点;以及 [0059] ·若任何一个主要虚拟机失效,保证所有主要虚拟机失效转移到各自的次要虚拟机。此技术可描述为互相保证网络毁灭,因为若任何一个虚拟机失效,为了继续运行必须破坏(并重建)所有的虚拟机。 [0060] 图5示出了在检查点之间会发生的某些网络事件。在以下说明中,显示本发明的操作以及可如何用于降低网络流量的等待时间,而仍能确保若失效发生,不应被看见的网络流量不会具有外部作用。在附图中,内部网络400视为镜像虚拟机402、404之间的网络,其中镜像虚拟机402、404以互相保证网络毁灭群或丛集方式链接。 [0061] 在点420开始执行,其中时间朝右方增加。次要虚拟机406已存在,且以下步骤表示检查点区间可能发生的事件子集。 [0063] 在点424,主要虚拟机402请求将网络分组传送到内部网络400上的机器404:其会直接传送到此虚拟机。 [0064] 在点426,网络408接收到分组:其会立即传送到主要虚拟机402。通常不需要特殊处理:原因在于网络(例如以太网络)本质为耗损,且若虚拟机失效,可重传分组。操作中的应用程序(例如在流式音频广播中)通常进行是否要重传的确定,丢失的分组通常不会重传。 [0066] 在点430,完成CPU状态/修改的分页的传送。在此时,可说是做到了检查点:修改的分页及CPU状态应用到次要虚拟机402。现在可释出外部网络的队列网络流量。 [0067] 只要丛集中的所有主要虚拟机正确地运行,就对每个检查点重复上述步骤。然而,若任何主要虚拟机失效,则所有主要虚拟机必须失效转移到对应的次要虚拟机。 [0068] 互相保证毁灭群(pool)是虚拟机的丛集,其能不延迟地传输网络分组(经由内部网络400)。如上所述,通过同步化检查点以及确保若任何一个虚拟机失效,则将丛集中的所有虚拟机失效转移到次要虚拟机而达到此作用。 [0069] 为了同步化检查点,控制每个虚拟机的超管理器必须沟通。最简单的作法是仅具有一个超管理器并使所有虚拟机在相同的实体机上操作。然而,在实体机之间可设置低等待时间通信链接,以容许有多个超管理器。在此种结构中,内部网络及外部网络可共享相同的实体连接,但是内部网络上的网络流量必须与外界(例如外部网络)隔离。 [0070] 次要虚拟机在设置上并无限制:其可位于不同的实体机器且不需要任何特殊的网络连接。然而,在此结构中,机器失效转移到次要虚拟机后,互相保证网络毁灭群组不会继续操作,除非次要虚拟机是连接到内部网络,它们变成被指定成为主要虚拟机,且定义了新的各个次要虚拟机。 [0071] 在上述系统的变型中,互相保证网络毁灭是部分的而不是全部的:若其中一个主要虚拟机失效,仅群组中可从该虚拟机得到流量的其它虚拟机也需要失效转移。因此,若系统建立成使其知道哪个虚拟机自最后检查点开始已从失效的机器接收到网络流量,则仅这些机器需要失效转移。这意味着若自最后检查点开始没有传送网络流量,则仅失效的虚拟机必须失效转移。 [0072] 在又一变型中,虽然如先前所述在互相保证网络毁灭群组中所有的机器应被镜像,但是不一定必须如此。虽然这种结构可能是最有用的,但是其它结构也是有效的。不是所有的虚拟机都必须被镜像,然而所有虚拟机必须使所有外部可见的交易延迟,直到被镜像的虚拟机上的检查点已经完成。若在此状况下发生失效,则镜像机应失效转移(如上述),且非镜像机必须停止。 [0073] 虽然本发明实施例已说明如上,但是本发明的技术范围不限于上述实施例的范畴。对本领域技术人员明显的是,这些实施例可有各种改变及改进。由所附权利要求书的描述清楚可知本发明的技术范围包含此种改变及改进的实施。 |