JP2017500670A - 分散ストレージシステムにおけるオブジェクトの階層チャンキング - Google Patents

分散ストレージシステムにおけるオブジェクトの階層チャンキング Download PDF

Info

Publication number
JP2017500670A
JP2017500670A JP2016543054A JP2016543054A JP2017500670A JP 2017500670 A JP2017500670 A JP 2017500670A JP 2016543054 A JP2016543054 A JP 2016543054A JP 2016543054 A JP2016543054 A JP 2016543054A JP 2017500670 A JP2017500670 A JP 2017500670A
Authority
JP
Japan
Prior art keywords
journal
chunk
stored
metadata
instance
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.)
Granted
Application number
JP2016543054A
Other languages
English (en)
Other versions
JP6479020B2 (ja
JP2017500670A5 (ja
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 JP2017500670A publication Critical patent/JP2017500670A/ja
Publication of JP2017500670A5 publication Critical patent/JP2017500670A5/ja
Application granted granted Critical
Publication of JP6479020B2 publication Critical patent/JP6479020B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

分散ストレージシステムにおけるオブジェクトレプリカの配置は、第1のインスタンスにおいて、オブジェクトチャンクのストレージについてジャーナルをオープンにすることを含む。各ジャーナルは単一の配置ポリシーに関連付けられる。オブジェクトが受け取られ、これはチャンクを含む。オブジェクトは配置ポリシーを有し、チャンクは複数のストレージブロックを含む。ブロックは、配置ポリシーとマッチするジャーナルに格納される。オブジェクトについてのグローバルメタデータが格納され、グローバルメタデータは、オブジェクトについてのチャンクのリストを含む。当該チャンクについてのローカルメタデータが格納され、当該ローカルメタデータは、複数のブロックの各ブロックを識別するブロックリストを含む。ローカルメタデータはジャーナルに関連付けられる。ジャーナルはその後、クローズされる。ジャーナルはその後、配置ポリシーに従って第2のインスタンスにレプリケートされる。グローバルメタデータはレプリケーションを反映するために更新され、ローカルメタデータはレプリケーションによって変更されない。

Description

技術分野
開示される実現例は一般に、分散ストレージシステムに関し、より具体的には、オブジェクトをチャンクに分割し、当該チャンクを階層的に格納することに関する。
背景
大規模データストレージは、中央サービスアーキテクチャから分散ストレージシステムにシフトしている。コモディティのコンピュータから構築される分散ストレージシステムは、モノリシックディスクアレイと比較して数分の1のコストで、高い性能(high performance)、可用性(availability)およびスケーラビリティ(scalability)を提供することが可能である。データは、異なる地理的位置における分散ストレージシステムの複数のインスタンスにわたってレプリケート(replicate)され、これにより可用性を増加するとともにクライアントからのネットワーク距離を低減する。
分散ストレージシステムにおいて、オブジェクトは、制約に基づいて、分散ストレージシステムのさまざまなインスタンスに動的に配置される(すなわち当該インスタンスにおいて作成され、当該インスタンスから削除され、および/または、当該インスタンスに移動される)。何兆個ものオブジェクトと何ペタバイトものデータとを格納するとともにこの地球にわたって何十ものデータセンタを含むプラネットワイドな分散ストレージシステムにおける制約に従うオブジェクトを効率的に配置するための既存の技術はほとんど存在しない。
新しい視覚化アプリケーション、マルチメディアアプリケーションおよび他のデータ集中的なアプリケーションは、何百ギガバイト以上であり得る非常に大きいオブジェクトを使用する。そのような非常に大きいオブジェクトを管理することにより、分散ストレージシステムについてさらなる複雑性が作り出されている。まず、分散ストレージシステムへそのようなオブジェクトをアップロードすることは典型的にストリーミングモードで行なわれ、オブジェクトをチャンクに分割し、各チャンクを個々に書き込む。これにより、アップロードについて長い遅延が課され得、これは、潜在的なクライアント障害およびサーバ障害によって悪化する。さらに、よりよい効率性のために、チャンクは、より大きなシャード(shard)になるように集合され得る。本願明細書において、「シャード」および「ジャーナル(journal)」という用語は、交換可能に使用され得る。結果として、クライアントがある時に利用可能な任意のクラスタに接続することを可能にする大規模システムの必要性によって前進するストレージ産業にとって、大きなオブジェクトの効率的なアップロードは、ますます重要になっている。さらに、単一のオブジェクトについてのメタデータのボリューム(たとえば100ギガバイトのファイルについて25000個のチャンクがあり、各チャンクは4メガバイトである)では、レプリケーション(replication)およびコンパクション(compaction)はあまり効率的でない。
概要
開示される実現例は、大きいオブジェクトのアップロードを複数のストレージ位置に同時に分散する。本願明細書において使用されるように、ストレージ位置は、「シャード」、「集合シャード」または「ジャーナル」と称される。このスキームは、大きいオブジェクトを複数のチャンクへ分割することにより実現され、当該複数のチャンクの各々は、(異なる地理的位置にあってもよい)異なるストレージクラスタにアップロードされ得る。(たとえばシャードが「いっぱい」であるか、または、シャードが格納されるインスタンスがダウンしたので)シャードがアップロードの間に利用不可能になると、クライアントは、異なるクラスタに存在し得る新しいシャードにスイッチングする。このスキームは、ひとたびスタートされると、同じシャードにとどまることを必要としない。終了したオブジェクトは、チャンク参照の順序づけられたリストによって表わされる。
いくつかのスキームにおいて、チャンクは格納の基本単位であり、各チャンクの位置はグローバルメタデータに格納される。非常に大きいオブジェクトの場合、このスキームでは、単一のオブジェクトについて、グローバルレベルでかなりの量のメタデータが格納されることになる。したがって、いくつかの実現例は、各オブジェクトについて格納されるグローバルメタデータの量を低減する階層チャンキングスキーム(hierarchical chunking scheme)を使用する。階層的な実現例において、「チャンク」という用語は、グローバルレベルに格納される対応するメタデータを有するトップレベルの分割を識別するために使用される。これらの実現例では、「ブロック」という用語は、実際の格納の基本単位を識別するために使用される(たとえば2メガバイトまたは8メガバイト)。ブロックは、各シャードについてローカルで管理される。非階層的システムにおいて、格納の基本単位は、グローバルメタデータが格納される基本単位であるので、「チャンク」という単一の用語は、両方のコンセプトを識別するために使用され得る。
階層チャンキングは、複数の態様で実現され得る。いくつかの実現例では、1つのブロックのみが存在する場合でも、各チャンクはブロックのリストを含む。これらの実現例では、チャンクに対応するデータのルックアップについての付加的な階層レベルが常に存在する。他の実現例は、大きなチャンクについて必要とされる場合にのみ階層が存在するように、ハイブリッドスキームを使用する。そのようなハイブリッド実現例では、小さなオブジェクトは、単一のブロックに対応する単一のチャンクを含み得る。他方、より大きなオブジェクトについては、各チャンクはブロックのリストである。
開示される階層スキームは、グローバルメタデータの量を低減し、これにより、オブジェクトを管理するコストまたは1つのストレージクラスタから別のストレージクラスタにオブジェクトを移動するコストを低減する。オブジェクトチャンクはグローバルレベルにて管理される一方、チャンク内のブロックは、オブジェクトメタデータが典型的に1つのシャード当たり1つのチャンク参照のみを含むように、ローカルシャードレベルにて管理される。
いくつかの実現例では、アップロードプロセスは、(1)アップロードのために利用可能なシャードを発見するステップと、(2)シャードが利用不可能(たとえばいっぱい)になるか、または、データがもはや存在しなくなるまで現在のシャードにデータを書き込むステップと、(3)チャンクの順序付けられたリストに現在のチャンク参照を追加するステップと、(4)オブジェクトアップロードが終わると、オブジェクトを終了させるステップと、そうでなければ、(5)オブジェクトの残りについてステップ(1)の開始を繰り返すステップとに従う。
いくつかの実現例において、ストレージからオブジェクトを読み出すことは、(1)所望のオブジェクトについて、チャンク参照(少なくとも1つは常に存在する)のセットを見つけるステップと、(2)チャンク参照に基づいてシャードの位置を見つけるステップと、(3)チャンク識別子およびローカルシャードメタデータを使用して、シャード位置からデータを読み出すステップと、(4)各チャンク参照についてステップ2および3を繰り返すステップとに従う。
たとえば、オブジェクトアップロードがシャード1にデータを書き込むことにより開始され、シャード1がいっぱいになるとシャード2にスイッチングするとする。(2つのシャード1およびシャード2は、同じまたは異なるインスタンスに存在し得る。)(グローバルである)オブジェクトメタデータは、2つのチャンク参照からなる一方、各シャードは各チャンクについてのブロックのローカルリストを管理する。たとえば、各シャードは、オブジェクトについて複数のブロックを格納し得る。この場合、ストレージは完全に階層的である。すなわち、オブジェクトはチャンクへ分割され、各チャンクはブロックへ分割される。他の実現例では、チャンクのうちの1つは、複数のブロックに分割され得る(そのようなチャンクは時に「スーパーチャンク」と称される)一方、別のチャンクは単一のブロックからなり得る。後者の場合において、チャンク識別子はブロック識別子であり得る。
シャード1およびシャード2は互いから独立しているので、それらのレプリカは異なるインスタンスで格納され得る。たとえば、シャード1はインスタンス1およびインスタンス2に格納され得、シャード2はインスタンス1およびインスタンス3に格納され得る。
この開示された方法は実質的に、アップロードサービスの可用性およびストレージ効率の両方を向上させる。この方法は、(たとえばインスタンスが大きいオブジェクトのアップロードの間にダウンした際の)再開可能なアップロードと、(たとえばシャードがいっぱいになった場合での)アップロードの最中における新しいシャードへのスイッチングとをサポートする。さらに、この方法は、複数のシャードに同時に書き込むことをサポートし、これにより、非常に大きいオブジェクトについて性能を有意に向上させ得る。いくつかの実現例では、単一のオブジェクトについてのデータが、異なるインスタンスにおいて同時に2つ以上の異なるシャードに書き込まれ、同時に同じインスタンスにおいて2つ以上のシャードに書き込まれ、また、単一のジャーナル内でも、2つ以上のプロセススレッドが、単一のジャーナルに異なるデータブロックを同時に書き込み得る。もちろん、分散アップロードは、利用可能なリソースによって制限される。分散ストレージシステムは、オブジェクトを同時にアップロードする多くの異なるクライアントを有するので、1つのクライアントからの単一の非常に大きいオブジェクトが、利用可能なリソースを過度に消費することは許可されない。
いくつかの実現例に従うと、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理するための方法は、分散ストレージシステムの第1のインスタンスにおいて実行される。第1のインスタンスは1つ以上のサーバを有しており、当該1つ以上のサーバの各々は1つ以上のプロセッサおよびメモリを有する。メモリは、1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。第1のインスタンスは、第1の配置ポリシーに関連付けられる第1のオブジェクトを受け取る。第1の配置ポリシーは、第1のオブジェクトのレプリカが分散ストレージシステムにおいてどこに格納されるかについて基準を特定する。いくつかの実現例では、各配置ポリシーは、対象数のオブジェクトレプリカと、それらのレプリカについての対象位置とを特定する。第1のインスタンスは、オブジェクトを複数のオブジェクトチャンクに分割し、複数のオブジェクトチャンクの第1のオブジェクトチャンクを複数のブロックへ分割する。第1のインスタンスは、関連付けられる配置ポリシーが第1の配置ポリシーとマッチする第1のジャーナルに複数のブロックを格納する。第1のインスタンスは、第1のオブジェクトについてグローバルメタデータを格納し、当該グローバルメタデータは、複数のオブジェクトチャンクのリストを含む。リストは、オブジェクトチャンクの各々についてのそれぞれの識別子を含む。第1のインスタンスは、第1のオブジェクトチャンクについてローカルメタデータを格納し、当該ローカルメタデータは、複数のブロックの各ブロックを識別するブロックリストを含む。ローカルメタデータは第1のジャーナルに関連付けられる。第1のジャーナルはその後、第1の配置ポリシーに従って、分散ストレージシステムの第2のインスタンスにレプリケートされる。グローバルメタデータはレプリケーションを反映するために更新され、ローカルメタデータはレプリケーションによって変更されない。
いくつかの実現例に従うと、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理するための方法は、分散ストレージシステムの第1のインスタンスにおいて実行される。第1のインスタンスは、各々が1つ以上のプロセッサおよびメモリを有する1つ以上のサーバを有する。メモリは、1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する。1つ以上のジャーナルがオブジェクトチャンクの格納のためにオープンにされる。各ジャーナルは、単一の配置ポリシーに関連付けられる。いくつかの実現例では、各配置ポリシーは、対象数のオブジェクトレプリカと、それらのレプリカについての対象位置とを特定する。第1のインスタンスは、少なくとも第1のオブジェクトチャンクを含む第1のオブジェクトを受け取る。第1のオブジェクトは第1の配置ポリシーに関連付けられる。第1のオブジェクトチャンクは第1の複数のブロックを含む。第1のインスタンスは、関連付けられる配置ポリシーが第1の配置ポリシーとマッチする第1のジャーナルに第1の複数のブロックを格納する。第1のジャーナルは、配置ポリシーが第1の配置ポリシーとマッチするオブジェクトについてのブロックのみを格納する。第1のインスタンスは、第1のオブジェクトについてグローバルメタデータを格納し、グローバルメタデータは、第1のオブジェクトに対応するオブジェクトチャンクの第1のリストを含む。第1のリストは、第1のオブジェクトチャンクの識別子を含む。第1のインスタンスはさらに、第1のオブジェクトチャンクについてローカルメタデータを格納し、ローカルメタデータは、第1の複数のブロックの各ブロックを識別するブロックリストを含む。ローカルメタデータは第1のジャーナルに関連付けられる。第1のジャーナルの場合、関連付けられる配置ポリシーが第1の配置ポリシーとマッチする第1の複数のオブジェクトについて受け取るステップおよび格納するステップが、第1の終了条件が発生するまで繰り返される。いくつかの実現例では、時間の予め規定されたスパンの後、または、第1のジャーナルが予め規定されたサイズしきい値を越えた後に、第1の終了条件が発生する。第1の終了条件が発生した後、第1のジャーナルはクローズされ、これにより、如何なる付加的なブロックも第1のジャーナルに格納されるのを防止する。その後、第1のジャーナルは、第1の配置ポリシーに従って、分散ストレージシステムの第2のインスタンスにレプリケートされる。グローバルメタデータはレプリケーションを反映するために更新され、ローカルメタデータはレプリケーションによって変更されない。
いくつかの実現例に従った、分散ストレージシステムの概念図である。 いくつかの実現例に従った、分散ストレージシステムの要素を示すブロック図である。 いくつかの実現例に従ったサーバのブロック図である。 いくつかの実現例に従ったインスタンスサーバのブロック図である。 いくつかの実現例に従った、オブジェクトチャンクの格納のためのジャーナルの使用を示す図である。 いくつかの実現例が新しいオブジェクトの格納をどのように管理するかを示す図である。 いくつかの実現例に従ったオープンジャーナルの構造を示す図である。 いくつかの実現例に従って、ジャーナルが1つのインスタンスから別のインスタンスにレプリケートされる場合、オブジェクトメタデータおよびジャーナルメタデータに何が起こるかを示す図である。 いくつかの実現例に従った分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する方法を示す図である。 いくつかの実現例に従った分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する方法を示す図である。 いくつかの実現例に従った分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する方法を示す図である。 いくつかの実現例に従った、どのようにオブジェクトチャンクがブロックへさらに分割され得るかを示す図である。 いくつかの実現例に従った、どのようにオブジェクトチャンクがブロックへさらに分割され得るかを示す図である。 いくつかの実現例に従った、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する代替的な方法を示す図である。 いくつかの実現例に従った、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する代替的な方法を示す図である。 いくつかの実現例に従った、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する代替的な方法を示す図である。 いくつかの実現例に従った、分散ストレージシステムにおけるオブジェクトレプリカの配置を管理する代替的な方法を示す図である。 いくつかの実現例に従った、部分的に階層的な分散ストレージシステムにおけるチャンクについての格納を示す図である。
図面を通じて、同様の参照番号は対応する部分を指す。
実現例の説明
分散ストレージシステムにおいてオブジェクトの配置を管理するための技術について論じる前に、これらの技術が使用され得る例示的なシステムを提示することは有益である。
分散ストレージシステムの概略
図1に示されるように、開示された実現例は分散ストレージシステムを記載する。地球100上のさまざまな位置に、複数のインスタンス102−1、102−2、…、102−Nが存在しており、ネットワーク通信リンク104−1、104−2、…104−Mによって接続されている。なお、この明細書において、「インスタンス」は「ストレージ位置」とも称される。また、1つ以上のインスタンス(ストレージ位置)が特定の物理的位置(たとえばビルディング、互いから所定の距離内のビルディングのセットなど)に位置してもよい。いくつかの実現例において、インスタンス(たとえばインスタンス102−1)は、データセンタに対応する。いくつかの実現例において、複数のインスタンスは、同じデータセンタに物理的に位置する。単一の実現例は、異なる地理的位置にある個々のインスタンスと、インスタンスの1つ以上のクラスタとの両方を有し得、各クラスタは、複数のインスタンスを含み、各クラスタ内のインスタンスは単一の地理的位置に存在する。
図1の概念図は、特定の数のネットワーク通信リンク104−1などを示すが、典型的な実現例は、それより多いまたは少ないネットワーク通信リンクを有してもよい。いくつかの実現例において、インスタンスの同じ対同士の間に2つ以上のネットワーク通信リンクが存在する。たとえば、ネットワーク通信リンク104−5および104−6は、インスタンス102−2とインスタンス102−6との間のネットワーク接続を提供する。いくつかの実現例において、ネットワーク通信リンクは光ファイバーケーブルを含む。いくつかの実現例において、ネットワーク通信リンクのうちのいくつかは、マイクロ波のような無線技術を使用する。いくつかの実現例において、各ネットワーク通信リンクは、特定の帯域幅、および/または、その帯域幅の使用についての特定のコストを有する。いくつかの実現例において、ネットワーク通信リンクのうち1つ以上にわたるデータ転送に関して、スループットレート、可用性の時間、リンクの信頼性などを含む統計が維持される。典型的に、各インスタンスは、データストアおよび関連するデータベースを有しており、タスクのすべてを実行するためにサーバコンピュータ(図4に示されるような「インスタンスサーバ」)のファーム(farm)を利用する。いくつかの実現例において、分散ストレージシステムの1つ以上のインスタンスは限定された機能を有する。たとえば、限定された機能は、他のインスタンス同士の間のデータ送信のためのリピータ(repeater)として動作することを含み得る。なお、限定された機能のインスタンスは、データストアのうちのいずれかを含んでもよいし、含まなくてもよい。
図2は、いくつかの実現例に従った、分散ストレージシステム200の要素を示すブロック図である。分散ストレージシステム200は、インスタンス102−1、102−2、102−3、102−4、…、102−Nを含む。それぞれのインスタンス102−1は、インスタンス同士間でオブジェクトチャンク238をレプリケートするレプリケーションモジュール220を含む。いくつかの実現例において、オブジェクトチャンク238は、それぞれのインスタンス102−1のデータストア224に格納される。図6に示されるように、各オブジェクトチャンク238は、オブジェクト226、または、オブジェクト226の部分を含む。データストア224は、オブジェクトを格納することが可能である分散データベース、ファイルシステム、テープバックアップ、および、任意の他のタイプのストレージシステムまたはデバイスを含み得る。いくつかの実現例において、オブジェクト226またはジャーナル230をレプリケートするために、レプリケーションモジュール220は、1つ以上のレプリケーションキュー222−1、222−2、…、222−Lを使用する。レプリケートされるべきオブジェクトまたはジャーナルについてのレプリケーション要求がレプリケーションキュー222に配置され、リソース(たとえば帯域幅)が利用可能な場合、オブジェクトまたはジャーナルがレプリケートされる。いくつかの実現例において、レプリケーションキュー222におけるレプリケーション要求は、割り当てられたプライオリティを有しており、帯域幅が利用可能になると、最も高いプライオリティのレプリケーション要求がレプリケートされる。
いくつかの実現例において、バックグラウンドレプリケーションプロセスは、配置ポリシー212、ならびに、統計サーバ208によって提供されるアクセスデータ210および/またはグローバル状態211に基づき、オブジェクトまたはジャーナルのコピーを作成および削除する。配置ポリシー212は、オブジェクトのどれだけ多くのコピーが所望であるか、どこに当該コピーが存在するべきであるか、および、どのタイプのデータストアに当該データが保存されるべきであるかを特定している。統計サーバ208によって提供されるアクセスデータ210(たとえばオブジェクトのレプリカがアクセスされたストレージ位置、オブジェクトのレプリカがストレージ位置にてアクセスされた時間、ストレージ位置でのオブジェクトのアクセスの頻度などに関するデータ)および/またはグローバル状態211とともに配置ポリシー212を使用して、位置割当デーモン(LAD: location assignment daemon)206は、オブジェクトまたはジャーナルの新しいコピーをどこに作成するべきかと、どのコピーが削除され得るかとを決定する。新しいコピーが作成されるべきである場合、レプリケーション要求はレプリケーションキュー222に挿入される。いくつかの実現例において、LAD206は、分散ストレージシステム200についてグローバルにオブジェクトまたはジャーナルのレプリカを管理する。言いかえれば、分散ストレージシステム200において1つのLAD206のみが存在する。配置ポリシー212の使用およびLAD206のオペレーションは以下により詳細に記載される。
なお、一般に、それぞれの配置ポリシー212は、保存するべきオブジェクトのレプリカの数、どのタイプのデータストアにレプリカが保存されるべきであるか、コピーが保存されるべきストレージ位置などを特定し得る。いくつかの実現例では、オブジェクトについてのそれぞれの配置ポリシー212は、分散ストレージシステムに存在しなければならないオブジェクトの最小数のレプリカと、分散ストレージシステムに存在することが許されるオブジェクトの最大数のレプリカと、オブジェクトのレプリカが格納されるべきであるストレージデバイスタイプと、オブジェクトのレプリカが格納され得る位置と、オブジェクトのレプリカが格納され得ない位置と、オブジェクトについての配置ポリシーが適用されるオブジェクトについてのある範囲の期間とからなる群から選択される基準を含む。たとえば、第1の配置ポリシーは、ウェブメールアプリケーションにおける各オブジェクトが、最低2つのレプリカおよび最大5つのレプリカを有さなければならないということを特定し得、当該オブジェクトのレプリカは中国の外のデータセンタに格納され得、各オブジェクトの少なくとも1つのレプリカがテープ上に格納されなければならない。ウェブメールアプリケーションについての第2の配置ポリシーはさらに、30日より古いオブジェクトについて、最低1つのレプリカおよび最大3つのレプリカが分散ストレージシステム200に格納されるということを特定し得、オブジェクトのレプリカは中国の外のデータセンタに格納され得、各オブジェクトの少なくとも1つのレプリカがテープ上に格納されなければならない。
いくつかの実現例において、ユーザ240は、ウェブブラウザ244を実行可能であるコンピュータシステムまたは他のデバイスであり得るユーザシステム242とインタラクションする。ユーザアプリケーション246は、ウェブブラウザにおいて実行されており、ネットワークを使用して分散ストレージシステム200に格納されたデータへのアクセスするよう、データベースクライアント248によって提供される機能を使用する。ネットワークは、インターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク(WiFi)、ローカルイントラネット、または、これらの任意の組合せであり得る。いくつかの実現例では、データベースクライアント248は、要求に応答するために適切なインスタンスを識別するよう、グローバル構成ストア204における情報を使用する。いくつかの実現例において、ユーザアプリケーション246は、ウェブブラウザ244なしでユーザシステム242上で実行される。例示的なユーザアプリケーションは、電子メールアプリケーションおよびオンラインビデオアプリケーションを含む。
いくつかの実現例において、各インスタンスは、分散ストレージシステムに格納されるオブジェクトの各々についてオブジェクトメタデータ228を格納する。いくつかのインスタンスは、インスタンス(「ローカルインスタンス」と称される)に格納されるレプリカを有するオブジェクトについてのみオブジェクトメタデータ228を格納する。いくつかのインスタンスは、分散ストレージシステムにおいて任意の場所に格納されたすべてのオブジェクトのついてのオブジェクトメタデータ228を格納する(「グローバルインスタンス」と称される)。オブジェクトメタデータ228は、図3、図4および図5に関してより詳細に記載される。
いくつかの実現例では、各インスタンスは、分散ストレージシステム200に格納されるジャーナルの各々について、ジャーナルメタデータ236を格納する。いくつかのインスタンスは、インスタンスに格納されるレプリカを有するジャーナルについてのみ、ジャーナルメタデータ236を格納する。いくつかのインスタンスは、分散ストレージシステムにおけるいずれかの場所に格納されるすべてのジャーナルについてジャーナルメタデータを格納する。ジャーナルメタデータは、図3、図4、図5および図8に関して以下により詳細に記載される。
複数のタイプのジャーナルがデータストア224に格納される。ジャーナルの大多数は、クローズド(closed)ジャーナル230である。クローズドジャーナル230は、いずれの付加的なオブジェクトチャンクも格納しないが、コンテンツを削除およびコンパクト化(compacted)し得る。いくつかの実現例では、同じ配置ポリシー212についての2つ以上の小さなクローズドジャーナル230は、単一の置換クローズドジャーナル230を形成するためにともに結合(stitched)され得る。クローズドジャーナル230内のデータは削除およびコンパクト化され得るので、クローズドジャーナル230は、時間とともに小さくなり、これにより、結合の候補になり得る。
クローズドジャーナル230に加えて、インスタンス102はオープンジャーナル232および234を有し得る。図2に示されるように、オープンジャーナルは、プライマリジャーナル232またはセカンダリジャーナル234のいずれかとして指定される。プライマリジャーナル232およびセカンダリジャーナル234はペアとなり、異なるインスタンスに位置する。以下により詳細に記載されるように、プライマリジャーナル232は、格納のためのチャンク238を受け取り、対応するセカンダリジャーナル234が格納されているインスタンスにチャンク238のコピーを送信する。
図3は、いくつかの実現例に従ったサーバ300のブロック図である。サーバ300は典型的に、1つ以上の処理ユニット(CPU)302と、現在の日付および/または時間を報告するクロック303と、1つ以上のネットワークまたは他の通信インターフェイス304と、メモリ314と、これらのコンポーネントを相互接続するための1つ以上の通信バス312とを含む。通信バス312は、システムコンポーネントを相互接続しシステムコンポーネント同士間の通信を制御する回路(チップセットとも時に称される)を含み得る。いくつかの実現例では、クロック303は、クロックサーバ(たとえばクォーラムクロックサーバまたはネットワーク上の任意の他のクロックサーバなど)と周期的に同期するローカルクロックである。サーバ300は、表示デバイス308および入力デバイス310(たとえばキーボード、マウス、タッチスクリーン、キーパッドなど)を含むユーザインターフェイス306を随意に含み得る。メモリ314は、DRAM、SRAM、DDR RAMまたは他のランダムアクセスソリッドステートメモリデバイスのような高速ランダムアクセスメモリを含み、また、1つ以上の磁気ディスクストレージデバイス、光学ディスクストレージデバイス、フラッシュメモリデバイス、または、他の不揮発性ソリッドステートストレージデバイスといった不揮発性メモリを含んでもよい。メモリ314は、CPU302からリモートに位置する1つ以上のストレージデバイスを随意に含み得る。メモリ314、または、代替的にはメモリ314内の不揮発性メモリデバイスは、コンピュータ読取可能ストレージ媒体を含む。いくつかの実現例において、メモリ314は、以下のプログラム、モジュールおよびデータ構造またはそのサブセットを格納する。すなわち、
・さまざまな基本的なシステムサービスを処理するとともにハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム316、
・インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどのような、1つ以上の通信インターフェイス304(有線または無線)および1つ以上の通信ネットワークを介して他のコンピュータにサーバ300を接続するために使用される通信モジュール318、
・入力デバイス310を介してユーザからコマンドを受け取り、かつ、表示デバイス308においてユーザインターフェイスオブジェクトを生成する随意のユーザインターフェイスモジュール320、
・本願明細書に記載されるような構成204、
・本願明細書に記載されるようなLAD206、
・本願明細書に記載されるようなアクセスデータ210、
・本願明細書に記載されるようなグローバル状態211、
・本願明細書に記載されるような配置ポリシー212、
・分散ストレージシステムに格納されるオブジェクトについてのオブジェクトメタデータ228(オブジェクトメタデータ228は、分散ストレージシステム内のオブジェクトを一意に識別するオブジェクトID330を含み得る。メタデータ228は、人またはエンティティの名称および/または識別子(たとえば電子メールアドレス)であり得るオブジェクトのオーサ(author)332を含み得る。いくつかの実現例では識別子は一意である。メタデータは、オブジェクトが作成された(たとえば、分散ストレージシステムにアップロードされた)日付スタンプまたはタイムスタンプ334を含み得る。メタデータは、バイトまたはアロケーションブロックで典型的に測定されるオブジェクトのサイズ336を含み得る。メタデータは、個々に割り当てられ得るか、または、他の基準に基づき割り当てられ得る割当配置ポリシー338を含む(たとえば米国からアップロードされるすべてビデオは、同じ割当配置ポリシー338を有し得る)。配置ポリシーの使用は、図5〜図6および図9A〜図9Cに関して以下により詳細に記載される。メタデータ228は、各オブジェクトについてのコンテンツチャンクを識別するチャンクID346のセットを含む。いくつかの実現例において、チャンクIDはオブジェクト内のオフセットとして特定される。たとえば、第1のチャンクは0のオフセットを有する。いくつかの実現例において、オフセットはメガバイトで特定される。いくつかの実現例において、チャンクIDは(GUIDのような)一意識別子である。いくつかの実現例において、各チャンクIDは、チャンクのオフセットにオブジェクトIDを連結することにより形成される。いくつかの実現例では、チャンクIDは、コンテンツハッシュまたはコンテンツダイジェストを使用して形成される。各チャンクIDに対応するのは、割当ジャーナルID348であり、割当ジャーナルID348は、対応するチャンクがどのジャーナルに格納されるか示す。)、ならびに、
・分散ストレージシステム200に格納される各ジャーナルについてのジャーナルメタデータ236(ジャーナルメタデータ236は、各ジャーナルについてのジャーナルID370と、ジャーナルが格納されるジャーナル位置372のセットとを含む。ジャーナル位置372は、ジャーナルが格納される各インスタンス102を特定し、ジャーナルを格納するインスタンス102にあるデータストア224を特定し得る。ジャーナルメタデータ236はさらに、各ジャーナルに関連付けられる配置ポリシーID374を含む。配置ポリシーID374は、ジャーナルに関連付けられる一意の配置ポリシー212を識別する。)
を格納する。
上記の識別された要素の各々は、以前に言及されたメモリデバイスのうちの1つ以上に格納され得、上に記載された機能を実行するための命令のセットに対応する。命令のセットは、1つ以上のプロセッサ(たとえばCPU302)によって実行され得る。上記の識別されたモジュールまたはプログラム(すなわち命令のセット)は、別個のソフトウェアプログラム、プロシージャまたはモジュールとして実現される必要はなく、したがって、これらのモジュールのさまざまなサブセットは、さまざまな実現例において組み合わせられ得るか、または、そうでなければ再構成され得る。いくつかの実現例において、メモリ314は、上で識別されたモジュールおよびデータ構造のサブセットを格納し得る。さらに、メモリ314は、上で記載されていない付加的なモジュールおよびデータ構造を格納し得る。
図3は「サーバ」を示すが、図3は、本願明細書において記載される実現例の構造図としてよりも、サーバ300のセットに存在し得るさまざまな特徴の機能説明としてより多く意図される。実際には、および、当業者によって認識されるように、別々に示された項目は、組み合わされ得、いくつかの項目は分離され得る。たとえば、図3に別々に示されるいくつかの項目は単一のサーバ上で実現され得、また、単一の項目は、1つ以上のサーバによって実現され得る。サーバの実際の数、および、特徴がどのようにそれらの間で割り当てられるかは、実現例ごとに変動することになり、ピーク使用期間の間および平均使用期間の間にシステムが処理しなければならないデータトラフィックの量に部分的に依存し得る。いくつかの実現例では、LAD206のサブセット、アクセスデータ210、グローバル状態211および配置ポリシー212は、別個のサーバ上に位置する。たとえば、LAD206はサーバ(またはサーバのセット)に位置し得、アクセスデータ210およびグローバル状態211は、統計サーバ208(または統計サーバ208のセット)に位置され得るとともに統計サーバ208(または統計サーバ208のセット)によって維持され得、配置ポリシー212は別のサーバ(または別のサーバのセット)に位置し得る。
図4は、いくつかの実現例に従った、インスタンス102についてのインスタンスサーバ400のブロック図である。インスタンスサーバ400は典型的に、モジュールを実行するための1つ以上の処理ユニット(CPU)402と、現在の日付および/または時間を報告するクロック403と、メモリ414に格納され、これにより処理オペレーションを実行するプログラムおよび/または命令と、1つ以上のネットワークまたは他の通信インターフェイス404と、メモリ414と、これらのコンポーネントを相互接続するための1つ以上の通信バス412とを含む。いくつかの実現例において、クロック403は、周期的にクロックサーバと同期するローカルクロックである(たとえばクォーラムクロックサーバまたはネットワーク上の任意の他のクロックサーバなど)。いくつかの実現例において、インスタンスサーバ400は、表示デバイス408および1つ以上の入力デバイス410を含むユーザインターフェイス406を含む。いくつかの実現例では、メモリ414は、DRAM、SRAM、DDR RAMまたは他のランダムアクセスソリッドステートメモリデバイスのような高速ランダムアクセスメモリを含む。いくつかの実現例では、メモリ414は、1つ以上の磁気ディスクストレージデバイス、光学ディスクストレージデバイス、フラッシュメモリデバイス、または、他の不揮発性ソリッドステートストレージデバイスといった不揮発性メモリを含み、いくつかの実現例において、メモリ414は、CPU402からリモートに位置する1つ以上のストレージデバイスを含む。メモリ414、または、代替的にはメモリ414内の不揮発性メモリデバイスは、コンピュータ読取可能ストレージ媒体を含む。いくつかの実現例では、メモリ414またはメモリ414のコンピュータ読取可能ストレージ媒体は、以下のプログラム、モジュールおよびデータ構造、または、そのサブセットを格納する。すなわち、
・さまざまな基本的なシステムサービスを処理するとともにハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム416、
・インターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどといった、1つ以上の通信ネットワークインターフェイス404(有線または無線)および1つ以上の通信ネットワークを介して他のインスタンスサーバまたはコンピュータにインスタンスサーバ400を接続するために使用される通信モジュール418、
・入力デバイス410を介してユーザからコマンドを受け取り、かつ、表示デバイス408においてユーザインターフェイスオブジェクトを生成する随意のユーザインターフェイスモジュール420、
・本願明細書に記載されるようなレプリケーションモジュール220およびレプリケーションキュー222、
・図3に関して記載されような、ジャーナル230、232および234にオブジェクトチャンク238を格納するデータストア224(たとえば分散データベース、ファイルシステム、テープストレージ、ビッグテーブル(Big Tables)など)、
・サーバ300に関して図3に記載されたような、オブジェクトメタデータ228および対応するメタデータ要素330〜338、346および348、ならびに、
・サーバ300に関して図3に記載されるような、ジャーナルメタデータ236ならびに対応するジャーナルメタデータ要素370、372および374
を格納する。
上記の識別された要素の各々は、以前に言及されたメモリデバイスのうちの1つ以上に格納され得、上に記載された機能を実行するための命令のセットに対応する。命令のセットは、1つ以上のプロセッサ(たとえばCPU402)によって実行され得る。上記の識別されたモジュールまたはプログラム(すなわち命令のセット)は、別個のソフトウェアプログラム、プロシージャまたはモジュールとして実現される必要はなく、したがって、これらのモジュールのさまざまなサブセットは、さまざまな実現例において組み合わせられ得るか、または、そうでなければ再構成され得る。いくつかの実現例において、メモリ414は、上で識別されたモジュールおよびデータ構造のサブセットを格納し得る。さらに、メモリ414は、上で記載されていない付加的なモジュールおよびデータ構造を格納し得る。
図4は「インスタンスサーバ」を示すが、図4は、本願明細書において記載される実現例の構造図としてよりも、インスタンスサーバ400のセットに存在し得るさまざまな特徴の機能説明としてより多く意図される。実際には、および、当業者によって認識されるように、別々に示された項目は組み合わされ得、いくつかの項目は分離され得る。たとえば、図4に別々に示されるいくつかの項目は単一のサーバ上で実現され得、また、単一の項目は、1つ以上のサーバによって実現され得る。サーバの実際の数、および、特徴がどのようにそれらの間で割り当てられるかは、実現例ごとに変動することになり、ピーク使用期間の間および平均使用期間の間にサーバが処理しなければならないデータトラフィックの量に部分的に依存し得る。たとえば、単一のインスタンス102では、100個のインスタンスサーバ400または何千個ものインスタンスサーバ400が存在してもよい。
いくつかの実現例において、クライアントに対してより速い応答を提供し、かつ、フォルトトレランスを提供するために、インスタンスにおいて実行される各プログラムまたはプロセスは、複数のコンピュータの間で分散される。プログラムまたはプロセスの各々に割り当てられるインスタンスサーバ400の数は変動し得るとともに、ワークロードに依存し得る。
図5は、いくつかの実現例に従ったオブジェクトチャンクの格納のためのジャーナルの使用を示す。図5は、データストア224と、オブジェクトメタデータ228の部分と、ジャーナルメタデータ236の部分とを示しており、これらはすべて例示的なインスタンス102に存在する。このデータストア224には多くのジャーナル230、232および234が格納されているので、2次元グリッドにおいてそれらを視覚的に構成することは有用である。(もちろん、視覚表示は、データストアにおけるジャーナルの実際の物理的なストレージとは無関係である。)図において、ジャーナルはジャーナルの「ロウ(row)」にパーティショニングされ、各ロウは単一の配置ポリシー212に対応する。たとえば、第1のロウ502−P1は、配置ポリシーP1(212)に対応し、クローズドジャーナル230、オープンプライマリジャーナル232、および、オープンセカンダリジャーナル234を含む。第1のロウ502−P1におけるこれらのジャーナルのすべては、配置ポリシーP1に関連付けられる。第2のロウ502−P2は、配置ポリシーP2(212)に対応し、最後のロウ502−PNは配置ポリシーPN(212)に対応する。典型的に、配置ポリシーの数は10個、20個、50個または恐らく100個といったように少ない。配置ポリシーの数が増加すると、オブジェクトレプリカの管理はあまり効率的でなくなる。
さらに、データストア224におけるジャーナルは、図5において2つのカラムへ視覚的にパーティショニングされる。第1のカラムは、ジャーナルの大多数であるクローズドジャーナル230を識別する。第2のカラムは、オープンプライマリジャーナル232およびオープンセカンダリジャーナル234を含む。各ジャーナルにおいてさまざまな長方形238によって示されるように、各ジャーナル(クローズドジャーナル230、オープンプライマリジャーナル232またはオープンセカンダリジャーナル234)はオブジェクトチャンク238を含む。オブジェクトチャンクはさまざまなサイズであり得るが、実現例は典型的に固定最大サイズをセットする(たとえば2メガバイト、4メガバイトまたは8メガバイト)。ジャーナル内におけるオブジェクトチャンク238の図は、ジャーナルがさまざまなサイズの多くのオブジェクトチャンクを格納するが、そうでなければオブジェクトチャンクの実際の物理的な格納を示しているわけではないという事実を正確に伝える(たとえば、割り当てられていないスペースの初めに各新しいオブジェクトチャンク238が追加されるので、オブジェクトチャンク同士間には未使用のスペースは一般に存在しない)。
図5は、オープンジャーナル232および234のさまざまな組合せが各配置ポリシーについて可能であることを示す。本願明細書において図および説明において異なるジャーナルレプリカを識別するために、「232.P4.7」といった三部分ラベルが使用される場合がある。第1の部分(たとえば「232」)は、ジャーナルのタイプを識別し(230=クローズド,232=オープンプライマリ,234=オープンセカンダリ)、第2の部分(たとえば「P4」)は、当該ジャーナルについての配置ポリシーを特定し、第3の部分(たとえば「7」)は、当該ジャーナルについてのシーケンシャル番号を単に特定する(たとえば「232.P4.7」における「7」は、配置ポリシーP4についての第7番目のオープンジャーナルを特定する)。
図5に示されるように、配置ポリシーP1について、単一のオープンプライマリジャーナル232.P1.1が存在し、オープンセカンダリジャーナルは存在しない。配置ポリシーP2について、2つのオープンプライマリジャーナル232.P2.1および232.P2.2が存在する。配置ポリシーPNについて、1つのオープンプライマリジャーナル232.PN.1および1つのオープンセカンダリジャーナル234.PN.1が存在する。これらの例が示すように、オープンプライマリジャーナル232およびオープンセカンダリジャーナル234の数は、配置ポリシー同士間で変動し得、典型的に、各配置ポリシー212についての新しいオブジェクト226の予想される数と、それらのオブジェクト226についての所望の位置とに基づき、各ポリシー212について構成される。
各インスタンス102はさらに、以前に図3に関して記載されたように、オブジェクトメタデータ228およびジャーナルメタデータ236の両方を格納する。各オブジェクト226について、オブジェクトメタデータ228は、(一意にオブジェクトを識別する)オブジェクトID330と、オブジェクトからオブジェクトチャンク238を識別する1つ以上のチャンクID346のセットと、各チャンクID236に関連付けられる割り当てられたジャーナルID348とを含む。オブジェクトが複数のチャンク238を有する場合、チャンク238は、(たとえばロードバランシングのために)同じジャーナルにすべて格納される必要は必ずしもないので、オブジェクトメタデータ228は、各チャンクID346に割り当てられるジャーナルID348をトラッキングしなければならない。
各インスタンス102はさらに、インスタンス102に格納される各ジャーナルについてジャーナルメタデータ236を格納する。メタデータ236は、各ジャーナルについてのジャーナルID370と、位置372のセットとを含む。いくつかの実現例において、位置IDは、ジャーナルが格納されるインスタンスを識別する。いくつかの実現例において、位置IDはさらに、特定されたインスタンスにあるデータストアを識別する。いくつかの実現例において、インスタンス識別子およびデータストア識別子は、各ジャーナルについて別個の属性として格納される。いくつかの実現例において、ジャーナルは、単一のインスタンスにある2つ以上のデータストアに格納され得る(たとえばファイルシステムデータストアおよびテープバックアップデータストア)。ジャーナルメタデータ236はさらに、各ジャーナルに対応する一意の配置ポリシー212を特定する配置ポリシーID374を含む。各ジャーナルは、配置ポリシー338がジャーナルの配置ポリシーとマッチするオブジェクトチャンク238のみを格納する。
図6は、いくつかの実現例が新しいオブジェクト226の格納をどのように管理するかを示す。図6に示されるように、各新しいオブジェクトはオブジェクトコンテンツ(すなわちオブジェクト226自体)と、オブジェクトID330(たとえば58440912)と、割当配置ポリシー330(たとえばP3)とを有する。新しいオブジェクト226は、オンライン電子メールアプリケーションおよびビデオシェアリングウェブサイトなどといった多くの異なるアプリケーション246から得られ得る。分散ストレージシステム200は、新しいオブジェクト226を受け取り、インスタンス102−1のような適切なインスタンスに新しいオブジェクト226を方向付け(602)する。いくつかの実現例において、アプリケーション246は新しいオブジェクト226を特定のインスタンス102−1に方向付けする。アプリケーション246によって選択されるインスタンス102−1が適切でない場合、いくつかの実現例は、オブジェクト226を適切なインスタンスに転送する(たとえば、配置ポリシー212がヨーロッパにおける格納を特定せず、オブジェクト226がヨーロッパにおけるインスタンスにおいて受け取られる場合、当該インスタンスは、オブジェクト226を別のインスタンスに転送し得る)。
たいていのオブジェクトは、中程度のサイズ(たとえば300キロバイト未満)を有するが、大きいオブジェクトがいくつか存在する。いくつかの実現例は、大きいオブジェクトを複数のチャンク238へ分割する(604)。一般に、各実現例は、典型的に単位がメガバイトで特定される(たとえば2、4、8、16、または32メガバイト)チャンクサイズをセットするか、または、当該チャンクサイズをセットするために構成可能であるパラメータを有する。チャンクサイズより大きい各オブジェクトは複数のチャンクへ分割され、チャンクサイズ以下のサイズを有する各オブジェクトは単一のチャンクからなる。図6における例示において、3つのチャンクC1、C2およびC3が存在する。この例示において、チャンクの各々は7文字の英数字チャンクID346を有しているが、一意に各オブジェクト内のチャンクを識別する多くの代替的なチャンクIDフォーマットが可能である。いくつかの実現例において、チャンクID346は、コンテンツハッシュまたはコンテンツダイジェストを使用して生成される。
いくつかの実現例において、多くのオブジェクト重複物が存在する場合がある(たとえば、メール添付物がある人々のグループに送られ、その後、多くのさらなる人々に転送される)ので、重複除外(de-duplication)は効率的な格納に有用であり得る。したがって、いくつかの実施形態において、オープンプライマリジャーナルに「新しい」チャンク238のみを格納する(606)よう、各新しいチャンク238のコンテンツが、(たとえばコンテンツハッシュまたはコンテンツダイジェストを使用して)既存のオブジェクトチャンク238と比較される(606)。図5に示されるように、チャンクC2は新しく、配置ポリシーP3に対応しているので、チャンクC2は、配置ポリシーP3に対応するオープンプライマリジャーナル232.P3.1に格納される。もちろん、重複除外は配置ポリシーの文脈内にのみ存在する。2つのチャンクが同一であるが、異なる配置ポリシーに割り当てられている場合、2つのチャンクは異なるジャーナルに保存されることになる。言い換えれば、新しいチャンクが受け取られる場合、新しいチャンクは、同じ配置ポリシーについてのチャンクとのみ比較される。同じ配置ポリシーについて保存された同一のチャンクが既に存在する場合にのみ、チャンクは「重複物」である。
オブジェクトチャンクC2が新しいかどうかにかかわらず、インスタンス102−1は、チャンク238についてオブジェクトメタデータ228を格納する(608)。図3〜図5に関して上述したように、メタデータ228は、オブジェクトID330と、チャンクID346と、各チャンクが格納されるジャーナルについてのジャーナルID348とを含む。いくつかの実現例において、オブジェクトチャンク238についてのチャンクID346は単に、オブジェクト内のチャンク238の開始に対するオフセットである。図6に示されるオブジェクトメタデータ228はさらに、単一のオブジェクトについてのチャンクが同じジャーナルに格納される必要はないということを示す。チャンクC1およびC3(チャンクID C190056およびC098663)は、ジャーナルID J77298045を有するジャーナル232.P3.2に存在し、チャンクC2(チャンクID C250116)は、ジャーナルID J82117094を有するジャーナル232.P3.1に存在する。
チャンクC2はセカンダリジャーナル234.P3.1における格納のために、インスタンス102−2に送信され(610)、チャンクC1およびC3は、セカンダリジャーナル234.P3.2における格納のためにインスタンス102−2に送信される(612)。
図6はさらに、プライマリジャーナル232が、その対応するセカンダリジャーナルと物理的に同一である必要はないことを示す。まず、チャンクC1およびC3がプライマリジャーナル232.P3.2においてその順に格納され、これらのチャンクはセカンダリジャーナル234.P3.2においてその逆の順に格納されるということが分かる。ジャーナルがオープンである間、個々のチャンク238は、独立してレプリケートされるか、異なるネットワークパスを横断するか、または、異なるプロセッサ402によって処理され得るので、それらが同じ順でセカンダリジャーナル234.P3.2にロードされる保証はない。異なる順が存在し得るという事実は、図7に関して以下に記載されるように、各ジャーナル内のチャンクインデックスによって扱われる。さらに、プライマリジャーナル232.P3.1は、当該図において「G」とラベル付されたガーベッジ「チャンク」620の存在を示す。アップロードの間に時として、スペースを消費する障害またはグリッチが存在する場合がある。たとえばアップロードの間に、オブジェクトのためのスペースが割り当てられるが、チャンクが実際に追加されない場合がある。ソフトウェアはアップロードを再び試み、これにより、チャンクのための新しいスペースが割り当てられる。これは、ジャーナル232内にホール(hole)またはガーベッジ(garbage)を残し得る。この場合、ガーベッジ620はセカンダリジャーナルに送信されないので、プライマリジャーナルはセカンダリジャーナルと物理的に異なる。
図7は、いくつかの実現例に従ったオープンジャーナルの構造を示す。図7はオープンプライマリジャーナル232を記載するが、オープンセカンダリジャーナル234の構造は同じまたは同様である。ジャーナル232は、ヘッダー702およびストレージスペース714のブロックを有する。ストレージスペース714は、既にオブジェクトチャンク238を格納している充填部分710と、現在未使用である非充填部分712とを含む。これらの記述子は、いくつかの理由により完全には正確ではない。第1に、「充填」スペース710は、有用なコンテンツを有さないガーベッジ部分620を含み得る。第2に、未使用スペースは必ずしもすべて同時に割り当てられるわけではない。いくつかの実現例は、ジャーナルについて全スペースを一度に割り当て、充填されると、(端部に少ない量の未使用スペースを潜在的に残して)当該ジャーナルをクローズする。しかしながら、他の実現例では、付加的なスペースのブロックは、ジャーナルがあるサイズの限界に達するか、または、ある量の時間(たとえば1日)が経過するまで、必要に応じて割り当てられる。
ジャーナルについてのヘッダー702は、ジャーナル232に関する重要な内部情報を含む。ヘッダー702は、未使用スペース712がジャーナルにおいてどこで開始するかを特定するフィールド704を含む。新しいチャンク238が充填スペース710の端部に追加されるごとに、オフセット704は、ジャーナル232が次のチャンクを格納するよう準備されるように、チャンク238のサイズだけインクリメントされる。
ヘッダー702はさらにチャンクインデックス706を含む。ジャーナル232についてのチャンクインデックス706は、各チャンク238がジャーナル232内のどこに位置するのかと、そのサイズとを特定し、これにより、(不揮発性ストレージまたはキャッシュからにかかわらず)チャンクデータの高速読出を可能にする。チャンクインデックス706についてのキーは、一意にチャンクを識別するチャンクID346である。なお、複数の異なるオブジェクトID330は、同じ物理的なチャンクを指し得る。多くのエントリが同じオブジェクトチャンク238を指す大きなチャンクインデックス704を回避するために、実現例は典型的に、同じ物理的なコンテンツを参照するために単一のチャンクIDを利用する。たとえば、チャンクID346は、コンテンツハッシュまたはコンテンツダイジェスト(またはこれらの組合せ)であり得る。各チャンクID346について、チャンクインデックス720は、ストレージスペース714内のチャンク238についてのオフセット720およびサイズ722を特定する。オフセット720は、ジャーナル232の始めからのオフセット、または、充填スペース710の始めからのオフセットとして特定され得る。いくつかの実現例では、チャンクインデックスは、チャンクが削除されて充填スペース710がコンパクト化される際に後で使用される削除マーカといった付加的な情報を有する。
ヘッダー702は同様に、実現例の詳細に対応するよう、他のジャーナルデータ708を含み得る。たとえば、他のジャーナルデータ708は、ジャーナルの始めからストレージスペース714の始めまでのオフセットを特定し得る(すなわちヘッダーのサイズ)。いくつかの実現例では、他のジャーナルデータは、短いライフスパンを有するように指定されるジャーナルについての「生存時間(time to live)」パラメータを含む。
図7におけるジャーナルの構造はオープンプライマリジャーナル232のためのものであるが、同じ基本構造は、オープンセカンダリジャーナル234およびクローズドジャーナル230に同様に適用される。
図8は、いくつかの実現例に従って、ジャーナルが1つのインスタンスから別のインスタンスにレプリケートされる場合、オブジェクトメタデータ228およびジャーナルメタデータ236に何が起こるかを示す。この例示において、ジャーナルID J82117094を有するクローズドジャーナル230は、(インスタンスID=723を有する)インスタンス102−1から(インスタンスID428を有する)インスタンス102−4にレプリケート(820)される。ジャーナル230自体が単位としてレプリケートされるので、全コンテンツが正確にレプリケートされる。たとえば、(チャンクID C408335を有する)チャンクC8は、ジャーナル内のまったく同じ位置にある。もちろん、レプリケーションの後、インスタンス102−1および102−4は独立して削除およびコンパクションを扱うので、それらの物理構造は、レプリケーションの後、同じままであることは保証されない。
図8はさらに、レプリケーション820の前および後のオブジェクトメタデータ228およびジャーナルメタデータ236の部分を示す。示されるように、オブジェクトメタデータ228におけるレコード802〜814はレプリケーション820によって変更されていない。各オブジェクト226は同じチャンク238を有し、チャンク238は同じジャーナル230に格納される。たとえば、(ロウ804における)チャンクID C408335を有するチャンクは変更されない。他方、ジャーナルID J82117094(370−1)を有するジャーナル230についてのジャーナルメタデータ236は変更される。ジャーナル位置372のセットは、372−1(A)から、(インスタンス102−4についての)新しい位置428を含む372−1(B)に変更する。
図9A〜図9Cは、いくつかの実現例に従った分散ストレージシステム200においてオブジェクトレプリカの配置を管理する(902)方法900を示す。当該方法は、1つ以上のプロセッサおよびメモリを有する分散ストレージシステムの第1のインスタンス102において実行(904)される。メモリは、複数のオブジェクトを格納する(906)。メモリはさらに、1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する(908)。いくつかの実現例において、方法900のすべてまたは一部は、位置割当デーモン206によって実行される。いくつかの実現例において、分散ストレージシステムは複数のインスタンスを有する(910)。これらの実現例のうちのいくつかにおいて、インスタンスの少なくともサブセットは、異なる地理的位置にて存在する(910)。いくつかの実現例において、各インスタンスはデータセンタに対応する。いくつかの実現例において、各データセンタは1つ以上のインスタンスを含む。
第1のインスタンスでは、1つ以上のジャーナル232が、オブジェクトチャンクの格納のためにオープンにされる(912)。各ジャーナルは、単一のそれぞれの配置ポリシー212に関連付けられる(914)。いくつかの実現例では、各配置ポリシーは、対象数のオブジェクトレプリカと、オブジェクトレプリカについての位置の対象セットとを特定する(926)。いくつかの実現例では、配置ポリシー212は、データストア224のどのタイプがインスタンスのうちのいくつかにおいて使用されるべきであるか(たとえばディスクまたはテープ)を特定し得る。いくつかの実現例では、分散ストレージシステム200は、どのジャーナルに各オブジェクトチャンク238が格納されているかを特定するオブジェクトメタデータ228を含む(918)。これは、図3〜図5に関して以前に記載された。いくつかの実現例では、各それぞれのジャーナルは、それぞれのジャーナルに格納された各オブジェクトの位置を特定するチャンクインデックス706を含む(920)。これは、図7により詳細に記載された。特に、ジャーナル内の各チャンクの位置は、ジャーナル自身に対して識別され、したがって、チャンクインデックス706は、ジャーナルがどこに格納されるかにかかわらず正確である。たとえば、オフセットとしてジャーナル内のチャンクの位置を特定することによって、チャンクはリラティブアドレッシング(relative addressing)によってアクセスされ得る。
開示された実現例は典型的に、各ジャーナルが格納される位置372を特定するジャーナルメタデータ236を含む(922)。これは、図3〜図5および図8において以前に記載された。
オープンプライマリジャーナル232およびオープンセカンダリジャーナル234の分散は、利用可能なインスタンス102と、配置ポリシー212と、配置ポリシー212による新しいオブジェクト226の予想される分散と、新しいオブジェクトがどこ(たとえばヨーロッパ、北米、アジア)からロードされるかと、利用可能なインスタンス102の各々での処理リソースと、さまざまなインスタンス同士間のネットワーク帯域幅とを含む多くのファクタに依存する。たとえば、多くのオブジェクトが、特定のインスタンスにおいて特定の配置ポリシーでアップロードされる場合、そのインスタンスでの同じ配置ポリシーについて、複数のジャーナルがオープンにされる(924)。いくつかのシナリオにおいて、ロードバランシングに必要とされる場合、単一のインスタンス102において、同じ配置ポリシー212について、5個、10個、またはそれ以上のオープンジャーナルが存在し得る。
図5および図6に関して上述したように、いくつかの実現例は、第1のインスタンスにおいてオープンにされたジャーナルに対応するジャーナルをオープンにするよう、メッセージを分散ストレージシステム200の第3のインスタンスに送信する(916)。このシナリオにおいて、第1のインスタンスにおいてオープンにされたジャーナル232はプライマリジャーナルと称され、第3のインスタンスでオープンにされたジャーナル234はセカンダリジャーナルと称される。(もちろん、第1のインスタンスはセカンダリジャーナルも有し得、第3のインスタンスはプライマリジャーナルを有し得る)。
第1のインスタンス102では、少なくとも第1のオブジェクトチャンクを含む(928)第1のオブジェクト226が受け取られる(928)。これは、図6に関して上に記載された。第1のオブジェクト226は第1の配置ポリシー212に関連付けられており、したがって、オブジェクト226を含むオブジェクトチャンク238のすべては第1の配置ポリシー212に関連付けられる。第1のオブジェクトチャンク238は、関連付けられる配置ポリシーが第1の配置ポリシー212とマッチする第1のジャーナル232に格納される(930)。第1のジャーナル232は、配置ポリシーが第1の配置ポリシーとマッチするオブジェクトについてのオブジェクトチャンクのみを格納する(932)。いくつかの実現例では、第1のジャーナル232に格納された各オブジェクトチャンク238は、第3のジャーナル234における格納のために、第3のインスタンスに送信される(934)。
受け取られたオブジェクトがチャンクサイズより大きい場合、オブジェクトは複数のチャンク238へ分割される。この場合、第1のオブジェクト226は2つ以上のオブジェクトチャンクを含む(936)。典型的に、第2のオブジェクトチャンクは、第1のオブジェクトチャンクと異なる(936)。(単一のオブジェクト内に2つの同一のチャンクを有することは稀であるが、たとえば、オブジェクトが空のスペースの非常に大きな部分を有する場合に起こり得る。)いくつかの状況では、第2のオブジェクトチャンクが、関連付けられる配置ポリシーが第1の配置ポリシーとマッチする、第1のジャーナルとは異なる第2のジャーナル232に格納される(938)。第2のジャーナルは、配置ポリシーが第1の配置ポリシーとマッチするオブジェクトについてのオブジェクトチャンクのみを格納する(938)。これにより、多くのチャンクを含むオブジェクトは、多くの異なるジャーナルにわたって分散されるチャンクを有し得る。
オブジェクト226を受け取り、かつ、第1のジャーナル232にチャンク238を格納するこのプロセスは、関連付けられる配置ポリシー338が第1の配置ポリシー212にマッチする複数のオブジェクト226について、第1の終了条件が発生するまで繰り返される(940)。いくつかの実現例では、第1の終了条件は、第1のジャーナルのサイズが予め規定されたしきい値を越える(942)場合に発生する。いくつかの実現例では、第1の終了条件は、第1のジャーナルが予め規定された時間スパンの間オープンであった場合(944)に発生する。いくつかの実現例は、さまざまな態様でサイズおよび時間を組み合わせる。たとえば、いくつかの実現例は、時間スパンおよびサイズ限界の両方を特定しており、終了条件は、上記のうちのいずれか一方が最初に発生することである。
終了条件が発生した後、第1のジャーナルはクローズされ(946)、これにより、如何なる付加的なオブジェクトチャンクも第1のジャーナル232に格納されることを防止する。一般に、実現例は、第1のジャーナルをクローズする前に、同じ配置ポリシーについての他のジャーナル232がまだオープンである(または新しいジャーナルがオープンである)ことを確認する。新しいオブジェクトがいつでも到着し得るので、格納のためにオープンジャーナルを利用可能にしておくことが重要である。別のインスタンスに対応するセカンダリジャーナル234が存在する場合、第1のインスタンスは、第1の終了条件が発生する場合に対応するセカンダリジャーナルをクローズするよう、他のインスタンスにメッセージを送信する(948)。
第1のジャーナル232がクローズされた後、ジャーナルはその配置ポリシーに従う。配置ポリシー212を満足させることは、ジャーナルレプリカを移動させること、ジャーナルレプリカの新しいコピーを作成すること、または、ジャーナルのレプリカを削除することを必要とし得る。いくつかの状況では、第1のジャーナル232は、配置ポリシー212に従って、分散ストレージシステム200の第2のインスタンス102にレプリケートされる(950)。(他の状況において、第1のジャーナルのレプリカは削除される。)プライマリオープンジャーナル232およびセカンダリオープンジャーナル234を有する実現例では、それらがひとたびクローズされると、2つの同等なクローズドジャーナル230が存在することになる。したがって、レプリケーション950のためのソースとして、レプリカのいずれかが使用され得る。レプリケーション950が発生する(すなわちトランザクションの一部として)と、第2のインスタンスにジャーナルのコピーが存在することを示すよう、第1のジャーナルについてのジャーナルメタデータ236は更新される(952)。これは図8に関して上に記載された。
ジャーナル230がクローズされた後、オブジェクトチャンク238が削除され得る。たとえば、オブジェクトはメール添付物に対応し得る。電子メールの受信者が電子メールを削除すれば、当該添付物についての格納分は削除され得る。ある期間の後、当該削除により各ジャーナル内にホールが存在するので、当該無駄にされているスペースを除去するようジャーナルをコンパクト化することが有用である。これは、揮発性メモリのフラグメンテーション、および、未使用スペースをより大きな連続ブロックへと統合するデフラグメンテーションのプロセスに類似している。
格納されたオブジェクトチャンクが多くの(たとえば何百、何千または何百万の)異なるオブジェクトに対応し得るので、ジャーナルにおけるオブジェクトチャンクは、当該オブジェクトチャンクへの参照がもはや存在しない場合にのみ削除され得る。したがって、第1のクローズドジャーナル230がひとたび選択される(954)と、プロセス900は、オブジェクトメタデータ228において参照が存在しない第1のクローズドジャーナル230に格納された1つ以上のオブジェクトチャンクを識別する(956)。これらの識別されたチャンク238について、対応するレコードを除去するようチャンクインデックス706が更新される(958)。いくつかの実現例では、識別されたオブジェクトチャンクに以前に割り当てられたスペースは、上書きされる(たとえば各バイトがASCII0にセットされる)が、他の実現例では、当該スペースはもはや参照されない。いくつかの実現例では、割り当てを解除されたストレージスペースは、他のジャーナルデータ708の一部としてトラッキングされる。たとえば、いくつかの実現例は、割り当てを解除されたストレージスペース(たとえばオフセットおよびサイズ)のリストを維持するか、または、割り当てを解除されたスペースをリンク付けされたリストとしてトラッキングする。
いくつかの実現例では、ガーベッジコレクションアルゴリズムは、クローズドジャーナルの各々をコンパクト化する(960)よう、周期的に実行される。当該コンパクションプロセスは、格納されたオブジェクトチャンクを連続的なブロックへ統合し(960)、これにより、ジャーナル230のサイズを低減する。時間にわたって、より多くのオブジェクトチャンクが削除されると、ジャーナル230は小さくなり得る。多くの小さなジャーナルを管理することには、個々のオブジェクトを管理することと同様のオーバーヘッドが存在するので、ジャーナルの格納の利益は縮小される。この問題に対応するために、いくつかの実現例は、2つ以上のクローズドジャーナル同士を結合して(962)単一の置換ジャーナルを形成し、当該2つ以上のジャーナルに以前に格納されたオブジェクトチャンクは置換ジャーナルに格納されているということを示すようオブジェクトメタデータ228を更新する(962)。結合オペレーションは、完全に新しいジャーナルを形成することと、関連するオブジェクトのすべてについてメタデータを更新することとを必要とするので、結合は通常、ジャーナルが相対的に小さくなったシナリオに限定される。
図10Aおよび図10Bは、分散ストレージシステムにおいて、オブジェクトおよび関連付けられるメタデータを格納するための2つの実現例を示す。図10Aにおいて示される実現例は、完全に階層的(hierarchical)である。すなわち、すべてのオブジェクトは1つ以上のチャンクへ分割され、すべてのチャンクは1つ以上のブロックへ分割されている。なお、1つのチャンクまたは1つのブロックのみが存在する場合も、当該構造は階層的である。他方、図10Bに示される実現例は単に、部分的に階層的である。この実現例において、いくつかのチャンクは、ブロックのリストを指す「スーパーチャンク」である。たとえばスーパーチャンクは、100個のブロック、1000個のブロック、またはそれ以上のブロックを有するブロックリストを有し得る。スーパーチャンクでないチャンクは単にブロックである。すなわち、チャンク識別子は、ブロックのリストではなく、オブジェクトデータの実際のストレージを指す。このハイブリッドアプローチは、(階層が必要でない)小さなオブジェクトと、ストレージ階層が非常により効率的である非常に大きいオブジェクトとの両方を含む分散ストレージシステムに有用であり得る。
図2〜図4に示されるように、グローバルメタデータ1002は、オブジェクトメタデータ228およびジャーナルメタデータ236を含む。いくつかの実現例において、各チャンクID346は、チャンクについてのデータを複合化するために使用される復号化キー1040を割り当てられる。これらの実現例では、同じ復号化キーは、複数のブロックへ分割されるチャンクについて、チャンクにおけるすべてのブロックに適用されることになる。各チャンクは、事実上一意である自身の復号化キー1040を有する。新しいキーが生成される場合、いくつかの実現例は一意性を保証するが、いくつかの実現例は新しいキーをランダムに生成し、キーの繰り返しが起こる可能性はあまり高くない。復号化キー1040は、新しいオブジェクトが格納される際に、新しいオブジェクトを暗号化するために使用される暗号キーに対応する。復号化キー1040は各オブジェクトチャンクにアクセスするために必要とされるので、復号化キーを削除することは、オブジェクトチャンクの「ソフトな(soft)」削除として使用され得る。復号化キーがなくなると、暗号化されたストレージは「ガーベッジ」となり、実際のデータはアクセス不能となる。これにより、ガーベッジコレクションアルゴリズムは、コンパクション同士の間により多くの時間を得ることが可能になり、ガーベッジコレクションプロセスは、実行されると、より多くのストレージスペースを回収することができる。
さらに、(オープンとして示される)ジャーナル232と、対応するローカルメタデータ1004とが図10Aにおいて示される。いくつかの実現例では、ジャーナル232についてのローカルメタデータ1004は、ヘッダー702の一部として、ジャーナル自身に格納される。他の実現例では、ジャーナルについてのローカルメタデータ1004は別個のファイルとして(またはデータベースなどに)格納され、ジャーナルに関連付けられる。非階層的なストレージについてのジャーナル232の構造は図7に関して上で示された。この実現例では、チャンクを格納するのではなく、ストレージの基本単位は、ブロック1016−1,1016−2,…,1016−Nといったブロック1016である。各実現例は典型的に、2メガバイト、4メガバイト、8メガバイトまたは16メガバイトといったような最大のブロックサイズを特定する。
上に示されるように、ローカルメタデータ1004はジャーナル232のヘッダー702に格納され得るか、または、別々に格納され得る。各チャンク識別子346について、1つ以上のブロック識別子1008を含む対応するブロックリスト1006(典型的に一意のブロックリスト)が存在する。小さなチャンクについては、ブロックリスト1006は、単一のブロック識別子1008を含み得る。ローカルメタデータ1004はさらに、各ブロックがジャーナル232内でどこに位置するかを特定するブロックインデックス1010を含む。いくつかの実現例において、ブロックの位置はオフセットおよびサイズによって特定される。いくつかの実現例におけるブロックオフセット1012は、ストレージスペース714の始めからのオフセットまたはジャーナルファイル232の始めについてのオフセットである。典型的に、ブロックサイズ1014はバイトで特定されるが、他の実現例は、サイズの代替的な基本単位(たとえば2バイト、4バイトまたは8バイト)を使用する。ローカルメタデータの1つの局面は、ジャーナルが別のインスタンスに移動またはレプリケートされる場合に、ローカルメタデータは変更しないということである。すなわち、あるチャンクについてのブロックリスト1006は同じままであり、ブロックID1008は同じままであり、ジャーナル内のブロックオフセット1012は同じままであり、ブロックサイズは同じままである。
図10Bは図10Aと同様であるが、部分的に階層的な構造を示す。図10Bの部分的に階層的な構造において、グローバルメタデータ1002は、各チャンクが通常のブロックか、または、ブロックのリストを参照する(すなわちスーパーチャンクである)かどうかを示す「スーパーチャンク」フィールド1020を含む。いくつかの実現例において、ほとんどのオブジェクトは小さく、単一のチャンクからなる。この場合、チャンクID346は、チャンク/ブロックインデックス1024においてブロックを直接的に識別する。すなわち、チャンクID346はチャンク/ブロックID1026である。したがって、スーパーチャンクでないチャンクの場合、ジャーナル232における対応するブロック1016についてオフセット1028およびサイズ1030を見つけるために、チャンク/ブロックインデックス1024における適切なレコードをルックアップするよう、チャンクID346が使用され得る。
スーパーチャンクの場合、チャンクID346は、ローカルメタデータ1004においてルックアップされ得る(スーパー)チャンクID1022である。スーパーチャンクID1022に対応するのはブロックリスト1006であり、ブロックリスト1006はブロックID1008のセットを含む。この場合、ブロックIDの各々は、スーパーチャンクID1022についてのブロックリスト1006においてブロックID1026の各々についてオフセット1028およびサイズ1030を識別するよう、チャンク/ブロックインデックス1024においてルックアップされ得る。上記のように、オフセット1028およびサイズ1030は、ジャーナル232のストレージスペース714において実際のブロックストレージの位置を識別する。したがって、スーパーチャンクはさらなるレベルの階層を有するが、グローバルメタデータ1002に格納されるチャンクメタデータの量を低減する。これは、1つのインスタンスから別のインスタンスにシャードを移動させることをより容易かつ効率的にする。
図11A〜図11Dは、いくつかの実現例に従った、分散ストレージシステム200においてオブジェクトレプリカの配置を管理する(1102)方法1100を示す。この方法は、1つ以上のプロセッサおよびメモリを有する分散ストレージシステムの第1のインスタンス102において実行される(1104)。メモリは、1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納する(1106)。いくつかの実現例において、方法1100のすべてまたは部分は位置割当デーモン206によって実行される。いくつかの実現例において、分散ストレージシステムは複数のインスタンスを有する(1108)。これらの実現例のうちのいくつかでは、インスタンスの少なくともサブセットは、異なる地理的位置に存在する(1108)。いくつかの実現例において、各インスタンスはデータセンタに対応する。いくつかの実現例において、各データセンタは1つ以上のインスタンスを含む。
第1のインスタンスでは、1つ以上のジャーナル232がオブジェクトチャンクの格納のためにオープンにされる(1110)。各ジャーナルは、単一のそれぞれの配置ポリシー212に関連付けられる(1112)。いくつかの実現例では、各配置ポリシーは、対象数のオブジェクトレプリカと、オブジェクトレプリカについての位置の対象セットとを特定する(1122)。いくつかの実現例では、配置ポリシー212は、データストア224のどのタイプがインスタンスのうちのいくつかにおいて使用されるべきであるか(たとえばディスクまたはテープ)を特定し得る。いくつかの実現例では、分散ストレージシステム200は、どのジャーナルに各オブジェクトチャンク238が格納されているかを特定するオブジェクトメタデータ228(グローバルメタデータ1002の部分)を含む(1114)。これは、図3〜図5、図10Aおよび図10Bに関して以前に記載された。いくつかの実現例では、各それぞれのジャーナルは、それぞれのジャーナルに格納された各ブロックの位置を特定するブロックインデックス1010または1026を含む(1116)。これは、図7(非階層的)、図10Aおよび図10Bにより詳細に記載された。特に、ジャーナル232内の各ブロック1016の位置は、ジャーナル自身に対して識別され、したがって、ブロックインデックス1010または1026は、ジャーナル232がどこに格納されるかにかかわらず正確である。たとえば、オフセットとしてジャーナル232内のブロック1016の位置を特定することによって、ブロック1016はリラティブアドレッシング(relative addressing)によってアクセスされ得る。
開示された実現例は典型的に、各ジャーナルが格納される位置372を特定するジャーナルメタデータ236(グローバルメタデータ1002の一部)を含む(1118)。これは、図3〜図5および図8に以前に記載された。
オープンプライマリジャーナル232およびオープンセカンダリジャーナル234の分散は、利用可能なインスタンス102と、配置ポリシー212と、配置ポリシー212有する新しいオブジェクト226の予想される分散と、新しいオブジェクトがどこ(たとえばヨーロッパ、北米、アジア)からロードされるかと、利用可能なインスタンス102の各々での処理リソースと、さまざまなインスタンス同士間のネットワーク帯域幅とを含む多くのファクタに依存する。たとえば、多くのオブジェクトが、特定のインスタンスにて特定の配置ポリシーでアップロードされる場合、そのインスタンスでの同じ配置ポリシーについて、複数のジャーナルがオープンにされる(1120)。いくつかのシナリオにおいて、ロードバランシングに必要とされる場合、単一のインスタンス102において、同じ配置ポリシー212について、5個、10個、またはそれ以上のオープンジャーナルが存在し得る。
第1のインスタンス102では、少なくとも第1のオブジェクトチャンクを含む(1124)第1のオブジェクト226が受け取られる(1124)。これは、図6に関して上に記載された。第1のオブジェクト226は第1の配置ポリシー212に関連付けられており(1124)、したがって、オブジェクト226を含むオブジェクトチャンク238のすべては第1の配置ポリシー212に関連付けられる。第1のオブジェクトチャンクは、図10Aおよび図10Bに関して上述したように、第1の複数のブロックを含む(1126)。いくつかの実現例において、プロセス1100は、チャンクおよびブロックに既にパーティショニングされたオブジェクト238を受け取る(1124)。たとえば、オブジェクトをアップロードするクライアントデバイスによって分割が実行され得る。他の実現例において、プロセス1100は、オブジェクトをストリームとして受け取り、格納された基準(たとえば対象ブロックおよびチャンクサイズ、利用可能なオープンジャーナル、利用可能なインスタンス、利用可能な帯域幅など)に従ってチャンクおよびブロックへオブジェクトを分割する。いくつかの実現例では、まだオブジェクトについてデータを受け取っている間、チャンクの動的割り当てが実行され、その一方、他の実現例は、全オブジェクトが受け取られた後にのみオブジェクトをチャンクおよびブロックへ分割する。
チャンクおよびブロックの階層は、さまざまな態様で、オブジェクトのサイズのようなさまざまなファクタに基づいて形成され得る。いくつかの実現例において、階層は、アップロードプロセスの間に動的に構築される。たとえば、第1のオブジェクトチャンクが作成され、しきい値数のブロックがチャンクに割り当てられるまで、データのストリームが、第1のオブジェクトチャンクに割り当てられるブロックへ分割される。その時点において、第2のチャンクが作成され、新しいブロックが第2のチャンクに追加される。別の実現例では、データのストリームは最初は、ストレージのブロックとして格納され、ブロックがもはや存在しない場合、ブロックはチャンクへとグループ化される。
いくつかの実現例において、すべてのオブジェクトチャンク238は1つ以上のブロックを含む(1128)。これは、図10Aに関して上で示された。いくつかの実現例において、グローバルメタデータ1002は、各オブジェクトチャンク238がブロックまたはブロックのリストであるかどうかを特定するフィールド1020を含む(1130)。これは、図10Bにおいて上で示される。いくつかのインスタンスにおいて、第1のオブジェクトチャンクはブロック(すなわちスーパーチャンク)のリストであり(1132)、第2のチャンクは通常のブロック(スーパーチャンクでない)である(1132)。
第1の複数のブロック1016は、関連付けられる配置ポリシーが第1の配置ポリシー212とマッチする第1のジャーナル232に格納される(1134)。第1のジャーナル232は、配置ポリシーが第1の配置ポリシーとマッチするオブジェクトについてのブロックのみを格納する(1136)。
受け取られたオブジェクトが特定されたサイズ(たとえばチャンクサイズまたはブロックサイズ)より大きい場合、オブジェクトは、複数のチャンク238および/または複数のブロック1016へ分割される。いくつかのインスタンスにおいて、第1のオブジェクト226は2つ以上のオブジェクトチャンクを含む(1138)。典型的に、第2のオブジェクトチャンクは、第1のオブジェクトチャンクと異なる(1138)。(単一のオブジェクト内に2つの同一のチャンクを有することは稀であるが、たとえば、オブジェクトが空のスペースの非常に大きな部分を有する場合に起こり得る。)いくつかの状況では、第2のオブジェクトチャンクが、関連付けられる配置ポリシーが第1の配置ポリシーとマッチする第1のジャーナルとは異なる第2のジャーナル232に格納される(1140)。第2のジャーナルは、配置ポリシーが第1の配置ポリシーとマッチするオブジェクトについてのオブジェクトチャンクのみを格納する(1140)。これにより、多くのチャンクを含むオブジェクトは、多くの異なるジャーナルにわたって分散されるチャンクを有し得る。
いくつかの実現例では、そのプロセスは、各オブジェクトチャンクについてデータを暗号化し(1142)、グローバルメタデータにおける各オブジェクトチャンクについての復号化キーを格納する(1142)。これは、図10Aおよび図10Bにおいて上で示された。いくつかの実現例では、チャンクが複数のブロックへ分割される場合、チャンク内のブロックの各々は同じ暗号キーで暗号化されるので、同じ復号化キーで複合化され得る。他の実現例において、各ブロックは、ブロックインデックス1010または1026の一部として格納され得るそれ自身の復号化キーを有する。グローバルメタデータ1002に復号化キー1040を格納する実現例では、チャンクは単純に、復号化キーを削除すること(1144)によって事実上削除され得る。オリジナルチャンクについてデータを抽出する方法がないので、チャンクはアクセス不能である。これはいくつかの利点を提供する。第1に、チャンクを削除することは迅速かつ有効である。第2に、削除されたデータにアクセスする現実のリスクがないので、より効率的なガーベッジコレクションプロセスが実現され得る。特に、ガーベッジコレクションは適切な間隔でスケジューリングされ得、ディスクからストレージの物理的な削除(physical deletes of storage)をバッチ処理し得る。コンパクションはリソース集中的なプロセスであるので、多くの削除を一緒にバッチ処理する能力は、効率を劇的に増加させ得る。第3に、いくつかの実現例は、暗号化された「意味のないこと(gibberish)」は、意味のあるコンテンツに戻すように変換され得ないので、ストレージスペースの物理的な消去を必要としない。
プロセス1100は、第1のオブジェクトについてのグローバルメタデータを格納する(1146)。これは、図3〜図5、図10Aおよび図10Bにおいて上で示された。グローバルメタデータ1002は、第1のオブジェクトに対応するオブジェクトチャンクの第1のリストを含む(1148)。特に、第1のリストは、第1のオブジェクトチャンク238についてのオブジェクト識別子330を含む(1150)。グローバルメタデータ1002はさらに、ジャーナルの各々についての位置と同様に各チャンクが格納されるジャーナルを識別する。
グローバルメタデータ1002に加えて、ローカルメタデータ1004が各ジャーナル232について格納される。いくつかの実現例では、各ジャーナルについてのローカルメタデータ1004は、ジャーナル232自身のヘッダー702に格納される。他の実現例において、ローカルメタデータ1004はジャーナルとは別々に格納される。別々に格納される場合、各ジャーナルについてのローカルメタデータ1004は別々に格納されてもよく(たとえば各ジャーナルに対応する異なるメタデータファイル)、または、ローカルメタデータは(たとえばデータベースにおいて)一緒にグループ化されてもよい。
第1のインスタンスは、第1のオブジェクトチャンク238についてのローカルメタデータ1004を格納する(1152)。ローカルメタデータ1004は、第1の複数のブロックにおける各ブロックを識別するブロックリストを含む(1154)。なお、ブロックリストは、グローバルメタデータ1002ではなく、ローカルメタデータ1004に格納される。ローカルメタデータ1004に格納されたブロックリスト1006は、ブロックがどのように各ジャーナル内に割り当てられるかをトラッキングする。第1のジャーナル232についてのローカルメタデータは、第1のジャーナル232に関連付けられる(1156)。いくつかの実現例では、ジャーナルとのローカルメタデータの関連付けは、ジャーナルにローカルメタデータを格納することによって行なわれており、これによりジャーナルがより独立する(self-contained)。いくつかの実現例では、ジャーナル232についてのローカルメタデータは別々に(たとえば別個のファイルにおいて)格納され、(たとえば、ジャーナルの名称と、関連付けられるメタデータファイルの名称とにジャーナルID370を含むことによって)ジャーナルに関連付けられる。データベースにローカルメタデータを格納する実現例において、ジャーナルID370は典型的にメタデータテーブルについてのプライマリキーの一部である。
オブジェクト226を受け取り、かつ、第1のジャーナル232にチャンク238を格納するこのプロセスは、関連付けられる配置ポリシー338が第1の配置ポリシー212にマッチする複数のオブジェクト226について、第1の終了条件が発生するまで繰り返される(1158)。いくつかの実現例では、第1の終了条件は、第1のジャーナルのサイズが予め規定されたしきい値を越える(1160)場合に発生する。いくつかの実現例では、第1の終了条件は、第1のジャーナルが予め規定された時間スパンの間オープンであった場合(1162)に発生する。いくつかの実現例は、さまざまな態様でサイズおよび時間を組み合わせる。たとえば、いくつかの実現例は、時間スパンおよびサイズ限界の両方を特定しており、終了条件は、上記のうちのいずれか一方が最初に発生することである。
終了条件が発生した後、第1のジャーナルはクローズされ(1164)、これにより、如何なる付加的なブロックも第1のジャーナル232に格納されることを防止する。一般に、実現例は、第1のジャーナルをクローズする前に、同じ配置ポリシーについての他のジャーナル232がまだオープンである(または新しいジャーナルがオープンである)ことを確認する。新しいオブジェクトがいつでも到着し得るので、格納のためにオープンジャーナルを利用可能にしておくことが重要である。
第1のジャーナル232がクローズされた後、ジャーナルはその配置ポリシーに従う。配置ポリシー212を満足させることは、ジャーナルレプリカを移動させること、ジャーナルレプリカの新しいコピーを作成すること、または、ジャーナルのレプリカを削除することを必要とし得る。いくつかの状況では、第1のジャーナル232は、配置ポリシー212に従って、分散ストレージシステム200の第2のインスタンス102にレプリケートされる(1166)。(他の状況において、第1のジャーナルのレプリカは削除される。)プライマリオープンジャーナル232およびセカンダリオープンジャーナル234を有する実現例では、それらがひとたびクローズされると、2つの同等なクローズドジャーナル230が存在することになる。したがって、レプリケーション1166のためのソースとして、レプリカのいずれかが使用され得る。レプリケーション1166が発生する(たとえばトランザクションの一部として)と、第2のインスタンスにジャーナルのコピーが存在することを示すよう、第1のジャーナルについてのグローバルメタデータ1002が更新される(1168)。他方、ローカルメタデータ1004はレプリケーションによって変更されない(1168)。これは、図8、図10Aおよび図10Bに関して上で記載された。
ジャーナル230がクローズされた後、オブジェクトチャンク238が削除され得る。たとえば、オブジェクトはメール添付物に対応し得る。電子メールの受信者が電子メールを削除すれば、当該添付物についての格納分は削除され得る。ある期間の後、当該削除により各ジャーナル内にホールが存在するので、当該無駄にされているスペースを除去するようジャーナルをコンパクト化することが有用である。これは、揮発性メモリのフラグメンテーション、および、未使用スペースをより大きな連続するストレージへと統合するデフラグメンテーションのプロセスに類似している。
格納されたオブジェクトチャンクが多くの(たとえば何百、何千または何百万の)異なるオブジェクトに対応し得るので、ジャーナルにおけるオブジェクトチャンクは、当該オブジェクトチャンクへの参照がもはや存在しない場合にのみ削除され得る。したがって、第1のクローズドジャーナル230がひとたび選択される(1170)と、プロセス1100は、オブジェクトメタデータ228において参照が存在しない第1のクローズドジャーナル230に格納された1つ以上のオブジェクトチャンクを識別する(1172)。いくつかの実現例では、ガーベッジコレクションアルゴリズムは、クローズドジャーナルの各々をコンパクト化する(1174)よう、周期的に実行される。当該コンパクションプロセスは、格納されたブロックを連続的なストレージへと統合し(1174)、これにより、ジャーナル230のサイズを低減する。
時間にわたって、より多くのオブジェクトチャンクが削除されると、ジャーナル230は小さくなり得る。多くの小さなジャーナルを管理することには、個々のオブジェクトを管理することと同様のオーバーヘッドが存在するので、ジャーナルの格納の利益は縮小される。この問題に対応するために、いくつかの実現例は、2つ以上のクローズドジャーナル同士を結合して(1176)単一の置換ジャーナルを形成し、当該2つ以上のジャーナルに以前に格納されたオブジェクトチャンクは置換ジャーナルに格納されているということを示すようオブジェクトメタデータ228を更新する(1176)。結合オペレーションは、完全に新しいジャーナルを形成することと、関連するオブジェクトのすべてについてメタデータを更新することとを必要とするので、結合は通常、ジャーナルが相対的に小さくなったシナリオに限定される。
図12は、いくつかの実現例に従った、図10Bに関して以前に示されるように分散ストレージシステムにチャンクを格納する例を示す。この例において、2つのチャンク238−1および238−2が示される。チャンク238−1は、チャンクID346−1の通常のチャンクである(すなわちスーパーチャンクでない)。チャンク238−1は、通常のチャンクであるので、チャンク/ブロックインデックス1024において直接的にルックアップされ得る。この図において、チャンク/ブロックインデックス1024は、データが格納されるジャーナル232のヘッダー702に格納される。このチャンク/ブロックについては、オフセット1028はy(1028−y)である。このオフセットを使用すると、対応するブロックB1016−Bは、ストレージスペース714において発見され得る。
しかしながら、チャンク238−2は(スーパー)チャンクID346−2を有するスーパーチャンクである。ここで示されるように、スーパーチャンク238−2は、ブロックリストテーブル1006におけるエントリを指す。各スーパーチャンクID1022について、複数の対応するブロックID1008が存在する。図12は、2つの対応するブロック1008−1および1008−2を示すが、非常に大きいオブジェクトの場合、単一のチャンクについて非常に多くのブロックが存在し得る。その後、ブロックID1008−1および1008−2は、ブロックについてオフセット1028−xおよび1028−zを発見するよう、チャンク/ブロックインデックス1024においてルックアップされる。最後に、オフセット1028−xおよび1028−zを使用して、対応するブロック1016−Aおよび1016−Cはストレージスペース714に位置する。この例では、2つのブロックは連続しておらず、実際は、チャンク238−1についてのブロック1016−Bは、チャンク238−2についての2つのブロックを分離する。もちろん、各ブロックについての適切なデータのみが読み出されるように、各ブロックのサイズも使用される。これは、図10Bに関して上で記載された。
(チャンク238−1のような)通常のチャンクを許可しない実現例は完全に階層的である。また、チャンクとブロックとの間の割り当ては、実現例または他の動的なファクタに基づき変動する。たとえば、100個のブロックを有する単一のチャンクまたは25個のブロックを各々備えた4つのチャンクとして、同じオブジェクトが格納され得る。いくつかの実現例は、実際の使用からの経験的なフィードバックに基づいて、チャンクの数を変更する。
説明の目的のためである上記の記載は、特定の実現例を参照して記載された。しかしながら、上記の例示的な議論は、網羅的であるように意図されておらず、または、本発明を開示されたそのままの形態に限定するよう意図されていない。上記の教示に鑑みて多くの修正例および変形例が可能である。上記の実現例は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、考慮される特定の使用に好適なさまざまな修正例とともに、本発明およびさまざまな実現例を最もよく利用するのが可能になる。

Claims (21)

  1. 分散ストレージシステムにおいてオブジェクトレプリカの配置を管理するための方法であって、
    1つ以上のプロセッサと、前記1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するメモリとを有する、前記分散ストレージシステムの第1のインスタンスにおいて、
    第1の配置ポリシーに関連付けられる第1のオブジェクトを受け取ることを含み、前記第1の配置ポリシーは、前記第1のオブジェクトのレプリカが前記分散ストレージシステムにおいてどこに格納されるかについて基準を特定し、前記方法はさらに、
    前記オブジェクトを複数のオブジェクトチャンクに分割し、前記複数のオブジェクトチャンクの第1のオブジェクトチャンクを複数のブロックへ分割することと、
    関連付けられる配置ポリシーが前記第1の配置ポリシーにマッチする第1のジャーナルに前記複数のブロックを格納することと、
    前記第1のオブジェクトについてグローバルメタデータを格納することとを含み、前記グローバルメタデータは前記複数のオブジェクトチャンクのリストを含み、前記リストは前記オブジェクトチャンクの各々についてそれぞれの識別子を含み、前記方法はさらに、
    前記第1のオブジェクトチャンクについてローカルメタデータを格納することを含み、前記ローカルメタデータは、前記複数のブロックの各ブロックを識別するブロックリストを含み、前記ローカルメタデータは前記第1のジャーナルに関連付けられ、前記方法はさらに、
    前記第1の配置ポリシーに従って前記第1のジャーナルを前記分散ストレージシステムの第2のインスタンスにレプリケートすることを含み、前記グローバルメタデータは当該レプリケーションを反映するために更新され、前記ローカルメタデータは前記レプリケーションによって変更されない、方法。
  2. 前記グローバルメタデータは、各オブジェクトチャンクがブロックまたはブロックのリストかどうかを特定するフィールドを含み、第2のオブジェクトチャンクはブロックであり、前記第1のオブジェクトチャンクはブロックのリストである、請求項1に記載の方法。
  3. 前記グローバルメタデータは、各オブジェクトチャンクがどのジャーナルに格納されるかを特定し、各それぞれのジャーナルレプリカは、前記それぞれのジャーナルレプリカに格納される各ブロックの位置を特定するブロックインデックスを含む、請求項1に記載の方法。
  4. 前記第1のインスタンスにおいて、
    第1のクローズドジャーナルのレプリカを選択することと、
    前記グローバルメタデータに参照が存在しない前記レプリカに格納される1つ以上のオブジェクトチャンクを識別することと、
    前記レプリカをコンパクト化し、これにより前記レプリカに格納される前記ブロックを連続するストレージに統合することとをさらに含む、請求項1〜3のいずれか1項に記載の方法。
  5. 前記分散ストレージシステムは、異なる地理的位置にて複数のインスタンスを有する、請求項1〜3のいずれか1項に記載の方法。
  6. 各オブジェクトチャンクについてのデータが暗号化され、各オブジェクトチャンクについての復号化キーが前記グローバルメタデータに格納され、前記方法はさらに、前記グローバルメタデータから対応する復号化キーを削除することによって、オブジェクトチャンクを事実上削除し、これにより、前記オブジェクトについてのデータをアクセス不能にすることを含む、請求項1〜3のいずれか1項に記載の方法。
  7. 分散ストレージシステムにおいてオブジェクトレプリカの配置を管理するための方法であって、
    1つ以上のプロセッサと、前記1つ以上のプロセッサによる実行のための1つ以上のプログラムを格納するメモリとを有する、前記分散ストレージシステムの第1のインスタンスにおいて、
    オブジェクトチャンクの格納のために1つ以上のジャーナルをオープンにすることを含み、各それぞれのジャーナルは単一のそれぞれの配置ポリシーに関連付けられ、前記方法はさらに、
    少なくとも第1のオブジェクトチャンクを含む第1のオブジェクトを受け取ることを含み、前記第1のオブジェクトは第1の配置ポリシーに関連付けられ、前記第1のオブジェクトチャンクは第1の複数のブロックを含み、前記方法はさらに、
    関連付けられる配置ポリシーが前記第1の配置ポリシーとマッチする第1のジャーナルに前記第1の複数のブロックを格納することを含み、前記第1のジャーナルは、配置ポリシーが前記第1の配置ポリシーとマッチするオブジェクトについてのブロックのみを格納し、前記方法はさらに、
    前記第1のオブジェクトについてのグローバルメタデータを格納することを含み、前記グローバルメタデータは、前記第1のオブジェクトに対応するオブジェクトチャンクの第1のリストを含み、前記第1のリストは前記第1のオブジェクトチャンクの識別子を含み、前記方法はさらに、
    前記第1のオブジェクトチャンクについてローカルメタデータを格納することを含み、前記ローカルメタデータは、前記第1の複数のブロックの各ブロックを識別するブロックリストを含み、前記ローカルメタデータは前記第1のジャーナルに関連付けられ、前記方法はさらに、
    前記第1のジャーナルについて、関連付けられる配置ポリシーが前記第1の配置ポリシーとマッチする第1の複数のオブジェクトについての前記受け取るステップおよび格納するステップを、第1の終了条件が発生するまで繰り返すことと、
    前記第1の終了条件が発生した後、前記第1のジャーナルをクローズし、これにより、如何なる付加的なブロックも前記第1のジャーナルに格納されるのを防止することと、
    前記第1の配置ポリシーに従って前記分散ストレージシステムの第2のインスタンスへ前記第1のジャーナルをレプリケートすることとを含み、前記グローバルメタデータは当該レプリケーションを反映するよう更新され、前記ローカルメタデータは前記レプリケーションによって変更されない、方法。
  8. 各オブジェクトチャンクは1つ以上のブロックを含む、請求項7に記載の方法。
  9. 前記グローバルメタデータは、各オブジェクトチャンクがブロックまたはブロックのリストであるかどうかを特定するフィールドを含む、請求項7に記載の方法。
  10. 第2のオブジェクトチャンクはブロックであり、前記第1のオブジェクトチャンクはブロックのリストである、請求項9に記載の方法。
  11. 前記第1のオブジェクトは、前記第1のオブジェクトチャンクとは異なる第2のオブジェクトチャンクを含む2つ以上のオブジェクトチャンクを含み、前記第2のオブジェクトチャンクは、関連付けられる配置ポリシーが前記第1の配置ポリシーとマッチする、前記第1のジャーナルとは異なる第2のジャーナルに格納される、請求項7〜10のいずれか1項に記載の方法。
  12. 前記グローバルメタデータは、各オブジェクトチャンクがどのジャーナルに格納されるかを特定し、各それぞれのジャーナルレプリカは、前記それぞれのジャーナルレプリカに格納される各ブロックの位置を特定するブロックインデックスを含む、請求項7〜10のいずれか1項に記載の方法。
  13. 前記第1のインスタンスにおいて、
    第1のクローズドジャーナルのレプリカを選択することと、
    前記グローバルメタデータに参照が存在しない前記レプリカに格納される1つ以上のオブジェクトチャンクを識別することと、
    前記レプリカをコンパクト化し、これにより前記レプリカに格納される前記ブロックを連続するストレージに統合することとをさらに含む、請求項7〜10のいずれか1項に記載の方法。
  14. 各配置ポリシーは、対象数のオブジェクトレプリカと、オブジェクトレプリカについての位置の対象セットとを特定する、請求項7〜10のいずれか1項に記載の方法。
  15. 前記分散ストレージシステムは、異なる地理的位置にて複数のインスタンスを有する、請求項7〜10のいずれか1項に記載の方法。
  16. 各オブジェクトチャンクについてのデータが暗号化され、各オブジェクトチャンクについての復号化キーが前記グローバルメタデータに格納される、請求項7〜10のいずれか1項に記載の方法。
  17. 前記グローバルメタデータから対応する復号化キーを削除することによって、オブジェクトチャンクを事実上削除し、これにより、前記オブジェクトについてのデータをアクセス不能にすることをさらに含む、請求項16に記載の方法。
  18. 複数のインスタンスを有する分散ストレージシステムにおけるオブジェクトレプリカの配置を管理するためのコンピュータシステムであって、各それぞれのインスタンスは、
    1つ以上のプロセッサと、
    メモリと、
    前記メモリに格納される1つ以上のプログラムとを含み、前記1つ以上のプログラムは、請求項1〜6のいずれか1項に記載の方法を実行するために前記1つ以上のプロセッサによって実行可能である命令を含む、コンピュータシステム。
  19. 複数のインスタンスを有する分散ストレージシステムにおいてオブジェクトレプリカの配置を管理するためのコンピュータシステムであって、各それぞれのインスタンスは、
    1つ以上のプロセッサと、
    メモリと、
    前記メモリに格納される1つ以上のプログラムとを含み、前記1つ以上のプログラムは、請求項7〜17のいずれか1項に記載の方法を実行するために前記1つ以上のプロセッサによって実行可能である命令を含む、コンピュータシステム。
  20. 複数のインスタンスを有する分散ストレージシステムにおいてオブジェクトレプリカの配置を管理するために格納されるプログラムを有する一時的でないコンピュータ読取可能ストレージ媒体であって、各それぞれのインスタンスは、1つ以上のプロセッサとメモリとを含み、前記1つ以上のプログラムは、請求項1〜6のいずれか1項に記載の方法を実行するために前記1つ以上のプロセッサによって実行可能である命令を含む、一時的でないコンピュータ読取可能ストレージ媒体。
  21. 複数のインスタンスを有する分散ストレージシステムにおいてオブジェクトレプリカの配置を管理するために格納されるプログラムを有する一時的でないコンピュータ読取可能ストレージ媒体であって、各それぞれのインスタンスは、1つ以上のプロセッサとメモリとを含み、前記1つ以上のプログラムは、請求項7〜17のいずれか1項に記載の方法を実行するために前記1つ以上のプロセッサによって実行可能である命令を含む、一時的でないコンピュータ読取可能ストレージ媒体。
JP2016543054A 2013-12-27 2014-12-24 分散ストレージシステムにおけるオブジェクトの階層チャンキング Active JP6479020B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/142,706 2013-12-27
US14/142,706 US9158472B2 (en) 2013-06-25 2013-12-27 Hierarchical chunking of objects in a distributed storage system
PCT/US2014/072356 WO2015100416A1 (en) 2013-12-27 2014-12-24 Hierarchical chunking of objects in a distributed storage system

Publications (3)

Publication Number Publication Date
JP2017500670A true JP2017500670A (ja) 2017-01-05
JP2017500670A5 JP2017500670A5 (ja) 2018-02-08
JP6479020B2 JP6479020B2 (ja) 2019-03-06

Family

ID=53479702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016543054A Active JP6479020B2 (ja) 2013-12-27 2014-12-24 分散ストレージシステムにおけるオブジェクトの階層チャンキング

Country Status (8)

Country Link
US (2) US9158472B2 (ja)
EP (1) EP3087513B1 (ja)
JP (1) JP6479020B2 (ja)
CN (1) CN105940396B (ja)
AU (1) AU2014369830B2 (ja)
CA (1) CA2935215C (ja)
DE (1) DE202014010898U1 (ja)
WO (1) WO2015100416A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020514885A (ja) * 2017-03-13 2020-05-21 ワンディスコ,インク. データセンタにわたってメタデータおよびデータの整合性を維持するための方法、デバイス、およびシステム

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9158472B2 (en) * 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10025802B2 (en) 2014-09-19 2018-07-17 Amazon Technologies, Inc. Automated configuration of log-coordinated storage groups
US9799017B1 (en) 2014-09-19 2017-10-24 Amazon Technologies, Inc. Cross-data-store operations in log-coordinated storage systems
US10303796B2 (en) * 2015-01-09 2019-05-28 Ariba, Inc. Updating distributed shards without compromising on consistency
US9904722B1 (en) 2015-03-13 2018-02-27 Amazon Technologies, Inc. Log-based distributed transaction management
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US9916458B2 (en) * 2015-03-31 2018-03-13 EMC IP Holding Company LLC Secure cloud-based storage of data shared across file system objects and clients
US10191914B2 (en) 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US11609890B1 (en) 2015-06-29 2023-03-21 Amazon Technologies, Inc. Schema management for journal-based storage systems
US10866968B1 (en) 2015-06-29 2020-12-15 Amazon Technologies, Inc. Compact snapshots of journal-based storage systems
US11599520B1 (en) 2015-06-29 2023-03-07 Amazon Technologies, Inc. Consistency management using query restrictions in journal-based storage systems
US10866865B1 (en) 2015-06-29 2020-12-15 Amazon Technologies, Inc. Storage system journal entry redaction
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US10031935B1 (en) * 2015-08-21 2018-07-24 Amazon Technologies, Inc. Customer-requested partitioning of journal-based storage systems
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10229142B2 (en) * 2015-09-14 2019-03-12 International Business Machines Corporation Method and system for handling binary large objects
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US9971822B1 (en) 2015-12-29 2018-05-15 Amazon Technologies, Inc. Replicated state management using journal-based registers
CN105677250B (zh) 2016-01-04 2019-07-12 北京百度网讯科技有限公司 对象存储系统中的对象数据的更新方法和更新装置
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10838620B2 (en) 2016-05-26 2020-11-17 Nutanix, Inc. Efficient scaling of distributed storage systems
CN107622067B (zh) * 2016-07-13 2020-11-20 杭州海康威视数字技术股份有限公司 一种对多个多媒体文件的存储、读取和显示方法及装置
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10866945B2 (en) 2016-10-10 2020-12-15 AlphaPoint User account management via a distributed ledger
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10209901B2 (en) 2017-01-04 2019-02-19 Walmart Apollo, Llc Systems and methods for distributive data storage
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10481988B2 (en) * 2017-01-24 2019-11-19 Zerto Ltd. System and method for consistency verification of replicated data in a recovery system
US10552341B2 (en) * 2017-02-17 2020-02-04 International Business Machines Corporation Zone storage—quickly returning to a state of consistency following an unexpected event
CA3052832C (en) * 2017-02-27 2021-11-16 Timescale, Inc. Scalable database system for querying time-series data
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10701154B2 (en) 2017-05-22 2020-06-30 Microsoft Technology Licensing, Llc Sharding over multi-link data channels
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US11016937B2 (en) * 2017-07-17 2021-05-25 Microsoft Technology Licensing, Llc Updateable distributed file framework
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US11210211B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management
US11055266B2 (en) 2017-08-21 2021-07-06 Western Digital Technologies, Inc. Efficient key data store entry traversal and result generation
US11210212B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Conflict resolution and garbage collection in distributed databases
US10824612B2 (en) 2017-08-21 2020-11-03 Western Digital Technologies, Inc. Key ticketing system with lock-free concurrency and versioning
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10572191B1 (en) 2017-10-24 2020-02-25 EMC IP Holding Company LLC Disaster recovery with distributed erasure coding
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10884919B2 (en) * 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10740306B1 (en) * 2017-12-04 2020-08-11 Amazon Technologies, Inc. Large object partitioning system
WO2019122971A1 (en) * 2017-12-20 2019-06-27 Telefonaktiebolaget Lm Ericsson (Publ) Datafall: a policy-driven algorithm for decentralized placement and reorganization of replicated data
US10382554B1 (en) * 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
CN110058790B (zh) * 2018-01-18 2022-05-13 伊姆西Ip控股有限责任公司 用于存储数据的方法、设备和计算机程序产品
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10594340B2 (en) 2018-06-15 2020-03-17 EMC IP Holding Company LLC Disaster recovery with consolidated erasure coding in geographically distributed setups
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US10885054B2 (en) * 2018-07-03 2021-01-05 Mastercard International Incorporated Tracking metadata changes in multiple data stores and generating alerts for detected data impacts
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10922142B2 (en) 2018-10-31 2021-02-16 Nutanix, Inc. Multi-stage IOPS allocation
US11436203B2 (en) * 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10691378B1 (en) * 2018-11-30 2020-06-23 International Business Machines Corporation Data replication priority management
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
CN109885539A (zh) * 2019-01-28 2019-06-14 南京邮电大学 一种日志文件管理方法
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
KR20220140639A (ko) * 2019-05-22 2022-10-18 묘타, 인크. 보안, 복원, 및 제어가 강화된 분산된 데이터 스토리지를 위한 방법 및 시스템
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11868407B2 (en) * 2020-09-24 2024-01-09 Dell Products L.P. Multi-level data structure comparison using commutative digesting for unordered data collections
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11620214B2 (en) * 2020-10-30 2023-04-04 Nutanix, Inc. Transactional allocation and deallocation of blocks in a block store
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
WO2023147842A1 (en) * 2022-02-01 2023-08-10 Huawei Technologies Co., Ltd. Data storage and methods of deduplication of data storage, storing new file and deleting file
CN114567503A (zh) * 2022-03-04 2022-05-31 南京联成科技发展股份有限公司 一种集中管控的可信的数据采集的加密方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197977A (ja) * 2010-03-19 2011-10-06 Nec Corp ストレージシステム
JP2012127988A (ja) * 2010-12-13 2012-07-05 Nissei Kogyo Yugenkoshi 電子閃光装置
JP2012524943A (ja) * 2009-04-21 2012-10-18 グーグル インコーポレイテッド ストレージクラスタを指定可能な複製されたコンテンツのための非同期的分散オブジェクトアップロード
WO2012158654A2 (en) * 2011-05-14 2012-11-22 Bitcasa, Inc. Cloud file system with server-side deduplication of user-agnostic encrypted files
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085789B1 (en) 2001-07-30 2006-08-01 Microsoft Corporation Compact garbage collection tables
US7574699B1 (en) 2003-03-19 2009-08-11 Sun Microsystems, Inc. Compact type format data system and method
US8180742B2 (en) 2004-07-01 2012-05-15 Emc Corporation Policy-based information management
US7778984B2 (en) 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
US7464247B2 (en) 2005-12-19 2008-12-09 Yahoo! Inc. System and method for updating data in a distributed column chunk data store
US8589574B1 (en) 2005-12-29 2013-11-19 Amazon Technologies, Inc. Dynamic application instance discovery and state management within a distributed system
US7856437B2 (en) 2007-07-31 2010-12-21 Hewlett-Packard Development Company, L.P. Storing nodes representing respective chunks of files in a data store
US8103628B2 (en) 2008-04-09 2012-01-24 Harmonic Inc. Directed placement of data in a redundant data storage system
WO2010075401A2 (en) 2008-12-22 2010-07-01 Google Inc. Asynchronous distributed garbage collection for replicated storage clusters
US8301671B1 (en) 2009-01-08 2012-10-30 Avaya Inc. Method and apparatus providing removal of replicated objects based on garbage collection
US8560639B2 (en) 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
US20100306171A1 (en) 2009-06-02 2010-12-02 Microsoft Corporation Timeline Experience for Restore User Interface
CN103038742B (zh) * 2010-02-09 2015-09-30 谷歌公司 用于在分布式存储系统内动态复制数据的方法和系统
US8886602B2 (en) 2010-02-09 2014-11-11 Google Inc. Location assignment daemon (LAD) for a distributed storage system
US8341118B2 (en) 2010-02-09 2012-12-25 Google Inc. Method and system for dynamically replicating data within a distributed storage system
US8868508B2 (en) 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8898798B2 (en) 2010-09-01 2014-11-25 Apixio, Inc. Systems and methods for medical information analysis with deidentification and reidentification
US8380681B2 (en) 2010-12-16 2013-02-19 Microsoft Corporation Extensible pipeline for data deduplication
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
WO2013074665A1 (en) 2011-11-14 2013-05-23 Google Inc. Data processing service
CA2877284A1 (en) 2012-06-18 2013-12-27 Actifio, Inc. Enhanced data management virtualization system
KR102050723B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
US20140201151A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to select files for restoration from block-level backup for virtual machines
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US9158472B2 (en) * 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US9600558B2 (en) 2013-06-25 2017-03-21 Google Inc. Grouping of objects in a distributed storage system based on journals and placement policies

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012524943A (ja) * 2009-04-21 2012-10-18 グーグル インコーポレイテッド ストレージクラスタを指定可能な複製されたコンテンツのための非同期的分散オブジェクトアップロード
JP2011197977A (ja) * 2010-03-19 2011-10-06 Nec Corp ストレージシステム
JP2012127988A (ja) * 2010-12-13 2012-07-05 Nissei Kogyo Yugenkoshi 電子閃光装置
WO2012158654A2 (en) * 2011-05-14 2012-11-22 Bitcasa, Inc. Cloud file system with server-side deduplication of user-agnostic encrypted files
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020514885A (ja) * 2017-03-13 2020-05-21 ワンディスコ,インク. データセンタにわたってメタデータおよびデータの整合性を維持するための方法、デバイス、およびシステム
JP7009488B2 (ja) 2017-03-13 2022-01-25 ワンディスコ,インク. データセンタにわたってメタデータおよびデータの整合性を維持するための方法、デバイス、およびシステム
US11360942B2 (en) 2017-03-13 2022-06-14 Wandisco Inc. Methods, devices and systems for maintaining consistency of metadata and data across data centers

Also Published As

Publication number Publication date
AU2014369830B2 (en) 2019-01-17
JP6479020B2 (ja) 2019-03-06
EP3087513A1 (en) 2016-11-02
EP3087513B1 (en) 2020-11-18
EP3087513A4 (en) 2017-08-09
DE202014010898U1 (de) 2017-01-13
AU2014369830A1 (en) 2016-07-14
US9158472B2 (en) 2015-10-13
US9400828B2 (en) 2016-07-26
US20160034549A1 (en) 2016-02-04
WO2015100416A1 (en) 2015-07-02
CN105940396B (zh) 2019-07-26
CA2935215C (en) 2019-12-31
CN105940396A (zh) 2016-09-14
CA2935215A1 (en) 2015-07-02
US20150186043A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
JP6479020B2 (ja) 分散ストレージシステムにおけるオブジェクトの階層チャンキング
US9600558B2 (en) Grouping of objects in a distributed storage system based on journals and placement policies
US10764045B2 (en) Encrypting object index in a distributed storage environment
US7899850B2 (en) Relational objects for the optimized management of fixed-content storage systems
US8838595B2 (en) Operating on objects stored in a distributed database
US9747320B2 (en) Efficient reference counting in content addressable storage
US9396202B1 (en) Weakly synchronized garbage collection and compaction for aggregated, replicated object stores
US7590672B2 (en) Identification of fixed content objects in a distributed fixed content storage system
US9305069B2 (en) Method and system for uploading data into a distributed storage system
US10659225B2 (en) Encrypting existing live unencrypted data using age-based garbage collection
TW202111520A (zh) 日誌結構儲存系統
KR20150061314A (ko) 네트워크 분산 파일 시스템 기반 iSCSI 스토리지 시스템에서의 장애 복구 방법 및 시스템

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190205

R150 Certificate of patent or registration of utility model

Ref document number: 6479020

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250