JP6247334B2 - 動的構成のraidアレイにおける再構成読み込み - Google Patents

動的構成のraidアレイにおける再構成読み込み Download PDF

Info

Publication number
JP6247334B2
JP6247334B2 JP2016096285A JP2016096285A JP6247334B2 JP 6247334 B2 JP6247334 B2 JP 6247334B2 JP 2016096285 A JP2016096285 A JP 2016096285A JP 2016096285 A JP2016096285 A JP 2016096285A JP 6247334 B2 JP6247334 B2 JP 6247334B2
Authority
JP
Japan
Prior art keywords
data
storage
raid
storage devices
amount
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016096285A
Other languages
English (en)
Other versions
JP2016184413A (ja
Inventor
コルグローヴ,ジョン
ヘイズ,ジョン
ホン,ボー
ミラー,イーサン
Original Assignee
ピュア・ストレージ・インコーポレイテッド
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 ピュア・ストレージ・インコーポレイテッド filed Critical ピュア・ストレージ・インコーポレイテッド
Publication of JP2016184413A publication Critical patent/JP2016184413A/ja
Application granted granted Critical
Publication of JP6247334B2 publication Critical patent/JP6247334B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • 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/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータネットワークに関し、より詳細には、複数のソリッドステート
ストレージデバイス間でデータを効率的に分散させる発明に関する。
コンピュータのメモリストレージ及びデータ帯域幅が増すと、企業が日々管理するデー
タの量及び複雑性も増す。通常、データセンターなどの大規模分散型ストレージシステム
は、多くの業務を実行する。分散型ストレージシステムは、1又はそれ以上のネットワー
クにより相互接続されたクライアントコンピュータに結合することができる。分散型スト
レージシステムのいずれかの部分が不良を起こし、又は利用できなくなった場合には、企
業活動が損なわれ、又は完全に停止する恐れがある。従って、分散型ストレージシステム
は、データの利用可能性及び高パフォーマンス機能のための高い標準を維持すると予想さ
れる。本明細書で使用するストレージディスクは、ストレージ技術のタイプによってはデ
ィスクを含まないものもあるので、ストレージデバイスと呼ぶことができる。
多くの場合、ストレージデバイスは、データ損失からの保護のために、エラー検出機構
及びエラー訂正機構を含む。多くの場合、これらの機構は、デバイスにより生成されてデ
バイス自体に記憶されるエラー訂正符号の形をとる。また、分散型ストレージシステムは
、分散アルゴリズムを利用して、一群のストレージデバイス間でデータを分散させること
もできる。一般に、これらのアルゴリズムは、中央ディレクトリに依拠せずにデータオブ
ジェクトをストレージデバイスにマッピングする。このようなアルゴリズムの例に、レプ
リケーション・アンダー・スケーラブル・ハッシング(RUSH)及びコントロールド・
レプリケーション・アンダー・スケーラブル・ハッシング(CRUSH)がある。分散型
ストレージシステム内の複数のクライアントは、中央ディレクトリを伴わずに複数のサー
バ上のデータオブジェクトに同時にアクセスすることができる。また、記憶されているメ
タデータの量を低減することもできる。しかしながら、容量、入力/出力(I/O)特性
及び信頼性問題が異なる複数のストレージディスク間でデータを分散させるという困難な
タスクが依然として残る。ストレージデバイス自体と同様に、これらのアルゴリズムも、
(RAID5及びRAID6などの)RAIDタイプアルゴリズム又はリードソロモン符
号などのエラー検出及び訂正アルゴリズムを含むことができる。
動的に追加及び除去できる複数のストレージデバイス間でデータを分散させるために使
用する方法は、選択したストレージデバイスに関連する技術及び機構によって決まる。例
えば、上述したアルゴリズムは、ハードディスクドライブ(HDD)を利用するシステム
に合わせて開発されたものである。HDDは、各々が磁気媒体で被覆された1又はそれ以
上の回転ディスクを含む。これらのディスクは、毎日数時間にわたり毎分数千回転の速さ
で回転する。また、この回転ディスク上への磁気読み込み/書き込み装置の位置付けには
、磁気アクチュエータが関与する。これらのアクチュエータは、摩擦、摩耗、振動及び機
械的不均衡の影響を受けやすく、結果的に信頼性問題が生じる。上述したデータ分散アル
ゴリズムは、HDDのこれらの特性及び挙動に基づくものである。
別のタイプの記憶ディスクの例に、ソリッドステートディスク(SSD)がある。ソリ
ッドステートディスクは、ソリッドステートドライブと呼ぶこともできる。SSDは、H
DDインターフェイスをエミュレートできるが、HDDで見られるような電気機械デバイ
スではなく固体メモリを利用して永続データを記憶する。例えば、SSDは、一群のフラ
ッシュメモリを含むことができる。可動部品又は機械的遅延がなければ、SSDのアクセ
ス時間及びレイテンシは、HDDよりも短くなり得る。しかしながら、通常、SSDの書
き込みレイテンシはかなり長い。入力/出力(I/O)特性が異なることに加え、SSD
の故障モードもHDDとは異なる。従って、記憶のためにSSDを備えたシステムでは、
HDDに合わせて開発された分散型データ配置アルゴリズムを利用しながら高パフォーマ
ンス及び高信頼性を実現できない場合がある。
上記に鑑み、複数のソリッドステートストレージデバイス間でデータを効率的に分散し
、エラーを検出して訂正するためのシステム及び方法が望まれている。
複数のソリッドステートストレージデバイス間でデータを効率的に分散して管理するた
めのコンピュータシステム及び方法の様々な実施形態を開示する。
1つの実施形態では、コンピュータシステムが、ネットワークを介して読み込み及び書
き込み要求を受け取るように結合された1又はそれ以上のデータストレージアレイにネッ
トワークを介して読み込み及び書き込み要求を伝達するように構成された複数のクライア
ントコンピュータを備える。複数のストレージデバイス上に複数の記憶位置を有する(単
複の)データストレージアレイを企図する。様々な実施形態では、このストレージデバイ
スが、データを記憶して保護するための独立ドライブ冗長アレイ(RAID)構成で構成
される。データストレージデバイスは、フラッシュメモリセルなどの、データ記憶のため
の固体メモリ技術を含むことができる。データストレージサブシステムは、ストレージコ
ントローラをさらに備え、このストレージコントローラは、ストレージデバイスの第1の
サブセットを、第1の冗長データセットを含む第1のRAIDレイアウトで使用するよう
に構成するように構成される。このコントローラは、ストレージデバイスの第2のサブセ
ットを、第2の冗長データセットを含む第2のRAIDレイアウトで使用するようにさら
に構成する。また、このコントローラは、第1のサブセット又は第2のサブセットのいず
れにも含まれていない追加のデバイスを、第1のRAIDレイアウト及び第2のRAID
レイアウトの両方のための冗長データを記憶するように構成する。
第1のRAIDレイアウト又は第2のRAIDレイアウトの特定のストレージデバイス
を対象とする所与の読み込み要求を受け取ったことに応答して、コントローラが、特定の
ストレージデバイスが非エラーに関する相対的に遅い読み込み応答を示していると判断し
たことに応答して、所与の読み込み要求に対応する再構成読み込みを開始するように構成
される実施形態も企図する。また、第1のサブセット及び第2のサブセット内の各デバイ
スは、デバイス内冗長データを記憶するように構成することができ、第1の冗長データセ
ット及び第2の冗長データセットは、いずれもデバイス間冗長データを含む。さらに、様
々な実施形態では、第1のRAIDレイアウトが、L+xのレイアウトであり、第2のR
AIDレイアウトが、M+yのレイアウトであり、L、x、M及びyは整数であり、(1
)LはMに等しくない、及び(2)xはyに等しくない、のいずれか又は両方である。
以下の説明及び添付図面を検討すると、これらの及びその他の実施形態が明らかになる
であろう。
ネットワークアーキテクチャの1つの実施形態を示す汎用ブロック図である。 動的デバイス内冗長スキームの1つの実施形態の汎用ブロック図である。 データストレージサブシステムにおいてデバイス内保護を調整する方法の1つの実施形態を示す汎用フロー図である。 ストレージサブシステムの1つの実施形態の汎用ブロック図である。 デバイスユニットの1つの実施形態の汎用ブロック図である。 状態テーブルの1つの実施形態を示す汎用ブロック図である。 フレキシブルなRAIDデータレイアウトアーキテクチャの1つの実施形態を示す汎用ブロック図である。 フレキシブルなRAIDデータレイアウトアーキテクチャの別の実施形態を示す汎用ブロック図である。 データストレージサブシステム内のレイアウトを動的に決定する方法の1つの実施形態を示す汎用フロー図である。 フレキシブルなRAIDデータレイアウトアーキテクチャのさらに別の実施形態を示す汎用ブロック図である。 デバイスレイアウトの1つの実施形態を示す図である。 セグメントの1つの実施形態を示す図である。 異なるページタイプ内のデータストレージ構成の1つの実施形態を示す汎用ブロック図である。 ハイブリッドRAIDデータレイアウトの1つの実施形態を示す汎用ブロック図である。 データストレージサブシステム内で代替のRAID構成を選択する方法の1つの実施形態を示す汎用フロー図である。
本発明は様々な修正及び代替形態が可能であるが、図面には特定の実施形態を一例とし
て示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに
対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではな
く、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全て
の修正物、同等物及び代替物を含むことを意図するものであると理解されたい。
以下の説明では、本発明を完全に理解できるように数多くの具体的な詳細を示す。しか
しながら、当業者であれば、これらの具体的な詳細を伴わずに本発明を実施できると認識
すべきである。いくつかの例では、本発明を曖昧にしないように、周知の回路、構造、信
号、コンピュータプログラム命令及び技術については詳細に示していない。
図1を参照すると、ネットワークアーキテクチャ100の1つの実施形態の汎用ブロッ
ク図を示している。後述するように、ネットワークアーキテクチャ100の1つの実施形
態は、ネットワーク180を介して互いに、及びデータストレージアレイ120a〜12
0bに相互接続されたクライアントコンピュータシステム110a〜110bを含む。ネ
ットワーク180は、スイッチ140を介して第2のネットワーク190に結合すること
ができる。このネットワーク190を介して、クライアントコンピュータシステム110
cが、クライアントコンピュータシステム110a〜110b及びデータストレージアレ
イ120a〜120bに結合される。また、ネットワーク190は、スイッチ150を介
してインターネット160又はその他の外部ネットワークに結合することもできる。
なお、代替の実施形態では、クライアントコンピュータ及びサーバ、スイッチ、ネット
ワーク、データストレージアレイ及びデータストレージデバイスの数及びタイプが、図1
に示すものに限定されない。1又はそれ以上のクライアントは、様々な時点でオフライン
動作することができる。また、動作中、ユーザがネットワークアーキテクチャ100への
接続、切断及び再接続を行うと、個々のクライアントコンピュータの接続タイプが変化す
ることもある。図1に示す構成要素の各々のさらなる説明を手短に行う。まず、データス
トレージアレイ120a〜120bにより提供される機能のいくつかの概要について説明
する。
ネットワークアーキテクチャ100では、データストレージアレイ120a〜120b
の各々を、クライアントコンピュータシステム110a〜110cなどの異なるサーバ及
びコンピュータ間のデータの共有に使用することができる。また、データストレージアレ
イ120a〜120bを、ディスクのミラーリング、バックアップ及び復元、保存データ
の保管及び検索、並びにストレージデバイス間のデータ移行に使用することもできる。代
替の実施形態では、クラスタを形成するために、1又はそれ以上のクライアントコンピュ
ータシステム110a〜110cを、高速ローカルエリアネットワーク(LAN)を介し
て互いにリンクさせることができる。互いにリンクされた1又はそれ以上のノードはクラ
スタを形成し、これによりデータストレージアレイ120a〜120bの1つに存在する
クラスタ共有ボリュームなどのストレージリソースを共有することができる。
データストレージアレイ120a〜120bの各々は、データ記憶のためのストレージ
サブシステム170を含む。ストレージサブシステム170は、複数のストレージデバイ
ス176a〜176mを含むことができる。これらのストレージデバイス176a〜17
6mは、クライアントコンピュータシステム110a〜110cにデータ記憶サービスを
提供することができる。ストレージデバイス176a〜176mの各々は、読み込み及び
書き込み要求を受け取るとともに、各々をアレイ内の行及び列としてアドレス指定可能な
複数のデータ記憶位置を含むように構成することができる。1つの実施形態では、ストレ
ージデバイス176a〜176m内のデータ記憶位置を、論理的で冗長なストレージコン
テナ又はRAIDアレイ(低価格/独立ディスク冗長アレイ)内に配置することができる
。しかしながら、ストレージデバイス176a〜176mは、ディスクを含まないことも
ある。1つの実施形態では、ストレージデバイス176a〜176mの各々が、従来のハ
ードディスクドライブ(HDD)とは異なる技術をデータ記憶に利用することができる。
例えば、ストレージデバイス176a〜176mの1又はそれ以上は、永続データを記憶
するための固体メモリから成るストレージを含み、又はこれにさらに結合することができ
る。他の実施形態では、ストレージデバイス176a〜176mの1又はそれ以上が、ス
ピン注入法、磁気抵抗ランダムアクセスメモリ(MRAM)法、又はその他の記憶技術を
利用するストレージを含み、又はこのようなストレージにさらに結合することができる。
これらの異なる記憶技術により、ストレージデバイス間で異なる信頼性特性が生じ得る。
ストレージデバイス176a〜176mの各々において使用される技術及び機構のタイ
プにより、データオブジェクトマッピング、並びにエラー検出及び訂正に使用するアルゴ
リズムを決定することができる。これらのアルゴリズムで使用されるロジックを、基本オ
ペレーティングシステム(OS)116、ファイルシステム140、ストレージサブシス
テムコントローラ174内の1又はそれ以上のグローバルRAIDエンジン178、及び
ストレージデバイス176a〜176mの各々における制御ロジックのうちの1又はそれ
以上に含めることができる。
1つの実施形態では、含まれる固体メモリが、ソリッドステートドライブ(SSD)技
術を含む。通常、SSD技術は、フラッシュメモリセルを利用する。当業で周知のように
、フラッシュメモリセルは、フローティングゲート内に捕捉され蓄積された電子の範囲に
基づく二進値を保持する。完全に消去されたフラッシュメモリセルは、フローティングゲ
ート内に電子を全く又は最低数しか蓄積していない。消去されたフラッシュメモリセルに
は、シングルレベルセル(SLC)フラッシュの二進1などの特定の二進値が関連付けら
れる。マルチレベルセル(MLC)フラッシュでは、消去されたフラッシュメモリセルに
二進値11が関連付けられる。フラッシュメモリセル内の制御ゲートに所与の閾値電圧よ
りも高い電圧を印加した後、このフラッシュメモリセルは、フローティングゲート内に所
与の範囲の電子を捕捉する。従って、プログラムされた(書き込まれた)フラッシュメモ
リセルには、SLCフラッシュの二進0などの別の特定の二進値が関連付けられる。ML
Cフラッシュセルでは、制御ゲートに印加された電圧に応じて、プログラムされたメモリ
セルに複数の二進値の1つを関連付けることができる。
一般的に言えば、SSD技術では、読み込みアクセスレイテンシタイムがHDD技術よ
りも短い。しかしながら、SSDの書き込みパフォーマンスは、SSD内の未使用のプロ
グラマブルブロックの利用可能性によって大きく影響を受ける。SSDの書き込みパフォ
ーマンスは、SSDの読み込みパフォーマンスに比べて大幅に遅いので、同様のレイテン
シを予想する一部の機能又は動作に関する問題が生じることがある。また、HDD技術と
SDD技術の間の技術及び機構の違いにより、データストレージデバイス176a〜17
6mの信頼性特性に違いが生じることがある。
様々な実施形態では、SSD内のフラッシュセルに新たなデータが書き込まれる前に、
一般にこのフラッシュセルを消去しなければならない。また、様々なフラッシュ技術にお
ける消去動作は、ブロック単位で行わなければならない。従って、ブロック(消去セグメ
ント又は消去ブロック)内のフラッシュメモリセルは、全てまとめて消去される。フラッ
シュ消去ブロックは、複数のページを含むことができる。例えば、1ページのサイズが4
キロバイト(KB)であり、1ブロックが64ページ、すなわち256KBを含むことが
できる。フラッシュデバイスでは、読み込み動作に比べて消去動作のレイテンシの方が相
対的に高いことがあり、これにより対応する書き込み動作のレイテンシが増すことがある
。フラッシュ技術のプログラミング又は読み込みは、消去ブロックサイズよりも低い粒度
レベルで行うことができる。例えば、フラッシュセルには、バイトサイズ、単語サイズ又
はその他のサイズでプログラム又は読み込みを行うことができる。
フラッシュセルには、反復的な消去プログラム動作後に摩耗が生じる。この場合、この
摩耗は、MLCフラッシュセルの基板とフローティングゲートの間の誘電酸化物層に注入
され捕捉される電荷によるものである。1つの例では、MLCフラッシュセルが、10,
000〜100,000サイクルなどの、消去及びプログラム動作を受ける回数限界を有
することができる。また、SSDには、別のフラッシュセルの消去又はプログラム中に隣
接する又は近隣のフラッシュセルに偶発的状態変化を引き起こすプログラムディスターブ
エラーが生じることがある。さらに、SSDは、別のフラッシュセルの読み込み中に近隣
のフラッシュセルの偶発的状態変化が生じるリードディスターブエラーも含む。
1又はそれ以上のストレージデバイス176a〜176mの各々の特性が分かると、よ
り効率的なデータオブジェクトマッピング、並びにエラー検出及び訂正を行うことができ
る。1つの実施形態では、ストレージコントローラ174内のグローバルRAIDエンジ
ン178が、ストレージデバイス176a〜176mに関して、I/O要求の応答時間に
一貫性がないこと、対応するアクセスに対するデータが誤っていること、エラー率及びア
クセス率のうちの少なくとも1つ又はそれ以上を検出することができる。グローバルRA
IDエンジン178は、少なくともこれらの特性に応答して、ストレージデバイス176
a〜176m内の対応するストレージデバイスグループにいずれのRAIDデータレイア
ウトアーキテクチャを利用すべきかを判断することができる。また、グローバルRAID
エンジン178は、ストレージデバイス176a〜176mの特性に基づいて、デバイス
内冗長スキーム及びデバイス間RAIDデータレイアウトを動的に変更することができる
図1に、1つの実施形態による、説明した特徴が可能なシステムの例を示す。さらなる
詳細については以下で示す。以下、図1を参照しながら、ネットワークアーキテクチャ1
00の構成要素についてさらに説明する。
ネットワークアーキテクチャの構成要素
繰り返すが、図示のように、ネットワークアーキテクチャ100は、ネットワーク18
0及び190を介して互いに及びデータストレージアレイ120a〜120bに相互接続
されたクライアントコンピュータシステム110a〜110cを含む。ネットワーク18
0及び190は、無線接続、直接ローカルエリアネットワーク(LAN)接続、ストレー
ジエリアネットワーク(SAN)、インターネットなどの広域ネットワーク(WAN)接
続及びルータなどを含む様々な技術を含むことができる。ネットワーク180及び190
は、1又はそれ以上のLANを含むことができ、これらは無線であってもよい。ネットワ
ーク180及び190は、リモートダイレクトメモリアクセス(RDMA)ハードウェア
及び/又はソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/I
P)ハードウェア及び/又はソフトウェア、ルータ、リピータ、スイッチ及び/又はグリ
ッドなどをさらに含むことができる。ネットワーク180及び190内では、イーサネッ
ト(登録商標)、ファイバチャネル、ファイバチャネルオーバーイーサネット(FCoE
)及びiSCSIなどのプロトコルを使用することができる。スイッチ140は、ネット
ワーク180及び190の両方に関連するプロトコルを利用することができる。ネットワ
ーク190は、伝送制御プロトコル(TCP)及びインターネットプロトコル(IP)、
すなわちTCP/IPなどの、インターネット160に使用される通信プロトコルの組と
整合することができる。スイッチ150は、TCP/IPスイッチとすることができる。
クライアントコンピュータシステム110a〜110cは、デスクトップパソコン(P
C)、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、サーバ
ファーム、携帯情報端末(PDA)及びスマートフォンなどのあらゆる数の固定又はモバ
イルコンピュータを表す。一般的に言えば、クライアントコンピュータシステム110a
〜110cは、1又はそれ以上のプロセッサコアを備えた1又はそれ以上のプロセッサを
含む。各プロセッサコアは、所定の汎用命令セットに従って命令を実行するための回路を
含む。例えば、x86命令セットアーキテクチャを選択することができる。或いは、Al
pha(登録商標)、PowerPC(登録商標)、SPARC(登録商標)又はその他
のいずれの汎用命令セットアーキテクチャを選択してもよい。プロセッサコアは、データ
及びコンピュータプログラム命令を求めてキャッシュメモリサブシステムにアクセスする
ことができる。キャッシュサブシステムは、ランダムアクセスメモリ(RAM)及びスト
レージデバイスを含む記憶階層に結合することができる。
クライアントコンピュータシステム内の各プロセッサコア及び記憶階層は、ネットワー
クインターフェイスにさらに接続することができる。クライアントコンピュータシステム
110a〜110cの各々は、ハードウェア構成要素に加え、記憶階層内に記憶された基
本オペレーティングシステム(OS)を含むことができる。この基本OSは、例えば、M
S−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、
UNIX(登録商標)、Linux(登録商標)、Solaris(登録商標)、又は別
の公知のオペレーティングシステムなどの様々な特定のオペレーティングシステムのいず
れかを表すことができる。従って、基本OSは、エンドユーザに様々なサービスを提供す
るとともに、様々なプログラムの実行をサポートするソフトウェアフレームワークを提供
することができる。また、クライアントコンピュータシステム110a〜110cの各々
は、高水準バーチャルマシン(VM)をサポートするために使用されるハイパーバイザを
含むことができる。当業者には周知のように、デスクトップ及びサーバ内で仮想化を使用
して、OSなどのソフトウェアをシステムのハードウェアから完全に又は部分的に分離す
ることができる。仮想化により、データストレージアレイ120a〜120bの各々にお
けるストレージデバイス176a〜176mに対応する(論理装置番号(LUN)などの
)論理記憶エンティティなどのように、各々が独自のリソースを有する同じ機械上で複数
のOSが実行されているという錯覚をエンドユーザに与えることができる。
データストレージアレイ120a〜120bの各々は、クライアントコンピュータシス
テム110a〜110cなどの異なるサーバ間のデータの共有に使用することができる。
データストレージアレイ120a〜120bの各々は、データを記憶するためのストレー
ジサブシステム170を含む。ストレージサブシステム170は、複数のストレージデバ
イス176a〜176mを含むことができる。これらのストレージデバイス176a〜1
76mの各々は、SSDとすることができる。コントローラ174は、受け取った読み込
み/書き込み要求を処理するためのロジックを含むことができる。例えば、少なくともコ
ントローラ174において、手短に上述したアルゴリズムを実行することができる。受け
取った書き込み要求などの動作のバッチ処理には、ランダムアクセスメモリ(RAM)1
72を使用することができる。
記憶媒体130に記憶された基本OS132、ファイルシステム134、いずれかのO
Sドライバ(図示せず)及びその他のソフトウェアは、ファイル及びLUNへのアクセス
を可能にする機能を提供し、これらの機能を管理することができる。基本OS134及び
OSドライバは、記憶媒体130上に記憶された、受け取った要求に対応する1又はそれ
以上のメモリアクセス動作をストレージサブシステム170内で行うようにプロセッサ1
22により実行可能なプログラム命令を含むことができる。
データストレージアレイ120a〜120bの各々は、ネットワークインターフェイス
124を使用してネットワーク180に接続することができる。1つの実施形態では、ク
ライアントコンピュータシステム110a〜110cと同様に、ネットワークインターフ
ェイス124の機能をネットワークアダプタカード上に含めることができる。ネットワー
クインターフェイス124の機能は、ハードウェア及びソフトウェアの両方を使用して実
装することができる。ネットワークインターフェイス124のネットワークカードによる
実装上には、ランダムアクセスメモリ(RAM)及び読み取り専用メモリ(ROM)の両
方を含めることができる。1又はそれ以上の特定用途向け集積回路(ASIC)を使用し
て、ネットワークインターフェイス124の機能を提供することができる。
1つの実施形態では、ユーザデータ及び対応するエラー訂正符号(ECC)情報のデー
タレイアウトを最適化しようと努めるデータストレージモデルを作成することができる。
1つの実施形態では、このモデルが、ストレージシステム内のストレージデバイスの特性
に少なくとも部分的に基づく。例えば、ソリッドステートストレージ技術を利用するスト
レージシステムでは、特定のデバイスの特性を使用してこのストレージデバイスのための
モデルを作成するとともに、このモデルが、対応するデータストレージ構成アルゴリズム
を通知する機能を果たすようにすることもできる。例えば、使用中の特定のストレージデ
バイスが、時間とともに信頼性の変化を示す場合、データストレージ構成を動的に変更す
る上でこのような特性を考慮することができる。
一般的に言えば、コンピューティングシステムのために開発されるあらゆるモデルは不
完全である。多くの場合、現実のシステムで所与のシステムを完全にモデル化するには、
考慮すべき変数が単純に多すぎる。場合によっては、完全ではないが価値のあるモデルを
開発することが可能な場合もある。以下でより詳細に説明するように、基礎を成すデバイ
スの特性に基づいてストレージシステムをモデル化する実施形態を説明する。様々な実施
形態では、システムがどのように挙動し得るかに関するいくつかの予測に基づいてデータ
ストレージ構成の選択が行われる。デバイスの挙動によっては、デバイスの特性の理解に
基づいて、他のデバイスの挙動より予測しやすいものもある。しかしながら、デバイスの
動作は時間とともに変化することがあり、これに応じて、選択したデータレイアウトも変
化することがある。本明細書で使用するデバイスの特性とは、全体としてのデバイスの特
性、チップ又はその他の構成要素などのデバイスの下位部分の特性、消去ブロックの特性
、又はデバイスに関する他のあらゆる特性のことを意味することができる。
デバイス内冗長性
ここで図2を参照すると、動的デバイス内冗長スキームの1つの実施形態を示す汎用ブ
ロック図を示している。当業者には周知のように、ストレージデバイス内の潜在的なセク
タエラーの影響を低減するように複数のデバイス内冗長スキームの1つを選択することが
できる。通常、「セクタ」という用語は、ディスク上の所与のトラック内のセグメントな
どの、HDD上における基本記憶単位を意味する。ここでは、「セクタ」という用語は、
SSD上における基本的な割り当て単位(アロケーションユニット)を意味することもで
きる。
SSD内のアロケーションユニットは、SSD内の1又はそれ以上の消去ブロックを含
むことができる。図2を参照すると、ユーザデータ210は、エンドユーザが修正及びア
クセスすべき記憶データ、並びにデバイス間エラー訂正符号(ECC)データの両方を意
味することができる。デバイス間ECCデータは、ユーザデータを保持する他のストレー
ジデバイス上の1又はそれ以上のページから生成されたパリティ情報とすることができる
。例えば、デバイス間ECCデータは、RAIDデータレイアウトアーキテクチャで使用
されるパリティ情報とすることができる。ユーザデータ210は、ストレージデバイス1
76a〜176kのうちの1又はそれ以上に含まれる1又はそれ以上のページ内に記憶す
ることができる。1つの実施形態では、ストレージデバイス176a〜176kの各々が
SSDである。
SSD内の消去ブロックは、複数のページを含むことができる。上述したように、1つ
の実施形態では、1ページが4KBのデータ記憶空間を含むことができる。1消去ブロッ
クは、64ページ、すなわち256KBを含むことができる。他の実施形態では、消去ブ
ロックが1メガバイト(MB)もの大きさであり、256ページを含むことができる。ア
ロケーションユニットのサイズは、アロケーションユニットのオーバーヘッドトラッキン
グを低減するために、十分に大きなサイズの比較的少ないユニットが与えられるように選
択することができる。1つの実施形態では、1又はそれ以上の状態テーブルが、アロケー
ションユニットの状態(割り当て済み、空き、消去済み、エラー)、摩耗レベル、及びア
ロケーションユニット内で発生した総エラー数(訂正可能及び/又は訂正不能)を維持す
ることができる。様々な実施形態では、アロケーションユニットのサイズを、所与のデバ
イスが利用できるアロケーションユニットの数とアロケーションユニットを維持するオー
バーヘッドとのバランスをとるように選択することができる。例えば、1つの実施形態で
は、アロケーションユニットのサイズを、SSDの総記憶容量の1/100パーセントと
なるように選択することができる。ページ、消去ブロック及びその他の単位構成に関する
他の量のデータ記憶空間も可能であり、企図される。
ストレージデバイス内の所与のセクタ又はその他の記憶単位にアクセスできない場合、
潜在的セクタエラー(LSE)が発生する。この所与のセクタでは、読み込み又は書き込
み動作を完了できないことがある。また、訂正不能なエラー訂正符号(ECC)エラーが
存在することもある。LSEは、所与のセクタがアクセスを受けるまで検出されないエラ
ーである。従って、この所与のセクタに以前に記憶したあらゆるデータが失われる恐れが
ある。ストレージデバイスの不具合後のRAID再構成中に1つのLSEが生じた場合、
これによりデータ損失に至る恐れがある。SSDでは、デバイスの使用年数、デバイスサ
イズ、アクセス率、ストレージの圧縮度、及び以前の訂正可能及び訂正不能なエラーの発
生といった統計値のうちの少なくとも1つから、別のLSEの発生確率が増加することが
ある。所与のストレージデバイス内のLSE及びデータ損失を防ぐために、この所与のス
トレージデバイス内で多様なデバイス内冗長スキームの1つを使用することができる。
デバイス内冗長スキームは、所与のストレージデバイス内で、パリティ情報などのEC
C情報を利用する。このデバイス内冗長スキーム及びそのECC情報は、所与のデバイス
に対応し、所与のデバイス内に維持することができるが、デバイス自体が内部的に生成し
て維持できるECCとは異なる。一般的に言えば、デバイスの内部的に生成され維持され
るECCは、このデバイスを含むシステムからは見えない。所与のストレージデバイスに
含まれるデバイス内ECC情報を使用して、この所与のストレージデバイス内におけるデ
ータ記憶の信頼性を高めることができる。このデバイス内ECC情報は、RAIDデータ
レイアウトアーキテクチャで利用されるパリティ情報などの、別のストレージデバイスに
含めることができる他のECC情報に加えられる。
極めて効果的なデバイス内冗長スキームは、所与のRAIDデータレイアウトの信頼性
を十分に高めて、パリティ情報を保持するために使用されるデバイスの数を減少させるこ
とができる。例えば、各デバイス上のデータを保護するためにデバイス内冗長性が加わっ
た場合、ダブルパリティRAIDレイアウトをシングルパリティRAIDレイアウトに置
き換えることができる。一定レベルの記憶効率を得るためには、デバイス内冗長スキーム
における冗長性を高めると、所与のストレージデバイスの信頼性が高まる。しかしながら
、このようにして冗長性を高めると、この所与のストレージデバイスの入力/出力(I/
O)性能に関する不利点も増える可能性がある。
1つの実施形態では、デバイス内冗長スキームが、デバイスを、ユーザデータを記憶す
るための一群の場所に分割する。例えば、ストライプ250a〜250cによって示すよ
うな、RAIDレイアウト内のストライプに対応するデバイス内の一群の場所に分割する
ことができる。ユーザデータ又はデバイス間RAID冗長性情報は、データ210によっ
て示すように、ストレージデバイス176a〜176kの各々の1又はそれ以上のページ
に記憶することができる。各ストレージデバイス内では、1又はそれ以上のページにデバ
イス内エラー回復データ220を記憶することができる。本明細書では、デバイス内エラ
ー回復データ220をデバイス内冗長データ220と呼ぶことができる。当業者であれば
周知のように、デバイス内冗長データ220は、データ210内の情報の選択した一部に
対してある関数を実行することにより取得することができる。XORベースの演算を使用
して、デバイス内冗長データ220に記憶すべきパリティ情報を導出することができる。
デバイス内冗長スキームの他の例としては、シングルパリティチェック(SPC)、最大
距離分離(MDS)消去符号、インタリーブパリティチェック符号(IPC)、ハイブリ
ッドSPC及びMDS符号(MDS+SPC)、及びカラム対角パリティ(CDP)が挙
げられる。これらのスキームは、データ220を計算する方法に応じて、もたらされる信
頼性及びオーバーヘッドの点で異なる。このシステムは、上述の冗長性情報に加え、デバ
イス上の領域のチェックサム値を計算するように構成することもできる。例えば、デバイ
スに情報が書き込まれた時にチェックサムを計算することができる。このチェックサムは
、システムによって記憶される。システムは、デバイスから情報が読み戻された時に再び
チェックサムを計算し、これを最初に記憶した値と比較することができる。2つのチェッ
クサムが異なる場合、情報が正しく読み込まれておらず、システムは、他のスキームを使
用してデータを回復することができる。チェックサム機能の例には、巡回冗長検査(CR
C)、MD5及びSHA−1がある。
ストライプ250a〜250cに示すように、所与のストライプ内にデータ210を記
憶するために使用する幅、すなわちページ数は、ストレージデバイス176a〜176k
の各々において同じものとなり得る。しかしながら、ストライプ250b〜250cに示
すように、所与のストライプ内にデバイス内冗長データ220を記憶するために使用する
幅、すなわちページ数は、ストレージデバイス176a〜176kの各々において同じで
ない場合がある。1つの実施形態では、所与のストレージデバイスの特性又は挙動の変化
により、対応するデバイス内冗長データ220を記憶するために使用する幅を少なくとも
部分的に決定することができる。例えば、上述したように、フラッシュセルには、ページ
をプログラムすること又は読み込むことによって近隣のページに支障を来たし、これらの
近隣のページ内にエラーを引き起こし得るプログラムディスターブエラー及びリードディ
スターブエラーが生じる。ストレージデバイスが古くなってより多くのエラーが生じてい
る場合、対応するデバイス内冗長データ220の量が増加することがある。例えば、スト
ライプ250bの書き込み動作前に、ストレージデバイス176a〜176kの各々の特
性をモニタし、これを使用してエラー率の増加を予測することができる。ストレージデバ
イス176c及び176jのエラーの増加が予測されることが検出される可能性がある。
これに応答して、ストレージデバイス176c及び176jのデバイス内冗長データ22
0の量が増加することがある。図2のストライプ250a及び250bの例では、ストラ
イプ250a及び250bのストレージデバイス176c及び176jの記憶されている
保護データの量の増加を確認することができる。例えば、この時点で、ストレージデバイ
ス176c及び176jをシングルパリティで保護するのではなく、これらのデバイスを
ダブルパリティ又はトリプルパリティで保護することができる。なお、デバイス176c
及び176jのデバイス内保護の量を増加させても、同じストライプ内の他のデバイスに
おける量を対応して増加させる必要はない。むしろ、ストライプのデータは、各デバイス
において望むように異なるレベルの保護を有することができる。
様々な実施形態では、所与のレベルのデータ保護の増減を選択的に行うことができる。
例えば、1つの実施形態では、上記の例におけるストレージデバイス176c及び176
jなどの、より多くのエラーを生成することが検出されたストレージデバイスに対してし
か保護の増加を行わなくてよい。別の実施形態では、ストレージデバイス176c及び1
76jがより多くのエラーを生成することが検出された場合、ストレージデバイス176
a〜176kの各々に対して保護の増加を行うことができる。1つの実施形態では、デバ
イス176kなどのパリティデバイス上におけるデバイス内保護の量を増加させるために
、ストライプ内で保護されているデータの量を減少させることが必要となる場合がある。
例えば、所与のストライプのパリティデバイス上に記憶されたデバイス内データの量を増
加させると、このデバイスが記憶するストライプ内のデータのためのパリティデータの量
が必然的に減少する。このパリティデータの量が、ストライプ内のデータを全て保護する
ために必要な量未満に減少した場合、パリティ保護を継続することが望ましい場合にはス
トライプ内のデータを減少させなければならない。ストライプ内に記憶されるデータの量
の減少させる代替案として、パリティデータを記憶するための異なるデバイスを選択する
こともできる。様々な選択肢が可能であり、企図される。また、本明細書に記載する図2
及びその他の図には、(176kなどの)別個のパリティデバイスを示していることがあ
るが、様々な実施形態では、パリティを単一のデバイスに記憶するのではなく複数のデバ
イスに分散させることができる。従って、別個のパリティデバイスの図示は、一般に説明
を簡単にするための論理的な表現と見なすことができる。
ここで図3を参照すると、データストレージサブシステムにおけるデバイス内保護を調
整する方法300の1つの実施形態を示している。一般に、ネットワークアーキテクチャ
100及びデータストレージアレイ120a〜120b内で具体化される構成要素は、方
法300に従って動作することができる。この実施形態のステップを順番に示す。しかし
ながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同
時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実
施形態には存在しないものもある。
ブロック302において、ストレージデバイスにユーザデータを記憶するための第1の
空き容量を決定する。このユーザデータは、データ210に関して上述したように、RA
IDアーキテクチャで使用されるエンドユーザアプリケーション又はデバイス間パリティ
情報内で使用されるデータとすることができる。この第1の空き容量は、上述したような
ストレージデバイス内の1又はそれ以上のページを含むことができる。1つの実施形態で
は、ストレージコントローラ174内のグローバルRAIDエンジン178が、ストレー
ジデバイス176a〜176mの各々から挙動統計値を受け取る。グローバルRAIDエ
ンジン178は、ストレージデバイス176a〜176mの2又はそれ以上を含む所与の
デバイスグループについて、RAIDデータレイアウト及びこれらの2又はそれ以上のス
トレージデバイスの各々に維持すべき最初のデバイス内冗長性の量を決定することができ
る。ブロック304において、RAIDエンジン178は、対応するデバイス内保護デー
タをストレージデバイスに記憶するための第2の空き容量を決定することができる。この
第2の空き容量は、ストレージデバイス内の1又はそれ以上のページを含むことができる
。デバイス内保護データは、上述したデバイス内冗長データ220に対応することができ
る。
ブロック306において、所与のデバイスグループに含まれる各ストレージデバイス内
の第1の空き容量にデータを書き込む。1つの実施形態では、ユーザデータ及びデバイス
間パリティ情報が、いずれも所与のデバイスグループに含まれる複数のストレージデバイ
スにわたる単一のRAIDストライプとして書き込まれる。再び図2を参照して分かるよ
うに、対応する書き込まれるデータの幅は、各ストレージデバイスにおいて同じである。
ブロック308において、ECCアルゴリズム、XORベースのアルゴリズム、又はその
他のあらゆる適当なアルゴリズムにより、デバイス内保護データを生成する。また、シス
テムは、正しく取り出されなかったデータを識別しやすくするためにチェックサムを生成
することができる。ブロック310において、生成されたデバイス内保護データを、スト
レージデバイス内の第2の空き容量に書き込む。
ブロック312において、RAIDエンジン178は、1又はそれ以上のストレージデ
バイスの挙動をモニタすることができる。1つの実施形態では、RAIDエンジン178
が、対応するストレージデバイスのモデルを含み、このモデルに入力すべき挙動統計値を
ストレージデバイスから受け取ることができる。このモデルは、ストレージデバイスの既
知の特性を利用することにより、ストレージデバイスの挙動を予測することができる。例
えば、このモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測する
ことができる。RAIDエンジン178は、信頼性に影響を与える所与のストレージデバ
イスの特性を検出した(条件付きブロック314)場合、ブロック316において、デー
タ及び対応するデバイス内冗長データを記憶するための第1及び第2の空き容量を調整す
ることができる。例えば、RAIDエンジンは、少なくともデバイスの使用年数、アクセ
ス率及びエラー率などの上述した統計値をモニタすることができる。再び図2を参照して
分かるように、RAIDエンジン178は、ストレージデバイス176c及び176jの
エラー数が増加したことを検出することができる。或いは、RAIDエンジンは、ストレ
ージデバイス176c及び176jのエラー数の増加を予測することができる。従って、
RAIDエンジン178は、第2のストライプ250bを書き込む前に、ストレージデバ
イス176a〜176kの各々にデータ210及びデータ220を記憶するために使用す
るページ数を調整することができる。同様に、RAIDエンジン178は、ストレージデ
バイス176bの信頼性が低下していることを検出することができる。従って、RAID
エンジン178は、第3のストライプ250cを書き込む前に、ストレージデバイス17
6a〜176kの各々にデータ210及びデータ220を記憶するために使用するページ
数を再び調整することができる。
ストレージデバイス特性のモニタリング
ここで図4を参照すると、ストレージサブシステムの1つの実施形態の汎用ブロック図
を示している。1又はそれ以上のデバイスグループ173a〜173mの1つにおいて、
1又はそれ以上のストレージデバイス176a〜176mの各々を分割することができる
。同様に、他のデバイスを含む他のデバイスグループも存在し得る。各ストレージデバイ
スの対応する動作キュー及び状態テーブルを、デバイスユニット400a〜400wの1
つに含めることができる。これらのデバイスユニットを、RAM172に記憶することが
できる。デバイスグループ173a〜173mの各々に関し、対応するRAIDエンジン
178a〜178mを含めることができる。各RAIDエンジン178は、対応するデバ
イスグループ内のストレージデバイスの各々の統計値を追跡するモニタ410を含むこと
ができる。データレイアウトロジック420は、対応するストレージデバイス内の、ユー
ザデータ、デバイス間冗長データ及びデバイス内冗長データに対して割り当てるべき空き
容量を決定することができる。ストレージコントローラ174は、ウェアレベリング、ガ
ベージコレクション、I/Oスケジューリング、重複除外、並びに着信及び発信パケット
のプロトコル変換といったタスクのうちの少なくとも1つを行うためのその他の制御ロジ
ック430を含むことができる。
ここで図5を参照すると、デバイスユニットの1つの実施形態の汎用ブロック図を示し
ている。デバイスユニットは、デバイスキュー510及びテーブル520を含むことがで
きる。デバイスキュー510は、読み込みキュー512、書き込みキュー514、及びそ
の他の動作キュー516などの1又はそれ以上の他のキューを含むことができる。各キュ
ーは、1又はそれ以上の対応する要求530a〜530dを記憶するための複数のエント
リを含むことができる。例えば、対応するSSDのデバイスユニットは、少なくとも読み
込み要求、書き込み要求、トリム要求及び消去要求などを記憶するためのキューを含むこ
とができる。テーブル520は、状態データ又は統計値530を記憶するための複数のエ
ントリを各々が含む1又はそれ以上の状態テーブル522a〜522bを含むことができ
る。また、この図及びその他の図には、キュー及びテーブルが特定数のエントリを含むよ
うに示しているが、必ずしもエントリ自体が互いに対応するわけではない。さらに、キュ
ー、テーブル及びエントリの数は、図示のものとは異なることがあり、また互いに異なる
こともある。
ここで図6を参照すると、所与のデバイスに対応する状態テーブルの1つの実施形態を
示す汎用ブロック図を示している。1つの実施形態では、このようなテーブルが、SSD
などの所与のストレージデバイスの状態情報、エラー情報及び摩耗率情報に対応するデー
タを含むことができる。この情報に、対応するRAIDエンジンがアクセスすることによ
り、このRAIDエンジンは、デバイス間保護及びデバイス内保護の両方に使用するデー
タ記憶及びスキームのために割り当てられた空間を動的に変更できるようになる。1つの
実施形態では、この情報が、デバイスの使用年数602、エラー率604、デバイス60
6上で検出された総エラー数、回復可能なエラー数608、回復不能なエラー数610、
デバイスのアクセス率612、記憶されたデータの使用年数614、及び割り当て空間6
16a〜616nの1又はそれ以上の割り当て状態、のうちの少なくとも1つ又はそれ以
上を含むことができる。これらの割り当て状態は、使用中、空き、及びエラーなどを含む
ことができる。
フレキシブルなRAIDレイアウト
ここで図7を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャの
1つの実施形態を示す汎用ブロック図を示している。RAIDエンジンは、ストレージデ
バイス176a〜176kに使用すべき保護レベルを決定することができる。例えば、R
AIDエンジンは、ストレージデバイス176a〜176kにRAIDダブルパリティを
利用すると決定することができる。デバイス間冗長データ240は、対応するユーザデー
タから生成されたRAIDダブルパリティ値を表すことができる。1つの実施形態では、
ストレージデバイス176j及び176kが、ダブルパリティ情報を記憶することができ
る。他のレベルのRAIDパリティ保護も可能であり、企図されると理解されたい。また
、他の実施形態では、ダブルパリティ情報を、各RAIDストライプのストレージデバイ
ス176j及び176kに記憶するのではなく、この記憶をストレージデバイス間で循環
させることもできる。ダブルパリティ情報がストレージデバイス176j及び176kに
記憶されるように示しているのは、図示及び説明を簡単にするためである。
ここで図8を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャの
別の1つの実施形態を示す汎用ブロック図を示している。図7に示す例と同様に、ストレ
ージデバイス176a〜176kにはダブルパリティを使用することができる。この例で
は、RAIDダブルパリティについて説明するが、RAIDデータレイアウトアーキテク
チャではあらゆる量の冗長性を選択することができる。
動作中、RAIDエンジン178は、ストレージデバイス176a〜176kの特性を
モニタして、デバイスが最初の又はその他の所与の信頼性レベルよりも高い信頼性レベル
を示していると判断することができる。これに応答して、RAIDエンジン178は、R
AID保護をRAIDダブルパリティからRAIDシングルパリティに変更することがで
きる。他のRAIDデータレイアウトアーキテクチャでは、サポートされている冗長性の
量を別様に減少させることができる。他の実施形態では、ストレージデバイス176a〜
176kのモニタ及び保護レベルの変更を、ストレージコントローラ174内の他のロジ
ックによって行うことができる。
引き続き上記の例を参照すると、所与のRAIDストライプ上で実行される後続の書き
込み動作に関しては、シングルパリティ情報のみを生成して記憶することができる。例え
ば、サポートされている冗長性の量を変更した後の書き込み動作に関しては、後続のRA
IDストライプ内でストレージデバイス176kを使用しなくてもよい。また、ストレー
ジデバイス176kに記憶されたデータを無効にし、これによりストレージを解放するこ
ともできる。その後、ストレージデバイス176kの解放されたデータに対応するページ
を、他の用途に再割り当てすることができる。このパリティ保護の量を低減し、パリティ
保護データを記憶するために以前に使用されていた空間を解放するプロセスのことを、「
パリティシュレッディング」と呼ぶことができる。さらに、ストレージデバイス176k
がSSDである実施形態では、ストライプ250a内のページを書き換える前に、ストレ
ージデバイス176k内で1又はそれ以上の消去動作を行うことができる。
上記のパリティシュレッディングの例を引き続き参照すると、パリティシュレッディン
グ後にストライプ250a内のストレージデバイス176kの再割り当てされたページに
記憶されたデータは、ストライプ250aに対応しない他のRAIDストライプのユーザ
データ又は対応するRAIDシングルパリティ情報を保持することができる。例えば、ス
トライプ250a内のストレージデバイス176a〜176jに記憶されたデータは、パ
リティシュレッディング前に実行される1又はそれ以上の書き込み動作に対応することが
できる。ストライプ250a内のストレージデバイス176kに記憶されたデータは、パ
リティシュレッディング後に実行される1又はそれ以上の書き込み動作に対応することが
できる。同様に、ストライプ250b内のストレージデバイス176a〜176jに記憶
されたデータは、パリティシュレッディング前に実行される1又はそれ以上の書き込み動
作に対応することができる。ストライプ250b内のストレージデバイス176kのペー
ジは、解放後に消去して、サポートされている冗長性の量を変更した後に実行される1又
はそれ以上の書き込み動作に対応するデータに書き換えることができる。なお、冗長性情
報が複数のストレージデバイスを循環する場合、このスキームはより一層効果的となり得
る。このような実施形態では、シュレッディングにより解放される空間も、同様にストレ
ージデバイスにわたって分散される。
再び図8を参照すると、ストライプ250c内のストレージデバイス176kに示す割
り当て解除されたページは、パリティシュレッディング前にRAIDダブルパリティ情報
を記憶していた可能性のある記憶位置を表す。しかしながら、現時点でこれらのページは
無効であり、未だ再割り当てされていない。上記の例では、ストレージデバイス176k
内のページを解放して再割り当てする方法及びタイミングが、SSDの特定の特性によっ
て決まる。これらの特性の例として、1又はそれ以上のページを再プログラムする(書き
換える)前に少なくとも消去ブロック全体を消去することが挙げられる。図8からわかる
ように、パリティをシュレッドする際に、デバイス全体をシュレッドする必要はない。む
しろ、個々のストライプに関して、望むようにパリティをシュレッドすることができる。
同様に、ストライプのパリティ保護を増加させることもでき、別のデバイス上に記憶され
た保護データをストライプに追加することもできる。
ここで図9を参照すると、RAIDレイアウトを動的に決定する方法の1つの実施形態
を示している。一般に、ネットワークアーキテクチャ100及びデータストレージアレイ
120a〜120b内で具体化される構成要素は、方法900に従って動作することがで
きる。図9には、2つのプロセス910及び920を示している。これらのプロセスの各
々は、同時に又は所与の順序で動作することができる。さらに、この実施形態のステップ
を順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なう
ことができるもの、同時に行うことができるもの、他のステップと組み合わせることがで
きるもの、及び別の実施形態には存在しないものもある。ブロック910は、ストレージ
制御システムが、システム内のストレージデバイスの特性及び挙動をモニタするプロセス
を示す(ブロック912)。例えば、図6で説明したような特性を観察及び/又は記録す
ることができる。信頼性の変化などの特定の状態が検出された場合(判定ブロック914
)、記憶したデータに使用する保護の量を変更することができる(ブロック916)。例
えば、所与のデバイスの使用年数が比較的短い場合には、デバイスの信頼性が分からない
ことがある(例えば、デバイスが「初期故障」を起こして比較的早い時期に機能しなくな
ることもある)。従って、RAIDストライプ毎に1又はそれ以上の追加のストレージデ
バイスを使用して、パリティ情報を記憶することができる。その後の時点で、時間ととも
にこれらのデバイスが信頼できると判明した時に、この追加の保護を除去することができ
る。様々な実施形態では、デバイスのエラー率に関する特性を維持することができる。例
えば、訂正可能な及び/又は訂正不能なエラーに関する特性を維持し、これらを使用して
所与のデバイスの信頼性に関する判断を行うことができる。ストレージコントローラは、
この情報に基づいて、デバイス又はストライプの様々な保護レベルを動的に変更すること
ができる。
図9のブロック920は、ストレージのストライプ又はその他の部分を割り当てる時点
で(判定ブロック922)、データに使用すべきレイアウト及び保護レベルに関する決定
を行なう(ブロック924)ことができるプロセスを大まかに示すものである。なお、こ
の時にブロック910のプロセスを実施することもできる。或いは、既にプロセス910
によって保護レベルが決定され記憶されている場合もある。この場合、ブロック924の
決定は、この記憶されているデータに基づくことができる。1つの実施形態では、所与の
レイアウトを決定すると、このレイアウトに使用すべき特定のデバイスをデバイスグルー
プから選択することができる(ブロック925)。例えば、1つの実施形態では、20個
のデバイスからなるグループを使用することができる。5+2のレイアウトを決定した場
合、この20個のデバイスからなるグループから任意の7つのデバイスを使用するように
選択することができる。また、選択した5+2のレイアウトによるその後の書き込みにお
いて、この同じ7つのデバイスを使用する必要はない。ストライプのレイアウト、保護レ
ベル及びデバイスを決定した後、このストライプに書き込みを行うことができる(ブロッ
ク926)。
様々な実施形態では、RUSHアルゴリズムを利用して、所与のストライプのデータ及
び冗長性情報がいずれのデバイス上に存在するようになるかを判断することができる。例
えば、RUSHアルゴリズムを使用して、ストレージデバイス176a〜176kの所与
のストライプの8+2のRAIDレイアウトに利用すべき特定のデバイスを選択すること
ができる。一般的に言えば、本明細書では、一般にM+Nのレイアウトは、所与のデータ
ストライプのM個のデータデバイス及びN個のパリティデバイスを含むレイアウトを表す
ことができる。また、上述したように、パリティを完全に特定のデバイス内に配置するの
ではなく、デバイスにわたって分散させることもできる。従って、8+2のレイアウトは
、10個のデバイスにわたってストライピングされたデータ及びパリティを含むことがで
き、これらのデバイスのうちの8つがデータを記憶し、2つがパリティを記憶する。その
後のある時点で、12+2のレイアウトを選択することができる。このように、書き込み
を行う(例えば、ストライプを書き込む)時点で、所望のレイアウト及び保護特性を動的
に決定することができる。1つの実施形態では、ストレージデバイス176a〜176k
が、30個、50個、又はそれ以上のストレージデバイスなどの、10個よりも多くのス
トレージデバイスを含むことができる。しかしながら、8+2のレイアウトによるストラ
イプでは、ストレージデバイスのうちの10個しか利用されない。なお、デバイスのうち
の任意の10個を選択し、ストライプを記憶する際に使用するこれらの10個のデバイス
を選択するために、任意の好適なアルゴリズムを使用することができる。例えば、CRU
SHアルゴリズムを使用して、所与の8+2のRAIDレイアウトのために、ストレージ
デバイス176a〜176kのうちのいずれの10個を利用すべきかを選択することがで
きる。
ストレージデバイス176a〜176kのために選択される8+2のRAIDレイアウ
トの1つの例では、これらのストレージデバイスのうちの2つを使用して、パリティ情報
などのエラー訂正符号(ECC)情報を記憶することができる。この情報を使用して、再
構成読み込み要求を行うことができる。再び図8を参照すると、この例では、RAIDダ
ブルパリティ情報を記憶するためにストレージデバイス176j及び176kを選択する
ことができる。この場合も、パリティ情報を常に同じストレージデバイスに記憶するので
はなく、RAIDアレイに含まれるストレージデバイス176a〜176kの各々の間で
循環式に記憶することができる。図示及び説明を簡単にするために、ストレージデバイス
176j及び176kがRAIDダブルパリティを記憶しているものとして説明する。
ブロック926において、書き込み動作の実行中に、RAIDアレイに含まれる複数の
ストレージデバイスにわたり、メタデータ、ユーザデータ、デバイス内パリティ情報及び
デバイス間パリティ情報をRAIDストライプとして書き込むことができる。ブロック9
12において、RAIDエンジン178は、RAIDアレイ内の1又はそれ以上のストレ
ージデバイスの挙動をモニタすることができる。1つの実施形態では、RAIDエンジン
178が、図4に示すようなモニタ410及びデータレイアウトロジック420を含むこ
とができる。RAIDエンジン178は、少なくとも所与のストレージデバイスの使用年
数、エラー数及びエラータイプ、最後のデータ割り当て以降に検出された構成変更、所与
のデータの使用年数、及びRAIDアレイ内の記憶空間の現在の使用状況などをモニタす
ることができる。
RAIDエンジン178によりモニタされたデータは、図4に示すデバイスユニット4
00a〜400wの1つなどのRAM172に記憶することができる。このデータを記憶
するために、図5及び図6に示す例のようなテーブルを使用することができる。対応する
RAIDエンジンに含まれるロジックは、ストレージデバイスの最新の統計値をモニタす
ることにより、ストレージデバイスの挙動を検出して予測することができる。例えば、こ
のモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測することがで
きる。
(単複の)ストレージデバイスの信頼性が増したことが検出された(条件付きブロック
908)場合、ブロック910において、RAIDエンジンは、システム内のデータ保護
レベルを低下させることができる。例えば、1つの実施形態では、ストレージサブシステ
ムに記憶されているパリティ情報の量を減少させることができる。上記の例に関して、R
AIDエンジンは、対応する8+2のRAIDアレイのRAIDダブルパリティをRAI
Dシングルパリティに低下させて、8+1のRAIDアレイに変換することができる。他
の例では、所与のRAIDアレイが、ブロック916の前に、RAIDアーキテクチャに
おいてNレベルの量の冗長性又はパリティを利用していることがある。ブロック916に
おいて、RAIDエンジンは、N>1かつ1<m<Nとする(N−m)レベルの量の冗長
性を利用すると決定することができる。従って、その後の所与のRAIDストライプの書
き込み動作中には、所与のRAIDストライプ内で、より少ないm個のストレージデバイ
スに書き込みが行われるようになる。
RAIDエンジン(又は別の構成要素)は、システム内のデータ保護レベルを低下させ
るために、上述したようなパリティシュレッディングを行うことができる。その後、スト
レージコントローラ174は、シュレッディング動作の結果として解放されたページを、
その後の書き込み動作で使用されるように再割り当てすることができる。
上述したように、ストレージデバイス176a〜176kの各々が古くなってデータで
満たされると、RAIDアレイから追加のパリティ情報を除去することができる。メタデ
ータ、ユーザデータ、対応するデバイス内冗長性情報、及びデバイス間冗長性情報の一部
は残存する。8+2のRAIDアレイを使用した上記の例に関しては、ストレージデバイ
ス176a〜176jに記憶された情報が残存する。一方、追加のデバイス間冗長性情報
又は追加のパリティ情報は、RAIDアレイから除去することができる。例えば、ストレ
ージデバイス176kに記憶された追加のパリティ情報を、RAIDストライプから除去
することができる。
上記の例でストレージデバイス176a〜176jに記憶された情報などの残存した情
報は、適所に残存することができる。上記の例におけるストレージデバイス176k内の
対応するページなどの、追加のパリティ情報を記憶する記憶空間は、その後の書き込み動
作のために再利用して再割り当てすることができる。1つの実施形態では、個々の新たな
割り当てにより、新たな仮想アドレスが受け取られる。個々の新たな割り当ては、所与の
サイズ、所与の配置又は構成を有することができ、所与の(仮想又は物理)記憶空間に適
応することができる。1つの実施形態では、ストレージデバイス176a〜176kの各
々及びストレージデバイス内の各割り当てページが、識別情報を含むヘッダを有する。こ
のような識別情報により、所与の構成を変更することなく、解放された追加のパリティ情
報のために記憶空間を再利用できるようになる。
ストレージデバイス176a〜176kの1又はそれ以上がSSDである実施形態では
、消去ブロック内の1又はそれ以上のページを再プログラムする前に消去ブロックが消去
される。従って、ストレージデバイス176kがSSDである実施形態では、ストレージ
デバイス176k内の解放されたページを再プログラムする前に、対応する消去ブロック
が消去される。元々の8+2のRAIDアレイを使用する上記の例に関しては、ページに
データ210を再プログラムする前に、ストライプ250a〜250b内のストレージデ
バイス176kの1又はそれ以上の消去ブロックが消去される。この時、元々の8+2の
RAIDアレイは8+1のRAIDアレイになっており、ストレージデバイス176jは
、パリティシュレッディング前に書き込まれたRAIDストライプにシングルパリティ情
報を提供する。
当業者には周知のように、所与のストレージデバイスの読み込み又は書き込みエラー中
には、対応するRAIDストライプ内のサポートされているデバイス間パリティ情報から
データを再構成することができる。この再構成されたデータをストレージデバイスに書き
込むことができる。しかしながら、この再構成されたデータがストレージデバイスに対し
て書き込みエラーとなった場合、このストレージデバイス上に記憶されている全てのデー
タを、対応するパリティ情報から再生することができる。この再生されたデータは、別の
場所に再配置ことができる。フラッシュメモリでは、フラッシュ変換層(FTL)が、デ
ータの記憶位置をリマップする。また、フラッシュメモリでは、データの再配置が、消去
ブロック内の対応するページを再プログラムする前に消去ブロック全体を消去することを
含む。マッピングテーブルを消去ブロック対ページの粒度に維持することにより、リマッ
ピングテーブルをよりコンパクトにすることができる。さらに、再配置中には、パリティ
シュレッディング中に解放された追加のページを使用することができる。
オフセットパリティ
ここで図10を参照すると、フレキシブルなRAIDデータレイアウトアーキテクチャ
のさらに別の実施形態を示す汎用ブロック図を示している。図8に示す汎用ブロック図と
同様に、フレキシブルなRAIDデータレイアウトアーキテクチャを使用することができ
る。ストレージデバイス176a〜176kは、複数のストレージデバイスにわたってレ
イアウトされた複数のRAIDストライプを含む。ストレージデバイス176a〜176
kの各々は複数のページを含むが、図を簡単にするために、ページ1010及びページ1
020にしかラベルを付けていない。図示の例では、ストレージデバイス176j及び1
76kがダブルパリティ情報を記憶するダブルパリティRAIDデータレイアウトが選択
されている。
ストレージデバイス176a〜176kのページの各々は、特定のタイプのデータを記
憶する。一部のページは、ユーザデータ210及び対応する生成されたデバイス間パリテ
ィ情報240を記憶する。他のページは、対応する生成されたデバイス内パリティ情報2
20を記憶する。さらに他のページは、メタデータ242を記憶する。メタデータ242
は、ページヘッダ情報、RAIDストライプ識別情報、及び1又はそれ以上のRAIDス
トライプのログデータなどを含むことができる。ストレージデバイス176a〜176k
のページの各々は、デバイス間パリティ保護及びデバイス内パリティ保護に加え、各所与
のページに記憶されたチェックサムなどの追加の保護を含むこともできる。様々な実施形
態では、各ストライプの最初の単一のメタデータページを、他のストライプヘッダから再
生することができる。或いは、データをデバイス間パリティによって保護できるように、
このページがパリティシャード内の異なるオフセットに存在することもできる。「シャー
ド」は、デバイスの一部を表す。従って、パリティシャードは、パリティデータを記憶す
るデバイスの一部を意味する。
物理層
様々な実施形態では、本明細書で説明するシステムが物理層を含み、これを通じてシス
テムの他の要素がストレージデバイスと通信することができる。例えば、スケジューリン
グロジック、RAIDロジック及びその他のロジックは、ソフトウェア及び/又はハード
ウェアのあらゆる好適な組み合わせを含む物理層を介してストレージデバイスと通信する
ことができる。一般に、物理層は、永続ストレージへのアクセスの提供及びデータストレ
ージの完全性に関する機能の実行を含む様々な機能を実行する。
図11Aに、500GBのデバイスの仮想デバイスレイアウトの1つの実施形態を示す
。様々な実施形態では、本明細書で説明するストレージデバイスの最初にパーティション
テーブル1101をフォーマットし、デバイスの最後にパーティションテーブルのコピー
をフォーマットすることができる。また、最初と最後のブロックにデバイスヘッダ110
3を記憶することができる。例えば、フラッシュベースのストレージデバイスでは、最初
と最後の消去ブロックにデバイスヘッダを記憶することができる。上述したように、消去
ブロックは、典型的には256KB〜1MBのフラッシュ構造である。第1の消去ブロッ
ク内には、追加の未使用空間を確保することができる(パディング1105)。各デバイ
スには、ログ及び診断情報1107を書き込むための第2の消去ブロックを確保すること
ができる。これらの間の残りの消去ブロックは、複数の消去ブロックのアロケーションユ
ニット(AU)1109に分割される。AUサイズは、デバイス毎に十分な数のAUが存
在して良好な割り当て粒度が得られるように選択することができる。1つの実施形態では
、オーバーヘッドを避けるのに十分な多さではあるが、追跡しやすいように多すぎない単
位での割り当てを可能にするように、デバイス上に10,000個ほどの範囲内のAUが
存在する。AU(割り当て済み/空き/消去済み/不良)の状態の追跡は、AU状態テー
ブルに維持することができる。AUの摩耗率は、摩耗レベルテーブルに維持することがで
き、総エラー数は、AUエラーテーブルに維持することができる。
様々な実施形態では、物理層が、(異なるノード上に存在し得る)デバイスの組にわた
る各デバイス内の1つのセグメントシャードを含むセグメント内で空間を割り当てる。図
11Bに、セグメント及びそのセグメントの様々な識別可能部分の1つの実施形態を、1
つの考えられるセグメントレイアウトで示す。図示の実施形態では、複数のデバイスに記
憶された単一のセグメントを示している。データデバイス:データ0〜データN、並びに
パリティデバイス:パリティP及びパリティQを示す。1つの実施形態では、各セグメン
トシャードが、各デバイス上でシャードのサイズが等しくなるように、デバイスに1又は
それ以上のアロケーションユニットを含む。セグメントシャードを示すために、セグメン
トシャード1123を挙げている。図11Bには、I/O読み込みサイズ1127も示し
ており、これは1つの実施形態ではページに対応する。I/Oシャードのページパリティ
の1又はそれ以上のページを含むことができるI/Oパリティチャンク1129も示して
いる。
1つの実施形態では、各セグメントが、以下のパラメータのうちの1又はそれ以上を含
むことができる独自の構成を有する。
(1)RAIDレベル−セグメント内のデバイス間保護に使用されるRAIDレベル。
これにより、ミラーリング、パリティ、又はECC RAID、及びどれだけのセグメン
トシャードがパリティを含むかを決定することができる。
(2)デバイスレイアウトI/Oシャードサイズ−書き込み中に各デバイスにわたるス
トライピングに使用するサイズを表す。このサイズは、典型的には256KB〜1MBと
なり、恐らくは各デバイス上の消去ブロックサイズの倍数となる。図11Bには、例示目
的でI/Oシャードサイズ1125を挙げている。
(3)I/O読み込みサイズ−論理的読み込みサイズである。各I/Oシャードを一連
の論理ページとしてフォーマットすることができる。さらに各ページは、ページ内のデー
タのヘッダ及びチェックサムを含むことができる。読み込みが発行された場合、この読み
込みは、1又はそれ以上の論理ページに対するものとなり、チェックサムを使用して各ペ
ージ内のデータを検証することができる。
(4)I/OシャードRAIDレベル−I/Oシャードは、再生中に見つかった潜在的
なエラーを処理すべきシャード内パリティを有する。このパラメータは、どのタイプのパ
リティがシャード内保護に使用されているか、従ってどれだけのシャード内パリティのコ
ピーが維持されるかを決定する。
(5)I/Oパリティチャンク−様々な実施形態では、ストレージデバイスが、ページ
単位でECCを行うことができる。従って、エラーが見つかった場合、物理ページ全体の
不具合を示している可能性がある。I/Oパリティチャンクは、セグメント内の各デバイ
ス上の物理ページサイズの最小公倍数であり、I/Oパリティチャンク又はI/O読み込
みサイズのうちの大きい方にI/Oシャードをストライピングすることにより、シャード
内パリティが計算される。ページパリティの1又はそれ以上のページを含めることができ
る。様々な実施形態では、チェックサム検証が失敗に終わった場合、このパリティを使用
してデータを再生することができる。
様々な実施形態では、個々の新たなセグメントに書き込みが行われる際に、そのセグメ
ントのRAID構成が選択される。RAID構成の選択は、現在のアクティブなノード及
びデバイスの組、並びにセグメント内のデータのタイプなどの因子に基づくことができる
。例えば、10個のノード又はデバイスが利用可能な場合、(8+2)のRAID6の構
成を選択し、2つのデバイス又はノード故障に耐えるように、これらのノードにわたって
セグメントをストライピングすることができる。その後、ノードが故障した場合、次のセ
グメントを(7+2)のRAID6の構成に切り替えることができる。セグメント内では
、セグメントシャードの一部がデータを含み、一部が(パリティなどの)ECCを含む。
1つの実施形態では、5種類のセグメントが存在する。これらのセグメントのうちの3
つは、AU状態テーブル、AUエラーテーブル及び摩耗率テーブルに対応する。いくつか
の実施形態では、これらの3つのセグメントをミラーリングしてさらに保護することがで
きる。これらの3つのセグメントに加え、ミラーリングを通じてさらに保護することもで
きるメタデータセグメントが存在する。最後に、クライアントブロック及びログ情報を保
持するデータセグメントが存在する。ログ情報は、セグメント内のクライアントブロック
に関連する最新情報を含む。データセグメントは、パリティP及びパリティQシャードを
使用して、図11Bに示すようなRAID6によって保護される可能性が高い。上記に加
え、起動時に全てのセグメントシャードのヘッダからの情報を投入されるメモリ内データ
構造としてセグメントテーブルが維持される。いくつかの実施形態では、このテーブルを
全てのノード上で完全にキャッシュして、あらゆるノードがストレージアクセスを物理ア
ドレスに変換できるようにすることができる。しかしながら、他の実施形態では、論理基
準を取ってデータが記憶されているセグメントレイアウトノードを識別できるセグメント
テーブルを各ノードが有することができるオブジェクトストレージモデルを使用すること
ができる。その後、ノード上の正確な記憶位置を識別するための要求がノードに伝えられ
る。図11Bには、セグメント内のかなりの量の空間を占めるあらゆる(ボリューム、ス
ナップショットの)組み合わせを識別するセグメントテールデータも示す。スナップショ
ットを除去する場合、データスクラバが、このデータに基づいて、ガベージコレクション
を行うセグメントの識別を支援することができる。
1つの実施形態では、基本書き込み単位が、セグメント内のデバイスの各々における1
つのI/Oシャードであるsegioである。segio内の各論理ページには、ページ
のチェックサム(「メディア」チェックサムと呼ぶことができる)を含むページヘッダが
、データの実際のページサイズが1ページをわずかに下回るようにフォーマットされる。
セグメントのパリティシャード内のページについては、データページ内のページチェック
サムがパリティページによって保護されるように、ページヘッダが小さくなっている。各
I/Oシャードの最終ページは、この場合も小さなヘッダを有して、消去ブロック内の全
てのチェックサム及びページデータをページ不具合から保護するパリティページである。
ここで言うページサイズとは、1又はそれ以上の物理フラッシュページとすることができ
るI/O読み込みサイズのことである。セグメントによっては、物理ページよりも小さな
読み込みサイズを使用することができる。この方法は、検索情報に対する読み込みをイン
デックスで駆動することができ、より小さなデータ部分を読み込みながら所望のデータを
取得できるメタデータに対して行うことができる。このような場合、物理ページの半分を
読み込むということは、より少ないデータをI/Oバス(及びネットワーク)に結び付け
て、より少ないデータを検証する(例えば、チェックサムを行う)ことを意味する。ある
実施形態は、物理ページよりも小さい読み込みサイズをサポートするために、消去ブロッ
クの最後に複数のパリティページを含んで、全てのパリティページの全体的サイズがフラ
ッシュページサイズに等しくなるようにすることができる。
消去ブロックの摩耗率が増すにつれ、エラーの可能性は高くなる。摩耗率を追跡するこ
とに加え、高いエラー確率が識別される1又は複数の消去ブロック上に、エラーが観察さ
れる頻度に関するデータを維持することもできる。消去ブロックによっては、単一のRA
ID5パリティの代わりに、消去ブロックの最後にダブル又トリプルエラー訂正パリティ
を保持することを決定できるものもある。この場合、これに応じてsegioのデータペ
イロードを低減することができる。全ての消去ブロックではなく、segio内の不良な
消去ブロックのみを低減することが必要となり得る。消去ブロック内のページヘッダを使
用して、いずれのページがパリティであり、いずれのページがデータであるかを識別する
ことができる。
ストレージからページが読み込まれる時には常に、ページチェックサムを使用してコン
テンツを検証することができる。この検証がうまくいかなかった場合、消去ブロックパリ
ティを使用してデータの再生を試みることができる。これがうまくいかなかった場合、セ
グメントのデバイス間ECCを使用してデータを再構成することができる。
データセグメントでは、ペイロード領域を2つの領域に分割することができる。記憶さ
れたクライアントブロックに関する最新情報を含むことができるログデータとしてフォー
マットされたページが存在するようになる。ペイロード領域の残りは、クライアントブロ
ックとしてフォーマットされたページを含むことができる。このクライアントブロックデ
ータは、圧縮された形で記憶することができる。数多くの圧縮アルゴリズムが可能であり
、企図される。また、様々な実施形態では、Intel(登録商標)高度暗号化標準命令
を使用してチェックサムを生成することができる。また、データと同じページ内に存在し
て、データの圧縮に使用するアルゴリズムの識別などの、クライアントブロックを読み込
むために必要な情報を含むクライアントブロックのヘッダも存在することができる。ガベ
ージコレクションは、segio内のクライアントブロックヘッダ及びログエントリの両
方を利用することができる。また、クライアントブロックは、重複除外、及び解凍データ
の正しさをチェックするために使用される未圧縮データのチェックサムとすることができ
るデータハッシュを有することができる。
いくつかの実施形態では、セグメント及びsegioが、これらを順序付けるために使
用される単調増加するID番号を有することができる。segioへの書き込みの一部と
して、論理層が、以前のフラッシュに対する依存を記録することができる。起動時には、
物理層が、セグメント及びsegiosの順序付きリストを構築することができ、seg
ioが別の未完成のsegioに依存している場合、これをロールバックして書き込まれ
ていないと見なすことができる。
摩耗率テーブル
各デバイスのローカルなセグメントには、各デバイスの摩耗率テーブル(WLT)を記
憶することができる。この情報を、各セグメントシャードのヘッダに記憶することもでき
る。1つの実施形態では、摩耗情報が、アロケーションユニットが消去及び再利用された
回数を表す整数である。摩耗情報は正確でない場合もあるので、一定量の行動が行われた
場合、又は相当期間にわたってシステムがアイドルであった場合に、デバイスに対するテ
ーブルのフラッシュを行なうことができる。WLTは、新たなWLTセグメントを割り当
てる際に古いWLTセグメントをクリーニングすることに関与することもできる。追加の
保護層を加えるために、古いコピーを解放する前にこれらを維持することができる。例え
ば、テーブルマネージャが、WLTエントリの以前の消去ブロック及び現在の消去ブロッ
クを常に保持し、新たなセグメントを割り当てる場合には、この新たなセグメントの第2
の消去ブロックに書き込みを行うまで古いセグメントを解放しないように保証する。
AU状態テーブル
AU状態テーブル(AST)は、各AUの状態を追跡する。この状態には、空き、割り
当て済み、消去済み、及び不良がある。このASTを、デバイス上のセグメントに記憶す
ることができる。割り当て済み又は空きへの状態変更は同期更新とすることができ、不良
又は消去済みへの状態変更は非同期更新とすることができる。一般に、このテーブルは十
分に小さく、NVRAMに記録できるだけの十分な更新を有することができる。ASTは
、新たなセグメントを割り当てる際に古いWLTセグメントをクリーニングすることに関
与することができる。ASTは、ドライブ上の各AUの第1のブロックをスキャンするこ
とによって完全に回復できるので、古いASTのコピーを保持する必要はない。
AUエラーテーブル
AUエラーテーブル(AET)を使用して、各AU内の回復可能エラー及び回復不能エ
ラーの数を追跡することができる。AETは、デバイス上のセグメントに記憶され、各フ
ィールドは、2バイトの整数とすることができる。このテーブル全体は、AU当たり4バ
イトの比較的小さなものとすることができる。
ここで図11Cを参照すると、異なるページタイプ内のデータストレージ構成の1つの
実施形態を示す汎用ブロック図を示している。図示の実施形態では3つのページタイプを
示しているが、他のタイプも可能であり、企図される。図示のページタイプは、メタデー
タ1150を含むページ1110、ユーザデータ1160を含むページ1120、及びパ
リティ情報1170(デバイス間又はデバイス内)を含むページ1130を含む。ページ
1110〜1130の各々は、ヘッダ及び識別情報を含むことができるメタデータ114
0を含む。また、1110〜1130ページの各々は、対応するチェックサム又はその他
のエラー検出及び/又は訂正符号などのページ内エラー回復データ1142を含むことが
できる。このチェックサム値により、所与のデバイスグループ内のストレージデバイス1
76a〜176kに記憶されたデータをさらに保護することができる。
さらに、ページ1130は、ページ間エラー回復データ1144を含むことができる。
このデータ1144は、他のストレージデバイスに記憶されたページ内データ1142か
ら導出されたECC情報とすることができる。例えば、再び図10を参照すると、デバイ
ス間パリティ情報240を記憶するストレージデバイス176j内の各ページが、ページ
間エラー回復データ1144を記憶することもできる。データ1144は、パリティ、チ
ェックサム、又はストレージデバイス176a〜176iの1又はそれ以上に記憶された
ページ内エラー回復データ1142から生成されたその他の値とすることもできる。1つ
の実施形態では、データ1144が、他のストレージデバイスに記憶された1又はそれ以
上の他のチェックサム値1142から生成されたチェックサム値である。ストレージデバ
イス176jの所与のページ内のデータ1144を、ストレージデバイス176a〜17
6iの1又はそれ以上の対応するページ内のデータ1142と位置合わせするために、対
応するページにパディング1146を追加することができる。
1つの実施形態では、エンドユーザアプリケーションが、HDDでは512バイトのセ
クタの境界上でI/O動作を実行する。追加の保護を加えるために、8バイトのチェック
サムを加えて520バイトのセクタを形成することができる。様々な実施形態では、フラ
ッシュメモリベースのシステム内で圧縮及びリマッピングを行って、セクタ境界ではなく
バイト境界上にユーザデータを配置可能にすることができる。また、ヘッダの後であって
ユーザデータの前のページ内にチェックサム(8バイト又は4バイトなど)を配置して、
これを圧縮することができる。ページ1110〜1130の各々には、この配置を示して
いる。
エンドユーザアプリケーションが512バイトのセクタを読み込む場合、1つの実施形
態では2KB〜8KBのサイズの対応するページが、ページの最初に8バイトのチェック
サムによる追加の保護を有する。様々な実施形態では、2セクタサイズの非電力のために
このページをフォーマットしなくてもよい。ページ1110〜1120に示すように、チ
ェックサムをページ内に2、3バイトオフセットさせることができる。このオフセットに
より、ページ1130などのパリティページが、パリティページをカバーするチェックサ
ム、及び他のページのチェックサムを保護するためのECCを記憶できるようになる。
さらに別の保護レベルでは、チェックサム値を計算する際にデータ位置情報を含めるこ
とができる。ページ1110〜1130の各々におけるデータ1142は、この情報を含
むことができる。この情報は、論理アドレス及び物理アドレスの両方を含むことができる
。この情報には、セクタ番号、データチャンク及びオフセット番号、トラック番号、平面
番号などを含めることもできる。
代替の構成
ここで図12を参照すると、ハイブリッドRAIDデータレイアウト1200の1つの
実施形態を示す汎用ブロック図を示している。3つの区分を示しているが、あらゆる数の
区分を選択することができる。各区分は、図1に示すデバイスグループ713a〜173
bなどの別個のデバイスグループに対応することができる。各区分は、複数のストレージ
デバイスを含む。1つの実施形態では、CRUSHアルゴリズムなどのアルゴリズムを利
用して、データストレージに使用すべきRAIDデータレイアウトアーキテクチャにおい
ていずれのデバイスを使用すべきかを選択することができる。
図示の例には、L+1のRAIDアレイ、M+1のRAIDアレイ及びN+1のRAI
Dアレイを示している。様々な実施形態では、L、M及びNが全て異なってもよく、同じ
であってもよく、又はこれらの組み合わせであってもよい。例えば、区分1にRAIDア
レイ1210を示している。他のストレージデバイス1212は、区分1内の他のRAI
Dアレイの候補である。同様に、RAIDアレイ1220は、区分2内の所与のRAID
アレイを示す。他のストレージデバイス1222は、区分2内の他のRAIDアレイの候
補である。RAIDアレイ1230は、区分3内の所与のRAIDアレイを示す。他のス
トレージデバイス1232は、区分3内の他のRAIDアレイの候補である。
RAIDアレイ1210、1220及び1230の各々では、ストレージデバイスP1
が、それぞれのRAIDアレイ内のRAIDシングルパリティ保護を行う。ストレージデ
バイスD1〜DNは、それぞれのRAIDアレイ内のユーザデータを記憶する。この場合
も、ストレージデバイスD1〜DNとP1の間で、ユーザデータ及びRAIDシングルパ
リティ情報の記憶を循環させることができる。しかしながら、デバイスD1〜DNにユー
ザデータが記憶されたものとして説明する。同様に、図示及び説明を容易にするために、
デバイスP1にRAIDシングルパリティ情報が記憶されたものとして説明する。
1又はそれ以上の所与のRAIDアレイに対してさらなる量の冗長性をサポートするた
めに、3つの区分の各々のうちの1又はそれ以上のストレージデバイスを選択することが
できる。例えば、区分3内のストレージデバイスQ1を、RAIDアレイ1210、12
20及び1230の各々と組み合わせることができる。ストレージデバイスQ1は、RA
IDアレイ1210、1220及び1230の各々にRAIDダブルパリティ情報を提供
することができる。この追加のパリティ情報は、アレイ1210、1220又は1230
の1つにストライプが書き込まれた時に生成され記憶される。さらに、この追加のパリテ
ィ情報は、アレイ1210、1220及び1230の各々のストライプをカバーすること
ができる。従って、総ストレージデバイス数に対するRAIDパリティ情報を記憶するス
トレージデバイスの数の比率が小さくなる。例えば、区分の各々がN+2のRAIDアレ
イを使用する場合、総ストレージデバイス数に対するRAIDパリティ情報を記憶するス
トレージデバイスの数の比率は、3(2)/(3(N+2))、すなわち2/N+2であ
る。対照的に、ハイブリッドRAIDレイアウト1200の比率は、(3+1)/(3(
N+1))、すなわち4/(3(N+1))である。
ユーザデータの記憶に使用するストレージデバイスの数を増やすことにより、上記の比
率を低減することが可能である。例えば、ストレージデバイスQ1を利用するのではなく
、区分の各々が3N+2のRAIDアレイを利用するようにすることができる。このよう
な場合、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレージデ
バイスの数の比率は、2/(3N+2)である。しかしながら、再構成読み込み動作中に
は、単一のデバイス故障のための再構成読み込み要求を(3N+1)個のストレージデバ
イスが受け取る。対照的に、ハイブリッドRAIDレイアウト1200では、単一のデバ
イス故障のための再構成読み込み要求をN個のストレージデバイスしか受け取らない。
なお、3つの区分の各々は、異なるRAIDデータレイアウトアーキテクチャを利用す
ることができる。所与のRAIDデータレイアウトアーキテクチャの選択は、総ストレー
ジデバイス数に対するRAIDパリティ情報を記憶するストレージデバイスの数の所与の
比率に基づくことができる。また、この選択は、再構成中に再構成読み込み要求を受け取
ることができる所与のストレージデバイス数に基づくこともできる。例えば、RAIDア
レイ1210、1220及び1230は、L+a、M+b及びN+cなどの構成をそれぞ
れ含むことができる。
区分内のRAIDアレイの1又はそれ以上に対してさらなる量の冗長性をサポートする
ために、上記の又はその他の条件に基づいてストレージデバイスQ1などの1又はそれ以
上のストレージデバイスを選択することができる。上記のRAIDアレイ及びこれらのR
AIDアレイの各々に対して追加の保護を行うストレージデバイスの数Qを含む3つの区
分の例では、総ストレージデバイス数に対するRAIDパリティ情報を記憶するストレー
ジデバイスの数の比率は、(a+b+c+Q)/(L+a+M+b+N+c+Q)である
。単一のデバイス故障の場合、上記の例における区分1〜3では、再構成読み込み要求を
受け取るストレージデバイスの数は、それぞれL、M及びNである。なお、一般に上記の
説明は、図12の3つの異なる区分について行ったものである。このような実施形態では
、所与のレイアウトが特定のデバイスグループに制限されるこの種の「ハード」区分が、
1つの区分内の再構成読み込みが別の区分の再構成読み込みと衝突しないことを保証する
ことができる。しかしながら、他の実施形態では、区分が、上述したようなハードではな
いこともある。むしろ、デバイスのプールを考えた場合、これらのデバイスのいずれから
もレイアウトを選択することができる。例えば、デバイスを大きなプールとして扱う場合
、(L+1、M+1、N+1)+1などのレイアウトを構成することが可能である。従っ
て、構成が重複し、再構成読み込みが衝突しかねない可能性がある。プールのサイズに対
してL、M及びNが小さい場合、通常の読み込みに対する再構成読み込みの割合を低く保
つことができる。
ここで図13を参照すると、データストレージサブシステムにおいて代替のRAID構
成を選択する方法1300の1つの実施形態を示している。一般に、ネットワークアーキ
テクチャ100及びデータストレージアレイ120a〜120b内で具体化される構成要
素は、方法1300に従って動作することができる。この実施形態のステップを順番に示
す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができ
るもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、
及び別の実施形態には存在しないものもある。
ブロック1302において、ストレージコントローラ174内のRAIDエンジン17
8又はその他のロジックが、所与の数のデバイスを使用して、ストレージサブシステムの
各区分内のRAIDアレイにユーザデータを記憶すると決定する。その後、RUSH又は
その他のアルゴリズムを使用して、いずれのデバイスを使用すべきかを選択することがで
きる。1つの実施形態では、各区分が、同じ数のストレージデバイスを利用する。他の実
施形態では、各区分が、異なる固有の数のストレージデバイスを利用してユーザデータを
記憶することができる。ブロック1304において、ストレージコントローラ174が、
いくつかのストレージデバイスがサブシステムの各区分内に対応するデバイス間エラー回
復(パリティ)データを記憶するのをサポートすると決定することができる。この場合も
、各区分は、同じ数又は異なる固有の数のストレージデバイスを利用してRAIDパリテ
ィ情報を記憶することができる。
ブロック1306において、ストレージコントローラは、Q個のストレージデバイスが
追加のデバイス間エラー回復(パリティ)データをサブシステムの区分にわたって記憶す
るのをサポートすると決定することができる。ブロック1308において、選択したスト
レージデバイスに、ユーザデータ及び対応するRAIDパリティデータを書き込むことが
できる。再び図12を参照すると、区分1のRAIDアレイ1210などの所与のRAI
Dアレイに書き込みが行われた時に、1又はそれ以上のビットのパリティ情報を生成して
、区分3のストレージデバイスQ1に記憶することができる。
ストレージコントローラ174が、所与の区分内で読み込み再構成を行う状態を検出し
た(条件付きブロック1310)場合、及び所与の区分が、RAIDパリティ情報を保持
しているストレージデバイスを、いくつかの利用できないストレージデバイスを処理する
のに十分な数だけ有している(条件付きブロック1312)場合、ブロック1314にお
いて、この所与の区分内の1又はそれ以上の対応するストレージデバイスを使用して(単
複の)再構成読み込み動作を行う。この状態は、デバイス故障によって所与のRAIDア
レイ内のストレージデバイスを利用できないこと、又はこれらのデバイスが所与のパフォ
ーマンスレベル未満で動作していることを含むことができる。この所与のRAIDアレイ
は、所与の区分内のRAIDパリティ情報を記憶している数のストレージデバイスを使用
して、最大数の利用できないストレージデバイスを処理することができる。例えば、上記
の例の区分1のRAIDアレイ1210がL+aのRAIDアレイである場合、このRA
IDアレイ1210は、1<=k<=aとするk個のストレージデバイスが利用できない
場合に、区分1内のストレージデバイスのみを利用して読み込み再構成を行うことができ
る。
所与の区分が、RAIDパリティ情報を保持しているストレージデバイスを、いくつか
の利用できないストレージデバイスを処理するのに十分な数だけ有していない(条件付き
ブロック1312)場合、及びこのいくつかの利用できないストレージデバイスを処理す
るのに十分なQ個のストレージデバイスが存在する(条件付きブロック1316)場合、
ブロック1318において、1又はそれ以上の対応するQ個のストレージデバイスを使用
して再構成読み込み動作を行う。読み込み再構成中には、ユーザデータを記憶している他
の区分内の1又はそれ以上のストレージデバイスにアクセスすることができる。これらの
ストレージデバイスの選択は、1又はそれ以上のQ個のストレージデバイスに記憶された
パリティ情報の導出方法に基づくことができる。例えば、再び図12を参照すると、スト
レージデバイスQ1に記憶された対応するRAIDパリティ情報を生成するために使用さ
れた可能性があるという理由で、読み込み再構成中に区分2のストレージデバイスD2に
アクセスすることができる。いくつかの利用できないストレージデバイスを処理するのに
十分な数のQ個のストレージデバイスが存在しない場合(条件付きブロック1316)、
ブロック1320において、対応するユーザデータを別のソースから読み込むことができ
、又はこれらのユーザデータを失われたものと見なすことができる。
なお、上述の実施形態は、ソフトウェアを含むことができる。このような実施形態では
、方法及び/又は機構を実装するプログラム命令をコンピュータ可読媒体で搬送し、又は
これに記憶することができる。プログラム命令を記憶するように構成された数多くのタイ
プの媒体が利用可能であり、これらは、ハードディスク、フロッピー(登録商標)ディス
ク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ラ
ンダムアクセスメモリ(RAM)及び他の様々な形態の揮発性又は不揮発性ストレージを
含む。
様々な実施形態では、本明細書で説明した方法及び機構の1又はそれ以上の部分が、ク
ラウドコンピューティング環境の一部を成すことができる。このような実施形態では、1
又はそれ以上の様々なモデルにより、インターネットを介してリソースをサービスとして
提供することができる。このようなモデルとして、インフラストラクチャ・アズ・ア・サ
ービス(IaaS)、プラットホーム・アズ・ア・サービス(PaaS)、及びソフトウ
ェア・アズ・ア・サービス(SaaS)を挙げることができる。IaaSでは、コンピュ
ータインフラストラクチャがサービスとして配信される。このような場合、一般にサービ
スプロバイダがコンピュータ設備を所有し運営する。PaaSモデルでは、開発者がソフ
トウェアソリューションを開発するために使用するソフトウェアツール及び基本設備をサ
ービスプロバイダがサービスとして供給しホストすることができる。通常、SaaSは、
サービスプロバイダのライセンスソフトウェアをサービスオンデマンドとして含む。サー
ビスプロバイダは、このソフトウェアをホストすることができ、又はこのソフトウェアを
一定期間にわたって顧客に展開することができる。上記のモデルの数多くの組み合わせが
可能であり、企図される。
以上、実施形態についてかなり詳細に説明したが、上記開示を完全に理解すると、当業
者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このよ
うな変形及び修正を全て含むと解釈すべきであることが意図される。

Claims (18)

  1. 独立ディスク冗長アレイ(RAID)における複数のストレージデバイスを備えたデータストレージサブシステムと、ストレージコントローラを備え、
    前記ストレージコントローラは、
    第1のRAIDストライプを、前記複数のストレージデバイスに書き込むように構成され、前記複数のストレージデバイスの特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データの第1の量を配置することを含み、
    第2のRAIDストライプを、前記複数のストレージデバイスに書き込むように構成され、前記特定のストレージデバイスのエラー率の増加の予測に応答して、前記特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データの第2の量を配置することを含み、前記デバイス内保護データの第2の量は、前記デバイス内保護データの第1の量より多い
    ことを特徴とするコンピュータシステム。
  2. 前記ストレージコントローラは、
    前記第2のRAIDストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択するように更に構成され、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、
    前記第2のRAIDストライプを、前記サブセットに書き込むように構成され、前記ストレージデバイスのサブセットの第1のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第2のストレージデバイスのデータ内保護データの量と異なることを特徴とする請求項1に記載のコンピュータシステム。
  3. 前記第1のRAIDストライプは、L+xのレイアウトである第1のRAIDレイアウトを有し、前記第2のRAIDストライプは、M+yのレイアウトである第2のRAIDレイアウトを有し、L、x、M及びyは整数であり、(1)LはMに等しくない、及び(2)xはyに等しくない、のいずれか又は両方である、
    ことを特徴とする請求項に記載のコンピュータシステム。
  4. 前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、L、x、M及びyのうちの1又はそれ以上を変更するように更に構成され、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの1又はそれ以上である、
    ことを特徴とする請求項3に記載のコンピュータシステム。
  5. 前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
    ことを特徴とする請求項1に記載のコンピュータシステム。
  6. 前記複数のストレージデバイスの少なくとももう1つのストレージデバイスは、前記特定のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項1に記載のコンピュータシステム。
  7. データストレージサブシステムにおいて独立ディスク冗長アレイ(RAID)における複数のストレージデバイスを構成する方法であって、前記方法は、
    ストレージコントローラが、
    第1のRAIDストライプを、前記複数のストレージデバイスに書き込むことを含み、前記複数のストレージデバイスの特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データの第1の量を配置することを含み
    第2のRAIDストライプを、前記複数のストレージデバイスに書き込むことを含み、前記特定のストレージデバイスのエラー率の増加の予測に応答して、前記特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データの第2の量を配置することを含み、前記デバイス内保護データの第2の量は、前記デバイス内保護データの第1の量より多い
    方法。
  8. 前記方法は、
    前記ストレージコントローラが、
    前記第2のRAIDストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択することをさらに含み、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、前記第2のRAIDストライプを、前記サブセットに書き込むことを含み、前記ストレージデバイスのサブセットの第1のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第2のストレージデバイスのデータ内保護データの量と異なることを特徴とする請求項に記載の方法。
  9. 前記第1のRAIDストライプは、L+xのレイアウトである第1のRAIDレイアウトを有し、前記第2のRAIDストライプは、M+yのレイアウトである第2のRAIDレイアウトを有し、L、x、M及びyは整数であり、(1)LはMに等しくない、及び(2)xはyに等しくない、のいずれか又は両方である、
    ことを特徴とする請求項に記載の方法。
  10. 前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、L、x、M及びyのうちの1又はそれ以上を変更することを更に含み、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの1又はそれ以上である、
    ことを特徴とする請求項に記載の方法。
  11. 前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
    ことを特徴とする請求項に記載の方法。
  12. 前記複数のストレージデバイスの少なくとももう1つのストレージデバイスは、前記特定のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項に記載の方法。
  13. データストレージサブシステムにおいて独立ディスク冗長アレイ(RAID)における複数のストレージデバイスを構成するためのプログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は、
    ストレージコントローラに、
    第1のRAIDストライプを、前記複数のストレージデバイスに書き込むことを実行させ、前記複数のストレージデバイスの特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第1のRAIDストライプの第1のRAIDデータを保護するためのデバイス内保護データの第1の量を配置することを含み
    第2のRAIDストライプを、前記複数のストレージデバイスに書き込むことを実行させ、前記特定のストレージデバイスのエラー率の増加の予測に応答して、前記特定のストレージデバイスに、前記特定のストレージデバイスに保存された前記第2のRAIDストライプの第2のRAIDデータを保護するためのデバイス内保護データの第2の量を配置することを含み、前記デバイス内保護データの第2の量は、前記デバイス内保護データの第1の量より多い
    ことを特徴とするコンピュータ可読記憶媒体。
  14. コンピュータプログラム命令は、更に、
    前記ストレージコントローラに、
    前記第2のRAIDストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択することを実行させ、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、前記第2のRAIDストライプを、前記サブセットに書き込むことが可能であり、前記ストレージデバイスのサブセットの第1のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第2のストレージデバイスのデータ内保護データの量と異なること、
    を特徴とする請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記第1のRAIDストライプは、L+xのレイアウトである第1のRAIDレイアウトを有し、前記第2のRAIDストライプは、M+yのレイアウトである第2のRAIDレイアウトを有し、L、x、M及びyは整数であり、(1)LはMに等しくない、及び(2)xはyに等しくない、のいずれか又は両方である、
    ことを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
  16. 前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、L、x、M及びyのうちの1又はそれ以上を変更するように更に構成され、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの1又はそれ以上である、
    ことを特徴とする請求項15に記載のコンピュータ可読記憶媒体。
  17. 前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
    ことを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
  18. 前記複数のストレージデバイスの少なくとももう1つのストレージデバイスは、前記特定のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
JP2016096285A 2010-10-01 2016-05-12 動的構成のraidアレイにおける再構成読み込み Active JP6247334B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/896,669 US9229808B2 (en) 2010-10-01 2010-10-01 Reconstruct reads in a raid array with dynamic geometries
US12/896,669 2010-10-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013531648A Division JP5937599B2 (ja) 2010-10-01 2011-09-20 動的構成のraidアレイにおける再構成読み込み

Publications (2)

Publication Number Publication Date
JP2016184413A JP2016184413A (ja) 2016-10-20
JP6247334B2 true JP6247334B2 (ja) 2017-12-13

Family

ID=44720170

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013531648A Active JP5937599B2 (ja) 2010-10-01 2011-09-20 動的構成のraidアレイにおける再構成読み込み
JP2016096285A Active JP6247334B2 (ja) 2010-10-01 2016-05-12 動的構成のraidアレイにおける再構成読み込み

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013531648A Active JP5937599B2 (ja) 2010-10-01 2011-09-20 動的構成のraidアレイにおける再構成読み込み

Country Status (6)

Country Link
US (2) US9229808B2 (ja)
EP (1) EP2622477A1 (ja)
JP (2) JP5937599B2 (ja)
KR (1) KR101824286B1 (ja)
CN (1) CN103314361B (ja)
WO (1) WO2012044492A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9128910B1 (en) * 2011-03-16 2015-09-08 Tintri Inc. Avoiding long access latencies in redundant storage systems
US10489412B2 (en) * 2012-03-29 2019-11-26 Hitachi Vantara Corporation Highly available search index with storage node addition and removal
US9372726B2 (en) 2013-01-09 2016-06-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US9092310B2 (en) 2013-03-15 2015-07-28 Seagate Technology Llc Host command based read disturb methodology
US9153347B2 (en) * 2013-12-06 2015-10-06 Feiyue Xu Method and system for reliable big capacity storage system protected by triple protection
KR102318478B1 (ko) * 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US9990263B1 (en) * 2015-03-20 2018-06-05 Tintri Inc. Efficient use of spare device(s) associated with a group of devices
EP3281108A1 (en) 2015-04-08 2018-02-14 Tintri Inc. Native storage quality of service for virtual machines
US10649850B1 (en) * 2015-06-29 2020-05-12 Amazon Technologies, Inc. Heterogenous media storage and organization in automated data storage systems
US10838911B1 (en) 2015-12-14 2020-11-17 Amazon Technologies, Inc. Optimization of data request processing for data storage systems
CN106933490A (zh) 2015-12-29 2017-07-07 伊姆西公司 控制对磁盘阵列进行读写操作的方法和装置
CN108228086B (zh) * 2016-12-21 2021-07-16 伊姆西Ip控股有限责任公司 Raid重建的方法和设备
CN110383251B (zh) * 2017-03-28 2023-04-07 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN110096217B (zh) * 2018-01-31 2022-05-27 伊姆西Ip控股有限责任公司 用于重新定位数据的方法、数据存储系统和介质
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11403189B2 (en) * 2020-05-08 2022-08-02 Vmware, Inc. System and method of resyncing data in erasure-coded objects on distributed storage systems without requiring checksum in the underlying storage
US11379318B2 (en) 2020-05-08 2022-07-05 Vmware, Inc. System and method of resyncing n-way mirrored metadata on distributed storage systems without requiring checksum in the underlying storage
US11429498B2 (en) 2020-05-08 2022-08-30 Vmware, Inc. System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout
US11182250B1 (en) * 2020-07-02 2021-11-23 Vmware, Inc. Systems and methods of resyncing data in erasure-coded objects with multiple failures
US11494090B2 (en) 2020-09-25 2022-11-08 Vmware, Inc. Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11861231B2 (en) 2021-12-16 2024-01-02 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11940911B2 (en) 2021-12-17 2024-03-26 Netapp, Inc. Persistent key-value store and journaling system

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3681766B2 (ja) 1994-01-10 2005-08-10 富士通株式会社 ディスクアレイ装置
JPH07261945A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd ディスクアレイ装置およびディスクアレイの区分け方法
US5657439A (en) 1994-08-23 1997-08-12 International Business Machines Corporation Distributed subsystem sparing
US5497457A (en) * 1994-10-17 1996-03-05 International Business Machines Corporation Redundant arrays of independent libraries of dismountable media with parity logging
US5651133A (en) * 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5822782A (en) 1995-10-27 1998-10-13 Symbios, Inc. Methods and structure to maintain raid configuration information on disks of the array
US6311251B1 (en) * 1998-11-23 2001-10-30 Storage Technology Corporation System for optimizing data storage in a RAID system
US6321345B1 (en) * 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
US6275898B1 (en) 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6681290B2 (en) 2001-01-29 2004-01-20 International Business Machines Corporation Physical data layout to reduce seeks in a raid system
US6854071B2 (en) 2001-05-14 2005-02-08 International Business Machines Corporation Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US6851082B1 (en) * 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US6883065B1 (en) * 2001-11-15 2005-04-19 Xiotech Corporation System and method for a redundant communication channel via storage area network back-end
US7111117B2 (en) 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US7315976B2 (en) * 2002-01-31 2008-01-01 Lsi Logic Corporation Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US7080278B1 (en) * 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US6938123B2 (en) 2002-07-19 2005-08-30 Storage Technology Corporation System and method for raid striping
US7383379B2 (en) * 2002-08-07 2008-06-03 Hewlett-Packard Development Company, L.P. Manipulating data in a data storage device using an auxiliary memory device
JP3824317B2 (ja) * 2003-06-24 2006-09-20 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ、コンピュータ装置、データ処理方法及びプログラム
GB0320494D0 (en) 2003-09-02 2003-10-01 Ibm Methods apparatus and controllers for a raid storage system
US7206991B2 (en) 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
US8645622B2 (en) * 2003-11-18 2014-02-04 International Business Machines Corporation Method to protect data on a disk drive from uncorrectable media errors
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7681072B1 (en) 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
US7263583B2 (en) * 2004-10-05 2007-08-28 International Business Machines Corporation On demand, non-capacity based process, apparatus and computer program to determine maintenance fees for disk data storage system
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
JP4324088B2 (ja) 2004-12-17 2009-09-02 富士通株式会社 データ複製制御装置
US7484137B2 (en) 2005-03-31 2009-01-27 Hitachi Global Storage Technologies Netherlands B.V. RAID system using regional error statistics for redundancy grouping
US7370175B2 (en) * 2006-03-31 2008-05-06 Intel Corporation System, method, and apparatus to aggregate heterogeneous RAID sets
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US7669008B2 (en) * 2007-02-09 2010-02-23 International Business Machines Corporation Destage management of redundant data copies
US7904782B2 (en) * 2007-03-09 2011-03-08 Microsoft Corporation Multiple protection group codes having maximally recoverable property
US7979773B2 (en) * 2007-03-13 2011-07-12 Summit Data Systems Llc RAID array auto-initialization (RAAI)
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
JP2009037304A (ja) * 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8799681B1 (en) * 2007-12-27 2014-08-05 Emc Corporation Redundant array of encrypting disks
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8171379B2 (en) 2008-02-18 2012-05-01 Dell Products L.P. Methods, systems and media for data recovery using global parity for multiple independent RAID levels
JP4862847B2 (ja) * 2008-03-07 2012-01-25 日本電気株式会社 ディスクアレイのデータ復旧方法、ディスクアレイシステム及び制御プログラム
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US20100241923A1 (en) * 2009-03-17 2010-09-23 Broadcom Corporation Communication device employing LDPC (Low Density Parity Check) coding with Reed-Solomon (RS) and/or binary product coding
JP5538362B2 (ja) 2009-03-18 2014-07-02 株式会社日立製作所 記憶制御装置及び仮想ボリュームの制御方法
US8037391B1 (en) 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
CN101727299B (zh) * 2010-02-08 2011-06-29 北京同有飞骥科技股份有限公司 连续数据存储中面向raid5的写操作优化设计方法
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment

Also Published As

Publication number Publication date
JP5937599B2 (ja) 2016-06-22
US9229808B2 (en) 2016-01-05
KR20130114668A (ko) 2013-10-17
CN103314361B (zh) 2016-06-01
JP2016184413A (ja) 2016-10-20
KR101824286B1 (ko) 2018-01-31
US20120084505A1 (en) 2012-04-05
EP2622477A1 (en) 2013-08-07
JP2013539134A (ja) 2013-10-17
WO2012044492A1 (en) 2012-04-05
USRE48222E1 (en) 2020-09-22
CN103314361A (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
JP6247334B2 (ja) 動的構成のraidアレイにおける再構成読み込み
JP6307537B2 (ja) Ssd環境のための適応的raid
US11579974B1 (en) Data protection using intra-device parity and intra-device parity
US20210173741A1 (en) Distributed multi-level protection in a hyper-converged infrastructure
JP5848353B2 (ja) Raidアレイにおけるデバイス内データ保護
US20120084504A1 (en) Dynamic raid geometries in an ssd environment
US20120084507A1 (en) Multi-level protection with intra-device protection in a raid array based storage system
US20240354193A1 (en) Managing Redundancy Levels For Storage Devices During Initial Operation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170808

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171116

R150 Certificate of patent or registration of utility model

Ref document number: 6247334

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250