一种使文件系统变化同步的方法及其系统转让专利

申请号 : CN201180046759.8

文献号 : CN103649946B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M.黃C.安德森R.H.帕特森

申请人 : EMC 公司

摘要 :

公开了在网络上传输文件系统变化。在客户机系统处计算数据的散列,其包括目录要素的组块,目录要素的组块包括按规范顺序分类的一组要素中的一个或多个连续的目录要素。在至少部分地基于计算的散列而确定存储在远程服务器上的对应的目录要素与存储在客户机系统上的、包括组块的目录要素不同的情况下,将包括组块的一个或多个目录要素发送到远程服务器。

权利要求 :

1.一种使文件系统变化同步的方法,包括:

在客户机系统处计算包括目录要素的组块的数据的散列,所述目录要素的组块包括按规范顺序分类一组要素中的一个或多个连续的目录要素;

至少部分地基于计算的散列来确定存储在远程服务器上的对应的目录要素与存储在所述客户机系统上的、包括所述组块的所述目录要素是否相同,包括检查散列高速缓冲存储器,以确定所述计算的散列之前是否存储在所述散列高速缓冲存储器中;

在所述散列高速缓冲存储器中未发现所述计算的散列的情况下,将所述计算的散列发送到所述远程服务器;

接收来自所述远程服务器的、关于对应于所述计算的散列的且由所述远程服务器基于存储在所述远程服务器上的对应的文件系统信息而计算出的对应的散列是否与所述计算的散列匹配的指示;以及在至少部分地基于从所述远程服务器接收到的指示来确定由所述远程服务器计算出的所述对应的散列与在所述客户机系统上计算出的所述计算的散列不匹配的情况下,将包括所述组块的一个或多个目录要素发送到所述远程服务器。

2.根据权利要求1所述的方法,进一步包括如果来自所述远程服务器的响应指示所述对应的散列与所述计算的散列匹配,则将所述计算的散列添加到所述散列高速缓冲存储器。

3.根据权利要求2所述的方法,进一步包括一旦响应于从所述远程服务器中接收到关于在所述远程服务器处计算出的所述对应的散列与所述客户机系统所发送的所述计算的散列不匹配的指示,而已经将包括所述组块的所述一个或多个目录要素发送到所述远程服务器,将所述计算的散列添加到所述散列高速缓冲存储器。

4.根据权利要求1所述的方法,进一步包括如果有的话,将所述计算的散列添加到连续的组块的区间,在所述散列高速缓冲存储器中发现所述计算的散列的情况下,已经在所述散列高速缓冲存储器中发现所述连续的组块的所述对应的散列。

5.根据权利要求4所述的方法,进一步包括如果在所述散列高速缓冲存储器中未发现所述计算的散列,则使所述区间和所述目录要素的组块同步。

6.根据权利要求5所述的方法,其中,使所述区间同步包括将包括包含在所述区间中的组块的目录要素的散列发送到所述远程服务器。

7.根据权利要求6所述的方法,进一步包括在接收到关于基于存储在所述远程服务器上的、对应于包括包含在所述区间中的所述组块的、存储在所述客户机系统上的要素的目录要素而计算出的对应的散列与包括包含在所述客户机系统所发送的所述区间中的组块的目录要素的所述散列不匹配的指示的情况下,将包括包含在所述区间中的组块的目录要素发送到所述远程服务器。

8.根据权利要求4所述的方法,进一步包括:

在到达所述一组要素的末尾时,确定所述区间覆盖所述一组要素的全部;以及确保所述一组要素的全部的散列存储在所述散列高速缓冲存储器中。

9.根据权利要求8所述的方法,进一步包括在所述一组要素的同步开始时检查所述一组要素的全部的所述散列是否存储在所述散列高速缓冲存储器中;以及在没有进一步处理的情况下,作出这样的结论,即,如果在所述散列高速缓冲存储器中发现所述一组要素的全部的所述散列,则所述一组要素在所述客户机系统和所述远程服务器之间处于同步。

10.根据权利要求8所述的方法,进一步包括如果在到达所述一组要素的末尾时确定所述区间未覆盖所述一组要素的全部,则使所述区间同步。

11.根据权利要求1所述的方法,其中,所述目录要素中的每个包括与所述目录要素与之相关联的目录中的对应的文件相关联的文件系统信息的规范表示。

12.根据权利要求11所述的方法,进一步包括产生所述规范表示。

13.根据权利要求12所述的方法,进一步包括按所述规范顺序对所述目录要素分类。

14.一种计算机系统,包括:

处理器,其配置成进行下者:

计算包括目录要素的组块的数据的散列,所述目录要素的组块包括按规范顺序分类的一组要素中的一个或多个连续的目录要素;

至少部分地基于计算的散列来确定存储在远程服务器上的对应的目录要素与存储在客户机系统上的、包括所述组块的所述目录要素是否相同,包括检查散列高速缓冲存储器,以确定所述计算的散列之前是否存储在所述散列高速缓冲存储器中;

在所述散列高速缓冲存储器中未发现所述计算的散列的情况下,将所述计算的散列发送到所述远程服务器;

接收来自所述远程服务器的、关于对应于所述计算的散列的且由所述远程服务器基于存储在所述远程服务器上的对应的文件系统信息而计算出的对应的散列是否与所述计算的散列匹配的指示;以及在至少部分地基于从所述远程服务器接收到的指示来确定由所述远程服务器计算出的所述对应的散列与由所述处理器计算出的所述计算的散列不匹配的情况下,将包括所述组块的一个或多个目录要素发送到所述远程服务器;以及存储装置,其耦接到所述处理器上,并且配置成存储包括所述目录要素的数据。

15.根据权利要求14所述的系统,进一步包括通信接口,所述通信接口耦接到所述处理器上,并且配置成被所述处理器用来将包括所述组块的所述一个或多个目录要素发送到所述远程服务器。

16.根据权利要求14所述的系统,其中,所述目录要素中的每个包括与对应的文件相关联的文件系统信息的规范表示,并且所述处理器配置成产生所述规范表示。

17.根据权利要求14所述的系统,其中,所述处理器配置成按所述规范顺序对所述目录要素分类。

18.根据权利要求14所述的系统,其中,所述处理器进一步配置成如果包括所述组块的所述一个或多个目录要素被发送到所述远程服务器,则将所述计算的散列添加到所述散列高速缓冲存储器。

19.一种使文件系统变化同步的方法,包括:

从客户机系统中接收包括目录要素的组块的数据的散列,所述目录要素的组块包括按规范顺序分类的一组要素中的一个或多个连续的目录要素,以及标识所述组块在组内的位置和广度的偏移数据;以及按相同的规范顺序对本地存储的对应的目录要素分类;

按照包括所述组内的指示的位置中的、本地分类组中的目录要素的数据,计算对应的散列。

20.根据权利要求19所述的方法,进一步包括比较所计算的对应的散列与所接收的散列,以及对所述客户机返回指示所述计算的对应的散列和所述接收的散列是否相同的结果数据。

说明书 :

一种使文件系统变化同步的方法及其系统

背景技术

[0001] 跨过网络使远程(“服务器”)文件系统与本地(“客户机”)文件系统同步的技术是已知的。远程文件系统可为本地文件系统的近拷贝;例如,它可表示本地文件系统的近期备份。为了使远程文件系统与本地文件系统同步,例如为了反映本地文件系统自从上一次同步以来的任何变化,更新远程文件系统的结构、命名空间和元数据是必要的。
[0002] 典型的“完全”同步方法使用最大网络带宽但不使用额外的本地存储来使文件系统的结构、命名空间和元数据同步。比较本地文件系统上的每个文件的修改时间(“mtime”)和大小与服务器上的文件的mtime和大小。如果文件不存在,或者文件的mtime和/或大小与服务器上的不同,则客户机在服务器上创建文件,并且使文件内容同步。客户机还更新与文件相关联的任何其它元数据(用户ID(“UID”)、群组ID(“GID”)、文件许可等)。服务器删除不是由客户机规定的任何文件。流行工具“rsync”使用这种方法。
[0003] 典型的“递增”同步方法使用较少网络带宽,但使用一些本地存储。在完全同步之后,客户机将当前文件系统结构、命名空间和元数据存储在“编目”(典型地数据库)中。在递增同步期间,对于每个文件,客户机首先询问编目数据库。如果在编目中未表示文件,或者文件的mtime和/或大小不同,则客户机在服务器上创建文件,并且使文件内容同步。如果在编目中表示了文件,而且文件的mtime和大小相同,则假设文件的内容不变,而如果与编目中表示的不同,则客户机只更新与文件相关联的任何其它元数据。客户机在服务器上删除在编目中有表示但在本地文件系统上不再存在的任何文件。
[0004] 另一种递增方法使用大致相同量的网络带宽但(通常)使用较少本地存储。自从上一次备份以来对每个文件的每个操作都记录在文件系统“日志”中。为了使远程文件系统同步,日志在实质上如记录那样回放。这消除对于存储每个文件的元数据的需要(因为大部分文件从不改变),但它更复杂且易于有同步错误。

附图说明

[0005] 在以下详细描述和附图中公开本发明的多种实施例。
[0006] 图1是示出数据存储系统的实施例的框图。
[0007] 图2是示出数据存储系统的实施例的框图。
[0008] 图3是示出用以使文件系统信息同步的过程的实施例的流程图。
[0009] 图4是示出用于使文件系统信息同步的过程的实施例的流程图。
[0010] 图5是示出用于使用目录要素的组块来使目录同步的过程的实施例的流程图。
[0011] 图6是示出用于使目录服务要素的组块的区间同步的过程的实施例的流程图。
[0012] 图7是示出用于使目录服务要素的组块同步的过程的实施例的流程图。
[0013] 图8是示出用于基于目录信息来计算和比较散列值的过程的实施例的流程图。
[0014] 图9是示出用以使包括整个目录的区间同步的过程的实施例的流程图。
[0015] 图10是示出计算机系统的实施例的框图。

具体实施方式

[0016] 可用许多方式实施本发明,包括将本发明实施为过程、设备、系统、物的组合、包含在计算机可读存储介质上的计算机程序产品,以及/或者处理器,诸如配置成执行存储在耦接到处理器上的存储器上的以及/或者由该存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可采取的任何其它形式可被称为技术。一般而言,在本发明的范围内可更改公开的过程的步骤的顺序。除非另有说明,否则诸如处理器或存储器的、被描述为配置成执行任务的构件可被实现临时配置成在给定时间执行任务的一般构件,或者制造成执行任务的特定构件。如本文所用,术语“处理器”指的是配置成处理数据(诸如计算机程序指令)的一个或多个装置、电路和/或处理核。
[0017] 在下面与附图一起提供本发明的一个或多个实施例的详细描述,附图示出本发明的原理。与这样的实施例结合起来描述本发明,但本发明不限于任何实施例。本发明的范围仅由权利要求限制,而且本发明包括许多备选方案、修改和等效物。在以下描述中阐述了许多具体细节,以便提供本发明的详尽理解。提供这些细节是为示例的目的,而且在有或没有这些具体细节中的一些或全部的情况下,可根据权利要求来实践本发明。为了清楚的目的,未详细描述与本发明有关的技术领域中已知的技术材料,使得本发明不会不必要地模糊不清。
[0018] 公开了跨过网络传输文件系统变化。跨过网络将本地文件系统从例如备份客户机系统(其本身可为生产服务器,诸如文件服务器)复制到远程服务器。保持文件系统信息(例如目录结构和其它元数据)的同步。在一些实施例中,在备份或其它客户机处,为了使文件系统信息或其一部分同步,创建关于每个节点(例如,目录中的每个文件)的元数据的规范表示,并且按规范顺序(例如按文件ID)对产生的目录(或其它)要素分类。将目录要素的产生的分类列表分成组块。使包括每个组块的数据散列,并且比较结果与关于存储在服务器上的对应的目录信息而确定的对应的值。如果该信息不匹配,则将相关联的目录要素发送到服务器。如果信息匹配,则在一些实施例中,比较在组块的区间上的散列与基于服务器处的对应的文件系统信息而确定的对应的值,以确保服务器不会仍然存储刚好落到例如关于已经在客户机处删除的节点或一定范围的节点的组块之间的废弃信息。在一些实施例中,一旦确定组块(或者在一些实施例中,区间)散列匹配,将值存储在客户机处的散列高速缓冲存储器中,以避免不得不与之通信,以及在相关联的目录要素在同步之间保持不变的情况下,在服务器处使用处理循环。在一些实施例中,一旦确定包括整个目录的组块同步,则计算包括整个目录的目录要素的分类列表的散列,并且将其存储在散列高速缓冲存储器中,作为关于其中一些或甚至许多整个目录在同步之间保持不变的常见情况的进一步优化。
[0019] 图1是示出数据存储系统的实施例的框图。在显示的示例中,备份客户机102通过连接104而连接到互联网(或其它网络)106。配置成备份客户机102上的文件系统数据(例如,文件和相关联的文件系统结构和其它元数据)的备份服务器108也连接到互联网(或其它网络)106。文件和文件系统信息通过互联网(或其它网络)106从客户机102发送到服务器108,以保持存储在服务器108上的文件系统拷贝和客户机102上的本地文件系统之间的同步。在这个示例中,显示了单个客户机,但在多种实施例中,可通过网络106将多个客户机和/或文件系统复制到服务器108。在显示的示例中,备份服务器108被表示为单个框,但在多种实施例中,服务器108可包括多个系统,例如协调服务器,其通过网络106而连接,或者以别的方式连接,例如通过独立的网络(诸如存储区域网(SAN))连接到配置成存储文件和/或其它复制的文件系统数据的一个或多个存储节点上。
[0020] 图2是示出数据存储系统的实施例的框图。在显示的示例中,跨过网络将客户机系统上的目录202a复制到服务器,并且将由目录202b表示的相关联的文件系统信息发送到服务器,并且随着在客户机处对本地文件系统作出改变,如果有任何改变的话,与对应的目录信息202a保持同步。在显示的示例中,目录202a包括五个文件,由0-4标示且分别标记为文件A、B、C、E和F,如图2中显示的那样。由目录202b表示的、服务器处的对应信息在这个示例中变得与目录信息202a不同步。在目录202b处,目录信息指示目录包括六个节点,由图2中的0-5标示,并且被标识为文件A、B、C、D、E和F。可产生图2中显示的状态的示例为在同步之间从本地文件系统中删除文件,诸如文件D。
[0021] 在多种实施例中,与典型的递增方法相比,本文描述的方法使用大致相同量的网络带宽,但使用更少本地存储器,并且不像日志方法那样易于出错。不是将每个文件的全部元数据存储在编目中,此方法仅将<文件路径、mtime、大小>至<文件ID>的映射存储在“文件高速缓冲存储器”中。像编目那样,文件高速缓冲存储器允许客户机检测自从上一次备份以来哪个文件不变。如果在文件高速缓冲存储器中发现文件,则文件内容在服务器上不变,并且仅需要更新元数据(例如UID、GID、许可等)。但是,为了最小化本地存储,元数据不存储在文件高速缓冲存储器中。相反,元数据只是假设为很少有变化,并且正好得到核实。
[0022] 一旦要么在目录中已经创建(如果是新的)所有文件,要么已经更新(如果有变化)所有文件,要么在文件高速缓冲存储器(如果无变化)中已经发现所有文件,则从文件系统中读取它们的相关联的元数据。每个文件的规范表示(“DIRELEM”)由其元数据形成。按文件ID对目录中的DIRELEM的列表分类,并且将其分成组块。然后使每个组块“散列”(或“采指纹”),并且咨询(consult)“散列高速缓冲存储器”,以确定服务器上是否同样存在由组块表示的文件。
[0023] 如果在散列高速缓冲存储器中未发现组块的散列,则不知道服务器上是否存在由组块表示的文件。组块的散列、由组块表示的第一文件的偏移以及由组块表示的文件的数量被发送到服务器供核实。服务器形成待同步的目录中的每个文件的相同规范表示,而且还按文件ID对DIRELEM的列表分类。服务器以特定偏移按照DIRELEM计算散列,并且将其与客户机提供的散列比较。如果散列相同,则不需要更新文件。如果散列不同,则客户机发送特定组块的DIRELEM,使得服务器可更新文件的元数据,以及/或者删除在由组块表示的文件ID的区间内不再存在的文件。然后客户机将组块的散列添加到散列高速缓冲存储器。
[0024] 如果在散列高速缓冲存储器中发现组块的散列,则肯定在服务器上存在由组块表示的文件,但服务器仍然需要删除存在于由组块表示的文件和由前面的组块(如果有的话)表示的那些之间的旧文件。因而,当在散列高速缓冲存储器中发现组块的散列时,组块添加到“区间”,或者运行全部都存在于服务器上的组块的列表。如果在散列高速缓冲存储器中未发现后面的组块的散列,则区间在组块之前与服务器同步。作为优化,如果到达目录的末尾,而且区间覆盖目录中的所有文件,则区间的散列可添加到散列高速缓冲存储器(通常将仅添加组块的散列),使得服务器根本不需要针对整个目录在备份之间保持不变的普通情况进行咨询。
[0025] 进一步参照图2,在显示的示例中,以相同的规范顺序,即,基于显示的单个字母的文件ID的A-F的字母数字顺序,表示目录202a和目录202b中的文件的文件系统信息。在多种实施例中,客户机202a将目录要素流分成组块。在显示的示例中,目录要素A、B、C、E、F已经分为第一组块AB和第二组块CEF。在客户机处计算包括第一组块AB中的目录要素的数据的散列。在一些实施例中,检查客户机处的散列高速缓冲存储器,以确定相同组块以前(例如在同步之前)是否确认存储于服务器处。如果在高速缓冲存储器中发现散列,则客户机处理下一个组块。如果在散列高速缓冲存储器中未发现散列(例如,因为目录信息自从上一次同步以来已经改变),或者在其中未使用散列高速缓冲存储器的实施例中,则散列和标识目录要素的顺序列表内的组块的位置的相关联的偏移(例如在显示的示例中,指示组块所包含的范围的偏移信息0-1)被发送到服务器。
[0026] 在服务器处,如在客户机处那样,按相同的规范顺序对对应于存储在服务器处的目录的信息分类。服务器配置成:接收偏移和散列;计算存储在服务器上的目录要素的顺序列表中的对应的记录的散列;以及对客户机返回指示服务器处的计算是否与客户机所发送的散列值匹配的结果。
[0027] 在客户机处,如果来自服务器的响应指示散列匹配,则客户机将散列添加到散列高速缓冲存储器(如果存在),并且处理下一个组块。如果来自服务器的响应指示散列不匹配,则客户机将包括组块的目录要素发送到服务器,并且将散列添加到散列高速缓冲存储器(如果存在)。在一些实施例中,如果有的话,也使在散列高速缓冲存储器中发现的连续的组块的以前产生的区间同步,以检测其中孤立要素或从本地文件系统中删除的要素可保持在服务器上的文件系统信息中、但由于它们位于组块之间而未被检测到的任何情况。
[0028] 在图2中显示的示例中,将在服务器处确定在客户机处针对对应于组中的记录2-4的组块CEF而计算的散列与服务器上的记录2-4的对应的散列不匹配,因为那些记录包括组块CDE,而不是CEF。注意,在其中使用散列高速缓冲存储器的实施例中,组块CEF的散列将不在高速缓冲存储器中,因为在前面的同步不久之后,不会在服务器(或在高速缓冲存储器中)上发现邻近的组块CEF。因此,服务器将对客户机返回“不匹配”结果,并且客户机将把包括组块的要素C、E和F发送到服务器。在服务器处,服务器将确定要素D在客户机处已被删除,并且服务器将在服务器处删除其对应的记录,从而使目录202a和202b修复为同步。
[0029] 图3是示出用以使文件系统信息同步的过程的实施例的流程图。在显示的示例中,以目录中的第一文件开始(302),获得(304)文件状况信息(和/或其它文件元数据)。文件状况信息的示例包括文件的大小和它上一次被修改的时间。如果文件是新的,或者无变化(自从上一次备份或其它复制以来)(306),则文件被发送到服务器(或其它复制目的地,本地或远程)(308)。如果文件无变化,以及/或者一旦文件或其变化已被发送(306,308),则获得(310)文件的文件ID,并且文件ID与文件状况信息结合起来形成目录要素的规范表示(312)。对每个文件目录重复该过程,直到目录中的最后一个文件处理完为止(314),此时,在显示的示例中,在客户机和服务器之间的目录的同步开始(316)。
[0030] 图4是示出用于使文件系统信息同步的过程的实施例的流程图。在一些实施例中,图4的过程实现图3的316。在显示的示例中,当目录准备好同步时(402),即,对于目录中的每个文件,相关联的目录要素元数据的规范表示已经创建,按规范顺序(例如按文件ID)对包括目录的目录要素分类(404)。分类列表分成组块,组块各自包括一个或多个目录要素(406)。在多种实施例中,例如,基于最后的修改时间、访问权利等,组块的大小和/或边界可由一个或多个预先确定的和/或动态地确定的准则确定,包括组块大小和/或指示相邻要素之间(或不在它们之间)的关系的数据。然后相应的组块用来使客户机和服务器之间的目录信息同步(408)。
[0031] 图5是示出用于使用目录要素的组块来使目录同步的过程的实施例的流程图。在一些实施例中,图5的过程实现图4的408。在显示的示例中,当准备好基于按规范顺序分类的一组目录要素来使目录同步时(502),客户机从目录要素的第一组块开始,并且基于它们来计算散列(504)。如果散列存储在本地散列高速缓冲存储器中(506),则知道它在服务器上。在显示的示例中,如果在高速缓冲存储器中发现组块的散列,则将其添加到在散列中发现的连续的组块的区间 (512)。如果散列不在散列高速缓冲存储器中,则当前区间(如果有任何组块在其中)和组块与服务器同步(508,510)。对包括目录的组块重复该过程的迭代,直到最后的组块被处理完为止(514)。
[0032] 图6是示出用于使目录服务要素的组块的区间同步的过程的实施例的流程图。在多种实施例中,图6的过程实现图5的508。在显示的示例中,为了使区间同步,区间的散列和指示目录要素的分类列表中的区间的位置和广度(extent)的相关联的偏移被发送到服务器(604)。服务器计算存储在服务器处的对应的目录信息(即,指示的偏移处的、指示的广度的区间)的散列,并且告知客户机该结果是否与客户机所发送的值匹配。如果服务器指示散列不匹配(606),则目录要素的区间被发送到服务器(608)。一旦区间已经发送(608),或者如果确定散列匹配(606),则在客户机处使区间(610)复位,并且过程结束。添加到复位的区间的下一个组块(如果有的话)将成为区间中的第一组块。
[0033] 图7是示出用于使目录服务要素的组块同步的过程的实施例的流程图。在多种实施例中,图7的过程实现图5的510。在显示的示例中,为了使目录要素的组块同步,客户机计算组块的散列,并且将散列和相关联的偏移信息发送到服务器(704)。如果客户机从服务器中接收到关于服务器计算出的对应的散列与客户机发送的散列不匹配的指示(706),则客户机将包括组块的目录要素发送到服务器(708)。一旦组块已经发送(708),或者如果确定散列匹配(706),则在客户机处将组块的散列添加到本地散列高速缓冲存储器(710),并且过程结束。
[0034] 图8是示出用于基于目录信息来计算和比较散列值的过程的实施例的流程图。在一些实施例中,在文件系统信息复制到其上的服务器上实现图8的过程。在显示的示例中,例如从客户机中接收关于目录要素的组块的散列值和相关联的目录要素偏移和广度信息或这样的组块的区间(804)。创建按规范顺序分类的、对应目录的目录要素的列表(806)。计算(808)存储在服务器上的、对应于接收的偏移和广度的目录要素的散列,并且将其与接收的散列值比较。如果它们匹配(810),则对客户机返回“匹配”结果(812)。如果它们不匹配(810),则返回“不匹配”结果(814)。
[0035] 在返回“不匹配”结果的情况下,在多种实施例中,客户机可发送相关联的目录要素。服务器配置成接收要素,以及使用它们来更新存储在服务器处的对应的信息。
[0036] 图9是示出用以使包括整个目录的区间同步的过程的实施例的流程图。在显示的示例中,在到达目录的末尾,并且确定当前区间包括包含目录的所有组块的情况下,执行进一步的优化。这种情况的示例为这样的情形,即,其中,在客户机处的散列高速缓冲存储器中发现包括目录的所有组块,例如因为在之前的同步中一切都已经同步,而且目录的文件系统信息从此都没有变化。在显示的示例中,一旦到达处理包括目录的组块的末尾(902),就执行检查,以确定当前区间是否覆盖整个目录(904)。如果是的话,执行检查,以确定区间的散列是否存在于散列高速缓冲存储器中(906)。如果在散列高速缓冲存储器中发现目录宽度的区间的散列,则过程结束。如果在到达目录的末尾时,区间不覆盖整个目录(904),或者如果目录宽度的区间的散列已经不在散列高速缓冲存储器中(908),则使同步区间(908),并且将整个目录的散列(即,包括目录的所有组块)添加到散列高速缓冲存储器(910)。
[0037] 在一些实施例中,在后续同步中,在将目录的目录要素分成组块且如上面描述的那样继续之前,客户机首先对目录要素的整个顺序列表计算散列,并且检查散列高速缓冲存储器以获得结果。如果整个目录上的散列都在散列高速缓冲存储器中,则客户机知道存储在服务器上的目录处于同步,并且继续前进到下一个目录,如果有的话。否则,客户机分块,并且处理分类列表,如上面描述的那样。
[0038] 在一些实施例中,文件高速缓冲存储器和散列高速缓冲存储器两者都不需要是全面的;也就是说,如果本地存储非常珍贵,不需要表示客户机文件系统上的所有文件或元数据的所有组块。如果在文件高速缓冲存储器中未发现文件,或者在散列高速缓冲存储器中未发现元数据的组块的散列,因为一个或两者在空间上受到限制,则将只是重新发送文件或组块。这允许有权衡本地存储与带宽节约的柔性,同时保持正确。相反,日志方法需要保存自从上一次备份以来的所有操作,以便保持正确。
[0039] 文件和散列高速缓冲存储器本质上实现在空间上非常高效和柔性的编目系统。在本文的多种实施例中描述的技术和协议允许使文件和散列高速缓冲存储器来使大量本地文件系统实施(NTFS、ext3等)与大量远程文件系统实现(Avamar FS、数据域FS等)同步。
[0040] 图10是示出计算机系统的实施例的框图。在显示的示例中,备份客户机系统102(其可为关于未显示的一个或多个功能和/或网络元件的服务器,例如文件服务器)具有通过连接104和通信接口1006(诸如网络接口卡(NIC))的网络连接性。备份客户机1008通过通信接口1006和连接104通信,以在网络上将存储在文件系统1010中的文件和相关联的文件系统信息复制到远程服务器。在多种实施例中,备份客户机1008包括软件代理和/或在包括系统102的处理器上运行的其它代码。备份客户机1008使用存储在例如存储器或包括系统102的其它数据存储装置中的散列高速缓冲存储器1012(如上面描述的那样)来使与文件系统1010相关联的文件系统信息与远程服务器高效地同步。
[0041] 虽然在本文描述的许多实施例中,跨过网络复制文件和相关联的文件系统信息,以及/或者使它们同步,但在其它实施例中,本文描述的技术可用于其它环境中,例如,备份到本地备份存储节点或其它存储节点。另外,虽然在多种实施例中描述了文件和文件系统元数据,但本文描述的技术可用来使关于以分层或其它方式存储或表示的其它存储对象的元数据同步。
[0042] 虽然为了清楚地理解而在一些细节中描述了前述实施例,但本发明不限于所提供的细节。存在许多实现本发明的备选方式。公开的实施例是说明性的,而非约束性的。