(57)【要約】      （修正有）【課題】動的ＲＡＩＤ構成のためのシステム及び方法を提供する。【解決手段】ストレージコントローラが、ストレージデバイスの第１のサブセットを、第１の冗長データセットを含む第１のＲＡＩＤレイアウトで使用するように構成する。さらに、第２のサブセットを、第２の冗長データセットを含む第２のＲＡＩＤレイアウトで使用するように構成する。第１のサブセット又は第２のサブセットのいずれにも含まれていない追加のデバイスを、第１のＲＡＩＤレイアウト及び第２のＲＡＩＤレイアウトの両方のための冗長データを記憶するように構成する。特定のストレージデバイスが非エラー関する相対的に遅い読み込み応答を示していると判断したことに応答して、複数のストレージデバイスのうちの特定のストレージデバイスを対象とする所与の読み込み要求に対応する再構成読み込みを開始するようにさらに構成される。【選択図】図１３
2016184413.tif 000002
【特許請求の範囲】
【請求項１】
独立ディスク冗長アレイ（ＲＡＩＤ）における複数のストレージデバイスを備えたデータストレージサブシステムと、ストレージコントローラを備え、
前記ストレージコントローラは、
第１のＲＡＩＤストライプを、前記複数のストレージデバイスに書き込むように構成され、前記複数のストレージデバイスのストレージデバイスに、前記ストレージデバイスに保存された前記第１のＲＡＩＤストライプの第１のＲＡＩＤデータを保護するためのデバイス内保護データの第１の量を配置することを含み、第１のストレージデバイスのデータ内保護データの量は、第２のストレージデバイスのデータ内保護データの量と異なり、
第１のストレージデバイスのエラー率の増加の予測に応答する第２のストレージデバイスより多くの第１のＲＡＩＤストライプのデバイス内冗長データを記録するよう構成されることを特徴とするコンピュータシステム。
【請求項２】
前記ストレージコントローラは、
第２のＲＡＩＤストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択するように更に構成され、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、  第２のＲＡＩＤストライプを、前記サブセットに書き込むように構成され、前記ストレージデバイスのそれぞれに、前記ストレージデバイスに保存された前記ＲＡＩＤストライプのＲＡＩＤデータを保護するためのデバイス内保護データの量を配置することを含み、
前記ストレージデバイスのサブセットの第１のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第２のストレージデバイスのデータ内保護データの量と異なることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記第１のＲＡＩＤストライプは、Ｌ＋ｘのレイアウトである第１のＲＡＩＤレイアウトを有し、前記第２のＲＡＩＤストライプは、Ｍ＋ｙのレイアウトである第２のＲＡＩＤレイアウトを有し、Ｌ、ｘ、Ｍ及びｙは整数であり、（１）ＬはＭに等しくない、及び（２）ｘはｙに等しくない、のいずれか又は両方である、
ことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、Ｌ、ｘ、Ｍ及びｙのうちの１又はそれ以上を変更するように更に構成され、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの１又はそれ以上である、
ことを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記複数のストレージデバイスの少なくとももう１つのストレージデバイスは、前記第１のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記複数のストレージデバイスの少なくとももう１つのストレージデバイスは、前記第２のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
独立ディスク冗長アレイ（ＲＡＩＤ）における複数のストレージデバイス構成を構成する方法であって、前記方法は、
第１のＲＡＩＤストライプを、前記複数のストレージデバイスに書き込むように構成され、前記複数のストレージデバイスのストレージデバイスに、前記ストレージデバイスに保存された前記第１のＲＡＩＤストライプの第１のＲＡＩＤデータを保護するためのデバイス内保護データの第１の量を配置することを含み、第１のストレージデバイスのデータ内保護データの量は、第２のストレージデバイスのデータ内保護データの量と異なり、
第１のストレージデバイスのエラー率の増加の予測に応答する第２のストレージデバイスより多くの第１のＲＡＩＤストライプのデバイス内冗長データを記録することを含む方法。
【請求項９】
前記方法は、
第２のＲＡＩＤストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択すること、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、
第２のＲＡＩＤストライプを、前記サブセットに書き込み、前記ストレージデバイスのそれぞれに、前記ストレージデバイスに保存された前記ＲＡＩＤストライプのＲＡＩＤデータを保護するためのデバイス内保護データの量を配置することを含み、
前記ストレージデバイスのサブセットの第１のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第２のストレージデバイスのデータ内保護データの量と異なることを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１のＲＡＩＤストライプは、Ｌ＋ｘのレイアウトである第１のＲＡＩＤレイアウトを有し、前記第２のＲＡＩＤストライプは、Ｍ＋ｙのレイアウトである第２のＲＡＩＤレイアウトを有し、Ｌ、ｘ、Ｍ及びｙは整数であり、（１）ＬはＭに等しくない、及び（２）ｘはｙに等しくない、のいずれか又は両方である、
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、Ｌ、ｘ、Ｍ及びｙのうちの１又はそれ以上を変更するように更に構成され、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの１又はそれ以上である、
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
ことを特徴とする請求項８に記載の方法。
【請求項１３】
前記複数のストレージデバイスの少なくとももう１つのストレージデバイスは、前記第１のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項８に記載の方法。
【請求項１４】
前記複数のストレージデバイスの少なくとももう１つのストレージデバイスは、前記第２のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項８に記載の方法。
【請求項１５】
独立ディスク冗長アレイ（ＲＡＩＤ）における複数のストレージデバイスを構成ためのプログラム命令を記憶する持続性コンピュータ可読記憶媒体であって、前記プログラム命令は、
第１のＲＡＩＤストライプを、前記複数のストレージデバイスに書き込むこと、前記複数のストレージデバイスのストレージデバイスに、前記ストレージデバイスに保存された前記第１のＲＡＩＤストライプの第１のＲＡＩＤデータを保護するためのデバイス内保護データの第１の量を配置することを含み、第１のストレージデバイスのデータ内保護データの量は、第２のストレージデバイスのデータ内保護データの量と異なり、
第１のストレージデバイスのエラー率の増加の予測に応答する第２のストレージデバイスより多くの第１のＲＡＩＤストライプのデバイス内冗長データを記録することが実行可能であることを特徴とする持続性コンピュータ可読記憶媒体。
【請求項１６】
コンピュータプログラム命令は、更に、
第２のＲＡＩＤストライプを書き込むための前記複数のストレージデバイスのストレージデバイスのサブセットを選択することが実行可能であり、前記サブセットのストレージデバイスの量は、前記複数のストレージデバイスのストレージデバイスの量よりも小さく、  第２のＲＡＩＤストライプを、前記サブセットに書き込むことが可能であり、前記ストレージデバイスのそれぞれに、前記ストレージデバイスに保存された前記ＲＡＩＤストライプのＲＡＩＤデータを保護するためのデバイス内保護データの量を配置することを含み、
前記ストレージデバイスのサブセットの第１のストレージデバイスのデータ内保護データの量は、前記ストレージデバイスのサブセットの第２のストレージデバイスのデータ内保護データの量と異なること、
を特徴とする請求項１５に記載の持続性コンピュータ可読記憶媒体。
【請求項１７】
前記第１のＲＡＩＤストライプは、Ｌ＋ｘのレイアウトである第１のＲＡＩＤレイアウトを有し、前記第２のＲＡＩＤストライプは、Ｍ＋ｙのレイアウトである第２のＲＡＩＤレイアウトを有し、Ｌ、ｘ、Ｍ及びｙは整数であり、（１）ＬはＭに等しくない、及び（２）ｘはｙに等しくない、のいずれか又は両方である、
ことを特徴とする請求項１６に記載の持続性コンピュータ可読記憶媒体。
【請求項１８】
前記ストレージコントローラは、前記データストレージサブシステムの特性を検出したことに応答して、Ｌ、ｘ、Ｍ及びｙのうちの１又はそれ以上を変更するように更に構成され、前記特性は、エラー率、アクセス率、デバイス使用年数、占有率レベル、記憶されたデータの使用年数、及びデータの予想寿命のうちの１又はそれ以上である、
ことを特徴とする請求項１７に記載の持続性コンピュータ可読記憶媒体。
【請求項１９】
前記複数のストレージデバイスは、ソリッドステートストレージデバイスである、
ことを特徴とする請求項１５に記載の持続性コンピュータ可読記憶媒体。
【請求項２０】
前記複数のストレージデバイスの少なくとももう１つのストレージデバイスは、前記第１のストレージデバイスのデータ内保護データの量とは異なるデータ内保護データを有することを特徴とする請求項１５に記載の持続性コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークに関し、より詳細には、複数のソリッドステート
ストレージデバイス間でデータを効率的に分散させる発明に関する。
【背景技術】
【０００２】
コンピュータのメモリストレージ及びデータ帯域幅が増すと、企業が日々管理するデー
タの量及び複雑性も増す。通常、データセンターなどの大規模分散型ストレージシステム
は、多くの業務を実行する。分散型ストレージシステムは、１又はそれ以上のネットワー
クにより相互接続されたクライアントコンピュータに結合することができる。分散型スト
レージシステムのいずれかの部分が不良を起こし、又は利用できなくなった場合には、企
業活動が損なわれ、又は完全に停止する恐れがある。従って、分散型ストレージシステム
は、データの利用可能性及び高パフォーマンス機能のための高い標準を維持すると予想さ
れる。本明細書で使用するストレージディスクは、ストレージ技術のタイプによってはデ
ィスクを含まないものもあるので、ストレージデバイスと呼ぶことができる。
【０００３】
多くの場合、ストレージデバイスは、データ損失からの保護のために、エラー検出機構
及びエラー訂正機構を含む。多くの場合、これらの機構は、デバイスにより生成されてデ
バイス自体に記憶されるエラー訂正符号の形をとる。また、分散型ストレージシステムは
、分散アルゴリズムを利用して、一群のストレージデバイス間でデータを分散させること
もできる。一般に、これらのアルゴリズムは、中央ディレクトリに依拠せずにデータオブ
ジェクトをストレージデバイスにマッピングする。このようなアルゴリズムの例に、レプ
リケーション・アンダー・スケーラブル・ハッシング（ＲＵＳＨ）及びコントロールド・
レプリケーション・アンダー・スケーラブル・ハッシング（ＣＲＵＳＨ）がある。分散型
ストレージシステム内の複数のクライアントは、中央ディレクトリを伴わずに複数のサー
バ上のデータオブジェクトに同時にアクセスすることができる。また、記憶されているメ
タデータの量を低減することもできる。しかしながら、容量、入力／出力（Ｉ／Ｏ）特性
及び信頼性問題が異なる複数のストレージディスク間でデータを分散させるという困難な
タスクが依然として残る。ストレージデバイス自体と同様に、これらのアルゴリズムも、
（ＲＡＩＤ５及びＲＡＩＤ６などの）ＲＡＩＤタイプアルゴリズム又はリードソロモン符
号などのエラー検出及び訂正アルゴリズムを含むことができる。
【０００４】
動的に追加及び除去できる複数のストレージデバイス間でデータを分散させるために使
用する方法は、選択したストレージデバイスに関連する技術及び機構によって決まる。例
えば、上述したアルゴリズムは、ハードディスクドライブ（ＨＤＤ）を利用するシステム
に合わせて開発されたものである。ＨＤＤは、各々が磁気媒体で被覆された１又はそれ以
上の回転ディスクを含む。これらのディスクは、毎日数時間にわたり毎分数千回転の速さ
で回転する。また、この回転ディスク上への磁気読み込み／書き込み装置の位置付けには
、磁気アクチュエータが関与する。これらのアクチュエータは、摩擦、摩耗、振動及び機
械的不均衡の影響を受けやすく、結果的に信頼性問題が生じる。上述したデータ分散アル
ゴリズムは、ＨＤＤのこれらの特性及び挙動に基づくものである。
【０００５】
別のタイプの記憶ディスクの例に、ソリッドステートディスク（ＳＳＤ）がある。ソリ
ッドステートディスクは、ソリッドステートドライブと呼ぶこともできる。ＳＳＤは、Ｈ
ＤＤインターフェイスをエミュレートできるが、ＨＤＤで見られるような電気機械デバイ
スではなく固体メモリを利用して永続データを記憶する。例えば、ＳＳＤは、一群のフラ
ッシュメモリを含むことができる。可動部品又は機械的遅延がなければ、ＳＳＤのアクセ
ス時間及びレイテンシは、ＨＤＤよりも短くなり得る。しかしながら、通常、ＳＳＤの書
き込みレイテンシはかなり長い。入力／出力（Ｉ／Ｏ）特性が異なることに加え、ＳＳＤ
の故障モードもＨＤＤとは異なる。従って、記憶のためにＳＳＤを備えたシステムでは、
ＨＤＤに合わせて開発された分散型データ配置アルゴリズムを利用しながら高パフォーマ
ンス及び高信頼性を実現できない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記に鑑み、複数のソリッドステートストレージデバイス間でデータを効率的に分散し
、エラーを検出して訂正するためのシステム及び方法が望まれている。
【課題を解決するための手段】
【０００７】
複数のソリッドステートストレージデバイス間でデータを効率的に分散して管理するた
めのコンピュータシステム及び方法の様々な実施形態を開示する。
【０００８】
１つの実施形態では、コンピュータシステムが、ネットワークを介して読み込み及び書
き込み要求を受け取るように結合された１又はそれ以上のデータストレージアレイにネッ
トワークを介して読み込み及び書き込み要求を伝達するように構成された複数のクライア
ントコンピュータを備える。複数のストレージデバイス上に複数の記憶位置を有する（単
複の）データストレージアレイを企図する。様々な実施形態では、このストレージデバイ
スが、データを記憶して保護するための独立ドライブ冗長アレイ（ＲＡＩＤ）構成で構成
される。データストレージデバイスは、フラッシュメモリセルなどの、データ記憶のため
の固体メモリ技術を含むことができる。データストレージサブシステムは、ストレージコ
ントローラをさらに備え、このストレージコントローラは、ストレージデバイスの第１の
サブセットを、第１の冗長データセットを含む第１のＲＡＩＤレイアウトで使用するよう
に構成するように構成される。このコントローラは、ストレージデバイスの第２のサブセ
ットを、第２の冗長データセットを含む第２のＲＡＩＤレイアウトで使用するようにさら
に構成する。また、このコントローラは、第１のサブセット又は第２のサブセットのいず
れにも含まれていない追加のデバイスを、第１のＲＡＩＤレイアウト及び第２のＲＡＩＤ
レイアウトの両方のための冗長データを記憶するように構成する。
【０００９】
第１のＲＡＩＤレイアウト又は第２のＲＡＩＤレイアウトの特定のストレージデバイス
を対象とする所与の読み込み要求を受け取ったことに応答して、コントローラが、特定の
ストレージデバイスが非エラーに関する相対的に遅い読み込み応答を示していると判断し
たことに応答して、所与の読み込み要求に対応する再構成読み込みを開始するように構成
される実施形態も企図する。また、第１のサブセット及び第２のサブセット内の各デバイ
スは、デバイス内冗長データを記憶するように構成することができ、第１の冗長データセ
ット及び第２の冗長データセットは、いずれもデバイス間冗長データを含む。さらに、様
々な実施形態では、第１のＲＡＩＤレイアウトが、Ｌ＋ｘのレイアウトであり、第２のＲ
ＡＩＤレイアウトが、Ｍ＋ｙのレイアウトであり、Ｌ、ｘ、Ｍ及びｙは整数であり、（１
）ＬはＭに等しくない、及び（２）ｘはｙに等しくない、のいずれか又は両方である。
【００１０】
以下の説明及び添付図面を検討すると、これらの及びその他の実施形態が明らかになる
であろう。
【図面の簡単な説明】
【００１１】
【図１】ネットワークアーキテクチャの１つの実施形態を示す汎用ブロック図である。
【図２】動的デバイス内冗長スキームの１つの実施形態の汎用ブロック図である。
【図３】データストレージサブシステムにおいてデバイス内保護を調整する方法の１つの実施形態を示す汎用フロー図である。
【図４】ストレージサブシステムの１つの実施形態の汎用ブロック図である。
【図５】デバイスユニットの１つの実施形態の汎用ブロック図である。
【図６】状態テーブルの１つの実施形態を示す汎用ブロック図である。
【図７】フレキシブルなＲＡＩＤデータレイアウトアーキテクチャの１つの実施形態を示す汎用ブロック図である。
【図８】フレキシブルなＲＡＩＤデータレイアウトアーキテクチャの別の実施形態を示す汎用ブロック図である。
【図９】データストレージサブシステム内のレイアウトを動的に決定する方法の１つの実施形態を示す汎用フロー図である。
【図１０】フレキシブルなＲＡＩＤデータレイアウトアーキテクチャのさらに別の実施形態を示す汎用ブロック図である。
【図１１Ａ】デバイスレイアウトの１つの実施形態を示す図である。
【図１１Ｂ】セグメントの１つの実施形態を示す図である。
【図１１Ｃ】異なるページタイプ内のデータストレージ構成の１つの実施形態を示す汎用ブロック図である。
【図１２】ハイブリッドＲＡＩＤデータレイアウトの１つの実施形態を示す汎用ブロック図である。
【図１３】データストレージサブシステム内で代替のＲＡＩＤ構成を選択する方法の１つの実施形態を示す汎用フロー図である。
【発明を実施するための形態】
【００１２】
本発明は様々な修正及び代替形態が可能であるが、図面には特定の実施形態を一例とし
て示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに
対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではな
く、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全て
の修正物、同等物及び代替物を含むことを意図するものであると理解されたい。
【００１３】
以下の説明では、本発明を完全に理解できるように数多くの具体的な詳細を示す。しか
しながら、当業者であれば、これらの具体的な詳細を伴わずに本発明を実施できると認識
すべきである。いくつかの例では、本発明を曖昧にしないように、周知の回路、構造、信
号、コンピュータプログラム命令及び技術については詳細に示していない。
【００１４】
図１を参照すると、ネットワークアーキテクチャ１００の１つの実施形態の汎用ブロッ
ク図を示している。後述するように、ネットワークアーキテクチャ１００の１つの実施形
態は、ネットワーク１８０を介して互いに、及びデータストレージアレイ１２０ａ〜１２
０ｂに相互接続されたクライアントコンピュータシステム１１０ａ〜１１０ｂを含む。ネ
ットワーク１８０は、スイッチ１４０を介して第２のネットワーク１９０に結合すること
ができる。このネットワーク１９０を介して、クライアントコンピュータシステム１１０
ｃが、クライアントコンピュータシステム１１０ａ〜１１０ｂ及びデータストレージアレ
イ１２０ａ〜１２０ｂに結合される。また、ネットワーク１９０は、スイッチ１５０を介
してインターネット１６０又はその他の外部ネットワークに結合することもできる。
【００１５】
なお、代替の実施形態では、クライアントコンピュータ及びサーバ、スイッチ、ネット
ワーク、データストレージアレイ及びデータストレージデバイスの数及びタイプが、図１
に示すものに限定されない。１又はそれ以上のクライアントは、様々な時点でオフライン
動作することができる。また、動作中、ユーザがネットワークアーキテクチャ１００への
接続、切断及び再接続を行うと、個々のクライアントコンピュータの接続タイプが変化す
ることもある。図１に示す構成要素の各々のさらなる説明を手短に行う。まず、データス
トレージアレイ１２０ａ〜１２０ｂにより提供される機能のいくつかの概要について説明
する。
【００１６】
ネットワークアーキテクチャ１００では、データストレージアレイ１２０ａ〜１２０ｂ
の各々を、クライアントコンピュータシステム１１０ａ〜１１０ｃなどの異なるサーバ及
びコンピュータ間のデータの共有に使用することができる。また、データストレージアレ
イ１２０ａ〜１２０ｂを、ディスクのミラーリング、バックアップ及び復元、保存データ
の保管及び検索、並びにストレージデバイス間のデータ移行に使用することもできる。代
替の実施形態では、クラスタを形成するために、１又はそれ以上のクライアントコンピュ
ータシステム１１０ａ〜１１０ｃを、高速ローカルエリアネットワーク（ＬＡＮ）を介し
て互いにリンクさせることができる。互いにリンクされた１又はそれ以上のノードはクラ
スタを形成し、これによりデータストレージアレイ１２０ａ〜１２０ｂの１つに存在する
クラスタ共有ボリュームなどのストレージリソースを共有することができる。
【００１７】
データストレージアレイ１２０ａ〜１２０ｂの各々は、データ記憶のためのストレージ
サブシステム１７０を含む。ストレージサブシステム１７０は、複数のストレージデバイ
ス１７６ａ〜１７６ｍを含むことができる。これらのストレージデバイス１７６ａ〜１７
６ｍは、クライアントコンピュータシステム１１０ａ〜１１０ｃにデータ記憶サービスを
提供することができる。ストレージデバイス１７６ａ〜１７６ｍの各々は、読み込み及び
書き込み要求を受け取るとともに、各々をアレイ内の行及び列としてアドレス指定可能な
複数のデータ記憶位置を含むように構成することができる。１つの実施形態では、ストレ
ージデバイス１７６ａ〜１７６ｍ内のデータ記憶位置を、論理的で冗長なストレージコン
テナ又はＲＡＩＤアレイ（低価格／独立ディスク冗長アレイ）内に配置することができる
。しかしながら、ストレージデバイス１７６ａ〜１７６ｍは、ディスクを含まないことも
ある。１つの実施形態では、ストレージデバイス１７６ａ〜１７６ｍの各々が、従来のハ
ードディスクドライブ（ＨＤＤ）とは異なる技術をデータ記憶に利用することができる。
例えば、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上は、永続データを記憶
するための固体メモリから成るストレージを含み、又はこれにさらに結合することができ
る。他の実施形態では、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上が、ス
ピン注入法、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）法、又はその他の記憶技術を
利用するストレージを含み、又はこのようなストレージにさらに結合することができる。
これらの異なる記憶技術により、ストレージデバイス間で異なる信頼性特性が生じ得る。
【００１８】
ストレージデバイス１７６ａ〜１７６ｍの各々において使用される技術及び機構のタイ
プにより、データオブジェクトマッピング、並びにエラー検出及び訂正に使用するアルゴ
リズムを決定することができる。これらのアルゴリズムで使用されるロジックを、基本オ
ペレーティングシステム（ＯＳ）１１６、ファイルシステム１４０、ストレージサブシス
テムコントローラ１７４内の１又はそれ以上のグローバルＲＡＩＤエンジン１７８、及び
ストレージデバイス１７６ａ〜１７６ｍの各々における制御ロジックのうちの１又はそれ
以上に含めることができる。
【００１９】
１つの実施形態では、含まれる固体メモリが、ソリッドステートドライブ（ＳＳＤ）技
術を含む。通常、ＳＳＤ技術は、フラッシュメモリセルを利用する。当業で周知のように
、フラッシュメモリセルは、フローティングゲート内に捕捉され蓄積された電子の範囲に
基づく二進値を保持する。完全に消去されたフラッシュメモリセルは、フローティングゲ
ート内に電子を全く又は最低数しか蓄積していない。消去されたフラッシュメモリセルに
は、シングルレベルセル（ＳＬＣ）フラッシュの二進１などの特定の二進値が関連付けら
れる。マルチレベルセル（ＭＬＣ）フラッシュでは、消去されたフラッシュメモリセルに
二進値１１が関連付けられる。フラッシュメモリセル内の制御ゲートに所与の閾値電圧よ
りも高い電圧を印加した後、このフラッシュメモリセルは、フローティングゲート内に所
与の範囲の電子を捕捉する。従って、プログラムされた（書き込まれた）フラッシュメモ
リセルには、ＳＬＣフラッシュの二進０などの別の特定の二進値が関連付けられる。ＭＬ
Ｃフラッシュセルでは、制御ゲートに印加された電圧に応じて、プログラムされたメモリ
セルに複数の二進値の１つを関連付けることができる。
【００２０】
一般的に言えば、ＳＳＤ技術では、読み込みアクセスレイテンシタイムがＨＤＤ技術よ
りも短い。しかしながら、ＳＳＤの書き込みパフォーマンスは、ＳＳＤ内の未使用のプロ
グラマブルブロックの利用可能性によって大きく影響を受ける。ＳＳＤの書き込みパフォ
ーマンスは、ＳＳＤの読み込みパフォーマンスに比べて大幅に遅いので、同様のレイテン
シを予想する一部の機能又は動作に関する問題が生じることがある。また、ＨＤＤ技術と
ＳＤＤ技術の間の技術及び機構の違いにより、データストレージデバイス１７６ａ〜１７
６ｍの信頼性特性に違いが生じることがある。
【００２１】
様々な実施形態では、ＳＳＤ内のフラッシュセルに新たなデータが書き込まれる前に、
一般にこのフラッシュセルを消去しなければならない。また、様々なフラッシュ技術にお
ける消去動作は、ブロック単位で行わなければならない。従って、ブロック（消去セグメ
ント又は消去ブロック）内のフラッシュメモリセルは、全てまとめて消去される。フラッ
シュ消去ブロックは、複数のページを含むことができる。例えば、１ページのサイズが４
キロバイト（ＫＢ）であり、１ブロックが６４ページ、すなわち２５６ＫＢを含むことが
できる。フラッシュデバイスでは、読み込み動作に比べて消去動作のレイテンシの方が相
対的に高いことがあり、これにより対応する書き込み動作のレイテンシが増すことがある
。フラッシュ技術のプログラミング又は読み込みは、消去ブロックサイズよりも低い粒度
レベルで行うことができる。例えば、フラッシュセルには、バイトサイズ、単語サイズ又
はその他のサイズでプログラム又は読み込みを行うことができる。
【００２２】
フラッシュセルには、反復的な消去プログラム動作後に摩耗が生じる。この場合、この
摩耗は、ＭＬＣフラッシュセルの基板とフローティングゲートの間の誘電酸化物層に注入
され捕捉される電荷によるものである。１つの例では、ＭＬＣフラッシュセルが、１０，
０００〜１００，０００サイクルなどの、消去及びプログラム動作を受ける回数限界を有
することができる。また、ＳＳＤには、別のフラッシュセルの消去又はプログラム中に隣
接する又は近隣のフラッシュセルに偶発的状態変化を引き起こすプログラムディスターブ
エラーが生じることがある。さらに、ＳＳＤは、別のフラッシュセルの読み込み中に近隣
のフラッシュセルの偶発的状態変化が生じるリードディスターブエラーも含む。
【００２３】
１又はそれ以上のストレージデバイス１７６ａ〜１７６ｍの各々の特性が分かると、よ
り効率的なデータオブジェクトマッピング、並びにエラー検出及び訂正を行うことができ
る。１つの実施形態では、ストレージコントローラ１７４内のグローバルＲＡＩＤエンジ
ン１７８が、ストレージデバイス１７６ａ〜１７６ｍに関して、Ｉ／Ｏ要求の応答時間に
一貫性がないこと、対応するアクセスに対するデータが誤っていること、エラー率及びア
クセス率のうちの少なくとも１つ又はそれ以上を検出することができる。グローバルＲＡ
ＩＤエンジン１７８は、少なくともこれらの特性に応答して、ストレージデバイス１７６
ａ〜１７６ｍ内の対応するストレージデバイスグループにいずれのＲＡＩＤデータレイア
ウトアーキテクチャを利用すべきかを判断することができる。また、グローバルＲＡＩＤ
エンジン１７８は、ストレージデバイス１７６ａ〜１７６ｍの特性に基づいて、デバイス
内冗長スキーム及びデバイス間ＲＡＩＤデータレイアウトを動的に変更することができる
。
【００２４】
図１に、１つの実施形態による、説明した特徴が可能なシステムの例を示す。さらなる
詳細については以下で示す。以下、図１を参照しながら、ネットワークアーキテクチャ１
００の構成要素についてさらに説明する。
【００２５】
ネットワークアーキテクチャの構成要素
繰り返すが、図示のように、ネットワークアーキテクチャ１００は、ネットワーク１８
０及び１９０を介して互いに及びデータストレージアレイ１２０ａ〜１２０ｂに相互接続
されたクライアントコンピュータシステム１１０ａ〜１１０ｃを含む。ネットワーク１８
０及び１９０は、無線接続、直接ローカルエリアネットワーク（ＬＡＮ）接続、ストレー
ジエリアネットワーク（ＳＡＮ）、インターネットなどの広域ネットワーク（ＷＡＮ）接
続及びルータなどを含む様々な技術を含むことができる。ネットワーク１８０及び１９０
は、１又はそれ以上のＬＡＮを含むことができ、これらは無線であってもよい。ネットワ
ーク１８０及び１９０は、リモートダイレクトメモリアクセス（ＲＤＭＡ）ハードウェア
及び／又はソフトウェア、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／Ｉ
Ｐ）ハードウェア及び／又はソフトウェア、ルータ、リピータ、スイッチ及び／又はグリ
ッドなどをさらに含むことができる。ネットワーク１８０及び１９０内では、イーサネッ
ト（登録商標）、ファイバチャネル、ファイバチャネルオーバーイーサネット（ＦＣｏＥ
）及びｉＳＣＳＩなどのプロトコルを使用することができる。スイッチ１４０は、ネット
ワーク１８０及び１９０の両方に関連するプロトコルを利用することができる。ネットワ
ーク１９０は、伝送制御プロトコル（ＴＣＰ）及びインターネットプロトコル（ＩＰ）、
すなわちＴＣＰ／ＩＰなどの、インターネット１６０に使用される通信プロトコルの組と
整合することができる。スイッチ１５０は、ＴＣＰ／ＩＰスイッチとすることができる。
【００２６】
クライアントコンピュータシステム１１０ａ〜１１０ｃは、デスクトップパソコン（Ｐ
Ｃ）、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、サーバ
ファーム、携帯情報端末（ＰＤＡ）及びスマートフォンなどのあらゆる数の固定又はモバ
イルコンピュータを表す。一般的に言えば、クライアントコンピュータシステム１１０ａ
〜１１０ｃは、１又はそれ以上のプロセッサコアを備えた１又はそれ以上のプロセッサを
含む。各プロセッサコアは、所定の汎用命令セットに従って命令を実行するための回路を
含む。例えば、ｘ８６命令セットアーキテクチャを選択することができる。或いは、Ａｌ
ｐｈａ（登録商標）、ＰｏｗｅｒＰＣ（登録商標）、ＳＰＡＲＣ（登録商標）又はその他
のいずれの汎用命令セットアーキテクチャを選択してもよい。プロセッサコアは、データ
及びコンピュータプログラム命令を求めてキャッシュメモリサブシステムにアクセスする
ことができる。キャッシュサブシステムは、ランダムアクセスメモリ（ＲＡＭ）及びスト
レージデバイスを含む記憶階層に結合することができる。
【００２７】
クライアントコンピュータシステム内の各プロセッサコア及び記憶階層は、ネットワー
クインターフェイスにさらに接続することができる。クライアントコンピュータシステム
１１０ａ〜１１０ｃの各々は、ハードウェア構成要素に加え、記憶階層内に記憶された基
本オペレーティングシステム（ＯＳ）を含むことができる。この基本ＯＳは、例えば、Ｍ
Ｓ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、
ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、又は別
の公知のオペレーティングシステムなどの様々な特定のオペレーティングシステムのいず
れかを表すことができる。従って、基本ＯＳは、エンドユーザに様々なサービスを提供す
るとともに、様々なプログラムの実行をサポートするソフトウェアフレームワークを提供
することができる。また、クライアントコンピュータシステム１１０ａ〜１１０ｃの各々
は、高水準バーチャルマシン（ＶＭ）をサポートするために使用されるハイパーバイザを
含むことができる。当業者には周知のように、デスクトップ及びサーバ内で仮想化を使用
して、ＯＳなどのソフトウェアをシステムのハードウェアから完全に又は部分的に分離す
ることができる。仮想化により、データストレージアレイ１２０ａ〜１２０ｂの各々にお
けるストレージデバイス１７６ａ〜１７６ｍに対応する（論理装置番号（ＬＵＮ）などの
）論理記憶エンティティなどのように、各々が独自のリソースを有する同じ機械上で複数
のＯＳが実行されているという錯覚をエンドユーザに与えることができる。
【００２８】
データストレージアレイ１２０ａ〜１２０ｂの各々は、クライアントコンピュータシス
テム１１０ａ〜１１０ｃなどの異なるサーバ間のデータの共有に使用することができる。
データストレージアレイ１２０ａ〜１２０ｂの各々は、データを記憶するためのストレー
ジサブシステム１７０を含む。ストレージサブシステム１７０は、複数のストレージデバ
イス１７６ａ〜１７６ｍを含むことができる。これらのストレージデバイス１７６ａ〜１
７６ｍの各々は、ＳＳＤとすることができる。コントローラ１７４は、受け取った読み込
み／書き込み要求を処理するためのロジックを含むことができる。例えば、少なくともコ
ントローラ１７４において、手短に上述したアルゴリズムを実行することができる。受け
取った書き込み要求などの動作のバッチ処理には、ランダムアクセスメモリ（ＲＡＭ）１
７２を使用することができる。
【００２９】
記憶媒体１３０に記憶された基本ＯＳ１３２、ファイルシステム１３４、いずれかのＯ
Ｓドライバ（図示せず）及びその他のソフトウェアは、ファイル及びＬＵＮへのアクセス
を可能にする機能を提供し、これらの機能を管理することができる。基本ＯＳ１３４及び
ＯＳドライバは、記憶媒体１３０上に記憶された、受け取った要求に対応する１又はそれ
以上のメモリアクセス動作をストレージサブシステム１７０内で行うようにプロセッサ１
２２により実行可能なプログラム命令を含むことができる。
【００３０】
データストレージアレイ１２０ａ〜１２０ｂの各々は、ネットワークインターフェイス
１２４を使用してネットワーク１８０に接続することができる。１つの実施形態では、ク
ライアントコンピュータシステム１１０ａ〜１１０ｃと同様に、ネットワークインターフ
ェイス１２４の機能をネットワークアダプタカード上に含めることができる。ネットワー
クインターフェイス１２４の機能は、ハードウェア及びソフトウェアの両方を使用して実
装することができる。ネットワークインターフェイス１２４のネットワークカードによる
実装上には、ランダムアクセスメモリ（ＲＡＭ）及び読み取り専用メモリ（ＲＯＭ）の両
方を含めることができる。１又はそれ以上の特定用途向け集積回路（ＡＳＩＣ）を使用し
て、ネットワークインターフェイス１２４の機能を提供することができる。
【００３１】
１つの実施形態では、ユーザデータ及び対応するエラー訂正符号（ＥＣＣ）情報のデー
タレイアウトを最適化しようと努めるデータストレージモデルを作成することができる。
１つの実施形態では、このモデルが、ストレージシステム内のストレージデバイスの特性
に少なくとも部分的に基づく。例えば、ソリッドステートストレージ技術を利用するスト
レージシステムでは、特定のデバイスの特性を使用してこのストレージデバイスのための
モデルを作成するとともに、このモデルが、対応するデータストレージ構成アルゴリズム
を通知する機能を果たすようにすることもできる。例えば、使用中の特定のストレージデ
バイスが、時間とともに信頼性の変化を示す場合、データストレージ構成を動的に変更す
る上でこのような特性を考慮することができる。
【００３２】
一般的に言えば、コンピューティングシステムのために開発されるあらゆるモデルは不
完全である。多くの場合、現実のシステムで所与のシステムを完全にモデル化するには、
考慮すべき変数が単純に多すぎる。場合によっては、完全ではないが価値のあるモデルを
開発することが可能な場合もある。以下でより詳細に説明するように、基礎を成すデバイ
スの特性に基づいてストレージシステムをモデル化する実施形態を説明する。様々な実施
形態では、システムがどのように挙動し得るかに関するいくつかの予測に基づいてデータ
ストレージ構成の選択が行われる。デバイスの挙動によっては、デバイスの特性の理解に
基づいて、他のデバイスの挙動より予測しやすいものもある。しかしながら、デバイスの
動作は時間とともに変化することがあり、これに応じて、選択したデータレイアウトも変
化することがある。本明細書で使用するデバイスの特性とは、全体としてのデバイスの特
性、チップ又はその他の構成要素などのデバイスの下位部分の特性、消去ブロックの特性
、又はデバイスに関する他のあらゆる特性のことを意味することができる。
【００３３】
デバイス内冗長性
ここで図２を参照すると、動的デバイス内冗長スキームの１つの実施形態を示す汎用ブ
ロック図を示している。当業者には周知のように、ストレージデバイス内の潜在的なセク
タエラーの影響を低減するように複数のデバイス内冗長スキームの１つを選択することが
できる。通常、「セクタ」という用語は、ディスク上の所与のトラック内のセグメントな
どの、ＨＤＤ上における基本記憶単位を意味する。ここでは、「セクタ」という用語は、
ＳＳＤ上における基本的な割り当て単位（アロケーションユニット）を意味することもで
きる。
【００３４】
ＳＳＤ内のアロケーションユニットは、ＳＳＤ内の１又はそれ以上の消去ブロックを含
むことができる。図２を参照すると、ユーザデータ２１０は、エンドユーザが修正及びア
クセスすべき記憶データ、並びにデバイス間エラー訂正符号（ＥＣＣ）データの両方を意
味することができる。デバイス間ＥＣＣデータは、ユーザデータを保持する他のストレー
ジデバイス上の１又はそれ以上のページから生成されたパリティ情報とすることができる
。例えば、デバイス間ＥＣＣデータは、ＲＡＩＤデータレイアウトアーキテクチャで使用
されるパリティ情報とすることができる。ユーザデータ２１０は、ストレージデバイス１
７６ａ〜１７６ｋのうちの１又はそれ以上に含まれる１又はそれ以上のページ内に記憶す
ることができる。１つの実施形態では、ストレージデバイス１７６ａ〜１７６ｋの各々が
ＳＳＤである。
【００３５】
ＳＳＤ内の消去ブロックは、複数のページを含むことができる。上述したように、１つ
の実施形態では、１ページが４ＫＢのデータ記憶空間を含むことができる。１消去ブロッ
クは、６４ページ、すなわち２５６ＫＢを含むことができる。他の実施形態では、消去ブ
ロックが１メガバイト（ＭＢ）もの大きさであり、２５６ページを含むことができる。ア
ロケーションユニットのサイズは、アロケーションユニットのオーバーヘッドトラッキン
グを低減するために、十分に大きなサイズの比較的少ないユニットが与えられるように選
択することができる。１つの実施形態では、１又はそれ以上の状態テーブルが、アロケー
ションユニットの状態（割り当て済み、空き、消去済み、エラー）、摩耗レベル、及びア
ロケーションユニット内で発生した総エラー数（訂正可能及び／又は訂正不能）を維持す
ることができる。様々な実施形態では、アロケーションユニットのサイズを、所与のデバ
イスが利用できるアロケーションユニットの数とアロケーションユニットを維持するオー
バーヘッドとのバランスをとるように選択することができる。例えば、１つの実施形態で
は、アロケーションユニットのサイズを、ＳＳＤの総記憶容量の１／１００パーセントと
なるように選択することができる。ページ、消去ブロック及びその他の単位構成に関する
他の量のデータ記憶空間も可能であり、企図される。
【００３６】
ストレージデバイス内の所与のセクタ又はその他の記憶単位にアクセスできない場合、
潜在的セクタエラー（ＬＳＥ）が発生する。この所与のセクタでは、読み込み又は書き込
み動作を完了できないことがある。また、訂正不能なエラー訂正符号（ＥＣＣ）エラーが
存在することもある。ＬＳＥは、所与のセクタがアクセスを受けるまで検出されないエラ
ーである。従って、この所与のセクタに以前に記憶したあらゆるデータが失われる恐れが
ある。ストレージデバイスの不具合後のＲＡＩＤ再構成中に１つのＬＳＥが生じた場合、
これによりデータ損失に至る恐れがある。ＳＳＤでは、デバイスの使用年数、デバイスサ
イズ、アクセス率、ストレージの圧縮度、及び以前の訂正可能及び訂正不能なエラーの発
生といった統計値のうちの少なくとも１つから、別のＬＳＥの発生確率が増加することが
ある。所与のストレージデバイス内のＬＳＥ及びデータ損失を防ぐために、この所与のス
トレージデバイス内で多様なデバイス内冗長スキームの１つを使用することができる。
【００３７】
デバイス内冗長スキームは、所与のストレージデバイス内で、パリティ情報などのＥＣ
Ｃ情報を利用する。このデバイス内冗長スキーム及びそのＥＣＣ情報は、所与のデバイス
に対応し、所与のデバイス内に維持することができるが、デバイス自体が内部的に生成し
て維持できるＥＣＣとは異なる。一般的に言えば、デバイスの内部的に生成され維持され
るＥＣＣは、このデバイスを含むシステムからは見えない。所与のストレージデバイスに
含まれるデバイス内ＥＣＣ情報を使用して、この所与のストレージデバイス内におけるデ
ータ記憶の信頼性を高めることができる。このデバイス内ＥＣＣ情報は、ＲＡＩＤデータ
レイアウトアーキテクチャで利用されるパリティ情報などの、別のストレージデバイスに
含めることができる他のＥＣＣ情報に加えられる。
【００３８】
極めて効果的なデバイス内冗長スキームは、所与のＲＡＩＤデータレイアウトの信頼性
を十分に高めて、パリティ情報を保持するために使用されるデバイスの数を減少させるこ
とができる。例えば、各デバイス上のデータを保護するためにデバイス内冗長性が加わっ
た場合、ダブルパリティＲＡＩＤレイアウトをシングルパリティＲＡＩＤレイアウトに置
き換えることができる。一定レベルの記憶効率を得るためには、デバイス内冗長スキーム
における冗長性を高めると、所与のストレージデバイスの信頼性が高まる。しかしながら
、このようにして冗長性を高めると、この所与のストレージデバイスの入力／出力（Ｉ／
Ｏ）性能に関する不利点も増える可能性がある。
【００３９】
１つの実施形態では、デバイス内冗長スキームが、デバイスを、ユーザデータを記憶す
るための一群の場所に分割する。例えば、ストライプ２５０ａ〜２５０ｃによって示すよ
うな、ＲＡＩＤレイアウト内のストライプに対応するデバイス内の一群の場所に分割する
ことができる。ユーザデータ又はデバイス間ＲＡＩＤ冗長性情報は、データ２１０によっ
て示すように、ストレージデバイス１７６ａ〜１７６ｋの各々の１又はそれ以上のページ
に記憶することができる。各ストレージデバイス内では、１又はそれ以上のページにデバ
イス内エラー回復データ２２０を記憶することができる。本明細書では、デバイス内エラ
ー回復データ２２０をデバイス内冗長データ２２０と呼ぶことができる。当業者であれば
周知のように、デバイス内冗長データ２２０は、データ２１０内の情報の選択した一部に
対してある関数を実行することにより取得することができる。ＸＯＲベースの演算を使用
して、デバイス内冗長データ２２０に記憶すべきパリティ情報を導出することができる。
デバイス内冗長スキームの他の例としては、シングルパリティチェック（ＳＰＣ）、最大
距離分離（ＭＤＳ）消去符号、インタリーブパリティチェック符号（ＩＰＣ）、ハイブリ
ッドＳＰＣ及びＭＤＳ符号（ＭＤＳ＋ＳＰＣ）、及びカラム対角パリティ（ＣＤＰ）が挙
げられる。これらのスキームは、データ２２０を計算する方法に応じて、もたらされる信
頼性及びオーバーヘッドの点で異なる。このシステムは、上述の冗長性情報に加え、デバ
イス上の領域のチェックサム値を計算するように構成することもできる。例えば、デバイ
スに情報が書き込まれた時にチェックサムを計算することができる。このチェックサムは
、システムによって記憶される。システムは、デバイスから情報が読み戻された時に再び
チェックサムを計算し、これを最初に記憶した値と比較することができる。２つのチェッ
クサムが異なる場合、情報が正しく読み込まれておらず、システムは、他のスキームを使
用してデータを回復することができる。チェックサム機能の例には、巡回冗長検査（ＣＲ
Ｃ）、ＭＤ５及びＳＨＡ−１がある。
【００４０】
ストライプ２５０ａ〜２５０ｃに示すように、所与のストライプ内にデータ２１０を記
憶するために使用する幅、すなわちページ数は、ストレージデバイス１７６ａ〜１７６ｋ
の各々において同じものとなり得る。しかしながら、ストライプ２５０ｂ〜２５０ｃに示
すように、所与のストライプ内にデバイス内冗長データ２２０を記憶するために使用する
幅、すなわちページ数は、ストレージデバイス１７６ａ〜１７６ｋの各々において同じで
ない場合がある。１つの実施形態では、所与のストレージデバイスの特性又は挙動の変化
により、対応するデバイス内冗長データ２２０を記憶するために使用する幅を少なくとも
部分的に決定することができる。例えば、上述したように、フラッシュセルには、ページ
をプログラムすること又は読み込むことによって近隣のページに支障を来たし、これらの
近隣のページ内にエラーを引き起こし得るプログラムディスターブエラー及びリードディ
スターブエラーが生じる。ストレージデバイスが古くなってより多くのエラーが生じてい
る場合、対応するデバイス内冗長データ２２０の量が増加することがある。例えば、スト
ライプ２５０ｂの書き込み動作前に、ストレージデバイス１７６ａ〜１７６ｋの各々の特
性をモニタし、これを使用してエラー率の増加を予測することができる。ストレージデバ
イス１７６ｃ及び１７６ｊのエラーの増加が予測されることが検出される可能性がある。
これに応答して、ストレージデバイス１７６ｃ及び１７６ｊのデバイス内冗長データ２２
０の量が増加することがある。図２のストライプ２５０ａ及び２５０ｂの例では、ストラ
イプ２５０ａ及び２５０ｂのストレージデバイス１７６ｃ及び１７６ｊの記憶されている
保護データの量の増加を確認することができる。例えば、この時点で、ストレージデバイ
ス１７６ｃ及び１７６ｊをシングルパリティで保護するのではなく、これらのデバイスを
ダブルパリティ又はトリプルパリティで保護することができる。なお、デバイス１７６ｃ
及び１７６ｊのデバイス内保護の量を増加させても、同じストライプ内の他のデバイスに
おける量を対応して増加させる必要はない。むしろ、ストライプのデータは、各デバイス
において望むように異なるレベルの保護を有することができる。
【００４１】
様々な実施形態では、所与のレベルのデータ保護の増減を選択的に行うことができる。
例えば、１つの実施形態では、上記の例におけるストレージデバイス１７６ｃ及び１７６
ｊなどの、より多くのエラーを生成することが検出されたストレージデバイスに対してし
か保護の増加を行わなくてよい。別の実施形態では、ストレージデバイス１７６ｃ及び１
７６ｊがより多くのエラーを生成することが検出された場合、ストレージデバイス１７６
ａ〜１７６ｋの各々に対して保護の増加を行うことができる。１つの実施形態では、デバ
イス１７６ｋなどのパリティデバイス上におけるデバイス内保護の量を増加させるために
、ストライプ内で保護されているデータの量を減少させることが必要となる場合がある。
例えば、所与のストライプのパリティデバイス上に記憶されたデバイス内データの量を増
加させると、このデバイスが記憶するストライプ内のデータのためのパリティデータの量
が必然的に減少する。このパリティデータの量が、ストライプ内のデータを全て保護する
ために必要な量未満に減少した場合、パリティ保護を継続することが望ましい場合にはス
トライプ内のデータを減少させなければならない。ストライプ内に記憶されるデータの量
の減少させる代替案として、パリティデータを記憶するための異なるデバイスを選択する
こともできる。様々な選択肢が可能であり、企図される。また、本明細書に記載する図２
及びその他の図には、（１７６ｋなどの）別個のパリティデバイスを示していることがあ
るが、様々な実施形態では、パリティを単一のデバイスに記憶するのではなく複数のデバ
イスに分散させることができる。従って、別個のパリティデバイスの図示は、一般に説明
を簡単にするための論理的な表現と見なすことができる。
【００４２】
ここで図３を参照すると、データストレージサブシステムにおけるデバイス内保護を調
整する方法３００の１つの実施形態を示している。一般に、ネットワークアーキテクチャ
１００及びデータストレージアレイ１２０ａ〜１２０ｂ内で具体化される構成要素は、方
法３００に従って動作することができる。この実施形態のステップを順番に示す。しかし
ながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同
時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実
施形態には存在しないものもある。
【００４３】
ブロック３０２において、ストレージデバイスにユーザデータを記憶するための第１の
空き容量を決定する。このユーザデータは、データ２１０に関して上述したように、ＲＡ
ＩＤアーキテクチャで使用されるエンドユーザアプリケーション又はデバイス間パリティ
情報内で使用されるデータとすることができる。この第１の空き容量は、上述したような
ストレージデバイス内の１又はそれ以上のページを含むことができる。１つの実施形態で
は、ストレージコントローラ１７４内のグローバルＲＡＩＤエンジン１７８が、ストレー
ジデバイス１７６ａ〜１７６ｍの各々から挙動統計値を受け取る。グローバルＲＡＩＤエ
ンジン１７８は、ストレージデバイス１７６ａ〜１７６ｍの２又はそれ以上を含む所与の
デバイスグループについて、ＲＡＩＤデータレイアウト及びこれらの２又はそれ以上のス
トレージデバイスの各々に維持すべき最初のデバイス内冗長性の量を決定することができ
る。ブロック３０４において、ＲＡＩＤエンジン１７８は、対応するデバイス内保護デー
タをストレージデバイスに記憶するための第２の空き容量を決定することができる。この
第２の空き容量は、ストレージデバイス内の１又はそれ以上のページを含むことができる
。デバイス内保護データは、上述したデバイス内冗長データ２２０に対応することができ
る。
【００４４】
ブロック３０６において、所与のデバイスグループに含まれる各ストレージデバイス内
の第１の空き容量にデータを書き込む。１つの実施形態では、ユーザデータ及びデバイス
間パリティ情報が、いずれも所与のデバイスグループに含まれる複数のストレージデバイ
スにわたる単一のＲＡＩＤストライプとして書き込まれる。再び図２を参照して分かるよ
うに、対応する書き込まれるデータの幅は、各ストレージデバイスにおいて同じである。
ブロック３０８において、ＥＣＣアルゴリズム、ＸＯＲベースのアルゴリズム、又はその
他のあらゆる適当なアルゴリズムにより、デバイス内保護データを生成する。また、シス
テムは、正しく取り出されなかったデータを識別しやすくするためにチェックサムを生成
することができる。ブロック３１０において、生成されたデバイス内保護データを、スト
レージデバイス内の第２の空き容量に書き込む。
【００４５】
ブロック３１２において、ＲＡＩＤエンジン１７８は、１又はそれ以上のストレージデ
バイスの挙動をモニタすることができる。１つの実施形態では、ＲＡＩＤエンジン１７８
が、対応するストレージデバイスのモデルを含み、このモデルに入力すべき挙動統計値を
ストレージデバイスから受け取ることができる。このモデルは、ストレージデバイスの既
知の特性を利用することにより、ストレージデバイスの挙動を予測することができる。例
えば、このモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測する
ことができる。ＲＡＩＤエンジン１７８は、信頼性に影響を与える所与のストレージデバ
イスの特性を検出した（条件付きブロック３１４）場合、ブロック３１６において、デー
タ及び対応するデバイス内冗長データを記憶するための第１及び第２の空き容量を調整す
ることができる。例えば、ＲＡＩＤエンジンは、少なくともデバイスの使用年数、アクセ
ス率及びエラー率などの上述した統計値をモニタすることができる。再び図２を参照して
分かるように、ＲＡＩＤエンジン１７８は、ストレージデバイス１７６ｃ及び１７６ｊの
エラー数が増加したことを検出することができる。或いは、ＲＡＩＤエンジンは、ストレ
ージデバイス１７６ｃ及び１７６ｊのエラー数の増加を予測することができる。従って、
ＲＡＩＤエンジン１７８は、第２のストライプ２５０ｂを書き込む前に、ストレージデバ
イス１７６ａ〜１７６ｋの各々にデータ２１０及びデータ２２０を記憶するために使用す
るページ数を調整することができる。同様に、ＲＡＩＤエンジン１７８は、ストレージデ
バイス１７６ｂの信頼性が低下していることを検出することができる。従って、ＲＡＩＤ
エンジン１７８は、第３のストライプ２５０ｃを書き込む前に、ストレージデバイス１７
６ａ〜１７６ｋの各々にデータ２１０及びデータ２２０を記憶するために使用するページ
数を再び調整することができる。
【００４６】
ストレージデバイス特性のモニタリング
ここで図４を参照すると、ストレージサブシステムの１つの実施形態の汎用ブロック図
を示している。１又はそれ以上のデバイスグループ１７３ａ〜１７３ｍの１つにおいて、
１又はそれ以上のストレージデバイス１７６ａ〜１７６ｍの各々を分割することができる
。同様に、他のデバイスを含む他のデバイスグループも存在し得る。各ストレージデバイ
スの対応する動作キュー及び状態テーブルを、デバイスユニット４００ａ〜４００ｗの１
つに含めることができる。これらのデバイスユニットを、ＲＡＭ１７２に記憶することが
できる。デバイスグループ１７３ａ〜１７３ｍの各々に関し、対応するＲＡＩＤエンジン
１７８ａ〜１７８ｍを含めることができる。各ＲＡＩＤエンジン１７８は、対応するデバ
イスグループ内のストレージデバイスの各々の統計値を追跡するモニタ４１０を含むこと
ができる。データレイアウトロジック４２０は、対応するストレージデバイス内の、ユー
ザデータ、デバイス間冗長データ及びデバイス内冗長データに対して割り当てるべき空き
容量を決定することができる。ストレージコントローラ１７４は、ウェアレベリング、ガ
ベージコレクション、Ｉ／Ｏスケジューリング、重複除外、並びに着信及び発信パケット
のプロトコル変換といったタスクのうちの少なくとも１つを行うためのその他の制御ロジ
ック４３０を含むことができる。
【００４７】
ここで図５を参照すると、デバイスユニットの１つの実施形態の汎用ブロック図を示し
ている。デバイスユニットは、デバイスキュー５１０及びテーブル５２０を含むことがで
きる。デバイスキュー５１０は、読み込みキュー５１２、書き込みキュー５１４、及びそ
の他の動作キュー５１６などの１又はそれ以上の他のキューを含むことができる。各キュ
ーは、１又はそれ以上の対応する要求５３０ａ〜５３０ｄを記憶するための複数のエント
リを含むことができる。例えば、対応するＳＳＤのデバイスユニットは、少なくとも読み
込み要求、書き込み要求、トリム要求及び消去要求などを記憶するためのキューを含むこ
とができる。テーブル５２０は、状態データ又は統計値５３０を記憶するための複数のエ
ントリを各々が含む１又はそれ以上の状態テーブル５２２ａ〜５２２ｂを含むことができ
る。また、この図及びその他の図には、キュー及びテーブルが特定数のエントリを含むよ
うに示しているが、必ずしもエントリ自体が互いに対応するわけではない。さらに、キュ
ー、テーブル及びエントリの数は、図示のものとは異なることがあり、また互いに異なる
こともある。
【００４８】
ここで図６を参照すると、所与のデバイスに対応する状態テーブルの１つの実施形態を
示す汎用ブロック図を示している。１つの実施形態では、このようなテーブルが、ＳＳＤ
などの所与のストレージデバイスの状態情報、エラー情報及び摩耗率情報に対応するデー
タを含むことができる。この情報に、対応するＲＡＩＤエンジンがアクセスすることによ
り、このＲＡＩＤエンジンは、デバイス間保護及びデバイス内保護の両方に使用するデー
タ記憶及びスキームのために割り当てられた空間を動的に変更できるようになる。１つの
実施形態では、この情報が、デバイスの使用年数６０２、エラー率６０４、デバイス６０
６上で検出された総エラー数、回復可能なエラー数６０８、回復不能なエラー数６１０、
デバイスのアクセス率６１２、記憶されたデータの使用年数６１４、及び割り当て空間６
１６ａ〜６１６ｎの１又はそれ以上の割り当て状態、のうちの少なくとも１つ又はそれ以
上を含むことができる。これらの割り当て状態は、使用中、空き、及びエラーなどを含む
ことができる。
【００４９】
フレキシブルなＲＡＩＤレイアウト
ここで図７を参照すると、フレキシブルなＲＡＩＤデータレイアウトアーキテクチャの
１つの実施形態を示す汎用ブロック図を示している。ＲＡＩＤエンジンは、ストレージデ
バイス１７６ａ〜１７６ｋに使用すべき保護レベルを決定することができる。例えば、Ｒ
ＡＩＤエンジンは、ストレージデバイス１７６ａ〜１７６ｋにＲＡＩＤダブルパリティを
利用すると決定することができる。デバイス間冗長データ２４０は、対応するユーザデー
タから生成されたＲＡＩＤダブルパリティ値を表すことができる。１つの実施形態では、
ストレージデバイス１７６ｊ及び１７６ｋが、ダブルパリティ情報を記憶することができ
る。他のレベルのＲＡＩＤパリティ保護も可能であり、企図されると理解されたい。また
、他の実施形態では、ダブルパリティ情報を、各ＲＡＩＤストライプのストレージデバイ
ス１７６ｊ及び１７６ｋに記憶するのではなく、この記憶をストレージデバイス間で循環
させることもできる。ダブルパリティ情報がストレージデバイス１７６ｊ及び１７６ｋに
記憶されるように示しているのは、図示及び説明を簡単にするためである。
【００５０】
ここで図８を参照すると、フレキシブルなＲＡＩＤデータレイアウトアーキテクチャの
別の１つの実施形態を示す汎用ブロック図を示している。図７に示す例と同様に、ストレ
ージデバイス１７６ａ〜１７６ｋにはダブルパリティを使用することができる。この例で
は、ＲＡＩＤダブルパリティについて説明するが、ＲＡＩＤデータレイアウトアーキテク
チャではあらゆる量の冗長性を選択することができる。
【００５１】
動作中、ＲＡＩＤエンジン１７８は、ストレージデバイス１７６ａ〜１７６ｋの特性を
モニタして、デバイスが最初の又はその他の所与の信頼性レベルよりも高い信頼性レベル
を示していると判断することができる。これに応答して、ＲＡＩＤエンジン１７８は、Ｒ
ＡＩＤ保護をＲＡＩＤダブルパリティからＲＡＩＤシングルパリティに変更することがで
きる。他のＲＡＩＤデータレイアウトアーキテクチャでは、サポートされている冗長性の
量を別様に減少させることができる。他の実施形態では、ストレージデバイス１７６ａ〜
１７６ｋのモニタ及び保護レベルの変更を、ストレージコントローラ１７４内の他のロジ
ックによって行うことができる。
【００５２】
引き続き上記の例を参照すると、所与のＲＡＩＤストライプ上で実行される後続の書き
込み動作に関しては、シングルパリティ情報のみを生成して記憶することができる。例え
ば、サポートされている冗長性の量を変更した後の書き込み動作に関しては、後続のＲＡ
ＩＤストライプ内でストレージデバイス１７６ｋを使用しなくてもよい。また、ストレー
ジデバイス１７６ｋに記憶されたデータを無効にし、これによりストレージを解放するこ
ともできる。その後、ストレージデバイス１７６ｋの解放されたデータに対応するページ
を、他の用途に再割り当てすることができる。このパリティ保護の量を低減し、パリティ
保護データを記憶するために以前に使用されていた空間を解放するプロセスのことを、「
パリティシュレッディング」と呼ぶことができる。さらに、ストレージデバイス１７６ｋ
がＳＳＤである実施形態では、ストライプ２５０ａ内のページを書き換える前に、ストレ
ージデバイス１７６ｋ内で１又はそれ以上の消去動作を行うことができる。
【００５３】
上記のパリティシュレッディングの例を引き続き参照すると、パリティシュレッディン
グ後にストライプ２５０ａ内のストレージデバイス１７６ｋの再割り当てされたページに
記憶されたデータは、ストライプ２５０ａに対応しない他のＲＡＩＤストライプのユーザ
データ又は対応するＲＡＩＤシングルパリティ情報を保持することができる。例えば、ス
トライプ２５０ａ内のストレージデバイス１７６ａ〜１７６ｊに記憶されたデータは、パ
リティシュレッディング前に実行される１又はそれ以上の書き込み動作に対応することが
できる。ストライプ２５０ａ内のストレージデバイス１７６ｋに記憶されたデータは、パ
リティシュレッディング後に実行される１又はそれ以上の書き込み動作に対応することが
できる。同様に、ストライプ２５０ｂ内のストレージデバイス１７６ａ〜１７６ｊに記憶
されたデータは、パリティシュレッディング前に実行される１又はそれ以上の書き込み動
作に対応することができる。ストライプ２５０ｂ内のストレージデバイス１７６ｋのペー
ジは、解放後に消去して、サポートされている冗長性の量を変更した後に実行される１又
はそれ以上の書き込み動作に対応するデータに書き換えることができる。なお、冗長性情
報が複数のストレージデバイスを循環する場合、このスキームはより一層効果的となり得
る。このような実施形態では、シュレッディングにより解放される空間も、同様にストレ
ージデバイスにわたって分散される。
【００５４】
再び図８を参照すると、ストライプ２５０ｃ内のストレージデバイス１７６ｋに示す割
り当て解除されたページは、パリティシュレッディング前にＲＡＩＤダブルパリティ情報
を記憶していた可能性のある記憶位置を表す。しかしながら、現時点でこれらのページは
無効であり、未だ再割り当てされていない。上記の例では、ストレージデバイス１７６ｋ
内のページを解放して再割り当てする方法及びタイミングが、ＳＳＤの特定の特性によっ
て決まる。これらの特性の例として、１又はそれ以上のページを再プログラムする（書き
換える）前に少なくとも消去ブロック全体を消去することが挙げられる。図８からわかる
ように、パリティをシュレッドする際に、デバイス全体をシュレッドする必要はない。む
しろ、個々のストライプに関して、望むようにパリティをシュレッドすることができる。
同様に、ストライプのパリティ保護を増加させることもでき、別のデバイス上に記憶され
た保護データをストライプに追加することもできる。
【００５５】
ここで図９を参照すると、ＲＡＩＤレイアウトを動的に決定する方法の１つの実施形態
を示している。一般に、ネットワークアーキテクチャ１００及びデータストレージアレイ
１２０ａ〜１２０ｂ内で具体化される構成要素は、方法９００に従って動作することがで
きる。図９には、２つのプロセス９１０及び９２０を示している。これらのプロセスの各
々は、同時に又は所与の順序で動作することができる。さらに、この実施形態のステップ
を順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なう
ことができるもの、同時に行うことができるもの、他のステップと組み合わせることがで
きるもの、及び別の実施形態には存在しないものもある。ブロック９１０は、ストレージ
制御システムが、システム内のストレージデバイスの特性及び挙動をモニタするプロセス
を示す（ブロック９１２）。例えば、図６で説明したような特性を観察及び／又は記録す
ることができる。信頼性の変化などの特定の状態が検出された場合（判定ブロック９１４
）、記憶したデータに使用する保護の量を変更することができる（ブロック９１６）。例
えば、所与のデバイスの使用年数が比較的短い場合には、デバイスの信頼性が分からない
ことがある（例えば、デバイスが「初期故障」を起こして比較的早い時期に機能しなくな
ることもある）。従って、ＲＡＩＤストライプ毎に１又はそれ以上の追加のストレージデ
バイスを使用して、パリティ情報を記憶することができる。その後の時点で、時間ととも
にこれらのデバイスが信頼できると判明した時に、この追加の保護を除去することができ
る。様々な実施形態では、デバイスのエラー率に関する特性を維持することができる。例
えば、訂正可能な及び／又は訂正不能なエラーに関する特性を維持し、これらを使用して
所与のデバイスの信頼性に関する判断を行うことができる。ストレージコントローラは、
この情報に基づいて、デバイス又はストライプの様々な保護レベルを動的に変更すること
ができる。
【００５６】
図９のブロック９２０は、ストレージのストライプ又はその他の部分を割り当てる時点
で（判定ブロック９２２）、データに使用すべきレイアウト及び保護レベルに関する決定
を行なう（ブロック９２４）ことができるプロセスを大まかに示すものである。なお、こ
の時にブロック９１０のプロセスを実施することもできる。或いは、既にプロセス９１０
によって保護レベルが決定され記憶されている場合もある。この場合、ブロック９２４の
決定は、この記憶されているデータに基づくことができる。１つの実施形態では、所与の
レイアウトを決定すると、このレイアウトに使用すべき特定のデバイスをデバイスグルー
プから選択することができる（ブロック９２５）。例えば、１つの実施形態では、２０個
のデバイスからなるグループを使用することができる。５＋２のレイアウトを決定した場
合、この２０個のデバイスからなるグループから任意の７つのデバイスを使用するように
選択することができる。また、選択した５＋２のレイアウトによるその後の書き込みにお
いて、この同じ７つのデバイスを使用する必要はない。ストライプのレイアウト、保護レ
ベル及びデバイスを決定した後、このストライプに書き込みを行うことができる（ブロッ
ク９２６）。
【００５７】
様々な実施形態では、ＲＵＳＨアルゴリズムを利用して、所与のストライプのデータ及
び冗長性情報がいずれのデバイス上に存在するようになるかを判断することができる。例
えば、ＲＵＳＨアルゴリズムを使用して、ストレージデバイス１７６ａ〜１７６ｋの所与
のストライプの８＋２のＲＡＩＤレイアウトに利用すべき特定のデバイスを選択すること
ができる。一般的に言えば、本明細書では、一般にＭ＋Ｎのレイアウトは、所与のデータ
ストライプのＭ個のデータデバイス及びＮ個のパリティデバイスを含むレイアウトを表す
ことができる。また、上述したように、パリティを完全に特定のデバイス内に配置するの
ではなく、デバイスにわたって分散させることもできる。従って、８＋２のレイアウトは
、１０個のデバイスにわたってストライピングされたデータ及びパリティを含むことがで
き、これらのデバイスのうちの８つがデータを記憶し、２つがパリティを記憶する。その
後のある時点で、１２＋２のレイアウトを選択することができる。このように、書き込み
を行う（例えば、ストライプを書き込む）時点で、所望のレイアウト及び保護特性を動的
に決定することができる。１つの実施形態では、ストレージデバイス１７６ａ〜１７６ｋ
が、３０個、５０個、又はそれ以上のストレージデバイスなどの、１０個よりも多くのス
トレージデバイスを含むことができる。しかしながら、８＋２のレイアウトによるストラ
イプでは、ストレージデバイスのうちの１０個しか利用されない。なお、デバイスのうち
の任意の１０個を選択し、ストライプを記憶する際に使用するこれらの１０個のデバイス
を選択するために、任意の好適なアルゴリズムを使用することができる。例えば、ＣＲＵ
ＳＨアルゴリズムを使用して、所与の８＋２のＲＡＩＤレイアウトのために、ストレージ
デバイス１７６ａ〜１７６ｋのうちのいずれの１０個を利用すべきかを選択することがで
きる。
【００５８】
ストレージデバイス１７６ａ〜１７６ｋのために選択される８＋２のＲＡＩＤレイアウ
トの１つの例では、これらのストレージデバイスのうちの２つを使用して、パリティ情報
などのエラー訂正符号（ＥＣＣ）情報を記憶することができる。この情報を使用して、再
構成読み込み要求を行うことができる。再び図８を参照すると、この例では、ＲＡＩＤダ
ブルパリティ情報を記憶するためにストレージデバイス１７６ｊ及び１７６ｋを選択する
ことができる。この場合も、パリティ情報を常に同じストレージデバイスに記憶するので
はなく、ＲＡＩＤアレイに含まれるストレージデバイス１７６ａ〜１７６ｋの各々の間で
循環式に記憶することができる。図示及び説明を簡単にするために、ストレージデバイス
１７６ｊ及び１７６ｋがＲＡＩＤダブルパリティを記憶しているものとして説明する。
【００５９】
ブロック９２６において、書き込み動作の実行中に、ＲＡＩＤアレイに含まれる複数の
ストレージデバイスにわたり、メタデータ、ユーザデータ、デバイス内パリティ情報及び
デバイス間パリティ情報をＲＡＩＤストライプとして書き込むことができる。ブロック９
１２において、ＲＡＩＤエンジン１７８は、ＲＡＩＤアレイ内の１又はそれ以上のストレ
ージデバイスの挙動をモニタすることができる。１つの実施形態では、ＲＡＩＤエンジン
１７８が、図４に示すようなモニタ４１０及びデータレイアウトロジック４２０を含むこ
とができる。ＲＡＩＤエンジン１７８は、少なくとも所与のストレージデバイスの使用年
数、エラー数及びエラータイプ、最後のデータ割り当て以降に検出された構成変更、所与
のデータの使用年数、及びＲＡＩＤアレイ内の記憶空間の現在の使用状況などをモニタす
ることができる。
【００６０】
ＲＡＩＤエンジン１７８によりモニタされたデータは、図４に示すデバイスユニット４
００ａ〜４００ｗの１つなどのＲＡＭ１７２に記憶することができる。このデータを記憶
するために、図５及び図６に示す例のようなテーブルを使用することができる。対応する
ＲＡＩＤエンジンに含まれるロジックは、ストレージデバイスの最新の統計値をモニタす
ることにより、ストレージデバイスの挙動を検出して予測することができる。例えば、こ
のモデルは、所与のストレージデバイスのエラー率の増加が近いことを予測することがで
きる。
【００６１】
（単複の）ストレージデバイスの信頼性が増したことが検出された（条件付きブロック
９０８）場合、ブロック９１０において、ＲＡＩＤエンジンは、システム内のデータ保護
レベルを低下させることができる。例えば、１つの実施形態では、ストレージサブシステ
ムに記憶されているパリティ情報の量を減少させることができる。上記の例に関して、Ｒ
ＡＩＤエンジンは、対応する８＋２のＲＡＩＤアレイのＲＡＩＤダブルパリティをＲＡＩ
Ｄシングルパリティに低下させて、８＋１のＲＡＩＤアレイに変換することができる。他
の例では、所与のＲＡＩＤアレイが、ブロック９１６の前に、ＲＡＩＤアーキテクチャに
おいてＮレベルの量の冗長性又はパリティを利用していることがある。ブロック９１６に
おいて、ＲＡＩＤエンジンは、Ｎ＞１かつ１＜ｍ＜Ｎとする（Ｎ−ｍ）レベルの量の冗長
性を利用すると決定することができる。従って、その後の所与のＲＡＩＤストライプの書
き込み動作中には、所与のＲＡＩＤストライプ内で、より少ないｍ個のストレージデバイ
スに書き込みが行われるようになる。
【００６２】
ＲＡＩＤエンジン（又は別の構成要素）は、システム内のデータ保護レベルを低下させ
るために、上述したようなパリティシュレッディングを行うことができる。その後、スト
レージコントローラ１７４は、シュレッディング動作の結果として解放されたページを、
その後の書き込み動作で使用されるように再割り当てすることができる。
【００６３】
上述したように、ストレージデバイス１７６ａ〜１７６ｋの各々が古くなってデータで
満たされると、ＲＡＩＤアレイから追加のパリティ情報を除去することができる。メタデ
ータ、ユーザデータ、対応するデバイス内冗長性情報、及びデバイス間冗長性情報の一部
は残存する。８＋２のＲＡＩＤアレイを使用した上記の例に関しては、ストレージデバイ
ス１７６ａ〜１７６ｊに記憶された情報が残存する。一方、追加のデバイス間冗長性情報
又は追加のパリティ情報は、ＲＡＩＤアレイから除去することができる。例えば、ストレ
ージデバイス１７６ｋに記憶された追加のパリティ情報を、ＲＡＩＤストライプから除去
することができる。
【００６４】
上記の例でストレージデバイス１７６ａ〜１７６ｊに記憶された情報などの残存した情
報は、適所に残存することができる。上記の例におけるストレージデバイス１７６ｋ内の
対応するページなどの、追加のパリティ情報を記憶する記憶空間は、その後の書き込み動
作のために再利用して再割り当てすることができる。１つの実施形態では、個々の新たな
割り当てにより、新たな仮想アドレスが受け取られる。個々の新たな割り当ては、所与の
サイズ、所与の配置又は構成を有することができ、所与の（仮想又は物理）記憶空間に適
応することができる。１つの実施形態では、ストレージデバイス１７６ａ〜１７６ｋの各
々及びストレージデバイス内の各割り当てページが、識別情報を含むヘッダを有する。こ
のような識別情報により、所与の構成を変更することなく、解放された追加のパリティ情
報のために記憶空間を再利用できるようになる。
【００６５】
ストレージデバイス１７６ａ〜１７６ｋの１又はそれ以上がＳＳＤである実施形態では
、消去ブロック内の１又はそれ以上のページを再プログラムする前に消去ブロックが消去
される。従って、ストレージデバイス１７６ｋがＳＳＤである実施形態では、ストレージ
デバイス１７６ｋ内の解放されたページを再プログラムする前に、対応する消去ブロック
が消去される。元々の８＋２のＲＡＩＤアレイを使用する上記の例に関しては、ページに
データ２１０を再プログラムする前に、ストライプ２５０ａ〜２５０ｂ内のストレージデ
バイス１７６ｋの１又はそれ以上の消去ブロックが消去される。この時、元々の８＋２の
ＲＡＩＤアレイは８＋１のＲＡＩＤアレイになっており、ストレージデバイス１７６ｊは
、パリティシュレッディング前に書き込まれたＲＡＩＤストライプにシングルパリティ情
報を提供する。
【００６６】
当業者には周知のように、所与のストレージデバイスの読み込み又は書き込みエラー中
には、対応するＲＡＩＤストライプ内のサポートされているデバイス間パリティ情報から
データを再構成することができる。この再構成されたデータをストレージデバイスに書き
込むことができる。しかしながら、この再構成されたデータがストレージデバイスに対し
て書き込みエラーとなった場合、このストレージデバイス上に記憶されている全てのデー
タを、対応するパリティ情報から再生することができる。この再生されたデータは、別の
場所に再配置ことができる。フラッシュメモリでは、フラッシュ変換層（ＦＴＬ）が、デ
ータの記憶位置をリマップする。また、フラッシュメモリでは、データの再配置が、消去
ブロック内の対応するページを再プログラムする前に消去ブロック全体を消去することを
含む。マッピングテーブルを消去ブロック対ページの粒度に維持することにより、リマッ
ピングテーブルをよりコンパクトにすることができる。さらに、再配置中には、パリティ
シュレッディング中に解放された追加のページを使用することができる。
【００６７】
オフセットパリティ
ここで図１０を参照すると、フレキシブルなＲＡＩＤデータレイアウトアーキテクチャ
のさらに別の実施形態を示す汎用ブロック図を示している。図８に示す汎用ブロック図と
同様に、フレキシブルなＲＡＩＤデータレイアウトアーキテクチャを使用することができ
る。ストレージデバイス１７６ａ〜１７６ｋは、複数のストレージデバイスにわたってレ
イアウトされた複数のＲＡＩＤストライプを含む。ストレージデバイス１７６ａ〜１７６
ｋの各々は複数のページを含むが、図を簡単にするために、ページ１０１０及びページ１
０２０にしかラベルを付けていない。図示の例では、ストレージデバイス１７６ｊ及び１
７６ｋがダブルパリティ情報を記憶するダブルパリティＲＡＩＤデータレイアウトが選択
されている。
【００６８】
ストレージデバイス１７６ａ〜１７６ｋのページの各々は、特定のタイプのデータを記
憶する。一部のページは、ユーザデータ２１０及び対応する生成されたデバイス間パリテ
ィ情報２４０を記憶する。他のページは、対応する生成されたデバイス内パリティ情報２
２０を記憶する。さらに他のページは、メタデータ２４２を記憶する。メタデータ２４２
は、ページヘッダ情報、ＲＡＩＤストライプ識別情報、及び１又はそれ以上のＲＡＩＤス
トライプのログデータなどを含むことができる。ストレージデバイス１７６ａ〜１７６ｋ
のページの各々は、デバイス間パリティ保護及びデバイス内パリティ保護に加え、各所与
のページに記憶されたチェックサムなどの追加の保護を含むこともできる。様々な実施形
態では、各ストライプの最初の単一のメタデータページを、他のストライプヘッダから再
生することができる。或いは、データをデバイス間パリティによって保護できるように、
このページがパリティシャード内の異なるオフセットに存在することもできる。「シャー
ド」は、デバイスの一部を表す。従って、パリティシャードは、パリティデータを記憶す
るデバイスの一部を意味する。
【００６９】
物理層
様々な実施形態では、本明細書で説明するシステムが物理層を含み、これを通じてシス
テムの他の要素がストレージデバイスと通信することができる。例えば、スケジューリン
グロジック、ＲＡＩＤロジック及びその他のロジックは、ソフトウェア及び／又はハード
ウェアのあらゆる好適な組み合わせを含む物理層を介してストレージデバイスと通信する
ことができる。一般に、物理層は、永続ストレージへのアクセスの提供及びデータストレ
ージの完全性に関する機能の実行を含む様々な機能を実行する。
【００７０】
図１１Ａに、５００ＧＢのデバイスの仮想デバイスレイアウトの１つの実施形態を示す
。様々な実施形態では、本明細書で説明するストレージデバイスの最初にパーティション
テーブル１１０１をフォーマットし、デバイスの最後にパーティションテーブルのコピー
をフォーマットすることができる。また、最初と最後のブロックにデバイスヘッダ１１０
３を記憶することができる。例えば、フラッシュベースのストレージデバイスでは、最初
と最後の消去ブロックにデバイスヘッダを記憶することができる。上述したように、消去
ブロックは、典型的には２５６ＫＢ〜１ＭＢのフラッシュ構造である。第１の消去ブロッ
ク内には、追加の未使用空間を確保することができる（パディング１１０５）。各デバイ
スには、ログ及び診断情報１１０７を書き込むための第２の消去ブロックを確保すること
ができる。これらの間の残りの消去ブロックは、複数の消去ブロックのアロケーションユ
ニット（ＡＵ）１１０９に分割される。ＡＵサイズは、デバイス毎に十分な数のＡＵが存
在して良好な割り当て粒度が得られるように選択することができる。１つの実施形態では
、オーバーヘッドを避けるのに十分な多さではあるが、追跡しやすいように多すぎない単
位での割り当てを可能にするように、デバイス上に１０，０００個ほどの範囲内のＡＵが
存在する。ＡＵ（割り当て済み／空き／消去済み／不良）の状態の追跡は、ＡＵ状態テー
ブルに維持することができる。ＡＵの摩耗率は、摩耗レベルテーブルに維持することがで
き、総エラー数は、ＡＵエラーテーブルに維持することができる。
【００７１】
様々な実施形態では、物理層が、（異なるノード上に存在し得る）デバイスの組にわた
る各デバイス内の１つのセグメントシャードを含むセグメント内で空間を割り当てる。図
１１Ｂに、セグメント及びそのセグメントの様々な識別可能部分の１つの実施形態を、１
つの考えられるセグメントレイアウトで示す。図示の実施形態では、複数のデバイスに記
憶された単一のセグメントを示している。データデバイス：データ０〜データＮ、並びに
パリティデバイス：パリティＰ及びパリティＱを示す。１つの実施形態では、各セグメン
トシャードが、各デバイス上でシャードのサイズが等しくなるように、デバイスに１又は
それ以上のアロケーションユニットを含む。セグメントシャードを示すために、セグメン
トシャード１１２３を挙げている。図１１Ｂには、Ｉ／Ｏ読み込みサイズ１１２７も示し
ており、これは１つの実施形態ではページに対応する。Ｉ／Ｏシャードのページパリティ
の１又はそれ以上のページを含むことができるＩ／Ｏパリティチャンク１１２９も示して
いる。
【００７２】
１つの実施形態では、各セグメントが、以下のパラメータのうちの１又はそれ以上を含
むことができる独自の構成を有する。
（１）ＲＡＩＤレベル−セグメント内のデバイス間保護に使用されるＲＡＩＤレベル。
これにより、ミラーリング、パリティ、又はＥＣＣ  ＲＡＩＤ、及びどれだけのセグメン
トシャードがパリティを含むかを決定することができる。
（２）デバイスレイアウトＩ／Ｏシャードサイズ−書き込み中に各デバイスにわたるス
トライピングに使用するサイズを表す。このサイズは、典型的には２５６ＫＢ〜１ＭＢと
なり、恐らくは各デバイス上の消去ブロックサイズの倍数となる。図１１Ｂには、例示目
的でＩ／Ｏシャードサイズ１１２５を挙げている。
（３）Ｉ／Ｏ読み込みサイズ−論理的読み込みサイズである。各Ｉ／Ｏシャードを一連
の論理ページとしてフォーマットすることができる。さらに各ページは、ページ内のデー
タのヘッダ及びチェックサムを含むことができる。読み込みが発行された場合、この読み
込みは、１又はそれ以上の論理ページに対するものとなり、チェックサムを使用して各ペ
ージ内のデータを検証することができる。
（４）Ｉ／ＯシャードＲＡＩＤレベル−Ｉ／Ｏシャードは、再生中に見つかった潜在的
なエラーを処理すべきシャード内パリティを有する。このパラメータは、どのタイプのパ
リティがシャード内保護に使用されているか、従ってどれだけのシャード内パリティのコ
ピーが維持されるかを決定する。
（５）Ｉ／Ｏパリティチャンク−様々な実施形態では、ストレージデバイスが、ページ
単位でＥＣＣを行うことができる。従って、エラーが見つかった場合、物理ページ全体の
不具合を示している可能性がある。Ｉ／Ｏパリティチャンクは、セグメント内の各デバイ
ス上の物理ページサイズの最小公倍数であり、Ｉ／Ｏパリティチャンク又はＩ／Ｏ読み込
みサイズのうちの大きい方にＩ／Ｏシャードをストライピングすることにより、シャード
内パリティが計算される。ページパリティの１又はそれ以上のページを含めることができ
る。様々な実施形態では、チェックサム検証が失敗に終わった場合、このパリティを使用
してデータを再生することができる。
【００７３】
様々な実施形態では、個々の新たなセグメントに書き込みが行われる際に、そのセグメ
ントのＲＡＩＤ構成が選択される。ＲＡＩＤ構成の選択は、現在のアクティブなノード及
びデバイスの組、並びにセグメント内のデータのタイプなどの因子に基づくことができる
。例えば、１０個のノード又はデバイスが利用可能な場合、（８＋２）のＲＡＩＤ６の構
成を選択し、２つのデバイス又はノード故障に耐えるように、これらのノードにわたって
セグメントをストライピングすることができる。その後、ノードが故障した場合、次のセ
グメントを（７＋２）のＲＡＩＤ６の構成に切り替えることができる。セグメント内では
、セグメントシャードの一部がデータを含み、一部が（パリティなどの）ＥＣＣを含む。
【００７４】
１つの実施形態では、５種類のセグメントが存在する。これらのセグメントのうちの３
つは、ＡＵ状態テーブル、ＡＵエラーテーブル及び摩耗率テーブルに対応する。いくつか
の実施形態では、これらの３つのセグメントをミラーリングしてさらに保護することがで
きる。これらの３つのセグメントに加え、ミラーリングを通じてさらに保護することもで
きるメタデータセグメントが存在する。最後に、クライアントブロック及びログ情報を保
持するデータセグメントが存在する。ログ情報は、セグメント内のクライアントブロック
に関連する最新情報を含む。データセグメントは、パリティＰ及びパリティＱシャードを
使用して、図１１Ｂに示すようなＲＡＩＤ６によって保護される可能性が高い。上記に加
え、起動時に全てのセグメントシャードのヘッダからの情報を投入されるメモリ内データ
構造としてセグメントテーブルが維持される。いくつかの実施形態では、このテーブルを
全てのノード上で完全にキャッシュして、あらゆるノードがストレージアクセスを物理ア
ドレスに変換できるようにすることができる。しかしながら、他の実施形態では、論理基
準を取ってデータが記憶されているセグメントレイアウトノードを識別できるセグメント
テーブルを各ノードが有することができるオブジェクトストレージモデルを使用すること
ができる。その後、ノード上の正確な記憶位置を識別するための要求がノードに伝えられ
る。図１１Ｂには、セグメント内のかなりの量の空間を占めるあらゆる（ボリューム、ス
ナップショットの）組み合わせを識別するセグメントテールデータも示す。スナップショ
ットを除去する場合、データスクラバが、このデータに基づいて、ガベージコレクション
を行うセグメントの識別を支援することができる。
【００７５】
１つの実施形態では、基本書き込み単位が、セグメント内のデバイスの各々における１
つのＩ／Ｏシャードであるｓｅｇｉｏである。ｓｅｇｉｏ内の各論理ページには、ページ
のチェックサム（「メディア」チェックサムと呼ぶことができる）を含むページヘッダが
、データの実際のページサイズが１ページをわずかに下回るようにフォーマットされる。
セグメントのパリティシャード内のページについては、データページ内のページチェック
サムがパリティページによって保護されるように、ページヘッダが小さくなっている。各
Ｉ／Ｏシャードの最終ページは、この場合も小さなヘッダを有して、消去ブロック内の全
てのチェックサム及びページデータをページ不具合から保護するパリティページである。
ここで言うページサイズとは、１又はそれ以上の物理フラッシュページとすることができ
るＩ／Ｏ読み込みサイズのことである。セグメントによっては、物理ページよりも小さな
読み込みサイズを使用することができる。この方法は、検索情報に対する読み込みをイン
デックスで駆動することができ、より小さなデータ部分を読み込みながら所望のデータを
取得できるメタデータに対して行うことができる。このような場合、物理ページの半分を
読み込むということは、より少ないデータをＩ／Ｏバス（及びネットワーク）に結び付け
て、より少ないデータを検証する（例えば、チェックサムを行う）ことを意味する。ある
実施形態は、物理ページよりも小さい読み込みサイズをサポートするために、消去ブロッ
クの最後に複数のパリティページを含んで、全てのパリティページの全体的サイズがフラ
ッシュページサイズに等しくなるようにすることができる。
【００７６】
消去ブロックの摩耗率が増すにつれ、エラーの可能性は高くなる。摩耗率を追跡するこ
とに加え、高いエラー確率が識別される１又は複数の消去ブロック上に、エラーが観察さ
れる頻度に関するデータを維持することもできる。消去ブロックによっては、単一のＲＡ
ＩＤ５パリティの代わりに、消去ブロックの最後にダブル又トリプルエラー訂正パリティ
を保持することを決定できるものもある。この場合、これに応じてｓｅｇｉｏのデータペ
イロードを低減することができる。全ての消去ブロックではなく、ｓｅｇｉｏ内の不良な
消去ブロックのみを低減することが必要となり得る。消去ブロック内のページヘッダを使
用して、いずれのページがパリティであり、いずれのページがデータであるかを識別する
ことができる。
【００７７】
ストレージからページが読み込まれる時には常に、ページチェックサムを使用してコン
テンツを検証することができる。この検証がうまくいかなかった場合、消去ブロックパリ
ティを使用してデータの再生を試みることができる。これがうまくいかなかった場合、セ
グメントのデバイス間ＥＣＣを使用してデータを再構成することができる。
【００７８】
データセグメントでは、ペイロード領域を２つの領域に分割することができる。記憶さ
れたクライアントブロックに関する最新情報を含むことができるログデータとしてフォー
マットされたページが存在するようになる。ペイロード領域の残りは、クライアントブロ
ックとしてフォーマットされたページを含むことができる。このクライアントブロックデ
ータは、圧縮された形で記憶することができる。数多くの圧縮アルゴリズムが可能であり
、企図される。また、様々な実施形態では、Ｉｎｔｅｌ（登録商標）高度暗号化標準命令
を使用してチェックサムを生成することができる。また、データと同じページ内に存在し
て、データの圧縮に使用するアルゴリズムの識別などの、クライアントブロックを読み込
むために必要な情報を含むクライアントブロックのヘッダも存在することができる。ガベ
ージコレクションは、ｓｅｇｉｏ内のクライアントブロックヘッダ及びログエントリの両
方を利用することができる。また、クライアントブロックは、重複除外、及び解凍データ
の正しさをチェックするために使用される未圧縮データのチェックサムとすることができ
るデータハッシュを有することができる。
【００７９】
いくつかの実施形態では、セグメント及びｓｅｇｉｏが、これらを順序付けるために使
用される単調増加するＩＤ番号を有することができる。ｓｅｇｉｏへの書き込みの一部と
して、論理層が、以前のフラッシュに対する依存を記録することができる。起動時には、
物理層が、セグメント及びｓｅｇｉｏｓの順序付きリストを構築することができ、ｓｅｇ
ｉｏが別の未完成のｓｅｇｉｏに依存している場合、これをロールバックして書き込まれ
ていないと見なすことができる。
【００８０】
摩耗率テーブル
各デバイスのローカルなセグメントには、各デバイスの摩耗率テーブル（ＷＬＴ）を記
憶することができる。この情報を、各セグメントシャードのヘッダに記憶することもでき
る。１つの実施形態では、摩耗情報が、アロケーションユニットが消去及び再利用された
回数を表す整数である。摩耗情報は正確でない場合もあるので、一定量の行動が行われた
場合、又は相当期間にわたってシステムがアイドルであった場合に、デバイスに対するテ
ーブルのフラッシュを行なうことができる。ＷＬＴは、新たなＷＬＴセグメントを割り当
てる際に古いＷＬＴセグメントをクリーニングすることに関与することもできる。追加の
保護層を加えるために、古いコピーを解放する前にこれらを維持することができる。例え
ば、テーブルマネージャが、ＷＬＴエントリの以前の消去ブロック及び現在の消去ブロッ
クを常に保持し、新たなセグメントを割り当てる場合には、この新たなセグメントの第２
の消去ブロックに書き込みを行うまで古いセグメントを解放しないように保証する。
【００８１】
ＡＵ状態テーブル
ＡＵ状態テーブル（ＡＳＴ）は、各ＡＵの状態を追跡する。この状態には、空き、割り
当て済み、消去済み、及び不良がある。このＡＳＴを、デバイス上のセグメントに記憶す
ることができる。割り当て済み又は空きへの状態変更は同期更新とすることができ、不良
又は消去済みへの状態変更は非同期更新とすることができる。一般に、このテーブルは十
分に小さく、ＮＶＲＡＭに記録できるだけの十分な更新を有することができる。ＡＳＴは
、新たなセグメントを割り当てる際に古いＷＬＴセグメントをクリーニングすることに関
与することができる。ＡＳＴは、ドライブ上の各ＡＵの第１のブロックをスキャンするこ
とによって完全に回復できるので、古いＡＳＴのコピーを保持する必要はない。
【００８２】
ＡＵエラーテーブル
ＡＵエラーテーブル（ＡＥＴ）を使用して、各ＡＵ内の回復可能エラー及び回復不能エ
ラーの数を追跡することができる。ＡＥＴは、デバイス上のセグメントに記憶され、各フ
ィールドは、２バイトの整数とすることができる。このテーブル全体は、ＡＵ当たり４バ
イトの比較的小さなものとすることができる。
【００８３】
ここで図１１Ｃを参照すると、異なるページタイプ内のデータストレージ構成の１つの
実施形態を示す汎用ブロック図を示している。図示の実施形態では３つのページタイプを
示しているが、他のタイプも可能であり、企図される。図示のページタイプは、メタデー
タ１１５０を含むページ１１１０、ユーザデータ１１６０を含むページ１１２０、及びパ
リティ情報１１７０（デバイス間又はデバイス内）を含むページ１１３０を含む。ページ
１１１０〜１１３０の各々は、ヘッダ及び識別情報を含むことができるメタデータ１１４
０を含む。また、１１１０〜１１３０ページの各々は、対応するチェックサム又はその他
のエラー検出及び／又は訂正符号などのページ内エラー回復データ１１４２を含むことが
できる。このチェックサム値により、所与のデバイスグループ内のストレージデバイス１
７６ａ〜１７６ｋに記憶されたデータをさらに保護することができる。
【００８４】
さらに、ページ１１３０は、ページ間エラー回復データ１１４４を含むことができる。
このデータ１１４４は、他のストレージデバイスに記憶されたページ内データ１１４２か
ら導出されたＥＣＣ情報とすることができる。例えば、再び図１０を参照すると、デバイ
ス間パリティ情報２４０を記憶するストレージデバイス１７６ｊ内の各ページが、ページ
間エラー回復データ１１４４を記憶することもできる。データ１１４４は、パリティ、チ
ェックサム、又はストレージデバイス１７６ａ〜１７６ｉの１又はそれ以上に記憶された
ページ内エラー回復データ１１４２から生成されたその他の値とすることもできる。１つ
の実施形態では、データ１１４４が、他のストレージデバイスに記憶された１又はそれ以
上の他のチェックサム値１１４２から生成されたチェックサム値である。ストレージデバ
イス１７６ｊの所与のページ内のデータ１１４４を、ストレージデバイス１７６ａ〜１７
６ｉの１又はそれ以上の対応するページ内のデータ１１４２と位置合わせするために、対
応するページにパディング１１４６を追加することができる。
【００８５】
１つの実施形態では、エンドユーザアプリケーションが、ＨＤＤでは５１２バイトのセ
クタの境界上でＩ／Ｏ動作を実行する。追加の保護を加えるために、８バイトのチェック
サムを加えて５２０バイトのセクタを形成することができる。様々な実施形態では、フラ
ッシュメモリベースのシステム内で圧縮及びリマッピングを行って、セクタ境界ではなく
バイト境界上にユーザデータを配置可能にすることができる。また、ヘッダの後であって
ユーザデータの前のページ内にチェックサム（８バイト又は４バイトなど）を配置して、
これを圧縮することができる。ページ１１１０〜１１３０の各々には、この配置を示して
いる。
【００８６】
エンドユーザアプリケーションが５１２バイトのセクタを読み込む場合、１つの実施形
態では２ＫＢ〜８ＫＢのサイズの対応するページが、ページの最初に８バイトのチェック
サムによる追加の保護を有する。様々な実施形態では、２セクタサイズの非電力のために
このページをフォーマットしなくてもよい。ページ１１１０〜１１２０に示すように、チ
ェックサムをページ内に２、３バイトオフセットさせることができる。このオフセットに
より、ページ１１３０などのパリティページが、パリティページをカバーするチェックサ
ム、及び他のページのチェックサムを保護するためのＥＣＣを記憶できるようになる。
【００８７】
さらに別の保護レベルでは、チェックサム値を計算する際にデータ位置情報を含めるこ
とができる。ページ１１１０〜１１３０の各々におけるデータ１１４２は、この情報を含
むことができる。この情報は、論理アドレス及び物理アドレスの両方を含むことができる
。この情報には、セクタ番号、データチャンク及びオフセット番号、トラック番号、平面
番号などを含めることもできる。
【００８８】
代替の構成
ここで図１２を参照すると、ハイブリッドＲＡＩＤデータレイアウト１２００の１つの
実施形態を示す汎用ブロック図を示している。３つの区分を示しているが、あらゆる数の
区分を選択することができる。各区分は、図１に示すデバイスグループ７１３ａ〜１７３
ｂなどの別個のデバイスグループに対応することができる。各区分は、複数のストレージ
デバイスを含む。１つの実施形態では、ＣＲＵＳＨアルゴリズムなどのアルゴリズムを利
用して、データストレージに使用すべきＲＡＩＤデータレイアウトアーキテクチャにおい
ていずれのデバイスを使用すべきかを選択することができる。
【００８９】
図示の例には、Ｌ＋１のＲＡＩＤアレイ、Ｍ＋１のＲＡＩＤアレイ及びＮ＋１のＲＡＩ
Ｄアレイを示している。様々な実施形態では、Ｌ、Ｍ及びＮが全て異なってもよく、同じ
であってもよく、又はこれらの組み合わせであってもよい。例えば、区分１にＲＡＩＤア
レイ１２１０を示している。他のストレージデバイス１２１２は、区分１内の他のＲＡＩ
Ｄアレイの候補である。同様に、ＲＡＩＤアレイ１２２０は、区分２内の所与のＲＡＩＤ
アレイを示す。他のストレージデバイス１２２２は、区分２内の他のＲＡＩＤアレイの候
補である。ＲＡＩＤアレイ１２３０は、区分３内の所与のＲＡＩＤアレイを示す。他のス
トレージデバイス１２３２は、区分３内の他のＲＡＩＤアレイの候補である。
【００９０】
ＲＡＩＤアレイ１２１０、１２２０及び１２３０の各々では、ストレージデバイスＰ１
が、それぞれのＲＡＩＤアレイ内のＲＡＩＤシングルパリティ保護を行う。ストレージデ
バイスＤ１〜ＤＮは、それぞれのＲＡＩＤアレイ内のユーザデータを記憶する。この場合
も、ストレージデバイスＤ１〜ＤＮとＰ１の間で、ユーザデータ及びＲＡＩＤシングルパ
リティ情報の記憶を循環させることができる。しかしながら、デバイスＤ１〜ＤＮにユー
ザデータが記憶されたものとして説明する。同様に、図示及び説明を容易にするために、
デバイスＰ１にＲＡＩＤシングルパリティ情報が記憶されたものとして説明する。
【００９１】
１又はそれ以上の所与のＲＡＩＤアレイに対してさらなる量の冗長性をサポートするた
めに、３つの区分の各々のうちの１又はそれ以上のストレージデバイスを選択することが
できる。例えば、区分３内のストレージデバイスＱ１を、ＲＡＩＤアレイ１２１０、１２
２０及び１２３０の各々と組み合わせることができる。ストレージデバイスＱ１は、ＲＡ
ＩＤアレイ１２１０、１２２０及び１２３０の各々にＲＡＩＤダブルパリティ情報を提供
することができる。この追加のパリティ情報は、アレイ１２１０、１２２０又は１２３０
の１つにストライプが書き込まれた時に生成され記憶される。さらに、この追加のパリテ
ィ情報は、アレイ１２１０、１２２０及び１２３０の各々のストライプをカバーすること
ができる。従って、総ストレージデバイス数に対するＲＡＩＤパリティ情報を記憶するス
トレージデバイスの数の比率が小さくなる。例えば、区分の各々がＮ＋２のＲＡＩＤアレ
イを使用する場合、総ストレージデバイス数に対するＲＡＩＤパリティ情報を記憶するス
トレージデバイスの数の比率は、３（２）／（３（Ｎ＋２））、すなわち２／Ｎ＋２であ
る。対照的に、ハイブリッドＲＡＩＤレイアウト１２００の比率は、（３＋１）／（３（
Ｎ＋１））、すなわち４／（３（Ｎ＋１））である。
【００９２】
ユーザデータの記憶に使用するストレージデバイスの数を増やすことにより、上記の比
率を低減することが可能である。例えば、ストレージデバイスＱ１を利用するのではなく
、区分の各々が３Ｎ＋２のＲＡＩＤアレイを利用するようにすることができる。このよう
な場合、総ストレージデバイス数に対するＲＡＩＤパリティ情報を記憶するストレージデ
バイスの数の比率は、２／（３Ｎ＋２）である。しかしながら、再構成読み込み動作中に
は、単一のデバイス故障のための再構成読み込み要求を（３Ｎ＋１）個のストレージデバ
イスが受け取る。対照的に、ハイブリッドＲＡＩＤレイアウト１２００では、単一のデバ
イス故障のための再構成読み込み要求をＮ個のストレージデバイスしか受け取らない。
【００９３】
なお、３つの区分の各々は、異なるＲＡＩＤデータレイアウトアーキテクチャを利用す
ることができる。所与のＲＡＩＤデータレイアウトアーキテクチャの選択は、総ストレー
ジデバイス数に対するＲＡＩＤパリティ情報を記憶するストレージデバイスの数の所与の
比率に基づくことができる。また、この選択は、再構成中に再構成読み込み要求を受け取
ることができる所与のストレージデバイス数に基づくこともできる。例えば、ＲＡＩＤア
レイ１２１０、１２２０及び１２３０は、Ｌ＋ａ、Ｍ＋ｂ及びＮ＋ｃなどの構成をそれぞ
れ含むことができる。
【００９４】
区分内のＲＡＩＤアレイの１又はそれ以上に対してさらなる量の冗長性をサポートする
ために、上記の又はその他の条件に基づいてストレージデバイスＱ１などの１又はそれ以
上のストレージデバイスを選択することができる。上記のＲＡＩＤアレイ及びこれらのＲ
ＡＩＤアレイの各々に対して追加の保護を行うストレージデバイスの数Ｑを含む３つの区
分の例では、総ストレージデバイス数に対するＲＡＩＤパリティ情報を記憶するストレー
ジデバイスの数の比率は、（ａ＋ｂ＋ｃ＋Ｑ）／（Ｌ＋ａ＋Ｍ＋ｂ＋Ｎ＋ｃ＋Ｑ）である
。単一のデバイス故障の場合、上記の例における区分１〜３では、再構成読み込み要求を
受け取るストレージデバイスの数は、それぞれＬ、Ｍ及びＮである。なお、一般に上記の
説明は、図１２の３つの異なる区分について行ったものである。このような実施形態では
、所与のレイアウトが特定のデバイスグループに制限されるこの種の「ハード」区分が、
１つの区分内の再構成読み込みが別の区分の再構成読み込みと衝突しないことを保証する
ことができる。しかしながら、他の実施形態では、区分が、上述したようなハードではな
いこともある。むしろ、デバイスのプールを考えた場合、これらのデバイスのいずれから
もレイアウトを選択することができる。例えば、デバイスを大きなプールとして扱う場合
、（Ｌ＋１、Ｍ＋１、Ｎ＋１）＋１などのレイアウトを構成することが可能である。従っ
て、構成が重複し、再構成読み込みが衝突しかねない可能性がある。プールのサイズに対
してＬ、Ｍ及びＮが小さい場合、通常の読み込みに対する再構成読み込みの割合を低く保
つことができる。
【００９５】
ここで図１３を参照すると、データストレージサブシステムにおいて代替のＲＡＩＤ構
成を選択する方法１３００の１つの実施形態を示している。一般に、ネットワークアーキ
テクチャ１００及びデータストレージアレイ１２０ａ〜１２０ｂ内で具体化される構成要
素は、方法１３００に従って動作することができる。この実施形態のステップを順番に示
す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができ
るもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、
及び別の実施形態には存在しないものもある。
【００９６】
ブロック１３０２において、ストレージコントローラ１７４内のＲＡＩＤエンジン１７
８又はその他のロジックが、所与の数のデバイスを使用して、ストレージサブシステムの
各区分内のＲＡＩＤアレイにユーザデータを記憶すると決定する。その後、ＲＵＳＨ又は
その他のアルゴリズムを使用して、いずれのデバイスを使用すべきかを選択することがで
きる。１つの実施形態では、各区分が、同じ数のストレージデバイスを利用する。他の実
施形態では、各区分が、異なる固有の数のストレージデバイスを利用してユーザデータを
記憶することができる。ブロック１３０４において、ストレージコントローラ１７４が、
いくつかのストレージデバイスがサブシステムの各区分内に対応するデバイス間エラー回
復（パリティ）データを記憶するのをサポートすると決定することができる。この場合も
、各区分は、同じ数又は異なる固有の数のストレージデバイスを利用してＲＡＩＤパリテ
ィ情報を記憶することができる。
【００９７】
ブロック１３０６において、ストレージコントローラは、Ｑ個のストレージデバイスが
追加のデバイス間エラー回復（パリティ）データをサブシステムの区分にわたって記憶す
るのをサポートすると決定することができる。ブロック１３０８において、選択したスト
レージデバイスに、ユーザデータ及び対応するＲＡＩＤパリティデータを書き込むことが
できる。再び図１２を参照すると、区分１のＲＡＩＤアレイ１２１０などの所与のＲＡＩ
Ｄアレイに書き込みが行われた時に、１又はそれ以上のビットのパリティ情報を生成して
、区分３のストレージデバイスＱ１に記憶することができる。
【００９８】
ストレージコントローラ１７４が、所与の区分内で読み込み再構成を行う状態を検出し
た（条件付きブロック１３１０）場合、及び所与の区分が、ＲＡＩＤパリティ情報を保持
しているストレージデバイスを、いくつかの利用できないストレージデバイスを処理する
のに十分な数だけ有している（条件付きブロック１３１２）場合、ブロック１３１４にお
いて、この所与の区分内の１又はそれ以上の対応するストレージデバイスを使用して（単
複の）再構成読み込み動作を行う。この状態は、デバイス故障によって所与のＲＡＩＤア
レイ内のストレージデバイスを利用できないこと、又はこれらのデバイスが所与のパフォ
ーマンスレベル未満で動作していることを含むことができる。この所与のＲＡＩＤアレイ
は、所与の区分内のＲＡＩＤパリティ情報を記憶している数のストレージデバイスを使用
して、最大数の利用できないストレージデバイスを処理することができる。例えば、上記
の例の区分１のＲＡＩＤアレイ１２１０がＬ＋ａのＲＡＩＤアレイである場合、このＲＡ
ＩＤアレイ１２１０は、１＜＝ｋ＜＝ａとするｋ個のストレージデバイスが利用できない
場合に、区分１内のストレージデバイスのみを利用して読み込み再構成を行うことができ
る。
【００９９】
所与の区分が、ＲＡＩＤパリティ情報を保持しているストレージデバイスを、いくつか
の利用できないストレージデバイスを処理するのに十分な数だけ有していない（条件付き
ブロック１３１２）場合、及びこのいくつかの利用できないストレージデバイスを処理す
るのに十分なＱ個のストレージデバイスが存在する（条件付きブロック１３１６）場合、
ブロック１３１８において、１又はそれ以上の対応するＱ個のストレージデバイスを使用
して再構成読み込み動作を行う。読み込み再構成中には、ユーザデータを記憶している他
の区分内の１又はそれ以上のストレージデバイスにアクセスすることができる。これらの
ストレージデバイスの選択は、１又はそれ以上のＱ個のストレージデバイスに記憶された
パリティ情報の導出方法に基づくことができる。例えば、再び図１２を参照すると、スト
レージデバイスＱ１に記憶された対応するＲＡＩＤパリティ情報を生成するために使用さ
れた可能性があるという理由で、読み込み再構成中に区分２のストレージデバイスＤ２に
アクセスすることができる。いくつかの利用できないストレージデバイスを処理するのに
十分な数のＱ個のストレージデバイスが存在しない場合（条件付きブロック１３１６）、
ブロック１３２０において、対応するユーザデータを別のソースから読み込むことができ
、又はこれらのユーザデータを失われたものと見なすことができる。
【０１００】
なお、上述の実施形態は、ソフトウェアを含むことができる。このような実施形態では
、方法及び／又は機構を実装するプログラム命令をコンピュータ可読媒体で搬送し、又は
これに記憶することができる。プログラム命令を記憶するように構成された数多くのタイ
プの媒体が利用可能であり、これらは、ハードディスク、フロッピー（登録商標）ディス
ク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラマブルＲＯＭ（ＰＲＯＭ）、ラ
ンダムアクセスメモリ（ＲＡＭ）及び他の様々な形態の揮発性又は不揮発性ストレージを
含む。
【０１０１】
様々な実施形態では、本明細書で説明した方法及び機構の１又はそれ以上の部分が、ク
ラウドコンピューティング環境の一部を成すことができる。このような実施形態では、１
又はそれ以上の様々なモデルにより、インターネットを介してリソースをサービスとして
提供することができる。このようなモデルとして、インフラストラクチャ・アズ・ア・サ
ービス（ＩａａＳ）、プラットホーム・アズ・ア・サービス（ＰａａＳ）、及びソフトウ
ェア・アズ・ア・サービス（ＳａａＳ）を挙げることができる。ＩａａＳでは、コンピュ
ータインフラストラクチャがサービスとして配信される。このような場合、一般にサービ
スプロバイダがコンピュータ設備を所有し運営する。ＰａａＳモデルでは、開発者がソフ
トウェアソリューションを開発するために使用するソフトウェアツール及び基本設備をサ
ービスプロバイダがサービスとして供給しホストすることができる。通常、ＳａａＳは、
サービスプロバイダのライセンスソフトウェアをサービスオンデマンドとして含む。サー
ビスプロバイダは、このソフトウェアをホストすることができ、又はこのソフトウェアを
一定期間にわたって顧客に展開することができる。上記のモデルの数多くの組み合わせが
可能であり、企図される。
【０１０２】
以上、実施形態についてかなり詳細に説明したが、上記開示を完全に理解すると、当業
者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このよ
うな変形及び修正を全て含むと解釈すべきであることが意図される。
【図１】
2016184413.tif 000003
【図２】
2016184413.tif 000004
【図３】
2016184413.tif 000005
【図４】
2016184413.tif 000006
【図５】
2016184413.tif 000007
【図６】
2016184413.tif 000008
【図７】
2016184413.tif 000009
【図８】
2016184413.tif 000010
【図９】
2016184413.tif 000011
【図１０】
2016184413.tif 000012
【図１１Ａ】
2016184413.tif 000013
【図１１Ｂ】
2016184413.tif 000014
【図１１Ｃ】
2016184413.tif 000015
【図１２】
2016184413.tif 000016
【図１３】
2016184413.tif 000017