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