一种虚拟机容错方法和系统的制作方法

文档序号:6428971阅读:172来源:国知局
专利名称:一种虚拟机容错方法和系统的制作方法
技术领域
本发明与虚拟机相关,或者特指通过步调一致计算实现虚拟机容错的方法和系统。
背景技术
步调一致计算系统是指在多个处理器或计算机上通过并行或者顺序执行同一操作的计算机系统。每个处理器或计算机接收并执行操作,操作包括可执行代码、总线操作、 异步事件等,通过输入产生相同的输出,输出包含端口输出、寄存器值的改变和内存值变化。因此,当一个处理器或计算机在运行一个程序、服务或者一系列指令发生错误时,其他机器或者处理器能够继续当前程序、服务或者指令的执行。步调一致计算系统能够提供容错功能,但是步调一致计算系统比标准的计算机硬件系统要昂贵很多,当冗余的处理器和计算器增加时,步调一致计算系统的成本会更高。由于成本约束,步调一致计算系统通用性较差。

发明内容
为了解决上述问题,本发明描述了一种容错方法和系统,它是利用虚拟机实现步调一致计算系统来实现容错功能的。本发明的总体构思是一个虚拟机与至少两个其他虚拟机通信,建立一个虚拟的步调一致计算系统,每个虚拟机运行在网络中的一个节点计算机上。一个虚拟机与其他一个以上虚拟机通信决定成员关系配置文件,通常指定第一个虚拟机为活动虚拟机,其他虚拟机为备选虚拟机。当活动虚拟机执行一个单步操作时,将产生一个操作令牌,该令牌包含该单步操作步骤的内容。活动虚拟机根据成员关系配置文件将操作令牌分发到所有备选虚拟机。各个备选虚拟机依次接收并执行操作令牌并发送到下一个备选虚拟机,保证所有虚拟机保持一致的状态。一个或多个虚拟机发生故障时,未发生故障的虚拟机重新建立成员关系配置文件,恢复故障发生前的状态,继续故障发生前的操作任务,从而有效地实现了系统的容错功能。本发明涉及一种虚拟机容错方法,包括以下步骤
一个虚拟机与其他两个以上虚拟机通信,建立虚拟步调一致计算系统的成员关系,成员包括数个虚拟机,每个虚拟机运行在联网的节点计算机上。首先,一个虚拟机与其他虚拟机通信,决定虚拟步调一致计算系统的成员关系配置文件,在该成员关系配置文件中确定活动虚拟机和备选虚拟机。成员关系配置文件中用户指定的第一位虚拟机、最先启动的虚拟机或者计算能力最强的虚拟机为活动虚拟机。成员关系配置文件中除了活动虚拟机之外的虚拟机为备选虚拟机,活动虚拟机的下一个备选虚拟机为第一备选虚拟机,依次类推,最后一个备选虚拟机为最后备选虚拟机,最后备选虚拟机的下一个虚拟机为活动虚拟机。然后,虚拟步调一致计算系统中的每个成员虚拟机按照成员关系配置文件中的顺序执行每个单步操作。活动虚拟机执行一个单步操作并根据该单步操作产生一个操作令牌,并发送操作令牌到成员关系配置文件中的第一备选虚拟机;其他备选虚拟机依次接收操作令牌并执行操作令牌中包含的单步操作内容;直到最后备选虚拟机执行完单步操作后返回操作令牌到活动虚拟机,活动虚拟机根据下一个单步操作的内容产生新的操作令牌。 其中,每个虚拟机均监测其他虚拟机的工作状态。当虚拟步调一致计算系统中如果有一个或多个虚拟机发生故障被其他虚拟机检测到,检测到故障的虚拟机与所有剩余的虚拟机通信重新建立虚拟步调一致计算系统的成员关系;重新执行故障发生前的操作令牌并传递到新的成员关系配置文件中的下一个虚拟机。本发明还提供了一种虚拟机容错系统,包括 三个以上的运行在联网的节点计算机上的虚拟机。一个成员关系逻辑组件,用于发现并维护参与步调一致计算的虚拟机的列表,确定成员关系配置文件。成员关系逻辑组件中的成员关系配置文件中用户指定的第一位虚拟机、最先启动的虚拟机或者计算能力最强的虚拟机为活动虚拟机。成员关系配置文件中除了活动虚拟机之外的虚拟机为备选虚拟机,活动虚拟机的下一个备选虚拟机为第一备选虚拟机,依次类推,最后一个备选虚拟机为最后备选虚拟机,最后备选虚拟机的下一个虚拟机为活动虚拟机。一个执行逻辑组件,用于产生操作令牌,传递操作令牌到成员关系配置文件中的下一个虚拟机,并接收前一个虚拟机发送过来的操作令牌。一个容错逻辑组件,根据定时器的配置决定虚拟机是否发生故障。执行逻辑组件中的活动虚拟机执行一个单步操作并根据该单步操作产生一个操作令牌,并发送操作令牌到成员关系配置文件中的第一备选虚拟机;其他备选虚拟机依次接收操作令牌并执行操作令牌中包含的单步操作内容;直到最后虚拟机执行完单步操作后返回操作令牌到活动虚拟机,活动虚拟机根据下一个单步操作的内容产生新的操作令牌。


图1展示了一个实际的包含了多个计算设备的网络架构,使其连接成为一个虚拟的步调一致计算系统。图2展示了一个虚拟步调一致计算系统。图3展示了一个计算设备的组成。图4展示了一个实现虚拟机步调一致计算系统的执行流程图。图5展示了另一个实现虚拟机步调一致计算系统的执行流程图。图6展示了恢复失效的虚拟机的流程图。图7展示了一个计算机系统样例。
具体实施例方式在下面的描述中,将公布本专利更多的技术细节。一部分技术细节将以算法以及计算机内存数据操作的符号表达等方式来描述。这些算法是一个实现预期结果的完整过程。该过程包含了对物理量的物理操作。这些物理量以电磁信号的形式被保存、传输、组合、比较或者操作。为了描述的方便和通用性,这些物理量将被表述成位、值、元素、符号、字符、项和数字等。
在本发明的描述内容中,“通信”、“执行”、“传递”、“分发”、“产生”、“决定”等词语
对应为一个电子计算机系统内部的动作和过程。对数据的操作和转化表示对电子计算机内部物理(电子)量的内存、寄存器或磁盘等设备的存储、转移或显示。在本发明也与执行操作的系统有关,这些系统可能是为了特定需要组装而成,也可能是利用计算机程序对通用的计算机设备进行有选择的激活或者重新配置。该计算机程序能够存储到计算机的可读存储设备上,比如软盘,光盘,只读存储(ROMs),随机存储 (RAMs )等各种磁性或光存储设备上,这些存储设备能够保存电子指令。本发明不局限于任何特定计算机硬件设备和系统,可以使用各种通用的商用计算机系统实现本发明的方法和系统,可用使用各种编程语言实现本发明描述的方法和过程。本发明可以通过计算机程序产品或软件的形式提供,产品或者软件保存在机器可读的存储介质上,能够在计算机系统上运行并展现本发明实现的各种功能和效果。所述存储介质包括机器只读存储介质、随机存储介质、磁盘存储介质、光学存储介质、闪存介质,或者机器可读的瞬态存储介质等。图1展示了一个样例网络架构100,该网络架构100包含多个计算机设备,组合形成一个步调一致计算系统,是本发明的一个实施例。如图1所示的网络架构100包含第一节点计算机105、第二节点计算机110和第三节点计算机115,它们通过网络118连接。其中,网络118可以为一个公共网络或者私有网络,节点计算机105、110、115可以为个人计算机、移动计算设备、服务器或者其他计算设备。在图1所示的实施例中,节点计算机105、110、115各自运行了一个虚拟机,第一节点计算机105运行了第一虚拟机120,第二节点计算机110运行了第二虚拟机122,第三节点计算机115运行了第三虚拟机125。事实上,一个节点计算机可以运行多个虚拟机。所述虚拟机120、122、125是一个计算机的软件实现,能够像硬件一样执行计算指令。虚拟机120、122、125形成一个虚拟的步调一致计算系统。在图1所示的实施例中,虚拟机120、122、125包含一个成员关系逻辑组件,第一成员关系逻辑组件130属于虚拟机120,第二成员关系逻辑组件134属于虚拟机122,第三成员关系逻辑组件140属于虚拟机125。虚拟机120、122、125各包含一个执行逻辑组件,第一执行逻辑组件132属于虚拟机120,第二执行逻辑组件136属于虚拟机122,第三执行逻辑组件145属于虚拟机125。所述成员关系逻辑组件130、134、140使用成员协议将各个虚拟机组合成为一个步调一致计算系统。执行逻辑组件132、136、145根据操作协议获取、执行、 传输单步操作令牌。在图1所示的实施例中,第一虚拟机120在第一节点计算机105上启动,第一虚拟机120可以被用户启动或者其他计算机用用程序启动。在第一虚拟机120的操作系统启动过程中,第一虚拟机120发送初始化消息到第二节点计算机110和第三节点计算机115,分别激活第二虚拟机122和第三虚拟机125。所述初始化消息可以广播到连接到网络118上的所有节点,或者只发送到第二节点110和第三节点115上。在本实施例中,第一成员关系逻辑组件130负责发送初始化消息。所述初始化消息包含一个广播地址,接收到初始化消息的虚拟机122、125对所述广播地址发送响应消息并成为虚拟步调一致计算系统的成员。第二虚拟机122和第三虚拟机125在成功启动后,发送响应消息到广播地址确认自身成为虚拟步调一致计算系统的备选成员。所述初始化消息可以包含虚拟步调一致计算系统的唯一标识符。在本实施例中, 所述虚拟步调一致计算系统的唯一标识符由第一虚拟机120的进程标识符与第一节点计算机105的IP地址和节点名称计算得到。第一节点计算机105、第二节点计算机110和第三节点计算机115之间传递的所有消息包含所述唯一标识符。虚拟步调一致计算系统所有备选成员确认成功后,各个虚拟机的成员关系逻辑组件130、134、140根据成员协议确定最终的成员关系。成员协议用于构建一个全通的网络, 保证所有成员节点能够相互通信。成员协议可以使用Totem Single-Ring Ordering and Membership Protocol。在图1所示的实施例中,成员关系逻辑组件130、134、140根据成员协议决定成员关系配置文件。虚拟机120、122、125在成员关系配置文件中各有且仅有一条正确的记录。 成员关系配置文件中可用利用虚拟机的相关属性进行排序。在本实施例中,指定虚拟机120 为成员关系配置文件中的第一位虚拟机,即为活动虚拟机,其他成员关系配置文件中的虚拟机122和125为备选虚拟机。需要说明的是,活动虚拟机不仅可以是用户指定某个虚拟机为成员关系配置文件中的第一位虚拟机,还可以是最先启动的虚拟机或者计算能力最强的虚拟机。如图2所示,根据成员关系配置文件,每个虚拟机向下一个虚拟机发送消息。最后一个备选虚拟机125的下一个虚拟机120是第一虚拟机,也就是活动虚拟机。因此,所有成员形成一个通信环。各个节点计算机利用成员协议通信,确定步调一致计算系统的成员关系,建立成员关系配置文件。成员关系逻辑组件130、134、140根据成员关系配置文件进行一次注册活动。如图2所示,首先活动虚拟机120将注册令牌发送到第一备选虚拟机122,依次发送到最后备选虚拟机125,最后备选虚拟机125将注册令牌发回给活动虚拟机120。通过注册活动,虚拟步调一致计算系统完成构建任务。活动虚拟机120收到返回的注册令牌后,执行第一个单步操作,虚拟步调一致计算系统中其他虚拟机122和125依次执行该操作。虚拟步调一致计算系统的成员关系配置文件建立后,执行逻辑组件132、136、145 根据操作协议分阶段执行一个或多个应用程序或者服务。根据操作协议,第一活动虚拟机 120的第一执行逻辑组件132执行一个单步操作并根据该操作产生操作令牌。执行一个操作能够改变计算机系统的内存数据、寄存器数据、端口的输入和输出。上述内存、寄存器数据变更、端口的输入和输出收集后形成操作令牌的内容。活动虚拟机最先执行一个操作,接收用户、服务或者应用程序的输入。操作令牌传递到成员关系配置文件中的第二虚拟机(第一备选虚拟机)122,第二虚拟机122的第二操作逻辑组件136执行该操作,并将操作令牌传递到成员关系配置文件中的下一个备选虚拟机125。在图1的实施例中,第二虚拟机122的操作逻辑组件136并不是立刻执行该操作,而是保存将该操作的内容,在传递操作令牌之后再执行该操作,这样可以提高整个虚拟步调一致计算系统的响应时间。需要说明的是,第二虚拟机122的操作逻辑组件136还可以立刻执行操作,并在完成该操作之前或完成该操作之后传递操作令牌到下一个虚拟机。操作令牌在虚拟步调一致计算系统内顺序传递,每个虚拟机成员执行令牌内包含的操作。成员关系配置文件中的最后一个虚拟机将操作令牌传会给成员关系配置文件中的第一虚拟机,第一虚拟机产生新的操作令牌执行下一步操作。上述过程持续到应用程序或者服务执行完毕。图2为一个虚拟步调一致计算系统的组成图,该虚拟步调一致计算系统由第一虚拟机120、第二虚拟机122、第三虚拟机125组成。这些虚拟机实现了成员关系协议确立第一虚拟机120为活动虚拟机,第二虚拟机122为第一备选虚拟机,第三虚拟机125为最后备选虚拟机。首先,虚拟机120传递消息到第二虚拟机122,第二虚拟机122传递消息到第三虚拟机125,第三虚拟机125将返回消息发送到第一虚拟机120。上述消息包括注册令牌、 操作令牌等消息。图3为一个计算设备150的组成图。计算设备150作为虚拟步调一致计算系统中的一个节点计算机,计算设备150可对应于图1中的第一节点计算机105、第二节点计算机 110或者第三节点计算机115。如图3所示,计算设备150包括一个虚拟机155和一个缓存160。虚拟机155是一个进程虚拟机或者系统虚拟机。缓存160可以是随机存储或者闪存。虚拟机155及其逻辑组件在操作过程中能够保存值到缓存160中。其中,虚拟机155包含成员关系逻辑组件 165和执行逻辑组件170。成员关系逻辑模块165能够建立一个虚拟步调一致计算系统中关于所有虚拟机成员的成员关系配置文件。成员关系配置文件加载到缓存160的形成成员列表180中。虚拟步调一致计算系统中的所有虚拟都包含一份成员列表180的拷贝。成员列表180用于确认虚拟机的属性信息,包括IP地址和主机名等。上述虚拟机的属性信息用于确定虚拟步调一致计算系统中操作令牌等消息的传递目的地址。每个操作令牌包含一个顺序的标识符用于唯一确定一个单步操作,该顺序标识符比前一个操作令牌的标识符增加1。例如,第1个操作令牌的标识符为1,第2个操作令牌的标识符为2,第100个操作令牌的标识符为100。执行逻辑组件170接收、执行、传递应用程序或者服务执行过程中的一个操作步骤。所述执行逻辑组件170维护缓存160中一个操作标识符185。在本实施例中,操作标识符185标识最近一次执行的操作步骤。此外,操作标识符185还可以包含所有被执行逻辑组件170执行的操作的标识符。当活动虚拟机的执行逻辑组件170执行一个操作时,执行逻辑组件170增加操作标识符185的值,执行逻辑组件170产生一个新的操作令牌,操作令牌的标识符值为操作标识符185的值,新产生的操作令牌被发送到成员关系配置文件中的第一备选虚拟机。当第一备选虚拟机的执行逻辑组件170接收到一个操作令牌,将操作令牌中的操作标识符与缓存160中的操作标识符185比较。如果操作令牌中的操作标识符比操作标识符185的值大,那么执行逻辑组件170将执行操作令牌中的操作内容,然后执行逻辑组件 170更新操作标识符185的值。如果操作令牌中的操作标识符比操作标识符185的值小,那么执行逻辑组件170将不执行操作令牌中的操作内容。这样避免了虚拟机155多次执行一个操作。容错逻辑组件175能够检测到虚拟步调一致计算系统中网络或者计算机的失效。 在本实施例中,容错逻辑组件175包含一个消息重发定时器。当接收到一个操作令牌或者将操作令牌发送到下一个虚拟机时,消息重发定时器将被重置。在新的操作令牌接收之前,如果消息重发定时器超时,那么消息重发定时器将被重置。此外,容错逻辑组件175还可以维护一个失效定时器。与消息重发定时器类似,失效定时器也在操作令牌接收到和发送出去时被重置。失效定制器的时间限制大于消息重发定时器的时间限制。保证在失效定时器一个周期结束前,操作令牌至少能重新发送一次。如果失效定时器一个周期结束,那么可以判定该虚拟机失效。当一个虚拟机被检测到失效(例如失效定时器超时),成员关系协议将被激活,重新建立虚拟步调一致计算系统的成员关系。一个或多个原虚拟机成员发送查询消息到其他虚拟机,接收到查询消息虚拟机将认为消息发送者没有发生故障并发送响应消息到消息发送者。没有发送查询消息的虚拟机被认定为失效。虚拟步调一致计算系统新的成员关系重新建立后,将产生新的成员关系配置文件。在本实施例中,如果之前的活动虚拟机依然有效,该虚拟机仍为活动虚拟机。如果之前的活动虚拟机失效,原成员关系配置文件中的第一备选虚拟机将成为新的活动虚拟机,所有其他有效的备选虚拟机在成员关系配置文件中的位置上移一位。此外,原成员配置文件还可以不作为新成员配置文件的参考。每个有效虚拟机上缓存160中的成员列表180将更新。在原成员关系中不存在的新加入虚拟机,可以在新成员关系建立过程中加入到虚拟步调一致计算系统。新加入的虚拟机需要与原有的虚拟机通信同步状态。当新的成员配置文件建立后,新加入的虚拟机可以成为备选虚拟机。新的成员配置文件建立后,新的活动虚拟机将产生新的注册令牌,并通过新成员配置文件发送注册令牌到备选虚拟机。当活动虚拟机收到最后备选虚拟机的返回消息后, 整个虚拟步调一致计算系统将恢复检测到故障时的执行任务。在本实施例中,故障回复后,活动虚拟机将产生一个执行令牌,继续检测到故障时的执行步骤,该执行令牌包含的操作标识符与故障发生时操作令牌的操作标识符相同。此外,该操作令牌还可以包含一个恢复标记用于标识该操作令牌是在故障恢复之后产生的恢复操作。操作令牌依次发送到成员配置文件中所有的备选虚拟机,各个备选虚拟机执行故障发生时未完成的操作。当操作令牌发回给活动虚拟机时,活动虚拟机将执行一个新的操作并产生一个新的操作令牌。图4为虚拟步调一致计算系统一种实现方法的流程图,该方法通过由计算机硬件和计算机软件构成的处理逻辑来实现。本实施例通过一个虚拟机(例如图1中的第一虚拟机120)与其他虚拟机(例如图1中的第二虚拟机122和第三虚拟机125)协同合作来实现。 这些虚拟机运行在一个有网络连接的节点计算机(例如图1中的第一节点计算机105,第二节点计算机110,和第三节点计算机115)上。如图4所示,本实施例的虚拟步调一致计算系统实现方法包括如下步骤 在步骤202中,活动虚拟机(例如图2中的活动虚拟机120)与其他备选虚拟机(例如图
2中的第一备选虚拟机122和最后备选虚拟机125)通信建立虚拟步调一致计算系统的成员关系,所述活动虚拟机(例如图2中的活动虚拟机120)可以通过第一节点计算机(例如图 1中的第一节点计算机105)上的用户来指定。活动虚拟机(例如图2中的活动虚拟机120) 通过多播或广播的方式发送初始化消息到每个虚拟机。其他备选虚拟机(例如图2中的第一备选虚拟机122和最后备选虚拟机125)将相应初始化消息并加入到虚拟步调一致计算系统。在步骤204中,活动虚拟机(例如图2中的活动虚拟机120 )与其他备选虚拟机(例如图2中的第一备选虚拟机122和最后备选虚拟机125)通信确定成员关系配置文件。所述成员关系配置文件可以基于虚拟机成员的特征来决定。例如,成员关系配置文件可以由网络地址、初始化顺序、处理器标识或其他特征来决定。在成员关系和成员关系配置文件确定后,注册令牌将在所有虚拟机之间传递保证所有虚拟机注册到虚拟步调一致计算系统。 成员关系和成员关系配置文件可用利用成员关系协议(例如iTotem Single-Ring Ordering and Membership Protocol)来建立。在步骤206中,活动虚拟机(例如图2中的活动虚拟机120)执行一个单步操作。在步骤208中,活动虚拟机(例如图2中的活动虚拟机120)为所述单步操作产生一个操作令牌,所述的单步操作包含内存地址的变更,寄存器的修改,端口的输入和输出。单步操作的包含内容封装在操作令牌中。所述操作令牌包含一个顺序标识符用于唯一标识所述单步操作。在步骤210中,活动虚拟机(例如图2中的活动虚拟机120)发送操作令牌到成员关系配置文件中的第一备选虚拟机(例如图2中的第一备选虚拟机122),第一备选虚拟机执行操作令牌中包含的单步操作。然后操作令牌发送到其他备选虚拟机(例如图2中的最后备选虚拟机125),每个虚拟机接收并执行操作令牌。在步骤212中,活动虚拟机启动一个消息重发定时器和一个失效定时器。消息重发定时器用于检测丢失的消息,失效定时器用于检测故障虚拟机。在步骤214中,如果活动虚拟机接收到返回的操作令牌,则返回到步骤206执行, 开始执行下一个操作步骤。如果活动虚拟机未收到返回的操作令牌,则跳转到步骤216执行。在步骤216中,如果失效定时器超时,则假设一台虚拟机失效,转到步骤222执行。 如果失效定时器未超时,转到步骤218。在步骤218中,如果消息重发定时器未超时,转到步骤214。如果消息重发定时器超时,则假设消息令牌传输发生丢失,转到步骤220。在步骤 220,活动虚拟机重发消息令牌到第一备选虚拟机,重置消息重发定时器,并转到步骤214。在步骤222中,恢复任务被启动,转到图6的步骤405,执行恢复任务的具体流程在图6中描述。图5为虚拟机步调一致计算系统另一种实现方法的流程图,该方法通过由计算机硬件和计算机软件构成的处理逻辑来实现。本实施例通过一个虚拟机(例如图1中的第一虚拟机120)与其他虚拟机(例如图1中的第二虚拟机122和第三虚拟机125)协同合作来实现。这些虚拟机运行在一个有网络连接的节点计算机(例如图1中的第一节点计算机105, 第二节点计算机110,和第三节点计算机115)上。如图5所示,本实施例的虚拟步调一致计算系统实现方法包括如下步骤 在步骤302中,虚拟步调一致计算系统中的某一备选虚拟机(例如图2中的第一备选虚
拟机122)与其他备选虚拟机(例如图2中的最后备选虚拟机125)通信建立虚拟步调一致计算系统的成员关系,该备选虚拟机(例如图2中的第一备选虚拟机122)可以通过第一节点计算机(例如图1中的第一节点计算机105)上的用户启动。该备选虚拟机(例如图2中的第一备选虚拟机122)可以利用其他备选虚拟机(例如图2中的最后备选虚拟机125)发送的初始化消息来启动。该备选虚拟(例如图2中的第一备选虚拟机122)机响应初始化请求并发送初始化消息的返回消息。该备选虚拟机(例如图2中的第一备选虚拟机122)可以通过多播或广播的方式转发初始化消息到其他节点计算机,请求其他虚拟机加入到虚拟步调一致计算系统。运行在其他节点计算机上的虚拟机可以响应初始化消息并加入到虚拟步调一致计算系统。在步骤304中,虚拟步调一致计算系统中的某一备选虚拟机(例如图2中的第一备选虚拟机122)与其他备选虚拟机(例如图2中的最后备选虚拟机125)通信确定成员关系配置文件。所述成员关系配置文件可以基于虚拟机成员的特征来决定。例如,成员关系配置文件可以由网络地址、初始化顺序、处理器标识或其他特征来决定。在成员关系和成员关系配置文件确定后,注册令牌将在所有虚拟机之间传递保证所有虚拟机注册到虚拟步调一致计算系统。成员关系和成员关系配置文件可用利用成员关系协议(例如Totem Single-Ring Ordering and Membership Protocol)来建立。在步骤306中,虚拟机从成员关系配置文件中的前一个虚拟机接收操作令牌。操作令牌中包含单步操作的内容,包括内存地址的变更,寄存器的修改,端口的输入和输出。 操作令牌包含一个顺序标识符用于唯一标识所述单步操作。在步骤310中,虚拟机将操作令牌中的顺序标识符与虚拟机缓存中的操作标识符堆栈进行匹配。缓存中的操作标识符堆栈是虚拟机执行操作的历史列表。在步骤315中,如果操作令牌中的顺序标识符在虚拟机缓存中的操作标识符堆栈中没有查找到匹配项。如果虚拟机标识符的值比操作标识符堆栈中的最大值还大,那么该操作令牌没有在该虚拟机上执行过,转到步骤320。如果顺序标识符在操作标识符堆栈中有匹配项,那么该虚拟机已经执行过该操作,转到步骤330执行。在步骤320中,虚拟机执行操作令牌中包含的单步操作内容。在步骤325中,虚拟机添加操作令牌中的顺序标识符到操作标识符堆栈中。操作令牌包含一个顺序标识符,所述顺序标识符与前一个操作令牌的顺序标识符不同,该方法还包括
虚拟机接收到操作令牌后,将操作令牌中的顺序标识符的值与虚拟机维护的操作标识符堆栈的第一项的值相比较;如果顺序标识符大于操作标识符堆栈的第一项,执行操作令牌中包含的单步操作内容,将顺序标识符加入到操作标识符堆栈中;如果顺序标识符不大于操作标识符堆栈的第一项,该虚拟机将操作令牌传递到下一个虚拟机,不执行操作令牌中包含的单步操作内容。在步骤330中,操作令牌转发到成员关系配置文件中的下一个虚拟机。每个虚拟机依次接收并执行操作令牌中包含的操作内容。在步骤335中,虚拟机启动一个消息重发定时器和一个失效定时器。消息重发定时器用于检测丢失的消息,失效定时器用于检测故障虚拟机。在步骤340中,虚拟机如果从前一个虚拟机接收到下一个操作令牌,转到步骤315 执行。否则,转到步骤345执行。在步骤345中,虚拟机判断失效计时器是否超时。如果失效计时器超时,转到步骤 360执行。否则,转到步骤350执行,在步骤350中,虚拟机判断消息重发计时器是否超时。 如果消息重发计时器未超时,转到步骤340执行。如果消息重发计时器超时,转到步骤335
11执行,在步骤335中,虚拟机重新发送操作令牌到成员关系配置文件中的下一个虚拟机并重置消息重发计时器。返回到步骤340执行。在步骤360中,恢复任务被启动,转到图6的步骤405,执行恢复任务的具体流程在图6中描述。图6为虚拟步调一致计算系统执行故障恢复的流程图。该方法通过由计算机硬件和计算机软件构成的处理逻辑来实现。本实施例通过一个虚拟机(例如图1中的第二虚拟机122)与其他虚拟机(例如图1中的第一虚拟机120和第三虚拟机125)协同合作来实现。这些虚拟机运行在一个有网络连接的节点计算机(例如图1中的第一节点计算机105, 第二节点计算机110,和第三节点计算机115)上。如图6所示,虚拟步调一致计算系统执行故障恢复的方法包括如下步骤 在步骤405中,虚拟步调一致计算系统中的某一备选虚拟机(例如图2中的第一备选虚
拟机122)与其他备选虚拟机(例如图2中的最后备选虚拟机125)通信重新建立虚拟步调一致计算系统成员关系。该备选虚拟机(例如图2中的第一备选虚拟机122)将利用多播或广播的方式发送消息到一个或多个节点计算机,这些节点计算机可能有运行虚拟机也可能没有运行任何虚拟机。在步骤410中,如果虚拟步调一致计算系统中虚拟机数量小于一个阈值,所述阈值可以由用户设置为2、3或10等,将执行步骤415,重新建立成员关系。如果虚拟步调一致计算系统中虚拟机数量不小于所述阈值,转到步骤425执行。在步骤415中,复制备选虚拟机(例如图2中的第一备选虚拟机122),在步骤420 中,拷贝复制的备选虚拟机(例如图2中的第一备选虚拟机122)到新的节点计算机,保证复制后的新虚拟机与原虚拟机状态同步。在步骤425中,建立新的成员关系配置文件。新复制的备选虚拟机(例如图2中的第一备选虚拟机122)成为备选虚拟机中的最后一个备选虚拟机。原成员关系配置文件中的活动虚拟机在新的成员关系配置文件中仍然为活动虚拟机。在步骤430中,如果活动虚拟机发生故障,转到步骤435执行,第一备选虚拟机成为活动虚拟机。如果活动虚拟机没有发生故障,转到步骤440执行。在步骤440中,如果当前活动虚拟机为原活动虚拟机,转到步骤445执行。如果当前活动虚拟机不为原活动虚拟机,转到步骤455执行。在步骤445中,活动虚拟机重新产生操作令牌,恢复失效检测前的单步操作步骤。 单步操作包含的内容为内存地址的变更,寄存器的修改,端口的输入和输出。单步操作的包含内容封装在操作令牌中。所述操作令牌包含一个顺序标识符用于唯一标识所述单步操作。在步骤450中,活动虚拟机发送操作令牌到成员关系配置文件中的第一备选虚拟机。若果故障发生前,操作未执行完成,第一备选虚拟机将根据新的操作令牌执行操作内容。然后,根据成员关系配置文件将操作令牌发送到其他备选虚拟机。各个备选虚拟机在故障发生前为完成该操作步骤,那么将重新执行操作令牌中的操作内容。在步骤452中,第一虚拟机接收最后备选虚拟机返回的操作令牌,接着转到步骤480,即如果是对图4实施例的虚拟步调一致计算系统实现方法执行恢复任务,则转到图4的步骤206 ;如果是对图5 实施例的虚拟步调一致计算系统实现方法执行恢复任务,则转到图5的步骤355。
在步骤455中,活动虚拟机从备选虚拟机接收发生故障前的操作令牌。所述操作令牌的操作内容包含内存地址的变更,寄存器的修改,端口的输入和输出。所述操作令牌包含一个顺序标识符用于唯一标识操作令牌中的单步操作和一个用于唯一标识该虚拟步调一致计算系统的标识符。所述操作令牌包含一个恢复标签用于提醒虚拟机该单步操作在执行时发生过故障。在步骤460中,活动虚拟机将操作令牌中的顺序标识符与缓存中的操作标识符比较。缓存中的标识符用于指示一个或多个在较短时间内虚拟机执行的单步操作。如果操作令牌中的顺序标识符比缓存中的操作标识符大,那么所述操作令牌的中操作内容还没有在该虚拟机上执行,转到步骤465执行。如果操作令牌中的顺序标识符出现在缓存中的操作标识符中,那么转到步骤475执行。在步骤465中,活动虚拟机执行操作令牌中包含的单步操作。在步骤470中,活动虚拟机将操作令牌中的顺序标识符加入到缓存中的操作标识符。步骤470可以是替换缓存中的操作标识符或者是在缓存操作标识符堆栈中加入一个记录项。在步骤475中,每个虚拟机执行操作令牌中的单步操作,并根据成员关系配置文件将操作令牌发送到下一个虚拟机,接着转到步骤480,即如果是对图4实施例的虚拟步调一致计算系统实现方法执行恢复任务,则转到图4的步骤206 ;如果是对图5实施例的虚拟步调一致计算系统实现方法执行恢复任务,则转到图5的步骤355。图7为本发明虚拟机容错系统的结构图。在本系统中,多个所述计算机系统通过网络(局域网或广域网)相互连接。所述计算机系统可以是个人计算机或者服务器计算机。 所述计算机也可以是使用各种计算机集群技术组合成的计算机集群,能够联合执行一系列计算机指令。如图7所示,本发明虚拟机容错系统包括处理器502,内存504,静态存储506,网络接口设备508,视频显示设备510 (IXD或者CRT),字符输入设备512 (例如键盘),光标控制设备514 (例如鼠标),信号产生设备516,存储设备518,总线550以及网络520。其中,处理器502代表一个或多个通用微处理器CPU。存储设备518包含计算机可读的存储介质531,所述存储介质531保存了计算机指令集合(例如软件522)。所述计算机指令集合实现了本发明描述的方法和功能。计算机可读存储介质531还用于存储虚拟机155 (例如图3中的虚拟机155)和运行虚拟机所需要的软件522。所述计算机可读存储介质可以是但不仅仅是固态存储、光学存储或磁性存储介质。虚拟机155的组成结构如图3所示和上文的描述,在此不再重复描述。上述表述用于说明本发明的方法和系统。通过阅读和理解上述表述,可以现实各种其他的实施例。本发明不局限于的本专利说描述的各种实施例,能够通过修改权利声明中的内容实现更多的实施例。
权利要求
1.一种虚拟机容错方法,其特征在于,包括以下步骤一个虚拟机与至少两个其他虚拟机通信,建立虚拟步调一致计算系统的成员关系,所述成员包括数个虚拟机,每个虚拟机运行在联网的节点计算机上;首先,一个虚拟机与其他虚拟机通信,决定虚拟步调一致计算系统的成员关系配置文件,在该成员关系配置文件中确定活动虚拟机和备选虚拟机;然后,虚拟步调一致计算系统中的每个成员虚拟机按照成员关系配置文件中的顺序执行每个单步操作,并且监控其他虚拟机的工作状态;如果工作正常,循环该单步操作;如果该虚拟步调一致计算系统中有一个或多个虚拟机发生故障被其他虚拟机检测到, 则检测到故障的虚拟机与所有剩余的虚拟机通信重新建立虚拟步调一致计算系统的成员关系;并重新执行故障发生前的操作并传递到新的成员关系配置文件中的下一个虚拟机。
2.根据权利要求1所述的方法,其特征在于该成员关系配置文件中的用户指定的第一位虚拟机、最先启动的虚拟机或者计算能力最强的虚拟机为活动虚拟机;成员关系配置文件中的除了活动虚拟机之外的虚拟机为备选虚拟机,活动虚拟机的下一个备选虚拟机为第一备选虚拟机,依次类推,最后一个备选虚拟机为最后备选虚拟机,最后备选虚拟机的下一个虚拟机为活动虚拟机。
3.根据权利要求1或2所述的方法,其特征在于活动虚拟机执行一个单步操作并根据该单步操作产生一个操作令牌,并发送操作令牌到成员关系配置文件中的第一备选虚拟机;其他备选虚拟机依次接收操作令牌并执行操作令牌中包含的单步操作内容;直到最后备选虚拟机执行完单步操作后返回操作令牌到活动虚拟机,活动虚拟机根据下一个单步操作的内容产生新的操作令牌。
4.根据权利要求1或2所述的方法,其特征在于于监控其他虚拟机的工作状态时,每个成员虚拟机启动一个定时器,用于检测其他虚拟机是否发生故障;当故障检测到后,重新建立虚拟步调一致计算系统的成员关系,新的成员关系不包括发生故障的虚拟机;其中,如果是活动虚拟机发生故障,则第一备选虚拟机成为新成员关系配置文件中的活动虚拟机;于重新建立了虚拟步调一致计算系统的成员关系后,由检测到故障的虚拟机执行故障发生前的最后一个操作令牌包含的单步操作内容。
5.根据权利要求1或2所述的方法,其特征在于,如果成员关系配置文件中的第一备选虚拟机检测到活动虚拟机发生故障,那么第一备选虚拟机成为活动虚拟机。
6.根据权利要求1或2所述的方法,其特征在于,于监控其他虚拟机的工作状态时,成员关系配置文件中的每个虚拟机启动一个定时器,如果该定时器超时,那么则判定该虚拟机在成员关系配置文件中的前一个虚拟机发生故障。
7.根据权利要求4所述的方法,其特征在于,当虚拟步调一致计算系统中虚拟机数量小于一个阈值时,则拷贝复制的备选虚拟机到另一个节点计算机上,重新确定新的成员关系配置文件,以在重新建立的成员关系中包含原成员关系不包含的新虚拟机。
8.根据权利要求1所述的方法,其特征在于,单步操作的内容包含计算机内存值的改变,寄存器的改变,端口的输入与输出。
9.根据权利要求3所述的方法,其特征在于,操作令牌包含一个顺序标识符,所述顺序标识符与前一个操作令牌的顺序标识符不同,虚拟机接收到操作令牌后,将操作令牌中的顺序标识符的值与虚拟机维护的操作标识符堆栈的第一项的值相比较;如果顺序标识符大于操作标识符堆栈的第一项,执行操作令牌中包含的单步操作内容,将顺序标识符加入到操作标识符堆栈中;如果顺序标识符不大于操作标识符堆栈的第一项,该虚拟机将操作令牌传递到下一个虚拟机,不执行操作令牌中包含的单步操作内容。
10.根据权利要求1所述的方法,其特征在于,建立的成员关系包含经过排序的所有虚拟机网络地址列表。
11.一种虚拟机容错系统,其特征在于,包括三个以上的运行在联网的节点计算机上的虚拟机;一个成员关系逻辑组件,用于发现并维护参与步调一致计算的虚拟机的列表,确定成员关系配置文件,并在该成员关系配置文件中确定活动虚拟机和备选虚拟机;一个执行逻辑组件,用于产生操作令牌,传递操作令牌到成员关系配置文件中的下一个虚拟机,并接收前一个虚拟机发送过来的操作令牌;一个容错逻辑组件,根据定时器的配置决定虚拟机是否发生故障。
12.根据权利要求11所述的系统,其特征在于,成员关系逻辑组件中的成员关系配置文件中用户指定的第一位虚拟机、最先启动的虚拟机或者计算能力最强的虚拟机为活动虚拟机;成员关系配置文件中除了活动虚拟机之外的虚拟机为备选虚拟机,活动虚拟机的下一个备选虚拟机为第一备选虚拟机,依次类推,最后一个备选虚拟机为最后备选虚拟机,最后备选虚拟机的下一个虚拟机为活动虚拟机。
13.根据权利要求11或12所述的系统,其特征在于,成员关系逻辑组件与其他虚拟机通信重新建立虚拟步调一致计算系统的成员关系配置文件,其中其他虚拟机不包含已发生故障的虚拟机;所述执行逻辑组件执行故障发生前的最后一个操作令牌,然后发送该操作令牌到新成员关系配置文件中的下一个虚拟机。
14.根据权利要求13所述的系统,其特征在于,重新建立的新成员关系配置文件中包含原成员关系配置文件中不存在的虚拟机,该虚拟机包含一个复制器用于复制该虚拟机到另一个节点计算机上;一个成员关系逻辑组件和一个容错逻辑组件。
全文摘要
一种虚拟机容错的方法和系统。其是由一个虚拟机与其他虚拟机通信决定成员关系配置文件,每个虚拟机运行在网络中的一个节点计算机上,通常指定第一个虚拟机为活动虚拟机,其他虚拟机为备选虚拟机,建立一个虚拟的步调一致计算系统。当活动虚拟机执行单步操作时,将产生一个操作令牌,该令牌包含该单步操作步骤的内容。活动虚拟机根据成员关系配置文件将操作令牌分发到所有备选虚拟机。各个备选虚拟机依次接收并执行操作令牌并发送到下一个备选虚拟机,保证所有虚拟机保持一致的状态。一个或多个虚拟机发生故障时,未发生故障的虚拟机重新建立成员关系配置文件,恢复故障发生前的状态,继续故障发生前的操作任务,从而有效地实现了系统的容错功能。
文档编号G06F11/14GK102455951SQ201110204570
公开日2012年5月16日 申请日期2011年7月21日 优先权日2011年7月21日
发明者兰雨晴, 夏颖, 宋潇豫, 徐舫 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1