JP2015519674A - ストレージクラスタにおける消失符号付加および複製 - Google Patents

ストレージクラスタにおける消失符号付加および複製 Download PDF

Info

Publication number
JP2015519674A
JP2015519674A JP2015517293A JP2015517293A JP2015519674A JP 2015519674 A JP2015519674 A JP 2015519674A JP 2015517293 A JP2015517293 A JP 2015517293A JP 2015517293 A JP2015517293 A JP 2015517293A JP 2015519674 A JP2015519674 A JP 2015519674A
Authority
JP
Japan
Prior art keywords
cluster
segment
storage cluster
digital object
storage
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
JP2015517293A
Other languages
English (en)
Other versions
JP6280108B2 (ja
JP2015519674A5 (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.)
Caringo Inc
Original Assignee
Caringo Inc
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 Caringo Inc filed Critical Caringo Inc
Publication of JP2015519674A publication Critical patent/JP2015519674A/ja
Publication of JP2015519674A5 publication Critical patent/JP2015519674A5/ja
Application granted granted Critical
Publication of JP6280108B2 publication Critical patent/JP6280108B2/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
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • 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]
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/251Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with block coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

クラスタが複製または消失符号付加を用いてオブジェクトを格納するという要求を受け取る。クラスタは、消失符号付加を用いてオブジェクトを書き込みむ。各々のセグメントに対して、消失符号付加を示すものと一意識別子とを含んでいるマニフェストが書き込まれる。クラスタは、マニフェストの一意識別子を返す。クラスタは、一意識別子を含んでいるクライアントから要求を受け取る。クラスタは、オブジェクトが複製用いて格納されたか消失符号付加を用いて格納されたかを判断する。消失符号付加を用いる場合、本方法はマニフェストを読み出す。本方法は、マニフェストの一意的なセグメント識別子を用いてクラスタ内で複数のセグメントを識別する。これらの一意的なセグメント識別子を用いて、本方法はオブジェクトを再構築する。もう1つのディスクの永続的なストレージ領域がスキャンされて、障害のあるディスクの一意識別子を発見する。消失符号付加を用いる場合、以前に障害のあるディスクに格納された喪失セグメントが識別される。本方法は、他のセグメントを配置する。喪失セグメントが再生される。【選択図】図3

Description

本発明は概して、消失符号付加(消失訂正符号化)に関する。さらに詳細には、本発明は、固定コンテンツのストレージクラスタにおける消失符号付加と複製との合わせ、および消失符号付加を用いた際のボリューム障害の回復に関する。
通常、ストレージクラスタ内に備えられているストレージ(独立ノードの冗長アレイ、すなわちRAINを用いるものなど)は、格納オブジェクトの複製または格納オブジェクトの消失符号付加のいずれかによってハードウェア障害に対して信頼性が構築されている。前者には、(例えばジャーナルおよびRAMベースのインデックススキームを使用して)同じ一意識別子が複数のレプリカにアクセスできるという利点があるが、帯域幅が大きくストレージのオーバヘッドがあるという欠点がある(希望するレプリカ数によって異なり、大きいオブジェクトであれば大量のスペースを取ることがある)。後者には、媒体を障害から保護する同様のレベルに対してストレージフットプリントが小さくオーバヘッドが少ないという利点があるが、消失(訂正消失)セットの各セグメントは異なるコンテンツであり、そのコンテンツを別々に識別してオブジェクトを読み出すか、失われた任意のセグメントを再構築しなければならないという欠点がある。ストレージクラスタが再開された場合、この識別は特に問題になることがある。消失符号付加では、さらに高い処理オーバヘッドも発生し、小さいオブジェクトを格納する際にそのフットプリントの利点を失ってしまう。
そのため、どちらの技術にも欠点がある。さらに、消失符号付加に適用可能ないくつかの先行技術による手法では、ストレージクラスタとは別の制御データベースを使用して特定オブジェクトのセグメントを識別し、追跡する。この手法には問題がある。なぜなら、さらに多くのオーバヘッドが生じ、この制御データベースの利用可能性の問題および複製の必要があるかどうかという問題が発生するからである。また、消失符号付加でオブジェクトを再構築できるとしても、そのオブジェクトを符号化するのに使用されるセグメントのサブセットを用いるなら(例えばディスクに障害があった場合)、どのセグメントがもう存在していないかを識別するだけでなく、残りのセグメントを配置するのにも時間がかかるおそれがある。
したがって、複製および消失符号付加の利点を有利にするとともに、ハードウェアに障害が発生した後の曝露を制限するためにストレージクラスタを用いる改良技術が望まれている。
上記のことを達成するため、本発明の目的に従って、オブジェクトの複製と消失符号付加とを両方合わせて各々の利点を利用するストレージクラスタを開示する。
1つの実施形態では、ある方法でデジタルオブジェクトをストレージクラスタに格納する。まず、ストレージクラスタは、ストレージクラスタのコンピュータノードで、デジタルオブジェクトを格納する要求をクライアントアプリケーションから受け取る。するとストレージクラスタは、デジタルオブジェクトをストレージクラスタに複製を用いて格納するか消失符号付加を用いて格納するかを判断する。この判断は、クライアントからの命令、オブジェクトの固有の特性、オブジェクトのメタデータ、クラスタの設定を参照して行われてもよいし、他の手段によって行われてもよい。消失符号付加を用いてデジタルオブジェクトを格納すると判断された場合、ストレージクラスタは、消失符号付加を用いてストレージクラスタのいくつかのコンピュータノードにデジタルオブジェクトを書き込み、デジタルオブジェクトは、複数のセグメントとして格納される。さらに、各々のセグメントに対して消失符号付加を示すものと一意識別子とをストレージクラスタ内に含んでいるマニフェストコンピュータファイルが作成される。次にストレージクラスタは、クラスタの1つ以上のノードにマニフェストコンピュータファイルを格納し、マニフェストコンピュータファイルの一意識別子をクライアントアプリケーションに返す。マニフェストは、他のデジタルオブジェクトとは区別できるものである。
もう1つの実施形態では、ある方法で複数のコンピュータノードを有するストレージクラスタからデジタルオブジェクトを読み出す。まず、ストレージクラスタ内のコンピュータノードの1つが、デジタルオブジェクトに対する一意識別子を含んでいるクライアントアプリケーションから要求を受け取る。ストレージクラスタは、そのように識別されたオブジェクトを、そのオブジェクトが格納されている1つのノードで発見する。オブジェクトが前述したようなマニフェストでなければ、オブジェクトはクライアントアプリケーションに返される。オブジェクトがマニフェストであれば、次に、マニフェスト内で発見された一意的なセグメント識別子を用いて、ストレージクラスタ内の複数のセグメントを識別する。これらの一意的なセグメント識別子を用いて、本方法では、セグメントおよび消失符号付加アルゴリズムを用いてデジタルオブジェクトを再構築する。最後に、本方法は、デジタルオブジェクトをクライアントアプリケーションに返す。
もう1つの実施形態では、クライアントアプリケーションが、一意識別子に関連付けられているコンテンツを新バージョンのコンテンツに入れ替えることを希望している場合、本発明は、前段落に記載したように動作してオブジェクトを発見し、その後、前段落に記載したようにそのオブジェクトを書き込む。新バージョンは、前バージョンの一意識別子を保持するが、後の作成タイムスタンプを有し、これが更新プロセス中に2つのバージョンを区別する。旧バージョンは、新しい方のバージョンがクラスタにうまく書き込まれた時点で消去される。ヘルス処理モジュールは、エラー状態からクラスタデータを維持する手段として、新しい方のバージョンを存在させるためにオブジェクトの古い方のバージョンを消去してもよい。
もう1つの実施形態では、ある方法で、障害のあるディスクを回復する。まず、本方法は、(複数のコンピュータノードを有する)ストレージクラスタ内でノードのうちの1つに障害が発生したことを検知する。次に、本方法は、ストレージクラスタの別のディスクの永続的なストレージ領域をスキャンして、障害のあるディスクの一意識別子を発見する。この一意識別子は、ストレージクラスタのデジタルストリームに関連付けられている。その後、デジタルストリームをストレージクラスタ内に複製を用いて格納するか消失符号付加を用いて格納するかが判断される。消失符号付加を用いてデジタルストリームを格納すると判断された場合、本方法は、以前に障害のあるディスクに格納された喪失セグメントを識別する。デジタルストリームからシブリング識別子を用いて、本方法は、複数の他のセグメントをストレージクラスタ内に配置する。次に、本方法は、いくつかの他のセグメントおよび消失符号付加アルゴリズムを用いて喪失セグメントを再生する。最後に、本方法は、再生されたセグメントをストレージクラスタのコンピュータノードに格納する。
もう1つの実施形態では、余分な制御コンピュータまたは制御データベースを必要とせずにストレージクラスタ内にセグメントを再配置できる。セグメントが再配置されると、そのセグメントの上流シブリングセグメントにあるボリュームヒントは、シブリングセグメントのメタデータ内で更新される。また、ボリュームヒントは、ディスク上のジャーナルにあるシブリングセグメントのストリーム表現内で更新される。ストレージクラスタは、シブリングセグメントが位置しているディスクを発見するために、シブリングセグメントの一意識別子をブロードキャストできる。マニフェストを用いて、再配置されているセグメントの上流セグメントまたはシブリングセグメントを発見してもよい。
その他の実施形態では、オブジェクトとともに格納されているメタデータまたはクラスタの設定内に格納されているメタデータが、オブジェクトをいつ別の方式に変換すべきかを指定する。トリガー条件が満たされると、クラスタは、複製を用いてオブジェクトをストレージから消失符号付加方式に変換するか、1つの消失符号付加方式を別の消失符号付加方式に変換するか、消失符号付加方式を複製ストレージ方式に変換する。旧方式の元のオブジェクトは、希望すれば消去してもよい。有利には、元のオブジェクトに用いられた一意識別子は、新しいストレージ方式のオブジェクトに使用するために保持され、このようにして、オブジェクトを元々格納していたクライアントアプリケーションが、オブジェクトに備わっていた元の一意識別子を用いて今後いつでもそれを回収できるようにする。
もう1つの実施形態では、1つのストレージ方式(例えば複製、特定の消失符号付加など)を実装している1つのストレージクラスタから、必ずしも同じストレージ方式を実装する必要のない第2のストレージクラスタにオブジェクトを移すことができる。移されると、オブジェクトは、第2のクラスタが用いたストレージ方式に自動的に変換される。オブジェクトの変換は、第2のストレージクラスタの初期設定によって、オブジェクトの(クラスタの設定を有効にする)ユーザメタデータによって、またはその動きを開始するプログラムからの命令によって、指定されてよい。
一般に、本発明のどの実施形態にも余分な制御データベースは必要ではない。本来、クラスタ内に格納されているデジタルオブジェクトは、その一意識別子を用いて書き込み,読み出しおよび管理ができ、オブジェクトが複製を用いて格納されたのか消失符号付加を用いて格納されたのかどうかは関係ない。
本発明およびその他の利点は、添付の図面とともに以下に記載した説明文を参照することによって最もよく理解できる。
本発明の動作環境を示す図である。 オブジェクトに対して5:7消失符号付加を用いた消失セットの一例を示す図である。 本発明の実施形態で使用できるマニフェストの一例を示す図である。 クライアントアプリケーションがどのようにファイルをストレージクラスタに書き込むかを示すフローチャートである。 クライアントアプリケーションがどのようにファイルをストレージクラスタに書き込むかを示すフローチャートである。 クライアントアプリケーションがどのようにストレージクラスタからデジタルオブジェクトを読み出すのかを示すフローチャートである。 ストレージクラスタがボリューム障害をどのように回復できるのかを示すフローチャートである。 オブジェクトをどのように1つのフォーマットから別のフォーマットへ変換できるのかを示すフローチャートである。 ストレージクラスタ全体の管理をどのように実施できるのかを示すフローチャートである。 本発明の実施形態を実装するのに適したコンピュータシステムを示す図である。 本発明の実施形態を実装するのに適したコンピュータシステムを示す図である。
先行技術で公知のように、消失符号付加は、複製のオーバヘッドを伴わずにデータオブジェクトの冗長性を提供する技術である。特定のデータオブジェクトがあるとすると、消失符号付加でオブジェクトはK個のデータセグメントに分割され、それらのデータセグメントからP個のパリティセグメントが生成され、消失セット内に合計でM個のセグメントがある場合、通常これをK:M消失符号と表記する。例えば、データオブジェクトが5個のセグメントに分割され、このセグメントが2個のパリティセグメントを生成するように使用される場合、このデータオブジェクトには5:7消失符号を使用するという。消失符号の主要特性は、消失符号付加したオブジェクトのセグメントが元のデータセグメントであろうとパリティセグメントのうちの1つであろうと、元のオブジェクトを任意のK個のセグメントから再構成できるという点である。したがって、各セグメントをストレージクラスタ内の異なるボリューム(および異なるノード)に分配することが有利であり、このようにしてクラスタ内で任意の2つのボリュームが損失することからデータオブジェクトを保護する。クラスタに十分なノードがあるとすると、セグメントは異なるノードに分配され、ノードの損失から保護される。ノードどうしが地理的に異なる領域に位置していれば、セグメントは、その領域内で公平に分配されて、1つの地理的ロケールでクラスタの一部が損失されることから可能な限り保護する。
1つの実施形態では、本発明により、複製または消失符号付加のいずれかを用いてオブジェクトを格納できる。クラスタは、クライアントアプリケーション、オブジェクトのカテゴリ、オブジェクトのサイズ、オブジェクトのメタデータなどからの命令に応じて、オブジェクト単位で切り替わることができる。例えば、比較的大きいオブジェクトはすべて消失符号付加を用いて格納でき、比較的小さいオブジェクトはすべて複製を用いて格納できる。通常の複製は、K=1で、Mが所与のオブジェクトの合計レプリカ数に等しいという消失符号付加の特別なケースと見なしてよい。また、異なるオブジェクトには異なる消失符号付加を割り当ててよい。極めて大きいオブジェクトの場合、このような消失セットを複数用いてオブジェクトを表現してよい。通常の複製を含む様々な符号化を様々なオブジェクトに割り当てるようにすることによって、本発明は、様々な処理費用およびストレージフットプリントで、データ損失からの保護を様々なレベルで可能にする。
第2の実施形態では、本発明は、消失符号付加によってオブジェクトのセグメントを識別し、発見するという試みで問題に対処する。別々のデータベースを用いる代わりに、マニフェストファイル(またはオブジェクト)が、特定のオブジェクトに関連付けられた各セグメントの記述を含んでいる。マニフェスト内に含まれているものは、各セグメントのクラスタ内にある一意識別子、符号化アルゴリズムを用いる各セグメントのサイズ、およびオブジェクトに対する特定の消失符号付加(5:7など)である。そのためマニフェストは、クラスタ内で通常のオブジェクトとして処理され、一意識別子を提供され、必要に応じて複製される(例えば、同じ冗長度、P+1に複製される)。マニフェストの複製は単純である。なぜなら、クラスタは他のオブジェクトに対して既に複製を実施していて、マニフェストが比較的小サイズであるためにストレージのオーバヘッドがほとんどないからである。そのため、消失符号付加した特定のオブジェクトのセグメントには、マニフェストを介して迅速かつ容易にアクセス可能である。このマニフェストオブジェクトに対する識別子は、オブジェクトを今後回収するためにクライアントアプリケーションに返される。これによって、消失符号付加に効果的なフットプリントが提供されるとともに、単純な識別、高い利用可能性、および通常の複製の高速な開始が維持される。
第3の実施形態では、本発明は、ハードウェア障害が起きた後の時間を最短にしてから喪失セグメントをすべて再生することによって、ストレージクラスタ内におけるデータ損失の問題に対処する。消失符号付加したオブジェクトの各セグメントは、オブジェクトの次のセグメントを保有しているクラスタ内のボリューム識別子に関するヒントを含んでいる。このヒントは、正しいボリューム識別子である可能性があるが、保証されないことがある。ハードウェア障害(ディスク障害など)が起きた時点で、かつ特定のセグメントが喪失していることを知らされる前に、クラスタ内の各ボリュームはそのジャーナルをディスク上でスキャンして、障害が発生したボリュームに対するヒントとしてボリューム識別子を有するセグメントを発見する。そのため、クラスタの正常な整合性チェックが起きるのを待つ前に、何らかの喪失セグメントを識別してできる限り迅速に再生できる。
・ストレージクラスタの例
前述したように、本発明は、デジタルオブジェクト、すなわちデジタル形式で表現されたどのような種類の情報にも適用される。例えば、デジタルオブジェクトは、コンピュータファイル、一群のファイル、一群のファイル識別子、またはデータの集合もしくはデータベース情報など、電子表現の情報であってよい。他のこのようなデータの集合には、デジタル音声またはデジタル映像のストリームから得たフレームまたはクリップ、デジタル写真、スキャンした紙の文書、音声メッセージ、CAD/CAMデザイン、MRIまたはX線データ、メッセージレコードまたはファイルから得たストリーム、システムの点検やステータスログから得たログエントリ、電子メールのアーカイブ、チェック画像などがある。本明細書では、電子表現の情報を網羅するために、「コンピュータファイル」という用語をしばしば使用する。
本発明は、任意の適切なコンピュータハードウェアおよびソフトウェアを用いて実装でき、任意数のコンピュータノードを含むストレージクラスタに実装できるものである。好ましくは、各ノードは、1つのCPU(または複数のCPU)、オペレーティングシステム、他のノード(または、少なくとも1つの中央ルータ)への通信リンク、および任意数(すなわちゼロからN個まで)の内部ハードディスクドライブまたはソリッドステートドライブで、しばしばボリュームと呼ばれるものを含んでいる。通常、各ノードは、少なくとも1つのドライブを含み、ソリッドステートドライブとハードディスクドライブとのあらゆる組み合わせがあってよい。ストレージクラスタは通常、固定コンテンツのクラスタである。つまり、バックアップ、長期にわたるストレージ、アーカイブ保存などに使用されるものであり、通常はコンピュータファイルへ日常的にアクセスするのに使用されるものではない。しばしばWORM(write once,read many)ストレージと呼ばれるもので、つまり、一度コンピュータファイルまたはデジタルオブジェクトがクラスタに書き込まれると、変更できないということである。(もちろん、ファイルは消去で、コンピュータファイルの修正バージョンもクラスタ内に格納できる)。クラスタは、独立ノード冗長アレイ(RAIN)として、つまり各ノードがそれ自体のオペレーティングシステムで動作し、クラスタ内のストレージに関して独自の決定を下すものとして実装できる。ストレージクラスタは、ブレードコンピュータ、タワーコンピュータ、パーソナルコンピュータおよびサーバ上に構築できる。このようにする代わりに、単一のコンピュータボックス内にあるマルチコアプロセッサで、各コアで動作する仮想ストレージのノードをサポートしてもよい。つまり、複数のノードを有するストレージクラスタが単一のコンピュータボックス内にあってよいということである。さらに、単一の物理的なボックスの内部にあるコンピュータシステムが複数のCPUを備えることができ、その場合、各CPUが1つのノードであってよく、ストレージクラスタは、単一の物理的なボックス内に実装できる。
図1は、本発明の動作に対する環境100を示している。この図に含まれているものは、ストレージクラスタ120、クライアントアプリケーション130、管理コンソール140、任意数のコンピュータノード10〜50、および中央ルータ170である。前述したように、コンピュータノードは通常、好ましくは少なくとも1つのCPUと、任意数のディスクドライブ160、ソリッドステートドライブまたはこの両タイプを有するハイブリッドドライブとを備えている物理的なファイルサーバである。特定の一実施形態では、ストレージクラスタ120は、さらに論理的または物理的にサブクラスタに分割できる。例えば、ノード40および50を1つのサブクラスタとみなし、ノード10、20および30を第2のサブクラスタとみなしてよい。1つのクラスタをサブクラスタに分割することは、1つのサブクラスタが別のサブクラスタとは地理的に異なる場所に位置している場合に有利になり得る。
各ノードは、Debian Linux(登録商標)などのオペレーティングシステムを実装し、ノード間のピアツーピア通信を管理し、ヘルス処理を実施し、ノードおよびそのボリュームに代わって独立して決定を下すためのプロセスを実行する。各ノードは管理ソフトウェアも備え、そのステータスは、インターネット上のウェブブラウザを介して見ることができる。ある特定のRAINの実施形態では、各ノードは、標準のイーサネット(登録商標)ネットワークで1テラバイト以上のシリアルATAディスクストレージ容量を有する1Uサーバ(例えばx86コンピュータ)である。各ノードはIPアドレスを有し、IPベースのLAN、MANまたはWANを用いて物理的に相互接続されてよい。そのため、各ノードは、単一のノードに通信してもよいし、ルータ170またはその他の同様のネットワークスイッチを用いて、1つのメッセージをストレージクラスタ内の全ノードにブロードキャストしてもよい(マルチキャスト)。
各ノードは、クライアントアプリケーションからの外部要求(例えばクライアント130からのSCSP要求)、ノード間の複製要求(例えばinterSCSP要求)、およびその他のインターノードプロトコル通信(ビッディング、情報の要求などを取り扱うための管理モジュールを備える。ヘルス処理モジュールは、各ノードのデジタルコンテンツを管理する。管理コンソール140は、好ましくは、任意の適切なインターネット接続を介して各ノードにアクセスできるストレージクラスタに接続されるウェブサーバである。各ノードは、クラスタ全体を見て管理するのに使用できる冗長管理コンソールを実装する。いくつかの実施形態では、全ノードが同等であるとみなされ、クラスタ内の他の全ノードに関連する情報を定期的にブロードキャストする(または「マルチキャストする」)ことで互いに通信する。
1つの実施形態では、ストレージクラスタは、テキサス州オースチンのCaringo社から市販されているコンテンツストレージソフトウェア(本明細書に記載の通りに修正)、および任意の適切なコンピュータハードウェアを用いて実装できる。この実施形態では、ストレージクラスタが固定コンテンツのコンテンツアドレスストレージを実装し、各デジタルオブジェクトは、乱数発生器を用いてそのデジタルオブジェクトに対して発生した乱数(汎用一意識別子、すなわちUUID)により、一意的にクラスタ内でアドレスが指定される。各デジタルオブジェクトのコンテンツは、ハッシュ関数を用いて検証できる。クライアントソフトウェアアプリケーションは、クラスタ内にデジタルオブジェクトを格納する際にUUIDを受け取り、そのUUIDをクラスタに供給することによってそのデジタルオブジェクトを回収する。ソフトウェアアプリケーションは、HTTP1.1規格を用いて、さらに詳細には、その規格の簡易サブセットであるSimple Content Storage Protocol(SCSP)と呼ばれるものを用いて、CAStorクラスタと通信する。この標準インターフェースを用いて、電子メール、企業コンテンツの管理、ヘルスケアアプリケーション、ウェブブラウザ、Web2.0サイト、写真の共有、ソーシャルメディアサイト、セキュリティ映像、映像編集などのクライアントアプリケーションは、CAStorストレージクラスタにアクセスして、ファイルを格納したり、ファイルを回収したり、ファイルを消去したりできる。さらに、ブラウザ、JAVA(登録商標)、Python、C++、およびその他のソフトウェア環境で直接HTPPアクセスが可能である。
1つの実施形態では、デジタルオブジェクトが以下のようにして特定のノードに格納される。各ノードは、RAMリストにディスクインデックスを含み、その中には、オブジェクトを含むデジタルストリームが一意識別子に基づいてディスクに格納されている。例えば、インデックスの第1の列にはオブジェクトの一意識別子が記載され、第2の列にはストリームが始まるセクタが記載され、第3の列にはストリームの長さまたはストリームが終わるセクタが記載される。ストリームは、デジタルオブジェクトのほかに関連するメタデータを含んでいてよい。したがって、ノードに格納されるオブジェクトは、単純に、ディスクおよびRAMインデックスに記録されたそのディスクの場所に順次書き込める。あるいは、オブジェクトは、任意の適切なストレージアルゴリズムを用いてディスクのどこに格納されてもよく、オブジェクトの場所はインデックスに再び記録される。オブジェクトが読み出されるか消去されることになっている場合、ディスク上にあるその場所は、このインデックスを調べることによって発見できる。ノードの再起動時にこのRAMインデックスを簡単に構築するために、永続的なストレージに格納されているノードのジャーナルは、オブジェクトが追加されるか消去されるときは常に記録し、オブジェクトに対する一意識別子、オブジェクトが始まるセクタ、セクタ内でのオブジェクトの長さやバイト、および後述するその他の情報を含む。したがって、ノードが再起動された時、ジャーナル内の情報は読み出され、RAMにディスクインデックスを作成するために使用される。ジャーナルを使用する代わりにインデックスを構築するもう1つの技術が、再起動時にディスク全体を読み出して必要な情報を集めることだが、これにはさらに多くの時間がかかる。
オブジェクトは格納でき、重複しているものは消去できる。これは、上記に引用した「Two Level Addressing in Storage Clusters」および「Elimination of Duplicates in Storage Clusters」に記載の通りである。
・消失セットの例
図2は、オブジェクトに対して5:7消失符号付加を用いた消失セット200の一例を示している。図示したように、元のオブジェクトのデータは、5つのデータセグメント(k1〜k5)210〜218に分離され、これらのセグメントから2つのパリティセグメント(p1およびp2)220および222が生成される。1つの実施形態では、ストライプ(st1〜st9)231〜239にデータが書き込まれ、パリティが生成される。例えば、第1のストライプ231は、元のデータ251〜255で構成され、これらのデータからパリティデータ256および257が生成される。どの残りのデータも最後の残りのストライプ(rem)240として形成され、ハッシュメタデータは、各セグメントの末尾にあるセクション270に格納できる。
先に述べたように、クラスタ内に格納されるオブジェクト(またはストリーム)は、所与のサイズである複数の消失セットに分割でき、このサイズはパフォーマンスに応じて決定される。極めて大きいオブジェクトは、例えば複数の消失セットに分割されてよい。消失セット内では、K個のデータセグメントおよびP個のパリティセグメントは、各K個のデータセグメント内に順に書き込まれている固定サイズのデータブロックを備えるストライプを用いて書き込まれ、次に、パリティブロックを生成して各P個のパリティセグメント書き込まれる。(K+Pセグメント全体にわたる)各ストライプは、消失符号付加ユニットの役割を果たす。セグメント内の最後のストライプ(例えば残りのストライプ240)は、容易に計算できる小さめのブロックサイズであってよい。ストライプは通常、入力データが使い果たされるまで、あるいは消失セットの所与のサイズが一杯になるまで、次のデータが新たな消失セットを開始している状態で書き込まれる。
特定の実施形態では、単一の書き込み動作から得られたデータが、消失セットのK個のセグメントすべてにわたって固定サイズブロック(例えば32kバイト)でストライプに書き込まれる。換言すれば、ブロック1、K+1、2K+1などは、第1のセグメント210に書き込まれ、ブロック2、K+2、2K+2などは、第2のセグメント212に書き込まれる、というふうになる。P個のパリティブロックは、データの各ストライプ生成物の一部として同時に生成され、各ストライプの末尾に増えていくようにして書き込まれる。ストライピングによって、予測可能なメモリのオーバヘッドと同時にパリティセグメントを生成できるとともに、チャンク形式で符号化したストリームを書き込むことも可能になり、普通はこれによって書き込み動作の開始時にコンテンツの長さは提供されない。もちろん、元のデータオブジェクトは、消失符号付加を実施するためにストライプに分割される必要はないが、こうするといくらか効果的になる。というのも、パリティセグメントは各ストライプに対して生成でき、その後次のストライプに続くからである。また、ストライピングが用いられなければ、第1のデータセグメント210は、データオブジェクト内に第1のデータブロックを含み、第2のデータセグメント212は、次のデータブロックセットを含む、というふうになる。セット内の各セグメントの最後にあるのは、各セグメントに対するメタデータ270であり、このメタデータは、そのセグメントに対するMD5ハッシュ値を含んでいる。例えば、各ハッシュ値は16バイトであり、セパレータなしで書き込まれる。
消失セットの各セグメントは、不変のストリームであり、クラスタの任意の他のストリームと同じように、各セグメントがそれ自体の一意識別子を有する。各消失セグメントは、補足的ヘッダ280も含み、このヘッダは、そのマニフェストの一意識別子など、消失セット内の他のセグメントに関するメタデータを含むほか、全データおよびパリティセグメントの一意識別子も順に含む。各セグメント自体の一意識別子は、一連のシブリング内でその場所を識別する。各セグメントに対するヘッダは、セグメントが位置している所のボリューム識別子や、消失セットの次のセグメントに対して可能性のあるボリューム識別子などのシステムのメタデータも含む(ボリュームヒント)。例えば、セグメントk4は、セグメントk5が位置している所のボリューム識別子を含み、セグメントp2は、セグメントk1が位置している所のボリューム識別子を含む、というふうになっている。好ましくは、(単一のオブジェクトを表す)より大きいストリームの一部である各消失セットは、すべての消失セットに対して同じ消失符号付加、例えば5:7の消失符号付加を有する。
書き込み動作の過程で、図示した7つのセグメントの各々は、クラスタの7つの異なるノードを用いて平行して書き込まれてよく、万一ノードまたはボリュームに障害が発生した際にはこのようにしてデータを保護する。セグメントがボリュームに書き込まれると、そのセグメントは、クラスタ内の任意の他のストリームと同じように処理されてよい(ボリュームおよびそのコンテンツ、その回復プロセス、ならびに複製する必要がないという点を除く)。
・マニフェストの例
図3は、本発明の実施形態で使用できるマニフェスト300の一例を示している。先に述べたように、消失符号付加を用いてデータオブジェクトが任意数のセグメントに符号化されると(用いた符号化によって異なる)、それらのセグメントに対する一意識別子は、後で回収するためにマニフェスト内に格納される(マニフェスト自体はクラスタ内に格納されたオブジェクトであり、それ自体の一意識別子を有する)。
各マニフェスト内に含まれているのは、メタデータセクション310、少なくとも1つの消失セット340および任意数の他の消失セット380である。もちろん、マニフェスト内にある消失セットの数は、データオブジェクトのサイズ、各セグメントのサイズ、用いた符号化スキームによって異なる。マニフェストのセクション312は、使用した消失符号付加アルゴリズムの名称およびそのバージョン番号を提供する。セクション314には特定の消失符号付加を示し、セクション316にはセグメント内の各データブロックのサイズ(ストライプ幅)を示している。このメタデータセクションにある他の情報には、オブジェクトが書き込まれた時間、その一意識別子、その所有権、およびアプリケーションで指定されたメタデータがある。
第1の消失セット(または唯一の消失セット)の表現には、そのサイズ342、この消失セット344に使用された消失符号付加、セグメント幅346(単位はバイト)、および合計セグメントサイズ348(単位はバイト)が含まれている。符号化およびセグメント幅のよう情報は、柔軟性を提供するために各消失セット内にもメタデータセクション310にもあってよいし、このようなデータのみが1つの領域にあってもよい。
第1の消失セットは、その消失セット内にある各々のセグメントに対する一意識別子も含んでいる。例えば、セクション350は、第1の消失セットにあるセグメントに対する一意識別子を示している。前述したように、マニフェストは、1つ以上の消失セットを含んでいてよい。その状態では、第2の消失セット380の表現が、任意数の他の消失セットの他の表現と同じように含まれてよい。第2の消失セットは、(第1のセットとは異なっていてよい)サイズ、符号化、および第1の消失セットと同様の情報を示している。第2の消失セットは、セグメント幅にもセグメントサイズにも第1のセットと同じ符号化を用いてよいが、これは一般的な要件ではない。
どのような追加の消失セットでも、その消失セット内に含まれるすべてのセグメントに対して一意識別子を含んでいる。好ましくは、マニフェスト自体は複製されるが消失符号付加されない。これがスペースの効率を損なうことはない。なぜなら、マニフェストは、そのマニフェストの対象になっているデータオブジェクトのスペースのうちの小部分しか使用しないからである。このほか、消失セットの消失符号付加と同時に起こるディスク障害から同じように保護するために、K:M(P=M−K)符号化を用いて符号化したデータオブジェクトに対するマニフェストは、複製の合計数が少なくともP+1である必要がある。
・クラスタへのデジタルオブジェクトの書き込み
図4Aおよび図4Bは、クライアントアプリケーションがどのようにファイル(デジタルオブジェクト)をストレージクラスタに書き込むかを示すフローチャートである。ステップ404では、任意の適切なクライアントアプリケーション130がデジタルオブジェクト(任意のコンピュータファイル、デジタル画像、デジタル映像、ヘルス記録など)をストレージクラスタ120に格納しようとする。クライアントアプリケーションは、クラスタ内にあるノード10〜50のうちの1つのIPアドレスを発見するか取得し、ストレージプロセスを開始するプライマリアクセスノード(PAN)としてそのノードを選ぶ。通常、クライアントアプリケーションは、次の書き込み要求のために使用する最後のノードにアクセスする。クライアントアプリケーションは、PANに要求を送ってデジタルオブジェクトを格納する。1つの実施形態では、この要求はHTTP POST要求であり、これは、ヘッダ、バイト単位でのデジタルオブジェクトの長さ、およびオブジェクト自体を含んでいる。この要求に対するPANからクライアントへの応答は、次のうちのいずれかになる。はい、PANはオブジェクトの格納を簡易化できます、いいえ、オブジェクトを格納するためにはこのノードの方がいいです、あるいは、いいえ、このクラスタ内にそのオブジェクトを格納できるノードはありません。
PANがオブジェクトの格納を簡易化すると仮定すると、クライアントは、格納するデジタルオブジェクトをその時点で動かしてしいても、ストレージ用にセカンダリアクセスノード(SAN)が選択されるまでオブジェクトを動かすのを待つことができる。オブジェクトが最初に動かされていなければ、クライアントは、例えばオブジェクトのサイズ、長期または短期のストレージが望ましいかどうか、オブジェクトが今後頻繁にアクセスされるかどうか(これらはすべて、ストレージノードの選択時に役に立つことができる)、また、任意選択でオブジェクトに対するファイル名などのオブジェクトメタデータを動かすことができる。いくつかのクライアントには、クライアントがクラスタ内に格納するオブジェクトに対して階層式のファイル名または任意のファイル名を使用することが必要であり、このような状況では、このようなファイル名からハッシュ値を引き出して、一意識別子として使用してよい。
しかし、本発明にさらに関連することは、複製または消失符号付加を用いてオブジェクトを格納するかどうかを決定するのに使用できるオブジェクトメタデータである。書き込み要求があるとき、あるいはオブジェクトメタデータでは、クライアントアプリケーションはこのオブジェクトを、複製を用いて格納すべきか消失符号付加を用いてすべきかを指定できる(特定の消失符号付加を指定してもよい)。実際、クライアントは、書き込まれるすべてのオブジェクトを複製または消失符号付加を用いて格納するように指定してよい。クライアントからの特定の命令がない場合、本発明は、多様な情報のうちのいずれかを用いて、オブジェクトに対して複製を選択するか消失符号付加を選択するかを決定してよい。例えば、オブジェクトのサイズを用いてもよいし(一定サイズを上回るオブジェクトが消失符号付加を用いて格納される)、オブジェクトの種類(画像ファイル、テキスト情報、ヘルス記録など)を用いてもよいし、オブジェクトの所有権、および予想された寿命を用いてもよい。書き込み後にオブジェクトをいつ変換するか、また変換するのかどうかを決定するのに用いられる補足的メタデータについて、以下で考察する。
ステップ408では、セカンダリアクセスノード(SAN)が選択されると、SANは、現在のオブジェクトを格納するために複製を用いるのか消失符号付加を用いるのかを決定する。前述したように、SANは、この決定を下すために、クライアントアプリケーションからの命令を用いてもよいし、オブジェクトメタデータに基づく任意の適切な規定を用いてもよい。特定の一実施形態では、デジタルオブジェクトのサイズは基準として用いられる。つまり具体的には、10メガバイト未満のサイズであるオブジェクトは複製されるが、それよりも大きいオブジェクトはいずれも消失符号付加を用いて格納される。一般に、複製を用いるか消失符号付加を用いるかを決定するのに使用できる情報は、クラスタの管理者が設定するストレージクラスタの何らかの規定または設定、オブジェクト自体またはオブジェクトのメタデータの何らかの固有の特性、およびクライアントアプリケーションからの問い合わせの性質または何らかの命令を含む。複製が選定されたとすると、ステップ412においてSANは、任意数の書き込みビッドを要求し、デジタルオブジェクトを書き込むためのクラスタ内のノードからその書き込みビッドを受け取る。
SANのビッドが最低であれば、クライアントアプリケーションに「継続する」というメッセージを送り返して応答する。それに応じてクライアントはデジタルオブジェクトをSANに送信し、SANは、デジタルオブジェクトを格納し、一意識別子を計算し、この識別子をクライアントアプリケーションに返す。一方、SANがビッドを失った場合、SANは最低ビッドを有するノードにクライアントアプリケーションをリダイレクトし、このノードが要求を取り扱う。するとクライアントアプリケーションは、同じ書き込み要求をこのノードに送信し、ノードは、「継続する」というメッセージをクライアントアプリケーションに送り返して応答する。これに応じてクライアントは、デジタルオブジェクトをノードに送信し、ノードはデジタルオブジェクトを格納し、一意識別子を計算し、この識別子をクライアントアプリケーションに返す。書き込みビッドの計算は、特許明細書第12/839,071号、発明の名称「Adaptive Power Conservation」に記載されているように実施でき、この明細書を参照することにより本願に組み込む。このようにする代わりに、デジタルオブジェクトを、前述した発明の名称が「Two Level Addressing in Storage Clusters」である明細書に記載のように書き込んでもよい。オブジェクトが書き込まれた後は、直ちに様々なノードに必要なだけ複製されてもよいし、クラスタが定期的な整合性チェックを待ってオブジェクトを複製してもよい。
一方、クラスタ内のオブジェクトを格納するのに消失符号付加が選定された場合、ステップ416でSANは、ストレージクラスタ内の全ノードから受けた書き込みビッドの要求を発行する。SANが、用いるべき特定の消失符号付加(K:M、クライアントの命令、オブジェクトメタデータ、またはクラスタシステムの設定や定数に基づく)を決定すると、デジタルオブジェクトのデータおよびパリティセグメントを格納するのに用いるべきM個のノードを選択する。好ましくは、SANは、最低コストでのノードのビッディングを選定するが、パフォーマンスを最良にしたり、消費電力を最低にしたり、他の基準を採用するなどの他の技術を用いてもよい。
1つの実施形態では、リスク軽減のために、物理的に離れている様々なサブクラスタ内でノードを選定でき、1つのサブクラスタが失われれば、全体のオブジェクトを残りのサブクラスタ内のセグメントから再生できるようにする。例えば、所与の3つのサブクラスタがあるとすると、4:6符号化で符号化されたオブジェクトは、3つのサブクラスタの各々に2つのセグメントが格納されるように分配されたセグメントを有する。いずれか1つのサブクラスタが失われることで4つのセグメントが残り、これはオブジェクトを再構築するのに十分なものである。異なる数のサブクラスタに対して同様のスキームが可能である。
次に、ステップ420で、オブジェクトの第1のデータセグメントを格納する第1のノードが指定され、このノードは、様々なノード上のデータおよびパリティセグメントの中でオブジェクトを消失符号付加する準備をするためのいくつかのステップを実施する。例えば、SANは、消失セット内のすべてのデータおよびパリティセグメントに対して(例えば乱数生成器を用いて)一意識別子を選定し、チャンク形式で符号化したPOSTSをM個のノードの受信先に対して設定し、書き込み開始時に最大セグメントサイズを決定し、これによってこの消失セットのサイズを制限する。最大セグメントサイズは、ストレージクラスタの設定を参照して決定されてよい。各ノードは、SANへの応答時にそのセグメントに対するボリュームの情報を返す。
次に、ステップ424でクライアントアプリケーションは、データオブジェクトをSANに転送し始め、SANは、ストライプにある様々なノードの各データセグメントにデータを書き込み、適切な消失符号付加アルゴリズムを用いてパリティセグメントに対してデータを計算する。1つの実施形態では、良好に動作するためのZfecアルゴリズムを発見した。例えば、図2を参照し、5:7符号化を仮定すると、受信したオブジェクトの第1の32kのブロックは、第1のノード(SAN)でデータセグメント210に書き込まれ、第2の32kのブロックは、第2のノードでデータセグメント212に書き込まれ、というふうになる。第5のデータブロックが第5のノードに書き込まれた後、2つのパリティブロックが計算され、クラスタの選択された最後の2つのノードにあるセグメント220および222に格納される。デジタルオブジェクトは、引き続きクライアントアプリケーションから読み出されるとともに、ストレージクラスタの1つ1つのストライプごとにM個の選択されたノードに書き込まれる。これは、オブジェクトの末尾に達するかセグメントの末尾に達するまで続けられ、この動作はテスト428である。一杯になった書き込み対象のデータブロックがなければ、図示したように残りのストライプ240に書き込める。セグメントの末尾に達するか(ただし、オブジェクトに残っているデータは依然として書き込まれる必要がある)、オブジェクト全体がM個のセグメントに書き込まれると、制御は図4Bのステップ432に移る。
次に、ステップ432においてSANは、任意選択として、各セグメントのデータに基づいて各セグメントに対してハッシュ値を計算し、これらの値270(例えば)を選択したすべてのノードにトレーリングデータとして送信し、このノードがセグメントをそのボリュームに書き込んでいる。各ノードはSANから受け取ったこのハッシュ値を、自身のボリュームのうちの1つに格納されているセグメントについてディスク上で計算するハッシュ値と比較する。
次に、ステップ436では、消失符号付加のボリュームヒントが決定され、各セグメントに対して格納される。例えば、セグメント216が格納されているボリューム識別子は、セグメント214に対するシステムのメタデータの中に書き込まれ、このようにして、各セグメントが次のセグメントに対して、可能性のあるボリューム識別子をリング状に格納するようにする。好ましくは、ボリュームヒントは、各セグメントがPOST要求を用いて書き込まれる際にSANから転送される。このほか、ボリュームヒントは、各ボリュームのジャーナルの中に書き込まれてもよい。換言すれば、消失セットが任意のいくつかのノードに書き込まれると、所与のセグメントが格納されている特定のボリュームに対するジャーナルのエントリが更新されて、オブジェクトの次のセグメントが格納されているボリューム識別子を含める。
ステップ440では、ストレージクラスタに書き込むためにデジタルオブジェクトから来るデータがまだあるかどうかを判断する。ある場合は、ステップ444で新たな消失セットが開始される。この状況では、SANは、クラスタ全体から書き込みビッドを要求して次のM個のノードを決定し、このノードが、そのボリュームに対するデータおよびパリティセグメントの書き込みを承諾する。すると、制御は、ステップ416に移って、このデジタルオブジェクトに対して次の消失セットを書き込む。
書き込むデータがこれ以上ない場合、ステップ448において、この消失セットに対するマニフェストが書き込まれる。図3に示したように、マニフェストは、メタデータセクションおよび消失セットの各々に対するセクションを含む。例えば、一意識別子(ハッシュ値、乱数など)が各消失セットの各セグメントに対して計算され、セクション350に格納される。この一意識別子は、ステップ416またはその後のステップ(乱数の場合)で計算されるか、あるいはステップ428またはその後のステップ(ハッシュ値の場合)で計算されてよい。マニフェストは、クラスタのいずれかのノードに書き込まれ、ストレージクラスタに書き込まれた任意のストリームのように処理される。換言すれば、一意識別子がマニフェストに対して計算され、マニフェストは、クラスタ内の様々なノードに対して複製される。好ましくは、マニフェストは、クラスタ内で合計P+1回複製される。最後に、マニフェストに対する一意識別子はクライアントアプリケーションに返され、その結果クライアントアプリケーションは、後に読み出し操作を実施する際にそのデジタルオブジェクトにアクセスできる。
・クラスタからのデジタルオブジェクトの読み出し
図5は、クライアントアプリケーションがどのようにストレージクラスタからデジタルオブジェクトを読み出すのかを示すフローチャートである。有利には、クライアントアプリケーションは、ストレージクラスタがデジタルオブジェクトを格納するのに用いている技術がどちらであるか(複製か消失符号付加か)を認識している必要はない。単純に(以前にストレージクラスタによって提供されていた)デジタルオブジェクトに対して一意識別子を用いることによって、クライアントアプリケーションは、任意の外部データベースまたは制御システムに頼る必要なく、クラスタからオブジェクトを回収できる。実際、クライアントアプリケーションは、一意識別子がクラスタ内で複製されたオブジェクトを表しているのか、クラスタ内のオブジェクトを格納するために消失符号付加が用いられたことを示しているマニフェストを表しているのかを認識することはない。
ステップ504では、クライアントアプリケーションは、一意識別子に識別された特定のデジタルオブジェクトを返すためのストレージクラスタの要求を作成できる。これは、SCSP GET要求または同様のHTTPプロトコルを用いて実装できる。クライアントアプリケーションは、ストレージクラスタの任意のノード(これがプライマリアクセスノードになる)に識別子を供給する。次に、ステップ508においてPANは、その特定の一意識別子を有するオブジェクトを探しているクラスタ内の全ノードにメッセージをブロードキャストする。この時点で、一意識別子が実際のオブジェクトを表しているのかマニフェストを表しているのかということもPANにとっては明白である。
実際のオブジェクトもマニフェストも両方ストレージクラスタ内で複製されるため、PANは、そのブロードキャスト要求に対していくつかの応答を受け取る。1つの実施形態では、オブジェクトのコピー(またはマニフェストのコピー)を有する各ノードは、読み出しビッド(デジタルオブジェクトを読み出すためのコスト)を計算し、PANは、読み出しビッドが最低であるノードを選定し、クライアントアプリケーションをそのノードにリダイレクトし、その後そのノードはセカンダリアクセスノード(SAN)になる。SANは、発見されたオブジェクト(実際のオブジェクトかオブジェクトのマニフェストかのいずれか)のシステムメタデータを見ることによって、複製が用いられたのか消失符号付加が用いられたのかを認識する。
したがって、ステップ510でSANは、(複製が用いられたために)実際のデジタルオブジェクトを保有しているのか、(消失符号付加が用いられたために)実際のデジタルオブジェクトに対するマニフェストを保有しているのかを判断する。複製が用いられた場合、ステップ512でSANは、単純に要求しているクライアントアプリケーションにデジタルオブジェクトを返し、その方法は終了する。その代わりに、消失符号付加が用いられ、SANがマニフェストを保有している場合、ステップ516でSANは、クラスタのセグメントを要求するプロセスを開始して、要求されたデジタルオブジェクトを再集結する。マニフェストのメタデータを用いて、SANは、用いられた消失符号付加アルゴリズムおよび特定の消失符号付加(例えば5:7)を認識する。好ましくは、デジタルオブジェクトを再結集するのに必要なのは第1のK個のデータセグメントのみであるため、SANは、マニフェストのセクション350で発見された一意識別子を用いて、第1のK個のデータセグメントのみに対する要求をブロードキャストする。これが成功すれば、制御はステップ528に移る。
しかしながら、この第1のK個のデータセグメントのうちのいずれかが喪失している場合(ステップ520)、必要とされている任意のパリティセグメントに対して要求がブロードキャストされる。例えば、元のデータセグメントのうちの2つが喪失している場合、マニフェストからの一意識別子を用いて、パリティセグメントのうちの2つに対して要求をブロードキャストしなければならない。必要数のパリティセグメントが発見された場合、ステップ524で、喪失データセグメント(または複数のセグメント)は、適切な消失符号付加アルゴリズムおよび発見されたパリティセグメントを用いて再生される。1つの実施形態では、喪失セグメントのハッシュ値は、計算されて元のハッシュ値と比較されてよい。あるいは、セグメント1から(K−1)までのブロックを備える入力値として生成されたブロックを用いることによって各ストライプに対するデータを確認し、ブロックKを生成してそのブロックを元のブロックと比較することも可能である。しかし、K個のセグメントを発見できない場合は、クライアントアプリケーションにエラーメッセージが返される。
K個のセグメントが発見されるか生成されると仮定すると、ステップ528においてSANは、(マニフェストを用いて)得られる別の消失セットがあるかどうか判断する。ない場合、制御はステップ532に移る。ある場合、制御はステップ516に移り、SANは、マニフェストの第2の消失セットに対する対応するセクションで発見された一意識別子を用いて、第2の消失セットの必要なセグメントを要求するプロセスを開始する。ステップ532および536においてSANは、それが回収した各消失セットに対してデータおよび/またはパリティセグメントを結集して、元のデータオブジェクトを再構築する。例えば、必要なK個のセグメントがクラスタ内のノードで発見された時、SANは、これらのセグメントからメモリにデータを読み出し、適切な消失符号付加アルゴリズムに適用して、SANで元のデジタルオブジェクトを再構築する。好ましくは、オブジェクトの各ストライプは回収されるか再構築されるため、このデータは、HTTPを介してバイトごとにクライアントアプリケーションにフィードバックされる。消失セットが2つ以上あるとすると、SANは、次の消失セットを用いてデジタルオブジェクトの次の部分を再構築し、次の消失セットのバイトをクライアントアプリケーションにフィードバックする。その代わりに、SANは、それ自体のメモリ内のオブジェクト全体を集結してからオブジェクトをクライアントに送り返してもよい。
・ボリューム障害からの回復
図6は、ストレージクラスタがボリューム障害からどのように回復できるのかを示すフローチャートである。前述したように、ストレージクラスタは、任意数のコンピュータノードを含み、各ノードは、任意数のハードディスクまたはボリュームと呼ばれるソリッドステートディスクを有する。ストレージクラスタは通常、オブジェクトの様々なレプリカを様々なノードに格納し(複製が用いられた場合)、オブジェクトの多様なデータおよびパリティセグメントを様々なノードに格納することで(消失符号付加が用いられた場合)、データ冗長性に達する。その結果、ノードのディスクに障害が発生すると、任意数のオブジェクトの多くのレプリカおよびセグメントが損失し、それによってストレージクラスタ全体のデータ冗長性といわれるものが劣化する。さらに、ストレージクラスタの質は、どれだけのボリュームを損失できる余地があるのかというだけでなく、ボリュームに障害が発生した際にクラスタがどれだけ速く喪失データを回復できるのかということによって判断される。したがって、図6は複製(レプリカ)および消失符号付加(セグメント)を用いて格納されたオブジェクトの混合物が存在する場合に障害が発生したボリュームの回復を扱うだけでなく、喪失セグメントの回復もできるだけ迅速に回復する技術を示している。ノード全体に障害が発生すれば、障害が発生したノードの各ボリュームに対して以下の技術が実施される。
ステップ604では、クラスタのノードは、そのディスクのうちの1つに障害が発生したことを認識する。1つの事例では、ノードが正常な業務過程でボリュームと通信すると、そのノードは、ボリュームから定期的に連絡を受けるよう待機する。連絡がない場合、ノードは、喪失ボリュームを探しているそのすべてのボリュームにメッセージをブロードキャストする。応答がない場合、ノードは、ボリュームに障害が発生したと仮定する。別の事例では、ストレージクラスタは、メンテナンスやクラスタの移動などの理由で全体的にシャットダウンされることがある。クラスタがバックアップされた場合、ボリュームに障害が発生する可能性があるが、ボリュームから事前に連絡がないため、ノードはそれを認識しないおそれがある。この状況では、ノードのモジュールのヘルス処理が補助できる。ヘルス処理モジュールは、各ボリュームで全ストリームの整合性を定期的にチェックし、特定のストリームのボリュームヒント(ボリュームの一意識別子)を検知した際に、そのボリュームを探す。発見されなければ、ノードは、ボリュームに障害が発生したと再度仮定する。ボリュームに障害が発生したことを検知する他の技術を用いてもよい。
次に、ステップ608では、障害が発生したボリュームの一意識別子が取得されると、クラスタ内の各ノードは、機能しているボリュームすべてをスキャンするように誘導されて、喪失ボリュームに対するボリュームヒントを含むストリームを識別する。好ましくは、喪失ボリュームを識別したノードは、ブロードキャストメッセージ(ボリューム識別子を含む)を他の全ノードに送信し、喪失ボリュームに対するヒントを有するストリームを検索するよう要求する。また、ノードは、効率のために平行して検索を実施する。1つの実施形態では、各ボリュームがディスクに記録したジャーナルがスキャンされ、各ストリームの表現が分析されて、そこに含まれているボリュームヒントを判断する。消失符号付加したオブジェクトのセグメントを表しているジャーナル内の各ストリーム表現は、次のセグメントに対するボリューム識別子を含んでいるため、喪失ボリューム対するボリューム識別子を含んでいるそのように識別されたストリームはいずれも、喪失ボリュームにあったセグメントも指している。例えば、図2のセグメント222のストリーム表現がボリュームヒントを含んでいて、そのヒントが喪失ボリュームに対するボリューム識別子である場合、それはつまり、セグメント210がそのボリュームにあって再生される必要があるということである。このほか、ジャーナル内の複製されたストリームの表現は、そのストリームのすべてのレプリカに対するボリューム識別子を指すボリュームヒントを含む。各ストリームに対して、ジャーナルは通常、ストリームが複製されたオブジェクトを表しているのか消失符号付加したオブジェクトを表しているのかを示す種類の情報を含んでいる。
もう1つの実施形態では、これらのボリュームヒントは、セグメントのシステムメタデータ280(または複製されたストリームのメタデータ)に格納できる。例えば、セグメント216に対するシステムメタデータは、セグメント218が格納されているボリューム識別子を指すボリュームヒントを含んでいる。各ノードがそのボリュームをスキャンしてディスク上の各ストリームのシステムメタデータを探せる可能性があるが、この技術では遅くなってしまう。この場合、ボリュームヒントはこのシステムメタデータから読み出せる。この場合もまた、障害が発生したボリュームを指す特定セグメントにあるボリュームヒントは、次のセグメントが喪失していることを指している。セグメントが喪失していることをノードが識別すると、そのノードは、前のセグメントのメタデータ280を見てすべてのシブリングセグメントに対する一意識別子を回収することによって、その喪失セグメントに対する一意識別子を判断できる。喪失セグメントを再生するのに必要な任意のセグメントを発見するために、シブリングセグメントのこれらの一意識別子を使用してよい。
各ノードがそのジャーナル(またはディスク上のストリーム)をスキャンし終えると、各ノードは、障害が発生したボリュームにあった喪失ストリームのリストを有する。ストレージクラスタは、複製および消失符号付加を用いて格納されたオブジェクトを含んでいるため、これらの喪失ストリームのいくつかは、複製されたオブジェクトを表し、ストリームのいくつかは、消失符号付加したオブジェクトの喪失セグメントを表している。
複製されたストリーム(ある場合)が喪失している場合、ステップ612において各ノードは、他のノードからビッドを要求することによって喪失ストリームを複製してストリームを複製し、その後、選定したノードに制御を転送する。消失符号付加したオブジェクトの少なくとも1つのセグメントが所与のノードから喪失していると仮定すると、ステップ616では(ステップ608で得られた一意識別子を用いて)、所与のノードが、喪失セグメントを再生するのに必要なK個のセグメントを供給できるノードにビッドするように他のノードに要求する。勝利するビッドが受け取られ、ノードがK個のセグメントを供給できると識別されると、所与のノードが1つのノードに喪失セグメントを再生して格納するよう要求する。
したがって、ステップ620では、所与のノードは、特定のノードが喪失セグメントを再生するように、クラスタ内のノードからのビッドを要求する。このノードが選定されると、そのノードは、ステップ616において識別されたK個のセグメントを用いて喪失セグメントを再生する。この再生は、適切な消失符号付加アルゴリズムを用いて実施されてもよい。1つの実施形態では、喪失セグメントの再生で、K個のセグメントから得たストライプのデータが消費され、目的のストライプは、喪失セグメントを再生するために計算され書き込まれる。
ステップ624においてノードは、そのボリュームのうちの1つにセグメントを格納する。所与のノードに識別された喪失セグメントがまだある場合、制御はステップ616に移り、前述したようにノードは再び喪失セグメントに対するビッドを要求する。クラスタ内の各ノードは、ステップ608においてそのボリュームをスキャンして喪失ストリームを探しているため、各ノードは、ステップ612から628を平行して実施していて、各ノードが喪失ストリームを識別したと仮定する。
・消失符号付加されたセグメントの再配置
セグメントがストレージクラスタに書き込まれ、一意識別子を提供されると、そのセグメントは、複製されたストリームを含むクラスタ内の他のストリームのように管理されてよい。換言すれば、ヘルス処理モジュールは、セグメントを1つのボリュームから別のボリュームへ移すのがよいか、あるいは1つのノードから別のノードへ移すのがよいかを、消失セット内の他のセグメントとは関係なく、かつ移されているセグメントの利用可能性を失うことなく、考慮することができる。例えば、セグメント218を別のボリュームに移すとすると、セグメント216内のボリュームヒントは更新されて、セグメント218に対する新たなボリュームを指す。セグメント218が再配置されると、システムは、そのシブリングセグメント(およびその一意識別子)をすべて認識する。なぜなら、セグメント218のメタデータ280は、すべてのシブリングセグメントの一意識別子を順に含んでいるからである。上流のセグメント、つまりセグメント216は、その一意識別子を用いてクラスタ内から回収でき、かつセグメント218に対する新たなボリューム識別子がわかると、この新たなボリューム識別子は、セグメント218の新たな場所に対するボリュームヒントとしてセグメント216のメタデータセクション280の中に書き込むことができる。その代わりに、そのジャーナルでのセグメント216のストリーム表現は、更新されて新たなボリューム識別子を含んでもよい。
再配置されたセグメントに対するボリュームヒントのこの更新は、再配置が行われる際に実施されてもよいし、ヘルス処理モジュールによって後に実施されてもよい。この更新の利点は、セグメントをクラスタ内に再配置でき、利用可能性の損失がなく、クラスタ内のセグメントを追跡するための余分なコンピュータ制御やデータベース制御の必要がない点である。
・消失符号付加したオブジェクトを複製に変換、およびその逆
本発明の1つの実施形態では、クラスタ内に格納されたデジタルオブジェクトを1つの方式から別の方式へ変換できる。例えば、5:7の消失符号付加を用いて格納されたオブジェクトを6:10の暗号化に変換でき、消失符号付加したオブジェクトを、複製を用いたストレージに変換でき、複製を用いて格納したオブジェクトを、消失符号付加を用いるストレージに変換できる。オブジェクトを別の方式に変換するかどうか、またそれをいつするかというのは、オブジェクトメタデータ、ストレージクラスタの初期設定、またはこの両方を合わせたものによって指定できる。
前述したように、クライアントアプリケーションからオブジェクトを提供されたユーザメタデータは、オブジェクトをどのように格納すべきかということに関する情報を提供できるとともに、直前に記載したように、オブジェクトを1つの方式から別の方式にいつ変換すべきかということも指定できる。例えば、ユーザメタデータは、特定の時間枠内に、あるいは先の特定の時間に、オブジェクトを別の方式に変換すべきであることを指定できる。あるいは、ストレージクラスタの設定および規定で、オブジェクトを1つまたは複数の特定の時間に変換すべきだということ、一定サイズのオブジェクトを定期的にまたは特定の時間に変換すべきだということ、あるいは一定割合のオブジェクトを変換すべきだということも指定できる。クラスタは、クラスタの設定を変更したり、クラスタ内の1つまたは複数のオブジェクトに対していつどのように変換を起こすべきかを指定したり、といった管理者からの手動入力を受けることもできる。変換を実施するために特別な変換モジュールを使用してもよいし、あるいはそのような機能性をクラスタのヘルス処理モジュールに組み入れてもよい。
図7は、ストレージクラスタ内のオブジェクトを1つのストレージフォーマットから別のストレージフォーマットへ変換できるという1つの実施形態を示すフローチャートである。この図では単一のオブジェクトを扱っているが、この技術を用いてクラスタ内の任意数のオブジェクトを変換してよい。クラスタ内のオブジェクトに対する一意識別子は、クライアントアプリケーションが元々備えていた同じ一意識別子を用いてオブジェクトを回収できるように、同じままである。乱数を一意識別子として有するオブジェクトの場合、この乱数は、変換後もオブジェクトに対する識別子のままである。クライアントアプリケーションがオブジェクトに一意的な名称を提供する場合、クラスタは、その名称のハッシュ値を一意識別子として使用でき、このハッシュ値は、変換後も識別子のままである。
オブジェクトのバージョンの概念により、オブジェクトを変換した新たな一意識別子に対して元の一意識別子を保持しやすくなる。各オブジェクトは、それがいつ作成されたのか、オブジェクトがいつ変換されるか、それは元のオブジェクトと同じ一意識別子を有するのか、新たなオブジェクトは元のオブジェクトよりも後にタイムスタンプを与えられたのか、を示すタイムスタンプを含んでいる。このように、両一意識別子は、クラスタ内に同時に存在していてよい。ただし、クラスタは、タイムスタンプを参照することによってどのオブジェクトが現在有効なオブジェクトなのかを認識する。ツインのオブジェクトよりも先にタイムスタンプを有しているオブジェクトは、必要ではないためいつ消去されてもよい。
ステップ704では、1つのオブジェクトに対して(または任意数のオブジェクトに対して)関連する変換情報がストレージクラスタ内に格納される。前述したように、各オブジェクトは、オブジェクトをどのように変換すべきか、オブジェクトをいつ変換すべきかなどを指定するユーザメタデータを含むクライアントアプリケーションから受け取られてよい。このユーザメタデータは、オブジェクトがクラスタに書き込まれる際に各オブジェクトと一緒に格納される。このメタデータは、消失符号付加したオブジェクトのマニフェストに格納される。
また、ストレージクラスタの設定および規定は、クラスタ内のオブジェクトに対する初期変換設定を指定できる。これらの設定および規定は、指定されたクラスタのオブジェクトに格納されてもよいし、起動中にノードを備えている情報に含まれてもよいし、ノードが動作しているネットワーク上で指定されたソースによって提供されてもよい。例えば、設定が、全オブジェクトを特定の日付ごとに1つの消失符号付加方式から別の消失符号付加方式へ変換することを必要としてもよいし、オブジェクトが一定の年月に達すると、ある期間にわたって全オブジェクトに対して複製から消失符号付加に変換することを必要としてもよいし、一定サイズを超えるオブジェクトが、特定の年月または日付ごとに(またはある期間にわたって徐々に)消失符号付加に変換することなどを必要としてもよい。さらに、管理者が設定またはコマンドを入力して、1つまたは複数のオブジェクトまたはオブジェクトにいつどのように変換を起こすべきかを指定してもよい。
ステップ708では、オブジェクトを1つの方式から別の方式へ変換すべきであることを指摘する特定のオブジェクトに対してトリガー条件を検知する。このトリガー条件は多くの様々な方法で検知できる。例えば、クラスタ内のオブジェクトに対して反復過程にあるヘルス処理モジュールは、オブジェクトに触れたときにその特定のオブジェクトに対するオブジェクトメタデータを見直す。条件(例えば「この特定の消失符号付加方式を用いて特定の日付ごとに、または特定の日付で消失符号付加に変換する」)が合えば、オブジェクトは、後述するように変換される。あるいは、何らかの理由でオブジェクトが触れられるかアクセスされた時はいつでも、そのユーザメタデータは、トリガー条件が満たされているかどうかを見るために見直される。また、ストレージクラスタ自体は、定期的にそのクラスタの設定および規定を見直して、時間または日付が過ぎたかどうかを判断して、オブジェクトまたはオブジェクトクラスタの設定に応じて変換すべきであることを指摘する。もちろん、クラスタの管理者からの何らかの手動入力が即座に作用し、トリガー条件を示してもよい。
ステップ712は、(複製を用いて現在格納されている)オブジェクトを消失符号付加に変換すべきであるとトリガー条件が示したときの結果である。オブジェクトに対する一意識別子が(オブジェクトメタデータ、クラスタの設定、管理者の入力などから)得られ、クラスタは、オブジェクトのレプリカが存在しているノードを判断する。ステップ716では、このノードは、そのディスクのうちの1つからメモリへオブジェクトを読み出す。次に、ステップ720でノードは、ユーザメタデータ、システムメタデータ、クラスタの設定、または管理者の入力から判断された特定の消失符号付加方式を用いて、オブジェクトをクラスタに書き込む。このステップは、図4Aおよび図4B、具体的にはステップ416〜448を参照して上記に考察したように実施されてよい。消失符号付加を用いて書き込まれたこの新たなオブジェクトには、そのマニフェストに対する一意識別子が供給され、この一意識別子は、ステップ716で読み出された元のレプリカに用いられた一意識別子と同じである。ステップ724では、元のオブジェクトおよび任意のレプリカが、即座にまたは後にヘルス処理モジュールによって消去されてよい。ヘルス処理モジュールは、新たに変換されたオブジェクトよりもタイムスタンプが早い一意識別子を有する任意のレプリカを消去してよいことを決定する。
ステップ732は、(消失符号付加を用いて現在格納されている)オブジェクトを、複製を用いたストレージに変換すべきであるとトリガー条件が示したときの結果である。オブジェクトに対する一意識別子が(オブジェクトメタデータ、クラスタの設定、管理者の入力などから)得られ、クラスタは、消失符号付加したオブジェクトに対するマニフェストが存在しているノードを判断する。ステップ736では、このノードは、クラスタからメモリへオブジェクトを読み出す。このステップは、図5、具体的にはステップ516〜532を参照して上記に考察したように実施されてよい。次に、ステップ740でこのノードは、オブジェクトを連続的なストリームとして(消失符号付加したセグメントとしてではなく)クラスタのノードに書き込む。この書き込みは、例えば、クラスタ全体への書き込みビッドに対する要求をブロードキャストし、その後ビッドが勝っているノードにストリームを書き込むことによって実施できる。あるいは、他の技術を用いてオブジェクトを書き込むための特定のノードまたはディスクを選定してもよい。単一のストリームとして書き込まれたこの新たなオブジェクトには、ステップ736で読み出された元のマニフェストに用いられた一意識別子と同じ一意識別子が供給される。ステップ744では、元のオブジェクトは、即座にまたは後にヘルス処理モジュールによって消去されてよい。ヘルス処理モジュールは、新たに変換されたオブジェクトよりもタイムスタンプが早い一意識別子を有する任意のマニフェスト(およびそれに関連するセグメント)を消去してよいことを決定する。ステップ748では、新たに書き込まれたオブジェクトは、複製されたクラスタ内に任意数のレプリカを作成でき、この複製は、即座に起きてもよいし、ヘルス処理モジュールがこのオブジェクトに対して反復している時間に起きてもよい。
ステップ752は、(古い消失符号付加を用いて現在格納されている)オブジェクトを、新たな消失符号付加に変換すべきであるとトリガー条件が示したときの結果である。オブジェクトに対する一意識別子は、オブジェクトメタデータから得られ、クラスタは、消失符号付加したオブジェクトに対するマニフェストが存在しているノードを判断する。ステップ756では、このノードは、クラスタからメモリへオブジェクトを読み出す。このステップは、図5、具体的にはステップ516〜532を参照して上記に考察したように実施されてよい。次に、ステップ760においてノードは、ユーザメタデータ、システムメタデータ、クラスタの設定、または管理者の入力から判断された新たな消失符号付加方式(フォーマット)を用いて、オブジェクトをクラスタに書き込む。このステップは、図4Aおよび図4B、具体的にはステップ416から448を参照して上記に考察したように実施されてよい。新たな消失符号付加を用いて書き込まれたこのオブジェクトには、そのマニフェストに対する一意識別子が供給され、この一意識別子は、ステップ756で読み出された元のオブジェクトに用いられた一意識別子と同じである。ステップ764では、元のオブジェクトは、即座にまたは後にヘルス処理モジュールによって消去されてよい。ヘルス処理モジュールは、新たに変換されたオブジェクトよりもタイムスタンプが早い一意識別子を有する任意のマニフェストを消去してよいことを決定する。
・クラスタ全体のデジタルオブジェクトの管理
本発明のもう1つの実施形態では、1つのストレージクラスタから別のストレージクラスタにデジタルオブジェクトを移せるとともに、オブジェクトを新たなクラスタが求める方式に変換するか、オブジェクトのユーザメタデータに求められる方式に変換することができる。例えば、5:7の消失符号付加を用いて第1のクラスタに格納されたオブジェクトを、第2のクラスタに移る際に6:10の暗号化に変換してもよいし、消失符号付加したオブジェクトを、第2のクラスタに移った際に複製を用いてストレージに変換してもよいし、複製を用いて第1のクラスタに格納したオブジェクトを、移った際に消失符号付加を用いてストレージに変換してもよい。オブジェクトを異なる方式に変換するかどうかは、ユーザメタデータ、ストレージクラスタの初期設定、この両方を合わせたもの、外部ソフトウェア製品からの命令、またはクラスタ管理者によって指定されてよい。有利には、第1のクラスタにあるオブジェクトの一意識別子は、第2のクラスタ内で使用されるためにも保有される。
図8は、1つのストレージクラスタ内のオブジェクトを第2のストレージクラスタに移して、1つのストレージフォーマットから別のストレージフォーマットに変換できるという1つの実施形態を示すフローチャートである。この図では単一のオブジェクトを扱っているが、この技術を用いてクラスタ内の任意数のオブジェクトを移してよい。好ましくは、第1のクラスタ内のオブジェクトに対する一意識別子は、クライアントアプリケーションが同じ一意識別子を用いて第2のクラスタからオブジェクトを回収できるように、同じままである。例えば、一意識別子は、クライアントアプリケーションによって供給されたオブジェクトの名称の乱数またはハッシュ値であってよい。
ステップ804では、ソースクラスタからターゲットクラスタにオブジェクトをコピーする(移す)ための命令が生成される。オブジェクトは、バックアップ目的で(元のオブジェクトをソースクラスタに残して)ターゲットクラスタにコピーされてもよいし、オブジェクトは、単にターゲットクラスタに移されて元のオブジェクトが消去されてもよい。命令は、任意の外部ソフトウェア製品、クライアントアプリケーションからのものであってもよいし、クラスタ自体の中からのものであってもよいし、クラスタ管理者からのものであってもよい。1つの実施形態では、Caringo社から市販されている「Content Router」ソフトウェア製品を使用して、ソースクラスタからターゲットクラスタにオブジェクトを複製するための命令を生成する。命令は、ソースクラスタ内にある一意識別子など、複製されるオブジェクトの識別を含んでいる。
オブジェクトは、多くの様々な方法でソースクラスタからコピーされてよい。例えば、ソースクラスタは、オブジェクトを読み出した後にそれをターゲットクラスタに「押し出し」てもよいし、あるいは、ターゲットクラスタがオブジェクトをソースクラスタから「押し出し」てもよい。1つの実施形態では、ステップ808で、ターゲットノードがまずターゲットクラスタで選択されてターゲットクラスタ内へのオブジェクトの書き込みを実施する。ターゲットノードは、ビッドプロセス、またはその他の技術を用いてランダムに選択されてよい。選択されると、ターゲットノードは、コピーされるオブジェクトに対する一意識別子を提供され、ソースクラスタに対する情報に接触する。例えば、ターゲットノードは、ソースクラスタ全体に対する通信アドレスや、クラスタ内の中央ノードまたは調整ノードのアドレスや、好ましくは、ソースクラスタ内の任意のノードのIPアドレスを提供されてよい。
ステップ812では、ターゲットクラスタ内で任意の関連する変換情報が識別される。例えば、コピーされたオブジェクトをどのようにターゲットクラスタ内に格納すべきか(すなわち複製または消失符号付加を用いて)を指定する任意の初期設定または規定が識別される。関連する初期設定がなければ、変換情報はコピーされるオブジェクト内に含まれるユーザメタデータから取得されてよい。その代わりに、オブジェクトをコピーする命令は、変換情報を含んでいてよい。
ステップ816においてオブジェクトは、ソースクラスタからターゲットクラスタにコピーされる。ターゲットノードは、提供されたIPアドレスを用いてソースクラスタのいずれかのノードに接触することによってオブジェクトのコピーを開始し、オブジェクトに対する一意識別子を提供する。するとオブジェクトは、ソースクラスタからターゲットノードのメモリに通信されてよい。このステップは、例えば、図5を参照して上記に説明したように実施されてよく、この場合ターゲットノードは、クライアントアプリケーションとして作用する。ターゲットノードがオブジェクトを受け取ると(あるいはターゲットノードが受け取られた際にオブジェクトが)、ターゲットノードは、上記で決定された適切な変換情報を用いてターゲットクラスタにメモを書き込む。換言すれば、オブジェクトは、連続ストリーム(複製)として書き込まれるか、消失符号付加を用いて書き込まれる。例えば、この書き込みステップは、図4Aおよび図4Bを参照して上記に記載したように実施されてよく、この場合ターゲットノードは、セカンダリアクセスノードとして作用する。複製の場合、ターゲットノードは、ターゲットクラスタ内の他のノードからビッドを求めてもよいし、またはそれ自体のディスクのうちの1つにオブジェクトを書き込んでもよい。消失符号付加の場合、セグメントは、ターゲットクラスタ内の様々なノードに書き込まれる。好ましくは、ターゲットクラスタ内のコピーされたオブジェクトは、ソースクラスタ内にあったものと同じ一意識別子を保有している。オブジェクトがターゲットクラスタにコピーされると、オブジェクトはソースクラスタ内で保有されてもよいし、その後に消去されてよい。
・コンピュータシステムの実施形態
図9Aおよび図9Bは、本発明の実施形態を実装するのに適したコンピュータシステム900を示している。図9Aは、コンピュータシステムの1つの可能な物理的形態の例を示している。もちろん、コンピュータシステムは、例としては、集積回路、プリント基板、(携帯電話やPDAなどの)小型携帯用デバイス、パーソナルコンピュータまたはスーパーコンピュータなど、多くの物理的形態をとることができる。コンピュータシステム900は、モニタ902、ディスプレイ904、筺体906、ディスクドライブ908、キーボード910およびマウス912を備える。ディスク914は、コンピュータシステム900との間のデータ転送に用いられるコンピュータ可読媒体である。
図9Bは、コンピュータシステム900のブロック図の一例を示している。システムバス920に連結されているのは、さまざまな種類のサブシステムである。(1つまたは複数の)プロセッサ922(中央処理装置、すなわちCPUとも呼ばれる)は、メモリ924を含むストレージ装置に接続されている。メモリ924は、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)を備えている。先行技術で公知のように、ROMは、CPUに対して一方向にデータおよび命令を転送するように作動し、RAMは通常、双方向にデータおよび命令を転送するのに用いられる。この類のメモリはいずれも、後述する任意の適切なコンピュータ可読媒体を備えていてよい。固定ディスク926も、CPU922に双方向に接続され、付加的なデータストレージ容量を提供し、後述するコンピュータ可読媒体のいずれかを備えていてもよい。固定ディスク926は、プログラムやデータなどを格納するのに使用されてよく、通常、主要なストレージ装置よりも低速の二次ストレージ媒体(ハードディスクなど)である。固定ディスク926内に保持されている情報は、適切な場合には、標準的な方法で仮想メモリとしてメモリ924内に組み込まれてよいことは理解できるであろう。リムーバブルディスク914は、後述するコンピュータ可読媒体いずれの形態であってもよい。
CPU922は、ディスプレイ904、キーボード910、マウス912およびスピーカー930などの様々な入出力装置にも接続されている。一般に、入出力装置は、ビデオディスプレイ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンサ式ディスプレイ、トランスデューサカードリーダ、磁気または紙テープ読み出し装置、タブレット、スタイラス、音声または手書き認識装置、生体認証読み出し装置、または他のコンピュータのいずれかであってよい。任意選択として、CPU922は、ネットワークインターフェース940を用いて、別のコンピュータネットワークまたは電気通信ネットワークに接続されてもよい。このようなネットワークインターフェースを用いると、CPUは、前述した方法のステップを実施する過程でネットワークから情報を受信したり、ネットワークに情報を出力したりすることができることが予想される。さらに、本発明の方法の実施形態は、CPU922で単独で実行してもよいし、あるいは、インターネットなどのネットワークを介して実行し、リモートCPUに処理の一部を分担させるようにしてもよい。
このほか、さらに、本発明の実施形態は、様々なコンピュータ実装動作を実施するためのコンピュータコードを有するコンピュータ可読媒体を備えるコンピュータストレージ製品に関する。媒体およびコンピュータコードは、本発明の目的のために特別に設計し構成されたものでもよいし、コンピュータソフトウェア分野の当業者に公知で利用可能な種類のものでもよい。コンピュータ可読媒体の例には、以下のものがあるがこれに限定されるものではない:ハードディスク、フロッピー(登録商標)ディスク、および磁気テープなどの磁気媒体;CD−ROMおよびホログラフィック装置などの光学媒体;フロプティカルディスクなどの光磁気媒体、ならびに、特定用途向けの集積回路(ASIC)、プログラム可能な論理装置(PLD)ならびにROMおよびRAM装置などのプログラムコードを格納して実行するように特別に構成されたハードウェア装置。コンピュータコードの例には、コンパイラにより生成されるものなどのマシンコードや、インタープリタを用いるコンピュータによって実行される上位コードを含むファイルなどがある。
以上に記載した本発明について、明確に理解する目的で詳細に説明してきたが、添付の特許請求の範囲内でいくらかの変更および修正を加えてもよいことは明らかであろう。したがって、記載した実施形態は例示に過ぎず本発明を限定するものではない。本発明は、本明細書に記載した詳細に限定されるものではなく、以下の特許請求の範囲およびそれと同等の全範囲内で規定されるものである。

Claims (28)

  1. ストレージクラスタにデジタルオブジェクトを格納する方法であって、
    前記ストレージクラスタのコンピュータノードでクライアントアプリケーションから、前記デジタルオブジェクトを格納するための要求を受け取り、
    前記デジタルオブジェクトを前記ストレージクラスタに、複製を用いて格納するか消失符号付加を用いて格納するかを判断し、
    消失符号付加を用いて前記デジタルオブジェクトを格納すると判断された場合、消失符号付加を用いて前記デジタルオブジェクトを前記ストレージクラスタの複数のコンピュータノードに書き込み、前記デジタルオブジェクトは複数のセグメントとして格納され、
    消失符号付加の表示と前記ストレージクラスタ内における各前記セグメントの一意識別子とを含むマニフェストコンピュータファイルを作成し、
    前記ストレージクラスタのコンピュータノードに前記マニフェストコンピュータファイルを格納し、
    前記マニフェストコンピュータファイルの一意識別子を前記クライアントアプリケーションに返すこと
    を備える、方法。
  2. 前記デジタルオブジェクトの固有の特性、前記クライアントアプリケーションからの命令、または前記デジタルオブジェクトのメタデータを参照して、複製または消失符号付加を用いて前記デジタルオブジェクトを格納するか否かを判断すること
    をさらに備える、請求項1に記載の方法。
  3. 前記ストレージクラスタ内に前記マニフェストコンピュータファイルを複製し、消失符号付加を用いて前記マニフェストコンピュータファイルを格納しないこと
    をさらに備える、請求項1に記載の方法。
  4. 前記デジタルオブジェクトを前記ストレージクラスタ内に複製しないこと
    をさらに備える、請求項1に記載の方法。
  5. 前記ストレージクラスタのディスクに格納されている各セグメントについて、前記セグメントに関連付けられている前記ディスクに、前記デジタルオブジェクトの別のセグメントを格納する次のディスクの一意識別子を格納すること
    をさらに備える、請求項1に記載の方法。
  6. 前記ディスクの前記セグメントについて前記一意識別子をジャーナルエントリに格納することによって、前記セグメントに関連付けられている前記次のディスクの前記一意識別子を格納すること
    をさらに備える、請求項5に記載の方法。
  7. 複数のコンピュータノードを有するストレージクラスタからデジタルオブジェクトを読み出す方法であって、
    前記ストレージクラスタ内にある前記コンピュータノードのうちの1つにおいて、前記デジタルオブジェクトについての一意識別子を含むクライアントアプリケーションから要求を受け取り、
    複製または消失符号付加を用いて前記ストレージクラスタ内に前記デジタルオブジェクトを格納するか否かを判断し、
    消失符号付加を用いて前記デジタルオブジェクトを格納すると判断された場合に、前記コンピュータノードのうちの1つに格納されているマニフェストを読み出し、前記マニフェストは前記一意識別子によって識別され、
    前記マニフェスト内で発見された一意的なセグメント識別子を用いて前記ストレージクラスタ内の複数のセグメントを識別し、
    前記セグメントおよび消失符号付加アルゴリズムを用いて前記デジタルオブジェクトを再構築し、
    前記デジタルオブジェクトを前記クライアントアプリケーションに返すこと
    とを備える、方法。
  8. 前記マニフェストを参照することにより、消失符号付加を用いて前記デジタルオブジェクトを格納することを判断すること
    をさらに備える、請求項7に記載の方法。
  9. 前記セグメントのうちの1つが前記ストレージクラスタ内に存在しないことを判断し、
    他の前記セグメントおよび消失符号付加アルゴリズムを用いて、存在しない前記セグメントを再生すること
    とをさらに備える、請求項7に記載の方法。
  10. 前記セグメントのうちの1つが格納されている第1のディスクを識別し、
    もう1つの前記セグメントが格納されている第2のディスクについてのディスクの識別子を読み出し、前記ディスクの識別子は、前記第1のディスクにある前記セグメントのうちの前記1つと関連付けられて格納されること
    とをさらに備える、請求項7に記載の方法。
  11. 前記マニフェスト内で第2の消失セットを識別し、前記第2の消失セットは複数の第2の一意的なセグメント識別子を含み、
    前記セグメントを用いて前記デジタルオブジェクトを再構築し、複数の第2のセグメントは、前記第2の一意的なセグメント識別子、および前記消失符号付加アルゴリズムによって識別されること
    とをさらに備える、請求項7に記載の方法。
  12. 前記マニフェストは、前記ストレージクラスタ内で複製され、前記マニフェストは、消失符号付加を用いて前記ストレージクラスタ内には格納されない、請求項7に記載の方法。
  13. 前記デジタルオブジェクトは、前記ストレージクラスタ内で複製されない、請求項7に記載の方法。
  14. 障害のあるディスクから回復する方法であって、
    複数のコンピュータノードを有するストレージクラスタ内で、前記ノードのうちの1つの第1のディスクに障害があることを検知し、
    前記ストレージクラスタの第2のディスクの永続的なストレージ領域をスキャンして前記障害のあるディスクの一意識別子を発見し、前記一意識別子は前記ストレージクラスタのデジタルストリーム関連付けられており、
    複製または消失符号付加を用いて、前記デジタルストリームを前記ストレージクラスタ内に格納するか否かを判断し、
    消失符号付加を用いて前記デジタルストリームを格納すると判断された場合、前記障害のあるディスクに以前格納された喪失セグメントを識別し、
    前記ストレージクラスタ内において複数の他のセグメントを見つけ出し、前記複数のセグメントは前記デジタルストリームを含み、
    前記複数の他のセグメントおよび消失符号付加アルゴリズムを用いて、前記障害のあるディスクに以前格納された前記喪失セグメントを再生し、
    前記再生されたセグメントを前記ストレージクラスタのコンピュータノードに格納すること
    を備える、方法。
  15. 前記デジタルストリームのメタデータセクションをスキャンして、前記複数の他のセグメントに対する一意識別子を発見すること
    をさらに備える、請求項14に記載の方法。
  16. 前記第2のディスクの前記永続的なストレージ領域をスキャンすることは、前記デジタルストリームに対するジャーナルエントリをスキャンすることを含むこと
    をさらに備える、請求項14に記載の方法。
  17. 前記ジャーナルエントリを参照することにより、消失符号付加を用いて前記デジタルストリームを格納するか否かを判断すること
    をさらに備える、請求項16に記載の方法。
  18. 前記喪失セグメントを含む消失符号付加を用いて、ストレージクラスタの外部から前記ストレージクラスタ内に格納されているデジタルオブジェクトについての要求を受け取る前に、前記障害のあるディスクに以前格納された前記喪失セグメントを識別すること
    をさら備える、請求項14に記載の方法。
  19. 前記喪失セグメントは、前記ストレージクラスタ内では複製されない、請求項14に記載の方法。
  20. セグメントをストレージクラスタ内で再配置する方法であって、
    コンピュータノードの第1のディスク上にあるセグメントをストレージクラスタ内で識別し、前記セグメントは、前記ストレージクラスタ内で格納されているデジタルオブジェクトを表す複数のセグメントのうちの1つであり、
    前記ストレージクラスタの前記第1のディスクから第2のディスクへ前記セグメントを再配置し、前記第2のディスクは一意的なディスク識別子によって識別され、
    前記セグメントのメタデータから前記複数のセグメントのシブリングセグメントについての一意識別子を回収し、前記シブリングセグメントは、そのメタデータ内に前記第1のディスクに対する一意的なディスク識別子を含み、
    前記一意識別子を用いて前記シブリングセグメントを前記ストレージクラスタ内で見つけ出し、
    前記シブリングセグメントの前記メタデータ内で、前記第1のディスクについての前記一意的なディスク識別子を前記第2のディスクについての一意的なディスク識別子に入れ替え、前記シブリングセグメントの前記メタデータは、前記セグメントが再配置された先のディスクを示すこと
    とをさらに備える、方法。
  21. ストレージクラスタ内でデジタルオブジェクトを変換する方法であって、
    前記ストレージクラスタ内の前記デジタルオブジェクトを、ビットの連続ストリームとしてコンピュータノードの単一のディスク上に格納し、前記デジタルオブジェクトは、前記ストレージクラスタ内で一意識別子を有し、
    前記格納の後に、前記デジタルオブジェクトを消失符号付加ストレージ方式に変換する要求を示す前記ストレージクラスタのメタデータを識別し、
    前記ストレージクラスタのコンピュータノードを用いて前記単一のディスクから前記デジタルオブジェクトを読み出し、
    前記消失符号付加ストレージ方式を用いて、前記デジタルオブジェクトを前記ストレージクラスタの複数のディスクに書き込み、
    前記消失符号付加ストレージ方式で書き込まれた前記デジタルオブジェクトについての前記一意識別子を保持し、これにより、クライアントアプリケーションは、前記一意識別子を用いて前記消失符号付加ストレージ方式で書き込まれた前記デジタルオブジェクトを検索可能であること
    を備える、方法。
  22. ストレージクラスタ内でデジタルオブジェクトを変換する方法であって、
    前記ストレージクラスタ内の前記デジタルオブジェクトを第1の消失符号付加ストレージ方式で格納し、前記デジタルオブジェクトは、前記ストレージクラスタ内で一意識別子を有し
    前記格納の後に、前記デジタルオブジェクトを第2の消失符号付加ストレージ方式に変換する要求を示す前記ストレージクラスタのメタデータを識別し、
    前記ストレージクラスタのコンピュータノードを用いて前記ストレージクラスタから前記デジタルオブジェクトを読み出し、
    前記第2の消失符号付加ストレージ方式を用いて、前記デジタルオブジェクトを前記ストレージクラスタに書き込み、
    前記第2の消失符号付加ストレージ方式で書き込まれた前記デジタルオブジェクトについての前記一意識別子を保持し、クライアントアプリケーションは、前記一意識別子を用いて前記第2の消失符号付加ストレージ方式で書き込まれた前記デジタルオブジェクトを検索可能であること
    を含備える、方法。
  23. ストレージクラスタ内でデジタルオブジェクトを変換する方法であって、
    前記ストレージクラスタ内の前記デジタルオブジェクトを消失符号付加ストレージ方式で格納し、前記デジタルオブジェクトが、前記ストレージクラスタ内で一意識別子を有し、
    前記格納の後に、複製を用いて前記デジタルオブジェクトをストレージ方式に変換する要求を示す前記ストレージクラスタのメタデータを識別し、
    前記ストレージクラスタのコンピュータノードを用いて前記ストレージクラスタから前記デジタルオブジェクトを読み出し、
    前記ストレージクラスタのコンピュータノードの単一のディスクに前記デジタルオブジェクトをビットの連続ストリームとして書き込み、
    前記ビットの連続ストリームとして書き込まれた前記デジタルオブジェクトについての前記一意識別子を保持し、クライアントアプリケーションは、前記一意識別子を用いて前記ビットの連続ストリームとして書き込まれた前記デジタルオブジェクトを検索可能であること
    とを備える、方法。
  24. ソースストレージクラスタからターゲットストレージクラスタにデジタルオブジェクトをコピーする方法であって、
    前記ターゲットクラスタのターゲットノードにいて、前記ソースクラスタから前記ターゲットクラスタに前記デジタルオブジェクトをコピーするための命令を受け取り、前記命令は、前記ソースクラスタのソースノードのアドレスを含み、
    前記デジタルオブジェクトを前記ターゲットクラスタに格納する先のターゲット変換方式を決定し、
    前記ソースクラスタから前記デジタルオブジェクトを読み出し、前記デジタルオブジェクトは、ソース変換方式で格納され、前記ソースクラスタ内に一意識別子を有し、
    前記ターゲット変換方式を用いて前記デジタルオブジェクトを前記ターゲットクラスタに格納し、前記一意識別子を用いて前記デジタルオブジェクトは前記一意識別子を用いて格納されること
    を備える、方法。
  25. 前記ターゲット変換方式は、前記ソース変換方式とは異なる、請求項24に記載の方法。
  26. 前記ソース変換方式は、複製または消失符号付加である、請求項24に記載の方法。
  27. 前記デジタルオブジェクトのメタデータを参照するか前記ターゲットクラスタの設定を参照して、前記ターゲット変換方式を決定することを更に備える、請求項24に記載の方法。
  28. 前記ターゲットクラスタは、前記ソースクラスタとは異なるストレージ方式を実装する、請求項24に記載の方法。
JP2015517293A 2012-06-13 2013-06-04 ストレージクラスタにおける消失符号付加および複製 Active JP6280108B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/517,527 2012-06-13
US13/517,527 US8799746B2 (en) 2012-06-13 2012-06-13 Erasure coding and replication in storage clusters
PCT/US2013/044045 WO2013188169A1 (en) 2012-06-13 2013-06-04 Erasure coding and replication in storage clusters

Publications (3)

Publication Number Publication Date
JP2015519674A true JP2015519674A (ja) 2015-07-09
JP2015519674A5 JP2015519674A5 (ja) 2016-07-07
JP6280108B2 JP6280108B2 (ja) 2018-02-14

Family

ID=49757125

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015517293A Active JP6280108B2 (ja) 2012-06-13 2013-06-04 ストレージクラスタにおける消失符号付加および複製

Country Status (7)

Country Link
US (4) US8799746B2 (ja)
EP (1) EP2862085A4 (ja)
JP (1) JP6280108B2 (ja)
CN (1) CN104541251B (ja)
AU (1) AU2013274626A1 (ja)
CA (1) CA2876638A1 (ja)
WO (1) WO2013188169A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017142605A (ja) * 2016-02-09 2017-08-17 株式会社日立製作所 バックアップリストアシステム及びリストア方法
JP2018116704A (ja) * 2017-01-20 2018-07-26 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージシステム及びその動作方法
JP2018156656A (ja) * 2017-03-20 2018-10-04 三星電子株式会社Samsung Electronics Co.,Ltd. 仮想装置階層を利用した複数のメモリ装置を含む仮想装置に対する客体の格納及び読み取り方法とこれを用いたストレージ装置
KR20190088873A (ko) * 2018-01-19 2019-07-29 삼성전자주식회사 대형 키 밸류 객체들을 저장하는 시스템 및 방법
JP2019128959A (ja) * 2018-01-19 2019-08-01 三星電子株式会社Samsung Electronics Co.,Ltd. キーバリューデータ信頼性システム、そのデータ格納方法、及び、その方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体
JP2020518934A (ja) * 2017-06-08 2020-06-25 ヒタチ ヴァンタラ コーポレーションHitachi Vantara Corporation 地理的に分散したオブジェクトデータの高速呼び戻し
JP2022512064A (ja) * 2018-10-15 2022-02-02 ネットアップ,インコーポレイテッド 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
JP2022169072A (ja) * 2021-04-27 2022-11-09 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム

Families Citing this family (280)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8510267B2 (en) * 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9146969B2 (en) * 2012-11-26 2015-09-29 The Boeing Company System and method of reduction of irrelevant information during search
US9558206B2 (en) * 2013-02-25 2017-01-31 Datadirect Networks, Inc. Asymmetric distributed data storage system
US9354991B2 (en) * 2013-06-25 2016-05-31 Microsoft Technology Licensing, Llc Locally generated simple erasure codes
US9313021B2 (en) * 2013-08-29 2016-04-12 National Chiao Tung University Secret communication method with self-authentication capability
KR102238590B1 (ko) * 2013-11-29 2021-04-09 삼성전자주식회사 데이터 패킷 전송의 인증 및 검증 방법, 및 상기 방법을 수행하는 장치들
US10685037B2 (en) * 2013-12-18 2020-06-16 Amazon Technology, Inc. Volume cohorts in object-redundant storage systems
US10620830B2 (en) * 2013-12-18 2020-04-14 Amazon Technologies, Inc. Reconciling volumelets in volume cohorts
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9344120B2 (en) * 2014-02-13 2016-05-17 Quantum Corporation Adjusting redundancy in an erasure code object store to account for varying data value
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9612952B2 (en) 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9213485B1 (en) * 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
EP3152662B1 (en) * 2014-06-04 2019-04-24 Pure Storage, Inc. Mechanism for persisting messages in a storage system
AU2015269370B2 (en) * 2014-06-04 2019-06-06 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9218244B1 (en) * 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10853311B1 (en) * 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9817750B2 (en) * 2014-07-03 2017-11-14 Pure Storage, Inc. Profile-dependent write placement of data into a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) * 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9923970B2 (en) * 2014-08-22 2018-03-20 Nexenta Systems, Inc. Multicast collaborative erasure encoding and distributed parity protection
US20160219120A1 (en) * 2015-01-23 2016-07-28 Netapp, Inc. Methods for providing a staging area for objects prior to erasure coding and devices thereof
US9665428B2 (en) * 2015-02-05 2017-05-30 Netapp, Inc. Distributing erasure-coded fragments in a geo-distributed storage system
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) * 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US9734028B2 (en) * 2015-06-29 2017-08-15 International Business Machines Corporation Reverse resynchronization by a secondary data source when a data destination has more recent data
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US9898470B2 (en) * 2015-08-05 2018-02-20 Bank Of America Corporation Transferring archived data
US10929431B2 (en) 2015-08-28 2021-02-23 Hewlett Packard Enterprise Development Lp Collision handling during an asynchronous replication
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
CN107850983B (zh) * 2015-09-11 2020-11-03 株式会社日立制作所 计算机***、存储装置和数据的管理方法
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10360119B2 (en) 2015-10-06 2019-07-23 Netapp, Inc. Data recovery in a distributed storage system
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
EP3430515B1 (en) 2016-03-15 2021-09-22 Datomia Research Labs Ou Distributed storage system data management and security
US10931402B2 (en) 2016-03-15 2021-02-23 Cloud Storage, Inc. Distributed storage system data management and security
US9916478B2 (en) * 2016-03-24 2018-03-13 Netapp, Inc. Data protection enhancement using free space
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10552038B2 (en) * 2016-05-13 2020-02-04 International Business Machines Corporation Object storage architecture based on file_heat
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
AU2017274321B2 (en) * 2016-06-01 2020-01-02 Archive360, Inc. Methods and systems for archiving and retrieving data
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US10547681B2 (en) 2016-06-30 2020-01-28 Purdue Research Foundation Functional caching in erasure coded storage
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10348807B2 (en) * 2016-07-28 2019-07-09 Caringo Inc. Multi-part upload
AT518910B1 (de) * 2016-08-04 2018-10-15 Ait Austrian Inst Tech Gmbh Verfahren zur Prüfung der Verfügbarkeit und Integrität eines verteilt gespeicherten Datenobjekts
US10191809B2 (en) * 2016-08-17 2019-01-29 International Business Machines Corporation Converting a data chunk into a ring algebraic structure for fast erasure coding
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN106685426B (zh) * 2016-11-28 2021-02-09 北京航天自动控制研究所 一种目标信息的编码方法
US11269888B1 (en) * 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10268538B2 (en) 2016-11-28 2019-04-23 Alibaba Group Holding Limited Efficient and enhanced distributed storage clusters
US10740288B2 (en) * 2016-12-02 2020-08-11 International Business Machines Corporation Accessing objects in an erasure code supported object storage environment
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
CN108628539B (zh) * 2017-03-17 2021-03-26 杭州海康威视数字技术股份有限公司 数据存储、分散、重构、回收方法、装置及数据处理***
US10621055B2 (en) 2017-03-28 2020-04-14 Amazon Technologies, Inc. Adaptive data recovery for clustered data devices
US11356445B2 (en) 2017-03-28 2022-06-07 Amazon Technologies, Inc. Data access interface for clustered devices
US10530752B2 (en) * 2017-03-28 2020-01-07 Amazon Technologies, Inc. Efficient device provision
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10275180B2 (en) * 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10579284B2 (en) 2017-06-02 2020-03-03 International Business Machines Corporation Filesystem enhancements for unified file and object access in an object storage cloud
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
JP6807457B2 (ja) * 2017-06-15 2021-01-06 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US10310943B2 (en) 2017-06-16 2019-06-04 Microsoft Technology Licensing, Llc Distributed data object management system
US11003532B2 (en) 2017-06-16 2021-05-11 Microsoft Technology Licensing, Llc Distributed data object management system operations
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
JP6733620B2 (ja) * 2017-07-12 2020-08-05 京セラドキュメントソリューションズ株式会社 画像読取装置、及び画像読取方法
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10700711B1 (en) * 2017-11-03 2020-06-30 Caringo Inc. Multi-part upload and editing of erasure-coded objects
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
CN110018783B (zh) 2018-01-09 2022-12-20 阿里巴巴集团控股有限公司 一种数据存储方法、装置及***
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10901845B2 (en) * 2018-04-16 2021-01-26 Microsoft Technology Licensing, Llc Erasure coding for a single-image memory
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10572173B2 (en) * 2018-07-10 2020-02-25 EMC IP Holding Company LLC Data management in an elastic cloud storage environment
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
WO2020041390A1 (en) 2018-08-21 2020-02-27 John Rankin System and method for scattering network traffic across a number of disparate hosts
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US20200117362A1 (en) * 2018-10-15 2020-04-16 Netapp, Inc. Erasure coding content driven distribution of data blocks
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) * 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11989320B2 (en) 2018-12-19 2024-05-21 Rankin Labs, Llc Hidden electronic file system within non-hidden electronic file system
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
JP6947717B2 (ja) * 2018-12-27 2021-10-13 株式会社日立製作所 ストレージシステム
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US11586595B1 (en) * 2019-01-11 2023-02-21 Amazon Technologies, Inc. Space-efficient techniques for generating unique instances of data objects
US11544387B2 (en) * 2019-01-16 2023-01-03 International Business Machines Corporation Hash protection within an object storage library
US11334456B1 (en) * 2019-01-18 2022-05-17 EMC IP Holding Company LLC Space efficient data protection
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10764135B2 (en) 2019-01-29 2020-09-01 Dell Products L.P. Method and system for solution integration labeling
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10740023B1 (en) 2019-01-29 2020-08-11 Dell Products L.P. System and method for dynamic application access-based mapping
US10972343B2 (en) 2019-01-29 2021-04-06 Dell Products L.P. System and method for device configuration update
US10901641B2 (en) 2019-01-29 2021-01-26 Dell Products L.P. Method and system for inline deduplication
EP3918484A4 (en) 2019-01-29 2023-03-29 Cloud Storage, Inc. METHOD FOR REPAIRING ENCODE AND MEMORY NODES FOR MINIMUM MEMORY REGENERATION CODES FOR DISTRIBUTED MEMORY SYSTEMS
US10979312B2 (en) 2019-01-29 2021-04-13 Dell Products L.P. System and method to assign, monitor, and validate solution infrastructure deployment prerequisites in a customer data center
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US11442642B2 (en) * 2019-01-29 2022-09-13 Dell Products L.P. Method and system for inline deduplication using erasure coding to minimize read and write operations
US20200241781A1 (en) 2019-01-29 2020-07-30 Dell Products L.P. Method and system for inline deduplication using erasure coding
US10747522B1 (en) 2019-01-29 2020-08-18 EMC IP Holding Company LLC Method and system for non-disruptive host repurposing
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10911307B2 (en) 2019-01-29 2021-02-02 Dell Products L.P. System and method for out of the box solution-level configuration and diagnostic logging and reporting
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US10936218B2 (en) * 2019-04-18 2021-03-02 EMC IP Holding Company LLC Facilitating an out-of-order transmission of segments of multi-segment data portions for distributed storage devices
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11729184B2 (en) 2019-05-28 2023-08-15 Rankin Labs, Llc Detecting covertly stored payloads of data within a network
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US10963345B2 (en) 2019-07-31 2021-03-30 Dell Products L.P. Method and system for a proactive health check and reconstruction of data
US11609820B2 (en) 2019-07-31 2023-03-21 Dell Products L.P. Method and system for redundant distribution and reconstruction of storage metadata
US11328071B2 (en) 2019-07-31 2022-05-10 Dell Products L.P. Method and system for identifying actor of a fraudulent action during legal hold and litigation
US11372730B2 (en) 2019-07-31 2022-06-28 Dell Products L.P. Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool
US11775193B2 (en) 2019-08-01 2023-10-03 Dell Products L.P. System and method for indirect data classification in a storage system operations
CN111399755A (zh) * 2019-09-10 2020-07-10 杭州海康威视***技术有限公司 数据存储管理的方法和装置
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11537725B2 (en) * 2019-09-23 2022-12-27 Amazon Technologies, Inc. Encrypted cross-zone replication for cross-zone replicated block storage devices
US11494108B2 (en) * 2019-09-23 2022-11-08 Amazon Technologies, Inc. Cross-zone replicated block storage devices
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
CN111212111B (zh) * 2019-12-17 2022-05-13 腾讯科技(深圳)有限公司 对象存储服务管理方法及电子设备
WO2021127320A1 (en) * 2019-12-18 2021-06-24 John Rankin Distribution of data over a network with interconnected rings
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11210002B2 (en) 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding
US11514181B2 (en) * 2020-02-12 2022-11-29 Netapp, Inc. Bin syncing technique for multiple data protection schemes
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11416357B2 (en) 2020-03-06 2022-08-16 Dell Products L.P. Method and system for managing a spare fault domain in a multi-fault domain data cluster
US11175842B2 (en) 2020-03-06 2021-11-16 Dell Products L.P. Method and system for performing data deduplication in a data pipeline
US11281535B2 (en) 2020-03-06 2022-03-22 Dell Products L.P. Method and system for performing a checkpoint zone operation for a spare persistent storage
US11301327B2 (en) 2020-03-06 2022-04-12 Dell Products L.P. Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster
US11119858B1 (en) 2020-03-06 2021-09-14 Dell Products L.P. Method and system for performing a proactive copy operation for a spare persistent storage
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US20210334241A1 (en) * 2020-04-24 2021-10-28 Netapp, Inc. Non-disrputive transitioning between replication schemes
US11418326B2 (en) 2020-05-21 2022-08-16 Dell Products L.P. Method and system for performing secure data transactions in a data cluster
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
CN114327239A (zh) * 2020-09-27 2022-04-12 伊姆西Ip控股有限责任公司 存储和访问数据的方法、电子设备和计算机程序产品
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11561856B2 (en) 2020-12-10 2023-01-24 Nutanix, Inc. Erasure coding of replicated data blocks
WO2022128080A1 (en) * 2020-12-16 2022-06-23 Huawei Technologies Co., Ltd. Storing data in computer storage
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11726779B2 (en) * 2021-11-03 2023-08-15 Sap Se Code simplification system
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US20230237020A1 (en) * 2022-01-24 2023-07-27 Cohesity, Inc. Container-based erasure coding
US20240111432A1 (en) * 2022-10-04 2024-04-04 Scality, S.A. Erasure coding implementation with reduced parity calculation overhead

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141123A (ja) * 1993-09-27 1995-06-02 Hitachi Ltd アレイ型ディスクシステムおよびアレイ型ディスクシステムの制御方法
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
WO2004046971A1 (en) * 2002-11-14 2004-06-03 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US20090119395A1 (en) * 2007-11-01 2009-05-07 Hitachi, Ltd. Information processing system and data management method
US20110029840A1 (en) * 2009-07-31 2011-02-03 Microsoft Corporation Erasure Coded Storage Aggregation in Data Centers
US20120047111A1 (en) * 2010-08-18 2012-02-23 Hayden Mark G Method and system for parity-page distribution among nodes of a multi-node data-storage system
US20120060072A1 (en) * 2010-09-08 2012-03-08 Microsoft Corporation Erasure coding immutable data

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740465A (en) * 1992-04-08 1998-04-14 Hitachi, Ltd. Array disk controller for grouping host commands into a single virtual host command
EP0826181A4 (en) 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6795903B2 (en) 2002-01-17 2004-09-21 Thomas Licensing S.A. System and method for searching for duplicate data
US7577816B2 (en) 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
US6922766B2 (en) 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US20040153841A1 (en) 2003-01-16 2004-08-05 Silicon Graphics, Inc. Failure hierarchy in a cluster filesystem
US7373345B2 (en) 2003-02-21 2008-05-13 Caringo, Inc. Additional hash functions in content-based addressing
US7363462B2 (en) 2003-04-04 2008-04-22 Sun Microsystems, Inc. Performing virtual to global address translation in processing subsystem
US7765381B2 (en) 2003-04-04 2010-07-27 Oracle America, Inc. Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
US7069392B2 (en) 2003-06-12 2006-06-27 Newisys, Inc. Methods and apparatus for extended packet communications between multiprocessor clusters
US7310703B2 (en) * 2003-10-23 2007-12-18 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7284088B2 (en) * 2003-10-23 2007-10-16 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
US7546342B2 (en) * 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US7552356B1 (en) * 2004-06-30 2009-06-23 Sun Microsystems, Inc. Distributed data storage system for fixed content
US7681105B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7778972B1 (en) 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
US7734603B1 (en) 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
BRPI0604440B1 (pt) 2006-10-10 2018-07-10 EMBRAER - Empresa Brasileira de Aeronáutica S.A. Configuração aplicada em sistema para controle da autoridade do leme de uma aeronave
US7917469B2 (en) 2006-11-08 2011-03-29 Hitachi Data Systems Corporation Fast primary cluster recovery
US7590672B2 (en) 2006-12-11 2009-09-15 Bycast Inc. Identification of fixed content objects in a distributed fixed content storage system
US8090792B2 (en) * 2007-03-08 2012-01-03 Nec Laboratories America, Inc. Method and system for a self managing and scalable grid storage
KR100905218B1 (ko) 2007-04-09 2009-07-01 삼성전자주식회사 애드혹 네트워크에서 콘텐츠 중복 검출 방법
US7979645B2 (en) 2007-09-14 2011-07-12 Ricoh Company, Limited Multiprocessor system for memory mapping of processing nodes
US20090089537A1 (en) 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes
US7747663B2 (en) 2008-03-05 2010-06-29 Nec Laboratories America, Inc. System and method for content addressable storage
US8255430B2 (en) 2008-08-26 2012-08-28 Caringo, Inc. Shared namespace for storage clusters
US20100235409A1 (en) 2009-03-10 2010-09-16 Global Relay Communications Inc. System and method for managing data stored in a data network
US8069366B1 (en) 2009-04-29 2011-11-29 Netapp, Inc. Global write-log device for managing write logs of nodes of a cluster storage system
US8296515B1 (en) * 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
US8918365B2 (en) 2009-06-19 2014-12-23 Blekko, Inc. Dedicating disks to reading or writing
JP5255127B2 (ja) 2009-06-26 2013-08-07 株式会社日立製作所 ストレージシステム、及びストレージシステムの制御方法
CN102549524B (zh) 2009-07-20 2015-05-06 卡林戈公司 存储集群中的自适应功率保存
US8132043B2 (en) 2009-12-17 2012-03-06 Symantec Corporation Multistage system recovery framework
WO2011083508A1 (en) 2010-01-05 2011-07-14 Hitachi,Ltd. Storage system and its file management method
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8504535B1 (en) * 2010-12-20 2013-08-06 Amazon Technologies, Inc. Erasure coding and redundant replication
US20120266044A1 (en) * 2011-04-18 2012-10-18 The Chinese University Of Hong Kong Network-coding-based distributed file system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
JPH07141123A (ja) * 1993-09-27 1995-06-02 Hitachi Ltd アレイ型ディスクシステムおよびアレイ型ディスクシステムの制御方法
WO2004046971A1 (en) * 2002-11-14 2004-06-03 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
JP2010044789A (ja) * 2002-11-14 2010-02-25 Isilon Systems Inc 分散ファイルシステムにおけるファイルの再ストライピングのためのシステム及び方法
US20090119395A1 (en) * 2007-11-01 2009-05-07 Hitachi, Ltd. Information processing system and data management method
JP2009116414A (ja) * 2007-11-01 2009-05-28 Hitachi Ltd 情報処理システム及びデータ管理方法
US20110029840A1 (en) * 2009-07-31 2011-02-03 Microsoft Corporation Erasure Coded Storage Aggregation in Data Centers
US20120047111A1 (en) * 2010-08-18 2012-02-23 Hayden Mark G Method and system for parity-page distribution among nodes of a multi-node data-storage system
US20120060072A1 (en) * 2010-09-08 2012-03-08 Microsoft Corporation Erasure coding immutable data

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017142605A (ja) * 2016-02-09 2017-08-17 株式会社日立製作所 バックアップリストアシステム及びリストア方法
JP2018116704A (ja) * 2017-01-20 2018-07-26 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージシステム及びその動作方法
CN108334285A (zh) * 2017-01-20 2018-07-27 三星电子株式会社 存储***和操作存储***的方法
CN108334285B (zh) * 2017-01-20 2023-04-18 三星电子株式会社 存储***和操作存储***的方法
US11429487B2 (en) 2017-01-20 2022-08-30 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
JP7002346B2 (ja) 2017-01-20 2022-01-20 三星電子株式会社 ストレージシステム及びその動作方法
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
JP2018156656A (ja) * 2017-03-20 2018-10-04 三星電子株式会社Samsung Electronics Co.,Ltd. 仮想装置階層を利用した複数のメモリ装置を含む仮想装置に対する客体の格納及び読み取り方法とこれを用いたストレージ装置
US11288119B2 (en) 2017-03-20 2022-03-29 Samsung Electronics Co., Ltd. Key value SSD
JP2020518934A (ja) * 2017-06-08 2020-06-25 ヒタチ ヴァンタラ コーポレーションHitachi Vantara Corporation 地理的に分散したオブジェクトデータの高速呼び戻し
JP2019128959A (ja) * 2018-01-19 2019-08-01 三星電子株式会社Samsung Electronics Co.,Ltd. キーバリューデータ信頼性システム、そのデータ格納方法、及び、その方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体
JP2019128960A (ja) * 2018-01-19 2019-08-01 三星電子株式会社Samsung Electronics Co.,Ltd. データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法
JP7140688B2 (ja) 2018-01-19 2022-09-21 三星電子株式会社 データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法
KR102460568B1 (ko) 2018-01-19 2022-10-31 삼성전자주식회사 대형 키 밸류 객체들을 저장하는 시스템 및 방법
JP7171452B2 (ja) 2018-01-19 2022-11-15 三星電子株式会社 キーバリューデータ信頼性システム、そのデータ格納方法、及び、その方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体
KR20190088873A (ko) * 2018-01-19 2019-07-29 삼성전자주식회사 대형 키 밸류 객체들을 저장하는 시스템 및 방법
JP2022512064A (ja) * 2018-10-15 2022-02-02 ネットアップ,インコーポレイテッド 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
JP7312251B2 (ja) 2018-10-15 2023-07-20 ネットアップ,インコーポレイテッド 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
JP2022169072A (ja) * 2021-04-27 2022-11-09 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム
US11762741B2 (en) 2021-04-27 2023-09-19 Hitachi, Ltd. Storage system, storage node virtual machine restore method, and recording medium
JP7355778B2 (ja) 2021-04-27 2023-10-03 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム

Also Published As

Publication number Publication date
US20150019937A1 (en) 2015-01-15
EP2862085A4 (en) 2016-03-09
CA2876638A1 (en) 2013-12-19
JP6280108B2 (ja) 2018-02-14
CN104541251A (zh) 2015-04-22
US20170351575A1 (en) 2017-12-07
WO2013188169A1 (en) 2013-12-19
AU2013274626A1 (en) 2015-01-22
EP2862085A1 (en) 2015-04-22
US8799746B2 (en) 2014-08-05
CN104541251B (zh) 2017-09-05
US20150363269A1 (en) 2015-12-17
US9148174B2 (en) 2015-09-29
US20130339818A1 (en) 2013-12-19
US9916198B2 (en) 2018-03-13
US10437672B2 (en) 2019-10-08

Similar Documents

Publication Publication Date Title
JP6280108B2 (ja) ストレージクラスタにおける消失符号付加および複製
US10725884B2 (en) Object storage system for an unreliable storage medium
US10649827B2 (en) Two level addressing in storage clusters
US20170308437A1 (en) Parity protection for data chunks in an object storage system
US9330137B2 (en) Cloud data backup storage manager
US20150347435A1 (en) Methods and Apparatus for Distributed Data Storage
US10700711B1 (en) Multi-part upload and editing of erasure-coded objects

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160520

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160520

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171205

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180118

R150 Certificate of patent or registration of utility model

Ref document number: 6280108

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250