播种复制的制作方法

文档序号:6745522阅读:166来源:国知局
专利名称:播种复制的制作方法
播种复制 本申请要求于2007年4月19日提交的、题目为SEEDINGREPLICATION(播种复制) 的美国临时专利申请号60/925, 624(代理人文案号DD0MP022+)的优先权,为了所有目的在 此将其引入以供参考。
背景技术
副本系统(r印lica system)存储与源系统(originating system)相同的数据或 相同的数据的一部分。副本系统可以被用于当在源系统中的数据损坏或丢失时恢复数据。 为了高效存储,副本系统和源系统都可以是重复删除系统(deduplicating system),在该 重复删除系统中,进入数据被分成段,并且如果该段已经存储在该系统中,则存储对该已存 储段的引用,而不是再次存储该段。重复删除典型地在该系统存储数据所需要的空间量上 导致了相当大的(例如,10X)减少。 当首先开始从一个系统到另一个的复制时,如果副本是存储与源系统相同的数据 的全部,那么任务是明确的从头至尾传输所有的数据。由于仅使得文件重建能够实现的引 用和被重复删除的段需要被发送,所以对于重复删除系统来说这是高效的。然而,如果副本 是只存储起源者系统(originator system)上数据的一部分,那么所存储的段中的哪些需 要被发送给副本就不是显而易见的。 一种简单的解决方案是匆匆查阅针对要被存储在副本 上的那部分数据的段的引用列表,并且询问副本系统涉及的段是否已经被存储。如果该段 还未存储到副本系统上,于是该段才会被传送。然而,对于列表中的每个引用而言这需要来 回流量(traffic),以及对于段的每个引用而言这需要由副本系统来检查。通过重复删除, 可能有比实际数据段多很多倍的这样的引用。能够在不产生流量和检查段的每个引用的情 况下,对存储在重复删除的系统中的部分数据进行种子复制会是有益的。
当将存储在一个重复删除的系统上的部分数据一次性拷贝到第二重复删除的系 统上时存在相似的情形。正被拷贝的那部分数据所引用的所有段都需要被发送到该第二系 统。然而,如上所述,检查每个引用以看看相应的段是否要被发送到第二系统,对于需要检 查的每个引用引用而言这会在这两个系统之间产生相当大的流量。能够在不产生流量和检 查段的每个引用的情况下将存储在重复删除的系统上的部分数据进行拷贝会是有益的。


在以下的详细说明和附图中公开了本发明的各种实施例。 图1是图示用于播种复制的系统的实施例的框图。 图2A是图示一部分数据流或数据块的实施例的框图。 图2B是图示对一部分数据流或数据块进行分段的实施例的框图。 图3是图示文件引用的实施例的框图。 图4A是图示数据结构的实施例的框图。 图4B是图示数据结构的实施例的框图。 图4C是图示数据结构的实施例的框图。
图5是图示用于播种复制的过程的实施例的流程图。 图6是图示用于确定引用的段的过程的实施例的流程图。 图7A是图示用于向数据结构中进行添加的过程的实施例的流程图。 图7B是图示用于向数据结构中进行添加的过程的实施例的流程图。 图7C是图示用于向数据结构中进行添加的过程的实施例的流程图。 图8A是图示用于对段进行复制的过程的实施例的流程图。 图8B是图示用于对段进行复制的过程的实施例的流程图。
具体实施例方式
本发明能够以众多种方式予以实现,包括实现为过程、设备、系统、物质的组成、诸 如计算机可读存储介质之类的计算机可读介质或者计算机网络,其中程序指令在光或通信 链路上被发送。在此说明书中,这些实现方式,或者本发明可以采取的任何其他形式,可以 被称为技术。诸如处理器或存储器之类的被描述为配置成执行任务的元件,包括在给定时 间临时被配置为执行该任务的通用元件或者被制造成执行该任务的特定元件这两者。总的 来说,在本发明的范围之内,可以改变所公开的过程中步骤的次序。 下面连同图示本发明原理的附图提供了对本发明的一个或多个实施例的详细描 述。本发明是结合这样的实施例予以描述的,但不限于任何实施例。本发明的范围仅由权 利要求限定且本发明包括众多可替换例、修改和等价物。为了提供对本发明的透彻理解,在 下面的描述中阐述了众多特定细节。提供这些细节是出于举例的目的,并且本发明在没有 这些特定细节中的一些或者全部的情况下可以根据权利要求予以实践。为清楚起见,对在 本发明有关技术领域中已知的技术资料未进行详细的描述,以便本发明不会被不必要地混 淆。 公开了播种复制。在重复删除的系统中,针对源系统上共享公共段池的数据的一 部分的播种复制,要求确定使得这部分数据的重建得以实现的所引用的段。可以生成包含 关于被引用段的信息的列表或数据结构。对于起源者系统上所存储的唯一段而言,可以使 用该列表或数据结构对每个进行检查以看看是否该段已经被该部分数据引用。如果该段已 经被引用,则将该段发送到副本系统。这允许源系统和副本系统之间来回的通信被减少到 段级而不是引用级。再者,就数据结构来说,对存储器的高效使用是可能的,这是因为向量 (vector)大大小于唯一的被引用段的列表。另外,在未与该副本系统进行任何通信的情况 下在起源者系统上生成该列表或数据结构,从而节省了起源者系统和副本系统之间的通信 带宽。 在一些实施例中,多个文件将涉及相同的存储段,这是因为在这些不同的文件中 的段的内容是相同的。这与在相同系统中存储了相同文件的多个版本的情况(例如,当在 一个系统上存储了系统的多个快照时)形成对比,其中该相同文件的多个版本中的每一个 涉及相同段。文件可以实现文件系统中的文件、逻辑块设备、虚拟磁带盒、数据库表,或者数 据存储系统可以存储的任何其它种类的数据对象或这样的数据对象的一部分。
图1是图示用于播种复制的系统的实施例的框图。在所示的实例中,存储系统100 为图1中由客户端112和客户端108所表示的客户端存储数据。客户端除本地存储器外还 可以具有本地存储设备。例如,客户端108具有存储110,而客户端112不具有本地存储设备。存储系统100或者使用内部存储设备102或者使用附连的外部存储设备104来存储数 据。 存储系统100经由网络106与客户端通信。网络106包括下述中的一个或多个 局域网、广域网、有线网络、无线网络、因特网、光纤网络,或能够实现通信的任何其他适当 网络。存储系统100也经由网络106与副本系统120通信。副本系统120包含内部存储设 备122,并连接到外部存储设备124。 副本系统120存储在存储系统100上所存储的数据的全部或者一部分。最初,存 储系统100上所存储的数据的全部或一部分通过经由网络106发送适当的数据而被复制到 副本系统120上。在最初的播种之后,副本系统120通过从存储系统100发送新的数据而 被更新。更新可以是持续的,,当数据量超过一定大小时,或在其他适当的时间时,定期一阵 (in bursts)发送。就数据拷贝来说,最初的播种完成了该任务并且没有后续更新。
在各种实施例中,存储设备102,104,122和124包括单个存储设备、多个存储设 备、诸如图书馆系统或者网络附连的存储系统之类的用于存储的系统或者任何其它适当的 存储设备或者系统,所述单个存储设备诸如硬盘、磁带机、半导体存储器,所述多个存储设 备诸如冗余阵列系统(例如独立磁盘冗余阵列(redundant array of ind印endent disk, RAID))。 图2A是图示数据流或数据块的一部分的实施例的框图。在所示的实例中,示出了 数据流或数据块的一部分200。数据流或数据块的一部分200被诸如图1的存储系统100 之类的存储系统接收并存储在其上。数据流或数据块的一部分200是从诸如图1的客户端 108或112之类的一个或者多个客户端发送的。
图2B是图示对数据流或数据块的一部分进行分段的实施例的框图。在所示的实 例中,数据流或数据块的该部分被分段成多个分段,在图2B中由202,204和206表示。通 过从该数据流或数据块创建可以被用于重建该数据流或数据块的多个段而对该数据流或 数据块进行分段。当段被用于重建该数据流或数据块时,段可以是重叠的、非重叠的或者是 重叠和非重叠的组合。使用文件边界、目录边界、字节计数、基于内容的边界(例如,当窗口 中数据的哈希值等于一值时)或确定边界的任何其他适当方法可以确定段边界。数据块、 数据流、文件或目录的重建包括使用原始构成该该数据块、数据流、文件或目录的一个或者 多个段的引用。诸如202、204和206之类的段被存储在存储设备210中,例如,像分别存储 的段212、214和216。 图3是图示文件引用的实施例的框图。在一些实施例中,文件引用可被用来从存 储在诸如存储设备210之类的存储设备中的段重建文件。如所示的实例中,文件300可以 使用段引用302、304、306和308予以重建。文件310可以使用段引用312、314、316和318 予以重建。存储偏移量以使得在存在重叠或者在文件的重建中仅段引用的一部分被使用的 情况下使用段引用能够实现文件的重建。对于数据块、数据流、目录或使得使用所存储的段 能够实现它们的重建的任何其他数据单元而言,可以使用相似的引用结构。在各种实施例 中,段引用包含基于内容的引用、非基于内容的引用、指纹或段的任何其他适当的引用。
图4A是图示数据结构的实施例的框图。在一些实施例中,图4的数据结构被 用于指示是否段被引用以确定该段是否应当被复制。在所示的实例中,数据结构400包 含由401、402、404、406、408和410所表示的多个比特位。所述比特位被初始化为"0"。对于被引用的段,计算该段引用的多个哈希-例如,在图4A中,该段引用的多个哈希由 Hash (SegRef) 412,414, 416和418来表示。哈希的值用于指向数据结构400中的比特位。 所指向的比特位变为"l"。为了检查段是否被指示要复制,计算对该段的引用的相同哈希, 并且如果所述哈希所指向的所有比特位都已经被设为"l",那么假定该段要被引用并且因 此应当被复制。在一些情况下,段可能看起来要被引用,这是因为所有比特位都已经被设为 "1",即使对该段的引用未被指示也是如此。当所指示的其他段的组合碰巧将所有位都设为 "1 "时,这样的冲突就会出现。选择数据结构的长度和哈希函数的数目来平衡数据结构所需 的空间、哈希函数所需的计算量和对于段的数据结构中可容忍的冲突数目。想要的是数据 结构400能够相当精确地指示给定分段是否已经被引用,以使几乎没有不需要复制的段被 复制。在各种实施例中,数据结构400包括布隆(Bloom)过滤器或类似的基于哈希的数据 结构。 图4B是图示数据结构的实施例的框图。在所示的实例中,数据结构420可以用于 确定对段的不精确引用的列表。多个縮短的引用在图4B中由422和424表示。縮短的引 用422是从段引用430创建的并置于数据结构420中。縮短的引用424是从段引用432创 建的并置于数据结构420中。例如,縮短的指纹,诸如m(例如24)字节段引用中的n(例如 4)字节,可被用作不精确引用,其中m小于n。具有与该数据结构的任何縮短的指纹的n个 字节相匹配的具有引用的段被加入到要从起源者系统发送到副本系统的段列表中。n字节 匹配的使用确保了必要的段被复制。可能存在一些附加段也被传输。另一方面,与全部(例 如24字节)比较相对照,使用縮短的比较(例如4字节)减少了存储器空间。
图4C是图示数据结构的实施例的框图。在所示的实例中,数据结构440可以用于 确定对段的精确引用的列表。在图4C中由442和444来表示多个引用。引用442从段引 用450创建,并被置于数据结构440中。引用444从段引用452创建并置于数据结构440 中。精确的段引用的数据结构可被用于在副本中进行播种复制的过程中。
图5是图示用于播种复制的过程的实施例的流程图。在一些实施例中,图5的过 程被用于对诸如图1的副本系统120之类的副本系统进行播种。在一些实施例中,图5的 过程被用于从一个系统向另一系统拷贝数据集。在所示的示例中,在500中,选择要复制 的(一个或者多个)文件。在各种实施例中,通过下述来选择(一个或者多个)文件使 用图形用户界面中对一个或多个文件的选择、使用文件列表、通过在窗口中点击、通过选择 目录、通过选择多个目录、使用目录列表或者选择文件的任何其他适当方法。在各种实施例 中,为了负载平衡、满足服务目标的质量或其他原因可以由系统自动确定(一个或者多个) 文件。在各种实施例中,要传输的文件可以实现逻辑块设备、虚拟磁带机或其他类型的数据 集或这样的数据集的各部分。在502中,对所选文件的文件元数据和段引用进行复制,并且 将段引用加入到用于指示至少所确定段要被复制的数据结构中。在一些实施例中,比那些 用于(一个或多个)所选定文件的重建所必须的段更多的段被指示为要复制。在506中, 选择存储在重复删除系统上的第一候选段。在508中,确定数据结构是否指示所选候选段 要被复制。如果所选候选段要被复制,则在510中,复制所选候选段并且控制行进到512, 如果不是,则控制行进到512。在512中,确定是否存在更多的候选段。如果存在,则在514 中,选择下一个候选段,并且控制行进到508。在一些实施例中,为了高效访问,当可能时, 在514中选择的下一个候选段是存储(例如,在重复删除存储系统中)的与先前段极接近的一个段。在512中,如果没有更多的段了,则过程结束。在一些实施例中,存储在重复删 除存储系统中的每个段都是用于复制的候选段。在一些实施例中,候选段基本上以他们在 重复删除存储系统中所处位置的次序被处理的。这可以通过减少访问段所花费的时间来获 得效率(例如,成批地存取段或在下一个段存取之前不要求大量探求(seek))。
图6是图示用于确定被引用段的过程的实施例的流程图。在一些实施例中,图6 的过程被用于实现图5中的502。在所示的实例中,在600中,选择第一文件。在601中,复 制所选文件的元数据(例如,文件名,文件大小,文件创建日期等)。在602中,选择所选文 件的第一引用。在604中,复制该引用。在606中,将段引用添加到用于指示至少确定的段 要复制的数据结构中。在608中,确定是否存在更多的引用,如果有,则在610中,选择下一 个引用并将控制行进到604,如果没有,则在612中,确定是否还有更多文件。如果有,则在 614,选择下一个文件并将控制行进到602。如果没有则过程结束。 图7A是图示用于向数据结构中进行添加的过程的实施例的流程图。在一些实施 例中,图7A的过程被用于实现图6中的606。在所示的实例中,在700中,确定是否所选引 用所涉及的段已经在精确列表中。如果已经存在,则过程结束。如果还没有,则在702中,将 该段添加到该精确列表中。该精确列表包含对段的明确引用的列表。例如,段指纹或其他 类型的引用的列表。在各种实施例中,以下述方式生成该列表消除或不消除在该列表中出 现的重复段,和/或在当在起源者存储系统上存储原文件时的时间或以后需要的时间。在 一些实施例中,该列表是按段引用来分类的。在一些实施例中,该列表是按存储位置来分类 的。 图7B是图示用于向数据结构进行添加的过程的实施例的流程图。在一些实施例 中,图7B的过程被用于实现图6的606。在所示的实例中,在710中,计算所选引用的多个 哈希。在712中,如果适当,使用多个哈希中的每一个来改变数据结构。如果该位已经被改 变(例如,设为"l"),则不改变该位。在一些实施例中,哈希值被用于确定数据结构中的比 特位设为值"l"。数据结构可用于确定段是否被引用。 图7C是图示用于向数据结构进行添加的过程的实施例的流程图。在一些实施例 中,图7C的过程被用于实现图6的606。在所示的实例中,在720中,创建縮短的引用。在 722中,将该縮短的引用添加到该数据结构中。在一些实施例中,该数据结构是縮短的引用 的长列表。该数据结构可用于确定段是否可能被引用了。 在一些实施例中,该数据结构包括如图6的过程所生成的要复制的段的列表。
图8A是图示用于复制段的过程的实施例的流程图。在一些实施例中,图8A的过程 被用于实现图5的510。在所示的实例中,在800中,向副本系统发送段。在这个例子中,操 作假设是该副本系统还未具有该段的拷贝,和该段成功到达该副本系统。在一些实施例中, 接收到确认,该确认指示已经收到该段和/或已经将该段存储在该副本系统上(未示出)。
图8B是图示用于复制段的过程的实施例的流程图。在一些实施例中,图8B的过程 被用于实现图5的510。在所示的实例中,在810中,向副本系统发送段标识器。在812中, 接收该段是否被存储在副本系统上的指示。在814中,确定是否该指示指示了该段被存储 在该副本系统上。如果是,则过程结束。如果不是,则在816中,将该段发送给该副本系统。 在一些实施例中,接收到确认,其指示该段已经被接收和/或已经存储在副本系统上(未示 出)。
8
虽然为了清楚理解的目的,前述实施例已经描述了一些细节,但本发明不限于所 提供的细节。存在很多实现本发明的可替换方法。所公开的实施例是举例说明性的而非限 制性的。
权利要求
一种播种复制的方法,包括选择存储在重复删除的存储系统上要复制的一个或多个而非所有文件;确定由所选择的一个或多个而非所有文件所涉及的一个或多个段;创建被用于指示至少所述一个或多个段是要被复制的数据结构;以及如果至少部分地基于所述数据结构的指示指示了存储在所述重复删除存储系统上的候选段是要复制的,则复制所述候选段。
2. 如权利要求1所述的方法,其中,使用基于内容的引用来涉及所述一个或多个段。
3. 如权利要求1所述的方法,其中,使用非基于内容的引用来涉及所述一个或多个段。
4. 如权利要求1所述的方法,其中,使用指纹来涉及所述一个或多个段。
5. 如权利要求1所述的方法,其中,所述数据结构包括段的精确列表。
6. 如权利要求5所述的方法,其中,对段的所述精确列表进行重复删除。
7. 如权利要求5所述的方法,其中,对段的所述精确列表进行分类。
8. 如权利要求1所述的方法,其中,所述数据结构包括概率数据结构。
9. 如权利要求8所述的方法,其中,所述概率数据结构包括段的不精确列表。
10. 如权利要求8所述的方法,其中,所述概率数据结构包括布隆过滤器。
11. 如权利要求8所述的方法,其中,所述概率数据结构指示段一定没被所选择的一个 或多个而非所有文件引用。
12. 如权利要求8所述的方法,其中,所述概率数据结构指示段可能被所选择的一个或 多个而非所有文件引用。
13. 如权利要求1所述的方法,其中,创建所述数据结构包括使用哈希函数。
14. 如权利要求1所述的方法,其中,所述数据结构如段被存储在所述重复删除存储系 统上那样被构建。
15. 如权利要求1所述的方法,其中,所述数据结构响应于播种副本系统的请求而被构建。
16. 如权利要求1所述的方法,其中,复制所述候选段包括将所述段发送给副本系统。
17. 如权利要求1所述的方法,其中,复制所述候选段包括接收所述段被收到或被存储 在副本系统上的确认。
18. 如权利要求1所述的方法,其中,复制所述候选段包括向副本系统发送引用以看看 所述引用所涉及的段是否已存储在所述副本系统上。
19. 如权利要求1所述的方法,其中,复制所述候选段包括如果所述段被指示为还未被 存储在副本系统则发送所述段。
20. 如权利要求1所述的方法,还包括复制由所述一个或多个而非所有文件的一个或 多个引用。
21. 如权利要求20所述的方法,其中,可以至少部分地基于所述一个或多个引用,重建 所述一个或多个而非所有文件。
22. 如权利要求1所述的方法,其中,存储在所述重复删除存储系统中的每个段都是用 于复制的候选。
23. 如权利要求1所述的方法,还包括以次序处理候选段使得所处理的至少两连续段 极接近地存储在所述重复删除存储系统中。
24. 如权利要求1所述的方法,还包括基本上以所述候选段在所述重复删除存储系统 中的位置的次序处理所述候选段。
25. —种用于播种复制的计算机程序产品,所述计算机程序产品被包括在计算机可读 介质中,并且包括用于下述的计算机指令选择存储在重复删除的存储系统上要复制的一个或多个而非所有文件; 确定由所选择的一个或多个而非所有文件所涉及的一个或多个段; 创建用于指示至少所述一个或多个段要被复制的数据结构;如果至少部分地基于所述数据结构的指示指示了存储在所述重复删除存储系统上的 候选段要复制,则复制所述候选段。
26. —种用于播种复制的系统,包括 处理器;以及与所述处理器耦合的存储器,其中,所述存储器被配置为向所述处理器提供指令,当所 述指令执行时促使所述处理器选择存储在重复删除的存储系统上要复制的一个或多个而非所有文件; 确定由所选择的一个或多个而非所有文件所涉及的一个或多个段; 创建用于指示至少所述一个或多个段要被复制的数据结构;如果至少部分地基于所述数据结构的指示指示了存储在所述重复删除存储系统上的 候选段要被复制,则复制所述候选段。
全文摘要
本发明公开了一种播种复制方法。选择存储在重复删除的存储系统上要被复制的一个或多个而非所有文件。确定由所选择的一个或多个而非所有文件所涉及的一个或多个段。创建用于指示至少所述一个或多个段要被复制的数据结构。如果至少部分地基于所述数据结构的指示指示了存储在所述重复删除存储系统上的候选段要被复制,则复制所述候选段。
文档编号G11C7/10GK101707884SQ200880012226
公开日2010年5月12日 申请日期2008年4月9日 优先权日2007年4月19日
发明者R·H·帕特森 申请人:数据域公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1