用于复制内容可寻址存储集群的异步分布式去重的制作方法

文档序号:6596329阅读:109来源:国知局

专利名称::用于复制内容可寻址存储集群的异步分布式去重的制作方法用于复制内容可寻址存储集群的异步分布式去重
背景技术
:企业计算局面经历了存储体系结构的根本性转变,因为中央服务体系结构已经让位于分布式存储集群。随着企业寻求增加存储效率的方式,从商品计算机构建的存储集群可以以与庞大盘阵列相比的成本的一小部分,为新的数据密集型应用提供高性能、可用性和可伸缩性。为了开启存储集群的全部潜力,跨多个地理位置复制数据,从而增加可用性,并且减少距客户端的网络距离。数据去重(de-duplication)可以识别重复的对象,并且通过移除副本来减少所需的存储空间。结果,数据去重对于存储业变得日益重要,并且正由会包含许多副本的大型系统的需求推动。
发明内容根据一个实施方式,一种方法可以由分布式数据复制系统中的设备组中的设备执行。该方法可以包括将对象的索引存储在分布式数据复制系统中,所述索引是在对象的复制品由分布式数据复制系统中的多个设备本地存储时被复制。该方法还可以包括进行对索引的至少一部分的扫描,以及基于对索引的扫描来识别对象中的至少一个的冗余复制品。该方法可以进一步包括通过将去重记录写入索引的一部分来对冗余复制品进行去重。根据另一个实施方式,分布式数据复制系统中的设备组中的设备可以包括用于将对象的索引存储在分布式数据复制系统中的装置;用于将改变写入索引以指定对象中的一个的复制品的状态的装置;用于将对索引的改变复制到分布式数据复制系统中的多个设备的装置;用于进行对索引的至少一部分的扫描的装置;用于基于对索引的扫描来识别对象中的一个的冗余复制品的装置;以及用于对冗余复制品进行去重的装置。根据又一个实施方式,一种系统可以包括存储器,其用来存储指令、对象的数据存储以及数据存储中的对象的索引;以及处理器。处理器可以执行存储器中的指令来识别数据存储中的对象的状态,所述状态与对象是否具有复制品以及删除请求是否与对象相关联有关;基于对象的状态将去重指定记录写入索引;将具有去重指定记录的索引复制到一个或多个设备;以及从一个或多个设备中的一个接收与对象相关联的其它去重指定记录,其中去重指定记录和其它去重指定记录为对对象的一个或多个复制品的删除提供基础。根据又一个实施方式,一种由一个或多个设备执行的方法可以包括将对象的索引存储在分布式数据复制系统内的多个设备中,以及在本地存储对象时遍及分布式数据复制系统复制索引,其中每一个设备对索引的特定子集内的对象的去重负责;进行对索引的子集中的每一个的扫描以基于扫描来识别冗余复制品;对冗余进行去重;以及自动将对象从带有具有正在进行的删除请求的复制品的设备拷贝到带有先前已被去重的复制品的设备。根据进一步实施方式,一种计算机可读存储器可以包括计算机可执行的指令。该计算机可读存储器可以包括用来进行对分布式数据复制系统中的对象的索引的一部分的扫描的一个或多个指令;用来基于对索引的一部分的扫描来识别对象中的一个的冗余复制品的一个或多个指令;用来对冗余复制品进行去重的一个或多个指令。合并入并且构成本说明书的一部分的附示了在此描述的一个或多个实施例,并且与描述一起说明了这些实施例。在附图中图1是在其中可以实现在此描述的系统和方法的示例性网络的图;图2是图1的文件系统的示例性配置的图;图3是图1的存储集群的示例性组件的图;图4是图1的示例性存储集群的功能框图;图5是可以在分布式多主站数据复制系统的索引内使用的示例性记录结构的图;图6A-6B是用于管理客户端发起的上载/删除操作的示例性过程的流程图;图7是用于在分布式多主站数据复制系统中执行去重的示例性过程的流程图;图8是用于管理删除请求的示例性过程的流程图;图9是用于移除重复复制品的示例性过程的流程图;图10是用于在分布式多主站数据复制系统中优化带宽消耗以及减少时延的示例性过程的流程图;以及图11是根据在此描述的一个实施方式图示了示例性全局索引的一部分的图。具体实施例方式下面的详细描述参考附图。在不同附图中的相同参考数字可以识别相同或相似元素。并且,下面的详细描述不限制本发明。在此描述的系统和/或方法可以为复制的存储集群提供异步分布式去重算法,其为不可变对象提供可用性、活性以及一致性保证。在此描述的实施方式可以使用分布式多主站数据复制系统的基础复制层来在不同的存储集群之间复制内容可寻址索引(在此也被称为“全局索引”)。全局索引的每一个对象可以具有唯一内容句柄(例如,哈希值或数字签名)。在此描述的实施方式中,对冗余复制品的移除过程可以保持至少一个复制品存活。示例性网络配置图1是在其中可以实现在此描述的系统和方法的示例性系统100的图。系统100可以包括经由网络130连接的客户端110-1至110-N(统称为客户端110,以及分别称为客户端110)以及存储集群120-1至120-M(统称为存储集群120,以及分别称为存储集群120)。存储集群120可以形成文件系统140(如图1中虚线所示)。网络130可以包括一个或多个网络,诸如局域网(LAN)、广域网(WAN)、电话网络(例如,公共交换电话网络(PSTN))、内联网、因特网、相似或相异网络、或网络的组合。客户端110和存储集群120可以经由有线和/或无线连接连接到网络130。客户端110可以包括一种或多种类型的设备,诸如个人计算机、无线电话、个人数字助理(PDA)、膝上型计算机或另一种类型的通信设备、和/或运行于这些设备中的一个上的线程或进程。在一个实施方式中,客户端110包括或被联接到应用,在所述应用代表下客户端110与存储集群120通信以读取或修改(例如,写)文件数据。存储集群120可以包括一个或多个服务器设备、或其它类型的计算或通信设备,6其可以以在此描述的方式存储、处理、搜索和/或提供信息。在一个实施方式中,存储集群120可以包括能够为文件维护大型、随机读/写访问数据存储的一个或多个服务器(例如,计算机系统和/或应用)。如果发生改变,则存储集群120的数据存储可以允许索引系统快速更新索引的部分。存储集群120的数据存储可以包括一个或多个表(例如,可以包括每统一资源定位符(URL)—行的文档表、由URL之外的值作为键的辅助表等)。在一个示例中,存储集群120可以被包括在用于管理结构化数据(例如,文档的随机存取存储集群)的分布式存储系统(例如,如在第七届OSDI论文集(2006年11月)、第205-218页、Chang等人白勺“BigtableDistributedStorageSystemforStructuredData(Bigtable于结构化数据的分布式存储系统)”中阐述的"Bigtable")中,所述结构化数据可以被设计为缩放到非常大的大小(例如,跨数千服务器的千兆兆字节的数据)。尽管在图1中未示出,但是系统100可以包括多种其它组件,诸如一个或多个专用客户服务器或集线器。客户服务器例如可以存储来自一个或多个存储集群120的数据存储的只读副本以供客户端110访问。集线器例如可以存储来自一个或多个存储集群120的数据存储的只读副本以分发到一个或多个客户服务器。示例性存储集群配置图2是文件系统140的示例性配置的图。如图2中所示,文件系统140可以包括存储集群120-1、120-2、120-3以及120-4。在一个实施方式中,文件系统140可以是分布式多主站数据复制系统,其中存储集群120-1、120-2、120-3以及120-4中的每一个对于其它存储集群可以充任主服务器。在文件系统140中,可以跨存储集群120-1、120-2、120-3以及120-4(例如,在多个地理位置)复制数据以增加数据可用性以及减少距客户端(例如,客户端110)的网络距离。通常,可以在不同的存储集群120中动态地创建、变异、克隆以及删除分布式对象和引用,以及基础数据复制层(未示出)维护写顺序保真度以确保所有存储集群120以数据的相同版本结束。因此,数据复制层重视对单个对象的相同复制品的写顺序。可以将分布式多主站数据复制系统中的所有对象的全局索引与每一个存储集群120进行关联。每一个已存储的对象可以由全局索引中的唯一内容句柄(诸如哈希值、数字签名等)列出。所选择的存储集群每一个可以被分配为负责全局索引中的不同范围的内容句柄。例如,单个存储集群120可以负责对与特定内容句柄相关联的对象的去重。可以将一个存储集群作出的对全局索引的改变复制到其它存储集群。尽管图2示出了文件系统140的示例性功能组件,但是在其它实施方式中,文件系统140可以包含比在图2中所描绘的更少、另外、不同或不同布置的组件。在另外其它实施方式中,文件系统140的一个或多个组件可以执行被描述为由文件系统140的一个或多个其它组件执行的一个或多个任务。图3是存储集群120的示例性组件的图。存储集群120可以包括总线310、处理器320、主存储器330、只读存储器(R0M);340、存储设备;350、输入设备360、输出设备370以及通信接口380。总线310可以包括允许在存储集群120的组件之间的通信的一个或多个导线。处理器320可以包括可以解释并且执行指令的任何类型的处理器或微处理器。主存储器330可以包括可以存储用于处理器320执行的信息和指令的随机存取存储器(RAM)或另一种类型的动态存储设备。ROM340可以包括可以存储用于处理器320使用的静态信息和指令的ROM设备或另一种类型的静态存储设备。存储设备350可以包括磁和/或光记录介质以及其对应的驱动。例如,存储设备350可以包括提供持久存储的一个或多个本地盘355。在一个实施方式中,存储集群120可以在诸如主存储器330和/或存储设备350的一个或多个计算机可读介质内为存储在文件系统140中的对象维护元数据。例如,存储集群120可以将用于存储在分布式多主站数据复制系统内的所有对象的全局索引存储在存储设备350内。输入设备360可以包括允许操作者向存储集群120输入信息的一个或多个机制,诸如键盘、键区、按钮、鼠标、笔等。输出设备370可以包括向操作者输出信息的一个或多个机制,包括显示、发光二极管(LED)等。通信接口380可以包括使存储集群120能够与其它设备和/或系统通信的任何类收发器机制。例如,通信接口380可以包括用于与其它存储集群120和/或客户端110通信的机制。图4图示了存储集群120的功能框图。如图4中所示,存储集群120可以包括数据存储410和去重逻辑420。在一个实施方式中,如图4中所图示的,数据存储410可以在存储集群120内提供。在其它实施方式中,数据存储410中的部分或全部可以被存储在与存储集群120通信的系统100的一个或多个其它设备内,诸如外部存储器设备或与索引系统(未示出)相关联的设备。数据存储410可以包括复制的索引存储412和本地对象存储414。复制的索引存储412可以作为分布式多主站数据复制系统的复制层的一部分被包括。复制的索引存储412可以存储与全局索引相关联的信息。复制的索引存储412的至少一部分可以在多个存储集群120上被复制。每一个复制的索引存储412的复制品的数量可以是用户可配置的。本地对象存储414可以将对象本地存储在存储集群120内。本地对象存储414可以包括文件,诸如客户端(例如,客户端110)上载的图像或视频。去重逻辑420可以包括从分布式多主站数据复制系统内的存储集群(例如,存储集群120-1、120-2、120-3以及120-4)移除冗余复制品的逻辑。用于每一个参与的存储集群的去重逻辑420可以被分配为负责全局索引的特定部分。例如,去重逻辑420可以被分配给全局索引的特定范围的内容句柄。因此,分布式多主站数据复制系统内的仅仅一个存储集群可以能够对系统内的复制对象执行破坏性操作(例如,对复制品的删除)。为了便于去重,记录可以由去重逻辑420生成,并且附于与特定内容句柄相关联的全局索引的一部分。记录例如可以包括用于启用活复制品的“Data”指定符、用于指示对复制品的正在进行的删除请求的“DeleteRequest”指定符以及用于指示已为去重选择的复制品的“Deduped”指定符。在下面更加详细地描述了记录格式和用途。尽管图4示出了存储集群120的示例性功能组件,但是在其它实施方式中,存储集群120可以包含比在图4中所描绘的更少、另外、不同或不同布置的功能组件。在另外其它实施方式中,存储集群120的一个或多个功能组件可以执行被描述为由一个或多个其它功能组件执行的一个或多个其它任务。示例性记录结构图5提供了在一个示例性实施方式中,可以被写入全局索引的去重指定记录的示例性记录结构500的图示。在全局索引中,可以将去重指定记录与对象复制品的特定内容句柄进行关联。如图5中所示,记录结构500可以包括存储集群标识符(“ID”)部分510、存储位置部分520以及指定部分530。存储集群标识部分510可以包括存储为之写记录的对象复制品的存储集群120的唯一标识(例如,“集群ID”)。位置部分520可以包括复制品在存储集群标识部分510所识别的存储集群120内的位置的地址。指定部分530例如可以包括"Data"指定符、“DeleteRequest"指定符或〃Deduped"指定符。记录结构5OO可以以“ClusterID:Location:Designation(集群ID:位置指定)"的形式列出。例如,复制品的记录可以由存储集群120-1以记录〃01:234523/2000:DeleteRequest〃添加到全局索弓丨,其中“01”是存储集群120-1的集群ID,“234523/2000”是在存储集群120-1内的存储复制品的位置,以及“DeleteRequest”是指定符。存储集群120_2中的相同对象的另一个复制品的记录可以是〃02:234544/1000:Data",其中“02”是存储集群120-2的集群ID,“234544/1000”是在存储集群120-2内的位置,以及“Data”是指定符。示例性过程流程图6A-6B是用于管理客户端发起的上载/删除操作的示例性过程的流程图。图6A描绘了从客户端上载对象的示例性过程600的流程图。图6B描绘了移除客户端所删除的对象的示例性过程650的流程图。在一个实施方式中,过程600和650可以由存储集群120中的一个来执行。过程600和650可以响应于客户端(例如,客户端110)活动来实现。对于在下面描述的过程600和650的特定示例,可以参考文件系统140的存储集群120-1,其中存储集群120-1包括集群ID“01”。参考图6A,当从客户端接收上载的文件(块610)时,过程600可以开始。例如,存储集群120-1可以从客户端110中的一个接收新的文件。可以存储上载的文件(块620),以及可以将用于上载的文件的“Data”指定符写入全局索引(块630)。例如,存储集群120-1可以将上载的文件存储在存储器(例如,存储设备350)中,并且将对象的内容句柄添加到全局索引。存储集群120-1还可以将数据记录(例如,"OliLocationiData")写入由对象的内容句柄寻址的复制的全局索引。参考图6B,当接收删除的文件的通知(块660)时,过程650可以开始。例如,存储集群120-1可以接收客户端110中的一个删除了文件的指示。可以发起删除请求(块670),以及可以将用于删除的文件的“DeleteRequest”指定符写入全局索引(块680)。例如,存储集群120-1可以发起删除请求以从文件系统140异步移除删除的文件。存储设备120-1还可以将〃DeleteRequest〃记录(例如,“01Location:DeleteReqeust〃)写入由对象的内容句柄寻址的复制的全局索引。图7是用于在分布式多主站数据复制系统(例如,文件系统140)中执行去重的示例性过程700的流程图。在一个实施方式中,过程700可以由存储集群120中的一个来执行。在另一个实施方式中,过程700的部分或全部可以由另一个设备或设备组一包括或排除存储集群120-来执行。过程700可以在每一个存储集群120中周期性实现,以及可以包括对存储集群120中的对象的全部或一部分的扫描。对于在下面描述的过程700的特定示例,可以参考文件系统140的存储集群120-1和120-2,其中存储集群120-1包括集群ID“01”,以及存储集群120-2包括集群ID“02”。如图7中所图示的,过程700可以以进行对全局索引的扫描(块710)开始。例如,(例如,使用去重逻辑420的)存储集群120-1可以进行对在全局索引中列出的对象的全部或一部分的扫描。扫描可以识别例如被标记用于删除的多个复制品和/或对象。可以确定是否遇到删除请求(块720)。例如,存储集群120-1可以遇到全局索引中的包括来自另一个存储集群(例如,来自存储集群120-的删除请求指定符(例如,“02:Location:DeleteReqeust")的对象。如果确定遇到删除请求(块720-是),则可以对删除请求进行处理(块730)。例如,存储集群120-1可以如参考图8更加详细描述的来对删除请求进行处理。如果确定没有遇到删除请求(块720-否),则可以确定是否存在冗余复制品(块740)。冗余复制品可以是在不同位置的没有对对象的未解决的(outstanding)删除请求的复制对象。例如,存储集群120-1可以识别与存储集群120-1负责的内容句柄相对应的相同对象的多个复制品。例如,多个复制品可以被存储在不同的存储集群(例如,存储集群120-1和存储集群120-2)中或在相同存储集群内的不同位置中。如果确定存在冗余复制品(块740-是),则可以移除冗余复制品(块750)。例如,存储集群120-1可以如参考图9更加详细描述的来移除冗余复制品。如果确定不存在冗余复制品(块740-否),则过程可以返回到块710,其中可以进行对全局索引的另一个扫描(块710)。图8图示了与图6的块660的对删除请求的处理相关联的示例性操作。可以遇到对对象的删除请求(块810)。例如,存储集群120-1进行的扫描可以识别全局索引中的带有先前由存储集群120-1写入、删除某一存储集群中的复制品的删除请求指定符(例如,“02:Location:DeleteRequest")的内容句柄。假设存储集群120-1负责该内容句柄,则存储集群120-1可以应用操作来确定现在是否可以对复制品进行去重。可以确定是否存在去重指定符(块820)。例如,存储集群120-1可以查看全局索引中的与内容句柄相关联的其它记录来确定是否存在去重指定符(例如,〃02!Location:Deduped")。如果确定存在去重指定符(块820-是),则可以对复制品和全局索引中的相关记录进行去重(块830)。例如,存储集群120-1可以发起删除请求以删除存储集群120-2中的复制品(如果存在的话),以及从全局索引删除与关于删除的复制品的内容句柄有关的任何记录(例如,“02:LOCation:*",其中“*”可以是任何指定符)。如果确定不存在去重指定符(块820-否),则可以确定是否存在另一个活复制品(块840)。例如,存储集群120-1可以查看用于全局索引的内容句柄以确定对于该对象,是否存在另一个活复制品。全局索引例如可以包括关于该内容句柄的来自另一个存储集群的数据记录(例如,“03!Location:Data")。如果存在另一个活复制品(块840-是),则可以如在上面参考块830所描述地对复制品进行去重。如果不存在另一个活复制品(块840-否),则可以确定所有复制品是否具有删除请求(块850)。例如,存储集群120-1可以查看用于全局索引的内容句柄以确定与内容句柄相关联的所有复制品是否具有未解决的删除请求(例如,"*:*:DeleteRequest",其中“*”分别可以是任何集群ID和任何位置)。如果确定所有复制品具有删除请求(块850-是),则可以如在上面参考块830所描述地对复制品进行去重。如果确定所有复制品均没有删除请求(块850-否),则可以CN102317938A说明书7/10页将对象从发起删除请求的存储集群拷贝到不同的存储集群,以及可以更新全局索引(块860)。例如,响应于记录〃02:Location:DeleteRequest",存储集群120-1可以将对象从存储集群120-2拷贝到另一个存储集群120-3,对于存储集群120-3存在去重记录(例如,“OSiLocationiDeduped")并且没有未解决的删除请求。存储集群120-1可以删除与复制品相关联的先前去重记录(例如,"OSiLocationiDeduped"),并且将数据指定符(例如,“03:Location:Data")写入全局索引中的对象的对应内容句柄。图9图示了与图7的块750的对重复引用的移除相关联的示例性操作。可以识别不带删除请求的多个复制品(块910)。例如,存储集群120-1可以查看全局索引,并且识别没有与存储集群120-1负责的内容句柄相对应的未解决的删除请求的两个或多个复制品。可以应用确定复制品待被去重的标准(块920)。例如,存储集群120-1可以应用标准来对可以被存储在存储集群120-1内的冗余复制品进行去重。对冗余复制品进行去重的标准可以基于多种因素,诸如复制品的地理接近性、在存储集群处的可用存储能力或其它因素。(例如,使用去重逻辑420的)存储集群120-1可以将标准应用于在上面识别的没有未解决的删除请求的两个或多个复制品。在一些实施方式中,多个复制品可以被识别来待被去重。在其它实施方式中,存储集群120-1可以留下多于一个活复制品(例如,未被标记用于去重的复制品)。可以对全局索引进行更新以将去重的复制品指定为"Deduped"(块930)。例如,对于每一个去重的复制品,存储集群120-1可以删除与复制品相关联的先前数据记录(例如,“02!Location:Data"),并且将去重指定符(例如,“02:Location:Deduped")写入全局索弓I中的对应的内容句柄。对冗余复制品的去重可以使用被复制为全局索引的一部分的去重消息来完成。被标记用于去重的复制品可以被存储在存储集群120-1或另一个存储集群(例如,存储集群120-2、120-3、120-4等)内。在一个实施方式中,存储集群120-1可以删除本地存储的复制品以及从全局索引删除对应的〃OLLocatiorKData"记录,并且将〃OliLocationiDeduped"添加到全局索引。存储集群120-1还可以使用复制的全局索引,发起删除消息来删除存储在其它集群中的复制品。图10提供了用于在分布式多主站数据复制系统(例如,文件系统140)中优化带宽消耗以及减少时延的示例性过程1000的流程图。在一个实施方式中,过程1000可以由存储集群120中的一个来执行。在另一个实施方式中,过程1000的部分或全部可以由另一个设备或设备组一包括或排除存储集群120-来执行。对于在下面描述的过程1000的特定示例,可以参考文件系统140的存储集群120-1,其中存储集群120-1包括集群ID“01”。如图1000中所图示,过程1000可以以接收对对象的请求(块1010)开始。例如,存储集群120-1可以从客户端(例如,客户端110-1)接收获取对象的请求。可以在全局索引中查找对象位置(块1020)。例如,存储集群120-1可以使用对象的内容句柄来在复制的全局索引中查找对象的复制品位置。可以识别“最佳”复制品位置(块1030)。例如,假设多于一个复制品可用,存储集群120-1可以确定待检索的“最佳”复制品以最小化网络资源。例如,“最佳”复制品可以是具有与存储集群120-1最接近的地理位置的复制品。在其它实施方式中,“最佳”复制品可以基于可用网络连通性、地理位置和/或其它标准的组合。因此,在一些实施方式中,对象11的“最佳”复制品可以被本地存储在存储集群120-1内。可以从所识别的位置检索对象(块1040)。例如,存储集群120-1可以向最接近的可用存储集群请求“最佳”复制品,并且接收满足客户端请求的复制品。存储集群120-1然后可以将复制品发送给客户端。示例图11提供了根据在此描述的一个实施方式的示例性全局索引的一部分1100。除其它信息外,索引可以包括内容句柄列1110和去重指定记录列1120。假设,在示例性索引部分1100中,分布式多主站数据复制系统包括三个存储集群XX、YY和ZZ。去重算法可以在存储集群XX、YY和TL的每一个中周期性地运行,以及可以扫描全局索引的全部或一部分。并且,与特定对象内容句柄相关联的记录(例如,Data、DeleteRequest和Deduped)可以由存储集群XX、YY和TL中的一个写入全局索引。对全局索引的修改可以被复制到所有其它参与的集群(例如,存储集群XX、YY和TL的剩余者)。如图11中所示,索引部分1100包括四个对象的内容句柄和相关联的删除指定记录。“Handlell”具有分别指示复制品被存储在存储集群XX处的记录(“XXlocationOLData“)和被存储在存储集群YY处的记录(“YYiLocationOliData")。“Handle21”具有指示复制品被存储在存储集群XX处的记录("XX:Location02:Data//)以及指示在存储集群YY处的另一个复制品具有正在进行的删除请求的记录(“YY:Location02:DeleteRequest)。"Handle31”具有分别指示复制品被存储在存储集群YY处的记录(〃XX:LocationOSiData")和被存储在存储集群U处的记录(“ZZ:Location01:Data")。“Handle31,,还具有以下两个记录指示在存储集群YY处的复制品具有正在进行的删除请求的记录(〃YY:Location03DeleteRequest”)和指示在存储集群ZZ处的复制品具有正在进行的删除请求的记录(”ZZiLocationOIiDeleteRequest")。“Handle41“具有指示复制品被存储在存储集群YY处的记录(“XX:Location04:Data//)以及指示在存储集群YY处的复制品具有正在进行的删除请求的记录(〃YYLocation04DeleteRequest“)。Handle41还具有一个指示对复制品的去重已经发生的记录(“ZZ:LOCatiOn02:Deduped)。存储集群所使用的去重算法可以使用与在此描述的原理一致的导则来操作。假设存储集群XX被分配为负责包括"Handlell"、“Handle21"、“Handle31"以及〃Handle41"的全局索引的部分。当对象被完全上载于存储集群中时,存储集群可以将数据记录(例如,“ClusterID:Location:Data〃)写入由对象的内容句柄寻址的复制的全局索引。例如,“XX:Location01:Data"和〃YY:Location01:Data"说明了关于〃Handlell"的复制品的数据记录。并且,“XX:Location02:Data//说明了关于〃Handle21"的复制品的数据记录。对于〃HandleSl"和〃Handle41",可以看到类似的数据记录。当在存储集群中请求对象时,存储集群可以使用对象的内容句柄来在复制的全局索引中查找复制品位置,并且从“最佳”(例如,最接近)集群取得复制品。例如,假设在存储集群U处请求与"Handlell"相对应的对象,以及存储集群YY比存储集群XX更接近于存储集群U,存储集群U可以向存储集群YY请求对应于"Handlell"的对象复制品。当在存储集群中删除对象时,存储集群可以将〃ClusterID=Location:DeleteRequest‘‘写入由对象的内容句柄寻址的复制的全局索弓丨。例如,“YY:Location02:DeleteRequest〃说明了关于在存储集群YY中的〃Handle21“的删除的复制品的记录。类似地,“YY:Location03:DeleteRequest“和“ZZLocationOlDeleteRequest“分别说明了关于对存储集群YY和ZZ而言的"HandleSl"的删除的复制品的记录。如果在存储集群中的扫描遇到没有与存储集群负责的内容句柄相对应的未解决的删除请求的多个复制品,则存储集群可以删除对象的冗余复制品(可能留下多于一个活复制品)。对于另一个存储集群中的每一个删除的复制品,存储集群可以删除数据记录并且写入去重记录。例如,在存储集群XX中的扫描可以识别"Handlell"具有分别指示复制品被存储在存储集群XX的记录(“XXiLocationOliData")和被存储在存储集群YY的记录(〃YYiLocationOliData")。基于为移除冗余引用而提供的标准,存储集群XX可以发起删除在存储集群YY处的复制品。存储集群XX可以删除图11中所示的记录〃YY:Location01:Data〃,并且替代地写入〃YY:Location01:Deduped〃。如果在存储集群XX中的扫描遇到与存储集群XX负责的内容句柄相对应的、对另一个存储集群(例如,存储集群¥¥或以)中的复制品的删除请求(例如,“ClusterID:Location:DeleteRequest“),则存储集群XX可以应用下面的分析。如果对于与删除请求相同的存储集群和位置,存在"Deduped"记录,如果存在对象的另一个活复制品、或如果所有的复制品均具有未解决的删除请求,则存储集群XX可以删除存储集群¥¥或以中的对象的复制品(如果存在的话),并且删除记录"YY=Location:*"或〃ZZiLocation:*“0例如,在存储集群YY中的〃Handle21“的复制品和记录〃YY:Location02:DeleteRequest〃可以由存储集群XX删除,因为存在另一个活对象(由记录"XX:Location02:Data〃指示)。类似地,在存储集群YY中的"Handle31"的复制品和记录“YY:Location03DeleteRequest“可以由存储集群XX删除,因为存储集群YY和存储集群TL中的两个复制品均具有未解决的删除请求。如果存储集群XX不能删除存储集群YY或U中的对象的复制品(例如,不存在"Deduped"记录或对象的另一个活复制品、以及所有的复制品均没有未解决的删除请求),则存储集群XX可以将对象从YY或TL拷贝到另一个存储集群,对于该另一个存储集群存在去重记录并且没有未解决的删除请求、删除去重记录以及写入数据记录。例如,存储集群YY中的〃Handle41"的复制品(〃YYLocation04DeleteRequest“)可以触发存储集群XX将与"Handle41"相关联的对象拷贝到存储集群以。存储集群XX可以更新全局索引以将〃ZZ:Location02:Deduped"改变为〃ZZ:Location02:Data〃。算法的正确性是直截了当的,因为对对象的所有删除操作仅仅由在负责其内容句柄的存储集群中的扫描过程来执行。算法还透明地处理相同集群中的、具有不同位置(例如,XX:Locationl和XX:Location2)的多个对象复制品。结论在此描述的系统和/或方法可以将对象的全局索引存储在分布式数据复制系统中,以及遍及分布式数据复制系统复制全局索引和部分对象。存储集群可以被分配为在全局索引的特定子集内的去重的责任实体。存储集群可以进行对全局索引的子集的扫描,并且基于扫描来识别冗余复制品。存储集群可以对本地存储或存储在远程存储集群中的冗余复制品进行去重。对实施方式的前面的描述提供了说明和描述,但是并不意在穷举或将本发明限制在所公开的精确形式。修改和变化根据上述教导是可能的或可以从本发明的实践获得。例如,在另一个实施方式中,可以使用去重算法的同步版本,其中不同的存储集群直接而不是使用在分布式数据复制系统内的复制层来通信。并且,虽然关于图6A-10来描述了块系列,但是在其它实施方式中,可以修改块的顺序。此外,可以并行执行非依赖性的块。将显而易见的是,在此描述的实施例可以以在附图中所图示的实施方式中的软件、固件以及硬件的许多不同形式实现。用于实现在此描述的实施例的实际软件代码或专用控制硬件并不是对本发明的限制。因此,没有参考特定软件代码描述了实施例的操作和行为一应该理解的是,软件和控制硬件可以基于在此的描述被设计来实现实施例。此外,在此描述的某些实施方式可以被实现为执行一个或多个功能的“逻辑”或“组件”。该逻辑或组件可以包括硬件,诸如处理器、微处理器、专用集成电路或现场可编程门阵列;或硬件和软件(例如,由处理器执行的软件)的组合。应当强调的是,词语“包括”在本说明书中使用时被采用来明确说明所述特征、完整物、步骤或组件的存在,但是并不排除一个或多个其它特征、完整物、步骤、组件或其组群的存在或添加。尽管在权利要求书中记载和/或在说明书中公开了特征的特定组合,但是这些组合并不意在限制本发明的公开。实际上,可以以未在权利要求书中明确记载和/或未在说明书中明确公开的方式对这些特征中的许多特征进行组合。除非明确描述如此,在本申请的描述中使用的元素、动作或指令均不应当被解释为对本发明是关键的或至关重要的。同时,如在此所使用的,不加数量词的项意指包括一个或多个项。在意指仅仅一个项时,使用词语“一个”或类似语言。此外,除非另外明确说明,如在此所使用的,短语“基于”意在表示“至少部分基于”。权利要求1.一种由分布式数据复制系统中的多个设备中的设备执行的方法,所述方法包括将对象的索引存储在所述分布式数据复制系统中,所述索引是在所述对象的复制品由所述分布式数据复制系统中的所述多个设备本地存储时被复制的;进行对所述索引的至少一部分的扫描;基于对所述索引的所述扫描来识别所述对象中的至少一个的冗余复制品;以及通过将去重记录写入所述索引的一部分来对所述冗余复制品进行去重。2.根据权利要求1所述的方法,其中使用所述分布式数据复制系统的基础复制层来复制对所述索引的改变。3.根据权利要求1所述的方法,其中所述设备是负责减少在所述索引的特定子集内的对象的冗余复制品的专门设备。4.根据权利要求1所述的方法,其中所述索引是包括在所述索引内的每一个对象的内容句柄的内容可寻址索引。5.根据权利要求4所述的方法,进一步包括将数据记录或删除请求记录写入与所述对象的所述内容句柄相关联的所述索引的一部分;以及将与所述对象的所述内容句柄相关联的所述索引的一部分复制到所述多个设备中的一个或多个其它设备。6.根据权利要求1所述的方法,进一步包括接收对包括在所述索引中的另一个对象的请求;基于所述索引来确定从其检索所述另一个对象的复制品的设备,所述设备从所述多个设备中选择;以及从所选择的设备检索所述另一个对象的所述复制品。7.根据权利要求1所述的方法,其中所述识别所述冗余复制品进一步基于区别两个或多个复制品之间的偏好的标准。8.根据权利要求1所述的方法,其中所述索引独立于所述设备内的所述复制品被存储。9.一种在分布式数据复制系统中的多个设备中的设备,所述设备包括用于将对象的索引存储在所述分布式数据复制系统中的装置;用于将改变写入所述索引以指定所述对象中的一个的复制品的状态的装置;用于将对所述索引的所述改变复制到所述分布式数据复制系统中的所述多个设备的装置;用于进行对所述索引的至少一部分的扫描的装置;用于基于对所述索引的所述扫描来识别所述对象中的所述一个的冗余复制品的装置;以及用于对所述冗余复制品进行去重的装置。10.根据权利要求9所述的系统,进一步包括用于对所述索引进行更新以反映去重复制品的所述状态的装置。11.一种系统,包括存储器,所述存储器用来存储指令、对象的数据存储以及所述数据存储中的所述对象的索引;以及处理器,所述处理器用来执行所述存储器中的所述指令来识别所述数据存储中的对象的状态,所述状态与所述对象是否具有复制品以及删除请求是否与所述对象相关联有关,基于所述对象的所述状态将去重指定记录写入所述索引,将具有所述去重指定记录的所述索引复制到一个或多个设备,以及从所述一个或多个设备中的一个接收与所述对象相关联的其它去重指定记录,其中所述去重指定记录和所述其它去重指定记录为对所述对象的一个或多个复制品的删除提供基础。12.根据权利要求11所述的系统,其中所述去重指定记录和所述其它去重指定记录使用分布式多主站数据复制环境中的复制层来交换。13.根据权利要求11所述的系统,其中所述处理器被进一步配置为进行对所述索引的一部分的扫描以识别所述对象的冗余复制品。14.根据权利要求11所述的系统,其中所述设备单独负责对所述索引内的对象的子集的去重。15.根据权利要求11所述的系统,其中所述去重指定记录包括存储所述对象的所述设备的集群标识;所述对象在所述设备内的存储位置的位置标识;以及所述对象的去重状态的指定部分。16.根据权利要求15所述的系统,其中所述指定部分包括以下的一个指示所述对象的活复制品的数据指定;指示对复制品的正在进行的删除请求的删除请求指定;以及指示已被选择用于去重的复制品的去重指定符。17.一种由一个或多个设备执行的方法,包括将对象的索引存储在分布式数据复制系统内的多个设备中,以及在本地存储所述对象时遍及所述分布式数据复制系统复制所述索引,其中每一个设备负责所述索引的特定子集内的所述对象的去重;进行对所述索引的所述子集中的每一个的扫描以基于所述扫描来识别冗余复制品;对所述冗余复制品进行去重;以及自动将对象从带有具有正在进行的删除请求的复制品的设备拷贝到带有先前已被去重的复制品的设备。18.根据权利要求17所述的方法,进一步包括将改变写入与所述对象中的一个相关联的所述索引的一部分,所述改变包括所述对象的复制品的数据记录、删除请求记录或去重记录。19.根据权利要求17所述的方法,进一步包括使用所述分布式数据复制系统的基础复制层来对所述索引的所述改变进行复制。20.根据权利要求17所述的方法,其中所述索引是包括在所述索引内的每一个对象的内容句柄的内容可寻址索引。21.一种包括计算机可执行的指令的计算机可读存储器,所述计算机可读存储器包括用来进行对分布式数据复制系统中的对象的索引的一部分的扫描的一个或多个指令;用来基于对所述索引的所述一部分的所述扫描来识别所述对象中的一个的冗余复制品的一个或多个指令;以及用来对所述冗余复制品进行去重的一个或多个指令。22.根据权利要求21所述的计算机可读存储器,进一步包括用来将改变写入与所述冗余复制品相关联的所述索引的一部分的一个或多个指令,所述改变包括所述冗余复制品的去重记录。23.根据权利要求21所述的计算机可读存储器,进一步包括用来接收对包括在所述索引中的另一个对象的请求的一个或多个指令;用来基于所述索引来选择从其检索所述另一个对象的复制品的存储集群的一个或多个指令;以及用来从所选择的存储集群检索所述另一个对象的所述复制品的一个或多个指令。全文摘要一种方法由分布式数据复制系统中的设备组中的设备执行。该方法包括将对象的索引存储在分布式数据复制系统中,所述索引在对象由分布式数据复制系统中的多个设备本地存储时被复制。该方法还包括进行对索引的至少一部分的扫描,以及基于对索引的扫描来识别对象中的至少一个的冗余复制品。该方法进一步包括对冗余复制品进行去重,以及对索引进行更新以反映冗余复制品的状态。文档编号G06F17/30GK102317938SQ200980156970公开日2012年1月11日申请日期2009年12月22日优先权日2008年12月22日发明者亚历山大·克塞尔曼,亚历山大·德罗贝切夫,贾·达图阿什维利申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1