JP6934068B2 - 分散されたイレイジャーコーディングされたオブジェクトの重複排除 - Google Patents

分散されたイレイジャーコーディングされたオブジェクトの重複排除 Download PDF

Info

Publication number
JP6934068B2
JP6934068B2 JP2019559280A JP2019559280A JP6934068B2 JP 6934068 B2 JP6934068 B2 JP 6934068B2 JP 2019559280 A JP2019559280 A JP 2019559280A JP 2019559280 A JP2019559280 A JP 2019559280A JP 6934068 B2 JP6934068 B2 JP 6934068B2
Authority
JP
Japan
Prior art keywords
data
chunks
chunk
systems
individual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019559280A
Other languages
English (en)
Other versions
JP2020520496A (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.)
Hitachi Vantara Corp
Original Assignee
Hitachi Vantara Corp
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 Hitachi Vantara Corp filed Critical Hitachi Vantara Corp
Publication of JP2020520496A publication Critical patent/JP2020520496A/ja
Application granted granted Critical
Publication of JP6934068B2 publication Critical patent/JP6934068B2/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/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
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/909Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using geographical or spatial information, e.g. location
    • 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/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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]

Description

本開示は、データ保護及びデータ重複排除の技術分野に関する。
データオブジェクトは、データをオブジェクトとして管理するオブジェクトストレージアーキテクチャに保存することができる。それぞれのオブジェクトは、典型的に、オブジェクトデータ(例えば、データコンテンツ)、オブジェクトデータを記述するメタデータ、及びグローバルに区別可能な識別子を含む。いくつかの状況において、データの消失に対する冗長性保護を提供するために、記憶されているオブジェクトデータをイレイジャーコーディングされてもよい。イレイジャーコーディングは、データを複数のデータチャンクに分割ことを含みうる。データチャンクについて、パリティデータがエンコードされ、且つ、データチャンク及びパリティデータは、異なる記憶媒体上において、及び/又は、異なる地理的場所において、などのように、異なる記憶場所の組に跨って、記憶されうる。記憶場所のうちの1つのオブジェクトデータのデータチャンクが、損傷され、破壊され、或いは、その他により利用不能となった場合に、記憶場所のうちの別のものに記憶されているパリティデータを使用することにより、オブジェクトデータを再構築することができる。
これに加えて、コンピュータシステム内のデータ量を低減するために、データの重複排除を使用してもよい。一例として、新しいデータが、コンピュータシステムによって既に受け取られているデータと同一であるとコンピュータシステムが決定した場合に、システムは、新しいデータに関する情報をコンピュータシステムによって既に受けられているデータに対してリンクしてもよく、これにより、新しいデータの記憶又はそのデータのその他の方法による維持の必要性を回避してもよい。一例として、データコンテンツ全体の追加又は維持ではなく、コンピュータシステムは、予め受け取ったデータに対するポインタとともに、新しいデータに関するメタデータを追加するだけでよい。
いくつかの実装形態は、データオブジェクトのチャンクを記憶することができる分散型トポロジーのシステムを含む。例えば、コンピュータシステムは、オブジェクトデータと、オブジェクトメタデータと、を含むデータオブジェクト受け取ってもよい。システムは、3以上のシステムのうちの1つであってよく、また、それぞれのシステムは、異なる個別の地理的場所に配置されていてもよい。システムは、オブジェクトデータのコンテンツを表す値を決定してもよい。システムは、システムの合計数に基づいてオブジェクトデータを複数のデータチャンクに分割することにより、複数のチャンクを更に決定してもよく、また、複数のデータチャンクについて少なくとも1つのパリティチャンクを決定してもよい。システムは、分散型トポロジー内のシステムのそれぞれに対応する個々のロール値を決定してもよく、また、ロール値及びオブジェクトデータコンテンツを表す値に基づいてチャンクの個々のものをシステムの個々のシステムに送信してもよい。いくつかの例においては、それぞれのシステムは、受け取ったチャンク及び個々のシステムによって既に記憶されているチャンクに基づいて、その他のシステムとは独立的に、データ重複排除を実行してもよい。
添付図面を参照し、詳細に説明する。図においては、参照符号の1つ又は複数の最も左側の桁は、参照符号が最初に出現している図を識別している。異なる図における同一の参照符号の使用は、類似の又は同一の項目又は特徴を示している。
図1は、いくつかの実装形態に係る、イレイジャーコーディングされたオブジェクトを記憶及び重複排除するシステムのアーキテクチャ例を示す。
図2は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及び、パリティチャンクを決定することの一例を示す。
図3は、いくつかの実装形態に係る、地理的なオブジェクトチャンクの分散の一例を示す。
図4は、いくつかの実装形態に係る、地理的に分散されたチャンクからのオブジェクトデータの再構築の一例を示す。
図5は、いくつかの実装形態に係る、地理的に分散された、パリティチャンクを含むチャンクからのオブジェクトデータの再構築の一例を示す。
図6は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及び、パリティチャンクを決定することの一例を示す。
図7は、いくつかの実装形態に係る、オブジェクトチャンクの地理的な分散の一例を示す。
図8は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及び、パリティチャンクを決定することの一例を示す。
図9は、いくつかの実装形態に係る、オブジェクトチャンクの地理的な分散の一例を示す。
図10は、いくつかの実装形態に係る、複製オブジェクトチャンクの決定の一例を示す。
図11は、いくつかの実装形態に係る、複製オブジェクトチャンクの重複排除の一例を示す。
図12は、いくつかの実装形態に係る、オブジェクトデータがチャンクに低減される前及び後における複製オブジェクトデータの重複排除の一例を示す。
図13は、いくつかの実装形態に係る、データチャンク及びパリティチャンクの決定の一例を示す。
図14は、いくつかの実装形態に係る、オブジェクトチャンクの分散のプロセス例を示すフロー図である。
図15は、いくつかの実装形態に係る、オブジェクトチャンクの重複排除のプロセス1500の例を示すフロー図である。
図16は、いくつかの実装形態に係る、演算システムの構成例を示す。
図17は、いくつかの実装形態に係る、演算システムの構成例を示す。
本明細書におけるいくつかの実装形態は、オブジェクトチャンクを地理的に分散された記憶場所のイレイジャーコーディングトポロジーに構成されたシステムに分散させるための技法及び構成を含む。本明細書における例は、複製オブジェクトデータを有するオブジェクトの複製チャンクが分散型トポロジー内の同一の個々のシステムに記憶されることを保証し、これにより、システムによる複製データコンテンツのローカルな識別及び除去を可能にすることによって、分散型トポロジーにおける重複排除を提供している。これに加えて、いくつかの例は、分散型トポロジー内のすべてのシステムに跨るデータチャンクの代わりにパリティチャンクを使用することにより、オブジェクトデータの再構築と関連する演算負荷を均衡させている。従って、本明細書における実装形態は、同一のシステムに記憶されているすべてのパリティチャンクを有するなどの、チャンクストレージロールの静的割当の結果として生じる演算ペナルティにより、いずれか1つのシステムに不利益をもたらすことを回避している。
本明細書におけるいくつかの例は、地理的に分散したイレイジャーコーディングを使用した分散型のオブジェクトストレージを提供している。本明細書における分散型トポロジーにおいて記憶されたオブジェクトデータは、チャンクに分割してもよく、チャンクは、分散型トポロジーに跨って分散させてもよい。本明細書における分散型トポロジーは、異なる地理的記憶場所においてそれぞれが配置された、チャンクを記憶することができる固定数のシステムを含んでもよい。従って、それぞれのシステムが、オブジェクトのデータチャンク又はデータチャンクから決定されたパリティチャンクのうちのいずれか1つを受け取り、また、維持するように、オブジェクトのチャンクを固定数のシステムに跨って分散させてもよい。
トポロジー内には、記憶場所及びシステムが存在していることから、オブジェクトデータがイレイジャーコーディング済みのデータチャンクに低減される際には、オブジェクトデータを同一数のチャンク(パリティチャンクを含む)に低減してもよく、従って、トポロジー内のそれぞれのシステムは、正確にオブジェクトのチャンクのうちの1つを記憶することができる。このように、本明細書におけるオブジェクト保存技法は、記憶場所のうちの1つにおけるシステムの完全な消失の結果としてもたらされるデータ消失に対する保護を実行してもよく、更に、例えば、オブジェクトデータの完全な複写を記憶することによって消費されるものよりも少ない量のストレージを消費しつつ、この保護を提供してもよい。
一例として、分散型トポロジー内のそれぞれのシステムが、固定したチャンク責任を有するのではなく、本明細書における分散型トポロジー内の個々のシステムが、動的なチャンク責任を有するようにしてもよい。この結果、それぞれのシステムは、いくつかのデータチャンク又はパリティチャンクを記憶する責任を担うようにしてもよい。しかし、同一のデータを有する任意の2つのオブジェクトについては、本明細書のそれぞれのシステムは、割り当てられたロールに基づいて、固定したチャンク責任を有するようにしてもよい。従って、例えば、オブジェクト1及びオブジェクト2などの、同一データを有する任意の2つのオブジェクトについて、オブジェクト1の第1チャンクが、分散型トポロジー内の特定のシステム(例えば、システム「D」)上に記憶されている場合には、オブジェクト2の第1チャンクも、場合によっては、その代わりにその他のシステムのうちの1つに記憶されるのではなく、システム「D」に記憶される。
いくつかの例においては、分散型トポロジー内のシステムのうちの特定のものに対するチャンクの分散は、少なくとも部分的に、SHA−256、MD5、又はこれらに類似したものなどの決定論的なハッシュ化アルゴリズムを使用することにより、実現してもよい。例えば、決定論的なハッシュ化アルゴリズムがオブジェクトデータに適用された際には、の結果は、オブジェクトデータのデータコンテンツを表すハッシュ値(即ち、「ハッシュ」)である。使用されるハッシュアルゴリズムの特性に起因し、これらのハッシュ化アルゴリズムを、異なるコンテンツを有するデータの任意の2つデータのセットに対して適用した結果、同一のハッシュ値が得られる可能性は、極めてあり得ない。更に、これらのハッシュ化アルゴリズムを同一のコンテンツを有する任意の2つのデータのセットに適用した結果、同一のハッシュ値が得られることは、保証されている(即ち、ハッシュアルゴリズムは、決定論的であり、且つ、アルゴリズムが適用されるコンテンツに基づいた結果を提供する)。オブジェクトデータのハッシュ値が演算された後に、それぞれのチャンクごとに分散型トポロジー内のターゲットシステムを決定するために、ハッシュ値を使用してもよい。
ハッシュ値に基づいて、それぞれのチャンクごとに、分散型トポロジー内のシステムのうちの個々のシステムに対してマッピングが決定されてもよい。マッピング技法は、同一のハッシュ値について、チャンクが同一の記憶場所に分散されるように、一貫性を有してもよい。一例として、それぞれのチャンク用の対応するシステム場所を決定するために、モジュロ演算が適用されてもよい。例えば、4つの異なる記憶場所を有する分散型トポロジーでは、オブジェクトを受け取り、チャンクを分散させるシステムは、ハッシュ値を演算し、且つ、modulo(4)をハッシュ値に対して適用してもよく、この場合に、適用されるモジュロ値は、分散型トポロジー内の異なるシステムの数に等しい。「ハッシュ値mod(4)」のケースには、この演算の結果は、0と3の間の整数である。
それぞれの異なる記憶場所/システムには、個々のロール、即ち、0、1、2、又は3、が割り当てられてもよい。更に、異なる記憶場所の数に基づいて、オブジェクトデータは多くのチャンクに分割されてもよい。例えば、M個の記憶場所/システムが存在している場合には、オブジェクトデータはM−1個のデータチャンクに分割されてもよく、M−1個のデータチャンクに対して、1つのパリティチャンクが生成されてもよい。オブジェクトデータの第1データチャンクは、モジュロ演算の結果にマッチするロール値を有するシステムに記憶してもよい。オブジェクトのそれぞれの後続のデータチャンクは、次の最大のロール数を有するそれぞれの後続の記憶場所において保存され、パリティチャンクは、順番における最後に保存されてもよい。相対的に大きなロール値を有する記憶場所が存在していない場合には、次のチャンクは、ロール値=0を有するシステムに記憶される。
ハッシュ化アルゴリズムは、分散型トポロジー内のすべてのシステムに跨るパリティチャンクの均等な分散を保証するために十分にランダムであるハッシュ値を返すことができる。従って、分散型トポロジー内のシステムのいずれかのものが、その他のシステムよりも格段に大きな百分率でパリティチャンクを有する可能性は、小さく、これにより、データチャンクの代わりにパリティチャンクを使用してデータオブジェクトが再構築される際の演算負荷が相対的に均等に分散される。更に、本明細書において記述されているチャンクを分散させる方法は、複製オブジェクトデータからのすべての複製チャンクが、分散型トポロジー内の同一のシステムに記憶されることを保証している。従って、本明細書における例においては、それぞれのシステムが重複排除をローカルに実行してもよく、分散型トポロジーに跨るグローバルな重複排除管理に対する要件が存在しない。更に、4つのシステムが存在している例においては、この例においてデータ保護を提供するために使用されるストレージの量は、オリジナルのオブジェクトデータサイズの1.33倍であり、これは、オブジェクトデータの完全な複写を記憶することによって使用されるサイズの2倍超の大きな節約である。
説明を目的として、いくつかの実装形態例は、イレイジャーコーディングされたオブジェクトデータを記憶及び重複排除するべく相互の通信状態にある複数のシステムの環境において、記述されている。但し、本明細書における実装形態は、提供されている特定の例に限定されるものではなく、且つ、本明細書における開示に鑑み当業者には明らかであるように、その他の種類の演算及びストレージシステムアーキテクチャ、その他の種類のストレージ環境、その他の種類のクライアント構成、その他の種類のデータなどに拡張してもよい。
図1は、いくつかの実装形態に係る、オブジェクトを記憶及び重複排除するべく構成された分散型ストレージトポグラフィ100のアーキテクチャ例を示している。複数のシステム102は、複数のそれぞれの記憶場所104〜110において、分散型トポロジーに配置されている。例えば、第1システム102(1)は、第1記憶場所104に配置され、第2システム102(2)は、第2記憶場所106に配置され、第3システム102(3)は、第3記憶場所108に配置され、また、第4システム102(4)は、第4記憶場所110に配置されている。更に、この例においては、4つのシステム及び記憶場所が示されているが、その他の例におけるシステム及び記憶場所の数は、4に限定されるものではなく、また、3〜300個のシステムの範囲のように、3つ以上のシステムであってもよい。
それぞれのシステム102は、少なくとも1つのサービス演算装置112と、少なくとも1つのストレージ装置114と、を含んでもよい。従って、1つ以上のサービス演算システム112(1)及び1つ以上のストレージ装置114(1)が、第1システム102(1)内に含まれてもよく、1つ以上のサービス演算装置112(2)及び1つ以上のストレージ装置114(2)が、第2システム102(2)内において含まれてもよく、1つ以上のサービス演算装置112(3)及び1つ以上のストレージ装置114(3)が、第3システム102(3)内に含まれてもよく、また、1つ以上のサービス演算装置112(4)及び1つ以上のストレージ装置114(4)が、第4システム102(4)内に含まれてもよい。更に、この例においては、のサービス演算装置112(複数も可)及びストレージ装置114(複数も可)が、別個に示されているが、その他の例においては、ストレージ装置114(複数も可)は、更に後述するように、サービス演算装置112(複数も可)に内蔵されていてもよく、或いは、この内部に含まれていてもよい。更に、システム102は、本開示において記述及び図示されているハードウェア構成に限定されるものではなく、オブジェクトストレージとして機能し、且つ、本明細書において記述されている機能を実行することができる、任意の適切な又は望ましいハードウェア構成を含んでもよく、また、システム102のうちの1つのハードウェア構成は、システム102の別のものにおけるものと異なってもよい。
それぞれのシステム102(1)〜102(4)内の少なくとも1つのサービス演算装置112は、個々のシステム102(1)〜102(4)のストレージ装置114(複数も可)において記憶されている複数のオブジェクトチャンク118に関するメタデータを保存するために使用されているメタデータデータ構造116を含み、管理し、或いは、アクセスする。例えば、メタデータデータ構造116は、データベース、表、又は任意の他の適切なデータ構造であってよい。メタデータデータ構造116に含まれているメタデータは、パス、名称、所有者、オブジェクトデータから決定されたハッシュ値などのような、それぞれのオブジェクト及び/又は対応するオブジェクトチャンクに関する情報を含んでもよい。これに加えて、更に後述するように、メタデータデータ構造116は、それぞれのシステム102(1)〜102(4)における重複排除をサポートするために、重複排除メタデータを含んでもよい。例えば、重複排除の際に、オブジェクトチャンクが、システム102において既に保存されているオブジェクトチャンクの複製であると識別された際には、メタデータデータ構造116内のメタデータエントリが、複製チャンクのために生成及び/又は維持されてもよいが、複製チャンクのオブジェクトデータ自体は、削除されてもよく、また、システムによって既に保存されているチャンクのオブジェクトデータを指し示している複製チャンク用のポインタが、メタデータデータベース116内に追加されてもよい。重複排除技法については、更に後述する。
システム102(1)〜102(4)は、1以上のネットワーク120上で相互に通信することができる。1以上のネットワーク120は、インターネットなどのワイドエリアネットワーク、イントラネットなどのローカルエリアネットワーク(LAN)、セルラーネットワークなどの無線ネットワーク、Wi−Fiなどのローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)などの近距離無線通信、ファイバーチャネル、光ファイバ、Ethernet、又は他のそのようなネットワークを含む有線ネットワーク、又は直接有線接続、或いは、これらの任意の組合せを含む任意の適切なネットワークを含んでもよい。従って、1以上のネットワーク120は、有線及び/又は無線通信技術の両方を含んでもよい。このような通信に使用されるコンポーネントは、ネットワークの種類、選択された環境、又は、これらの両方に少なくとも部分的に依存しうる。このようなネットワーク上において通信するためのプロトコルについては、周知であり、本明細書においては、詳細な説明を省略することとする。従って、サービス演算装置112は、有線又は無線接続及びこれらの組合せを使用する、1以上のネットワーク120上において通信することができる。
これに加えて、サービス演算装置112の少なくともいくつかは、1以上のネットワーク124を介してクライアント装置122(1)〜122(N)と通信することができる。それぞれのクライアント装置122(1)〜122(N)は、例えば、システム102上のストレージのためのデータオブジェクトの送信及び/又はシステム102からの記憶されたオブジェクトの受信のためなどのように、個々のサービス演算装置112と通信するなどのために、個々のクライアント装置122(1)〜122(N)上において稼働しうるクライアントアプリケーション126(1)〜126(N)の個々のインスタンスを含んでもよい。いくつかのケースにおいては、アプリケーション126は、ブラウザを含んでいてもよく、或いは、ブラウザを通じて動作してもよいが、その他のケースにおいては、アプリケーション126は、1以上のネットワーク124上においてサービス演算装置112との間の通信を可能にする通信機能を有する任意のその他の種類のアプリケーションを含んでもよい。
1以上のネットワーク124は、いくつかの例においては、LANであってよい。他の例においては、1以上のネットワーク124は、1以上のネットワーク120との関係において上述したネットワークのうちのいずれかであってよい。いくつかのケースにおいては、ユーザ128及び/又はクライアント装置112又はクライアントアプリケーション126は、複数の記憶場所104〜110のうちの特定の記憶場所において1以上のサービス演算装置112にアクセスするために、割り当ててもよい。例えば、記憶場所104がボストンに位置し、ユーザ128(1)が、ボストンエリア内において働いている従業員である場合には、ユーザ128(1)は、他の記憶場所106〜110のその他のサービス演算装置112(2)〜112(4)ではなく、演算装置112(1)(複数も可)のそれぞれにアクセスするように、割り当ててもよい。一例として、様々なユーザ128又はユーザのグループは、負荷の均衡化やローカルオフィスシステムへの従業員アクセスの制限などのために、記憶場所104〜110のうちの特定のものにおけるサービス演算装置112(複数も可)のうちの特定のものに対するアクセスのみを付与されてもよい。更に、この例においては、4つのシステム102(1)〜102(4)及び記憶場所104〜110が示されているが、他の例においては、3つ以上などの、異なる数のシステム/記憶場所が使用されてもよく、この場合に、上限は、技術的な実行可能性ではなく、実際的な且つ減少するリターンに基づいている。
図2は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及び、パリティチャンクを決定することの一例を示している。この例においては、ユーザ128(1)が、オブジェクト201を第1システム102(1)に送信するものと仮定する。第1システム102(1)は、クライアント装置122(1)からオブジェクト201を受け取っている。例えば、オブジェクト201は、オブジェクトデータ202と、オブジェクトメタデータ203と、を含んでもよい。オブジェクトメタデータ203は、上述のように、オブジェクト識別子、オブジェクト種類、オブジェクトサイズ、オブジェクト所有者、生成日付などを含んでもよい。本明細書の例においては、「オブジェクトデータ」は、オブジェクトのデータコンテンツのみを意味し、オブジェクトメタデータを除いてもよい。同様に、オブジェクトメタデータは、オブジェクトデータを除いてもよい。
図示の例においては、分散型トポロジー100内のシステム102の間においてデータチャンクを分散させることを目的として、第1システム102(1)は、204で示されているように、0に等しいロール値を有し、第2システム102(2)は、206で示されているように、1に等しいロール値を有し、第3システム102(3)は、208で示されているように、2に等しいロール値を有し、且つ、第4システム102(4)は、210において示されているように、3に等しいロール値を有する。これらのロール値は、システム管理者により、または、その他の技法を通じて、割り当てることができるが、典型的に、本明細書において記述されている重複排除技法の実装を可能にするべく、一定に留まることになる。
第1システム102(1)は、オブジェクト201のオブジェクトデータ202を3つのほぼ等しいサイズのオブジェクトデータチャンク、即ち、データチャンク202(A)、データチャンク202(B)、及びデータチャンク202(C)、に分割している。いくつかのケースにおいては、チャンク202(A)〜202(C)それぞれは、オリジナルのオブジェクトデータ202からの連続したバイトを含んでもよい。1つの単純な例として、999バイトのファイルが3つのチャンクに分割される場合には、チャンク202(A)は、バイト0〜332を収容してもよく、チャンク202(B)は、バイト333〜665を収容してもよく、チャンク202(C)は、バイト666〜998を収容してもよい。3つのデータチャンク202(A)〜202(C)からオリジナルのオブジェクトデータを再構築するために、第1システム102(1)(或いは、システム102のうちの別の1つ)は、チャンク202(A)+202(B)+202(C)を単純に連結してもよい。従って、複数のデータチャンクからの完全なオブジェクトデータの再構築は、非常に小さな演算オーバーヘッドをもたらしうる。オブジェクトデータをチャンクに分割するための一代替技法については、図13に関して後述する。
第1システム102(1)は、パリティチャンク202(P)を演算するために、データチャンク202(A)〜202(C)を使用してもよい。パリティチャンク202(P)は、典型的には、データチャンク202(A)〜202(C)の個々のものとほぼ同一のサイズであってよい。従って、4つの記憶場所を含む図示の例においては、パリティチャンク202(P)及びデータチャンク202(A)〜202(C)のうちの任意の2つは、残りのデータチャンクのオブジェクトデータを演算するために使用してもよい。これは、数式を適用することによって実現される。単純化された一例として、以下の式:A+B+C=Pを検討しよう。A、B、Cの値が与えられた場合に、例えば、2+3+4=P、従って、P=9というように、パリティPを演算することができる。任意の単一の値が消失した場合に、その値は、既知の値及びパリティを使用することにより、2+B+4=9、従って、B=3と演算することができる。一例として、当技術分野において既知のように、パリティデータは、データチャンク202(A)〜202(C)について、パリティデータを決定するための排他的OR関数(XOR)を使用することにより、演算することができる。この結果、データチャンク202(A)、202(B)、又は202(C)のうちの1つが利用不能である場合に、オブジェクトデータ202は、パリティチャンク202(P)及びその他の2つのデータチャンクを使用することにより、依然として再構築することができる。更に、この例において、単一のパリティチャンクが使用されているが、他の例においては、複数のパリティチャンクが存在してもよい。
第1システム102(1)は、オブジェクトデータ202からハッシュ値を更に演算してもよい。上述のように、システム102(1)は、SHA−256アルゴリズム、MD5アルゴリズム、又はこれらに類似したものなどの、いくつかの周知の決定論的なハッシュアルゴリズムのうちのいずれかを使用してもよい。更に、212で示されているように、第1システムは、ハッシュアルゴリズムを使用して決定されたハッシュ値のmodulo(4)を演算してもよい。この演算の結果は、常に、0〜3の範囲の整数となる。例えば、4つのシステム102(1)〜102(4)が存在していることから、modulo(4)が使用されている。5つのシステムが存在している場合には、modulo(5)が使用されてもよく、6つのシステムが存在している場合には、modulo(6)が使用されてもよく、以下同様である。従って、この結果が、いずれの記憶場所が、イレイジャーコーディングされたオブジェクトデータの第1チャンクを記憶するために割り当てられるのか、を決定する。
更に、「ハッシュ値modulo(システムの数)」という式を使用し、また、結果に対してマッチしているシステムに第1データチャンクを配置することは、本明細書においてチャンクを一貫性を有して分散させる唯一の方法ではない。例えば、システムは、必ずしも第1データチャンクではない、データチャンクのうちの任意のものにより、供給シーケンスを開始してもよく、パリティチャンクによって開始してもよく、ロール値の昇順ではなく、ロール値の降順においてチャンクを分散させてもよく、且つ、以下同様である。これに加えて、システムの数のモジュロを使用するのではなく、モジュロは、チャンクの配置用の可能な順列の数又はこれに類似したものを使用することにより、判定されてもよい。更に、ハッシュ値から、パリティサイトのほぼ均等な分散を有するチャンクの割当の順列への、その他のタイプの関数が使用されてもよい。従って、本明細書において開示されている利益を有する当業者には、多数のその他の変形が明らかとなるであろう。
この例において、ハッシュ値mod(4)が1に等しいと仮定する。これは、分散型トポロジー内の割り当てられたストレージロール値=1を有する記憶場所(即ち、図示の例において、第2システム102(2))が、オブジェクト201のオブジェクトデータのチャンク202(A)を保存する責任を担うことを意味している。それぞれの連続するチャンクは、パリティチャンクが順番において最後である状態で、それぞれ、次の最も大きなロール値を有するそれぞれの連続するシステム102上に記憶してもよい。相対的に大きなロール値を有するシステムが存在していない場合には、次のチャンクは、ロール値=0のストレージシステムに記憶される。従って、第1システム102(1)は、オブジェクトデータをデータチャンク202(A)〜202(C)及びパリティチャンク202(P)に低減し、システムの割り当てられたロール値との間の対応性に基づいて、1以上のネットワーク120上において、チャンクをその他のシステム102(2)、102(3)、及び102(4)に送信してもよい。
図3は、いくつかの実装形態に係る、地理的なオブジェクトチャンクの分散の一例を示している。オブジェクトデータをデータチャンク202(A)、202(B)、及び202(C)と、パリティチャンク202(P)と、に低減した後に、チャンクの個々のものは、上述の分散マッピング技法に従って、システムトポロジー100内のシステム102(2)〜102(4)のうちの別個のシステムに送信されてもよい。上述のように、それぞれのシステム102は、オブジェクトデータのハッシュから決定されたマッピング関数と、個々の記憶場所104〜110のシステム102(1)〜102(4)のそれぞれに対して割り当てられた割当済みのロール値と、に基づいて、オブジェクトチャンク202(A)、202(B)、202(C)、又は202(P)のうちの単一のものを保存してもよい。これに加えて、それぞれのオブジェクトチャンクが、その他のシステム102(2)〜102(4)に送信される際に、送信するシステム102(1)は、オブジェクト201及び特定のチャンクと関連するオブジェクトメタデータ203を送信してもよい。それぞれのシステム102(2)〜102(4)に送信されるオブジェクトメタデータ203は、上述のオブジェクトメタデータの種類と、更に、オブジェクトデータ202について決定されたハッシュ値と、を含んでもよい。
この例においては、ハッシュ値のmodulo(4)は、1に等しく、これは、206に示されているように、第2システム102(2)に割り当てられているロール値に対応している。従って、第1システム102(1)は、オブジェクトデータの第1データチャンク202(A)を第2システム102(2)に送信し、且つ、相対的に大きなロール値が存在しなくなる時点まで、ロール値の昇順に従って、オブジェクトの残りのチャンクを分配し、なくなった時点で、第1システム102(1)は、ロール0において始まる分配を継続する。従って、この技法に基づいて、2に等しいロール値を有する第3システム102(3)が、第2チャンク202(B)を受け取り、3に等しいロール値を有する第4システム102(4)が、第3データチャンク202(C)を受け取り、また、0に等しいロール値を有する第1システム102(1)が、パリティチャンク202(P)を保持する。
オブジェクトメタデータ203は、個々のオブジェクトチャンクと共に送信されてもよく、または、これとは別個に送信されてもよい。個々のシステムは、メタデータ203を受け取り、受け取ったオブジェクトチャンクに関連して、その個々のメタデータデータ構造116内に保存する。更に、本明細書においては、「ハッシュ値modulo(4)」を使用することが、オブジェクトデータのコンテンツに基づいて、データチャンクと複数のシステム102との間において一貫性を有するマッピングを確立するための1つの技法として記述されているが、本明細書における開示の利益を有する当業者には、様々なその他のマッピング技法が明らかとなるであろう。従って、本明細書における実装形態は、記述されている特定の技法に限定されるものではない。
図4は、いくつかの実装形態に係る、地理的に分散されたチャンクからのオブジェクトの再構築の一例を示している。分散型トポロジー100内のオブジェクトストレージシステム102のうちの1つのシステムからの記憶されているオブジェクトが、ユーザ128によって要求された際に、要求を受け取ったシステム102は、チャンクからオブジェクトデータ202を再生成するために、ローカルに記憶されているチャンクと、その他の個々の記憶場所のその他のシステム102から取得された2つの更なるデータチャンクとを使用してもよい。この活動によって消費されるネットワーク帯域幅を制限するために、再構築システム102は、リモートシステム102から、オリジナルのオブジェクトデータを再生成するために必要とされる最小数のチャンクを取得してもよい。ローカルチャンクは、データチャンク又はパリティチャンクのいずれであってもよい。但し、ローカルチャンクがパリティチャンクである際には、システムは、典型的には、オブジェクトデータ202の再構築を可能とするための、不足しているデータチャンクの演算からもたらされる、更なるオーバーヘッドを被る。
図示の例においては、第4システム102(4)が、オブジェクト201へのアクセスを要求する要求402をクライアント装置122(N)から受け取るものと仮定する。要求の受取に応答して、第4システム102(4)は、自身が、要求されているオブジェクト201のデータチャンク202(C)を有していると決定してもよく、オブジェクトデータ202を再構築するために、2つの更なるチャンクを要求する。第4システム102(4)がデータチャンク202(C)と共に受け取ったオブジェクトメタデータ203に基づいて、第4システムは、オブジェクトデータ202のその他のデータチャンク202(A)及び202(B)と、パリティチャンク202(P)と、の場所を決定してもよい。一例として、第4システム102(4)は、オブジェクトメタデータ203と共に受け取ったオブジェクトデータハッシュ値を使用してもよく、また、その他のシステムのいずれがその他のチャンクのいずれを保存しているのかを決定するために、ハッシュ値のmodulo(4)を算出してもよい。
従って、最小量の演算処理によってオブジェクトデータを再構築するために、第4システム102(4)は、分散型トポロジー100内の、システム102(1)及び102(2)から、2つのその他のデータチャンク202(A)及び202(B)のそれぞれを取得してもよい。一例として、第4システム102(4)は、オブジェクトメタデータ203内において含まれているハッシュ値に基づいて、及び、いずれのシステム102がパリティチャンクではなくデータチャンクを維持しているのかを決定するための上述のmodulo(4)演算を適用することにより、2つのその他のデータチャンクの場所を決定することができる。2つのその他のデータチャンクを受け取った際に、第4システム102(4)は、オリジナルのオブジェクトデータを再生成するために、単純に3つのデータチャンク202(A)、202(B)、及び202(C)を1つに連結してもよい。次いで、第4システム102(4)は、再構築されたオブジェクトデータ202及びオブジェクト識別子などの任意の関連するオブジェクトメタデータ203又はこれらに類似したものを含むオブジェクト201を要求元のクライアント演算装置122(N)に送信することにより、クライアント演算装置122(N)からの要求402に応答してもよい。
図5は、いくつかの実装形態に係る、パリティチャンクを含む地理的に分散されたチャンクからのオブジェクトの再構築の一例を示している。この例においては、第1クライアント装置122(1)におけるユーザ128(1)が、オブジェクト201へのアクセスを要求する要求502を第1システム102(1)に送信するものと仮定する。更に、一例として、第3システム102(3)において障害が発生し、その結果、要求502が受け取られた時点において、チャンク202(B)が、損傷している、消失している、或いは、その他の方法で利用不能になっている、ものと仮定する。第1システム102(1)は、図4に関して上述したように、第2システム102(2)及び第4システム102(4)から、第1データチャンク202(A)及び第3データチャンク202(C)をそれぞれ取得することができる。次いで、第1システム102(1)は、第1チャンク202(A)、第3チャンク202(C)、及びパリティチャンク202(P)を使用することにより、オブジェクトデータ202を再構築してもよい。
パリティチャンク202(P)を使用したオブジェクトデータの再構築には、パリティチャンク202(P)及びその他の2つのチャンク202(A)及び202(C)を使用することにより、消失したデータチャンク202(B)を演算する必要があり、典型的には、チャンク202(B)が利用可能である場合よりも大きな演算オーバーヘッドが生じうる。また、データチャンク202(B)の使用とは対照的に、パリティチャンク202(P)を使用したオブジェクトデータ202の再構築は、また、典型的には、データチャンク202(B)の取得よりも多くの時間を必要としうる。但し、いくつかのケースにおいては、演算オーバーヘッド及び時間遅延の増大は、システム及びネットワークのレイテンシー、ネットワークの輻輳等に照らして均衡させることができる。例えば、システム102(3)が、地理的に第1システム102(1)からなんらかの距離において配置されるか、或いは、低速ネットワーク接続上に配置されるか、或いは、いくつかのネットワークホップ上に配置され、データチャンク202(B)が利用可能である場合にも、データチャンク202(B)の取得が、パリティチャンク202(P)を使用したデータチャンク202(B)の演算よりも長い時間を所要しうるケースがこれに該当しうる。この結果、このような状況においては、第1システム102(1)は、単に最も迅速に取得されうる2つのデータチャンクのみを取得し、オブジェクトデータを再構築するために、パリティチャンク202(P)及び2つの取得されたデータチャンクを使用してもよい。いくつかの例では、それぞれのシステム102は、オブジェクトデータを再構築するためにパリティチャンクを使用するのかどうか、または、パリティチャンクを使用する代わりにデータチャンクを取得するのかどうか、を決定するために、ネットワークレイテンシー情報を維持してもよい。
図6は、いくつかの実装形態に係る、オブジェクトのデータチャンクへの分割、及び、パリティチャンクの決定の一例を示している。この例においては、ユーザ128(2)が、オブジェクトデータ602及びメタデータ603を有する第2オブジェクト601を送信し、この場合に、オブジェクトデータ602は、上述の第1オブジェクト201のものとは異なっているものと仮定する。例えば、ユーザ128(2)は、オブジェクト601を第3システム102(3)に送信するために、クライアント装置122(2)を使用するものと仮定する。第3システム102(3)は、オブジェクトメタデータ603をそのメタデータデータ構造116(3)内に記憶してもよく、また、オブジェクトデータ602をメタデータとは別個に記憶してもよい。
更に、第3システム102(3)は、図2及び図3に関して上述した例において第1システム102(1)によって使用されたものと同一のハッシュアルゴリズムを使用することにより、オブジェクトデータ602のハッシュ値を演算してもよい。次いで、第3システム102(3)は、オブジェクトデータ602のハッシュ値modulo(4)を決定してもよい。この例においては、ハッシュmodulo(4)の計算の結果は、604で示されているように、2の結果を返すものと仮定する。
これに加えて、システム102(3)は、オブジェクトデータ602を3つのデータチャンク602(A)、602(B)、及び602(C)に分割してもよい。更に、システム102(3)は、上述のように、3つのデータチャンク602(A)〜602(C)についてパリティチャンク602(P)を算出してもよい。この結果、システム102(3)は、図7に関して更に後述するように、データチャンク及び/又はパリティチャンクを分散型トポロジー100内の他のシステム102に分散させる準備が整っている。
図7は、いくつかの実装形態に係る、オブジェクトチャンクの地理的な分散の一例を示している。上述のように、オブジェクトチャンクを分散させるための本明細書において記述されている技法は、ほぼランダムなチャンク記憶の分散を結果的にもたらすことができる。この実質的にランダムな分散に起因して、パリティチャンクの記憶に関する演算ペナルティが、分散型トポロジー100内のすべてのシステム102の間において均等に分散される。
この例においては、ハッシュ値mod(4)の計算が2となることに基づいて、第1データチャンク602(A)は、第3システム102(3)において保持され、その理由は、第3システム102(3)が、208で示されているように、2に等しいロール値を有するからである。残りのチャンクは、第2データチャンク602(B)が、210で示されているように、3に等しいロール値を有する第4システム102(4)に送信され、第3データチャンク602(C)が、204で示されているように、0に等しいロール値を有する第1システム102(1)に送信され、また、パリティチャンク602(P)が、206でて示されているように、1に等しいロール値を有する第2システム102(2)に送信される、ように、ラウンドロビン方式で順番に分散される。更には、上述のように、オブジェクト601用のオブジェクトメタデータ603も、個々のチャンク602(B)、602(C)、及び602(P)と共に、或いは、別個の送信において、個々のシステム102(4)、102(1)、及び102(2)のそれぞれに送信してもよい。
図8は、いくつかの実装形態に係る、オブジェクトのデータチャンクへの分割、及び、パリティチャンクの決定の一例を示している。オブジェクトストレージシステム内において、重複排除技法を使用することにより、オブジェクトデータによって消費されるストレージの量を劇的に低減することができる。一例として、オブジェクトストレージシステムによって受け取られた異なるオブジェクトのコンテンツデータを比較することにより、ファイルに基づいた重複排除を実行してもよい。データのコンテンツが複数のオブジェクトについて同一であるとシステムが決定した場合には、オブジェクトストレージシステムは、複製データを有する複数のオブジェクトのメタデータをストレージ上のオブジェクトデータコンテンツの単一のインスタンスに対してリンクすることにより、オブジェクトストレージシステムから複製データを除去することができる。
本明細書において記述されている技法を使用することにより、複製データを有するオブジェクトがイレイジャーコーディングされたチャンクに低減された際には、結果としてのチャンクも複製である。但し、イレイジャーコーディングされたチャンクが、分散型トポロジー内の複数のストレージシステムに跨ってランダムに分散された場合には、複製チャンクは、複数の異なる記憶場所において保存され、これにより、複製データの識別及び除去が困難になりうる。本明細書における実装形態は、同一のデータを有するチャンクが分散型トポロジー100内の同一のストレージシステムに保存されることを保証し、これにより、分散型トポロジー100内のそれぞれのローカルシステム102が複製データを独立的に識別及び除去することを可能にすることにより、この課題に対処している。従って、本明細書における実装形態は、グローバルな重複排除管理システムを必要としてはおらず、これを利用してもいない。
図8の例において、ユーザ128(N)が、上述の第1オブジェクト201のオブジェクトデータ202と同一のオブジェクトデータ802を有する第3オブジェクト801と、オブジェクトメタデータ803と、を送信するものと仮定する。例えば、ユーザ128(N)は、オブジェクト801を第4システム102(4)に送信するために、クライアント装置122(N)を使用するものと仮定する。第4システム102(4)は、オブジェクトメタデータをそのメタデータデータ構造(図8に、図示せず)内に記憶してもよく、また、オブジェクトデータ802をメモリ、ディスク、又はその他の記憶領域内に記憶してもよい。
更には、第4システム102(4)は、図2及び図3に関して上述した例の第1システム102(1)によって使用されたものと同一のハッシュアルゴリズムを使用することにより、オブジェクトデータ802のハッシュ値を演算してもよい。次いで、第4システム102(4)は、オブジェクトデータ802のハッシュ値modulo(4)を決定してもよい。この例においては、ハッシュmodulo(4)の計算の結果は、804で示されているように、1の結果を返すものと仮定する。
これに加えて、第4システム102(4)は、オブジェクトデータ802を3つのデータチャンク802(A)、802(B)、及び802(C)に分割してもよい。更に、第4システム102(4)は、上述のように、3つのデータチャンク802(A)〜802(C)についてのパリティチャンク802(P)を算出してもよい。この結果、第4システム102(4)は、図9に関して更に後述するように、データチャンク及び/又はパリティチャンクを分散型トポロジー内のその他のシステムに分散させるための準備が整っている。
図9は、いくつかの実装形態に係る、オブジェクトチャンクの地理的分散の一例を示している。上述のように、第4システム102(4)は、1の結果を返すハッシュmodule(4)演算を使用して、オブジェクトデータの記憶責任を演算してもよい。これは、第1システム102(1)が、同一のオブジェクトデータ202を有する第1オブジェクト201の記憶責任を決定した際と同一の結果である。従って、本明細書における分散技法は、同一のオブジェクトデータは、常に、同一のイレイジャーコーディングされたチャンクについて、同一の記憶責任が割り当てられることを保証している。
この例においては、第2システムが、206で示されているように、1に等しいロール値を有するから、1に等しいハッシュmod(4)の計算に基づいて、第1データチャンク802(A)は、第2システム102(2)に送信される。従って、第2データチャンク802(B)は、208で示されているように、2に等しいロール値を有する第3システム102(3)に送信され、第3データチャンク802(C)は、210で示されているように、3に等しいロール値を有する第4システム102(4)において保持され、また、パリティチャンク802(P)は、204で示されているように、0に等しいロール値を有する第1システム102(1)に送信される。更に、上述のように、決定されたハッシュ値を含むオブジェクト801のオブジェクトメタデータ803は、個々のチャンク802(P)、802(A)、及び802(B)と共に、或いは、別個の送信において、個々のシステム102(1)、102(2)、及び102(3)のそれぞれに送信されてもよい。
図10は、いくつかの実装形態に係る、複製のイレイジャーコーディングされたオブジェクトチャンクの決定の一例を示している。それぞれの記憶場所104〜110における個々のストレージシステム102(1)〜102(4)は、それぞれ、重複排除プログラム1002の個々のインスタンスを含んでもよい。従って、第1システム102(1)は、重複排除プログラム1002(1)を含み、第2システム102(2)は、重複排除プログラム1002(2)を含み、第3システム102(3)は、重複排除プログラム1002(3)を含み、また、第4システム102(4)は、重複排除プログラム1002(4)を含む。上述のように、本明細書における分散技法の実装は、複製オブジェクトデータの複製のイレイジャーコーディングされたチャンクが常に同一の記憶場所において保存され、また、そのため重複排除の候補であることを保証している。
重複排除用の様々な技法を重複排除プログラム1002によって採用してもよい。一例として、重複排除プログラム1002は、個々のローカルシステムによって記憶されたすべてのデータチャンクのフィンガプリントを含むローカルフィンガプリントデータ構造1004を維持してもよい。従って、第1システム102(1)は、フィンガプリントデータ構造1004(1)を含み、第2システム102(2)は、フィンガプリントデータ構造1004(2)を含み、第3システム102(3)は、フィンガプリントデータ構造1004(3)を含み、第4システム102(4)は、フィンガプリントデータ構造1004(4)を含む。
例えば、フィンガプリントは、ハッシュアルゴリズム又はその他の既知のフィンガプリント処理技法の使用などを通じて、それぞれのチャンクのコンテンツを示すように生成することができる。この結果、新しいイレイジャーコーディングされたチャンクがシステム102によって受け取られた際に、重複排除プログラム1002は、新しいチャンクの新しいフィンガプリントを生成することができ、また、新しいフィンガプリントをフィンガプリントデータ構造1004内に既に存在しているフィンガプリントと比較することができる。フィンガプリントデータ構造1004内に既に存在しているフィンガプリントとの間においてマッチが見出された場合に、重複排除プログラムは、新たに受け取られたチャンクが、実際に、既に受け取られているチャンクの複製であることを確認するために、対応するイレイジャーコーディングされたチャンクのバイトごとの比較を実行するなどにより、データが実際に複製であることを保証するために、更に十分な比較を実行してもよい。
従って、1006で示されているように、第1システム102(1)上の重複排除プログラム1002(1)は、新しく受け取られたパリティチャンク802(P)が、予め受け取られているパリティチャンク202(P)の複製であると決定してもよく、1008で示されているように、第2システム102(2)上の重複排除プログラム1002(2)は、新たに受け取られたデータチャンク802(A)が、予め受け取られているデータチャンク202(A)の複製であると決定してもよく、1010で示されているように、第3システム102(3)上の重複排除プログラム1002(3)は、新たに受け取られたデータチャンク802(B)が、予め受け取られたデータチャンク202(B)の複製であると決定してもよく、1012で示されているように、第4システム102(4)上の重複排除プログラム1002(4)は、データチャンク802(C)が、予め受け取られたデータチャンク202(C)の複製であると決定してもよい。
図11は、いくつかの実装形態に係る、複製オブジェクトチャンクの重複排除の一例を示している。複製データの決定に続いて、図10に関して上述したように、個々のシステム102は、複製データの重複排除を実行してもよい。一例として、第1システム102(1)上の重複排除プログラム1002(1)は、複製データを削除するか、または、さもなければ、削除のために複製データをマーキングし、且つ、例えば、既存のパリティチャンク202(P)などの、既存のデータを指し示すポインタ1102をメタデータデータ構造116(1)に追加する。重複排除プログラム1002(1)は、ポインタ1102を新たに受け取られたパリティチャンク802P(図11に、図示せず)について受け取られたオブジェクトメタデータ803(図11には、示されていない)と関連付けてもよい。同様に、第2システム102(2)上の重複排除プログラム1002(2)も、複製データを削除するか、さもなければ、削除のために複製データをマーキングし、且つ、例えば、既存のデータチャンク202(A)などの、既存のデータを指し示すポインタ1104をメタデータデータ構造116(2)に追加する。重複排除プログラム1002(2)は、ポインタ1104を新たに受け取られたパリティチャンク802(A)(図11に、図示せず)について受け取られたオブジェクトメタデータ803(図11に、図示せず)と関連付けてもよい。これに加えて、第3システム102(3)上の重複排除プログラム1002(3)も、複製データを削除するか、或いは、さもなければ、削除のために複製データをマーキングし、且つ、例えば、既存のデータチャンク202(B)などの、既存のデータを指し示すポインタ1106をメタデータデータ構造116(3)に追加する。重複排除プログラム1002(3)は、ポインタ1106を新たに受け取られたパリティチャンク802(B)(図11に、図示せず)について受け取られたオブジェクトメタデータ803(図11に、図示せず)と関連付けてもよい。最後に、第4システム102(4)上の重複排除プログラム1002(4)も、複製データを削除するか、または、さもなければ、削除のために複製データをマーキングし、且つ、例えば、既存のデータチャンク202(C)などの、既存のデータを指し示すポインタ1108をメタデータデータ構造116(4)に追加する。重複排除プログラム1002(4)は、ポインタ1108を新たに受け取られたパリティチャンク802(B)(図11には、図示せず)について受け取られたオブジェクトメタデータ803(図11に、図示せず)と関連付けてもよい。従って、本明細書における分散及び重複排除技法を使用することにより、システム102は、分散型トポロジー100の全体を通じて保存されたイレイジャーコーディングされたオブジェクトデータについて最大記憶効率を維持することができる。
図12は、いくつかの実装形態に係る、オブジェクトデータがチャンクに低減される前又は後における複製オブジェクトデータの重複排除の一例を示している。この例において、第4システム102(4)は、オブジェクトデータ1202を有する第4オブジェクト1201と、オブジェクトデータ1206を有する第5オブジェクト1205との2つの更なるオブジェクトを受け取ったと仮定する。更に、この例においては、第4システム102(4)は、オブジェクトデータをチャンクに分割し、パリティを演算し、且つ、チャンクをその他のシステム102(1)〜102(3)に分散させる前に、1週間、2週間、1か月等の、規定された閾値期間にわたって、オブジェクトデータの完全なバージョンを維持するように構成されているものと仮定する。
従って、この例においては、重複排除プログラム1002(4)は、1208で示されているように、完全なオブジェクトデータが維持される規定された閾値時間において、第5オブジェクトデータ1206が、第4オブジェクトデータ1202の複製であると決定している。これが発生した際には、重複排除プログラム1002(4)は、第5オブジェクトデータ1204を削除し、第1オブジェクト1201のオブジェクトデータ1202を指し示す、第2オブジェクト1205のメタデータ(図12に、図示せず)と関連付けたポインタを生成する。
その後に、第4オブジェクト1201のオブジェクトデータ1202の完全なバージョンを維持するための規定された時間閾値が満了したが、第5オブジェクト1205のオブジェクトデータ1206の完全な複写を維持するための規定された時間閾値が、まだ満了していないものと仮定する。従って、システム102(4)は、オブジェクトデータ1202をデータチャンクに分割し、パリティチャンクを決定し、例えば、図8及び図9に関して上述したように、割り当てられたロールに基づいて、個々のチャンクをその他のシステム102(1)〜102(3)に送信する。この結果、データチャンク1202(C)が、第4システム102(4)上で保持されることになる。その後に、重複排除プログラム1002(4)は、図9に関して上述したように、それがシステム102(4)によって既に保存されているチャンク202(C)の複製であることに基づいて、データチャンク1202(C)を重複排除する。
更には、オブジェクトデータ1202を指し示す第2オブジェクト1205からのポインタが依然として存在していることから、オブジェクトデータ1202は、いまだシステム102(4)から削除されてはいない。その後に、オブジェクトデータ1206の完全なバージョンを維持するための規定された時間閾値が満了した際に、システム102(4)は、オブジェクトデータ1202をデータチャンクに分割し、パリティチャンクを決定し、例えば、図8及び図9に関して上述したように、割り当てられたロール値に基づいて、個々のチャンクをその他のシステム102(1)〜102(3)に送信する。この結果、データチャンク1206(C)は、第4システム102(4)上に保持されることになる。その後に、重複排除プログラム1002(4)は、図9に関して上述したように、それがシステム102(4)によって既に保存されているチャンク202(C)の複製であることに基づいて、データチャンク1206(C)を重複排除する。
図13は、いくつかの実装形態に係る、データチャンク及びパリティチャンクの決定の一例1300を示している。いくつかの例においては、オブジェクトデータ202は、上述のように、データの開始時点に始まり、また、データの第1の3分の1から第1チャンクを生成し、データの第2の3分の1から第2チャンクを生成し、また、データの第3の3分の1から第3チャンクを生成し、また、次いで、これらの3つのチャンクからパリティを算出するなどにより、単に3つの等しいサイズのチャンクに分割されてもよい。
但し、この例においては、データチャンクは、オブジェクトデータのブロックをインターリーブすることにより、生成されている。従って、当初、オブジェクトデータ202は、オブジェクトデータ202をチャンクに分割する前に、複数の等しいサイズのブロック1302に分割してもよい。例えば、ブロックサイズは、256バイト、512バイト、1024バイトなどのような、任意の望ましいブロックサイズであってよい。一例として、ブロックサイズは、オブジェクトデータのサイズに基づいてもよい。例えば、非常に大きなデータオブジェクトは、相対的に大きなブロックに分割されてもよい一方、相対的に小さなデータオブジェクトは、相対的に小さなブロックサイズに分割されてもよい。
図示のように、オブジェクトデータ202は、第1ブロック1302(1)、第2ブロック1302(2)、第3ブロック1302(3)、第4ブロック1302(4)、第5ブロック1302(5)、第6ブロック1302(6)、第7ブロック1302(7)、第8ブロック1302(8)、第9ブロック1302(9)などを有する。データチャンクを生成する際には、第1ブロックから始まるシーケンスにおいて、ブロックは、複数のデータチャンクに交互に追加される。したがって、第1ブロック1302(1)は、第1データチャンク202(A)の初めに追加され、第2ブロック1302(2)は、第2データチャンク202(B)の初めに追加され、且つ、第3ブロック1302(3)は、第3データチャンク202(C)の開始点に追加される。次に、第4ブロック1302(4)は、第1ブロック1302(1)に後続する位置において第1データチャンク202(A)に追加され、第5ブロック1302(5)は、第2ブロック1302(2)に後続する位置において第2データチャンク202(B)に追加され、第6ブロック1302(6)は、第3ブロック1302(3)に後続する位置において第3データチャンク202(C)に追加される。このプロセスは、オブジェクトデータ202内のすべてのブロック1302がデータチャンク202(A)〜202(C)へ分散されるまで継続されてもよい。
3つのデータチャンク202(A)〜202(C)に対するパリティチャンク202(P)を算出する際に、システムは、インターリーブされたブロックを使用することにより、パリティ計算を実行してもよい。したがって、1304で示されているように、システムは、第1パリティブロック1306を演算するために、第1データチャンク202(A)からの第1データブロック1302(1)と、第2データチャンク202(B)からの第2データブロック1302(2)と、第3データチャンク202(C)からの第3データブロック1302(3)とについてのパリティを算出してもよい。従って、パリティブロック1306は、オブジェクトデータ202の最初の3つのブロック1302(1)〜1302(3)のパリティデータを含む。パリティチャンク202(P)の計算は、次のパリティブロック1308を算出するためにデータブロック1302(4)〜1302(6)を次に選択することにより、この方式で継続してもよい。
この結果、このインターリーブされた方式によってデータチャンクを構成し、また、インターリーブされたデータに基づいてパリティチャンクを決定することにより、パリティチャンクを使用してオブジェクトデータを再構築する際に、パリティチャンクを使用して消失チャンクを再構築し、更に、単一パスにおいて、再構築されたデータをその他の2つのチャンクからのデータと連結することが可能でる。その理由は、ブロックが、消失チャンクデータを再生成するため及びその他のデータチャンクのブロックからのデータと再生成されたデータを連結するためにパリティデータを使用する間においてメモリに維持するためには十分に小さいからである。一方で、単純にオブジェクトデータ202を3分の1に分割することにより、データチャンクを生成する上述の第1の技法を使用した場合には、結果的に、パリティデータから消失データを再生成する際に、2つのパス、即ち、パリティデータから消失データを演算し、且つ、演算されたデータを記憶場所に保存するための1つのパスと、再生成されたデータをその他のチャンクからのデータと連結するための第2のパスと、が必要となりうる。更に、本明細書には、データをチャンクに分割し、パリティチャンクを算出する技法のいくつかの例が記述されているが、本明細書における開示の利益を有する当業者には、多数のその他の変形が明らかとなるであろう。
図14及び図15は、いくつかの実装形態に係るプロセス例を示すフロー図である。プロセスは、論理フロー図において、ブロックの集合体として示されており、ブロックは、動作のシーケンスを表し、これらのいくつか又はすべては、ハードウェア、ソフトウェア、又はこれらの組合せによって実装してもよい。ソフトウェアのコンテキストでは、ブロックは、1つ又は複数のプロセッサによって実行された際に、記述されている動作を実行するようにプロセッサをプログラムする、1つ又は複数のコンピュータ可読媒体上において保存されたコンピュータ実行可能命令を表してもよい。一般に、コンピュータ可読命令は、特定の機能を実行する、または、特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックが記述されている順序は、限定として解釈してはならない。プロセス又は代替プロセスを実装するために、任意の数の記述されているブロックを任意の順序において及び/又は並行して組み合わせることが可能であり、また、すべてのブロックの実行が必要とされているわけではない。説明を目的として、プロセスは、本明細書においては、例において記述されている環境、フレームワーク、及びシステムを参照して記述されているが、プロセスは、様々なその他の環境、フレームワーク、及びシステムにおいて実装することもできる。
図14は、いくつかの実装形態に係る、オブジェクトチャンクの分散のプロセス1400の例を示すフロー図である。いくつかのケースにおいては、プロセス1400は、サービス演算装置112又はその他の適切な演算装置のうちの少なくとも1つにより、少なくとも部分的に実行されてもよい。
1402で、演算装置は、異なる個々の地理的場所に配置されている少なくとも3つのシステムを有するシステムの分散型トポロジーを構成してもよい。一例として、システムは、異なる都市、異なる州、異なる国に配置されてもよく、または、さもなければ、異なる地理的領域内に配置されてもよい。
1404で、演算装置は、3つ以上のシステムのうちの第1システムにおいてデータオブジェクトを受け取ってもよく、データオブジェクトは、オブジェクトデータと、オブジェクトメタデータと、を含む。
1406で、演算装置は、データオブジェクトのオブジェクトデータのコンテンツを表す値を決定してもよい。
1408で、演算装置は、システムの合計数に基づいて、オブジェクトデータを複数のデータチャンクに分割し、複数のデータチャンクについてのパリティチャンクを決定することにより、複数のチャンクを決定してもよい。
1410で、演算装置は、システムのそれぞれに対応する個々のロール値を決定してもよい。
1412で、演算装置は、個々のロール値及びオブジェクトのコンテンツを表す値に基づいて、チャンクの個々のチャンクをシステムの個々のシステムに送信してもよい。
1414で、演算装置は、クライアント装置から、データオブジェクトの要求を受け取ってもよい。
1416で、演算装置は、M−2個のチャンクをその他のシステムから受け取ってもよく、ここで、Mは、システムの合計数である。
1418で、演算装置は、システムにおいて保持されているチャンク及びM−2個のその他のチャンクからオブジェクトデータを再構築してもよい。
1420で、演算装置は、要求に応答して、再構築されたオブジェクトデータをクライアント装置に送信してもよい。
図15は、いくつかの実装形態に係る、オブジェクトチャンクを重複排除するプロセス1500の例を示すフロー図である。いくつかのケースにおいては、プロセス1500は、サービス演算装置112(複数も可)又はその他の適切な演算装置(複数も可)により、少なくとも部分的に実行されてもよい。いくつかの例においては、プロセス1500は、上述のプロセス1400と組合せて実行されてもよい。
1502で、演算装置は、異なる個々の地理的場所に配置された少なくとも3つのシステムを有するシステムの分散型トポロジーを構成してもよい。
1504で、演算装置は、オブジェクトチャンクを生成してもよく、或いは、さもなければ、受け取ってもよく、ここで、オブジェクトチャンクは、データオブジェクトに対応するデータチャンク又はパリティチャンクのうちの1つである。
1506で、演算装置は、システムによって受け取られたチャンクのメタデータをメタデータデータ構造に追加してもよい。
1508で、演算装置は、受け取られたチャンクが、システムによって既に保存されているチャンクの複製であると決定するために、受け取られたチャンクのデータをシステムによって既に保存されているチャンクのデータと比較することにより、システムにおいてデータ重複排除してもよい。
1510で、受け取られたチャンクが複製であることを決定したことに基づいて、演算装置は、チャンクのメタデータをシステムによって既に保存されているチャンクのデータに対するポインタと関連付けてもよい。
1512で、演算装置は、システムによって受け取られたチャンクのデータを削除される必要があることを示してもよい。
本明細書において記述されているプロセス例は、説明を目的として提供されたプロセスの例であるに過ぎない。本明細書における開示に鑑み、当業者には、多数のその他の変形が明らかとなるであろう。更に、本明細書における開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、及び環境のいくつかの例について記述しているが、本明細書における実装形態は、図示及び説明されている特定の例に限定されるものではない。更に、本開示は、記述されているように、また、図面において示されているように、様々な例示用の実装形態を提供している。但し、本開示は、本明細書において記述及び図示されている実装形態に限定されるものではなく、当業者には、わかるように、或いは、知られるように、その他の実装形態に拡張することができる。
図16は、いくつかの実装形態に係る演算システム102の構成例を示している。この例においては、演算システム102は、本明細書において記述されているオブジェクトストレージシステムの機能を実行しうるように構成されたサービス演算装置112(本明細書においては、ノードとも呼称される)のクラスタ又はその他の複数のサービス演算装置112であってよい。いくつかの例においては、演算システム102は、1つにネットワーク接続された独立型ノードの冗長型のアレイ(RAIN:redundant array of independent node)と呼称することができる。図示の例においては、複数のサービス演算装置112は、ネットワークスイッチ1602のペアとの通信状態にある。ネットワークスイッチ1602は、サービス演算装置112の間におけるピアツーピア通信を可能にするための内部スイッチとして機能する第1スイッチ1602(1)と、サービス演算装置112に対する外部アクセスを可能にするための外部スイッチとして機能する第2スイッチ1602(2)と、を含んでもよい。それぞれのスイッチ1602は、クラスタ又はその他の演算システム構成におけるすべての潜在的なサービス演算装置112を扱うための十分なポートを含んでもよい。
また、この例における演算システム102は、配電ユニット(PDU:power distribution unit)1604と、無停電電源装置(UPS:uninterruptible power supply)1606と、を含んでもよい。PDU1604は、サービス演算装置112及びスイッチ1602に電源供給するために使用され、また、UPS1606は、電源の変動及び/又は障害のケースにおいてノード及びスイッチを保護することができる。上述のように、演算システム102は、上述の1以上のネットワーク120及び124などの、ネットワークに接続されていてもよく、ネットワークは、本明細書の別の場所において列挙されているように、インターネット又はその他のWAN、LAN、または、その他のタイプのネットワークを含んでもよい。
サービス演算装置112は、同種のものから構成されてもよく、または、異種のものから構成されてもよい。典型的なサービス演算装置112は、LINUX(登録商標)、WINDOWS(登録商標)等の、オペレーティングシステム1608を実行してもよい。これに加えて、サービス演算装置112のいくつか又はすべては、更に後述するように、オブジェクトデータ及び/又はシステムデータを保存するための、1以上のハードディスクドライブ(HDD:Hard Disk Drive)及び/又は1以上の半導体ドライブ(SSD:Solid−State Drive)を含んでもよく、または、これらにアクセスしてもよい。一例として、サービス演算装置112は、任意の数の方法によって実施されうる1以上のサーバー又はその他のタイプの演算装置を含んでもよい。例えば、サーバーのケースにおいては、モジュール、その他の機能的コンポーネント、及びデータストレージの少なくとも一部分は、サーバーのクラスタ、サーバーファーム又はデータセンタ、クラウドによってホスティングされた演算装置などの内部のように、少なくとも1つのサーバー上において実装してもよいが、これに加えて、或いは、この代わりに、その他のコンピュータアーキテクチャを使用してもよい。
図示の例においては、例示用のサービス演算装置112は、1以上のプロセッサ1612、1以上のコンピュータ可読媒体1614、及び1以上の通信インターフェイス1616を含むか、或いは、これらと関連付けられていてもよい。それぞれのプロセッサ1612は、単一の処理ユニット又はいくつかの処理ユニットであってよく、また、1以上の演算ユニット又は複数の処理コアを含むことができる。1つ又は複数のプロセッサ1612は、1以上の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、グラフィクス処理ユニット、及び/又は動作命令に基づいて信号を操作する任意の装置として実装することができる。例えば、1つ又は複数のプロセッサ1612は、本明細書において記述されているアルゴリズム及びプロセスを実行するように具体的にプログラミング又は構成された任意の適切なタイプの1つ又は複数のハードウェアプロセッサ及び/又は論理回路であってよい。プロセッサ1612(複数も可)は、コンピュータ可読媒体1614内に記憶されているコンピュータ可読命令をフェッチ及び実行するように構成されることが可能であり、また、これらの命令は、本明細書において記述されている機能を実行するようにプロセッサ1612(複数も可)をプログラムすることができる。
いくつかのケースにおいては、コンピュータ可読媒体1614は、図1に関して上述したストレージ装置114の少なくとも一部分を含んでもよい。ストレージ装置は、SSD及び/又はHDD等を含んでもよい。更に、コンピュータ可読媒体1614は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの、情報の記憶のための任意のタイプの技術において実装された揮発性及び不揮発性メモリ及び/又は着脱自在及び非着脱自在の媒体を含んでもよい。従って、コンピュータ可読媒体1614は、これに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、又はその他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、クラウドストレージ、或いは、望ましい情報を保存するために使用され、且つ、演算装置によってアクセス可能である、任意のその他の媒体を含んでもよい。ノード102の構成に応じて、コンピュータ可読媒体1614は、言及された際に、非一時的なコンピュータ可読媒体が、エネルギー、搬送波信号、電磁波、及び/又は信号自体を排除する程度に、有体の非一時的な媒体であってよい。
コンピュータ可読媒体1614は、1つ又は複数のプロセッサ1612によって実行可能な任意の数の機能的コンポーネントを記憶するために使用されてもよい。多くの実装形態においては、これらの機能的コンポーネントは、1以上のプロセッサ1612によって実行可能であり、また、実行された際に、本明細書においてサービス演算装置112(複数も可)に帰されているアクションを実行するようにプロセッサ1612(複数も可)を具体的にプログラミングする、1以上のコンピュータプログラム、アプリケーション、又はこれらの一部分、実行可能コード、又はその他の実行可能命令であってよい。コンピュータ可読媒体1614内に記憶されている機能的コンポーネントは、データオブジェクトをクライアント装置に送信し、且つ、データオブジェクトをクライアント装置から受け取るなどのために、クライアント装置と通信しうるサーバープログラム1618を含んでもよい。機能的コンポーネントは、オブジェクトをチャンクに分割し、パリティチャンクを決定し、また、割り当てられたロールに基づいて分散型トポロジー内のその他のシステムにチャンクを分散させるなどのために、本明細書において記述されたイレイジャーコーディング及びストレージ管理アルゴリズムを実行しうるストレージマネージャプログラム1620を更に含んでもよい。これに加えて、ストレージマネージャプログラム1620は、図9〜図12に関して上述したものなどの、本明細書において記述されている重複排除アルゴリズムのうちの1以上を提供しうる重複排除プログラム1002を含んでいてもよく、或いは、これらにアクセスできてもよい。コンピュータ可読媒体1614に記憶されている更なる機能的コンポーネントは、サービス演算装置112の様々な機能を制御及び管理するためのオペレーティングシステム1608を含んでもよい。一例として、これらの機能的コンポーネントは、コンピュータ可読媒体1614のストレージ部分内に記憶されてもよく、コンピュータ可読媒体1614のローカルメモリ部分に読み込まれてもよく、また、1以上のプロセッサ1612によって実行されてもよい。
これに加えて、コンピュータ可読媒体1614は、本明細書において記述されている機能及びサービスを実行するために使用されるデータ及びデータ構造を記憶するようにしてもよい。例えば、コンピュータ可読媒体1614は、システム102によって記憶されているオブジェクトチャンク118に関するメタデータを維持するために、メタデータデータ構造116を記憶してもよい。また、コンピュータ可読媒体1614は、重複排除プログラム1002によって使用されうるフィンガプリントデータ構造1004を記憶してもよい。これに加えて、コンピュータ可読媒体1614は、オブジェクトチャンク118を記憶してもよい。また、サービス演算装置112は、プログラムやドライバなどを含みうるその他の機能的コンポーネント及びデータと、機能的コンポーネントによって使用又は生成されるデータと、を含んでいてもよく、または、これらを維持してもよい。更に、サービス演算装置112は、多くのその他の論理的な、プログラム的な、及び、物理的な、コンポーネントを含んでいてもよく、これらのうちの記述されているのは、本明細書における説明に関係するその例であるに過ぎない。
通信インターフェイス1616(複数も可)は、上述のネットワーク120(複数も可)及び124上などにおいて、様々なその他の装置との間の通信を可能にするための、1以上のインターフェイス及びハードウェアコンポーネントを含んでもよい。例えば、通信インターフェイス1616(複数も可)は、本明細書の別の場所において更に列挙されているように、LAN、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク(例えば、Wi−Fi)及び有線ネットワーク(例えば、ファイバーチャネル、光ファイバ、Ethernet)、直接接続のみならず、BLUETOOTH(登録商標)などの近距離通信、並びに、これらに類似したものの1以上を通じて、通信を可能にしてもよい。更には、上述の演算システム102の例は、本明細書の例において記述されている機能を実行しうるオブジェクトストレージシステムとして使用するのに適した演算システム102の一例であるに過ぎない。
図17は、いくつかの実装形態に係る、演算システム102の構成の他の例を示している。システム102は、1以上のネットワーク1704などを介して、ストレージシステム1702と通信しうる、または、その他の方法でこれに結合された、少なくとも1つのサービス演算装置112を含む。典型的には、1以上のネットワーク1704は、これに限定されないが、LAN、ファイバーチャネルネットワークなどのストレージエリアネットワーク(SAN:storage area network)、又はこれらに類似したものを含んでもよい、また、本明細書において記述されているその他のタイプのネットワーク、直接接続、又はこれらに類似したものを含んでもよい。
いくつかの例においては、少なくとも1つのサービス演算装置112は、任意の数の方式によって実施されうる1以上のサーバー又はその他のタイプの演算装置を含んでもよい。例えば、サーバーのケースにおいては、プログラム、その他の機能的コンポーネント、及びデータストレージの少なくとも一部分は、複数のサーバー、サーバーファーム、データセンタ、クラウドによってホスティングされた演算サービスなどの内部のように、少なくとも1つのサーバー上において実装してもよいが、これに加えて、又はこの代わりに、その他のコンピュータアーキテクチャを使用してもよい。図示の例においては、サービス演算装置112は、1以上のプロセッサ1710、1つ又は複数のコンピュータ可読媒体1712、及び1以上の通信インターフェイス1714を含むか、或いは、これらと関連付けられていてもよい。
それぞれのプロセッサ1710は、単一の処理ユニット又はいくつかの処理ユニットであってもよく、また、単一の又は複数の演算ユニット、または、複数の処理コアを含んでもよい。プロセッサ1710(複数も可)は、1以上の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、グラフィクスプロセッサ、及び/又は動作命令に基づいて信号を操作する任意の装置として実装してもよい。一例として、プロセッサ1710(複数も可)は、本明細書において記述されているアルゴリズム及びプロセスを実行するように具体的にプログラミング又は構成された任意の適切なタイプの1以上のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ1710(複数も可)は、本明細書において記述されている機能を実行するようにプロセッサ1710(複数も可)をプログラムするために実行されうる、コンピュータ可読媒体1712に記憶されたコンピュータ可読命令をフェッチ及び実行するように構成されてもよい。
コンピュータ可読媒体1712は、コンピュータ可読命令、データ構造、プログラムモジュール、又はその他のデータなどの、情報の記憶のための任意のタイプの技術において実装された揮発性及び不揮発性メモリ及び/又は着脱自在及び非着脱自在の媒体を含んでもよい。例えば、コンピュータ可読媒体1712は、これに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又はその他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、クラウドストレージ、或いは、望ましい情報を記憶するために使用され、且つ、演算装置によってアクセス可能である、任意のその他の媒体を含んでもよい。サービス演算装置112の構成に応じて、コンピュータ可読媒体1712は、言及された際に、非一時的なコンピュータ可読媒体が、エネルギー、搬送波信号、電磁波、及び/又は信号自体などの媒体を排除する、程度に、有体の非一時的な媒体であってよい。いくつかのケースにおいては、コンピュータ可読媒体1712は、サービス演算装置112と同一の場所に位置してもよい。一方、その他の例においては、コンピュータ可読媒体1712は、サービス演算装置112から部分的に離れていてもよい。例えば、いくつかのケースにおいては、コンピュータ可読媒体1712は、ストレージシステム1702内のストレージの一部分を含んでもよい。
コンピュータ可読媒体1712は、プロセッサ1710(複数も可)によって実行可能な任意の数の機能的コンポーネントを記憶するために、使用してもよい。多くの実装形態においては、これらの機能的コンポーネントは、プロセッサ1710(複数も可)によって実行可能であり、実行された際に、本明細書においてサービス演算装置112に帰されているアクションを実行するようにプロセッサ1710(複数も可)を具体的にプログラムする、命令又はプログラムを含む。コンピュータ可読媒体1712内において保存されている機能的コンポーネントは、サーバープログラム1716、ストレージマネージャプログラム1718、及び重複排除プログラム1002を含んでいてもよく、このそれぞれは、1以上のコンピュータプログラム、アプリケーション、又はこれらの一部分、実行可能コード、或いは、その他の実行可能命令を含んでもよい。例えば、サーバープログラム1716は、クライアント装置及びストレージシステム1702との間の通信機能を提供してもよい。ストレージマネージャプログラム1718は、ストレージシステム1702に記憶されているオブジェクトチャンク118を含むオブジェクトデータに対応するオブジェクトメタデータ又はこれに類似したものを含むメタデータデータ構造116を生成し及び管理するためのデータベース管理機能を含んでもよい。ストレージマネージャプログラム1718は、オブジェクトをチャンクに分割する、チャンクをイレイジャーコーディングする、チャンクを分散させる、及び、ストレージシステム1702を重複排除するために重複排除プログラム1002を使用する、機能を更に実行してもよい。コンピュータ可読媒体1712内に記憶されている更なる機能的コンポーネントは、サービス演算装置112の様々な機能を制御し、及び管理するためのオペレーティングシステム1720を含んでもよい。いくつかのケースにおいては、機能的コンポーネントは、コンピュータ可読媒体1712のストレージ部分内に記憶されてもよく、コンピュータ可読媒体1712のローカルメモリ部分に読み込まれてもよく、また、1以上のプロセッサ1710によって実行されてもよい。
これに加えて、コンピュータ可読媒体1712は、本明細書において記述されている機能及びサービスを実行するために使用されるデータ及びデータ構造を記憶してもよい。例えば、コンピュータ可読媒体1712は、メタデータデータ構造116及びフィンガプリントデータ構造1004を記憶してもよい。また、サービス演算装置112は、プログラムやドライバなどを含みうるその他の機能的コンポーネント及びデータと、機能的コンポーネントによって使用又は生成されるデータと、を含んでいてもよく、或いは、これらを維持してもよい。更に、サービス演算装置112は、多くの他の論理的な、プログラム的な、及び、物理的な、コンポーネントを含んでいてもよく、これらのうちの上述されているものは、本明細書における説明に関係している例であるに過ぎない。
通信インターフェイス1714(複数も可)は、ネットワーク120、124、及び1704上などの、様々なその他の装置との間の通信を可能にするための、1以上のインターフェイス及びハードウェアコンポーネントを含んでもよい。従って、通信インターフェイス1714は、ストレージシステム1702と通信するための接続を提供する1以上のポートと、クライアント装置108と通信するためのネットワーク120(複数も可)に対する接続を提供する1以上のポートと、を含んでいてもよく、或いは、これを結合してもよい。例えば、通信インターフェイス1714(複数も可)は、本明細書の別の場所において更に列挙されているように、LAN、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク(例えば、Wi−Fi)及び有線ネットワーク(例えば、ファイバーチャネル、光ファイバ、Ethernet)、直接接続のみならず、BLUETOOTH(登録商標)などの近距離通信、並びに、これらに類似したもののうちの1以上を通じた通信を可能にしてもよい。
ストレージシステム1702は、1以上のストレージ演算装置1730を含んでいてもよく、これらは、サービス演算装置112に関して上述した例のいずれかなどの、1以上のサーバー又は任意のその他の適切な演算装置を含んでもよい。ストレージ演算装置1730(複数も可)は、それぞれ、1以上のプロセッサ1732、1以上のコンピュータ可読媒体1734、及び1以上の通信インターフェイス1736を含んでもよい。例えば、プロセッサ1732は、プロセッサ1710に関して上述した例のいずれかに対応していてもよく、コンピュータ可読媒体1734は、コンピュータ可読媒体1712に関して上述した例のいずれかに対応していてもよく、また、通信インターフェイス1736は、通信インターフェイス1714に関して上述した例のいずれかに対応していてもよい。
これに加えて、コンピュータ可読媒体1734は、ストレージシステム1702内に含まれているストレージ1740上におけるデータの記憶を管理するための1以上のプロセッサ1732によって実行される機能的コンポーネントとして、ストレージプログラム1738を含んでもよい。ストレージ1740は、ストレージ装置114の1以上のアレイ1744上においてデータを記憶するために、ストレージ1740と関連する1以上のコントローラ1742を含んでもよい。例えば、コントローラ1742は、RAID構成又は任意のその他の適切なストレージ構成においてアレイ1744を構成するため、及び/又は、ストレージ装置114に基づいた論理ユニットをストレージプログラム1738に対して提示するため、及び、基礎をなす物理的ストレージ装置114上に記憶されているデータオブジェクト118などのデータを管理するために、アレイ1744を制御してもよい。ストレージ装置114は、ハードディスクドライブ、ソリッドステートドライブ、光ドライブ、磁気テープ、これらの組合せなどのような、任意のタイプのストレージ装置であってよい。これに加えて、いくつかのシステム例について記述されているが、本明細書における開示の利益を有する当業者には、本明細書における分散型のオブジェクトストレージ、イレイジャーコーディング、及び重複排除技法を実装しうる多数のその他のシステムが明らかとなるであろう。
本明細書において記述されている様々な命令、プロセス、及び技法は、本明細書において、コンピュータ可読媒体上において保存される、且つ、プロセッサ(複数も可)によって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的なコンテキストにおいて検討してもよい。一般に、プログラムモジュールは、特定のタスクを実行するための、又は特定の抽象的データタイプを実装するための、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含む。これらのプログラムモジュール等は、仮想マシーン又はその他のジャストインタイムコンパイル実行環境などにおいて、ネイティブコードとして実行されてもよく、或いは、ダウンロードされて実行されてもよい。典型的には、プログラムモジュールの機能は、様々な実装形態において、適宜、組み合わせられてもよく、或いは、分散されてもよい。これらのモジュール及び技法の実装形態は、コンピュータストレージ媒体上に記憶されてもよく、或いは、なんらかの通信媒体の形態に跨って送信されてもよい。
主題は、構造的特徴及び/又は方法的行為に固有の言語において記述されているが、添付の請求項において定義されている主題は、必ずしも、記述されている特定の特徴又は行為に限定されるものではないことを理解されたい。むしろ、特定の特徴及び行為は、請求項を実装する例示用の形態として開示されている。

Claims (15)

  1. 1以上のプロセッサと、
    実行可能命令を非一時的に維持する1以上のコンピュータ可読媒体と、を備え、
    前記実行可能命令は、前記1以上のプロセッサによって実行された際に、前記1以上のプロセッサを動作させるように構成する、システムであって、
    データオブジェクトを前記システムにおいて受け取り、前記データオブジェクトは、オブジェクトデータを含み、前記システムは、3つ以上のシステムのうちの第1システムであり、それぞれのシステムは、異なる個々の地理的場所において配置されており、
    前記データオブジェクトの前記オブジェクトデータのコンテンツを表す値を決定し
    記オブジェクトデータを複数のデータチャンクに分割し、また、前記複数のデータチャンクのパリティチャンクを決定することにより、前記3つ以上のシステムの合計数と同数の複数のチャンクを決定し、
    前記3つ以上のシステムのそれぞれに対応する個々のロール値を判定し、
    前記個々のロール値と、前記オブジェクトデータの前記コンテンツを表す前記値と、に基づいて、前記チャンクの個々のチャンクを前記3つ以上のシステムの個々のシステムに送信する、
    システム。
  2. 前記個々のロール値と、前記オブジェクトデータの前記コンテンツを表す前記値と、に基づいて前記チャンクの個々のチャンクを前記3つ以上のシステムの個々のシステムに送信する前記動作は、
    ハッシュ化アルゴリズムを使用することにより、前記コンテンツを表す前記値として、前記オブジェクトデータからハッシュ値を決定し、
    前記ハッシュ値及び前記個々のロール値の関数に基づいて、前記個々のチャンクを受け取るべき前記3つ以上のシステムの個々のシステムを決定することを含む、請求項1に記載のシステム。
  3. 前記ハッシュ値及び前記個々のロール値の前記関数に基づいて前記個々のチャンクを受け取るべき前記3つ以上のシステムの個々のシステムを決定する前記動作は、
    前記ハッシュ値に対するモジュロ演算の結果を判定し、前記モジュロ演算は、前記システムの前記合計数に基づいており、
    前記モジュロ演算の前記結果及び前記個々のロール値に基づいて、前記個々のチャンクを受け取るべき前記3つ以上のシステムの個々のシステムを決定し、
    前記モジュロ演算の前記結果を前記ロール値のうちの1つにマッチングし、ロール値の昇順又は降順に基づいて順番に前記チャンクを分散させることにより、前記3つ以上のシステムの個々のものに前記個々のチャンクを送信することを更に含む、請求項2に記載のシステム。
  4. 前記ハッシュ値及び前記個々のロール値の前記関数に基づいて前記個々のチャンクを受け取るべき前記個々のシステムを決定する前記動作は、
    前記ハッシュ値に対するモジュロ演算の結果を判定し、前記モジュロ演算は、前記3つ以上のシステムの前記合計数に基づいており、
    前記モジュロ演算の前記結果及び前記個々のロール値に基づいて、前記個々のチャンクを受け取るべき前記3つ以上のシステムの個々のシステムを決定し、
    前記モジュロ演算の前記結果を前記ロール値の1つにマッチングし、ロール値の昇順又は降順に基づいて順番に前記チャンクを分散させることにより、ラウンドロビン分散を使用して前記個々のチャンクを前記3つ以上のシステムの個々のシステムに送信し、前記順番は、前記オブジェクトデータの前記コンテンツ内のデータの順序に基づいている、
    ことを更に含む、請求項2に記載のシステム。
  5. 前記動作は、
    前記複数のチャンクのうちの1つのチャンクが、前記3つ以上のシステムのそれぞれのシステムにおいて維持されるように、前記システムに割り当てられた前記ロール値に基づいて、前記システムによって前記チャンクの1つを保持すること
    を更に含む、請求項1に記載のシステム。
  6. 前記データオブジェクトと共にオブジェクトメタデータを受け取り、
    チャンクを受け取るそれぞれのシステムに、コンテンツを表す前記値を含む前記オブジェクトメタデータの少なくとも一部分を送信する請求項1に記載のシステム。
  7. 前記動作は、
    前記システムによって保持されているチャンクが前記システムによって既に記憶されているチャンクの複製であると決定するために、前記システムによって保持されている前記チャンクのデータを前記システムによって既に記憶されているチャンクのデータと比較することにより、前記システムにおいて重複排除を実行することを更に含む、請求項1に記載のシステム。
  8. 前記動作は、
    前記システムによって保持されている前記チャンクのメタデータをメタデータデータ構造に追加し、
    前記チャンクの前記メタデータを前記システムによって既に記憶されている前記チャンクの前記データに対するポインタと関連付け、
    前記システムによって保持されている前記チャンクの前記データを削除する必要があること
    を示すことを更に含む、請求項7に記載のシステム。
  9. 前記異なる個々の地理的場所において配置されている前記3つ以上のシステムのうちのそれぞれのその他のシステムは、そのシステムによって受け取られた前記チャンクが、そのシステムによって既に受け取られているチャンクのデータの複製であるデータを有するかどうかを決定するように構成されている、請求項7に記載のシステム。
  10. 前記システムによって保持されている前記チャンクの前記データを前記システムによって既に保存されている前記チャンクの前記データと比較する前記動作は、
    前記システムによって保持されている前記チャンクの前記データを表すフィンガプリントを決定し、
    前記フィンガプリントを前記システムによって既に記憶されている複数の個々のチャンクについて予め生成されているフィンガプリントデータ構造内の複数のフィンガプリントと比較し、
    前記フィンガプリントと前記フィンガプリントデータ構造内の前記フィンガプリントのうちの1つとの間のマッチに基づいて、前記システムによって保持されている前記チャンクの前記データと前記フィンガプリントデータ構造内の前記マッチングしたフィンガプリントに対応する前記システムによって既に記憶されている前記チャンクの前記データとのバイトごとの比較を実行することを含む
    請求項7に記載のシステム。
  11. 前記システムは、閾値時間にわたって前記オブジェクトデータの完全なバージョンを保持するように構成されており、
    前記動作は、
    前記オブジェクトデータが前記システムによって既に記憶されているデータの複製であると決定し、
    前記データオブジェクトについて、前記システムによって既に記憶されている前記データに対するポインタを生成し、
    前記オブジェクトデータを削除する必要があることを示し、
    前記閾値時間が満了したことを決定し、
    前記システムによって既に記憶されている前記データを、前記オブジェクトデータを複数のデータチャンクに分割し、また、前記複数のデータチャンクのパリティチャンクを決定することにより、前記3つ以上のシステムの合計数と同数の複数のチャンクを決定するための前記オブジェクトデータとして使用することを
    を更に含む、請求項1に記載のシステム。
  12. 前記動作は、
    クライアント装置から、前記データオブジェクトに対する要求を受け取り、
    前記その他のシステムからM−2個のチャンクを受け取り、ここで、Mは、前記システムの前記合計数であり、
    前記システムで保持されているチャンク及び前記M−2個の他のチャンクから前記オブジェクトデータを再構築し、
    前記再構築されたオブジェクトデータを前記クライアント装置に送信する
    ことを更に含む、請求項1に記載のシステム。
  13. 前記M−2個のチャンク又は前記システムにおいて保持されている前記チャンクのうちの1つは、前記パリティチャンクであり、前記動作は、
    前記パリティチャンクと、前記M−2個のチャンク及び前記システムにおいて保持されている前記チャンクの内の他のものと、を使用することにより、消失データチャンクのデータを決定し、
    前記パリティチャンクと、前記M−2個のチャンク及び前記システムにおいて保持されている前記チャンクの内の他のものと、を使用して決定された前記消失データチャンクの前記データを使用することにより、前記オブジェクトデータを再構築する
    ことを更に含む、請求項12に記載のシステム。
  14. 方法であって、
    システムで、前記システムの1以上のプロセッサにより、オブジェクトデータを含むデータオブジェクトを受け取り、ここで、前記システムは、3つ以上のシステムのうちの第1システムであり、それぞれのシステムは、異なる個々の地理的場所において配置されており、
    前記1以上のプロセッサにより、前記データオブジェクトの前記オブジェクトデータのコンテンツを表す値を決定し、
    前記1以上のプロセッサにより、前記オブジェクトデータを複数のデータチャンクに分割し、前記複数のデータチャンクについてパリティチャンクを決定することにより、前記3つ以上のシステムの合計数と同数の複数のチャンクを決定し、
    前記1以上のプロセッサにより、前記3つ以上のシステムのそれぞれに対応する個々のロール値を決定し、
    前記1以上のプロセッサにより、前記個々のロール値及び前記オブジェクトデータの前記コンテンツを表す前記値に基づいて前記チャンクのそれぞれのチャンクを前記3つ以上のシステムのそれぞれのシステムに送信する
    方法。
  15. 命令を非一時的に保存する1以上のコンピュータ可読媒体であって、
    前記命令は、1以上のプロセッサによって実行された際に、
    データオブジェクトをシステムにおいて受け取ること、ここで、前記データオブジェクトは、オブジェクトデータを含み、前記システムは、3つ以上のシステムのうちの第1システムであり、それぞれのシステムは、異なる個々の地理的場所において配置されており、
    前記データオブジェクトの前記オブジェクトデータのコンテンツを表す値を決定すること
    記オブジェクトデータを複数のデータチャンクに分割し、前記複数のデータチャンクについてパリティチャンクを決定することにより、前記3つ以上のシステムの合計数と同数の複数のチャンクを決定すること、
    前記3つ以上のシステムのそれぞれに対応する個々のロール値を決定すること、
    前記個々のロール値及び前記オブジェクトデータの前記コンテンツを表す前記値に基づいて前記チャンクの個々のチャンクを前記3つ以上のシステムの個々のシステムに送信することと、
    を行うように、システムの前記1以上のプロセッサをプログラムする、媒体。
JP2019559280A 2017-06-08 2017-06-08 分散されたイレイジャーコーディングされたオブジェクトの重複排除 Active JP6934068B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/036476 WO2018226228A1 (en) 2017-06-08 2017-06-08 Deduplicating distributed erasure coded objects

Publications (2)

Publication Number Publication Date
JP2020520496A JP2020520496A (ja) 2020-07-09
JP6934068B2 true JP6934068B2 (ja) 2021-09-08

Family

ID=64567278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019559280A Active JP6934068B2 (ja) 2017-06-08 2017-06-08 分散されたイレイジャーコーディングされたオブジェクトの重複排除

Country Status (5)

Country Link
US (1) US11416447B2 (ja)
EP (1) EP3635529B1 (ja)
JP (1) JP6934068B2 (ja)
CN (1) CN110603517B (ja)
WO (1) WO2018226228A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10998919B2 (en) * 2019-10-02 2021-05-04 Microsoft Technology Licensing, Llc Coded stream processing
US11663234B2 (en) * 2021-04-23 2023-05-30 Hewlett Packard Enterprise Development Lp Storage of a small object representation in a deduplication system
TWI764856B (zh) * 2021-12-13 2022-05-11 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US5522031A (en) * 1993-06-29 1996-05-28 Digital Equipment Corporation Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6983295B1 (en) * 2002-10-24 2006-01-03 Unisys Corporation System and method for database recovery using a mirrored snapshot of an online database
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
WO2008064356A1 (en) * 2006-11-22 2008-05-29 Metis Enterprise Technologies Llc Real-time multicast peer-to-peer video streaming platform
US8019938B2 (en) 2006-12-06 2011-09-13 Fusion-I0, Inc. Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
JP2011510405A (ja) * 2008-01-16 2011-03-31 セパトン,インコーポレイテッド 拡張可能な重複排除機構
US8255365B2 (en) * 2009-06-08 2012-08-28 Symantec Corporation Source classification for performing deduplication in a backup operation
US8321648B2 (en) * 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
CN102402394B (zh) * 2010-09-13 2014-10-22 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
US9785498B2 (en) * 2011-04-29 2017-10-10 Tata Consultancy Services Limited Archival storage and retrieval system
CN102843403A (zh) * 2011-06-23 2012-12-26 盛大计算机(上海)有限公司 基于分布式文件系统的文件处理方法、系统及客户端
US9672218B2 (en) * 2012-02-02 2017-06-06 Hewlett Packard Enterprise Development Lp Systems and methods for data chunk deduplication
US9304714B2 (en) * 2012-04-20 2016-04-05 Violin Memory Inc LUN management with distributed RAID controllers
US8972478B1 (en) 2012-05-23 2015-03-03 Netapp, Inc. Using append only log format in data storage cluster with distributed zones for determining parity of reliability groups
CN104641365B (zh) * 2012-09-19 2019-05-31 日立数据管理有限公司 在文件存储系统中使用检查点管理去复制的系统和方法
ES2700431T3 (es) 2012-12-12 2019-02-15 Huawei Tech Co Ltd Método y dispositivo de procesamiento de datos en un sistema de clúster
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统
US10671635B2 (en) * 2013-02-27 2020-06-02 Hitachi Vantara Llc Decoupled content and metadata in a distributed object storage ecosystem
US9332071B2 (en) * 2013-05-06 2016-05-03 Microsoft Technology Licensing, Llc Data stage-in for network nodes
US9405783B2 (en) * 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9336260B2 (en) * 2013-10-16 2016-05-10 Netapp, Inc. Technique for global deduplication across datacenters with minimal coordination
KR20150061258A (ko) * 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US9600201B2 (en) 2014-03-27 2017-03-21 Hitachi, Ltd. Storage system and method for deduplicating data
US9503127B2 (en) * 2014-07-09 2016-11-22 Quantum Corporation Data deduplication with adaptive erasure code redundancy
US9645897B2 (en) * 2015-03-11 2017-05-09 International Business Machines Corporation Using duplicated data to enhance data security in RAID environments
US9940234B2 (en) * 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
WO2017113276A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统

Also Published As

Publication number Publication date
US11416447B2 (en) 2022-08-16
CN110603517B (zh) 2023-07-25
EP3635529A1 (en) 2020-04-15
WO2018226228A1 (en) 2018-12-13
CN110603517A (zh) 2019-12-20
EP3635529B1 (en) 2024-02-14
EP3635529A4 (en) 2021-04-21
JP2020520496A (ja) 2020-07-09
US20200097445A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
JP6913233B2 (ja) 地理的に分散したオブジェクトデータの高速呼び戻し
US10990479B2 (en) Efficient packing of compressed data in storage system implementing data striping
US11288286B2 (en) Storage system with data consistency checking in synchronous replication using active snapshot set
US10891195B2 (en) Storage system with differential scanning of non-ancestor snapshot pairs in asynchronous replication
US10983860B2 (en) Automatic prefill of a storage system with conditioning of raid stripes
US11093159B2 (en) Storage system with storage volume pre-copy functionality for increased efficiency in asynchronous replication
US10635533B2 (en) Efficient computation of parity data in storage system implementing data striping
US9405776B2 (en) Remote backup and restore
US10929050B2 (en) Storage system with deduplication-aware replication implemented using a standard storage command protocol
US11099766B2 (en) Storage system configured to support one-to-many replication
CN103810061B (zh) 一种高可用云存储方法
US20200409584A1 (en) Load balancing for scalable storage system
JP6934068B2 (ja) 分散されたイレイジャーコーディングされたオブジェクトの重複排除
US11137929B2 (en) Storage system configured to support cascade replication
US20200226107A1 (en) Reinforcement learning for optimizing data deduplication
US10394484B2 (en) Storage system
JP7398567B2 (ja) 動的適応型パーティション分割
Wei et al. DSC: Dynamic stripe construction for asynchronous encoding in clustered file system
US11144229B2 (en) Bandwidth efficient hash-based migration of storage volumes between storage systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191030

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210209

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: 20210803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210820

R150 Certificate of patent or registration of utility model

Ref document number: 6934068

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350