(57)【特許請求の範囲】
【請求項１】
データを記憶する実領域を備えた複数の物理媒体と、
前記複数の物理媒体を用いて複数のストレージグループを作成するグループ制御部と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、前記新規データのデータ量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御部と、
前記仮想ボリューム制御部によって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する記憶制御部と、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行すると共に、前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行後、前記縮退要因の物理媒体内の実領域の内、実データが未記憶の領域のデータを前記復元先物理媒体内の実領域に復元する復元処理を実行する復元制御部と
を有することを特徴とするストレージ装置。
【請求項２】
前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行中に、この復元処理を実行する予定の実領域に新規データが記憶されると、この新規データが記憶された前記実領域である記憶済み領域の実データも含めて、前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を継続することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行中に、この復元処理を実行済みの実領域に新規データが記憶されると、現在実行中の復元処理実行完了後、この新規データが記憶された前記実領域である前記記憶済み領域の実データを前記復元先物理媒体に復元する復元処理を実行することを特徴とする請求項１又は２に記載のストレージ装置。
【請求項４】
前記復元制御部は、
前記復元先物理媒体に対して前記未記憶の領域のデータを復元する復元処理を実行中に、この復元先物理媒体内の実領域に新規データが記憶されると、現在実行中の復元処理を停止して、この新規データが記憶された前記実領域である前記記憶済み領域の実データを前記復元先物理媒体に復元する復元処理を優先的に実行することを特徴とする請求項１〜３の何れか一つに記載のストレージ装置。
【請求項５】
前記復元制御部は、
前記実領域上の前記記憶済み領域及び前記未記憶の領域毎に、実データを割当済みの有無を示す割当状況及び、復元処理実行済みの有無を示す復元状況を管理する状況管理部を有し、前記状況管理部の管理内容に基づき、前記物理媒体上の実領域の内、前記記憶済み領域、前記未記憶の領域及び復元処理実行済みの領域を特定することを特徴とする請求項１〜４の何れか一つに記載のストレージ装置。
【請求項６】
データを記憶する実領域を備えた複数の物理媒体を用いて複数のストレージグループを作成し、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループの内、前記新規データのデータ量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当て、
前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保し、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行すると共に、前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行後、前記縮退要因の物理媒体内の実領域の内、実データが未記憶の領域のデータを前記復元先物理媒体内の実領域に復元する復元処理を実行する
処理を実行することを特徴とするストレージ装置のデータ復元方法。
【請求項７】
データを記憶する実領域を備えた複数の物理媒体を用いて複数のストレージグループを作成するグループ制御部と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループの内、前記新規データのデータ量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御部と、
前記仮想ボリューム制御部によって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する記憶制御部と、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行すると共に、前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行後、前記縮退要因の物理媒体内の実領域の内、実データが未記憶の領域のデータを前記復元先物理媒体内の実領域に復元する復元処理を実行する復元制御部と
を有することを特徴とするストレージコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置のデータ復元方法及びストレージコントローラに関する。
【背景技術】
【０００２】
従来、ディスクアレイ装置、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disk）装置が広く普及している。このＲＡＩＤ装置は、複数のディスクで構成するＲＡＩＤグループ内のディスク同士でデータの冗長構成を図ることで、システム全体としてのデータ信頼性を確保するものである。更に、ＲＡＩＤ装置は、ＲＡＩＤグループ内の一部のディスクに障害が発生して、ＲＡＩＤグループのデータ冗長性に縮退が生じたとしても、障害ディスクに格納中のデータ内容を、予備ディスクや交換後の正常ディスク等の復元先ディスクに復元できる。尚、このような復元処理としては、例えば、データ再構築処理（以下、単にリビルド処理と称する）が広く普及している。
【０００３】
従って、ＲＡＩＤ装置は、一部のディスクに障害が発生してＲＡＩＤグループ内のデータ冗長性に縮退が生じたとしても、リビルド処理を実行することで、障害ディスクに格納中のデータ内容を復元先ディスク上に復元することで、その冗長性を回復できる。
【０００４】
つまり、リビルド処理は、障害ディスクとＲＡＩＤグループ内の障害ディスク以外の他のディスクに基づき、障害ディスクに格納中のデータ内容を実領域の先頭ブロックから最終ブロックへとデータを順次復元する。そして、リビルド処理は、順次復元したデータを復元先ディスクの実領域に順次記憶することで、復元先ディスクに障害ディスクのデータ内容を再構築して復元できる。
【０００５】
また、ＲＡＩＤ装置は、ホストからアクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、新規データのボリューム容量に応じて、同一ＲＡＩＤグループ内に存在するディスクの実領域対応の論理ボリュームを仮想ボリュームに割り当てる。尚、仮想ボリュームとは、ホストから認識される論理ボリュームの作成時には実領域を割り当てず、実際に、ホストから書き込み要求等のＩ／Ｏ要求を検出した時点で、Ｉ／Ｏ要求の範囲に対応する実領域を順次割り当てる。更に、ＲＡＩＤ装置は、仮想ボリュームに割り当てられた論理領域に対応するディスクの実領域に書き込み要求の新規データを実データとして記憶する。
【０００６】
図１４は、仮想ボリュームを使用した場合の論理領域とＲＡＩＤグループ単位の実領域との関係を示す説明図である。仮想ボリュームでは、ＲＡＩＤグループ内の実領域上に実データが記憶されている記憶済みの領域と、実データが未記憶の領域（０データ部分）とがランダムに存在する。
【０００７】
従来のＲＡＩＤ装置では、仮想ボリュームにおけるリビルド処理を実行する場合、障害ディスクの実領域上のデータを先頭ブロックから最終ブロックまで順次復元し、これら順次復元したデータを復元先ディスクの実領域上に再構築する。その結果、従来のＲＡＩＤ装置では、障害ディスクの実領域に記憶中のデータ内容を復元先ディスクの実領域上に復元するので、ＲＡＩＤグループ内のデータ冗長性を回復できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−２２２０６３号公報
【特許文献２】特開２００９−１１６７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記従来のＲＡＩＤ装置では、障害ディスクの実領域上から実データを記憶した記憶済み領域及び未記憶領域を意識することなく、先頭ブロックから最終ブロックまでのデータを一律に復元先ディスクに再構築することになる。しかも、近年では、ディスク単体の記憶容量が大規模化の傾向にある。
【００１０】
しかしながら、従来のＲＡＩＤ装置では、大規模容量のディスク内の先頭ブロックから最終ブロックまでのデータを一律に順次復元して復元先ディスクにデータ内容を再構築するまでの処理時間が非常に長く。その結果、ＲＡＩＤグループ内のデータ冗長性を回復するまでには多大な時間を要する。
【００１１】
開示技術は上記点に鑑みてなされたものであり、その目的とするところは、ストレージグループ内のデータ冗長性に縮退が生じたとしても、そのデータ冗長性の回復に要する時間を大幅に短縮できるストレージ装置等を提供することにある。
【課題を解決するための手段】
【００１２】
本願の開示するストレージ装置は、一つの態様において、データを記憶する実領域を備えた複数の物理媒体と、前記複数の物理媒体を用いて複数のストレージグループを作成するグループ制御部と、アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、前記新規データのボリューム容量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御部と、前記仮想ボリューム制御部によって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する記憶制御部と、前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行する復元制御部とを有する。
【発明の効果】
【００１３】
本願の開示するストレージ装置の一つの態様では、ストレージグループ内のデータ冗長性に縮退が生じたとしても、そのデータ冗長性の回復に要する時間を大幅に短縮できるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１のストレージ装置の構成を示すブロック図である。
【図２】図２は、実施例２のＲＡＩＤ装置の構成を示すブロック図である。
【図３】図３は、ディスク群のディスク単位のブロックアドレスの一例を示す説明図である。
【図４】図４は、ディスク群のＲＡＩＤグループ単位のブロックアドレスの一例を示す説明図である。
【図５】図５は、ＲＡＩＤ管理テーブルのテーブル内容を示す説明図である。
【図６】図６は、ディスク管理テーブルのテーブル内容を示す説明図である。
【図７】図７は、論理領域管理テーブルのテーブル内容を示す説明図である。
【図８】図８は、リビルド対象要素の一例を示す説明図である。
【図９】図９は、仮想ボリューム用リビルド処理に関わるＲＡＩＤコントローラの処理動作を示すフローチャートである。
【図１０】図１０は、仮想ボリューム用リビルド処理に関わるＲＡＩＤコントローラの処理動作を示すフローチャートである。
【図１１】図１１は、仮想ボリューム用リビルド処理に関わるＲＡＩＤコントローラの処理動作を示すフローチャートである。
【図１２】図１２は、新規割当処理に関わるＲＡＩＤコントローラの処理動作を示すフローチャートである。
【図１３】図１３は、ホストＩ／Ｏ要求処理に関わるＲＡＩＤコントローラの処理動作を示すフローチャートである。
【図１４】図１４は、仮想ボリュームを使用した場合の論理領域とＲＡＩＤグループ単位の実領域との関係を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて、本願の開示するストレージ装置、ストレージ装置のデータ復元方法及びストレージコントローラの実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
【実施例１】
【００１６】
図１は、実施例１のストレージ装置の構成を示すブロック図である。図１に示すストレージ装置１は、物理媒体２、グループ制御部１４、仮想ボリューム制御部１１、記憶制御部１２及び復元制御部１３を有する。物理媒体２は、データを記憶する。仮想ボリューム制御部１１は、アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出する。グループ制御部１４は、複数の物理媒体２を用いて複数のストレージグループ２Ａを作成する。仮想ボリューム制御部１１は、書き込み要求を検出すると、複数の物理媒体２で構成する複数のストレージグループ２Ａの内、新規データのボリューム容量に応じて、ストレージグループ２Ａ内に存在する物理媒体２の実領域を仮想ボリュームに割り当てる。
【００１７】
また、記憶制御部１２は、仮想ボリューム制御部１１によって仮想ボリュームに割り当てられた物理媒体２の実領域に新規データを実データとして記憶する。また、記憶制御部１２は、ストレージグループ２Ａ内の物理媒体２に対する実データの冗長性を確保する。また、復元制御部１３は、ストレージグループ２Ａ内のデータ冗長性の縮退を検出する。更に、復元制御部１３は、データ冗長性の縮退を検出すると、この縮退要因の物理媒体２が属するストレージグループ２Ａ内の当該縮退要因の物理媒体２以外の他の物理媒体２を選択する。更に、復元制御部１３は、選択した他の物理媒体２に基づき、この縮退要因の物理媒体２内の実領域の内、記憶済み領域の実データを復元先物理媒体２内の実領域に優先的に復元する復元処理を実行する。
【００１８】
実施例１では、ストレージグループ２Ａ内のデータ冗長性の縮退を検出すると、縮退要因の物理媒体２が属するストレージグループ２Ａ内の他の物理媒体２に基づき、縮退要因の物理媒体２の実領域の内、記憶済み領域の実データを復元先物理媒体２内の実領域に優先的に復元する。その結果、実施例１では、データ冗長性の縮退を検出したとしても、その冗長性の回復に要する処理時間を大幅に短縮して、ストレージグループ内のデータ信頼性を回復できる。
【実施例２】
【００１９】
次に、実施例２のＲＡＩＤ装置について詳細に説明する。図２は、実施例２のＲＡＩＤ装置の構成を示すブロック図である。図２に示すＲＡＩＤ装置１Ａは、ホスト３と接続し、ＲＡＩＤコントローラ４及びディスク群５Ａを有する。ホスト３は、ＲＡＩＤコントローラ４と接続し、Ｉ／Ｏ要求をＲＡＩＤコントローラ４に通知する。ディスク群５Ａは、ＲＡＩＤコントローラ４と接続し、複数のディスク５を含む複数のＲＡＩＤグループで構成する。図３は、ディスク群５Ａのディスク単位のブロックアドレスの一例を示す説明図、図４は、ディスク群５ＡのＲＡＩＤグループ単位のブロックアドレスの一例を示す説明図である。
【００２０】
ディスク群５Ａは、例えば、４台のディスク５（ＤＩＳＫ０〜ＤＩＳＫ３）で構成する。図３に示すディスク５（ＤＩＳＫ０）は、例えば、先頭ブロックアドレス０ｘ００００００００〜最終ブロックアドレス０ｘ０００００２７ｆの実領域で構成する。尚、ディスク５（ＤＩＳＫ０）は、先頭ブロックからユーザデータＤ０，Ｄ４，Ｄ８、パリティデータＰ３及びユーザデータＤ１２を順次記憶している。また、ディスク５（ＤＩＳＫ１）は、先頭ブロックアドレス０ｘ００００００００〜最終ブロックアドレス０ｘ０００００２７ｆの実領域で構成する。尚、ディスク５（ＤＩＳＫ１）は、先頭ブロックからユーザデータＤ１，Ｄ５、パリティデータＰ２及びユーザデータＤ９，Ｄ１３を順次記憶している。
【００２１】
また、ディスク５（ＤＩＳＫ２）は、例えば、先頭ブロックアドレス０ｘ００００００００〜最終ブロックアドレス０ｘ０００００２７ｆの実領域で構成する。尚、ディスク５（ＤＩＳＫ２）は、先頭ブロックからユーザデータＤ２、パリティデータＰ１及びユーザデータＤ６，Ｄ１０，Ｄ１４を順次記憶している。また、ディスク５（ＤＩＳＫ３）は、例えば、先頭ブロックアドレス０ｘ００００００００〜最終ブロックアドレス０ｘ０００００２７ｆの実領域で構成する。尚、ディスク５（ＤＩＳＫ３）は、先頭ブロックからパリティデータＰ０及びユーザデータＤ３，Ｄ７，Ｄ１１、パリティデータＰ４を順次記憶している。
【００２２】
また、ディスク群５Ａは、図４に示すように、ＲＡＩＤグループ単位で構成し、ディスク５（ＤＩＳＫ０〜ＤＩＳＫ３）の一部をストライピングし、ストライプ＃０は、Ｄ０，Ｄ１，Ｄ２及びＰ０で構成する。また、ストライプ＃１は、Ｄ３，Ｄ４，Ｄ５及びＰ１で構成し、ストライプ＃２は、Ｄ６，Ｄ７，Ｄ８及びＰ２で構成し、ストライプ＃３は、Ｄ９，Ｄ１０，Ｄ１１及びＰ３で構成し、ストライプ＃４は、Ｄ１２，Ｄ１３，Ｄ１４及びＰ４で構成する。尚、ＲＡＩＤグループ単位のブロックアドレスとディスク単位のブロックアドレスとは異なる。
【００２３】
ＲＡＩＤコントローラ４は、ホスト側インタフェース４１、ディスク側インタフェース４２及び制御部４３を有する。ホスト側インタフェース４１は、ホスト３と通信接続する通信インタフェースである。ディスク側インタフェース４２は、ディスク群５Ａと通信接続する通信インタフェースである。制御部４３は、ＲＡＩＤコントローラ４全体を制御する。
【００２４】
制御部４３は、仮想ボリューム５１、ＲＡＩＤ管理テーブル５２、ディスク管理テーブル５３、論理領域管理テーブル５４、仮想ボリューム制御部５５及びＲＡＩＤ制御部５６を有する。ＲＡＩＤ管理テーブル５２は、ＲＡＩＤグループ単位の内容を管理する。ディスク管理テーブル５３は、ディスク単位の内容を管理する。論理領域管理テーブル５４は、ＲＡＩＤグループ単位で実領域の所定管理単位毎の割当状況及び復元状況等をビットマップ形式で管理する。尚、所定管理単位とは、実領域を分割した、例えば、３２Ｍバイトの処理領域単位に相当する。
【００２５】
図５は、ＲＡＩＤ管理テーブル５２のテーブル内容の一例を示す説明図である。図５に示すＲＡＩＤ管理テーブル５２は、ＲＡＩＤグループ番号５２Ａ、グループ状態５２Ｂ、ストライプ深さ５２Ｃ、ストライプサイズ５２Ｄ及びメンバディスク５２Ｅを管理している。ＲＡＩＤグループ番号５２Ａは、ＲＡＩＤグループを識別するグループ番号に相当する。グループ状態５２Ｂは、このＲＡＩＤグループの状態を示し、例えば、「縮退状態でのリビルド」、「実データのみ回復状態でのリビルド」及び「通常状態」等の各種ステータスに相当する。ストライプ深さ５２Ｃは、このＲＡＩＤグループ内の１ｄｅｐｔｈに含まれるブロック数に相当する。例えば、図４に示すストライプ＃１の場合、ストライプ深さ５２Ｃは、例えば、Ｄ４内に含まれるブロック数に相当する。ストライプサイズ５２Ｄは、１ストライプ単位のブロック数に相当する。例えば、図４に示すストライプ＃１の場合、ストライプサイズ５２Ｄは、Ｄ３，Ｄ４，Ｄ５及びＰ１の全ブロック数に相当する。メンバディスク５２Ｅは、このＲＡＩＤグループに所属するディスク５を識別するディスク番号に相当する。
【００２６】
図６は、ディスク管理テーブル５３のテーブル内容の一例を示す説明図である。図６に示すディスク管理テーブル５３は、ディスク番号５３Ａ、ディスク状態５３Ｂ、所属ＲＡＩＤグループ番号５３Ｃ及びリビルド進捗アドレス５３Ｄを管理している。ディスク番号５３Ａは、このディスク５を識別する番号に相当する。ディスク状態５３Ｂは、ディスク５の状態、例えば、「故障」、「正常」や「リビルド中」等の各種ステータスに相当する。ＲＡＩＤ所属グループ番号５３Ｃは、このディスク５が所属するＲＡＩＤグループ番号に相当する。リビルド進捗アドレス５３Ｄは、このディスク５がリビルド処理実行中の場合の進捗アドレスに相当する。尚、リビルド進捗アドレス５３Ｄは、図３に示す実領域上のブロックアドレスで管理するものとする。
【００２７】
図７は、論理領域管理テーブル５４のテーブル内容の一例を示す説明図である。図７に示す論理領域管理テーブル５４は、ＲＡＩＤグループ番号５４Ａ、新規割当フラグ５４Ｂ、エントリ単位深さ５４Ｃ及び複数のリビルド対象要素５４Ｄを管理している。新規割当フラグ５４Ｂは、リビルド処理実行中に新規データの割当があったか否かを識別する確認用フラグに相当する。エントリ単位深さ５４Ｃは、エントリ番号単位で担当する最大ｄｅｐｔｈ数に相当する。尚、エントリとは、仮想ボリュームの管理単位毎にリビルド処理を実行するか否かを識別するデータに相当する。
【００２８】
尚、エントリ番号は、ＲＡＩＤグループ内のディスク５の実領域の先頭アドレスから最終アドレスまで所定管理単位で順次付与した番号に相当する。尚、ディスク５の実領域上のブロックアドレスをエントリ番号に変換する方法としては、図３に示す実領域上のブロックアドレスを図４に示すＲＡＩＤグループのブロックアドレスに変換する。そして、そのＲＡＩＤグループのブロックアドレスを所定管理単位に除算することで、その除算結果をエントリ番号として取得する。その結果、実領域のブロックアドレスからエントリ番号を変換できる。また、逆に、エントリ番号をディスク５の実領域上のブロックアドレスに変換する方法としては、エントリ番号に所定管理単位を乗算することで、その乗算結果をＲＡＩＤグループの先頭ストライプのブロックアドレスとして取得する。そして、そのＲＡＩＤグループのブロックアドレスを図３に示す実領域のブロックアドレスに変換する。その結果、エントリ番号を実領域のブロックアドレスに変換できる。
【００２９】
リビルド対象要素５４Ｄは、実領域上の所定管理単位に対応した領域を識別するエントリ番号及び、当該領域の割当状況及び復元状況を１要素とし、例えば、連続する１６エントリ分の合計１６要素で構成する。尚、１要素は、４バイトで構成する。リビルド対象要素５４Ｄは、０〜１５番の１６個のエントリ番号の１６要素を含む。更に、リビルド対象要素５４Ｄは、１６＊ｎ番〜１６＊ｎ＋１５番のエントリ番号の１６個のエントリ番号の１６要素を含む。図８は、リビルド対象要素５４Ｄの一例を示す説明図である。図８に示すリビルド対象要素５４Ｄは、エントリ番号毎に８ビット内の１ビットを割当状況ビットに割り当て、１ビットを復元状況ビットに割り当てる。尚、割当状況ビットは、実データを記憶する実領域を仮想ボリュームに割当済みであるか否かを示すビットに相当し、割当済みの場合はＯＮ、すなわち「１」に設定し、未割当の場合はＯＦＦ、すなわち「０」に設定する。また、復元状況ビットは、実領域に記憶済みの実データをリビルド処理で復元済みであるか否かを示すビットに相当し、復元済みの場合はＯＮ、すなわち「１」に設定し、未復元の場合は「０」に設定する。
【００３０】
尚、論理領域管理テーブル５４は、例えば、１テラバイト容量のディスクを１６本のＲＡＩＤ５（１５＋１）で構成する場合、論理領域管理テーブル５４内の各エントリ番号で割当状況ビット及び復元状況ビットの２ビットに設定する。その結果、論理領域管理テーブル５４の必要サイズは、((1×1024×1024)(MB)÷(32÷15)(MB))×2÷8＝122880(byte)＝120(KB)程度で実現できる。
【００３１】
仮想ボリューム制御部５５は、ホスト３からアクセス対象となる仮想ボリューム５１に対する新規データの書き込み要求を検出する。仮想ボリューム制御部５５は、新規データの書き込み要求を検出すると、ＲＡＩＤグループの内、新規データのボリューム容量に応じて、同一ＲＡＩＤグループ内に存在するディスク５の実領域に対応する論理領域を仮想ボリューム５１に割り当てる。
【００３２】
ＲＡＩＤ制御部５６は、記憶制御部５６Ａ及びリビルド制御部５６Ｂを有する。記憶制御部５６Ａは、仮想ボリューム５１に割り当てられた論理領域に対応するディスク５の実領域に書き込み要求の新規データを実データとして記憶する。リビルド制御部５６Ｂは、ＲＡＩＤグループ内のディスク５に対する障害を検出すると、この障害ディスク５が属するＲＡＩＤグループ内の当該障害ディスク５以外のディスク５の内容に基づき、障害ディスク５の実領域の内、記憶済み領域の実データを復元する。更に、リビルド制御部５６Ｂは、復元した障害ディスク５の実領域の内、記憶済み領域の実データを復元先ディスク５内の実領域に優先的に再構築する。尚、復元先ディスク５とは、予備ディスクや交換後の正常ディスク等に相当する。また、実データを優先的に再構築する処理の詳細については、後述する。
【００３３】
また、ＲＡＩＤ制御部５６は、復元先ディスク５内の実領域上に障害ディスク５の実データを再構築する実データのリビルド処理を開始すると、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」に設定変更する。尚、ＲＡＩＤ制御部５６は、ＲＡＩＤ管理テーブル５２内のグループ状態５２Ｂに「縮退状態でのリビルド」を設定する。その結果、ＲＡＩＤ制御部５６は、復元先ディスク５の実領域上に障害ディスク５上の実データを順次復元することになる。
【００３４】
更に、ＲＡＩＤ制御部５６は、復元先ディスク５内の実領域上に実データを再構築する実データのリビルド処理が完了すると、ＲＡＩＤグループのステータスを「実データのみ回復状態でのリビルド」に設定変更する。尚、ＲＡＩＤ制御部５６は、ＲＡＩＤ管理テーブル５２内のグループ状態５２Ｂに「実データのみ回復状態でのリビルド」を設定する。その結果、ＲＡＩＤ制御部５６は、復元先ディスク５の実領域上に障害ディスク５上の実データを優先的に復元したことになる。
【００３５】
更に、ＲＡＩＤ制御部５６は、実データのリビルド処理完了後、障害ディスク５上の初期データ、例えば０データ部分を復元先ディスク５内の実領域上に再構築する０保証のリビルド処理が完了すると、ＲＡＩＤグループのステータスを「正常状態」に設定変更する。尚、ＲＡＩＤ制御部５６は、ＲＡＩＤ管理テーブル５２内のグループ状態５２Ｂに「正常状態」を設定する。その結果、ＲＡＩＤ制御部５６は、復元先ディスク５の実領域上に障害ディスク５上の実データ及び０データ部分を復元したことになる。
【００３６】
また、ＲＡＩＤ制御部５６は、実データのリビルド処理実行中に新規データの書き込み要求に応じて現在復元済みの実領域以後のアドレスに新規データが書き込まれた場合、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」のまま継続する。尚、現在復元済みの実領域以後のアドレスとは、未だ復元されていない領域以後のアドレスに相当する。その結果、ＲＡＩＤ制御部５６は、実データのリビルド処理実行中に新規データが書き込まれたとしても、復元先ディスク５の実領域上に新規データを含む実データを復元することになる。
【００３７】
また、ＲＡＩＤ制御部５６は、実データのリビルド処理実行中に新規データの書き込み要求に応じて現在復元済みの実領域以前のアドレスに新規データが書き込まれた場合、現在の実データのリビルド処理が完了した後、新規データのリビルド処理を実行する。尚、現在の実データのリビルド処理が完了した後とは、リビルド開始時に認識した先頭エントリから最終エントリまでのリビルド処理が完了した後に相当する。その結果、ＲＡＩＤ制御部５６は、実データのリビルド処理実行中に新規データが書き込まれたとしても、復元先ディスク５の実領域上に新規データを含む実データを復元することになる。
【００３８】
また、ＲＡＩＤ制御部５６は、０保証のリビルド処理実行中に新規データの書き込み要求に応じてディスク５内に新規データが書き込まれると、０保証のリビルド処理を中断し、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」に変更する。ＲＡＩＤ制御部５６は、「縮退状態でのリビルド」への設定変更に応じて、０保証のリビルド処理を中断して、新規データのリビルド処理を開始する。その結果、ＲＡＩＤ制御部５６は、新規データのリビルド処理に応じて復元先ディスク５の実領域上に新規データを再構築する。その結果、ＲＡＩＤ制御部５６は、０保証のリビルド処理実行中に新規データが書き込まれたとしても、復元先ディスク５の実領域上に新規データを含む実データを復元することになる。更に、リビルド制御部５６Ｂは、復元先ディスク５に実データを再構築後、障害ディスク５の実領域の内、未記憶の領域の０データ部分を復元先ディスク５の実領域に再構築する。
【００３９】
尚、ＲＡＩＤ制御部５６は、リビルド処理実行中に障害ディスク５以外の他のディスク５から順次復元したデータを実領域のブロックアドレスで進捗アドレス５３Ｄとしてディスク管理テーブル５３内に管理する。
【００４０】
次に、実施例２のＲＡＩＤ装置１Ａの動作について説明する。図９乃至図１１は、仮想ボリューム用リビルド処理に関わるＲＡＩＤコントローラ４の処理動作を示すフローチャートである。仮想ボリューム用リビルド処理では、ＲＡＩＤグループ内のディスク障害等でデータ冗長性に縮退が生じた場合に、データ冗長性の縮退を回復するリビルド処理を実行する処理である。尚、データ冗長性の縮退とは、ＲＡＩＤグループ内の冗長性ディスク５が１台でも故障して冗長性の信頼性が低下した場合を指すものとする。
【００４１】
図９に示すＲＡＩＤコントローラ４内の制御部４３は、ＲＡＩＤグループ内に存在するディスク５内の障害を検出すると（ステップＳ１１）、リビルド先ディスク５が使用可能であるか否かを判定する（ステップＳ１２）。尚、リビルド先ディスク５とは、障害ディスク５に代わる予備ディスク又は交換後の正常ディスク等の復元先ディスクに相当する。
【００４２】
制御部４３は、リビルド先ディスク５が使用可能である場合に（ステップＳ１２肯定）、リビルド対象が仮想ボリュームであるか否かを判定する（ステップＳ１３）。尚、制御部４３は、ＲＡＩＤグループ上のボリューム毎に仮想ボリュームであるか否かを管理する図示せぬテーブル内容に基づき、リビルド対象が仮想ボリュームであるか否かを判定するものである。更に、制御部４３は、リビルド対象が仮想ボリュームである場合に（ステップＳ１３肯定）、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」に設定する（ステップＳ１４）。尚、制御部４３は、「縮退状態でのリビルド」に設定すると、ＲＡＩＤ管理テーブル５２内の該当ＲＡＩＤグループに対応するグループ状態５２Ｂを「縮退状態でのリビルド」に設定する。
【００４３】
制御部４３は、リビルド対象ボリュームのＲＡＩＤ構成から論理領域管理テーブル５４内の１エントリの重みを計算する（ステップＳ１５）。尚、１エントリの重みとは、ＲＡＩＤ構成、例えば、ＲＡＩＤグループ構成のディスク本数に応じてディスク１本当たりに割り当てられる管理単位の容量を変動させる重み付けに相当する。その重みの計算の考え方としては、例えば、ＲＡＩＤグループ内のディスク本数を４本として仮想ボリュームの管理単位を３２ＭＢとした場合、３２ＭＢ÷４本で１エントリ分の容量は８ＭＢとなる。尚、説明の便宜上、ディスク内のパリティを考慮せず計算したが、ＲＡＩＤ５の場合は当然ながら、パリティを考慮した計算となることは言うまでもない。更に、制御部４３内のＲＡＩＤ制御部５６は、割当状況問合せ対象を論理領域管理テーブル５４内の先頭のエントリ番号に設定し（ステップＳ１６）、割当状況問合せ対象のエントリ番号に対応する論理領域の管理単位の割当状況を問い合わせる（ステップＳ１７）。
【００４４】
ＲＡＩＤ制御部５６は、問合せ対象のエントリ番号に対する論理領域が割当済みであるか否かを判定する（ステップＳ１８）。ＲＡＩＤ制御部５６は、論理領域が割当済みである場合に（ステップＳ１８肯定）、論理領域管理テーブル５４の該当エントリ番号の割当状況ビットを割当済みとしてＯＮに設定し、復元状況ビットを未復元を表すＯＦＦに設定する（ステップＳ１９）。
【００４５】
更に、ＲＡＩＤ制御部５６は、該当ＲＡＩＤグループの全論理領域に対する割当状況問合せが完了したか否かを判定する（ステップＳ２０）。尚、ＲＡＩＤ制御部５６は、仮想ボリュームの使用状況を管理する図示せぬテーブル内容に基づき、全論理領域に対する割当状況問合せが完了したか否かを判定するものである。更に、ＲＡＩＤ制御部５６は、該当ＲＡＩＤグループの全論理領域に対する問合せが完了した場合に（ステップＳ２０肯定）、リビルド実施対象を先頭のエントリ番号に設定し（ステップＳ２１）、図１０に示すＭ１に移行する。
【００４６】
ＲＡＩＤ制御部５６は、問合せ対象のエントリ番号に対応する論理領域が割当済みでない場合に（ステップＳ１８否定）、論理領域管理テーブル５４の該当エントリ番号の割当状況ビット及び復元状況ビットをＯＦＦに設定する（ステップＳ２２）。尚、ＲＡＩＤ制御部５６は、割当状況ビットを未割当としてＯＦＦに設定し、復元状況ビットを未復元を表すＯＦＦに設定する。その後、ＲＡＩＤ制御部５６は、問合せが完了したか否かを判定すべく、ステップＳ２０に移行する。
【００４７】
また、ＲＡＩＤ制御部５６は、該当ＲＡＩＤグループの全論理領域に対する問合せが完了していない場合に（ステップＳ２０否定）、割当状況問合せ対象を次のエントリ番号に設定し（ステップＳ２３）、ステップＳ１７に移行する。
【００４８】
また、制御部４３は、リビルド先ディスク５が使用可能でない場合に（ステップＳ１２否定）、ＲＡＩＤグループのステータスを「縮退状態」に変更し（ステップＳ２４）、この処理動作を終了する。尚、制御部４３は、「縮退状態」に変更すると、ＲＡＩＤ管理テーブル５２内のＲＡＩＤグループに対応するグループ状態５２Ｂを「縮退状態」に設定する。
【００４９】
更に、制御部４３は、リビルド対象が仮想ボリュームでない場合に（ステップＳ１３否定）、従来のリビルド処理を実行し（ステップＳ２５）、この処理動作を終了する。
【００５０】
図１０に示すＭ１において制御部４３は、リビルド実施対象を先頭のエントリ番号に設定すると、このエントリ番号の割当状況ビットがＯＮ、かつ、復元状況ビットがＯＦＦであるか否かを判定する（ステップＳ３１）。ＲＡＩＤ制御部５６内のリビルド制御部５６Ｂは、エントリ番号の割当状況がＯＮ、かつ、復元状況ビットがＯＦＦである場合に（ステップＳ３１肯定）、１回のリビルド処理の処理範囲をエントリ番号の先頭から実行するように設定する（ステップＳ３２）。
【００５１】
リビルド制御部５６Ｂは、１回のリビルド処理を実行する（ステップＳ３３）。尚、リビルド処理は、障害ディスク５を含む該当ＲＡＩＤグループ内の障害ディスク５以外の他のディスク５の実データ及びパリティを読み出す。更に、リビルド処理は、これら読み出した実データ及びパリティに基づきリビルド対象の実データを復元し、この復元した実データを復元先ディスク５の実領域上に記憶する。
【００５２】
リビルド制御部５６Ｂは、処理中のエントリ番号の論理領域に関わる実領域に対するリビルド処理が完了したか否かを判定する（ステップＳ３４）。リビルド制御部５６Ｂは、リビルド処理が完了した場合に（ステップＳ３４肯定）、このエントリ番号の復元状況ビットを復元済みとしてＯＮに設定する（ステップＳ３５）。尚、ＲＡＩＤ制御部５６は、論理領域管理テーブル５４内の該当エントリ番号に対応する復元状況ビットをＯＮに設定する。更に、リビルド制御部５６Ｂは、論理領域管理テーブル５４内の最終のエントリ番号までの論理領域に関わる実領域に対するリビルド処理が完了したか否かを判定する（ステップＳ３６）。
【００５３】
リビルド制御部５６Ｂは、最終のエントリ番号までリビルド処理が完了した場合に（ステップＳ３６肯定）、論理領域管理テーブル５４内の新規割当フラグ５４ＢがＯＮであるか否かを判定する（ステップＳ３７）。
【００５４】
リビルド制御部５６Ｂは、論理領域管理テーブル５４内の新規割当フラグ５４ＢがＯＮでない、すなわちＯＦＦである場合に（ステップＳ３７否定）、ＲＡＩＤグループのステータスを「実データのみ回復状態でのリビルド」に設定し（ステップＳ３８）、図１１に示すＭ２に移行する。尚、ＲＡＩＤ制御部５６は、ＲＡＩＤ管理テーブル５２内の該当ＲＡＩＤグループに対応するグループ状態５２Ｂを「実データのみ回復状態でのリビルド」に設定する。ＲＡＩＤコントローラ４は、該当ＲＡＩＤグループ内のデータ冗長性が回復したものと認識する。
【００５５】
また、リビルド制御部５６Ｂは、該当エントリ番号の割当状況ビットがＯＮ、かつ、復元状況ビットがＯＦＦでない場合に（ステップＳ３１否定）、リビルド実施対象を次のエントリ番号に設定し（ステップＳ３９）、ステップＳ３１に移行する。
【００５６】
また、リビルド制御部５６Ｂは、処理中エントリ番号の論理領域に関わる実領域に対するリビルド処理が完了していない場合に（ステップＳ３４否定）、１回のリビルド処理の範囲を次の領域に１処理分シフトして再設定し（ステップＳ４０）、再設定した領域に対する１回のリビルド処理を実行すべく、ステップＳ３３に移行する。
【００５７】
また、リビルド制御部５６Ｂは、論理領域管理テーブル５４内の最終エントリ番号までの論理領域に関わる実領域に対するリビルド処理が完了していない場合に（ステップＳ３６否定）、リビルド実施対象を次のエントリ番号に設定し（ステップＳ４１）、ステップＳ３１に移行する。
【００５８】
また、リビルド制御部５６Ｂは、論理領域管理テーブル５４内の新規割当フラグ５４ＢがＯＮである場合に（ステップＳ３７肯定）、リビルド処理中に新規データがディスク５に記憶されたものと判断し、新規割当フラグ５４ＢをＯＦＦに設定する（ステップＳ４２）。そして、リビルド制御部５６Ｂは、リビルド実施対象を先頭エントリ番号に設定し（ステップＳ４３）、新規データ記憶済みの実領域に対応する論理領域のエントリ番号を論理領域管理テーブル５４から検索すべく、ステップＳ３１に移行する。尚、最終的に、リビルド制御部５６Ｂは、割当状況ビットがＯＮ、かつ復元状況ビットがＯＦＦの新規データに対応するエントリ番号を取得すると、リビルド処理実行中に実領域に記憶された新規の実データをリビルド先ディスク５に再構築する。
【００５９】
図１１に示すＭ２においてリビルド制御部５６Ｂは、ＲＡＩＤグループのステータスを「実データのみ回復状態でのリビルド」に設定すると、０保証実施対象を先頭のエントリ番号に設定する（ステップＳ５１）。リビルド制御部５６Ｂは、０保証実施対象を先頭のエントリ番号に設定すると、このエントリ番号に対する割当状況ビットがＯＦＦ、かつ復元状況ビットがＯＦＦであるか否かを判定する（ステップＳ５２）。
【００６０】
リビルド制御部５６Ｂは、エントリ番号の割当状況ビットがＯＦＦ、かつ、復元状況ビットがＯＦＦである場合に（ステップＳ５２肯定）、１回の０保証のリビルド処理の処理範囲を該当エントリの先頭から実行するように設定する（ステップＳ５３）。
【００６１】
リビルド制御部５６Ｂは、１回の０保証のリビルド処理を実行する（ステップＳ５４）。尚、０保証のリビルド処理は、障害ディスク５を含むＲＡＩＤグループ内の当該障害ディスク５以外の他のディスク５の未記憶領域の０データ及びパリティを読み出す。更に、０保証のリビルド処理は、これら読み出した０データ及びパリティに基づきリビルド対象の０データを復元し、この復元した０データを復元先ディスク５の実領域上に記憶する。
【００６２】
リビルド制御部５６Ｂは、ＲＡＩＤグループのステータスが「縮退状態でのリビルド」であるか否かを判定する（ステップＳ５５）。リビルド制御部５６Ｂは、「縮退状態でのリビルド」でない場合に（ステップＳ５５否定）、処理中のエントリ番号の論理領域に関わる実領域に対する０保証のリビルド処理が完了したか否かを判定する（ステップＳ５６）。
【００６３】
リビルド制御部５６Ｂは、このエントリ番号の復元状況ビットを復元済みとしてＯＮに設定すると（ステップＳ５７）、論理領域管理テーブル５４内の最終エントリ番号までの論理領域に関わる実領域に対するリビルド処理が完了したか否かを判定する（ステップＳ５８）。
【００６４】
リビルド制御部５６Ｂは、最終エントリ番号までの論理領域に関わる実領域に対するリビルド処理が完了した場合に（ステップＳ５８肯定）、ＲＡＩＤグループのステータスを「正常状態」に変更し（ステップＳ５９）、この処理動作を終了する。尚、ＲＡＩＤ制御部５６は、ＲＡＩＤ管理テーブル５２内の該当ＲＡＩＤグループに対応するグループ状態５２Ｂを「正常状態」に設定する。
【００６５】
また、リビルド制御部５６Ｂは、該当エントリ番号の割当状況ビットがＯＦＦ、かつ、復元状況ビットがＯＦＦでない場合に（ステップＳ５２否定）、０保証のリビルド実施対象を次のエントリ番号に設定し（ステップＳ６０）、ステップＳ５２に移行する。
【００６６】
また、リビルド制御部５６Ｂは、ＲＡＩＤグループ内の「縮退状態でのリビルド」である場合に（ステップＳ５５肯定）、０保証のリビルド処理中に新規データの書き込みがあったものと判断する。そして、リビルド制御部５６Ｂは、リビルド実施対象を先頭エントリ番号に設定し（ステップＳ６１）、新規データ記憶済みの実領域に関わる論理領域に該当するエントリ番号を論理領域管理テーブル５４から検索すべく、図１０に示すＭ３に移行する。
【００６７】
また、リビルド制御部５６Ｂは、処理中エントリの０保証のリビルド処理が完了していない場合に（ステップＳ５６否定）、１回の０保証のリビルド処理の範囲を次の領域に１処理分シフトして再設定する（ステップＳ６２）。そして、リビルド制御部５６Ｂは、再設定した領域に対する１回の０保証のリビルド処理を実行すべく、ステップＳ５４に移行する。
【００６８】
また、リビルド制御部５６Ｂは、論理領域管理テーブル５４内の最終エントリ番号までの０保証のリビルド処理が完了していない場合に（ステップＳ５８否定）、０保証のリビルド実施対象を次のエントリに設定し（ステップＳ６３）、ステップＳ５２に移行する。
【００６９】
仮想ボリューム用リビルド処理では、障害ディスク５上の実データを優先的にリビルド先ディスク５上に再構築すると、ＲＡＩＤグループのステータスを「実データのみ回復状態でのリビルド」に変更する。その結果、ＲＡＩＤグループは、冗長性の縮退状態から回復したことになる。
【００７０】
仮想ボリューム用リビルド処理では、リビルド先ディスク５上に実データを再構築して「実データのみ回復状態でのリビルド」に変更した後、障害ディスク５上の０データ部分をリビルド先ディスク５に再構築する０保証のリビルド処理を実行する。その結果、０保証のリビルド処理が完了した時点で、ＲＡＩＤグループのステータスを「通常状態」に変更すると、障害ディスク５上の実データ及び０データを復元したことになる。
【００７１】
仮想ボリューム用リビルド処理では、０保証のリビルド処理実行中に新規データの書き込み等でＲＡＩＤグループのステータスを「縮退状態でのリビルド」に変更する。更に、仮想ボリューム用リビルド処理では、論理領域管理テーブル５４内で新規データ記憶済みの実領域に関わる論理領域のエントリ番号を検索する。その結果、仮想ボリューム用リビルド処理では、エントリ番号に基づき、新規データの実データをリビルド先ディスク５上に再構築できる。
【００７２】
次に、リビルド処理実行中に新規データを割り当てる新規割当処理について説明する。図１２は、新規割当処理に関わるＲＡＩＤコントローラ４の処理動作を示すフローチャートである。
【００７３】
図１２においてＲＡＩＤコントローラ４内の制御部４３は、新規データの書き込み要求に応じて新規割当要求を検出したか否かを判定する（ステップＳ７１）。制御部４３は、新規割当要求を検出した場合に（ステップＳ７１肯定）、この新規データの対象ＲＡＩＤグループのステータスが「縮退状態でのリビルド」又は「実データのみ回復状態でのリビルド」であるか否かを判定する（ステップＳ７２）。
【００７４】
制御部４３は、「縮退状態でのリビルド」又は「実データのみ回復状態でのリビルド」である場合に（ステップＳ７２肯定）、新規データの割当要求範囲の論理領域に該当するエントリ番号を決定する（ステップＳ７３）。制御部４３は、論理領域管理テーブル５４内の該当エントリ番号の割当状況ビットをＯＮに設定し（ステップＳ７４）、対象ＲＡＩＤグループのステータスが「縮退状態でのリビルド」であるか否かを判定する（ステップＳ７５）。
【００７５】
制御部４３は、対象ＲＡＩＤグループのステータスが「縮退状態でのリビルド」の場合に（ステップＳ７５肯定）、新規データの割当要求範囲の先頭の論理領域に関わる実領域がリビルド実施済みであるか否かを判定する（ステップＳ７６）。制御部４３は、リビルド実施済みである場合に（ステップＳ７６肯定）、論理領域管理テーブル５４内の新規割当フラグ５４ＢをＯＮに設定し（ステップＳ７７）、この処理動作を終了する。尚、リビルド制御部５６Ｂは、新規割当フラグ５４ＢがＯＮであるため（図１０のステップＳ３７参照）、現在実行中の実データのリビルド処理完了後、再度、新規データ記憶済みの実領域相当のエントリ番号を論理領域管理テーブル５４から検索する。更に、リビルド制御部５６Ｂは、その検索結果としてのエントリ番号を設定して新規データのリビルド処理を実行する。
【００７６】
また、制御部４３は、新規データの割当要求を検出しなかった場合に（ステップＳ７１否定）、この処理動作を終了する。更に、制御部４３は、ＲＡＩＤグループのステータスが「縮退状態でのリビルド」又は「実データのみ回復状態でのリビルド」でない場合に（ステップＳ７２否定）、この処理動作を終了する。
【００７７】
制御部４３は、対象ＲＡＩＤグループのステータスが「縮退状態でのリビルド」でない場合に（ステップＳ７５否定）、「実データのみ回復状態でのリビルド」と判断し、０保証のリビルド処理実行中であると判断する。そして、制御部４３は、０保証のリビルド処理実行中に、このエントリ番号の復元状況ビットがＯＮであるか否かを判定する（ステップＳ７８）。制御部４３は、エントリ番号の復元状況ビットがＯＮである場合に（ステップＳ７８肯定）、この処理動作を終了する。更に、制御部４３は、エントリ番号の復元状況ビットがＯＮでない、すなわちＯＦＦである場合に（ステップＳ７８否定）、対象ＲＡＩＤグループのステータスを「縮退情報のリビルド」に設定し（ステップＳ７９）、この処理動作を終了する。尚、リビルド制御部５６Ｂは、「縮退状態でのリビルド」に設定されると（図１１のステップＳ５５参照）、０保証のリビルド処理を中止して、新規データ記憶済みの実領域相当のエントリ番号を論理領域管理テーブル５４から検索する。更に、リビルド制御部５６Ｂは、その検索結果としてのエントリ番号を設定して新規データのリビルド処理を実行する。また、制御部４３は、新規データの割当要求範囲の先頭の論理領域に関わる実領域がリビルド実施済みでない場合に（ステップＳ７６否定）、この処理動作を終了する。尚、リビルド制御部５６Ｂは、「縮退状態でのリビルド」であるため、実行中の実データのリビルド処理で新規データのリビルド処理を実行することになる。
【００７８】
図１２に示す新規割当処理では、実データのリビルド処理実行中に、新規データの割当要求範囲の先頭の論理領域に関わる実領域がリビルド実施済みの場合、実行中の実データのリビルド処理完了後、再度、新規データのリビルド処理を実行する。その結果、新規割当処理では、実データのリビルド処理実行中に割り当てられた新規データをリビルド先ディスク５の実領域上に復元できる。
【００７９】
新規割当処理では、実データのリビルド処理実行中に、新規データの割当要求範囲の先頭の論理領域に関わる実領域がリビルド実施済みでない場合、実行中の実データのリビルド処理で新規データのリビルド処理を実行する。その結果、新規割当処理では、実データのリビルド処理実行中に割り当てられた新規データをリビルド先ディスク５の実領域上に復元できる。
【００８０】
更に、新規割当処理では、０保証のリビルド処理実行中に、新規データが割り当てられると、実行中の０保証のリビルド処理を中止して、新規データのリビルド処理を実行する。その結果、新規割当処理では、０保証のリビルド処理実行中に割り当てられた新規データをリビルド先ディスク５の実領域上に復元できる。
【００８１】
次に、ホスト３からのＩ／Ｏ要求に対応するＲＡＩＤコントローラ４の動作について説明する。図１３は、ホストＩ／Ｏ要求処理に関わるＲＡＩＤコントローラ４の処理動作を示すフローチャートである。
【００８２】
図１３においてＲＡＩＤコントローラ４内の制御部４３は、ホスト３からＩ／Ｏ要求を検出したか否かを判定する（ステップＳ８１）。尚、Ｉ／Ｏ要求とは、例えば、新規データの書き込み要求等に相当する。制御部４３は、ホスト３からＩ／Ｏ要求を検出した場合に（ステップＳ８１肯定）、ＲＡＩＤグループがＩ／Ｏ要求受付可能な状態であるか否かを判定する（ステップＳ８２）。
【００８３】
制御部４３は、Ｉ／Ｏ要求受付可能な状態である場合に（ステップＳ８２肯定）、ＲＡＩＤグループが冗長性を縮退するディスク障害があるか否かを判定する（ステップＳ８３）。制御部４３は、ＲＡＩＤグループ内にディスク障害がない場合に（ステップＳ８３否定）、ＲＡＩＤグループのステータスを「通常状態」と判断する。更に、制御部４３は、ＲＡＩＤグループが「通常状態」の場合、該当全ディスク５を使用してＩ／Ｏ要求範囲の論理領域に関わる実領域に対して通常アクセスを実行し（ステップＳ８４）、この処理動作を終了する。
【００８４】
また、制御部４３は、ホスト３からＩ／Ｏ要求を検出しなかった場合に（ステップＳ８１否定）、この処理動作を終了する。更に、制御部４３は、ＲＡＩＤグループがＩ／Ｏ要求の受付可能な状態でない場合に（ステップＳ８２否定）、Ｉ／Ｏ要求エラーをホスト３に通知し（ステップＳ８５）、この処理動作を終了する。
【００８５】
また、制御部４３は、ＲＡＩＤグループ内にディスク障害がある場合に（ステップＳ８３肯定）、ＲＡＩＤグループがリビルド処理実行中であるか否かを判定する（ステップＳ８６）。制御部４３は、ＲＡＩＤグループがリビルド処理実行中でない場合に（ステップＳ８６否定）、ＲＡＩＤグループのステータスを「縮退状態」と判断する。更に、制御部４３は、リビルド処理実行中でない場合に（ステップＳ８６否定）、Ｉ／Ｏ要求範囲の論理領域に関わる実領域に対して障害ディスク５を除外して該当ＲＡＩＤグループ内の正常なディスク５に対して縮退アクセスを実行する（ステップＳ８７）。そして、制御部４３は、この処理動作を終了する。
【００８６】
また、制御部４３は、ＲＡＩＤグループがリビルド処理実行中である場合に（ステップＳ８６肯定）、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」と判断する。更に、制御部４３は、リビルド処理実行中である場合に、現在実行中の実データのリビルド処理によるリビルド先ディスク（復元先ディスク）５へのデータ再構築が完了したか否かを判定する（ステップＳ８８）。制御部４３は、リビルド先ディスク５へのデータ再構築が完了した場合に（ステップＳ８８肯定）、ＲＡＩＤグループのステータスを「実データのみ回復状態でのリビルド」と判断する。更に、制御部４３は、データ再構築が完了した場合に、通常アクセスを実行すべく、ステップＳ８４に移行する。
【００８７】
また、制御部４３は、リビルド先ディスク５へのデータ再構築が完了していない場合に（ステップＳ８８否定）、ＲＡＩＤグループのステータスを「縮退状態でのリビルド」と判断する。更に、制御部４３は、データ再構築が完了していない場合に、リビルド先ディスク５上でＩ／Ｏ要求範囲の論理領域に対応するブロックアドレスを算出する（ステップＳ８９）。制御部４３は、リビルド先ディスク５上でＩ／Ｏ要求範囲のブロックアドレスに該当する論理領域管理テーブル５４内のエントリ番号を検索する（ステップＳ９０）。
【００８８】
制御部４３は、Ｉ／Ｏ要求範囲相当のブロックアドレスに該当するエントリ番号を検索すると、このＩ／Ｏ要求範囲に該当するエントリ番号範囲が、復元状況ビットに基づき復元済みであるか否かを判定する（ステップＳ９１）。制御部４３は、Ｉ／Ｏ要求範囲に該当するエントリ番号範囲が復元済みの場合に（ステップＳ９１肯定）、通常アクセスを実行すべく、ステップＳ８４に移行する。
【００８９】
また、制御部４３は、Ｉ／Ｏ要求範囲に該当するエントリ番号範囲が復元済みでない場合に（ステップＳ９１否定）、リビルド先ディスク５が「故障状態」にステータスを変更する（ステップＳ９２）。そして、制御部４３は、リビルド先ディスク５が故障状態にステータスを変更すると、縮退アクセスを実行すべく、ステップＳ８７に移行する。
【００９０】
図１３に示すホストＩ／Ｏ要求処理では、ＲＡＩＤグループのステータスが「通常状態」の場合にホスト３からのＩ／Ｏ要求を検出すると、ＲＡＩＤグループ内の該当ディスク５に対して通常アクセスを実現できる。
【００９１】
ホストＩ／Ｏ要求処理では、ＲＡＩＤグループのステータスが「実データのみ回復状態でのリビルド」の場合にホスト３からのＩ／Ｏ要求を検出すると、ＲＡＩＤグループ内の該当ディスク５に対する通常アクセスを実現できる。
【００９２】
ホストＩ／Ｏ要求処理では、ＲＡＩＤグループのステータスが「縮退状態」又は「縮退状態でのリビルド」の場合にホスト３からのＩ／Ｏ要求を検出すると、障害ディスク５が属するＲＡＩＤグループ内の正常なディスク５に対して縮退アクセスを実現できる。
【００９３】
上記実施例２では、ＲＡＩＤグループ内のデータ冗長性の縮退を検出すると、障害ディスク５が属するＲＡＩＤグループ内の障害ディスク５以外の正常なディスク５の実データ及びパリティを読み出す。更に、上記実施例２では、これら実データ及びパリティに基づき、障害ディスク５の実領域の内、記憶済み領域の実データを復元し、この復元した実データを復元先ディスク５内の実領域に優先的に復元する。その結果、実施例２では、ＲＡＩＤグループ内のデータ冗長性に縮退が生じたとしても、そのデータ冗長性の回復に要する時間を大幅に短縮して、データ冗長性の信頼性を確保できる。
【００９４】
更に、上記実施例２では、復元先ディスク５に対して記憶済み領域の実データを復元するリビルド処理を実行後、障害ディスク５内の実領域の内、実データが未記憶の領域の０データ部分を復元先ディスク５内の実領域に復元する。その結果、実施例２では、障害ディスク５の実データ及び０データ部分を復元先ディスク５に完全に復元できる。
【００９５】
更に、上記実施例２では、復元先ディスク５に対する実データのリビルド処理を実行中でも、このリビルド処理実行済みの実データに関わる記憶済み領域以降のアドレスに相当する実領域に新規データを記憶できる。更に、上記実施例２では、新規データが記憶されると、論理領域管理テーブル５４の管理内容に基づき、この新規データが記憶された記憶済み領域の実データも含めて、復元先ディスク５に対して記憶済み領域の実データを復元するリビルド処理を継続する。その結果、実施例２では、実データのリビルド処理実行中に新規データが書き込まれたとしても、その新規データも復元先ディスク５の実領域上に復元できる。
【００９６】
更に、上記実施例２では、復元先ディスク５に対する実データのリビルド処理を実行中でも、このリビルド処理実行済みの実データに関わる記憶済み領域以前のアドレスに相当する実領域に新規データを記憶できる。更に、上記実施例２では、新規データが記憶されると、現在実行中のリビルド処理完了後、論理領域管理テーブル５４の管理内容に基づき、この新規データが記憶された記憶済み領域の実データを復元先ディスク５に復元するリビルド処理を実行する。その結果、実施例２では、実データのリビルド処理実行中に新規データが書き込まれたとしても、その新規データを復元先ディスク５の実領域上に復元できる。
【００９７】
更に、上記実施例２では、復元先ディスク５に対する０保証のリビルド処理を実行中でも、該当ＲＡＩＤグループ内のディスク５内の実領域に新規データを記憶できる。更に、上記実施例２では、新規データが記憶されると、論理領域管理テーブル５４の管理内容に基づき、現在実行中の０保証のリビルド処理を停止して、この新規データが記憶された記憶済み領域の実データを復元先ディスク５に復元するリビルド処理を優先的に実行する。その結果、実施例２では、０保証のリビルド処理実行中に新規データが書き込まれたとしても、その新規データを復元先ディスク５の実領域上に復元できる。
【００９８】
更に、上記実施例２では、実領域上の記憶済み領域及び未記憶の領域対応の論理領域毎に、実データを割当済みの有無を示す割当状況ビット及び、リビルド処理実行済みの有無を示す復元状況ビットを論理領域管理テーブル５４に管理する。更に、上記実施例２では、論理領域管理テーブル５４の割当状況ビット及び復元状況ビットに基づき、ディスク５上の実領域の内、記憶済み領域、未記憶の領域及び復元済み領域を特定できる。
【００９９】
尚、上記実施例２では、障害ディスク５上の０データ部分を復元先ディスク５に復元する際、０保証のリビルド処理を実行した。しかしながら、障害ディスク５上の０データ部分を復元先ディスク５に復元する際に、復元先ディスク５の該当する実領域を部分フォーマットすることで０データ部分を復元するようにしても良い。
【０１００】
また、上記実施例２では、０保証された領域を予めプールしておき、リビルド処理実行中に新規データの書き込み要求を検出した場合、プールされた０保証の領域に新規データを割り当てるようにしても良い。
【０１０１】
また、上記実施例２では、初期データであるデータの未記憶領域として０データ部分を例に挙げて説明したが、フォーマットデータ等であっても良い。
【０１０２】
また、上記実施例２では、０保証のリビルド処理実行中に新規データの書き込み要求に応じて該当ＲＡＩＤグループ内の障害ディスク５以外の正常なディスク５内に新規データが書き込まれると、０保証のリビルド処理を中断する。そして、該当ＲＡＩＤグループのステータスを「縮退状態でのリビルド」に変更した。しかしながら、０保証のリビルド処理実行中に新規データの書き込み要求に応じて該当ＲＡＩＤグループの復元先ディスク５内に新規データが書き込まれるようにしても良く。この場合、該当ＲＡＩＤグループのステータスを変更しなくても済む。
【０１０３】
また、上記実施例２では、ＲＡＩＤレベルがＲＡＩＤ５のＲＡＩＤ装置１Ａを例に挙げて説明したが、ＲＡＩＤレベルがＲＡＩＤ６のＲＡＩＤ装置についても適用可能である。
【０１０４】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１０５】
以上、本実施例を含む実施の形態に関し、更に以下の付記を開示する。
【０１０６】
（付記１）データを記憶する実領域を備えた複数の物理媒体と、
前記複数の物理媒体を用いて複数のストレージグループを作成するグループ制御部と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、前記新規データのボリューム容量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御部と、
前記仮想ボリューム制御部によって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する記憶制御部と、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行する復元制御部と
を有することを特徴とするストレージ装置。
【０１０７】
（付記２）前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行後、前記縮退要因の物理媒体内の実領域の内、実データが未記憶の領域のデータを前記復元先物理媒体内の実領域に復元する復元処理を実行することを特徴とする付記１記載のストレージ装置。
【０１０８】
（付記３）前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行後、前記縮退要因の物理媒体内の実領域の内、実データが未記憶の領域のデータを前記復元先物理媒体内の実領域に復元すべく、前記復元先物理媒体内の該当する実領域に対してフォーマット処理を実行することを特徴とする付記１記載のストレージ装置。
【０１０９】
（付記４）前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行中に、この復元処理実行済みの実データに関わる記憶済み領域以降のアドレスに相当する実領域に新規データが記憶されると、この新規データが記憶された記憶済み領域の実データも含めて、前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を継続することを特徴とする付記１〜３の何れか一つに記載のストレージ装置。
【０１１０】
（付記５）前記復元制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行中に、この復元処理実行済みの実データに関わる記憶済み領域以前のアドレスに相当する実領域に新規データが記憶されると、現在実行中の復元処理実行完了後、この新規データが記憶された前記記憶済み領域の実データを前記復元先物理媒体に復元する復元処理を実行することを特徴とする付記１〜４の何れか一つに記載のストレージ装置。
【０１１１】
（付記６）前記復元制御部は、
前記復元先物理媒体に対して前記未記憶の領域のデータを復元する復元処理を実行中に、前記物理媒体内の実領域に新規データが記憶されると、現在実行中の復元処理を停止して、この新規データが記憶された記憶済み領域の実データを前記復元先物理媒体に復元する復元処理を優先的に実行することを特徴とする付記１〜５の何れか一つに記載のストレージ装置。
【０１１２】
（付記７）前記仮想ボリューム制御部は、
前記復元先物理媒体に対して前記記憶済み領域の実データを復元する復元処理を実行中に、前記縮退要因の物理媒体への新規データの書き込み要求を検出すると、前記新規データのボリューム容量に応じて、前記物理媒体の実領域上に予め確保した未記憶領域を前記仮想ボリュームに割り当てることを特徴とする付記１〜６の何れか一つに記載のストレージ装置。
【０１１３】
（付記８）前記復元制御部は、
前記実領域上の前記記憶済み領域及び前記未記憶の領域毎に、実データを割当済みの有無を示す割当状況及び、復元処理実行済みの有無を示す復元状況を管理する状況管理部を有し、前記状況管理部の管理内容に基づき、前記物理媒体上の実領域の内、前記記憶済み領域、前記未記憶の領域及び復元処理実行済みの領域を特定することを特徴とする付記１〜７の何れか一つに記載のストレージ装置。
【０１１４】
（付記９）データを記憶する実領域を備えた複数の物理媒体を用いて複数のストレージグループを作成するグループ作成ステップと、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループの内、前記新規データのボリューム容量に応じて、同一ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御ステップと、
前記仮想ボリューム制御ステップによって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する実領域記憶制御ステップと、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行する復元制御ステップと
を含むことを特徴とするストレージ装置のデータ復元方法。
【０１１５】
（付記１０）データを記憶する実領域を備えた複数の物理媒体を用いて複数のストレージグループを作成するグループ制御部と、
アクセス対象となる仮想ボリュームに対する新規データの書き込み要求を検出すると、複数の物理媒体で構成する複数のストレージグループの内、前記新規データのボリューム容量に応じて、前記ストレージグループ内に存在する物理媒体の実領域を前記仮想ボリュームに割り当てる仮想ボリューム制御部と、
前記仮想ボリューム制御部によって前記仮想ボリュームに割り当てられた前記物理媒体の実領域に前記新規データを実データとして記憶すると共に、前記ストレージグループ内の物理媒体に対する実データの冗長性を確保する記憶制御部と、
前記ストレージグループ内の物理媒体に対する冗長性の縮退を検出すると、この縮退要因の物理媒体が属する前記ストレージグループ内の当該縮退要因の物理媒体以外の他の物理媒体に基づき、この縮退要因の物理媒体内の実領域の内、記憶済み領域の実データを復元先物理媒体内の実領域に優先的に復元する復元処理を実行する復元制御部と
を有することを特徴とするストレージコントローラ。
【符号の説明】
【０１１６】
１  ストレージ装置
１Ａ  ＲＡＩＤ装置
２  物理媒体
２Ａ  ストレージグループ
４  ＲＡＩＤコントローラ
５  ディスク
５Ａ  ディスク群
１１  仮想ボリューム制御部
１２  記憶制御部
１３  復元制御部
１４  グループ制御部
４３  制御部
５１  仮想ボリューム
５４  論理領域管理テーブル
５５  仮想ボリューム制御部
５６  ＲＡＩＤ制御部
５６Ａ  記憶制御部
５６Ｂ  リビルド制御部    
【図１】
0005549249.tif 000002
【図２】
0005549249.tif 000003
【図３】
0005549249.tif 000004
【図４】
0005549249.tif 000005
【図５】
0005549249.tif 000006
【図６】
0005549249.tif 000007
【図７】
0005549249.tif 000008
【図８】
0005549249.tif 000009
【図９】
0005549249.tif 000010
【図１０】
0005549249.tif 000011
【図１１】
0005549249.tif 000012
【図１２】
0005549249.tif 000013
【図１３】
0005549249.tif 000014
【図１４】
0005549249.tif 000015