(57)【要約】再構成／再構築テーブルおよびスペース割り当てテーブルをチェックすることによる、パリティストライプが再構成されているかどうかおよびパリティストライプが割り当てられているかどうかを判断することによる、ＲＡＩＤストレージシステムにおけるデータ再構成。パリティストライプの再構成が起こる前は、障害が起こったハイブリッドドライブの不揮発性メモリをチェックしてアクセス可能かどうかを判断し、アクセス可能である場合は、再構成が起こる代わりに、新しいハイブリッドドライブにデータがコピーされる。
2016530637.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージドライブであって、そのうちの１つに障害が起こっている複数のストレージドライブを備えるＲＡＩＤストレージシステムにおけるデータ再構成のための方法であって、前記方法は、
再構成のための複数のパリティストライプから１つのパリティストライプを再構成のために選択するステップと、
再構成テーブルをチェックすることによって、前記再構成のために選択されたパリティストライプが以前に再構成されているかどうかを判断するステップであって、前記再構成テーブルが、エントリを含み、エントリの各々が、前記再構成のための複数のパリティストライプの少なくとも１つに対応する再構成状態を示し、各再構成状態が、前記少なくとも１つの対応するパリティストライプが以前に再構成されているかどうかを示す、ステップと、
スペーステーブルをチェックすることによって、前記選択されたパリティストライプが以前に割り当てられているかどうかを判断するステップであって、前記スペーステーブルが、前記再構成のための複数のパリティストライプの少なくとも１つに対応する割り当て状態を示すエントリを含み、前記割り当て状態が、前記少なくとも１つの対応するパリティストライプが以前に割り当てられているかどうかを示す、ステップと、
を含み、
前記選択されたパリティストライプが以前に再構成されていないと判断され、前記選択されたパリティストライプが以前に割り当てられていると判断された場合は、置換ディスクで前記選択されたパリティストライプを再構成し、前記選択されたストライプが再構成されていることを示すために、選択されたパリティストライプに対応する前記再構成テーブルの前記再構成状態を更新するステップをさらに含む、方法。
【請求項２】
前記選択されたパリティストライプが以前に割り当てられていないと判断された場合に、前記選択されたパリティストライプに対応するデータのために前記置換ディスクに０を書き込むステップをさらに含む、請求項１に記載の方法。
【請求項３】
パリティストライプを選択する前記ステップの前に、パリティストライプと関連付けられたデータのための入力／出力要求を受信するステップをさらに含み、かつ、パリティストライプを選択する前記ステップが、データのための入力／出力要求が関連付けられる前記パリティストライプを選択するステップを含む、請求項１に記載の方法。
【請求項４】
入力／出力動作要求が受信されない場合は、パリティストライプを選択する前記ステップが、再構成が起こっていないことを示す前記再構成テーブルの第１のエントリに対応するパリティストライプを選択するステップを含む、請求項３に記載の方法。
【請求項５】
前記再構成テーブルが、複数のビットを含むビットマップを含み、各ビットが、前記再構成のための複数のパリティストライプの各々の再構成状態を表す、請求項１に記載の方法。
【請求項６】
前記スペーステーブルが、複数のビットを含むビットマップを含み、各ビットが、前記再構成のための複数のパリティストライプの各々の前記再構成状態を表す、請求項１に記載の方法。
【請求項７】
前記再構成のための複数のパリティストライプから追加のパリティストライプを選択するステップをさらに含む、請求項１に記載の方法。
【請求項８】
受信された入力／出力要求を実行するステップをさらに含む、請求項３に記載の方法。
【請求項９】
前記複数のストレージドライブの各々が、ハードディスクドライブを含む、請求項１に記載の方法。
【請求項１０】
前記複数のストレージドライブの各々が、ハイブリッドドライブを含み、前記ハイブリッドドライブの各々が、不揮発性メモリ（ＮＶＭ）および磁気ディスク媒体を含む、請求項１に記載の方法。
【請求項１１】
再構成のためのパリティストライプを選択する前記ステップの前に、
前記障害が起こったドライブのＮＶＭのデータがアクセス可能かどうかを判断するステップと、
前記障害が起こったハイブリッドドライブの前記ＮＶＭがアクセス可能であると判断された場合に、前記障害が起こったハイブリッドドライブの前記ＮＶＭから置換ハイブリッドドライブのＮＶＭに前記データをコピーするステップと、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
再構成のためのパリティストライプを選択する前記ステップの前に、
再構成のために必要であったそのパリティブロックのすべてが障害が起こっていないディスクの前記ＮＶＭに格納された再構成のための１つまたは複数のパリティストライプを特定するステップ、をさらに含む、請求項１０に記載の方法。
【請求項１３】
置換ディスクで前記１つまたは複数の特定されたパリティストライプを再構成するステップ、をさらに含む、請求項１２に記載の方法。
【請求項１４】
再構成のための１つまたは複数の追加のパリティストライプを特定するステップであって、前記１つまたは複数の追加の特定されたパリティストライプが、障害が起こっていないハイブリッドドライブの前記１つまたは複数のＮＶＭに格納された前記パリティストライプと関連付けられたパリティブロックの一部分、および、前記障害が起こっていないハイブリッドドライブの前記磁気ディスク媒体に格納された前記パリティブロックの一部分を有する、ステップと、
前記障害が起こっていないハイブリッドドライブの前記磁気ディスク媒体から、前記特定されたパリティストライプと関連付けられた前記部分パリティブロックをフェッチし、前記障害が起こっていないハイブリッドドライブの前記それぞれのＮＶＭキャッシュに格納するように前記障害が起こっていないハイブリッドドライブのうちの１つまたは複数に指示するステップと、をさらに含む、請求項１２に記載の方法。
【請求項１５】
置換ディスクで前記１つまたは複数の特定された追加のパリティストライプを再構成するステップ、をさらに含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される様々な実施形態は、ストレージシステムに関する。
【背景技術】
【０００２】
独立ディスクの冗長アレイ（ＲＡＩＤ）の技術は、高いデータ性能および信頼性を達成するために、ストレージシステムにおいて広く使用されてきた。ディスクのアレイ内で冗長情報を維持することにより、ＲＡＩＤは、１つまたは複数のディスク障害がアレイで起こった場合にデータを回復することができる。ＲＡＩＤシステムは、それらの構造および特性に従って、異なるレベルに分類される。ＲＡＩＤレベル０（ＲＡＩＤ０）は、冗長データを持たず、ディスク障害から回復することはできない。ＲＡＩＤレベル１（ＲＡＩＤ１）は、一対のディスク上でミラーリングを実装し、従って、一対のディスクにおいて１つのディスク障害から回復することができる。ＲＡＩＤレベル４（ＲＡＩＤ４）およびＲＡＩＤレベル５（ＲＡＩＤ５）は、ディスクのアレイ上でＸＯＲパリティを実装し、ＸＯＲ演算を通じて、アレイにおいて１つのディスク障害から回復することができる。ＲＡＩＤレベル６（ＲＡＩＤ６）は、ディスクアレイにおいて同時に起こる２つのいかなるディスク障害からも回復することができ、リードソロモン符号などの様々な種類の抹消符号を通じて実装することができる。
【０００３】
ＲＡＩＤシステムにおけるディスク障害からのデータ回復プロセスは、データ再構成と呼ばれる。データ再構成プロセスは、ＲＡＩＤシステムの性能と信頼性の両方にとって非常に重要である。ＲＡＩＤ５システムを例に取ると、アレイにおけるディスク障害が起こると、アレイは劣化モードに入り、障害が起こったディスクにかかるユーザＩ／Ｏ要求はオンザフライでデータを再構成しなければならず、それは、かなり高価であり、大きな性能オーバーヘッドを引き起こす。その上、ユーザＩ／Ｏプロセスおよび再構成プロセスは、同時に実行され、互いにディスク帯域幅を競い合い、それにより、システム性能がさらに大幅に劣化する。他方では、ＲＡＩＤ５システムが１つのディスク障害から回復している際には、第２のディスク障害が起こる場合があり、それにより、システムの耐障害能力を超えることになり、永久的なデータ損失が生じる。従って、長期にわたるデータ再構成プロセスは、長時間のシステムの脆弱性を招き、システムの信頼性を大幅に劣化する。これらの理由に基づくと、データ再構成プロセスはできる限り短縮すべきであり、現行のＲＡＩＤシステムのデータ再構成の最適化を求める仕方および方法は、極めて重要かつ深刻なものである。
【０００４】
データ再構成に対し、理想的なシナリオはオフライン再構成であり、オフライン再構成では、アレイは、ユーザＩ／Ｏ要求の提供を停止し、データ再構成プロセスをその全速力で実行させる。しかしながら、このシナリオは、ＲＡＩＤシステムがディスク障害から回復している時でさえも途切れることのないデータサービスを提供するために同ＲＡＩＤシステムが必要とされるほとんどの生産環境において実用的ではない。言い換えれば、生産環境におけるＲＡＩＤシステムは、オンライン再構成を行っており、オンライン再構成では、再構成プロセスおよびユーザＩ／Ｏプロセスは、同時に実行されている。以前の研究では、ＲＡＩＤシステムの再構成プロセスを最適化するためにいくつかの方法が提案されている。ワークアウト（Ｗｏｒｋｏｕｔ）方法は、代理ＲＡＩＤにユーザ書き込みデータキャッシュポピュラ読み取りデータをリダイレクトし、オリジナルのＲＡＩＤの再構成が完了した際にオリジナルのＲＡＩＤに書き込みデータを再要求することを目的とする。そうすることで、ワークアウト（Ｗｏｒｋｏｕｔ）は、ユーザＩ／Ｏプロセスから再構成プロセスを分離し、再構成プロセスが邪魔されないようにしようと試みる。ワークアウト（Ｗｏｒｋｏｕｔ）とは異なり、本発明者らが提案する方法は、ユーザ読み取り／書き込み要求を出す間、ユーザＩ／Ｏプロセスに再構成プロセスとの連携を行わせ、データ再構成に貢献させる。別の以前の方法は、ビクティムディスクファースト（ＶＤＦ：Ｖｉｃｔｉｍ  Ｄｉｓｋ  Ｆｉｒｓｔ）と呼ばれる。ＶＤＦは、システムＤＲＡＭキャッシュポリシを定義し、システムＤＲＡＭキャッシュポリシは、障害が起こったディスクのデータを高い優先度でキャッシュし、その結果、オンザフライでの障害が起こったデータの再構成の性能オーバーヘッドを最小限に抑えることができる。ＶＤＦとは異なり、本発明者らの方法は、アレイにおける残存ディスクのＮＶＭキャッシュのデータを利用することによって再構成シーケンスを最適化するためのポリシを含む。第３の以前の研究は、ライブブロック回復と呼ばれる。ライブブロック回復方法は、再構成の間にライブファイルシステムデータのみを回復し、未使用のデータブロックをスキップすることを目的とする。しかしながら、この方法は、ＲＡＩＤブロックレベルにファイルシステム情報を渡すことに依存し、従って、既存のファイルシステムの著しい変更を必要とする。その上、この方法は、ＲＡＩＤ１などの複製ベースのＲＡＩＤにのみ適用することができ、ＲＡＩＤ５およびＲＡＩＤ６などのパリティベースのＲＡＩＤに適用することはできない。また、本発明者らが提案する方法は、使用データブロックのみの再構成も目的とするが、本発明者らの方法は、ブロックレベルで完全に機能し、ファイルシステムの変更を必要としない。その上、本発明者らの方法は、パリティベースのＲＡＩＤシステムを含めて、いかなるＲＡＩＤレベルにも適用することができる。
【０００５】
ハイブリッドドライブは、１つのディスクエンクロージャ内部にＮＶＭキャッシュと共に回転磁気ディスク媒体を配置する新種のハードディスクドライブである。正常なモードでは、ＮＶＭキャッシュは、ユーザＩ／Ｏ要求に対する読み取り／書き込みキャッシュとしての役割を果たす。再構成モードでは、ＮＶＭキャッシュのデータは、再構成プロセスの加速に活用することができる。本発明者らの方法の以下の説明では、ハイブリッドドライブ内部のＮＶＭキャッシュを活用することによってＲＡＩＤシステムの再構成をどのように最適化するかを示す。
【発明の概要】
【課題を解決するための手段】
【０００６】
例示的な実施形態によれば、ハイブリッドドライブから成るＲＡＩＤシステムの再構成プロセスを最適化するための方法が開示される。開示される方法を示す例として、例えば、ＲＡＩＤ５を使用することができる。これらの方法は、これらに限定されないが、ＲＡＩＤ１、ＲＡＩＤ４およびＲＡＩＤ６などの他のＲＡＩＤレベルにも適用できることに留意しなければならない。例示的な実施形態による様々な方法は、以下を含み得る：
−個々のパリティストライプの各々に対する非常に細かい再構成制御。
【０００７】
対応する例示的な方法は、図３、図４および図５に示されている。
−直接コピーを通じる障害が起こったハイブリッドドライブのＮＶＭキャッシュのデータの再構成の高速化。
【０００８】
対応する例示的な方法は、図６に示されている。
−未使用のフリースペースおよび無効な／無駄なデータを保持しているスペースの再構成のスキップ。
【０００９】
対応する例示的な方法は、図７に示されている。
図面では、同様の参照文字は、一般に、異なる図全体を通じて、同様の部分を指す。図面は、必ずしも原寸に比例するとは限らず、代わりに、一般に、本発明の原理を示すことに重点が置かれる。以下の説明では、本発明の様々な実施形態は、以下の図面を参照して説明される。
【図面の簡単な説明】
【００１０】
【図１Ａ】一実施形態による、正常なモードでの典型的なＲＡＩＤシステムのユーザ読み取り／書き込みプロセスのワークフローを示す。
【図１Ｂ】一実施形態による、正常なモードでの典型的なＲＡＩＤシステムのユーザ読み取り／書き込みプロセスのワークフローを示す。
【図２】一実施形態による、再構成モードでの典型的なＲＡＩＤシステムのユーザ読み取り／書き込みプロセス（障害が起こったディスク上での）および再構成プロセスのワークフローを示す。
【図３】一実施形態による、ビットマップベースの非常に細かい再構成制御を用いたＲＡＩＤシステムのユーザ読み取り／書き込みプロセス（障害が起こったディスク上での）および再構成プロセスのワークフローを示す。
【図４】一実施形態による、ハイブリッドドライブのＮＶＭキャッシュのデータに従って再構成シーケンスのスケジューリングを行うＲＡＩＤシステムの再構成プロセスのワークフローを示す。
【図５】一実施形態による、対応するデータブロックが既に再構成されている、ビットマップベースの非常に細かい再構成制御を用いたＲＡＩＤシステムのユーザ読み取り／書き込みプロセス（障害が起こったディスク上での）のワークフローを示す。
【図６】一実施形態による、障害が起こったハイブリッドドライブのＮＶＭキャッシュのデータを置換ディスクに直接コピーする再構成プロセスを示す。
【図７】一実施形態による、使用スペースのみが再構成され、未使用スペースがスキップされる、システムの使用および未使用スペースを示すためにビットマップを備えるＲＡＩＤシステムの再構成プロセスを示す。
【発明を実施するための形態】
【００１１】
以下の詳細な説明は、例示として、本発明を実践できる特定の詳細および実施形態を示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実践できるように十分詳細に説明される。他の実施形態も利用でき、本発明の範囲から逸脱することなく、構造上、論理上および電気的な変更を行うことができる。いくつかの実施形態を１つまたは複数の他の実施形態と組み合わせて新しい実施形態を形成することができるため、様々な実施形態は、必ずしも相互排他的である必要はない。
【００１２】
方法またはデバイスのうちの１つの文脈において説明される実施形態は、他の方法またはデバイスに類似して有効である。同様に、方法の文脈において説明される実施形態は、デバイスに類似して有効であり、その逆も同様である。
【００１３】
実施形態の文脈において説明される特徴は、他の実施形態の同じまたは同様の特徴に相応に適用可能であり得る。実施形態の文脈において説明される特徴は、これらの他の実施形態に明示的に説明されていない場合でさえ、他の実施形態に相応に適用可能であり得る。その上、実施形態の文脈における特徴に対して説明されるような、追加および／または組合せおよび／または代替は、他の実施形態の同じまたは同様の特徴に相応に適用可能であり得る。
【００１４】
様々な実施形態の文脈において、特徴または要素に関して使用されるような、冠詞「ａ」、「ａｎ」および「ｔｈｅ」は、特徴または要素のうちの１つまたは複数への言及を含む。
【００１５】
様々な実施形態の文脈において、「少なくとも実質的に」という表現は、「正確に」および妥当な差異を含み得る。
様々な実施形態の文脈において、数値に適用されるような「約」または「およそ」という用語は、正確な値および妥当な差異を包含する。
【００１６】
本明細書で使用されるように、「および／または」という用語は、リストされる関連項目のうちの１つまたは複数の組合せのいずれか、および、すべてを含む。
本明細書で使用されるように、「ＡまたはＢの少なくとも１つ」という形式の表現は、ＡまたはＢあるいはＡとＢの両方を含み得る。それに応じて、「ＡまたはＢまたはＣの少なくとも１つ」という形式の表現、あるいは挙げられるさらなる項目を含むは、挙げられる関連項目のうちの１つまたは複数の組合せのいずれか、および、すべてを含み得る。
【００１７】
例示的な実施形態によれば、パリティストライプは、データを組織するためのパリティＲＡＩＤシステムのためのユニットを指し得る。図１Ａに示されるように、パリティストライプは、複数のブロックから成り得る。
【００１８】
パリティストライプの各ブロックは、異なるディスクに存在し得る。図１Ａの例に示されるように、収納された第１のパリティストライプのパリティブロックは、ストレージディスク１〜４上に存在する。
【００１９】
パリティストライプのブロックは、およそ４ＫＢの典型的なサイズのデータブロックまたはパリティブロックであり得る。データブロックは、ユーザデータを保持することができる。パリティブロックは、ＸＯＲ演算を使用することができる、あるパリティアルゴリズムに従ってパリティストライプのデータブロックから演算されるパリティ値を保持することができる。
【００２０】
図１Ｂは、例示的な実施形態による、典型的な（例えば、最適化されていない）ＲＡＩＤシステム１００がどのようにユーザ読み取り／書き込み要求（１４０、１４５）を処理するかを示す。読み取り要求の場合、読み取りプロセスは、データディスク（Ｄ１、Ｄ２、Ｄ３、Ｄ４）からデータを直接読み取り、ユーザに返送する。書き込み要求の場合、書き込みプロセスは、最初に、古いデータおよびその対応するパリティを読み出し、それらを新しいデータと共に使用して新しいパリティを生成し、次いで、新しいデータおよび新しいパリティをデータおよびパリティディスク（Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｐ１）に書き込む。
【００２１】
図２は、例示的な実施形態による、ディスクに障害が起こった際に典型的なＲＡＩＤシステム２００がどのようにオンライン再構成を行うかを示す。再構成プロセスは、最初のパリティストライプから最後のパリティストライプまで順番にＲＡＩＤシステム２００のパリティストライプを再構成することができる。各パリティストライプを構成するため、再構成プロセスは、残存ディスク（２０５、２１５、２２０、２２５）から対応するデータおよびパリティブロックを読み出し、パリティ演算を通じて障害が起こったディスク２１０上にデータブロックを再生成し、データブロックを置換ディスク２３０に書き戻す。オンライン再構成の間は、障害が起こったディスクにかかるユーザＩ／Ｏ要求（２４０、２４５）は、オンザフライでデータを再構成しなければならない。読み取り要求２４０の場合、パリティグループの他のデータおよびパリティブロックのすべてが読み出され、要求されたデータは、パリティ演算を通じて再構成される。書き込み要求２４５の場合、他のデータブロックのすべては、パリティブロックが読み出されることを予期し、次いで、新しいパリティブロックが再構成され、パリティディスクに書き戻される。従って、再構成モードでのユーザＩ／Ｏ処理は、正常なモードでのものより複雑であり、より低い性能を有する。再構成プロセスおよびユーザＩ／Ｏプロセスは、互いに別々に実行され、ユーザＩ／Ｏ処理は、障害が起こったディスク全体が再構成されるまで正常なモードに戻らないことに留意しなければならない。本発明者らは、このスキームを粗野な（ｃｏａｒｓｅ−ｇｒａｉｎｅｄ）再構成制御と呼ぶ。
【００２２】
図３は、例示的な実施形態による、ビットマップベースの非常に細かい（ｆｉｎｅ−ｇｒａｉｎｅｄ）再構成制御を使用するＲＡＩＤシステム３００を示す。再構成の開始時、ビットマップ（再構成ビットマップ３５０）は、個々のパリティストライプの各々の再構成状態を記録するようにセットアップされる。ビットマップ３５０は、最初は、すべてが０に設定され、パリティストライプが再構成されると、ビットマップのその対応するビットが１に設定される。厳密に起こった順番に再構成を行う必要がある粗野な再構成制御とは異なり、ビットマップベースの非常に細かい再構成制御は、いかなる順番でもパリティストライプの再構成を行うことを可能にする。非常に細かい再構成制御の下では、ユーザＩ／Ｏプロセスは、再構成プロセスと連携する。ユーザＩ／Ｏプロセスが、再構成されていない障害が起こったデータブロックに対する要求を行うと、障害が起こったブロックは、オンザフライで再構成され、置換ディスク２３０に書き戻される。次いで、ビットマップのこのブロックの対応するビットが１に設定され、これは、この障害が起こったブロックが再構成されたことを示す。他方では、再構成プロセスは、依然として、最初のパリティストライプから最後のパリティストライプまで順番に実行される。しかしながら、パリティストライプを再構成する前に、再構成プロセスは、対応するビットが設定されたかどうかを見るために、ビットマップをチェックする。ビットが設定されていれば、再構成プロセスは、このパリティストライプの再構成をスキップする。
【００２３】
図４は、例示的な実施形態による、再構成シーケンスを最適化するためのハイブリッドドライブ（４０５、４１０、４１５、４２０、４２５、４３０）のＮＶＭキャッシュのデータの利用を示す。障害が起こったブロックを再構成するため、再構成プロセスは、同じパリティストライプの他のデータおよびパリティブロックをすべて読み出す必要がある。ＮＶＭキャッシュからデータを読み取ることは、回転ディスクからデータを読み取るよりもはるかに速く、ＮＶＭキャッシュに格納されるデータは、ホットおよび／または重要なデータであるため、そのデータおよびパリティブロックのすべてまたはほとんどが残存ディスク（４０５、４１５、４２０、４２５）のＮＶＭキャッシュでキャッシュされている場合にパリティストライプを再構成する方がより効率的である。従って、再構成プロセスは、最初に、ハイブリッドドライブのＮＶＭキャッシュをスキャンし、他のパリティストライプより高い優先度でより多くのデータおよびパリティブロックがＮＶＭにキャッシュされたパリティストライプを再構成する。それらのパリティブロックの一部しかＮＶＭにキャッシュされていないパリティストライプの場合、後続の再構成の使用のために、キャッシュされていないパリティブロックをＮＶＭキャッシュにプリフェッチするようにＮＶＭキャッシュ管理モジュールに暗示するために、追加の最適化を行うことができる。パリティストライプが再構成されると、それらの対応するビットは、再構成ビットマップ（再構成ビットマップ３５０）で設定される。
【００２４】
図５は、例示的な実施形態による、ビットマップベースの非常に細かい再構成制御の下でのユーザＩ／Ｏ要求の処理を示す。図３に示されるように、ユーザ要求が、再構成されていない障害が起こったデータブロックにかかると、データブロック（読み取り要求２４０のための）またはパリティブロック（書き込み要求２４５のための）がオンザフライで再構成され、パリティストライプのすべての残存ディスク（２０５、２１５、２２０、２２５）へのアクセスを必要とし、それは、かなり高価である。粗野な再構成制御の下では、すべてのユーザＩ／Ｏ要求は、再構成プロセスが完了するまで、この高価な仕方で処理される。しかしながら、非常に細かい再構成制御の下では、ユーザＩ／Ｏ要求は、個々のパリティストライプの各々の再構成状態に従って処理することができる。図５に示されるように、ユーザＩ／Ｏ要求が、既に再構成されている障害が起こったブロックにかかる場合は、要求は、図１に示される正常なモードと同じように処理される。
【００２５】
図６は、例示的な実施形態による、直接コピーを通じて障害が起こったハイブリッドドライブのＮＶＭキャッシュにキャッシュされたデータを再構成する方法を示す。実用的なＲＡＩＤシステム６００では、ディスク障害は、通常、回転ディスク媒体の読み取り／書き込みエラーによって生じる。従って、ハイブリッドドライブ４１０に障害が起こった際は、そのＮＶＭキャッシュは未だアクセス可能であり得る。再構成の開始時、ＲＡＩＤシステムは、最初に、障害が起こったハイブリッドドライブ４１０のＮＶＭキャッシュが未だアクセス可能であるかどうかを検出する。ＮＶＭキャッシュがアクセス可能である場合は、その中のデータブロックが読み出され、置換ディスクにコピーされ、次いで、再構成ビットマップのそれらの対応するビットが設定され、再構成済みとマーク付けされる。このように、ＮＶＭキャッシュのデータブロックは、パリティ演算方法より効率的な直接的な方法で構成される。その上、ＮＶＭキャッシュにキャッシュされたデータブロックは、通常、ホットデータであり、ユーザ要求の大部分によってアクセスされる。それらが再構成されると、これらのデータブロックに対するユーザ要求は、より効率的に処理することができる。
【００２６】
図７は、例示的な実施形態による、ＲＡＩＤシステムの使用スペースのみを再構成することによって総再構成時間を短縮する方法を示す。各パリティストライプの割り当てられた／フリー状態を記録するため、スペースビットマップ７５０がセットアップされる。スペースビットマップ７５０のサイズを低減するため、複数のパリティストライプを１つのユニットと見なすことができ、ビットマップの全く同じビットに対応させることができる。ＲＡＩＤシステム７００の構築時、すべてのデータおよびパリティディスク（７０５、７１０、７１５、７２０、７２５）に０を書き込むことを通じて同期が行われる。また、置換ディスク７３０のコンテンツもバックグラウンドで０に初期化される。スペースビットマップ７５０は、すべてが０になるように初期化される。パリティストライプが初めて割り当てられる際は、スペースビットマップ７５０のその対応するビットは、１に設定される。再構成の間、再構成プロセスは、特定のパリティストライプを再構成する前にスペースビットマップ７５０をチェックする。ビットが設定されている場合は、パリティストライプは、割り当てられているはずであり、再構成されなければならない。そうでなければ、パリティストライプはフリーであるはずであり、０のブロックのみを含み、従って、再構成する必要はない。スペースビットマップ７５０は、ブロックレベルで実装され、上記のファイルシステムへの変更を必要としないことに留意しなければならない。しかしながら、スペースビットマップ７５０を最適に使用するため、ファイルシステムは、トリムのようなコマンドをサポートすることができ、以前に割り当てられたパリティストライプをフリーにする際は、ＲＡＩＤシステム７００に通知することができる。ＲＡＩＤシステム７００は、バックグラウンドでパリティストライプに０を書き戻し、次いで、スペースビットマップの対応するビットをオフにする。
【００２７】
例示的な実施形態によれば、スペースビットマップは、ＲＡＩＤ構築後のデータ再構成の開始時に初期化することができる。すなわち、ＲＡＩＤシステムに対するデータ再構成プロセスが始まると、再構成が構成される予定の各パリティストライプに対するパリティブロックをチェックすることができる。パリティブロックのすべてが０である場合は、関連パリティストライプが未使用であることを示すためにスペースビットマップを更新することができる。パリティブロックのすべてが０であるとは限らない場合は、関連パリティストライプが使用されていることを示すためにスペースビットマップを更新することができる。
【００２８】
例えば、ＲＡＩＤ構築プロセスの間は、ＲＡＩＤシステムのすべてのデータおよびパリティブロックは、０のブロックに初期化することができる。従って、パリティストライプが使用されている場合は、そのパリティブロックを更新しなければならず、従って、非ゼロとなり得る。しかしながら、パリティストライプが一度も使用されていない場合は、そのパリティブロックは、すべてが０のブロックのままであり得る。
【００２９】
いくつかの例示的な実施形態では、以前に開示されるように、関連パリティストライプのパリティブロックは、再構成の間にオンザフライでチェックすることができる。従って、パリティストライプが使用されているかまたは未使用であるかを示すためにスペースビットマップを使用しなくともよい。再構成のためのパリティストライプのパリティブロックのオンザフライでのチェックに応答して、パリティブロックが０の場合は、置換ディスクに０を書き込むことによってパリティストライプを再構成することができる。パリティストライプのすべてが０であるとは限らない場合は、本明細書の実施形態に従って再構成プロセスを進めることができる。
【００３０】
例示的な実施形態によれば、従来のＨＤＤまたはハイブリッドＨＤＤを備えるＲＡＩＤシステムにおける再構成プロセスを最適化するためのシステムおよび方法が本明細書で開示される。
【００３１】
例示的な実施形態によれば、１つまたは複数のビットマップ（例えば、メタデータ記録メカニズム）は、再構成スケジューリング、データの読み取り／書き込み、および、ディスクドライブに障害が起こり、再構成プロセスが開始された後のデータキャッシュのために使用することができる。例示的な実施形態では、データ再構成プロセスの開始時に、２つのビットマップを構築または生成することができる。例えば、使用できる１つのビットマップは、再構成ビットマップであり、再構成ビットマップでは、各ビットは、パリティストライプの再構成状態を表す。再構成ビットマップは、すべてが０になるように初期化することができ、パリティストライプが再構成されると、ビットマップの対応するビットが１に設定される。
【００３２】
同様に、データ再構成に使用できる別のビットマップは、スペースビットマップであり、スペースビットマップでは、各ビットは、パリティストライプ（またはパリティストライプのグループ）が使用されているかまたは使用されていないかを表す。例えば、パリティストライプが以前に使用されたと判断または特定された場合は、典型的な通常の再構成プロセスを進める。そうでなければ、パリティストライプの再構成は、単に、置換ドライブ／ディスクに０を書き込むことから成り得る。
【００３３】
例示的な実施形態によれば、再構成プロセスで使用されるビットマップは、システムメモリまたはＮＶＭまたは他の任意の高速アクセスストレージスペースなどの揮発性メモリに保持することができる。
【００３４】
例示的な実施形態によれば、データ再構成プロセスにおける再構成スケジューラは、再構成シーケンスおよび／または各パリティストライプの再構成方法を判断するために、ビットマップ情報および／または他の情報を使用することができる。
【００３５】
例示的な実施形態によれば、従来のハードディスクドライブ（ＨＤＤ）を備えるＲＡＩＤシステムにおけるデータ再構成プロセスを最適化するスケジューリング戦略は、以下を含み得る。
【００３６】
１．どのアプリケーションからも要求が送信されていないかどうかを判断し、そうでない場合は、再構成スケジューラは、再構成ビットマップの第１のビット（第１のパリティストライプと関連付けられる）からチェックすることによって、再構成プロセスのスケジューリングを開始する。それが０である場合（ビットと関連付けられたパリティストライプが再構成されていないことを示す）は、再構成スケジューラは、第１のパリティストライプを再構成するというコマンドを発行する。再構成スケジューラは、スペースビットマップの第１のビットをさらにチェックすることができる。それが０である場合（チェックされたものと関連付けられたパリティストライプが使用も割り当てもされておらず、すべて０を含むことを示す）は、置換ディスクに０を書き込むことによってパリティストライプを再構成することができる。そうでなければ、スペースビットマップのチェックされたビットが１である場合（使用／割り当てされていることを示す）は、通常の再構成手順に続いて、チェックされたビットと関連付けられたパリティストライプが再構成される。パリティビットの再構成後、再構成スケジューラは、再構成ビットマップを更新し、再構成されたパリティビットと関連付けられたビットを１に設定することができる。再構成ビットマップの第１のビット値が既に１である場合は、再構成スケジューラは、現行のパリティストライプ（例えば、第１のパリティストライプ）をスキップし、第２のビット値のチェックに進み、再構成ビットマップの第２のビットと関連付けられたパリティストライプ（第２のストライプ）が既に再構成されているかどうかを見ることができる。すなわち、再構成スケジューラは、１つまたは複数のアプリケーションから送信される要求のような割り込みがないことを想定して、ビットマップの最後のビットまでこのプロセスを続行および反復することができる。
【００３７】
２．例示的な実施形態では、上記で言及されるプロセスの間に障害が起こったドライブにアクセスするためにアプリケーションから送信された要求がある場合は、ＲＡＩＤシステムの優先度設定に基づいて、再構成スケジューラは、最初に、現在選択されているチェックされたパリティストライプの再構成を最初に完了し、次いで、システムが、要求側のアプリケーションへの役割を果たせるようにすることができる。例えば、要求側のアプリケーションが、障害が起こったドライブにデータを書き込む必要がある場合は、再構成スケジュールは、置換ドライブに直接書き込み、更新し、次いで、再構成ビットマップを更新して対応するパリティストライプが再構成されていることを示すことができる。要求側のアプリケーションが、障害が起こったドライブからデータを読み取る必要があるが、データが未だ再構成されていない場合は、再構成スケジューラは、ＲＡＩＤグループの他の利用可能なドライブから読み取ってオンザフライでデータを再構成することによってデータを再構成するというコマンドを発行することができる。次いで、再構成スケジューラは、置換ドライブにデータを書き込み、対応する再構成ストライプの再構成ビットマップを１に更新してストライプが再構成されていることを示すことができる。ビットマップは、再構成スケジューラがパリティストライプの再度の再構成を回避できるようにすることができる。
【００３８】
３．ビットマップをチェックすることにより、システムは、読み取るためのアプリケーション要求が再構成されているかまたは再構成されていないかを特定のデータで容易にチェックすることができる。データが既に再構成されている場合は、置換ドライブからデータを直接読み出し、要求側のアプリケーションに返送することができる。
【００３９】
例示的な実施形態によれば、ハイブリッドドライブを備えるＲＡＩＤシステムでは、従来のＨＤＤを備えるＲＡＩＤシステムと同様に、前述の方法を使用することができる。
１．例示的な実施形態によれば、ハイブリッドドライブを備えるＲＡＩＤシステムでは、ハイブリッドドライブに障害が起こると、システムは、最初に、障害が起こったハイブリッドドライブのＮＶＭにアクセスできるかまたはアクセスできないかを特定することができる。アクセスできる場合は、ＮＶＭのデータを読み出し、置換ハイブリッドドライブのＮＶＭに直接コピーすることができる。コピーの終了後、コピーされたデータに対応するビット値を１に設定することによって再構成ビットマップを更新することができる。
【００４０】
例示的な実施形態によれば、ハイブリッドドライブを備えるＲＡＩＤシステムでは、ＮＶＭのデータに基づいて、優先再構成をスケジューリングすることができる。例えば、再構成に必要なデータのすべてが、利用可能なハイブリッドドライブのＮＶＭで利用可能である場合は、高い優先度を有するパリティストライプが再構成され、次いで、後に、再構成ビットマップの対応するビット値を１に更新することができる。部分的なデータのみが利用可能である場合は、ＮＶＭにはない再構成に必要なデータの他の残りの部分をＮＶＭにプリフェッチするかまたはプリフェッチが起こるようにすることができる。必要なデータがＮＶＭにある時点で、スケジューラは、これらのパリティストライプを再構成するようにスケジューリングすることができる。
【００４１】
例示的な実施形態によれば、ＲＡＩＤシステムにおけるデータ再構成の前に、ビットマップ（例えば、再構成ビットマップおよびスペースビットマップ）を構築または生成することができる。以前に開示されるように、再構成ビットマップでは、各ビットは、パリティストライプの再構成状態を表し得る。生成後、再構成ビットマップのビットは、すべてが０になるように初期化することができる。従って、パリティストライプが再構成されると、その対応するビットを１に設定することができる。
【００４２】
パリティストライプ（またはパリティストライプのグループ）が使用／割り当てされているかまたは使用／割り当てされていないかを各ビットが表し得るスペースビットマップでは、パリティストライプが使用または割り当てされている場合は、本明細書で開示されるものなどのデータ再構成プロセスを実装することができる。パリティストライプが以前に使用も割り当てもされていない場合は、単に、置換ディスクに０を書き込むことによって、パリティストライプの再構成を遂行することができる。
【００４３】
例示的な実施形態によれば、スペースビットマップを生成することができる。各パリティ／再構成ストライプに対し、関連パリティブロックをチェックすることができる。例えば、すべてが０のブロックである場合は、ビットマップで未使用のもの（例えば、「０」）と示すことができる。そうでなければ、使用されているもの（例えば、「１」）と示すことができる。初期化の間は、ＲＡＩＤシステムのすべてのデータおよびパリティブロックは、０のブロックに初期化することができる。従って、パリティストライプがその後に使用される場合は、そのパリティブロックを更新しなければならず、非ゼロとなる。パリティストライプが一度も使用されていない場合は、そのパリティブロックは、すべてが０のブロックのままであり得る。
【００４４】
いくつかの例示的な実施形態によれば、スペースビットマップを回避することも、使用しないこともできる。代わりに、パリティブロックのチェックは、再構成の間にオンザフライで実装することができ、スペースビットマップは、未使用のスペースを記録することも、示すこともする必要はない。例えば、各パリティストライプの再構成前は、最初に、パリティブロックがチェックされる。パリティブロックがすべて０である場合は、置換ディスクに０を書き込むことによってこのパリティストライプが再構成される。そうでなければ、再構成される。
【００４５】
例示的な実施形態によれば、本明細書で開示される様々な例示的なＲＡＩＤシステムは、図示されていない１つもしくは複数のコンピューティングデバイスを含むことおよび／またはコンピューティングデバイスと動作可能に結合することができる。コンピューティングデバイスは、例えば、１つまたは複数のプロセッサおよび他の適したコンポーネント（メモリおよびコンピュータストレージなど）を含み得る。例えば、少なくとも１つのＲＡＩＤコントローラは、ＲＡＩＤシステムに含まれ、ＲＡＩＤシステムを構成するストレージドライブに動作可能に接続することができる。プロセッサは他の形態のプロセッサ、処理デバイス（マイクロコントローラなど）、または、本明細書で説明される機能性を実行するようにプログラムすることができる他の任意のデバイスも備え得ることを理解すべきである。
【００４６】
それに従って、コンピューティングデバイスは、再構成スケジューラプロセス、様々な入力／出力要求などの本明細書で開示される様々な方法またはその態様のうちの１つまたは複数を少なくとも部分的に実装するために、ソフトウェアを実行することができる。そのようなソフトウェアは、プロセッサが実行するために、いかなる適切なまたは適した非一時的なコンピュータ可読媒体上にも格納することができる。言い換えれば、コンピューティングデバイスは、本明細書で開示されるＲＡＩＤシステムの様々なドライブと相互作用することも、インターフェースをとることもできる。それに従って、コンピューティングデバイスは、本明細書で開示されるテーブル（例えば、スペースビットマップ、再構成ビットマップなど）の作成、更新、アクセスなどを行うために使用することができる。テーブルは、いかなる適したコンピュータストレージデバイスまたはメモリなどのいかなる適したストレージデバイスにもデータとして格納することができる。
【００４７】
例示的な実施形態によれば、そのうちの１つに障害が起こっている複数のストレージドライブを含むＲＡＩＤストレージシステムにおけるデータ再構成のための方法は、再構成のための複数のパリティストライプから１つのパリティストライプを再構成のために選択するステップと、再構成テーブルをチェックすることによって、再構成のために選択されたパリティストライプが以前に再構成されているかどうかを判断するステップであって、再構成テーブルが、エントリを含み、エントリの各々が、再構成のための複数のパリティストライプの少なくとも１つに対応する再構成状態を示し、各再構成状態が、少なくとも１つの対応するパリティストライプが以前に再構成されているかどうかを示す、ステップと、スペーステーブルをチェックすることによって、選択されたパリティストライプが以前に割り当てられているかどうかを判断するステップであって、スペーステーブルが、再構成のための複数のパリティストライプの少なくとも１つに対応する割り当て状態を示すエントリを含み、割り当て状態が、少なくとも１つの対応するパリティストライプが以前に割り当てられているかどうかを示す、ステップとを含み得、選択されたパリティストライプが以前に再構成されていないと判断され、選択されたパリティストライプが以前に割り当てられていると判断された場合は、置換ディスクで選択されたパリティストライプを再構成し、選択されたトライプが再構成されていることを示すために、選択されたパリティストライプに対応する再構成テーブルの再構成状態を更新するステップをさらに含む。
【００４８】
例示的な実施形態によれば、方法は、選択されたパリティストライプが以前に割り当てられていないと判断された場合に、選択されたパリティストライプに対応するデータのために置換ディスクに０を書き込むステップをさらに含み得る。
【００４９】
例示的な実施形態によれば、方法は、パリティストライプを選択するステップの前に、パリティストライプと関連付けられたデータのための入力／出力要求を受信するステップをさらに含み得、パリティストライプを選択するステップは、データのための入力／出力要求が関連付けられるパリティストライプを選択するステップを含む。例示的な実施形態によれば、入力／出力動作要求が受信されない場合は、パリティストライプを選択するステップは、再構成が起こっていないことを示す再構成テーブルの第１のエントリに対応するパリティストライプを選択するステップを含み得る。例示的な実施形態によれば、再構成テーブルは、複数のビットを含むビットマップであり得、各ビットは、再構成のための複数のパリティストライプの各々の再構成状態を表す。
【００５０】
例示的な実施形態によれば、スペーステーブルは、複数のビットを含むビットマップであり得、各ビットは、再構成のための複数のパリティストライプの各々の再構成状態を表す。
【００５１】
例示的な実施形態によれば、方法は、再構成のための複数のパリティストライプから追加のパリティストライプを選択するステップをさらに含み得る。
例示的な実施形態によれば、方法は、受信された入力／出力要求を実行するステップをさらに含み得る。
【００５２】
例示的な実施形態によれば、複数のストレージドライブの各々は、ハードディスクドライブであり得る。
例示的な実施形態によれば、複数のストレージドライブの各々は、不揮発性メモリ（ＮＶＭ）および磁気ディスク媒体を含むハイブリッドドライブであり得る。例示的な実施形態によれば、方法は、再構成のためのパリティストライプを選択するステップの前に、障害が起こったドライブのＮＶＭのデータがアクセス可能かどうかを判断するステップと、障害が起こったハイブリッドドライブのＮＶＭがアクセス可能であると判断された場合に、障害が起こったハイブリッドドライブのＮＶＭから置換ハイブリッドドライブのＮＶＭにデータをコピーするステップとをさらに含み得る。
【００５３】
例示的な実施形態によれば、方法は、再構成のためのパリティストライプを選択するステップの前に、再構成のために必要であったそのパリティブロックのすべてが障害が起こっていないディスクのＮＶＭに格納された再構成のための１つまたは複数のパリティストライプを特定するステップと、置換ディスクで１つまたは複数の特定されたパリティストライプを再構成するステップとをさらに含み得る。
【００５４】
例示的な実施形態によれば、方法は、再構成のためのパリティストライプを選択するステップの前に、再構成のための１つまたは複数の追加のパリティストライプを特定するステップであって、１つまたは複数の追加の特定されたパリティストライプが、障害が起こっていないハイブリッドドライブの１つまたは複数のＮＶＭに格納されたパリティストライプと関連付けられたパリティブロックの一部分、および、障害が起こっていないハイブリッドドライブの磁気ディスク媒体に格納されたパリティブロックの一部分を有する、ステップと、障害が起こっていないハイブリッドドライブの磁気ディスク媒体から、特定されたパリティストライプと関連付けられた部分パリティブロックをフェッチし、障害が起こっていないハイブリッドドライブのそれぞれのＮＶＭキャッシュに格納するように障害が起こっていないハイブリッドドライブのうちの１つまたは複数に指示するステップと、置換ディスクで１つまたは複数の特定された追加のパリティストライプを再構成するステップとをさらに含み得る。
【００５５】
本発明は、特に、特定の実施形態を参照して示され、説明されているが、当業者であれば、添付の請求項によって定義されるように、本発明の趣旨および範囲から逸脱することなく、形態および詳細における様々な変更をその中で行えることを理解すべきである。従って、本発明の範囲は添付の請求項によって示され、従って、請求項の均等物の意味および範囲内で起こる変更はすべて受け入れられることが意図される。
【図１Ａ】
2016530637.tif 000003
【図１Ｂ】
2016530637.tif 000004
【図２】
2016530637.tif 000005
【図３】
2016530637.tif 000006
【図４】
2016530637.tif 000007
【図５】
2016530637.tif 000008
【図６】
2016530637.tif 000009
【図７】
2016530637.tif 000010
【国際調査報告】
2016530637.tif 000011
2016530637.tif 000012
2016530637.tif 000013