JP2015519648A - 分散型データ記憶システムにおいてデータを記憶および保守する方法、ならびにそれに対応するデバイス - Google Patents
分散型データ記憶システムにおいてデータを記憶および保守する方法、ならびにそれに対応するデバイス Download PDFInfo
- Publication number
- JP2015519648A JP2015519648A JP2015509372A JP2015509372A JP2015519648A JP 2015519648 A JP2015519648 A JP 2015519648A JP 2015509372 A JP2015509372 A JP 2015509372A JP 2015509372 A JP2015509372 A JP 2015509372A JP 2015519648 A JP2015519648 A JP 2015519648A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- data
- storage
- file
- cluster
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
Abstract
本発明は、一般に、分散型データ記憶システムに関する。特に、本発明は、データ・ブロックのクラスタ化と、記憶方法および関連する修復方法に関する所要記憶スペースおよびデバイス間通信コストの点で分散型データ記憶システムを効率化するデータ・ブロックのランダム線形結合の使用とを含む、分散型データ記憶システムにおいてデータを記憶する方法に関する。
Description
本発明は、一般に、分散型データ記憶システムに関する。特に、本発明は、データ可用性が高いことと、ネットワーク記憶デバイス間のデータの交換に必要な帯域幅の点、およびデータ項目を記憶するために必要なネットワーク記憶デバイスの数の点でネットワークおよびデータ記憶リソースへの影響が小さいこととを兼ね備えた、分散型データ記憶システムにおいてデータを記憶する方法に関する。本発明は、また、このような分散型データ記憶システムにおいて故障した記憶デバイスを修復する方法、および本発明を実施するデバイスにも関する。
映像および画像を扱うデバイスなど、大量のデータを扱うデバイスの導入が急速に広がっており、直接記憶のために、またはバックアップ記憶の一部として、大量のデータを高い信頼性で記憶することが必要とされている。ネットワーク接続性を備えるデバイスが増えるにつれて、ネットワーク接続されたデバイス(「記憶デバイス」)へのデータの分散型記憶は、費用対効果の高い解決策であると考えられるようになっている。インターネットなど、非管理ネットワーク上に展開することができるこのような分散型データ記憶システムでは、同じデータ項目を複数のネットワーク接続デバイスにコピーして、データ可用性とデータ喪失耐性とを保証する方法が開発されている。これは、データ・レプリケーションまたは冗長性追加と呼ばれる。冗長性は、広い意味で解釈する必要があり、単なるデータの複製だけでなく、消去符号または再生符号などのコード化技術を使用することも含む(耐障害性のために符号化データが記憶デバイスに配置される)。デバイスの障害によって永久にデータが失われる危険性、または一時的にデバイスが利用不能になることによって一時的にデータが失われる危険性に対処するためには、冗長性が高いことが望ましい。しかし、通信および必要な記憶サイズ(いわゆるレプリケーション・コスト)の点でコストを低下させるためには、むしろ冗長性が低いことが望ましい。
従って、冗長性は、信頼性の低い構成要素に基づいて信頼性の高いサービスを提供しなければならない実際のいかなるシステムでも、重要な特徴である。記憶システムは、不可避のディスクの利用不能性および障害をマスクするために冗長性を利用するサービスの代表例である。上述のように、この冗長性は、基本的なレプリケーションまたはコード化技術を用いて実現することができる。消去符号は、基本的なレプリケーションよりはるかに高い効率を実現することができるが、現行のシステムでは完全には導入されていない。消去符号を使用する際の大きな懸念は、符号化/復号動作によって複雑さが増すことを除けば、故障した記憶デバイスの保守によるものである。実際に、記憶デバイスが故障すると、データの耐久性を保証するためには、その記憶デバイスが記憶していた様々なファイルの全てのブロックを置換しなければならない。これは、喪失したブロックごとに、新たなブロックを1つだけ再生するために、そのブロックの出所であるファイル全体をダウンロードして復号しなければならないということである。基本的なデータ・レプリケーションと比較したときのこの帯域幅および復号動作のオーバヘッドにより、障害つまり修復が例外的なものでなく一般的なものであるシステムにおいて消去符号を使用することは、かなり制限される。それでも、ネットワーク・コード化を使用すれば、保守プロセス中に必要となる帯域幅を大幅に減少させることができる。こうして、符号化されているファイルの保守に対処するように特に設計され、消去符号の既知の欠点を軽減しながら消去符号の効率性を利用する、新たな分散型記憶システムが登場する下地ができた。
高いレベルのデータ可用性を実現する、可用性要件とレプリケーション・コストを併せて考慮した分散型データ記憶手段が必要とされている。
本発明は、従来技術の欠点のいくつかを改善することを目的とする。
分散型データ記憶システムにおけるデータ記憶を最適化するために、本発明は、ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ記憶システムにデータを記憶する方法であって、前記分散型データ記憶システムに記憶するデータ・ファイルごとに実行される、
前記データ・ファイルをk個のデータ・ブロックに分割し、前記k個のデータ・ブロックのランダム線形結合によって前記k個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するステップと、
前記ファイルの前記少なくともn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれている前記少なくともn個の記憶デバイスにわたって拡散させることによって、前記少なくともn個の符号化データ・ブロックを記憶するステップであり、各クラスタが、異なる記憶デバイスのセットを含み、前記ファイルの前記少なくともn個の符号化データ・ブロックが、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの前記少なくともn個の記憶デバイスにわたって分散されるステップと、を含む方法を提案する。
前記データ・ファイルをk個のデータ・ブロックに分割し、前記k個のデータ・ブロックのランダム線形結合によって前記k個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するステップと、
前記ファイルの前記少なくともn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれている前記少なくともn個の記憶デバイスにわたって拡散させることによって、前記少なくともn個の符号化データ・ブロックを記憶するステップであり、各クラスタが、異なる記憶デバイスのセットを含み、前記ファイルの前記少なくともn個の符号化データ・ブロックが、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの前記少なくともn個の記憶デバイスにわたって分散されるステップと、を含む方法を提案する。
本発明は、また、本発明の記憶方法に従ってデータが記憶され、記憶されたファイルがk個のデータ・ブロックに分割される分散型データ記憶システムにおいて故障した記憶デバイスを修復する方法であって、
前記故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加するステップと、
前記置換記憶デバイスが、前記記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから、前記k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されるk+1個の新たなランダム線形結合を受け取るステップと、
代数演算を使用して、受け取った前記新たなランダム線形結合をそれらの間で結合して、ファイルXのみに関係するものが1つとファイルYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得るステップと、
前記2つの線形結合を前記置換記憶デバイスに記憶するステップと、を含む方法も含む。
前記故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加するステップと、
前記置換記憶デバイスが、前記記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから、前記k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されるk+1個の新たなランダム線形結合を受け取るステップと、
代数演算を使用して、受け取った前記新たなランダム線形結合をそれらの間で結合して、ファイルXのみに関係するものが1つとファイルYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得るステップと、
前記2つの線形結合を前記置換記憶デバイスに記憶するステップと、を含む方法も含む。
この修復方法の変形実施形態によれば、この修復方法は、前記分散型データ・システムに復帰する故障した記憶デバイスを前記記憶デバイス・クラスタに再統合するステップを含む。
本発明は、また、ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ記憶システムでデータ・ファイルの記憶を管理するデバイスであって、前記データ・ファイルをk個のデータ・ブロックに分割し、前記k個のデータ・ブロックのランダム線形結合によって前記k個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するデータ・スプリッタを備え、前記ファイルの前記少なくともn個の符号化データ・ブロックを同じ記憶デバイス・クラスタに含まれる前記少なくともn個の記憶デバイスにわたって拡散させることによって、前記少なくともn個の符号化データ・ブロックを記憶する記憶配分器であり、各クラスタが、異なる記憶デバイスのセットを含み、前記ファイルの前記少なくともn個の符号化データ・ブロックを、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの前記少なくともn個の記憶デバイスにわたって分散させる記憶配分器をさらに備えるデバイスも含む。
本発明は、また、本発明の記憶方法に従ってデータが記憶される分散型データ記憶システムにおいて故障した記憶デバイスの修復を管理するデバイスにも関する。この修復を管理するデバイスは、前記故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加する置換器と、前記記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから前記置換記憶デバイスに、前記k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されたk+1個の新たなランダム線形結合を分配する配分器と、代数演算を用いて前記新たなランダム線形結合をそれらの間で結合して、Xのみに関係するものが1つとYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得る結合器と、前記2つの線形結合を前記置換記憶デバイスに記憶するデータ書込み器とを備える。
本発明のさらなる利点は、本発明の具体的な非制限的な実施形態の説明から、明らかになるであろう。
実施形態について、以下の図面を参照して説明する。
上述のように、消去符号は、データ記憶システムの基本的なレプリケーションよりはるかに高い効率を実現することができることが分かっている。それでも実際には、このような記憶システムへの消去符号の適用は、その明白な利点にもかかわらず普及していない。消去符号が比較的適用されていない理由の1つは、現況技術のコード化方法では、ブロックを挿入または修復する必要が生じるたびに新たな記憶デバイスが発見される可能性があると考えている、すなわち、無制限の記憶デバイスのリソースが存在すると仮定しているからである。さらに、記憶デバイスの可用性も、考慮されていない。この2つの前提条件が、現在の分散型データ記憶システムに消去符号を単純に適用することの実際上の障壁となり、これらの重要な問題の答えとなる設計の選択を行わなければならないときに混乱を生じている。これらの欠点を解消するために、本発明は、分散型データ記憶システムの冗長性を構成するデータ・ブロックのホスティングを担当する記憶デバイスのクラスタ化を提案し、さらに、消去符号を使用および展開する実際上の手段を提案する。次いで、本発明は、単純なレプリケーション方式およびコード化方式の両方と比較して優位に性能を向上させることを可能にする。本発明によるクラスタ化によって、個々のファイル・レベルではなく記憶デバイス・レベル(すなわち多数のファイルの多数のブロックを含む記憶デバイス)で保守を行うことが可能になり、消去符号を適用することによって、効率的なデータ・レプリケーションが可能になり、それにより、複数の修復を利用し、分散型データ記憶システムの性能向上を改善することができる。
消去符号の効率は、最大距離分離(MDS)符号を使用するときに最大となり、いわゆる「最適」となる。これは、所与の記憶オーバヘッドに対して、MDS符号が、データ可用性という点では可能な限り最高の効率を与えるということである。MDS符号は、喪失したデータを再構築するのに、n個の冗長性ブロック(=符号化データ・ブロック)のうちのk個からなる任意のサブセットで十分であるような符号である。これは、Mバイトのファイルを再構築するためには、正確にMバイトをダウンロードする必要があるということである。リード・ソロモン(RS)は、MDS符号の旧来の例である。ランダム性によって、MDS符号を構築する柔軟な方法が得られる。
本発明は、ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ記憶システムにデータ・ファイルを記憶する特定の方法を提案する。この方法は、分散型データ記憶システムに記憶するデータ・ファイルごとに実行される、以下のステップを含む。
データ・ファイルをk個のデータ・ブロックに分割し、これらのk個のデータ・ブロックのランダム線形結合によってこれらのk個のブロックからn個の符号化データ・ブロックを作成するステップ。
このファイルのこれらのn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれているn個の記憶デバイスにわたって拡散するステップ。各クラスタは、異なる記憶デバイスのセットを含み、このファイルのこれらのn個の符号化データ・ブロックは、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタのn個の記憶デバイスにわたって分散される。
データ・ファイルをk個のデータ・ブロックに分割し、これらのk個のデータ・ブロックのランダム線形結合によってこれらのk個のブロックからn個の符号化データ・ブロックを作成するステップ。
このファイルのこれらのn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれているn個の記憶デバイスにわたって拡散するステップ。各クラスタは、異なる記憶デバイスのセットを含み、このファイルのこれらのn個の符号化データ・ブロックは、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタのn個の記憶デバイスにわたって分散される。
図1は、1つのファイルがk=2個のデータ・ブロックに分割される本発明の記憶方法の具体例、ならびにそれに関連するn=4個の符号化データ・ブロックを生成する線形結合方法を示す図である。これは、次のように行われる。すなわち、各ファイルX(10)を、同じ大きさのk個のデータ・ブロック(12、13)にチャンク化し、次いで、これらのk個のブロックのランダム線形結合としてn個の符号化データ・ブロックXj(15、16、17、18)を作成する。次いで、分散型記憶システムの各記憶デバイスjが、これらのk個のデータ・ブロックのランダム線形結合である符号化データ・ブロックXjを記憶する。関連するランダム係数α(例えばブロック15では2および7)は、体Fqで一様にランダムに選択される。すなわち、Fqは、q個の要素を有する「有限体」の意味である。有限体を利用することは、誤り訂正符号を実施するのに必要であり、当業者には既知である。簡単に言うと、有限体とは、離散数のセットなど1組の数のセットであるが、離算数で一般に既知であるように異なる加算と乗算の規則を有するセットである。
n個の符号化データ・ブロックXj(15〜18)を記憶するだけでなく、関連するランダム係数αも記憶する必要がある。ランダム係数の大きさはブロックXjの大きさと比較して無視できるので、これらの係数を記憶するために必要な記憶スペースも、無視することができる。一般に、本明細書で(ランダム)線形結合という表現を用いるときには、関連する係数も含む。
実際の例として、ファイルX(10)がM=1ギガバイトの大きさを有する場合を考える。パラメータk(ファイル・チャンクの数)およびn(k個のファイル・チャンクのランダム線形結合の数)は、例えばk=2、およびn=4など、符号の実施が存在するように選択される。関連するランダム係数αは、1からqの範囲の離散数を生成するようにパラメータ化された従来技術の乱数発生器で生成することができる。
n/kは、分散型記憶システムの設計者が希望する冗長性レベルに応じて選択される。例えば、k=2、およびn=4の符号では、発明者等は、n/k=2とし、従って、1Gbのファイルを記憶するためには、システムは2Gbの記憶スペースを必要とする。さらに、n/kは、システムが許容することができる障害の数(故障した記憶デバイスの数)を表す。k=2、n=4とした例では、k=2個の符号化データ・ブロックが残っている限り、元のファイルを回復することができる。従って、導入する冗長性の量と、分散型記憶システムの障害許容度との間の兼ね合いがある。
このようにして分散型記憶システムに記憶されたファイルの再構築は、次のように行われる。数学的には、k個のデータ・ブロックからランダム線形結合によってこのようにして作成されたn個の符号化データ・ブロックXjはそれぞれ、これらのk個のデータ・ブロックが及んでいるサブスペースのランダム・ベクトルとして表すことができる。従って、ファイルXの再構築には、このサブスペース中でk個の独立したベクトルを得れば十分である。この独立性要件は、関連するランダム係数αがそれ以前にファイルXの記憶中に上述の乱数発生器によって生成されているので、満たされる。実際には、1次独立であるk個のベクトルの全てのファミリが、反転させることができる正則行列を形成するので、ファイルXは、非常に高い確率(すなわち1に近い確率)で再構築することができる。あるいは、より正式には、Dを、Fq nに属するn個の冗長ブロックXj、換言すればn個のランダム・ベクトルが及んでいるサブスペースの次元を表すランダムな変数とすると、次のように表すことができる。
この数式は、m個のランダム・ベクトルが及んでいるサブスペースの次元が正確にnであり、これらのn個のベクトルのファミリが1次独立である確率を与えるものである。この確率は、通常は28または216である実際の体の大きさを使用するときには、全てのnに対して1に非常に近いことが分かっている。上述のように、体の大きさは、有限体Fqの要素の数である。値28または216は、有限体の1つの要素はそれぞれ1バイトまたは2バイト(8ビットまたは16ビット)に相当するので、実際の値である。例えば、体の大きさが216で、n=16である(これらは伝統的な実際値である)場合には、正確にn=16個の記憶デバイスに接触するときには、ファイルXを再構築することができる確率は、0.999985である。このように、ランダムな(MDS)符号は、データを最適に符号化する柔軟な方法を提供する。これらの符号は、固定された符号化行列を使用し、従ってレートk/nが固定されている、すなわち冗長性システムが一定数を超える数の冗長な独立したブロックを作成することができない、伝統的な消去符号とは異なる。実際に、本発明で提案するランダム符号を使用するときには、単にファイルXのk個のブロックXjの新たなランダム結合を作成するだけで、冗長ブロックXjを必要なだけ生成することができるので、レートの概念は消滅する。この性質により、ランダム符号は、噴水符号(fountain code)とも呼ばれるレート・レス符号となる。このレート・レスの性質により、以下でさらに述べるように、誤って「喪失」とされた記憶デバイスの再統合が可能になるので、これらの符号は、分散型記憶システムの状況に非常に適している。
上述の喪失したデータの修復を容易且つ効率的にする(上述のパラメータk、nの)MDS消去符号の使用に関連して、本発明は、複数のファイルに属する喪失データの同時修復を活用する特定のデータ・クラスタ化方法を利用することを提案する。クラスタの大きさは、符号の種類によって決まる。さらに厳密には、MDS符号がk個のブロックからn個の符号化データ・ブロックを生成している場合には、クラスタの大きさは、正確にnになるものとする。本発明の記憶方法によるこのようなクラスタ化の例を、図2に示す。全ての記憶デバイスからなる集合を、複数の互いに素なクラスタに分割する。従って、各記憶デバイスは、1つのクラスタのみに属する。次いで、このように編成された分散型記憶システムに記憶する各ファイルを、特定のクラスタに記憶する。クラスタは、異なるファイルからのデータを含む。記憶デバイスは、異なるファイルからのデータを含む。さらに、記憶デバイスは、そのクラスタに記憶される全てのファイルからの1つのデータ・ブロックを含む。図2は、これらのファイルのk個のブロックのランダム線形結合であるn=3個の符号化データ・ブロックXjをそれぞれ含む6個のファイルX1からX6の場合の例を与える図である。2つの記憶クラスタは、それぞれ3つの記憶デバイスのセットを含み、第1のクラスタ1(20)は、記憶デバイス1、2、および3(200、201、および202)を含み、第2のクラスタ2(21)は、3つの記憶デバイス4、5、および6(210、211、および212)を含む。ファイルX1の3つ(n=3)の符号化データ・ブロックXjは、クラスタ1(20)に記憶される。具体的には、第1のブロック(2000)は、記憶デバイス1(200)に記憶され、第2のブロック(2010)は、記憶デバイス2(201)に記憶され、第3のブロック(2020)は、記憶デバイス3(202)に記憶される。ファイルX2の3つの符号化データ・ブロックXjは、クラスタ2(21)に記憶される。具体的には、第1のブロック2100は、記憶デバイス4(210)に記憶され、第2のブロック2110は、記憶デバイス5(211)に記憶され、第3のブロック2120は、記憶デバイス6(212)に記憶される。同様に、クラスタ1は、ファイルX3の符号化データ・ブロックXj(2001、2011、2021)、およびファイルX5の符号化データ・ブロックXj(2002、2012、2022)も、記憶デバイス1、2、および3(それぞれ200、201、および202)に記憶する。同様に、クラスタ2は、ファイルX4の符号化データ・ブロックXj(2101、2111、および2121)、およびファイルX6の符号化データ・ブロックXj(2102、2112、および2122)も、記憶デバイス4、5、および6(それぞれ210、211、および212)に記憶する。これらのファイルは、選択されたロード・バランシング・ポリシーに従って、到着順に記憶される(例えばファイルX1がクラスタ1に、ファイルX2がクラスタ2に、ファイルX3がクラスタ1に、など)。
これらのファイルを管理するためには、各ファイルをクラスタにマッピングする指標と、各記憶デバイスをクラスタにマッピングする指標の、2つの指標を維持すれば十分である。本発明の特定の実施形態によれば、記憶デバイスは、それぞれのIP(インターネット・プロトコル)アドレスによって識別することができる。
本発明のデータ・ブロック配置ストラテジは、分散型記憶システムに記憶されたファイルの数によく対応する単純なファイル管理を示しながら、以下でさらに説明するように、このようなシステムの保守プロセスを直接提供する。なお、クラスタがどのように構成されているか、およびクラスタがどのように様々なファイルで充填されるかは、一様サンプリングと同様に任意のポリシーに従って、または特定のプロトコルを使用して、決定することができることに留意されたい。実際に、現況技術では、例えばロード・バランシングに焦点を当てたものや可用性に焦点を当てたものなど、様々な配置ストラテジが存在する。
配置ストラテジおよび保守(修復)プロセスは、通常は独立して設計される2つのビルディング・ブロックと考えられる。
本発明では、配置ストラテジは、以下でさらに説明するように、保守プロセスを直接提供する。分散型データ記憶システムは、その商業的な実施規模の大きさのために、システムの障害が起きやすい。通常、分散型データ記憶システムは、インターネット加入者からこのサービスへのデータを記憶する役割を果たし、ハードディスク・ドライブを備える何千もの記憶デバイスを利用する。従って、これらの障害によって生じるデータ喪失を修復するために、信頼性の高い保守機構が必要である。そのためには、システムは、記憶デバイスをモニタリングする必要があり、従来は、修復を実行しなければならないかどうかを判断するタイムアウト式のトリガ機構を使用している。本発明のクラスタ化方法の第1の実用的な点は、記憶デバイスのクラスタが管理しやすく、また、自身をモニタリングして必要に応じて自身を再生する(すなわちデータ喪失を修復する)自律型クラスタを作成することにより、完全に非集中的な方法でモニタリングを実施することができる点である。これは、故障した記憶デバイスを修復するためには、故障した記憶デバイスと置換する記憶デバイスが、故障した記憶デバイスが記憶していた各冗長ブロックに関連する全てのファイルにアクセスする必要があり、その際、接触すべき記憶デバイスは任意の位置に位置している可能性があるので、置換記憶デバイスは、修復を行う前にまずそれらの位置を問い合わせる必要がある、現行の記憶システムとは対照的である。こうしたことは、所与のクラスタで配置が構造化されているので、本発明では行われない。
この従来技術に従って、記憶デバイスの十分に大きなセットへのデータの一様なランダム配置を用いる場合によくあるように記憶した各ファイルへのアクセスを独立した事象とみなす場合には、そのセット内の全ての記憶デバイスに接触することに成功する確率は、様々なファイルの冗長ブロックが同じ記憶デバイスのセットに記憶されていない場合には、ブロック数とともに低下する。これは、各ホスト記憶デバイスが実際には特定の確率で利用可能であり、アクセス対象のこのようなホスト記憶デバイスの数が増加すると、所与の時点で全ての必要なブロックにアクセスすることができる確率が低下することによるものである。上述した従来技術の解決策とは対照的に、本発明のクラスタ型配置方法を使用すると、置換記憶デバイスにとって極めて重要なブロックに協働してホスティングするように記憶デバイスがグループ化されるので、修復が成功する確率は、故障した記憶デバイスに記憶されるブロックの数に依存しなくなる。さらに、置換記憶デバイスが接続する必要がある記憶デバイスの数は、故障した記憶デバイスに記憶されていたブロックの数に依存しない。その代わりに、この数は、システム・オペレータによって予め定義される固定されたクラスタの大きさに依存するので、置換記憶デバイスが保守する必要がある接続の数が減少する。
この記憶方法の具体的な効率性は、以下でさらに述べる、故障した記憶デバイスの修復を示す図3を援用することで最もよく説明される。
図3を用いて説明する本発明の方法とは対照的に、従来技術の修復プロセスは、従来の消去符号を使用するときには、次のようになる。所与のファイルの1つのデータ・ブロックを修復するためには、置換記憶デバイスは、(未符号化のプレーン・データの)ファイルを再生するために、十分に冗長な消去符号符号化ブロックをダウンロードして、それらを復号しなければならない。この動作が行われたら、置換記憶デバイスは、そのファイルを再符号化して、喪失した冗長データ・ブロックを再生することができるが、喪失したブロックごとに、再符号化を繰り返さなければならない。この従来技術の方法には、これらの種類の符号を使用することによって生じる以下の欠点がある。
1.1つのブロックを修復するために、すなわち1つのファイルの小さな一部分を修復するために、置換記憶デバイスは、そのファイルのブロックを記憶しているその他の記憶デバイスに記憶されている全てのブロックをダウンロードしなければならない。これは、通信コストがかかり、またこの第1のステップが完了しないうちは第2のステップ(後述)に取り掛かることができないので、時間もかかる。
2.第1のステップが完了した後で、置換記憶デバイスは、未符号化のプレーン・データ・ファイルを再生することができるようにダウンロードしたブロックを判読しなければならない。これは、計算負荷が高い動作であり、大きなファイルではさらに計算負荷は高くなる。
3.次いで、符号化アルゴリズムを使用して、再生したプレーン・データ・ファイルから喪失したブロックを符号化することによって、喪失したブロックを再作成しなければならない。
1.1つのブロックを修復するために、すなわち1つのファイルの小さな一部分を修復するために、置換記憶デバイスは、そのファイルのブロックを記憶しているその他の記憶デバイスに記憶されている全てのブロックをダウンロードしなければならない。これは、通信コストがかかり、またこの第1のステップが完了しないうちは第2のステップ(後述)に取り掛かることができないので、時間もかかる。
2.第1のステップが完了した後で、置換記憶デバイスは、未符号化のプレーン・データ・ファイルを再生することができるようにダウンロードしたブロックを判読しなければならない。これは、計算負荷が高い動作であり、大きなファイルではさらに計算負荷は高くなる。
3.次いで、符号化アルゴリズムを使用して、再生したプレーン・データ・ファイルから喪失したブロックを符号化することによって、喪失したブロックを再作成しなければならない。
この従来技術の方法とは対照的に、本発明の記憶方法のクラスタ型配置ストラテジおよびランダム符号の使用により、修復プロセスにおいて重要な利点が得られる。既に示したように、従来技術の修復方法によれば、同じファイルの複数のブロックを、それらの間で結合する。本発明の方法によれば、ファイル・レベルではなくシステム・レベルでネットワーク・コード化を使用する。すなわち、本発明の修復方法は、複数のファイルのデータ・ブロックを結合することを含み、これにより、修復中に記憶デバイス間で交換されるメッセージの数が大幅に減少する。記憶デバイスによって記憶される符号化データ・ブロックXjは、代数演算を実行することができる単なる代数要素である。
修復プロセスの終了時に得られるのは、故障した記憶デバイスの修復である。本発明の状況では、故障した記憶デバイスの修復とは、故障した記憶デバイスが符号化データ・ブロックXjを記憶していた各ファイルのランダム・ベクトルの作成である。任意のランダム・ベクトルは、冗長な、または符号化された、データ・ブロックである。従って、故障した記憶デバイスの修復プロセスで必要な動作は、故障した記憶デバイスに記憶されていたデータそのものを置換することではなく、故障した記憶デバイスによって喪失した量のデータを再生することである。この選択により、記憶デバイスの再統合と呼ばれるものに関するさらなる利点が得られることについて、以下でさらに述べる。
図3は、本発明のデータを記憶する方法を使用する分散型データ記憶システムに基づく、本発明による故障した記憶デバイスの修復を示す図である。ここで、クラスタ(30000)は、最初に、4つの記憶デバイス(30、31、32、33)を含む。各記憶デバイスは、2つのファイル、ファイルXおよびファイルYのランダム符号ブロックXjを記憶している。両方のファイルXおよびYについて、k=2である(すなわち、ファイルXおよびYは、k=2個のブロックにチャンク化される)。第1の記憶デバイス(30)は、ランダム符号ブロック(=符号化データ・ブロック)300および301を記憶する。第2の記憶デバイス(31)は、ランダム符号ブロック310および311を記憶する。第3の記憶デバイス(32)は、ランダム符号ブロック320および321を記憶する。第4の記憶デバイス(33)は、ランダム符号ブロック330および331を記憶する。第4の記憶デバイス(33)が故障して、修復しなければならないものと仮定する。これは、次のように行われる。
1.第5の置換記憶デバイス(39)を、クラスタ(30000)に追加する。この置換記憶デバイスは、クラスタ内のk+1個の残りの記憶デバイスから、各記憶デバイスに記憶されているランダム符号から生成されたランダム符号の新たなランダム線形結合(および関連する係数α)を受け取る。これは、枠34から36および矢印3000から3005で示してある。
2.その結果得られた生成された新たなランダム線形結合を、ファクタXおよびYがそれぞれ消去された2つの線形結合が残るように、それらの間で結合する。すなわち、一方の線形結合はXのみと関係し、もう一方の線形結合はYのみと関係する。この除去は、例えば従来の「ガウス消去」代数演算を用いて、これらの結合の係数を慎重に選択することによって行われる。
3.残りの2つの線形結合を、置換記憶デバイス39に記憶する。これは、矢印3012および3013で示してある。
1.第5の置換記憶デバイス(39)を、クラスタ(30000)に追加する。この置換記憶デバイスは、クラスタ内のk+1個の残りの記憶デバイスから、各記憶デバイスに記憶されているランダム符号から生成されたランダム符号の新たなランダム線形結合(および関連する係数α)を受け取る。これは、枠34から36および矢印3000から3005で示してある。
2.その結果得られた生成された新たなランダム線形結合を、ファクタXおよびYがそれぞれ消去された2つの線形結合が残るように、それらの間で結合する。すなわち、一方の線形結合はXのみと関係し、もう一方の線形結合はYのみと関係する。この除去は、例えば従来の「ガウス消去」代数演算を用いて、これらの結合の係数を慎重に選択することによって行われる。
3.残りの2つの線形結合を、置換記憶デバイス39に記憶する。これは、矢印3012および3013で示してある。
これで、修復動作は完了し、システムは再び安定した動作状態になっていると考えられる。
ほとんどの分散型記憶システムでは、記憶デバイスが故障した記憶デバイスであると宣言する判断は、タイムアウトを用いて行われる。重要なことは、これが、エラーが起こりやすい不確実な判断であることである。実際に、記憶デバイスは、誤ってタイムアウトする可能性があり、修復が行われた後で予期せずに再接続する可能性がある。もちろん、タイムアウトが長くなるほど、エラーの数は少なくなる。しかし、長いタイムアウトを使用すると、記憶システムの反応性が低下し、そのため障害バーストが起こったときに修繕不能なデータ喪失が生じる恐れがあるので、危険である。再統合という概念は、誤ってタイムアウトしている記憶デバイスを再統合することである。再統合は、消去符号を使用するときには対処されていない。再統合を実施しない場合には、誤って故障しているとみなされた記憶デバイスの修復は不要であり、従って、追加の障害の許容に寄与することができないので、資源の無駄となる。これは、修復された記憶デバイスが、他の記憶デバイスから独立した冗長性を含んでおらず、従って追加の冗長性の利点をもたらさないことから生じる。
本発明の特定の有利な実施形態は、誤って故障とされた記憶デバイス、すなわち例えば接続タイムアウトが検出されたときに分散型データ記憶装置によって故障しているとみなされたがシステムに再接続するデバイスの再統合を含む。本発明で、このような再統合が可能であるのは、このような再統合が、単にさらなる冗長データをクラスタに追加するだけであり、誤って故障とされた記憶デバイスの修復は、一見すると不要であるように見えるが、クラスタの冗長性を高めることになるので、次に同じクラスタの任意の記憶デバイスが故障したときに、修復を実行する必要がなくなるからである。これは、本発明によるクラスタ化方式とともに、ランダム符号の性質から得られるものである。従って、再統合により、分散型データ記憶システムのリソースの利用効率が高まる。
この記憶デバイス再統合の概念を利用した、本発明の様々な変形実施形態も可能である。
第1の変形実施形態によれば、クラスタのサイズを、正確にn個の記憶デバイスに維持する。記憶デバイスが故障した場合には、本発明の故障した記憶デバイスを修復する方法に従って、その記憶デバイスを、符号化データ・ブロックを備える置換記憶デバイスで置換する。故障した記憶デバイスが復帰した場合(すなわちそのデバイスは一時的に利用不能になっていただけ)には、そのデバイスは、クラスタの記憶デバイスのうちの1つとしてクラスタに再統合されるのではなく、必要に応じてこのクラスタの置換デバイスとして、または変形形態では別のクラスタの置換デバイスとして使用することができる記憶デバイスのプールにフリー・デバイスとして統合される。
第2の変形実施形態によれば、修復された、すなわち別の置換記憶デバイスで置換され、クラスタに復帰する故障したデバイスは、クラスタに再統合される。これは、そのクラスタが、それまではn個の記憶デバイスを有していたが、特定の期間(すなわち次の障害まで)にわたってn+1個の記憶デバイスのレベルに維持されることを意味する。2通りの場合が当てはまる。すなわち、故障したデバイスが一時的に存在しない間に、n個のノードでデータの変更が行われず、既にクラスタに含まれているn個の記憶ノードにノードを単純に追加することができる場合。これに対して、データが変更された場合には、故障したノードを、そのクラスタの残りのn個のノードと同期させる必要がある。この同期は、故障したノードの完全な修復に必要な動作を必要とするわけではなく、単に図1を援用して上述したように、そのデバイスが存在しない間にクラスタに記憶された新たなファイルのそれぞれの1つのブロックの新たなランダム線形結合を生成し、生成した新たなランダム線形結合を故障した記憶デバイスに記憶すればよい。もちろん、クラスタがn+1個の記憶デバイスのレベルのままである場合には、クラスタに追加される任意の新たなファイルを、クラスタのn+1個のノードにわたって拡散させなければならない。これは、デバイス障害が存在しない限り続く。次のデバイス障害の後で、クラスタのサイズは、再びnに減少する。
上述のように、変形実施形態によれば、n個の記憶デバイスを含む代わりに、クラスタは、n+1個、またはn+2個、またはn+10個、またはn+m個の記憶デバイスを含むことができる(mは任意の整数)。これによって本発明のデータを記憶する方法が変化することはなく、また修復方法が変化することもなく、記憶方法では、k個のデータ・ブロックに分割されたファイルから、n個ではなくn+m個の符号化データ・ブロックが作成され、クラスタに含まれているn+m個の記憶デバイスにわたって拡散されることを考慮しているだけでよい。1つのクラスタ内にn個を超える記憶デバイスを有すると、クラスタの冗長性が高まるという利点があるが、データ記憶のオーバヘッドも大きくなる。
図4は、本発明によるデータ項目を記憶する方法を実施する分散型記憶システムにおいて記憶デバイスとして使用することができるデバイスを示す図である。デバイス400は、記憶デバイスの管理デバイスの役割を果たす汎用デバイスとすることができる。このデバイスは、ディジタル・データ/アドレス・バス414によって相互接続された、以下の構成要素を含む。
処理ユニット411(または中央処理装置(CPU))。
不揮発性メモリNVM410。
揮発性メモリVM420。
デバイス400の構成要素間の動作同期用、およびタイミング用の参照クロック信号を供給するクロック412。
デバイス400を、接続415を介してネットワーク中に接続された他のデバイスと相互接続するためのネットワーク・インタフェース413。
処理ユニット411(または中央処理装置(CPU))。
不揮発性メモリNVM410。
揮発性メモリVM420。
デバイス400の構成要素間の動作同期用、およびタイミング用の参照クロック信号を供給するクロック412。
デバイス400を、接続415を介してネットワーク中に接続された他のデバイスと相互接続するためのネットワーク・インタフェース413。
なお、メモリ410および420の説明で用いる「レジスタ」という用語は、これらのメモリのそれぞれにおいて、いくつかの2値データを記憶することができる小容量メモリ領域と、実行可能なプログラムまたはデータ・セット全体を記憶することができる大容量メモリ領域とを指すことに留意されたい。
処理ユニット411は、マイクロプロセッサ、カスタム・チップ、および専用(マイクロ)制御装置などとして実装することができる。不揮発性メモリNVM410は、ハード・ディスク、不揮発性ランダム・アクセス・メモリ、およびEPROM(消去可能プログラマブルROM)など、任意の形態の不揮発性メモリとして実装することができる。
不揮発性メモリNVM410は、特に、本発明による正確な修復方法を格納する実行可能なプログラムを表すプログラムを保持するレジスタ4101と、永続パラメータを含むレジスタ4102とを含む。電源が投入されると、処理ユニット411は、NVMレジスタ4101に含まれる命令をロードし、それらをVMレジスタ4201にコピーし、それらを実行する。
VMメモリ420は、特に、
NVMレジスタ4101のプログラム「prog」のコピーを含むレジスタ4201と、
データ記憶装置4202と、を含む。
NVMレジスタ4101のプログラム「prog」のコピーを含むレジスタ4201と、
データ記憶装置4202と、を含む。
デバイス400などのデバイスは、本発明のデータ項目を記憶する方法を実施するのに適しており、このデバイスは、
データ・ファイルをk個のデータ・ブロックに分割し(CPU411、VMレジスタ4202)、これらのk個のデータ・ブロックのランダム線形結合によってこれらのk個のブロックからn個の符号化データ・ブロックを作成する手段と、
このファイルのこれらのn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれているn個の記憶デバイスにわたって拡散する手段(CPU411、ネットワーク・インタフェース413)と、を備え、各クラスタは、異なる記憶デバイスのセットを含み、このファイルのこれらのn個の符号化データ・ブロックは、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタのn個の記憶デバイスにわたって分散される。
データ・ファイルをk個のデータ・ブロックに分割し(CPU411、VMレジスタ4202)、これらのk個のデータ・ブロックのランダム線形結合によってこれらのk個のブロックからn個の符号化データ・ブロックを作成する手段と、
このファイルのこれらのn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれているn個の記憶デバイスにわたって拡散する手段(CPU411、ネットワーク・インタフェース413)と、を備え、各クラスタは、異なる記憶デバイスのセットを含み、このファイルのこれらのn個の符号化データ・ブロックは、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタのn個の記憶デバイスにわたって分散される。
変形実施形態によれば、本発明は、例えば専用構成要素として(例えばASIC(特定用途向け集積回路)、FPGA(フィールド・プログラマブル・ゲート・アレイ)、もしくはVLSI(超大規模集積回路)として)またはデバイスに一体化された別個の電子構成要素として、完全にハードウェアで実装される、あるいはハードウェアとソフトウェアの混成形態で実装される。
図5aは、本発明による分散型データ記憶システムでデータ・ファイルを記憶する方法を流れ図の形態で示す図である。
第1のステップ500で、この方法を初期化する。この初期化は、この方法の適用に必要な変数およびメモリ・スペースの初期化を含む。ステップ501で、記憶するファイルをk個のデータ・ブロックに分割し、これらのk個のデータ・ブロックのランダム線形結合によって、これらのk個のデータ・ブロックからn個の符号化データ・ブロックを作成する。ステップ502で、このファイルのn個のデータ・ブロックを、同じ記憶デバイス・クラスタに含まれている分散型データ記憶システムの記憶デバイスにわたって拡散させる。分散型データ記憶システムの各クラスタは、異なる記憶デバイスのセットを含む。このファイルのn個の符号化データ・ブロックは、同じ記憶デバイス・クラスタにわたって分散し(またはこれまでに用いていた表現を用いれば、拡散し)、各記憶デバイス・クラスタが2つ以上のファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つのファイルからの符号化データを記憶するようになる(図2およびその説明も参照されたい)。ステップ503で、この方法が行われる。
本発明による分散型データ記憶システムにおけるこれらのステップの実行は、このシステム内のデバイスが様々な方法で行うことができる。
例えば、ステップ501は、管理デバイスによって、すなわち分散型データ記憶システムを管理する管理デバイスまたは特定のクラスタを管理する管理デバイスによって実行される。このような管理デバイスは、特定のデバイスでなく、管理デバイスの役割も果たす記憶デバイスなどの任意のデバイスであってもよい。
図5bは、本発明の記憶方法に従ってファイルがk個のデータ・ブロックに分割され、データが記憶される分散型データ記憶システムにおいて故障した記憶デバイスを修復する方法を流れ図の形態で示す図である。
第1のステップ600で、この方法を初期化する。この初期化は、この方法の適用に必要な変数およびメモリ・スペースの初期化を含む。ステップ601で、故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加する。次いで、ステップ602で、置換記憶デバイスが、その記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスの全てから、ランダム線形結合を受け取る。これらの結合は、2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成される(なお、本発明によるデータを記憶する方法では、各記憶デバイスが、少なくとも2つの異なるファイルの符号化データ・ブロックを記憶することに留意されたい)。次いで、ステップ603で、これらの受け取った新たなランダム線形結合を、ファイルXのみに関係するものが1つとファイルYのみに関係するものが1つの2つの線形結合が得られるように、それらの間で結合する。最後から2番目のステップ604で、これらの2つの結合を置換デバイスに記憶し、修復を行う(ステップ605)。
この修復方法は、所望のレベルのデータ冗長性が所定レベル未満に低下したことを検出したことによってトリガすることができる。
図6aは、ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ・システムでデータ・ファイルの記憶を管理するデバイス700を示す図である。デバイス700は、記憶管理デバイスとも呼ぶ。この記憶管理デバイスは、ネットワークに接続するためのネットワーク接続705に対するネットワーク・インタフェース703を備える。記憶管理デバイス700は、さらに、データ・ファイルをk個のデータ・ブロックに分割し、これらのk個のデータ・ブロックのランダム線形結合によってこれらのk個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するデータ・スプリッタ701を備える。記憶管理デバイス700は、さらに、このファイルの少なくともn個の符号化データ・ブロックを同じ記憶デバイス・クラスタに含まれる少なくともn個の記憶デバイスにわたって拡散させることによって、少なくともn個の符号化データ・ブロックを記憶する記憶配分器702を備える。各クラスタは、異なる記憶デバイスのセットを含み、このファイルの少なくともn個の符号化データ・ブロックは、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの少なくともn個の記憶デバイスにわたって分散される。データ・スプリッタ701と、記憶配分器702と、ネットワーク・インタフェース703とは、記憶管理デバイス700内の通信バスを介して相互接続される。
特定の実施形態によれば、記憶管理デバイスは、それ自体が、分散型データ・システムの記憶デバイスのうちの1つである。
図6bは、本発明の記憶方法に従ってデータが記憶され、記憶されたファイルがk個のデータ・ブロックに分割される分散型データ記憶システムにおいて故障した記憶デバイスの修復を管理するデバイス710を示す図である。このデバイス710は、修復管理デバイスとも呼ぶ。修復管理デバイス710は、接続715を介して分散型データ記憶システム内のデバイスに接続するためのネットワーク・インタフェース713と、故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加する置換器711と、記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから置換記憶デバイスに、k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されたk+1個の新たなランダム線形結合を分配する配分器712とを備える。修復管理デバイス710は、さらに、代数演算を用いて新たなランダム線形結合をそれらの間で結合して、Xのみに関係するものが1つとYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得る、結合器716を備える。最後に、修復管理デバイスは、これらの2つの線形結合を置換記憶デバイスに記憶するデータ書込み器717を備える。ネットワーク・インタフェース713と、配分器712と、置換器711と、結合器716と、データ書込み器717とは、内部通信バス714を介して相互接続される。
特定の実施形態によれば、記憶修復管理デバイスは、それ自体が、分散型データ・システムの記憶デバイスのうちの1つである。
Claims (5)
- ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ記憶システムにデータ・ファイルを記憶する方法であって、前記分散型データ記憶システムに記憶する前記データ・ファイルごとに実行される、以下のステップ、すなわち
前記データ・ファイルをk個のデータ・ブロックに分割し、前記k個のデータ・ブロックのランダム線形結合によって前記k個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するステップと、
前記ファイルの前記少なくともn個の符号化データ・ブロックを、同じ記憶デバイス・クラスタに含まれている前記少なくともn個の記憶デバイスにわたって拡散させることによって、前記少なくともn個の符号化データ・ブロックを記憶するステップであり、各クラスタが、異なる記憶デバイスのセットを含み、前記ファイルの前記少なくともn個の符号化データ・ブロックが、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの前記記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの前記少なくともn個の記憶デバイスにわたって分散されるステップと、を含む、前記方法。 - 請求項1に記載の方法に従ってデータが記憶され、記憶されたファイルがk個のデータ・ブロックに分割される分散型データ記憶システムにおいて故障した記憶デバイスを修復する方法であって、以下のステップ、すなわち
前記故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加するステップと、
前記置換記憶デバイスが、前記記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから、前記k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されるk+1個の新たなランダム線形結合を受け取るステップと、
代数演算を使用して、受け取った前記新たなランダム線形結合をそれらの間で結合して、ファイルXのみに関係するものが1つとファイルYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得るステップと、
前記2つの線形結合を前記置換記憶デバイスに記憶するステップと、を含む、前記方法。 - 前記分散型データ・システムに復帰する故障した記憶デバイスを前記記憶デバイス・クラスタに再統合するステップを含む、請求項2に記載の方法。
- ネットワーク中で相互接続された複数の記憶デバイスを含む分散型データ記憶システムにおいてデータ・ファイルの記憶を管理するデバイス(700)であって、以下の手段、すなわち
前記データ・ファイルをk個のデータ・ブロックに分割し、前記k個のデータ・ブロックのランダム線形結合によって前記k個のデータ・ブロックから少なくともn個の符号化データ・ブロックを作成するデータ・スプリッタ(701)と、
前記ファイルの前記少なくともn個の符号化データ・ブロックを同じ記憶デバイス・クラスタに含まれる前記少なくともn個の記憶デバイスにわたって拡散させることによって、前記少なくともn個の符号化データ・ブロックを記憶する記憶配分器(702)であり、各クラスタが、異なる記憶デバイスのセットを含み、前記ファイルの前記少なくともn個の符号化データ・ブロックを、各記憶デバイス・クラスタが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶し、且つ1つの記憶デバイス・クラスタの前記記憶デバイスのそれぞれが、少なくとも2つの異なるファイルからの符号化データ・ブロックを記憶するように、1つの記憶デバイス・クラスタの前記少なくともn個の記憶デバイスにわたって分散させる記憶配分器(702)と、を備える、前記デバイス(700)。 - 請求項1に記載の方法に従ってデータが記憶され、記憶されたファイルがk個のデータ・ブロックに分割される分散型データ記憶システムにおいて故障した記憶デバイスの修復を管理するデバイス(710)であって、以下の手段、すなわち
前記故障した記憶デバイスが属している記憶デバイス・クラスタに置換記憶デバイスを追加する置換器(711)と、
前記記憶デバイス・クラスタ内のk+1個の残りの記憶デバイスのうちの何れかから前記置換記憶デバイスに、前記k+1個の記憶デバイスのそれぞれが記憶している2つの異なるファイルXおよびYの2つの符号化データ・ブロックから生成されたk+1個の新たなランダム線形結合を分配する配分器(712)と、
代数演算を用いて前記新たなランダム線形結合をそれらの間で結合して、Xのみに関係するものが1つとYのみに関係するものが1つの2つのブロックが得られる2つの線形結合を得る結合器(716)と、
前記2つの線形結合を前記置換記憶デバイスに記憶するデータ書込み器(717)と、を備える、前記デバイス(710)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP12166706.7A EP2660723A1 (en) | 2012-05-03 | 2012-05-03 | Method of data storing and maintenance in a distributed data storage system and corresponding device |
EP12166706.7 | 2012-05-03 | ||
PCT/EP2013/058430 WO2013164227A1 (en) | 2012-05-03 | 2013-04-24 | Method of data storing and maintenance in a distributed data storage system and corresponding device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015519648A true JP2015519648A (ja) | 2015-07-09 |
JP2015519648A5 JP2015519648A5 (ja) | 2016-06-16 |
Family
ID=48227226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015509372A Withdrawn JP2015519648A (ja) | 2012-05-03 | 2013-04-24 | 分散型データ記憶システムにおいてデータを記憶および保守する方法、ならびにそれに対応するデバイス |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150089283A1 (ja) |
EP (2) | EP2660723A1 (ja) |
JP (1) | JP2015519648A (ja) |
KR (1) | KR20150008440A (ja) |
CN (1) | CN104364765A (ja) |
WO (1) | WO2013164227A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101621752B1 (ko) | 2015-09-10 | 2016-05-17 | 연세대학교 산학협력단 | 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법 |
Families Citing this family (146)
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 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US20150142863A1 (en) * | 2012-06-20 | 2015-05-21 | Singapore University Of Technology And Design | System and methods for distributed data storage |
US9367562B2 (en) | 2013-12-05 | 2016-06-14 | Google Inc. | Distributing data on distributed storage systems |
US9323615B2 (en) * | 2014-01-31 | 2016-04-26 | Google Inc. | Efficient data reads from distributed storage systems |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
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 |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
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 |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
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 |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
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 |
US20220027064A1 (en) * | 2015-04-10 | 2022-01-27 | Pure Storage, Inc. | Two or more logical arrays having zoned drives |
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 |
CA2989334A1 (en) * | 2015-07-08 | 2017-01-12 | Cloud Crowding Corp. | System and method for secure transmission of signals from a camera |
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 |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10007585B2 (en) * | 2015-09-21 | 2018-06-26 | TigerIT Americas, LLC | Fault-tolerant methods, systems and architectures for data storage, retrieval and distribution |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
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 |
EP3408956B1 (en) | 2016-01-29 | 2020-12-23 | Massachusetts Institute of Technology | Apparatus and method for multi-code distributed storage |
KR101701131B1 (ko) * | 2016-04-28 | 2017-02-13 | 주식회사 라피 | 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating 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 |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
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 |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
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 |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
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 |
DE102017216974A1 (de) * | 2017-09-25 | 2019-05-16 | Bundesdruckerei Gmbh | Dataculestruktur und Verfahren zum manipulationssicheren Speichern von Daten |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
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 |
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 |
CN108062419B (zh) * | 2018-01-06 | 2021-04-20 | 深圳市网心科技有限公司 | 一种文件存储方法、电子设备、系统和介质 |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
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 |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
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 |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
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 |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
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 |
EP3713094A1 (en) * | 2019-03-22 | 2020-09-23 | Zebware AB | Application of the mojette transform to erasure correction for distributed storage |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11151093B2 (en) * | 2019-03-29 | 2021-10-19 | International Business Machines Corporation | Distributed system control for on-demand data access in complex, heterogenous data storage |
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 |
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 |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
CN110895451A (zh) * | 2019-11-14 | 2020-03-20 | 北京京航计算通讯研究所 | 基于分布式系统的数据访问性能优化方法 |
CN110825791A (zh) * | 2019-11-14 | 2020-02-21 | 北京京航计算通讯研究所 | 基于分布式系统的数据访问性能优化系统 |
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 |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
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 |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
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 |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
CN112445656B (zh) * | 2020-12-14 | 2024-02-13 | 北京京航计算通讯研究所 | 分布式存储系统中数据的修复方法及装置 |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
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 |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100525288C (zh) * | 2000-10-26 | 2009-08-05 | 普里斯梅迪亚网络有限公司 | 网络中大有效负载分布的方法和装置 |
US20070177739A1 (en) * | 2006-01-27 | 2007-08-02 | Nec Laboratories America, Inc. | Method and Apparatus for Distributed Data Replication |
US8051362B2 (en) * | 2007-06-15 | 2011-11-01 | Microsoft Corporation | Distributed data storage using erasure resilient coding |
US8738855B2 (en) * | 2008-05-05 | 2014-05-27 | Amplidata Nv | Method of storing a data set in a distributed storage system, distributed storage system and computer program product for use with said method |
US20100094972A1 (en) * | 2008-10-15 | 2010-04-15 | Patentvc Ltd. | Hybrid distributed streaming system comprising high-bandwidth servers and peer-to-peer devices |
US20100138717A1 (en) * | 2008-12-02 | 2010-06-03 | Microsoft Corporation | Fork codes for erasure coding of data blocks |
RU2501072C2 (ru) * | 2009-02-03 | 2013-12-10 | Битторрент, Инк. | Распределенное хранение восстанавливаемых данных |
US8458287B2 (en) * | 2009-07-31 | 2013-06-04 | Microsoft Corporation | Erasure coded storage aggregation in data centers |
US8631269B2 (en) * | 2010-05-21 | 2014-01-14 | Indian Institute Of Science | Methods and system for replacing a failed node in a distributed storage network |
WO2012089701A1 (en) * | 2010-12-27 | 2012-07-05 | Amplidata Nv | A distributed object storage system comprising performance optimizations |
US8645799B2 (en) * | 2010-12-31 | 2014-02-04 | Microsoft Corporation | Storage codes for data recovery |
US8538029B2 (en) * | 2011-03-24 | 2013-09-17 | Hewlett-Packard Development Company, L.P. | Encryption key fragment distribution |
WO2013164228A1 (en) * | 2012-05-04 | 2013-11-07 | Thomson Licensing | Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices |
US10303659B2 (en) * | 2012-08-16 | 2019-05-28 | Empire Technology Development Llc | Storing encoded data files on multiple file servers |
WO2014131148A1 (zh) * | 2013-02-26 | 2014-09-04 | 北京大学深圳研究生院 | 一种最小存储再生码的编码和存储节点修复方法 |
WO2014151928A2 (en) * | 2013-03-14 | 2014-09-25 | California Institute Of Technology | Distributed storage allocation for heterogeneous systems |
-
2012
- 2012-05-03 EP EP12166706.7A patent/EP2660723A1/en not_active Withdrawn
-
2013
- 2013-04-24 CN CN201380026373.XA patent/CN104364765A/zh active Pending
- 2013-04-24 KR KR1020147033940A patent/KR20150008440A/ko not_active Application Discontinuation
- 2013-04-24 US US14/398,502 patent/US20150089283A1/en not_active Abandoned
- 2013-04-24 WO PCT/EP2013/058430 patent/WO2013164227A1/en active Application Filing
- 2013-04-24 EP EP13719477.5A patent/EP2845099A1/en not_active Withdrawn
- 2013-04-24 JP JP2015509372A patent/JP2015519648A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101621752B1 (ko) | 2015-09-10 | 2016-05-17 | 연세대학교 산학협력단 | 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP2845099A1 (en) | 2015-03-11 |
KR20150008440A (ko) | 2015-01-22 |
EP2660723A1 (en) | 2013-11-06 |
WO2013164227A1 (en) | 2013-11-07 |
US20150089283A1 (en) | 2015-03-26 |
CN104364765A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015519648A (ja) | 分散型データ記憶システムにおいてデータを記憶および保守する方法、ならびにそれに対応するデバイス | |
CA2751358C (en) | Distributed storage of recoverable data | |
US9104603B2 (en) | Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device | |
US20160283337A1 (en) | Decoupled reliability groups | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
CN110750382B (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
US20150127974A1 (en) | Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices | |
CN105378676A (zh) | 本地生成的简单纠删码 | |
CN106776129B (zh) | 一种基于最小存储再生码的多节点数据文件的修复方法 | |
CN104052576A (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
EP2413506A1 (en) | Method for adding redundancy data to a distributed data storage system and corresponding device | |
CN112799875B (zh) | 基于高斯消元进行校验恢复的方法、系统、设备及介质 | |
CN107689983B (zh) | 基于低修复带宽的云存储系统及方法 | |
CN103729151A (zh) | 一种基于改进型纠删码的失效数据修复方法 | |
Han et al. | Update-efficient regenerating codes with minimum per-node storage | |
US8510625B1 (en) | Multi-site data redundancy | |
JP2012033169A (ja) | バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 | |
US9450617B2 (en) | Distribution and replication of erasure codes | |
CN112732203A (zh) | 一种再生码构造方法、文件重构方法及节点修复方法 | |
TW201351126A (zh) | 分佈式資料儲存系統內資料檔案之儲存方法和管理裝置以及故障儲存裝置之修理方法和修理管理裝置 | |
Rai | On adaptive (functional MSR code based) distributed storage systems | |
CN107615248B (zh) | 分布式数据存储方法、控制设备和系统 | |
CN108683422A (zh) | 一种可容多错交叉循环卷积码的局部性修复编码方法 | |
CN116610645B (zh) | 基于异构再生码变换的数据分布式存储方法及系统 | |
CN111030701B (zh) | 一种基于Harary图的部分重复码的构造方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160419 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160419 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20160627 |