JP2018508073A - データ除去、割り当て、及び再構築 - Google Patents

データ除去、割り当て、及び再構築 Download PDF

Info

Publication number
JP2018508073A
JP2018508073A JP2017542459A JP2017542459A JP2018508073A JP 2018508073 A JP2018508073 A JP 2018508073A JP 2017542459 A JP2017542459 A JP 2017542459A JP 2017542459 A JP2017542459 A JP 2017542459A JP 2018508073 A JP2018508073 A JP 2018508073A
Authority
JP
Japan
Prior art keywords
data
chunks
chunk
parity
object storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017542459A
Other languages
English (en)
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.)
Agency for Science Technology and Research Singapore
Original Assignee
Agency for Science Technology and Research Singapore
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 Agency for Science Technology and Research Singapore filed Critical Agency for Science Technology and Research Singapore
Publication of JP2018508073A publication Critical patent/JP2018508073A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2094Redundant storage or storage space
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity

Abstract

複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるデータ除去、割り当て、及び再構築のための方法において、複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のストレージデバイス及びコントローラを含む、前記方法が、提供される。前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、受信されたデータを複数のデータチャンクにセグメンテーションするステップと、複数のデータチャンクに応じて1又は2以上のパリティチャンクを生じさせるステップとを含む。前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、複数のデータチャンクの数、及び受信されたデータが記憶されるべきである複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上の数に応じて、複数のデータチャンク及び1又は2以上のパリティチャンクを再編成するステップをさらに含む。最後に、前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップを含む。

Description

優先権の主張
本出願は、2015年2月26日に出願されたシンガポール特許出願第10201501440T号の優先権を主張するものである。
本発明は、概して、アクティブストレージデバイス(active storage devices)のアレー(array)を用いるストレージシステム(storage system)にデータを記憶するための方法及び装置に関し、より詳細には、アクティブストレージデバイスのアレーを用いるストレージシステム内でのデータ除去(data stripping)、パリティ計算(parity computation)、データ割り当て(data allocation)、及び再構築(reconstruction)のための方法及び装置に関する。
アクティブストレージデバイスのアレーを用いるストレージシステムは、ハードディスクドライブ(HDD,hard disk drive)とアクティブストレージユニット(active storage unit)との両方を含む。データストレージシステムの障害の起きたデータストレージデバイス内のデータのデータ再構築は、データ再構築プロセスが最高速度で実行されることを可能にするために、ストレージシステムがいかなるクライアント/アプリケーションサーバへの応答も停止するオフライン再構築(offline reconstruction)として行われることが理想的である。しかし、この筋書きは、ほとんどのストレージシステムがそれらのストレージシステムがディスクの障害からリカバリしているときでさえも中断のないデータサービスを提供することを求められるため、ほとんどの本番環境(production enviroments)において現実的でない。
消失訂正符号(erasure code)は、システム内にデバイスの障害があるときにデータを保護する。消失訂正符号を使用してシステムの信頼性を高めることは、データ複製を使用するよりも経済的である。実装された(implemented)消失訂正符号は、HDDと、アクティブコントローラボード(ACB,active controller board)及びHDDを含むアクティブストレージユニットとの両方を障害から保護することができる。一方、複製は、元のデータと同じか又は何倍ものより多量の冗長なデータを必要とする。しかし、複製は、ずっと短いリカバリ方程式(recovery equation)を有し、つまり、ディスクの障害に対してより高いリカバリの効率を有する。
したがって、必要とされるものは、現在の手法の欠点を少なくとも部分的に克服し、改善されたデータアクセスの性能及び短縮された障害復旧時間を提供する、アクティブストレージデバイスのアレーを用いるストレージシステム内でのデータ除去、パリティ計算、データ割り当て、及びデータ再構築のための方法及びデバイスである。さらに、その他の望ましい特色及び特徴は、添付の図面及び本開示のこの背景技術と合わせて考慮される以下の詳細な説明及び添付の請求項から明らかになるであろう。
本発明の少なくとも1つの実施形態によれば、複数のアクティブオブジェクトストレージデバイス(active object storage devices)を含むアクティブドライブストレージシステムにおけるデータ除去、割り当て、及び再構築のための方法において、複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のストレージデバイス及びコントローラを含む、前記方法が、提供される。前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、受信されたデータを複数のデータチャンク(data chunks)にセグメンテーションするステップ(segmenting)と、複数のデータチャンクに応じて1又は2以上のパリティチャンク(parity chunks)を生じさせるステップとを含む。前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、複数のデータチャンクの数、及び受信されたデータが記憶されるべきである複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上の数に応じて、複数のデータチャンク及び1又は2以上のパリティチャンクを再編成するステップをさらに含む。最後に、前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの特定された1つのコントローラが、複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップを含む。
本発明の少なくとも1つの実施形態の別の態様によれば、1又は2以上のアプリケーションサーバ(application servers)に接続された複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるデータ除去、割り当て、及び再構築のための方法が、提供される。前記方法は、複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するためにデータを受信するステップと、1又は2以上のアプリケーションサーバのうちの1つにおいて、受信されたデータを複数のデータチャンクへとセグメンテーションするステップとを含む。前記方法は、1又は2以上のアプリケーションサーバのうちの1つが複数のデータチャンクに応じて1又は2以上のパリティチャンクを生じさせるステップと、複数のデータチャンクの数、及び受信されたデータが記憶されるべきである複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上の数に応じて、複数のデータチャンク及び1又は2以上のパリティチャンクを再編成するステップとをさらに含む。最後に、前記方法は、1又は2以上のアプリケーションサーバのうちの1つが、複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップを含む。
本発明の少なくとも1つの実施形態のさらなる態様によれば、複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるアクティブオブジェクトストレージデバイスの障害からの障害リカバリのための方法において、複数のアクティブオブジェクトストレージデバイスの各々が、複数のグループのうちの1つに属し、複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のストレージデバイス及びコントローラを含む、前記方法が、提供される。前記方法は、障害の起きたアクティブオブジェクトストレージデバイスが参加していた複数のグループのそれぞれのグループのためにリカバリリストコンストラクタ(recovery list constructor)を選択するステップと、各リカバリリストコンストラクタが、そのリカバリリストコンストラクタのグループに関する構築される必要があるデータのリストを構築するステップとを含む。前記方法は、各リカバリリストコンストラクタが、そのリカバリリストコンストラクタのグループに関する構築される必要があるデータのリストを、グループのためのリカバリマスタ(recovery master)として割り振られた代わりのアクティブオブジェクトストレージデバイスに送信するステップと、各リカバリマスタが、データ及び対応するパリティデータにアクセスする要求を送信すること、アクセスされたデータ及び対応するパリティデータに応じてリカバリされたデータを計算すること、並びにリカバリされたデータをリカバリマスタに書き込むことのうちの1又は2以上を含むグループに関する再構築をスケジューリングするステップとをさらに含む。そして、前記方法は、リカバリマスタが、代わりのアクティブオブジェクトストレージデバイスとして働くステップを含む。
同様の参照番号が別々の図を通じて同一の又は機能的に同様の要素を指し、以下の詳細な説明と一緒に本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、さまざまな実施形態を示し、現在の実施形態によるさまざまな原理及び利点を説明するように働く。
現在の実施形態によるアクティブストレージアレーのための筐体の右上前の斜視図である。 現在の実施形態によるさまざまなアプリケーションサーバにストレージサービスを提供するアクティブストレージアレーのブロック図である。 現在の実施形態によるアクティブコントローラボード(ACB)において実施されるデータ除去及び分散を示す図2のアクティブストレージアレーのブロック図である。 現在の実施形態によるアプリケーションサーバにおいて実装されるデータ除去及び分散を示す図2のアクティブストレージアレーのブロック図である。 現在の実施形態による5ビットINTコード(INT code)のタナーグラフ(Tanner graph)構造を示す図である。 現在の実施形態によるアクティブストレージデバイスのアレーにACB及びハードディスクドライブ(HDD)を含むアクティブストレージユニット(ASU,active storage unit)の図である。 現在の実施形態によるアクティブストレージデバイスのアレーにおけるデータ除去及び分散プロセスの図である。 現在の実施形態によるアクティブストレージアレーにおけるデータ書き込みプロセスに関する流れ図である。 現在の実施形態によるアクティブストレージアレーにおける部分的なデータ書き込み及びデータ更新プロセスに関する流れ図である。 現在の実施形態によるアクティブストレージアレーにおけるデータ読み出しプロセスに関する流れ図である。 現在の実施形態によるアクティブストレージアレーにおける読み出し障害リカバリプロセスに関する流れ図である。 現在の実施形態によるアクティブストレージアレーにおけるデバイス障害リカバリプロセスに関する流れ図である。 現在の実施形態によるアクティブストレージアレーにおけるリカバリリスト構築及びリカバリマスタを示す図である。
当業者は、図中の要素が簡潔で明瞭にするために示されており、必ずしも正確な縮尺で描かれていなかったことを理解するであろう。例えば、図2、3、4、6、7、及び13の図示は、現在の実施形態によるアクティブストレージアレーのさまざまな要素の関係及び構造の代表である。
以下の詳細な説明は、本質的に例示的であるに過ぎず、本発明又は本発明の応用及び使用を限定するように意図されていない。さらに、本発明の上述の背景又は以下の詳細な説明において提示されるいずれの理論によっても拘束される意図はない。アクティブストレージデバイスのアレーを用いるストレージシステムのデータ除去、パリティ計算、データ割り当て、及び再構築のためのアーキテクチャ及びプロセスを提示することが、現在の実施形態の意図である。提示される方法及びシステムの高い並列性によってデータアクセスの性能が大幅に高められ、読み出し障害復旧時間が短縮されることを可能にするデータ読み出し及び書き込み及び更新手順、読み出し障害及びノード/デバイス障害復旧プロセスも、提示される。したがって、現在の実施形態によれば、データ除去、パリティ計算、グループ化(grouping)、及び割り当てのためのプロセスと、データを読み出し、書き込み、更新するためのプロセスと、読み出し障害に直面するときにデータを再構築するためのプロセスと、システム障害の後にノードを復旧するためのプロセスとが、提示される。
図1を参照すると、示されているのは、現在の実施形態によるアクティブストレージデバイスのアレーのストレージエンクロージャ(storage enclosure)として働く筐体102の右上前の斜視図100である。シングルアクティブストレージユニット(ASU)104、106は、筐体102のアクティブハイブリッドベイ(active hybrid bay)に嵌まり、1つのアクティブコントローラボード(ACB)108及び6つのハードディスクドライブ(HDD)110からなる。当業者は、6つのHDDに対して1つのACBの比が例示的であるに過ぎず、ACB対HDDのその他の比も上手く機能することを認めるであろう。また、当業者は、アクティブコントローラボードが、基板(例えば、図1に示される基板108)である可能性があるが、アクティブコントローラボードが、HDD110の制御のためのコントローラとして働く、筐体102又はHDD110のうちの1若しくは2以上と統合された、或いはこれらのデバイスとは別のサブシステム又はその他の構成要素である可能性もあることを認めるであろう。筐体102には30個のベイ(bays)が存在する。ベイのうちの29個は、1つのACB及び6つのHDDからなるASU106と基本的に同じASUを受けるように構成される。これらの29個のASUは、データストレージのためのものである。最後のベイは、2つのACB及び2つのHDDからなる特別なユニット104を受けるように構成される。ユニット104は、管理及び/又はゲートウェイ制御のためのものである。やはり、当業者は、筐体のベイの数が設計上の選択であり、本明細書に記載の30個のベイの選択が例示的であるに過ぎないことを認めるであろう。したがって、アクティブストレージユニット(ASU)106は、筐体102内で利用可能な空間に応じて追加され得る。
現在の実施形態によれば、各ACBは、フラッシュメモリ若しくはSTTMRAMメモリデバイスなどの不揮発性メモリ(NVM,Non-Volatile Memory)、システムオンチップ(SoC,System on a Chip)ストレージデバイス、DRAMメモリデバイス、又はその他のストレージ構成要素を備えている。NVMは、メタデータ(metadata)及び頻繁に使用されるデータを記憶する。各ACBは、最大6つのHDDに接続し、ASUを構成することができる。HDDの各々は、1つのアクティブオブジェクトストレージデバイス(AOSD,Active Object Storage Device)である可能性がある。したがって、1つのASU内に、最大で6つのAOSDが存在し、1つの筐体内に、最大で174個のAOSDが存在する。
システムのソフトウェアは、ACBsにインストールされる/組み込まれる。ソフトウェアの主な機能は、2つ以上の筐体に及ぶ可能性があるシステム全体が現在の実施形態によって自己管理されることができ、自己回復されることができるように、NVM及びHDDのストレージを含むストレージを管理すること、及びストレージクラスタ/分散型ストレージ(cluster/distributed storage)を管理することである。
筐体102は、データセンターのラックに搭載され、ストレージサービスを提供するためにさまざまなアプリケーションサーバに接続される可能性がある。図2を参照すると、アクティブストレージアレー202のブロック図200が示される。アクティブストレージアレー202は、現在の実施形態によって、高速イーサネット接続(high speed Ethernet connection)212を介して(ブロックアプリケーションサーバ204、ファイルアプリケーションサーバ206、s3オブジェクトアプリケーションサーバ208、又はキー値アプリケーションサーバ210などの)さまざまなアプリケーションサーバにストレージサービスを提供する。
上で検討されたように、筐体内のASU106の最大数は、29であり、ASU106の各々(アクティブオブジェクトストレージデバイス(AOSD)214と呼ばれる)は、NVM216及び最大6つのHDD218を含む。筐体内の30個目のデバイスは、上で検討されたように、2つのACB及び2つのHDDからなり、アクティブストレージアレー202において管理220及びゲートウェイ222の機能を制御する特別なユニット104である。より多くのASU106が、追加的なストレージが必要とされるときにより多くの筐体を追加することによって、ストレージサービスを中断することなく動的に追加される可能性があり、特別なユニット104は、追加的なASU106が追加されるときにアクティブストレージアレー202の管理220及びゲートウェイ222の機能を制御する。
消失訂正符号が、デバイスの障害があるときにデータを保護するために使用される。デバイスの障害は、ASU106のうちの1つのACB108の障害又はHDDの障害のどちらかである可能性がある。消失訂正符号(すなわち、INTコード)は、システム202がACB108の障害及び/又はHDD110の障害を含む複数の障害に耐え得るように設計される。
アクティブストレージシステム202に消失訂正符号を実装する2つの異なる手法が、存在する。第1に、筐体内のASU106のACB108がデータ除去及びパリティ計算を実行する場合、消失訂正符号は、ACB108のレベルで実装される可能性がある。このようにして、データ除去及び分散が、アクティブストレージシステム202によって、特にACB108によって行われる。もう1つの方法は、アプリケーションサーバ204、206、208、210に消失訂正符号を実装することである。消失訂正符号がアプリケーションサーバのレベルで実装されるとき、データ除去及び分散は、アクティブストレージシステム202のデータにアクセスする必要があるアプリケーションサーバ204、206、208、210において行われる。
どちらの手法も、利点及び欠点を有する。ACBの消失訂正符号の実装の手法は、アプリケーションサーバ204、206、208、210におけるいかなる修正(modifications)又はソフトウェアのインストールも必要としない。アプリケーションサーバの消失訂正符号の実装の手法は、アプリケーションサーバ204、206、208、210におけるソフトウェアのインストール及び/又は修正を必要とするが、アプリケーションサーバの消失訂正符号の実装がより高いデータの並列性を提供するので、ACBの消失訂正符号の実装の手法よりも高い性能をサポートし得る。
図3及び図4を参照して、2つの消失訂正符号の実装が示され、データ除去及びパリティ計算が2つの異なるロケーションで実装されるときにデータがどのようにアクセスされ得るかという点で比較される。図3は、現在の実施形態による、消失訂正符号のデータ除去及び分散がASU106のACB108において実装されるときの主なステップを示すアクティブストレージアレー202のブロック図300を示す。図4は、現在の実施形態による、消失訂正符号のデータ除去及び計算がアプリケーションサーバ204、206、208、210において実装されるときの主なステップを示すアクティブストレージアレー202のブロック図400を示す。
図3を参照すると、ACBの消失訂正符号のデータ除去及び分散の実装がデータにアクセスするとき、2つの主なステップが含まれる。第1に、アプリケーションサーバ(例えば、アプリケーションサーバ204)が、読み出し要求と書き込み要求との両方に関して消失訂正符号グループのプライマリAOSD304にアクセスする(302)。そのとき、データを書き込むために、プライマリAOSD304は、グループ内の対応するAOSD214へのデータ書き込み要求の送信(306)も行いながら、データ除去及びパリティ計算を実行する。データを読み出すために、プライマリAOSD304は、まず、読み出されるデータのデータロケーションを計算し、それから、それらのデータを取り出すためにグループ内の対応するAOSD214にデータ読み出し要求を送信する。
図4を参照すると、アプリケーションサーバの消失訂正符号のデータ除去及び分散の実装において、1つのステップのみが必要とされる。データを読み出すとき、データセンターの仮想マシン(VM,Virtual Machine)402などのアプリケーションサーバは、読み出されるデータのロケーションを計算し、それから、対応するAOSD214に読み出し要求を同時に送信する(404)。データを書き込むために、アプリケーションサーバ402は、データ除去及び計算を実行し、それから、対応するAOSD214にデータ書き込み要求を同時に送信する(404)。
どちらの手法も、それらの手法の利点及び欠点を有し、別々に又は一緒に実装され得る。
INTコードは、システムが同時に複数のデバイスの障害に耐えることを可能にするためにシステム用に設計された消失訂正符号である。現在の実施形態によれば、INTコードは、高いデータの信頼性及び可用性を提供するためにアクティブストレージシステムに実装される。リード・ソロモン符号(Reed Solomon codes)などのその他の消失訂正符号が、現在の実施形態によってアクティブストレージシステムに実装される可能性があるが、対応するリード・ソロモン符号に比べて、INTコードは、再構築時間を少なくとも50パーセント短くすることができる。
現在の実施形態によって、INTコードを使用するときのデータ除去及び割り当てのための方法が説明される。図5は、アクティブストレージシステムが最大3つの同時に起こる障害に耐えるために設計される、現在の実施形態による5ビットINTコードのタナーグラフ構造500を示す。5ビットINTコードの最大のコードグループサイズは、6つのチェックノード(check node)502を使用して32である。32個のデバイスのうちの6つのデバイスは、パリティデータを記憶するパリティノード504であり、32個のデバイスのうちの残りの26個のデバイスは、データを記憶するデータノード506である。このシステム設計を利用して、アクティブストレージシステムは、最大3つの同時に起こるデバイスの障害から保護され得る。
図6は、現在の実施形態によるストレージエンクロージャ(例えば、筐体102(図1))内のアクティブストレージデバイスのアレーのACB604及びハードディスクドライブ(HDD)606を含む29個のアクティブストレージユニット(ASU)602の図600を示す。各ASU602は、そのASU602に接続された1つのACB604及び6つのHDD606を有し、各HDD606は、AOSD214として構成される。したがって、1つのASU602内のAOSD214の最大数は、6つであり、筐体内のASU602の最大数は、29個であり、1つの筐体内のAOSDの最大数は、174である。
上述の5ビットINTコードを実装するために、消失訂正符号グループサイズは、28として選択される。これは、29個のASU602を保有する現在の筐体の設計に適合する。したがって、各消失訂正符号グループに、28個のAOSD214が存在し、28個のAOSD214の中から、それらのAOSD214のうちの6つが、パリティデータを記憶し、それらのAOSD214のうちの22個が、データを記憶する。
図7を参照すると、図700が、現在の実施形態によるアクティブストレージデバイスのアレーにおけるデータ除去及び分散プロセスを示し、アクティブストレージデバイスのアレー内で消失訂正符号計算、データ除去、及び分散を実行する方法を示す。データ書き込みのための3つの主なステップ、すなわち、データセグメンテーション702、データ再編成704、並びに消失訂正符号計算及びデータ分散706が、存在する。
データセグメンテーション702は、入力データバッファ708に一時的に記憶されるin_dataのサイズ(すなわち、ストレージに書き込まれるデータサイズ)を有する到着する書き込みデータ要求を、複数のより小さい同じサイズのデータチャンク710に分割する。データチャンクサイズは、構成可能である(例えば、データチャンクサイズは、1キロバイトほどの小ささである可能性がある)。図700において、in_dataは、60個のデータチャンクにセグメンテーションされている。
データ再編成704中に、複数のセグメンテーションされたデータチャンク710が、ストライプ(stripe)712へと再編成される。各ストライプ712のためのデータチャンク710の数は、消失訂正符号グループサイズによって決定される。図700において、各ストライプ712は、22個のデータチャンク710及び6つのパリティチャンク714を含む。したがって、図700に見られるように、in_dataのサイズを有する書き込み要求に関して形成された3つのストライプ712が存在する。
消失訂正符号計算及びデータ分散706において、パリティチャンク714が、各ストライプ712に関して計算される。図700において、各ストライプ712は、それぞれがチャンクサイズ(chunk_size)のサイズを有する6つのパリティチャンク714を計算する必要がある。計算は、タナーグラフ500によって設計されたINTコード符号化アルゴリズム(INT code encoding algorithm)に基づく。すべてのデータチャンク710及びパリティチャンク714は、対応するAOSDに分散される。図6を参照して上で説明されたように、各消失訂正符号グループに、28個のAOSD214が存在し、28個のAOSD214(すなわち、AOSD1からAOSD28)の中から、それらのAOSD214のうちの22個(AOSD1からAOSD22)が、データを記憶し、それらのAOSD214のうちの6つ(AOSD23からAOSD28)が、パリティデータを記憶する。したがって、再び図700を参照すると、3つのデータチャンク(データチャンク0、22、43)が、AOSD1に書き込まれ、データチャンク1、23、44が、AOSD2に書き込まれ、以下同様である。
このようにして、AOSD1からAOSD28は、28個のAOSDを含む論理的なグループである。グループ内の各論理デバイスは、システム内の対応するAOSDにマッピングされる。言い換えると、in_dataを保存するためには、論理的なグループを形成するためにシステムの174個のAOSDから28個のAOSDが選択されなければならない。現在の実施形態によれば、28個のAOSDは、高いデータの信頼性が実現され得るように(以降で説明されるように)選択される可能性がある。
現在の実施形態によるアクティブドライブシステムにおいては、主に2つの種類の障害があり、つまり、1つは、HDDの障害であり、もう1つはASUの障害である。ASUの障害は、ASUのACBの障害又は接続された6つのHDDの障害が原因である可能性がある。HDDに障害が起こるとき、HDDに記憶されたデータは、もはやアクセス不可能になる。1つのASUに障害が起こると、ASUの6つのHDDに記憶されたデータは、もはやアクセスされ得ない。
現在の実施形態によれば、大きな障害に耐えているときにシステムを保護するために、アクティブストレージシステムに規則が適用される。大きな障害は、ACB対HDDの比に依存する。1つのACBに対して6つのHDDが存在する場合、大きな障害は、いずれか3つ同時のASUの障害、いずれか3つ同時のHDDの障害、いずれか2つのHDDの障害と同時のいずれか1つのASUの障害、又はいずれか1つのHDDの障害と同時のいずれか2つのASUの障害として定義される。第1に、1つのACBに接続されたすべてのHDDは、同じ消失訂正符号グループ内にあるべきでなく、2つ以上のグループに参加するべきである。例えば、29個のASUを用い、各ASUが1つのACB及び6つのHDDを含む場合、規則は、1つのASU内の1つのACBに接続された6つすべてのHDDが異なるコードグループに参加しなければならないことである。したがって、28個のAOSDは、システムの28個の異なるASUから来なければならない(つまり、各ASUは、コードグループにあるべき1つのHDD/AOSDを選択することのみが可能である)。例えば、図6の図600を参照すると、1つのあり得る消失訂正符号グループは、ACB1からACB28までの28個のACB604の各々に接続されたすべてのHDD1 610を選択することによって形成され得る。
図8を参照すると、流れ図800は、現在の実施形態によるアクティブストレージアレーにおけるデータ書き込みプロセスを示す。システムのACBにおいてデータ除去及び計算を実装する場合に関して、データにアクセスする必要があるアプリケーションサーバ204、206、208、210は、まず、AOSD214のグループを計算するか又は選択し、グループの1つのプライマリAOSDを特定し、それから、データを書き込むためにプライマリAOSDに接続しなければならない。
プライマリAOSDは、データ書き込みが新しいデータ書き込みである(つまり、記憶されるデータが生成される必要がある)のか否かを調べる(802)。新しいデータが書き込まれるべきである場合(802)、図700(図7)に示されたデータセグメンテーション、再編成、消失訂正符号計算及びデータ分散が、実行される(804)。28個のAOSDを有するコードグループが、上述の規則に従ってやはり選択される必要がある。それが行われると、プライマリAOSDは、データ書き込みを対応するAOSDに同時に送信して、完全なストライプの書き込みを実行する(806)。書き込み806が完了されると、プライマリAOSDは、オブジェクトサイズ情報を保持し、さらなるコピーを保持するために、データのパリティを保有するAOSDにオブジェクトサイズ情報(object size information)を送信する可能性もある(808)。このステップ808は、既存のシステムにおいてsetxattr関数を通じてxattrの既存のデータ構造に1つの属性、オブジェクトサイズを追加することによって実行される。
書き込まれているデータが新しいデータではなく(802)、更新又は修正のためのデータであるとき、オブジェクトサイズが、対応するパリティチャンクからプライマリAOSDによって読み出される可能性があり(810)、オブジェクトデータのデータセグメンテーション、再編成、消失訂正符号計算及びデータ分散が、実行される(812)。プライマリAOSDは、対応するオブジェクトサイズ情報を既に有する場合、オブジェクトサイズを読み出すステップを飛ばすことができる。オブジェクトサイズ810を用い、データ分散及び消失訂正符号計算812に基づいて、ストライプ番号及びAOSDが特定され得る。1つのストライプ全体が更新される必要がある場合、アプリケーションサーバは、完全な書き込みを実行する(814)。ストライプの一部のみが更新される必要があるとき、プライマリAOSDは、部分的な書き込みを実行することができる(814)。完全な書き込みのために、プライマリAOSDは、書き込むためにグループ内のすべての対応するAOSDにデータ及びパリティを送信する(816)。部分的な書き込みに関しては、手順が図9に示される。
アプリケーションサーバにおいてデータ除去及び計算を実装する場合に関して、データ除去及び計算を実行することを必要とするアプリケーションサーバ204、206、208、210は、流れ図800のオブジェクトの書き込みを実行する。したがって、アプリケーションサーバは、データ読み出しが新しいデータ書き込みのためのものであるのか否かを調べる(802)。そのデータ読み出しが新しいデータ書き込みのためのものである場合(802)、データセグメンテーション、再編成、消失訂正符号計算及びデータ分散が実行され(804)、28個のAOSDを有するコードグループが上述の規則に基づいて選択される。そして、アプリケーションサーバは、データ書き込み命令を対応するAOSDに同時に送信して、完全な書き込みを実行する(806)。書き込みが完了されると(806)、アプリケーションサーバは、既存のシステムにおいてsetxattr関数を通じてxattrの既存のデータ構造に1つの属性、オブジェクトサイズを追加することによって、AOSDに記憶するために、データのパリティを保有するAOSDにオブジェクトサイズ情報を送信する(808)。
新しいデータではなくデータの更新又は修正のためのデータであるデータに関するオブジェクトの書き込みをアプリケーションサーバが実行しているとき(802)、アプリケーションサーバは、まず、パリティを保有するAOSDからgetxattrを通じてオブジェクトサイズを読み出す要求を送信する(810)。オブジェクトサイズを用い、データ分散及び消失訂正符号計算812に基づいて、ストライプ番号及びAOSDが特定され得る。1つのストライプ全体が更新される必要があるとき、アプリケーションサーバは、完全な書き込みを実行する(814)。ストライプの一部のみが更新される必要があるとき、アプリケーションサーバは、(図9に示されるように)部分的な書き込みを実行する(814)。完全な書き込み814のために、アプリケーションサーバは、書き込むためにグループ内のすべての対応するAOSDにデータ及びパリティを送信する(816)。
図9は、現在の実施形態によるアクティブストレージアレーにおける部分的なデータ書き込み及びデータ更新プロセスに関する流れ図900を示す。システムのACBにおいてデータ除去及び計算を実装するとき、プライマリAOSDは、更新されるべきデータのチャンク及び対応するパリティチャンクを読み出す読み出し要求を送信する(902)。それから、読み出されたデータ及びパリティ並びに書き込まれる新しいデータにも基づいて、新しいパリティデータが計算される(904)。新しいパリティが計算されると(904)、プライマリAOSDは、新しいデータ及びパリティをそれぞれのAOSDに同時に送信する(906)。
アプリケーションサーバにおいてデータ除去及び計算を実装するとき、アプリケーションサーバは、更新されるべきデータのチャンク及び対応するパリティチャンクを読み出す読み出し要求を送信する(902)。それから、読み出されたデータ及びパリティ並びに書き込まれる新しいデータにも基づいて、新しいパリティデータが計算される(904)。アプリケーションサーバが新しいパリティデータを計算すると(904)、アプリケーションサーバは、新しいデータ及び新しいパリティデータをそれぞれのAOSDに同時に送信する(906)。
図10を参照すると、現在の実施形態によるアクティブストレージアレーにおけるデータ読み出しプロセスに関する流れ図1000が示される。システムのACBにおいてデータ除去及び計算を実装するとき、プライマリAOSDが読み出されるオブジェクトのサイズの情報を有する場合、プライマリAOSDは、その他のAOSDからその情報を読み出す必要はない。そうでない場合、プライマリAOSDは、データチャンクを記憶するAOSDのロケーションを計算し(1002)、データチャンクを読み出すためにAOSDにチャンク読み出し要求を送信する(1004)。読み出される複数のチャンクがあるとき、プライマリAOSDは、読み出し要求をすべての対応するAOSDに同時に送出する(1004)。読み出しが正常に行われる場合(1006)、プライマリAOSDは、すべてのデータチャンクを、それらのデータチャンクを要求元に送り返す前に合併する(1008)。読み出しが正常に行われない場合(1006)、プライマリAOSDは、図11に示されるようにそれぞれの欠落しているチャンクに関する読み出し障害リカバリプロセスを初期化する(1010)。
アプリケーションサーバにおいてデータ除去及び計算を実装するとき、データ読み出しを実行するために、アプリケーションサーバは、まず、getxattr関数を呼び出すことによって、パリティチャンクを保持するAOSDである情報を記憶するAOSDからデータのサイズを読み出さなければならない。関数が完了されると、アプリケーションサーバは、データチャンクを記憶するAOSDのロケーションを特定し(1002)、それから、データチャンクを読み出す読み出し要求を発する(1004)ことができる。読み出される複数のチャンクがあるとき、アプリケーションサーバは、読み出し要求をすべての対応するAOSDに同時に送出する(1004)。データチャンクが正常に読み出される場合(1006)、アプリケーションサーバは、すべてのデータチャンクを、それらのデータチャンクを要求元に送り返す前に合併することができる(1008)。読み出しが正常に行われない場合(1006)、アプリケーションサーバは、図11に従ってそれぞれの欠落しているチャンクに関する読み出し障害リカバリプロセスを初期化する(1010)。
図11は、現在の実施形態によるアクティブストレージアレーにおける読み出し障害リカバリプロセスに関する流れ図1100を示す。システムのACBにおいてデータ除去及び計算を実施するときに、読み出し障害に直面するとき、プライマリAOSDは、読み出し障害リカバリプロセスを初期化する(1102)。消失訂正符号及びデータ分散アルゴリズムに基づいて、プライマリAOSDは、リカバリのために使用されるデータチャンクを読み出すために対応するAOSDに読み出し要求を送出する(1104)。データが受信されると、プライマリAOSDは、欠けたデータを計算し、リカバリし(1106)、そのデータを要求元に送り返す。その一方で、プライマリAOSDは、最初に読み出しが失敗したAOSD又は指定されたいずれかのその他のAOSDにデータを書き込む可能性もある(1108)。
アプリケーションサーバにおいてデータ除去及び計算を実装するとき、アプリケーションサーバは、読み出し障害に直面すると、読み出し障害リカバリプロセスを初期化する(1102)。消失訂正符号及びデータ分散アルゴリズムに基づいて、アプリケーションサーバは、リカバリのために必要とされるデータチャンクを読み出すために対応するAOSDに読み出し要求を送出する(1104)。データが受信されると(1104)、アプリケーションサーバは、欠けたデータを計算し、リカバリし(1106)、そのデータを要求元に送り返す。また、アプリケーションサーバは、最初に読み出しが失敗したAOSD又は指定されたいずれかのその他のAOSDにデータを書き込む(1108)。
図12は、現在の実施形態によるアクティブストレージアレーにおけるAOSD障害リカバリプロセスに関する流れ図1200を示す。システムのACBにおいてデータ除去及び計算を実装するとき、AOSDの障害が、システム内の管理によって特定される可能性があり、管理は、リカバリプロセスを初期化する可能性がある。プライマリAOSDは、そのプライマリAOSDのグループに関するリカバリリストコンストラクタとして選択され(1202)、プライマリAOSDがリストを持たない場合に再構築される必要があるグループのオブジェクトのリストを構築する(1204)責任を負う。これは、グループ内のすべての利用可能なAOSDをスキャンすることによって行われ得る。リストが計算されると(1204)、プライマリAOSDは、割り振られた対応する代わりのAOSDにリストを送信する(1206)。割り振られた代わりのAOSDは、再構築のスケジューリング、計算、及びデータ書き込みの責任を負う(1208)リカバリマスタになる。
アプリケーションサーバにおいてデータ除去及び計算を実装するときは、1つのAOSDが複数の消失訂正符号グループに参加する可能性があり、アプリケーションサーバがデータ除去及び計算を実装しているときにプライマリAOSDが存在しないので、リカバリリストコンストラクタが、各グループのために選択される/割り振られる(1202)。各リカバリリストコンストラクタは、そのリカバリリストコンストラクタ自体のグループに関して再構築される必要があるオブジェクト/データリストを構築する責任を負う(1204)。リストが作られると(1204)、リカバリリストコンストラクタは、割り振られた対応する代わりのAOSDにリストを送信し(1206)、対応する代わりのAOSDが、再構築のスケジューリング、計算、及びデータ書き込みの責任を負うリカバリマスタになる(1208)。
ASUの障害が複数のAOSDの障害であるとき、AOSD再構築プロセス1200は、単一AOSD障害リカバリプロセスに従って各AOSDを1つずつ再構築する。
図13は、現在の実施形態によるアクティブストレージアレーにおけるリカバリリスト構築及びコードグループのリカバリマスタを示す図1300を示す。アプリケーションサーバにおいてデータ除去及び計算を実装するとき、再構築のためのリカバリリストを構築するためのグループ内のプライマリAOSDが存在しない。グループ内に7つのAOSDが存在し、それらは、AOSD L、AOSD B、AOSD Z、AOSD P、AOSD S、AOSD N、及びAOSD Fである。AOSD Pに障害が起こると、いずれかの利用可能なAOSDが、グループ内のすべてのデータをスキャンすることによって再構築されるデータのリストを構築するリカバリリストコンストラクタであり得る。システムのACBにおいてデータ除去及び計算を実装するとき、このグループのプライマリAOSDが、リストを構築する責任を負うリカバリリストコンストラクタになる。
リストが構築されると、リカバリリストコンストラクタは、システム管理によって割り振られた代わりのAOSDであるAOSD Wにリストを送信する。AOSD Wは、このグループのリカバリマスタになる。受信されたリストに基づいて、AOSD Wは、再構築プロセスをスケジューリングし、データを計算し、そのAOSD W自体のストレージにデータを書き込む責任を負う。このようにして、再構築中にネットワークを介して送信される必要があるデータが削減され、時間と成果との両方をもたらす。
したがって、現在の実施形態は、改善されたデータアクセス性能及び短縮された読み出し障害復旧時間を提供する、アクティブストレージデバイスのアレーを用いるストレージシステム内でのデータ除去、パリティ計算、データ割り当て、及びデータ再構築のための方法及びデバイスを提供することができることが分かる。この方法は、ASUのACBにおいて実装される消失訂正符号のデータ除去及び分散並びにアプリケーションサーバにおいて実装される消失訂正符号のデータ除去及び計算に適用され得る。
例示的な実施形態が本発明の上述の詳細な説明において提示されたが、膨大な数の変更が存在することを理解されたい。例示的な実施形態は例であるに過ぎず、本発明の範囲、応用性、動作、又は構成を限定するようにまったく意図されていないことをさらに理解されたい。むしろ、上述の詳細な説明は本発明の例示的な実施形態を履行するための便利なロードマップを当業者に提供し、添付の請求に記載の本発明の範囲を逸脱することなく例示的な実施形態において説明された要素の機能及び構成並びに動作の方法にさまざまな変更がなされ得ることが理解される。

Claims (19)

  1. 複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるデータ除去、割り当て、及び再構築のための方法において、前記複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のストレージデバイス及びコントローラを含む、前記方法であって、
    前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するために前記複数のアクティブオブジェクトストレージデバイスのうちの特定された1つにおいてデータを受信するステップと、
    前記複数のアクティブオブジェクトストレージデバイスのうちの前記特定された1つのコントローラが、受信されたデータを複数のデータチャンクにセグメンテーションするステップと、
    前記複数のアクティブオブジェクトストレージデバイスのうちの前記特定された1つのコントローラが、前記複数のデータチャンクに応じて1又は2以上のパリティチャンクを生じさせるステップと、
    前記複数のアクティブオブジェクトストレージデバイスのうちの前記特定された1つのコントローラが、前記複数のデータチャンクの数、及び前記受信されたデータが記憶されるべきである前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上の数に応じて、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクを再編成するステップと、
    前記複数のアクティブオブジェクトストレージデバイスのうちの前記特定された1つのコントローラが、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクを前記複数のアクティブオブジェクトストレージデバイスのうちの前記1又は2以上に記憶するステップとを含む、前記方法。
  2. 複数のデータチャンク及び1又は2以上のパリティチャンクを再編成するステップが、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクをデータチャンク/パリティチャンクの1又は2以上のストライプへと再編成するステップを含む、請求項1に記載の方法。
  3. 複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、前記複数のアクティブオブジェクトストレージデバイスのうちの前記1又は2以上へのデータチャンク/パリティチャンクの1又は2以上のストライプの各々の完全なストライプの書き込みを実行するステップを含む、請求項2に記載の方法。
  4. 複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、受信されたデータのオブジェクトサイズを前記1又は2以上のパリティチャンクに書き込むステップを含む、請求項1に記載の方法。
  5. データを受信するステップが、
    複数のアクティブオブジェクトストレージデバイスのうちの特定された1つにおいて前記データを受信するステップと、
    受信されたデータが新しいデータであるのか又は更新データであるのかを決定するステップとを含み、
    複数のデータチャンク及び1又は2以上のパリティチャンクを前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、
    前記受信されたデータが新しいデータである場合に前記複数のアクティブオブジェクトストレージデバイスのうちの前記1又は2以上へのデータチャンク/パリティチャンクの1又は2以上のストライプの各々の完全なストライプの書き込みを実行するステップ、
    前記受信されたデータが更新データである場合に、各ストライプに関して、前記完全なストライプが更新される必要があるのかどうか、又は前記ストライプの一部が更新される必要があるのかどうかを決定し、更新される必要があるそれぞれの完全なストライプに関して完全なストライプの書き込みを実行し、一部のみが更新されることを必要とする各ストライプに関して部分的な書き込みを実行するステップを含む、請求項2に記載の方法。
  6. 部分的な書き込みを実行するステップが、
    各ストライプに関する更新されるべきデータチャンク及び対応するパリティチャンクが記憶されるアクティブオブジェクトストレージデバイスから前記ストライプに関する前記データチャンク/パリティチャンクを並列に読み出すステップと、
    受信されたデータに応じて前記更新されるべきデータチャンクを更新するステップと、
    更新されたデータチャンクに応じて前記パリティチャンクを再計算するステップと、
    各ストライプに関する前記データチャンク/パリティチャンクが記憶された前記アクティブオブジェクトストレージデバイスに前記ストライプに関する更新されたデータチャンク及び対応する再計算されたパリティチャンクを並列に書き込むステップとを含む、請求項5に記載の方法。
  7. 各ストライプに関する更新されるべきデータチャンク及び対応するパリティチャンクを並列に読み出すステップが、
    前記ストライプ内のそれぞれの更新されるべきデータチャンク及びそれぞれの対応するパリティチャンクに関してアクティブオブジェクトストレージデバイスのロケーションを計算するステップと、
    前記ストライプ内の前記アクティブオブジェクトストレージデバイスのロケーションのすべてにチャンク読み出し要求を並列に送信するステップと、
    読み出される前記更新されるべきデータチャンク及び前記対応するパリティチャンクの更新されたストライプを導出するために、前記チャンク読み出し要求に応答して受信されたデータチャンク及びパリティチャンクを合併するステップとを含む、請求項6に記載の方法。
  8. アクティブオブジェクトストレージデバイスのロケーションを計算するステップが、オブジェクトデータ分散アルゴリズムに応じてアクティブオブジェクトストレージデバイスのロケーションを計算するステップを含む、請求項7に記載の方法。
  9. データチャンク及びパリティチャンクを合併するステップが、
    ストライプに関するチャンク読み出し要求のうちの1又は2以上に対する応答を受信することに失敗することに応じてチャンク読み出し障害が発生したかどうかを決定するステップと、
    読み出された更新されるべきデータチャンク及び対応するパリティチャンクに応じて欠落しているチャンクを特定するステップと、
    読み出された前記更新されるべきデータチャンク及び前記対応するパリティチャンクに応じて前記欠落しているチャンクに関するデータを計算するステップと、
    前記更新されるべきデータチャンク及び前記対応するパリティチャンクの前記ストライプを導出するために、前記チャンク読み出し要求に応答して受信されたデータチャンク及びパリティチャンク並びに前記欠落しているチャンクに関する前記データを合併するステップとを含む、請求項7に記載の方法。
  10. 複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるデータ除去、割り当て、及び再構築のための方法において、前記複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のアプリケーションサーバに接続される、前記方法であって、
    前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するためにデータを受信するステップと、
    前記1又は2以上のアプリケーションサーバのうちの1つが受信されたデータを複数のデータチャンクへとセグメンテーションするステップと、
    前記1又は2以上のアプリケーションサーバのうちの1つが前記複数のデータチャンクに応じて1又は2以上のパリティチャンクを生じさせるステップと、
    前記1又は2以上のアプリケーションサーバのうちの1つが、前記複数のデータチャンクの数、及び前記受信されたデータが記憶されるべきである前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上の数に応じて、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクを再編成するステップと、
    前記1又は2以上のアプリケーションサーバのうちの1つが、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクを前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップとを含む、前記方法。
  11. 複数のデータチャンク及び1又は2以上のパリティチャンクを再編成するステップが、前記複数のデータチャンク及び前記1又は2以上のパリティチャンクをデータチャンク/パリティチャンクの1又は2以上のストライプへと再編成するステップを含む、請求項10に記載の方法。
  12. 複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上へのデータチャンク/パリティチャンクの1又は2以上のストライプの各々の完全なストライプの書き込みを実行するステップを含む、請求項11に記載の方法。
  13. 複数のデータチャンク及び1又は2以上のパリティチャンクを複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、受信されたデータのオブジェクトサイズを前記1又は2以上のパリティチャンクに書き込むステップを含む、請求項10に記載の方法。
  14. データを受信するステップが、
    複数のアクティブオブジェクトストレージデバイスのうちの特定された1つにおいて前記データを受信するステップと、
    受信されたデータが新しいデータであるのか又は更新データであるのかを決定するステップとを含み、
    複数のデータチャンク及び1又は2以上のパリティチャンクを前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上に記憶するステップが、
    前記受信されたデータが新しいデータである場合に前記複数のアクティブオブジェクトストレージデバイスのうちの1又は2以上へのデータチャンク/パリティチャンクの1又は2以上のストライプの各々の完全なストライプの書き込みを実行するステップ、
    前記受信されたデータが更新データである場合に、各ストライプに関して、前記完全なストライプが更新される必要があるのかどうか、又は前記ストライプの一部が更新される必要があるのかどうかを決定し、更新される必要があるそれぞれの完全なストライプに関して完全なストライプの書き込みを実行し、一部のみが更新されることを必要とする各ストライプに関して部分的な書き込みを実行するステップを含む、請求項11に記載の方法。
  15. 部分的な書き込みを実行するステップが、
    各ストライプに関する更新されるべきデータチャンク及び対応するパリティチャンクが記憶されるアクティブオブジェクトストレージデバイスから前記ストライプに関する前記データチャンク/パリティチャンクを並列に読み出すステップと、
    受信されたデータに応じて前記更新されるべきデータチャンクを更新するステップと、
    更新されたデータチャンクに応じて前記パリティチャンクを再計算するステップと、
    各ストライプに関する前記データチャンク/パリティチャンクが記憶された前記アクティブオブジェクトストレージデバイスに前記ストライプに関する更新されたデータチャンク及び対応する再計算されたパリティチャンクを並列に書き込むステップとを含む、請求項14に記載の方法。
  16. 各ストライプに関する更新されるべきデータチャンク及び対応するパリティチャンクを並列に読み出すステップが、
    前記ストライプ内のそれぞれの更新されるべきデータチャンク及びそれぞれの対応するパリティチャンクに関してアクティブオブジェクトストレージデバイスのロケーションを計算するステップと、
    前記ストライプ内の前記アクティブオブジェクトストレージデバイスのロケーションのすべてにチャンク読み出し要求を並列に送信するステップと、
    読み出される前記更新されるべきデータチャンク及び前記対応するパリティチャンクの更新されたストライプを導出するために、前記チャンク読み出し要求に応答して受信されたデータチャンク及びパリティチャンクを合併するステップとを含む、請求項15に記載の方法。
  17. アクティブオブジェクトストレージデバイスのロケーションを計算するステップが、オブジェクトデータ分散アルゴリズムに応じてアクティブオブジェクトストレージデバイスのロケーションを計算するステップを含む、請求項16に記載の方法。
  18. データチャンク及びパリティチャンクを合併するステップが、
    ストライプに関するチャンク読み出し要求のうちの1又は2以上に対する応答を受信することに失敗することに応じてチャンク読み出し障害が発生したかどうかを決定するステップと、
    読み出された更新されるべきデータチャンク及び対応するパリティチャンクに応じて欠落しているチャンクを特定するステップと、
    読み出された前記更新されるべきデータチャンク及び前記対応するパリティチャンクに応じて前記欠落しているチャンクに関するデータを計算するステップと、
    前記更新されるべきデータチャンク及び前記対応するパリティチャンクの前記ストライプを導出するために、前記チャンク読み出し要求に応答して受信されたデータチャンク及びパリティチャンク並びに前記欠落しているチャンクに関する前記データを合併するステップとを含む、請求項16に記載の方法。
  19. 複数のアクティブオブジェクトストレージデバイスを含むアクティブドライブストレージシステムにおけるアクティブオブジェクトストレージデバイスの障害からの障害リカバリのための方法において、前記複数のアクティブオブジェクトストレージデバイスの各々が、複数のグループのうちの1つに属し、前記複数のアクティブオブジェクトストレージデバイスの各々が、1又は2以上のストレージデバイス及びコントローラを含む、前記方法であって、
    障害の起きたアクティブオブジェクトストレージデバイスが参加していた前記複数のグループのそれぞれのグループのためにリカバリリストコンストラクタを選択するステップと、
    各リカバリリストコンストラクタが、前記リカバリリストコンストラクタのグループに関する構築される必要があるデータのリストを構築するステップと、
    各リカバリリストコンストラクタが、前記リカバリリストコンストラクタのグループに関する前記構築される必要があるデータのリストを、前記グループのためのリカバリマスタとして割り振られた代わりのアクティブオブジェクトストレージデバイスに送信するステップと、
    各リカバリマスタが、データ及び対応するパリティデータにアクセスする要求を送信すること、アクセスされたデータ及び前記対応するパリティデータに応じてリカバリされたデータを計算すること、並びに前記リカバリされたデータを前記リカバリマスタに書き込むことのうちの1又は2以上を含む前記グループに関する再構築をスケジューリングするステップと、
    その後、前記リカバリマスタが、前記代わりのアクティブオブジェクトストレージデバイスとして働くステップとを含む、前記方法。
JP2017542459A 2015-02-26 2016-02-26 データ除去、割り当て、及び再構築 Pending JP2018508073A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SG10201501440T 2015-02-26
SG10201501440T 2015-02-26
PCT/SG2016/050095 WO2016137402A1 (en) 2015-02-26 2016-02-26 Data stripping, allocation and reconstruction

Publications (1)

Publication Number Publication Date
JP2018508073A true JP2018508073A (ja) 2018-03-22

Family

ID=56788894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017542459A Pending JP2018508073A (ja) 2015-02-26 2016-02-26 データ除去、割り当て、及び再構築

Country Status (6)

Country Link
US (1) US10353787B2 (ja)
EP (1) EP3262500A4 (ja)
JP (1) JP2018508073A (ja)
CN (1) CN107250986A (ja)
SG (1) SG11201706762SA (ja)
WO (1) WO2016137402A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188665B2 (en) 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
US10440115B2 (en) * 2015-02-27 2019-10-08 Pure Storage, Inc. Write intent messaging in a dispersed storage network
CN106598489A (zh) * 2016-11-28 2017-04-26 深圳市中博睿存科技有限公司 一种基于纠删码存储的文件修改算法优化方法
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
US10255134B2 (en) * 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
US10795760B2 (en) * 2017-03-20 2020-10-06 Samsung Electronics Co., Ltd. Key value SSD
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
US10901646B2 (en) * 2018-11-30 2021-01-26 International Business Machines Corporation Update of RAID array parity
US11239864B2 (en) * 2019-07-03 2022-02-01 Vast Data Ltd. Techniques for improved erasure coding in distributed storage systems
US10998919B2 (en) * 2019-10-02 2021-05-04 Microsoft Technology Licensing, Llc Coded stream processing
KR20210131058A (ko) * 2020-04-23 2021-11-02 에스케이하이닉스 주식회사 메모리 시스템 내 데이터를 보호하는 장치 및 방법
CN112395263B (zh) * 2020-11-26 2022-08-19 新华三大数据技术有限公司 一种osd的数据恢复方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08329021A (ja) 1995-03-30 1996-12-13 Mitsubishi Electric Corp クライアントサーバシステム
US6754773B2 (en) 2001-01-29 2004-06-22 Snap Appliance, Inc. Data engine with metadata processor
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US8751859B2 (en) * 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US8689042B1 (en) * 2007-08-30 2014-04-01 Virident Systems, Inc. Methods for data redundancy across replaceable non-volatile memory storage devices
US10268374B2 (en) * 2010-02-27 2019-04-23 International Business Machines Corporation Redundant array of independent discs and dispersed storage network system re-director
US10545825B2 (en) * 2016-04-29 2020-01-28 Synamedia Limited Fault-tolerant enterprise object storage system for small objects
US11042299B2 (en) * 2016-06-27 2021-06-22 Quantum Corporation Removable media based object store

Also Published As

Publication number Publication date
SG11201706762SA (en) 2017-09-28
EP3262500A4 (en) 2018-10-03
CN107250986A (zh) 2017-10-13
WO2016137402A1 (en) 2016-09-01
US10353787B2 (en) 2019-07-16
EP3262500A1 (en) 2018-01-03
US20180246793A1 (en) 2018-08-30

Similar Documents

Publication Publication Date Title
JP2018508073A (ja) データ除去、割り当て、及び再構築
US11327661B2 (en) Storage system and data management method
US8839028B1 (en) Managing data availability in storage systems
US7386758B2 (en) Method and apparatus for reconstructing data in object-based storage arrays
US10452498B2 (en) Fault tolerance for persistent main memory
US7069382B2 (en) Method of RAID 5 write hole prevention
US10817376B2 (en) RAID with heterogeneous combinations of segments
US8838889B2 (en) Method of allocating raid group members in a mass storage system
JP6798007B2 (ja) ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法
US7308532B1 (en) Method for dynamically implementing N+K redundancy in a storage subsystem
US9436394B2 (en) RAID random distribution scheme
US10705737B2 (en) Storage system and data arrangement method of storage system
JP2004227560A (ja) 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法
US10067833B2 (en) Storage system
CN113552998B (zh) 用于管理存储系统中的条带的方法、设备和程序产品
JP2006331076A (ja) データ記憶システム及び記憶方法
JP3736134B2 (ja) 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体
US8832370B2 (en) Redundant array of independent storage
JP2006178926A (ja) 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
CN108932176B (zh) 数据降级存储方法及装置
CN113268374A (zh) 用于存储数据的方法、存储装置和数据存储系统
JP7137612B2 (ja) 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム
CN116414294A (zh) 生成块组的方法、装置和设备