首页> 中国专利> 数据系统中的接收器侧数据重复删除

数据系统中的接收器侧数据重复删除

摘要

本发明提供用于在接收器处接收来自发送器的上载数据的方法和装置。描述了可减少在从发送器向接收器上载数据时使用的带宽的数据重复删除技术。在该技术中,接收器而不是发送器维持用于先前上载的数据的指纹字典。当发送器具有要被上载的附加的数据时,发送器提取用于数据单位的指纹并将指纹发送给接收器。接收器检查其指纹字典,以确定要被上载的数据单位并且向发送器通知标识的单位,该发送器然后将标识的数据单位发送给接收器。该技术可例如被应用于虚拟化数据存储系统,以减少在上载数据时使用的带宽。

著录项

  • 公开/公告号CN103547991A

    专利类型发明专利

  • 公开/公告日2014-01-29

    原文格式PDF

  • 申请/专利权人 亚马逊科技公司;

    申请/专利号CN201180063651.X

  • 发明设计人 J·C·索伦森三世;

    申请日2011-12-21

  • 分类号G06F7/00(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人边海梅

  • 地址 美国内华达

  • 入库时间 2024-02-19 22:31:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-17

    授权

    授权

  • 2014-03-12

    实质审查的生效 IPC(主分类):G06F7/00 申请日:20111221

    实质审查的生效

  • 2014-01-29

    公开

    公开

说明书

背景技术

在许多数据系统中,广义上说,发送器(数据源)通过通信信道 将数据上载到接收器(数据处理器)。这种系统的例子是数据存储系 统;但是,这些数据系统可包含接收器以某种方式处理从发送器上载 的数据的任何系统。上载和处理的数据可包含但不限于任何类型的文 本、图形或图像数据、音频数据(例如,音乐和声音数据)、视频数 据和压缩和/或加密数据等。在许多这种系统中,可能需要通过通信信 道从发送器向接收器上载大量的数据。但是,通信信道一般具有宽带 限制,而这种数据系统的目标是,得到跨通信信道到接收器的尽可能 多的可用数据。

数据重复删除指的是用于减少或消除这种系统中的冗余数据,以 例如提高数据存储系统中的存储利用并且/或者减少通信信道上的带 宽使用的技术。作为例子,在应用于数据存储系统的至少一些数据重 复删除技术中,可以防止复制数据存储到数据存储。为了实现这一点, 已驻留于数据存储中的数据的单位和/或没有驻留于数据存储中的数 据的单位可被标识,并且,只有没有驻留于数据存储中的单位在数据 存储中被存储或者被更新。本申请中的数据重复删除可由此减少需要 的存储容量,原因是数据的特定的单位的更少或者仅仅一个副本被保 持。

一种用于数据系统中的数据重复删除的技术是使发送器在接收器 处上载要被处理(例如,存储于数据存储系统中)的所有数据,并且 使接收器标识要被处理的数据的单位。但是,该技术不减少发送器与 接收器之间的带宽使用。

可减少带宽使用的数据重复删除的常规技术是使发送器标识要被 上载到接收器的数据的单位;只有标识的数据的单位从发送器被上载 到接收器。图1示出发送器(数据源)标识数据的单位并将其上载到 接收器(例如,数据存储系统)的常规的重复删除技术。在该常规的 重复删除技术中,发送器20维持数据22和本地存储的指纹24。本地 存储的指纹24可唯一地标识已被上载到数据存储12的数据22的单 位。指纹24可例如是数据22的单位的散列。在基于块的数据系统(例 如,块存储系统)中,数据的单位可以例如为数据块的256k字节部分、 数据块的1024k字节部分或数据块的一些其它的固定或可变尺寸部 分。在基于文件的系统中,数据的单位可以是文件或文件的与基于块 的数据系统中的部分类似的部分。当发送器20具有要被上载到接收器 10的数据22时,发送器20处的数据上载管理器26可提取要被上载 的数据22的单位的指纹,并将提取的指纹与本地存储指纹24相比较, 以标识没有被上载到接收器10(或者以前被上载但已在本地被修改) 的数据的一个或更多个单位。数据上载管理器26然后可将标识的数据 单位上载到接收器10,该接收器10例如通过将数据单位存储到数据 存储而处理12数据单位。

虽然该技术可减少在从发送器20向接收器10上载数据时使用的 带宽,但是,该技术要求发送器20维持指纹24的字典。在许多这种 系统中,在本地维持于发送器20处的数据22的本地存储或高速缓存 可包含数以千兆字节或兆兆字节计数的数据。因此,可由发送器20 维持的指纹24的字典会相当大。另外,在一些系统中,接收器10可 为多个发送器20服务,并且,在这些系统中,难以在全局上应用重复 删除(例如,以对于两个或更多个数据源跨由接收器10存储的数据一 致地应用重复删除)。

附图说明

图1示出发送器(数据源)标识数据的单位并将其上载到接收器 (例如,数据存储系统)的常规的重复删除技术。

图2A~2D是示出根据至少一些实施例的在包含发送器(数据源) 和接收器(数据存储系统)的数据系统中实现的数据重复删除技术的 框图。

图3A是根据至少一些实施例的虚拟化数据存储系统的高级框图。

图3B是根据至少一些实施例的包含用作虚拟化数据存储顾客和 虚拟化数据存储服务之间的接口的虚拟化数据存储顾客站点处的虚拟 化数据存储网关的虚拟化数据存储系统的框图。

图3C是根据至少一些实施例的向虚拟化服务提供者的顾客提供 虚拟化数据存储服务和硬件虚拟化服务的虚拟化服务的框图。

图4A~4F是示出根据至少一些实施例的在包含虚拟化数据存储 顾客处的虚拟化数据存储网关的虚拟化数据存储系统中实现的数据重 复删除技术的框图。

图5是根据至少一些实施例的用于初始化虚拟化数据存储网关的 方法的流程图。

图6是根据至少一些实施例的在包含虚拟化数据存储网关的虚拟 化数据存储系统中实现的数据重复删除技术的流程图。

图7是示出可在一些实施例中使用的示例计算机系统的框图。

虽然这里作为例子对于几个实施例和示出的附图描述实施例,但 本领域技术人员可以理解,实施例不限于描述的实施例或附图。应当 注意,附图及其详细的描述不是要将实施例限于公开的特定的形式, 相反,是要覆盖落入由所附的权利要求限定的精神和范围内的所有修 改、等同和替代方案。这里使用的标题仅是出于组织的目的,而不意 味着用于限制说明书或权利要求的范围。如在本申请中使用的那样, 以允许的意义(即,意味着具有可能性)而不是强制的意义(即,意 味着必须)使用词语“可以”。类似地,词语“包含”、“包括”和 “含有”意味着包括但不限于。

具体实施方式

描述了用于接收器侧数据重复删除的方法和装置的各种实施例。 描述了可例如被应用于虚拟化数据存储系统以在与常规的数据重复删 除技术相比时减少发送器与接收器之间的通信信道上的带宽使用的数 据重复删除技术的实施例。在数据重复删除技术的实施例中,不是发 送器维持指纹字典并确定要被载到接收器的数据单位,而是接收器维 持指纹字典。当发送器具有要被上载的数据时,发送器提取用于数据 的指纹并将指纹发送给接收器。接收器检查其指纹字典以确定要被上 载到接收器的数据单位并且通知发送器,该发送器然后将标识的数据 的单位发送给接收器。由于只有不存在于数据存储中的单位被上载, 因此,数据重复删除技术的实施例由此减少在从发送器向接收器上载 数据时使用的带宽。另外,实施例不需要发送器维持大的指纹字典并 使数据重复删除集中于接收器处,由此允许跨对于多个数据源存储的 数据应用数据重复删除。可进行这样一种小的权衡,即,由于该技术 需要发送器与接收器之间的通信的额外的轮次,因此,上载处理中的 延时会增加;但是,延时一般不是上载处理中的主要问题。

虽然在这里一般在数据存储系统应用中描述数据重复删除技术的 实施例,但是,数据重复删除技术可被应用于接收器接收从发送器上 载的数据的任何系统。上载和处理的数据可包含但不限于任何类型的 文本、图形或图像数据、音频数据(例如,音乐和声音数据)、视频 数据和压缩和/或加密数据等。另外,虽然在这里一般关于远程定位并 通过诸如因特网的有线和/或无线网络通信的发送器和接收器描述实 施例,但是,也可在发送器和接收器是例如通过有线或无线局域网络 或直接链接通信的局域装置的应用以及发送器和接收器是通过诸如数 据总线的内部通信信道、直接数据链接、共享存储器传送或无线通信 信道通信的单个装置或系统内的硬件和/或软件部件的应用中应用数 据重复删除技术。

图2A~2D是示出根据至少一些实施例的在包含发送器(数据源) 和接收器(例如,数据存储系统)的数据系统中实现的数据重复删除 技术的框图。参照图2A,接收器110可根据数据处理112技术或功能 处理数据。例如,接收器110可在数据存储中存储数据。图2A表示 单个发送器120;但是,可存在多于一个的发送器120。发送器120 可例如与诸如服务器的单个系统、诸如服务器群的系统的集合或数据 中心对应,但是,一般地,发送器120可与可将数据上载到接收器110 的任何装置或系统对应。接收器110可实现接收器数据上载管理器 114。可通过硬件、软件或它们的组合实现接收器数据上载管理器114。 接收器数据上载管理器114可提供例如网络服务接口或API的接口, 通过该接口,发送器120可访问由接收器110提供的功能。

接收器数据上载管理器114可在指纹字典130中存储和管理用于 数据、例如用于存储于数据存储中的数据的指纹132。在至少一些实 施例中,指纹132可以是数据的单位的散列。在基于块的数据系统(也 称为块存储系统)中,数据的单位可以例如为数据块的256k字节部分、 数据块的1024k字节部分或数据块的一些其它的固定或可变尺寸部 分。在基于文件的系统中,数据的单位可以是文件或文件的与基于块 的数据系统中的部分类似的部分。在至少一个实施例中,指纹132可 以是任意类型的加密性强的单向散列函数,例如,安全散列算法(SHA) -256散列函数。使用加密性强的单向散列函数提供安全性,并且帮助 避免冲突,使用这种散列函数的冲突是很不可能出现的。冲突是两个 数据的单位产生相同的指纹。

指纹字典130可驻留于单个系统上,或者可跨两个或更多个系统、 例如跨两个服务器系统分布。在一些实施例中,指纹字典130可实现 和维持为跨两个或更多个服务器展开的一致散列字典。在至少一些实 施例中,指纹字典130可以是固定尺寸字典。

在至少一些实施例中,接收器数据上载管理器114可在单个指纹 字典130中维持用于多个顾客的指纹132。顾客是特定的数据集的“所 有人”,并且可以是个人、企业或企业内的部门、工段、办公室或其 它的实体。在一些实施例中,各顾客可被分配唯一顾客标识符,该唯 一顾客标识符可附加到用于相应的顾客的数据的指纹132上或者另外 与其相关联。作为替代方案,接收器数据上载管理器114可对于各顾 客维持单独的指纹字典130。

发送器数据上载管理器126可用作发送器120与接收器数据上载 管理器114之间的接口。可通过硬件、软件或它们的组合实现发送器 数据上载管理器126。由于可能需要在发送器数据上载管理器126与 接收器数据上载管理器114之间跨网络(例如,因特网)传送大量的 数据,因此,发送器数据上载管理器126与接收器数据上载管理器114 之间的通信信道可以是相对高带宽连接或者通信信道。

发送器120可以在本地高速缓存、存储或者获得至少一些数据, 而接收器110可以是数据的主存储或目的地。例如,为了改善用于用 户的数据存取时间,不是按需从由接收器110维持的数据存储检索数 据,而是可在发送器120处作为本地数据122在本地高速缓存或存储 大的数据块或块体、甚至数据的整个卷。发送器120可包含上面可高 速缓存或存储本地数据122的物理数据存储和/或存储器。但是,由接 收器110维持的数据存储可用作用于顾客的主数据存储;因此,发送 器数据上载管理器126与接收器数据上载管理器114通信,以周期性 地、非周期性地或者连续地将本地数据122中的新数据或修改的数据 上载到数据存储。

虽然可以使用更大或更小的块尺寸,但是,在至少一个实施例中, 发送器数据上载管理器126可在例如为4兆字节块或10兆字节块的相 对较大的块中维持本地数据122。当数据的块140被用户或处理访问 以例如创建新的数据或者修改现有的数据时,块可被标为“脏”。但 是,访问可能仅改变块的小部分。因此,如图2A所示,发送器数据 上载管理器126可例如通过向各单位应用散列函数产生用于脏块140 的单位的指纹124。在基于块的数据系统(例如,块存储系统)中, 数据的单位可以例如为数据块的256k字节部分、数据块的1024k字 节部分或数据块的一些其它的固定或可变尺寸部分。(在基于文件的 系统中,数据的单位可以是文件或文件的与基于块的数据系统中的部 分类似的部分。)如图2A所示,发送器数据上载管理器126可向接 收器数据上载管理器114发送对于脏块140产生的指纹124。

在图2B中,针对与从发送器数据上载管理器126接收的指纹124 的匹配,接收器数据上载管理器114可搜索指纹字典130。可根据由 接收器数据上载管理器114实现或访问的搜索功能执行搜索;本领域 技术人员可以理解,可以使用各种搜索技术中的任一种。如上所述, 在一些实施例中,可以使用用于相应的顾客的唯一标识符,以通过搜 索相应的顾客特有的指纹字典或者通过对于由唯一标识符指示为属于 相应的顾客的指纹搜索所有顾客共用的指纹字典来从其它顾客的指纹 区分这些指纹124,从而避免冲突。在指纹字典130中找到的指纹124 不需要被上载,原因是在字典130中存在它们指示在接收器110处存 在对应的数据的单位(例如,数据的单位存储于数据存储中)。没有 在指纹字典130中找到的指纹124需要被上载,原因在字典130中不 存在它们指示在接收器110处不存在对应的数据的单位(例如,数据 的单位不存储于数据存储中)或者对应的数据的单位在发送器120处 已改变并且需要被替代或者更新。

注意,如果针对其产生指纹124的数据的整个块是新创建的数据 块,那么情况可能是在指纹字典130中找不到任何指纹124,因此, 所有的对应的单位需要被上载到接收器110。但是,如果在用于顾客 的其它事先上载的块中存在相同的数据的单位,那么可能在指纹字典 130中找到指纹124中的一些或者全部,因此,对应的单位中的至少 一些可能不需要被上载到接收器110。换句话说,例如,在数据存储 中,两个或更多个数据的块可共享接收器110处的至少一些共用的单 位。

在图2C所示的例子中,指纹124C被标识为与需要被上载的数据 的单位对应(即,指纹124C不位于指纹字典130中)。接收器数据 上载管理器114可然后向发送器数据上载管理器126发送与指纹124C 对应的数据单位(即,数据单位142C)的数据单位标识符。在一些实 施例中,数据单位标识符可以是相应的指纹,在本例子中是指纹124C。 可以使用其它的方法以标识需要被上载的数据单位;例如,在一些实 施例中,可以使用块号码/单位号码索引方案,以标识需要被上载的数 据单位,或者,可以使用“位图”中的一个或更多个位被设定以指示 需要被上载的数据单位或不需要被上载的数据单位的位场方案。在一 些实施例中,通过接收器数据上载管理器114发送给发送器数据上载 管理器126的数据单位标识符可指示不需要被上载的数据单位而不是 需要被上载的数据单位。在一些实施例中,为了减少带宽使用,接收 器数据上载管理器114可根据不需要被上载的数据单位的集合或需要 被上载的数据单位的集合中的哪个最小发送指示任意的这些集合的数 据单位标识符。可以例如在标题中包含指示发送给发送器数据上载管 理器126的标识符是用于需要还是不需要被上载的数据单位的信息。

在图2D中,标识的数据单位142C通过发送器数据上载管理器 126被上载到接收器数据上载管理器114。注意,只有来自脏块的标识 的数据单位被上载;整个块不被上载,除非是块的所有数据单位通过 接收器数据上载管理器114被标识为需要被上载的情况。图2D表示 接收上载的数据单位并将接收的数据单位转送到数据处理112功能以 供进一步的处理的接收器数据上载管理器114的上载操作或处理150。 例如,在数据存储系统中,数据处理112功能可将上载的数据单位 142C存储到数据存储。在数据存储系统中,数据处理112功能可在数 据存储中添加更新的数据单位作为新的数据单位,或者可用上载的数 据单位替代或者更新数据存储中的现有的数据单位。

在一些实施例中,标识的数据单位可在将数据单位上载到接收器 数据上载管理器114之前被发送器数据上载管理器126压缩,以进一 步减少通信信道上的带宽使用。在一些实施例中,发送器数据上载管 理器126可确定给定的数据单位的压缩版本是否比未压缩版本小一定 的阈值量或者百分比,并且,如果是,则上载压缩的版本,或者,如 果不是,则上载未压缩的版本。在发送器数据上载管理器126处接收 的压缩的数据单位可以但未必在处理112之前被解压缩。

如上所述,在至少一些实施例中,指纹字典130可以是固定尺寸 字典。因此,在一些实施例中,指纹字典130可能不具有存储与被接 收器110接收的所有数据单位对应的指纹132的空间。例如,在数据 存储系统中,指纹字典130可以不将对于所有数据单位的指纹132存 储于数据存储中。因此,在这些实施例中,接收器110可实现周期性 地或者根据需要清除、删除或替代例如为陈旧的或者最近最少使用 (LRU)的指纹132的指纹132的一个或更多个字典维护功能。因此, 接收器数据上载管理器114响应从发送器120接收指纹124确定处于 字典130中的指纹中的一个或更多个可能在完成数据重复删除技术中 的发送器120与接收器110之间的交换之前通过字典维护功能得到清 除。因此,在一些实施例中,在如图2D所示的那样从发送器数据上 载管理器126接收数据单位之后,接收器数据上载管理器114可针对 指纹字典130检查接收的数据单位,以确定是否任何数据单位错失— —即,确定接收器数据上载管理器114初始确定处于指纹字典130(参 见图2B和图2C)中的任何指纹124是否不再在处于字典130中,并 因此需要对应的数据单位以完成交易。在一些实施例中,如果接收器 数据上载管理器114确定完成交易所需要的附加的数据单位,那么可 重新开始交易——即,接收器数据上载管理器114可从发送器数据上 载管理器126请求指纹124的新的列表。但是,由于接收器数据上载 管理器114和发送器数据上载管理器126两者均已具有交易的状态信 息,因此,在一些实施例中,该状态信息可被利用(leveraged)以节 省带宽。在这些实施例中,接收器数据上载管理器114可在交易中作 为附加的步骤向发送器数据上载管理器126发送数据单位标识符,以 仅请求错失的数据单位;即,仅仅在交易过程中指纹132被清除的数 据单位。

以上参照图2A~2D的数据系统描述的处理可以是连续的处理。 即,发送器120可继续检查脏的数据块,产生用于在块中的数据单位 的指纹,向接收器110发送指纹,接收要被上载的数据的单位的返回 指示,并且将指示的数据的单位上载到接收器110。接收器110维持 指纹字典130以反映接收器110处的数据的当前状态,并且将接收的 数据单位转送到数据处理功能112,该数据处理功能112例如根据从 发送器120接收的数据单位在数据存储中存储或更新数据块。

可在一般描述的包括发送器(数据源)和接收器(数据存储)的 任何数据系统中应用数据重复删除技术的实施例,以减少上载带宽使 用,同时将维持指纹字典并且检查字典以确定要被上载的数据单位的 数据重复删除任务从发送器移动到接收器,这些数据系统包括但不限 任何数据存储系统。但是,这里,在包含在诸如因特网的网络上向一 个或更多个虚拟数据存储客户机提供虚拟化数据存储的虚拟化数据存 储提供器的虚拟化数据存储系统中,描述数据重复删除技术的实施例。 以下的部分描述虚拟化数据存储系统的实施例,包括在提供器侧提供 虚拟化数据存储服务并在客户机侧提供虚拟化数据存储网关的实施 例。该部分还描述向顾客提供硬件虚拟化服务以及虚拟化数据存储服 务的虚拟化服务提供器的实施例。

虚拟化数据存储系统

图3A~3C示出根据至少一些实施例的可实现数据重复删除技术 的示例虚拟化数据存储系统。图3A是根据至少一些实施例的虚拟化 数据存储系统的高级框图。全球网络200(例如,因特网)上的虚拟 化数据存储提供器210可向也与全球网络200耦合的一个或更多个虚 拟化数据存储顾客250提供对于虚拟化数据存储216的访问。各虚拟 化数据存储顾客250可与不同的实体对应,或者,两个或更多个虚拟 化数据存储顾客250可与同一实体的不同的中心或位置对应,例如, 与商业企业的不同的区域办公室或学校系统的不同的校园对应。任何 实体可以是商业企业、教育实体、政府实体,或者,一般地,是实现 与诸如因特网的全球网络200耦合的计算机网络以向用户提供联网计 算服务的任何实体。在一些实施例中,虚拟化数据存储服务212可提 供例如为网络服务接口的接口,通过该接口,虚拟化数据存储顾客250 可访问由服务212提供的功能。

数据客户机254代表与虚拟化数据存储顾客250的局域网络连接 的物理和/或虚拟机器或系统。用户通过数据客户机254可通过虚拟化 数据存储服务212在虚拟化数据存储216中创建和安装数据卷。从虚 拟化数据存储顾客250上的用户观点看,由虚拟化数据存储服务212 提供的数据卷看起来如同它们是本地存储;由此,这种数据卷可被称 为虚拟数据卷298。虚拟数据卷298实际映射到上面实例化虚拟化数 据存储216的一个或更多个物理存储装置或存储系统;但是,该映射 由虚拟化数据存储服务212处理,并因此从虚拟化数据存储顾客250 的观点看是透明的。数据客户机254上的用户可能只看到安装在桌面 上或者装置列表中的卷。数据客户机254上的用户可创建数据、修改 数据、删除数据,并且一般地在虚拟数据卷298上执行任何数据有关 功能,如同卷298在于本地固定的存储装置上实现。

虚拟化数据存储顾客250可通过全球网络200与虚拟化数据存储 服务212通信,以向虚拟化数据存储216上载数据和从其下载数据。 图3B是根据至少一些实施例的包含用作虚拟化数据存储顾客250与 虚拟化数据存储服务212之间的接口的虚拟化数据存储顾客250处的 虚拟化数据存储网关252的虚拟化数据存储系统的框图。

在至少一些实施例中,虚拟化数据存储网关252可以是现场安装 于虚拟化数据存储顾客的数据中心处的文件或块存储装置。虚拟化数 据存储网关252存储频繁访问的数据的本地高速缓存254,同时安全 地加密和加速返回虚拟化数据存储提供器210的数据移动。该加速的 数据移动,与标准因特网连接相比,可通过使用数据重复删除、压缩、 并行化和TCP窗口缩放实现。虚拟化数据存储网关252可明显减少一 般与管理现场存储阵列相关的成本、利用、维护和提供的问题。虚拟 化数据存储网关252可通过将100秒的太字节替代为顾客会通过成本 有效的装置在昂贵的NAS和SAN硬件上存储的拍字节的数据实现这 一点。通过虚拟化数据存储网关252,顾客可受益于现场存储的低访 问延时(由通过网关252提供的本地高速缓存254提供),同时利用 由虚拟化数据存储提供器210提供的耐久的、可用的和可缩放的云存 储基础构架。

虚拟化数据存储网关252的实施例可无缝地与顾客的现场应用一 起工作。在至少一个实施例中,顾客可配置虚拟化数据存储网关252 以支持SAN(iSCSI)、NAS(NFS、CIFS)或Object(REST) 存储。在至少一个实施例中,由虚拟化数据存储网关252提供的iSCSI 接口使得能够与诸如的现场块存储应用集成。 在至少一个实施例中,顾客可利用由虚拟化数据存储网关252提供的 NFS和CIFS接口,以跨包含但不限于Windows、Linux和UNIX环 境的环境联合文件存储。在至少一个实施例中,虚拟化数据存储网关 252也可被配置为支持基于REST的请求。

可通过硬件、软件或它们的组合实现虚拟化数据存储网关252。 虚拟化数据存储网关252的一些实施例可实现为与虚拟化数据存储顾 客250的本地网络256耦合并且还与全球网络200(例如,因特网) 耦合的专用器件或装置;器件或装置可包含执行网关252的各种功能 的软件和/或硬件。作为替代方案,虚拟化数据存储网关252可实现为 虚拟化数据存储顾客250数据中心处的一个或更多个服务器系统上的 虚拟器件或装置。

由于会跨虚拟化数据存储服务212与虚拟化数据存储网关252之 间的全球网络200传送大量的数据,因此,一般通过由虚拟化数据存 储顾客250提供的高带宽连接耦合虚拟化数据存储网关252与全球网 络200。例如,在峰值时间,连接可能需要支持100兆位/秒(100Mbit/s) 或更高的速率的数据传送。但是,这里描述的数据重复删除技术减少 从虚拟化数据存储网关252向虚拟化数据存储服务212上载数据时的 带宽使用,因此,更多的连接的带宽可用于其它的应用。

在至少一个实施例中,例如通过虚拟化数据存储顾客250上的控 制板,连接上的带宽可分配给虚拟化数据存储网关252和其它的顾客 应用。虚拟化数据存储网关252可根据这里描述的数据重复删除技术 连续或者大致连续地将变异的(新的或改变的)数据上载到虚拟化数 据存储服务212。但是,顾客250处的数据的变异速度会随时间改变; 例如,在白天,变异速度可能较高,而在夜晚变异速度会下降。因此, 在变异速度较高的繁忙时间,如果分配给虚拟化数据存储网关252的 带宽不足以跟上,那么虚拟化数据存储网关252会在上载变异数据时 落在后面;虚拟化数据存储网关252可然后在变异速度不高的不忙的 时间跟上。在至少一些实施例中,如果虚拟化数据存储网关252落后 大于特定的阈值,那么虚拟化数据存储网关252可请求分配附加的带 宽。在至少一些实施例中,如果必要的话,虚拟化数据存储网关252 可警告以要求更大的带宽。在虚拟化数据存储网关252具有比所需多 的带宽的时间,例如,在虚拟化数据存储网关252具有比跟上变异速 度所需要的带宽多的带宽的不忙的时间,虚拟化数据存储网关252可 将一些带宽释放回顾客,使得该带宽可被用于其它的应用。

在一些实施例中,不是按需从虚拟化数据存储216检索数据,而 是可在本地高速缓存大的数据块或块体、甚至数据的整个卷。虚拟化 数据存储网关252可包含上面可维持例如为频繁访问的数据或关键数 据的数据的本地高速缓存254的物理数据存储和/或存储器。可以在易 失性或非易失性存储或存储器或它们的组合中实现本地高速缓存 254。

维持本地高速缓存254一般会改善在数据客户机258上的用户的 数据访问时间,原因是可从本地高速缓存254服务许多或者大多数的 数据访问,而不是从虚拟化数据存储216检索数据。但是,虚拟化数 据存储216用作虚拟化数据存储顾客250的主数据存储;由此,虚拟 化数据存储网关252通过全球网络200与虚拟化数据存储服务212通 信,以周期性地、非周期性地或者连续地将本地高速缓存254中的新 的或修改的数据上载到虚拟化数据存储216并在必要时从虚拟化数据 存储216下载请求的数据。

在图3B中,虚拟化数据存储216的存储218A、218B、218C…示 出,可在与虚拟化数据存储提供者210的本地网络214连接的几个存 储装置或系统上或者跨它们实现虚拟化数据存储216。因此,虚拟化 数据存储顾客250的数据可在“后端”跨两个或更多个物理存储装置 或系统展开。但是,如参照图3A注明的那样,从虚拟化数据存储顾 客250的观点看,客户机的数据作为虚拟卷或者存储装置被呈现给客 户机。

在一些实施例中,可作为还提供硬件虚拟化技术和其它的虚拟化 存储技术的一般的虚拟化服务的一部分实现参照图3A和图3B描述的 虚拟化数据存储系统。虚拟化服务可提供一系列虚拟化计算技术和虚 拟化存储技术,包括向顾客提供虚拟化块级存储能力(即,基于块的 存储系统)的虚拟化块级存储技术。可通过虚拟化块级存储技术支持 根据由虚拟化服务提供器提供的硬件虚拟化技术实现的虚拟计算环境 或系统。虚拟化块级存储技术可提供能够通过标准化存储调用与虚拟 计算系统交互作用的虚拟存储系统,该标准化存储调用使得块级存储 在功能上对于它支持的卷的结构和功能细节以及对于在它提供存储能 力的虚拟计算系统(或其它的系统)上执行的操作系统不可知。

除了与现场顾客应用集成以外,虚拟化数据存储网关252还可与 由虚拟化服务提供器300提供的虚拟化计算技术和虚拟化存储技术集 成,从而向顾客提供对于弹性“基于云的”计算和存储资源的访问。 例如,对于SAN存储使用虚拟化数据存储网关252的顾客可创建他们 的可从虚拟化块级存储技术访问的块存储数据的一致的、时间点快照。 这些快照可然后通过需要虚拟化块级存储技术提供的高I/O和低延时 数据访问的硬件虚拟化技术应用或实例(参见例如图3C中的虚拟计 算系统392)被处理。作为另一例子,顾客可通过NFS或CIFS文件 协议配置用于NAS存储的虚拟化数据存储网关252,并可创建他们的 可从硬件虚拟化技术实例访问的文件数据的时间点快照。

在一些实施例中,通过使用由虚拟化数据存储网关252提供的基 于REST的接口书写的对象可通过HTTP或其它的协议直接从由虚拟 化服务提供器提供的虚拟化存储技术被访问,或者可通过使用由虚拟 化服务提供器提供的集成内容传输技术分布。在一些实施例中,为了 在硬件虚拟化技术实例上并行地处理这些对象,顾客还可利用由虚拟 化存储技术提供的高度可缩放、分布式基础构架。

图3C是根据至少一些实施例的向虚拟化服务提供器300的顾客 350提供虚拟化数据存储服务312和硬件虚拟化服务360的虚拟化服 务的框图。例如,如参照图3B描述的那样,虚拟化服务顾客350数 据中心包含用作虚拟化数据存储顾客350和虚拟化服务提供器300的 虚拟化数据存储服务312之间的接口的虚拟化数据存储网关352。

硬件虚拟化技术使得多个操作系统能够同时在主机计算机362上 运行,即,作为主机362上的虚拟机(VM)。VM366可例如租借给 虚拟化服务提供器300的顾客(例如,给虚拟化服务顾客350)。主 机362上的管理程序或者虚拟机监视器(VMM)364通过虚拟平台在 主机362上呈现VM366,并监视VM366的执行。可向各VM366 提供一个或更多个IP地址;主机362上的VMM364可知悉主机上的 VM366的IP地址。虚拟化服务提供器300的局域网络可被配置为将 信息包从VM366路由到因特网目的地(例如,到虚拟化服务顾客350 的服务客户机390),并且从因特网来源(例如,服务客户机390)路 由到VM366。

虚拟化服务提供器300可向通过局域网络356与全球网络200耦 合的虚拟服务顾客340提供通过与全球网络200和虚拟化服务提供器 300的局域网络耦合的硬件虚拟化服务360实现虚拟计算系统392的 能力。在一些实施例中,硬件虚拟化服务360可提供接口,例如,网 络服务接口,通过该接口,服务客户机390可访问由硬件虚拟化服务 360提供的功能。在虚拟服务提供器300上,各虚拟计算系统392可 代表租借或另外提供给虚拟服务顾客350的主机362上的虚拟机 (VM)366。

从虚拟计算系统392的实例,用户可如上面描述的那样访问虚拟 化数据存储服务312的功能。因此,图3C所示的虚拟化系统的实施 例可允许客户机创建在由虚拟化系统提供器提供的VM上实现的虚拟 计算系统的本地实例,并从虚拟计算系统的本地实例对于由虚拟化系 统提供器实现的虚拟数据存储访问和存储数据。如上所述,可在在本 地高速缓存例如频繁访问或关键数据的至少一些数据并且通过一个或 更多个高带宽通信信道与虚拟化数据存储服务312通信以从本地高速 缓存上载新的或修改的数据的虚拟化服务客户机352处提供虚拟化数 据存储网关352,使得维持数据的主存储(虚拟化数据存储316)。

虚拟化数据存储系统中的数据重复删除技术

描述数据重复删除技术的实施例,该数据重复删除技术可例如被 应用于上述的虚拟化数据存储系统,以减少或者消除虚拟化数据存储 中的冗余数据。在数据重复删除技术的实施例中,不是在虚拟化数据 存储顾客(发送器)处维持指纹字典并确定上载到虚拟化数据存储的 数据单位,而是,在虚拟化数据存储提供器(接收器)上维持指纹字 典,并且在虚拟化数据存储提供器上执行要被上载的数据单位的确定。

图4A~4F是示出根据至少一些实施例的在包含虚拟化数据存储 顾客处的虚拟化数据存储网关的虚拟化数据存储系统中实现的数据重 复删除技术的框图。注意,这些图是作为例子给出的;数据重复删除 技术的实施例可被应用于包含发送器(数据源)和接收器(数据存储) 的任何数据存储系统。参照图4A,接收器即虚拟化数据存储提供器 210可在用于一个或更多个虚拟化数据存储顾客250的虚拟化数据存 储216中存储数据220。虚拟化数据存储提供器210可提供虚拟化数 据存储服务212。虚拟化数据存储服务212可提供接口,例如,网络 服务接口,通过该接口,虚拟化数据存储顾客250可访问由服务212 提供的功能。

虚拟化数据存储服务212可在指纹字典230中存储用于存储于虚 拟化数据存储216中的数据220的指纹232。在至少一些实施例中, 指纹232可以是数据220的单位的散列。在至少一些实施例中,指纹 232可以是任意类型的加密性强的单向散列函数,例如,安全散列算 法(SHA)-256散列函数。使用加密性强的单向散列函数提供安全性, 并且帮助避免冲突,使用这种散列函数的冲突是很不可能出现的。冲 突是两个数据的单位产生相同的指纹。在基于块的数据系统(也称为 块存储系统)中,数据的单位可以例如为数据块的256k字节部分、数 据块的1024k字节部分或数据块的一些其它的固定或可变尺寸部分。 在基于文件的系统中,数据的单位可以是文件或文件的与基于块的数 据系统中的部分类似的部分。

指纹字典230可驻留于单个系统上,或者可跨着两个或更多个系 统、例如跨着两个服务器系统分布。在一些实施例中,指纹字典230 可实现和维持为跨着虚拟化数据存储服务212处的两个或更多个服务 器展开的一致散列字典。在至少一些实施例中,指纹字典230可以是 固定尺寸字典。

在至少一些实施例中,虚拟化数据存储服务212可在单个指纹字 典230中维持用于多个顾客250的指纹232。顾客是特定的数据集的 “所有人”,并且可以是个人、企业或企业内的部门、工段、办公室 或其它的实体。在一些实施例中,各顾客250可被分配唯一顾客标识 符,该唯一顾客标识符可附加到用于相应的顾客的数据的指纹232上 或者另外与其相关联。作为替代方案,虚拟化数据存储服务212可对 于各顾客250维持单独的指纹字典230。

虚拟化数据存储网关252可用作虚拟化数据存储顾客250与虚拟 化数据存储服务212之间的接口。可通过硬件、软件或它们的组合实 现虚拟化数据存储网关252。虚拟化数据存储网关252的一些实施例 可实现为与虚拟化数据存储顾客250的本地网络耦合并且还与诸如因 特网的全球网络耦合的虚拟化数据存储顾客250处的专用器件或装 置;器件或装置可包含执行网关252的各种功能的软件和/或硬件。作 为替代方案,虚拟化数据存储网关252可实现为虚拟化数据存储顾客 250数据中心处的一个或更多个服务器系统上的虚拟器件或装置。由 于会需要跨着虚拟化数据存储服务212与虚拟化数据存储网关252之 间的全球网络传送大量的数据,因此,与全球网络的耦合一般是高带 宽连接。

不是按需从虚拟化数据存储216检索数据,而是可通过虚拟化数 据存储网关252在本地高速缓存大的数据块或块体、甚至数据的整个 卷。虚拟化数据存储网关252可包含上面可维持例如为频繁访问的数 据或关键数据的数据256的本地高速缓存254的物理数据存储和/或存 储器。可以在易失性或非易失性存储或存储器或它们的组合中实现本 地高速缓存254。维持数据256的本地高速缓存254一般会改善虚拟 化数据存储顾客250用户的的数据访问时间,原因是可从本地高速缓 存254服务许多或者大多数的数据访问而不是在各访问上从虚拟化数 据存储216检索数据。但是,虚拟化数据存储216用作虚拟化数据存 储顾客250的主数据存储;由此,虚拟化数据存储网关252通过全球 网络与虚拟化数据存储服务212通信,以周期性地、非周期性地或者 连续地将本地高速缓存254中的新的或修改的数据256上载到虚拟化 数据存储216。

虽然可以使用更大或更小的块尺寸,但是,在至少一些实施例中, 虚拟化数据存储网关252可在例如为4兆字节块或10兆字节块的相对 较大的块中维持高速缓存的数据256。当数据256的块被用户或处理 访问以例如创建新的数据或者修改现有的数据时,块可被标为“脏”。 但是,访问可能仅改变块的小部分。因此,如图4A所示,虚拟化数 据存储网关252可例如通过向各单位应用散列函数产生用于脏块的单 位的指纹270。在基于块的数据系统(也称为块存储系统)中,数据 的单位可以例如为数据块的256k字节部分、数据块的1024k字节部 分或数据块的一些其它的固定或可变尺寸部分。(在基于文件的系统 中,数据的单位可以是文件或文件的与基于块的数据系统中的部分类 似的部分。)

在图4B中,虚拟化数据存储网关252可向虚拟化数据存储服务 212发送对于脏块产生的指纹270。

PAUSE在图4C中,针对与从虚拟化数据存储网关252接收的指 纹270的匹配,虚拟化数据存储服务212可搜索指纹字典230。可根 据由虚拟化数据存储服务212实现的搜索功能272执行搜索;本领域 技术人员可以理解,可以使用各种搜索技术中的任一种。如上所述, 在一些实施例中,可以使用用于各顾客250的唯一标识符,以通过搜 索相应的顾客250特有的指纹字典230或者通过对于由唯一标识符指 示为属于相应的顾客250的指纹搜索所有顾客250共用的指纹字典 230,来从其它顾客250的指纹区分这些指纹270,以避免冲突。在指 纹字典230中找到的指纹270不需要被上载,原因是在字典230中存 在它们指示在虚拟化数据存储216上存在对应的数据的单位。没有在 指纹字典230中找到的指纹270需要被上载,原因是在字典230中不 存在它们指示在虚拟化数据存储216中不存在对应的数据的单位或者 对应的数据的单位已改变并且需要被替代或者更新。

注意,如果针对其产生指纹270的数据的整个块是新创建的数据 块,那么情况可能是在指纹字典330中找不到任何指纹270,因此, 所有的对应的单位需要被上载到虚拟化数据存储216。但是,如果在 用于顾客250的其它事先上载的块中存在相同的数据的单位,那么可 能在指纹字典230中找到指纹270中的一些或者全部,因此,对应的 单位中的至少一些可能不需要被上载到虚拟化数据存储216。换句话 说,两个或更多个数据的块可共享虚拟化数据存储216上的至少一些 共用的单位。

在图4D中,虚拟化数据存储服务212使用于标识为“脏”的数 据单位(即,来自需要被上载到虚拟化数据存储216的数据块的数据 的单位)的数据单位标识符280返回虚拟化数据存储网关252。在一 些实施例中,数据单位标识符280可以是数据单位的相应的指纹270。 可以使用其它的方法以标识需要被上载的数据单位;例如,在一些实 施例中,可以使用块号码/单位号码索引方案,以标识需要被上载的数 据单位。在一些实施例中,可以使用“位图”中的一个或更多个位被 设定以指示需要被上载的数据单位或不需要被上载的数据单位的位场 方案。在一些实施例中,通过虚拟化数据存储服务212发送给虚拟化 数据存储网关252的数据单位标识符280可指示不需要被上载的数据 单位而不是需要被上载的数据单位。在一些实施例中,为了减少带宽 使用,虚拟化数据存储服务212可根据不需要被上载的数据单位的集 合或需要被上载的数据单位的集合中的哪个最小发送指示任意的这些 集合的数据单位标识符。可以例如在标题中包含指示发送给虚拟化数 据存储网关252的标识符是用于需要还是不需要被上载的数据单位的 信息。

在图4E中,标识的数据单位282从虚拟化数据存储网关252被 上载到虚拟化数据存储服务212。注意,只有来自脏块的标识的数据 单位被上载;整个块不被上载,除非是块的所有数据单位通过虚拟化 数据存储服务212被标识为“脏”的情况。

在图4F中,虚拟化数据存储服务212将标识的数据单位282存 储到虚拟化数据存储216。注意,虚拟化数据存储服务212可在虚拟 化数据存储216中添加给定的标识的数据单位282作为新的数据单位, 或者可用给定的标识的数据单位282替代或者更新虚拟化数据存储 216中的现有的数据单位。

在一些实施例中,标识的数据单位282可在将数据单位282上载 到虚拟化数据存储服务212之前被虚拟化数据存储网关252压缩,以 进一步减少通信信道上的带宽使用。在一些实施例中,虚拟化数据存 储网关252可确定给定的数据单位的压缩版本是否比未压缩版本小一 定的阈值量或者百分比,并且,如果是,则上载压缩的版本,或者, 如果不是,则上载未压缩的版本。上载到虚拟化数据存储服务212的 压缩数据单位可以但未必在存储到虚拟化数据存储216之前被解压 缩。

如上所述,在至少一些实施例中,指纹字典230可以是固定尺寸 字典。因此,在一些实施例中,指纹字典230可以不存储用于存储于 虚拟化数据存储216中的所有数据单位的指纹232。因此,在这些实 施例中,虚拟化数据存储服务212可实现周期性地或者根据需要清除、 删除或替代例如为陈旧的或者最近最少使用(LRU)的指纹232的指 纹232的一个或更多个字典维护功能。因此,虚拟化数据存储服务212 响应从虚拟化数据存储网关252接收指纹270确定处于字典230中的 指纹中的一个或更多个可能在完成数据重复删除技术中的交换之前通 过字典维护功能得到清除。因此,在一些实施例中,在如图4E所示 的那样从虚拟化数据存储网关252接收数据单位282之后,虚拟化数 据存储服务212可针对指纹字典230检查接收的数据单位,以确定是 否任何数据单位错失——即,确定虚拟化数据存储服务212初始确定 处于指纹字典230(参见图4C)中的任何指纹270是否不再在处于字 典230中,并因此需要对应的数据单位以完成交易。在一些实施例中, 如果虚拟化数据存储服务212确定需要附加的数据单位以完成交易, 那么可重新开始交易——即,虚拟化数据存储服务212可从虚拟化数 据存储网关252请求指纹270的新的列表。但是,由于虚拟化数据存 储服务212和虚拟化数据存储网关252两者均已具有交易的状态信息, 因此,在一些实施例中,该状态信息可被利用以节省带宽。在这些实 施例中,虚拟化数据存储服务212可在交易中作为附加的步骤向虚拟 化数据存储网关252发送数据单位标识符280,以仅请求错失的数据 单位;即,仅仅在交易过程中指纹232被清除的数据单位。

以上参照图4A~4F的虚拟化数据存储系统描述的处理可以是连 续的处理。即,虚拟化数据存储网关252可连续检查数据的脏块,产 生用于在块中的数据单位的指纹,向虚拟化数据存储服务212发送指 纹,接收要被上载的数据的单位的返回指示,并且将指示的数据的单 位上载到虚拟化数据存储服务212。虚拟化数据存储服务212维持指 纹字典230,以反映虚拟化数据存储216的当前的状态,并且根据从 虚拟化数据存储网关252接收的数据单位在虚拟化数据存储216中存 储或更新数据块。

图5是根据至少一些实施例的用于初始化虚拟化数据存储网关的 方法的流程图。如500所示,可在虚拟化数据存储顾客处实例化虚拟 化数据存储网关。虚拟化数据存储网关的一些实施例可实现为与虚拟 化数据存储顾客数据中心的本地网络耦合并且还与全球网络(例如, 因特网)耦合的专用器件或装置;器件或装置可包含执行网关的各种 功能的软件和/或硬件。作为替代方案,虚拟化数据存储网关可实现为 虚拟化数据存储顾客数据中心处的一个或更多个服务器系统上的虚拟 器件或装置。

如502所示,用户或多个用户可在虚拟化数据存储网关处实例化 数据卷。在504处,顾客产生或修改虚拟化数据存储网关上的卷中的 数据。例如,客户机装置上的用户可从客户机装置创建卷,在客户机 装置的桌面上安装卷,并且在来自客户机装置的卷上创建新的数据。

如506所示,虚拟化数据存储网关通过虚拟化数据存储服务将新 的或者修改的数据(即,“脏”数据)上载到虚拟化数据存储。根据 例如图6所示的数据重复删除技术执行数据的上载,使得虚拟化数据 存储服务存储、维持和检查指纹字典,并且,只有需要被上载到虚拟 化数据存储的数据的单位被发送到虚拟化数据存储服务。数据块的修 改和数据重复删除处理和数据单位的上载可以是连续的处理;即,虚 拟化数据存储网关可连续处理脏的数据块,并且根据数据重复删除技 术通过虚拟化数据存储服务将来自块的数据的单位上载到虚拟化数据 存储。

图6是根据至少一些实施例的在包含虚拟化数据存储网关的虚拟 化数据存储系统中实现的数据重复删除技术的流程图。如600所示, 虚拟化数据存储网关产生用于在脏的数据块中的数据的单位的指纹。 如602所示,虚拟化数据存储网关通过网络(例如,因特网)将指纹 发送给虚拟化数据存储服务。如604所示,虚拟化数据存储服务搜索 指纹字典中的指纹,以确定对应的数据的单位是否存储于虚拟化数据 存储中。如606所示,虚拟化数据存储服务将标识要被上载的数据的 单位(即,根据指纹字典没有存储于虚拟化数据存储中的单位)的信 息发送到虚拟化数据存储网关。在一些实施例中,标识要被上载的数 据的单位的信息可指示需要被上载的数据单位。在一些实施例中,标 识要被上载的数据的单位的信息可指示不需要被上载的数据单位而不 是需要被上载的数据单位。在一些实施例中,为了减少带宽使用,虚 拟化数据存储服务可根据不需要被上载的数据单位的集合或需要被上 载的数据单位的集合中的哪个最小发送指示任意的这些集合的数据单 位的信息。在一些实施例中,可以使用“位图”中的一个或更多个位 被设定以指示需要被上载的数据单位或不需要被上载的数据单位的位 场方案。如608所示,虚拟化数据存储网关通过网络将标识的单位上 载到虚拟化数据存储服务。在一些实施例中,可在上载到虚拟化数据 存储服务之前在虚拟化数据存储网关处压缩数据单位中的至少一些。 如610所示,虚拟化数据存储服务将单位存储到虚拟化数据存储,并 且用适当的指纹更新指纹字典。

在至少一些实施例中,指纹字典可以是固定尺寸字典。在这些实 施例中,虚拟化数据存储服务可实现周期性地或者根据需要清除、删 除或者替代指纹的一个或更多个字典维护功能。因此,虚拟化数据存 储服务响应如图6的604所示的那样从虚拟化数据存储网关接收指纹 如图6的604所示的那样确定处于字典中的指纹中的一个或更多个可 能在完成数据重复删除技术中的交换之前通过字典维护功能得到清 除。因此,在一些实施例中,在从虚拟化数据存储网关接收数据单位 之后,虚拟化数据存储服务可针对指纹字典检查接收的数据单位,以 确定虚拟化数据存储服务初始确定处于指纹字典中的任何指纹是否不 再在处于字典中,并因此确定需要对应的数据单位以完成交易。在一 些实施例中,如果虚拟化数据存储服务确定需要附加的数据单位以完 成交易,那么虚拟化数据存储服务可从虚拟化数据存储网关请求指纹 的新的列表以重新开始处理。但是,由于虚拟化数据存储服务和虚拟 化数据存储网关两者均已具有交易的状态信息,因此,该状态信息可 被利用以节省带宽。在这些实施例中,虚拟化数据存储服务可在方法 中作为附加的步骤向虚拟化数据存储网关发送数据单位标识符,以仅 请求错失的数据单位;即,仅仅在交易过程中指纹被清除的数据单位。 虚拟化数据存储网关可然后上载附加请求的数据单位,并且,虚拟化 数据存储服务可因此处理附加的数据单位。

示例性的系统

在至少一些实施例中,实现包含但不限于这里描述的数据存储系 统技术和数据重复删除技术的技术中的一个或更多个技术的一部分或 全部的服务器可包含通用计算机系统,该通用计算机系统包含或者被 配置为访问诸如图7所示的计算机系统1000的一个或更多个计算机可 访问介质。在示出的实施例中,计算机系统1000包含通过输入/输出 (I/O)接口1030与系统存储器1020耦合的一个或更多个处理器1010。 计算机系统1000还包含与I/O接口1030耦合的网络接口1040。

在各种实施例中,计算机系统1000可以是包含一个处理器1010 的单处理器系统或者包含几个处理器1010(例如,两个、四个、八个 或者其它适当的数量)的多处理器系统。处理器1010可以是能够执行 指令的任意适当的处理器。例如,在各种实施例中,处理器1010可以 是实现诸如x86、PowerPC、SPARC或MIPS ISA或任何其它适当的 ISA的各种指令集结构(ISA)中的任一种的通用或嵌入处理器。在 多处理器系统中,处理器1010中的每一个可共同但未必实现相同的 ISA。

系统存储器1020可被配置为存储可通过处理器1010访问的指令 和数据。在各种实施例中,可通过使用诸如静态随机存取存储器 (SRAM)、同步动态RAM(SDRAM)、非易失性/快擦写类型的存 储器或任何其它类型的存储器的任何适当的存储器技术实现系统存储 器1020。在示出的实施例中,实现一种或更多种希望的功能的程序指 令和数据,诸如以上对于数据存储系统技术和数据重复删除技术描述 的那些方法、技术和数据,被示为作为代码1025和数据1026存储于 系统存储器1020内。

在一个实施例中,I/O接口1030可被配置为协调处理器1010、系 统存储器1020和包含网络接口1040或其它外围接口的装置中的任何 外围装置之间的I/O流量。在一些实施例中,I/O接口1030可执行任 何必要的协议、定时或其它数据变换,以将来自一个部件(例如,系 统存储器1020)的数据信号转换成适于供另一部件(例如,处理器 1010)使用的格式。在一些实施例中,例如,I/O接口1030可包含对 于通过诸如外围部件互连(PCI)总线标准或通用串行总线(USB) 标准的变体的各种类型的外围总线固定的装置的支持。在一些实施例 中,例如,I/O接口1030的功能可分成两个或更多个单独的部件,诸 如北桥和南桥。并且,在一些实施例中,诸如与系统存储器1020的接 口的I/O接口1030的功能中的一些或全部可直接并入处理器1010中。

例如,网络接口1040可被配置为允许在计算机系统1000和诸如 图2~图4F所示的其它计算机系统或装置的固定于网络或多个网络 1050上的其它装置1060之间交换数据。在各种实施例中,例如,网 络接口1040可通过诸如以太网类型的任何适当的有线或无线通用数 据网络支持通信。另外,网络接口1040可通过诸如模拟声音网络或数 字光纤通信网络的电信/电话网络、通过诸如光纤信道SAN的存储域 网络或者通过任何其它适当的类型的网络和/或协议支持通信。

在一些实施例中,系统存储器1020可以是被配置为存储以上对于 图2~图6描述的用于实现数据存储系统技术和数据重复删除技术的实 施例的程序指令和数据的计算机可访问介质的一个实施例。但是,在 其它的实施例中,可在不同类型的计算机可访问介质上接收、发送或 存储程序指令和/或数据。一般而言,计算机可访问介质可包含非暂时 性存储介质或存储器介质,诸如磁介质或光学介质,例如,通过I/O 接口1030与计算机系统1000耦合的盘或DVD/CD。非暂时性计算机 可访问存储介质还可包含任何易失性或非易失性介质,诸如可作为系 统存储器1020或另一类型的存储器包含于计算机系统1000的一些实 施例中的RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM 等)、ROM等。并且,计算机可访问介质可包含传送介质或信号, 诸如通过诸如网络和/或诸如可通过网络接口1040实现的无线链接的 通信介质传输的电信号、电磁信号或数字信号。

条款:

条款1:一种系统,包括:

至少一个处理器;和

包含程序指令的存储器,其中,程序指令可由至少一个处理器执 行以执行以下操作:

将存储于数据存储中的数据的指纹存储到指纹字典,其中,数据 包含多个数据单位,并且,指纹字典中的各指纹唯一地标识存储于数 据存储中的数据中的相应的数据单位;

通过网络从装置接收各自与在装置上高速缓存的不同的数据单位 对应的一个或更多个指纹;

针对从装置接收的一个或更多个指纹中的每一个搜索指纹字典, 以确定指纹是否处于指纹字典中,其中,确定指纹不处于指纹字典中 指示要被上载的对应的数据单位;

通过网络向装置发送通过所述搜索指纹字典确定的要被上载的一 个或更多个数据单位的指示;

通过网络从装置接收指示的一个或更多个数据单位,其中,各接 收的数据单位与不处于指纹字典中的指纹对应;和

将从装置接收的一个或更多个数据单位存储于数据存储。

条款2:如条款1所述的系统,其中,各指纹是相应的数据单位 的散列。

条款3.如条款2所述的系统,其中,根据应用于相应的数据单 位的加密性强的单向散列函数产生散列。

条款4.如条款1所述的系统,其中,程序指令可进一步由至少 一个处理器执行,以用与从装置接收并存储到数据存储的各数据单位 对应的指纹更新指纹字典。

条款5.如条款1所述的系统,其中,数据作为数据块存储于数 据存储中,其中,各数据块包含多个数据单位中的两个或更多个。

条款6.如条款1所述的系统,其中,程序指令可由至少一个处 理器执行,以通过网络将数据存储作为虚拟化数据存储向多个顾客提 供,其中,存储于数据存储中的数据包含用于多个顾客中的每一个的 顾客数据,其中装置与多个顾客中的一个相关,并且其中,装置在本 地高速缓存相应的顾客的来自数据存储的顾客数据的至少一部分。

条款7.如条款6所述的系统,其中,指纹字典包含用于多个顾 客的顾客数据的指纹,其中程序指令可由至少一个处理器执行以执行 以下操作:

使顾客标识符与各顾客相关;和

在所述搜索指纹字典中,根据相应的顾客的顾客标识符仅搜索与 乡音的顾客数据对应的指纹。

条款8.如条款1所述的系统,其中,要被上载的一个或更多个 数据单位的指示指示了通过所述搜索没有在指纹字典中发现指纹的数 据单位。

条款9.如条款1所述的系统,其中,要被上载的一个或更多个 数据单位的指示指示了通过所述搜索在指纹字典中发现指纹的数据单 位。

条款10.如条款1所述的系统,其中,只有与不处于指纹字典中 的指纹对应的数据单位从装置被接收。

条款11.如条款1所述的系统,其中,程序指令可进一步由至少 一个处理器执行以执行以下操作:

在所述从装置接收指示的一个或更多个数据单位之后,确定所述 搜索指示处于指纹字典中的至少一个指纹随后从指纹字典被删除;

通过网络向装置发送与至少一个指纹对应的至少一个数据单位的 指示;和

通过网络从装置接收指示的至少一个数据单位。

条款12.一种方法,包括:

在本地将用于数据的指纹存储到指纹字典,其中,数据包含多个 数据单位,并且,指纹字典中的各指纹唯一地标识数据中的相应的数 据单位;

通过网络从装置接收各自与在装置上高速缓存的不同的数据单位 对应的一个或更多个指纹;

针对从装置接收的一个或更多个指纹中的每一个搜索指纹字典, 以确定指纹是处于指纹字典中还是不处于指纹字典中,其中,确定指 纹不处于指纹字典指示要被上载的对应的数据单位;

通过网络向装置发送通过所述搜索指纹字典确定的要被上载的一 个或更多个数据单位的指示;和

通过网络从装置接收指示的一个或更多个数据单位,其中,各接 收的数据单位与不处于指纹字典中的指纹对应。

条款13.如条款12所述的方法,其中,各指纹是相应的数据单 位的散列。

条款14.如条款13所述的方法,根据应用于相应的数据单位的 加密性强的单向散列函数产生散列。

条款15.如条款12所述的方法,还包括用与从装置接收的各数 据单位对应的指纹更新指纹字典。

条款16.如条款12所述的方法,其中,数据包含多个数据块, 其中,各数据块包含多个数据单位中的两个或更多个。

条款17.如条款12所述的方法,其中,数据存储于数据存储中, 其中,该方法还包括将从装置接收的一个或更多个数据单位存储到数 据存储。

条款18.如条款17所述的方法,其中,该方法还包括通过网络 将数据存储作为虚拟化数据存储向多个顾客提供,其中,存储于数据 存储中的数据包含用于多个顾客中的每一个的顾客数据,其中,装置 与多个顾客中的一个对应,并且,装置在本地高速缓存相应的顾客的 来自数据存储的顾客数据的至少一部分。

条款19.如条款18所述的方法,其中,指纹字典包含用于多个 顾客的顾客数据的指纹,其中,该方法还包括使顾客标识符与各顾客 相关,并且其中,所述搜索指纹字典包含根据相应的顾客的顾客标识 符仅搜索与相应的顾客数据对应的指纹。

条款20.如条款12所述的方法,还包括:

在所述从装置接收指示的一个或更多个数据单位之后,确定所述 搜索指示处于指纹字典中的至少一个指纹随后从指纹字典被删除;

通过网络向装置发送与至少一个指纹对应的至少一个数据单位的 指示;和

通过网络从装置接收指示的至少一个数据单位。

条款21.一种非暂时性计算机可存取存储介质,其存储计算机可 执行以实现以下操作的程序指令:

在本地将用于数据的指纹存储到指纹字典,其中,数据包含多个 数据单位,并且其中,指纹字典中的各指纹唯一地标识数据中的相应 的数据单位;

通过网络从装置接收各自与在装置上高速缓存的不同的数据单位 对应的一个或更多个指纹;

针对从装置接收的一个或更多个指纹中的每一个搜索指纹字典, 以确定指纹是处于指纹字典中还是不处于指纹字典中,其中,确定指 纹不处于指纹字典指示要被上载的对应的数据单位;

通过网络向装置发送通过所述搜索指纹字典确定的要被上载的一 个或更多个数据单位的指示;和

通过网络从装置接收指示的一个或更多个数据单位,其中,各接 收的数据单位与不处于指纹字典中的指纹对应。

条款22.如条款21所述的非暂时性计算机可存取存储介质,其 中,各指纹是相应的数据单位的散列。

条款23.如条款22所述的非暂时性计算机可存取存储介质,其 中,根据应用于相应的数据单位的加密性强的单向散列函数产生散列。

条款24.如条款21所述的非暂时性计算机可存取存储介质,其 中,程序指令可由计算机执行,以实现用与从装置接收的各数据单位 对应的指纹更新指纹字典。

条款25.如条款21所述的非暂时性计算机可存取存储介质,其 中,数据包含多个数据块,其中,各数据块包含多个数据单位中的两 个或更多个。

条款26.如条款21所述的非暂时性计算机可存取存储介质,其 中,数据存储于数据存储中,其中,程序指令可进一步被计算机执行, 以实现将从装置接收的一个或更多个数据单位存储到数据存储。

条款27.如条款26所述的非暂时性计算机可存取存储介质,其 中,程序指令可由计算机执行,以实现通过网络将数据存储作为虚拟 化数据存储向多个顾客提供,其中,存储于数据存储中的数据包含用 于多个顾客中的每一个的顾客数据,其中,装置与多个顾客中的一个 对应,并且其中,装置在本地高速缓存相应的顾客的来自数据存储的 顾客数据的至少一部分。

条款28.如条款27所述的非暂时性计算机可存取存储介质,其 中,指纹字典包含用于多个顾客的顾客数据的指纹,其中,程序指令 可由计算机执行,以实现使顾客标识符与各顾客相关,并且其中,在 所述搜索指纹字典时,程序指令可由计算机执行,以实现根据相应的 顾客的顾客标识符仅搜索与相应的顾客数据对应的指纹。

条款29.如条款21所述的非暂时性计算机可存取存储介质,其 中,程序指令可进一步由计算机执行,以在所述从装置接收指示的一 个或更多个数据单位之后实现以下操作:

确定所述搜索指示处于指纹字典中的至少一个指纹随后从指纹字 典被删除;

通过网络向装置发送与至少一个指纹对应的至少一个数据单位的 指示;和

通过网络从装置接收指示的至少一个数据单位。

条款30.一种系统,包括:

实现数据接收器的一个或更多个装置,其中,数据接收器在本地 将用于数据的指纹存储到指纹字典,其中,数据包含多个数据单位, 并且其中,指纹字典中的各指纹唯一地标识数据中的相应的数据单位; 和

实现数据发送器的一个或更多个装置,该数据发送器被配置为完 成以下操作:

产生用于在本地高速缓存的数据的多个数据单位的指纹,其中, 各指纹唯一地标识在本地高速缓存的数据中的相应的数据单位;和

通过通信信道向数据接收器发送指纹;

其中,数据接收器被配置为完成以下操作:

针对从数据发送器接收的指纹搜索指纹字典,以确定指纹中的每 一个是处于指纹字典中还是不处于指纹字典中,其中,确定指纹不处 于指纹字典中指示要被上载的对应的数据单位;和

通过通信信道向数据发送器发送通过所述搜索指纹字典确定的要 被上载的一个或更多个数据单位的指示;

其中,数据发送器被配置为通过通信信道向数据接收器发送指示 的一个或更多个数据单位,其中,只有与不处于指纹字典中的指纹对 应的数据单位被发送到数据接收器。

条款31.如条款30所述的系统,其中,数据接收器进一步被配 置为完成以下操作:

在所述从数据发送器接收指示的一个或更多个数据单位之后,

确定所述搜索指示处于指纹字典中的至少一个指纹随后从指纹字 典被删除;

通过通信信道向数据发送器发送与至少一个指纹对应的至少一个 数据单位的指示;和

通过通信信道从数据发送器发送指示的至少一个数据单元。

条款32.如条款30所述的系统,其中,通信信道是因特网。

条款33.如条款30所述的系统,其中,数据接收器在数据存储 中存储数据,并且其中,数据接收器将从数据发送器接收的一个或更 多个数据单位存储到数据存储。

条款34.如条款33所述的系统,其中,通信信道是网络,其中, 数据接收器通过网络将数据存储作为虚拟化数据存储向多个顾客提 供,其中,存储于数据存储中的数据包含用于多个顾客中的每一个的 顾客数据,其中,数据发送器与多个顾客中的一个对应,并且,数据 发送器在本地高速缓存相应的顾客的来自数据存储的顾客数据的至少 一部分。

条款35.如条款34所述的系统,其中,指纹字典包括多个顾客 的顾客数据的指纹,其中数据接收器使顾客标识符与各顾客相关,并 且其中,在搜索指纹字典时,数据接收器根据相应的顾客的顾客标识 符仅搜索与相应的顾客数据对应的指纹。

条款36.如条款30所述的系统,其中,数据发送器与顾客站点 的局域网络通信耦合,其中,通信信道是通过全球网络的通信信道, 并且其中,数据发送器完成以下操作:

通过全球网络下载并在本地高速缓存来自数据接收器的数据的多 个部分;和

向包含在局域网络上的其它装置上实现的一个或更多个虚拟计算 系统的局域网络上的其它处理提供对于在本地高速缓存的数据的本地 访问。

条款37.如条款36所述的系统,其中,数据发送器被分配通信 信道上的带宽的一部分,并且,数据发送器被配置为根据需要请求分 配通信信道上的附加的带宽,并且在不需要时释放通信信道上的带宽。

条款38.一种装置,包括:

至少一个处理器;和

包含程序指令的存储器,其中,程序指令可由至少一个处理器执 行以执行以下操作:

产生用于在本地高速缓存的数据的多个数据单位的指纹,其中, 各指纹唯一地标识在本地高速缓存的数据中的相应的数据单位;

通过网络向远程数据存储服务发送指纹,其中,远程数据存储服 务维持数据的主数据存储;

通过网络从远程数据存储服务接收要存储到主数据存储的数据单 位中的一个或更多个的指示;和

通过网络向远程数据存储服务发送用于通过远程数据存储服务存 储到主数据存储的一个或更多个数据单位。

条款39.如条款38所述的装置,其中,为了产生用于数据单位 的指纹,可通过至少一个处理器执行程序指令以向数据单位应用散列 函数。

条款40.如条款39所述的装置,其中,散列函数是加密性强的 单向散列函数。

条款41.如条款38所述的装置,其中,在本地高速缓存的数据 被高速缓存为多个数据块,其中,多个数据单位与多个数据块中的一 个对应。

条款42.如条款41所述的装置,其中,多个数据块中的一个被 标记为脏,以指示在本地高速缓存的数据块被创建或修改并由此需要 从在本地高速缓存的数据上载到主数据存储。

条款43.如条款38所述的装置,其中,远程数据存储服务通过 网络向多个顾客提供虚拟化数据存储,其中,存储于虚拟化数据存储 中的数据包含用于多个顾客中的每一个的顾客数据,其中,装置与多 个顾客中的一个相关联,并且其中,程序指令可由至少一个处理器执 行以在本地高速缓存相应的顾客的来自数据存储的顾客数据的至少一 部分。

条款44.如条款43所述的装置,其中,装置与顾客站点的局域 网络通信耦合,并且,程序指令可由至少一个处理器执行以执行以下 操作:

下载并在本地高速缓存来自远程数据存储服务的顾客数据的多个 部分;和

向包含在局域网络上的其它装置上实现的一个或更多个虚拟计算 系统的局域网络上的其它处理提供对于在本地高速缓存的顾客数据的 本地访问。

条款45.如条款44所述的装置,其中,下载并且在本地高速缓 存的顾客数据的多个部分是根据基于块的存储技术的数据块。

条款46.如条款38所述的装置,其中,装置被分配通过网络到 远程数据存储服务的通信信道上的带宽的一部分,并且,程序指令可 由至少一个处理器执行,以根据需要请求分配用于将数据单位上载到 远程数据存储服务的通信信道上的附加的带宽,并且在不需要时释放 通信信道上的带宽。

条款47.一种方法,包括:

产生用于在本地高速缓存的数据的多个数据单位的指纹,其中, 各指纹唯一地标识在本地高速缓存的数据中的相应的数据单位;

通过通信信道向数据服务发送指纹;

通过通信信道从数据服务接收通过通信信道要被上载到数据服务 的数据单位中的一个或更多个的指示;和

通过通信向数据服务发送指示的一个或更多个数据单位。

条款48.如条款47所述的方法,其中,为了产生用于数据单位 的指纹,程序指令可由计算机执行,以实现向数据单位应用加密性强 的单向散列函数。

条款49.如条款47所述的方法,其中,在本地高速缓存的数据 被高速缓存为多个数据块,其中,多个数据单位与多个数据块中的一 个对应。

条款50.如条款21所述的方法,其中,多个数据块中的一个被 标记为脏,以指示在本地高速缓存的数据被创建或修改并由此需要从 在本地高速缓存的数据上载到数据服务。

条款51.如条款47所述的方法,其中,数据服务是维持数据的 主数据存储的远程数据存储服务。

条款52.如条款47所述的方法,其中,通信信道是网络。

条款53.如条款52所述的方法,其中,数据服务通过网络向多 个顾客提供虚拟化数据存储,其中,存储于虚拟化数据存储中的数据 包含用于多个顾客中的每一个的顾客数据,其中,装置与多个顾客中 的一个相关联,并且,程序指令可由计算机执行,以实现在本地高速 缓存相应的顾客的来自数据存储的顾客数据的至少一部分。

条款54.如条款52所述的方法,其中,装置与顾客站点的局域 网络通信耦合,并且,程序指令可由计算机执行,以实现以下操作:

下载并在本地高速缓存来自数据服务的顾客数据的多个部分;和

向包含在局域网络上的其它装置上实现的一个或更多个虚拟计算 系统的局域网络上的其它处理提供对于在本地高速缓存的顾客数据的 本地访问。

条款26.一种非暂时性计算机可存取存储介质,存储计算机可执 行以实现以下操作的程序指令:

产生用于在本地高速缓存的数据的多个数据单位的指纹,其中, 各指纹唯一地标识在本地高速缓存的数据中的相应的数据单位;

通过通信信道向数据服务发送指纹;

通过通信信道从数据服务接收通过通信信道要被上载到数据服务 的数据单位中的一个或更多个的指示;和

通过通信信道向数据服务发送指示的一个或更多个数据单位。

条款55.如条款26所述的非暂时性计算机可存取存储介质,其 中,为了产生用于数据单位的指纹,程序指令可由计算机执行,以向 数据单位应用散列函数。

条款56.如条款55所述的非暂时性计算机可存取存储介质,其 中,散列函数是加密性强的单向散列函数。

条款57.如条款26所述的非暂时性计算机可存取存储介质,其 中,在本地高速缓存的数据被高速缓存为多个数据块,其中,多个数 据单位与多个数据块中的一个对应。

条款58.如条款57所述的非暂时性计算机可存取存储介质,其 中,多个数据块中的一个被标记为脏,以指示在本地高速缓存的数据 被创建或修改并由此需要从在本地高速缓存的数据上载到数据服务。

条款59.如条款26所述的非暂时性计算机可存取存储介质,其 中,数据服务是维持数据的主数据存储的远程数据存储服务。

条款60.如条款26所述的非暂时性计算机可存取存储介质,其 中,通信信道是网络。

条款61.如条款60所述的非暂时性计算机可存取存储介质,其 中,数据服务通过网络向多个顾客提供虚拟化数据存储,其中,存储 于虚拟化数据存储中的数据包含用于多个顾客中的每一个的顾客数 据,其中,装置与多个顾客中的一个相关联,并且,程序指令可由计 算机执行,以在本地高速缓存相应的顾客的来自数据存储的顾客数据 的至少一部分。

条款62.如条款60所述的非暂时性计算机可存取存储介质,其 中,装置与顾客站点的局域网络通信耦合,并且,程序指令可由计算 机执行,以执行以下操作:

下载并在本地高速缓存来自数据服务的顾客数据的多个部分;和

向包含在局域网络上的其它装置上实现的一个或更多个虚拟计算 系统的局域网络上的其它处理提供对于在本地高速缓存的顾客数据的 本地访问。

条款63.如条款62所述的非暂时性计算机可存取存储介质,其 中,下载并且在本地高速缓存的顾客数据的多个部分是根据基于块的 存储技术的数据块。

结论

各种实施例还可包括在计算机可存取介质上接收、发送或存储根 据以上的描述实现的指令和/或数据。一般而言,计算机可存取介质可 包括:诸如磁介质或光学介质的存储介质或存储器介质,例如,盘或 DVD/CD-ROM;诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM 等)、ROM等的易失性或非易失性介质;以及传输介质或通过网络 和/或无线链接的通信介质传输的诸如电信号、电磁信号或数字信号的 信号。

在附图中示出并且在这里描述的各种方法代表方法的示例性实施 例。可通过软件、硬件或它们的组合实现方法。方法的次序可改变, 并且,可以添加、重排、组合、省略、修改等各种要素。

受益于本公开的益处的本领域技术人员可以理解,可以提出各种 修改和改变。它要包括所有这些修改和改变,因此,以上的描述应被 视为示例性而不是限制意义。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号