用于优化的签名比较和数据复制的系统和方法与流程

文档序号:11160896
用于优化的签名比较和数据复制的系统和方法与制造工艺
本申请要求在2015年1月13日提交的美国临时申请No.62/102,808的权益,其公开内容通过引用被整体并入本文。
技术领域
本发明涉及数据复制,并且更具体地,涉及用于执行数据储存备份的签名比较或其它数据复制操作的系统和方法。
背景技术
:计算机服务器和计算机服务器集群朝向虚拟机不断移动以提供计算服务。在这种环境中,管理员经常为虚拟机配置远程备份任务。在远程备份期间,源虚拟机的数据的快照被复制给目标(例如,远程数据中心)。在当前的解决方案中,签名被发送到目标,并且在目标上进行比较,目标通常驻留在WAN连接上。WAN连接通常慢并且昂贵,并且许多其他任务竞争WAN连接上的带宽。由于单个远程备份任务可以触发数百万计的签名比较的事实,日益普遍和大规模的备份任务会导致显著的延时、堵塞WAN连接以及占用服务器资源。技术实现要素:提供用于改善的远程备份操作的系统、方法以及计算机可读介质,该操作可以减少WAN流量和远程备份持续时间。响应于远程备份命令,源网络节点执行数据集的先前快照和当前快照之间的本地签名比较。以这种方式,源网络节点仅需要将本地不匹配的签名发送到远程网络节点。然后远程网络节点可以搜索不匹配的签名,并且向源网络节点发送标识出不存在于远程网络节点上的签名的响应。源网络节点随后发送仅与不存在于远程网络节点上的签名相关联的数据,以并入到数据集的远程快照中。根据本公开进行操作的系统特别有益于某些远程备份使用情况,诸如具有大量的随机写使用模式的、大小的范围高达数百千兆字节或更大的特大虚拟盘(VMDK),其中大百分比的签名比较将以匹配为结果。系统可以减少显著百分比的跨WAN发送的远程签名比较。由于在远程签名比较的数量上的减少,所以系统也减少了总体WAN的利用。另外,系统缩短了跨高延迟WAN环境的远程备份的持续时间。即使是在低延迟LAN环境中,系统也可以进一步减少完成远程备份所要求的时间。在一些实施例中,系统包括检测导致差的性能的使用模式的辨识算法。在辨识这种使用模式时,系统应用不同的备份方法,无论是应用不同的专用备份例程还是默认为标准或常规的备份例程。根据本公开的一个实施例,提供了一种系统,该系统包括源网络节点和远程网络节点,每个节点具有处理器和存储指令的存储器,该指令在被处理器执行时使得处理器执行用于在远程网络节点上生成位于源网络节点上的数据集的远程备份副本的操作,所述操作包括:接收把位于所述源网络节点上的所述数据集复制到所述远程网络节点的命令,所述数据集包括树型结构文件系统中的数据和元数据的签名,其中所述文件系统数据和元数据作为对象被存储在对象仓库(objectstore)中,每个对象具有全局唯一的内容衍生签名;响应于所述命令,在所述源网络节点上访问所述数据集的先前存储快照的签名和所述数据集的当前快照的签名,其中所述先前快照包括树型结构文件系统的所述数据和元数据对象的所述签名的树,并且其中存储在所述源网络节点上的所述先前快照对应于存储在所述远程网络节点处的先前远程快照;在所述源网络节点处执行所述先前快照和所述当前快照之间的本地签名比较以识别在所述先前快照和所述当前快照之间不匹配的一个或多个签名,其中所述本地签名比较是从所述树的根开始的迭代的自上而下比较(top-downcomparison),并且其中不匹配的签名在所述树中具有不同内容或不同定位中的至少一个;将不匹配的签名发送到所述远程网络节点;在所述远程网络节点上执行对于不匹配的签名的搜索;从所述远程网络节点接收关于不匹配的签名是否存在于所述远程网络节点处的响应;以及如果不匹配的签名不存在于所述远程网络节点处,则把与不匹配的签名相关联的数据发送到所述远程网络节点以供并入当前远程快照内。在一个实施例中,源网络节点和远程网络节点跨广域网(WAN)进行通信。在一个实施例中,不匹配的签名跨WAN被异步地发送。在一个实施例中,不匹配的签名在跨WAN发送之前被批处理。在一个实施例中,被批处理的签名包括来自树的不同兄弟节点的签名。根据本公开的另一实施例,提供了一种用于在远程网络节点上生成位于源网络节点上的数据集的远程备份副本的方法,包括:接收把位于源网络节点上的数据集复制到远程网络节点的命令,所述数据集包括树型结构文件系统中的数据和元数据的签名,其中所述文件系统数据和元数据作为对象被存储在对象仓库中,每个对象具有全局唯一的内容衍生签名;响应于所述命令,在所述源网络节点上访问所述数据集的先前存储快照的签名和所述数据集的当前快照的签名,其中所述先前快照包括树型结构文件系统的所述数据和元数据对象的所述签名的树,并且其中存储在所述源网络节点上的所述先前快照对应于存储在所述远程网络节点处的先前远程快照;在所述源网络节点处执行所述先前快照和所述当前快照之间的本地签名比较以识别在所述先前快照和所述当前快照之间不匹配的一个或多个签名,其中所述本地签名比较是从所述树的根开始的迭代的自上而下比较,并且其中不匹配的签名在所述树中具有不同内容或不同定位中的至少一个;将不匹配的签名发送到所述远程网络节点;在所述远程网络节点上执行对于不匹配的签名的搜索;从所述远程网络节点接收关于不匹配的签名是否存在于所述远程网络节点处的响应;以及如果不匹配的签名不存在于所述远程网络节点处,则把与不匹配的签名相关联的数据发送到所述远程网络节点以供并入当前远程快照内。在一个实施例中,源网络节点和远程网络节点跨广域网(WAN)进行通信。在一个实施例中,不匹配的签名跨WAN被异步地发送。在一个实施例中,该方法包括在跨WAN发送之前批处理不匹配的签名。在一个实施例中,被批处理的签名包括来自树的不同兄弟节点的签名。根据本公开的另一个实施例,提供了一种其中存储有指令的非暂时性计算机可读储存介质,该指令在由处理器执行时使得处理器执行操作,所述操作包括:接收把位于源网络节点上的数据集复制到远程网络节点的命令,所述数据集包括树型结构文件系统中的数据和元数据的签名,其中所述文件系统数据和元数据作为对象被存储在对象仓库中,每个对象具有全局唯一的内容衍生签名;响应于所述命令,在所述源网络节点上访问所述数据集的先前存储快照的签名和所述数据集的当前快照的签名,其中所述先前快照包括树型结构文件系统的所述数据和元数据对象的所述签名的树,并且其中存储在所述源网络节点上的所述先前快照对应于存储在所述远程网络节点处的先前远程快照;在所述源网络节点处执行所述先前快照和所述当前快照之间的本地签名比较以识别在所述先前快照和所述当前快照之间不匹配的一个或多个签名,其中所述本地签名比较是从所述树的根开始的迭代的自上而下比较,并且其中不匹配的签名在所述树中具有不同内容或不同定位中的至少一个;将不匹配的签名发送到所述远程网络节点;在所述远程网络节点上执行对于不匹配的签名的搜索;从所述远程网络节点接收关于不匹配的签名是否存在于所述远程网络节点处的响应;以及如果不匹配的签名不存在于所述远程网络节点处,则把与不匹配的签名相关联的数据发送到所述远程网络节点以供并入当前远程快照内。在一个实施例中,源网络节点和远程网络节点跨广域网(WAN)进行通信。在一个实施例中,不匹配的签名跨WAN被异步地发送。在一个实施例中,该非暂时性计算机可读储存介质包括附加的指令,当被处理器执行时,该附加的指令使得处理器执行包括在跨WAN发送之前批处理不匹配的签名的操作。在一个实施例中,被批处理的签名包括来自树的不同兄弟节点的签名。词汇表下面是在本申请的各种实施例中使用的术语的词汇表:HA:高可用性。蜂巢(Hive):数据集,即,树型结构文件系统的数据和元数据。远程备份作业(或复制作业):追踪远程备份的控制平面(ControlPlane)作业。复制任务:针对高延迟链路被优化的并且从源网络节点上的源快照复制大量数据到远程网络(目标)节点以供远程备份的文件系统线程或线程组。线程或线程组在源节点上运行。HA保护备份:具有目标蜂巢的HA对的远程备份。目标蜂巢的HA对分别被称为被动主要(passiveprimary)和第三(tertiary)。附图说明通过参照与以下附图结合的详细描述,将更充分地理解本发明,其中:图1图示用于在本发明的一个实施例中使用的节点的一个实施例的示意性框图;图2图示数据路径子系统的一个实施例的示意性框图;图3图示用于在本发明中使用的包括操作系统内核空间的虚拟文件系统的一个实施例的示意性框图;图4图示对象仓库的一个实施例的主要组成部分的示意性框图;图5图示利用具有文件系统所需要的数据结构(诸如文件、目录和inode(索引节点)映射)的对象仓库的文件系统的一个实施例的示意性框图;图6图示现有技术远程备份系统的示例;图7图示根据利用本地签名比较的本发明的远程备份系统的实施例;图8A图示根据本发明的一个实施例的包括用于远程备份的先前快照和新快照的数据集的示意性框图;图8B图示用于执行迭代的自上向下签名比较的示例性方法;图8C图示在图8B中示出的方法的示例性子例程,该子例程用于把被批处理的签名发送到远程目标并分析响应;以及图9图示示例性计算机系统实施例的示意性框图。具体实施方式下面详细讨论本公开的各种实施例。虽然讨论了具体的实现方式,但是应当理解,这仅是为了图示的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他部件和配置。本公开的附加的特征和优点将在下面的描述中阐述,并且将从该描述中部分地变得明显,或者可以通过对本文公开的原理的实践而习得。本公开的特征和优点可以借助于在所附权利要求中特别指出的手段以及组合来实现和获取。本公开的这些和其它特征将从下面的描述和所附权利要求中变得更加充分显然,或者可通过对本文阐述的原理的实践而习得。应当理解,为了图示的简单和清楚,在适当的地方,在不同的附图之间重复了附图标记以指示相应或类似的元素。另外,阐述了许多具体细节以便提供对本文所描述的实施例的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践本文所描述的实施例。在其他实例中,还没有详细描述方法、过程和组件,以免模糊相关的所描述的相关特征。附图未必是按比例的,并且某些部分的比例可以被扩大以更好地图示细节和特征。描述不应被认为是限制本文所描述的实施例的范围。节点系统图1图示了节点100的一个实施例的示意性框图。节点100可以是具有以软件为中心的架构的超融合基础设施节点,其紧密地集成计算、储存、联网和虚拟化资源以及其他技术。例如,节点100可以是市场上可购得的系统,诸如可从位于WestboroughMAUSA的SimpliVity公司获得的并入有文件系统的节点100可以托管多个客户虚拟机(VM)102、104以及106,并且可以被配置为产生虚拟机的本地和远程备份以及快照。在本发明的实践中,多个这种节点可以被布置在网络中,如下所述。为此,节点100可以在管理程序110上方包括虚拟设备108。虚拟设备108可以包括与控制平面114和数据路径116通信的虚拟文件系统112。控制平面114可以应付在节点100内的应用和资源之间的数据流。数据路径116可以在虚拟文件系统112和操作系统(OS)118之间提供适合的I/O接口,并且可以使能诸如数据压缩、去重复和优化的特征。节点100还可以在管理程序110以下包括多个硬件组件。例如,节点100可以包括储存装置120,其可以是具有多个硬盘驱动器(HDD)122和/或固态驱动器(SSD)124的RAID储存装置。节点100还可以包括存储器126(例如,RAM,ROM,闪存等)以及一个或多个处理器128。最后,节点100可以包括无线和/或有线网络接口组件130以使能与其它节点的通信。参照图2,数据路径116被进一步分解。如所示的那样,数据路径116包括复制管理器200,其被配置为使用签名比较来执行远程备份,如参照图7所详细描述的那样。数据路径116还包括与控制平面114通信的文件系统202。文件系统202诸如通过实例化文件系统组件、维护目录和那些目录内的文件等来负责管理数据路径116内的文件系统组件。文件系统202还确定节点的I/O处理能力,并通过将数据写从主要节点(例如,节点100)镜像到次级节点来实现高可用性。文件系统202进一步为数据路径116内的各种组件提供同步和异步数据传送接口二者。如参照图3~图4详细讨论的那样,对象仓库204和储存管理器206负责数据路径116和I/O子系统208之间的数据对象I/O操作。虚拟文件系统现在参照图3,示出的是图示用于在本发明中使用的虚拟文件系统的一个实施例的示意性框图,该虚拟文件系统包括操作系统内核空间,如在2013年7月2日授权给Beaverson等人的美国专利No.8,478,799中所描述的那样,该专利的公开通过引用被整体并入本文中。如所示的那样,各种储存组件可以被包括在操作系统内核301中。尽管从Linux环境中绘制,但是该图可以应用于诸如以及其他Unix类操作系统的其他操作系统。示出了304式文件系统的示例,其中可以不失一般性地是任何数量的文件系统(诸如ResierFs、Exts、btrfs以及zfs)中的任何一个。虚拟文件系统(VFS)层303被用来抽出文件系统的许多共同特征,并且向用户空间300和其他组件提供一致的接口360。VFS303可以具有明确定义的“下边缘”接口350a、350b,任何文件系统可以使用该接口来被VFS303层辨别出。在实践中,通常有许多文件系统在并行地工作。在该示例中,文件系统304和(命名空间)文件系统307可以并行地运行。文件系统一般位于由块驱动器305实现的块储存抽象的顶部。块储存可以在逻辑单元号LUN本地储存装置309上,或者它可以在使用iSCSI协议的远程LUN上。块驱动器305还可以在操作系统中具有明确定义的接口,诸如连接到对象仓库308的接口356a、连接到DICE库310的接口356b以及连接到304的接口356c。在该实施例中,文件系统包括堆叠在对象仓库308的顶部的(命名空间)文件系统307(例如,如在授权给Beaverson等人的美国专利No.8,478,799中所描述的那样)。在文件系统307和对象仓库308之间的接口352可以是诸如ANSIT-10对象标准的各种工业标准对象接口中的任一个,或可以是基于文件系统307和/或对象仓库308要求的非标准对象接口。对象仓库308可以被分区使得常用功能的库(摘要、索引、压缩,加密(DICE)库310)被抽出,并且可以通过接口353被连接到DICE库310。库310可以完全用软件实现,或者利用各种硬件加速313技术(其中一个被示出)。如果使用硬件加速器313,则该加速器可以具有两大类的服务:一类用于计算密集型操作311(压缩、加密、指纹识别),另一类用于诸如索引的存储密集型操作312。硬件实现方式可以具有一类或另一类或两者。对象仓库308创建可以位于原始LUN、磁盘上的分区或大文件之上的对象容器。它还可以使用诸如iSCSI或其他远程访问块协议(FCoE是另一个示例)的协议,沿着接口355经由网络堆栈306来引用容器。网络文件系统(NFS)302位于网络堆栈306的顶部(经由接口354),并且NFS被连接到VFS303。网络堆栈306经由接口360被连接到LUN309,并经由接口359被连接到云310。参照图4,对象仓库308被进一步分解。对象仓库308包含二进制不透明对象,其示例是P401,Q402和R403。对象可以具有不同的大小,尽管在优选实现方式中,它们是2的幂。对象驻留在容器中的某个偏移处,偏移可以是字节偏移或者以最小对象大小为模的偏移(即,如果最小对象是512字节,则偏移将乘以512以得到字节偏移)每个对象具有名称,这里称为签名或指纹,其是对象的整个内容的加密摘要(散列)。例如,在图4中,由H(p)、H(q)以及H(r)指示对象名称(签名)。以这种方式,可以包括数据和/或元数据的每个对象可以具有从其数据的内容衍生出的全局唯一签名。索引结构404保持追踪(映射)对象名称、对象位置以及对象引用。在该去重复文件系统和对象仓库中,每个唯一数据或元数据对象的单个副本可以被存储,由其签名来标识。对象的引用在每次写对象时递增。换句话说,虽然OmniStack文件系统307可以生成它认为的相同对象的许多副本,然而对象仓库308仅存储一个,但保持跟踪命名空间实际上认为它有多少副本。这样做,对于系统来说,去重复是自然的。对象仓库308可以具有几个接口类352a-d。读、写、删除接口352a执行所声明的功能。在这种情境下,对象删除实际上是对象引用计数的减少。只有当引用计数走到0时,才会释放对于对象仓库内的对象的储存。索引操作352b使能按名称枚举对象、引用计数调整以及按名称查找对象。对象仓库308具有事务语义(ACID属性),并且事务边界通过事务操作352c被管理。除了列出待定的事务以外,这还包括启动、提交以及中止事务。供应接口352d使能创建、删除、合并、拆分以及聚合对象仓库。索引404是其主键为对象名称(签名)的映射。在系统中对于每个对象都有索引条目。每个条目包含:a)对象的内容的签名。签名由内容的加密摘要(散列)生成。b)指示对象被引用了多少次的引用计数。引用计数可以使用饱和运算来节省空间。例如,它可以仅使用8位来追踪引用:引用计数可以被增加和递减,但是如果它等于或超过255,则计数“饱和”,并且不允许进一步递减。因为对象具有引用计数,所以只要有同样的对象,对于系统来说,去重复是自然的。c)物理定位符。如果对象在物理磁盘上,则这可以是逻辑块号LBN。如果对象由托管提供商(例如,AmazonS3)托管,则其可以是对云对象的引用。d)用于各种使用的标志。一个标志指示对象是否被存储压缩,另一个指示对象是否被加密。其他标志是可用的,但没有被分配给特定使用。分配映射420是用于在对象容器406上的分配块的位图。对象容器406是可随机寻址的永久性储存抽象。示例包括跨广域网(WAN)(即,在诸如大于60英里的距离的大地理距离上延伸的电信网络或计算机网络)的原始LUN、文件、磁盘上的分区或iSCSI装置。对象容器406可以具有几个组件407-411(未按比例示出)。除了存在于已知偏移处的容器描述符块407之外,其他组件的顺序并不重要。对象索引408可具有容器驻留部分或索引404的部分,或两者,诸如B树或另一树型结构。分配映射420也可以部分地在磁盘上和在索引404中。可以利用寻呼技术来完成在两者之间的迁移。当对象仓库被修改时,事务日志411被保留在永久性储存装置上。日志追踪所有对象活动,包括读、写、删除、引用调整等等。日志被按照时间顺序保留,并且周期性地滚动到主索引408中。在搜索主索引之前,对象活动必须首先“命中”日志。每个日志条目包括操作类型352a、352b、352c、352d、指纹、引用计数、事务ID或时期数量(epochnumber)以及池位置。日志条目在结构上与索引条目相似,但添加了事务ID。全局对象命名使得对象仓库能够四处移动对象,同时仍然维持一致的命名和访问。移动对象的原因包括:a)为了性能原因,在物理磁盘上移动相关对象以使其彼此接近。b)跨故障边界复制对象。这可以跨两个分开的本地磁盘、一个本地磁盘和一个远程磁盘、或任何多个上述磁盘。复制还可以给予读性能益处。复制还可以包括诸如利用擦除代码来拆分对象。c)对对象的后台操作,诸如压缩、解压缩、加密、解密。d)根据对象的使用频率或预期使用频率而移动对象。图5图示一起被分组到数据结构中的一组对象的一个实施例的示意性框图,该数据结构(本文中被称为“hnode”)可以被专门化为文件系统所需要的其他数据结构,诸如文件、目录和imap。如本文所提及的,hnode是将内容绑定在一起的数据结构,诸如文件。有时内容可以非常大(许多GB),不适于连续地在磁盘或永久性介质上。将内容解体,并作为离散单元存储。在传统文件系统的情况下,这将是磁盘上的块。在本公开中,这些是对象名称(签名)。hnode在映射结构中保留所有对象名称的列表。线性列表是这种映射结构的一个示例,但是更复杂的间接表也是可以的。hnode包括标识对象的内容的对象名称(签名)。因此,hnode本身具有明确定义的全局唯一的名称或签名(其内容的散列)。如图5所示,hnode500是可随机寻址的内容序列,与文件相似。如何诠释内容取决于情境。hnode可以被进一步专门化为文件、目录和inode映射(以下进一步讨论的imap)。在面向对象编程的说法中,类文件、目录和inode映射(imap)是从基类hnode衍生出的。文件504可以是瘦包装器,其使得hnode显现为可以被打开、关闭、读、写等等的正常文件。目录505是hnode500的另一种诠释。目录505是文件系统inode号(整数)到文件名称(字符串)的映射501。映射可以采取各种形式,包括但不限于线性列表、B树、散列映射、其他树型结构等。如果映射501完全在存储器中,则可以将该映射串行化和解串行化。imap(“inode映射”)502将文件系统inode号(来自目录505)翻译成对象摘要(即,作为对象内容的散列的“摘要”,与本文中的“签名”相同)。对象可以表示hnode(并且因此,通过扩展,表示文件、目录或其他imap)、诸如超级块的结构、或诸如与虚拟机相关联的数据的其他数据。对于已知的对象,imap502可以具有预留的位置,诸如索引0、索引1等等。示例包括先前的imap(一个或多个)、文件系统超级块等等。一般地,imap502是inode号和对象签名(摘要)之间的映射(转换)。这使命名空间文件系统能够适应(利用)典型文件系统的inode号。通过使用该间接表,inode号可以保持不变,但是相关联的对象名称(签名)可以随着对应于inode号的文件数据和元数据改变而改变。由于imap本身是对象,该名称也将随着文件系统被修改而改变。在该实施例中,文件系统的所有数据和元数据都是对象,每个都具有全局唯一的内容衍生签名,并且每个文件系统目录是对于包括文件构造(即,文件的目录)的对象的签名的树。与传统文件系统相似,在imap的情况下,文件系统树的根可以在已知的inode号处(参见imap502中的针对摘要(根)的索引2)。以这种方式,在时间t处的imap的签名基本上表示文件系统在时间t处的完整“快照”。增加此签名下的每个可见对象的引用计数会锁定快照,并且会阻止它被删除,而不论其他文件系统活动如何。一旦创建了快照签名后,可以继续在文件系统(可写的快照)上工作,或者将其本地存储以创建备份供将来使用。快照签名还可以被发送到、并存储于位于不同的对象仓库上的另一个系统(在远程网络节点上)处,以创建远程备份。如果对象仓库不能解决特定签名的读请求,只要它知道其他对象仓库,则它可以将请求转发到那些其他对象仓库。因此,快照的签名可以移动到其对象仓库可能不完全托管所有的快照的数据(对象)的系统,但是经由刚刚描述的机制,快照的签名仍然是完全一致和可用的。已经公开了可以在本发明中利用的计算系统和文件储存系统的各种组件,本公开现在提供使用签名比较来创建远程备份的更详细的描述。现有技术远程备份系统图6图示了用于执行远程复制的已知系统600和方法。在系统600中,控制平面可以启动复制作业,该复制作业基本上在源网络节点602上的文件系统中产生复制任务线程或线程组。在复制任务开始之前,控制平面可以准备源网络节点602以及一个或多个远程目标网络节点,诸如目标节点604、606。在源节点602上,控制平面可以打开蜂巢(数据集)607作为主要。由此,系统600可以停顿和汇总(rollup)数据集607。控制平面然后可以采取数据集607的快照,以产生作为主要而打开的数据集697的新快照主要608。新快照608被视为源蜂巢或源数据集,并且包括用于远程备份的与新快照相关联的数据和元数据对象的签名树。在目标节点604上,控制平面可以打开空的被动主要蜂巢(数据集)610作为主要。控制平面还可以将数据集610添加为关于源数据集608的远程备份的接收者。在目标节点606上,控制平面可以打开空的第三蜂巢(数据集)612作为次级,并且可以将数据集612添加为关于数据集610的次级副本。一旦控制平面已经建立了节点602、604和606,与新快照608相关联的签名在WAN614上被发送到目标节点604。与新快照608相关联的签名也从目标节点604被发送到目标节点606(例如,在LAN、WAN上等)。然后,目标节点604可以搜索现有数据616以确定签名中的哪些(如果有的话)存在于目标节点604上。相似地,在一些情况下,目标节点606可以搜索现有数据618以确定签名中的哪些(如果有的话)存在于目标节点606上。在完成搜索操作之后,目标节点604可以向源节点602发送标识出不存在于目标节点604和/或目标节点606上的签名的响应。然后,源节点602可以在WAN614上发送与不存在的签名相关联的数据到目标节点604。然后,所发送的数据可以被并入到数据集610、612中以创建新快照608的远程备份(一个或多个)。一旦完成复制任务,控制平面会关闭数据集608、610以及612。具有本地签名比较的远程备份系统图7图示了根据本发明的一个实施例的使用签名比较来创建远程备份的系统700。与图6的现有技术的系统和方法相比,这种新的系统和方法在时间和网络资源的利用方面明显更有效。在系统700中,控制平面可以响应于执行远程备份的请求而启动复制作业。启动复制作业基本上在本地源网络节点702上的文件系统中产生复制任务线程或线程组。在复制任务开始之前,控制平面可以准备源网络节点702和一个或多个远程目标网络节点,诸如目标节点704、706。在源节点702上,控制平面可以打开蜂巢(数据集)707作为主要。由此,系统700可以停顿和汇总数据集707。然后,控制平面可以采取数据集707的快照,以产生作为主要而打开的数据集707的新快照主要708。新快照708被视为源蜂巢或源数据集,并包括用于远程备份的与新快照相关联的数据和元数据对象的签名树。控制平面还把先前快照主要720打开为主要。一旦打开,系统700可以确定先前快照主要720是否包括最新的远程备份的快照(即,先前快照)及其相关联的数据、元数据、签名等。如果它不包括(例如,先前快照不存在),则系统700回退到用于远程备份操作的常规复制作业(例如,图6)。在目标节点704上,控制平面可以打开空的被动主要蜂巢(数据集)710作为主要。控制平面还打开具有最新备份(即,对应于先前快照720的备份)的根签名的蜂巢(数据集)722(被称为先前快照被动主要722)作为主要。控制平面可以添加数据集710作为关于新快照708的远程备份的接收者。在目标节点706上,控制平面可以打开空的第三蜂巢(数据集)712作为次级。控制平面还打开具有最新远程备份的根签名的蜂巢(数据集)724(被称为先前快照第三724)作为次级,并且可以将数据集712添加到被动主要数据集的副本集作为次级。数据集707、708、710、712、720、722和724中的每一个包括树型结构文件系统的数据和元数据的签名。文件系统数据和元数据作为对象被存储在对象仓库中,每个对象具有全局唯一的内容衍生签名,如先前所述。在设置源节点和目标节点之后,系统700验证先前快照722、724的根签名与先前快照720的根签名匹配。当最新的远程备份存在于先前快照720中时,基于之前的复制操作,其数据应已经存在于在目标节点704、706上的先前快照722、724中。因此,源节点702可以首先在新快照数据集708和先前快照720之间本地执行签名比较。只有那些本地不匹配的签名比较需要跨WAN714被发送到远程目标704(以及第三目标706)。然后,远程目标可以对签名进行本地检查,因为来自其他数据集的签名可能已经存在(被存储)于远程节点上。接下来,系统700通过首先比较新快照708的元数据签名与先前快照720的元数据签名来同步元数据。该比较从根签名开始并以迭代方式(例如,使用深度优先技术、宽度优先技术或其组合)沿树结构向下移动。对于每个不匹配的签名,系统700可以在WAN714上向目标节点704、706发送签名元数据。由此,系统700检查在新快照708上的蜂巢的子树高度是否匹配先前备份720的蜂巢的子树高度。如果不匹配,则系统700回退到用于该特定文件的常规复制作业(例如,图6)。否则,从根签名开始并以自上而下的迭代方式进行,系统700本地比较新快照708的签名与先前快照720的签名。以下参考图8A、8B和8C而更详细地描述这种比较过程。如果签名本地匹配,则系统跳过该签名,因为相应的文件数据和/或元数据在目标节点704、706上必然匹配。如本文所叙述的那样,如果签名在数据集树内具有相同内容(例如,名称)以及定位,则认为签名匹配。如果签名本地不匹配(即,不同的内容或定位),则系统700可以在WAN714上发送用于在目标节点704、706处进行比较的签名内容和定位,以查看来自其他数据集的数据和/或元数据是否已经远程地存在。当向目标节点704、706发送签名以进行比较时,一种方法是在单个网络消息中仅发送属于相同树节点的(一个或多个)签名(从源节点到目标节点),因此在数据集树上逐个节点地进行处理。因此,属于不同兄弟树节点的签名将在分开的网络消息中被发送。这可能造成例如在一个网络消息中发送非常少量的签名(例如,一个)。因为与被发送的签名的相对小的大小相比大的每个消息的开销,并且因为大量的具有长的往返时间的消息,特别是跨WAN的消息,这种方法可能更低效。因此,在一个实施例中,系统700可以批处理单个消息中的许多签名(甚至属于不同兄弟树节点的签名)。在这样做时,系统700将消息的发送与数据集树的逐节点处理解耦。要发送的签名可以被缓冲,然后取决于多少签名可以纳入缓冲器中而被打包并在一个网络消息中发送。系统700可以异步地发送经批处理的签名到目标节点以进行比较。一旦在目标节点704处接收到签名,就可以将它们从目标节点704发送到第三目标节点706(例如经LAN,WAN等)。这样做允许远程备份提供高可用性。系统700已经确定没有签名匹配(在相同树位置处)远程地存在于(一个或多个)目标处,因为它已经本地匹配。因此,目标节点704、706可以搜索现有数据716、718以确定签名是否存在(被存储)于远程节点处。如果在目标节点704、706中的任一个上发现签名,则系统700完成处理该签名,因为相应的文件数据在目标节点上是可用的。否则,该签名没有被远程地存储,并且目标节点704可以向源节点702发送标识出该签名不存在于目标节点704、706上的响应。在一些情况下,目标节点704可以批处理对源节点702的响应。如果远程不存在的签名对应于元数据签名,则系统700可以继续比较其数据集树子签名。如果它对应于文件数据签名,则系统700可以批处理与签名相关联的数据以发送到目标节点704。系统可以异步地发送经批处理的数据到目标节点704,目标节点704在一些情况下可以将数据传送到目标节点706。所发送的数据可以被并入到目标节点704、706处的远程备份(即,数据集710、712)中。本发明在其中(与先前的快照的)大量签名比较将得到匹配的结果的远程备份方面是特别有益的。在这种情况下,系统700减少在WAN714上的流量,并且还可以由于利用大量的本地签名匹配来避免高延迟而减少备份时间。额外的签名比较的确切效果将取决于在源节点702上的数据集元数据读以及其他因素。初步测试表明,具有大量随机写(诸如来自IoMeter)的虚拟机磁盘(VMDK)的备份与优选使用情况相一致。一个示例是使用用可去重复(dedupable)可压缩数据进行的IoMeter64K随机写的备份。每个备份之前都有20分钟的写。第一次备份时,在远程数据仓库(目标节点)上没有数据。此场景展示了有多少签名比较在远程数据中心上匹配。下表图示了与先前方法相比,当前公开系统的潜在益处。表1:使用用可去重复可压缩数据进行的IoMeter64K随机写的备份备份1备份2所处理信号37,949,42431,016,232所匹配信号30,616,94629,634,442匹配百分比80.0%,95.5%时间01:04:0000:14:00大小440GB440GB所发送37.9GB1GB作为非限制性示例,以下是用于实现当前公开系统的一部分的示例接口:voidFileSystemManager::replicatePeer(constHiveId&hiveId,constNodeId&target,constRebuildComplete&finished,constHiveId&prevBackupHiveId=NULL_GUID);如果prevBackupHiveId是NULL_GUID,则系统可以对于整个远程备份操作按照常规方式来执行文件系统复制。否则,如果提供(本地存储)了prevBackupHiveId(快照),则系统可以尝试使用先前备份快照来执行本地签名比较。在调用该API之前,在源节点上,先前的备份快照和数据集必须已由控制平面作为主要打开,并且必须在复制期间保持是打开的。此外,目标数据集(例如,被动主要数据集和第三数据集)应已经被控制平面设置为与先前备份快照相同的根签名。否则,文件系统复制将回退到用于远程备份操作的常规复制作业。可以修改API以在没有提供数据集或快照时首先检查所理解或假定的默认先前备份数据集或快照。文件系统假定在复制期间在先前备份数据集上没有并发I/O,与关于源数据集的假定相似。文件系统可以允许控制平面从相同快照运行多个复制。对先前备份快照或数据集的任何写都可能导致将不正确的数据备份到目标数据集。在一个实施例中,系统可以在源节点上保持最新的远程备份的快照,并确保后续远程备份去往相同的目标节点对。在源节点上,系统应打开最新的远程备份快照或数据集(如果一个存在的话),并将蜂巢ID传递(或以其他方式指示)给svtfs::FileSystemManager::replicatePeerAPI。在复制期间,此数据集应保持是打开的,并且文件系统假定没有对其的并发I/O,或至少没有写。在目标被动主要节点和目标三级节点上,系统打开一个新的空数据集,将数据集的根签名设置为最新的远程备份的根签名(在源上调用svtfs::FileSystemManager::replicatePeerAPI之前)。图8A图示了示例性数据集800,其包括与关联于最新的远程备份(即,先前快照)的数据和元数据对象对应的签名树。另外,图8A示出数据集802,其包括与关联于旨在用于远程备份的新快照的数据和元数据对象对应的签名树。如所示的那样,数据集800、802内的每个签名形成在各自树中的单独节点。例如,签名“1”和“10”分别在数据集800、802的最高层级(被指示为层级1(根))处形成根树节点804和818。从根节点804、818分支出的是位于数据集800、802的中间层级(被指示为层级2)处的多个子树节点(即,节点806、808、820以及822)。最后,从节点806、808、820以及822中的每一个分支出的是位于数据集800、802的底层级(被指示为层级3)处的多个子树节点(即,节点810、812、814、816、824、826、828以及830)。因为节点810、812、814、816、824、826、828以及830没有进一步的元数据子节点(即,它们包括它们各自的树的底部),所以它们被称为叶树节点。为了确定新快照和先前快照之间的差异,可以执行先前快照的签名和当前快照的签名之间的迭代的自上向下签名比较,如图8中所图示的那样。在图8B中描述的方法不旨在是限制性的,并且可替代实施例可以在执行签名比较时使用深度优先技术、宽度优先技术或其组合。为了清楚说明,相关于被配置为实践该方法的系统(例如,系统700)并参照在图8中所示的数据集800、802来描述图8B中所描述的方法。该方法开始于在步骤850中将新快照的根树节点签名附加到需要被比较的树节点签名的列表。例如,数据集802中的根树节点818的签名(“10”)可以被附加到需要被比较的树节点签名的列表。接下来,在步骤852处,系统(例如,系统700)可以从需要被比较的树节点签名的列表中移除第一项,并且可以执行新快照的树节点签名和先前快照的对应的子树节点签名之间的本地比较。例如,在数据集802中的根树节点818的签名(“10”)可以被从列表中移除,并且可以在本地(例如,在系统700中的源702上)与在数据集800中的根树节点804的签名(“1”)进行比较。基于本地比较,系统700可以确定新快照中的签名的内容和定位二者是否匹配先前快照的签名的内容和定位二者(步骤854)。如果签名匹配,则系统700可以确定对于该签名(或其子签名,如果有的话)不需要进一步的比较,并且可以前进到步骤860而不用将签名发送到远程目标。例如,因为在数据集802中的子树节点820的签名(“2”)在树中的内容以及定位两方面都与数据集800中的子树节点806的签名(“2”)匹配,所以系统可以确定在节点820中的该签名(“2”)以及在叶节点824和826中的签名(“4”)和(“5”)不需要被发送到远程目标(例如,目标节点704、706)。如果在步骤854中签名不匹配,则系统700可以在步骤856中批处理签名以发送到远程目标(例如,系统700中的目标节点704、706)。在批处理要发送到远程目标的签名之后,系统700可以确定批处理是否已满(步骤858)。如果批处理具有用于至少再多一个签名的空间,则系统700可以前进到步骤860。否则,如果批处理是满的,则系统700可以移动到图8C中图示的子例程中,并且可以把经批处理的签名(同步地或异步地)发送到远程目标(步骤864)。在步骤866处,系统700可以从远程目标接收标识所发送的签名在远程目标处的状态(即,签名是否存在于远程目标上)的响应。由此,系统700可以选择在响应中被标识的签名以供评估(步骤868),并且可以确定该响应是否将所选择的签名标识为存在(步骤870)。如果响应指示所选签名远程地存在,则系统确定其不需要向远程目标发送与该签名相关联的数据,并且可以前进到步骤878。否则,如果所选择的签名没有远程地存在,则系统700可以在步骤872中确定与所选择的签名相关联的树节点是否处于叶层级(例如,在图8A中的层级3)。如果所选择的签名的树节点处于叶级别,则系统700可以将与该签名相关联的数据发送到远程网络节点以并入到远程快照内(步骤874),并且可以继续到步骤878。如果所选择的签名不对应于叶节点,则系统700可以将与所选择的签名相关联的子树节点的(一个或多个)签名附加到需要被比较的签名的列表(步骤876)。由此,系统700可以前进到步骤878。在步骤878处,系统700可以确定其是否已经评估了来自目标节点的响应中所标识的所有签名。如果不是,则系统700可返回到步骤868以选择新签名并重复上述过程。否则,系统700可以行进到步骤860。返回来参照图8B,在步骤860处,系统700可以确定需要被比较的树节点签名的列表是否为空。如果列表为空,则系统700可以指示比较完成(步骤862)。否则,如果列表不为空,则系统700可以返回到步骤852,并且可以重复该比较过程,直到系统700确定新快照和先前快照之间的签名比较完成。计算机系统架构参照图9,示例性系统和/或计算装置900包括处理单元(CPU或处理器)920和系统总线910,系统总线910耦接各种系统组件,系统组件包括系统存储器930,诸如对于处理器920的只读存储器(ROM)940和随机存取存储器RAM)950。系统900可以包括与处理器920直接连接、紧密靠近或集成为处理器920的一部分的高速存储器的高速缓存922。系统900将来自存储器930和/或储存装置960的数据复制给高速缓存922以供处理器920快速访问。以这种方式,高速缓存提供了避免处理器920在等待数据时的延时的性能提升。这些和其他模块可以控制或被配置为控制处理器920执行各种操作或动作。其他系统存储器930对于使用也是可用的。存储器930可以包括具有不同性能特性的多种不同类型的存储器。可以理解,本公开可以在具有多于一个处理器920的计算装置900上或在联网在一起的计算装置的组或群集上操作,以提供更大的处理能力。处理器920可以包括任何通用处理器和硬件模块或软件模块,诸如存储在储存装置960中的模块1962,模块2964和模块3966,其被配置为控制处理器920以及软件指令被并入处理器中的专用处理器。处理器920可以是包含多个核或处理器、总线、存储器控制器、高速缓存等的自给式计算系统。多核处理器可以是对称的或非对称的。处理器920可以包括多个处理器,诸如在不同插槽中具有多个物理上分开的处理器的系统,或者在单个物理芯片上具有多个处理器核的系统。相似地,处理器920可以包括位于多个分开的计算装置中但是诸如经由通信网络而一起工作的多个分布式处理器。多个处理器或处理器核可以共享诸如存储器930或高速缓存922的资源,或者可以使用独立资源来操作。处理器920可以包括状态机、专用集成电路(ASIC)或包括现场可编程门阵列的可编程门阵列(PGA)中的一个或多个。系统总线910可以是包括存储器总线或存储器控制器、外围总线以及使用各种总线架构中的任一种的本地总线的几种类型的总线结构中的任一种。存储在ROM940等中的基本输入/输出(BIOS)可以提供帮助在计算装置900内的元件之间传送信息(诸如在启动期间)的基本例程。计算装置900还包括储存装置960或计算机可读储存介质,诸如硬盘驱动器、磁盘驱动器、光盘驱动器、磁带驱动器、固态驱动器、RAM驱动器、可移动储存装置,廉价磁盘冗余阵列(RAID)、混合储存装置等。储存装置960可以包括用于控制处理器920的软件模块962、964、966。系统900可以包括其他硬件或软件模块。储存装置960通过驱动接口连接到系统总线910。驱动器和相关联的计算机可读储存装置为计算装置900提供计算机可读指令、数据结构、程序模块以及其他数据的非易失性储存。在一个方面,执行特定功能的硬件模块包括存储在与必要的硬件组件(诸如处理器920、总线910、显示器970等)连接的有形计算机可读储存装置中的用于实施特定功能的软件组件。在另一方面,系统可以使用处理器和计算机可读储存装置来存储指令,当指令被处理器执行时,使得处理器执行操作、方法或其他特定动作。可以取决于装置的类型(诸如装置900是小型装置、手持式计算装置、台式计算机还是计算机服务器)来修改基本组件以及恰当的变化。当处理器920执行指令以执行“操作”时,处理器920可以直接执行操作和/或促进、引导另一个装置或组件或者与另一个装置或组件合作来执行操作。尽管本文描述的示例性实施例采用硬盘960,但是也可以在示例性操作环境中使用可以存储可由计算机访问的数据的其他类型的计算机可读储存装置,诸如磁带盒、闪存卡、数字多功能盘(DVD)、卡盘、随机存取存储器(RAM)950、只读存储器(ROM)940、包含比特流的电缆等。有形计算机可读储存介质、计算机可读储存装置或计算机可读存储器装置明确地排除了诸如暂态波、能量、载波信号、电磁波和信号本身的介质。为了使能与计算装置900的用户交互,输入装置990表示任何数量的输入机构,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标,运动输入,语音等等。输出装置970还可以是本领域技术人员已知的许多输出机构中的一个或多个。在一些实例中,多模式系统使用户能够提供多种类型的输入以和计算装置900通信。通信接口980一般支配和管理用户输入和系统输出。对于在任何特定硬件布置上的操作没有限制,因此所描绘的基本硬件可以容易地被随着被开发而改进的硬件或固件布置替代。为了清楚说明,示例性系统实施例被呈现为包括单独的功能块,其包括被标记为“处理器”或处理器920的功能块。这些块表示的功能可以通过使用共享或专用的硬件来提供,硬件包括但不限于能够执行软件和硬件的硬件,诸如专用来作为在通用处理器上执行的软件的等同物来操作的处理器920。例如,图9中呈现的一个或多个处理器的功能可以由单个共享处理器或多个处理器提供。(术语“处理器”的使用不应该被领会为专有地指能够执行软件的硬件)。示例性实施例可以包括微处理器和/或数字信号处理器(DSP)硬件、用于存储执行以下描述的操作的软件的只读存储器(ROM)940,以及用于存储结果的随机存取存储器(RAM)950。还可以提供超大规模集成(VLSI)硬件实施例以及与通用DSP电路组合的定制VLSI电路。各种实施例的逻辑操作被实现为:(1)在通用计算机内的可编程电路上运行的计算机实现的步骤、操作或过程的序列;(2)在专用可编程电路上运行的计算机实现的步骤、操作或过程的序列;和/或(3)可编程电路内的互连机器模块或程序引擎。在图9中示出的系统900可以实践所叙述的方法的所有或部分,可以是所叙述的系统的一部分,和/或可以根据在所叙述的有形计算机可读储存装置中的指令进行操作。这种逻辑操作可以被实现为模块,其被配置为控制处理器920根据模块的编程来执行特定功能。例如,图9图示3个模块,即Mod1962、Mod2964和Mod3966,它们是被配置为控制处理器920的模块。这些模块可以被存储在储存装置960上并在运行时被加载到RAM950或存储器930中,或者可以被存储在其他计算机可读储存装置位置中。示例计算装置900的一个或多个部分,高达并包括整个计算装置900,可以被虚拟化。例如,虚拟处理器可以是软件对象,其根据特定指令集来执行,甚至在与虚拟处理器具有相同类型的物理处理器不可用时也如此。虚拟化层或虚拟“主机”可以通过将虚拟化操作转化为实际操作来使能一个或多个不同的计算装置或装置类型的虚拟组件。然而,最终每个类型的虚拟化硬件由一些底层的物理硬件实现或执行。因此,虚拟化计算层可以在物理计算层之上操作。虚拟化计算层可以包括虚拟机、覆盖网络、管理程序、虚拟交换机以及任何其他虚拟化应用中的一个或多个。处理器920可以包括本文所公开的所有类型的处理器,包括虚拟处理器。然而,当提及虚拟处理器时,处理器920包括与在虚拟化层中执行虚拟处理器相关联的软件组件,以及执行虚拟化层所需要的底层硬件。系统900可以包括接收存储在计算机可读储存装置中的指令的物理或虚拟处理器920,所述指令使得处理器920执行某些操作。当提及虚拟处理器920时,系统还包括执行虚拟处理器920的底层物理硬件。在本公开的范围内的实施例还可以包括用于携带或在其上存储计算机可执行指令或数据结构的有形和/或非暂时性计算机可读储存装置。这种有形计算机可读储存装置可以是可由通用或专用计算机访问的任何可用装置,包括如上所述的任何专用处理器的功能设计。作为示例,而非限制,这种有形计算机可读装置可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘储存装置、磁盘储存装置或其他磁储存装置,或者可以被用于以计算机可执行指令、数据结构或处理器芯片设计的形式来携带或存储期望的程序代码的任何其他装置。当经由网络或另一通信连接(或者硬连线、无线或者其组合)向计算机提供信息或指令时,计算机把该连接适当地视为计算机可读介质。因此,任何这种连接被适当地称为计算机可读介质。以上的组合也应当被包括在计算机可读储存装置的范围内。计算机可执行指令包括:例如使得通用计算机、专用计算机或专用处理装置执行某个功能或某组功能的指令和数据。计算机可执行指令还包括由在独立或网络环境中的计算机执行的程序模块。一般地,程序模块包括在执行特定任务或实现特定抽象数据类型的专用处理器等的设计中固有的例程、程序、组件、数据结构、对象和功能。计算机可执行指令、相关联的数据结构和程序模块表示用于执行本文公开的方法的步骤的程序代码装置的示例。这种可执行指令或相关联的数据结构的特定序列表示用于实现在这种步骤中描述的功能的相应动作的示例。本公开的其他实施例可以在具有许多类型的计算机系统配置(包括个人计算机、手持装置、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机等)的网络计算环境中实践。实施例还可以在分布式计算环境中实践,其中任务由通过通信网络链接(或者通过硬连线链路、无线链路或者通过其组合)的本地和远程处理装置来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器储存装置二者中。上述各种实施例仅以示例的方式被提供,而不应被领会为限制本公开的范围。例如,本文的原理一般适用于语音对话系统,并且可以用于其任何应用。可以在不用遵循本文所图示和描述的示例实施例和应用的情况下并且在不脱离本公开的精神和范围的情况下,对本文所描述的原理做出各种修改和改变。叙述了组的“至少一个”的权利要求语言指示该组的一个成员或该组的多个成员满足该权利要求。当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1