JP2016541068A - 分散ストレージシステム上でデータを分散させること - Google Patents

分散ストレージシステム上でデータを分散させること Download PDF

Info

Publication number
JP2016541068A
JP2016541068A JP2016536755A JP2016536755A JP2016541068A JP 2016541068 A JP2016541068 A JP 2016541068A JP 2016536755 A JP2016536755 A JP 2016536755A JP 2016536755 A JP2016536755 A JP 2016536755A JP 2016541068 A JP2016541068 A JP 2016541068A
Authority
JP
Japan
Prior art keywords
file
maintenance
storage devices
chunks
storage device
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
JP2016536755A
Other languages
English (en)
Other versions
JP6507167B2 (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 JP2016541068A publication Critical patent/JP2016541068A/ja
Application granted granted Critical
Publication of JP6507167B2 publication Critical patent/JP6507167B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

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

Abstract

分散ストレージシステム(100)においてデータ(312)を分散させる方法は、非一時的なメモリ(204)内にファイル(310)を受取るステップと、非一時的なメモリと通信するコンピュータプロセッサ(202)を用いて、受取られたファイルをチャンク(330)に分割するステップとを含む。また、当該方法は、分散ストレージシステムのメンテナンス階層(400)に基づいて、チャンクを分散ストレージシステムのストレージデバイス(114)に分散させるステップを含む。メンテナンス階層は、各々がアクティブ状態と非アクティブ状態とを有するメンテナンスユニット(402)を含む。さらに、各ストレージデバイスは、メンテナンスユニットに関連付けられる。メンテナンスユニットが非アクティブ状態にあるときにファイルのアクセス性を維持するために、チャンクは、複数のメンテナンスユニットにわたって分散される。

Description

技術分野
本開示は、分散ストレージシステム上でデータを分散させることに関する。
背景
一般に、分散システムは、多数のゆるく結合されたコンピュータを含んでおり、当該コンピュータの各々は、典型的には、コンピューティングリソース(例えば1つ以上のプロセッサ)および/またはストレージリソース(例えばメモリ、フラッシュメモリおよび/またはディスク)を含んでいる。分散ストレージシステムは、ストレージアブストラクション(例えばキー/値格納またはファイルシステム)を分散システムのストレージリソースに重ね合わせる。分散ストレージシステムでは、一方のコンピュータで実行されるサーバプロセスは、当該コンピュータのストレージリソースを、他方のコンピュータで実行されるクライアントプロセスにエクスポートし得る。リモートプロシージャコール(remote procedure calls:RPC)は、サーバプロセスからクライアントプロセスにデータを転送し得る。代替的に、サーバハードウェアからクライアントプロセスにデータを転送するために、リモートダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)プリミティブが使用されてもよい。
概要
本開示の一局面は、分散ストレージシステムにおいてデータを分散させる方法を提供する。上記方法は、非一時的なメモリ内にファイルを受取るステップと、上記非一時的なメモリと通信するコンピュータプロセッサを用いて、上記受取られたファイルをチャンクに分割するステップとを含む。また、上記方法は、上記分散ストレージシステムのメンテナンス階層に基づいて、チャンクを上記分散ストレージシステムのストレージデバイスに分散させるステップを含む。上記メンテナンス階層は、各々がアクティブ状態と非アクティブ状態とを有するメンテナンスユニットを含む。さらに、各ストレージデバイスは、メンテナンスユニットに関連付けられる。メンテナンスユニットが非アクティブ状態にあるときに上記ファイルのアクセス性を維持するために、上記チャンクは、複数のメンテナンスユニットにわたって分散される。
本開示の実現例は、以下の特徴のうちの1つ以上を含み得る。いくつかの実現例では、上記方法は、いずれか1つのメンテナンスユニットのストレージデバイスに分散されるチャンクの数を制限するステップをさらに含む。
いくつかの実現例では、上記方法は、上記ストレージデバイスの間での上記チャンクの分散を決定するステップをさらに含み、上記決定するステップは、上記ファイルのチャンクの数に一致するストレージデバイスの第1の無作為選択群を決定することによって、および、1つ以上の(または閾値数の)メンテナンスユニットが非アクティブ状態にあるときに上記ストレージデバイスの選択群が上記ファイルのアクセス性を維持することができるか否かを判断することによって、行われる。いくつかの例では、1つ以上の(または閾値数の)メンテナンスユニットが非アクティブ状態にあるときに上記ストレージデバイスの第1の無作為選択群が上記ファイルのアクセス性を維持することができない場合、上記方法は、上記ファイルのチャンクの数に一致するストレージデバイスの第2の無作為選択群を決定するステップ、または、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つ以上の実現例の詳細は、添付の図面および以下の説明に記載されている。他の局面、特徴および利点は、説明および図面ならびに特許請求の範囲から明らかになるであろう。
さまざまな図面中の同様の参照符号は、同様の要素を示す。
例示的な分散ストレージシステムの概略図である。 キュレータによって管理されるメモリホストのセルを有する例示的な分散ストレージシステムの概略図である。 分散ストレージシステムの例示的なセルの概略図である。 分散ストレージシステムのための例示的なキュレータの概略図である。 レプリケートされたストライプに分割される例示的なファイルの概略図である。 データチャンクおよびコードチャンクに分割される例示的なファイルの概略図である。 例示的なメンテナンス階層の概略図である。 例示的なメンテナンス階層の概略図である。 例示的なメンテナンス階層の概略図である。 ストレージリソースの群を無作為に選択するためのオペレーションの例示的な構成のフローチャートである。 ストレージデバイスの例示的な無作為選択群の概略図である。 ストレージリソースの群を無作為に選択し、次いで当該群内のストレージデバイスを無作為に更新するためのオペレーションの例示的な構成のフローチャートである。 ストレージデバイスの例示的な無作為選択群の概略図である。 循環リストからストレージリソースの群を選択するためのオペレーションの例示的な構成のフローチャートである。 順序付きリストからのストレージデバイスの例示的な選択の概略図である。 ストレージシステムにおいてデータを分散させるためのオペレーションの例示的な構成の概略図である。
詳細な説明
ストレージシステムは、冗長性を有する複数の層を含み、当該層において、データはレプリケートされて複数のデータセンタに格納される。データセンタは、電気通信およびストレージシステム100(図1A〜図1C)などのコンピュータシステムおよびそれらの関連のコンポーネントを収容している。データセンタは、通常、バックアップ電源と、冗長な通信接続部と、(一定の温度を維持するための)環境制御部と、セキュリティデバイスとを含んでいる。データセンタは、(例えば小さな町と同じぐらいの)大量の電気を使用する大産業規模オペレーションであり得る。データは、さまざまな地理的場所(例えばさまざまな都市、さまざまな国およびさまざまな大陸)に位置し得る。いくつかの例では、(例えば、停電もしくは部品を交換するためのストレージシステムの一部の切離し、またはシステム故障、またはそれらの組み合わせのために)データセンタまたはその一部は、メンテナンスを必要とする。これらのデータセンタに格納されたデータは、メンテナンス期間中はユーザが利用することはできない可能性があり、その結果、ユーザのオペレーションが損なわれるまたは停止することになる。したがって、ストレージシステム100またはその一部がメンテナンスを受けているにもかかわらずユーザが格納されたデータを検索することができる分散ストレージシステム100を提供することが望ましい。
図1A〜図1Cを参照して、いくつかの実現例では、分散ストレージシステム100は、ゆるく結合されたメモリホスト110,110a〜110n(例えばコンピュータまたはサーバ)を含み、各々は、データのキャッシングに使用され得るストレージリソース114(例えばメモリ、フラッシュメモリ、ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、相変化メモリ(phase change memory:PCM)、および/またはディスク)と通信するコンピューティングリソース112(例えば1つ以上のプロセッサまたは中央処理装置(central processing unit:CPU))を有する。ストレージリソース114に重ね合わせられるストレージアブストラクション(例えばキー/値格納またはファイルシステム)は、1つ以上のクライアント120,120a〜120nによるストレージリソース114のスケーラブルな使用を可能にする。クライアント120は、(例えばRPCによって)ネットワーク130を介してメモリホスト110と通信し得る。
いくつかの実現例では、分散ストレージシステム100は「一方向」であり、いかなるサーバジョブもクライアント120からのリモートプロシージャコール(RPC)に応答してそれらの対応するメモリホスト110上でデータ312を格納または検索することを不要にし、その代わりにリモート要求122を処理するために専用のハードウェアに依拠し得る。「一方向」とは、メモリホスト110上での要求処理の大半が、メモリホスト110のCPU112で実行されるソフトウェアによってではなく、ハードウェアにおいてなされることができる方法を指す。クライアント120で実行されるクライアントプロセス128への対応するストレージリソース114(例えば非一時的なメモリ)のアクセスをエクスポートするサーバプロセス118をメモリホスト110(例えばサーバ)のプロセッサ112に実行させるのではなく、クライアント120は、メモリホスト110のネットワークインターフェースコントローラ(network interface controller:NIC)116を介してストレージリソース114に直接アクセスすることができる。換言すれば、クライアント120で実行されるクライアントプロセス128は、コンピューティングリソース112で実行されるいかなるサーバプロセス118のルーチンも実行する必要なしに、1つ以上のストレージリソース114と直接接続することができる。この一方向分散ストレージアーキテクチャは、比較的高いスループットおよび低い遅延を提供する。なぜなら、クライアント120は、メモリホスト110のコンピューティングリソース112と接続することなく、ストレージリソース114にアクセスできるからである。これは、ストレージ114の要件と典型的な二方向分散ストレージシステム100が保持するCPUサイクルとを分離する効果がある。一方向分散ストレージシステム100は、メモリホスト110上に予備のCPUサイクルがあるか否かにかかわらずリモートストレージリソース114を利用することができる。さらに、一方向オペレーションは、サーバCPUリソース112を取り合わないので、メモリホスト110が高いCPU使用率で動作していても、一方向システムは、非常に予測可能な低遅延でキャッシュ要求122を供給することができる。したがって、一方向分散ストレージシステム100は、予測可能な低遅延を提供しながら、従来の二方向システムよりも高いクラスタストレージ114およびCPUリソース112の使用率を可能にする。
いくつかの実現例では、分散ストレージシステム100は、ストレージロジック部102と、データ制御部104と、データストレージ部106とを含む。ストレージロジック部102は、例えばRPCまたは一方向オペレーションを介して基本的なデータにアクセスすることを担うトランザクション・アプリケーション・プログラミング・インターフェース(application programming interface:API)350(例えば一方向トランザクションシステムクライアントライブラリ)を含み得る。データ制御部104は、ストレージリソース114の割当て、対応するネットワークインターフェースコントローラ116へのストレージリソース114の登録、クライアント120とメモリホスト110との間の接続のセットアップ、マシンが故障した場合のエラーへの対処などのタスクにより、ストレージリソース114への割当ておよびアクセスを管理し得る。データストレージ部106は、ゆるく結合されたメモリホスト110,110a〜110nを含み得る。
分散ストレージシステム100は、ダイナミックランダムアクセスメモリ(DRAM)114にデータ312を格納し、リモートダイレクトメモリアクセス(RDMA)対応のネットワークインターフェースコントローラ116を介して当該データ312をリモートホスト110から供給し得る。ネットワークインターフェースコントローラ116(ネットワークインターフェースカード、ネットワークアダプタまたはLANアダプタとしても知られている)は、コンピューティングリソース112をネットワーク130に接続するコンピュータハードウェアコンポーネントであり得る。メモリホスト110a〜110nもクライアント120も、各々、ネットワーク通信のためにネットワークインターフェースコントローラ116を有し得る。メモリホスト110のコンピューティングプロセッサ112で実行されるホストプロセス118は、メモリ114のリモートダイレクトメモリアクセス可能領域115a〜115nの組をネットワークインターフェースコントローラ116に登録する。ホストプロセス118は、読取り専用または読取り/書込みの許可により、メモリ114のリモートダイレクトメモリアクセス可能領域115a〜115nを登録し得る。メモリホスト110のネットワークインターフェースコントローラ116は、各々の登録されたメモリ領域115a〜115nについてクライアントキー321を作成する。
ネットワークインターフェースコントローラ116によって実行される一方向オペレーションは、単純な読取り、書込み、ならびに、比較およびスワップオペレーションに限定され得て、それらのうちどれも、キャッシュ要求を実行してキャッシュポリシを管理するために従来のキャッシュサーバジョブによって実行されるソフトウェアロジックの完全互換品の機能を果たすのに十分に精巧ではない可能性がある。トランザクションAPI350は、ルックアップまたは挿入データコマンドなどのコマンドを基本的なネットワークインターフェースコントローラオペレーションのシーケンスに変換する。トランザクションAPI350は、分散ストレージシステム100のデータ制御部104およびデータストレージ部106と接続する。
分散ストレージシステム100は、ネットワークインターフェースコントローラ116とのリモートアクセスのためにメモリ114を登録して、クライアントプロセス128との接続をセットアップするために、同一場所で実行されるソフトウェアプロセスを含み得る。一旦接続がセットアップされると、クライアントプロセス128は、対応するメモリホスト110のローカルCPU112上のソフトウェアからのいかなる関与もなしに、ネットワークインターフェースコントローラ116のハードウェア内のエンジンを介して、登録されたメモリ114にアクセスすることができる。
図1Bおよび図1Cを参照して、いくつかの実現例では、分散ストレージシステム100は、複数のセル200を含み、各セル200は、メモリホスト110と、メモリホスト110と通信するキュレータ210とを含む。キュレータ210(例えばプロセス)は、ネットワーク130に接続されたコンピューティングプロセッサ202(例えば非一時的なメモリ204を有するサーバ)で実行され、データストレージを管理し(例えばメモリホスト110に格納されたファイルシステムを管理し)、データ配置を制御し、および/または、データ復旧を開始させ得る。さらに、キュレータ210は、メモリホスト110上のデータ312の存在および格納場所を追跡し得る。冗長なキュレータ210が可能である。いくつかの実現例では、キュレータ210は、冗長性および/または性能のために、複数のメモリホスト110にわたるデータ312のストライピング、ならびに、所与のストライプの複数のコピーの存在および/または場所を追跡する。コンピュータデータストレージにおいて、データストライピングは、シーケンシャルなセグメントのアクセスが異なる物理的ストレージデバイス114(例えばセル200および/またはメモリホスト110)に対してなされるように、ファイル310(図2)などの論理的にシーケンシャルなデータ312をセグメント化する技術である。ストライピングは、ストレージデバイス114がアクセスを提供できるよりも速く処理装置がデータ312へのアクセスを要求する場合に有用である。複数のデバイスでセグメントアクセスを実行することによって、複数のセグメントに同時にアクセスすることができる。これにより、データアクセススループットが多くなり、プロセッサが無駄にデータアクセスを待つことが回避される。
いくつかの実現例では、トランザクションAPI350は、(例えばクライアントプロセス128を有する)クライアント120とキュレータ210との間を接続する。いくつかの例では、クライアント120は、1つ以上のリモートプロシージャコール(RPC)を介してキュレータ210と通信する。クライアント要求122に応答して、トランザクションAPI350は、メモリホスト110上の特定のデータ312の格納場所を突き止め、データ312へのアクセスを可能にするキー302を取得し得る。トランザクションAPI350は、(例えばリモートダイレクトメモリアクセスを用いて)データ312を読取るまたは書込むために、(ネットワークインターフェースコントローラ116を介して)適切なメモリホスト110と直接通信する。メモリホスト110が動作しない場合、またはデータ312が異なるメモリホスト110に移動された場合には、クライアント要求122は失敗し、クライアント120がキュレータ210に再照会するよう促す。
図2を参照して、いくつかの実現例では、キュレータ210は、ファイルシステムメタデータ212を格納および管理する。メタデータ212は、ファイル310〜310をファイル記述子300〜300にマッピングするファイルマップ214を含み得る。キュレータ210は、その永続的なメタデータ212の表現を調べて修正し得る。キュレータ210は、メタデータ212のための3つの異なるアクセスパターン、すなわち読取り専用、ファイルトランザクションおよびストライプトランザクション、を使用し得る。
図3Aおよび図3Bを参照して、データ312は、1つ以上のファイル310であり得て、各ファイル310は、指定のレプリケーションレベル311および/または誤り訂正符号313を有する。キュレータ210は、各ファイル310をストライプ320a〜320nのコレクションに分割し得て、各ストライプ320a〜320nは、残りのストライプ320a〜320nから独立してレプリケートまたは符号化される。レプリケートされたファイル310では、各ストライプ320a〜320nは、キュレータ210がストライプレプリカ330nとしてレプリケートして複数のストレージリソース114に格納する単一の論理チャンクである。当該シナリオでは、ストライプレプリカ330nは、チャンク330nとも呼ばれる。符号化されたファイル310では、各ストライプ320a〜320nは、キュレータ210が複数のストレージリソース114に配置する複数のデータチャンク330ndおよびコードチャンク330ncからなり、データチャンク330ndおよびコードチャンク330ncのコレクションは、単一の符号語を形成する。一般に、キュレータ210は、ファイル310内の他のストライプ320a〜320nがいかにストレージリソース114に配置されるかから独立して、各ストライプ320a〜320nをストレージリソース114に配置し得る。誤り訂正符号313は、冗長なデータまたはパリティデータをファイルに付加し、その結果、(使用されているコードの性能までの)いくつかのエラーが導入されたとしても、当該ファイルは、後に受け手によって復旧されることができる。誤り訂正符号は、ストレージデバイスにおけるデータの完全性を維持するため、性能(遅延)のためにデータを再構築するため、またはより素早くマシンを使い果たすために使用される。
図2に戻って、いくつかの実現例では、キュレータ210によって格納されるファイル記述子300〜300は、ファイルマップ214などのメタデータ212を含み、当該ファイルマップ214は、ストライプ320a〜320nを、メモリホスト110に格納されたストライプレプリカ320nまたはデータチャンク320ndおよびコードチャンク320ncに適宜マッピングする。ファイル310を開くために、クライアント120は、要求122をキュレータ210に送り、キュレータ210は、ファイル記述子300を返す。クライアント120は、ファイル記述子300を使用して、ファイルチャンクオフセットを遠隔記憶場所115a〜115へ変換する。ファイル記述子300は、クライアントキー302(例えば32ビットキー)を含み得て、当該クライアントキー302は、メモリホスト110上のチャンク320n、320nd、320ncに固有であり、当該チャンク320n、320nd、320ncをRDMA読取するために使用される。クライアント120がファイル記述子300をロードした後、クライアント120は、RDMAまたは別のデータ検索方法によってファイル310のデータ312にアクセスし得る。
キュレータ210は、セル200の一部である全てのメモリホスト110のためのステータス情報を維持し得る。ステータス情報は、容量、空き領域、メモリホスト110に対する負荷、クライアントの視点からのメモリホスト110の遅延、および現在の状態を含み得る。キュレータ210は、セル200内のメモリホスト110に直接照会することによって、および/または、クライアントの視点からの遅延統計を収集するためにクライアント120に照会することによって、この情報を取得し得る。いくつかの例では、キュレータ210は、メモリホストステータス情報を使用して、リバランシング、ドレイニング(draining)、復旧決定および割当て決定を行う。
キュレータ210は、ファイル310内の格納空間を多くするためのクライアント要求122、ならびにリバランシングおよび復旧のためのクライアント要求122を処理するために、チャンク330を割当て得る。いくつかの例では、プロセッサ202は、ストレージデバイス114の間でデータチャンク330ndおよびコードチャンク330ncを分散させるのとは異なって、ストレージデバイス114の間でチャンク330nをレプリケートする。キュレータ210は、メモリホスト負荷および活性の負荷マップ216を維持し得る。いくつかの実現例では、キュレータ210は、候補メモリホスト110のリストを生成することによってチャンク330を割当て、チャンク割当て要求を候補メモリホスト110の各々に送る。メモリホスト110に過負荷がかかっているか、またはメモリホスト110が利用可能な空間を有していない場合には、メモリホスト110は、当該要求を拒絶し得る。この場合、キュレータ210は、異なるメモリホスト110を選択する。各キュレータ210は、ファイル名前空間の指定部分を絶えずスキャンし得て、およそ時々刻々全てのメタデータ212を調べる。キュレータ210は、メタデータ212の完全性を確認するため、実行される必要がある作業を決定するため、および/または、統計を生成するために、ファイルスキャンを使用し得る。ファイルスキャンは、キュレータ210の他のオペレーションと同時に動作し得る。スキャン自体は、メタデータ212を修正することはできず、システムの他のコンポーネントによってなされる作業をスケジューリングし、統計を算出する。
図4A〜図4Cを参照して、キュレータ210は、格納されたデータへのユーザのアクセスに影響を及ぼすことなくメンテナンスを行うことができるレベル401(例えばレベル1 401a〜レベル5 401e)を特定するために、分散ストレージシステム100のメンテナンス階層400を決定し得る。メンテナンスは、電力メンテナンス、冷却システムメンテナンス(図4C)、ネットワーキングメンテナンス、部品の更新もしくは交換、または分散ストレージシステム100に影響を及ぼす他のメンテナンスもしくは停電を含み得る。
メンテナンス階層400は、メンテナンスユニット402のレベル401(例えばレベル1 401a〜レベル5 401e)を特定し、各メンテナンスユニット402は、アクティブ状態にある場合もあれば非アクティブ状態にある場合もある。分散ストレージシステム100の各ストレージデバイス114は、1つ以上のメンテナンスユニット402に関連付けられる。さらに、プロセッサ202は、メンテナンスユニット402およびそれらのコンポーネント410,420,430,440,114とのストレージデバイス114の関連付けをマッピングする。図4Aは、各コンポーネント410,420,430,440,114が1つの他のコンポーネント410,420,430,440,114に依存する厳格な階層400aを示している。一方、図4Bは、1つのコンポーネント410,420,430,440,114が2つ以上の入力フィードを有する厳格でない階層400bを示している。いくつかの例では、プロセッサ202は、プロセッサ202の非一時的なメモリ204にメンテナンス階層400を格納する。例えば、ストレージリソース114aはラック440aにマッピングされ、当該ラック440aはバスダクト430aにマッピングされ、当該バスダクト430aはさらにパワーモジュール分配センタ420aにマッピングされ、当該パワーモジュール分配センタ420aはさらにパワープラント410aにマッピングされる。コンポーネント410,420,430,440,114のマッピングに基づいて、プロセッサ202は、コンポーネント410,420,430,440,114がメンテナンスを受けているときにどのストレージデバイス114が非アクティブであるかを判断する。一旦システム100がメンテナンスユニット402をストレージリソース114にマッピングすると、システム100は、データ可用性を維持しながらメンテナンスを実行することができる最高レベル401(例えばレベル1〜5)を決定する。
メンテナンスユニット402は、メンテナンスを受けるコンポーネント410,420,430,440,114と、当該コンポーネント410,420,430,440,114に依存する任意のコンポーネントとを含む。したがって、1つのコンポーネント410,420,430,440,114がメンテナンスを受けているとき、当該コンポーネント410,420,430,440,114は非アクティブであり、当該コンポーネント410,420,430,440,114のメンテナンスユニット402内の任意のコンポーネント410,420,430,440,114も非アクティブである。図4に示されるように、レベル1 401aのコンポーネントは、レベル2〜5 401b,401c,401d,401eのコンポーネントに電力を供給するパワープラント410であってもよく、レベル2 401bのコンポーネントは、パワーモジュール分配センタ420a〜420nを含んでいてもよく、レベル3 401cのコンポーネントは、バスダクト430a〜430nを含んでいてもよく、レベル4 401dのコンポーネントは、ラック440a〜440nを含んでいてもよく、レベル5 401eのコンポーネントは、ストレージリソース114a〜114nを含んでいてもよい。他のコンポーネント分散も利用可能であり得る。パワープラント410がメンテナンスを受けているときには、パワープラント410に依存する任意のパワーモジュール分配センタ420、バスダクト430、ラック440およびストレージデバイス114を含むレベル1のメンテナンスユニット402は、非アクティブであるため、ユーザは、レベル1のメンテナンスユニット内に位置するデータにアクセスすることができない。パワーモジュール分配センタ420aがメンテナンスを受けているときには、パワーモジュール分配センタ420aおよびパワーモジュール分配センタ420aに依存するレベル3〜5の任意のコンポーネントを含むレベル2のメンテナンスユニット402aは、非アクティブ状態にある。バスダクト430aがメンテナンスを受けているときには、バスダクト430aおよびバスダクト430aに依存するレベル4および5の任意のコンポーネントを含むレベル3のメンテナンスユニット402bは、非アクティブ状態にある。ラック440aがメンテナンスを受けているときには、ラック440aおよびラック440aに依存するストレージデバイス114を含むレベル4のメンテナンスユニット402は、非アクティブ状態にある。最後に、ストレージデバイス114aがメンテナンスを受けているときには、レベル5のメンテナンスユニット402dは、ストレージデバイス114を含み、当該ストレージデバイスが非アクティブである。
いくつかの例では、図4Bに示されるように、厳格でない階層400bのコンポーネント410,420,430,440,114は、二重フィードを有し得る。すなわち、コンポーネント410,420,430,440,114は、2つ以上の他のコンポーネント410,420,430,440,114に依存する。例えば、バスダクト430nは、2つのパワーモジュール420からのフィードを有し得て、および/または、ラック440は、2つのバスダクト430からの二重フィードを有し得る。示されているように、第1のメンテナンスユニット402bは、2つのラック440aおよび440nを含み得て、第2のラック440nは、2つのバスダクト430a,430nからの2つのフィードを含む。したがって、第2のラック440nは、2つのメンテナンスユニット402baおよび402bbの一部である。したがって、メンテナンス階層400の下位レベル401の喪失を引き起こすことなく、メンテナンス階層400の上位レベル401が維持される。これにより、システムに冗長性がもたらされ、データアクセス性が可能になる。特に、パワーモジュール分配センタ420に依存するいずれのバスダクト430も喪失することなくパワーモジュール分配センタ420を整備することができる。いくつかの例では、ラック440は、バスダクト430に依存する二重動力ラック440に対する電力を喪失することなくバスダクト430のメンテナンスを可能にする二重動力ラックを含む。いくつかの例では、機能停止を引き起こすことなく整備され得るメンテナンスユニット402は、チャンク330を分散させるときには無視され、メンテナンスを可能にする。しかし、予期せぬ機能停止は依然としてチャンク330を喪失させる可能性があるので、当該無視されるメンテナンスユニット402は、チャンク330を分散させるときに含まれていてもよい。
いくつかの例では、メンテナンス階層400は、冷却階層400c(または電力階層400a,400bの組み合わせであってもよい)および冷却階層400cである。冷却階層400cは、冷却装置442を、冷却装置442が冷却しているラック440にマッピングする。示されているように、冷却装置442は、1つ以上のラック440を冷却し得る。プロセッサ202は、冷却メンテナンスユニット402とのストレージデバイス114の関連付けを格納する。いくつかの実現例では、プロセッサ202は、階層400または階層400a,400b,400cの組み合わせを決定するために、ストレージシステム100内で行われ得るメンテナンスの全ての可能な組み合わせを考慮に入れる。
したがって、ストレージシステム100内のコンポーネント410,420,430,440,114が整備されているときには、当該コンポーネント410,420,430,440,114および当該コンポーネント410,420,430,440,114にマッピングされるまたは依存する任意のコンポーネント410,420,430,440,114は、非アクティブ状態にある。非アクティブ状態のコンポーネント410,420,430,440,114は、ユーザがアクセスすることができない一方、アクティブ状態のコンポーネント410,420,430,440,114は、ユーザがアクセスすることができ、当該コンポーネント410,420,430,440,114または当該コンポーネント410,420,430,440,114にマッピングされるストレージデバイス114に格納されたデータにユーザがアクセスすることを可能にする。上記のように、非アクティブ状態の間は、ユーザは、メンテナンスを受けているメンテナンスユニット402に関連付けられるストレージデバイス114にアクセスすることができないため、ユーザは、ファイル(すなわち、ストライプレプリカ330nおよびデータチャンク330ndおよびコードチャンク330ncを含むチャンク330)にアクセスすることができない。
いくつかの実現例では、プロセッサ202は、例えばコンポーネント410,420,430,440,114のマッピングに基づいて、いずれか1つのメンテナンスユニット402のストレージデバイス114に分散されるチャンク330の数を制限する。したがって、レベル1のメンテナンスユニット402が非アクティブである場合、いくつかのチャンク330がアクセス不可能である可能性があるにもかかわらず、プロセッサ202は、ファイル310(またはストライプ320)へのアクセス性を維持する。いくつかの例では、各ファイル310(またはストライプ320)について、プロセッサ202は、単一のメンテナンスユニット402内の任意のストレージデバイス114内に配置され得るチャンク330の最大数を決定し、その結果、ファイル310のためのチャンク330を格納するストレージデバイス114に関連付けられるメンテナンスユニット402がメンテナンスを受けている場合に、プロセッサ202は、依然としてファイル310を検索することができる。チャンク330の最大数は、いくつかのチャンク330が利用不可能である可能性があるにもかかわらずプロセッサ202がファイル310を再構築することができることを確実にする。いくつかの例では、チャンク330の最大数は、依然としてチャンク330からファイル310を再構築することができながらいかなるシステム故障も吸収するように下方閾値に設定される。プロセッサ202がチャンク330をストレージデバイス114に配置すると、プロセッサ202は、単一のメンテナンスユニット402がメンテナンスを受けるときにストライプ320内ではせいぜい最大数のチャンク330が非アクティブであることを確実にする。
図5〜図7Bを参照して、いくつかの実現例では、プロセッサ202は、ストレージデバイス114の間でのチャンク330の分散を決定する。いくつかの例では、プロセッサ202は、ファイル310のチャンク330を格納するためにストレージデバイス140の利用可能なプールからストレージデバイス114の第1の無作為選択群150を作成する。プロセッサ202は、ストライプ320内のチャンク330の数に等しい数のストレージデバイス114(例えば選択されたストレージデバイス114S)を選択する。次に、プロセッサ202は、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの選択群150がファイル310のアクセス性を維持することができる(すなわちファイル310のチャンク330が利用可能である)か否かを判断する。無作為選択群150は、メンテナンスコンポーネント410,420,430,440,114のうちの1つでメンテナンスが行われる場合にストライプ320の再構築を可能にするという目的を有する。
図5Aおよび図5Bを参照して、いくつかの例では、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの第1の無作為選択群150aがファイル310のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202は、ファイル310のチャンク330の数に一致する選択されたストレージデバイス114Sの第2の無作為選択群150bを決定する。次いで、プロセッサ202は、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの第2の無作為選択群150bがファイル310のアクセス性を維持することができるか否かを判断する。1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに第2の無作為選択群150bがファイル310のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202がファイル310のアクセス性を維持することができる選択されたストレージデバイス114Sの無作為選択群150nを特定するまで、プロセッサ202は、選択されたストレージデバイス114Sの無作為選択群150nを作成し続ける。
図6Aおよび図6Bを参照して、いくつかの実現例では、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの第1の無作為選択群150aがファイル310のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202は、1つ以上の無作為に選択されたストレージデバイス114Sを追加し、対応する数の異なるストレージデバイス114Sを除去することによって、選択されたストレージデバイス114Sの第1の無作為選択群150aを修正する。次いで、プロセッサ202は、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、更新された第1の無作為選択群150aがファイル310のアクセス性を維持することができるか否かを判断する。1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、更新された第1の無作為選択群150aがストライプ320のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202は、1つ以上の無作為に選択されたストレージデバイス114Sを追加および除去することによって、選択されたストレージデバイス114Sの選択群150aを更新する。分散ストレージシステム100のメンテナンス中に選択されたストレージデバイス114Sがストライプ320のアクセス性を維持することができるとプロセッサ202が判断するまで、プロセッサ202は、ストレージデバイス114の無作為選択群150aを更新し続ける。一旦プロセッサ202が当該判断を行うと、プロセッサ202は、次のストライプ320(またはファイル310)に移動して、次のストライプ320の分散を決定する。
いくつかの実現例では、プロセッサ202は、確率抽出法、単純抽出法、層別抽出法、集落抽出法、またはそれらの組み合わせを用いて、選択されたストレージデバイス114Sの無作為選択群150を決定する。確率抽出法では、母集団の中の全てのユニットは、サンプルにおいて選択される確率がゼロよりも大きく、この確率は、正確に求められることができる。確率抽出法は、抽出されたユニットをそれらの確率選択に従って重み付けすることによって、母集団全体のバイアスのない推定値を提供する。所与の数のサンプルの単純無作為抽出法(simple random sampling:SRS)では、抽出枠の全てのサブセットは、等しい確率を付与される。また、要素の任意の所与の対は、その他のこのような対と同じ選択の確率を有する(三つ組、四つ組などについても同様)。SRSは、バイアスを最小化し、結果の分析を単純化する。サンプル内の結果間の分散は、母集団における分散の良い指標であり、結果の精度の推定を容易にする。層別抽出法では、母集団は、いくつかの別個のカテゴリを含み、これらのカテゴリによって枠は別々の「層」に編成される。各層は、独立した亜集団として抽出され、当該亜集団から個々の要素が無作為に選択される。層別抽出法は、他の抽出方法に対していくつかの利点を有する。層別抽出法は、重要な亜集団に注目し、無関係のものを無視し、異なる亜集団に対して異なる抽出技術を使用することを可能にし、推定の精度および効率を向上させ、サイズが大きく異なる層から等しい数を抽出することによって層間の相違の試験の検出力のより良いバランシングを可能にする。集落抽出法は、地形または期間によってグループ分けされたクラスタにおけるレスポンデントの選択を可能にする。集落抽出法は、目標母集団における全ての要素を列挙する抽出枠を必要とせず、それどころか、クラスタは、クラスタレベルの枠から選択され得て、要素レベルの枠は、選択されたクラスタについてのみ作成される。
図7Aおよび図7Bを参照して、いくつかの実現例では、プロセッサ202は、ストライプ320内のチャンク330の数を判断する。次いで、プロセッサ202は、分散ストレージシステム100のストレージデバイス114の順序付き循環リスト160からファイルのチャンク330の数に等しい連続的な数のストレージデバイス114a〜114nを有する選択されたリスト162を選択し、順序付き循環リスト160は、第1のストレージデバイス114aから開始する。リスト160は、プロセッサ202の非一時的なメモリ204に格納され得る。次いで、プロセッサ202は、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたリスト162からの選択されたストレージデバイス114a〜114nが集合的にファイル310(すなわちストライプ320)のアクセス性を維持することができないか否かを判断する。1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114a〜114nが集合的にファイル310(またはストライプ320)のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202は、ストライプ320またはファイル310のチャンク330の数に等しい連続的な数のストレージデバイス114a〜114nを有する別の選択されたリスト162を、順序付き循環リスト160から選択する。いくつかの例では、選択されたリスト162のストレージデバイス114a〜114nが集合的にファイル310(またはストライプ320)のアクセス性を維持することができないとプロセッサ202が判断すると、プロセッサ202は、順序付き循環リスト160における第1のストレージデバイス114nの後の第2のストレージデバイス114(n+1)に移動する。他の例では、プロセッサ202は、順序付き循環リスト160において予め定められた数の位置を下方に移動させる。いくつかの実現例では、プロセッサ202は、ストレージシステム100のストレージデバイス114の順序付き循環リスト160を決定し、順序付き循環リスト上の隣接するストレージデバイス114または閾値数の連続的なストレージデバイス114は、異なるメンテナンスユニット402に関連付けられる。さらにまたは代替的に、プロセッサ202は、ストレージシステム100のストレージデバイス114の順序付き循環リスト160を決定し、順序付き循環リスト上の隣接するストレージデバイス114または閾値数の連続的なストレージデバイス114は、各々が異なる地理的場所にある。いくつかの例では、順序付き循環リスト160上のストレージデバイス114は、異なるメンテナンスユニット402が順序付きリスト160に沿ってシーケンシャルにデータのばらつきを生じさせるように配置される。例えば、図4Aに示されるように、リストは、同一のバスダクト430aに依存するストレージデバイス114をシーケンシャルに含むことはできない。その代わりに、リスト160上の2つのシーケンシャルなストレージデバイス114は、異なるメンテナンスユニット402からのものであり、データアクセス性が確実に維持される。
図8を参照して、いくつかの実現例では、分散ストレージシステムにおいてデータを分散させる方法800は、非一時的なメモリ204内にファイル310を受取るステップ802と、非一時的なメモリ204と通信するコンピュータプロセッサ202を用いて、受取られたファイル310をチャンク330に分割するステップ804とを含む。また、方法800は、分散ストレージシステム100のメンテナンス階層400に基づいて、チャンク330を分散ストレージシステム100のストレージデバイス114に分散させるステップを含む。メンテナンス階層400は、各々がアクティブ状態と非アクティブ状態とを有するメンテナンスユニット402を含む。さらに、各ストレージデバイス114は、メンテナンスユニット402に関連付けられる。メンテナンスユニット402が非アクティブ状態にあるときにファイル310(またはストライプ320)のアクセス性を維持するために、チャンク330は、複数のメンテナンスユニット402にわたって分散される。いくつかの例では、方法800は、いずれか1つのメンテナンスユニット402のストレージデバイス114に分散されるチャンク330の数を制限するステップを含む。
いくつかの実現例では、方法800は、ストレージデバイス114の間でのチャンク330の分散を決定するステップをさらに含み、当該決定するステップは、ファイル310のチャンク330の数に一致する選択されたストレージデバイス114Sの第1の無作為選択群150aを決定することによって、および、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの選択群150aがファイル310(またはストライプ320)のアクセス性を維持することができるか否かを判断することによって、行われる。いくつかの例では、1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114Sの第1の無作為選択群150aがファイル310(またはストライプ320)のアクセス性を維持することができない場合、方法800は、ファイル310(またはストライプ320)のチャンク330の数に一致する選択されたストレージデバイス114Sの第2の無作為選択群150bを決定するステップ、または、1つ以上の無作為に選択されたストレージデバイス114を追加および除去することによってストレージデバイス114Sの第1の無作為選択群150aを修正するステップをさらに含む。方法800は、単純抽出法、確率抽出法、層別抽出法、または集落抽出法(上記で説明)を用いてストレージデバイス114の無作為選択群150を決定するステップをさらに含み得る。いくつかの例では、方法800は、1つ以上のまたは閾値数のメンテナンスユニット402が非アクティブ状態にあるときにストレージデバイス114の選択された無作為選択群150がファイル310(またはストライプ320)のアクセス性を維持することができるまで、選択されたストレージデバイス114Sの第3、第4、第5…などの無作為選択群を決定する。
いくつかの実現例では、方法800は、分散ストレージシステム100のストレージデバイス114の順序付き循環リスト160からファイル310のチャンク330の数に等しい連続的な数のストレージデバイス114a〜114nを有するリスト162を選択することによって、ストレージデバイス114の間でのチャンク330の分散を決定するステップをさらに含む。1つ以上の(または閾値数の)メンテナンスユニット402が非アクティブ状態にあるときに、選択されたストレージデバイス114が集合的にファイル310のアクセス性を維持することができない場合、方法800は、ファイル310(またはストライプ320)のチャンク330の数に等しい連続的な数のストレージデバイス114a〜114nを有する別のリスト162を、順序付き循環リスト160から選択するステップをさらに含む。さらにまたは代替的に、方法800は、分散ストレージシステム100のストレージデバイス114の順序付き循環リスト160を決定するステップをさらに含み、順序付き循環リスト160上の隣接するストレージデバイス114は、異なるメンテナンスユニット402に関連付けられる。いくつかの例では、順序付き循環リスト160上の閾値数の連続的なストレージデバイス114は、各々が異なるメンテナンスユニット402に関連付けられるか、または各々が異なる地理的場所にある。
いくつかの実現例では、方法800は、(例えばコンピュータプロセッサ202を用いて)メンテナンスユニット402のメンテナンス階層400を決定するステップをさらに含み、メンテナンス階層400は、メンテナンスレベル401(例えばレベル1 401a〜レベル5 401e)を有し、各メンテナンスレベル401は、1つ以上のメンテナンスユニット402を含む。また、方法800は、各メンテナンスユニット402を少なくとも1つのストレージデバイス114にマッピングするステップを含む。各メンテナンスユニット402は、単一の配電ユニットまたは単一の電力バスダクト430によって電力を供給されるストレージデバイス114を含む。
方法800は、受取られたファイル310をストライプ320a〜320nに分割するステップをさらに含み得る。各ファイル310は、レプリケーションコード311または誤り訂正符号313を含む。ファイル310がレプリケーションコード311を含む場合、方法800は、少なくとも1つのストライプ320a〜320nをレプリケーションチャンク330としてレプリケートするステップを含む。ファイル310が誤り訂正符号313を含む場合、方法800は、少なくとも1つのストライプ320a〜320nをデータチャンク330ndおよびコードチャンク330ncに分割するステップを含む。また、方法800は、ストレージデバイス114の間でデータチャンク330ndおよびコードチャンク330ncを分散させるのとは異なって、ストレージデバイス114の間でレプリケーションチャンク330を分散させるステップを含み得る。
ここに記載されているシステムおよび技術のさまざまな実現例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/または、それらの組み合わせで実現可能である。これらのさまざまな実現例は、プログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムでの実現例を含み得て、当該プログラム可能なシステムは、ストレージシステム、少なくとも1つの入力装置および少なくとも1つの出力装置からデータおよび命令を受信し、ストレージシステム、少なくとも1つの入力装置および少なくとも1つの出力装置にデータおよび命令を送信するように結合された、特殊用途または汎用であり得る少なくとも1つのプログラム可能なプロセッサを含む。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラム可能なプロセッサのためのマシン命令を含み、高級手続き型プログラミング言語および/もしくはオブジェクト指向プログラミング言語で実現されてもよく、ならびに/または、アセンブリ/マシン言語で実現されてもよい。本明細書で用いられる「マシン読取可能な媒体」および「コンピュータ読取可能な媒体」という表現は、マシン命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および/またはデバイス(例えば磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、マシン命令をマシン読取可能な信号として受信するマシン読取可能な媒体を含む。「マシン読取可能な信号」という表現は、マシン命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
本明細書に記載されている主題および機能的動作の実現例は、デジタル電子回路で実現されてもよく、または本明細書に開示されている構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェアまたはハードウェアで実現されてもよく、またはそれらのうちの1つ以上の組み合わせで実現されてもよい。さらに、本明細書に記載されている主題は、1つ以上のコンピュータプログラム製品として、すなわちデータ処理装置によって実行するため、またはデータ処理装置の動作を制御するためにコンピュータ読取可能な媒体上で符号化されるコンピュータプログラム命令の1つ以上のモジュールとして実現されてもよい。コンピュータ読取可能な媒体は、マシン読取可能な記憶装置、マシン読取可能な記憶基板、メモリ装置、マシン読取可能な伝播信号に影響を及ぼす組成物、またはそれらのうちの1つ以上の組み合わせであってもよい。「データ処理装置」、「コンピューティング装置」および「コンピューティングプロセッサ」という表現は、データを処理するための全ての装置、デバイスおよびマシンを包含し、一例として、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む。当該装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を作り出すコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つ以上の組み合わせを構成するコードを含み得る。伝播信号は、人工的に生成される信号、例えば好適な受信機装置に送信される情報を符号化するために生成されるマシン生成電気信号、光信号または電磁信号である。
コンピュータプログラム(アプリケーション、プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても知られている)は、コンパイラ型言語またはインタープリタ型言語を含む任意の形態のプログラミング言語で書込まれてもよく、スタンドアロンのプログラムとして、またはコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチンまたは他のユニットとしてなどの任意の形態で配備されてもよい。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応していない。プログラムは、他のプログラムまたはデータ(例えばマークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部に格納されてもよく、当該プログラムに専用の単一のファイルに格納されてもよく、または複数の調整されたファイル(例えば1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に格納されてもよい。コンピュータプログラムは、1つのコンピュータ、または、一箇所に位置するかもしくは複数の箇所にわたって分散されて通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように配備されてもよい。
本明細書に記載されているプロセスおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。また、プロセスおよび論理フローは、特殊用途論理回路、例えばFPGA(フィールド・プログラマブル・ゲート・アレイ)またはASIC(特定用途向け集積回路)によって実行されてもよく、装置も、特殊用途論理回路、例えばFPGAまたはASICとして実現されてもよい。
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサおよび特殊用途マイクロプロセッサを両方とも含み、任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリメモリまたはランダムアクセスメモリまたはそれら両方から命令およびデータを受信するであろう。コンピュータの必須の要素は、命令を実行するためのプロセッサと、命令およびデータを格納するための1つ以上のメモリ装置とである。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクも含み、または、当該1つ以上の大容量記憶装置からデータを受信するもしくは当該1つ以上の大容量記憶装置にデータを転送するように、もしくは受信も転送もするように動作可能に結合されるであろう。しかし、コンピュータは、このような装置を有する必要はない。さらに、コンピュータは、別の装置、例えば数例を挙げると、携帯電話、パーソナルデジタルアシスタント(personal digital assistant:PDA)、携帯型オーディオプレーヤ、グローバル・ポジショニング・システム(Global Positioning System:GPS)受信機に組み込まれてもよい。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能な媒体は、全ての形態の不揮発性メモリ、媒体およびメモリ装置を含み、一例として例えばEPROM、EEPROMおよびフラッシュメモリ装置といった半導体メモリ装置、例えば内蔵ハードディスクまたは取外し可能なディスクといった磁気ディスク、光磁気ディスク、ならびにCD ROMおよびDVD−ROMディスクを含む。プロセッサおよびメモリは、特殊用途論理回路によって補完されてもよく、または特殊用途論理回路に組み入れられてもよい。
ユーザとの対話を提供するために、本開示の1つ以上の局面は、情報をユーザに表示するための表示装置、例えばCRT(陰極線管)、LCD(液晶表示)モニタまたはタッチスクリーンと、任意にユーザが入力をコンピュータに提供することができるキーボードおよびポインティング装置、例えばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。ユーザとの対話を提供するために他の種類の装置も使用されてもよく、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触知入力を含む任意の形態で受信されてもよい。また、コンピュータは、ユーザによって使用される装置にドキュメントを送り、ユーザによって使用される装置からドキュメントを受信することによって、例えばウェブブラウザから受信された要求に応答してユーザのクライアント装置上でウェブブラウザにウェブページを送ることによって、ユーザと対話し得る。
本開示の1つ以上の局面は、例えばデータサーバとしてのバックエンドコンポーネントを含むコンピューティングシステムにおいて実現されてもよく、またはミドルウェアコンポーネント、例えばアプリケーションサーバを含むコンピューティングシステムにおいて実現されてもよく、またはフロントエンドコンポーネント、例えばユーザが本明細書に記載されている主題の実現例と対話できるようにするグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムにおいて実現されてもよく、または1つ以上のこのようなバックエンド、ミドルウェアまたはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実現されてもよい。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、例えば通信ネットワークによって相互接続され得る。通信ネットワークの例としては、ローカルエリアネットワーク(local area network:「LAN」)およびワイドエリアネットワーク(wide area network:「WAN」)、インターネットワーク(例えばインターネット)、ならびにピアツーピアネットワーク(例えばアドホックピアツーピアネットワーク)が挙げられる。
コンピューティングシステムは、クライアントと、サーバとを含み得る。クライアントおよびサーバは、一般に互いに離れており、典型的には通信ネットワークを介して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータで実行されて互いに対してクライアント−サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実現例では、サーバは、(例えば、クライアント装置と対話するユーザにデータを表示して、クライアント装置と対話するユーザからユーザ入力を受信する目的で)データ(例えばHTMLページ)をクライアント装置に送信する。クライアント装置において生成されたデータ(例えばユーザ対話の結果)は、サーバにおけるクライアント装置から受信され得る。
本明細書は多くの具体例を含んでいるが、これらは、本開示またはクレームされ得るものの範囲を限定するものとして解釈されるべきではなく、むしろ本開示の特定の実現例に特有の特徴の説明であると解釈されるべきである。また、別々の実現例の文脈において本明細書に記載されている特定の特徴は、単一の実現例において組み合わせて実現されてもよい。また、逆に、単一の実現例の文脈において記載されているさまざまな特徴は、複数の実現例において別々に、または任意の好適なサブコンビネーションで実現されてもよい。さらに、特徴は特定の組み合わせで作用するものとして上記され、さらにはそのようなものとして最初はクレームされ得るが、クレームされている組み合わせからの1つ以上の特徴は、場合によっては、当該組み合わせから削除されてもよく、クレームされている組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例を対象にしてもよい。
同様に、動作は特定の順序で図面に示されているが、これは、このような動作が、望ましい結果を達成するために、示されている特定の順序もしくはシーケンシャルな順序で実行されなければならないと理解されるべきではなく、または、望ましい結果を達成するために、全ての示されている動作が実行されなければならないと理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利である場合がある。さらに、上記の実施例におけるさまざまなシステム構成要素の分離は、全ての実施例においてこのような分離が必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に単一のソフトウェア製品に一体化されてもよく、または複数のソフトウェア製品にパッケージングされてもよいということが理解されるべきである。
多数の実現例が記載されてきた。しかし、本開示の精神および範囲から逸脱することなくさまざまな変形がなされ得ることが理解されるであろう。したがって、他の実現例は、以下の特許請求の範囲の範囲内である。例えば、特許請求の範囲に記載されている動作は、異なる順序で実行されて、依然として望ましい結果を達成することができる。

Claims (30)

  1. 分散ストレージシステム(100)においてデータを分散させる方法であって、
    非一時的なメモリ(204)内にファイル(310)を受取るステップと、
    前記非一時的なメモリ(204)と通信するコンピュータプロセッサ(202)を用いて、前記受取られたファイル(310)をチャンク(330)に分割するステップと、
    前記分散ストレージシステム(100)のメンテナンス階層(400)に基づいて、前記チャンク(330)を前記分散ストレージシステム(100)のストレージデバイス(114)に分散させるステップとを備え、前記メンテナンス階層(400)は、アクティブ状態と非アクティブ状態とを有するメンテナンスユニット(402)を備え、各ストレージデバイス(114)は、メンテナンスユニット(402)に関連付けられ、メンテナンスユニット(402)が非アクティブ状態にあるときに前記ファイル(310)のアクセス性を維持するために、前記チャンク(330)は、複数のメンテナンスユニット(402)にわたって分散される、方法。
  2. いずれか1つのメンテナンスユニット(402)のストレージデバイス(114)に分散されるチャンク(330)の数を制限するステップをさらに備える、請求項1に記載の方法。
  3. 前記ストレージデバイス(114)の間での前記チャンク(330)の分散を決定するステップをさらに備え、前記決定するステップは、
    前記ファイル(310)のチャンク(330)の数に一致するストレージデバイス(114)の第1の無作為選択群(150a)を決定することによって、および
    1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の選択群が前記ファイル(310)のアクセス性を維持することができるか否かを判断することによって、行われる、請求項1に記載の方法。
  4. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の第1の無作為選択群(150a)が前記ファイル(310)のアクセス性を維持することができない場合、前記ファイル(310)のチャンク(330)の数に一致するストレージデバイス(114)の第2の無作為選択群(150b)を決定する、請求項3に記載の方法。
  5. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の第1の無作為選択群(150a)が前記ファイル(310)のアクセス性を維持することができない場合、1つ以上の無作為に選択されたストレージデバイス(114)を追加および除去することによって前記ストレージデバイス(114)の第1の無作為選択群(150a)を修正する、請求項3に記載の方法。
  6. 単純抽出法、確率抽出法、層別抽出法、または集落抽出法を用いて前記ストレージデバイス(114)の第1の無作為選択群(150a)を決定する、請求項3に記載の方法。
  7. 前記分散ストレージシステム(100)の前記ストレージデバイス(114)の順序付き循環リスト(160)から前記ファイル(310)のチャンク(330)の数に等しい連続的な数のストレージデバイス(114)を選択することによって、前記ストレージデバイス(114)の間での前記チャンク(330)の分散を決定するステップをさらに備える、請求項1に記載の方法。
  8. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記選択されたストレージデバイス(114)が全体として前記ファイル(310)のアクセス性を維持することができない場合、前記順序付き循環リスト(160)から前記ファイル(310)のチャンク(330)の数に等しい別の連続的な数のストレージデバイス(114)を選択するステップをさらに備える、請求項7に記載の方法。
  9. 前記分散ストレージシステム(100)のストレージデバイス(114)の前記順序付き循環リスト(160)を決定するステップをさらに備え、前記順序付き循環リスト(160)上の隣接するストレージデバイスは、異なるメンテナンスユニット(402)に関連付けられる、請求項7に記載の方法。
  10. 前記順序付き循環リスト(160)上の閾値数の連続的なストレージデバイスは、各々が異なるメンテナンスユニット(402)に関連付けられる、請求項9に記載の方法。
  11. 前記順序付き循環リスト(160)上の閾値数の連続的なストレージデバイス(114)は、各々が異なる地理的場所にある、請求項9に記載の方法。
  12. 前記コンピュータプロセッサ(202)を用いてメンテナンスユニット(402)のメンテナンス階層(400)を決定するステップをさらに備え、前記メンテナンス階層(400)は、メンテナンスレベル(401)を有し、各メンテナンスレベル(401)は、1つ以上のメンテナンスユニット(402)を備え、
    各メンテナンスユニット(402)を少なくとも1つのストレージデバイス(114)にマッピングするステップをさらに備える、請求項1に記載の方法。
  13. 各メンテナンスユニット(402)は、単一の配電ユニットまたは単一の電力バスダクト(430)によって電力を供給されるストレージデバイス(114)を備える、請求項12に記載の方法。
  14. 前記受取られたファイル(310)をストライプ(320)に分割するステップをさらに備え、各ファイル(310)は、レプリケーションコード(311)および/またはエラー修正コード(313)を含み、
    前記ファイル(310)がレプリケーションコード(311)を含む場合、少なくとも1つのストライプ(320)をレプリケーションチャンク(330)としてレプリケートするステップと、
    前記ファイル(310)がエラー修正コード(313)を含む場合、少なくとも1つのストライプ(320)をデータチャンク(330nd)およびコードチャンク(330nc)に分割するステップとをさらに備える、請求項1に記載の方法。
  15. 前記ストレージデバイス(114)の間で前記データチャンク(330nd)および前記コードチャンク(330nc)を分散させるのとは異なって、前記ストレージデバイス(114)の間でレプリケーションチャンク(330)を分散させるステップをさらに備える、請求項14に記載の方法。
  16. 分散ストレージシステム(100)においてデータを分散させるためのシステムであって、
    ファイル(310)を受取る非一時的なメモリ(204)と、
    前記非一時的なメモリ(204)と通信するコンピュータプロセッサ(202)とを備え、前記コンピュータプロセッサ(202)は、前記受取られたファイル(310)をチャンク(330)に分割し、前記システムはさらに、
    前記コンピュータプロセッサ(202)および前記非一時的なメモリ(204)と通信するストレージデバイス(114)を備え、前記コンピュータプロセッサ(202)は、前記分散ストレージシステム(100)のメンテナンス階層(400)に基づいて前記チャンク(330)を前記ストレージデバイス(114)に格納し、前記メンテナンス階層(400)は、アクティブ状態と非アクティブ状態とを有するメンテナンスユニット(402)を備え、各ストレージデバイス(114)は、メンテナンスユニット(402)に関連付けられ、前記コンピュータプロセッサ(202)は、メンテナンスユニット(402)が非アクティブ状態にあるときに前記ファイル(310)のアクセス性を維持するために前記チャンク(330)を複数のメンテナンスユニット(402)にわたって分散させる、システム。
  17. 前記コンピュータプロセッサ(202)は、いずれか1つのメンテナンスユニット(402)のストレージデバイス(114)に分散されるチャンク(330)の数を制限する、請求項16に記載のシステム。
  18. 前記コンピュータプロセッサ(202)は、前記ストレージデバイス(114)の間での前記チャンク(330)の分散を決定し、前記決定は、
    前記ファイル(310)のチャンク(330)の数に一致するストレージデバイス(114)の第1の無作為選択群(150a)を決定することによって、および
    1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の選択群が前記ファイル(310)のアクセス性を維持することができるか否かを判断することによって、行われる、請求項16に記載のシステム。
  19. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の第1の無作為選択群(150a)が前記ファイル(310)のアクセス性を維持することができない場合、前記コンピュータプロセッサ(202)は、前記ファイル(310)のチャンク(330)の数に一致するストレージデバイス(114)の第2の無作為選択群(150b)を決定する、請求項18に記載のシステム。
  20. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記ストレージデバイス(114)の第1の無作為選択群(150a)が前記ファイル(310)のアクセス性を維持することができない場合、前記コンピュータプロセッサ(202)は、1つ以上の無作為に選択されたストレージデバイス(114)を追加および除去することによって前記ストレージデバイス(114)の第1の無作為選択群(150a)を修正する、請求項18に記載のシステム。
  21. 前記コンピュータプロセッサ(202)は、単純抽出法、確率抽出法、層別抽出法、または集落抽出法を用いて前記ストレージデバイス(114)の第1の無作為選択群(150a)を決定する、請求項18に記載のシステム。
  22. 前記コンピュータプロセッサ(202)は、前記分散ストレージシステム(100)の前記ストレージデバイス(114)の順序付き循環リスト(160)から前記ファイル(310)のチャンク(330)の数に等しい連続的な数のストレージデバイス(114)を選択することによって、前記ストレージデバイス(114)の間での前記チャンク(330)の分散を決定する、請求項16に記載のシステム。
  23. 1つ以上のメンテナンスユニット(402)が非アクティブ状態にあるときに前記選択されたストレージデバイス(114)が全体として前記ファイル(310)のアクセス性を維持することができない場合、前記コンピュータプロセッサ(202)は、前記順序付き循環リスト(160)から前記ファイル(310)のチャンク(330)の数に等しい別の連続的な数のストレージデバイス(114)を選択する、請求項22に記載のシステム。
  24. 前記コンピュータプロセッサ(202)は、前記分散ストレージシステム(100)のストレージデバイス(114)の前記順序付き循環リスト(160)を決定し、前記順序付き循環リスト(160)上の隣接するストレージデバイスは、異なるメンテナンスユニット(402)に関連付けられる、請求項22に記載のシステム。
  25. 前記順序付き循環リスト(160)上の閾値数の連続的なストレージデバイスは、各々が異なるメンテナンスユニット(402)に関連付けられる、請求項24に記載のシステム。
  26. 前記順序付き循環リスト(160)上の閾値数の連続的なストレージデバイスは、各々が異なる地理的場所にある、請求項24に記載のシステム。
  27. 前記コンピュータプロセッサ(202)は、メンテナンスユニット(402)のメンテナンス階層(400)を決定し、前記メンテナンス階層(400)は、メンテナンスレベル(401)を有し、各メンテナンスレベル(401)は、1つ以上のメンテナンスユニット(402)を備え、
    前記コンピュータプロセッサ(202)は、各メンテナンスユニット(402)を少なくとも1つのストレージデバイス(114)にマッピングする、請求項16に記載のシステム。
  28. 各メンテナンスユニット(402)は、単一の配電ユニットまたは単一の電力バスダクト(430)によって電力を供給されるストレージデバイス(114)を備える、請求項27に記載のシステム。
  29. 前記コンピュータプロセッサ(202)は、
    前記受取られたファイル(310)をストライプ(320)に分割し、各ファイル(310)は、レプリケーションコード(311)および/またはエラー修正コード(313)を含み、前記コンピュータプロセッサ(202)はさらに、
    前記ファイル(310)がレプリケーションコード(311)を含む場合、少なくとも1つのストライプ(320)をレプリケーションチャンク(330)としてレプリケートし、
    前記ファイル(310)がエラー修正コード(313)を含む場合、少なくとも1つのストライプ(320)をデータチャンク(330nd)およびコードチャンク(330nc)に分割する、請求項16に記載のシステム。
  30. 前記コンピュータプロセッサ(202)は、前記ストレージデバイス(114)の間で前記データチャンク(330nd)および前記コードチャンク(330nc)を分散させるのとは異なって、前記ストレージデバイス(114)の間でチャンク(330)をレプリケートする、請求項29に記載のシステム。
JP2016536755A 2013-12-05 2014-09-24 分散ストレージシステム上でデータを分散させること Active JP6507167B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/097,380 2013-12-05
US14/097,380 US9367562B2 (en) 2013-12-05 2013-12-05 Distributing data on distributed storage systems
PCT/US2014/057209 WO2015084471A1 (en) 2013-12-05 2014-09-24 Distributing data on distributed storage systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018021208A Division JP6778704B2 (ja) 2013-12-05 2018-02-08 分散ストレージシステム上でデータを分散させること

Publications (2)

Publication Number Publication Date
JP2016541068A true JP2016541068A (ja) 2016-12-28
JP6507167B2 JP6507167B2 (ja) 2019-04-24

Family

ID=53271375

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016536755A Active JP6507167B2 (ja) 2013-12-05 2014-09-24 分散ストレージシステム上でデータを分散させること
JP2018021208A Active JP6778704B2 (ja) 2013-12-05 2018-02-08 分散ストレージシステム上でデータを分散させること

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018021208A Active JP6778704B2 (ja) 2013-12-05 2018-02-08 分散ストレージシステム上でデータを分散させること

Country Status (8)

Country Link
US (6) US9367562B2 (ja)
EP (1) EP3077917B1 (ja)
JP (2) JP6507167B2 (ja)
CN (1) CN105765554B (ja)
AU (1) AU2014357640B2 (ja)
CA (3) CA3014694C (ja)
DE (1) DE202014010909U1 (ja)
WO (1) WO2015084471A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243877B2 (en) 2018-05-01 2022-02-08 Fujitsu Limited Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US10762069B2 (en) * 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10379742B2 (en) * 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US10116745B2 (en) 2016-03-28 2018-10-30 Samsung Electronics Co., Ltd. Automatic client-server role detection among data storage systems in a distributed data store
CN105959350B (zh) * 2016-04-22 2018-11-23 深圳市永兴元科技股份有限公司 分布式数据存储方法及装置
CN105847279A (zh) * 2016-05-03 2016-08-10 深圳市永兴元科技有限公司 分布式数据处理方法及数据中心
US10691557B1 (en) * 2016-06-24 2020-06-23 EMC IP Holding Company LLC Backup file recovery from multiple data sources
CN107688493B (zh) * 2016-08-05 2021-06-18 阿里巴巴集团控股有限公司 训练深度神经网络的方法、装置及系统
US9952798B2 (en) * 2016-08-12 2018-04-24 Google Inc. Repartitioning data in a distributed computing system
WO2018032510A1 (zh) * 2016-08-19 2018-02-22 华为技术有限公司 应用于存储设备中的访问请求的处理方法和装置
US10509708B2 (en) * 2017-06-13 2019-12-17 Vmware, Inc. Code block resynchronization for distributed multi-mirror erasure coding system
CN107967211A (zh) * 2017-12-05 2018-04-27 郑州云海信息技术有限公司 一种存储设备代码分发方法、系统、装置及可读存储介质
US11341138B2 (en) * 2017-12-06 2022-05-24 International Business Machines Corporation Method and system for query performance prediction
US10719397B2 (en) * 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
CN109561153A (zh) * 2018-12-17 2019-04-02 郑州云海信息技术有限公司 分布式存储系统及业务切换方法、装置、设备、存储介质
CN110109889A (zh) * 2019-05-09 2019-08-09 重庆大学 一种分布式内存文件管理系统
US11740899B2 (en) * 2021-08-31 2023-08-29 Micron Technology, Inc. In-memory associative processing system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130179490A1 (en) * 2012-01-11 2013-07-11 Alcatel-Lucent Usa, Inc. Reducing Latency and Cost in Resilient Cloud File Systems

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405284B1 (en) * 1998-10-23 2002-06-11 Oracle Corporation Distributing data across multiple data storage devices in a data storage system
US6553389B1 (en) * 1999-09-13 2003-04-22 Hewlett-Packard Company Resource availability determination mechanism for distributed data storage system
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
TWI222020B (en) * 2000-10-19 2004-10-11 Wistron Corp Method for installing and pre-setup of software
US7418620B1 (en) * 2001-02-16 2008-08-26 Swsoft Holdings, Ltd. Fault tolerant distributed storage method and controller using (N,K) algorithms
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US20030187853A1 (en) * 2002-01-24 2003-10-02 Hensley Roy Austin Distributed data storage system and method
US20040088380A1 (en) * 2002-03-12 2004-05-06 Chung Randall M. Splitting and redundant storage on multiple servers
US7159150B2 (en) * 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
WO2004097624A1 (en) * 2003-04-24 2004-11-11 Neopath Networks, Inc. Large file support for a network file server
US7568034B1 (en) * 2003-07-03 2009-07-28 Google Inc. System and method for data distribution
US7188118B2 (en) * 2003-11-26 2007-03-06 Veritas Operating Corporation System and method for detecting file content similarity within a file system
US7165059B1 (en) * 2003-12-23 2007-01-16 Veritas Operating Corporation Partial file migration mechanism
US7536693B1 (en) * 2004-06-30 2009-05-19 Sun Microsystems, Inc. Method for load spreading of requests in a distributed data storage system
US8266237B2 (en) 2005-04-20 2012-09-11 Microsoft Corporation Systems and methods for providing distributed, decentralized data storage and retrieval
US7571168B2 (en) * 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7778972B1 (en) * 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
US7840618B2 (en) * 2006-01-03 2010-11-23 Nec Laboratories America, Inc. Wide area networked file system
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US7711711B1 (en) * 2006-03-29 2010-05-04 Emc Corporation Networked storage system employing information lifecycle management in conjunction with a distributed global file system
GB2446199A (en) * 2006-12-01 2008-08-06 David Irvine Secure, decentralised and anonymous peer-to-peer network
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US7930611B2 (en) 2007-03-09 2011-04-19 Microsoft Corporation Erasure-resilient codes having multiple protection groups
US20080270436A1 (en) * 2007-04-27 2008-10-30 Fineberg Samuel A Storing chunks within a file system
US8140787B2 (en) * 2007-10-05 2012-03-20 Imation Corp. Methods for implementation of an active archive in an archiving system and managing the data in the active archive
US8930651B2 (en) * 2007-10-05 2015-01-06 Imation Corp. Archiving system with partitions of individual archives
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
JP5236352B2 (ja) 2008-05-15 2013-07-17 株式会社日立製作所 アプリケーション配信制御システム、アプリケーション配信制御方法、情報処理装置、およびクライアント端末
US8346824B1 (en) * 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
US8135748B2 (en) * 2009-04-10 2012-03-13 PHD Virtual Technologies Virtual machine data replication
US8560639B2 (en) * 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
US20150006895A1 (en) * 2009-06-01 2015-01-01 Maidsafe Foundation Distributed network system
US20110029729A1 (en) * 2009-07-30 2011-02-03 Lsi Corporation Erasure coded data storage capacity and power management
KR100985169B1 (ko) * 2009-11-23 2010-10-05 (주)피스페이스 분산 저장 시스템에서 파일의 중복을 제거하는 장치 및 방법
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8341457B2 (en) 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
US9811532B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Executing a cloud command for a distributed filesystem
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US8224935B1 (en) 2010-05-12 2012-07-17 Symantec Corporation Systems and methods for efficiently synchronizing configuration data within distributed computing systems
GB2483088B (en) * 2010-08-26 2012-07-18 Giraffic Technologies Ltd Asynchronous data streaming in a peer-to-peer network
US8521703B2 (en) 2010-11-05 2013-08-27 International Business Machines Corporation Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility
CN101996111A (zh) * 2010-11-30 2011-03-30 华为技术有限公司 一种倒换方法、装置及分布式刀片服务器系统
US8452819B1 (en) * 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
WO2012147087A1 (en) * 2011-04-29 2012-11-01 Tata Consultancy Services Limited Archival storage and retrieval system
JP6082387B2 (ja) * 2011-05-14 2017-02-15 ビットカーサ インコーポレイテッド ユーザ不可知暗号化ファイルのサーバ側非複製化を有するクラウドファイルシステム
EP2721525A4 (en) * 2011-06-14 2015-04-15 Hewlett Packard Development Co DEDUPLICATION IN DISTRIBUTED FILE SYSTEMS
JP2013025742A (ja) * 2011-07-26 2013-02-04 Nippon Telegr & Teleph Corp <Ntt> 分散ファイル管理装置、分散ファイル管理方法及びプログラム
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
US20130254248A1 (en) * 2012-03-23 2013-09-26 Alcatel-Lucent Usa Inc. Method And Apparatus For A Distributed File System In A Cloud Network
EP2660723A1 (en) * 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device
US9229657B1 (en) * 2012-11-01 2016-01-05 Quantcast Corporation Redistributing data in a distributed storage system based on attributes of the data
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9939865B2 (en) * 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9417955B2 (en) * 2014-08-21 2016-08-16 Datrium, Inc. Data reconstruction in distributed data storage system with key-based addressing
US9684569B2 (en) * 2015-03-30 2017-06-20 Western Digital Technologies, Inc. Data deduplication using chunk files
US20180107455A1 (en) * 2015-12-29 2018-04-19 Eyelead Software SA Real-time collaborative development in a live programming system
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130179490A1 (en) * 2012-01-11 2013-07-11 Alcatel-Lucent Usa, Inc. Reducing Latency and Cost in Resilient Cloud File Systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HEWITT EBEN著, 大谷晋平,小林隆訳, CASSANDRA, vol. 第1版, JPN6017021472, 26 December 2011 (2011-12-26), JP, pages 122 - 123 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243877B2 (en) 2018-05-01 2022-02-08 Fujitsu Limited Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program

Also Published As

Publication number Publication date
AU2014357640B2 (en) 2016-12-08
EP3077917A4 (en) 2017-05-10
AU2014357640A1 (en) 2016-04-21
US11113150B2 (en) 2021-09-07
US20210382790A1 (en) 2021-12-09
US10318384B2 (en) 2019-06-11
WO2015084471A1 (en) 2015-06-11
US20190250992A1 (en) 2019-08-15
CA3014694C (en) 2020-09-29
EP3077917A1 (en) 2016-10-12
US20200285541A1 (en) 2020-09-10
CA3132946C (en) 2023-06-20
US20150161163A1 (en) 2015-06-11
CN105765554B (zh) 2019-01-08
EP3077917B1 (en) 2019-04-17
DE202014010909U1 (de) 2017-01-17
CA2931665C (en) 2022-10-18
JP6507167B2 (ja) 2019-04-24
CA3132946A1 (en) 2015-06-11
US11620187B2 (en) 2023-04-04
CN105765554A (zh) 2016-07-13
US20230236935A1 (en) 2023-07-27
JP6778704B2 (ja) 2020-11-04
JP2018110008A (ja) 2018-07-12
US20160299815A1 (en) 2016-10-13
CA2931665A1 (en) 2015-06-11
CA3014694A1 (en) 2015-06-11
US9367562B2 (en) 2016-06-14
US10678647B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
JP6778704B2 (ja) 分散ストレージシステム上でデータを分散させること
US11947423B2 (en) Data reconstruction in distributed storage systems
AU2018202944B2 (en) Efficient data reads from distributed storage systems
US20150134626A1 (en) Partition-based data stream processing framework
US9823948B2 (en) Efficient resource utilization in data centers
US9898360B1 (en) Preventing unnecessary data recovery

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170911

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190401

R150 Certificate of patent or registration of utility model

Ref document number: 6507167

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