CN102395967B - 用于复制内容可寻址存储集群的异步分布式对象上载 - Google Patents

用于复制内容可寻址存储集群的异步分布式对象上载 Download PDF

Info

Publication number
CN102395967B
CN102395967B CN201080016861.9A CN201080016861A CN102395967B CN 102395967 B CN102395967 B CN 102395967B CN 201080016861 A CN201080016861 A CN 201080016861A CN 102395967 B CN102395967 B CN 102395967B
Authority
CN
China
Prior art keywords
index
content
entry
key
chunk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080016861.9A
Other languages
English (en)
Other versions
CN102395967A (zh
Inventor
亚历山大·德罗贝切夫
亚历山大·克塞尔曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN102395967A publication Critical patent/CN102395967A/zh
Application granted granted Critical
Publication of CN102395967B publication Critical patent/CN102395967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种由在分布式数据复制系统中的一组装置中的两个或更多装置执行的方法。该方法包括:在所述两个或更多装置处接收具有相同的唯一临时标识符的一组组块,其中,所述一组组块包括要上载的对象;在所述两个或更多装置处建立在复制的索引的用于所述对象的条目,其中,所述条目以所述唯一临时标识符为键,并且其中,在所述两个或更多装置中的每一个处复制所述复制的索引;通过所述两个或更多装置的发起装置来确定所述一组组块的合集包含所述对象的所有数据。所述方法也包括:计算对于所述对象而言的基于内容的标识符;建立在所述复制的索引中的用于所述对象的另一个条目,其中,所述另一个条目以所述基于内容的标识符为键;并且更新所述复制的索引以从所述唯一临时标识符指向所述基于内容的标识符。

Description

用于复制内容可寻址存储集群的异步分布式对象上载
背景技术
企业计算情形已经在下述方面经历了在存储架构上的根本转移:中央服务架构已经让位于分布式存储集群。当企业寻求提高存储效率的方式时,与单块盘阵列相比较,从商品计算机建立的存储集群可以以成本的一部分向新的数据密集应用提供高性能、可用性和可扩展性。为了开启存储集群的全部潜力,跨越多个地理位置复制数据,由此提高可用性并且减小相对于客户端的网络距离。
在这样的系统中,在不同的集群中(使用多主机模型)动态地建立、克隆和删除分布式对象和引用,并且基础数据复制层维护写入顺序保真度,以保证所有的集群以相同的数据视图结束。
一些当前的可视化、多媒体和其他数据密集应用使用非常大的对象——通常几百吉字节或甚至太字节。通常通过下述方式来在流模式中进行这样的对象向分布式存储系统内的上载:将对象划分为组块,并且单独地上载每一个组块。该处理能够在上载时间中造出长的延迟,该上载时间可能被潜在的客户端和/或服务器故障加剧。结果,在提供一致性保证的流模式中的有效分布式对象上载正在变得对于存储业越来越重要,存储业正在被允许客户端连接到在某时可获得的任何集群的大型系统的需求驱动。
发明内容
根据一个实现方式,一种方法可以由在分布式数据复制系统中的一组装置的一个装置执行。所述方法可以包括:在所述一个或多个装置处从客户端接收上载对象的请求;所述一个或多个装置响应于所述请求向所述客户端发送所述对象的唯一临时标识;在所述一个或多个装置处接收具有所述唯一临时标识的一组组块,其中,所述一组组块包括所述上载的对象;通过所述一个或多个装置在用于所述分布式数据复制系统的索引中建立用于所述对象的条目,其中,所述条目以所述唯一临时标识为键;在所述一个或多个装置从所述客户端接收完成(finalize)所述上载的对象的请求;在所述一个或多个装置从所述一组组块重建所述对象;向所述上载的对象分配基于内容的标识符;以及,所述一个或多个装置在所述分布式数据复制系统的所述索引中建立用于所述对象的另一个条目,其中,所述另一个条目以所述基于内容的标识符为键。
根据另一个实现方式,在分布式数据复制系统中的一组装置的一个装置可以包括:用于在所述分布式数据复制系统中存储对象的索引的装置;用于将组块接收在用于所述分布式数据复制系统的新的对象内指定的偏移处的装置,其中,所述组的组块的每一个包括相同的临时标识符;用于向所述索引写入所述新的对象的所述临时标识符的装置;用于锁定所述新对象因此对所述新的对象内容的内容的任何未来修改都是不可能的装置;用于计算所述新的对象的基于内容的标识符的装置;以及,用于更新所述索引以允许通过所述基于内容的标识符访问所述新的对象的装置。
根据另一种实现方式,一种系统可以包括存储器,用于存储指令、对象的数据存储和在所述数据存储中的所述对象的索引。所述系统也可以包括处理器,用于执行在所述存储器中的所述指令,以:接收具有相同的唯一临时标识符的一组组块,其中,所述一组组块包括要上载的对象;在所述索引中建立用于所述对象的条目,其中,所述条目以所述唯一临时标识符为键;计算用于所述对象的基于内容的标识符;在所述索引中建立用于所述新的对象的另一个条目,其中,所述另一个条目以所述永久的基于内容的标识符为键;以及更新所述索引以从所述唯一临时标识符指向所述基于内容的标识符。
根据另一个实现方式,一种由两个或更多装置执行的方法可以包括:在所述两个或更多的装置处接收具有相同的唯一临时标识符的一组组块,其中,所述一组组块包括要上载的对象;在所述两个或更多的装置处建立在复制的索引中的用于所述对象的条目,其中,所述条目以所述唯一临时标识符为键,并且其中,所述复制的索引是在所述两个或更多的装置的每一个处复制的;通过所述两个或更多装置的发起装置来确定所述一组组块的合集包含所述对象的所有数据;通过所述发起装置来计算对于所述对象而言的基于内容的标识符;在所述两个或更多装置处建立在所述复制的索引中的用于所述对象的另一个条目,其中,所述另一个条目以所述基于内容的标识符为键;以及通过所述两个或更多装置更新所述复制的索引以从所述唯一临时标识符指向所述基于内容的标识符。
根据另一个实现方式,一种计算机可读存储器可以包括计算机可执行指令。所述计算机可读存储器可以包括:用于在指定的偏移处接收上载的对象的组块的指令,所述上载的对象包括具有相同的唯一临时标识符的一组组块;用于确定所述一组组块的合集是否包含所述上载的对象的所有数据的指令;用于锁定所述上载的对象以免未来对所述上载的对象的内容的修改的指令;用于计算用于所述上载的对象的基于内容的标识符的指令;用于在复制索引中建立所述上载的对象的条目的指令,其中,所述条目以所述基于内容的标识符为键;以及用于更新所述复制的索引以将对于在所述复制的索引中的所述唯一临时标识符的引用从所述唯一临时标识符改变为所述基于内容的标识符的指令。
附图说明
被合并到说明书中并且构成说明书的一部分的附图图示在此所述的一个或多个实施例,并且与说明书一起解释这些实施例。在附图中:
图1是其中可以实现在此所述的系统和方法的示例性系统的图;
图2是图1的文件系统的示例性配置的图;
图3是图1的存储集群的示例性组件的图;
图4是图1的示例性存储集群的功能框图;
图5是可以在分布式多主机数据复制系统的索引内使用的示例性完成记录结构的图;
图6是根据在此所述的实现方式的用于管理客户端发起的上载操作的示例性过程的流程图;
图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可以包括一个或多个服务器装置或其他类型的计算或通信装置,它们可以以在此描述的方式来存储、处理、搜索和/或提供信息。在一个实现方式中,存储集群120可以包括一个或多个服务器(例如,计算机系统和/或应用),它们能够维护文件的大型的、随机读/写存取的数据存储。存储集群120的数据存储可以允许索引系统在如果出现改变的情况下迅速地更新索引的部分。存储集群120的数据存储可以包括一个或多个表(例如,可以包括每一个统一资源定位符(URL)一行的文档表、以除了URL之外的值为键的辅助表等)。在一个示例中,存储集群120可以被包括在分布式存储系统中(例如,在下文中阐述的“大表”:Chang等人.,“Bigtable:A Distributed Storage System forStructured Data,”Proc.of the 7th OSDI,pp.205-218(Nov.2006)),其用于管理结构化的数据(例如,文档的随机存取的存储集群),该结构化的数据可以被设计得达到非常大的大小(例如,跨越成千上万的服务器的千万亿字节数据)。
虽然在图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相关联。可以通过在全局索引中的唯一内容句柄(诸如散列值、数字签名等)来列出每一个存储的对象。在在此所述的实现方式中,正在从客户端上载的新的对象可以被分配与新的对象的每一个组块相关联的、在全局索引中的唯一临时标识符(ID)。当已经接收到上载对象的所有组块时,存储集群中的一个可以向上载的对象分配永久内容句柄,并且更新全局索引以允许使用永久内容句柄来访问对象。由一个存储集群对于全局索引进行的改变可以被复制到其他存储集群。
虽然图2示出文件系统140的示例性功能组件,但是在其他实现方式中,文件系统140可以包含比在图2中描述的组件更少、另外、不同或不同地布置的组件。在其他实现方式中,文件系统140的一个或多个组件可以执行被描述为由文件系统140的一个或多个其他组件执行的一个或多个任务。
图3是存储集群120的示例性组件的图。存储集群120可以包括总线310、处理器320、主存储器330、只读存储器(ROM)340、存储装置350、输入装置360、输出装置370和通信接口380。总线310可以包括允许在存储集群120的组件之间进行通信的一个或多个导体。
处理器320可以包括可以解译和执行指令的任何类型的处理器或微处理器。主存储器330可以包括随机存取存储器(RAM)或另一种类型的动态存储装置,其可以存储信息和由处理器320执行的指令。ROM340可以包括ROM装置或另一种类型的静态存储装置,其可以存储静态信息和由处理器320使用的指令。存储装置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可以存储与全局索引相关联的信息。可以在多个存储集群120上复制复制索引存储412的至少一部分。用于每一个复制索引存储412的复制品的数量可以是用户可配置的。本地对象存储414可以在存储集群120内本地地存储对象。本地对象存储414可以包括文件,诸如由客户端(诸如,客户端110)上载的图像或视频。
组块处理逻辑420可以包括用于以下的逻辑:从客户端接收上载的组块,其中每一个组块通过其在对象内的偏移识别;和/或从在分布式多主机数据复制系统(例如,存储集群120-1、120-2、120-3和120-4)内的多个组块自动地重建对象。当客户端(例如,客户端110)开始上载对象时,组块处理逻辑420可以为对象分配唯一临时标识符,客户端可以使用其来上载对象的所有组块。当客户端(例如,客户端110)完成上载对象的所有组块时,客户端可以要求由在集群120中的一个的组块处理逻辑420执行完成功能。组块处理逻辑420可以在全局索引中进行改变以锁定(或密封)对象(例如,保证对对象内容的未来修改都是不可能的)。组块处理逻辑420也可以计算对象内容散列(例如,基于对象的内容产生的字母数字串),并且基于该散列向对象分配永久标识符。组块处理逻辑420可以进一步更新全局索引以允许使用永久标识符在分布式多主机数据复制系统中访问对象。
为了便利来自多个上载的组块的对象的完成,可以通过组块处理逻辑420产生记录(例如,元数据),并且将其附接到与特定的内容句柄或临时ID相关联的全局索引的一部分。由一个集群产生的记录可以最终传播到在分布式多主机数据复制系统中的其他集群处的索引复制品。记录可以包括例如:“FinStarted”标志符,用于指示对象完成已经开始;“FinSealed”标志符,用于指示已经通过索引复制了上载的对象组块的所有元数据,并且不可以对对象的内容进行进一步的改变;“FinRefCopy”标志符,用于指示应当在全局索引复制品中包括对于永久ID的交叉引用,并且应当从临时ID向永久ID索引条目复制对象引用;“FinRefCopyDone”标志符,用于指示已经向全局索引复制品增加交叉引用,并且已经从临时ID向永久ID索引条目复制所有的对象引用;以及“FinDone”标志符,用于将未来的引用从临时ID转向到永久ID索引条目,下面更详细地描述记录格式和使用。
虽然图4示出存储集群120的示例性功能组件,但是在其他实现方式中,存储集群120可以包含比在图4中描述的更少、另外、不同或不同地布置的功能组件。在其他实现方式中,存储集群120的一个或多个功能组件可以执行被描述为由一个或多个其他功能组件执行的一个或多个其他任务。
示例性记录结构
图5提供了在一个示例性实现方式中用于可以被写入全局索引的完成记录的示例性记录结构500的图示。完成记录可以在全局索引中与对象复制品的特定临时ID相关联。
如图5中所示,记录结构500可以包括指定部分510和位置部分520。指定部分510可以包括例如“FinStarted”标志符、“FinSealed”标志符、“FinRefCopy”标志符、“FinRefCopyDone”标志符或“FinDone”标志符。在上载的完成时从客户端(例如,客户端110)接收完成请求的存储集群120(在此被称为“发起集群”)可以向以临时ID为键的对象的元数据增加“FinStarted”记录。
“FinSealed”标志符可以被遇到“FinStarted”记录的每一个存储集群(包括发起集群)增加。“FinSealed”标志符可以用于指示不可对与“FinSealed”标志符相关联的对象复制品进行进一步的改变(例如,增加、更新或删除)。
“FinRefCopy”标志符可以被发起集群使用来指示从临时ID向永久ID(例如,基于用于对象的内容散列)的交叉引用。发起集群可以向在全局索引中的对象的元数据写入“FinRefCopy”消息。可以利用全局索引来复制“FinRefCopy”标志符以向其他存储集群120指示永久ID对于该对象可用,并且应当向永久ID索引条目复制与临时ID相关联的引用。“FinRefCopy”标志符也可以指示不可向临时ID索引条目增加新的引用。
“FinRefCopyDone”标志符可以用于指示集群已经将与临时ID相关联的任何引用复制到在全局索引复制品中的永久ID条目。当发起集群看到在分布式多主机数据复制系统中的所有存储集群的“FinRefCopyDone”标志符时,可以删除与临时ID相关联的“FinStarted”、“FinSealed”和“FinRefCopyDone”记录。在一个实现方式中,可以将“FinRefCopy”标志符留在全局索引中,以提供交叉引用以将对于临时ID的未来引用引导到永久ID。在另一个实现方式中,可以利用其他记录来删除“FinRefCopy”标志符,并且可以增加新的“FinDone”记录。
发起集群可以使用“FinDone”标志符来提供用于对应的对象复制品的从以临时ID为键的条目到永久ID(例如,基于用于对象的内容散列)的永久交叉引用。发起集群可以向在全局索引中的对象的元数据写入“FinDone”消息。可以利用全局索引来复制“FinDone”标志符以向其他存储集群120指示永久ID可用于对象,并且与临时ID相关联的引用应当被改变到永久ID索引条目。
在一个实现方式中,当指定部分510包括“FinStarted”、“FinSealed”或“FinRefCopyDone”指定时,位置部分520可以包括用于与在指定部分510中的指定相关联的存储集群120的唯一标识(例如,“集群ID”)。在另一个实现方式中,当指定部分510包括“FinRefCopy”或“FinDone”指定时,位置部分520可以包括对与对象复制品的临时ID相关联的永久ID的交叉引用。
可以以“指定:位置”的形式来列出记录结构500。例如,可以由具有记录“FinStarted:01”的存储集群120-1向全局索引增加具有临时ID的特定对象的记录,其中,“FinStarted”是标志符,并且其中,“01”是用于存储集群120-1的集群ID。用于在存储集群120-2中的同一对象的另一个复制品的记录可以是“FinRefCopy:cat1324”,其中,“FinRefCopy”是标志符,并且其中,“cat1324”是用于对象的永久ID。
示例性过程流
图6提供了根据在此所述的实现方式的用于管理客户端发起的上载操作的示例性过程600的流程图。在一个实现方式中,客户端110中的一个可以执行过程600。在另一个实现方式中,包括或不包括客户端110的另一个装置或一组装置可以执行过程600的一些或全部。
参见图6,过程600可以通过请求上载对象(块610)并且接收该对象的临时ID(块620)来开始。例如,客户端110可以向存储集群120提交向分布式多主机数据复制系统上载文件的请求。存储集群可以接收该请求,并且分配用于文件的唯一临时ID。可以以与在全局索引中使用的永久ID(例如,基于内容的散列)的格式相区别的任何格式来提供临时ID。客户端110可以从存储集群120接收临时ID。
可以将对象划分为组块(块630)。例如,客户端110可以将文件划分为没有重叠数据的多个组块。在一个实现方式中,每一个组块可以具有由其偏移和数据大小标识的对应的字节范围(例如,第一组块可以指示开始偏移0和63,900,000字节的组块大小;第二组块可以指示63,900,000的偏移和63,989,050字节的组块大小;第三组块可以指示127,889,049的偏移和62,800,000字节的组块大小;等等)。
可以异步地上载组块(块640),并且,可以发起完成请求(块650)。例如,客户端110可以向在分布式多主机数据复制系统中的任何可用的存储集群120上载组块。可以上载组块使得将每一个组块标注相同的分配的临时ID,因此,上载的组块的字节范围的合集覆盖整个文件。当上载最后的组块时,客户端110可以调用完成功能以发起在分布式多主机数据复制系统内的行为来锁定文件、计算文件的内容散列并且基于该散列来分配永久ID。具有上载的对象的元数据复制品的任何存储集群120可以接收完成请求。接收到完成请求的存储集群120可以作为相对于特定的上载文件的发起集群,以用于在分布式多主机数据复制系统内的随后的完成行为。
可以接收成功代码(块660)。例如,客户端110可以从存储集群120中的一个(例如,从发起集群)接收成功代码,以指示已经成功地向分布式多主机数据复制系统上载了文件。
图7是用于在分布式多主机数据复制系统(例如,文件系统140)中接收客户端发起的上载的示例性过程700的流程图。在一个实现方式中,存储集群120的一个或多个可以执行过程700。在另一个实现方式中,包括或不包括存储集群120的另一个装置或一组装置可以执行过程700的一些或全部。在每一个存储集群120中周期地实施过程700,并且过程700可以包括在存储集群120中的对象的全部或一部分的扫描。对于下面描述的过程700的具体示例,可以参考文件系统140的存储集群120-1和120-2,其中,存储集群120-1包括集群ID“01”,并且存储集群120-2包括集群ID“02”。
如图7中所示,过程700可以通过接收对象上载请求(块710)并且对于对象分配唯一临时ID来开始。例如,存储集群120-1可以从客户端110中的一个接收对于对象的上载请求。存储集群120可以为对象分配唯一临时ID,客户端110可以在上载期间使用其来指定对象的每一个组块。临时ID可以被用作用于上载的对象的全局索引中的键。可以以与在全局索引中使用的永久ID(例如,基于内容的散列)的格式相区别的任何格式来提供临时ID。
可以接收上载的组块(块730)。例如,一个或多个存储集群120以从客户端110接收组块。可以向在分布式多主机数据复制系统中的任何可用的存储集群120上载组块,使得可以在不同的存储集群120接收同一对象的不同组块。可以上载组块,使得将每一个组块标注相同的分配的临时ID,因此上载的组块的字节范围的合集覆盖整个对象。
可以接收完成请求(块740)。例如,存储集群120中的一个可以从上载对象组块的客户端110接收完成请求。在已经上载了对象的所有组块后,可以接收完成请求。接收该完成请求的存储集群120可以被称为发起集群。
可以从上载的组块重建对象(块750)。例如,存储集群120中的一个(例如,发起集群)可以通过分布式多主机数据复制系统的基础复制层接收与上载的对象相关联的所有组块的位置。使用用于每一个组块的唯一临时ID和字节范围序列,存储集群120可以从其当前位置复制组块,并且组配它们以重建上载的对象。
可以处理完成请求(块760)。例如,发起集群可以发起一系列异步行为来锁定对象(例如,保证对对象内容的进一步的修改都是不可能的),计算对象内容散列(例如,基于对象内容产生的字母数字串),并且基于该散列向对象分配永久ID。完成行为也可以更新全局索引以允许使用永久ID和临时ID来在分布式多主机数据复制系统中访问对象。参考图8-10来进一步描述完成请求的处理。
图8是用于在上面的块760中处理对上载的对象的完成请求的示例性过程的流程图。在一个实现方式中,发起集群(例如,存储集群120中的一个)可以执行该过程。在另一个实现方式中,可以由包括或不包括发起集群的另一个装置或一组装置执行该过程的一些或全部。对于在图8中的过程的特定示例,可以参考包括三个存储集群即存储集群120-1、120-2和120-3的分布式多主机数据复制系统(例如,文件系统140)。假定存储集群120-1是具有集群ID“01”的发起集群。存储集群120-2和120-3分别是具有集群ID“02”和“03”的独立的存储集群。
可以向对象元数据增加完成开始消息(块800)。例如,发起集群120-1(例如,组块处理逻辑420)可以向在发起集群120-1中存储的全局索引复制品中的对象元数据增加“FinStarted:01”。与对于全局索引的任何更新相同,可以最后向在分布式多主机数据复制系统中的其他存储集群(例如,包括存储集群120-2和120-3)处的全部全局索引复制品传播完成开始消息。
可以向客户端发送成功代码(块810)。例如,发起集群120-1可以向发起对象上载的客户端110发送成功代码。成功代码可以指示已经成功地上载了对象的所有组块,并且从客户端110的角度看,上载过程完成。
可以在每一个集群进行全局索引复制品的异步扫描操作(块820)。例如,存储集群120-1、120-2和120-3的任何一个可以周期地进行它们各自的全局索引复制品的全部或一部分的扫描和/或向其的写入。参考图9来进一步讨论扫描操作。
图9是根据在此所述的实现方式的用于在存储集群进行扫描操作的示例性过程的流程图。在一个实现方式中,存储集群120中的一个(例如,存储集群120-1、120-2或120-3)可以执行该过程。在分布式多主机数据复制系统内的每一个存储集群120可以异步地执行该过程,直到上载的对象的完成完成。对于在图9中的过程的具体示例,可以参考包括三个存储集群即存储集群120-1、120-2和120-3的分布式多主机数据复制系统(例如,文件系统140)。假定存储集群120-1是具有集群ID“01”的发起集群。存储集群120-2和120-3分别是具有集群ID“02”和“03”的独立的存储集群。
可以发起全局索引复制品的扫描(块900)。例如,存储集群120-2可以执行在存储集群120-2内存储的全局索引复制品的离线扫描。该扫描可以查看在存储集群120-2中的所有索引条目。
可以确定以临时ID为键的条目是否具有完成开始消息(块910)。例如,存储集群120-2可以遇到在以临时ID为键的全局索引复制品中的对象,并且包括来自另一个存储集群(例如,来自存储集群120-1)的完成开始消息(例如,“FinStarted:01”)。如果以临时ID为键的条目没有完成开始消息(块910-否),则过程可以返回到块900,以继续扫描或最终发起全局索引复制品的另一个扫描。
如果以临时ID为键的条目具有完成开始消息(块910-是),则在对于进行扫描的存储集群没有已经存在对象锁定消息的情况下,可以向对象消息数据增加对象锁定消息(块920)。例如,当在存储集群120-2中的扫描在以临时ID为键的条目中看到“FinStarted:01”时,存储集群120可以向在存储集群120-2中的全局索引复制品中的对象的元数据增加“FinSealed:02”。“FinSealed”消息的存在禁止对应的存储集群的其他系统组件对上载的对象字节进行任何改变(增加、更新、删除)。
可以从在分布式多主机数据复制系统中的所有存储集群确定以临时ID为键的条目是否具有对象锁定消息(块930)。例如,发起集群120-1可能遇到以临时ID为键的全局索引复制品中的对象,并且包括来自在分布式多主机数据复制系统中的所有存储集群(例如,来自存储集群120-1、120-2和120-3)的对象锁定消息(例如,“FinSealed:01”、“FinSealed:02”、“FinSealed:03”)。如果以临时ID为键的条目没有来自所有存储集群的对象锁定消息(块930-否),则过程可以返回到块900,以继续扫描或最终发起对全局索引复制品的另一个扫描。
如果以临时ID为键的条目具有来自所有存储集群的对象锁定消息(块930-是),则可以增加永久ID和条目对于永久ID的复制引用——如果尚未存在(块940)。例如,如果在发起集群120-1中的扫描在以临时ID为键的条目中看到所有存储集群的对象锁定消息(例如,“FinSealed:01”、“FinSealed:02”、“FinSealed:03”),则存储集群120-1(例如,组块处理逻辑420)可以计算对象的内容散列,并且基于内容散列来建立永久对象ID。存储集群120-1可以然后向在存储集群120-1中的对象的元数据增加“FinRefCopy:PermID”(其中,PermID是基于内容散列而新产生的永久ID)。“FinRefCopy:PermID”消息的存在也可以禁止其他系统组件对在其他存储集群(例如,存储集群120-2和120-3)中的对象的字节以及与对象的元数据一起存储的引用进行任何改变(例如,增加、更新、删除)。
可以确定以临时ID为键的条目是否具有对于永久ID的复制引用(块950)。例如,任何存储集群120(例如,存储集群120-1、120-2或120-3的任何一个)可能遇到以临时ID为键的全局索引复制品中的对象,并且包括复制引用消息(例如,“FinRefCopy:PermID”)。如果以临时ID为键的条目没有对于永久ID的复制引用(块950-否),则过程可以返回到块900以继续扫描或最终发起全局索引复制品的另一个扫描。
如果以临时ID为键的条目具有对于永久ID的复制引用(块950-是),则在临时ID条目中的对象引用可以被复制到永久ID条目,并且,如果没有的话可以增加复制结束消息(块960)。例如,如果存储集群120-2中的扫描在以临时ID为键的条目中看到“FinRefCopy:PermID”,则存储集群120-2可以将在临时ID条目中列出的所有的对象引用复制到以对应的永久ID为键的条目。一旦复制完成,则存储集群120-2可以向存储集群120-2中以临时ID为键的条目增加“FinRefCopyDone:02”。
可以确定以临时ID为键的条目是否具有来自所有的集群的复制结束消息(块970)。例如,发起集群120-1可能遇到在以临时ID为键的全局索引复制品中的对象,并且包括来自在分布式多主机数据复制系统中的所有存储集群(例如,来自存储集群120-1、120-2和120-3)的复制结束消息(例如,“FinRefCopyDone:01”、“FinRefCopyDone:02”、“FinRefCopyDone:03”)。如果以临时ID为键的条目没有复制结束消息(块970-否),则过程可以返回到块900,以继续扫描或最终发起全局索引复制品的另一个扫描。
如果以临时ID为键的条目具有复制结束消息(块970-是),则可以去除与临时ID相关联的多余元数据,并且可以增加完成结束消息(块980)。例如,如果发起存储集群120-1中的扫描在以临时ID为键的条目中看到所有存储集群的“FinRefCopyDone”(例如,“FinRefCopyDone:01”、“FinRefCopyDone:02”、“FinRefCopyDone:03”),则发起集群120-1可以从以临时ID为键的条目去除所有的完成开始(“FinStarted”)、对象锁定(“FinSealed”)、复制引用(“FinRefCopy”)消息和复制结束(“FinRefCopyDone”)消息。发起集群也可以增加“FinDone:PermID”消息以提供从以临时ID为键的条目到以对应的永久ID(例如,基于对象的内容散列)为键的条目的永久交叉引用。注意完成过程不影响对于临时ID的预先存在的对象引用的有效性。多余元数据的去除可以完成上载的对象的完成过程。该过程可以返回到块900,以继续扫描或最终发起全局索引复制品的另一个扫描。
在另一个实现方式中,如果客户端(例如,客户端110)在开始上载过程之前预先计算永久对象ID,则可以优化上述过程。在这种变化形式中,可以消除对于以新的永久ID为键的条目的引用的复制(例如,“FinRefCopy”消息)。相反,一旦已经从所有的存储集群120接收到“FinSealed”消息,发起集群120可以简单地将上载的对象标注为完成。注意,在这种变化形式中的临时ID等于永久ID。
图10提供了用于向复制的存储集群的全局索引增加新的对象引用的示例性过程1000的流程图。通常,意欲向以临时ID为键的索引条目增加引用的在分布式多主机数据复制系统中的任何系统组件可以首先检查是否在那个条目中存在复制引用消息。如果找到复制引用消息,则取而代之向以对应的永久ID为键的条目增加新的引用。在一个实现方式中,存储集群120中的一个(例如,存储集群120-1、120-2或120-3)可以执行该过程。在分布式多主机数据复制系统内的每一个存储集群120可以异步地执行该过程,直到已经在每一个存储集群120复制了新的引用。
可以接收对于以临时ID为键的对象的引用请求(块1010)。例如,存储集群120-1可以接收向以临时ID“TempID3”为键的索引条目增加新的引用的请求(例如,基于已经上载但是还没有完成的对象的引用)。
可以确定以临时ID为键的条目是否具有对于永久ID的交叉引用(块1020)。例如,存储集群120-1可以扫描以“TempID3”为键的条目,以识别在条目中的任何“FinRefCopy”消息或“FinDone”消息。如果以临时ID为键的条目具有对于永久ID的交叉引用(块1020-是),则可以向以永久ID为键的条目增加引用(块1030)。例如,存储集群120-1可以识别“FinRefCopy:PermID4”消息,并且向以“PermID4”为键的条目增加新的引用。如果以临时ID为键的条目没有对于永久ID的交叉引用(块1020-否),则可以向以临时ID为键的条目增加引用(块1040)。例如,如果未找到“FinRefCopy”消息或“FinDone”消息,则存储集群120-1可以向以“TempID3”为键的条目增加新的引用。
示例
图11提供了根据在此所述的实现方式的示例性全局索引复制品的部分1100。该索引可以包括内容句柄列1110和完成记录列1120。诸如对象引用和组块元数据(未示出)的其他信息也可以被包括在全局索引复制品中。为了清楚,在部分1100中示出内容句柄列1110和完成记录列1120。在其他实现方式中,在全局索引复制品中的完成记录可以与其他记录混合并且使用或不使用列被分隔符(例如,逗号、空格等)界定。其他数据结构也可以用于全局索引复制品。
假定在示例性索引复制品部分1100中分布式多主机数据复制系统包括三个存储集群XX、YY和ZZ。完成算法可以在存储集群XX、YY和ZZ的每一个中周期地运行,并且可以扫描全局索引的全部或一部分。而且,可以由存储集群XX、YY或ZZ中的一个向与特定的对象内容句柄相关联的全局索引复制品写入消息(例如,FinStarted、FinSealed、FinRefCopy和FinRefCopyDone)。对全局索引的修改可以被复制到所有其他的参与集群(例如,存储集群X、YY和ZZ的剩余者)。
如图11中所示,索引部分1100包括用于三个对象的内容句柄和相关联的完成记录。以“TempID06”为键的行1130具有用于指示发起集群XX已经对与“TempID06”相关联的对象开始了完成过程。行1130也包括用于指示已经在存储集群XX(即,“FinSealed:XX”)、在存储集群YY(即,“FinSealed:YY”)和在存储集群ZZ(即,“FinSealed:ZZ”)锁定了对象的记录。发起集群XX已经识别了用于在分布式多主机数据复制系统中的所有存储集群的“FinSealed”消息并且确认与“TempID06”对应的对象的所有字节已经被上载到XX、YY和ZZ,该发起集群XX已经计算了对象的内容散列(即,“PermID07”)。存储集群XX因此已经向行1130中的完成记录增加“FinRefCopy:PermID07”,并且建立以“PermID07”为键的新行1150,该新行1150包括来自行1130的对象引用。复制结束消息(即,“FinRefCopyDone:XX”)也已经被包括在行1130中,以指示存储集群XX已经完成了复制过程。一旦从其他存储集群YY和ZZ提供了“FinRefCopyDone”消息(并且将该消息复制到发起集群XX),则发起集群XX可以删除多余的消息数据(即,“FinStarted:XX”、“FinSealed:XX”、“FinSealed:YY”、“FinSealed:ZZ”、“FinRefCopy:PermID07”、“FinRefCopyDone:XX”和其他“FinRefCopyDone”消息)(并且,该删除被复制到剩余的集群)。
以“TempID08”为键的行1140具有用于指示已经对于与“TempID08”相关联的对象完成了完成过程的记录。来自完成过程的多余数据已经被删除,并且仅对永久ID的交叉引用(即,“FinDone:PermID09”)保留在完成记录中。以“PermID09”为键的新的行1160包括来自行1140的对象引用。
如在上述实现方式中所示,在此所述的系统和方法保证完成从临时ID向新的永久ID的最终转变。可以在对象的永久ID下复制曾经在对象的临时ID下记录的所有引用,并且不能在未来在对象的临时ID下记录新的引用。
结论
在此所述的系统和/或方法可以包含用于在内容可寻址存储集群中的复制使用的异步分布式对象上载算法。该算法使用基础数据复制层来复制包含包括对象的组块的位置的索引。可以随着时间在不同的集群中上载组块,直到明确地完成对象。在已经上载了所有组块后,可以向内容可寻址的索引系统内插入对象。
上述的实现方式的描述提供了图示和说明,但是不意欲是穷尽性的或将本发明限于所公开的精确的形式。修改和改变基于上面的教导是可能的,或可以通过本发明的实践来获取修改和改变。
例如,在另一个实现方式中,可以使用完成算法的同步版本,其中,不同的存储集群直接地进行通信,而不是使用在分布式数据复制系统内的复制层来进行通信。
而且,虽然参考图6-10描述了块系列,但是可以在其他实现方式中修改块的顺序。而且,可以并行地执行非依赖的块。
显然,可以以在附图中图示的实现方式中的软件、固件和硬件的许多不同形式来实现在此所述的实施例。用于实现在此所述的实施例的实际软件代码或专用控制硬件不是对于本发明的限制。因此,没有参考特定的软件代码来描述实施例的操作和行为——可以明白,软件和控制硬件可以基于在此的说明被设计来实现所述实施例。
而且,在此所述的某些实现方式可以被实现为执行一个或多个功能的“逻辑”或“组件”。该逻辑或组件可以包括:硬件,诸如处理器、微处理器、专用集成电路或场可编程门阵列;或者,硬件和软件(例如,由处理器执行的软件)的组合。
应当强调,词语“包括”和/或“包含”当在本说明书中使用时用于指定所述特征、完整物、步骤或组件的存在,但是不排除一个或多个其他特征、完整物、步骤、组件或其组的存在或者增加。
即使在权利要求中描述和/或在说明书中公开了特征的特定组合,这些组合也不意欲限制本公开的公开。事实上,可以以未具体地在权利要求中描述和/或在说明书中公开的方式来组合这些特征中的许多。
在本申请的说明书中使用的元素、行为或指令不应当被理解为对于本发明是关键或必要的,除非明确描述如此。而且,不加数量词限定的项意欲包括一个或多个项。在仅意欲表示一个项目的情况下,使用词语“一个”或类似的语言。而且,在此使用的短语“基于”意欲表示“至少部分地基于”,除非另外明确地说明。

Claims (18)

1.一种由在分布式数据复制系统中的多个装置中的一个或多个装置执行的方法,所述方法包括:
在所述一个或多个装置处从客户端接收上载对象的请求;
通过所述一个或多个装置基于所述请求向所述客户端发送用于所述对象的唯一临时标识符;
在所述一个或多个装置处接收具有所述唯一临时标识符的多个组块,其中,所述多个组块包括所述上载的对象;
通过所述一个或多个装置在用于所述分布式数据复制系统的索引中建立用于所述上载的对象的条目,其中,所述条目以所述唯一临时标识符为键;
在所述一个或多个装置处从所述客户端接收完成所述上载的对象的请求;
基于接收完成所述上载的对象的所述请求,通过所述一个或多个装置发起一系列异步行为来锁定所述上载的对象;
在所述一个或多个装置处从所述多个组块重建所锁定的对象;
向所锁定的对象分配基于内容的标识符;以及
通过所述一个或多个装置在所述分布式数据复制系统的索引中建立用于所锁定的对象的另一个条目,其中,所述另一个条目以所述基于内容的标识符为键。
2.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个装置向所述客户端发送成功代码,以确认接收到所述多个组块。
3.根据权利要求1所述的方法,进一步包括:
从在所述索引中的以所述唯一临时标识符为键的条目向在所述索引中以所述基于内容的标识符为键的所述另一个条目复制用于所述对象的引用。
4.根据权利要求1所述的方法,其中,所述索引是内容可寻址索引,包括用于所述索引内的每一个对象的内容句柄。
5.根据权利要求1所述的方法,其中锁定所上载的对象包括:
通过所述一个或多个装置向与用于所述对象的所述唯一临时标识符相关联的所述索引的部分写入对象锁定消息;以及
其中所述方法进一步包括:
将与用于所述对象的所述唯一临时标识符相关联的所述索引的所述部分复制到所述多个装置中的一个或多个其他装置。
6.根据权利要求5所述的方法,进一步包括:
通过所述一个或多个装置向与用于所述对象的所述唯一临时标识符相关联的所述索引的所述部分写入对与用于所述对象的所述基于内容的标识符相关联的所述索引的部分的交叉引用。
7.根据权利要求6所述的方法,进一步包括:
在写入对与用于所述对象的所述基于内容的标识符相关联的所述索引的部分的所述交叉引用后,通过所述一个或多个装置从与用于所述对象的所述唯一临时标识符相关联的所述索引的所述部分删除所述对象锁定消息。
8.根据权利要求1所述的方法,其中,在所述一个或多个装置中的每一个内与所述对象分离地存储所述索引。
9.一种分布式数据复制系统,包括:
用于在所述分布式数据复制系统中存储对象的索引的装置;
用于接收用于所述分布式数据复制系统的新对象的组块的装置,所述组块包括形成所述新对象的多个组块的最后组块,其中,所述多个组块中的每一个包括同一临时标识符;
用于向所述索引写入所述新对象的所述临时标识符的装置;
用于锁定所述新对象使得对所述新对象内容的内容的任何未来的修改都是不可能的装置;
用于计算所述新对象的基于内容的标识符的装置;以及
用于更新所述索引以允许通过所述基于内容的标识符访问所述新对象的装置。
10.根据权利要求9所述的系统,进一步包括:
用于向在所述索引中的所述基于内容的标识符复制对在所述索引中的所述临时标识符的引用的装置。
11.一种分布式数据复制系统,包括:
用于接收具有相同的唯一临时标识符的多个组块的装置,其中,所述多个组块包括要上载的对象;
用于在索引中建立用于所述对象的条目的装置,其中,所述条目以所述唯一临时标识符为键;
用于计算用于所述对象的基于内容的标识符的装置;
用于锁定所述对象以免对所述对象的内容的未来修改的装置;
用于在所述索引中建立用于所述对象的另一个条目的装置,其中,所述另一个条目以基于内容的标识符为键;以及
用于更新所述索引以从所述唯一临时标识符指向所述基于内容的标识符的装置。
12.根据权利要求11所述的系统,进一步包括:
用于接收上载所述对象的请求的装置,以及
用于对于要上载的所述对象分配所述唯一临时标识符的装置。
13.根据权利要求11所述的系统,进一步包括:
用于接收完成所述对象的请求的装置,以及
用于从所述多个组块重建所述对象的装置。
14.根据权利要求11所述的系统,进一步包括:
用于发送成功代码以确认接收到所述多个组块的装置。
15.根据权利要求11所述的系统,进一步包括:
用于从在所述索引中的以所述唯一临时标识符为键的所述条目向在所述索引中的以所述基于内容的标识符为键的所述条目复制对所述临时标识符的引用的装置。
16.一种由两个或更多装置执行的方法,所述方法包括:
在所述两个或更多装置处接收具有相同的唯一临时标识符的多个组块,其中,所述多个组块包括要上载的对象;
在所述两个或更多装置处建立在复制的索引中的用于所述对象的条目,其中,所述条目以所述唯一临时标识符为键,并且其中,所述复制的索引是在所述两个或更多装置中的每一个处复制的;
通过所述两个或更多装置中的发起装置来确定所述多个组块的合集包含所述对象的所有数据;
通过所述两个或更多装置锁定所述对象以免对所述对象的内容的未来修改;
通过所述发起装置来计算用于所述对象的基于内容的标识符;
在所述两个或更多装置处建立在所述复制的索引中的用于所述对象的另一个条目,其中,所述另一个条目以所述基于内容的标识符为键;以及
通过所述两个或更多装置更新所述复制的索引以从所述唯一临时标识符指向所述基于内容的标识符。
17.根据权利要求16所述的方法,其中,所述复制的索引是使用分布式多主机数据复制系统的基础复制层来复制的。
18.根据权利要求16所述的方法,其中,所述复制的索引是内容可寻址索引。
CN201080016861.9A 2009-04-21 2010-04-16 用于复制内容可寻址存储集群的异步分布式对象上载 Active CN102395967B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/427,367 US8171202B2 (en) 2009-04-21 2009-04-21 Asynchronous distributed object uploading for replicated content addressable storage clusters
US12/427,367 2009-04-21
PCT/US2010/031410 WO2010123773A1 (en) 2009-04-21 2010-04-16 Asynchronous distributed object uploading for replicated content addressable storage clusters

Publications (2)

Publication Number Publication Date
CN102395967A CN102395967A (zh) 2012-03-28
CN102395967B true CN102395967B (zh) 2015-06-17

Family

ID=42651056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080016861.9A Active CN102395967B (zh) 2009-04-21 2010-04-16 用于复制内容可寻址存储集群的异步分布式对象上载

Country Status (9)

Country Link
US (3) US8171202B2 (zh)
EP (1) EP2422282B1 (zh)
JP (1) JP5433074B2 (zh)
CN (1) CN102395967B (zh)
AU (1) AU2010239529B2 (zh)
BR (1) BRPI1011326B1 (zh)
CA (1) CA2758518C (zh)
DE (1) DE202010018481U1 (zh)
WO (1) WO2010123773A1 (zh)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6929637B2 (en) 2002-02-21 2005-08-16 Spiration, Inc. Device and method for intra-bronchial provision of a therapeutic agent
US8171202B2 (en) * 2009-04-21 2012-05-01 Google Inc. Asynchronous distributed object uploading for replicated content addressable storage clusters
US20110119327A1 (en) * 2009-11-17 2011-05-19 Casdex, Inc. System and Method for Efficiently Uploading Data Into A Content Addressable Storage System
US20110191446A1 (en) * 2010-01-29 2011-08-04 Clarendon Foundation, Inc. Storing and streaming media content
US20130179513A1 (en) * 2010-11-15 2013-07-11 Nec Corporation Behavior information collection device and behavior information transmission device
US8433681B2 (en) 2011-05-12 2013-04-30 Dell Products L.P. System and method for managing replication in an object storage system
US8849759B2 (en) * 2012-01-13 2014-09-30 Nexenta Systems, Inc. Unified local storage supporting file and cloud object access
US8782004B2 (en) * 2012-01-23 2014-07-15 Palantir Technologies, Inc. Cross-ACL multi-master replication
CN103491124B (zh) * 2012-06-14 2018-08-14 南京中兴软件有限责任公司 一种对彩信数据进行处理的方法及分布式缓存系统
US9824132B2 (en) * 2013-01-08 2017-11-21 Facebook, Inc. Data recovery in multi-leader distributed systems
US9158472B2 (en) * 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US9900384B2 (en) * 2013-07-12 2018-02-20 Adobe Systems Incorporated Distributed caching in a communication network
CN104917798A (zh) * 2014-03-13 2015-09-16 北京奇虎科技有限公司 一种数据更新的方法和系统
CN105528346B (zh) * 2014-09-28 2019-03-08 阿里巴巴集团控股有限公司 提供媒体内容信息的方法及装置
CN105528344B (zh) 2014-09-28 2018-12-21 阿里巴巴集团控股有限公司 确定存储设备中被读取数据所属媒体信息的方法及装置
US10095710B1 (en) 2014-12-19 2018-10-09 EMC IP Holding Company LLC Presenting cloud based storage as a virtual synthetic
US10095707B1 (en) 2014-12-19 2018-10-09 EMC IP Holding Company LLC Nearline cloud storage based on FUSE framework
US10235463B1 (en) * 2014-12-19 2019-03-19 EMC IP Holding Company LLC Restore request and data assembly processes
US9753814B1 (en) 2014-12-19 2017-09-05 EMC IP Holding Company LLC Application level support for selectively accessing files in cloud-based storage
US10120765B1 (en) 2014-12-19 2018-11-06 EMC IP Holding Company LLC Restore process using incremental inversion
US20160259810A1 (en) * 2015-03-06 2016-09-08 Hewlett-Packard Development Company, L.P. Global file index
US10277601B1 (en) 2015-05-11 2019-04-30 Google Llc System and method for recursive propagating application access control
US10650024B2 (en) 2015-07-30 2020-05-12 Google Llc System and method of replicating data in a distributed system
CN105243027A (zh) * 2015-09-24 2016-01-13 华为技术有限公司 在存储设备中存储数据的方法和存储控制器
US10554761B2 (en) 2015-12-12 2020-02-04 At&T Intellectual Property I, Lp Methods and apparatus to improve transmission of a field data set to a network access point via parallel communication sessions
US11126613B2 (en) * 2018-04-24 2021-09-21 Duvon Corporation Autonomous exchange via entrusted ledger immutable distributed database
US10635547B2 (en) * 2018-07-31 2020-04-28 Nutanix, Inc. Global naming for inter-cluster replication
US10732881B1 (en) * 2019-01-30 2020-08-04 Hewlett Packard Enterprise Development Lp Region cloning for deduplication
US11809382B2 (en) 2019-04-01 2023-11-07 Nutanix, Inc. System and method for supporting versioned objects
US11106698B2 (en) * 2019-06-11 2021-08-31 Sap Se Multi-master with ownership transfer
US20210089553A1 (en) * 2019-09-19 2021-03-25 Okera, Inc. Data retrieval using distributed workers in a large-scale data access system
US11269536B2 (en) 2019-09-27 2022-03-08 Open Text Holdings, Inc. Method and system for efficient content transfer to distributed stores
US11609777B2 (en) 2020-02-19 2023-03-21 Nutanix, Inc. System and method for multi-cluster storage
US11082495B1 (en) 2020-04-07 2021-08-03 Open Text Holdings, Inc. Method and system for efficient content transfer to a server
US20210334284A1 (en) 2020-04-28 2021-10-28 Nutanix, Inc. System and method of querying objects on demand
US11487787B2 (en) 2020-05-29 2022-11-01 Nutanix, Inc. System and method for near-synchronous replication for object store
US11768954B2 (en) 2020-06-16 2023-09-26 Capital One Services, Llc System, method and computer-accessible medium for capturing data changes
US12001872B2 (en) 2020-10-14 2024-06-04 Nutanix, Inc. Object tiering from local store to cloud store
US11900164B2 (en) 2020-11-24 2024-02-13 Nutanix, Inc. Intelligent query planning for metric gateway
US11822370B2 (en) 2020-11-26 2023-11-21 Nutanix, Inc. Concurrent multiprotocol access to an object storage system
US11899572B2 (en) 2021-09-09 2024-02-13 Nutanix, Inc. Systems and methods for transparent swap-space virtualization

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185348A (ja) * 1994-12-27 1996-07-16 Canon Inc 情報処理装置および情報処理方法
JPH11154110A (ja) * 1997-11-20 1999-06-08 Nippon Telegr & Teleph Corp <Ntt> ミラーサーバの同期方法
US6952737B1 (en) * 2000-03-03 2005-10-04 Intel Corporation Method and apparatus for accessing remote storage in a distributed storage cluster architecture
JP4546629B2 (ja) * 2000-05-25 2010-09-15 株式会社日立製作所 記憶システム、記憶システムの応答方法及び記録媒体
JP2003044342A (ja) * 2001-07-30 2003-02-14 Ppp Design Corp データ漏洩防止システム及びその入出力端末機、並びにインターネット通信におけるデータ送信方法
CN1294514C (zh) * 2001-08-20 2007-01-10 信息中心科技有限公司 高效的计算机文件备份系统和方法
US7546284B1 (en) * 2003-06-11 2009-06-09 Blue Titan Software, Inc. Virtual message persistence service
JP2005250819A (ja) * 2004-03-04 2005-09-15 Hitachi Ltd レプリケーションdb整合性確認方法
CA2622404A1 (en) * 2004-09-15 2006-03-23 Adesso Systems, Inc. System and method for managing data in a distributed computer system
CA2590361C (en) * 2004-11-05 2012-01-03 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method
US7376681B1 (en) * 2004-12-23 2008-05-20 Emc Corporation Methods and apparatus for accessing information in a hierarchical file system
US20070038681A1 (en) * 2005-08-10 2007-02-15 Spare Backup, Inc. System and method of remote storage of data through connection from a server to a client
CN101438538B (zh) * 2006-05-09 2012-01-11 日本电气株式会社 通信系统、节点、终端、通信方法
JP2008271097A (ja) * 2007-04-19 2008-11-06 Hitachi Ltd 通信装置およびクライアント装置
JP2009076172A (ja) * 2007-09-25 2009-04-09 Hitachi Ltd データ伝送方法、光ディスク記録方法及び光ディスク記録装置
US20100017259A1 (en) * 2008-07-15 2010-01-21 Publiso, Inc. Method and system of automatically setting and changing price for online content selling
US8171202B2 (en) 2009-04-21 2012-05-01 Google Inc. Asynchronous distributed object uploading for replicated content addressable storage clusters

Also Published As

Publication number Publication date
US20100268902A1 (en) 2010-10-21
WO2010123773A1 (en) 2010-10-28
US8171202B2 (en) 2012-05-01
US20120259948A1 (en) 2012-10-11
AU2010239529B2 (en) 2013-05-09
AU2010239529A1 (en) 2011-11-03
CA2758518A1 (en) 2010-10-28
BRPI1011326B1 (pt) 2020-10-13
EP2422282B1 (en) 2019-03-13
US20130268486A1 (en) 2013-10-10
JP5433074B2 (ja) 2014-03-05
JP2012524943A (ja) 2012-10-18
CN102395967A (zh) 2012-03-28
BRPI1011326A2 (pt) 2016-03-15
DE202010018481U1 (de) 2017-01-17
CA2758518C (en) 2016-09-13
EP2422282A1 (en) 2012-02-29
US8468291B2 (en) 2013-06-18
US8683112B2 (en) 2014-03-25

Similar Documents

Publication Publication Date Title
CN102395967B (zh) 用于复制内容可寻址存储集群的异步分布式对象上载
US11943290B2 (en) Asynchronous distributed de-duplication for replicated content addressable storage clusters
JP6553822B2 (ja) 分散システムにおける範囲の分割および移動
JP6118515B2 (ja) 連想メモリ更新のためのシステム
US9495433B2 (en) Data transfer optimization
CN101061467B (zh) 远程存储数据副本
US8825602B1 (en) Systems and methods for providing data protection in object-based storage environments
CN101334797A (zh) 一种分布式文件系统及其数据块一致性管理的方法
CN102640151A (zh) 信息系统中转换后的数据的高吞吐量、可靠复制
CN1906594A (zh) 使用虚拟技术保持远程拷贝的一致性
JP7408626B2 (ja) テナント識別子の置換
JP2016514393A (ja) 差分符号化のためのシリアライゼーション
US8862550B1 (en) Reliable in-place bootstrap metadata transformation in a shared data store
US20230126173A1 (en) Methods, devices and systems for writer pre-selection in distributed data systems
JP6413792B2 (ja) ストレージシステム
CN103180848A (zh) 一种用于复制数据的系统和方法
WO2021006720A1 (en) Method and system for updating database
Hill et al. Dbsync: A Computer Program for maintaining duplicate database tables

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.