JP6670311B2 - 分散ストレージのための多重イレージャーコード - Google Patents

分散ストレージのための多重イレージャーコード Download PDF

Info

Publication number
JP6670311B2
JP6670311B2 JP2017533887A JP2017533887A JP6670311B2 JP 6670311 B2 JP6670311 B2 JP 6670311B2 JP 2017533887 A JP2017533887 A JP 2017533887A JP 2017533887 A JP2017533887 A JP 2017533887A JP 6670311 B2 JP6670311 B2 JP 6670311B2
Authority
JP
Japan
Prior art keywords
code
data
erasure
data access
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017533887A
Other languages
English (en)
Other versions
JP2018507462A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2018507462A publication Critical patent/JP2018507462A/ja
Application granted granted Critical
Publication of JP6670311B2 publication Critical patent/JP6670311B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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]
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product 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/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
    • 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/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、劣化した読み取りおよび破損したディスクまたはノードの再構築の回復コストを最適化するための高速コード(fast code)と、低い限定されたストレージ・オーバーヘッドを提供するためのコンパクトコードとを含む、2つの異なるイレージャーコードを用いることによって、作業負荷の変化に適応する新規のイレージャーコード化ストレージ・システムに関する。さらに具体的には、本発明は、これら2つのコードの間で、データ・ブロックを効率的にアップコード(upcode)およびダウンコード(downcode)するための変換メカニズムに関する。
複数ペタバイトのデータを格納する分散ストレージ・システムが当たり前になってきている。これらのシステムは、信頼性の低いコンポーネント、ソフトウェア誤作動、マシン再起動、および保守作業から生ずるいろいろな不具合に耐性がなければならない。こういった不具合にかかわらず高い信頼性および可用性を保証するために、データは複数のマシンに亘って複製される。例えば、一部のシステムでは各データ・ブロックの3つのコピーを維持することが知られている。ディスクのストレージは比較的に費用が掛からないが、大規模なオペレーションでの全データ・フットプリントの複写は実行不可能である。
多くの大規模分散ストレージ・システムは、イレージャーコードの使用に移行しつつあり、これらのコードの使用は、低廉なストレージ・コストで高い信頼性を提供することが知られている。これらのシステムは、回復コストもしくはストレージ・オーバーヘッドのいずれかを最適化する単一のイレージャーコードを使用する。しかしながら、イレージャーコード化システムに対しては、利用できないブロックの再構築は、符号ストライプ内に多くのデータおよびパリティ・ブロックをフェッチすることが必要で、これはディスクおよびネットワークのトラフィックの増加をもたらす。イレージャーコード化システムに対する回復の過程で読み取り伝送されることになるデータの量の増加は、高い劣化読み取り遅延およびより長い再構築時間をもたらす。
本発明は、ストレージ・システムにおいてイレージャーコードを動的に選択するための方法、コンピュータ・プログラム製品、およびシステムを含む。
イレージャーコードを選択し、選択されたコードを使ってファイルをエンコードし、基準に応じてそのファイルを異なるイレージャーコードに動的に変換するための、方法、コンピュータ・プログラム製品、およびシステムが提供される。これらのイレージャーコードは、頻繁にアクセスされるデータに対する高速リカバリコードと、アクセス頻度の低いデータに対する高効率ストレージコードとを含む。イレージャーコードは、当初は最近に生成されたファイルに対して選択され、関連するデータは、その選択されたイレージャーコードを使ってエンコードされる。同時に、エンコードされたデータへの読み取りアクセスがトラッキングされ、1つの実施形態において、これはデータ・アクセスの状態トラッキングと言われる。設けられるイレージャーコードは、トラッキングされたデータ・アクセス状態に基づいて適応的に選択される。
1つの態様において、本方法、コンピュータ・プログラム製品、およびシステムは、イレージャーコードの間での動的な変換をサポートすることができる。すなわち、1回以上の変化に応じて、高速リカバリコードでエンコードされたファイルを、高効率ストレージコードに変換することができる。同じように、高効率ストレージコードでエンコードされたファイルを、高速リカバリコードに変換することも可能である。この変換を引き起こし得る変化には、トラッキングされるデータ状態の変化を含めることができる。同様に、この変換を引き起こし得る変化には、グローバル状態の変化を含めることも可能である。
他の特徴および利点は、添付の図面と併せ、本発明の好適な実施形態(群)の以降の詳細な説明によって明らかとなろう。
本明細書で参照される図面は本明細書の一部を形成する。図面中に示された特徴は、別途に明示されているのでなければ、全ての実施形態でなく一部の実施形態だけの例示を意図されている。
分散ファイル・システムの拡張型として実装されたアダプティブコーディング分散ファイル・システム・アーキテクチャのコンポーネントを示すブロック図を表す。 アダプティブコーディング分散ファイル・システムの第一拡張を示すフロー・チャートを表す。 書き込み不活性ファイルに対する2つのイレージャーコードを示す状態図を表す。 作業負荷に適応し、高速コードとコンパクトコードとの間でファイルを動的に変換するためのプロセスを示すフロー・チャートを表す。 三重複製されたファイルに対するアダプティブコーディングモジュールを示す状態図を表す。 本明細書では、PCコンパクトコードからPC高速コードへとも称する、プロダクションコードのコンパクトから高速へのダウンコードを示すブロック図を表す。 PC高速コードからPCコンパクトコードへのアップコードを示すブロック図を表す。 ローカル再構築コード(LRC:local reconstruction codes)を用いるイレージャーコーディングモジュールの構造およびエンコードインターフェースを示すブロック図を表す。 LRCコンパクトコードからLRC高速コードへのダウンコードを示すブロック図を表す。 クラウド・コンピューティング・ノードの一例を表す。 クラウド・コンピューティング環境を表す。 クラウド・コンピューティング環境によって設けられた機能抽象化レイヤのセットを表す。
当然のことながら、本明細書の図面中で一般的に説明され例示される本実施形態(群)のコンポーネントは、相異なる多種多様の構成に配置し設計することが可能である。しかして、これらの図面に提示されている、本装置、システム、および方法の実施形態の以下の詳細な説明は、請求される範囲を限定することは意図されておらず、単に、選択された実施形態を表している。
本明細書を通して、「選択された実施形態」、「1つの実施形態」、または「或る実施形態」についての言及は、当該実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれていることを意味する。しかして、本明細書を通し様々な場所における「選択された実施形態」、「1つの実施形態」、または「或る実施形態」は必ずしも同じ実施形態に言及してはない。
例示されている実施形態は、図面を参照することによって最善に理解されよう。図中の同等部分は、全体を通して同じ番号で指定されている。以下の説明は、単なる例示を意図されたものであり、本明細書で請求された諸実施形態に合致するデバイス、システム、およびプロセスのいくつかの選択された実施形態を単に例証するものである。
イレージャーコード化は、データが断片に分割され、拡張され、冗長片とともにエンコードされ、通常、ディスク、ストレージ・ノードまたは地理的な位置など相異なる一連の場所に亘って格納される、データ保護の方法である。本明細書で開示される諸実施形態は、同一コードファミリからの2つの異なるイレージャーコードを用いるイレージャーコード化ストレージ・システムに関連する。本明細書で説明するイレージャーコードは、高速コードおよびコンパクトコードと称される。高速コードは、ほんのわずかの頻繁にアクセスされるデータに対する低廉な回復コストを有し、コンパクトコードは、大多数のアクセス頻度の低いデータに対する低いストレージ・オーバーヘッドを有する。
同時に、本明細書で開示される諸実施形態は、これら2つのイレージャーコードの間でデータを変換するためのオペレーションにも関連する。当初のエンコードの後、データを動的に変換する態様は、高速コードとコンパクトコードの間でデータ・ブロックを変換する2つのオペレーションを用いることによって、作業負荷(workload)の変化に適応する。これら2つのオペレーションは、アップコードおよびダウンコードと言われる。アップコードは、当初に高速コードでエンコードされていたデータ・ブロックをコンパクトコードに変換することを言い、システムがストレージ・オーバーヘッドを低減することを可能にする。ダウンコードは、関連回復コストを低減するため、当初コンパクトコードでエンコードされていたデータ・ブロックを高速コード表現に変換することを言う。1つの実施形態において、アップコードおよびダウンコードに関連するオペレーションは、これら2つのコードの間でデータ・ブロックを変換する過程で関連するパリティ・ブロックだけを更新する。データ・ブロックのこのエンコードは、変換メカニズムがシステムの状態に適応的に応答する、さらに具体的には変化する点で、動的である。本エンコードは、この変化に応じて、関連するデータ・ブロックをアップコードまたはダウンコードする。
図1を参照すると、分散ファイル・システムの拡張型として実装されたアダプティブコーディング分散ファイル・システム・アーキテクチャのコンポーネントを示すブロック図(100)が提示されている。この適応システムは、分散ファイル・システム(130)内のRAIDノード(120)の拡張型として示されている。ノード(120)には、バス(124)を介してメモリ(126)と通信している、本明細書では処理ユニットとも称する、プロセッサ(122)が設けられている。ノード(120)には、それぞれが永続ストレージ(128)と通信している他のノード(135)との通信がさらに設けられる。ノード(120)は、永続ストレージ(128)中のデータの保管および維持の役割を有する。さらに具体的には、ノード(120)には、ストレージ・システム中のデータに対するイレージャーコードの動的選択をサポートするための1つ以上のツールが設けられる。本明細書に示され以下で詳細を説明されるように、これらのツールは、システム状態モジュール(150)、アダプティブコーディングモジュール(160)およびイレージャーコーディングモジュール(170)を含む3つのコンポーネントから成る適応システムとして具体化されている。アダプティブコーディングモジュール(160)は、イレージャーコード化データのシステム状態モジュール(150)を維持し、取り込まれ格納されているデータに対する状態移行を管理する。また、アダプティブコーディングモジュール(160)は、異なるエンコードスキームを実装するために機能するイレージャーコーディングモジュール(170)と連動する(162)。
システム状態モジュール(150)は、各イレージャーコード化データ・ファイルに関連するファイル状態、すなわち、ファイル・サイズ、直近の修正時間、読み取りカウント、エンコード状態をトラッキングする。ファイル・サイズおよび直近の修正時間は、分散ファイル・システムによって維持される属性であり、アダプティブコーディング分散ファイル・システムによって、全体のデータ・ストレージおよびファイルの書き込み経過時間を計算するために使われる。また、アダプティブコーディングモジュール(160)は、ファイルの読み取りカウントをトラッキングし、これは、分散ファイル・システムのクライアントによるファイルへの読み取りアクセスの合計回数である。ファイル状態は、分散ファイル・システムのクライアントからファイルに発行された読み取りまたは書き込みオペレーションによって更新することが可能である。
また、アダプティブコーディングモジュール(160)は、グローバル状態も維持し、これはデータおよびパリティのために使用されている総計ストレージである。イレージャーコード化データ・ファイル中のあらゆるブロックは、正確に1つのコピーを有する。各イレージャーコード化ファイルは、相異なるイレージャーコードストライプに分割され、各ストライプ中のブロックは、分散ファイル・システム・クラスタ中の相異なるノードに亘って分散される。各イレージャーコード化データ・ファイルは、関連付けられたパリティ・ファイルを有し、該ファイルのサイズはエンコードスキームによって決まる。システムのグローバル状態は、アダプティブコーディングモジュール(160)がイレージャーコード化ファイルに対する状態移行を開始したときに周期的に更新される。状態移行は、ファイルのエンコード状態の変更に対応し、イレージャーコーディングモジュールへのインターフェースを使って起動される。
イレージャーコーディングモジュール(170)は、エンコード、デコード、アップコード、およびダウンコードを含む、エンコードデータに対する4つのインターフェースをエクスポートする。エンコードオペレーションは、入力としてデータ・ファイルおよびエンコードスキームを必要とし、データ・ファイル中の全ブロックに対するパリティ・ファイルを生成する。デコードオペレーションは、ブロック不具合に対する劣化読み取りによって、またはディスクまたはノードの不具合に対する再構築ジョブの一部として起動される。また、これは、ファイル中の喪失または破損ブロックのインデックスも必要とし、入力エンコードスキームを用いて、ストライプ中の残りのデータおよびパリティ・ブロックから関連する失われたブロックを再構築する。下記の表はイレージャーコード化インターフェースを示す。
Figure 0006670311
アダプティブコーディングモジュール(160)は、作業負荷の変化に適応し、2つのエンコードスキームの間でデータ・ファイルの表現を変換するため、アップコードおよびダウンコードオペレーションを起動する。1つの実施形態において、これら変換オペレーションの両方は、データ・ファイルのエンコードスキームを変更する際に、関連するパリティ・ファイルだけを更新する。アップコードオペレーションはデータを高速コードからコンパクトコード表現に転換し、しかして、より低いストレージ・オーバーヘッドを達成するため、パリティ・ファイルのサイズを低減する。アップコードオペレーションは、データ・ファイルの読み取りを必要とせず、パリティだけの転換である。ダウンコードオペレーションは、コンパクトコードから高速コード表現に転換し、しかして、回復コストを低減する。ダウンコードオペレーションは、データおよびパリティ・ファイル両方の読み取りを必要とするが、パリティ・ファイルだけを変更する。
図2を参照すると、適応的にエンコードされた分散ファイル・システムの第一拡張を示すフロー・チャート(200)が提示されている。最近に生成されたファイルは、その直近の修正書き込み時間に基づいて書き込み活性ファイルとして分類される(202)。書き込み活性ファイルは、三重複製される(204)。書き込みアクセスが、アクセスの設定数を下回って減少したときは、書き込み活性ファイルは書き込み不活性ファイルに再分類される(206)。1つの実施形態において、ファイル・システムは、イレージャーコード化のために書き込み不活性ファイルを選択すべく周期的にスキャンされる。また、各書き込み不活性ファイルは、ファイル中のデータ・ブロックの読み取りアクセスの数に基づいても分類される。さらに具体的には、ファイルの読み取りカウントが確認され(208)、本図に示されているように、書き込み不活性ファイルに対する読み取りカウントが閾値を超えているかどうかが判定される(210)。1つの実施形態において、このアセスメントは、読み取りカウントが閾値より低いかどうかを判定するように、反転することもできる。ステップ(210)での判定に対する肯定応答に続いて、当該書き込み不活性ファイルは読み取り活性ファイルに分類され(212)、該ファイルは高速コードを使ってエンコードされる(214)。1つの実施形態において、高速コードは低廉な回復コストを有する。ステップ(210)での判定に対する否定応答に続いて、当該書き込み不活性ファイルは読み取り不活性ファイルに分類され(216)、該ファイルは低い読み取りカウントを有することが表示される。その後、そのファイルは、コンパクトコードを使ってエンコードされ(218)、これは1つの実施形態において低いストレージ・オーバーヘッドを有する。このように、各書き込み不活性ファイルは、関連する読み取りカウントに基づいてエンコードされ、このエンコードは、該ファイルへの読み取りアクセスの頻度を反映する。
図3を参照すると、書き込み不活性ファイルに対する2つのイレージャーコードを示す状態図(300)が提示されている。図示のように、最近に生成されたファイル(305)は書き込み活性として分類され、三重複製される(310)。ファイルに対する修正が減少したとき、そのファイルは書き込み不活性ファイル(312)に分類される。各書き込み不活性ファイルは、本明細書では読み取りカウントとも言う、読み取りアクセスに基づいて、イレージャーコードを使ってエンコードされる。すなわち、読み取り不活性ファイル(320)は、コンパクトコード(322)によってエンコードされ、読み取り活性ファイル(330)は高速コード(332)によってエンコードされる。
図2および図3中に示されるように、2つの異なるイレージャーコードは、ほんのわずかの頻繁にアクセスされるデータに対しては低廉な回復コストの高速コードを、大多数のアクセス頻度の低いデータに対しては低いストレージ・オーバーヘッドのコンパクトコードを使い、書き込み不活性ファイルを当初にエンコードするのに用いられる。しかしながら、読み取り不活性ファイルは、後のアクセスを通して読み取り活性ファイルに移行し、これにより低廉な回復コストを必要とする可能性があり、読み取り活性ファイルが、アクセスの減少を通して読み取り不活性ファイルに移行し、これにより、より高い回復コストを可能にする必要があることもある。
図4を参照すると、作業負荷に適応し、高速コードとコンパクトコードとの間でファイルを動的に変換するためのプロセスを示すフロー・チャート(400)が提示されている。ファイルに対するこの変換は、例えば読み取りカウントなど、それ自体のファイル状態、および例えば総ストレージなど、グローバルなシステム状態によって導かれる。最初に、データおよびパリティ・ブロックによって消費されたストレージが限度を超えているかどうかが判定される(402)。ステップ(402)での判定に対する肯定応答は、ストレージ・スペースを低減するために1つ以上の高速コード化ファイルのアップコードを開始させる。コンパクトコードを有するファイルが、それらの読み取りカウントに基づいてソートされる(404)。より低い読み取りカウントを有する1つ以上のファイルが、高速イレージャーコードからコンパクトイレージャーコードにアップコードされる(406)。ステップ(406)に続いて、本プロセスは、ステップ(402)でのアセスメント、すなわち、限度に対するストレージ消費を査定することを繰り返す(408)。さらに具体的には、ステップ(408)での反復アセスメントは、ステップ(406)でのアップコードを考慮する上で、さらなるストレージ・スペースが必要かどうかを確認する。さらなるストレージ・スペースが必要な場合、1つ以上の複製ファイルが選択され、直接、コンパクトイレージャーコードにエンコードされ、必要な場合、1つ以上の複製または高速コード化ファイルが、コンパクトイレージャーコードにアップコードされる(410)。1つの実施形態において、ステップ(410)で選択されたファイル(群)はそれらの読み取りカウント(群)に基づいており、総計ストレージ・オーバーヘッドを再度限度内にするべく、最低の読み取りカウントを有するファイルが、コンパクトイレージャーコードにアップコードするため選択される。ステップ(402)で消費ストレージがストレージ・オーバーヘッドの限度を超えていないと判定された場合、または、ステップ(408)で消費ストレージが限度を超えていないと判定された場合、1つ以上のファイルを選択し、コンパクトコード化から高速イレージャーコードに移行させることも可能である(412)。1つの実施形態において、ステップ(412)で選択されたファイル(群)は、関連付けられた読み取りカウントに、具体的には、直近の読み取りアクセスが行われた時点に基づくことができる。高速イレージャーコードへのファイルの変換は、前にコンパクトコード化されていたファイルの、だが1つの実施形態では最近にアクセスされたファイルへの、将来の不具合劣化読み取りの回復コストを低減する。
図5を参照すると、三重複製された(510)最近に生成されたファイル(505)に対するアダプティブコーディングモジュールを示す状態図(500)が提示されている。図3と同様に、ファイルへの修正が減少したときには、そのファイルは書き込み不活性ファイルに再分類される(512)。各書き込み不活性ファイルは、本明細書では読み取りカウントとも称する読み取りアクセスに基づいて、イレージャーコードを使ってエンコードされる。また同時に、このエンコードはストレージ容量限度にも対処する。すなわち、読み取り不活性ファイル(520)は、ストレージ・システムの容量の状態を考慮し、コンパクトコード(522)によってエンコードされ、読み取り活性ファイル(530)は、これもストレージ・システムの容量の状態を考慮しながら、高速コード(532)によってエンコードされる。本図に示された状態図は、適応的でありストレージ・システムの容量に反応する。ストレージ容量が、閾値、例えば限度に達したまたは超えたときは、図4に示され説明されているように、1つ以上のファイルに修正が行われる。さらに具体的には、高速コード化されていた1つ以上の読み取り不活性ファイルがコンパクトコード化される(540)。同様に、ストレージ容量がその限度内にあるときには、コンパクトコード化されていたファイルであった1つ以上の読み取り不活性ファイルを選択し、高速コード化することが可能である(550)。この状態図は、ストレージ容量に対する温度測定として機能し、回復コストとストレージ・オーバーヘッドとをバランスさせるために、2つのイレージャーコードの間で選択ファイルを動的に変換する。アダプティブコーディングモジュールは、システム状態をトラッキングし、異なるエンコードインターフェースを起動する。上記に応じ、この状態図は、高速コードとコンパクトコードとの間で変換を行うことによって作業負荷の変化およびシステム・ストレージに適応するために、イレージャーコード用いることを示す。
適応ファイル・システムイレージャーコーディングモジュールの一部として、プロダクションコードおよびローカル再構築コードを含む2つの新規コードのファミリが用いられる。プロダクションコードは、低廉な回復コストを提供する二次元コードである。図6を参照すると、本明細書では、PCコンパクトコードからPC高速コードへとも称する、プロダクションコードのコンパクトから高速へのダウンコードを示すブロック図(600)が提示されている。このダウンコードオペレーションは、単一のPCコンパクトコード符号(610)を3つのPC高速コード(630)、(640)、および(650)に変換する。PCコンパクトコードと3つのPC高速コード(630)、(640)、および(650)との間では、水平およびグローバル・パリティ・ブロックだけが変化する。図示のように、最初の2つのPC高速コード(630)および(640)中の水平およびグローバル・パリティ・ブロックの計算は、ネットワーク伝送、ならびにPCコンパクトコード符号の2つの水平行中のデータ・ブロックに亘る排他的OR(以降、XOR)オペレーション(660)および(670)、すなわち、行(612)および(614)に対するXOR(660)と、行(616)および(618)に対するXOR(670)とを必要とする。第三PC高速コード(650)中の水平およびグローバル・パリティ・ブロックは、水平およびグローバル・パリティ・ブロック(620)からの、ならびに、最初の2つのPC高速コード(630)および(640)の、(660)および(670)で新規に計算されたXORオペレーションからのXORオペレーション(680)を通して計算される。この最適化は、データ・ブロックの2つの水平行のネットワーク伝送を節減する。得られた3つのPC高速コード(630)、(640)、および(650)中のデータと垂直パリティとのブロックは、PCコンパクトコード符号(610)から変更なしのままで、いかなるネットワーク伝送も必要としない。したがって、本図で示されるように、コンパクトコードから高速コードへダウンコードは、垂直パリティの再計算だけを必要とする。
図7を参照すると、PC高速コードからPCコンパクトコードへのアップコードを示すブロック図(700)が提示されている。本図では、アップコードは、プロダクションコードに対する効率的なパリティだけの変換オペレーションとして示されている。このアップコードプロセスは、新規の水平パリティ・ブロック(780)、(782)、(784)、(786)、および(788)、ならびにグローバル・パリティ・ブロック(790)を計算するために、3つのPC高速コード(710)、(720)、(730)の旧水平およびグローバル・パリティ・ブロックに亘ってXOR(750)を実施する。旧垂直パリティ(712)および(714)、(722)および(724)、ならびに(732)および(734)から、新規の垂直パリティ・ブロック(760)、(762)、(764)、(766)、(768)、および(770)が計算され、例えば、これらの垂直パリティは同値に留まる。したがって、このアップコードオペレーションは、PCコンパクトコード符号中の新規パリティを計算するのに、3つのPC高速コードから、データ・ブロックのいかなるネットワーク伝送も必要としない。
図8を参照すると、ローカル再構築コード(LRC)を用いるイレージャーコーディングモジュールの構造およびエンコードインターフェースを示すブロック図(880)が提示されている。さらに具体的に、LCR高速コードのこの例示の構造は、12のデータ・ブロック(802)〜(832)、6つのローカル・パリティ・ブロック(842)〜(852)、および2つのグローバル・パリティ・ブロック(860)および(862)とともに示されている。LRC符号のエンコードオペレーションは、それぞれがパリティ・ブロックの一群への2つのXORオペレーションを実施することによって、ローカル・パリティを計算する。第一XOR(870)は、パリティ・ブロック(842)、(844)、および(846)に対して行われ、第二XOR(872)は、パリティ・ブロック(846)、(848)、および(850)に対して行われる。すなわち、LRCコンパクトコード符号中の2つのローカル・パリティ(882)および(884)は、LRC高速コード中の3つのローカル・パリティ、(842)、(844)、(846)と、(848)、(850)および(852)と、に対するXORとして計算される。結果として、この適応システムは、アップコードオペレーションにおいて、LRCコンパクトコード符号中の2つの新規ローカル・パリティを計算するため、6つのネットワーク伝送だけを必要とする。
2つのグローバル・パリティ・ブロック(860)および(862)は、12のデータ・ブロック(802)〜(832)の全てに対し、リードソロモンエンコードを行うことによって計算される。(880)に、LRCコンパクトコード表現が、同じ12のデータ・ブロック(802)〜(832)、2つのローカル・パリティ・ブロック(882)および(884)、ならびに2つのグローバル・パリティ・ブロック(886)および(888)とともに示されている。図示のように、単一のローカル・パリティ・ブロック(882)は、データ・ブロック(802)、(804)、(806)、(822)、(824)、および(826)のXORであり、単一のローカル・パリティ・ブロック(884)は、データ・ブロック(808)、(810)、(812)、(828)、(830)、および(832)のXORである。LRCコンパクトコードに対するデータまたはローカル・パリティ・ブロック中のいかなる単一の不具合も、再構築のため同じ列からの2つのブロックの伝送を必要とする。また一方、グローバル・パリティ・ブロック中の不具合は、再構築のため全12のデータ・ブロックを必要とする。
図9を参照すると、LRCコンパクトコードからLRC高速コードへのダウンコードを示すブロック図(900)が提示されている。2つのローカル・パリティ・ブロック(982)および(984)は、6データ・ブロックのグループに関連付けられている。すなわち、ローカル・パリティ・ブロック(982)は、データ・ブロック(902)、(904)、(906)、(922)、(924)、および(926)に関連付けられ、ローカル・パリティ・ブロック(984)は、データ・ブロック(908)、(910)、(912)、(928)、(930)、および(932)に関連付けられている。失われたデータ・ブロックまたはローカル・パリティの回復には、LRCコンパクトコード符号中の当該グループからの6つのブロックの伝送が必要となる。結果として、このLRCコンパクトコード符号もまた、劣化した読み取りに対する、より低廉な回復コストを有する。LRC高速コード中の3つの新規ローカル・パリティの2つは、LRCコンパクトコード符号の個別の列中のデータ・ブロックから、(970)および(972)で計算される。三番目のローカル・パリティは、該2つの新規ローカル・パリティおよびLRCコンパクトコード符号中の旧ローカル・パリティ(982)に対し、XORを行うことによって計算される(974)。このダウンコードオペレーションは、新規ローカル・パリティを計算するために10のブロック伝送を必要とする。グローバル・パリティ(986)および(988)は、変更なしのままでありいかなるネットワーク伝送も必要としない。
LRC符号に対するアップコードおよびダウンコードオペレーションは、プロダクションコードのものと同様である。また一方、LRC符号についてのアップコードおよびダウンコードは、新規のローカルおよびグローバル・パリティを計算するためにいくつかのデータ・ブロック伝送を必要とする。プロダクションコードおよびローカル再構築コードの説明の中で示したように、アップコードオペレーションは、プロダクションコードに対する3つの高速コードを融合するか、もしくは、LRC符号に対する1つ高速コードをより小さいサイズの新規コンパクトコードに落とし込む。ダウンコードは、ステップの逆のシーケンスを行う。両方のオペレーションとも、データ・ファイルのエンコード状態を変更し、その複製レベルを1つに低減する。
本明細書に示され説明されるツールは、ストレージ・システム中のイレージャーコードを動的に選択し、システム測定に基づいてイレージャーコードの間でデータを適応的に変換することをサポートする。1つの実施形態において、イレージャーコードおよび関連するこれらコードの間での変換の機能性およびサポートは、共用のリソースのプールを備えたクラウド・コンピューティング環境にも当てはめることが可能である。
クラウド・コンピューティング環境とは、白紙の処理状態、疎結合、モジュール方式、およびセマンチックな相互運用性に重点を置くことを指向するサービスである。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。次いで図10を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード(1010)は、適切なクラウド・コンピューティング・ノードの単なる一例であり、本明細書に記載の実施形態の使用または機能性の範囲に関するいかなる限定を示唆することも意図されていない。上記に関係なく、クラウド・コンピューティング・ノード(1010)は、上記で述べた機能性のいずれをも実装しもしくは実施しまたはその両方を行うことができる。クラウド・コンピューティング・ノード(1010)中には、コンピュータ・システム/サーバ(1012)があり、これは、数多くの他の汎用または特殊用途コンピューティング・システム環境または構成とともに動作可能である。コンピュータ・システム/サーバ(1012)とともに用いるのに適し得る、よく知られたコンピューティング・システム、環境、もしくは構成またはこれらの組み合わせの例は、以下に限らないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含む。
コンピュータ・システム/サーバ(1012)は、プログラム・モジュールなど、コンピュータ・システムに実行される、コンピュータ・システム実行可能な命令の一般的文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを遂行する、または特定の抽象データ型を実装する、ルーティン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造体などを含むことが可能である。コンピュータ・システム/サーバ(1012)は、タスクが、通信ネットワークを介してリンクされた遠隔の処理デバイスによって実行される、分散クラウド・コンピューティング環境中で実践されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体に配置することが可能である。
図10に示されるように、クラウド・コンピューティング・ノード(1010)中のコンピュータ・システム/サーバ(1012)は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ(1012)のコンポーネントは、以下に限らないが、1つ以上のプロセッサまたは処理ユニット(1016)、システム・メモリ(1028)、および、システム・メモリ(1028)のプロセッサ(1016)への連結を含め、様々なシステム・コンポーネントを連結するバス(1018)を含むことができる。バス(1018)は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを用いるプロセッサまたはローカル・バスを含め、何種類かのバス構造体の1つ以上任意のものを表す。限定でなく例として、かかるアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、強化ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、および周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バスを含む。コンピュータ・システム/サーバ(1012)は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ(1012)によってアクセス可能な任意の利用可能な媒体であってよく、これには、揮発性および不揮発性媒体、ならびにリムーバブルおよび固定型媒体の両方が含まれる。
システム・メモリ(1028)は、ランダム・アクセス・メモリ(RAM:random access memory)(1030)もしくはキャッシュ・メモリ(1032)またはその両方など、揮発性メモリの形でのコンピュータ・システム可読媒体を含むとよい。コンピュータ・システム/サーバ(1012)は、他のリムーバブル/固定型、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含むことが可能である。単なる例として、ストレージ・システム(1034)は、固定型、不揮発性磁気媒体(図示せず、通常、「ハード・ドライブ」と呼ばれる)からの読み取りおよびそれに書き込むように設けることができる。図示はされていないが、リムーバブル、不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)から読み取り、これに書き込むための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光媒体など、リムーバブル、不揮発性の光ディスクから読み取りこれに書き込むための光ディスク・ドライブを設けることも可能である。かかる場合、それぞれを、1つ以上のデータ媒体インターフェースによってバス(1018)に接続すればよい。以下に、さらに示して説明するように、メモリ(1028)は、本実施形態(群)の諸機能を遂行するよう構成されたプログラム・モジュールの(例えば、少なくとも1つの)セットを有する、少なくとも1つのプログラム製品を含むことができる。
限定でなく例として、プログラム・モジュール(1042)の(少なくとも1つの)セットを有するプログラム/ユーティリティ(1040)は、オペレーティング・システム、1つ以上アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを、メモリ(1028)中に格納することが可能である。オペレーティング・システム、1つ以上アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール(1042)は、一般に、本明細書で説明した諸実施形態の機能もしくは方法またはその両方を遂行する。
また、コンピュータ・システム/サーバ(1012)は、キーボード、ポインティング・デバイス、ディスプレイ(1024)など、1つ以上の外部デバイス(1014);すなわち、ユーザがコンピュータ・システム/サーバ(1012)とやり取りできるようにする1つ以上のデバイス;もしくはコンピュータ・システム/サーバ(1012)が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど);またはその両方と通信することができる。かかる通信は、入力/出力(I/O:Input/Output)インターフェース(1022)を介して行うことが可能である。さらにまた、コンピュータ・システム/サーバ(1012)は、ローカル・エリア・ネットワーク(LAN:local area network)、一般広域ネットワーク(WAN:wide area network)もしくは公衆ネットワーク(例えばインターネット)またはこれらの組み合わせなど、1つ以上のネットワークとネットワーク・アダプタ(1020)を介して通信することができる。図示のように、ネットワーク・アダプタ(1020)は、バス(1018)を介してコンピュータ・システム/サーバ(1012)の他のコンポーネントと通信する。当然のことながら、図示はされていないが、コンピュータ・システム/サーバ(1012)につないで他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることもできよう。諸例には、以下に限らないが、マイクロコード、デバイス・ドライブ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが含まれる。
ここで図11を参照すると、例示的なクラウド・コンピューティング環境(1150)が描かれている。図示のように、クラウド・コンピューティング環境(1150)は、例えば、携帯情報端末(PDA:personal digital assistant)または携帯電話(1154A)、デスクトップ・コンピュータ(1154B)、ラップトップ・コンピュータ(1154C)、もしくは自動車コンピュータ・システム(1154N)、またはこれらの組み合わせなど、クラウドの消費者によって使われるローカル・コンピューティング・デバイスが通信可能な1つ以上のクラウド・コンピューティング・ノード(1110)を含む。ノード群(1110)は、相互に通信が可能である。これらは、前述のように、プライベート、コミュニティ、公衆、またはハイブリッド・クラウド、またはこれらの組み合わせなど、1つ以上のネットワーク中に、物理的にまたは仮想的にグループ化することができる(図示せず)。これは、クラウド・コンピューティング環境(1150)が、インフラストラクチャ、プラットフォーム、もしくはサービスとしてのソフトウェアまたはこれらの組み合わせを提供することを可能にし、これらに対して、クラウド消費者は、ローカル・コンピューティング・デバイスにリソースを維持する必要はない。当然のことながら、図11に示されたコンピューティング・デバイス(1154A)〜(1154N)の種類は例示だけを意図されており、また、コンピューティング・ノード(1110)およびクラウド・コンピューティング環境(1150)は、任意の種類のネットワークもしくは(例えば、ウェブ・ブラウザを使って)ネットワーク・アドレス可能な接続、またはその両方を介して、任意の種類のコンピュータ化デバイスと通信することが可能である。
次いで、図12を参照すると、クラウド・コンピューティング環境(1200)によって設けられた一群の機能抽象化層が示されている。前もってことわっておくが、図12中に示されたコンポーネント、層、および機能は、例示だけを意図されており、諸実施形態はこれに限定されない。図には、下記の層と対応する機能とが提示されている。すなわち、ハードウェアおよびソフトウェア層(1260)、仮想化層(1262)、マネジメント層(1264)、および作業負荷層(1266)である。ハードウェアおよびソフトウェア層(1260)は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、マインフレーム、一例としてIBM(IBM社の登録商標)zSeries(IBM社の登録商標)システム;RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ、一例としてIBM(IBM社の登録商標)pSeries(IBM社の登録商標)システム;IBM(IBM社の登録商標)xSeries(IBM社の登録商標)システム;IBM(IBM社の登録商標)BladeCenter(IBM社の登録商標)システム;ストレージ・デバイス;ネットワークおよびネットワーク形成コンポーネントを含む。ソフトウェア・コンポーネントの例は、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例としてIBM(IBM社の登録商標)WebSphere(IBM社の登録商標)アプリケーション・サーバ・ソフトウェア;およびデータベース・ソフトウェア、一例としてIBM(IBM社の登録商標)DB2(IBM社の登録商標)データベース・ソフトウェアを含む。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphereおよびDB2は、世界中の多くの司法管轄区域で登録されているInternational Business Machines Corporationの商標である)。
仮想化層(1262)は、仮想エンティティの以下の例を提供することが可能な抽象化層を提供する。すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントなどである。
一例において、マネジメント層(1264)は、下記の機能を提供する。すなわち、リソース・プロビジョニング、計量および料金徴取、ユーザ・ポータル、サービス品質管理、およびキー管理である。以下にこれらの機能を説明する。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実施するのに用いられる、コンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および料金徴取は、リソースがクラウド・コンピューティング環境内で用いられる際のコストのトラッキング、およびそれらリソースの消費に対する請求書またはインボイス作成を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含み得る。セキュリティは、クラウド消費者およびタスクに対する本人確認、ならびにデータおよび他のリソースに対する保護を提供する。ユーザ・ポータルは、消費者およびシステム管理者に対し、クラウド・コンピューティング環境へのアクセスを提供する。キー管理は、2つ以上のエンティティの間で必要な暗号および関連する暗号化データの管理が合致するように、データの計算および共有を提供する。
作業負荷層(1266)は、クラウド・コンピューティング環境を使用することが可能な機能性の例を提供する。本明細書で説明する、以降クラウド・コンピューティング環境と称する構成可能なコンピュータ・リソースの共用プールにおいて、本明細書ではデータ・サイトとも称する複数のデータ・センタ内で、諸ファイルをユーザの間で共有することが可能である。このため、クラウド・コンピューティング環境内で、データ・ストレージの編成および管理をサポートするため、共有プールには一連のメカニズムが設けられる。
当業者には当然のことながら、本実施形態(群)の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本実施形態(群)の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本実施形態(群)の態様は、コンピュータ可読プログラム・コードが具現化されている1つ以上のコンピュータ可読媒体(群)中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
1つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、1つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去およびプログラムの可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、様々な形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であってよい。
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本実施形態(群)の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、1つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。
諸実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフロー・チャート図もしくはブロック図またはその両方を参照しながら、本実施形態(群)の態様が上記で説明されている。当然のことながら、フロー・チャート図もしくはブロック図またはその両方の各ブロック、および、フロー・チャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。
これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フロー・チャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フロー・チャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能(群)/動作(群)を実装する命令群を包含する製造品を作り出せるようにすることができる。
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フロー・チャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
図面のフロー・チャートおよびブロック図は、様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フロー・チャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための1つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフロー・チャート図(群)またはその両方の各ブロック、およびブロック図もしくはフロー・チャート図(群)またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意する。
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、限定することは意図されていない。本明細書で用いられる、単数形「或る(a、an)」、および「該(the)」は、文脈上明瞭に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む(comprise)」もしくは「含んでいる(comprising)」またはその両方は、述べられた特徴、完全体、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、1つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。
本実施形態(群)は、システム、方法、もしくはコンピュータ・プログラム製品またはこれらの組み合わせとすることができる。このコンピュータ・プログラム製品は、プロセッサに諸態様を遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(媒体群)を含めるとよい。
本明細書で説明したコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはこれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードすることが可能である。このネットワークは、銅送信ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはこれらの組み合わせを含んでよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体中に保存のため転送する。
諸実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフロー・チャート図もしくはブロック図またはその両方を参照しながら、本実施形態群の態様が本明細書で説明されている。当然のことながら、フロー・チャート図もしくはブロック図またはその両方の各ブロック、および、フロー・チャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することが可能である。
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本実施形態(群)の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または開示した形態に限定することも意図されていない。当業者には、本範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適した様々な修改を加えた様々な実施形態を理解できるように選択され説明されたものである。上記に基づいて、2つ以上のイレージャーコードの実装、および特に、データがエンコードされて適応的に異なるコードに変換される動的な方式は、改善された回復コストおよびストレージ効率を達成するための新しい効率的なインターフェースを提供する。
当然のことながら、例示のため本明細書で特定の実施形態を説明してきたが、本発明の範囲から逸脱することなく様々な修改を加えることが可能である。したがって、保護の範囲は、添付の特許請求の範囲およびそれらの等価物によってのみ限定される。

Claims (27)

  1. ストレージ・システムにおいてイレージャーコードを動的に選択する方法であって、
    データ・アクセス状態をトラッキングするステップと、
    前記トラッキングされたデータ・アクセス状態に基づいて、頻繁にアクセスされるデータに対する高速リカバリコードおよびアクセス頻度の低いデータに対するコンパクトコードを含む、少なくとも2つのイレージャーコードの間で適応的に選択を行うステップと、
    前記選択されたイレージャーコードを使って前記データをエンコードするステップと、
    を含む、方法。
  2. 前記イレージャーコードを使って前記データをエンコードすることにより、当該データが複数のデータ・ブロックに分割され、かつ、1以上のパリティブロックが生成される、請求項1に記載の方法。
  3. 前記コンパクトコードで前記データをエンコードした際に生成されるパリティブロックの数は、前記高速リカバリコードで前記データをエンコードした際に生成されるパリティブロックの数より少ない、請求項2に記載の方法。
  4. 前記トラッキングされたデータ・アクセス状態に基づいて、前記少なくとも2つのイレージャーコードの間で動的に変換を行うステップをさらに含む、請求項1に記載の方法。
  5. グローバル状態に基づいて、前記少なくとも2つのイレージャーコードの間で動的に変換を行うステップをさらに含む、請求項1に記載の方法。
  6. 前記グローバル状態がシステム・ストレージの容量を含む、請求項5に記載の方法。
  7. 前記グローバル状態が示すシステム・ストレージの容量が閾値を超える、または前記トラッキングされるデータ・アクセス状態がデータ・アクセスの減少を示すのに応じて、高速リカバリコードでエンコードされた1つ以上のデータのセットをコンパクトコードでエンコードされるように動的に変換するステップをさらに含む、請求項5に記載の方法。
  8. 前記トラッキングされるデータ・アクセス状態がデータ・アクセスの増加を示し、且つ前記グローバル状態が示すシステム・ストレージの容量が閾値を下回っているのに応じて、コンパクトコードでエンコードされた1つ以上のデータのセットを、高速リカバリコードでエンコードされるように動的に変換するステップをさらに含む、請求項5に記載の方法。
  9. 前記データ・アクセス状態が、直近の修正時間、サイズ、読み取りカウント、符号化状態、およびこれらの組み合わせからなる群から選択されたデータを含む、請求項1に記載の方法。
  10. 前記2つのイレージャーコードは、プロダクションコード又はローカル再構築コードの何れかのファミリを用いることができる、請求項1に記載の方法。
  11. ストレージ・システムにおいてイレージャーコードを動的に選択するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムがプログラム・コードを含み、前記プログラム・コードはプロセッサに、
    データ・アクセス状態をトラッキングするステップ、
    前記トラッキングされたデータ・アクセス状態に基づいて、頻繁にアクセスされるデータに対する高速リカバリコードおよびアクセス頻度の低いデータに対するコンパクトコードを含む、少なくとも2つのイレージャーコードの間で適応的に選択を行うステップ、および
    前記選択されたイレージャーコードを使って前記データをエンコードするステップ、
    を実行させるためのコンピュータ・プログラム。
  12. 前記トラッキングされたデータ・アクセス状態に基づいて、前記少なくとも2つのイレージャーコードの間で動的に変換を行うためのプログラム・コードをさらに含む、請求項11に記載のコンピュータ・プログラム。
  13. グローバル状態に基づいて、前記少なくとも2つのイレージャーコードの間で動的に変換を行うためのプログラム・コードをさらに含む、請求項11に記載のコンピュータ・プログラム。
  14. 前記グローバル状態がシステム・ストレージの容量を含む、請求項13に記載のコンピュータ・プログラム。
  15. 前記グローバル状態が示すシステム・ストレージの容量が閾値を超える、または前記トラッキングされるデータ・アクセス状態がデータ・アクセスの減少を示すのに応じて、高速リカバリコードでエンコードされた1つ以上のデータのセットをコンパクトコードでエンコードされるように動的に変換するためのプログラム・コードをさらに含む、請求項13に記載のコンピュータ・プログラム。
  16. 前記トラッキングされるデータ・アクセス状態がデータ・アクセスの増加を示し、且つ前記グローバル状態が示すシステム・ストレージの容量が閾値を下回っているのに応じて、コンパクトコードでエンコードされた1つ以上のデータのセットを、高速リカバリコードでエンコードされるように動的に変換するためのプログラム・コードをさらに含む、請求項13に記載のコンピュータ・プログラム。
  17. データ・アクセス状態に基づいて、データに対するイニシャルイレージャーコードを選択し、前記イニシャルイレージャーコードを使って前記データをエンコードし、前記エンコードされたデータを前記イニシャルイレージャーコードとは異なる第二イレージャーコードで変換するためのプログラム・コードをさらに含み、前記変換は、前記データ・アクセス状態およびグローバル状態の両方に基づく、請求項11に記載のコンピュータ・プログラム。
  18. 前記データ・アクセス状態が、直近の修正時間、サイズ、読み取りカウント、符号化状態、およびこれらの組み合わせからなる群から選択されたデータを含む、請求項11に記載のコンピュータ・プログラム。
  19. 前記2つのイレージャーコードは、プロダクションコード又はローカル再構築コードの何れかのファミリを用いることができる、請求項11に記載のコンピュータ・プログラム。
  20. データ・ストレージと通信しているプロセッサと、
    イレージャーコードを動的に選択するため、前記プロセッサと通信しているツールであって、
    データ・アクセスの状態をトラッキングするためのシステム状態モジュール、
    前記システム状態モジュールによってトラッキングされた前記データ・アクセス状態に基づいて、頻繁にアクセスされるデータに対する高速リカバリコードおよびアクセス頻度の低いデータに対するコンパクトコードを含む、少なくとも2つのイレージャーコードの間で適応的に選択を行うためのアダプティブコーディングモジュール、および
    前記アダプティブコーディングモジュールによって選択された前記イレージャーコードを使って前記データをエンコードするためのコーディングモジュール、
    を含む前記ツールと、
    を含むコンピュータ・システム。
  21. 前記トラッキングされたデータ・アクセス状態に基づいて、少なくとも2つのイレージャーコードの間で動的に変換を行うための前記アダプティブコーディングモジュールをさらに含む、請求項20に記載のシステム。
  22. グローバル状態に基づいて、前記少なくとも2つのイレージャーコードの間で動的に変換を行うための前記アダプティブコーディングモジュールをさらに含む、請求項20に記載のシステム。
  23. 前記グローバル状態がシステム・ストレージの容量を含む、請求項22に記載のシステム。
  24. 前記グローバル状態が示すシステム・ストレージの容量が閾値を超える、または前記トラッキングされるデータ・アクセス状態がデータ・アクセスの減少を示すのに応じて、高速リカバリコードでエンコードされた1つ以上のデータのセットをコンパクトコードでエンコードされるように動的に変換するための前記アダプティブコーディングモジュールをさらに含む、請求項22に記載のシステム。
  25. 前記トラッキングされるデータ・アクセス状態がデータ・アクセスの増加を示し、且つ前記グローバル状態が示すシステム・ストレージの容量が閾値を下回っているのに応じて、コンパクトコードでエンコードされた1つ以上のデータのセットを、高速リカバリコードでエンコードされるように動的に変換するための前記アダプティブコーディングモジュールをさらに含む、請求項22に記載のシステム。
  26. ストレージ・システムにおいてイレージャーコードを選択する方法であって、
    2つのイレージャーコードの1つを使って書き込みファイルをエンコードするステップを含む、前記書き込みファイルを保護するステップと、
    前記エンコードされた書き込みファイルのアクセスをトラッキングするステップと、
    前記トラッキングされたファイル・アクセスに基づいて、前記少なくとも2つのイレージャーコードの間で動的に選択を行うステップであって、前記イレージャーコードは、頻繁にアクセスされるデータに対する高速リカバリコードおよびアクセス頻度の低いデータに対するコンパクトコードを含む、前記選択を行うステップと、
    前記選択されたイレージャーコードを使って前記書き込みファイルをエンコードするステップと、
    を含む、方法。
  27. ストレージ・システムにおいてイレージャーコードを動的に選択するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムがプログラム・コードを含み、前記プログラム・コードはプロセッサに、
    2つのイレージャーコードの1つを使って書き込みファイルをエンコードするステップを含む、前記書き込みファイルを保護するステップ、
    前記エンコードされた書き込みファイルのアクセスをトラッキングするステップ、
    前記トラッキングされたファイル・アクセスに基づいて、前記少なくとも2つのイレージャーコードの間で動的に選択を行うステップであって、前記イレージャーコードは、頻繁にアクセスされるデータに対する高速リカバリコードおよびアクセス頻度の低いデータに対するコンパクトコードを含む、前記選択を行うステップ、
    前記選択されたイレージャーコードを使って前記書き込みファイルをエンコードするステップ、を実行させるためのコンピュータ・プログラム。


JP2017533887A 2015-01-20 2016-01-15 分散ストレージのための多重イレージャーコード Active JP6670311B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/600,532 2015-01-20
US14/600,532 US9595979B2 (en) 2015-01-20 2015-01-20 Multiple erasure codes for distributed storage
PCT/EP2016/050821 WO2016116377A1 (en) 2015-01-20 2016-01-15 Multiple erasure codes for distributed storage

Publications (2)

Publication Number Publication Date
JP2018507462A JP2018507462A (ja) 2018-03-15
JP6670311B2 true JP6670311B2 (ja) 2020-03-18

Family

ID=55182304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017533887A Active JP6670311B2 (ja) 2015-01-20 2016-01-15 分散ストレージのための多重イレージャーコード

Country Status (4)

Country Link
US (3) US9595979B2 (ja)
JP (1) JP6670311B2 (ja)
GB (1) GB2546940B (ja)
WO (1) WO2016116377A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10187083B2 (en) * 2015-06-26 2019-01-22 Microsoft Technology Licensing, Llc Flexible erasure coding with enhanced local protection group structures
CN105159618B (zh) * 2015-09-25 2018-08-28 清华大学 用于单盘失效修复的优化方法及优化装置
CN106649406B (zh) * 2015-11-04 2020-04-28 华为技术有限公司 一种自适应存储文件的方法和装置
WO2017107107A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Techniques to recover data in a network storage system
US9817713B2 (en) * 2016-02-04 2017-11-14 International Business Machines Corporation Distributed cache system utilizing multiple erasure codes
US10218789B2 (en) * 2016-03-04 2019-02-26 Western Digital Technologies, Inc. Erasure correcting coding using temporary erasure data
US10142419B2 (en) 2016-03-04 2018-11-27 Sandisk Technologies Llc Erasure correcting coding using data subsets and partial parity symbols
US9916478B2 (en) * 2016-03-24 2018-03-13 Netapp, Inc. Data protection enhancement using free space
US10452477B2 (en) * 2016-08-26 2019-10-22 Netapp, Inc. Multiple node repair using high rate minimum storage regeneration erasure code
US10567009B2 (en) * 2016-12-06 2020-02-18 Nutanix, Inc. Dynamic erasure coding
US10423351B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC System and method for capacity and network traffic efficient data protection on distributed storage system
CN109150792B (zh) 2017-06-15 2022-03-08 杭州海康威视数字技术股份有限公司 一种提高数据存储安全性方法及装置
CN107436733B (zh) * 2017-06-29 2020-11-06 华为技术有限公司 分片管理方法和分片管理装置
KR101934204B1 (ko) * 2017-07-28 2018-12-31 한양대학교 산학협력단 데이터 저장을 위한 소실 부호의 부호화 방법 및 장치
CN109426590A (zh) * 2017-09-01 2019-03-05 阿里巴巴集团控股有限公司 用于数据节点存储数据的方法和用于恢复数据的方法
US10929226B1 (en) * 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
CN110018783B (zh) 2018-01-09 2022-12-20 阿里巴巴集团控股有限公司 一种数据存储方法、装置及系统
CN108255432A (zh) * 2018-01-12 2018-07-06 郑州云海信息技术有限公司 基于分层存储的写操作控制方法、系统、装置及存储介质
US10592337B1 (en) * 2018-03-27 2020-03-17 Veritas Technologies Llc Systems and methods for distributing information across distributed storage devices
FR3080196B1 (fr) * 2018-04-13 2022-10-14 Inst Mines Telecom Methodes et dispositifs de codage et de decodage de donnees
CN112889033A (zh) * 2018-10-15 2021-06-01 Netapp股份有限公司 提高具有变化的数据冗余方案的系统中的可用存储空间
CN109960588B (zh) * 2019-03-20 2020-12-08 华中科技大学 一种针对异构内存集群的读请求调度方法及系统
US10951237B2 (en) 2019-03-22 2021-03-16 International Business Machines Corporation Composing array codes for power of two and variable block sizes
US11314593B2 (en) 2019-06-25 2022-04-26 Western Digital Technologies, Inc. Storage node processing of data functions using overlapping symbols
US11055018B2 (en) * 2019-06-25 2021-07-06 Western Digital Technologies, Inc. Parallel storage node processing of data functions
US10990324B2 (en) 2019-06-25 2021-04-27 Western Digital Technologies, Inc. Storage node processing of predefined data functions
US11281531B2 (en) 2019-06-25 2022-03-22 Western Digital Technologies, Inc. Serial storage node processing of data functions
CN111837117B (zh) * 2019-09-11 2024-04-16 创新先进技术有限公司 可信执行环境中基于纠错编码的共享区块链数据存储
JP7355616B2 (ja) 2019-11-26 2023-10-03 株式会社日立製作所 分散ストレージシステムおよび分散ストレージシステムのパリティ更新方法
US11709609B2 (en) * 2020-03-27 2023-07-25 Via Technologies, Inc. Data storage system and global deduplication method thereof
CN113918378A (zh) * 2020-07-10 2022-01-11 华为技术有限公司 数据存储方法、存储系统、存储设备及存储介质
CN112162967A (zh) * 2020-09-24 2021-01-01 中广核工程有限公司 工控系统数据安全的拟态存储系统及方法
CN112256471A (zh) * 2020-10-19 2021-01-22 北京京航计算通讯研究所 基于网络数据转发与控制层面分离的纠删码修复方法
CN113886115B (zh) * 2021-09-09 2024-02-20 上海智能网联汽车技术中心有限公司 一种基于车路协同的区块链拜占庭容错方法及系统
US11899941B2 (en) 2021-11-11 2024-02-13 Samsung Electronics Co., Ltd. Storage device and operating method thereof
CN114936188B (zh) * 2022-05-30 2024-10-11 重庆紫光华山智安科技有限公司 数据处理方法、装置、电子设备及存储介质
CN115793984B (zh) * 2023-01-03 2023-04-28 苏州浪潮智能科技有限公司 一种数据存储方法、装置、计算机设备及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321703A (en) * 1992-03-13 1994-06-14 Digital Equipment Corporation Data recovery after error correction failure
KR100387078B1 (ko) * 1997-07-30 2003-10-22 삼성전자주식회사 대역확산통신시스템의심볼천공및복구장치및방법
US7050419B2 (en) * 2001-02-23 2006-05-23 Terayon Communicaion Systems, Inc. Head end receiver for digital data delivery systems using mixed mode SCDMA and TDMA multiplexing
US20050210179A1 (en) * 2002-12-02 2005-09-22 Walmsley Simon R Integrated circuit having random clock or random delay
CN101031971A (zh) 2004-08-02 2007-09-05 皇家飞利浦电子股份有限公司 数据存储和重放设备
US7945729B2 (en) * 2004-11-24 2011-05-17 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
US8386868B2 (en) 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
EP2294510B1 (en) 2008-06-24 2011-12-28 SanDisk IL Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory
US20100218037A1 (en) 2008-09-16 2010-08-26 File System Labs Llc Matrix-based Error Correction and Erasure Code Methods and Apparatus and Applications Thereof
US8386838B1 (en) * 2009-12-01 2013-02-26 Netapp, Inc. High-availability of a storage system in a hierarchical virtual server environment
US8392805B2 (en) * 2010-07-15 2013-03-05 Hewlett-Packard Development Company, L. P. Non-MDS erasure codes for storage systems
WO2012058328A1 (en) * 2010-10-27 2012-05-03 Sandforce, Inc. Adaptive ecc techniques for flash memory based data storage
WO2012068184A1 (en) 2010-11-15 2012-05-24 File System Labs Llc Methods and apparatus for distributed data storage
US8433979B2 (en) * 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
WO2013191658A1 (en) 2012-06-20 2013-12-27 Singapore University Of Technology And Design System and methods for distributed data storage
US9354991B2 (en) * 2013-06-25 2016-05-31 Microsoft Technology Licensing, Llc Locally generated simple erasure codes
US9201728B2 (en) * 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
US9356628B2 (en) * 2014-02-13 2016-05-31 Quantum Corporation Dynamically reconfiguring rebuild agents for erasure code rebuild
US9727437B2 (en) * 2014-02-18 2017-08-08 Quantum Corporation Dynamically controlling erasure code distribution in an object store
US9594634B2 (en) * 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology

Also Published As

Publication number Publication date
US20170077961A1 (en) 2017-03-16
US10305516B2 (en) 2019-05-28
US20160336970A1 (en) 2016-11-17
WO2016116377A1 (en) 2016-07-28
GB2546940B (en) 2017-11-08
JP2018507462A (ja) 2018-03-15
GB201707491D0 (en) 2017-06-21
US10014881B2 (en) 2018-07-03
US20160211869A1 (en) 2016-07-21
US9595979B2 (en) 2017-03-14
GB2546940A (en) 2017-08-02

Similar Documents

Publication Publication Date Title
JP6670311B2 (ja) 分散ストレージのための多重イレージャーコード
US10887416B2 (en) Efficient high availability and storage efficiency in a multi-site object storage environment
US10735545B2 (en) Routing vault access requests in a dispersed storage network
US20170123848A1 (en) Multi-task processing in a distributed storage network
US20170214773A1 (en) Adaptive compression and transmission for big data migration
US10853146B1 (en) Efficient data forwarding in a networked device
JP2020509490A (ja) 分散型ストレージ・ネットワーク内のゾーンにおけるデータの順次記憶
CN110720088A (zh) 集成到大容量存储设备的可访问快速耐久存储
JP2016062609A (ja) コンピュータ実装された動的シャーディング方法
WO2015167665A1 (en) Retrieving multi-generational stored data in a dispersed storage network
US10969962B2 (en) Compacting data in a dispersed storage network
US9916319B2 (en) Effective method to compress tabular data export files for data movement
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US10949129B2 (en) Adjusting data ingest based on compaction rate in a dispersed storage network
CN111104389A (zh) 用于在信息技术环境中智能地使数据库备份操作的负载平衡的方法和系统
WO2023273977A1 (en) Transferring task data between edge devices in edge computing
US11178197B2 (en) Idempotent processing of data streams
JP2023505442A (ja) 第2のタイプのメモリとしてのダイナミック・ランダム・アクセス・メモリ・キャッシュの提供
US11019146B2 (en) Segmenting and merging data in a dispersed storage network
US20210334040A1 (en) Aggressive intent write request cancellation
US10698862B2 (en) Enhanced snapshot performance, storage efficiency improvement, dynamic snapshot policy in erasure code supported object storage environment
US10719483B2 (en) Remote copy with data deduplication functionality
US10931756B2 (en) Direct file send from storage to end client by transferring socket information to the storage
US10409522B2 (en) Reclaiming storage capacity in a dispersed storage network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170814

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200228

R150 Certificate of patent or registration of utility model

Ref document number: 6670311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150