数据系统中的接收器侧数据重复删除的制作方法

文档序号:11458672阅读:214来源:国知局
数据系统中的接收器侧数据重复删除的制造方法与工艺

本申请是申请日为2011年12月21日、发明名称为“数据系统中的接收器侧数据重复删除”的中国专利申请201180063651.x的分案申请。



背景技术:

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

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

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

可减少带宽使用的数据重复删除的常规技术是使发送器标识要被上载到接收器的数据的单位;只有标识的数据的单位从发送器被上载到接收器。图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或mipsisa或任何其它适当的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、ddrsdram、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等的易失性或非易失性介质;以及传输介质或通过网络和/或无线链接的通信介质传输的诸如电信号、电磁信号或数字信号的信号。

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

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1