(57)【特許請求の範囲】
【請求項１】
ディスクアレイのＩ／Ｏ動作を実行する方法であって、
Ｉ／Ｏ動作リクエストに関連し、異常のある格納ユニットを含む縮退したディスクアレイ内の複数の格納ユニットのストライプのＲＡＩＤレベルが、ＲＡＩＤ０かＲＡＩＤ５かを、それぞれのストライプについてのＲＡＩＤレベルを示す単一のビットを含み、ＲＡＩＤレベルがＲＡＩＤ５の場合、前記単一のビットが０であり、ＲＡＩＤレベルがＲＡＩＤ０の場合、前記単一のビットは１であるビットマップに基づいて、判定する工程と、
前記ＲＡＩＤレベルがＲＡＩＤ０である場合、前記複数の格納ユニットの前記ストライプに対して、ＲＡＩＤ０に対応したＩ／Ｏ動作を実行する工程と、
前記ＲＡＩＤレベルがＲＡＩＤ５である場合、前記ストライプからのデータを、ＲＡＩＤ５からＲＡＩＤ０に変換し、前記複数の格納ユニットの前記ストライプに対してＲＡＩＤ０に対応する前記Ｉ／Ｏ動作を実行する工程とを、
備え、
前記ビットマップは、前記ストライプからデータがＲＡＩＤ５からＲＡＩＤ０に変換された後に更新され、
前記ビットマップは、不揮発性記憶デバイスに格納される方法。
【請求項２】
ディスクアレイのＩ／Ｏ動作を実行するシステムであって、
Ｉ／Ｏ動作リクエストに関連し、異常のある格納ユニットを含む縮退したディスクアレイ内の複数の格納ユニットのストライプのＲＡＩＤレベルが、ＲＡＩＤ０かＲＡＩＤ５かを、それぞれのストライプについてのＲＡＩＤレベルを示す単一のビットを含み、ＲＡＩＤレベルがＲＡＩＤ５の場合、前記単一のビットが０であり、ＲＡＩＤレベルがＲＡＩＤ０の場合、前記単一のビットは１であるビットマップに基づいて、判定するレイアウト判定部と
ＲＡＩＤレベルがＲＡＩＤ５である場合に、前記ストライプからのデータをＲＡＩＤ５からＲＡＩＤ０に変換し、前記複数の格納ユニットの前記ストライプに対して、前記ＲＡＩＤ０に対応するＩ／Ｏ動作を実行する実行部とを、
備え、
前記実行部は、前記ストライプからの前記データがＲＡＩＤ５からＲＡＩＤ０に変換された後に、前記ビットマップを更新し、
前記ビットマップは、不揮発性記憶デバイスに格納される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００９年２月１８日に出願され、「劣化したＲＡＩＤ５のＩ／Ｏ性能を向上する方法」を発明の名称とする、ＵＳ仮出願Ｎｏ．６１／１５３，４７７の優先権を主張し、その内容を全体として援用するものである。
【０００２】
本発明は、概して、記憶デバイスの分野に関し、特に、複数のディスクアレイのＩ／Ｏ動作を実行する方法及びシステムに関する。
【背景技術】
【０００３】
ここに記した背景技術の記載は、その開示内容を大まかに提示することを目的としている。その業績がここの背景技術欄において記載されている限り、また、出願時に先行技術として資格がないであろうその記載の側面からも、目下の発明者の業績は、本願に対する先行技術として明示的にも黙示的にも認められるものではない。
【０００４】
ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ Ａｒｒａｙ ｏｆ Ｉｎｄｅｐｅｎｄｅｎｔ Ｄｉｓｋｓ）は、複数の物理ディスクを１つのアレイとして組み合わせたものである。アレイは、論理ディスクとして働き、複数のブロック内の異なる物理ディスクにデータを格納する。データがアクセスされたとき、アレイ内の関連する複数の物理ディスクは並列に働き、これにより、データにアクセスする時間を著しく短縮することができ、空間利用性を向上することができる。ＲＡＩＤは、複数の物理ディスクを備えているが、１つのオペレーティングシステムに対して、１つの独立した、モノリシック大容量記憶デバイスのようにみえる。同容量の単一の記憶デバイスと比較して、ＲＡＩＤは、性能の向上に加え、優れたフォールト・トレラント能力を提供することができる。複数の物理ディスクの何れかが機能しない場合に、ＲＡＩＤは、機能しない物理ディスクによる影響を受けずに、機能し続けることができる。ＲＡＩＤは、異なる速度及びセキュリティ性能／性能価格比を有する、幾つかの異なるレベル（例えば、ＲＡＩＤ０、ＲＡＩＤ１、ＲＡＩＤ０＋１、ＲＡＩＤ３、ＲＡＩＤ５等）を含む。メモリアベイラビリティ、性能、及び容量に対するユーザの需要を満たすべく、適切なＲＡＩＤレベルを実際のアプリケーションに応じて選択することができる。
【０００５】
ＲＡＩＤ０は、全てのＲＡＩＤレベルの中で最も高いストレージ性能を具備する。ＲＡＩＤ０は、以下のとおり（図１に示すとおり）、ストレージ性能を向上する：連続データが、アクセスのために複数の物理ディスクに散在する。システムのデータリクエストを、複数の物理ディスクによって並列に実行することができる。物理ディスクのそれぞれは、格納されたデータに対するデータリクエストの対応する部分を実行する。そのようなデータの並列処理により、バス・バンド幅を十分活用することができ、ＲＡＩＤ０ディスクアレイの全体のアクセス性能を大幅に向上することができる。ＲＡＩＤ０の欠点は、データ冗長性をもたらさないことである。その結果、データが破損した場合に、破損されたデータを回復することができない。ＲＡＩＤ０の特性は、高い性能要求があるが、データセキュリティ性があまり要求されない、グラフィックワークステーション等の分野に特に適している。
【０００６】
ＲＡＩＤ５は、フォールト・トレラント能力を有するＲＡＩＤである。その耐故障性は、専用のパリティ物理ディスクを用いることによって実現されるのではなく、全ての物理ディスクにわたって均等に分散したパリティ情報を介して実現される。ＲＡＩＤ５ディスクアレイ内で、１つの物理ディスクが機能しなくなった場合、ディスクアレイは、幾つかの他の物理ディスクの対応するデータに基づいて、損失したデータを算出することができる。損失した情報は、他のディスクのデータから算出しなければならないので、他のディスクが損失したデータを正しく再構築することができるように、特定の容量を有する追加の物理ディスクが必要とされる。ＲＡＩＤ５ディスクアレイのトータルの容量は、その物理ディスクの数（Ｎと仮定する）から１を差し引いたもの（Ｎ−１）と最も小さい容量を有する物理ディスクの容量との積に等しい。ＲＡＩＤ５ディスクアレイ内の１つの物理ディスクが機能しなくなった場合、機能しなくなった物理ディスクのデータは、その他の物理ディスクのパリティ情報に基づいて再構築することができる。しかし、２つの物理ディスクが同時に機能しなくなった場合には、全てのデータが損失する。
【０００７】
図２に、例示ＲＡＩＤ５ディスクアレイのデータレイアウトを示す。図２に示されたとおり、ＲＡＩＤ５ディスクアレイは、５つの物理ディスクを含み、５つの物理ディスクのそれぞれは、さらに５つの格納ユニットに分けられており、全てのディスクの同じ位置の複数の格納ユニットは、１つのストライプを形成する。図２（ディスクアレイに入ったデータブロック０−１９の順番に番号が付されている）に示されたとおり、データブロック０−１９及びパリティブロックＰ１−Ｐ５が２５個の格納ユニットに分配されている。データブロックのそれぞれはまた、ＲＡＩＤ５ディスクアレイ内の位置（ｘ，ｙ）によって示すことができる。ここで、ｘは、データブロックが位置するストライプを表し、ｙは、データブロックが位置する物理ディスクを表す。
【０００８】
ここでは説明を容易にするために、１つの機能しなくなった物理ディスクを有するＲＡＩＤ５ディスクアレイを劣化したＲＡＩＤ５ディスクアレイとして表す。図３は、劣化した後の、図２に示したＲＡＩＤ５ディスクアレイのデータレイアウトを示す（図３において、ディスク３が機能していない）。損失したデータを回復するために、各ストライプのデータブロックが、ＲＡＩＤ５ディスクアレイの全ての物理ディスクから読込まれる。損失したデータブロックを算出する目的で、読込みデータブロックに対して排他的論理和演算が実行される。例えば、図３において、データブロック（０，３）を算出する目的で、データブロック（０，０）、（０，１）、（０，２）及び（０，４）が取得され、これらのデータブロックに対して排他的論理和演算が実行される。さらに、劣化したＲＡＩＤ５ディスクアレイの書込み処理においては、複数のストライプの十分なデータブロックを取得するために、他の複数の物理ディスクに対して読込み動作がまた実行され、各格納ユニットに書込みされるべきデータを算出するために、これらの複数のデータブロックに対して排他的論理和演算が実行される。
【０００９】
先に述べたとおり、劣化したＲＡＩＤ５ディスクアレイの読込み及び書込み性能は、劣化していないＲＡＩＤ５ディスクアレイの読込み及び書込み性能と比べて大幅に劣る。それに加えて、劣化したＲＡＩＤ５ディスクアレイは、データ冗長性を有さず、ＲＡＩＤ０ディスクアレイのデータ損失に対するプロテクションと同じプロテクションを有するが、その性能はＲＡＩＤ０ディスクアレイと比べて遥かに貧弱である。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
先に述べた課題を考慮して、本願は、複数のディスクアレイの改善したＩ／Ｏ動作を実行する方法及びシステムを提供する。
【００１１】
本発明の実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行する方法は、Ｉ／Ｏ動作リクエストに関連した１つのディスクアレイ内の複数の格納ユニットの１列のデータレイアウトが、第１のレイアウトであるか、第２のレイアウトであるかを判定する工程と、データレイアウトが第１のレイアウトであった場合に、複数の格納ユニットの１列に対して、第１のレイアウトに対応したＩ／Ｏ動作を実行する工程と、データレイアウトが第２のレイアウトであった場合に、複数の格納ユニットの１列のデータレイアウトを第２のレイアウトから第１のレイアウトに変換して、複数の格納ユニットの１列に対して、第１のレイアウトに対応するＩ／Ｏ動作を実行する工程とを備える。
【００１２】
本発明の実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行するシステムは、Ｉ／Ｏ動作リクエストに関連した１つのディスクアレイ内の複数の格納ユニットの１列のデータレイアウトが、第１のレイアウトであるか、第２のレイアウトであるかを判定するレイアウト判定部と、複数の格納ユニットの１列のデータレイアウトが第１のレイアウトである場合に、複数の格納ユニットの１列に対して、第１のレイアウトに対応したＩ／Ｏ動作を実行し、複数の格納ユニットの１列のデータレイアウトが第２のレイアウトである場合に、複数の格納ユニットの１列のデータレイアウトを第２のレイアウトから第１のレイアウトに変換して、複数の格納ユニットの１列に対して、第１のレイアウトに対応するＩ／Ｏ動作を実行する実行部とを備える。
【００１３】
本願発明によれば、複数のディスクアレイのＩ／Ｏ動作性能を著しく向上することができる。
【図面の簡単な説明】
【００１４】
添付図面を参照した以下の本発明の実施例の記載によって、本発明をよりよく理解することができる。
【図１】例示ＲＡＩＤ０ディスクアレイの動作原理を示す概略図である。
【図２】例示ＲＡＩＤ５ディスクアレイのデータレイアウトを示す概略図である。
【図３】劣化した後の、図２に示した例示ＲＡＩＤ５ディスクアレイのデータレイアウトを示す概略図である。
【図４】本願の１つの実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行する方法を示すフロー図である。
【図５】本願の１つの実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行するシステムを示すブロック図である。
【図６】幾つかのストライプのデータレイアウトが変換された後のＲＡＩＤ５ディスクアレイのデータレイアウトとデータレイアウトを記録するためのビットマップとの間の対応関係を示す概略図である。
【図７】本願の１つの実施例に準じた、劣化したＲＡＩＤ５ディスクアレイの読込み動作（出力動作）を実行する方法を示すフロー図である。
【図８】本願の１つの実施例に準じた、劣化したＲＡＩＤ５ディスクアレイの書込み動作（入力動作）を実行する方法を示すフロー図である。
【発明を実施するための形態】
【００１５】
本願の全ての側面における特徴及び本願の実施例を以下に詳細に示す。以下の記載は、本願の深い理解を提供する目的で、多くの特定の詳細を含んでいる。しかしながら、これらの特定の詳細の一部なしでも本願が実施できることは当業者には明らかである。以下の実施例の記載は、多様な例を通しての本願のより明確な理解を提供することを目的としている。本願は、以下に記載の特定の構成又はアルゴリズムには決して限定されるものではない。本願の精神を逸脱しない範囲において、多様な修正、変更、置換及び／又は改良が、関連する本願の要素、部品及びアルゴリズムに対してなされてもよい。
【００１６】
図４は、本願の１つの実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行する方法を示すフロー図である。図４に示したとおり、Ｓ４０２において、Ｉ／Ｏ動作リクエストに関連した１つのディスクアレイ内の複数の格納ユニットの１列のデータレイアウトが、第１のレイアウトであるか、第２のレイアウトであるかどうかが判定される。Ｓ４０４において、データレイアウトが第１のレイアウトであると判定された場合には、第１のレイアウトに対応したＩ／Ｏ動作が複数の格納ユニットの１列に対して実行される。データレイアウトが第２のレイアウトであると判定された場合には、複数の格納ユニットの１列のデータレイアウトは、第２のレイアウトから第１のレイアウトに変換され、第１のレイアウトに対応したＩ／Ｏ動作が、複数の格納ユニットの１列に対して実行される。
【００１７】
図５は、本願の１つの実施例に準じた、複数のディスクアレイのＩ／Ｏ動作を実行するシステムを示すブロック図である。図５に示されたとおり、システムは、レイアウト判定部５０２及び実行部５０４を備える。レイアウト判定部５０２は、Ｉ／Ｏ動作リクエストに関連した１つのディスクアレイ内の複数の格納ユニットの１列のデータレイアウトが、第１のレイアウトであるか、第２のレイアウトであるかどうかを判定（すなわち工程Ｓ４０２を実行）する。実行部５０４は、複数の格納ユニットの１列のデータレイアウトが第１のレイアウトである場合に、第１のレイアウトに対応したＩ／Ｏ動作を複数の格納ユニットの１列に対して実行する。また、複数の格納ユニットの１列のデータレイアウトが第２のレイアウトである場合に、複数の格納ユニットの１列のデータレイアウトを第２のレイアウトから第１のレイアウトに変換し、複数の格納ユニットの１列に対して、第１のレイアウトに対応するＩ／Ｏ動作を実行（すなわち工程Ｓ４０４を実行）する。
【００１８】
本願の実施例に準じた方法及びシステムを、（例えば、図３に示された）劣化したＲＡＩＤ５ディスクアレイのＩ／Ｏ動作を実行する例を通して以下に説明する。
【００１９】
図６は、図３に示されたように、幾つかのストライプのデータレイアウトが変換された後のＲＡＩＤ５ディスクアレイのデータレイアウトとデータレイアウトを記録するためのビットマップとの間の対応関係を示す。ＲＡＩＤ５ディスクアレイのデータレイアウトを記録するためのビットマップにおいて、例えば、０はＲＡＩＤ５データレイアウトを示し、１はＲＡＩＤ０データレイアウトを示す。
【００２０】
図７は、本願の１つの実施例に準じた、劣化したＲＡＩＤ５ディスクアレイの読込み動作を実行する方法を示すフロー図である。図７に示されたとおり、Ｓ７０２において、読込みリクエストを受け取る。Ｓ７０４において、劣化したＲＡＩＤ５ディスクアレイ内のどのストライプが読込みリクエストに関連したものであるかが判定される。読込みリクエストに関連した何れかのストライプに対して、次の動作が実行される。Ｓ７０６において、ストライプに関連したＲＡＩＤ５ディスクアレイのデータレイアウトを記憶するために、ビットマップ内の１つのビットが取得される。Ｓ７０８において、ビットが０であるかどうかが判定される。ビットが０である場合、動作はＳ７１０に進む。Ｓ７１０において、ＲＡＩＤ５レイアウトのデータが、上記ストライプから読込まれ、読込まれたたデータは、ＲＡＩＤ０レイアウトに従って再配置される。上記ストライプに関連したビットが、１に更新され、更新されたビットは、不揮発性記憶デバイスに格納される。動作は、その後Ｓ７１２へと続く。
【００２１】
Ｓ７０８において、ビットが０で無いと判定された場合、動作はＳ７１２へと直接進む。Ｓ７１２において、データが上記ストライプから読込まれ、動作はその後にＳ７１４に進む。Ｓ７１４において、読込まれたデータが格納される。
【００２２】
図８は、本願の１つの実施例に準じた、劣化したＲＡＩＤ５ディスクアレイの書込み動作を実行する方法を示すフロー図である。図８に示されたとおり、Ｓ８０２において、書込みリクエストを受け取る。Ｓ８０４において、劣化したＲＡＩＤ５ディスクアレイ内のどのストライプが、書込みリクエストに関連しているかが判定される。書込みリクエストに関連した何れかのストライプに対して、以下の動作が実行される。Ｓ８０６において、上記ストライプに関連したＲＡＩＤ５ディスクアレイのデータレイアウトを記録するために、ビットマップ内の１つのビットが取得される。Ｓ８０８において、ビットが０であるかどうかが判定される。ビットが０である場合、動作はＳ８１０に進む。Ｓ８１０において、ＲＡＩＤ５レイアウトのデータが上記ストライプから読込まれ、読込まれたデータがＲＡＩＤ０レイアウトに従って再配置される。上記ストライプに関連したビットは１に更新される。更新されたビットは、バッファ又は不揮発性記憶デバイスに格納される。動作は、その後Ｓ８１２へと続く。
【００２３】
Ｓ８０８において、ビットが０で無いと判定された場合、動作はＳ８１２へと直接進む。Ｓ８１２において、データが上記ストライプに書込まれる。
【００２４】
劣化したＲＡＩＤ５ディスクアレイに対して、本願発明では、Ｉ／Ｏ動作が行なわれる１つ以上のストライプをＲＡＩＤ５データレイアウトからＲＡＩＤ０データレイアウトに変更する。これにより、１つ以上のストライプは、後に続くＩ／Ｏ動作において、ＲＡＩＤ０の処理性能と同等の処理性能を達成することができる。その結果、劣化したＲＡＩＤ５ディスクアレイの全体のＩ／Ｏ性能が向上する。つまり、本願発明においては、データ安全性を保ちながらも、劣化したＲＡＩＤ５ディスクアレイの書込み及び読込み性能をＲＡＩＤ０ディスクアレイの書込み及び読込み性能へと向上できる。
【００２５】
なお、本願発明は、上記の実施例における適用には限定されない。２つのディスクアレイ又はディスクが同一の保護レベル（すなわち冗長性）及び空間利用性（すなわち容量）を有するが、異なるデータレイアウトが原因で両者の性能が異なる場合、本願に準じた方法及びシステムにおいては、比較的貧弱な性能を有するディスクアレイ又はディスクのデータレイアウトを調整することができ、そのようなディスクアレイ又はディスクのＩ／Ｏ動作の性能を向上することができる。比較的貧弱な性能を有するディスクアレイ又はディスクのデータレイアウトの調整は、漸次的プロセスであることに注意されたい。調整は、１つずつに基づいて、アクセスされる（すなわち読込み又は書込みされる）ストライプのデータレーアウトに対してのみ行なわれる。
【００２６】
本願発明を、特定の実施例を参照して以上説明してきた。しかしながら、添付の請求項によって示された本願発明の範囲及び精神、又はそれらの相当物から逸脱しない範囲において、これらの実施例に対して、多様な修正、組み合わせ及び変更がなされてもよいことは、当業者にとって明らかである。
【００２７】
必要に応じて、工程を実行するために、ハードウエア又はソフトウエアが用いられてもよい。本発明の範囲から逸脱しない範囲で、ここに記したフロー図に／から、工程が追加／削除されてもよいこと、又はここに記した工程が改良されてもよいことに注意されたい。一般的に言えば、フロー図は、機能の基本動作を実現するための考えられるシーケンスを示すためだけに用いられる。
【００２８】
本願の実施例は、プログラミングのための一般的なデジタルコンピュータ、専用集積回路、プログラム可能論理回路、ＦＰＧＡ、及び、光学及びナノエンジニアリングシステム、部品及びメカニズムによって実現することができる。一般的に言えば、ここに記した開示及び教示に基づいて、本願発明に準じた機能を、当分野公知の手段、例えば、分散システム又は結合システム、部品及び回路等、を介して実現することができる。データ通信又はデータ転送は、有線、無線又は他の如何なる手段を介して実現されても良い。
【００２９】
図示した１つ以上の要素は、更に分離された形、又は、更に集積化された形で実現されてもよく、特定の用途により要求される特定の状況下においては省かれてさえもよく、又は実装されなくてさえよい。また、コンピュータに上記方法の幾つかを実行させるために、機械可読メディアに格納されたプログラム又はコードを実現することは、本発明の精神及び範囲内のことである。
【００３０】
さらに、図面内の如何なる信号または矢印は事例に過ぎず、特に明示しない限り限定を意図するものではない。個別もしくは組み合わせにおいて用語が明確でない場合には、部品又は工程の組み合わせが記録されているものとする。
【図１】
0005360666.tif 000002
【図２】
0005360666.tif 000003
【図３】
0005360666.tif 000004
【図４】
0005360666.tif 000005
【図５】
0005360666.tif 000006
【図６】
0005360666.tif 000007
【図７】
0005360666.tif 000008
【図８】
0005360666.tif 000009