用于原子地及持续地交换资源组的方法、系统和程序产品的制作方法

文档序号:6557102阅读:154来源:国知局
专利名称:用于原子地及持续地交换资源组的方法、系统和程序产品的制作方法
技术领域
本发明一般涉及一种在计算环境内的处理过程,尤其涉及提供一种一致的、持续的和原子的(atomic)资源组的交换(swap)。
当在一个计算环境中执行操作时所出现的数据完整性问题是最重要的问题之一。特别是不丢失任何类型的数据修改是至关重要的。如果一个计算环境中的系统发生故障,通常会迫切需要有充足的恢复方案。
为了提供适当的恢复,通常要维护一个数据备份。在一个实例中,这个备份被周期性地执行。进而,从最后一次备份之后的数据变化被写入跟踪所发生情况的日志文件中。在恢复过程中,备份及日志文件均被用于重建发生在故障之前的操作,并恢复数据。
虽然为进行充足的备份进行了努力,但还需要进一步的改进。例如,需要提供一种能力,可以独立于平台、提供在应用层进行的数据备份,并且是高效的。
通过提供一种管理一个计算环境资源组修改的方法,可以克服已有技术的缺陷并具有增加的优点。该方法包括例如,执行对一个或多个备份资源组资源的当前变更请求;并原子地交换已修改的备份资源组与当前资源组,使修改过的备份资源组成为当前资源组,其中原子地交换包括改变备份资源组的名字及当前资源组的名字而不改变名字的长度。
与上述方法相对应的系统和计算机程序也在此叙述并要求。
附加的特征和优点可以通过本发明的技术得到实现。本发明的其他实施方案和方面将在此进行详细描述并被当作所要求的发明的一部分。
在说明书结论的权利要求中,特别指出并明确要求了关于本发明的主题事项。上述的以及其他的本发明的目的、特征和优点可以从下面的结合附图的详细叙述中变得明了,其中

图1描绘了一个结合并使用本发明的、计算环境的实施例;
图2描绘了一个依据本发明一个方面,当前资源组及其备份副本的实例;图3是依据本发明的一个方面,以原子的及持续的方式来修改一个资源组的资源所要执行的各种步骤的图示;以及图4是依据本发明的一个方面,原子地交换当前与备份资源组的图示。
根据本发明的至少一个方面,能够原子地并持续地执行对一个资源组的一个或多个资源(如文件、表格、对象等)的修改。尤其是提供了一个一致的、持续的和原子的两个或多个资源集的交换。
在图1中描绘了一个结合并使用本发明的方面的计算环境的实例,并在此进行叙述。一个分布式计算环境100包括,例如,多个框架(frame)102,它们经过多个LAN(局域网)门(gate)104互连。这里详细描述框架102和LAN门104。
在实例中,分布式计算环境100包括8个框架,每个框架包括多个处理结点106。在一个例子中,每个框架包括16个处理结点(每个具有一个或多个处理器)。每个处理结点可以是如一台运行AIX的RISC/6000计算机,AIX是一种基于UNIX的操作系统。在一个框架中的每个处理结点都与该框架的其他处理结点经过例如一种内部LAN连接的连接方式相连接。另外,每个框架经过LAN门104与其他框架相连。
就象实例那样,每个LAN门104包括一台RISC/6000计算机,到LAN的任何计算机网络连接,或者一个网络路由器。然而,这只是举例。熟悉相关技术的人显然可以看出,还可以使用其他类型的LAN门和其他机制来进行框架之间的互连。
图1的分布式计算环境只是一个例子。还可能有多于8个或少于8个的框架数目,或者每个框架有多于16个或少于16个的结点数目。另外,处理结点不一定是运行AIX的RISC/6000计算机。处理结点的一些或全部可以包含不同类型的计算机和/或不同的操作系统。例如,本发明可以用LINUX和/或Windows操作系统来实施。而且不同种类的环境(heterogeneous evironment)可以包含并使用本发明的方面,其中环境的一个或多个结点和/或操作系统与该环境的其他结点或操作系统是截然不同的。这种不同种类环境的结点联合操作,在其中它们相互协作并共享资源。所有这引起变化都被认为是所声明的发明的一部分。
分布式计算环境的用户对储存在计算环境的结点中或与之相连的储存器中的资源(如文件、表格、对象等)写入数据并读取数据。在一个实例中,对一组逻辑相关的资源进行操作。这个资源的集合在此处被称为一个资源组。资源组的资源被用户访问,用户对它们执行读或写操作。只要执行对资源组的一个或多个资源的写请求,就会根据本发明的一个方面持续地并原子地执行变化。
为了持续并原子地执行变化,至少要维护两个资源组。一个资源组表现资源的当前状态,并被称为当前资源组;另一个资源组表现资源的备份或影像版本,并被称为备份(或工作)资源组。
如图2所示,一个当前资源组200带有一个或多个资源202,而一个备份资源组204带有那些资源206的副本。当一个资源组的一个或多个资源要被更新时,根据本发明的方面,在备份资源组中执行更新,然后资源组原子地交换。于是,在交换之后,变化就在资源组中都得到了反映。
参考图3叙述了以原子的、一致的和持续的方式修改资源相关的逻辑的实施方案。在一个实例中,这个逻辑通过一个结点(如一台服务器)中的功能来实现。
开始,用户向计算环境的一个结点传递例如一个写请求300(作为举例)。当请求被结点接收到时,在结点中的逻辑执行多个操作。例如,在步骤306,结点从当前资源组302向备份资源组304复制零或多个以前的修改。特别是,备份资源组被更新,以便反映当前资源组中的数据。这可以通过在锁定步骤中保持资源组的更新而实现。尤其是在任何时候,两个组之间的差别只在于最后一次写操作所带来的修改。这样,就是以上一次写操作来更新备份资源组。
在更新备份资源组以反映当前资源组中数据之后,该结点执行对备份资源组新的写请求,步骤308。同时,任何写请求都可以在当前资源组上并行进行,步骤310。
一旦写操作成功结束,备份及当前资源组被交换,步骤312。在一个实施方案中,交换以一种原子的方式进行,这样,如果系统出现故障或在交换操作过程中发生错误,仍然可以通过一个恢复过程或在下一个系统初始化获得资源的一致状态。
在一个实例中,原子的交换通过对资源重命名来执行。具体讲,每个资源都有一个相关的名字,并且每个名字都带有后缀,后缀表示资源的版本。作为一个实例,可能的版本后缀为.0,.1和.2,数字按模3排序。即0<1,1<2和2<0。在序列中的最高版本代表资源的当前版本,而最低版本表示资源属于备份资源组。这样,就有可能根据资源的版本后缀来判断哪一个资源与当前版本对应。
根据本发明的一个方面,使用资源操作的最小数目来转换(toggle)版本数,以便提供变化的原子数。这种转换的一个例子将对照图4作进一步叙述,图4显示了一个特定的实例。
假设,在图4的实例中,有2个资源组400和402,每个组有2个资源,称为A和B。于是,备份资源组包括资源A.0和B.0,而当前组包括资源A.1和B.1。本实例中,在初始化的时候,两个资源集合都包含相同的信息。
接下来,一个写操作被请求。写操作发生在备份(工作)资源组(它已经被更新以反映当前资源组的内容)中。如果更新是成功的,数据被保存,例如,保存到最低版本资源的磁盘中。在本实例中,它是版本0。如果没有发生错误,备份组现在就包含了资源组的当前版本。这样,最低版本使用模3顺序被重命名为最高版本。
特定的,在一个实例中,对资源的重命名以相同的顺序进行,例如,按辞典编排顺序(lexicographically)。在这种情况下,资源A.0首先被重命名为A.2(见附图标号404),而当前资源组的名字保持不变(见附图标号406)。然后,资源B.0被重命名为B.2(见附图标号408)。最后一个资源组的成功重命名完成了当前及备份组的原子交换。这样,资源A.2和B.2现在是新的当前资源组(408)的一部分了,而资源A.1和B.1则是新备份资源组410的成员。
上面详细叙述的是当前及备份资源组的原子交换。在这里描述的实例中,虽然资源的名字被修改了,但名字的长度保持不变(这是采用模3算法的原因)。典型地,在文件系统中,如UNIX,名字的变化会牵扯到I节点(I-node)或等同的资源结构定义的修改。即使文件系统是满的,这种修改也可以安全地进行。
最后一次重命名操作(在这里是第二次)构成了资源组的原子交换。如果前一次操作是成功的,资源组就被认为是更新了。于是,备份资源组现在就成为当前资源组,而反之亦然。如果控制资源的服务宕机,可以通过将更高版本宣告为当前版本而恢复数据。
如果一个资源组有多于两个资源,例如,n个资源,则最后一个资源的重命名操作被认为是资源组的原子交换。进而,如果在重命名一个或多个资源,但少于一个特定资源组的全部资源后,发生故障,则会产生一个不一致的资源组版本。这样不一致的资源组版本被宣布是受损的,并且其他版本仍然被认为是当前版本。这是因为当前版本带有一致的最高版本(即,如果其所有资源集合的版本都相同,这个资源组就是一致的)。
使用模n算法及排序来提供原子资源交换可以在许多情况下使用,不管资源组中的一个是不是写操作的目标。另外,这里所述的技术同样适用于有n个资源的资源组。将使用一个预定义的顺序对资源进行重命名,以该顺序进行的最后一个资源的重命名被认为是交换资源的原子操作。当使用这种带有n个资源组的技术时,采用以n+1为模的算法。该算法可以用来对n组资源进行排序。
本发明还可以适用于这样的资源组,其中在组中的资源间不是一直有通信;尤其是,如果驱动程序能够识别在每个资源组中的至少两个资源。在这种情况下,资源对的第一个在开始被重命名,而资源对的最后一个在结束时被重命名,这样在系统中断的情况下,资源对能够被进行对比,来判断它们的版本是否兼容。带有兼容版本最高对的资源再被宣布为当前资源组。
本发明的设施提供了一个独立于平台的、应用层技术,该技术可通过提供固定长度的命名方案和判断资源组当前版本的技术在底层操作系统的原子层提供全有或全无语义(all-or-nothing semantics)。而且,本发明的设施还提供了不用任何额外资源(如文件)找到资源组的至少一个一致版本,额外的资源会影响数据的完整性(即如果控制文件受损,数据自己也会受损)。
本发明的方面适用于数据的当前版本和备份版本以一致方式进行维护的任何情况下。在一个实例中,该技术用于关系数据存储,其中当一组资源和原子写操作被支持时,一个表被储存,而不管有多大。一个关系数据存储的例子在美国专利申请中进行了描述,该专利申请题目为“管理一个群集计算环境的方法、系统与程序产品”,Novaes等人。(Docket No.POU9-200-0004-US1),序列号_____,申请日_____,因此,在此处并入其全部内容以供参考。
本发明并不局限于分布式计算环境,而能够与任何计算环境共同使用,包括单一系统环境。而且,本发明的一个或多个方面可以适用于同类的系统,以及不同类的系统。作为一个实例,提供了有助于不同类环境系统的协作性的能力。
本发明可以包含在一个带有如计算机可用介质的制造产品中(如,一个或多个计算机程序产品)。其中介质可体现为如用于提供和帮助本发明性能的计算机可读程序代码装置。制造产品可以作为一个计算机系统中的一部分或单独销售。
此外,可以提供至少一个机器可读程序的存储设备,切实实现至少一个机器可执行的指令程序来实现本发明的能力。
这里所示的流程图只是实例。此处描述的这些图或步骤(或操作)可以有许多种变化而不背离本发明的精神。例如,可以以不同的顺序来执行步骤,或增加、删除或修改步骤。所有这些变化都被认为是所要求的发明的一部分。
虽然这里详细描述了优选实施方案,显然那些熟悉相关技术的人可以进行各种修改、增加、替换和类似方案而不背离本发明的精神,因此这些都被认为是在本发明的范围之内,如后面的权利要求所定义的那样。
权利要求
1. 一种管理一个计算环境的资源组修改的方法,所述方法包括在备份资源组的一个或多个资源上执行一个当前修改请求;及原子地交换修改过的备份资源组和当前资源组,使得修改过的备份资源组成为当前资源组,并且其中原子地交换包括改变所述备份资源组和所述当前资源组的名字而不影响名字的长度。
2. 一个管理一个计算环境的资源组修改的系统,所述系统包括用于在备份资源组的一个或多个资源上执行当前修改请求的装置;及用于原子地交换修改过的备份资源组和当前资源组,使得修改过的备份资源组成为当前资源组的装置,并且其中所述用于原子交换的装置包括改变所述备份资源组和所述当前资源线名字而不影响名字长度的装置。
3. 至少一个机器可读的程序存储设备,切实实现至少一个机器可执行的指令程序来实现管理计算环境的资源组修改的方法,所述方法包括在备份资源组的一个或多个资源上执行一个当前修改请求;及原子地交换备份资源组和当前资源组,使得修改过的备份资源组成为当前资源组,并且其中原子地交换包括改变所述备份资源组和所述当前资源组的名字而不影响名字的长度。
全文摘要
以一种持续和原子的方式执行对一个资源组一个或多个资源的写请求。当一个写请求被接收时,一个备份资源组被更新以反映当前资源组中的数据。此后,对备份资源组执行写请求。在成功地操作后,备份资源组和当前资源组以一种原子的、一致的方式进行交换,这样,备份资源组现在就成为当前资源组了。
文档编号G06F11/14GK1326143SQ0111934
公开日2001年12月12日 申请日期2001年5月30日 优先权日2000年5月31日
发明者罗萨里奥·A·尤塞达-索萨, 史蒂文·R·香帕尼, 凯拉什·N·马沙, 格雷戈里·D·莱伯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1