JP2019036301A - データ保存方法及びそのシステム - Google Patents

データ保存方法及びそのシステム Download PDF

Info

Publication number
JP2019036301A
JP2019036301A JP2018142656A JP2018142656A JP2019036301A JP 2019036301 A JP2019036301 A JP 2019036301A JP 2018142656 A JP2018142656 A JP 2018142656A JP 2018142656 A JP2018142656 A JP 2018142656A JP 2019036301 A JP2019036301 A JP 2019036301A
Authority
JP
Japan
Prior art keywords
storage device
data
storage
parity code
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018142656A
Other languages
English (en)
Other versions
JP2019036301A5 (ja
JP7084243B2 (ja
Inventor
ピー. カチェア ラムダス
P Kachare Ramdas
ピー. カチェア ラムダス
ウォーリー フレッド
Worley Fred
ウォーリー フレッド
フィッシャー スティーブン
Steven Fisher
フィッシャー スティーブン
ピント オスカー
Pinto Oscar
ピント オスカー
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019036301A publication Critical patent/JP2019036301A/ja
Publication of JP2019036301A5 publication Critical patent/JP2019036301A5/ja
Application granted granted Critical
Publication of JP7084243B2 publication Critical patent/JP7084243B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ボトルネックの現象による効率性の低下を防止させ、損失したデータを復旧できるデータ保存方法及びそのシステムを提供する。【解決手段】本発明のシステムでは、複数のストレージ装置は、データをストレージ装置に分散させ、データ保護を提供する介在中央コントローラ無しで、一つ以上のホストコンピュータと直接接続され、パリティーコードは、一つ以上の専用ストレージ装置に保存されたり、複数のストレージ装置に分散され、ストレージ装置がライトコマンドを受信した場合、部分パリティーコードが計算され、ライトされたデータに対するパリティーコードが他のストレージ装置にあれば、部分パリティーコードを使用してパリティーコードをアップデートするように、部分パリティーコードが他のストレージ装置に伝送される。【選択図】 図1

Description

本発明は、データストレージ(data storage)に関し、より具体的に分散消去コーディングのためのデータ保存方法及びそのシステムに関する。
重複データ保存システムは、RAID(Redundant array of independent disks)と言及されることがある、複数のストレージ装置にわたってデータを分散させることができる。
RAIDアレイは、ライトコマンド(write commands)を受信し、パリティーコード(parity codes)を生成し、パリティーコードとともにRAIDアレイに書き込む(write)データを保存するRAIDコントローラと言及される中央コントローラによって制御され得る。
データの損失時に、RAIDコントローラは、パリティーコードから損失されたデータを再生成することができる。
このようなシステムにおいて、RAIDコントローラは多くの費用がかかり、効率性を減少させるボトルネック(bottleneck)の現象を示す可能性がある。
米国特許第8,321,597B2号明細書 米国特許第8,856,431B2号明細書 米国特許第9,384,093B1号明細書 米国特許第9,521,201B2号明細書 米国特許第9,569,320B2号明細書 米国特許第9,582,431B2号明細書 米国特許第9,678,665B2号明細書 米国特許出願公開第2017/0068488A1号明細書 米国特許出願公開第2017/0147209A1号明細書
本発明は上記従来の重複データ保存システムにおける問題点に鑑みてなされたものであって、本発明の目的は、ボトルネックの現象による効率性の低下を防止させ、損失したデータを復旧できるデータ保存方法及びそのシステムを提供することにある。
本発明の実施形態では、分散消去コーディングのためのシステム及び方法として示す。
複数のストレージ装置は、データをストレージ装置に分散させ、データの保護を提供する介在中央コントローラ無しで、一つ以上のホストコンピュータと直接接続される。
パリティーコードは、一つ以上の専用ストレージ装置に保存されたり、複数のストレージ装置に分散されたりする。
ストレージ装置が、ライトコマンドを受信した場合、部分パリティーコードが計算され、ライトされたデータに対するパリティーコードが他のストレージ装置にあれば、部分パリティーコードを使用してパリティーコードをアップデートするように、部分パリティーコードが他のストレージ装置に伝送される。
上記目的を達成するためになされた本発明によるデータ保存方法は、ストレージ装置アレイにデータを保存する方法において、前記ストレージ装置アレイの第1ストレージ装置が、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで前記第1ストレージ装置に書き込まれるライトデータ(write data)を含むライトコマンド(write command)を受信するステップと、前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索するステップと、前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコード(parity code)を計算するステップと、前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成するステップと、前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存するステップと、を有し、前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とする。
前記第3ストレージ装置は、前記第2ストレージ装置であることが好ましい。
前記第1ストレージ装置が、前記第2ストレージ装置の識別子を計算するステップと、前記第2ストレージ装置の前記識別子が、前記第1ストレージ装置の識別子と異なるか否かを判断するステップと、前記第2ストレージ装置の前記識別子が、前記第1ストレージ装置の前記識別子と異なる場合、前記部分パリティーコードを含むパリティーメッセージを前記第2ストレージ装置に伝送するステップと、をさらに有することが好ましい。
前記ライトコマンドは、ネームスペース(namespace)識別子をさらに含み、前記第2ストレージ装置の前記識別子を計算するステップは、前記ネームスペース識別子に基づいてネームスペースオフセットテーブルからネームスペースオフセットを取得するステップと、前記ネームスペースオフセット及び前記論理ブロックアドレスの和として仮想ストライプ識別子を計算するステップと、を含むことが好ましい。
前記第2ストレージ装置の前記識別子を計算するステップは、前記第1ストレージ装置によって、前記第1ストレージ装置の第1テーブルからストライドサイズ(stride size)を検索するステップと、前記仮想ストライプ識別子、モジュロ(modulo)、及び前記ストライドサイズを計算するステップと、をさらに含むことが好ましい。
前記パリティーメッセージを前記第2ストレージ装置に伝送するステップは、前記第1ストレージ装置が、前記第1ストレージ装置の第2テーブルから前記第2ストレージ装置のアドレスを検索するステップと、前記第2ストレージ装置の前記アドレスに前記パリティーメッセージを伝送するステップと、を含むことが好ましい。
前記第1ストレージ装置は、イーサネット(登録商標、以下省略)ストレージ装置であり、前記第2ストレージ装置は、イーサネットストレージ装置であり、前記第2ストレージ装置のアドレスは、前記第2ストレージ装置のイーサネットアドレスであることが好ましい。
ストレージシステム管理回路によって、前記第1ストレージ装置の前記第2テーブルに前記第2ストレージ装置のアドレスを保存するステップをさらに有することが好ましい。
前記ストレージシステム管理回路によって、前記第1テーブルに前記ストライドサイズを保存するステップをさらに有することが好ましい。
前記第1ストレージ装置は、PCI(Peripheral component interconnect)エクスプレススイッチ(express switch)に接続され、前記第2ストレージ装置は、前記PCIエクスプレススイッチに接続され、前記第2ストレージ装置のアドレスは、前記第2ストレージ装置のPCIエクスプレスアドレスであることが好ましい。
前記以前のパリティーコード及び前記新しいパリティーコードのそれぞれは、RAID4、RAID5、RAID6、及び消去コードデータ保護システムからなるグループから選択されるデータ保護システムに利用されるデータ保護コードであることが好ましい。
前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置の故障又は切断時に、ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを再構成して、前記第1ストレージ装置にアドレスされたストレージコマンドを前記ストレージシステム管理回路に伝送させるステップと、受信したストレージコマンドに応答して、前記ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを介して、前記第1ストレージ装置が送信したであろう、存在し、正しく動作していたものと、同一のコマンド完了を伝送するステップと、をさらに有することが好ましい。
前記ストレージシステム管理回路によって、前記第1ストレージ装置に以前に保存されたデータを復旧するステップと、前記復旧されたデータを第4ストレージ装置に保存するステップと、をさらに有することが好ましい。
前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置の故障又は切断時に、ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを再構成し、前記第1ストレージ装置にアドレスされたストレージコマンドを第4ストレージ装置に伝送させるステップと、受信したストレージコマンドに応答して、前記第4ストレージ装置によって、前記ストレージインターフェーススイッチを介して、前記第1ストレージ装置が送信したであろう、存在し、正しく動作していたものと、同一のコマンド完了を伝送するステップと、をさらに有することが好ましい。
前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置に分離障害(discrete failure)が発生し、リードコマンドの受信時に、前記第1ストレージ装置が、前記分離障害によって影響を受けたデータを復旧するステップと、前記リードコマンドに応答して、前記第1ストレージ装置によって、前記ストレージインターフェーススイッチを介して、前記分離障害が発生しなかったら、前記第1ストレージ装置が伝送していたであろうものと同一のコマンド完了を伝送するステップと、をさらに有することが好ましい。
前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置に分離障害が発生し、リードコマンドの受信時に、ストレージシステム管理回路が、前記分離障害によって影響を受けたデータを復旧するステップと、前記リードコマンドに応答して、前記ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを介して、前記分離障害が発生しなかったら、前記第1ストレージ装置が伝送していたであろうものと同一のコマンド完了を伝送するステップと、をさらに有することが好ましい。
上記目的を達成するためになされた本発明によるデータ保存システムは、データを保存するシステムにおいて、ストレージ装置アレイを含み、前記ストレージ装置アレイの第1ストレージ装置が、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで、前記第1ストレージ装置に書き込まれるライトデータを含むライトコマンドを受信し、前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索し、前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコードを計算し、前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成し、前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存し、前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とする。
前記第3ストレージ装置は、前記第2ストレージ装置であること。
前記第1ストレージ装置が、前記第2ストレージ装置の識別子を計算し、前記第2ストレージ装置の前記識別子が前記第1ストレージ装置の識別子と異なるか否かを判断し、前記第2ストレージ装置の前記識別子が前記第1ストレージ装置の前記識別子と異なる場合、前記部分パリティーコードを含むパリティーメッセージを前記第2ストレージ装置に伝送すること。
また、上記目的を達成するためになされた本発明によるデータ保存システムは、データを保存するシステムにおいて、ストレージ装置アレイと、ストレージシステム管理手段と、を有し、前記ストレージ装置アレイの第1ストレージ装置によって、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで、前記第1ストレージ装置に書き込まれるライトデータを含むライトコマンドを受信し、前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索し、前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコードを計算し、前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成し、前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存し、前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とする。
本発明に係るデータ保存方法及びそのシステムによれば、ボトルネックの現象による効率性の低下を防止し、損失したデータを復旧することができるという効果がある。
本発明の実施形態によるストレージシステムの概略を示すブロック図である。 本発明の実施形態による保護グループに対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。 本発明の実施形態による保護グループに対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。 本発明の実施形態によるストレージシステムのストレージマップを示す図である。 本発明の実施形態によるパリティーメッセージの概略を示す図である。 本発明の実施形態による初期化工程を説明するためのフローチャートである。 本発明の実施形態によるデータ書き込み動作を説明するためのフローチャートである。 本発明の実施形態によるパリティーアップデート動作を説明するためのフローチャートである。 本発明の実施形態によるRAID4に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。 本発明の実施形態によるRAID5に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。 本発明の実施形態によるRAID6に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。 本発明の実施形態による消去コードデータ保護に対するデータ及びパリティーレイアウトダイヤグラムを示す図である。 本発明の実施形態による故障復旧動作を説明するためのフローチャートである。 本発明の実施形態による故障復旧動作を説明するためのフローチャートである。
次に、本発明に係るデータ保存方法及びそのシステムを実施するための形態の具体例を図面を参照しながら説明する。
添付した図面とともに、以下に陳述する詳細な説明は、本発明によって提供される分散消去コーディングのためのシステム及び方法の例示的な実施形態に対する説明として意図され、ただ本発明が構成されたり、利用されたりすることができる形式を示すものと意図されない。
詳細な説明は、説明した実施形態とともに本発明の特徴を陳述する。
しかしながら、同一であるか、同等の機能及び構造が、また本発明の本質及び範囲内において、包括されるものと意図される他の実施形態によって達成されるのが理解されるはずである。
ここで、別に明示されない限り、同一の参照番号は同一の構成要素又は特徴を示すものと意図される。
図1は、本発明の実施形態によるストレージシステムの概略を示すブロック図である。
図1を参照すると、一実施形態において、イーサネットSSD(ethernet solid state drive)シャーシ110に具現されるストレージシステムは(例えば、24個又は48個)(即ち、複数の)イーサネットSSDのアレイを含み、イーサネットSSDのそれぞれが、例えば、イーサネットスイッチのようなストレージインターフェーススイッチに接続される。
イーサネットSSDのそれぞれは、ベースボード管理コントローラ(Baseboard management controller, BMC)のような、(より具体的に後述されるプロセッシング回路でありえる)ストレージシステム管理回路と接続することができる。
イーサネットSSDは、ミッドプレーン(midplane)及びPCIエクスプレス(Peripheral component interconnect express, PCIe)スイッチを介してベースボード管理コントローラと接続することができる。
イーサネットSSDは、遠隔DAS(Direct attached storage)構成と接続することができ、イーサネットSSDのそれぞれは、I/O動作のための他のイーサネットSSDに独立的である。
このような構成において、RAIDコントローラの潜在的なボトルネックの現象を回避することができる。
さらに、図1のシステムは、原則的に複数のイーサネットSSD(例えば、256個のイーサネットSSD)を収容可能である。
イーサネットSSDのそれぞれは、非揮発性メモリ(例えば、フラッシュメモリ)、バッファ、及びプロセッシング回路でありえるコントローラを含むことができ、より具体的には、後述することとする。
コントローラは、ホストコンピュータとインターフェースすることができ、データの保存を除いたイーサネットSSDの全ての機能を遂行することができ、データの保存は、バッファ及び非揮発性メモリによって遂行することができる。
バッファは、揮発性メモリであり得る。
ここで、使用される「ストレージインターフェーススイッチ」は、ホストコンピュータによって、それぞれのイーサネットSSDと相互作用して、例えば、イーサネットSSDとコマンド及びコマンド完了を交換するようにするスイッチである。
(複数個でありえる)アプリケーション120は、アプリケーションが実行されているホストコンピュータのOS(Operating System)のファイルシステム130を介して、そしてホストにインスタント化された(instantiated)NVMe−of(Nonvolatile Memory Express over Fabrics)ドライバを介して、ストレージシステムと相互作用することができる。
ホストストレージシステムによって提供されたシャーシレベルのデータ保護にアグノスチック(agnostic:無関心)であることができる。(例えば、データ保護の具現はホストから隠すことができ、ホストは、ただ信頼できるストレージシステムのみを認知することができ、信頼できるストレージシステムは変化する性能を有することができる。(例えば、データ復旧動作が発生される場合、性能が減少される))。
分離したドライバは、イーサネットSSDのそれぞれのためのホストにインスタンス化することができる。
ドライバインスタンス(driver instances)140は、イーサネットSSDへの全てのアクセスがドライバインスタンス140のそれぞれを介して行われると意味で、そして、ホストに対するドライバインスタンス140とシステムのイーサネットSSDとの間で1対1の関係がありえるという意味で、イーサネットSSDを「所有」することができる。
イーサネットSSDのそれぞれは、自体のネームスペースを有することができる。
ストレージシステムは、RAID4、RAID5、RAID6、及び消去コーディング(Erasure Coding)(又は「消去コードデータの保護」)を含む任意の多様な保護モードを具現するように構成することができる。
図2a及び図2bをは、本発明の実施形態による保護グループに対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。
図2a及び図2bを参照すると、データの保護システムは、ここで「仮想ストライプ」として言及されるデータのユニットを保護することができる。
仮想ストライプのそれぞれに番号又は「識別子」が割り当てられる。
仮想ストライプのそれぞれは、データ及びパリティーコードを含む。
ここで使用される「パリティーコード」はデートとともに保存される重複データであり、(例えば、故障(或いは障害)(failure)したイーサネットSSDから誘発された保存されたデータの損失を含む)保存されたデータに対するエラー又は消去の場合に、このようなデータはパリティーコードから復旧することができる。
仮想ストライプのそれぞれは、任意のイーサネットSSDの故障が復旧できないデータの損失を誘発させないように、複数のイーサネットSSDにわたって分散される。
図2a及び図2bの実施形態において、(n+1)個のイーサネットSSDは、保護グループの一部であり、これらは示したように、「0」から「n」までの番号が付与された(イーサネットSSDシャーシ110)のスロット210にインストールされる。
ストレージシステム(及び/又はイーサネットSSDシャーシ110)は、一つ以上の保護グループを含むことができる。
イーサネットSSDのそれぞれは、ブロック220の単位でストレージを提供し、それぞれのブロック220は図2a及び図2bにおいてそれぞれの長方形形状で示す。
ブロック220のサイズはプログラムすることができ、それぞれのブロック220は、例えば、512バイト、1024バイト、又は4096バイトからなり得る。
仮想ストライプのそれぞれは、イーサネットSSDのそれぞれから一つのブロック220を含むことができるが、例えば、仮想ストライプ0は、スロット0のイーサネットSSDからブロックD0を、そしてスロット1のイーサネットSSDからブロックD0などを含み、仮想ストライプ2は、(示されたように)スロット0のイーサネットSSDからブロックD2を、そしてスロット1のイーサネットSSDからブロックD2などを含むのと同一である。
パリティーデータ(P0、P1など)は図2aに示したように、(「固定パリティー」と言及することができる配列で)スロットnのイーサネットSSDに保存されたり、図2bに示したように、パリティーデータは(「循環パリティー」と言及することができる配列で)イーサネットSSDを通じて循環するスロット及びブロック220に保存されたりすることができる。
循環パリティー配列において、スロットnのイーサネットSSDは、代替されたデータプレーンとして作動することができ、イーサネットSSDが、通常的に保存されたデータをパリティーコードに対するブロック220の代わりに保存した結果として、「代替された」データを保存することができる。
仮想ストライプは、「ストライド」と言及されるグループにグループ化することができる。
ストライドそれぞれのサイズは「N」であり得、循環パリティー配列で、パリティーデータの位置は、追加的なストライドのそれぞれで繰り返され得る。
(例えば、パリティーデータが第2ドライブ(スロット1)で、ストライド0の第2仮想ストライプ(仮想ストライプ1)及びストライド1の第2仮想ストライプ(仮想ストライプ(n+1))であり得る。)
新しいデータが書き込まれる場合、パリティーコードの計算及びアップデートのパリティ(parity)は、例えば、循環パリティーが採択されると、パリティーデータに対するストレージと一致することができる循環配列で複数のSSDの間に分散することができる。
(そして、固定パリティーが採択されると、パリティーデータがパリティープレーンに保存されるが、このようなパリティは循環配列と同一に配列することができる。)
例えば、循環パリティーが採択されると、スロット2のイーサネットSSDは、
(i)パリティーデータP2をアップデートし、
(ii)固定パリティーが採択された場合、パリティーデータP2を保存する。
スロット2のイーサネットSSDは、パリティーデータP2をアップデートすべき責任があり、スロットn(パリティープレーン)のイーサネットSSDは、パリティーデータP2を保存すべき責任がある。
任意のストライプに対し、パリティーコードを計算及びアップデートすべき責任のあるイーサネットSSDは、ストライプに対する「D/PイーサネットSSD」又は「D/P eSSD」として言及することができる。
パリティーコードを計算及びアップデートすべき責任のあるイーサネットSSDの識別子(又はスロット番号)は、任意の仮想ストライプに対して(仮想ストライプ識別子)modulo(ストライドサイズ(n))で計算することができる。
図3は、本発明の実施形態によるストレージシステムのストレージマップを示す図である。
図3を参照すると、イーサネットSSDのそれぞれは、一つ以上の(図3にて「NS0」、「NS1」などのラベルが付与された)ネームスペースを管理することができる。
ネームスペースのそれぞれは、ネームスペースオフセットテーブルで、ネームスペースが始まるイーサネットSSD内の位置を決定するオフセットと関連させることができる。
ネームスペースに対する書き込み動作が遂行される場合、ネームスペースをホスティングするイーサネットSSDは、ネームスペースオフセットに書き込み動作の論理ブロックアドレス(Logic block address, LBA)を追加することによって、書き込みが遂行される仮想ストライプを計算することができる。
仮想ストライプ内のデータが(例えば、ライトされるデータ又は「ライトデータ」を含むライトコマンドを実行した結果として)変更された場合、仮想ストライプに対するパリティーコードは、以下の通り再計算することができる。
それぞれのパリティーコードは、仮想ストライプにおける全てのデータに対する関数でありえる。
例えば、パリティーコードPは、仮想ストライプにおける全てのデータのビット間の排他的な論理和(bit−wise exclusive OR)であり得る。

P=D+D+D+…+Dn−1

「+」は、ビット間の排他的な論理和の動作を示し、Diはデータである。
データブロック中の一つが変化した場合、例えば、D1はD1’に代替され、パリティーコードは新しい値P’にアップデートされる。

P’=D+D’+D+…+Dn−1
このような変化を作るために、部分パリティーコードは、以前のパリティーコードPに計算及び適用されて、新しいパリティーコードP’を生成することができる。
部分パリティーコードは、以前のパリティーコードとともに評価される場合(例えば、適切な関数(例えば、排他的論理和(exclusive OR))を使用して、以前のパリティーコードと結合された場合)、新しいパリティーコードを生成する値である。
概念的に、部分パリティーコードは、
(i)パリティーコードから、以前のデータの寄与分を除去し、
(ii)パリティーコードに新しいデータの寄与分を追加した効果を有する値と見なすことができる。
このような概念は、象徴的に以下の通りに書き込むことができる。

DeltaD1=fInverse(D1)+D1’

Inverse(D1)は、適切な関数を使用して、以前のパリティーコードと結合された場合、以前のパリティーコードからD1の寄与分を除去した値である。
一旦、部分パリティーコードが計算されると、パリティーコードは、以下の通りにアップデートされることができる。

P’=P+DeltaD1

exclusive OR関数の逆は、exclusive OR関数である。
その結果、パリティーコードが、ビット間のexclusive ORを使用して計算されると、fInverse(D1)=D1である。

DeltaD1=D1+D1’
書き込み動作が遂行される場合、変更されたデータを保存するイーサネットSSDは、 (i)他のドライブが変更されたデータブロックに対するパリティーデータをアップデートすべき責任がある場合、(部分パリティーコードを含む)パリティーメッセージを生成し、これを他のドライブに伝送するか、
(ii)その自体がパリティーデータをアップデートすべき責任がある場合、パリティーデータをアップデートすることができる。
図4は、本発明の実施形態によるパリティーメッセージの概略を示す図である。
図4を参照すると、図4はパリティーメッセージの例示であり、パリティーメッセージは、仮想ストライプ識別子(Virtual stripe identifier、VSID)(即ち、ストライプ番号)を含むヘッダー、及び部分パリティーコードを含む。
イーサネットSSDは、PCIeスイッチ又はイーサネットスイッチ(図1)を介する私設(プライベート)通信チャンネルを通じてパリティーメッセージを互いに伝送することができる。
ベースボード管理コントローラは、スタート時、ストレージシステムのイーサネットSSDのそれぞれを初期化することができる。
下記に示す表1は、ベースボード管理コントローラが、初期化中にイーサネットSSDのそれぞれに書き込むことができる保護構成テーブルのフォーマットを示す。
表1は、それぞれのフィールドが、提示可能な多様な値を示し、さらに下記のテーブル(表)は、ベースボード管理コントローラがテーブルにライトすることができる値の例示を示す。
Figure 2019036301
図5は、本発明の実施形態による初期化工程を説明するためのフローチャートである。
図5を参照すると、スタート時、ベースボード管理コントローラ(BMC)は、ステップS510において、イーサネットSSDシャーシ110の全てのイーサネットSSDをスキャンし、ステップS520において、データ保護モードを選択し、ステップS530において保護モードのためのパラメーターを決定し、ステップS540において、イーサネットSSDのそれぞれにスロット識別子ID(又はスロット番号)のそれぞれをプログラムし、ステップS550においてイーサネットSSDのそれぞれに保護パラメーターをプログラムし、ステップS560において、イーサネットSSDのそれぞれにアドレス情報をプログラムする。
アドレス情報は、イーサネットSSDのイーサネットSSDアドレステーブルに保存することができ、下記に示す表2の情報を(空いているセルのそれぞれに挿入される適切なアドレスとともに)含むことができる。
Figure 2019036301
図6は、本発明の実施形態によるデータライト動作を説明するためのフローチャートである。
データ書き込み動作は、図6のフローチャートに示すように進行する。
ステップS605において、コマンド実行を始め、ステップS610においてイーサネットSSDはホストライトデータを引き出し、ステップS615においてイーサネットSSDは、ホストライトデータを持続させる。
ここで、使用するデータを「持続させる」というのは、非揮発性メモリ又はパワー損失が保護されるメモリにデータを保存することを意味する。
以降、イーサネットSSDは、ステップS620において、同一のネームスペース論理ブロックアドレスから以前のデータを引き出し、必要であれば、ステップS625において、イーサネットSSDは以前のデータに逆関数を遂行し、ステップS630において、イーサネットSSDは部分パリティーコード(又は、複数のコード)を計算(又は演算)するのに使用されるパラメーターを保護構成テーブルから検索し、ステップS635において、イーサネットSSDは部分パリティーコード(又は、複数のコード)を計算し、ステップS640において、イーサネットSSDはD/PイーサネットSSDのスロット識別子を計算する。
以降、ステップS645において、イーサネットSSDは、それ自体がD/PイーサネットSSDであるかどうかを判断する。
そうであれば、ステップS650において、イーサネットSSDはパリティーブロックをアップデートし、ステップS655においてイーサネットSSDはパリティーブロックを持続させ、ステップS660においてイーサネットSSDはホストにライトコマンド完了を伝送する。
ライトコマンドを実行するイーサネットSSDが、それ自体がD/PイーサネットSSDではなければ、以降、ステップS665においてイーサネットSSDは部分パリティーメッセージを生成し、ステップS670において、イーサネットSSDは部分パリティーメッセージをD/PイーサネットSSDに伝送し、ステップS675においてイーサネットSSDはD/PイーサネットSSDからの確認を待ち、ステップS660において、イーサネットSSDはホストにライトコマンド完了を伝送する。
このような実施形態において、以前のパリティーコードの引き出しの効率性は、D/PイーサネットSSDが、キャッシュでパリティーコードの一部を維持することができるので、向上することができる。
固定パリティーの場合、D/PイーサネットSSDは、アップデートされたパリティーブロックを、保存のためのイーサネットSSDのパリティープレーンに伝送することができる。
固定パリティーに対する一部の実施形態において、それぞれのイーサネットSSDが遂行するデータ書き込み動作のためのD/PイーサネットSSDの機能を遂行することができる。(即ち、仮想ストライプの管理する専用D/PイーサネットSSDがないことができる。)
このような実施形態において、データ書き込み動作を遂行するイーサネットSSDは、部分パリティーコードを計算し、イーサネットSSDのパリティープレーンから以前のパリティーブロックを引き出し、パリティーブロックをアップデートし、アップデートされたパリティーブロックを保存するためのイーサネットSSDのパリティープレーンに伝送する。
図7は、本発明の実施形態によるパリティーアップデート動作を説明するためのフローチャートである。
パリティーアップデート動作は、D/PイーサネットSSDによって遂行することができ、図7に示すように進行する。
ステップS710において、D/PイーサネットSSDは、受信したパリティーメッセージから仮想ストライプ識別子を抽出する。
以降、ステップS730において、D/PイーサネットSSDはパリティーブロックを引き出し、ステップS740において、D/PイーサネットSSDはパリティーブロックをアップデートし、ステップS750において、D/PイーサネットSSDはアップデートされたパリティーブロックを持続させ、ステップS760において、D/PイーサネットSSDは確認メッセージをライトコマンドを実行するイーサネットSSDに伝送する。
図8は、本発明の実施形態によるRAID4に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。
一部の実施形態において、RAID4は、図8に示すように具現することができる。
RAID4は、示すように固定パリティーを使用することができる。
下記に示す表3は、RAID4を具現するためのベースボード管理コントローラによって、イーサネットSSDそれぞれの保護構成テーブルにプログラムされることができるを示す。
なお、表3は、イーサネットSSDアドレステーブルにプログラムすることができる例示的な値を示す。
Figure 2019036301
図9は、本発明の実施形態によるRAID5に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。
一部の実施形態において、RAID5は、図9に示すように具現することができる。
RAID5は、示すように循環パリティーを使用することができる。
下記に示す表4は、RAID5を具現するためのベースボード管理コントローラによって、イーサネットSSDそれぞれの保護構成テーブルにプログラムすることができる値を示す。
なお、表4は、ストレージシステムに他のイーサネットSSDのイーサネットアドレスを提供するイーサネットSSDアドレステーブルにプログラムすることができる例示的な値を示す。
イーサネットSSDのそれぞれは、例えば、ライトコマンドを実行する場合にアップデートされるパリティーコードを準備する場合、このような情報を使用することができる。
Figure 2019036301
図10は、本発明の実施形態によるRAID6に対するデータ及びパリティーのレイアウトダイヤグラムを示す図である。
一部の実施形態において、RAID6は、図10に示すように具現することができる。
RAID6は、示すように、ストライプ当たり二つのパリティーブロックとともに、そして代替されたデータブロックに使用される二つのスロットとともに、循環パリティーを使用することができる。
下記に示す表5は、RAID6を具現するためのベースボード管理コントローラによって、イーサネットSSDそれぞれの保護構成テーブルにプログラムされることができる値を示す。
なお、表5は、ストレージシステムに他のイーサネットSSDのイーサネットアドレスを提供するイーサネットSSDアドレステーブルにプログラムすることができる例示的な値を示す。
Figure 2019036301
図11は、本発明の実施形態による消去コードデータ保護に対するデータ及びパリティーレイアウトダイヤグラムを示す図である。
一部の実施形態において、消去コードデータ保護は、図11に示すように具現することができる。
消去コードデータ保護は、示すように、t個の体系的な入力ユニット及びストライプ当たり(n−t)個のパリティーコードブロックと共に、固定パリティーを使用することができる。
下記に示す表6は、消去コードデータ保護を具現するためのベースボード管理コントローラによって、イーサネットSSDそれぞれの保護構成テーブルにプログラムすることができる値を示す。
なお、表6は、ストレージシステムに他のイーサネットSSDのイーサネットアドレスを提供するイーサネットSSDアドレステーブルにプログラムすることができる例示的な値を示す。
Figure 2019036301
図12は、本発明の実施形態による故障復旧動作を説明するためのフローチャートであり、一実施形態において、分離障害から復旧するための方法を説明するためのフローチャートである。
ここで使用する「分離障害(discrete failure)」は、イーサネットSSDが動作を継続することを可能にするが、イーサネットSSDが記憶するデータの一部を正常に読み取ることを妨げるイーサネットSSDの故障(障害)である。
分離エラーは、フラッシュメモリページ又はブロックの故障から誘発されるか、又はフラッシュメモリによって採択され得るLDPC(low−density parity−check)エラー訂正コードによって訂正できないメモリエラーから誘発され得る。
ステップS1205において、イーサネットSSDは故障(障害)を検出し、ステップS1210において、イーサネットSSDは損失データの仮想ストライプIDを決定する。
以降、ステップS1215において、イーサネットSSDは、保護構成テーブルからデータの復元のためのパラメーターを検索し、ステップS1220において、イーサネットSSDは、損失データを復旧するのに要求されるイーサネットSSDのセットを決定する。
以降、ステップS1225、S1230、及びS1235において、イーサネットSSDは、損失データを復旧するのに要求されるデータを全て検索するまで、このようなイーサネットSSDからデータを反復的に要請する。
以降、ステップS1240において、イーサネットSSDは損失データブロックを計算し、ステップS1245において、イーサネットSSDは、損失データブロックを持続させ、ステップS1250において、適切であれば、イーサネットSSDは、損失データをホストに伝送する。
他の実施形態において、エラーの復旧は、ベースボード管理コントローラで代わりに遂行される。
このような実施形態において、故障(障害)によって影響を受けるイーサネットSSDはベースボード管理コントローラに通知を提供し、ベースボード管理コントローラは仮想ストライプから損失データを復旧するのに要求されるデータを要請し、損失データを計算し、影響を受けたイーサネットSSDに復旧されたデータを再び書き込む。
図13は、発明の実施形態による故障復旧動作を説明するためのフローチャートである。
ディスク故障(障害)は、イーサネットSSDで中央ハードウェア故障(障害)によって誘発されるか、又はイーサネットSSDの突然の除去によって誘発され得る。
一部の実施形態において、復旧は、図13に示すように、ベースボード管理コントローラによって遂行することができる。
イーサネットSSDのそれぞれは、「プレゼンスピン(presence pin)」があり、イーサネットSSDの除去は、「プレゼンスピン」との接触損失を誘発し得るので、ベースボード管理コントローラにイーサネットSSDの除去を警告する可能性があります。
ステップS1305において、ベースボード管理コントローラは、故障(障害)(又はプルアウト(pull out)されたイベント)を検出し、ステップS1310において、ベースボード管理コントローラは、損失データを復旧するのに要求されるイーサネットSSDのセットを決定する。
以降、ステップS1315において、ベースボード管理コントローラは、保護構成テーブルからデータの復元のためのパラメーターを検索し、ステップS1320において、ベースボード管理コントローラは、損失データを再建するように余分(spare)のイーサネットSSDを識別する。
そして、ステップS1322において、ベースボード管理コントローラは、全ての仮想ストライプが遂行された否かを判断する。
ステップS1322において、全ての仮想ストライプが遂行されていないと判断された場合、
以降、ベースボード管理コントローラは、二つの内包されたループを含む工程を使用してデータを再建する。
ステップS1325、S1327、S1330、及びS1335を含む外部ループは、全ての仮想ストライプが復旧されるまで(即ち、仮想ストライプそれぞれの損失ブロックが余分のイーサネットSSDで復旧されるまで)実行され、ステップS1340及びS1345を含む内部ループは、このようなデータを保存するイーサネットSSDのそれぞれから再建のために要求されるデータを読み出すように実行される。
一旦、外部ループが終了すると(そして、損失データが再建されると)(ステップS1335でステップS1322に戻り、全ての仮想ストライプが遂行された判断された場合)、ベースボード管理コントローラは、ステップS1350において、余分のイーサネットSSDを保護グループに追加し、ステップS1355において、新たに追加されたイーサネットSSDをホストに知れるようにする。
復旧動作中に、必要に応じて要請されたデータを復元することによって、ホストからのリードコマンドに応答し、そして
(i)損失データが復元される余分のイーサネットSSDにデータを書き込むか、
(ii)ライトコマンドにおけるデータが、進行中のデータ復旧工程によって復元される他のイーサネットSSDにデータ及び/又はパリティーコードを書き込むようにして、
ホストからのライトコマンドに応答して、ベースボード管理コントローラは、イーサネットスイッチをリプログラム(reprogram)するとができ、故障したイーサネットSSDのためのプロキシとして作動することができる。
一部の実施形態において、ベースボード管理コントローラによる復旧は、余分のイーサネットSSDに渡される。
ベースボード管理コントローラは、故障したものの代わりに余分のイーサネットSSDを代替し、余分のイーサネットSSDにディスク復旧を渡す。
新しいイーサネットSSDは、バックグラウンドで、復旧されたデータに対する全ての仮想ストライプを構築し、その仮想ストライプに対するすべてのI/O動作を処理する。
上述した観点から、分散消去コーディングのためのシステム及び方法を開示した。
一部の実施形態において、複数のストレージ装置は、データをストレージ装置に分散させ、データの保護を提供する介在(intervening)中央コントローラ無しで、直接一つ以上のホストコンピュータと接続され得る。
パリティーコードは、一つ以上の専用ストレージ装置に保存されたり、複数のストレージ装置に分散されたりする。
ストーレジ装置がライトコマンドを受信した場合、ストレージ装置は部分パリティーコードを計算し、書き込まれるデータに対するパリティーコードが他のストレージ装置にあれば、ストレージ装置は、部分パリティーコードを他のストレージ装置に伝送し、このような部分パリティーコードを使用してパリティーコードをアップデートする。
ここで説明した一部の実施形態では、イーサネットSSDを永久保存装置として採択したが、本発明の他の実施形態がハードディスクドライブのような他のストレージ装置と行われることができるのが理解されるはずである。
仮想ストライプが、一部の実施形態において保護グループでの複数のイーサネットSSDにわたったブロックのセットで構成されたものと説明したが、ブロックそれぞれの論理ブロックアドレスが、同一の仮想ストライプは、もっと一般的に保護グループにわたって分散され、データの保護のための重複データ(例えば、パリティーコード)を含む、データのセットであり得る。
「プロセッシング回路」という用語は、ここで任意のハードウェア、ファームウェア、及びソフトウェアの組み合わせを意味するようにここに使用され、データ又はデジタル信号を処理するために採択した。
プロセッシング回路ハードウェアは、例えば、ASICs(application specific integrated circuits)、汎用又は特殊な目的のCPUs(central processing units、DPSs(digital signal processors, GPUs(graphics processing units)、及びFPGAs(field programmable gate arrays)のようなプログラマブル論理装置を含むことができる。
プロセッシング回路において、ここで使用するそれぞれの機能は、このような機能を遂行するように構成された、即ち、ハードワイヤードされたハードウェア又は非一時的なストレージ媒体に保存された命令語を実行するように構成されたCPUのような、もっと汎用的なハードウェアによって遂行され得る。
プロセッシング回路は、単一のPCB(printed circuit board)上に製作されたり、複数の相互に接続されたPCBにわたって分散されたりすることができる。
プロセシング回路は、他のプロセッシング回路を含むことができる。
例えば、プロセッシング回路は、PCBに相互に接続されるFPGA及びCPUのような、二つのプロセッシング回路を含むことができる。
分散消去コーディングのためのシステム及び方法をここで具体的に説明したが、様々な変更及び変化が当業者にとって明白である。
したがって、本発明の原理によって構成された分散消去コーディングのためのシステム及び方法は、ここで具体的に説明されたものとは別に実施することができる。なお、本発明は、以下の請求項及びこれの均等物として定義される。
本発明に係るデータ保存方法及びそのシステムは、例えば、ボトルネック現像による効率性の低下を防止する分散保存システムを有する電子機器全般に好適に使用され得る。
110 イーサネットSSDシャーシ
120 アプリケーション
140 ドライバインスタンス(インスタント化されたNVMe−of(Nonvolatile Memory Express over Fabrics)ドライバ
210 スロット
220 ブロック

Claims (20)

  1. ストレージ装置アレイにデータを保存する方法において、
    前記ストレージ装置アレイの第1ストレージ装置が、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで前記第1ストレージ装置に書き込まれるライトデータ(write data)を含むライトコマンド(write command)を受信するステップと、
    前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索するステップと、
    前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコード(parity code)を計算するステップと、
    前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成するステップと、
    前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存するステップと、を有し、
    前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とするデータ保存方法。
  2. 前記第3ストレージ装置は、前記第2ストレージ装置であることを特徴とする請求項1に記載のデータ保存方法。
  3. 前記第1ストレージ装置が、前記第2ストレージ装置の識別子を計算するステップと、
    前記第2ストレージ装置の前記識別子が、前記第1ストレージ装置の識別子と異なるか否かを判断するステップと、
    前記第2ストレージ装置の前記識別子が、前記第1ストレージ装置の前記識別子と異なる場合、前記部分パリティーコードを含むパリティーメッセージを前記第2ストレージ装置に伝送するステップと、をさらに有することを特徴とする請求項1に記載のデータ保存方法。
  4. 前記ライトコマンドは、ネームスペース(namespace)識別子をさらに含み、
    前記第2ストレージ装置の前記識別子を計算するステップは、前記ネームスペース識別子に基づいてネームスペースオフセットテーブルからネームスペースオフセットを取得するステップと、
    前記ネームスペースオフセット及び前記論理ブロックアドレスの和として仮想ストライプ識別子を計算するステップと、を含むことを特徴とする請求項3に記載のデータ保存方法。
  5. 前記第2ストレージ装置の前記識別子を計算するステップは、前記第1ストレージ装置によって、前記第1ストレージ装置の第1テーブルからストライドサイズ(stride size)を検索するステップと、
    前記仮想ストライプ識別子、モジュロ(modulo)、及び前記ストライドサイズを計算するステップと、をさらに含むことを特徴とする請求項4に記載のデータ保存方法。
  6. 前記パリティーメッセージを前記第2ストレージ装置に伝送するステップは、前記第1ストレージ装置が、前記第1ストレージ装置の第2テーブルから前記第2ストレージ装置のアドレスを検索するステップと、
    前記第2ストレージ装置の前記アドレスに前記パリティーメッセージを伝送するステップと、を含むことを特徴とする請求項5に記載のデータ保存方法。
  7. 前記第1ストレージ装置は、イーサネット(登録商標、以下省略)ストレージ装置であり、
    前記第2ストレージ装置は、イーサネットストレージ装置であり、
    前記第2ストレージ装置のアドレスは、前記第2ストレージ装置のイーサネットアドレスであることを特徴とする請求項6に記載のデータ保存方法。
  8. ストレージシステム管理回路によって、前記第1ストレージ装置の前記第2テーブルに前記第2ストレージ装置のアドレスを保存するステップをさらに有することを特徴とする請求項6に記載のデータ保存方法。
  9. 前記ストレージシステム管理回路によって、前記第1テーブルに前記ストライドサイズを保存するステップをさらに有することを特徴とする請求項8に記載のデータ保存方法。
  10. 前記第1ストレージ装置は、PCI(Peripheral component interconnect)エクスプレススイッチ(express switch)に接続され、
    前記第2ストレージ装置は、前記PCIエクスプレススイッチに接続され、
    前記第2ストレージ装置のアドレスは、前記第2ストレージ装置のPCIエクスプレスアドレスであることを特徴とする請求項6に記載のデータ保存方法。
  11. 前記以前のパリティーコード及び前記新しいパリティーコードのそれぞれは、RAID4、RAID5、RAID6、及び消去コードデータ保護システムからなるグループから選択されるデータ保護システムに利用されるデータ保護コードであることを特徴とする請求項1に記載のデータ保存方法。
  12. 前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置の故障又は切断時に、
    ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを再構成して、前記第1ストレージ装置にアドレスされたストレージコマンドを前記ストレージシステム管理回路に伝送させるステップと、
    受信したストレージコマンドに応答して、前記ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを介して、前記第1ストレージ装置が送信したであろう、存在し、正しく動作していたものと、同一のコマンド完了を伝送するステップと、をさらに有することを特徴とする請求項1に記載のデータ保存方法。
  13. 前記ストレージシステム管理回路によって、前記第1ストレージ装置に以前に保存されたデータを復旧するステップと、
    前記復旧されたデータを第4ストレージ装置に保存するステップと、をさらに有することを特徴とする請求項12に記載のデータ保存方法。
  14. 前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置の故障又は切断時に、
    ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを再構成し、前記第1ストレージ装置にアドレスされたストレージコマンドを第4ストレージ装置に伝送させるステップと、
    受信したストレージコマンドに応答して、前記第4ストレージ装置によって、前記ストレージインターフェーススイッチを介して、前記第1ストレージ装置が送信したであろう、存在し、正しく動作していたものと、同一のコマンド完了を伝送するステップと、をさらに有することを特徴とする請求項1に記載のデータ保存方法。
  15. 前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置に分離故障(discrete failure)が発生し、リードコマンドの受信時に、
    前記第1ストレージ装置が、前記分離故障によって影響を受けたデータを復旧するステップと、
    前記リードコマンドに応答して、前記第1ストレージ装置によって、前記ストレージインターフェーススイッチを介して、前記分離故障が発生しなかったら、前記第1ストレージ装置が伝送していたであろうものと同一のコマンド完了を伝送するステップと、をさらに有することを特徴とする請求項1に記載のデータ保存方法。
  16. 前記第1ストレージ装置は、ストレージインターフェーススイッチに接続され、前記第1ストレージ装置に分離故障が発生し、リードコマンドの受信時に、
    ストレージシステム管理回路が、前記分離故障によって影響を受けたデータを復旧するステップと、
    前記リードコマンドに応答して、前記ストレージシステム管理回路によって、前記ストレージインターフェーススイッチを介して、前記分離故障が発生しなかったら、前記第1ストレージ装置が伝送していたであろうものと同一のコマンド完了を伝送するステップと、をさらに有することを特徴とする請求項1に記載のデータ保存方法。
  17. データを保存するシステムにおいて、
    ストレージ装置アレイを含み、
    前記ストレージ装置アレイの第1ストレージ装置が、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで、前記第1ストレージ装置に書き込まれるライトデータを含むライトコマンドを受信し、
    前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索し、
    前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコードを計算し、
    前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成し、
    前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存し、
    前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とするデータ保存システム。
  18. 前記第3ストレージ装置は、前記第2ストレージ装置であることを特徴とする請求項17に記載のデータ保存システム。
  19. 前記第1ストレージ装置が、前記第2ストレージ装置の識別子を計算し、
    前記第2ストレージ装置の前記識別子が前記第1ストレージ装置の識別子と異なるか否かを判断し、
    前記第2ストレージ装置の前記識別子が前記第1ストレージ装置の前記識別子と異なる場合、前記部分パリティーコードを含むパリティーメッセージを前記第2ストレージ装置に伝送することを特徴とする請求項17に記載のデータ保存システム。
  20. データを保存するシステムにおいて、
    ストレージ装置アレイと、
    ストレージシステム管理手段と、を有し、
    前記ストレージ装置アレイの第1ストレージ装置によって、ホストコンピュータから、前記第1ストレージ装置の論理ブロックアドレスで、前記第1ストレージ装置に書き込まれるライトデータを含むライトコマンドを受信し、
    前記第1ストレージ装置が、前記論理ブロックアドレスに保存された以前のデータを検索し、
    前記第1ストレージ装置が、前記以前のデータ及び前記ライトデータから部分パリティーコードを計算し、
    前記ストレージ装置アレイの第2ストレージ装置が、前記部分パリティーコードとともに以前のパリティーコードを評価して新しいパリティーコードを生成し、
    前記ストレージ装置アレイの第3ストレージ装置が、前記新しいパリティーコードを保存し、
    前記部分パリティーコードは、以前のパリティコードと共に評価される時、前記以前のパリティコードは、前記以前のデータを含む古い仮想ストライプのデータ保護コードであって、前記ストレージ装置アレイの全てにわたって延在し、新しいパリティーコードは、ストレージ装置アレイ全体にわたって延在し、かつ、以前のデータの代わりに前記ライトデータを含む新しい仮想ストライプのデータのためのデータ保護コードである数値であることを特徴とするデータ保存システム。
JP2018142656A 2017-08-10 2018-07-30 データ保存方法及びそのシステム Active JP7084243B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762543789P 2017-08-10 2017-08-10
US62/543,789 2017-08-10
US15/789,884 2017-10-20
US15/789,884 US10585749B2 (en) 2017-08-10 2017-10-20 System and method for distributed erasure coding

Publications (3)

Publication Number Publication Date
JP2019036301A true JP2019036301A (ja) 2019-03-07
JP2019036301A5 JP2019036301A5 (ja) 2021-08-26
JP7084243B2 JP7084243B2 (ja) 2022-06-14

Family

ID=65275031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018142656A Active JP7084243B2 (ja) 2017-08-10 2018-07-30 データ保存方法及びそのシステム

Country Status (5)

Country Link
US (1) US10585749B2 (ja)
JP (1) JP7084243B2 (ja)
KR (1) KR102279723B1 (ja)
CN (1) CN109388515B (ja)
TW (1) TWI746845B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620855B2 (en) * 2016-09-06 2020-04-14 Samsung Electronics Co., Ltd. System and method for authenticating critical operations on solid-state drives
WO2018051505A1 (ja) * 2016-09-16 2018-03-22 株式会社日立製作所 ストレージシステム
US10635609B2 (en) * 2018-03-02 2020-04-28 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US10990554B2 (en) 2018-03-02 2021-04-27 Samsung Electronics Co., Ltd. Mechanism to identify FPGA and SSD pairing in a multi-device environment
KR20200108650A (ko) * 2019-03-11 2020-09-21 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
GB201905209D0 (en) * 2019-04-12 2019-05-29 Vaion Ltd Method of strong items of data
WO2021012164A1 (zh) * 2019-07-22 2021-01-28 华为技术有限公司 数据重构的方法、装置、计算机设备、存储介质及系统
US11334434B2 (en) 2020-02-19 2022-05-17 Seagate Technology Llc Multi-level erasure system with cooperative optimization
US11609869B2 (en) 2020-07-14 2023-03-21 Samsung Electronics Co., Ltd. Systems, methods, and devices for time synchronized storage delivery
KR20220058224A (ko) * 2020-10-30 2022-05-09 에스케이하이닉스 주식회사 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법
US11372553B1 (en) 2020-12-31 2022-06-28 Seagate Technology Llc System and method to increase data center availability using rack-to-rack storage link cable
US20230305713A1 (en) * 2022-03-23 2023-09-28 Samsung Electronics Co., Ltd. Client and network based erasure code recovery

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JP2003223284A (ja) * 2002-01-31 2003-08-08 Toshiba Corp ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
KR20130026738A (ko) * 2011-09-06 2013-03-14 한국전자통신연구원 파일 데이터 분산 저장 장치 및 방법
JP2014203233A (ja) * 2013-04-04 2014-10-27 株式会社日立製作所 ストレージシステム及びストレージシステムにおいてデータを更新する方法
WO2015162777A1 (ja) * 2014-04-25 2015-10-29 株式会社日立製作所 計算機システム及び接続構成制御方法
JP2016115355A (ja) * 2014-12-11 2016-06-23 株式会社東芝 情報処理装置、プログラム、及び、情報処理システム
JP2016157441A (ja) * 2015-02-25 2016-09-01 エイチジーエスティーネザーランドビーブイ Ssdへのコピーオンライト用システム及び方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0701715A4 (en) * 1993-06-04 1999-11-17 Network Appliance Corp METHOD FOR PROVIDING PARITY IN A RAID SUBSYSTEM USING REMANENT MEMORY
CA2134016A1 (en) * 1994-01-07 1995-07-08 Peter B. Bandy Data storage device and method of operation
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
JP2007179297A (ja) * 2005-12-28 2007-07-12 Fujitsu Ltd Raid5のパリティチェック強化方法、装置及びプログラム
TW200727167A (en) * 2006-01-02 2007-07-16 Via Tech Inc Disk array data arrangement structure and its data access method
US7822921B2 (en) * 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US8321597B2 (en) 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US8751862B2 (en) * 2007-08-10 2014-06-10 Dell Products L.P. System and method to support background initialization for controller that supports fast rebuild using in block data
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
EP2467783B1 (en) * 2009-10-09 2020-05-27 Violin Systems LLC Memory system with multiple striping of raid groups and method for performing the same
US8327225B2 (en) * 2010-01-04 2012-12-04 Micron Technology, Inc. Error correction in a stacked memory
US9582431B2 (en) 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US8583987B2 (en) * 2010-11-16 2013-11-12 Micron Technology, Inc. Method and apparatus to perform concurrent read and write memory operations
US9569320B2 (en) 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9311181B2 (en) * 2012-11-15 2016-04-12 Samsung Electronics Co., Ltd. Memory controller changing partial data in memory device and method for changing partial data thereof
WO2014110095A1 (en) * 2013-01-08 2014-07-17 Violin Memory Inc. Method and system for data storage
KR102318478B1 (ko) * 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US9384093B1 (en) 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
KR20160075229A (ko) * 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템
US9678665B2 (en) 2015-03-06 2017-06-13 Western Digital Technologies, Inc. Methods and systems for memory page allocation
US10061694B2 (en) 2015-09-07 2018-08-28 Toshiba Memory Corporation Memory system and method for controlling non-volatile memory
KR102413755B1 (ko) 2015-11-20 2022-06-28 삼성전자주식회사 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JP2003223284A (ja) * 2002-01-31 2003-08-08 Toshiba Corp ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
KR20130026738A (ko) * 2011-09-06 2013-03-14 한국전자통신연구원 파일 데이터 분산 저장 장치 및 방법
JP2014203233A (ja) * 2013-04-04 2014-10-27 株式会社日立製作所 ストレージシステム及びストレージシステムにおいてデータを更新する方法
WO2015162777A1 (ja) * 2014-04-25 2015-10-29 株式会社日立製作所 計算機システム及び接続構成制御方法
JP2016115355A (ja) * 2014-12-11 2016-06-23 株式会社東芝 情報処理装置、プログラム、及び、情報処理システム
JP2016157441A (ja) * 2015-02-25 2016-09-01 エイチジーエスティーネザーランドビーブイ Ssdへのコピーオンライト用システム及び方法

Also Published As

Publication number Publication date
US10585749B2 (en) 2020-03-10
CN109388515A (zh) 2019-02-26
TWI746845B (zh) 2021-11-21
CN109388515B (zh) 2023-11-03
TW201911041A (zh) 2019-03-16
KR20190017630A (ko) 2019-02-20
US20190050289A1 (en) 2019-02-14
KR102279723B1 (ko) 2021-07-21
JP7084243B2 (ja) 2022-06-14

Similar Documents

Publication Publication Date Title
JP7084243B2 (ja) データ保存方法及びそのシステム
US10191676B2 (en) Scalable storage protection
EP2972871B1 (en) Methods and apparatus for error detection and correction in data storage systems
US8386834B1 (en) Raid storage configuration for cached data storage
US11860672B2 (en) Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US8484506B2 (en) Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality
US20060236149A1 (en) System and method for rebuilding a storage disk
US9336412B2 (en) Storage system and method for controlling storage system
US20160170851A1 (en) Multi level data recovery in storage disk arrays
CN111124266A (zh) 数据管理方法、设备和计算机程序产品
JP2020061149A (ja) FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム
JP2011028520A (ja) ディスクアレイ装置及び物理ディスクの復元方法
US8832370B2 (en) Redundant array of independent storage
US7975104B2 (en) Method for preserving data integrity by breaking the redundant array of independent disks level 1(RAID1)
US20140173337A1 (en) Storage apparatus, control method, and control program
JP5107196B2 (ja) 情報処理装置および再構築処理および修復処理の制御方法
US9830094B2 (en) Dynamic transitioning of protection information in array systems
US20240095196A1 (en) Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd
US11221790B2 (en) Storage system
JP2009238003A (ja) ディスクアレイ制御装置、ディスクアレイ制御方法、ディスクアレイ制御プログラム、及び該プログラムを記録した記録媒体
JP2015197793A (ja) 記憶装置、データ復旧方法およびデータ復旧プログラム
JP2009217719A (ja) Raidコントローラ、raidシステム、およびraidシステムの制御方法
JP2017027356A (ja) バックアップ方法、バックアッププログラム、及び情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210719

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210719

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220322

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220602

R150 Certificate of patent or registration of utility model

Ref document number: 7084243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150