首页> 中国专利> 用于维持镜像虚拟环境中存储装置的一致性的方法和系统

用于维持镜像虚拟环境中存储装置的一致性的方法和系统

摘要

本发明提供了用于实现可由第一和第二机器访问的存储装置中的数据一致性的方法和系统。该方法包括:响应于接收到第一机器的第一状态信息,将第二机器配置为与第一机器的第一检查点操作状态相对应的镜像操作状态;接收第一机器将覆写在共享存储装置中存储的一个或多个现有数据的通知,并且,响应于接收到该通知,读取现有数据;将现有数据的复本存储在第二机器的本地存储装置;以及向第一机器发送现有数据已被成功地存储在本地存储装置中的确认,以使第一机器能够用新写入的数据来覆写现有数据。该方法还包括:响应于接收到故障通知,从第二机器的本地存储装置检索现有数据的复本;用现有数据的复本来覆写在共享存储装置中新写入的数据。

著录项

  • 公开/公告号CN103164254A

    专利类型发明专利

  • 公开/公告日2013-06-19

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201210344526.2

  • 发明设计人 A.J.麦克尼内;D.J.O.里格比;

    申请日2012-09-17

  • 分类号G06F9/455;

  • 代理机构北京市柳沈律师事务所;

  • 代理人邸万奎

  • 地址 美国纽约阿芒克

  • 入库时间 2024-02-19 19:24:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-04-27

    授权

    授权

  • 2013-07-24

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20120917

    实质审查的生效

  • 2013-06-19

    公开

    公开

说明书

技术领域

本发明一般涉及数据处理系统,并且,具体地,涉及虚拟数据处理系统 中的存储一致性。

背景技术

虚拟机(VM)是诸如数据处理系统或计算机系统的物理机的逻辑实现。 这样,VM能够以与物理计算机系统运行(execute)代码同样的方式运行计 算机程序和计算机可读代码,并且,在使资源对VM可用时,VM可使用物 理机提供的资源。所述另一种方式:VM提供对在VM上运行的计算机程序 可用的物理资源的抽象。诸如计算机系统的物理机可包括单个VM,或可包 括几个VM。提供VM的软件层被称为管理程序(hypervisor)。

实现VM的一种方法包括使用镜像VM环境。镜像VM环境包括两个相 同的VM。两个相同的VM中的每个包括可用物理资源的相同抽象。镜像VM 可驻留在单个主机、或分立的主机上。镜像VM环境允许在一个虚拟机上遇 到硬件错误的计算机代码在第二虚拟机上运行。

发明内容

所述实施例的方面提供了用于实现可由第一机器和第二机器访问的共享 存储装置中的数据一致性的方法、系统和计算机程序产品。该方法包括:响 应于从在第一机器上执行的第一检查点接收到第一机器的第一状态信息,将 第二机器配置为与第一机器的第一检查点操作状态相对应的镜像操作状态。 该方法还包括:接收第一机器将覆写在共享存储装置中存储的一个或多个现 有数据的通知,并且,还包括:响应于接收到第一机器将覆写一个或多个现 有数据的通知,读取在存储位置中存储的一个或多个现有数据;将所述一个 或多个现有数据的复本(copy)存储在第二机器的本地存储装置;以及向第 一机器发送现有数据已被成功地存储在本地存储装置中的确认,以使第一机 器能够用新写入的数据来覆写共享存储装置中的一个或多个现有数据。该方 法还提供:响应于接收到指示第一机器在下一个检查点之前已发生故障的故 障通知,从第二机器的本地存储装置检索现有数据的复本;用从第二机器的 本地存储装置检索的现有数据的复本来覆写在共享存储装置中新写入的数 据;以及触发第二机器来接管并恢复先前由第一机器从第一检查点执行的工 作。

上面的总结包括简化、一般化和细节的省略,且不意欲作为所要求权利 的主题的综合描述,而意欲提供与其关联的某些功能性的简要概述。对于本 领域的技术人员来说,通过检查附图和详细撰写的描述,所要求权利的主题 的其他系统、方法、功能、特征和优点将变得显而易见。

在下面详细撰写的描述中,本发明的以上和附加的目的、特征和优点将 变得显而易见。

附图说明

通过结合附图来阅读说明性的实施例的描述,其中:

图1提供了根据一个实施例的可实践本发明的示例数据处理系统的框图 表示。

图2提供了根据一个实施例的具有在网络架构内连接的镜像虚拟机的示 例计算环境的框图表示。

图3提供了根据一个实施例的具有共同位于同一物理主机上的镜像虚拟 机的示例计算环境框图表示。

图4是图示根据一个实施例的方法的流程图,该方法用于通过使用检查 点操作来收集状态信息并通知在第一虚拟机上运行计算机代码期间出现的故 障,而实现数据一致性。

图5是图示根据一个实施例的方法的流程图,该方法用于通过镜像虚拟 机的基于检查点的配置来实现数据一致性。

图6是图示根据一个实施例的方法的示例序列图,该方法用于通过镜像 虚拟机环境在共享存储装置中实现数据一致性。

具体实施方式

图示的实施例提供了通过镜像虚拟机在共享存储装置中实现数据一致性 的方法、系统和计算机程序产品。简而言之,尽管计算机代码运行在第一虚 拟机上,但在检查点周期性地捕捉状态信息,并将其转发到第二虚拟机。利 用状态信息来配置次(secondary)虚拟机,以将主(primary)虚拟机在检查 点的的操作状态镜像。响应于接收到第一虚拟机将在检查点之后覆写共享存 储装置中的现有数据的通知,次虚拟机从共享存储装置中读取现有数据,将 现有数据存储在次虚拟机的本地存储装置中,并向第一虚拟机发送确认。此 外,在一个或多个实施例中,第二虚拟机接收指示第一虚拟机在下一个检查 点之前已发生故障的通知。响应于接收到该通知,第二虚拟机检索来自本地 存储装置的现有数据的复本,利用现有数据的复本来覆写在共享存储装置中 新写入的数据,并触发第二虚拟机的处理器,以恢复先前由第一机器执行的 工作。第二虚拟机使用在第一检查点存储在共享存储装置中的数据值来从第 一检查点恢复操作。

在下面对本发明的示例实施例的详细描述中,充分详细地描述了可实践 本发明的特定示例实施例,使本领域的技术人员能够实践本发明,并且,应 理解,可利用其它实施例,并且,可在不背离本发明的精神或范围的情况下 作出逻辑、架构、程序性、机械、电和其它改变。因此,下面的详细描述不 被视为限制意义,并且,本发明的范围由所附权利要求及其等同物定义。

这里使用的术语仅用于说明特定实施例的目的。并且,不意欲限制本发 明。如在这里使用的,单数形式的“一”、“一个”和“该”意欲也包括复数 形式,除非上下文明确相反指出。还将理解,当在此说明书中使用时,术语 “包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的 存在,而不排除一个或多个其它特征、整数、步骤、操作、元素、组件和/或 其组的存在或添加。

下面通过参照根据本发明的实施例的方法、装置(系统)和计算机程序 产品的流程图和/或框图来描述本发明的方面。将理解流程图和/或框图的每个 框、以及流程图和/或框图的框的组合可被实现为计算机程序指令(或代码)。 这些计算机程序指令可被提供到通用计算机、专用计算机或其它可编程数据 处理装置的处理器,以生产机器,使得经由计算机或其它可编程数据处理装 置的处理器执行的指令实现在流程图和/或框图的一个或多个框中指定的方 法/处理/功能/动作。

这些计算机程序指令还可被存储在计算机可读介质中,其可引导计算机、 其它可编程数据处理装置或其它装置以特定方式起作用,使得在计算机可读 介质中存储的指令生产制品(或计算机程序产品),其包括实现在流程图和/ 或框图的一个或多个框中指定的方法/处理/功能/动作的指令。计算机程序指 令还可被加载到计算机、其它可编程数据处理装置或其它装置,以使操作步 骤的系列在计算机、其它可编程数据处理装置或其它装置执行,以产生计算 机实现的处理/方法,使得在计算机、其它可编程数据处理装置上运行的指令 实现在流程图和/或框图的一个或多个框中指定的方法/处理/功能/动作。

应理解,特定组件、装置和/或参数名称的使用(如在这里描述的执行工 具/逻辑中的那些)仅用于示例,且不意欲暗示对本发明的任何限制。由此, 可利用用来描述这里的组件/装置/参数的不同的命名/术语来实现本发明,而 不是限制。这里使用的每个术语在上下文中被使用时将被赋予其广义解释。

应理解,可实践所述实施例的计算环境可被称为云计算环境。云计算表 示基于因特网的计算,其中,共享的资源、软件和信息被按需要提供给计算 机系统和其它电子装置(例如,移动电话)的用户,这类似与电网。云计算 的采用已被虚拟化的广泛利用而推动,虚拟化是诸如操作系统、服务器、存 储装置、网络资源等事物的虚拟(而不是实际)版本的创建。虚拟机(VM) 是物理机(计算机系统)的软件实现,其像物理机那样执行指令。VM通常 被分类为系统VM或进程VM。系统VM提供完整的系统平台,其支持完整 操作系统(OS)的运行。相反,进程VM通常被指定为运行单个程序,并支 持单个进程。VM特征为:在VM上运行的应用软件被限于由VM提供的资 源和抽象。系统VM(也被称为硬件VM)允许背后的物理机资源在不同VM 之间共享,其中每个VM运行其自己的OS。提供虚拟化并控制VM的软件 典型被称为VM监视程序(VMM)或管理程序。管理程序可运行在裸硬件(类 型1或原生(native)VMM)上、或运行在操作系统之上(类型2或宿主(hosted) VMM)。

云计算提供了基于因特网对信息技术(IT)服务的消费和递交模型,并 涉及动态可扩展(scalable)且通常虚拟化的资源的因特网上的提供。对远程 计算网站的简单化访问(ease-of-access)(例如,经由因特网或私有公司网) 有助于云计算,并且,云计算频繁地采用云消费者可访问并通过网络浏览器 使用的基于网络的工具或应用的形式,如同该工具或应用是在云消费者的计 算机系统上安装的本地程序那样。商用云实现通常被期望满足消费者的服务 质量(QoS)需求,并典型地包括服务级别协定(SLA)。云消费者通过从云 供应方(例如,第三方提供方)租用使用量来避免资本支出。在典型的云实 现中,云消费者消费作为服务的资源,并仅对使用的资源付费。

现在参照附图,并从图1开始,绘出示例数据处理系统(DPS)100的框 图表示,在该系统内,可有利地实现所述实施例的功能方面。DPS 100包括 通过互连150而连接的大量组件。具体地,图1绘出了DPS 100,其包括存 储器102、中央处理单元(CPU)104(也可互换地被称为处理器)、存储装置 106、服务处理器108、输入/输出(I/O)控制器110、以及网络接口卡(NIC) 112(也可互换地被称为网络接口)。另外,图1绘出了DPS 100可经由NIC 112 跨越网络114而连接到网络共享存储装置146、以及第二DPS 148。

本领域的技术人员将理解,CPU 104可为任意类型的硬件处理器。I/O控 制器110允许用户与DPS 100接口。如所绘出的,I/O控制器110提供用于诸 如显示装置140、键盘142和鼠标144的装置的接口。根据一个或多个实施 例,显示装置140可包括输出部件,如液晶显示器(LCD)、等离子显示器、 阴极射线管(CRT)监视器或任意其他类显示装置。

DPS 100还包括服务处理器108,其提供处理引擎,以支持管理程序116 的运行、以及通过管理程序116的运行而使能的各种虚拟化。如通过参照图 2-3所述,管理程序116提供DPS 100的资源,以创建一个或多个操作系统 (OS)逻辑分区或虚拟机,并且,管理程序116管理虚拟机、以及与虚拟机 相关联的几个管理进程。

存储器102可为随机存取存储器(RAM)、高速缓存、闪存、或任意其 他类型的存储结构,其被配置为存储可由CPU 104执行的计算机指令/代码和 /或在这样的运行期间使用的数据。如绘出的,存储器102包括操作系统118。 操作系统118可为管理计算机代码的运行并管理硬件资源的任意平台。例如, 操作系统118可为Advanced Interactive Executive操作系统、操作系统、或本领域中公知的任意其他操作系统。是IBM公司的注册 商标,是Linus Torvalds的注册商标。

存储器102还包括应用120和多个功能模块,诸如回滚(Rollback)读取 (RR)模块122、检查点模块124、以及数据写入(DW)模块126。应理解, 这些模块中的一个或多个可与管理程序116相关联,且/或可被分布到可由管 理程序116提供的一个或多个虚拟机的特定存储器。为了此说明的清楚的目 的,应用120为可运行计算机代码,其可在由管理程序116提供的镜像虚拟 机内执行。在一个或多个实施例中,应用120可为可在包括第一虚拟机和第 二虚拟机(它们作为镜像的虚拟机)的镜像虚拟化环境内执行的任意计算机 代码(例如,参照图2和3)。在镜像虚拟化环境内,由通过对来自DPS 100 的组件中的一个或多个硬件、固件和/或OS资源(诸如存储器102、存储装 置106和CPU 104)进行抽象而配置的一个或多个逻辑分区(虚拟机)运行 应用120。DPS 100的逻辑分区或各个实施例的描述内的DPS的任意表示将 可被互换地称为虚拟机。

如所描述的,DPS 100还包括存储装置106。存储装置106可为任意类型 的计算机存储装置,如硬盘、光盘驱动器(如紧凑盘(CD)驱动器或数字视 频盘(DVD)驱动器)、以及闪存驱动器。当DPS 100包括次虚拟机时,存 储装置106可包括RR数据存储装置132,其包括从由第一虚拟机中的检查点 模块124执行的检查点的时刻起已在共享存储装置中被覆写的一个或多个数 据集。下面,通过参照图2-6,来详细描述检查点模块124在实现这里提供的 数据一致性的处理内的操作。在一个或多个实施例中,回滚读取(RR)数据 存储装置132包括回滚读取(RR)映射,其提供该一个或多个存储的数据集 中的每个、与从其读取数据的共享存储装置(诸如网络存储装置146)的关 联存储位置之间的映射。RR数据存储装置132还可存在于网络存储装置146、 或第二DPS 148内的存储装置中。

现在,通过参照图2,示出了:根据一个或多个所述实施例,示例性的 虚拟化的网络化DPS架构200,其在经由网络构造(206)互连的分立主机装 置中具有镜像虚拟机。网络化的DPS架构200用作镜像VM环境的示例,其 具有位于跨越网络分布的不同主机装置上的主和次VM。

如所绘出的,网络化的DPS架构200包括跨越互连或网络构造206以通 信方式连接的主主机202和次主机252。另外,网络化的DPS架构200包括 在网络构造206上连接的存储装置208。根据一个或多个实施例,主主机202 和次主机252中的每个是物理计算机系统。类似于图1中的DPS 100,主主 机202包括硬件210,其包括I/O 226、网络接口(NI)224、本地存储装置 222、CPU 218、以及存储器220。类似地,次主机252包括分离硬件260,其 包括I/O 276、网络接口(NI)274、本地存储装置272、CPU 268、以及存储 器270。在硬件210和硬件260中发现的组件可类似于在图1的DPS 100中 发现的组件。

在主主机202中,管理程序212逻辑上位于硬件层210之上。管理程序 212是虚拟化管理组件,其对在硬件210中可用的资源分区,以创建逻辑分 区,如主VM 216。另外,管理程序212被配置为管理主VM 216、以及主VM 216可用的系统资源。管理程序212在操作上连接到服务处理器214(和/或 在服务处理器214内/上运行),服务处理器214允许经由管理程序212对逻 辑分区的外部配置和/或管理。

如所示出的,主VM 216包括作为CPU 218的逻辑分区的CPU 228、以 及作为存储器220的逻辑分区的存储器230。主VM 216还可具有对提供用于 主VM 216的本地存储装置232的存储装置222的逻辑分区的访问。另外, 主VM 216包括操作系统234的实例。尽管未示出,但根据一个或多个实施 例,操作系统234可为位于存储器220中的操作系统的实例。主VM 216及 其中的逻辑组件提供了用于计算机代码的虚拟运行环境。具体地,如所绘出 的,主VM 216可为用于应用236A、检查点模块238以及DW模块240的运 行的运行环境。在可选实施例中,检查点模块238以及DW模块240中的一 个或两者可作为管理程序212内的可运行模块而存在,并且,可由管理程序 212周期性地触发检查点模块238以及DW模块240的执行。在另一实施例 中,检查点模块238以及DW模块240中的一个或两者可为OS 242内的可运 行模块。

检查点模块238是捕捉与运行已被中止(suspend)的运行点相对应的状 态信息的工具。遇到检查点时的主VM 202的状态是检查点操作状态。在一 个或多个实施例中,状态信息包括诸如处理器状态、存储页、以及存储装置 中自先前检查点或者自启动应用246的运行起已被修改的数据之类的数据。 检查点模块238获得在应用236A的运行由于遇到检查点而被中止时的、主 VM 202中的资源的检查点操作状态的状态信息。在多个实施例中的一个中, 检查点是计算机程序的执行中的点,在该点,应捕捉状态信息,且应将镜像 虚拟机配置为与主VM 202的检查点操作状态匹配的镜像操作状态。可由应 用236A提供检查点。可选地,在应用236A的运行期间,检查点模块238可 周期性地生成检查点。当遇到检查点时,检查点模块238使应用236A的运 行被CPU 228(即,运行应用236A的处理器)中止。检查点模块238将捕捉 的状态信息传送到存储装置,使应用246A的运行从中止运行的运行点重新 开始,并继续监视应用246A的运行,以在已遇到下一个检查点时进行识别。

DW模块240是在应用236A的运行期间可并发运行的工具,用来在主 VM 216正在尝试覆写在与次级VM 266共享的存储装置中的数据时进行识 别。DW模块240使用本地存储装置来提供主VM 216和次VM 266之间的供 电存储装置的镜像视图。在一个或多个实施例中,当应用236A尝试覆写在 与次VM 266共享的存储装置中存储的数据时,DW模块240生成用来发送 到次VM 266的、第一机器将要覆写现有数据的通知,并且,DW模块240 传递共享存储装置中的数据的位置的地址。DW模块240将该通知发送到次 VM 266或管理程序212,使得能够复制所识别的存储位置中的当前数据并将 所识别的存储位置中的当前数据本地地存储到次VM 266。在允许在主VM 216上运行的应用236A覆写在所识别的共享存储位置中的数据之前,DW模 块240等待接收已复制数据并已将数据存储在次VM 266的本地存储装置中 的确认。

在次主机252中,管理程序262在逻辑上位于硬件层260之上。管理程 序262是虚拟化管理组件,其将硬件260中可用的资源分区,以创建逻辑分 区,诸如次VM 266。另外,管理程序262被配置为管理次VM 266、以及次 VM 266可用的系统资源。管理程序262在操作上连接到服务处理器264(和 /或在服务处理器264内/上运行),服务处理器264允许经由管理程序262对 逻辑分区的外部配置和/或管理。

在网络化的DPS架构200的镜像虚拟环境内,管理程序212和262在建 立主VM 216和次VM 266的期间彼此通信,以确保两个镜像的VM在硬件 和软件上被类似/同等地配置。从整个系统角度看,在一个或多个实施例中, 每个管理程序将确切的资源量分配给其各个虚拟机,并且,还确保被分配的 资源的类型是相似的。例如,被分配的处理器资源的处理器速度、以及所提 供的只读存储器和随机存取存储器的类型(即,存取速度和物理配置)在主 VM 216和次VM 266中等同。OS实例的类似版本也被分配给每个虚拟机。 可运行工作的类似加载也被提供给两个系统,尽管实际上仅主VM 216在前 行的基础上(on an ongoing basis)运行其工作负载。由此,主VM 216和次 VM 266两者被提供有应用的相同复本,其分别被标识为应用236A和应用 236B。次VM 266用作后备VM,并具体作为主要操作来在主VM 216出现 硬件故障的情况下执行应用246B的运行的VM。由此,次VM 266的计算机 代码(例如,应用246B)的运行可限于仅运行从与检查点相对应的特定代码 运行点起的计算机代码,在该检查点之前,已在主VM 216中成功进行了计 算机代码的运行。

为了在主VM 216的计算机代码的运行故障的情况下有效地故障切换到 次VM 266,一个实施例提供了:自动将次VM 266配置为主VM 216在每个 检查点的当前操作状态。由此,管理程序262在第一检查点从主VM 216接 收/获得状态信息,并且,管理程序262立即将次VM 266配置为与主VM 216 的检查点操作状态相对应的镜像操作。在一个或多个实施例中,次VM 266 的资源的配置导致CPU 278、存储器280、以及本地存储装置282的状态分别 与CPU 228、存储器230、以及本地存储装置232的状态匹配。另外,次VM 266的配置在该检查点实现了主VM 216和次VM 266共享的任何物理存储装 置的一致视图(view)。例如,主VM 216和次VM 266可各自具有经由网络 而对存储装置222、存储装置272、或存储装置208的访问。一旦作为对主 VM 216的镜像虚拟机的次VM 266的配置成功完成,管理程序262便通知管 理程序212,并且,管理程序212启动在主VM 216上的代码运行的恢复。

次VM 266包括作为CPU 268的逻辑分区的CPU 278、以及作为存储器 270的逻辑分区的存储器280。次VM 266还可具有对提供用于次VM 266的 本地存储装置272的存储装置254的逻辑分区的访问。另外,次VM 266包 括操作系统284的实例。主VM 216和次VM 266是镜像的虚拟机。由此, 次VM 266及其中的逻辑组件提供了用于与主VM 216的虚拟运行环境等同 的计算机代码的虚拟运行环境。如所描述的,次VM 266可为用于运行应用 246B、以及RR模块288的运行环境。在可选实施例中,RR模块288可被提 供为管理程序262的一部分,并可作为管理程序262内的可运行模块而存在, 并且,在接收到在主VM 216上的计算机代码(例如应用246A)的运行中检 测到故障状况的通知之后,可由管理程序262触发RR模块288的运行。在 另一实施例中,RR模块288可为OS 284内的可运行模块。

在可选实施例中,RR模块288可被提供为与管理程序262结合操作的服 务处理器264内的服务。

RR模块288是与DW模块240接口的工具,并接收第一机器将覆写在 主VM 216和次VM 266的共享存储装置中存储的一个或多个现有数据的通 知。DW模块240读取在存储位置中当前存储的现有数据,并将现有数据的 复本存储在诸如RR数据存储装置290的本地存储装置中。在一个或多个实 施例中,现有数据和从其读取了数据的存储位置之间的映射被存储在RR映 射292中。在存储了现有数据的复本之后,RR模块288向主VM 216发送确 认,其指示成功存储了现有数据。在一个或多个实施例中,可将该确认发送 到DW模块240或管理程序212,以允许主VM 216覆写现有数据。

RR模块288还与检查点模块238接口。当检查点模块238将状态信息发 送到管理程序262并使管理程序262重新配置次VM 266时,RR模块288移 除先前从RR数据存储装置290复制的数据。另外,如果在应用246A的运行 期间主VM 216发生了运行故障,则RR模块288接收已出现了运行故障的通 知。RR模块288检索在RR数据存储装置290中存储的数据,并通过使用 RR映射292来识别在从其读取了数据的存储装置中的位置。RR模块288用 检索到的先前复制并存储在RR数据存储装置290中的数据来覆写在RR映射 292识别的存储位置中的新写入的数据。由此,在故障切换(failover)到次 VM 266之后,共享存储装置通过VM 266的视图等同于在先前的检查点上共 享存储装置通过主VM 216的视图。在一个或多个实施例中,在将次VM 266 的操作状态配置为匹配主VM 216在先前的检查点的操作状态之后,RR模块 288或管理程序262触发CPU 278从先前的检查点恢复先前由主VM 216执 行的工作。

现在参照图3,其示出了示例虚拟化DPS架构300的单主机装置实现, 在其内,可有利地实现所述实施例的功能方面。虚拟化DPS 300用作单个物 理装置内的镜像VM环境的示例。虚拟化DPS 300被呈现为服务器,其包括 硬件组件310和软件、固件和/或OS组件,它们在逻辑上被管理程序312分 区和规定,以创建主VM 316和次VM 366。

DPS 300的架构类似于单独示出了虚拟机的图1的架构。在此可选实施 例中,硬件层308包括CPU 334A-334B、存储装置332A-332B、存储器 336A-336B、以及网络适配器或接口(NI)330A-330B中的每个的多个。管 理程序312和服务处理器314在逻辑上位于硬件层310之上。如所示出的, 图3例示了一个或多个实施例,其中,检查点模块338、DW模块340以及 RR模块368位于管理程序312内。根据图2,管理程序312将硬件310中的 可用资源分区,以创建逻辑分区,包括主VM 316和次VM 366两者,它们 共同位于同一物理装置(例如,DPS 300)上。另外,管理程序312被配置为 管理主VM 316和次VM 366两者、以及主VM 316和次VM 366可用的系统 资源。如在这里呈现的,管理程序312还支持主VM 316和次VM 366之间 的全部通信,尤其是与检查点操作相关的信息的交换、以及共享数据存储装 置的一致性。

尽管主VM 316和次VM 366驻留在单个物理装置中,但分配给每个VM 的物理资源中的特定物理资源可以不同。例如,在主VM 316中,CPU 328、 存储器330、以及本地存储装置332可分别为CPU 334A、存储器336A、以 及存储装置332A的逻辑分区。另外,在次VM 366中,CPU 378、存储器380、 以及本地存储装置382可分别为CPU 334B、存储器336B、以及存储装置332B 的逻辑分区。此外,主VM 316和次VM 366中的每个包括操作系统的实例 (OS 334和OS 384)。在一个或多个实施例中,RR数据存储装置390可位于 存储装置332B中。根据图2,主VM 316和次VM 366两者都被配置为类似/ 相同的虚拟机,在这里被称为镜像虚拟机。

本领域的技术人员将理解,图1-3中绘出的硬件组件和基本配置可以变 化。DPS内的说明性的组件不意欲为穷举性的,而是代表性的,用来强调实 现本发明的关键组件。例如,可使用其它装置/组件补充或取代绘出的硬件。 绘出的示例不意味着暗示与当前描述的实施例和/或一般发明相关的架构限 制或其它限制。图1-3中绘出的数据处理系统可为例如IBM eServer pSeries 系统,其为纽约州阿芒克的IBM公司的产品,其运行AIX操作系统或LINUX 操作系统。

图4图示了根据一个实施例的流程图,其示出了通过捕捉并存储状态信 息来实现数据一致性的计算机实现的方法。具体地,图4图示了用于在第一 机器上捕捉状态信息的方法,该状态信息可被用于配置具有主和次虚拟机的 镜像虚拟环境内的第二机器。如上所述,主和次虚拟机可位于分离的物理装 置上,或者,它们可位于单个装置上,并且,参照在图2和3的架构内呈现 的组件。可通过运行检查点模块238/338的主VM 216/316的CPU 228/328、 或者可选地通过运行检查点模块238/338(作为管理程序212/312和/或OS 234/334的代码片段)的服务处理器214/314,来完成该方法内的一个或多个 处理。为确保覆盖这些可选实施例,将从检查点模块238/338和DW模块 240/340、以及检查点模块238/338和DW模块240/340所完成的功能处理的 角度来描述该方法,而不限制本发明的范围。

该方法在框405开始,其中,主虚拟机开始运行计算机代码,如用于应 用的可运行代码。为了简化起见,下面的描述假定在建立和配置镜像虚拟机 之后发生计算机代码的运行。在框410,计算机代码的运行在主VM上继续, 直到遇到代码运行的中断为止。在判定框415,检查点模块确定是否已遇到 检查点。在此情形下,检查点可为在指令代码内被预编程为在代码运行的特 定点处发生的检查点。在一个或多个可选实施例中,可通过检查点模块来触 发检查点,以使管理程序在特定时刻(基于某个预设的周期)暂停主虚拟机 内的处理器运行。与遇到检查点不同,检查点模块可由此被认为生成检查点。 在一个或多个实施例中,当在共享存储装置中存储的数据超过了阈值数据量 时生成检查点。

在框415,如果遇到检查点,则该方法在框420中继续,并且,检查点 模块使管理程序中止主虚拟机中的计算机代码的运行。随后,在框425,检 查点模块捕捉当前状态信息。在一个或多个实施例中,检查点模块捕捉与主 虚拟机刚好在第一检查点之前执行的工作相对应的当前状态信息。在框430, 检查点模块将状态信息传送到管理程序,并且,管理程序使用该状态信息配 置镜像次虚拟机。如上所述,状态信息可包括这样的数据,如在主虚拟机中 出现检查点的计算机代码的运行点上的处理器状态、存储页的状态、存储装 置的状态、外围硬件的状态、或与任意主硬件的状态有关的任意其它数据。 响应于在框435接收到次VM已被配置的确认,该方法在框440中继续,并 且,检查点模块使管理程序恢复主虚拟机中的计算机代码的运行。

回到判定框415,如果遇到的中断不是检查点,则该方法在判定框445 中继续。在框445中遇到写入请求的情形中,则该方法在框450中继续。当 在执行计算机代码期间遇到写入请求时,DW模块识别共享存储装置中计算 机代码请求写入的存储位置。在框455,DW模块将主VM将覆写在共享存 储装置的存储位置中当前存储的数据的通知发送到次VM、或次VM的管理 程序。在一个或多个实施例中,覆写通知包括主VM将覆写数据的共享存储 装置中的存储位置。在一个或多个实施例中,在该方法继续之前,在框460, DW模块等待从次VM或管理程序接收确认,其指示该存储位置中的现有数 据已被复制。在框465,DW模块允许计算机代码覆写该存储位置中的现有数 据。该方法在框440中继续,并且,恢复代码运行,直到在框445中,计算 机代码在运行期间遇到另一写入请求为止。

返回到判定框415,在运行被中断、且该中断不是检查点或写入请求的 情形中,则已遇到了运行故障,如由框470所示。该方法在框475继续,其 中,主虚拟机中的运行故障使主虚拟机触发故障切换到次虚拟机。根据本发 明的一个或多个实施例,故障切换触发可为以下形式:从主虚拟机到RR模 块传递的消息、或由RR模块接收的指示在主虚拟机中已遇到了运行故障的 任何指示。在框480,为管理员记载运行故障。

图5示出了根据一个实施例的流程图,其示出在与镜像虚拟环境中的第 一虚拟机相关的次虚拟机中实现共享存储装置的一致视图的处理。从次虚拟 机、以及尤其是次虚拟机内的组件的角度,描述该方法的方面。可由正在运 行RR模块288/388的次VM 266/366的CPU278/378,或者可选地,可由运 行作为管理程序262/312内和/或OS 284/384内的模块的RR模块288/388的 服务处理器264/314,完成该方法内的一个或多个处理。为确保覆盖这些可选 实施例,将从RR模块288/388、以及RR模块288/388所完成的功能处理的 角度来描述该方法,而不限制本发明的范围。

该方法在框505开始,其中,RR模块经由管理程序从主虚拟机接收消息 或通知。在框510,确定所接收的通知是否为检查点通知。在所接收的通知 是检查点通知的情形中,该方法在框515继续,并且,RR模块从主虚拟机获 得操作状态信息。在一个或多个实施例中,该操作状态信息包括CPU状态、 以及存储器和存储装置的当前状态。在框520,RR模块使用该状态信息配置 次虚拟机。通过配置次虚拟机,次虚拟机的操作状态(包括CPU、存储器和 存储装置的状态)同于在处理最近的检查点时主虚拟机的操作状态。该方法 在框525继续,并且,RR模块从在次虚拟机的本地存储装置中的RR数据存 储装置中移除任何现有数据。本领域的技术人员将理解,当次虚拟机被配置 为匹配第一虚拟机在最近检查点的操作状态时,不再需要跟踪存储在共享存 储装置中的数据在检查点之间的任何改变。该方法在框505继续,直到从主 虚拟机接收到另一个消息为止。

返回到判定框510,如果所接收的通知不是检查点消息,则该方法在判 定框530继续,并且,确定该消息是否为覆写通知。在所接收的消息为覆写 通知的情况下,该方法在框535继续,并且,RR模块复制来自通过覆写通知 识别的存储位置的预先存在的数据。在框540,复制的现有数据被存储在次 虚拟机的本地存储装置中,诸如RR数据存储装置。当完成了现有数据的本 地存储时,该方法在框545继续,并且,RR模块将确认发送到主虚拟机,该 确认指示已成功存储了预先存在的数据。该方法在框505继续,直到从主虚 拟机接收到另一消息为止。

返回到判定框510,如果所接收的通知不是检查点通知、且在判定框530 中该消息不是覆写通知,则该方法在框550继续,并且,确定从主虚拟机接 收到故障消息。在框555,RR模块获得从最后的检查点起已被存储在本地存 储装置中的预先存在的数据。本领域的技术人员将理解,在共享存储装置中 本地存储的预先存在的数据包括从处理了最后的检查点起已由主虚拟机覆写 的数据。在框560,RR模块用本地存储的预先存在的数据覆写共享存储装置 中的当前数据。在本发明的一个或多个实施例中,RR模块使用RR映射来识 别从其复制预先存在的数据的位置。在565,次虚拟机开始从先前检查点的 代码位置运行应用。换句话说,第二机器接管并恢复从最后的检查点起的、 先前由主虚拟机执行的工作。

在上述流程图的每个中,可以在包含计算机可读代码的计算机可读存储 介质中实施上述一个或多个方法,使得在由计算装置上的处理器运行计算机 可读代码时,执行一系列操作。在一些实现中,合并、同时、或以不同次序 执行或可能省略所述方法的特定操作,不会背离本发明的精神和范围。由此, 尽管以特定顺序描述和说明了所述方法,但是用操作的特定顺序不意味着暗 示对本发明的任何限制。可针对操作顺序来作出改变,而不会背离本发明的 精神或范围。因此,使用特定顺序不被理解为限制含义,并且,仅由所附权 利要求定义本发明的范围。

图6示出了根据一个或多个实施例的示例流程图。具体地,图6示出了 主虚拟机602和次虚拟机604、以及共享存储装置606A-606D、RR映射 608A-608C沿着顺序纵向时间线的不同时刻的运行状态。本领域的技术人员 将理解,图6被提供仅用于示例性的目的,且不意欲限制所述实施例的范围。

流程图在610开始,其中,在主虚拟机602处/中,启动计算机程序的计 算机代码的处理器运行。为了此示例的目的,示出了在启动计算机代码的运 行时的共享存储装置606A,其包括位于两个数据块中的数据:块A中的数据 A、以及块B中的数据B。主虚拟机602在612继续运行计算机程序,直到 在614遇到写入数据的请求为止,从而识别主虚拟机602将覆写块A中的数 据。随后,覆写通知被发送到次VM 604,该覆写通知指示主虚拟机602将覆 写块A中的现有数据(例如,数据A)。在616,次VM 604复制并存储块A 中的当前数据,并将该数据和存储位置(例如,块A)存储在RR映射608A 中。由此,在608A,RR映射包括块A和数据A之间的连接。随后,确认被 发送到主VM 602,并且,在618,主VM 602能够用数据C来覆写块A中的 数据A,如由存储装置606B所示。主VM 602继续运行应用。

在622,也被表示为POE(运行点)1,主VM 602中止应用的运行,因 为已遇到了检查点。在624,主VM 602捕捉第一操作状态以及状态信息,并 将状态信息发送到次VM 604。在626,次VM 604被配置为匹配在624捕捉 的第一操作状态。另外,删除在RR映射中存储的任何数据,诸如数据A-块 A映射,如由RR映射608B所示。在RR映射中存储的数据被清空,这是因 为,在次VM 604被配置之后,次VM 604具有共享存储装置的一致视图。 换句话说,在次VM 604已被配置之后,主VM 602和次VM 604各自具有如 由存储装置606B所示的共享存储装置的视图。在次VM 604被配置为检查点 操作状态之后,在628,可在主VM 602上恢复应用的运行。恢复应用的运行, 直到在630遇到写入请求为止。该请求指示主VM 602将覆写位于块B中的 数据。覆写通知被发送到次VM 604,并且,次VM 604读取块B中的现有数 据(数据B),并在RR映射中与块B相关联地存储数据B,如由RR映射608C 所示出的。随后,确认被发送到主VM 602,并且,在634,主VM 602能够 用数据D来覆写块B中的数据B,如由存储装置606C所示。在636,主VM 602继续运行应用。

主VM 602上的应用的运行在636继续,直到在638遇到运行故障为止。 638的运行故障使次VM 604在640接收到故障消息。在624,次VM 604使 用RR映射来覆写共享存储装置,以利用预先存在的数据来覆写新写入的数 据,使得共享存储装置呈现为其在主VM 602遇到的最后的检查点(例如, POE1)处那样。由此,用数据B来覆写块B,如在RR映射608C中所识别 的。这导致其中存储了包括数据C的块A、以及包括数据B的块B,如由存 储装置606D所示。重要的是注意,利用来自RR映射的数据覆写新数据导致 存储装置606D同于在遇到最后的检查点的时刻的共享存储装置、或存储装 置606B。随后,在644,次VM 604可从出现最后的检查点的POE1恢复运 行应用。

如本领域的技术人员将理解的,本发明的方面可被实现为系统、方法或 计算机程序产品。因而,本发明的方面可采用全部为硬件的实施方式,全部 为软件的实施方式(包括固件、驻留软件、微码、等等)、或软件和硬件方面 相结合的实施方式的形式,这里可能全部统称为“电路”、“模块”或“系统”。 此外,本发明的方面可采用在其上实现计算机可读程序代码(或指令)的一 个或多个计算机可读介质中实现的计算机程序产品的形式。

可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可为 计算机可读信号介质或计算机可读存储介质。例如,计算机可读介质可以是 但不限于电子、磁、光、电磁、红外或半导体系统、装置、设备或前述的任 意适当组合。计算机可读介质的更具体示例(非详尽的列表)将包括如下: 便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、 可擦除可编程只读存储器(EPROM或闪存)、便携式光盘只读存储器 (CDROM)、光存储设备、磁存储设备或前述的任意适当组合。在此文档的 上下文中,计算机可读存储介质可为任何有形介质,其可包含或存储程序, 用于或与指令运行系统设备或装置结合。

计算机可读信号介质可包括传播其中实现计算机可读程序代码的数据信 号,例如,在基带中或作为载波的一部分。这样的传播信号可采用各种形式 中的任一种,包括但不限于电磁、光或其任意适当组合。计算机可读信号介 质可为不是计算机可读存储介质且可通信、传播或传输用于或与指令运行系 统设备或装置结合的程序的任意计算机可读介质。

可使用包括但不限于无线、有线、光纤、R.F(或前述的任意适当组合) 等的任意适当介质来传送在计算机可读介质上实现的程序代码。可以以一个 或多个编程语言的任何组合来编写用于执行本发明的方面的操作的计算机程 序代码,其中,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的 编程语言、以及诸如“C”编程语言或类似编程语言的传统过程编程语言。程 序代码可以完全在用户的计算机上、或部分地在用户的计算机上执行,作为 独立软件包,部分地在用户的计算机上和部分地在远程计算机上或完全在远 程计算机或服务器上执行。在后一情形中,远程计算机可通过任意类型的网 络连接到用户的计算机,所述网络包括局域网(LAN)或广域网(WAN), 或者,可使连接朝向外部计算机(例如,使用因特网服务提供商,通过因特 网。

重要的是,尽管在安装(或运行)软件的全功能计算机(服务器)系统 的上下文描述的本发明的说明性实施例,但本领域的技术人员将理解,本发 明的说明性实施例的软件方面,能够以各种形式被分发为计算机程序产品, 并且,无论用来实际执行分发的媒体的特定类型,本发明的说明性实施例同 样地适用。

尽管已参照示例性实施例描述了本发明,但本领域的技术人员将理解, 可作出各种改变,并且,等同物可取代其元素,而不会背离本发明的范围。 另外,可使很多修改将特定系统、装置或其组件适应于本发明的教导,而不 会背离其实质范围。因此,意图使本发明不限于用于执行本发明的公开的特 定实施例,而本发明将包括落入所附权利要求的范围内的全部实施例。此外, 术语第一、第二等的使用不表示任何次序或重要性,而术语第一、第二被用 来将元素进行区分。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号