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

文档序号:6377061阅读:268来源:国知局
专利名称:用于维持镜像虚拟环境中存储装置的一致性的方法和系统的制作方法
技术领域
本发明一般涉及数据处理系统,并且,具体地,涉及虚拟数据处理系统中的存储一致性。
背景技术
虚拟机(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)或管理程序。管理程序可运行在裸硬件(类型I或原生(native)VMM)上、或运行在操作系统之上(类型2或宿主(hosted) VMM)。云计算提供了基于因特网对信息技术(IT)服务的消费和递交模型,并涉及动态可扩展(scalable)且通常虚拟化的资源的因特网上的提供。对远程计算网站的简单化访问(ease-of-access)(例如,经由因特网或私有公司网)有助于云计算,并且,云计算频繁地采用云消费者可访问并通过网络浏览器使用的基于网络的工具或应用的形式,如同该工具或应用是在云消费者的计算机系统上安装的本地程序那样。商用云实现通常被期望满足消费者的服务质量(QoS)需求,并典型地包括服务级别协定(SLA)。云消费者通过从云供应方(例如,第三方提供方)租用使用量来避免资本支出。在典型的云实现中,云消费者消费作为服务的资源,并仅对使用的资源付费。现在参照附图,并从图1开始,绘出示例数据处理系统(DPS)IOO的框图表示,在该系统内,可有利地实现所述实施例的功能方面。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 InteractiveExecutive ( ΑΙΧ )操作系统、LINUX 操作系统、或本领域中公知的任意其他操作系统。AIX 是IBM公司的注册商标,LINUX 是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、以及主VM216可用的系统资源。管理程序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中的一个或两者可为OS242内的可运行模块。检查点模块238是捕捉与运行已被中止(suspend)的运行点相对应的状态信息的工具。遇到检查点时的主VM 202的状态是检查点操作状态。在一个或多个实施例中,状态信息包括诸如处理器状态、存储页、以及存储装置中自先前检查点或者自启动应用246的运行起已被修改的数据之类的数据。检查点模块238获得在应用236A的运行由于遇到检查点而被中止时的、主VM 202中的资源的检查点操作状态的状态信息。在多个实施例中的一个中,检查点是计算机程序的执行中的点,在该点,应捕捉状态信息,且应将镜像虚拟机配置为与主VM 202的检查点操作状态匹配的镜像操作状态。可由应用236A提供检查点。可选地,在应用236A的运行期间,检查点模块238可周期性地生成检查点。当遇到检查点时,检查点模块238使应用236A的运行被CPU 228 (B卩,运行应用236A的处理器)中止。检查点模块238将捕捉的状态信息传送到存储装置,使应用246A的运行从中止运行的运行点重新开始,并继续监视应用246A的运行,以在已遇到下一个检查点时进行识别。DW模块240是在应用236A的运行期间可并发运行的工具,用来在主VM 216正在尝试覆写在与次级VM 266共享的存储装置中的数据时进行识别。DW模块240使用本地存储装置来提供主VM 216和次VM 266之间的供电存储装置的镜像视图。在一个或多个实施例中,当应用236A尝试覆写在与次VM 266共享的存储装置中存储的数据时,DW模块240生成用来发送到次VM 266的、第一机器将要覆写现有数据的通知,并且,Dff模块240传递共享存储装置中的数据的位置的地址。DW模块240将该通知发送到次VM 266或管理程序212,使得能够复制所识别的存储位置中的当前数据并将所识别的存储位置中的当前数据本地地存储到次VM 266。在允许在主VM216上运行的应用236A覆写在所识别的共享存储位置中的数据之前,Dff模块240等待接收已复制数据并已将数据存储在次VM 266的本地存储装置中的确认。在次主机252中,管理程序262在逻辑上位于硬件层260之上。管理程序262是虚拟化管理组件,其将硬件260中可用的资源分区,以创建逻辑分区,诸如次VM 266。另外,管理程序262被配置为管理次VM 266、以及次VM 266可用的系统资源。管理程序262在操作上连接到服务处理器264 (和/或在服务处理器264内/上运行),服务处理器264允许经由管理程序262对逻辑分区的外部配置和/或管理。在网络化的DPS架构200的镜像虚拟环境内,管理程序212和262在建立主VM216和次VM 266的期间彼此通信,以确保两个镜像的VM在硬件和软件上被类似/同等地配置。从整个系统角度看,在一个或多个实施例中,每个管理程序将确切的资源量分配给其各个虚拟机,并且,还确保被分配的资源的类型是相似的。例如,被分配的处理器资源的处理器速度、以及所提供的只读存储器和随机存取存储器的类型(即,存取速度和物理配置)在主VM 216和次VM 266中等同。OS实例的类似版本也被分配给每个虚拟机。可运行工作的类似加载也被提供给两个系统,尽管实际上仅主VM 216在前行的基础上(on an ongoingbasis)运行其工作负载。由此,主VM 216和次VM 266两者被提供有应用的相同复本,其分别被标识为应用236A和应用236B。次VM 266用作后备VM,并具体作为主要操作来在主VM 216出现硬件故障的情况下执行应用246B的运行的VM。由此,次VM 266的计算机代码(例如,应用246B)的运行可限于仅运行从与检查点相对应的特定代码运行点起的计算机代码,在该检查点之前,已在主VM 216中成功进行了计算机代码的运行。为了在主VM 216的计算机代码的运行故障的情况下有效地故障切换到次VM266,一个实施例提供了:自动将次VM 266配置为主VM 216在每个检查点的当前操作状态。由此,管理程序262在第一检查点从主VM 216接收/获得状态信息,并且,管理程序262立即将次VM 266配置为与主VM 216的检查点操作状态相对应的镜像操作。在一个或多个实施例中,次VM 266的资源的配置导致CPU 278、存储器280、以及本地存储装置282的状态分别与CPU 228、存储器230、以及本地存储装置232的状态匹配。另外,次VM266的配置在该检查点实现了主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的逻辑分区。另外,在次VM366中,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和/或0S234/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,Dff模块将主VM将覆写在共享存储装置的存储位置中当前存储的数据的通知发送到次W、或次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,主VM602继续运行应用。主VM 602上的应用的运行在636继续,直到在638遇到运行故障为止。638的运行故障使次VM 604在640接收到故障消息。在624,次VM 604使用RR映射来覆写共享存储装置,以利用预先存在的数据来覆写新写入的数据,使得共享存储装置呈现为其在主VM602遇到的最后的检查点(例如,POEl)处那样。由此,用数据B来覆写块B,如在RR映射608C中所识别的。这导致其中存储了包括数据C的块A、以及包括数据B的块B,如由存储装置606D所示。重要的是注意,利用来自RR映射的数据覆写新数据导致存储装置606D同于在遇到最后的检查点的时刻的共享存储装置、或存储装置606B。随后,在644,次VM 604可从出现最后的检查点的POEl恢复运行应用。如本领域的技术人员将理解的,本发明的方面可被实现为系统、方法或计算机程序产品。因而,本发明的方面可采用全部为硬件的实施方式,全部为软件的实施方式(包括固件、驻留软件、微码、等等)、或软件和硬件方面相结合的实施方式的形式,这里可能全部统称为“电路”、“模块”或“系统”。此外,本发明的方面可采用在其上实现计算机可读程序代码(或指令)的一个或多个计算机可读介质中实现的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。例如,计算机可读介质可以是但不限于电子、磁、光、电磁、红外或半导体系统、装置、设备或前述的任意适当组合。计算机可读介质的更具体示例(非详尽的列表)将包括如下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存)、便携式光盘只读存储器(⑶ROM)、光存储设备、磁存储设备或前述的任意适当组合。在此文档的上下文中,计算机可读存储介质可为任何有形介质,其可包含或存储程序,用于或与指令运行系统设备或装置结合。计算机可读信号介质可包括传播其中实现计算机可读程序代码的数据信号,例如,在基带中或作为载波的一部分。这样的传播信号可采用各种形式中的任一种,包括但不限于电磁、光或其任意适当组合。计算机可读信号介质可为不是计算机可读存储介质且可通信、传播或传输用于或与指令运行系统设备或装置结合的程序的任意计算机可读介质。可使用包括但不限于无线、有线、光纤、R.F (或前述的任意适当组合)等的任意适当介质来传送在计算机可读介质上实现的程序代码。可以以一个或多个编程语言的任何组合来编写用于执行本发明的方面的操作的计算机程序代码,其中,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的编程语言、以及诸如“C”编程语言或类似编程语言的传统过程编程语言。程序代码可以完全在用户的计算机上、或部分地在用户的计算机上执行,作为独立软件包,部分地在用户的计算机上和部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一情形中,远程计算机可通过任意类型的网络连接到用户的计算机,所述网络包括局域网(LAN)或广域网(WAN),或者,可使连接朝向外部计算机(例如,使用因特网服务提供商,通过因特网。重要的是,尽管在安装(或运行)软件的全功能计算机(服务器)系统的上下文描述的本发明的说明性实施例,但本领域的技术人员将理解,本发明的说明性实施例的软件方面,能够以各种形式被分发为计算机程序产品,并且,无论用来实际执行分发的媒体的特定类型,本发明的说明性实施例同样地适用。尽管已参照示例性实施例描述了本发明,但本领域的技术人员将理解,可作出各种改变,并且,等同物可取代其元素,而不会背离本发明的范围。另外,可使很多修改将特定系统、装置或其组件适应于本发明的教导,而不会背离其实质范围。因此,意图使本发明不限于用于执行本发明的公开的特定实施例,而本发明将包括落入所附权利要求的范围内的全部实施例。此外,术语第一、第二等的使用不表示任何次序或重要性,而术语第一、第二被用来将元素进行区分。
权利要求
1.一种用于实现可由第一机器和第二机器访问的共享存储装置中的数据一致性的方法,该方法包括: 接收所述第一机器将覆写在所述共享存储装置中存储的现有数据的通知,其中,在所述第一机器上的第一检查点之后接收到所述通知,并且,其中,所述第一机器和所述第二机器被配置为执行修改所述共享存储装置中的数据的工作;以及 响应于接收到所述第一机器将覆写在所述共享存储装置中存储的现有数据的通知:将所述现有数据的复本存储在所述第二机器的本地存储装置中;以及向所述第一机器发送所述现有数据的复本已被成功存储在所述本地存储装置中的确认,以触发所述第一机器利用新数据来继续覆写所述共享存储装置中的现有数据; 响应于检测到在下一个检查点之前所述第一机器中已出现故障: 从所述第二机器的本地存储装置检索所述现有数据的复本; 用从所述第二机器的本地存储装置检索到的现有数据的复本来覆写所述共享存储装置中的新数据;以及 通过管理程序触发所述第二机器的处理器接管并恢复先前由所述第一机器在所述第一检查点执行的工作。
2.如权利要求1所述的方法,还包括:响应于接收到所述第一机器上的第二检查点的第二通知: 接收与所述第一机器的第二检查点操作状态相对应的第二状态信息; 将所述第二机器配置为所述第一机器的第二检查点操作状态的镜像操作状态;以及 从所述第二机器的本地存储装置删除所述现有数据的复本。
3.如权利要求1所述的方法,其中: 所述第一机器和所述第二机器是第一虚拟机和第二虚拟机,其各自分别被所述管理程序配置和维护, 其中,所述第一虚拟机包括第一处理器和第一存储器的第一提供,并且,所述第二虚拟机包括第二处理器和第二存储器的第二提供, 其中,所述第一虚拟机和所述第二虚拟机被配置为分别执行工作的基本相同的运行;所述第一虚拟机和所述第二虚拟机是镜像虚拟化架构中的镜像虚拟机,由此,所述第二虚拟机在所述第一虚拟机发生故障的情况下用作所述第一虚拟机的后备机;以及所述方法还包括: 接收指示所述第一机器的第一检查点操作状态的第一状态信息,其中,所述第一机器的处理器正在执行刚好在所述第一检查点之前的工作; 响应于接收到所述第一状态信息,通过管理程序将所述第二机器配置为与所述第一机器的第一检查点操作状态相对应的镜像操作状态。
4.如权利要求3所述的方法,其中,所述第一虚拟机和所述第二虚拟机共同位于同一物理主机装置上,并被同一管理程序配置和维护。
5.如权利要求1所述的方法,其中,将所述现有数据的复本存储在所述第二机器的本地存储装置中包括: 读取要被覆写的现有数据的完整数据块,其中,所述完整数据块是可写存储装置的最小完整块;以及存储所述要被覆写的现有数据的完整数据块。
6.如权利要求1所述的方法,其中,当所述现有数据的大小大于阈值数据量时,触发下一个检查点。
7.如权利要求5所述的方法,其中,所述完整数据块等同于数据的存储页。
8.如权利要求1所述的方法,其中,用从所述第二机器的本地存储装置检索到的现有数据的复本覆写所述共享存储装置中的新数据,使所述共享存储装置通过所述第二机器的视图等同于在所述新数据的覆写之前的第一检查点处所述共享存储装置通过所述第一机器的视图。
9.一种用于实现可由第一机器和第二机器访问的共享存储装置中的数据一致性的系统,该系统包括: 计算机处理器;以及 回滚读取模块,其在由所述计算机处理器运行时使所述计算机处理器: 接收所述第一机器将覆写在所述共享存储装置中存储的现有数据的通知,其中,在所述第一机器上的第一检查点之后接收到所述通知,并且,其中,所述第一机器和所述第二机器被配置为执行修改所述共享存储装置中的数据的工作;以及 响应于接收到所述第一机器将覆写在所述共享存储装置中存储的现有数据的通知: 将所述现有数据的复本存储在所述第二机器的本地存储装置 中;以及 向所述第一机器发送所述 现有数据的复本已被成功存储在所述本地存储装置中的确认,以触发所述第一机器利用新数据来继续覆写所述共享存储装置中的现有数据; 响应于检测到在下一个检查点之前所述第一机器中已出现故障: 从所述第二机器的本地存储装置检索所述现有数据的复本; 用从所述第二机器的本地存储装置检索到的现有数据的复本来覆写所述共享存储装置中的新数据;以及 通过管理程序触发所述第二机器的处理器接管并恢复先前由所述第一机器在所述第一检查点执行的工作。
10.如权利要求9所述的系统,所述回滚读取模块还使所述计算机处理器响应于接收到所述第一机器上的第二检查点的第二通知: 接收与所述第一机器的第二检查点操作状态相对应的第二状态信息; 将所述第二机器配置为所述第一机器的第二检查点操作状态的镜像操作状态;以及 从所述第二机器的本地存储装置删除所述现有数据的复本。
11.如权利要求9所述的系统,其中, 所述第一机器和所述第二机器是第一虚拟机和第二虚拟机,其各自分别被管理程序配置和维护, 其中,所述第一虚拟机包括第一处理器和第一存储器的第一提供,并且,所述第二虚拟机包括第二处理器和第二存储器的第二提供, 其中,所述第一虚拟机和所述第二虚拟机被配置为分别执行工作的基本相同的运行;所述第一虚拟机和所述第二虚拟机是镜像虚拟化架构中的镜像虚拟机,由此,所述第二虚拟机在所述第一虚拟机发生故障的情况下用作所述第一虚拟机的后备机;以及所述回滚读取模块还使所述处理器: 接收指示所述第一机器的第一检查点操作状态的第一状态信息,其中,所述第一机器的处理器正在执行刚好在所述第一检查点之前的工作; 响应于接收到所述第一状态信息,通过管理程序将所述第二机器配置为与所述第一机器的第一检查点操作状态相对应的镜像操作状态。
12.如权利要求11所述的系统,其中,所述第一虚拟机和所述第二虚拟机共同位于同一物理主机装置上,并被同一管理程序配置和维护。
13.如权利要求9所述的系统,其中,将所述现有数据的复本存储在所述第二机器的本地存储装置中包括: 读取要被覆写的现有数据的完整数据块,其中,所述完整数据块是可写存储装置的最小完整块;以及 存储所述要被覆写的现有数据的完整数据块。
14.如权利要求9所述的系统,其中,当所述现有数据的大小大于阈值数据量时,触发下一个检查点。
15.如权利要求13所述的系统,其中,所述完整数据块等同于数据的存储页。
16.如权利要求9所述的系统,其中,用从所述第二机器的本地存储装置检索到的现有数据的复本覆写所述共享存储装置中的新数据,使所述共享存储装置通过所述第二机器的视图等同于在所述新 数据的覆写之前的第一检查点处所述共享存储装置通过所述第一机器的视图。
全文摘要
本发明提供了用于实现可由第一和第二机器访问的存储装置中的数据一致性的方法和系统。该方法包括响应于接收到第一机器的第一状态信息,将第二机器配置为与第一机器的第一检查点操作状态相对应的镜像操作状态;接收第一机器将覆写在共享存储装置中存储的一个或多个现有数据的通知,并且,响应于接收到该通知,读取现有数据;将现有数据的复本存储在第二机器的本地存储装置;以及向第一机器发送现有数据已被成功地存储在本地存储装置中的确认,以使第一机器能够用新写入的数据来覆写现有数据。该方法还包括响应于接收到故障通知,从第二机器的本地存储装置检索现有数据的复本;用现有数据的复本来覆写在共享存储装置中新写入的数据。
文档编号G06F9/455GK103164254SQ20121034452
公开日2013年6月19日 申请日期2012年9月17日 优先权日2011年9月21日
发明者A.J.麦克尼内, D.J.O.里格比 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1