基于快照的复制的制作方法

文档序号:6362388阅读:136来源:国知局
专利名称:基于快照的复制的制作方法
技术领域
本发明涉及计算机系统环境中的数据存储。更具体地说,本发明涉及文件系统中支持读写事务的数据复制和块分配。
背景技术
数据存储块或存储块(下文称为块)指示存储设备上特定的地址空间区域。例如,一个数据块可以是磁盘空间区域中扇区或字节的集合。块被作为单元进行处理。大块分配允许通过单次I/o事务检索大量数据。在一个实施例中,块是共同传输的固定大小的数据单元。文件系统是通过在文件和/或目录层次结构中存储、组织、维护文件数据而实现维护的文件数据集合。文件系统采用借助块分配技术将数据写入存储介质的技术。一般而言,存储系统允许访问与存储系统相连的一个或多个存储器件中存储的信息。对信息的访问可通过将存储器 件组织为卷来实现,所述卷在逻辑上组织存储器件中存储的信息。存储系统可被进一步配置为根据客户机/服务器信息提供模型执行操作,从而允许大量客户机访问系统上存储的数据容器。在该模型中,客户机可以采用应用,例如在通过计算机网络与存储系统相连的计算机上执行的数据库应用。每个客户机可通过网络将基于文件的消息发送到系统来请求存储系统的服务。多个存储系统可通过互连来提供存储系统环境,该环境被配置用于为大量客户机提供服务。每个存储系统可被配置为服务于一个或多个卷,其中每个卷存储一个或多个数据容器。已公开的编号为US2004-0267838A1的美国专利申请披露了拍摄活动文件系统的快照并跨文件系统的多个节点并行执行备份操作。美国专利7,668,876披露了跨网络中的多个节点复制数据以及并行地写入对一组镜像副本的更改以最小化输入输出延迟的方法。

发明内容
本发明包括跨集群文件系统执行管道式执行数据复制的方法、系统和制品。在本发明的一方面,提供用于跨集群文件系统中的多个服务器写入数据的多个副本的方法。首先,将数据的第一副本从客户机写入位于集群中第一服务器节点本地的第一数据存储区。管道式执行数据的所述第一副本从第一服务器节点到第二和第三服务器节点的复制。所述管道式执行复制过程包括存储空间的分配。更具体地说,在位于所述第二服务器节点本地的第二数据存储区上分配用于所述数据的第二副本的存储区,以及在位于所述第三服务器节点本地的第三数据存储区上分配用于所述数据的第三副本的存储区。执行完所述存储区分配之后,根据网络特性安排将所述数据的所述第一副本填入所述第二数据存储区和所述第三数据存储区。在本发明的另一方面,提供带有集群文件系统的计算机系统,所述集群文件系统包括多个跨网络通信的服务器节点。所述集群文件系统包括位于第一服务器节点本地的第一数据存储区、位于第二服务器节点本地的第二数据存储区,以及位于第三服务器节点本地的第三数据存储区。提供写管理器以将数据的第一副本从客户机写入位于集群中所述第一服务器节点本地的所述第一数据存储区。此外,提供与所述写管理器和分配管理器通信的管道管理器。在复制之前,所述分配管理器在位于所述第二服务器节点本地的所述第二数据存储区上为所述数据的第二副本分配存储区,以及在位于所述第三服务器节点本地的所述第三数据存储区上为所述数据的第三副本分配存储区。通过所述分配管理器执行所述分配之后,所述管道管理器根据网络特性安排将所述数据的所述第一副本填入所述第二数据存储区和所述第三数据存储区。在本发明的又一方面,提供带有计算机可读存储介质的计算机程序产品,所述计算机可读存储介质上面包含计算机可读程序代码。更具体地说,计算机可读程序代码用于在位于第一服务器节点本地的第一数据存储区写入数据的第一副本。此外,计算机可读程序代码用于提供管道式执行数据的所述第一副本的复制。所述复制包括在位于第二服务器节点本地的第二数据存储区上为所述数据的第二副本分配存储区,以及在位于第三服务器节点本地的第三数据存储区上为所述数据的第三副本分配存储区。计算机可读程序代码还用于安排将位于所述第一服务器节点本地的数据的所述第一副本填入所述第二和第三数据存储区上的所述已分配存储区。将数据填入所述已分配存储区的方面根据网络特性执行。在进一步的方面,提供一种跨所述集群文件系统中的多个服务器写入数据的多个副本的方法。在位于第一服务器本地的第一数据存储区写入数据第一副本。然后针对所述数据的第二副本和所述数据的第三副本在所述系统中分配存储区。更具体地说,在位于第二服务器本地的数据存储区上分配所述数据的所述第二副本,以及在位于第三服务器本地的所述数据存储区上分配所述数据的所述第三副本。执行所述数据分配之后,同时在所述第二和第三服务器上管道式执行所述数据的所述第一副本的复制,根据网络特性将所述数据的所述第一副本填入这两个服务器。在更进一步的方面,提供一种方法,包括:在位于第一服务器节点本地的第一数据存储区上写入数据的第一 副本;在位于第二服务器节点本地的第二数据存储区上为所述数据的第二副本分配存储区,以及在位于第三服务器节点本地的第三数据存储区上为所述数据的第三副本分配存储区;执行完所述存储区的分配之后,在所述第二和第三服务器节点上管道式执行数据的所述第一副本的复制;以及根据网络特性将所述数据的所述第一副本填入所述第二数据存储区和所述第三数据存储区。通过结合附图阅读下面对本发明的优选实施例的详细描述,本发明的其它特征和优点将变得显而易见。


此处参考的附图构成本说明书的一部分。附图中示出的特征仅为说明本发明的某些实施例,并非说明本发明的所有实施例,除非另外明确地指出。另外不做相反的暗示。图1是示出将数据写入数据存储区的一般过程的流程图。图2是示出使用在数据复制中采用的指针的流程图。图3是示出在数据复制站点接收读取事务的流程图。图4是示出读取事务及其重定向的处理的流程图。
图5是根据本发明的优选实施例带有支持集群文件系统中写入事务复制的工具的计算机系统的框图,建议打印在发布专利的首页。图6是示出用于实现本发明的实施例的系统的框图。
具体实施例方式很容易理解,一般在此处的附图中描述和示出的本发明的组件可通过各种不同的配置排列和设计。因此,下面对附图中所示的本发明的装置、系统和方法的实施例的详细描述并非旨在限制所声明的本发明的范围,而是仅表示本发明的选定实施例。本说明书中描述的功能单元已被标示为管理器、服务器和客户机。功能单元可以通过可编程硬件设备来实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备或类似的装置。功能单元还可以通过由各种类型的处理器处理的软件来实现。已确定的可执行代码功能单元例如可以包括一个或多个计算机指令物理或逻辑块,所述块例如可以组织为对象、过程、功能或其它结构。然而,已确定的功能单元的可执行代码无需在物理上位于同一处,但是可以包括存储在不同位置上的不同指令,这些指令当在逻辑上联结在一起时,包括功能单元并实现功能单元所宣称的作用。实际上,可执行代码功能单元可以是单个指令,也可以是多个指令,甚至可以跨多个不同的代码段、在不同的应用当中,以及跨多个存储设备分布。类似地,操作数据可以在此被确定和示出位于功能单元中,并且可以包含在任何适当的形式中并在任何适当的数据结构类型内组织。操作数据可收集为数据集,也可分布在不同的位置上(包括分布在不同的存储器件上),并且可以至少部分地作为电子信号位于系统或网络上。本说明书通篇对“选定实施例”、“ 一个实施例”或“实施例”的提及均表示结合实施例描述的具体特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书通篇各处出现的短语“选定实施例”、“在一个实施例中”或“在实施例中”并非一定指示同一实施例。

此外,在一个或 多个实施例中,所述特征、结构或特性可以通过任何适当的方式进行组合。在下面的描述中,提供各种具体细节,例如管理器(写管理器、分配管理器、管道管理器等)实例,从而允许充分了解本发明的实施例。但是,所属领域的技术人员将理解,可以在没有一个或多个具体细节的情况下实现本发明,或者通过其它方法、组件、材料等实现本发明。在其它实例中,为了避免混淆本发明的各方面,并非详细地示出或描述公知的结构、材料或操作。通过参考附图,可以最佳地理解本发明的所示实施例,其中在本文通篇当中,相同的部件由相同的参考标号指示。下面的描述只是为了举例,简单地示出与此处声明的发明一致的设备、系统和过程的某些选定实施例。集群文件系统是企业存储文件系统,可由多个计算机同时进行访问来执行读写操作。更具体地说,在此类文件系统中,计算机采取集群服务器的形式,这些服务器与底层存储器件相连。存在多种共享磁盘文件系统的架构方法,其中包括跨集群中的所有服务器分布文件信息,以便跨集群服务器提供一致的文件系统映像。存储文件系统中的每个存储器件包含多个块;每个块都是存储器件上具有固定大小的数据单元。数据以块组群的方式写入存储区,并且类似地以块组群的方式从存储区读取。在一个实施例中,文件系统地址块中的数据,这些块包含特定数量的磁盘扇区;所述扇区是可针对读写分配的最小数量的磁盘空间。通过商品组件配置的集群文件系统一般采用三重复制方案。尽管并未普通采用,也并非必须这样做,但是该复制方案在集群中的一个或多个节点出现故障时,提供了一定的弹性。为支持此弹性,需要跨集群复制数据。同时,以减少或另外对网络带宽具有可忽略的影响的方式复制数据是有利的。将理解,在一个实施例中,数据复制次数可多于三次。图1是示出在集群文件系统中将数据写入数据存储区以及分配数据块,以支持跨集群复制数据的一般过程的流程图(100)。最初,与集群文件系统通信的客户机将数据写入位于集群中第一服务器节点本地的第一数据存储区(102)。一旦在步骤(102)完成数据写入,集群文件系统中便存储数据的初始副本。为了跨集群复制数据,在位于第一服务器远端的数据存储区上分配存储块。更具体地说,在位于集群中第二服务器节点本地的第二数据存储区上分配存储块(104)。在第二数据存储区上分配块的过程为数据复制保留了空间。完成步骤(104)之后,创建第二指针以将第二服务器所接收的数据的任何读取请求定向到第一服务器(106)。第二指针的基础是在数据复制完成之前,第二服务器无法处理读取数据的任何请求。因此,所有读取请求必须被定向到包含数据(而非仅包含已分配的数据块)的数据存储区本地的服务器节点。如上所述,此处采用的复制方案是三重复制方案,因此存储块在位于第三服务器节点本地,且位于第一和第二服务器节点远端的第三数据存储区上分配(108)。执行完步骤(108)之后,创建第三指针以将第三服务器所接收的数据的任何读取请求定向到第一服务器(110)。尽管服务器节点在此被称为第一、第二和第三服务器节点,但是需要指出,集群文件系统可包括更多数量的服务器节点,不应被限于此处所述的三个节点。需要进一步指出,对第一、第二和第三的标识指示确 定这些操作在集群文件系统中的三个单独且独立的服务器节点上执行。在一个实施例中,复制系统可以扩展为包括大于或小于此处所述的三个数量。因此,对于托管数据复制的每个服务器节点,通过分配存储块来容纳复制,创建指针以将所有读取请求定向到第一服务器节点,直到各个辅助服务器节点上的复制完成。一旦数据复制完成,便可删除重定向读取请求的指针。图2是示出删除结合块分配在辅助服务器节点本地创建的指针的过程的流程图(200)。执行测试以判定机会网络可用性以便将数据从位于第一服务器节点本地的数据存储区复制到位于第二服务器本地的第二数据存储区(202)。在一个实施例中,机会网络可用性基于网络带宽。例如,当网络未充分利用时,一般需要针对每次的复制事务利用网络带宽。当对步骤(202)上的判定做出肯定响应时,在后台将数据从位于第一服务器节点本地的数据存储区复制到位于第二服务器节点本地的数据存储区(204)。复制的完成时间根据网络带宽和事务大小而变化。执行完步骤(204)之后,判定在步骤(202)开始的复制是否完成(206)。当对步骤(206)上的判定做出肯定响应时,删除指针(208)。在完成从位于第一服务器节点本地的数据存储区复制数据之前,不会删除从第二数据存储区指向第一数据存储区的指针。因此,当对步骤(206)上的判定做出否定响应时,在复制继续时等待一段时间(210)。当步骤(210)上的一段时间完成时,过程返回到步骤(206)。在一个实施例中,步骤
(210)上采用的时间段可以是固定时间段,也可以是可修改的时间段。类似地,在一个实施例中,数据存储区中的指针被已分配存储块的元数据空间中的标志所替代。在一个实施例中,存在标志指示数据复制完成并且数据可用。备选地,在一个实施例中,可将标志配置为使得存在标志指示数据复制未完成,只能在第一数据存储区上访问数据。在一个实施例中,在集群文件系统中按顺序执行数据复制。更具体地说,一旦第二数据存储区上的数据复制完成,便开始在第三数据存储区上复制数据的第二副本。如图所示,通过步骤(208)删除指针之后,判定是否存在机会网络可用性以便将数据从位于第一服务器节点本地的数据存储区复制到位于第三服务器本地的第三数据存储区(212)。当对步骤(212)上的判定做出肯定响应时,在后台将数据从位于第一节点本地的数据存储区复制到位于第三服务器本地的数据存储区(214)。在一个实施例中,步骤(214)上的复制可以是将第二服务器本地的数据的第一副本复制到位于第三服务器本地的数据存储区。不考虑所采用的实施例,复制的完成时间均可根据网络带宽和事务大小而变化。执行完步骤(214)之后,判定在步骤(212)开始的复制是否完成(216)。当对步骤
(216)上的判定做出肯定响应时,删除指针(218)。在完成从位于第三数据存储区本地的数据存储区复制数据之前,不会删除来自第三数据存储区的指针。因此,当对步骤(216)上的判定做出否定响应时,在复制继续时等待一段时间(220)。当步骤(220)上的一段时间完成时,过程返回到步骤(216)。在一个实施例中,步骤(220)上采用的时间段可以是固定时间段,也可以是可修改的时间段。类似地,在一个实施例中,第三数据存储区中的指针采取第三数据存储区的已分配存储块的元数据中的标志的形式。在一个实施例中,存在标志指示数据复制完成并且数据可用。备选地,在一个实施例中,可将标志配置为使得存在标志指示数据复制未完成,只能在第一或第二数据存储位置上访问数据以支持读取事务。因此,如图2所示,分配存储块并采用一种工具作为在复制完成时向已分配的存储块做出指示的指示器。在步骤(202)和(212),显示出复制不会按需发生,而是在网络带宽可用时发生。例如,复制过程可以被视为允许复制在网络停用期间发生的延迟复制方案,以提高大型写入事务的写性能。这是一种数据可用性之间的折衷,用于减小网络流量和写入延迟。对步骤(202)和(212)上的判定做出否定响应时,分别延迟时间间隔(222)和(224)。在一个实施例中,时间间隔可以反映 设定的时间间隔。但是,在一个实施例中,步骤(222 )和(224 )上的时间间隔反映动态方法,其中当网络带宽可用时,复制过程继续执行。客户机与服务器节点之间存在两类事务,其中包括写入事务和读取事务。在写入事务中,数据可以写入数据存储区,然后跨集群复制;在读取事务中,可以从数据存储区读取已存储区的数据。如上针对数据复制所述的那样,存在与读取数据关联的限制,其中包括但不限于数据复制的完成、特定数据存储区上的负载,以及网络带宽。图3是示出被定向到位于第二服务器节点本地的数据存储区的读取请求的流程图(300)。如图所示,第二服务器接收从客户机定向到第二数据存储区的读取请求(302)。接收请求之后,判定是否针对第二数据存储区存在指示到已分配存储块的数据复制已完成的指针或另一形式的指示器
(304)。当对步骤(304)上的判定做出肯定响应时,将请求重定向到位于第一服务器节点本地的数据存储区(306)。相反地,当对步骤(306)上的判定做出否定响应时,第二服务器完成请求客户机的读取请求(308 )。如写入事务所示,在集群中保持最少三个数据副本,从而需要两次复制。图4是示出当集群中存在至少一次复制时,对接收自客户机的读取请求执行处理的流程图(400)。第三服务器接收定向到第三数据存储区的读取事务(402)。接收事务之后,判定是否针对第三数据存储区存在指示到已分配存储块的数据复制已完成的指针或另一形式的指示器
(404)。如果在步骤(404)判定复制完成,即缺少指针,则第三服务器完成请求客户机的读取事务(406)。相反地,如果在步骤(404)判定复制未完成,S卩,存在指针时,可将读取事务重定向到可以处理请求的第二服务器或第三服务器。需要指出,在一个实施例中,如果第二和第三服务器无法处理请求,则可能返回错误。可选地,在一个实施例中,将第一和第二服务器的负载进行比较以判定满足读取事务的最优候选(408)。如果第一服务器的负载小于第二服务器的负载,则读取请求被重定向到第一服务器以满足读取事务(410)。相反地,如果第二服务器的负载小于第一服务器的负载,则读取事务被重定向到第二服务器以满足读取事务(412)。因此,在完成至少一次数据复制的集群中,这两个服务器之一可用于满足读取事务并保持两个可用服务器之间的负载平衡。

采用跨集群复制的数据是为了在保持可靠性的同时优化性能。例如,在具有三次数据复制的实施例中,每个副本位于集群中不同服务器本地的不同数据存储区上。针对第二或第三服务器节点的读取事务请求各个复制的状态和/或评估各个服务器上的负载,以评价在保持服务期间负载平衡的同时,应该使用哪个服务器处理读取事务。因此,根据一个或多个因素,读取事务被定向到集群中最适合处理事务的服务器节点之一。如图1-4中的流程图所示,采用一种方法支持跨集群文件系统的多个服务器节点复制写入事务,以及支持从旨在存储写入事务数据的数据存储区读取事务。图5是示出嵌入计算机系统以支持跨集群文件系统的一个或多个服务器节点复制写入事务的工具的框图(500 )。更具体地说,集群文件系统被示出安装在多个服务器(510 )、( 530 )和(550 )上。集群文件系统是同时安装在多个服务器上的文件系统。尽管此处的实例示出三个服务器,但是本发明的集群文件系统中并不限于此数量的服务器。类似地,尽管此处仅示出一个集群,但是在一个实施例中,可以提供多个集群,并且通过网络连接支持跨集群通信。系统中的每个服务器都具有本地数据存储区,同时可以与集群内或集群间的远程存储区进行通信。更具体地说,为第一服务器(510)提供处理单元(504),该处理单元跨总线(508)与存储器(506)进行通信并与第一数据存储区(512)进行通信;为第二服务器(530)提供处理单元(534),该处理单元跨总线(538)与存储器(536)进行通信并与第二数据存储区(542)进行通信;以及为第三服务器(550)提供处理单元(554),该处理单元跨总线(558)与存储器(556)进行通信并与第三数据存储区(562)进行通信。同时,第一服务器(510)可以跨网络连接(505)与远程数据存储区(542)和(562)进行通信,第二服务器(530)可以跨网络连接(505)与远程数据存储区(512)和(562)进行通信,以及第三服务器(550)可以跨网络连接(505)与远程数据存储区(512)和(542)进行通信。在此处所示的实例中,每个数据存储区(512)、(542)和(562)被配置为接收通过各个服务器(510)、(530)和(560)存储数据的请求。更具体地说,提供与服务器节点(510)、(530)和(560)通信的客户机(570)。为客户机(570)提供处理单元(574),该处理单元跨总线(578)与存储器(576)进行通信。客户机(570)可以针对读写事务与服务器节点进行通信。尽管实例中仅示出一个客户机(570)来支持与集群之间的读写事务,但是本发明并不限于此处所示的数量。在一个实施例中,可以存在两个或多个与集群通信的客户机。类似地,本发明不应被限于此处所示的服务器节点数量,跨集群的数据复制次数,以及此处所示的集群数量。这些因素中的每一项都是可变的。在集群文件系统内,提供写管理器以将接收自客户机(570)的数据的副本写入位于集群中服务器节点之一本地的数据存储区。在此处所示的实例中,通过写管理器(520)配置的服务器节点(510)是服务器(510)的存储器(506)的本地服务器。类似地,通过写管理器(540 )配置的服务器(530 )是存储器(546 )的本地服务器,通过写管理器(560 )配置的服务器(550)是存储器(556)的本地服务器。每个写管理器(520)、(540)和(560)都是各个服务器的本地管理器并被配置为与客户机(570)进行通信以将接收自客户机的数据的第一副本写入各个服务器的本地数据存储区。为了支持在集群文件系统中复制接收到的数据,提供位于每个服务器节点本地的分配管理器。在此处所示的实例中,为服务器节点(510)提供与写管理器(520)进行通信的分配管理器(524),以便在第一存储器件(512)上分配存储空间。类似地,提供与写管理器(540)进行通信的分配管理器(544),以便在第二存储器件(542)上分配存储空间,以及提供与写管理器(560)进行通信的分配管理器(564),以便在第三存储器件(562)上分配存储空间。因此,每个分配管理器都通过各个写管理器执行功能以支持并确保具有足够的块分配来支持写入事务和复制。如上所述,分配管理器可以在每个服务器节点本地上分布以允许对数据块分配进行本地管理。在一个实施例中,分配管理器可以是集群文件系统中一个服务器节点的本地管理器,被指定为管理数据块的分配以支持跨集群的写入事务复制。除了写管理器和分配管理器,还提供与分配管理器进行通信的管道管理器,用于伺机安排已分配数据块的填入来支持数据复制。更具体地说,管道管理器负责以利用可用网络带宽的方式,判定跨集群执行复制过程的适当时机。在一个实施例中,管道管理器调用一项技术,在复制已分配数据块的第一指令完成之前,开始执行复制已分配数据块的第二指令。对于该实施例,多个指令同时位于管道中,每个指令处于不同的处理阶段。在不带一组分布式分配管理器的实施例中,提供位于服务器节点(510)本地并与本地分配管理器(524)进行本地通信的管道管理器(526)。类似地,在带有分布式分配管理器的实施例中,提供分别与每个分布式分配管理器(544)和(564)进行通信以便安排已分配存储块的填入的过程的管道管理器(546)和(566)。在执行块分配之后,将数据填入已分配块之前,采用指针将读取事务重定向到存储区数据的位置。更具体地说,在数据复制完成之前,本地服务器节点不能处理和支持被定向到已复制数据的读取事务。指针在每个带有数据块分配以支持数据复制的服务器节点本地创建。在一个实施例中,采用元数据标志替代指针。如图所示,在图5中,例如,服务器节点(530)和(550)各自被指定为接收已复制数据的副本。当完成块分配时,在服务器节点(530)上建立指针(548)。类似地,当完成块分配时,在服务器节点(550)上建立指针(568)。每个指针(548)和(568)通过执行功能将对未复制数据的读取重定向到源服务器节点(510)。当已分配块接收完已复制数据时,各个分配管理器删除本地指针以便在本地处理读取事务。更具体地说,当数据存储区(542)上的数据复制完成时,分配管理器(544)删除指针(548),以及, 当数据存储区(562)上的数据复制完成时,分配管理器(564)删除指针(568)。
为确保满足读取事务的正确方向,提供读管理器以将读取事务自定向到被配置为满足请求的位置。如图所示,读管理器位于各个服务器节点的本地。更具体地说,在服务器节点(530)的本地提供读管理器(580),在服务器节点(550)的本地提供读管理器(582)。分配管理器(544)删除指针(548)之后,读管理器(580)将读取请求自定向到服务器节点(530 )。类似地,分配管理器(564 )删除指针(568 )之后,读管理器(582 )将读取请求自定向到服务器节点(550)。此处针对单个集群配置示出和展示的组件可以跨网络中的每个集群外推。在多集群配置中,可采用工具选择一个写入数据复制的集群。例如,如果网络中的集群之一具有表现出可能发生故障的特性,此工具可选择其它集群来写入数据的第二和/或第三副本。可用数据块的选择考虑了元数据事务和集群发生故障的可能性。通过将数据写入其它更稳定集群的数据存储区,可增加数据的访问性和可靠性。如上所述,写管理器(520 )、( 540 )和(560 );分配管理器(524 )、( 544 )和(564 );管道管理器(526 )、( 546 )和(566 ),以及读管理器(580 )和(582 )通过执行功能来管理集群文件系统中的数据复制,从而支持创建两个或多个数据副本的写入事务。所示的管理器驻留在服务器或客户机本地的存储器中。更具体地说,写管理器(520)、分配管理器(524)以及管道管理器(526)各自驻留在服务器(510)的存储器(506)中;写管理器(540)、分配管理器(544)、管道管理器(546)以及读管理器(580)各自驻留在服务器(530)的存储器(536)中;以及写管理器(560)、分配管理器(564)、管道管理器(566)以及读管理器(582)各自驻留在服务器(550)的存储器(556)中。在一个实施例中,写管理器、分配管理器、管道管理器以及读管理器可以作为硬件工具驻留在其各自服务器的存储器外部,或者可以实现为硬件和软件的组合。类似地,在一个实施例中,各个管理器可以组合为集成它们各自功能的单个功能装置。如此出所示,每个管理器被示出为位于各个服务器本地。但是,在一个实施例中,它们可以跨网络统一地或单独地分布,并作为一个装置执行功能以管理块分配和数据复制,从而支持写入事务。因此,各个管理器可实现为软件工具、硬件工具,或软件和硬件工具的组合,用来收集和组织数据内容。所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子的非穷举的列表包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读 存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它 可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。现在参考图6,该图是示出实现本发明实施例的系统的框图。计算机系统包括一个或多个处理器,例如处理器(602)。处理器(602)与通信基础设施(604)(例如,通信总线、直连网线或网络)相连。计算机系统可以包括显示接口(606),用于从通信基础设施(604)(或者从帧缓冲器(未示出))转发图形、文本和其它数据以便在显示单元(608)上显示。计算机系统还包括主存储器(610),优选地为随机存取存储器(RAM),还可包括辅助存储器(612)。辅助存储器(612)例如可以包括硬盘驱动器(614)和/或可移动存储驱动器(616)——例如表示软盘驱动器、磁盘驱动器或光盘驱动器。可移动存储驱动器(616)通过本领域的技术人员公知的方式对可移动存储单元(618)执行读写操作。可移动存储单元(618)例如表示软盘、光碟、磁盘或光盘等,它们由可移动存储驱动器(616)进行读写。将理解,可移动存储单元(618 )包括上面存储计算机软件和/或数据的计算机可读介质。在备选实施例中,辅助存储器(612)可以包括其它类似的装置,它们允许计算机程序或其它指令被加载到计算机系统。此类装置例如可以包括可移动存储单元(620)和接口(622)。此类装置的例子可以包括程序封装和封装接口(例如在视频游戏设备中找到的)、可移动存储芯片(例如EPROM或PR0M)以及关联的插座,以及其它允许软件和数据从可移动存储单元(620)传输到计算机系统的可移动存储单元(620)和接口(622)。计算机系统还可以包括通信接口(624)。通信接口(624)允许软件和数据在计算机系统与外部设备之间传输。通信接口(624)的例子可以包括调制解调器、网络接口(例如以太网卡)、通信端口或PCMCIA插槽和卡等。通过通信接口(624)传输的软件和数据采取信号的形式,所述信号例如可以是电、电磁、光信号,或者是能够由通信接口(624)接收的其它信号。这些信号借助通信路径(即,信道)(626)提供给通信接口(624)。该通信路径(626)承载信号并可使用电线或电缆、光纤、电话线、移动电话链路、射频(FR)链路和/或其它通信信号实现。在本文中,术语“计算机程序介质”、“计算机可用介质”和“计算机可读介质” 一般用于指示诸如主存储器(610)和辅助存储器(620)、可移动存储驱动器(616)以及安装在硬盘驱动器(614)中的硬盘之类的介质。计算机程序(也称为计算机控制逻辑)存储在主存储器(610)和辅助存储器(620)中。计算机程序还可以通过通信接口(624)接收。当运行时,此类计算机程序可使计算机系统执行此处介绍的本发明的特征。具体而言,当运行时,计算机程序可使处理器(602)执行计算机系统的特征。因此,此类计算机程序表示计算机系统的控制器。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,在数据复制中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的集群文件系统方框实际上可以基本并行地 执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。此处使用的术语只是为了描述具体实施例,并非旨在限制本发明。如在此使用的那样,单数形式“一”、“一个”和“所述”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,根术语“包括”和/或“包含”指定存在声明的特征、整数、步骤、操作、元素和/或组件,但是并不排除存在或增加其它特征、整数、步骤、操作、元素、组件和/或它们构成的组。以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。实施例的选择和描述,旨在最好地解释本发明的原理、实际应用,当适合于所构想的特定应用时,可使本技术领域的普通人员理解本发明带有各种修改的各种实施例。备选实施例
将理解,尽管此处出于阐述的目的描述了本发明的特定实施例,但是可以做出各种修改。具体而言,可通过中央管理器或分布式管理器集合配置系统以引导集群内的数据复制。类 似地,在一个实施例中,可存在多个集群文件系统,其中数据复制在集群间进行。
权利要求
1.一种数据复制方法,包括: 在位于第一服务器节点(510)本地的第一数据存储区(512)上写入(102)数据的第一副本; 在所述第一数据存储区上管道式执行数据的所述第一副本的复制,所述管道式执行复制包括在位于第二服务器节点(530)本地的第二数据存储区(542)上为所述数据的第二副本分配(104)存储区以及在位于第三服务器节点(550)本地的第三数据存储区(562)上为所述数据的第三副本分配(108)存储区,以及根据网络特性安排将所述数据的所述第一副本填入所述第二数据存储区和所述第三数据存储区。
2.根据权利要求1的方法,其中分配存储区进一步包括创建(106)从所述第二服务器节点的所述已分配存储区指向数据的所述第一副本的第二指针(548)以及创建(110)从所述第三服务器节点的所述已分配存储区指向数据的所述第一副本的第三指针(568)。
3.根据权利要求2的方法,进一步包括:在完成将所述数据的所述第一副本填入(204)位于所述第二服务器节点(530)本地的所述第二数据存储区(542)的所述步骤之前,所述第二指针(548)将第二读取请求从所述第二服务器节点重定向(306)到所述第一节点,以及,在完成将所述数据的所述第一副本填入(214)位于所述第二服务器节点(550)本地的所述第三数据存储区(562)的所述步骤之前,所述第三指针(568)将第三读取请求从所述第三服务器节点重定向(410)到所述第一服务器节点。
4.根据权利要求2的方法,进一步包括在完成将所述数据的所述第一副本填入(204)位于所述第二服务器节点(530)本地的所述第二数据存储区(542)的所述步骤之后,删除(208)所述第二指针(548),以及,在完成将所述数据的所述第一副本填入(214)位于所述第三服务器节点(550)本地的所述第三数据存储区(562)的所述步骤之后,删除(218)所述第三指针(568)。
5.根据权利要求4的方 法,进一步包括在删除所述第二指针(548)之后,将读取请求自定向(308)到所述第二服务器节点(530),以及在删除所述第三指针(568)之后,将读取请求自定向到所述第三服务器节点(550 )。
6.根据权利要求1的方法,其中所述安排步骤相对于网络带宽可用性而言是机会性的。
7.根据权利要求1的方法,进一步包括将标志嵌入所述已分配存储区的元数据空间。
8.根据权利要求7的方法,其中存在所述标志指示所述数据复制完成。
9.根据权利要求7的方法,其中缺少所述标志指示所述数据复制完成。
10.根据权利要求7的方法,其中管道式执行复制包括开始执行第二指令,以便完成在所述第二服务器节点上复制数据的所述第一副本之前,在所述第三服务器节点上复制数据的所述第一副本。
11.一种数据复制系统(500),包括: 集群文件系统,其中包括跨网络(505)通信的服务器节点(510、530、550),所述集群包括位于第一服务器节点(510)本地的第一数据存储区(512)、位于第二服务器节点(530)本地的第二数据存储区(542),以及位于第三服务器节点(550)本地的第三数据存储区(562); 写管理器(520),用于将数据的第一副本从客户机(570)写入位于所述第一服务器节点本地的所述第一数据存储区; 与所述写管理器通信的分配管理器(524),所述分配管理器响应于管道管理器(526)复制数据的所述第一副本,在位于所述第二服务器节点本地的所述第二数据存储区上为所述数据的第二副本分配存储区以及在位于所述第三服务器节点本地的所述第三数据存储区上为所述数据的第三副本分配存储区;以及 与所述分配管理器通信的管道管理器,所述管道管理器根据网络特性安排将所述数据的所述第一副本填入所述第二数据存储区和所述第三数据存储区。
12.根据权利要求11的系统,其中所述分配管理器(524)创建从所述第二服务器节点(530)的所述已分配存储区指向数据的所述第一副本的第二指针(548)以及创建从所述第三服务器节点(550)的所述已分配存储区指向数据的所述第一副本的第三指针(568)。
13.根据权利要求12的系统,进一步包括将第二读取请求从所述第二服务器节点(530)重定向到所述第一节点(510)的所述第二指针(548),以及将第三读取请求从所述第三服务器节点(550)重定向到所述第一服务器节点(510)的所述第三指针(568)。
14.根据权利要求12的系统,进一步包括在完成将所述数据的所述第一副本填入位于所述第二服务器节点(530)本地的所述第二数据存储区(542)之后,删除所述第二指针(548),以及在完成将所述数据的所述第一副本填入位于所述第三服务器节点(550)本地的所述第三数据存储区(562 )之后,删除所述第三指针(568 )的所述分配管理器(524 )。
15.根据权利要求14的系统,进一步包括在删除所述第二指针(548)之后,将读取请求自定向到所述第二节点(530),以及在删除所述第三指针(568)之后,将读取请求自定向到所述第三节点(550)的读管理器(580、582)。
16.根据权利要求11的系统,其中所述管道管理器(526)执行的安排相对于网络带宽可用性而言是机会性的。
17.一种计算机程序产品,所述计算机程序产品包括上面包含计算机可读程序代码的计算机可读存储区介质,所述计算机可读程序代码包括: 被配置为在位于第一服务器节点(510)本地的第一数据存储区(512)上写入(102)数据的第一副本的计算机可读程序代码; 被配置为在所述第一服务器节点上管道式执行数据的所述第一副本的复制的计算机可读程序代码,所述管道式执行复制包括在位于第二服务器节点(530)本地的第二数据存储区(542)上为所述数据的第二副本分配(104)存储区以及在位于第三服务器节点(550)本地的第三数据存储区(562)上为所述数据的第三副本分配(108)存储区; 被配置为根据网络特性安排将所述数据的所述第一副本填入所述第二数据存储区上的所述已分配存储区和所述第三数据存储区上的所述已分配存储区。
18.根据权利要求17的计算机程序产品,其中分配存储区的所述计算机可读程序代码进一步包括被配置为创建(106)从所述第二服务器节点的所述已分配存储区指向数据的所述第一副本的第二指针(548)以及创建(110)从所述第三服务器节点的所述已分配存储区指向数据的所述第一副本的第三指针(568)的计算机可读程序代码。
19.根据权利要求18的计算机程序产品,进一步包括被配置为在完成将所述数据的所述第一副本填入(204)位于所述第二服务器节点(530)本地的所述第二数据存储区(542)之前,利用所述第二指针将第二读取 请求从所述第二服务器节点重定向到所述第一节点,以及在完成将所述数据的所述第一副本填入(214)位于所述第三服务器节点(550)本地的所述第三数据存储区(562)的所述步骤之前,利用所述第三指针将第三读取请求从所述第三服务器节点重定向到所述第一服务器节点的计算机可读程序代码。
20.根据权利要求18的计算机程序产品,进一步包括被配置为在完成将所述数据的所述第一副本填入(204)位于所述第二服务器节点(530)本地的所述第二数据存储区(542)之后,删除(208)所述第二指针(548)的计算机可读程序代码,以及被配置为在完成将所述数据的所述第一副本填入(214)位于所述第三服务器节点(550)本地的所述第三数据存储区(562 )之后,删除(218 )所述第三指针(568 )的计算机可读程序代码。
21.根据权利要求20的计算机程序产品,进一步包括被配置为在删除所述第二指针(548)之后,将读取请求自定向(308)到所述第二服务器节点(530),以及在删除所述第三指针(568 )之后,将读取请求自定向到所述第三服务器节点(550 )的计算机可读程序代码。
22.根据权利 要求17的计算机程序产品,其中所述计算机可读程序代码安排将所述数据的所述第一副本填入所述第二数据存储区(542)和所述第三数据存储区(562)相对于网络带宽可用性而言是机会性的。
全文摘要
本发明的实施例涉及文件系统中用于支持写事务的数据复制和块分配。集群文件系统中的区域被定义为支持块分配。已定义区域中的块通过分配来支持数据复制。管道管理器用于根据网络特性安排将数据填入已分配区域中的块。
文档编号G06F17/30GK103229171SQ201180057332
公开日2013年7月31日 申请日期2011年11月16日 优先权日2010年11月30日
发明者D·苏布拉维提, P·萨卡尔, K·古普塔, R·L·哈斯金 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1