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