(57)【特許請求の範囲】
【請求項１】
複数のディスク装置から構成される冗長化ディスク構成のディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して書き込みバッファに詰めて蓄積し、当該バッファに所定のブロック数のデータが蓄積された段階で、その所定のブロック数のデータを含む１ストライプ分のデータが、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置において、
前記ホストコンピュータにより使用されている有効な論理ブロックの論理アドレスを当該論理ブロックが格納されている前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報が設定されたアドレス変換テーブルを記憶しておくためのアドレス変換テーブル記憶手段と、
前記ディスクアレイを構成する複数のディスク装置のいずれか１つが故障して、当該故障したディスク装置に代えて予備のディスク装置を用いて前記ディスクアレイを再構築する場合に、前記アドレス変換テーブルに従って有効な論理アドレスを検索する第１の検索手段と、
前記第１の検索手段により検索された有効な論理ブロックに対応する物理ブロックを含む物理ストライプ中の前記故障ディスク装置以外の各ディスク装置上に存在するストライプユニットを読み込む手段と、
前記読み込み手段により読み込まれた各ストライプユニットを含む物理ストライプに含まれている物理ブロックに対応する論理ブロックの論理アドレスのうちの有効な論理アドレスを前記アドレス変換テーブルに従って検索する第２の検索手段と、
前記第２の検索手段により検索された有効な論理アドレスに対応する有効なデータのうちの前記故障ディスク装置のデータを、前記読み込み手段により読み込まれた各ストライプユニットからブロック単位で復旧する手段と、
前記第２の検索手段により検索された有効な論理アドレスに対応する有効なデータのうちの前記読み込み手段により読み込まれた各ストライプユニット中の有効なデータ、及び前記復旧手段により復旧されたデータを、ブロック単位で前記書き込みバッファに書き込んで蓄積する手段と、
前記書き込みバッファに蓄積されたデータを含む１ストライプ分のデータが揃う毎に、当該１ストライプ分のデータを、前記予備のディスク装置を含む新たなディスクアレイを構成する各ディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む手段と
を具備することを特徴とするディスクアレイ装置。
【請求項２】
前記書き込みバッファへの書き込みが完了したブロックに対応する論理アドレスの状態を復旧済みとして記録するための手段を更に具備し、
前記読み込み手段は、前記第１の検索手段により検索された有効な論理アドレスのうち、復旧済みとして既に記録されている論理アドレスに対応する物理ストライプについては、読み込みの対象外とする
ことを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記物理ストライプは、１ストライプ−（１ストライプユニット＋１ブロック）分のブロック数の論理ブロックと、当該各論理ブロックの論理アドレスを含む１つの論理アドレスタグブロックと、前記１ストライプ−（１ストライプユニット＋１ブロック）分のブロック数の論理ブロック及び前記論理アドレスタグブロックから構成される１ストライプ−１ストライプユニット分のブロック数のブロックに対する１ストライプユニット分のブロック数のパリティブロックとから構成されており、
前記第２の検索手段は、前記読み込み手段により読み込まれた各ストライプユニットに含まれている、または当該各ストライプユニットから復旧される論理アドレスタグブロック中の各論理アドレスについて、前記アドレス変換テーブルに従って有効であるか否かを判定することで、有効な論理アドレスを検索することを特徴とする請求項１記載のディスクアレイ装置。
【請求項４】
前記第１の検索手段は、前記有効な論理アドレスを当該論理アドレスの順番に検索することを特徴とする請求項１記載のディスクアレイ装置。
【請求項５】
前記ディスクアレイを再構築するに際し、前記アドレス変換テーブルに従って、当該テーブルに設定されているアドレス変換情報が有効な論理アドレスの順にソートされた復旧処理用アドレス変換テーブルを生成する手段を更に具備し、
前記第１の検索手段、前記判定手段、及び前記第２の検索手段は前記復旧処理用アドレス変換テーブルを利用することを特徴とする
請求項１記載のディスクアレイ装置。
【請求項６】
複数のディスク装置から構成される冗長化ディスク構成のディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して書き込みバッファに詰めて蓄積し、当該バッファに所定のブロック数のデータが蓄積された段階で、その所定のブロック数のデータを含む１ストライプ分のデータが、前記ディスクアレイ内の前記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置におけるデータ復旧方法であって、
前記ディスクアレイを構成する複数のディスク装置のいずれか１つが故障して、当該故障したディスク装置に代えて予備のディスク装置を用いて前記ディスクアレイを再構築する場合に、前記ホストコンピュータにより使用されている有効な論理ブロックの論理アドレスを当該論理ブロックが格納されている前記ディスクアレイの物理アドレスに変換するためのアドレス変換情報が設定されたアドレス変換テーブルに従って有効な論理アドレスを検索する第１の検索ステップと、
前記第１の検索ステップで検索された有効な論理アドレスの示す論理ブロックに対応する物理アドレスの物理ブロックを含む物理ストライプ中の前記故障ディスク装置以外の各ディスク装置上に存在するストライプユニットを読み込むステップと、
前記読み込まれた各ストライプユニットを含む物理ストライプに含まれている物理ブロックに対応する論理ブロックの論理アドレスのうちの有効な論理アドレスを前記アドレス変換テーブルに従って検索する第２の検索ステップと、
前記第２の検索ステップで検索された有効な論理アドレスに対応する有効なデータのうちの前記故障ディスク装置のデータを、前記読み込まれた各ストライプユニットからブロック単位で復旧するステップと、
前記第２の検索ステップで検索された有効な論理アドレスに対応する有効なデータのうちの前記読み込まれた各ストライプユニット中の有効なデータ、及び前記復旧されたデータを、ブロック単位で前記書き込みバッファに書き込んで蓄積するステップと、
前記書き込みバッファに蓄積されたデータを含む１ストライプ分のデータが揃う毎に、当該１ストライプ分のデータを、前記予備のディスク装置を含む新たなディスクアレイを構成する各ディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込むステップと
を具備することを特徴とするディスクアレイ装置。
【請求項７】
前記物理ストライプは、１ストライプ−（１ストライプユニット＋１ブロック）分のブロック数の論理ブロックと、当該各論理ブロックの論理アドレスを含む１つの論理アドレスタグブロックと、前記１ストライプ−（１ストライプユニット＋１ブロック）分のブロック数の論理ブロック及び前記論理アドレスタグブロックから構成される１ストライプ−１ストライプユニット分のブロック数のブロックに対する１ストライプユニット分のブロック数のパリティブロックとから構成されており、
前記第２の前記ステップでは、前記読み込まれた各ストライプユニットに含まれている、または当該各ストライプユニットから復旧される論理アドレスタグブロック中の各論理アドレスについて、前記アドレス変換テーブルに従って有効であるか否かを判定することで、有効な論理アドレスを検索する
ことを特徴とする請求項６記載のデータ復旧方法。
【請求項８】
前記第１の検索ステップでは、前記有効な論理アドレスを当該論理アドレスの順番に検索することを特徴とする請求項６記載のデータ復旧方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスク装置から構成されるディスクアレイを備えたディスクアレイ装置に係り、特に、ディスクアレイを構成するディスク装置に障害が発生したときのデータ復旧に好適なディスクアレイ装置及び同装置におけるデータ復旧方法に関する。
【０００２】
【従来の技術】
従来から、複数のディスク装置から構成されるＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ，Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）に代表されるディスクアレイを備えたディスクアレイ装置が種々開発されている。ディスクアレイは、物理ストライプ単位にアクセスされるのが一般的である。
【０００３】
ディスクアレイ装置への高速な書き込み方法として、米国特許第６，２１９，７５２号公報または米国特許第６，２３３，６４８号公報（以下、先行技術文献と称する）に開示されているように、ホストコンピュータからの更新（書き込み）要求に対して本来更新されるべき旧データの領域の内容を書き換えるのではなく、更新データを溜めておき、ディスクアレイを構成する各ディスク装置内の予め用意した別の空き領域にまとめて書き込む（遅延書き込みを適用した）方法が提案されている。
【０００４】
通常、ディスクアレイを構成する複数のディスク装置のいずれか１つに使用不可能となるような故障（障害）が発生した場合、正常な置換ディスク装置（予備ディスク装置）を使用してディスクアレイを再構築する必要がある。この再構築を可能とするために、ディスクアレイはＲＡＩＤ等で知られている冗長化ディスク構成を適用するのが一般的である。したがって、冗長化ディスク構成のディスクアレイでは、ディスク装置が故障した場合。その冗長化ディスク構成を速やかに維持（再構築）する必要がある。
【０００５】
そこで、上記先行技術文献に開示されている高速書き込み方法を適用する従来のディスクアレイ装置では、ディスク装置に障害が発生した場合、ディスクアレイを構成する全ての物理ストライプを読み込み論理ブロックのデータとパリティデータを復旧し、正常な予備ディスク装置を含む新たなディスクアレイに書き戻す処理を実施している。
【０００６】
【発明が解決しようとする課題】
このように、上記先行技術文献に開示されている高速書き込み方法を適用する従来のディスクアレイ装置では、ディスクアレイを構成するディスク装置が故障した場合、ディスクアレイを構成する全ての物理ストライプを読み込み論理ブロックのデータとパリティデータを復旧し、正常な予備ディスク装置を含む新たなディスクアレイに書き戻す処理を実施することにより、ディスクアレイの冗長化ディスク構成を再構築するようにしている。
【０００７】
しかしながら、このようなデータ復旧方法では、データ復旧にかかる時間がディスクアレイのデータ容量に依存して長くなるため、今後ディスクアレイの大容量化が一層進むことを考慮すると、問題である。
【０００８】
一方、ディスクアレイ装置への高速な書き込み方法を適用するディスクアレイ装置とは異なるが、特開平１１−２４８４９号公報に開示されているディスクアレイ装置で適用される方法（障害復旧方法）では、ディスクアレイ装置内の論理的なデータの有効、無効やディスクアレイ装置内の空領域を管理するファイル管理テーブルであって、オペレーティングシステム（ＯＳ）が使用するファイル管理テーブルを利用してデータ復旧を行うようにしている。
【０００９】
このファイル管理テーブル利用の復旧方法は、ディスクアレイ装置がＯＳに依存するため、ＯＳにディスクアレイ装置とＯＳとの間のインターフェースを追加するか、ＯＳやファイルシステムの内部構造が公開されている必要がある。更に、各ＯＳ毎にディスクアレイ装置を用意する必要があり、ＯＳが異なる場合のディスクアレイ装置間での互換性にも問題がある。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、ＯＳやファイルシステム、ディバイスドライバ等に一切の変更を加えず、異なるＯＳ環境下においてもディスクアレイ装置間での互換性を保証しながら、ディスクアレイ内のディスク装置の故障時におけるディスクアレイの再構築に必要なデータ復旧に要する時間を短縮できるディスクアレイ装置及び同装置におけるデータ復旧方法を提供することにある。
【００１１】
【課題を解決するための手段】
本発明の第１の観点によれば、複数のディスク装置から構成される冗長化ディスク構成のディスクアレイを備え、ホストコンピュータからの書き込み要求の指定するデータをブロック単位に分割して書き込みバッファに詰めて蓄積し、当該バッファに所定のブロック数のデータが蓄積された段階で、その所定のブロック数のデータを含む１ストライプ分のデータが、上記ディスクアレイ内の上記複数のディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込まれるディスクアレイ装置が提供される。このディスクアレイ装置は、上記ディスクアレイを構成する複数のディスク装置のいずれか１つが故障して、当該故障したディスク装置（故障ディスク装置）に代えて予備のディスク装置を用いてディスクアレイを再構築する場合に、ホストコンピュータにより使用されている有効な論理ブロックの論理アドレス（有効な論理アドレス）を当該論理ブロックが格納されているディスクアレイの物理アドレスに変換するためのアドレス変換情報が設定されたアドレス変換テーブルに従って検索する手段と、この検索手段により検索された有効な論理アドレスに対応する物理アドレスの物理ブロックが故障ディスク装置上に存在することがアドレス変換テーブルから判定される場合、その物理ブロックを含む物理ストライプ中の故障ディスク装置以外の各ディスク装置上に存在するストライプユニットを読み込む手段と、この読み込み手段により読み込まれた各ストライプユニットから故障ディスク装置のデータをブロック単位で復旧する手段と、この復旧手段により復旧されたデータを上記予備ディスク装置に書き込む手段とを備えている。
【００１２】
上記第１の観点に係るディスクアレイ装置においては、アドレス変換テーブルを利用して、ホストコンピュータにより使用されている論理ブロックの論理アドレス、つまり有効な論理ブロックの論理アドレスを検索し、その有効な論理アドレスに対応する物理アドレスの物理ブロックが含まれる物理ストライプ（中の故障していない各ディスク装置上に存在するストライプユニット）のみをディスクアレイから読み込んで、そのストライプからデータを復旧して予備ディスク装置に書き込む構成を適用している。
【００１３】
このように第１の観点に係るディスクアレイ装置によれば、ホストコンピュータにより使用されていない無効な論理アドレスに対応する物理アドレスの物理ブロックが含まれる物理ストライプ（中の故障していない各ディスク装置上に存在するストライプユニット）については、データ復旧のための読み込みの対象外とすることにより、その無効な論理アドレスに対応する物理ストライプの読み込み処理、その読み込み処理に伴う無効な論理アドレスに対応するデータの復旧処理、その復旧処理に伴う無効な論理アドレスに対応する復旧されたデータの書き込み処理が行われるのを防止して、ディスクアレイのデータ復旧（ディスクアレイの再構築）に要する時間を大幅に短縮することが可能となる。
【００１４】
また本発明の第２の観点に係るディスクアレイ装置においては、上記第１の観点に係るディスクアレイ装置におけるのと同様にしてディスクアレイ（中の故障していない各ディスク装置）から読み込まれた、有効な論理アドレスに対応する物理アドレスの物理ブロックが含まれる物理ストライプ（中の故障していない各ディスク装置上に存在するストライプユニット）から故障ディスク装置のデータを復旧するだけでなく、その復旧されたデータと、上記読み込まれた各ストライプユニット中の有効なデータとを、ブロック単位で書き込みバッファに書き込んで蓄積し、この書き込みバッファに蓄積されたデータを含む１ストライプ分のデータが揃う毎に、当該１ストライプ分のデータを、予備のディスク装置を含む新たなディスクアレイを構成する各ディスク装置上の更新されるべきデータを保持している領域とは別の空き領域内の物理的に連続する領域に書き込む構成としたことを特徴とする。
【００１５】
このように、第２の観点に係るディスクアレイ装置によれば、ホストコンピュータにとって無効な論理アドレスに対応する物理ブロックが含まれる物理ストライプ（中の故障していない各ディスク装置上に存在するストライプユニット）について、データ復旧のための読み込みの対象外とすることにより、ディスクアレイのデータ復旧に要する時間を大幅に短縮するだけでなく、復旧されたデータと、データ復旧のために読み込まれた物理ストライプ中の故障していない各ディスク装置上に存在するストライプユニットに含まれている有効なデータ（有効な論理アドレスのデータ）とを利用して１ストライプ分のデータが揃えられる毎に新たなディスクアレイの空き領域に書き込むことにより、即ち故障ディスク装置の有効なデータの復旧と同時にディスクアレイにおける有効なデータの詰め替えを行うことで、データ復元後に改めてデータ詰め替え処理を行うことなくディスクアレイの空き領域を増やすことが可能となる。
【００１６】
本発明の第３の観点に係るディスクアレイ装置は、上記第２の観点に係るディスクアレイ装置における上記第１の検索手段に、次の検索機能、即ち有効な論理アドレスを当該論理アドレスの順番に検索する機能を持たせたことを特徴とする。
【００１７】
このように、有効な論理アドレスを当該論理アドレスの順番に検索することにより、有効な論理アドレスが当該論理アドレスの順番に処理されるため、復旧されたデータと、データ復旧のために読み込まれた物理ストライプ中の故障していない各ディスク装置上に存在するストライプユニットに含まれている有効なデータとを、少なくとも同一ストライプ内では、新たなディスクアレイ上に論理アドレス順で且つ物理アドレス順に再配置することが可能となる。つまり本発明の第３の観点に係るディスクアレイ装置によれば、ディスクアレイのデータ復旧に要する時間を短縮できるだけでなく、データ復元後に改めてデフラグメンテーション処理を行うことなく、有効な論理ブロックを、少なくとも対応するストライプ内では、ディスクアレイ上の論理的にも物理的にも連続する位置に再配置することができる。
【００１８】
なお、以上のディスクアレイ装置に係る本発明は、ディスクアレイを制御する制御装置（ディスクアレイコントローラ）に係る発明としても、ディスクアレイを構成する複数のディスク装置のいずれか１つが故障した場合に、当該発明に相当する手順を実行することによりディスクアレイのデータを復旧する方法（データ復旧方法）に係る発明としても成立する。
【００１９】
また、本発明は、コンピュータに当該発明に相当する手順を実行させるための（或いはコンピュータを当該発明に相当する各手段として機能させるための、或いはコンピュータに当該発明に相当する機能を実現させるための）プログラムに係る発明としても成立する。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図１は本発明の一実施形態に係るディスクアレイ装置を備えたコンピュータシステムの構成を示すブロック図である。
【００２１】
図１において、ディスクアレイ装置は、制御装置１と、当該制御装置１に接続されたディスクアレイ２と、当該制御装置１に接続された不揮発性メモリ３とから構成される。
【００２２】
ディスクアレイ２は、複数のディスク装置、例えば３台のディスク装置２１，２２，２３から構成される。ディスクアレイ２は、ディスク装置２１，２２，２３のいずれか１台が故障しても、その故障したディスク装置のデータの復旧（復元）が可能なように、冗長化ディスク構成を適用している。ここでは、説明を簡略化するために、ディスクアレイ２がＲＡＩＤ４の冗長化ディスク構成を適用しており、ディスク装置２１〜２３のうちの特定の１台、例えばディスク装置２３がパリティデータを格納するパリティ用ディスク装置として割り当てられているものとする。ディスクアレイ２は、ディスク装置２１〜２３のいずれか１台が故障した場合に、その故障したディスク装置に代えて使用される予備ディスク装置（置換ディスク装置）２４を含む。この予備ディスク装置２４は、ディスク装置２１〜２３が稼動中は、論理的にはディスクアレイ２から切り離されている。なお、予備ディスク装置２４が、ディスク装置２１〜２３のいずれか１台が故障した場合に、ディスクアレイ２に組み込み使用されるものであっても構わない。
【００２３】
制御装置１は、ディスクアレイ２を制御するコントローラ（ディスクアレイコントローラ）であり、ホストコンピュータ１０と接続されている。ディスクアレイ２は、ホストコンピュータ１０からは１つの論理的なディスク装置としてみえる。ホストコンピュータ１０と制御装置１とのインターフェースには、例えばＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、或いはＰＣＩバス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｂｕｓ）等が適用可能である。
【００２４】
なお、本実施形態では、図１に示す構成を中心として説明するが、当該技術分野に属する熟練者にとって、それらの詳しい細部の説明がなくても、図１に示す構成から派生する他のコンピュータシステムの構成であっても、本発明を実施できることは明らかである。例えば、制御装置１を実現するのに、特開２０００−１０７３８号公報の第２５頁右欄の段落００４２〜００４５に記載されたディスクアレイコントローラの実現方法を適用することも可能である。
【００２５】
ここで、図１の構成の詳細な説明の前に、本実施形態の説明で用いる用語について説明する。
ａ）論理ブロック
論理ブロックとは、ホストコンピュータ１０からみたデータブロック、更に詳細に述べるならば、ホストコンピュータ１０からみたディスクアレイ２における論理的なディスク領域上のデータブロックを示す。
ｂ）物理ブロック
物理ブロックとは、ディスクアレイ２上の物理的なブロック、更に詳細に述べるならば、ディスクアレイ２における物理的なディスク領域上のデータブロックを示す。データブロック（論理ブロック、物理ブロック）のサイズは予め定められており、一定である。
【００２６】
ｃ）論理アドレス
論理アドレスとは、ホストコンピュータ１０からみたディスクアレイ（ディスク装置）２上のデータアドレスを示す。ここでは、論理アドレスは、ディスクアレイ２における論理的なディスク領域上のデータブロックの位置、つまり論理ブロックの位置を示す論理ブロックアドレスとして用いられる。
【００２７】
ｄ）物理アドレス
物理アドレスとは、ディスクアレイ２上のデータ（データブロック）の物理的位置を示すために使用する。ここでは、物理アドレスは、ディスクアレイ２（を構成するディスク装置）上のデータブロックの物理的位置、つまり物理ブロックの位置を示す物理ブロックアドレスであり、後述する物理ストライプ番号と物理ブロック番号とから構成される。
【００２８】
ｅ）論理アドレスタグ
論理アドレスタグとは、各論理ブロックに対する論理アドレスとタイムスタンプからなる情報群を示す。
ｆ）パリティブロック
パリティブロックとは、複数の論理ブロックに対応する冗長データを格納するためのデータブロックを意味する。
ｇ）論理アドレスタグブロック
論理アドレスタグブロックとは、論理アドレスタグからならデータブロックを意味する。
【００２９】
ｈ）論理ブロック番号
論理ブロック番号とは、ホストコンピュータからみたディスクアレイ２上のデータブロックの番号を示す。
ｉ）物理ブロック番号
物理ブロック番号とは、ディスクアレイ２上の物理ストライプ内のデータブロックの相対位置を示す番号であり、ディスクアレイ２を構成するディスク装置に固有の番号である。
【００３０】
制御装置１は、ＲＯＭ等の記憶装置（図示せず）に予め格納されている制御プログラムに従ってディスクアレイ２を制御する他に、書き込みバッファ６及びアドレス変換テーブル７を管理する。書き込みバッファ６及びアドレス変換テーブルは、書き換えが可能な不揮発性メモリ３に配置される。
【００３１】
ディスクアレイ２を構成する各ディスク装置２１〜２３は、それぞれデータブロックのサイズ（ブロックサイズ）の整数倍（ここでは、Ｋ倍とする、但しＫは１以上の整数）である予め決められた単位、つまりＫブロック単位（以下、ストライプユニットと称する）で書き込みを行う。このとき、ディスク装置２１〜２３の物理的に同じ位置のストライプユニットは、１つの物理ストライプを構成するストライプユニットとして、同じタイミングで書き込みが行われる。明らかなように、ディスクアレイ２を構成するディスク装置が３台である本実施形態では、１ストライプは３ストライプユニットから構成される。もし、ディスクアレイ２を構成するディスク装置がＮ＋１台（Ｎは２以上の整数であり、図１の例ではＮ＝２）、１ストライプユニットのサイズがブロックサイズのＫ倍であるものとすると、１ストライプは（Ｎ＋１）×Ｋ個のデータブロック、更に詳細に述べるならば、Ｎ×Ｋ−１個の論理ブロック、１個の論理アドレスタグブロック、及びＫ個のパリティブロックから構成される。
【００３２】
制御装置１は、従来の技術の欄で述べたのと同様の高速書き込み方法を適用している。即ち制御装置１は、ホストコンピュータからの更新（書き込み）要求に対してディスクアレイ２内の対応する旧データの領域の内容を書き換えるのではなく、更新データを書き込みバッファ６の空き領域にブロック単位に分割して詰めて書き込んで蓄積しておく。この書き込みバッファ６は、１ストライプ−１ストライプユニット分、即ちＮ×Ｋデータブロック分の記憶容量を有している。
【００３３】
制御装置１は、１ストライプ分に１ストライプユニット＋１データブロック少ない数まで、書き込みバッファ６にデータブロックが蓄積された時点で、論理アドレスタグとタイムスタンプから構成される論理アドレスタグブロックを生成して当該書き込みバッファ６上に格納する。そして制御装置１は、生成した論理アドレスタグブロックが加えられた、書き込みバッファ６上の１ストライプ−１ストライプユニット分のデータ（Ｎ×Ｋ個のデータブロック）から、１ストライプユニット分のパリティデータ（Ｋ個のパリティブロック）を生成し、その１ストライプ−１ストライプユニット分のデータに１ストライプユニット分のパリティデータを加えた（（Ｎ＋１）×Ｋ個のブロックからなる）１ストライプ分のデータを、ディスクアレイ２を構成するＮ＋１台のディスク装置（Ｎ＝２の図１の例では、３台のディスク装置２１〜２３）上の更新されるべきデータを保持している領域とは別の空き領域に、一括して書き込む動作を開始する。
【００３４】
この制御装置１により用意された１ストライプ分のデータの例（Ｋ＝３の場合）と、当該１ストライプ分のデータがディスクアレイ２内のディスク装置２１〜２３に書き込まれる様子を図２に示す。図２の例では、論理アドレスＬ３，Ｌ７，Ｌ１１の論理ブロック（Ｌ３Ｄａｔａ，Ｌ７Ｄａｔａ，Ｌ１１Ｄａｔａ）からなるストライプユニットと、論理アドレスＬ１００，Ｌ１の論理ブロック（Ｌ１００Ｄａｔａ，Ｌ１Ｄａｔａ）及び論理アドレスタグブロック（ＬＡ−ＴＡＧ）からなるストライプユニットと、論理アドレスＬ３，Ｌ１００の論理ブロックに対するパリティブロックＰ０、論理アドレスＬ７，Ｌ１の論理ブロックに対するパリティブロックＰ１及び論理アドレスＬ１１の論理ブロックと論理アドレスタグブロックに対するパリティブロックＰ２からなるストライプユニットとが、それぞれディスク装置２１，２２，２３の空き領域に、データＤ１，Ｄ２，Ｐとして一括して書き込まれる様子が示されている。この例では、パリティブロックＰ０は論理アドレスＬ３，Ｌ１００の論理ブロックの間の排他的論理和（ＸＯＲ）演算により生成され、パリティブロックＰ１は論理アドレスＬ７，Ｌ１の論理ブロックの間の排他的論理和演算により生成される。また、パリティブロックＰ２は論理アドレスＬ１の論理ブロックと論理アドレスタグブロックとの間の排他的論理和演算により生成される。
【００３５】
不揮発性メモリ３に配置（格納）されているアドレス変換テーブル７は、ホストコンピュータ１０からみたディスクアレイ（ディスク装置）２上のデータアドレス（データブロックアドレス）、つまり論理アドレス（論理ブロックアドレス）を、ディスクアレイ２における物理的なデータ（データブロック）の位置を示すアドレス、つまり物理アドレス（物理ブロックアドレス）に変換するのに用いられる変換マップである。
【００３６】
アドレス変換テーブル７のデータ構造例を図３に示す。図３の例では、アドレス変換テーブル７の各エントリは、それぞれ固有の論理アドレスに対応している。ここでは、アドレス変換テーブル７を参照する場合の効率を考慮して、当該テーブル７のｉ番目のエントリを、論理アドレスｉ（論理ブロックｉの論理アドレス）に対応させている。アドレス変換テーブル７のエントリ数は、ホストコンピュータ１０からみえる全論理アドレスの数に一致する。
【００３７】
アドレス変換テーブル７の各エントリの情報（アドレス変換情報）は、論理アドレス（論理ブロックアドレス）と、当該論理アドレス（論理ブロックアドレス）で示される論理ブロックが割り当てられるディスクアレイ２（における物理的なディスク領域）上の物理ブロックを含む物理ストライプを示す物理ストライプ番号と、その物理ストライプ内の当該物理ブロックの相対位置を示す物理ブロック番号と、当該論理アドレスのデータブロックがディスクアレイ２に書き込まれた時間的順序を管理するためのタイムスタンプと、当該論理アドレスの論理ブロックのデータ復旧処理が済んでいるか否かを示すフラグ（復旧フラグ）の各項目（フィールド）から構成される。なお、本実施形態のように、アドレス変換テーブル７のｉ番目のエントリを論理アドレスｉに対応させる場合、当該論理アドレスｉから対応するｉ番目のエントリを参照可能であることから、当該エントリ中に必ずしも論理アドレスの項目を用意する必要はない。但し、後述する第２の変形例で使用される、有効な論理アドレスの順にソートされた復旧処理用アドレス変換テーブルでは、各エントリ中に論理アドレスの項目を用意する必要がある。
【００３８】
アドレス変換テーブル７が不揮発性メモリ３上に配置（生成）された初期状態では、当該アドレス変換テーブル７の各エントリの論理アドレスの項目にだけ有効なデータ（論理アドレス）が設定され、他の項目にはＮＵＬＬが設定されている。この論理アドレス以外の各項目にＮＵＬＬが設定されている、アドレス変換テーブル７のエントリに対応する論理アドレス（図３の例では論理アドレスＬｉ）は、ホストコンピュータ１０から使用されていない無効な論理ブロックの論理アドレスを示す。また、論理アドレス以外の各項目にＮＵＬＬ以外のデータが設定されている、アドレス変換テーブル７のエントリに対応する論理アドレス（図３の例では論理アドレスＬ０，Ｌ１，Ｌ２）は、ホストコンピュータ１０から使用されている有効な論理ブロックの論理アドレスを示す。なお以下では、説明の簡略化のために、単に無効な論理アドレス、有効な論理アドレス、或いは論理アドレスが有効、論理アドレスが無効であると表現することもある。
【００３９】
制御装置１は、ホストコンピュータ１０からの読み込みまたは書き込み要求で指定された論理アドレス（論理ブロックアドレス）をアドレス変換テーブル７に従って物理ブロック番号に変換する。
【００４０】
さて、図１の構成のディスクアレイ装置では、ディスクアレイ２を構成するディスク装置２１〜２３のうちのいずれか１つのディスク装置が故障した場合、予備ディスク装置２４を使用してディスクアレイ２が再構築される。
【００４１】
図４に、図２の状態でディスク装置２１が故障した結果、そのディスク装置２１に代えて予備ディスク装置２４を使用してディスクアレイ２が再構築された際の当該ディスクアレイ２の状態を示す。ここでは、データＤ１，Ｄ２，Ｐから構成される物理ストライプに着目すると、正常なディスク装置２２，２３内のデータＤ２，Ｐから、例えば当該ディスク装置２２，２３内の同一位置のデータブロックを単位とする排他的論理和演算により、故障したディスク装置２１内データＤ１が復旧（復元）され、予備ディスク装置２４内の同一ストライプ位置に格納される。この動作が、従来であれば、ディスクアレイ２のすべての物理ストライプについて順に行われる。これに対して本実施形態では、以下に述べるように、アドレス変換テーブル７を利用して、有効な論理アドレスに対応する物理ブロックが存在する物理ストライプだけを対象にデータ復旧処理を行う。
【００４２】
次に、本実施形態において、ディスクアレイ２内のディスク装置が故障したために当該ディスクアレイ２のデータを復旧するデータ復旧処理について、図５のフローチャート参照して説明する。
本実施形態の特徴は、アドレス変換テーブル７を利用して、故障したディスク装置の全ての有効な論理アドレスのデータを復旧する点にある。
【００４３】
まず制御装置１は、復旧する論理ブロックの論理アドレスを示す変数ｉの初期値として０（ｉ＝０）を設定する（ステップＳ５０１）。
【００４４】
次に制御装置１は、不揮発性メモリ３上のアドレス変換テーブル７を参照して、論理アドレスｉが有効か否かを判定する（ステップＳ５０２）。この判定は、論理アドレスｉに対応するアドレス変換テーブル７内エントリの各項目がＮＵＬＬ以外であるか否かを調べることで行われる。なお、アドレス変換テーブル７内エントリに、対応する論理アドレスが有効であるか或いは無効であるかを示すフラグ（有効／無効フラグ）を設け、当該フラグを参照することで、対応する論理アドレスが有効であるか否かを判定する構成であってもよい。
【００４５】
論理アドレスｉが有効な場合（ステップＳ５０２のＹＥＳ）、つまりアドレス変換テーブル７から有効な論理アドレスｉが検索できた場合、制御装置１は当該論理アドレスｉのデータが復旧（復旧処理）済みであるか否かを判定する（ステップＳ５０３）。この判定は、論理アドレスｉに対応するアドレス変換テーブル７内のエントリ中の復旧フラグフィールドを参照することで行われる。
【００４６】
論理アドレスｉのデータが復旧済みでなかった場合（ステップＳ５０３のＮＯ）、制御装置１はアドレス変換テーブル７を参照して、その論理アドレスｉに対応する物理ブロック番号で示される物理ブロックが故障したディスク装置に存在するか否かを判定する（ステップＳ５０４）。ここで、１つの物理ブロック番号は１つのディスク装置に予め対応付けられている。したがって、ステップＳ５０４の判定は、論理アドレスｉに対応する物理ブロック番号をもとに容易に行える。この具体例を、図２中の論理ブロックＬ３Ｄａｔａ，Ｌ７Ｄａｔａ，Ｌ１１Ｄａｔａ，Ｌ１００Ｄａｔａ，Ｌ１Ｄａｔａ，ＬＡ−ＴＡＧ，Ｐ０，Ｐ１，Ｐ２が割り当てられる物理ストライプ内の物理ブロックの番号が、それぞれ０，１，２，３，４，５，６，７，８である場合について説明する。この例では、物理ブロック番号０，１，２の物理ブロックはディスク装置２１に、物理ブロック番号３，４，５の物理ブロックはディスク装置２２に、そして物理ブロック番号６，７，８の物理ブロックはディスク装置２３に、それぞれ存在する。したがって、ディスク装置２１が故障した図４の例では、物理ブロック番号が０または１または２の場合だけ、対応する物理ブロックが故障ディスク装置に存在すると判定される。
【００４７】
論理アドレスｉに対応する物理ブロック番号で示される物理ブロックが故障したディスク装置に存在する場合、制御装置１は当該論理アドレスｉに対応するアドレス変換テーブル７内のエントリに設定されている物理ストライプ番号の示す物理ストライプ、つまり論理アドレスｉに対応する物理ブロックを含む物理ストライプをディスクアレイ２から読み込む（ステップＳ５０５）。但し、この物理ストライプ中の、故障したディスク装置に格納されているデータブロック（ストライプユニット）は読み込まれない。したがって図４の例であれば、上記ステップＳ５０５では、論理アドレスｉに対応する（物理ブロックを含む）物理ストライプ中の、故障していないディスク装置２２，２３に格納されているストライプユニットが、当該ディスク装置２２，２３から制御装置１に読み込まれることになる。
【００４８】
制御装置１はステップＳ５０５で論理アドレスｉに対応する物理ストライプを読み込むと、読み込んだ物理ストライプのデータから、故障したディスク装置のデータブロックを復旧する（ステップＳ５０６）。具体的には、図４の例のようにディスク装置２１が故障した場合であれば、読み込んだ物理ストライプのデータであるディスク装置２３のパリティブロックと、ディスク装置２２のデータブロックとから、故障したディスク装置２１のデータブロックが復旧される。例えば図２に示す物理ストライプを読み込んだ場合であれば、パリティブロックＰ０とデータブロックＬ１００Ｄａｔａとの排他的論理和演算からディスク装置２１のデータブロックＬ３Ｄａｔａが復旧される。同様に、パリティブロックＰ１とデータブロックＬ１Ｄａｔａとの排他的論理和演算からディスク装置２１のデータブロックＬ７Ｄａｔａが、パリティブロックＰ２とデータブロック（論理アドレスタグブロック）ＬＡ−ＴＡＧとの排他的論理和演算からディスク装置２１のデータブロックＬ１１Ｄａｔａが、それぞれ復旧される。
【００４９】
次に制御装置１は、ステップＳ５０５で読み込んだ物理ストライプに含まれる物理ブロックが割り当てられている論理ブロックの論理アドレスの中に、有効な論理アドレスが存在するか否かを判定する（ステップＳ５０７）。この判定は、上記物理ストライプの物理ストライプ番号によりアドレス変換テーブル７を参照して、当該物理ストライプ番号が設定されているエントリを検索することで行われる。もし、目的のエントリが検索できたならば、そのエントリに対応する論理アドレスが上記物理ストライプ内に存在する有効な論理アドレスであると判定される（ステップＳ５０７のＹＥＳ）。この場合、制御装置１は有効であると判定された論理アドレスに対応するアドレス変換テーブル７内エントリ中の復旧フラグを復旧済みを示す状態（ここでは、１が書き込まれた状態）に設定することで、当該論理アドレス（の論理ブロック）を復旧（復旧処理）済みとする（ステップＳ５０８）。制御装置１は、以上の処理（ステップＳ５０８）を、物理ストライプに含まれる全ての有効な論理アドレスについて行う（ステップＳ５０９）。つまり制御装置１は、ステップＳ５０５で読み込んだ物理ストライプに含まれる物理ブロックが割り当てられている論理ブロックの論理アドレスのうちの、有効な論理ブロックの論理アドレスを全て探して、その論理アドレスを復旧済みする（ステップＳ５０７〜Ｓ５０９）。この処理により、つまり、有効な論理アドレスｉを含む物理ストライプに含まれる全ての有効な論理アドレスについて、故障したディスク装置の論理ブロックの論理アドレスであるか否かに無関係に復旧済みとすることにより、当該物理ストライプが復旧処理のために再度読まれる無駄を防止できる。
【００５０】
制御装置１は、物理ストライプに含まれる全ての有効な論理アドレスについて処理をすると（ステップＳ５０９のＹＥＳ）、復旧したデータを予備ディスク２４に書き込む（ステップＳ５１０）。
【００５１】
次に制御装置１は、後続の論理アドレスを処理するために論理アドレスｉを１加算し（ステップＳ５１１）、その加算後のｉ（論理アドレスｉ）から、全ての論理アドレスを処理したか否かを判定する（ステップＳ５１２）。もし、未処理の論理アドレスが残っているならば（ステップＳ５１２のＮＯ）、制御装置１は加算後の論理アドレスｉについて、上記ステップＳ５０２以降の処理を行う。
【００５２】
以上に述べた一連の操作を全ての論理アドレスについて実行することで、例えば図４に示すようにディスク装置２１が障害となった場合であれば、当該ディスク装置２１のデータ（のうちの有効な論理ブロックに対応する物理ブロックのデータ）は予備ディスク装置２４に復旧される。
【００５３】
このように本実施形態においては、アドレス変換テーブル７を利用して有効な論理アドレスを抽出し、その有効な論理アドレスに対応する物理ブロックが故障したディスク装置に含まれる物理ストライプのみをディスクアレイ２から読み込んで、その物理ストライプから故障したディスク装置のデータを復旧するようにした。つまり本実施形態によれば、ホストコンピュータ１０が使用している有効な論理アドレスに対応する物理ブロックを故障したディスク装置に含まない物理ストライプは、データ復旧のための読み込みの対象外としたことにより、ディスクアレイ２のデータ復元時間を大幅に短縮することができる。
【００５４】
［第１の変形例］
次に、本実施形態の第１の変形例について説明する。この第１の変形例の特徴は、ディスクアレイ２内のディスク装置が故障したために当該ディスクアレイ２のデータを復旧する処理で、当該故障したディスク装置の有効な論理ブロックを復旧する際に、他の正常なディスク装置の有効な論理ブロックを含めて新たなディスクアレイ２上で再配置する点にある。更に詳細に述べるならば、第１の変形例の特徴は、物理ストライプ上の無効な論理ブロックは新たなディスクアレイ２上での再配置の対象とせず、故障ディスク装置の復旧された有効な論理ブロック及び正常なディスク装置の有効な論理ブロックだけを書き込みバッファ６に書き込んで蓄積し、この書き込みバッファ６に蓄積されたデータを含む１ストライプ分のデータが揃う毎に、その１ストライプ分のデータを、新たなディスクアレイ２を構成するディスク装置上の更新されるべきデータを保持している領域とは別の空き領域に書き込むことにある。
【００５５】
以下、第１の変形例において、ディスクアレイ２内のディスク装置が故障したために当該ディスクアレイ２のデータを復旧するデータ復旧処理について、図６のフローチャート参照して説明する。
【００５６】
まず制御装置１は、アドレス変換テーブル７を、図７に示すように不揮発性メモリ３の別の領域にアドレス変換テーブル７０として複写する（ステップＳ７０１）。以後、この複写されたアドレス変換テーブル７０を使用して処理が進められる。
【００５７】
まず制御装置１は、復旧する論理ブロックの論理アドレスを示す変数ｉの初期値として０（ｉ＝０）を設定する（ステップＳ６０２）。
次に制御装置１は、不揮発性メモリ３上の複写されたアドレス変換テーブル７０を参照して、前記ステップＳ５０２と同様にして、論理アドレスｉが有効か否かを判定する（ステップＳ６０３）。
【００５８】
論理アドレスｉが有効な場合（ステップＳ６０３のＹＥＳ）、制御装置１は当該論理アドレスｉのデータが復旧済みであるか否かを判定する（ステップＳ６０４）。
【００５９】
論理アドレスｉのデータが復旧済みでなかった場合（ステップＳ５０３のＮＯ）、制御装置１は当該論理アドレスｉに対応するアドレス変換テーブル７内のエントリに設定されている物理ストライプ番号の示す物理ストライプ、つまり論理アドレスｉに対応する物理ブロックを含む物理ストライプをディスクアレイ２から読み込む（ステップＳ６０５）。
【００６０】
制御装置１はステップＳ６０５で論理アドレスｉに対応する物理ストライプを読み込むと、読み込んだ物理ストライプから論理アドレスタグブロックを取り出す（ステップＳ６０６）。但し、この物理ストライプ中の、故障したディスク装置に格納されているデータブロック（ストライプユニット）は読み込まれない点は、前記ステップＳ５０５と同様である。ここで、論理アドレスタグブロックが格納されているディスク装置が故障した場合、読み込んだ物理ストライプ中の他の故障していないディスク装置のデータから論理アドレスタグブロックを復旧すればよい。例えば図２の状態で、ディスク装置２２が故障した場合であれば、論理ブロックＬ１１ＤａｔａとパリティブロックＰ２とから論理アドレスタグブロックＬＡ−ＴＡＧが復旧される。この論理アドレスタグブロックの復旧処理は、読み込んだ物理ストライプからの論理アドレスタグブロックの取り出し処理と等価である。
【００６１】
次に制御装置１は、ステップＳ６０６で取り出した論理アドレスタグブロックとアドレス変換テーブル７０とを利用して、ステップＳ６０５で読み込んだ物理ストライプに含まれる物理ブロックが割り当てられている論理ブロックの論理アドレスの中に、有効な論理アドレスが存在するか否かを順に判定する（ステップＳ６０７）。この判定は、上記論理アドレスタグブロック中の論理アドレスを１つずつ順に取り出して、その論理アドレスが設定されているアドレス変換テーブル７０内のエントリを参照することで行われる。明らかなように、参照したアドレス変換テーブル７０内エントリの論理アドレスを除く各項目にＮＵＬＬが設定されているならば、対応するアドレスは無効であり、ＮＵＬＬが設定されていないならば、対応するアドレスは有効であると判定される。
【００６２】
制御装置１は、論理アドレスタグブロックから取り出された論理アドレスが有効であった場合に限り、つまり論理アドレスタグブロックから有効な論理アドレスが検索された場合に限り、当該論理アドレスに対応するデータを復旧し、書き込みを実行する（ステップＳ６０８）。
【００６３】
ステップＳ６０８での有効な論理アドレスに対応するデータの復旧とは、当該論理アドレスの論理ブロックが格納されているディスク装置が故障していないならば、ステップＳ６０５で読み込まれた物理ストライプから対応するデータブロックを取り出すことであり、故障しているならば、その物理ストライプから前記ステップＳ５０６と同様にして当該論理アドレスの論理ブロックを復旧することである。
【００６４】
また、ステップＳ６０８での書き込みは、従来技術の欄で述べたような高速書き込み方法を用いた通常通りの手順で次のように行われる。
まず制御装置１は、復旧された論理ブロックと対応する論理アドレスとをもとに、その論理ブロックを書き込みデータとして不揮発性メモリ３上の書き込みバッファ６の空き領域に詰めて書き込む。通常は、この書き込みバッファ６への書き込みで、ステップＳ６０８は完了する。しかし、復旧された論理ブロックを書き込みバッファ６に書き込んだ結果、当該バッファ６に蓄積されている書き込みデータの量が１ストライプ分に１ストライプユニット＋１ブロック分少ない量となった場合には、制御装置１は上記ステップＳ６０８において更に次に述べる書き込みを行う。
【００６５】
即ち制御装置１は、書き込みバッファ６に蓄積されている１ストライプ−（１ストライプユニット＋１ブロック）分の書き込みデータに対応する論理アドレスタグブロックを生成して書き込みバッファ６の最後のブロック領域に書き込み、この論理アドレスタグブロック書き込み後の書き込みバッファ６上のデータ（１ストライプ−１ストライプユニット分のデータ）から１ストライプユニット分のパリティデータ（つまり１ストライプユニット分のブロック数のパリティブロック）を生成する。そして制御装置１は、書き込みバッファ６上の１ストライプ−１ストライプユニット分のデータと生成された１ストライプユニット分のパリティデータとから構成される１ストライプ分のデータを、故障ディスク装置に代えて予備ディスク装置２４を用いることで新しく構成されたディスクアレイ２に一括して書き込む。この一括書き込みは、新たなディスクアレイ２内の各ディスク装置（ディスク装置２１が故障した場合であれば、ディスク装置２２，２３，２４）上の更新されるべきデータを保持している領域とは別の空き領域（具体的には当該空き領域の中から選択された物理的に連続した領域）に対し、新たなディスクアレイ２に対応する新たなストライピングルールに従って行われる。
【００６６】
なお、ストライピングルールは、ディスクアレイ２（のＲＡＩＤレベル）を構成するディスク装置の台数に対応している。したがって、データ復旧処理の前後でディスク装置の台数が同一の本実施形態では、新たなストライピングルールは、元のディスクアレイ２に対応するストライピングルールと本質的な相違はない。但し、ディスク装置２１が故障して予備ディスク装置２４に置き換えられた場合を例にとると、新たなストライピングルールは、物理ブロック番号０，１，２の物理ブロックがディスク装置２１ではなくて予備ディスク装置２４に存在することを前提としている。
【００６７】
制御装置１は、ステップＳ６０８において書き込みバッファ６への１ブロックの書き込みが完了する毎に、当該ブロックの論理アドレスに対応するアドレス変換テーブル７０内のエントリ中の復旧フラグを復旧済みを示す状態に設定する（ステップＳ６０９）。更に制御装置１は、ステップＳ６０８でストライプの一括書き込みが行われた場合には、当該ストライプ中の各論理ブロックについて、当該論理ブロックに対する論理アドレスと、当該論理ブロックが書き込まれたディスクアレイ２上の物理的なデータ位置、つまり物理ストライプ番号と物理ブロック番号とで示される物理アドレスとの関係を、アドレス変換テーブル７０に設定する。具体的には、上記ストライプ中の各論理ブロックに対する論理アドレスに対応するアドレス変換テーブル７０内のエントリにおける物理ブロック番号と物理ストライプ番号とが、それぞれ当該論理ブロックが実際に書き込まれた物理ストライプ内の物理ブロック位置を示す番号と当該物理ストライプの番号とに更新される。
【００６８】
制御装置１は、以上のステップＳ６０７〜Ｓ６０９を、ステップＳ６０５で読み込んだ物理ストライプに含まれる物理ブロックに対応する論理アドレスが全て処理されるまで繰り返す（ステップＳ６１０）。
【００６９】
次に制御装置１は、後続の論理アドレスを処理するために論理アドレスｉを１加算する（ステップＳ６１１）。そして制御装置１は、加算後のｉ（論理アドレスｉ）から、以上に述べた一連の操作を全ての論理アドレスについて処理したか否かを判定する（ステップＳ６１２）。もし、未処理の論理アドレスが残っているならば（ステップＳ６１２のＮＯ）、制御装置１は加算後の論理アドレスｉについて、上記ステップＳ６０３以降の処理を行う。一方、全ての論理アドレスについて処理したならば（ステップＳ６１２のＹＥＳ）、データ復旧処理は終了となる。以後、アドレス変換テーブル７０が新たなアドレス変換テーブル７として用いられ、元のアドレス変換テーブル７は破棄（削除）される。
【００７０】
このように第１の変形例によれば、図６のフローチャートに従うデータ復旧処理を実行することで、故障したディスク装置の有効な論理ブロックを、故障ディスク装置に代えて予備ディスク装置２４を用いて新しく構成されたディスクアレイ２に復旧することができる。つまり第１の変形例では、新たなディスクアレイ２には、物理ストライプ上の無効な論理ブロックは復旧するデータとして再配置（保持）されない。しかも第１の変形例によれば、故障ディスク装置の復旧された有効な論理ブロック及び正常なディスク装置の有効な論理ブロックだけを復旧するデータとし、その復旧された有効な論理ブロック及び正常なディスク装置の有効な論理ブロックを含むデータが１ストライプ分揃えられる都度、その１ストライプ分のデータが新たなディスクアレイ２上の空き領域に再配置される。つまり第１の変形例では、データの復旧とディスクアレイ２でのデータ詰め替え（リパック）処理とが同時に行われている。これにより、ディスクアレイ２のデータ復元時間を大幅に短縮できると共に、データ復元後に改めてデータ詰め替え処理を行うことなくディスクアレイ２の空き領域を増やすことができる。
【００７１】
［第２の変形例］
次に、本実施形態の第２の変形例について説明する。この第２の変形例の特徴は、ディスクアレイ２内のディスク装置が故障したために当該ディスクアレイ２のデータを復旧する処理で、当該故障したディスク装置の有効なデータを復旧する際に、他の正常なディスク装置のデータを含めて新たなディスクアレイ２上に論理アドレス順で且つ物理アドレス順に再配置する点にある。そのために第２の変形例では、第１の変形例とは異なって、有効な論理アドレスの順番で対応する物理ストライプを取り込むようにしている。
【００７２】
以下、第２の変形例において、ディスクアレイ２内のディスク装置が故障したために当該ディスクアレイ２のデータを復旧する場合の動作について、図８のフローチャート参照して説明する。
【００７３】
まず制御装置１は、アドレス変換テーブル７を使用して、有効な論理アドレスを例えば昇順にソートし、図９に示すように不揮発性メモリ３上に、アドレス変換テーブル７とは別の復旧処理用のアドレス変換テーブル７００を生成する（ステップＳ８０１）。このソートには、従来からよく知られているＭｅｒｇｅｓｏｒｔ、Ｑｕｉｃｋｓｏｒｔ、Ｓｈｅｌｌｓｏｒｔ、Ｈｅａｐｓｏｒｔ等の高速ソートアルゴリズムを適用するとよい。なお、アドレス変換テーブル７のｉ番目のエントリを論理アドレスｉに対応させている場合、当該テーブル７内の各エントリは論理アドレスの昇順の並びとなっていることから、特別のソートアルゴリズムは不要である。
【００７４】
以後、制御装置１は復旧処理用のアドレス変換テーブル７００を使用して、図６に示したステップＳ６０２以降の処理を実行する（ステップＳ８０２）。つまり、第２の変形例が第１の変形例と異なる点は、第１の変形例ではアドレス変換テーブル７のコピーであるアドレス変換テーブル７を使用して復旧処理が行われるのに対し、第２の変形例では、アドレス変換テーブル７に基づいて有効な論理アドレスが昇順にソートされた復旧処理用のアドレス変換テーブル７００を使用して復旧処理が行われることである。
【００７５】
この復旧処理用のアドレス変換テーブル７００を使用したステップＳ６０２以降の処理の実行、つまりステップＳ８０２の実行により、有効な論理アドレスの順番に対応する物理ストライプが取り出され、当該物理ストライプから復旧された故障ディスク装置の有効な論理ブロック及び正常なディスク装置の有効な論理ブロックを含むデータが１ストライプ分揃えられる都度、その１ストライプ分のデータが、新たなディスクアレイ２を構成するディスク装置上の更新されるべきデータを保持している領域とは別の空き領域における物理的に連続した位置に再配置される。このとき、ディスクアレイ２上に再配置されたストライプ中の各論理ブロックに対する論理アドレスに対応するアドレス変換テーブル７００内のエントリの情報が、再配置先の物理アドレスを示すように更新される。
【００７６】
このように第２の変形例では、データの復旧とディスクアレイ２でのデータ再配置とが論理アドレス順に同時に行われている。これにより、ディスクアレイ２のデータ復元時間を大幅に短縮できると共に、データ復元後に改めてデフラグメンテーション（いわゆるデフラグ）処理を行うことなく、有効な論理ブロックを、少なくとも対応するストライプ内では、ディスクアレイ２上の論理的にも物理的にも連続する位置に再配置することができる。なお、複数のストライプにまたがって当該ストライプ内の論理ブロックに対する論理アドレスが連続している場合には、当該複数のストライプを物理的に連続する領域に配置するとよい。
【００７７】
図８のフローチャートに従うデータ復旧処理が終了すると、以後、アドレス変換テーブル７００が新たなアドレス変換テーブル７として用いられ、元のアドレス変換テーブル７は破棄（削除）される。この新たなアドレス変換テーブル７は、有効な論理アドレスの昇順にソートされていることから、図３のデータ構造と異なる。そこで上記ステップＳ８０１において、アドレス変換テーブル７００とは別に、アドレス変換テーブル７のコピー（第１の変形例におけるアドレス変換テーブル７０に相当）を生成し、以後、新たなディスクアレイ２に１ストライプ単位でデータを書き込む（再配置する）毎に、上記第１の変形例と同様に、そのストライプ中の各論理ブロックに対する論理アドレスに対応するコピーテーブル内のエントリを更新するようにし、データ復旧処理後は、このコピーテーブルを新たなアドレス変換テーブル７とする構成としてもよい。
【００７８】
以上に述べた実施形態及びその変形例では、書き込みバッファ６及びアドレス変換テーブル７が不揮発性メモリ３に配置されるものとして説明したが、これに限るものではない。例えば、図１０に示すように、揮発性メモリ４と電源オフ時にも当該揮発性メモリ４の記憶内容が消失するのを防止するための、電池等のメモリバックアップ機構５とにより、等価的に不揮発性メモリ３に相当する不揮発性メモリ３０を実現し、書き込みバッファ６及びアドレス変換テーブル７が、揮発性メモリ４に配置される構成であっても構わない。つまり書き込みバッファ６及びアドレス変換テーブル７が、揮発性メモリ４とメモリバックアップ機構５とから構成される不揮発性メモリ３０に配置される構成であっても構わない。
【００７９】
また、以上に述べた実施形態及びその変形例では、ディスクアレイ２がＲＡＩＤ４の冗長化ディスク構成を適用しているものとして説明したが、これに限るものではない。本発明は、パリティブロックの格納先ディスク装置が物理ストライプ単位でサイクリックに切り替わるＲＡＩＤ５、或いはＲＡＩＤ５０の冗長化ディスク構成など、故障ディスク装置のデータが復旧可能な冗長化ディスク構成であれば、どのような種類の冗長化ディスク構成のディスクアレイであっても、同様に適用できる。
【００８０】
なお、本発明は、上記実施形態またはその変形例に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態またはその変形例には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００８１】
【発明の効果】
以上詳述したように本発明によれば、アドレス変換テーブルを利用してホストコンピュータが使用している有効な論理アドレスを検索し、その検索された論理アドレスに対応する物理アドレスの物理ブロックが含まれる物理ストライプのみをデータ復旧（ディスクアレイ再構築）のための読み込みの対象とするようにしたので、ＯＳやファイルシステム、ディバイスドライバ等に一切の変更を加えず、異なるＯＳ環境下においてもディスクアレイ装置間での互換性を保証しながら、ディスクアレイ内のディスク装置の故障時におけるディスクアレイの再構築に必要なデータ復旧に要する時間を短縮できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るディスクアレイ装置を備えたコンピュータシステムの構成を示すブロック図。
【図２】１ストライプ分のデータの例と、当該１ストライプ分のデータがディスクアレイ２内のディスク装置２１〜２３に書き込まれる様子を示す図。
【図３】図１中のアドレス変換テーブル７のデータ構造例を示す図。
【図４】図２の状態でディスク装置２１が故障した結果、そのディスク装置２１に代えて予備ディスク装置２４を使用してディスクアレイ２が再構築された際の当該ディスクアレイ２の状態を示す図。
【図５】同実施形態におけるデータ復旧処理の手順を説明するためのフローチャート。
【図６】同実施形態の第１の変形例におけるデータ復旧処理の手順を説明するためのフローチャート。
【図７】同第１の変形例におけるアドレス変換テーブルのコピーを説明するための図。
【図８】同実施形態の第２の変形例におけるデータ復旧処理の手順を説明するためのフローチャート。
【図９】同第２の変形例におけるアドレス変換テーブルを対象とする有効な論理アドレスのソートを説明するための図。
【図１０】本発明の他の実施形態に係るディスクアレイ装置を備えたコンピュータシステムの構成を示すブロック図。
【符号の説明】
１…制御装置
２…ディスクアレイ
３，３０…不揮発性メモリ
４…揮発性メモリ
５…メモリバックアップ機構
６…書き込みバッファ
７…アドレス変換テーブル
１０…ホストコンピュータ
２１〜２３…ディスク装置
２４…予備ディスク装置
７０…アドレス変換テーブル（複写されたアドレス変換テーブル）
７００…アドレス変換テーブル（有効な論理アドレスの順にソートされたアドレス変換テーブル）
【図１】
0003579389.tif 000002
【図２】
0003579389.tif 000003
【図３】
0003579389.tif 000004
【図４】
0003579389.tif 000005
【図５】
0003579389.tif 000006
【図６】
0003579389.tif 000007
【図７】
0003579389.tif 000008
【図８】
0003579389.tif 000009
【図９】
0003579389.tif 000010
【図１０】
0003579389.tif 000011