(57)【特許請求の範囲】
【請求項１】
ｎ個のデータ（ただし、ｎは２以上の整数）を、磁気テープを記録媒体として用いた第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置において、
前記ｎ個のデータを基にパリティを算出し、算出した前記パリティを、前記第１の記憶装置よりアクセス速度が高速な第２の記憶装置に格納するパリティ算出部と、
前記ｎ個のデータを前記第１の記憶装置から読み出す際に、前記ｎ個のデータのうちの少なくとも１つを、前記第１の記憶装置から読み出す代わりに、前記ｎ個のデータのうち前記第１の記憶装置から読み出し済みの他のデータと前記第２の記憶装置から読み出した前記パリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置において、
前記ｎ個のデータを基に１種類のパリティを算出し、算出した前記パリティを第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−２）個のデータを読み出した後、残りの２個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−２）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および前記第２の記憶装置に格納された前記パリティを用いて、前記残りの２個のデータのうち第２のデータを復元するデータ復元処理とを並列に実行する読み出し制御部と、
を有し、
前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータおよび前記第２のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とするストレージ制御装置。
【請求項３】
前記読み出し制御部は、前記第１のデータのうち読み出しが完了した部分のサイズと、前記第２のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのうち前記第１の記憶装置から読み出されていない部分のサイズと、前記第２のデータのうち復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする請求項２記載のストレージ制御装置。
【請求項４】
前記読み出し制御部は、前記第１のデータを前記第１の記憶装置から読み出した後、前記第２のデータにおける復元されていないデータ領域のうちの一部を前記パリティを用いて復元する処理と、前記データ領域のうち残りの部分を前記第１の記憶装置から読み出す処理とを並列に実行することを特徴とする請求項２または３記載のストレージ制御装置。
【請求項５】
前記読み出し制御部は、前記データ領域のうち第１の領域を前記パリティを用いて復元する処理の終了タイミングと、前記データ領域のうち残りの第２の領域を前記第１の記憶装置から読み出す処理の終了タイミングとが一致するように、前記第１の領域と前記第２の領域との境界位置を決定することを特徴とする請求項４記載のストレージ制御装置。
【請求項６】
ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置において、
前記ｎ個のデータを基に第１のパリティおよび第２のパリティを算出し、算出した前記第１のパリティおよび前記第２のパリティを第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータおよび第３のデータを復元するデータ復元処理とを、並列に実行する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
【請求項７】
前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのサイズと、前記第２のデータおよび前記第３のデータのうち大きい方のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とする請求項６記載のストレージ制御装置。
【請求項８】
前記読み出し制御部は、前記第１のデータのうち読み出しが完了した部分のサイズと、前記第２のデータまたは前記第３のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのうち前記第１の記憶装置から読み出されていない部分のサイズと、前記第２のデータおよび前記第３のデータのうち大きい方のデータにおける復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする請求項６または７記載のストレージ制御装置。
【請求項９】
ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置において、
前記ｎ個のデータを基に第１のパリティおよび第２のパリティを算出し、算出した前記第１のパリティおよび前記第２のパリティを第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータを復元する第１のデータ復元処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、前記第２のデータのうち復元済みの分割データ、および、前記第２の記憶装置に格納された前記第１のパリティまたは前記第２のパリティを用いて、前記残りの３個のデータのうち第３のデータを復元する第２のデータ復元処理と、
を並列に実行する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
【請求項１０】
磁気テープを記録媒体として用いた第１の記憶装置と、
前記第１の記憶装置よりアクセス速度が高速な第２の記憶装置と、
ｎ個のデータ（ただし、ｎは２以上の整数）を前記第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記ｎ個のデータを基にパリティを算出し、算出した前記パリティを前記第２の記憶装置に格納するパリティ算出部と、
前記ｎ個のデータを前記第１の記憶装置から読み出す際に、前記ｎ個のデータのうちの少なくとも１つを、前記第１の記憶装置から読み出す代わりに、前記ｎ個のデータのうち前記第１の記憶装置から読み出し済みの他のデータと前記第２の記憶装置から読み出した前記パリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージシステム。
【請求項１１】
第１の記憶装置および第２の記憶装置と、
ｎ個のデータ（ただし、ｎは２以上の整数）を前記第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記ｎ個のデータを基に１種類のパリティを算出し、算出した前記パリティを前記第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−２）個のデータを読み出した後、残りの２個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−２）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および前記第２の記憶装置に格納された前記パリティを用いて、前記残りの２個のデータのうち第２のデータを復元するデータ復元処理とを並列に実行する読み出し制御部と、
を有し、
前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータおよび前記第２のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とするストレージシステム。
【請求項１２】
第１の記憶装置および第２の記憶装置と、
ｎ個のデータ（ただし、ｎは２以上の整数）を前記第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記ｎ個のデータを基に第１のパリティおよび第２のパリティを算出し、算出した前記第１のパリティおよび前記第２のパリティを前記第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータおよび第３のデータを復元するデータ復元処理とを、並列に実行する読み出し制御部と、
を有することを特徴とするストレージシステム。
【請求項１３】
第１の記憶装置および第２の記憶装置と、
ｎ個のデータ（ただし、ｎは２以上の整数）を前記第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記ｎ個のデータを基に第１のパリティおよび第２のパリティを算出し、算出した前記第１のパリティおよび前記第２のパリティを前記第２の記憶装置に格納するパリティ算出部と、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータを復元する第１のデータ復元処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みのデータ、前記第２のデータのうち復元済みの分割データ、および、前記第２の記憶装置に格納された前記第１のパリティまたは前記第２のパリティを用いて、前記残りの３個のデータのうち第３のデータを復元する第２のデータ復元処理と、
を並列に実行する読み出し制御部と、
を有することを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置およびストレージシステムに関する。
【背景技術】
【０００２】
近年、磁気テープなどの大容量かつ安価な記録媒体をバックエンドのライブラリ装置として用いるとともに、ＨＤＤ（Hard Disk Drive）などのアクセス速度がより高速な記録媒体をキャッシュ装置として用いた階層型の仮想ストレージシステムが知られている。仮想ストレージシステムには、キャッシュ装置およびライブラリ装置に対するアクセスを制御する制御装置が設けられ、制御装置は、ホスト装置に対して、キャッシュ装置に記憶されたデータをライブラリ装置のデータとして仮想的に認識させる。これにより、ホスト装置は、ライブラリ装置によって提供される大容量の記憶領域を、あたかも自装置に接続されているかのように利用できるようになる。
【０００３】
一方、ストレージシステムなどに記憶されるデータの消失を防止するための技術として、パリティを用いてデータを冗長化する技術が知られている。このような技術の例として、バックアップするデータを一定サイズに分割し、複数の分割データからパリティを生成して、複数の分割データおよびパリティをそれぞれ異なるバックアップ装置に記録するものがある。また、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）−５におけるストライピング単位を、記録するデータの内容に応じて可変にしたものがある。さらに、パリティ生成のための排他的論理和演算を、パリティ格納用のディスク装置で一括実行するようにしたものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１５０３２５号公報
【特許文献２】特開２００３−１５０３２３号公報
【特許文献３】特開平１０−３１２２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の仮想ストレージシステムにおいて、磁気テープから制御装置へのデータの読み出しに要する時間を短縮したいという要求がある。例えば、磁気テープからデータを読み出す場合、データが格納された磁気テープを搬送機構がテープドライブに搬送してマウントするため、データの読み出し自体を開始するまでに長い時間がかかってしまう。また、磁気テープからのデータの読み出し中に一時的な読み出しエラーが発生する場合があり、その場合には読み出しのリトライを行う分だけ余計な時間がかかってしまう。さらに、磁気テープからの読み出し速度自体が、ＨＤＤなどと比較して低いという問題もある。
【０００６】
１つの側面では、本発明は、記憶装置からのデータの読み出し時間を短縮することが可能なストレージ制御装置およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだｎ個のデータを第１の記憶装置から読み出すストレージ制御装置が提供される。このストレージ制御装置は、ｎ個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを第２の記憶装置に格納するパリティ算出部と、ｎ個のデータを第１の記憶装置から読み出す際に、ｎ個のデータのうちの少なくとも１つを、第１の記憶装置から読み出す代わりに、ｎ個のデータのうち第１の記憶装置から読み出し済みの他のデータと第２の記憶装置に格納されたパリティとを用いて復元する読み出し制御部と、を有する。
【０００８】
また、１つの案では、上記の第１の記憶装置、第２の記憶装置およびストレージ制御装置を有するストレージシステムが提供される。
【発明の効果】
【０００９】
１態様によれば、ストレージ制御装置およびストレージシステムにおいて、記憶装置からのデータの読み出し時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係るストレージシステムの構成例および動作例を示す図である。
【図２】第２の実施の形態に係るストレージシステムのシステム構成例を示す図である。
【図３】制御装置のハードウェア構成例を示す図である。
【図４】テープライブラリ装置のハードウェア構成例を示す図である。
【図５】制御装置が備える処理機能の例を示すブロック図である。
【図６】ＬＶ管理テーブルに登録される情報の例を示す図である。
【図７】ＬＶＧ管理テーブルに登録される情報の例を示す図である。
【図８】測定情報に登録される情報の例を示す図である。
【図９】テープライブラリ装置内の磁気テープに対する論理ボリュームグループの書き込み処理の概要について説明するための図である。
【図１０】処理例１におけるパリティ算出処理を説明するための図である。
【図１１】論理ボリュームの一部のみが更新された場合のパリティ算出処理について説明するための図である。
【図１２】テープライブラリ装置内の磁気テープに対する論理ボリュームグループ単位での書き込み処理手順の例を示すフローチャートである。
【図１３】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図１４】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図１５】処理例１における読み出し制御部の処理手順を示すフローチャートである。
【図１６】処理例１におけるデータ復元部の処理手順を示すフローチャートである。
【図１７】処理例２におけるパリティ算出処理を説明するための図である。
【図１８】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図１９】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図２０】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図２１】処理例２における読み出し制御部の処理手順を示すフローチャートである。
【図２２】処理例２におけるデータ復元部の処理手順を示すフローチャートである。
【図２３】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図２４】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図２５】テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図２６】処理例３におけるパリティＰ，Ｑを用いたデータ復元処理手順を示すフローチャートである。
【図２７】処理例３におけるパリティＰを用いたデータ復元処理手順を示すフローチャートである。
【図２８】ＬＶＧ管理テーブルに登録される情報の例を示す図である。
【図２９】測定情報に登録される情報の例を示す図である。
【図３０】処理例４におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図３１】処理例４における読み出し制御部の処理手順の例を示すフローチャートである。
【図３２】処理例４におけるデータ復元処理手順を示すフローチャートである。
【図３３】処理例５におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図３４】処理例５におけるデータ復元処理手順を示すフローチャートである。
【図３５】処理例６におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
【図３６】処理例６における読み出し制御部の処理手順の例を示すフローチャートである。
【図３７】処理例６におけるパリティＰ，Ｑを用いたデータ復元処理手順を示すフローチャートである。
【図３８】処理例６におけるパリティＰを用いたデータ復元処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例および動作例を示す図である。図１に示すストレージシステム１は、ストレージ制御装置１０、第１の記憶装置２１および第２の記憶装置２２を備える。
【００１２】
ストレージ制御装置１０は、主として、第１の記憶装置２１に対するデータの書き込み、および第１の記憶装置２１からのデータの読み出しを制御する。また、ストレージ制御装置１０は、第２の記憶装置２２にもアクセス可能になっている。
【００１３】
なお、第２の記憶装置２２は、ストレージ制御装置１０の内部に設けられていてもよい。また、ストレージ制御装置１０から第２の記憶装置２２に対するアクセス速度は、ストレージ制御装置１０から第１の記憶装置２１に対するアクセス速度より高い。例えば、第１の記憶装置２１が記録媒体として磁気テープあるいは光ディスクなどの可搬型記録媒体を用いた記憶装置である場合、第２の記憶装置２２は、ＨＤＤ、ＳＳＤ（Solid State Drive）などの固定式の不揮発性記録媒体、または、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static RAM）などの揮発性の半導体メモリとして実現することができる。
【００１４】
ストレージ制御装置１０は、複数のデータを第１の記憶装置２１に書き込む処理と、書き込んだ複数のデータを第１の記憶装置２１から読み出す処理とを実行する。以下の説明では、ストレージ制御装置１０が第１の記憶装置２１に書き込むデータの数をｎ（ただし、ｎは２以上の整数）とする。図１では、ｎ個のデータをデータ＃１，・・・，データ＃ｎと表している。
【００１５】
ここで、ｎ個のデータのそれぞれは、例えば、１つのファイルであってもよく、あるいは、論理ボリュームのように複数のファイルを含むデータ群であってもよい。また、ｎ個のデータは、例えば、１つのグループとして管理されるようにユーザによってあらかじめ設定されたものである。
【００１６】
ストレージ制御装置１０は、ｎ個のデータの読み書きに関する処理機能として、パリティ算出部１１と読み出し制御部１２とを備える。
パリティ算出部１１は、ｎ個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを第２の記憶装置２２に格納する。
【００１７】
ここで、パリティ算出部１１がパリティを算出するタイミングは、第１の記憶装置２１に書き込まれたｎ個のデータが、ストレージ制御装置１０に読み出されるより前の任意のタイミングであればよい。すなわち、パリティ算出部１１によって、パリティは、ｎ個のデータが第１の記憶装置２１からストレージ制御装置１０に読み出されるより前に、あらかじめ第２の記憶装置２２に格納される。
【００１８】
また、パリティ算出部１１は、ストレージ制御装置１０がｎ個のデータを第１の記憶装置２１に書き込むより前にパリティを算出することが望ましい。これにより、パリティ算出部１１は、例えばストレージ制御装置１０内のＲＡＭ（Random Access Memory）や第２の記憶装置２２など、第１の記憶装置２１よりアクセス速度の高い記憶装置からｎ個のデータを読み込み、パリティを高速に算出することができる。
【００１９】
なお、ｎ個のデータのそれぞれは、一定サイズであっても、あるいは一定サイズでなくてもよい。ただし、ｎ個のデータのそれぞれが一定サイズでない場合、パリティ算出部１１は、例えば次のようにしてｍ種類のパリティを算出する。パリティ算出部１１は、ｎ個のデータのそれぞれのサイズが同じになるように、ｎ個のデータのうち、少なくとも、最大サイズのデータを除くデータのそれぞれに対してダミーデータを付加する。パリティ算出部１１は、ダミーデータの付加によってそれぞれのサイズが同じになったｎ個のデータを基に、ｍ種類のパリティを算出する。なお、付加された各ダミーデータは、ｎ個のデータとともに第１の記憶装置２１に書き込まれる必要はない。
【００２０】
読み出し制御部１２は、第１の記憶装置２１に格納されたｎ個のデータを読み出す際に、ｎ個のデータのうちの１つ（例えば、図１のデータ＃ｎ）を、第１の記憶装置２１から直接読み出す代わりに、ｎ個のデータのうち第１の記憶装置２１から読み出し済みの他のデータ（例えば、図１のデータ＃１〜データ＃（ｎ−１））と、第２の記憶装置２２に格納されたパリティとを用いて、計算によって復元する。計算によってデータが復元される時間は、同じデータが第１の記憶装置２１から読み出される時間より短いことから、ｎ個のデータ全体の読み出しに要する時間を短縮することができる。
【００２１】
また、読み出し制御部１２は、計算によるデータの復元処理を、ｎ個のデータのうち他の１つのデータを第１の記憶装置２１から読み出す処理と並列に実行してもよい。この場合、読み出し制御部１２は、第１の記憶装置２１からｎ個のデータのうち（ｎ−２）個のデータを読み出す。その後、読み出し制御部１２は、残りの２個のデータのうち第１のデータ（例えば、図１のデータ＃（ｎ−１））を第１の記憶装置２１から読み出す処理と、第１の記憶装置２１から読み出し済みの（ｎ−２）個のデータ、第１のデータのうち第１の記憶装置２１から読み出し済みの分割データ、および第２の記憶装置２２に格納されたパリティを用いて、残りの２個のデータのうち第２のデータ（例えば、図１のデータ＃ｎ）を復元する処理とを、並列に実行する。このように、第１のデータの読み出し処理と第２のデータの復元処理とが並列に実行されることで、ｎ個のデータ全体の読み出しに要する時間をさらに短縮することができる。
【００２２】
なお、以上の第１の実施の形態では、パリティ算出部１１は１種類のパリティを算出するものとしたが、パリティ算出部１１は、例えば、２種類のパリティを算出して第２の記憶装置２２に格納してもよい。この場合、読み出し制御部１２は、ｎ個のデータを第１の記憶装置２１から読み出す際に、ｎ個のデータのうち最大で２個のデータを、第１の記憶装置２１から読み出す代わりに計算によって復元することができる。
【００２３】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムのシステム構成例を示す図である。図２に示すストレージシステム１００は、制御装置２００、ディスクアレイ装置３００およびテープライブラリ装置４００を備える。また、制御装置２００には、ホスト装置５００が接続されている。
【００２４】
制御装置２００は、ホスト装置５００とディスクアレイ装置３００との間のデータ転送動作や、ディスクアレイ装置３００とテープライブラリ装置４００との間のデータ転送動作を制御する。制御装置２００は、ストレージシステム１００が、テープライブラリ装置４００をバックエンドのライブラリ装置とし、ディスクアレイ装置３００をキャッシュ装置とした階層型の仮想テープライブラリシステムとして動作するように制御する。ここで、仮想テープライブラリシステムとは、テープライブラリ装置４００によって実現される大容量の記憶領域に対して、ホスト装置５００が、ディスクアレイ装置３００を通じて仮想的にアクセスできるようにしたものである。
【００２５】
ディスクアレイ装置３００は、仮想テープライブラリシステムにおけるキャッシュ装置の記憶領域を実現する記録媒体として、複数のＨＤＤを備える。なお、ディスクアレイ装置３００は、キャッシュ装置の記憶領域を実現するための記録媒体として、ＳＳＤなどの他の種類の不揮発性記憶装置を備えていてもよい。
【００２６】
テープライブラリ装置４００は、仮想テープライブラリシステムにおけるバックエンドの記憶領域を実現する記録媒体として、複数の磁気テープを用いた記憶装置である。後述するように、テープライブラリ装置４００は、磁気テープに対するデータアクセスを行う１つまたは複数のテープドライブや、磁気テープを収容したテープカートリッジを搬送する機構などを備える。
【００２７】
なお、仮想テープライブラリシステムのバックエンドの記憶領域を実現する記録媒体としては、磁気テープの他、例えば、光ディスク、光磁気ディスクなどの可搬型の記録媒体を利用することもできる。
【００２８】
また、制御装置２００、ディスクアレイ装置３００およびテープライブラリ装置４００は、例えば、１つの筐体内、またはそれぞれ個別の筐体内に設けられる。あるいは、例えば、制御装置２００とディスクアレイ装置３００とが１つの筐体内に設けられ、テープライブラリ装置４００が別の筐体内に設けられてもよい。
【００２９】
ホスト装置５００は、ユーザの入力操作に応じて制御装置２００にアクセス要求を発することで、仮想テープライブラリシステムに定義された論理ボリュームにアクセスする。論理ボリュームとは、ストレージシステム１００の物理記憶領域を用いてユーザに提供される論理的な記憶領域である。
【００３０】
図３は、制御装置のハードウェア構成例を示す図である。制御装置２００は、例えば、図３のようなコンピュータとして実現される。
制御装置２００は、ＣＰＵ（Central Processing Unit）２０１によって装置全体が制御されている。ＣＰＵ２０１には、バス２０９を介して、ＲＡＭ２０２および複数の周辺機器が接続されている。
【００３１】
ＲＡＭ２０２は、制御装置２００の主記憶装置として使用される。ＲＡＭ２０２には、ＣＰＵ２０１に実行させるファームウェアプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２０２には、ＣＰＵ２０１による処理に必要な各種データが格納される。
【００３２】
バス２０９に接続されている周辺機器としては、ＳＳＤ２０３、入力インタフェース２０４、光学ドライブ装置２０５、ホストインタフェース２０６、ディスクインタフェース２０７およびテープインタフェース２０８がある。
【００３３】
ＳＳＤ２０３は、制御装置２００の二次記憶装置として使用される。ＳＳＤ２０３には、ファームウェアプログラムおよび各種データが格納される。なお、二次記憶装置としては、ＨＤＤなどの他の種類の不揮発性記憶装置が使用されてもよい。
【００３４】
入力インタフェース２０４には、例えば、各種の操作キーなどを備える入力装置２０４ａが接続可能になっている。入力インタフェース２０４は、入力装置２０４ａからの信号をバス２０９を介してＣＰＵ２０１に送信する。なお、入力装置２０４ａは、制御装置２００に搭載されていてもよい。
【００３５】
光学ドライブ装置２０５は、レーザ光などを利用して、光ディスク２０５ａに記録されたデータの読み取りを行う。光ディスク２０５ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２０５ａには、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などがある。
【００３６】
ホストインタフェース２０６は、ホスト装置５００との間でデータを送受信する通信インタフェースである。ディスクインタフェース２０７は、ディスクアレイ装置３００との間でデータを送受信する通信インタフェースである。テープインタフェース２０８は、テープライブラリ装置４００との間でデータを送受信する通信インタフェースである。
【００３７】
なお、ホスト装置５００についても、制御装置２００と同様に、ＣＰＵ、ＲＡＭ、周辺機器などを備えるコンピュータとして実現することができる。
図４は、テープライブラリ装置のハードウェア構成例を示す図である。テープライブラリ装置４００は、コントローラ４０１、ＲＡＭ４０２、フラッシュメモリ４０３、テープドライブ４１１，４１２、テープ格納部４２１およびテープ搬送部４２２を備える。
【００３８】
コントローラ４０１は、例えばＣＰＵを備え、テープライブラリ装置４００全体を統括的に制御する。ＲＡＭ４０２は、コントローラ４０１に実行させるファームウェアプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ４０２には、コントローラ４０１による処理に必要な各種データが格納される。フラッシュメモリ４０３には、ファームウェアプログラムや各種データが格納される。
【００３９】
テープドライブ４１１，４１２は、それぞれ、テープ搬送部４２２によって搬送されたテープカートリッジを１つずつマウントし、コントローラ４０１の制御の下で、マウントしたテープカートリッジ内の磁気テープに対するデータの書き込みや、磁気テープからのデータの読み出しを行う。なお、テープライブラリ装置４００が備えるテープドライブの数は特に限定されるものではない。
【００４０】
テープ格納部４２１には、複数のテープカートリッジが格納されている。テープ搬送部４２２は、コントローラ４０１による制御の下でテープカートリッジを搬送する。テープ搬送部４２２は、例えば、テープ格納部４２１に格納されたテープカートリッジを、テープドライブ４１１，４１２のいずれかに搬送してマウントする。また、テープ搬送部４２２は、テープドライブ４１１，４１２のいずれかからテープカートリッジをアンマウントし、テープ格納部４２１に搬送して格納する。
【００４１】
図５は、制御装置が備える処理機能の例を示すブロック図である。
制御装置２００は、書き込み制御部２１１、読み出し制御部２１２、データ復元部２１３、仮想テープ制御部２２１およびＬＶＧ（Logical Volume Group）読み出し制御部２２２を備える。これらの各部の処理は、例えば、制御装置２００のＣＰＵ２０１が所定のファームウェアプログラムを実行することによって実現される。
【００４２】
また、制御装置２００のＳＳＤ２０３には、ＬＶ（Logical Volume）管理テーブル２３０およびＬＶＧ管理テーブル２４０が記憶される。なお、ＬＶ管理テーブル２３０およびＬＶＧ管理テーブル２４０の少なくとも一方は、例えば、ディスクアレイ装置３００内のいずれかのＨＤＤに記憶されてもよい。さらに、制御装置２００のＲＡＭ２０２には、測定情報２５０が一時的に記憶される。
【００４３】
書き込み制御部２１１は、仮想テープ制御部２２１からの指示に応じて、ディスクアレイ装置３００内のデータをテープライブラリ装置４００に転送し、転送したデータを磁気テープに書き込むようにテープライブラリ装置４００に要求する。また、書き込み制御部２１１は、仮想テープ制御部２２１からの指示に応じて、ホスト装置５００から受信したデータをディスクアレイ装置３００に書き込むこともできる。
【００４４】
ここで、仮想テープ制御部２２１からの指示に応じたテープライブラリ装置４００へのデータ転送は、あらかじめ設定された１つ以上の論理ボリューム（ＬＶ）からなる論理ボリュームグループ（ＬＶＧ）を単位として実行される。書き込み制御部２１１は、論理ボリュームグループをテープライブラリ装置４００に転送する際に、論理ボリュームグループに属する各論理ボリュームのデータを用いてパリティを算出し、算出したパリティをディスクアレイ装置３００に格納する。
【００４５】
読み出し制御部２１２は、仮想テープ制御部２２１またはＬＶＧ読み出し制御部２２２からの指示に応じて、テープライブラリ装置４００に対して磁気テープからのデータ読み出しを要求する。読み出し制御部２１２は、読み出し要求に応じてテープライブラリ装置４００から送信されたデータを、ディスクアレイ装置３００に格納する。また、読み出し制御部２１２は、仮想テープ制御部２２１からの指示に応じて、ディスクアレイ装置３００からデータを読み出し、仮想テープ制御部２２１に転送する。
【００４６】
ここで、読み出し制御部２１２は、論理ボリュームグループ単位でテープライブラリ装置４００からのデータ読み出しを要求された場合、論理ボリュームグループに属する論理ボリュームのうち一部の論理ボリュームを、テープライブラリ装置４００から読み出さずに、データ復元部２１３にパリティを用いて復元させる。テープライブラリ装置４００からのデータ読み出しに要する時間は、例えばディスクアレイ装置３００からのデータ読み出しに要する時間と比較して長い。上記のように、論理ボリュームグループ内の一部の論理ボリュームがデータ復元部２１３によって復元されて、テープライブラリ装置４００から実際に読み出されるデータ量が減少することで、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【００４７】
データ復元部２１３は、論理ボリュームグループ内の一部の論理ボリュームを、同じ論理ボリュームグループ内のデータのうちテープライブラリ装置４００から読み出し済みのデータと、ディスクアレイ装置３００に格納されたパリティとを用いて、復元する。
【００４８】
仮想テープ制御部２２１は、ホスト装置５００からの仮想テープライブラリシステムへのアクセス要求に応じて、ディスクアレイ装置３００内のＨＤＤに対するデータアクセス、テープライブラリ装置４００内の磁気テープに対するデータアクセスなどの処理の実行を、書き込み制御部２１１または読み出し制御部２１２に指示する。仮想テープ制御部２２１は、例えば、次のような制御を行う。
【００４９】
仮想テープ制御部２２１は、ディスクアレイ装置３００に論理ボリュームの領域を確保する。仮想テープ制御部２２１は、ホスト装置５００から論理ボリュームに対する書き込み要求を受けると、書き込みが要求されたデータをディスクアレイ装置３００上の対応する領域に書き込む。仮想テープ制御部２２１は、ディスクアレイ装置３００へデータを書き込んでから任意のタイミングで、データが書き込まれた論理ボリュームを、テープライブラリ装置４００内の磁気テープに書き込む。ここで、仮想テープ制御部２２１は、ディスクアレイ装置３００内の論理ボリュームをテープライブラリ装置４００に書き込む際に、その論理ボリュームが属する論理ボリュームグループ内のすべての論理ボリュームを、テープライブラリ装置４００内の磁気テープに書き込むように制御する。
【００５０】
また、仮想テープ制御部２２１は、ディスクアレイ装置３００の空き容量が所定量以下に低下したとき、ディスクアレイ装置３００内の論理ボリュームグループのうち、最終アクセス時刻が最も長い論理ボリュームグループを、ディスクアレイ装置３００から消去する。このとき、消去対象の論理ボリュームグループの中に、テープライブラリ装置４００内の磁気テープに書き込んでいないデータが存在する場合には、消去対象の論理ボリュームグループをテープライブラリ装置４００内の磁気テープに書き込むように制御する。
【００５１】
なお、仮想テープ制御部２２１は、論理ボリュームを磁気テープに書き込む際に、その書き込み先を示す情報を論理ボリュームの識別情報に対応付けて、ＬＶ管理テーブル２３０に登録する。
【００５２】
一方、仮想テープ制御部２２１は、ホスト装置５００からデータの読み出し要求を受けると、読み出しが要求されたデータを含む論理ボリュームがディスクアレイ装置３００にキャッシュされているかを判定する。論理ボリュームがディスクアレイ装置３００にキャッシュされている場合、仮想テープ制御部２２１は、読み出しが要求されたデータをディスクアレイ装置３００から読み出して、ホスト装置５００に送信する。
【００５３】
一方、論理ボリュームがディスクアレイ装置３００にキャッシュされていない場合、仮想テープ制御部２２１は、ＬＶ管理テーブル２３０を参照して、論理ボリュームが格納されている磁気テープを特定する。仮想テープ制御部２２１は、特定した磁気テープから論理ボリュームを読み出して、ディスクアレイ装置３００に書き込む。なお、このときの磁気テープからディスクアレイ装置３００へのデータ転送処理を「リコール」と呼ぶ。仮想テープ制御部２２１は、ディスクアレイ装置３００に書き込んだ論理ボリュームから、読み出しを要求されたデータを読み出して、ホスト装置５００に送信する。
【００５４】
ＬＶＧ読み出し制御部２２２は、例えばホスト装置５００などからの要求に応じて、読み出し制御部２１２に対して、論理ボリュームグループ単位での、テープライブラリ装置４００からのデータの読み出しを要求する。このような読み出しが要求されるケースとしては、例えば、テープライブラリ装置４００の磁気テープに格納された論理ボリュームグループをディスクアレイ装置３００に読み出して、他の装置（例えば、他のストレージシステムにおけるディスクアレイ装置）に移動する処理がある。あるいは、テープライブラリ装置４００の複数の磁気テープに分散して格納されたＬＶＧをディスクアレイ装置３００に一旦読み出して、仮想テープライブラリ用の磁気テープとは別の、外部保管用の磁気テープに一括してコピーする処理もある。
【００５５】
次に、ＬＶ管理テーブル２３０、ＬＶＧ管理テーブル２４０および測定情報２５０に登録される情報について説明する。
図６は、ＬＶ管理テーブルに登録される情報の例を示す図である。
【００５６】
ＬＶ管理テーブル２３０は、仮想テープライブラリシステム上に定義された論理ボリュームが、どの磁気テープのどの位置に格納されているかを示す情報を保持する。ＬＶ管理テーブル２３０には、論理ボリュームごとにレコード２３１が生成され、各レコード２３１には、「ＬＶ番号」、「格納先テープ番号」、「ＬＶサイズ」および「先頭アドレス」の各欄が設けられている。
【００５７】
「ＬＶ番号」の欄には、対応する論理ボリュームを識別するための識別番号が登録される。「格納先テープ番号」の欄には、対応する論理ボリュームが格納された磁気テープを識別するための識別番号が登録される。「ＬＶサイズ」の欄には、対応する論理ボリュームのサイズが登録される。「先頭アドレス」の欄には、対応する論理ボリュームが格納された磁気テープにおける領域の先頭を示すアドレスが登録される。
【００５８】
図７は、ＬＶＧ管理テーブルに登録される情報の例を示す図である。ＬＶＧ管理テーブル２４０は、論理ボリュームグループに属する論理ボリュームを管理するための情報を保持するとともに、論理ボリュームグループをテープライブラリ装置４００内の磁気テープから読み出す際に必要となる情報を保持する。
【００５９】
ＬＶＧ管理テーブル２４０には、論理ボリュームグループのすべての共通の情報として「パリティサイズ」の欄が設けられている。「パリティサイズ」の欄には、書き込み制御部２１１が１回のパリティ演算によって算出するパリティのサイズが登録される。このパリティのサイズは、パリティ演算の際に論理ボリュームを分割して得られるブロック１つ分のサイズと等しい。なお、ブロックについては後で詳しく説明する。
【００６０】
また、ＬＶＧ管理テーブル２４０には、論理ボリュームグループごとにＬＶＧ情報２４１が登録される。各ＬＶＧ情報２４１には、「ＬＶＧ番号」、「ＬＶ数」、「ＬＶ番号」、「パリティ種別」、「ＬＶサイズ１」、「ＬＶサイズ２」、「ＬＶサイズ３」および「ライン数」の各欄が設けられている。
【００６１】
「ＬＶＧ番号」の欄には、対応する論理ボリュームグループを識別するための識別番号が登録される。「ＬＶ数」の欄には、対応する論理ボリュームグループに属する論理ボリュームの数が登録される。「ＬＶ番号」の欄には、対応する論理ボリュームグループに属する各論理ボリュームを識別するための識別番号のリストが登録される。なお、どの論理ボリュームグループにどの論理ボリュームを所属させるかは、ホスト装置５００を通じてユーザが設定可能であり、「ＬＶ数」および「ＬＶ番号」の各欄には、ユーザの設定操作に応じた情報が登録される。
【００６２】
「パリティ種別」の欄には、対応する論理ボリュームグループをテープライブラリ装置４００内の磁気テープに書き込む際に、書き込み制御部２１１に算出させるパリティの種別が登録される。パリティの種別とは、１種類のパリティ（パリティＰ）が算出される「シングルパリティ」か、あるいは２種類のパリティ（パリティＰとパリティＱ）が算出される「ダブルパリティ」かを識別するための情報である。なお、「パリティ種別」の欄についても、例えば、ユーザの設定操作に応じた情報が登録される。
【００６３】
「ＬＶサイズ１」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大の論理ボリュームのサイズが登録される。「ＬＶサイズ２」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、２番目に大きい論理ボリュームのサイズが登録される。「ＬＶサイズ３」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、３番目に大きい論理ボリュームのサイズが登録される。
【００６４】
「ライン数」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームから得られるブロックの数を示す。「ライン数」の欄の情報は、「ＬＶサイズ１」の欄に登録されたサイズを「パリティサイズ」の欄に登録されたサイズで除算することで得られる。
【００６５】
「ＬＶサイズ１」、「ＬＶサイズ２」、「ＬＶサイズ３」および「ライン数」の各欄の情報は、例えば、ユーザによって論理ボリュームグループに所属させる論理ボリュームが設定されたときに、仮想テープ制御部２２１によって自動的に登録される。なお、「ＬＶサイズ３」の欄には、「パリティ種別」の欄の登録情報がダブルパリティを示す場合にのみ、情報が登録されればよい。
【００６６】
さらに、ＬＶＧ情報２４１には、ラインごとにライン管理情報２４２が登録される。ＬＶＧ情報２４１に登録されるライン管理情報２４２の数は、「ライン数」の欄に登録されている数と一致する。ライン管理情報２４２には、「ライン番号」および「先頭アドレス」の各欄が設けられている。
【００６７】
「ライン番号」の欄には、対応するラインを識別するための識別番号が登録される。この識別番号は、ラインの先頭から順に割り当てられる。「先頭アドレス」の欄には、対応するラインの先頭からの位置を示す情報が登録される。先頭のラインのアドレスは「０」であり、次のラインのアドレスは、前のラインのアドレスに、「パリティサイズ」の欄に登録されたサイズに対応する分のアドレスが加算された値となる。
【００６８】
また、ライン管理情報２４２には、パリティごとにパリティ管理情報２４３が登録される。「パリティ種別」の欄の登録情報がシングルパリティを示す場合、ライン管理情報２４２にはパリティ管理情報２４３が１つ登録される。一方、「パリティ種別」の欄の登録情報がダブルパリティを示す場合、ライン管理情報２４２にはパリティ管理情報２４３が２つ登録される。
【００６９】
パリティ管理情報２４３は、「ＬＶＧ番号」で識別される論理ボリュームグループおよび「ライン番号」で識別されるラインに対応するパリティが、ディスクアレイ装置３００の記憶領域のうちのどこに格納されているかを示すものである。すなわち、パリティ管理情報２４３で管理されるパリティとは、１つの論理ボリュームグループから算出されるひとまとめのパリティを、ライン単位で分割したデータを示す。
【００７０】
パリティ管理情報２４３には、「パリティ番号」、「格納先ＬＶ番号」および「先頭アドレス」の各欄が設けられている。「パリティ番号」の欄には、対応するパリティを識別するための識別番号が登録される。なお、同一の論理ボリュームグループのパリティには、例えば、ライン順に連続した識別番号が付与される。「格納先ＬＶ番号」の欄には、対応するパリティが格納された、ディスクアレイ装置３００上の論理ボリュームの識別番号が登録される。なお、「格納先ＬＶ番号」が示す論理ボリュームは、論理ボリュームグループに属していない論理ボリュームの１つである。「先頭アドレス」の欄には、対応するパリティの記憶領域の先頭部分が、「格納先ＬＶ番号」が示す論理ボリューム内のどの位置かを示す情報が登録される。
【００７１】
図８は、測定情報に登録される情報の例を示す図である。
測定情報２５０は、論理ボリュームグループを単位として、テープライブラリ装置４００内の磁気テープからディスクアレイ装置３００に対してデータが読み出される際に、読み出し制御部２１２およびデータ復元部２１３によって登録され、また参照される情報である。測定情報２５０には、「ＬＶＧ番号」、「読み出し中ライン番号」、「復元中ライン番号１」、「復元中ライン番号２」、「初期間隔値１」、「初期間隔値２」、「読み出し処理速度」、「復元処理速度１」および「復元処理速度２」の各欄が設けられる。
【００７２】
「ＬＶＧ番号」の欄には、読み出し処理対象の論理ボリュームグループを識別するための識別番号が登録される。読み出し制御部２１２は、ある論理ボリュームグループをテープライブラリ装置４００内の磁気テープから読み出す処理を開始する際に、その論理ボリュームグループの識別番号を「ＬＶＧ番号」の欄に登録した測定情報２５０を、ＲＡＭ２０２に生成する。それ以後、論理ボリュームグループ全体がディスクアレイ装置３００に書き込まれるまでの間、生成された測定情報２５０における「ＬＶＧ番号」以外の欄の情報が、読み出し制御部２１２またはデータ復元部２１３によって随時更新される。
【００７３】
「読み出し中ライン番号」の欄には、テープライブラリ装置４００内の磁気テープから読み出し中の論理ボリュームにおいて、どのラインのデータが読み出し中であるかを示すライン番号が登録される。
【００７４】
「復元中ライン番号１」および「復元中ライン番号２」の各欄には、パリティを用いて復元中の論理ボリュームにおいて、どのラインのデータが復元中であるかを示すライン番号が登録される。「復元中ライン番号１」の欄には、後述する処理例１，２における復元処理でのライン番号、および、後述する処理例３におけるパリティＰを用いた復元処理でのライン番号が登録される。「復元中ライン番号２」の欄には、処理例３におけるパリティＱを用いた復元処理でのライン番号が登録される。
【００７５】
「初期間隔値１」および「初期間隔値２」の各欄には、パリティを用いた復元処理を開始するタイミング、または再開するタイミングを決定するために用いられるライン数が登録される。データ復元部２１３は、ある論理ボリュームの復元処理を実行する際に、その論理ボリュームにおける復元中のラインと、その論理ボリュームより読み出し順が１つ前の論理ボリュームにおける読み出し中または復元中のラインとの間隔が、「初期間隔値１」または「初期間隔値２」の欄に登録されたライン数以上になるようにする。
【００７６】
「初期間隔値１」の欄には、後述する処理例１，２における復元処理で使用されるライン数が登録され、「初期間隔値２」の欄には、処理例３におけるパリティＱを用いた復元処理で使用されるライン数が登録される。「初期間隔値１」および「初期間隔値２」の各欄の情報は、データ復元部２１３によって計算される。
【００７７】
「読み出し処理速度」の欄には、読み出し制御部２１２による磁気テープからの論理ボリュームの読み出し処理速度の計測結果が登録される。「復元処理速度１」および「復元処理速度２」の各欄には、データ復元部２１３によるパリティを用いた論理ボリュームの復元処理速度の計測結果が登録される。「復元処理速度１」の欄には、後述する処理例１，２における復元処理の速度の計測結果が登録され、「復元処理速度２」の欄には、処理例３におけるパリティＱを用いた復元処理の速度の計測結果が登録される。
【００７８】
次に、図９は、テープライブラリ装置内の磁気テープに対する論理ボリュームグループの書き込み処理の概要について説明するための図である。
制御装置２００は、ホスト装置５００を通じたユーザからの指示に応じて、仮想テープライブラリシステム上の任意の複数の論理ボリュームを、論理ボリュームグループに割り当てることができる。論理ボリュームグループに割り当てられた論理ボリュームは、例えば、ユーザがアクセス可能な論理記憶領域としてホスト装置５００から認識されるようになる。一方、制御装置２００は、論理ボリュームグループに割り当てられておらず、ホスト装置５００から認識されていない論理ボリュームを、フローティングと呼ばれる領域として管理する。
【００７９】
図９の例では、論理ボリュームＬＶ０〜ＬＶ２が、論理ボリュームグループＬＶＧ０に割り当てられ、論理ボリュームＬＶ１０〜ＬＶ１３が、論理ボリュームグループＬＶＧ１に割り当てられている。一方、論理ボリュームＬＶ２０，ＬＶ２１は、ともにフローティング領域に属している。
【００８０】
前述したように、制御装置２００の書き込み制御部２１１は、仮想テープ制御部２２１からの指示に応じたテープライブラリ装置４００へのデータ転送を、論理ボリュームグループ単位で実行する。書き込み制御部２１１は、論理ボリュームグループをテープライブラリ装置４００内の磁気テープに書き込む際に、論理ボリュームグループに属する各論理ボリュームのデータを用いてパリティを算出し、算出したパリティをディスクアレイ装置３００内の所定の記憶領域に格納する。書き込み制御部２１１は、例えば、算出したパリティを、フローティング領域に属する論理ボリュームに格納する。
【００８１】
図９の例では、書き込み制御部２１１は、論理ボリュームグループＬＶＧ０のデータをテープライブラリ装置４００に書き込む際に、論理ボリュームグループＬＶＧ０に属する論理ボリュームＬＶ０〜ＬＶ２のデータを基にパリティを算出する。書き込み制御部２１１は、算出したパリティを、フローティング領域に属する論理ボリュームＬＶ２０に格納する。論理ボリュームＬＶ２０に格納されたパリティは、その後、論理ボリュームグループＬＶＧ０がテープライブラリ装置４００の磁気テープからディスクアレイ装置３００に読み出される際に、データ復元部２１３によって参照される。
【００８２】
ところで、書き込み制御部２１１は、例えば、１種類のパリティを算出してもよく、あるいは、異なる計算方法によって２種類のパリティ（パリティＰ，Ｑ）を算出してもよい。そこで、以下の説明では、１種類のパリティが算出される場合の例を「処理例１」として説明し、２種類のパリティが算出される場合の例を「処理例２」および「処理例３」として説明する。
【００８３】
＜処理例１＞
図１０は、処理例１におけるパリティ算出処理を説明するための図である。以下、例として、論理ボリュームＬＶ０〜ＬＶ２が、１つの論理ボリュームグループＬＶＧ０に属しているものとして説明する。
【００８４】
論理ボリュームグループに属する複数の論理ボリュームは、それぞれ同一のサイズであるとは限らない。そこで、書き込み制御部２１１は、パリティを算出する際に、論理ボリュームグループに属する論理ボリュームの後端にダミーデータを付加して、各論理ボリュームのサイズを均等化する。
【００８５】
ダミーデータは、「０」などのあらかじめ決められた一律の値を有する。また、ダミーデータは、論理ボリュームグループに属する論理ボリュームのうち、少なくとも、最大サイズの論理ボリューム以外の論理ボリュームに対して付加されればよい。図１０の例では、同一論理ボリュームグループに属する論理ボリュームＬＶ０〜ＬＶ２のうち、論理ボリュームＬＶ２のサイズが最大となっている。書き込み制御部２１１は例えば、図１０の下側に示すように、論理ボリュームＬＶ０，ＬＶ１のそれぞれに対してダミーデータを付加することで、論理ボリュームＬＶ０〜ＬＶ２のサイズを均等化する。
【００８６】
なお、これ以降、説明を簡単にするために、論理ボリュームの後端にダミーデータが付加されているとき、付加されたダミーデータを含めた全体を「論理ボリューム」と称することとする。ただし、ダミーデータは、パリティ算出のために一時的に付加されるデータであって、テープライブラリ装置４００の磁気テープに対して実際に書き込まれる訳ではない。
【００８７】
サイズの均等化処理を実行した後、書き込み制御部２１１は、論理ボリュームＬＶ０〜ＬＶ２のそれぞれを先頭から一定サイズごとに分割したブロックごとに、パリティを算出する。ここで、論理ボリュームグループに属する各論理ボリューム、および、各論理ボリュームから算出されたパリティのそれぞれの先頭からのブロックの番号を、ライン番号によって表す。書き込み制御部２１１は、論理ボリュームグループに属する各論理ボリュームにおける同一のライン番号に対応するブロックを用いて、パリティをブロックごとに算出する。
【００８８】
例えば、図１０において、パリティにおけるライン番号０のブロックは、論理ボリュームＬＶ０〜ＬＶ２のそれぞれにおけるライン番号０のブロックを基に算出される。同様に、パリティにおけるライン番号１のブロックは、論理ボリュームＬＶ０〜ＬＶ２のそれぞれにおけるライン番号１のブロックを基に算出される。
【００８９】
また、パリティにおけるライン番号１０のブロックは、論理ボリュームＬＶ０〜ＬＶ２のそれぞれにおけるライン番号１０のブロックを基に算出されるが、論理ボリュームＬＶ１におけるライン番号１０のブロックとしてダミーデータが使用される。このように、書き込み制御部２１１は、後端にダミーデータを付加することで、論理ボリュームグループに属する論理ボリュームのサイズが均等でない場合でも、これらの論理ボリュームのデータを基にパリティを算出できるようになる。
【００９０】
なお、パリティの算出処理の際には、ディスクアレイ装置３００の記憶領域に、付加されるダミーデータ全体の記憶領域が確保される必要はない。例えば、書き込み制御部２１１は、ディスクアレイ装置３００の記憶領域に１ブロック分のダミーデータを格納しておく。そして、書き込み制御部２１１は、あるライン番号に対応するパリティのブロックを算出する際にダミーデータが必要な場合には、格納されている１ブロック分のダミーデータをディスクアレイ装置３００から読み込む。
【００９１】
図１１は、論理ボリュームの一部のみが更新された場合のパリティ算出処理について説明するための図である。
書き込み制御部２１１は、新規に生成された論理ボリュームグループのデータをテープライブラリ装置４００内の磁気テープに書き込む場合には、図１０に示したように、パリティ全体を新たに算出して、ディスクアレイ装置３００に書き込む。一方、論理ボリュームグループのデータを１回以上テープライブラリ装置４００の磁気テープに書き込んだことがある場合には、この論理ボリュームグループに対応するパリティがディスクアレイ装置３００にすでに格納されていることになる。書き込み制御部２１１は、このような状態から、論理ボリュームグループのデータを再度、テープライブラリ装置４００の磁気テープに書き込む場合には、論理ボリュームグループ内のデータのうちの更新された部分に対応するパリティのブロックについてのみ、再計算を行えばよい。
【００９２】
例えば、図１１の上段に示すように、論理ボリュームＬＶ０におけるライン番号０のブロックと、論理ボリュームＬＶ２におけるライン番号１のブロックとが更新されたものとする。この場合、図１１の下段に示すように、書き込み制御部２１１は、論理ボリュームＬＶ０〜ＬＶ２をテープライブラリ装置４００の磁気テープに書き込む際に、ディスクアレイ装置３００に格納されているパリティのうち、ライン０，１に対応するブロックのみを再計算して、ディスクアレイ装置３００に上書き保存する。具体的には、書き込み制御部２１１は、パリティにおけるライン番号０のブロックを、論理ボリュームＬＶ０〜ＬＶ２のそれぞれにおけるライン番号０のブロックを基に再計算する。また、書き込み制御部２１１は、パリティにおけるライン番号１のブロックを、論理ボリュームＬＶ０〜ＬＶ２のそれぞれにおけるライン番号１のブロックを基に再計算する。
【００９３】
図１２は、テープライブラリ装置内の磁気テープに対する論理ボリュームグループ単位での書き込み処理手順の例を示すフローチャートである。
［ステップＳ１１］仮想テープ制御部２２１は、書き込み制御部２１１に対して、論理ボリュームグループを識別するＬＶＧ番号を指定し、磁気テープへの書き込みを要求する。
【００９４】
［ステップＳ１２］書き込み制御部２１１は、ＬＶＧ管理テーブル２４０を参照して、仮想テープ制御部２２１から指定された論理ボリュームグループに属する論理ボリュームを特定する。
【００９５】
［ステップＳ１３］書き込み制御部２１１は、ステップＳ１２で特定した各論理ボリュームのサイズをＬＶ管理テーブル２４０から読み出し、各論理ボリュームのサイズが同じであるかを判定する。書き込み制御部２１１は、各論理ボリュームのサイズが同じである場合、ステップＳ１５の処理を実行する。一方、書き込み制御部２１１は、各論理ボリュームのうち少なくとも１つのサイズが他の論理ボリュームのサイズと異なる場合、ステップＳ１４の処理を実行する。
【００９６】
［ステップＳ１４］書き込み制御部２１１は、特定した論理ボリュームのうち、少なくとも、最大サイズの論理ボリューム以外の論理ボリュームに対して、ダミーデータを付加する。これにより、書き込み制御部２１１は、各論理ボリュームのサイズを均等化する。
【００９７】
［ステップＳ１５］書き込み制御部２１１は、各論理ボリュームのブロックをライン番号順にディスクアレイ装置３００から読み出し、パリティを算出する。書き込み制御部２１１は、算出したパリティを、ディスクアレイ装置３００におけるフローティング領域に属する所定の論理ボリュームに格納する。
【００９８】
書き込み制御部２１１は、パリティにおける１つのライン番号に対応するブロックを算出するたびに、ＬＶＧ管理テーブル２４０に対して、そのライン番号に対応するライン管理情報２４２を登録する。なお、ステップＳ１５では、ライン管理情報２４２内のパリティ管理情報２４３は、１つのみ登録される。
【００９９】
［ステップＳ１６］書き込み制御部２１１は、ステップＳ１２で特定した各論理ボリュームのデータをディスクアレイ装置３００からテープライブラリ装置４００に転送し、テープライブラリ装置４００に対して、転送したデータを磁気テープに格納するように指示する。テープライブラリ装置４００は、例えば、テープ格納部４２１から未使用の磁気テープを順次選択して、選択した磁気テープをテープドライブ４１１，４１２のいずれかにマウントし、書き込み制御部２１１から受信したデータをマウントされた磁気テープに書き込んでいく。書き込み制御部２１１は、各論理ボリュームが書き込まれた磁気テープの識別番号や書き込み位置情報を、テープライブラリ装置４００から受信し、ＬＶ管理テーブル２３０における対応する論理ボリュームのレコードに登録する。
【０１００】
次に、制御装置２００が論理ボリュームグループ単位でのテープライブラリ装置４００の磁気テープからデータを読み出し、ディスクアレイ装置３００に格納する処理について説明する。
【０１０１】
書き込み制御部２１１による上記処理により、テープライブラリ装置４００の磁気テープに格納された論理ボリュームグループに対応するパリティが、ディスクアレイ装置３００に格納されている。この処理例１のように１種類のパリティが格納されている場合、論理ボリュームグループに属する論理ボリュームのうちの１つは、その他の論理ボリュームとパリティとから復元することができる。
【０１０２】
そこで、読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から論理ボリュームグループのデータ読み出し指示を受けると、指示された論理ボリュームグループに属する論理ボリュームのうち、１つを除く論理ボリュームを、テープライブラリ装置４００の磁気テープから読み出す。また、読み出し制御部２１２は、残り１つの論理ボリュームを、磁気テープから読み出さずに、読み出し済みの論理ボリュームのデータとディスクアレイ装置３００に格納されたパリティとを用いて、データ復元部２１３に復元させる。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０１０３】
さらに、データ復元部２１３による論理ボリュームの復元処理は、読み出し制御部２１２による他の１つの論理ボリュームの磁気テープからの読み出し処理と、並列に実行される。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間がさらに短縮される。
【０１０４】
ここではまず、図１０に示した論理ボリュームグループＬＶＧ０が、テープライブラリ装置４００からディスクアレイ装置３００に読み出される際の処理例について、図１３，図１４を用いて説明する。
【０１０５】
図１３，図１４は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。この処理例１では、読み出し制御部２１２は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。ここで、読み出し順が最後である論理ボリュームは、磁気テープから読み出されずに、データ復元部２１３によって復元されるものとなる。
【０１０６】
図１３，図１４の例では、論理ボリュームＬＶ０〜ＬＶ２のうち、論理ボリュームＬＶ１のサイズが最も小さく、論理ボリュームＬＶ２のサイズが最も大きい。このため、読み出し制御部２１２は、読み出し順を、論理ボリュームＬＶ１，ＬＶ０，ＬＶ２の順と決定し、まず、テープライブラリ装置４００内の磁気テープからの論理ボリュームＬＶ１の読み出しを開始する。図１３の状態１は、論理ボリュームＬＶ１におけるライン番号０，１の各ブロックの読み出しが完了し、ライン番号２のブロックが読み出し中である状態を示す。
【０１０７】
読み出し制御部２１２は、論理ボリュームＬＶ１の全ブロックの読み出しが完了すると、図１３の状態２に示すように、論理ボリュームＬＶ０の読み出しを開始する。また、読み出し制御部２１２は、読み出しを開始した論理ボリュームＬＶ０が、読み出し順が最後から２番目とされていたものであると判定すると、データ復元部２１３に対して、読み出し順が最後である論理ボリュームＬＶ２の復元処理の実行を指示する。
【０１０８】
データ復元部２１３は、初期間隔値Ｌｐを算出して、測定情報２５０の「初期間隔値１」の欄に登録する。この初期間隔値Ｌｐは、ライン数を表す１以上の整数である。データ復元部２１３は、論理ボリュームＬＶ０の読み出し処理が、初期間隔値Ｌｐが示すライン数分のブロックについて完了したとき、論理ボリュームＬＶ２の復元処理を開始する。例えば、初期間隔値Ｌｐがライン数「３」である場合、データ復元部２１３は、図１３の状態３に示すように、論理ボリュームＬＶ０におけるライン番号２のブロックの読み出しが完了して、ライン番号３のブロックの読み出しが開始されると、論理ボリュームＬＶ２の復元処理を開始する。
【０１０９】
初期間隔値Ｌｐは、次の式（１）に従って算出される。
Ｌｐ＝Ｖｒ（Ｌ２／Ｖｒ−Ｌｍａｘ／Ｖｐ）／Ｂｓ      ・・・（１）
ここで、Ｌｍａｘは、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち最大の論理ボリュームのサイズであり、このサイズは復元対象の論理ボリューム（図１４では論理ボリュームＬＶ２）のサイズに対応する。データ復元部２１３は、例えば、ＬＶＧ管理テーブル２４０内のＬＶＧ情報２４１の「ＬＶサイズ１」の欄からＬｍａｘを取得する。
【０１１０】
Ｌ２は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち２番目に大きい論理ボリュームのサイズであり、このサイズは読み出し中の論理ボリューム（図１４では論理ボリュームＬＶ０）のサイズに対応する。データ復元部２１３は、例えば、ＬＶＧ管理テーブル２４０内のＬＶＧ情報２４１の「ＬＶサイズ２」の欄からＬ２を取得する。
【０１１１】
Ｖｐは、データ復元部２１３によるデータ復元速度の計測値である。データ復元部２１３は、測定情報２５０の「復元処理速度１」の欄からＶｐを取得する。図１３の状態２のような初期段階では、「復元処理速度１」の欄には所定の初期値が登録されており、その後、「復元処理速度１」の欄の情報はデータ復元部２１３によって随時更新される。
【０１１２】
Ｖｒは、現在読み出し中の論理ボリュームについての、読み出し制御部２１２による読み出し速度の計測値である。データ復元部２１３は、測定情報２５０の「読み出し処理速度」の欄からＶｒを取得する。初期段階では、「読み出し処理速度」の欄には所定の初期値が登録されている。ここで言う初期段階とは、図１３における論理ボリュームＬＶ０の読み出しが完了する前までの段階であり、図１３の状態２も初期段階に対応する。その後、「読み出し処理速度」の欄の情報は読み出し制御部２１２によって随時更新される。
【０１１３】
Ｂｓは、１ブロック当たりのデータサイズである。
図１３の例を挙げて説明すると、式（１）におけるＬ２／Ｖｒは、論理ボリュームＬＶ０の読み出しに要する予想時間であり、Ｌｍａｘ／Ｖｐは、論理ボリュームＬＶ２の復元に要する予想時間である。論理ボリュームＬＶ０の磁気テープからの読み出し速度より、論理ボリュームＬＶ２の復元処理速度の方が高いことから、Ｌ２／ＶｒよりＬｍａｘ／Ｖｐの方が短くなる場合があり得る。そこで、データ復元部２１３は、論理ボリュームＬＶ２の復元開始タイミングを、Ｌ２／ＶｒとＬｍａｘ／Ｖｐとの差分に応じたライン数分だけ、論理ボリュームＬＶ０の読み出し開始タイミングから遅延させる。これにより、データ復元部２１３は、論理ボリュームＬＶ０の磁気テープからの読み出し終了タイミングと、論理ボリュームＬＶ２の復元終了タイミングとがほぼ同じになるように制御する。
【０１１４】
ただし、初期間隔値Ｌｐの値は１以上の整数であり、式（１）の計算では、小数点以下第１位の値を切り上げにするとともに、切り上げ後の値が１未満になる場合、計算結果は１に固定される。初期間隔値Ｌｐを１以上にする理由は、読み出し中の論理ボリュームのブロックのうち、復元対象のブロックと同一のライン番号のブロックの読み出しが完了するまでは、データ復元部２１３は復元対象のブロックの復元処理を開始できないからである。例えば図１３において、復元対象のブロックのライン番号を０とすると、データ復元部２１３は、論理ボリュームＬＶ０のブロックのうち、復元対象のブロックと同一のライン番号０のブロックの読み出しが完了するまでは、復元対象のブロックを復元できない。このため、データ復元部２１３は、復元対象のブロックのライン番号が、読み出し中のブロックのライン番号より１以上小さくなるように、復元開始タイミングを決定する。
【０１１５】
次に、論理ボリュームＬＶ２の復元処理が開始された後の処理について説明する。データ復元部２１３は、論理ボリュームＬＶ２のブロックを先頭ブロックから順に復元していく。データ復元部２１３は、論理ボリュームＬＶ２のあるブロックを復元対象としたとき、ディスクアレイ装置３００に格納されたパリティおよび他の読み出し済みの論理ボリュームのそれぞれにおける、復元対象ブロックと同一ライン番号のブロックを用いて、論理ボリュームＬＶ２の復元対象ブロックを復元する。
【０１１６】
例えば、図１３の状態３に示すように、データ復元部２１３は、パリティ、論理ボリュームＬＶ１および論理ボリュームＬＶ０のそれぞれにおけるライン番号０のブロックをディスクアレイ装置３００から読み出し、読み出した各ブロックを用いて、論理ボリュームＬＶ２におけるライン番号０のブロックを復元する。また、図１４の状態４に示すように、データ復元部２１３は、パリティ、論理ボリュームＬＶ１および論理ボリュームＬＶ０のそれぞれにおけるライン番号２のブロックをディスクアレイ装置３００から読み出し、読み出した各ブロックを用いて、論理ボリュームＬＶ２におけるライン番号２のブロックを復元する。
【０１１７】
なお、データ復元部２１３は、復元処理の実行の際、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、論理ボリュームＬＶ２のすべてのブロックを復元する。例えば、データ復元部２１３は、ライン番号１０を復元対象とした場合、パリティおよび論理ボリュームＬＶ０のそれぞれにおけるライン番号１０のブロックと、論理ボリュームＬＶ１に対応する１ブロック分のダミーデータとを用いて、論理ボリュームＬＶ２におけるライン番号１０のブロックを復元する。また、データ復元部２１３は、ライン番号１１を復元対象とした場合、パリティにおけるライン番号１１のブロックと、論理ボリュームＬＶ１に対応する１ブロック分のダミーデータと、論理ボリュームＬＶ０に対応する１ブロック分のダミーデータとを用いて、論理ボリュームＬＶ２におけるライン番号１１のブロックを復元する。
【０１１８】
データ復元部２１３は、論理ボリュームＬＶ２の復元処理を、読み出し制御部２１２による論理ボリュームＬＶ０の読み出し処理と並行して実行する。ここで、論理ボリュームＬＶ２における復元対象のブロックのライン番号が、論理ボリュームＬＶ０における読み出し対象ブロックのライン番号と一致してしまうことがあり得る。この場合、データ復元部２１３は、論理ボリュームＬＶ０のブロックのうち、復元対象のブロックと同一のライン番号のブロックの読み出しが完了するまでは、復元対象のブロックの復元処理を実行できなくなる。このようなケースとしては、例えば、上記の式（１）において代入したＶｐ，Ｖｒの誤差が大きい場合や、論理ボリュームＬＶ０の読み出し中に一時的なエラーが発生して、読み出しのリトライが行われた場合などがある。
【０１１９】
上記のように、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが一致してしまう事態が発生しないようにするために、データ復元部２１３は、論理ボリュームＬＶ２における１ブロックの復元が完了したとき、論理ボリュームＬＶ０における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、１以上の整数として設定される。
【０１２０】
図１４の状態５では、データ復元部２１３が論理ボリュームＬＶ２におけるライン番号２のブロックの復元を完了したとき、読み出し制御部２１２は、論理ボリュームＬＶ０におけるライン番号４のブロックの読み出し処理を実行中である。ここで、差分設定値を２とすると、データ復元部２１３は、読み出し中のブロックのライン番号４と、復元が完了したブロックのライン番号２との差分が差分設定値「２」以下であると判定して、論理ボリュームＬＶ２の復元処理を一旦停止する。このとき、読み出し制御部２１２による論理ボリュームＬＶ０の読み出し処理は、それ以前と変わらずに継続される。
【０１２１】
復元処理を停止したデータ復元部２１３は、式（１）に従って初期間隔値Ｌｐを再計算する。この再計算では、データ復元部２１３は、式（１）のパラメータのうち、Ｌｍａｘに対して、論理ボリュームＬＶ２のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部２１３は、Ｌ２に対して、論理ボリュームＬＶ０のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部２１３は、Ｖｐ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度１」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
【０１２２】
データ復元部２１３は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Ｌｐ以上になったとき、論理ボリュームＬＶ２の復元処理を再開する。このように復元処理を再開するタイミングを調整することで、データ復元部２１３は、論理ボリュームＬＶ０の磁気テープからの読み出し終了タイミングと、論理ボリュームＬＶ２の復元終了タイミングとがほぼ同じになるように制御する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
【０１２３】
図１４の状態５では、データ復元部２１３は、復元対象のブロックのライン番号が「３」の状態のまま、復元処理を停止する。ここで、初期間隔値Ｌｐが「３」と算出されたものとすると、状態６に示すように、データ復元部２１３は、論理ボリュームＬＶ０における読み出し中のブロックのライン番号が「６」になったとき、論理ボリュームＬＶ２の復元処理を再開する。
【０１２４】
以上の処理により、読み出し順が最後とされた論理ボリュームＬＶ２は、テープライブラリ装置４００の磁気テープから読み出されずに、データ復元部２１３による計算によって復元されて、ディスクアレイ装置３００に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置３００に格納するまでに要する時間が短縮される。
【０１２５】
ところで、上記の図１３，図１４に示した処理では、読み出し制御部２１２は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順にテープライブラリ装置４００から読み出した。ここで、少なくとも、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームが最後になるように読み出し順が決定されることで、パリティを基に論理ボリュームが計算によって復元されるデータ量が最も大きくなる。このことは、磁気テープからの読み出し速度より高速である、パリティに基づく復元処理の実行時間が、最も長くなることを意味する。従って、ディスクアレイ装置３００へのデータ格納に要する時間の短縮効果が大きくなる。これとともに、パリティを基に論理ボリュームが復元される処理と、他の１つの論理ボリュームがテープライブラリ装置４００から読み出される処理とが、並列に実行される期間が長くなる。この点でも、ディスクアレイ装置３００へのデータ格納に要する時間の短縮効果が大きくなる。
【０１２６】
また、例えば、テープドライブへの磁気テープのマウントに要する時間などを含めない、磁気テープからの純粋なデータ読み出しに要する時間のみを考慮した場合には、テープライブラリ装置４００からの論理ボリュームの読み出し順をサイズが小さい順とすることで、パリティを基に論理ボリュームが復元される処理と、他の１つの論理ボリュームがテープライブラリ装置４００から読み出される処理とが、並列に実行される期間が最も長くなる。
【０１２７】
なお、データ復元部２１３によって復元する論理ボリュームは、読み出し順が１つ前の論理ボリュームとは異なる磁気テープに格納されていることが望ましい。これにより、読み出し順が最後の論理ボリュームが格納された磁気テープをテープドライブにマウントする時間が不要になる分だけ、ディスクアレイ装置３００へのデータ格納に要する時間が短縮される。
【０１２８】
次に、読み出し制御部２１２およびデータ復元部２１３の処理手順の例を、フローチャートを用いて説明する。
図１５は、処理例１における読み出し制御部の処理手順を示すフローチャートである。
【０１２９】
［ステップＳ２１］読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から、読み出し処理の実行指示およびＬＶＧ番号の指定を受け付ける。
［ステップＳ２２］読み出し制御部２１２は、ＬＶＧ管理テーブル２４０を参照して、指定されたＬＶＧ番号に対応する論理ボリュームグループに属する論理ボリュームを、読み出し対象として特定する。
【０１３０】
［ステップＳ２３］読み出し制御部２１２は、ＬＶ管理テーブル２３０から、特定した各論理ボリュームのサイズを読み出し、特定した論理ボリュームの読み出し順を、サイズが小さい順になるように決定する。
【０１３１】
［ステップＳ２４］読み出し制御部２１２は、読み出し未完了の論理ボリュームのうち、読み出し順が最も前の論理ボリュームを選択し、選択した論理ボリュームのデータを、テープライブラリ装置４００の磁気テープから読み出す。読み出し制御部２１２は、読み出した論理ボリュームのデータをディスクアレイ装置３００に格納する。
【０１３２】
［ステップＳ２５］読み出し制御部２１２は、読み出しが未完了である残りの論理ボリューム数が２であるかを判定する。読み出し制御部２１２は、残りの論理ボリューム数が３以上である場合、ステップＳ２４に戻って、次の論理ボリュームの読み出し処理を実行する。一方、読み出し制御部２１２は、残りの論理ボリューム数が２である場合、ステップＳ２６の処理を実行する。
【０１３３】
［ステップＳ２６］読み出し制御部２１２は、読み出し対象の論理ボリュームグループのＬＶＧ番号に対応する測定情報２５０を、ＲＡＭ２０２に生成する。読み出し制御部２１２は、測定情報２５０の「読み出し中ライン番号」の欄に先頭のライン番号を登録し、「読み出し処理速度」の欄に所定の初期値を登録する。
【０１３４】
［ステップＳ２７］読み出し制御部２１２は、データ復元部２１３に対して、読み出し処理対象の論理ボリュームグループのＬＶＧ番号と、読み出し順が最後である論理ボリュームのＬＶ番号とを通知し、通知したＬＶ番号に対応する論理ボリュームグループの復元処理の実行を指示する。これにより、読み出し制御部２１２によるステップＳ２８以降の処理と、後の図１６に示すデータ復元部２１３の処理とが、並列に実行される。
【０１３５】
［ステップＳ２８］読み出し制御部２１２は、読み出し対象の論理ボリュームのブロックのうち、読み出し未完了のブロックを選択し、選択したブロックのデータをテープライブラリ装置４００内の磁気テープから読み出す。読み出し制御部２１２は、読み出したブロックのデータをディスクアレイ装置３００に格納する。
【０１３６】
［ステップＳ２９］読み出し制御部２１２は、読み出し対象の論理ボリュームに含まれる全ブロックの読み出しが完了したかを判定する。読み出し制御部２１２は、読み出しが完了していない場合、ステップＳ３０の処理を実行する。一方、読み出し制御部２１２は、読み出しが完了した場合、処理を終了する。
【０１３７】
［ステップＳ３０］読み出し制御部２１２は、読み出し対象の論理ボリュームの先頭ブロックから現在までの読み出し処理速度を計算する。読み出し制御部２１２は、算出した読み出し処理速度によって、測定情報２５０の「読み出し処理速度」の欄の情報を更新する。
【０１３８】
なお、このステップＳ３０において、読み出し制御部２１２は、例えば、「読み出し処理速度」の欄に登録する情報として、論理ボリュームグループにおける先頭の論理ボリュームを開始してから、現在までの読み出し速度を算出してもよい。この場合、読み出し制御部２１２は、ステップＳ２６の時点でも、「読み出し処理速度」の欄に、所定の初期値ではなく読み出し速度の算出値を登録する。
【０１３９】
［ステップＳ３１］読み出し制御部２１２は、測定情報２５０の「読み出し中ライン番号」の欄のライン番号を、１だけインクリメントする。この後、読み出し制御部２１２は、ステップＳ２８に戻って、次のブロックの読み出しを実行する。
【０１４０】
図１６は、処理例１におけるデータ復元部の処理手順を示すフローチャートである。データ復元部２１３は、図１５のステップＳ２７において読み出し制御部２１２から復元処理の実行指示を受けると、図１６の処理を、読み出し制御部２１２による読み出し処理と並列に実行する。
【０１４１】
［ステップＳ４１］データ復元部２１３は、読み出し制御部２１２から通知されたＬＶＧ番号に対応する測定情報２５０に、次のような情報を登録する。データ復元部２１３は、「復元中ライン番号１」の欄に先頭のライン番号を登録し、「復元処理速度１」の欄に所定の初期値を登録する。
【０１４２】
［ステップＳ４２］データ復元部２１３は、前述した式（１）に従って初期間隔値Ｌｐを算出し、測定情報２５０の「初期間隔値１」の欄に登録する。このとき、データ復元部２１３は、測定情報２５０の「読み出し処理速度」の欄に登録された実測値を式（１）のＶｒに代入し、「復元処理速度１」に登録された初期値を式（１）のＶｐに代入する。
【０１４３】
［ステップＳ４３］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、ステップＳ４２で算出した初期間隔値Ｌｐ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐ以上になるまで待機状態となり、差分が初期間隔値Ｌｐ以上になったとき、ステップＳ４４の処理を実行する。
【０１４４】
［ステップＳ４４］データ復元部２１３は、復元対象の論理ボリュームのブロックのうち、復元未完了のブロックを選択する。データ復元部２１３は、選択したブロックと同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティのブロックを、ディスクアレイ装置３００から読み出す。なお、データ復元部２１３は、ＬＶＧ管理テーブル２４０を参照し、復元対象のライン番号に対応するライン管理情報２４２から、パリティの読み出し位置を特定する。データ復元部２１３は、読み出した各ブロックのデータを用いて、選択した復元未完了のブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置３００に格納する。
【０１４５】
［ステップＳ４５］データ復元部２１３は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部２１３は、論理ボリューム全体の復元が完了した場合、処理を終了する。一方、データ復元部２１３は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップＳ４６の処理を実行する。
【０１４６】
［ステップＳ４６］データ復元部２１３は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部２１３は、算出した復元処理速度によって、測定情報２５０の「復元処理速度１」の欄の情報を更新する。
【０１４７】
［ステップＳ４７］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」の欄のライン番号を、１だけインクリメントする。
［ステップＳ４８］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部２１３は、ライン番号同士の差分が差分設定値より大きい場合、ステップＳ４４に進んで、次のブロックの復元処理を実行する。一方、データ復元部２１３は、ライン番号同士の差分が差分設定値以下である場合、ステップＳ４９の処理を実行する。
【０１４８】
なお、ステップＳ４８では、データ復元部２１３は、読み出し制御部２１２による、読み出し順が１つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップＳ４４の処理を実行する。
【０１４９】
［ステップＳ４９］データ復元部２１３は、復元処理を一時的に停止する。
［ステップＳ５０］データ復元部２１３は、式（１）に従って初期間隔値Ｌｐを再計算し、算出した値によって、測定情報２５０の「初期間隔値１」の欄を更新する。この再計算を行う際、データ復元部２１３は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式（１）のＬｍａｘに代入する。また、データ復元部２１３は、読み出し順が最後から２番目の論理ボリューム（すなわち、読み出し制御部２１２によって読み出し中の論理ボリューム）のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式（１）のＬ２に代入する。なお、データ復元部２１３は、読み出しが完了していないブロックの先頭ライン番号を、測定情報２５０の「読み出し中ライン番号」の欄から読み出すことで、読み出しが完了していないブロックを認識することができる。さらに、データ復元部２１３は、Ｖｐ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度１」、「読み出し処理速度」の欄に登録された値を代入する。
【０１５０】
ステップＳ５０が実行されるケースでは、前回初期間隔値Ｌｐが算出されたときと比較して、Ｖｐが高くなっているか、あるいはＶｒが低くなっているか、あるいはその両方になっている。このため、算出される初期間隔値Ｌｐは、小数点以下第１位の値を切り上げた状態で１より大きくなる。
【０１５１】
［ステップＳ５１］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、ステップＳ５０で算出した初期間隔値Ｌｐ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐ以上になるまで待機状態となり、差分が初期間隔値Ｌｐ以上になったとき、ステップＳ４４の処理を実行する。
【０１５２】
＜処理例２＞
図１７は、処理例２におけるパリティ算出処理を説明するための図である。
処理例２において、書き込み制御部２１１は、テープライブラリ装置４００の磁気テープに対して論理ボリュームグループ単位でデータを書き込む際に、処理例１の場合と同様に、論理ボリュームのサイズを均等化する。図１７の例では、書き込み制御部２１１は例えば、論理ボリュームＬＶ０，ＬＶ１のそれぞれに対してダミーデータを付加することで、論理ボリュームＬＶ０〜ＬＶ２のサイズを均等化する。
【０１５３】
サイズの均等化処理を実行した後、書き込み制御部２１１は、論理ボリュームＬＶ０〜ＬＶ２のそれぞれを先頭から一定サイズごとに分割したブロックごとに、パリティを算出する。処理例２では、書き込み制御部２１１は、図１７の下段に示すように、２種類のパリティ（パリティＰ，Ｑ）を算出する。書き込み制御部２１１は、算出したパリティＰ，Ｑを、ディスクアレイ装置３００におけるフローティング領域に属する所定の論理ボリュームに格納する。
【０１５４】
書き込み制御部２１１による、論理ボリュームグループ単位でのデータ書き込み処理手順は、次の点以外は、図１２の処理と同様である。書き込み制御部２１１は、図１２のステップＳ１５において、パリティＰ，Ｑを算出して、ディスクアレイ装置３００に格納する。このとき、書き込み制御部２１１は、ＬＶＧ管理テーブル２４０内の各ライン管理情報２４２に対して、パリティＰ，Ｑのそれぞれに対応するパリティ管理情報２４３を登録する。
【０１５５】
次に、制御装置２００が論理ボリュームグループ単位でのテープライブラリ装置４００の磁気テープからデータを読み出し、ディスクアレイ装置３００に格納する処理について説明する。
【０１５６】
書き込み制御部２１１による上記処理により、ディスクアレイ装置３００に対して２種類のパリティが格納されている場合、データ復元部２１３は、論理ボリュームグループに属する論理ボリュームのうちの２つを、その他の論理ボリュームとパリティＰ，Ｑとから復元することができる。
【０１５７】
そこで、読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から論理ボリュームグループのデータ読み出し指示を受けると、指示された論理ボリュームグループに属する論理ボリュームのうち、２つを除く論理ボリュームを、テープライブラリ装置４００の磁気テープから読み出す。また、読み出し制御部２１２は、残り２つの論理ボリュームを、磁気テープから読み出さずに、読み出し済みの論理ボリュームのデータとディスクアレイ装置３００に格納されたパリティＰ，Ｑとを用いて、データ復元部２１３に復元させる。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０１５８】
また、データ復元部２１３は、残り２つの論理ボリュームを同時に復元する。さらに、データ復元部２１３による論理ボリュームの復元処理は、読み出し制御部２１２による他の１つの論理ボリュームの磁気テープからの読み出し処理と並列に実行される。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間がさらに短縮される。
【０１５９】
ここではまず、図１７に示した論理ボリュームグループＬＶＧ０が、テープライブラリ装置４００からディスクアレイ装置３００に読み出される際の処理例について、図１８〜図２０を用いて説明する。
【０１６０】
図１８〜図２０は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。読み出し制御部２１２は、少なくとも、読み出し順を最後の２つとする論理ボリュームを、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームと２番目にサイズが大きい論理ボリュームにする。これにより、計算によって復元されるデータ量が大きくなるとともに、復元処理と他の１つの論理ボリュームの磁気テープからの読み出し処理とを並列に実行できる時間が長くなる。このため、論理ボリュームグループ内の全データがディスクアレイ装置３００に格納されるまでの時間を短縮することができる。
【０１６１】
本実施の形態では例として、読み出し制御部２１２は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。図１８〜図２０の例では、読み出し制御部２１２は、読み出し順を論理ボリュームＬＶ１，ＬＶ０，ＬＶ２の順と決定し、まず、図１８の状態１１に示すように、テープライブラリ装置４００内の磁気テープからの論理ボリュームＬＶ１の読み出しを開始する。また、読み出し制御部２１２は、読み出しを開始した論理ボリュームＬＶ１が、読み出し順が最後から３番目とされていたものであると判定すると、データ復元部２１３に対して、読み出し順が最後および最後から２番目の論理ボリュームＬＶ０，ＬＶ２の復元処理の実行を指示する。
【０１６２】
データ復元部２１３は、初期間隔値Ｌｐｑを算出して、測定情報２５０の「初期間隔値１」の欄に登録する。データ復元部２１３は、論理ボリュームＬＶ１の読み出し処理が、初期間隔値Ｌｐｑが示すライン数分のブロックについて完了したとき、論理ボリュームＬＶ０，ＬＶ２の復元処理を開始する。例えば、初期間隔値Ｌｐｑがライン数「３」である場合、データ復元部２１３は、図１８の状態１２に示すように、論理ボリュームＬＶ１におけるライン番号２のブロックの読み出しが完了して、ライン番号３のブロックの読み出しが開始されると、論理ボリュームＬＶ０，ＬＶ２の復元処理を開始する。
【０１６３】
処理例２では、初期間隔値Ｌｐｑは次の式（２）に従って算出される。ただし、初期間隔値Ｌｐｑの値は１以上の整数であり、式（２）の計算では、小数点以下第１位の値を切り上げにするとともに、切り上げ後の値が１未満になる場合、計算結果は１に固定される。
Ｌｐｑ＝Ｖｒ（Ｌ３／Ｖｒ−Ｌｍａｘ／Ｖｐｑ）／Ｂｓ      ・・・（２）
式（２）において、Ｌ３は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち３番目に大きい論理ボリュームのサイズであり、このサイズは読み出し中の論理ボリューム（図１８では論理ボリュームＬＶ１）のサイズに対応する。データ復元部２１３は、例えば、ＬＶＧ管理テーブル２４０内のＬＶＧ情報２４１の「ＬＶサイズ３」の欄からＬ３を取得する。
【０１６４】
また、Ｖｐｑは、データ復元部２１３によるパリティＰ，Ｑを用いたデータ復元速度の計測値である。データ復元部２１３は、測定情報２５０の「復元処理速度１」の欄からＶｐｑを取得する。初期段階では、「復元処理速度１」の欄には所定の初期値が登録されており、その後、「復元処理速度１」の欄の情報はデータ復元部２１３によって随時更新される。
【０１６５】
図１８の例を挙げて説明すると、式（２）におけるＬ３／Ｖｒは、論理ボリュームＬＶ１の読み出しに要する予想時間であり、Ｌｍａｘ／Ｖｐｑは、最大サイズの論理ボリュームＬＶ２の復元に要する予想時間である。データ復元部２１３は、論理ボリュームＬＶ０，ＬＶ２の復元開始タイミングを、Ｌ３／ＶｒとＬｍａｘ／Ｖｐｑとの差分に応じたライン数分だけ、論理ボリュームＬＶ１の読み出し開始タイミングから遅延させる。
【０１６６】
次に、論理ボリュームＬＶ０，ＬＶ２の復元処理が開始された後の処理について説明する。データ復元部２１３は、論理ボリュームＬＶ０，ＬＶ２の同一ライン番号のブロックを、先頭から順に復元していく。例えば、図１９の状態１３に示すように、データ復元部２１３は、パリティＰ、パリティＱ、論理ボリュームＬＶ１のそれぞれにおけるライン番号２のブロックをディスクアレイ装置３００から読み出し、読み出した各ブロックを用いて、論理ボリュームＬＶ０，ＬＶ２のそれぞれにおけるライン番号２のブロックを復元する。
【０１６７】
なお、データ復元部２１３は、処理例１の場合と同様に、復元処理の実行の際、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、論理ボリュームＬＶ０，ＬＶ２のそれぞれにおけるすべてのブロックを復元する。
【０１６８】
データ復元部２１３は、論理ボリュームＬＶ０，ＬＶ２の復元処理を、読み出し制御部２１２による論理ボリュームＬＶ１の読み出し処理と並行して実行する。ここで、論理ボリュームＬＶ０，ＬＶ２における復元対象のブロックのライン番号が、論理ボリュームＬＶ１における読み出し対象ブロックのライン番号と一致してしまうことがあり得る。このような事態が発生しないようにするために、データ復元部２１３は、論理ボリュームＬＶ０，ＬＶ２の両方についての１ブロックの復元が完了したとき、論理ボリュームＬＶ１における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、１以上の整数として設定される。
【０１６９】
図１９の状態１４では、データ復元部２１３が論理ボリュームＬＶ０，ＬＶ２におけるライン番号２のブロックの復元が完了したとき、読み出し制御部２１２は、論理ボリュームＬＶ１におけるライン番号４のブロックの読み出し処理を実行中である。ここで、差分設定値を２とすると、データ復元部２１３は、読み出し中のブロックのライン番号４と、復元が完了したブロックのライン番号２との差分が差分設定値「２」以下であると判定して、論理ボリュームＬＶ０，ＬＶ２の復元処理を一旦停止する。このとき、読み出し制御部２１２による論理ボリュームＬＶ１の読み出し処理は、それ以前と変わらずに継続される。
【０１７０】
復元処理を停止したデータ復元部２１３は、式（２）に従って初期間隔値Ｌｐｑを再計算する。この再計算では、データ復元部２１３は、式（２）のパラメータのうち、Ｌｍａｘに対して、論理ボリュームＬＶ２のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部２１３は、Ｌ３に対して、論理ボリュームＬＶ１のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部２１３は、Ｖｐｑ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度１」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
【０１７１】
データ復元部２１３は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Ｌｐｑ以上になったとき、論理ボリュームＬＶ０，ＬＶ２の復元処理を再開する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
【０１７２】
初期間隔値Ｌｐｑが「３」と算出されたものとすると、図２０の状態１５に示すように、データ復元部２１３は、論理ボリュームＬＶ１における読み出し中のブロックのライン番号が「６」になったとき、論理ボリュームＬＶ０，ＬＶ２の復元処理を再開する。
【０１７３】
以上の処理により、論理ボリュームＬＶ０，ＬＶ２は、テープライブラリ装置４００の磁気テープから読み出されずに、データ復元部２１３による計算によって復元されて、ディスクアレイ装置３００に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置３００に格納するまでに要する時間が短縮される。
【０１７４】
次に、読み出し制御部２１２およびデータ復元部２１３の処理手順の例を、フローチャートを用いて説明する。
図２１は、処理例２における読み出し制御部の処理手順を示すフローチャートである。なお、図２１のフローチャートは、図１５に示したフローチャートにおけるステップＳ２５，Ｓ２７の処理を、それぞれステップＳ２５ａ，Ｓ２７ａに変更したものである。そこで、ここでは図１５とは異なる処理ステップについてのみ説明し、その他の処理ステップについては説明を省略する。
【０１７５】
［ステップＳ２５ａ］読み出し制御部２１２は、読み出しが未完了である残りの論理ボリューム数が３であるかを判定する。読み出し制御部２１２は、残りの論理ボリューム数が４以上である場合、ステップＳ２４に戻って、次の論理ボリュームの読み出し処理を実行する。一方、読み出し制御部２１２は、残りの論理ボリューム数が３である場合、ステップＳ２６の処理を実行する。
【０１７６】
［ステップＳ２７ａ］読み出し制御部２１２は、データ復元部２１３に対して、読み出し処理対象の論理ボリュームグループのＬＶＧ番号と、読み出し順が最後および最後から２番目の各論理ボリュームのＬＶ番号を通知し、通知したＬＶ番号に対応する論理ボリュームグループの復元処理の実行を指示する。これにより、読み出し制御部２１２によるステップＳ２８以降の処理と、次の図２２に示すデータ復元部２１３の処理とが、並列に実行される。
【０１７７】
なお、図２１におけるステップＳ２８〜Ｓ３１では、図１５の場合とは異なり、読み出し制御部２１２は、読み出し順が最後から３番目とされていた論理ボリュームの読み出し処理を実行する。
【０１７８】
図２２は、処理例２におけるデータ復元部の処理手順を示すフローチャートである。なお、図２２では、図１６と同じ処理が実行される処理ステップには図１６と同じステップ番号を付して示している。
【０１７９】
データ復元部２１３は、図２１のステップＳ２７ａにおいて読み出し制御部２１２から復元処理の実行指示を受けると、図２２の処理を、読み出し制御部２１２による読み出し処理と並列に実行する。
【０１８０】
［ステップＳ４１］データ復元部２１３は、読み出し制御部２１２から通知されたＬＶＧ番号に対応する測定情報２５０において、「復元中ライン番号１」の欄に先頭のライン番号を登録し、「復元処理速度１」の欄に所定の初期値を登録する。
【０１８１】
［ステップＳ４２ａ］データ復元部２１３は、前述した式（２）に従って初期間隔値Ｌｐｑを算出し、測定情報２５０の「初期間隔値１」の欄に登録する。このとき、データ復元部２１３は、測定情報２５０の「読み出し処理速度」の欄に登録された実測値を式（２）のＶｒに代入し、「復元処理速度１」に登録された初期値を式（２）のＶｐｑに代入する。
【０１８２】
［ステップＳ４３ａ］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、ステップＳ４２ａで算出した初期間隔値Ｌｐｑ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐｑ以上になるまで待機状態となり、差分が初期間隔値Ｌｐｑ以上になったとき、ステップＳ４４ａの処理を実行する。
【０１８３】
［ステップＳ４４ａ］データ復元部２１３は、読み出し制御部２１２から通知された復元対象の２つの論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部２１３は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティＰ，Ｑのブロックを、ディスクアレイ装置３００から読み出す。データ復元部２１３は、読み出した各ブロックのデータを用いて、復元対象の２つの論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置３００に格納する。
【０１８４】
ただし、復元対象の２つの論理ボリュームのサイズが異なる場合、読み出し順が最後の論理ボリューム全体の復元が完了する前に、読み出し順が最後から２番目の論理ボリューム全体の復元が完了する。ステップＳ４４ａにおいて、読み出し順が最後から２番目の論理ボリューム全体の復元が完了している場合には、データ復元部２１３は、読み出し順が最後の論理ボリュームのブロックについてのみ、復元処理を行う。
【０１８５】
［ステップＳ４５ａ］データ復元部２１３は、復元対象の２つの論理ボリューム全体の復元が完了したかを判定する。データ復元部２１３は、２つの論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部２１３は、２つの論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップＳ４６ａの処理を実行する。
【０１８６】
［ステップＳ４６ａ］データ復元部２１３は、復元対象の２つの論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部２１３は、算出した復元処理速度によって、測定情報２５０の「復元処理速度１」の欄の情報を更新する。
【０１８７】
［ステップＳ４７］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」の欄のライン番号を、１だけインクリメントする。
［ステップＳ４８］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部２１３は、ライン番号同士の差分が差分設定値より大きい場合、ステップＳ４４ａに進んで、次のブロックの復元処理を実行する。一方、データ復元部２１３は、ライン番号同士の差分が差分設定値以下である場合、ステップＳ４９ａの処理を実行する。
【０１８８】
なお、ステップＳ４８では、データ復元部２１３は、読み出し制御部２１２による、読み出し順が１つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップＳ４４ａの処理を実行する。
【０１８９】
［ステップＳ４９ａ］データ復元部２１３は、復元対象の２つの論理ボリュームの復元処理を一時的に停止する。
［ステップＳ５０ａ］データ復元部２１３は、式（２）に従って初期間隔値Ｌｐｑを再計算し、算出した値によって、測定情報２５０の「初期間隔値１」の欄を更新する。この再計算を行う際、データ復元部２１３は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式（２）のＬｍａｘに代入する。また、データ復元部２１３は、読み出し順が最後から３番目の論理ボリューム（すなわち、読み出し制御部２１２によって読み出し中の論理ボリューム）のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式（２）のＬ３に代入する。さらに、データ復元部２１３は、Ｖｐｑ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度１」、「読み出し処理速度」の欄に登録された値を代入する。
【０１９０】
［ステップＳ５１］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号との差分が、ステップＳ５０ａで算出した初期間隔値Ｌｐｑ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐｑ以上になるまで待機状態となり、差分が初期間隔値Ｌｐｑ以上になったとき、ステップＳ４４ａの処理を実行する。
【０１９１】
＜処理例３＞
以下の処理例３は、処理例２における論理ボリュームグループ単位でのテープライブラリ装置４００からのデータ読み出し処理を、次のように変形したものである。
【０１９２】
上記の処理例２では、データ復元部２１３は、論理ボリュームグループに属する論理ボリュームのうち、読み出し順が最後の論理ボリュームと最後から２番目の論理ボリュームの両方を、２種類のパリティＰ，Ｑを用いて復元した。これに対して、以下の処理例３では、データ復元部２１３は、読み出し順が最後から２番目の論理ボリュームを、読み出し済みのデータと２種類のパリティＰ，Ｑとを用いて復元する。また、読み出し順が最後の論理ボリュームを、読み出し済みのデータと、読み出し順が最後から２番目の論理ボリュームのうち復元済みのデータと、パリティＰまたはパリティＱのいずれかとを用いて復元する。さらに、データ復元部２１３は、読み出し順が最後から２番目の論理ボリュームの復元処理と、読み出し順が最後の論理ボリュームの復元処理とを並列に実行する。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０１９３】
ここではまず、図１７に示した論理ボリュームグループＬＶＧ０が、テープライブラリ装置４００からディスクアレイ装置３００に読み出される際の処理例について、図２３〜図２５を用いて説明する。
【０１９４】
図２３〜図２５は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部２１２は、ＬＶＧ読み出し制御部２２２から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。読み出し制御部２１２は、少なくとも、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームの読み出し順を最後に、２番目に大きい論理ボリュームの読み出し順を最後から２番目にする。これにより、計算によって復元されるデータ量が大きくなる。また、１つの論理ボリュームの復元処理と他の１つの論理ボリュームの磁気テープからの読み出し処理とを並列に実行できる時間、および、２つの論理ボリュームの復元処理を並列に実行できる時間を、ともに長くすることができる。このため、論理ボリュームグループ内の全データがディスクアレイ装置３００に格納されるまでの時間を短縮することができる。
【０１９５】
本実施の形態では例として、読み出し制御部２１２は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。図２３〜図２５の例では、読み出し制御部２１２は、読み出し順を、論理ボリュームＬＶ１，ＬＶ０，ＬＶ２の順と決定し、まず、図２３の状態２１に示すように、テープライブラリ装置４００内の磁気テープからの論理ボリュームＬＶ１の読み出しを開始する。また、読み出し制御部２１２は、読み出しを開始した論理ボリュームＬＶ１が、読み出し順が最後から３番目とされていたものであると判定すると、データ復元部２１３に対して、読み出し順が最後および最後から２番目の論理ボリュームＬＶ０，ＬＶ２の復元処理の実行を指示する。
【０１９６】
データ復元部２１３は、読み出し順が最後から２番目の論理ボリュームＬＶ０を、次のような手順で復元する。
データ復元部２１３は、初期間隔値Ｌｐｑを算出して、測定情報２５０の「初期間隔値１」の欄に登録する。データ復元部２１３は、論理ボリュームＬＶ１の読み出し処理が、初期間隔値Ｌｐｑが示すライン数分のブロックについて完了したとき、読み出し順が最後から２番目である論理ボリュームＬＶ０の復元処理を開始する。例えば、初期間隔値Ｌｐｑがライン数「３」である場合、データ復元部２１３は、図２３の状態２２に示すように、論理ボリュームＬＶ１におけるライン番号２のブロックの読み出しが完了して、ライン番号３のブロックの読み出しが開始されると、論理ボリュームＬＶ０の復元処理を開始する。
【０１９７】
初期間隔値Ｌｐｑは次の式（３）に従って算出される。ただし、初期間隔値Ｌｐｑの値は１以上の整数であり、式（３）の計算では、小数点以下第１位の値を切り上げにするとともに、切り上げ後の値が１未満になる場合、計算結果は１に固定される。
Ｌｐｑ＝Ｖｒ（Ｌ３／Ｖｒ−Ｌ２／Ｖｐｑ）／Ｂｓ      ・・・（３）
式（３）において、Ｌ２は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち２番目に大きい論理ボリュームのサイズであり、このサイズはパリティＰ，Ｑを用いて復元する論理ボリューム（図２３では論理ボリュームＬＶ０）のサイズに対応する。データ復元部２１３は、例えば、ＬＶＧ管理テーブル２４０内のＬＶＧ情報２４１の「ＬＶサイズ２」の欄からＬ２を取得する。
【０１９８】
データ復元部２１３は式（３）に基づき、論理ボリュームＬＶ０の復元開始タイミングを、論理ボリュームＬＶ２の読み出しに要する予想時間を示すＬ３／Ｖｒと、論理ボリュームＬＶ０の復元に要する予想時間を示すＬ２／Ｖｐｑとの差分に応じたライン数分だけ、論理ボリュームＬＶ１の読み出し開始タイミングから遅延させる。
【０１９９】
データ復元部２１３は、論理ボリュームＬＶ０のブロックを先頭ブロックから順に復元していく。例えば、図２３の状態２２に示すように、データ復元部２１３は、パリティＰ、パリティＱおよび論理ボリュームＬＶ１のそれぞれにおけるライン番号３のブロックをディスクアレイ装置３００から読み出し、読み出した各ブロックを用いて、論理ボリュームＬＶ０におけるライン番号３のブロックを復元する。
【０２００】
データ復元部２１３は、論理ボリュームＬＶ０の復元処理を、読み出し制御部２１２による論理ボリュームＬＶ１の読み出し処理と並行して実行する。なお、データ復元部２１３は、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、読み出し順が最後から２番目の論理ボリュームＬＶ０のすべてのブロックを復元する。
【０２０１】
また、データ復元部２１３は、論理ボリュームＬＶ０における１ブロックの復元が完了したとき、論理ボリュームＬＶ１における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、１以上の整数として設定される。
【０２０２】
復元処理を停止したデータ復元部２１３は、式（３）に従って初期間隔値Ｌｐｑを再計算する。この再計算では、データ復元部２１３は、式（３）のパラメータのうち、Ｌ２に対して、論理ボリュームＬＶ０のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部２１３は、Ｌ３に対して、論理ボリュームＬＶ１のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部２１３は、Ｖｐｑ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度２」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
【０２０３】
データ復元部２１３は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Ｌｐｑ以上になったとき、論理ボリュームＬＶ０の復元処理を再開する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
【０２０４】
一方、データ復元部２１３は、読み出し順が最後の論理ボリュームＬＶ２を、次のような手順で復元する。なお、以下の説明では、データ復元部２１３は、読み出し順が最後の論理ボリュームを、例としてパリティＰを用いて復元するものとする。
【０２０５】
データ復元部２１３は、初期間隔値Ｌｐを算出して、測定情報２５０の「初期間隔値２」の欄に登録する。データ復元部２１３は、論理ボリュームＬＶ０の復元処理が、初期間隔値Ｌｐが示すライン数分のブロックについて完了したとき、読み出し順が最後の論理ボリュームＬＶ２の復元処理を開始する。例えば、初期間隔値Ｌｐがライン数「３」である場合、データ復元部２１３は、図２４の状態２３に示すように、論理ボリュームＬＶ０におけるライン番号２のブロックの復元が完了して、ライン番号３のブロックの復元を開始すると、論理ボリュームＬＶ２の復元処理を開始する。
【０２０６】
初期間隔値Ｌｐは、次の式（４）に従って算出される。ただし、初期間隔値Ｌｐの値は１以上の整数であり、式（４）の計算では、小数点以下第１位の値を切り上げにするとともに、切り上げ後の値が１未満になる場合、計算結果は１に固定される。
Ｌｐ＝Ｖｐｑ（Ｌ２／Ｖｐｑ−Ｌｍａｘ／Ｖｐ）／Ｂｓ      ・・・（４）
また、データ復元部２１３は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち２番目に大きい論理ボリューム（図２４では論理ボリュームＬＶ０）についての、復元速度の実測値を、Ｖｐｑに代入する。さらに、データ復元部２１３は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリューム（図２４では論理ボリュームＬＶ２）の復元速度の初期値を、Ｖｐに代入する。
【０２０７】
データ復元部２１３は式（４）に基づき、論理ボリュームＬＶ２の復元開始タイミングを、論理ボリュームＬＶ０の復元に要する予想時間を示すＬ２／Ｖｐｑと、論理ボリュームＬＶ２の復元に要する予想時間を示すＬｍａｘ／Ｖｐとの差分に応じたライン数分だけ、論理ボリュームＬＶ２の読み出し開始タイミングから遅延させる。
【０２０８】
データ復元部２１３は、論理ボリュームＬＶ２のブロックを先頭ブロックから順に復元していく。例えば、図２４の状態２４に示すように、データ復元部２１３は、パリティＰ、論理ボリュームＬＶ１および論理ボリュームＬＶ０のそれぞれにおけるライン番号２のブロックをディスクアレイ装置３００から読み出し、読み出した各ブロックを用いて、論理ボリュームＬＶ２におけるライン番号２のブロックを復元する。
【０２０９】
データ復元部２１３は、論理ボリュームＬＶ２の復元処理を、論理ボリュームＬＶ０の復元処理と並行して実行する。なお、データ復元部２１３は、復元済みの論理ボリュームＬＶ０の後端にもダミーデータを付加することで、読み出し順が最後の論理ボリュームＬＶ２のすべてのブロックを復元する。
【０２１０】
また、データ復元部２１３は、論理ボリュームＬＶ２における１ブロックの復元が完了したとき、論理ボリュームＬＶ０における復元中のブロックのライン番号と、論理ボリュームＬＶ２における復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、１以上の整数として設定される。
【０２１１】
図２５の状態２５では、データ復元部２１３は、論理ボリュームＬＶ２におけるライン番号２のブロックの復元を完了したとき、論理ボリュームＬＶ０におけるライン番号４のブロックの復元処理を実行中である。ここで、差分設定値を２とすると、データ復元部２１３は、論理ボリュームＬＶ０における復元中のブロックのライン番号４と、論理ボリュームＬＶ２における復元が完了したブロックのライン番号２との差分が差分設定値「２」以下であると判定して、論理ボリュームＬＶ２の復元処理を一旦停止する。このとき、データ復元部２１３は、論理ボリュームＬＶ０の復元処理を継続する。
【０２１２】
論理ボリュームＬＶ２の復元処理を停止したデータ復元部２１３は、式（４）に従って初期間隔値Ｌｐを再計算する。この再計算では、データ復元部２１３は、式（４）のパラメータのうち、Ｌｍａｘに対して、論理ボリュームＬＶ２のうち復元が完了していないブロックの総サイズを代入し、Ｌ２に対して、論理ボリュームＬＶ０のうち復元が完了していないブロックの総サイズを代入する。さらに、データ復元部２１３は、Ｖｐ，Ｖｐｑに対して、それぞれ測定情報２５０の「復元処理速度１」、「復元処理速度２」の欄に登録された最新の実測値を代入する。
【０２１３】
データ復元部２１３は、論理ボリュームＬＶ０における復元中のブロックのライン番号と、論理ボリュームＬＶ２における復元対象ブロックのライン番号との差分が、再計算された初期間隔値Ｌｐ以上になったとき、論理ボリュームＬＶ２の復元処理を再開する。これにより、論理ボリュームＬＶ２における復元対象のブロックのライン番号と、論理ボリュームＬＶ０における復元対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
【０２１４】
初期間隔値Ｌｐが「３」と算出されたものとすると、図２５の状態２６に示すように、データ復元部２１３は、論理ボリュームＬＶ０における復元中のブロックのライン番号が「６」になったとき、論理ボリュームＬＶ２の復元処理を再開する。
【０２１５】
以上の処理により、論理ボリュームＬＶ０，ＬＶ２は、テープライブラリ装置４００の磁気テープから読み出されずに、データ復元部２１３による計算によって復元されて、ディスクアレイ装置３００に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置３００に格納するまでに要する時間が短縮される。
【０２１６】
次に、処理例３における論理ボリュームグループ単位での読み出し処理手順の例を、フローチャートを用いて説明する。処理例３における、読み出し制御部２１２による論理ボリュームグループ単位での読み出し処理手順は、図２１と同様である。データ復元部２１３は、図２１のステップＳ２７ａにおいて読み出し制御部２１２から復元処理の実行指示を受けると、図２６に示す２種類のパリティＰ，Ｑを用いたデータ復元処理と、図２７に示す１種類のパリティ（ここではパリティＰとする）を用いたデータ復元処理とを、並列に実行する。
【０２１７】
図２６は、処理例３におけるパリティＰ，Ｑを用いたデータ復元処理手順を示すフローチャートである。なお、図２６では、図１６と同じ処理が実行される処理ステップには図１６と同じステップ番号を付して示している。
【０２１８】
［ステップＳ４１ｂ］データ復元部２１３は、読み出し制御部２１２から通知されたＬＶＧ番号に対応する測定情報２５０において、「復元中ライン番号２」の欄に先頭のライン番号を登録し、「復元処理速度２」の欄に所定の初期値を登録する。
【０２１９】
［ステップＳ４２ｂ］データ復元部２１３は、前述した式（３）に従って初期間隔値Ｌｐｑを算出し、測定情報２５０の「初期間隔値２」の欄に登録する。このとき、データ復元部２１３は、測定情報２５０の「読み出し処理速度」の欄に登録された実測値を式（３）のＶｒに代入し、「復元処理速度２」に登録された初期値を式（３）のＶｐｑに代入する。
【０２２０】
［ステップＳ４３ｂ］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号２」の欄に登録されたライン番号との差分が、ステップＳ４２ｂで算出した初期間隔値Ｌｐｑ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐｑ以上になるまで待機状態となり、差分が初期間隔値Ｌｐｑ以上になったとき、ステップＳ４４ｂの処理を実行する。
【０２２１】
［ステップＳ４４ｂ］データ復元部２１３は、図２６での復元対象の論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部２１３は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティＰ，Ｑのブロックを、ディスクアレイ装置３００から読み出す。データ復元部２１３は、読み出した各ブロックのデータを用いて、復元対象の論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置３００に格納する。
【０２２２】
［ステップＳ４５］データ復元部２１３は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部２１３は、論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部２１３は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップＳ４６ｂの処理を実行する。
【０２２３】
［ステップＳ４６ｂ］データ復元部２１３は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部２１３は、算出した復元処理速度によって、測定情報２５０の「復元処理速度２」の欄の情報を更新する。
【０２２４】
［ステップＳ４７ｂ］データ復元部２１３は、測定情報２５０の「復元中ライン番号２」の欄のライン番号を、１だけインクリメントする。
［ステップＳ４８ｂ］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号２」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部２１３は、ライン番号同士の差分が差分設定値より大きい場合、ステップＳ４４ｂに進んで、次のブロックの復元処理を実行する。一方、データ復元部２１３は、ライン番号同士の差分が差分設定値以下である場合、ステップＳ４９の処理を実行する。
【０２２５】
なお、ステップＳ４８ｂでは、データ復元部２１３は、読み出し制御部２１２による、読み出し順が１つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップＳ４４ｂの処理を実行する。
【０２２６】
［ステップＳ４９］データ復元部２１３は、復元対象の論理ボリュームの復元処理を一時的に停止する。
［ステップＳ５０ｂ］データ復元部２１３は、式（３）に従って初期間隔値Ｌｐｑを再計算し、算出した値によって、測定情報２５０の「初期間隔値２」の欄を更新する。この再計算を行う際、データ復元部２１３は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式（３）のＬ２に代入する。また、データ復元部２１３は、読み出し順が最後から３番目の論理ボリューム（すなわち、読み出し制御部２１２によって読み出し中の論理ボリューム）のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式（３）のＬ３に代入する。さらに、データ復元部２１３は、Ｖｐｑ，Ｖｒに対して、それぞれ測定情報２５０の「復元処理速度２」、「読み出し処理速度」の欄に登録された値を代入する。
【０２２７】
［ステップＳ５１ｂ］データ復元部２１３は、測定情報２５０の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報２５０の「復元中ライン番号２」の欄に登録されたライン番号との差分が、ステップＳ５０ｂで算出した初期間隔値Ｌｐｑ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐｑ以上になるまで待機状態となり、差分が初期間隔値Ｌｐｑ以上になったとき、ステップＳ４４ｂの処理を実行する。
【０２２８】
図２７は、処理例３におけるパリティＰを用いたデータ復元処理手順を示すフローチャートである。なお、図２７では、図１６と同じ処理が実行される処理ステップには同じステップ番号を付して示している。
【０２２９】
［ステップＳ４１］データ復元部２１３は、読み出し制御部２１２から通知されたＬＶＧ番号に対応する測定情報２５０において、「復元中ライン番号１」の欄に先頭のライン番号を登録し、「復元処理速度１」の欄に所定の初期値を登録する。
【０２３０】
［ステップＳ４２ｃ］データ復元部２１３は、前述した式（４）に従って初期間隔値Ｌｐを算出し、測定情報２５０の「初期間隔値１」の欄に登録する。このとき、データ復元部２１３は、測定情報２５０の「復元処理速度２」の欄に登録された実測値を式（４）のＶｐｑに代入し、「復元処理速度１」に登録された初期値を式（４）のＶｐに代入する。
【０２３１】
［ステップＳ４３ｃ］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」および「復元中ライン番号２」の各欄に登録されたライン番号同士の差分が、ステップＳ４２ｃで算出した初期間隔値Ｌｐ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐ以上になるまで待機状態となり、差分が初期間隔値Ｌｐ以上になったとき、ステップＳ４４ｃの処理を実行する。
【０２３２】
［ステップＳ４４ｃ］データ復元部２１３は、図２７での復元対象の論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部２１３は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティＰのブロックを、ディスクアレイ装置３００から読み出す。データ復元部２１３は、読み出した各ブロックのデータを用いて、復元対象の論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置３００に格納する。
【０２３３】
［ステップＳ４５］データ復元部２１３は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部２１３は、論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部２１３は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップＳ４６の処理を実行する。
【０２３４】
［ステップＳ４６］データ復元部２１３は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部２１３は、算出した復元処理速度によって、測定情報２５０の「復元処理速度１」の欄の情報を更新する。
【０２３５】
［ステップＳ４７］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」の欄のライン番号を、１だけインクリメントする。
［ステップＳ４８ｃ］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」および「復元中ライン番号２」の各欄に登録されたライン番号同士の差分が、所定の差分設定値以下であるかを判定する。データ復元部２１３は、ライン番号同士の差分が差分設定値より大きい場合、ステップＳ４４ｃに進んで、次のブロックの復元処理を実行する。一方、データ復元部２１３は、ライン番号同士の差分が差分設定値以下である場合、ステップＳ４９の処理を実行する。
【０２３６】
なお、ステップＳ４８ｃでは、データ復元部２１３は、読み出し順が１つ前の論理ボリュームの復元処理が完了している場合には、無条件にステップＳ４４ｃの処理を実行する。
【０２３７】
［ステップＳ４９］データ復元部２１３は、復元対象の論理ボリュームの復元処理を一時的に停止する。
［ステップＳ５０ｃ］データ復元部２１３は、式（４）に従って初期間隔値Ｌｐを再計算し、算出した値によって、測定情報２５０の「初期間隔値１」の欄を更新する。この再計算を行う際、データ復元部２１３は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式（４）のＬｍａｘに代入する。また、データ復元部２１３は、読み出し順が最後から２番目の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式（４）のＬ２に代入する。さらに、データ復元部２１３は、Ｖｐ，Ｖｐｑに対して、それぞれ測定情報２５０の「復元処理速度１」、「復元処理速度２」の欄に登録された値を代入する。
【０２３８】
［ステップＳ５１ｃ］データ復元部２１３は、測定情報２５０の「復元中ライン番号１」および「復元中ライン番号２」の各欄に登録されたライン番号同士の差分が、ステップＳ５０ｃで再計算した初期間隔値Ｌｐ以上であるかを判定する。データ復元部２１３は、ライン番号同士の差分が初期間隔値Ｌｐ以上になるまで待機状態となり、差分が初期間隔値Ｌｐ以上になったとき、ステップＳ４４ｃの処理を実行する。
【０２３９】
なお、以上の第２の実施の形態の説明では、読み出し制御部２１２による論理ボリュームグループ単位でのテープライブラリ装置４００からの読み出し処理は、ＬＶＧ読み出し制御部２２２からの指示に応じて実行されるものとした。しかしながら、このような読み出し処理は、仮想テープ制御部２２１からのリコールの実行指示に応じて行われてもよい。
【０２４０】
例えば、読み出し制御部２１２は、仮想テープ制御部２２１からリコールの実行指示を受けると、リコール対象の論理ボリュームが属する論理ボリュームグループを特定する。この後、読み出し制御部２１２は、図１５または図２１のステップＳ２３で、リコール対象の論理ボリュームの読み出し順を先頭にし、同じ論理ボリュームグループに属するその他の論理ボリュームについては読み出し順をサイズが小さい順にする。
【０２４１】
これ以後、読み出し制御部２１２は、図１５または図２１のステップＳ２４以降の処理を実行する。ここで、ステップＳ２４が最初に実行されたとき、読み出し制御部２１２は、リコール対象の論理ボリュームをテープライブラリ装置４００内の磁気テープから読み出し、ディスクアレイ装置３００に格納する。仮想テープ制御部２２１は、テープライブラリ装置４００に格納されたリコール対象の論理ボリュームから、ホスト装置５００から読み出しが要求されたデータを読み出してホスト装置５００に送信することができる。
【０２４２】
また、図１５または図２１のステップＳ２４以降の処理がさらに続行されることによって、リコール対象の論理ボリュームだけでなく、この論理ボリュームと同じ論理ボリュームグループに属する他の論理ボリュームも、ディスクアレイ装置３００にキャッシュされる。これにより、ホスト装置５００からの読み出し対象となった論理ボリュームに関連付けられた他の論理ボリューム内のデータについても、ホスト装置５００からの読み出し要求に対して高速に応答できるようになる。
【０２４３】
また、上記の第２の実施の形態では、制御装置２００は、ディスクアレイ装置３００に格納されたパリティを、データの読み出し高速化のためにだけ利用した。しかしながら、制御装置２００は、ディスクアレイ装置３００内のパリティを、磁気テープの不具合などによって磁気テープから読み出し不可能になった論理ボリュームのデータを復元するために利用してもよい。
【０２４４】
例えば、シングルパリティの場合、制御装置２００は、論理ボリュームグループに属する論理ボリュームのうちの１つを磁気テープから読み出せなくなった場合、その論理ボリュームのデータを、同じ論理ボリュームグループに属する他の論理ボリュームとパリティとから復元することができる。また、ダブルパリティの場合、制御装置２００は、論理ボリュームグループに属する論理ボリュームのうちの２つを磁気テープから読み出せなくなった場合、それら２つの論理ボリュームのデータを、同じ論理ボリュームグループに属する他の論理ボリュームと２種類のパリティとから復元することができる。
【０２４５】
〔第３の実施の形態〕
第３の実施の形態に係るストレージシステムの制御装置は、第２の実施の形態で説明した処理に加えて、さらに、同一の論理ボリュームについて、その一部を計算によって復元するとともに、その復元処理と並行して他の一部を磁気テープから読み出す。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間をさらに短縮する。
【０２４６】
第３の実施の形態に係るストレージシステムのハードウェア構成は、第２の実施の形態と同様である。また、第３の実施の形態における制御装置が備える基本的な処理機能は、図５に示した通りである。このため、以下の説明では、図５に示した符号を用いることにする。
【０２４７】
図２８は、ＬＶＧ管理テーブルに登録される情報の例を示す図である。第３の実施の形態において、ＬＶＧ管理テーブル２４０内のＬＶＧ情報２４１には、図７に示した情報に加えて、「格納位置情報１」および「格納位置情報２」の各欄が設けられる。
【０２４８】
「格納位置情報１」の欄には、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームについての、磁気テープにおける格納位置を示す情報が登録される。「格納位置情報２」の欄には、論理ボリュームグループに属する論理ボリュームのうち２番目に大きいサイズの論理ボリュームについての、磁気テープにおける格納位置を示す情報が登録される。格納位置を示す情報としては、例えば、磁気テープの識別番号、および、その磁気テープにおける、対応する論理ボリュームが記録された領域の先頭アドレスなどが登録される。
【０２４９】
「格納位置情報１」および「格納位置情報２」の各欄の情報は、書き込み制御部２１１によって論理ボリュームグループのデータがテープライブラリ装置４００内の磁気テープに書き込まれる際に、書き込み制御部２１１によって登録される。「格納位置情報１」および「格納位置情報２」の各欄の情報は、読み出し制御部２１２から参照される。なお、読み出し制御部２１２は、「格納位置情報１」および「格納位置情報２」の各欄に対応する情報をＬＶ管理テーブル２３０から取得してもよい。
【０２５０】
図２９は、測定情報に登録される情報の例を示す図である。第３の実施の形態において、測定情報２５０には、図８に示した情報に加えて、「読み出し開始ライン番号１」および「読み出し開始ライン番号２」の各欄が設けられる。
【０２５１】
「読み出し開始ライン番号１」の欄には、読み出し順が最後の論理ボリュームのうち、読み出し制御部２１２が読み出すべき領域の先頭ブロックのライン番号が登録される。「読み出し開始ライン番号２」の欄には、読み出し順が最後から２番目の論理ボリュームのうち、読み出し制御部２１２が読み出すべき領域の先頭ブロックのライン番号が登録される。
【０２５２】
次に、第３の実施の形態での読み出し処理例について、処理例４〜６として説明する。
＜処理例４＞
処理例４は、上記の処理例１における、論理ボリュームグループ単位でのテープライブラリ装置４００からの読み出し処理を、次のように変形したものである。処理例１での読み出し処理では、読み出し制御部２１２は、読み出し順が最後から２番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例４では、読み出し制御部２１２は、読み出し順が最後から２番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
【０２５３】
図３０は、処理例４におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図３０の状態３１は、例として、図１４の状態６から、読み出し制御部２１２による論理ボリュームＬＶ０の読み出し処理と、データ復元部２１３による論理ボリュームＬＶ２の復元処理とが、さらに進められた状態を示す。処理例４では、読み出し制御部２１２は、論理ボリュームＬＶ０における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後である論理ボリュームＬＶ２を磁気テープから読み出すための準備を、テープライブラリ装置４００に実行させる。
【０２５４】
論理ボリュームＬＶ２が格納された磁気テープがテープライブラリ装置４００内のテープドライブにマウントされ、磁気テープ上の論理ボリュームＬＶ２の領域付近に磁気ヘッドが配置されると、読み出し制御部２１２は、次の式（５）に従って読み出し容量Ｒｄ１を算出し、さらに式（６）に従って読み出し開始ライン番号Ｌｄ１を算出する。ここで、読み出し開始ライン番号Ｌｄ１は、論理ボリュームＬＶ２における復元されていない領域のうち、データ復元部２１３によって復元すべき領域と、読み出し制御部２１２によって磁気テープから読み出すべき領域との境界位置を示すものである。
Ｒｄ１＝Ｖｄ・Ｒｐ１／（Ｖｄ＋Ｖｐ１）      ・・・（５）
Ｌｄ１＝Ｎｍａｘ−Ｒｄ１      ・・・（６）
式（５）において、Ｖｄは、磁気テープからのデータ読み出し速度であり、あらかじめ決められた値が代入される。Ｖｐ１は、読み出し順が最後の論理ボリュームにおけるデータ復元速度であり、測定情報２５０の「復元処理速度１」の欄に登録された実測値が代入される。Ｒｐ１は、読み出し順が最後の論理ボリュームのうち、データの復元が完了していない領域のサイズである。Ｎｍａｘは、読み出し順が最後の論理ボリュームのブロック数であり、ＬＶＧ管理テーブル２４０のＬＶＧ情報２４１の「ライン数」の欄に登録された値が代入される。なお、式（５）の計算の際には、小数点以下の値は切り捨てられる。
【０２５５】
読み出し制御部２１２は、読み出し順が最後の論理ボリュームＬＶ２のうち、算出された読み出し開始ライン番号Ｌｄ１に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置３００に格納する。一方、データ復元部２１３は、論理ボリュームＬＶ２のうち、読み出し開始ライン番号Ｌｄ１より１小さいライン番号に対応するブロックの復元が完了すると、復元処理を終了する。
【０２５６】
図３０の状態３２では、読み出し開始ライン番号Ｌｄ１が「１２」と算出されたものとする。この場合、読み出し制御部２１２は、論理ボリュームＬＶ２のうち先頭から１２番目のブロック（すなわち、ライン番号１１に対応するブロック）から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部２１２による磁気テープからの読み出し処理と並行して、データ復元部２１３は、論理ボリュームＬＶ２のうちライン番号１０までのブロックを復元する。
【０２５７】
このように、論理ボリュームＬＶ２の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０２５８】
ここで、上記の式（５）および式（６）によれば、読み出し順が最後の論理ボリュームＬＶ２を磁気テープから読み出すための準備ができた時点で、論理ボリュームＬＶ２のうち復元が完了していないブロックの一部を磁気テープから読み出す時間と、他の一部を計算によって復元する時間とが同じになるように、読み出し開始ライン番号Ｌｄ１が算出される。これにより、論理ボリュームＬＶ２の全体がディスクアレイ装置３００に格納されるまでの時間を最小限にすることができる。
【０２５９】
図３１は、処理例４における読み出し制御部の処理手順の例を示すフローチャートである。読み出し制御部２１２は、図１５のステップＳ２９で「Ｙｅｓ」と判定したとき、すなわち、読み出し順が最後から２番目の論理ボリュームの磁気テープからの読み出しを完了したときに、さらに図３１に示す処理を実行する。
【０２６０】
［ステップＳ６１］読み出し制御部２１２は、読み出し順が最後である論理ボリュームを読み出し処理対象とし、読み出し処理対象の論理ボリュームの位置情報を、ＬＶＧ管理テーブル２４０に登録されたＬＶＧ情報２４１の「格納位置情報１」の欄から読み出す。読み出し制御部２１２は、読み出した位置情報をテープライブラリ装置４００に通知して、読み出し処理対象の論理ボリュームを磁気テープから読み出すための準備をテープライブラリ装置４００に実行させる。
【０２６１】
［ステップＳ６２］読み出し制御部２１２は、読み出し処理対象の論理ボリュームのブロックの中に、データ復元部２１３による復元処理が実行されていないブロックがあるかを判定する。読み出し制御部２１２は、測定情報２５０の「復元中ライン番号１」の欄に登録されたライン番号が、読み出し処理対象の論理ボリュームの最終ブロックのライン番号を示している場合、復元未実行のブロックがないと判定して、処理を終了する。一方、読み出し制御部２１２は、復元未実行のブロックがあると判定した場合、ステップＳ６３の処理を実行する。
【０２６２】
［ステップＳ６３］読み出し制御部２１２は、式（５）に従って読み出し容量Ｒｄ１を算出し、読み出し容量Ｒｄ１に基づき、式（６）から読み出し開始ライン番号Ｌｄ１を算出する。
【０２６３】
［ステップＳ６４］読み出し制御部２１２は、算出した読み出し開始ライン番号Ｌｄ１を、測定情報２５０の「読み出し開始ライン番号１」の欄に登録する。
［ステップＳ６５］読み出し制御部２１２は、読み出し処理対象の論理ボリュームのブロックのうち、算出した読み出し開始ライン番号Ｌｄ１が示すブロックから最終ブロックまでを磁気テープから読み出す。このステップＳ６５の読み出し処理は、データ復元部２１３による、読み出し開始ライン番号Ｌｄ１が示すブロックより前のブロックの復元処理と並列に実行される。
【０２６４】
図３２は、処理例４におけるデータ復元処理手順を示すフローチャートである。なお、図３２のフローチャートは、図１６に示したフローチャートにおけるステップＳ４７とステップＳ４８との間に、次のステップＳ８１の処理を追加したものである。
【０２６５】
［ステップＳ８１］データ復元部２１３は、ステップＳ４７で更新した、測定情報２５０の「復元中ライン番号１」の欄のライン番号が、測定情報２５０の「読み出し開始ライン番号１」の欄に登録されているライン番号と一致するかを判定する。データ復元部２１３は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部２１３は、ライン番号同士が一致しなかった場合、ステップＳ４８の処理を実行する。
【０２６６】
＜処理例５＞
処理例５は、上記の処理例２における、論理ボリュームグループ単位でのテープライブラリ装置４００からの読み出し処理を、次のように変形したものである。処理例２での読み出し処理では、読み出し制御部２１２は、読み出し順が最後から３番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例５では、読み出し制御部２１２は、読み出し順が最後から３番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
【０２６７】
図３３は、処理例５におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図３３の状態４１は、例として、図２０の状態１５から、読み出し制御部２１２による論理ボリュームＬＶ１の読み出し処理と、データ復元部２１３による論理ボリュームＬＶ０，ＬＶ２の復元処理とが、さらに進められた状態を示す。処理例５では、読み出し制御部２１２は、論理ボリュームＬＶ１における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後である論理ボリュームＬＶ２を磁気テープから読み出すための準備を、テープライブラリ装置４００に実行させる。
【０２６８】
論理ボリュームＬＶ２が格納された磁気テープがテープライブラリ装置４００内のテープドライブにマウントされ、磁気テープ上の論理ボリュームＬＶ２の領域付近に磁気ヘッドが配置されると、読み出し制御部２１２は、上記の式（５）に従って読み出し容量Ｒｄ１を算出し、さらに上記の式（６）に従って読み出し開始ライン番号Ｌｄ１を算出する。
【０２６９】
読み出し制御部２１２は、読み出し順が最後の論理ボリュームＬＶ２のうち、算出された読み出し開始ライン番号Ｌｄ１に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置３００に格納する。一方、データ復元部２１３は、論理ボリュームＬＶ２のうち、読み出し開始ライン番号Ｌｄ１より１小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームＬＶ２の復元処理を終了する。ただし、データ復元部２１３は、論理ボリュームＬＶ０については最終ブロックまで復元処理を実行する。
【０２７０】
図３３の状態４２では、読み出し開始ライン番号Ｌｄ１が「１３」と算出されたものとする。この場合、読み出し制御部２１２は、論理ボリュームＬＶ２のうち先頭から１３番目のブロック（すなわち、ライン番号１２に対応するブロック）から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部２１２による磁気テープからの読み出し処理と並行して、データ復元部２１３は、論理ボリュームＬＶ２のうちライン番号１１までのブロックを復元する。
【０２７１】
このように、論理ボリュームＬＶ２の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０２７２】
なお、図３３の例では、論理ボリュームＬＶ２についてパリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されたが、例えば、論理ボリュームＬＶ２の代わりに論理ボリュームＬＶ０について、パリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されてもよい。ただし、図３３の例のように、論理ボリュームグループ内の最大サイズの論理ボリュームＬＶ２についてパリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されることで、復元処理と読み出し処理とが並列に実行される時間が長くなる。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間短縮効果が大きくなる。
【０２７３】
次に、処理例５における論理ボリュームグループ単位でのテープライブラリ装置４００からの読み出し処理を、フローチャートを用いて説明する。まず、読み出し制御部２１２は、図２１に示したフローチャートの処理を実行し、ステップＳ２９で「Ｙｅｓ」と判定したとき、すなわち、読み出し順が最後から３番目の論理ボリュームの磁気テープからの読み出しを完了したときに、図３１に示した処理を実行する。
【０２７４】
図３４は、処理例５におけるデータ復元処理手順を示すフローチャートである。なお、図３４のフローチャートは、図２２に示したフローチャートにおけるステップＳ４７とステップＳ４８との間に、次のステップＳ８２の処理を追加したものである。
【０２７５】
［ステップＳ８２］データ復元部２１３は、ステップＳ４７で更新した、測定情報２５０の「復元中ライン番号１」の欄のライン番号が、測定情報２５０の「読み出し開始ライン番号１」の欄に登録されているライン番号と一致するかを判定する。データ復元部２１３は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部２１３は、ライン番号同士が一致しなかった場合、ステップＳ４８の処理を実行する。
【０２７６】
＜処理例６＞
処理例６は、上記の処理例３における、論理ボリュームグループ単位でのテープライブラリ装置４００からの読み出し処理を、次のように変形したものである。処理例３での読み出し処理では、読み出し制御部２１２は、読み出し順が最後から３番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例６では、読み出し制御部２１２は、読み出し順が最後から３番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
【０２７７】
図３５は、処理例６におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図３５の状態５１は、例として、図２４の状態２４から、読み出し制御部２１２による論理ボリュームＬＶ１の読み出し処理と、データ復元部２１３による論理ボリュームＬＶ０，ＬＶ２の復元処理とが、さらに進められた状態を示す。処理例６では、読み出し制御部２１２は、論理ボリュームＬＶ１における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後から２番目である論理ボリュームＬＶ０を磁気テープから読み出すための準備を、テープライブラリ装置４００に実行させる。
【０２７８】
論理ボリュームＬＶ０が格納された磁気テープがテープライブラリ装置４００内のテープドライブにマウントされ、磁気テープ上の論理ボリュームＬＶ０の領域付近に磁気ヘッドが配置されると、読み出し制御部２１２は、次の式（７）に従って読み出し容量Ｒｄ２を算出し、さらに式（８）に従って読み出し開始ライン番号Ｌｄ２を算出する。
Ｒｄ２＝Ｖｄ・Ｒｐ２／（Ｖｄ＋Ｖｐ２）      ・・・（７）
Ｌｄ２＝Ｎ２−Ｒｄ２      ・・・（８）
式（７）において、Ｖｐ２は、読み出し順が最後から２番目の論理ボリュームにおけるデータ復元速度であり、測定情報２５０の「復元処理速度２」の欄に登録された実測値が代入される。Ｒｐ２は、読み出し順が最後から２番目の論理ボリュームのうち、データの復元が完了していない領域のサイズである。Ｎ２は、読み出し順が最後から２番目の論理ボリュームのブロック数であり、例えば、ＬＶＧ管理テーブル２４０のＬＶＧ情報２４１の「ＬＶサイズ２」、およびＬＶＧ管理テーブル２４０の「パリティサイズ」の各欄に登録された値を基に算出される。なお、式（７）の計算の際には、小数点以下の値は切り捨てられる。
【０２７９】
読み出し制御部２１２は、読み出し順が最後から２番目の論理ボリュームＬＶ０のうち、算出された読み出し開始ライン番号Ｌｄ２に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置３００に格納する。一方、データ復元部２１３は、論理ボリュームＬＶ０のうち、読み出し開始ライン番号Ｌｄ２より１小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームＬＶ０の復元処理を終了する。
【０２８０】
図３５の状態５２では、読み出し開始ライン番号Ｌｄ３が「１０」と算出されたものとする。この場合、読み出し制御部２１２は、論理ボリュームＬＶ０のうち先頭から１０番目のブロック（すなわち、ライン番号９に対応するブロック）から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部２１２による磁気テープからの読み出し処理と並行して、データ復元部２１３は、論理ボリュームＬＶ０のうちライン番号８までのブロックを復元する。
【０２８１】
このように、論理ボリュームＬＶ０の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置３００に格納されるまでの時間が短縮される。
【０２８２】
さらに、図示しないが、読み出し制御部２１２は、論理ボリュームＬＶ０の最終ブロックまでの読み出しが完了すると、読み出し順が最後である論理ボリュームＬＶ２を磁気テープから読み出すための準備を、テープライブラリ装置４００に実行させる。その後の読み出し制御部２１２の処理は前述の処理例５と同様である。すなわち、読み出し制御部２１２は、式（５）および式（６）を用いて読み出し開始ライン番号Ｌｄ１を算出する。読み出し制御部２１２は、論理ボリュームＬＶ２のうち、算出された読み出し開始ライン番号Ｌｄ１に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出してディスクアレイ装置３００に格納する。一方、データ復元部２１３は、論理ボリュームＬＶ２のうち、読み出し開始ライン番号Ｌｄ１より１小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームＬＶ２の復元処理を終了する。このようにして、論理ボリュームＬＶ２の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。
【０２８３】
図３６は、処理例６における読み出し制御部の処理手順の例を示すフローチャートである。なお、図３６では、図３１と同じ処理が実行される処理ステップには同じステップ番号を付して示している。
【０２８４】
読み出し制御部２１２は、図２１のステップＳ２９で「Ｙｅｓ」と判定したとき、すなわち、読み出し順が最後から３番目の論理ボリュームの磁気テープからの読み出しを完了したときに、さらに図３６に示す処理を実行する。
【０２８５】
［ステップＳ９１］読み出し制御部２１２は、読み出し順が最後から２番目の論理ボリュームを読み出し処理対象とし、読み出し処理対象の論理ボリュームの位置情報を、ＬＶＧ管理テーブル２４０に登録されたＬＶＧ情報２４１の「格納位置情報２」の欄から読み出す。読み出し制御部２１２は、読み出した位置情報をテープライブラリ装置４００に通知して、読み出し処理対象の論理ボリュームを磁気テープから読み出すための準備をテープライブラリ装置４００に実行させる。
【０２８６】
［ステップＳ９２］読み出し制御部２１２は、読み出し処理対象の論理ボリュームのブロックの中に、データ復元部２１３による復元処理が実行されていないブロックがあるかを判定する。読み出し制御部２１２は、測定情報２５０の「復元中ライン番号２」の欄に登録されたライン番号が、読み出し処理対象の論理ボリュームの最終ブロックのライン番号を示している場合、復元未実行のブロックがないと判定して、ステップＳ６１の処理を実行する。一方、読み出し制御部２１２は、復元未実行のブロックがあると判定した場合、ステップＳ９３の処理を実行する。
【０２８７】
［ステップＳ９３］読み出し制御部２１２は、式（７）に従って読み出し容量Ｒｄ２を算出し、読み出し容量Ｒｄ２に基づき、式（８）から読み出し開始ライン番号Ｌｄ２を算出する。
【０２８８】
［ステップＳ９４］読み出し制御部２１２は、算出した読み出し開始ライン番号Ｌｄ２を、測定情報２５０の「読み出し開始ライン番号２」の欄に登録する。
［ステップＳ９５］読み出し制御部２１２は、読み出し処理対象の論理ボリュームのブロックのうち、算出した読み出し開始ライン番号Ｌｄ２が示すブロックから最終ブロックまでを磁気テープから読み出す。このステップＳ９５の読み出し処理は、データ復元部２１３による、読み出し開始ライン番号Ｌｄ２が示すブロックより前のブロックの復元処理と並列に実行される。
【０２８９】
この後、読み出し制御部２１２は、読み出し処理対象の論理ボリュームの最終ブロックまでの読み出しが完了すると、読み出し処理対象を読み出し順が最後の論理ボリュームとして、図３１に示したステップＳ６１〜Ｓ６５の処理を実行する。
【０２９０】
次に、データ復元部２１３の処理について説明する。データ復元部２１３は、図２１のステップＳ２７ａにおいて読み出し制御部２１２から復元処理の実行指示を受けると、図３７および図３８の各処理を並列に実行する。
【０２９１】
図３７は、処理例６におけるパリティＰ，Ｑを用いたデータ復元処理手順を示すフローチャートである。この図３７の処理は、データ復元部２１３が、読み出し順が最後から２番目の論理ボリュームを２種類のパリティＰ，Ｑを用いて復元する処理である。図３７のフローチャートは、図２６に示したフローチャートにおけるステップＳ４７ｂとステップＳ４８ｂとの間に、ステップＳ８３の処理を追加したものである。
【０２９２】
［ステップＳ８３］データ復元部２１３は、ステップＳ４７ｂで更新した、測定情報２５０の「復元中ライン番号２」の欄のライン番号が、測定情報２５０の「読み出し開始ライン番号２」の欄に登録されているライン番号と一致するかを判定する。データ復元部２１３は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部２１３は、ライン番号同士が一致しなかった場合、ステップＳ４８ｂの処理を実行する。
【０２９３】
図３８は、処理例６におけるパリティＰを用いたデータ復元処理手順を示すフローチャートである。この図３８の処理は、データ復元部２１３が、読み出し順が最後である論理ボリュームを１種類のパリティ（ここでは例としてパリティＰ）を用いて復元する処理である。図３８のフローチャートは、図２７に示したフローチャートにおけるステップＳ４７とステップＳ４８との間に、ステップＳ８４の処理を追加したものである。
【０２９４】
［ステップＳ８４］データ復元部２１３は、ステップＳ４７で更新した、測定情報２５０の「復元中ライン番号１」の欄のライン番号が、測定情報２５０の「読み出し開始ライン番号１」の欄に登録されているライン番号と一致するかを判定する。データ復元部２１３は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部２１３は、ライン番号同士が一致しなかった場合、ステップＳ４８の処理を実行する。
【０２９５】
なお、上記の各実施の形態に示したストレージ制御装置１０および制御装置２００の処理機能は、コンピュータによって実現することができる。その場合、各通信装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２９６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２９７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２９８】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置において、
前記ｎ個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを第２の記憶装置に格納するパリティ算出部と、
前記ｎ個のデータを前記第１の記憶装置から読み出す際に、前記ｎ個のデータのうちの少なくとも１つを、前記第１の記憶装置から読み出す代わりに、前記ｎ個のデータのうち前記第１の記憶装置から読み出し済みの他のデータと前記第２の記憶装置に格納されたパリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
【０２９９】
（付記２）  前記パリティ算出部は、前記ｎ個のデータのそれぞれから抽出した分割データを基に１種類のパリティを算出して、算出したパリティを前記第２の記憶装置に格納し、
前記読み出し制御部は、前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−２）個のデータを読み出した後、残りの２個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−２）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みの分割データ、および前記第２の記憶装置に格納されたパリティを用いて、前記残りの２個のデータのうち第２のデータを復元するデータ復元処理とを並列に実行する、
ことを特徴とする付記１記載のストレージ制御装置。
【０３００】
（付記３）  前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータおよび前記第２のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とする付記２記載のストレージ制御装置。
【０３０１】
（付記４）  前記読み出し制御部は、前記第１のデータのうち読み出しが完了した部分のサイズと、前記第２のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのうち前記第１の記憶装置から読み出されていない部分のサイズと、前記第２のデータのうち復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする付記２または３記載のストレージ制御装置。
【０３０２】
（付記５）  前記読み出し制御部は、前記第１のデータを前記第１の記憶装置から読み出した後、前記第２のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、前記データ領域のうち残りの部分を前記第１の記憶装置から読み出す処理とを並列に実行することを特徴とする付記２〜４のいずれか１つに記載のストレージ制御装置。
【０３０３】
（付記６）  前記読み出し制御部は、前記データ領域のうち第１の領域をパリティを用いて復元する処理の終了タイミングと、前記データ領域のうち残りの第２の領域を前記第１の記憶装置から読み出す処理の終了タイミングとが一致するように、前記第１の領域と前記第２の領域との境界位置を決定することを特徴とする付記５記載のストレージ制御装置。
【０３０４】
（付記７）  前記パリティ算出部は、前記ｎ個のデータのそれぞれから抽出した分割データを基に第１のパリティおよび第２のパリティを算出して、算出した前記第１のパリティおよび前記第２のパリティを前記第２の記憶装置に格納し、
前記読み出し制御部は、前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みの分割データ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータおよび第３のデータを復元するデータ復元処理とを、並列に実行する、
ことを特徴とする付記１記載のストレージ制御装置。
【０３０５】
（付記８）  前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのサイズと、前記第２のデータおよび前記第３のデータのうち大きい方のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とする付記７記載のストレージ制御装置。
【０３０６】
（付記９）  前記読み出し制御部は、前記第１のデータのうち読み出しが完了した部分のサイズと、前記第２のデータまたは前記第３のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第１のデータのうち前記第１の記憶装置から読み出されていない部分のサイズと、前記第２のデータおよび前記第３のデータのうち大きい方のデータにおける復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする付記７または８記載のストレージ制御装置。
【０３０７】
（付記１０）  前記読み出し制御部は、前記第１のデータを前記第１の記憶装置から読み出した後、前記第２のデータまたは前記第３のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、前記データ領域のうち残りの部分を前記第１の記憶装置から読み出す処理とを並列に実行することを特徴とする付記７〜９のいずれか１つに記載のストレージ制御装置。
【０３０８】
（付記１１）  前記読み出し制御部は、前記データ領域のうち第１の領域をパリティを用いて復元する処理の終了タイミングと、前記データ領域のうち残りの第２の領域を前記第１の記憶装置から読み出す処理の終了タイミングとが一致するように、前記第１の領域と前記第２の領域との境界位置を決定することを特徴とする付記１０記載のストレージ制御装置。
【０３０９】
（付記１２）  前記パリティ算出部は、前記ｎ個のデータのそれぞれから抽出した分割データを基に第１のパリティおよび第２のパリティを算出して、算出した前記第１のパリティおよび前記第２のパリティを前記第２の記憶装置に格納し、
前記読み出し制御部は、
前記第１の記憶装置から前記ｎ個のデータのうち（ｎ−３）個のデータを読み出した後、残りの３個のデータのうち第１のデータを前記第１の記憶装置から読み出す読み出し処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みの分割データ、および、前記第２の記憶装置に格納された前記第１のパリティおよび前記第２のパリティを用いて、前記残りの３個のデータのうち第２のデータを復元する第１のデータ復元処理と、
前記第１の記憶装置から読み出した前記（ｎ−３）個のデータ、前記第１のデータのうち前記第１の記憶装置から読み出し済みの分割データ、前記第２のデータのうち復元済みの分割データ、および、前記第２の記憶装置に格納された前記第１のパリティまたは前記第２のパリティのいずれかを用いて、前記残りの３個のデータのうち第３のデータを復元する第２のデータ復元処理と、
を並列に実行する、
ことを特徴とする付記１記載のストレージ制御装置。
【０３１０】
（付記１３）  前記読み出し制御部は、前記読み出し処理および前記第１のデータ復元処理の各処理速度と、前記第１のデータおよび前記第２のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記第１のデータ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記第１のデータ復元処理を開始するタイミングを遅延させることを特徴とする付記１２記載のストレージ制御装置。
【０３１１】
（付記１４）  前記読み出し制御部は、さらに、前記第１のデータ復元処理および前記第２のデータ復元処理の各処理速度と、前記第２のデータおよび前記第３のデータの各サイズとに基づき、前記第１のデータ復元処理の終了タイミングと前記第２のデータ復元処理の終了タイミングとが一致するように、前記第１のデータ復元処理を開始した後に前記第２のデータ復元処理を開始するタイミングを遅延させることを特徴とする付記１３記載のストレージ制御装置。
【０３１２】
（付記１５）  前記読み出し制御部は、前記第１のデータのうち読み出しが完了した部分のサイズと、前記第２のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記第１のデータ復元処理を一時的に停止し、前記読み出し処理および前記第１のデータ復元処理の各処理速度と、前記第１のデータのうち前記第１の記憶装置から読み出されていない部分のサイズと、前記第２のデータのうち復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記第１のデータ復元処理の終了タイミングとが一致するように、前記第１のデータ復元処理を再開するタイミングを決定することを特徴とする付記１２〜１４のいずれか１つに記載のストレージ制御装置。
【０３１３】
（付記１６）  前記読み出し制御部は、前記第１のデータを前記第１の記憶装置から読み出した後、前記第２のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、当該復元されていないデータ領域のうち残りの部分を前記第１の記憶装置から読み出す処理とを並列に実行することを特徴とする付記１２〜１５のいずれか１つに記載のストレージ制御装置。
【０３１４】
（付記１７）  前記読み出し制御部は、前記第２のデータの復元が完了した後、前記第３のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、当該復元されていないデータ領域のうち残りの部分を前記第１の記憶装置から読み出す処理とを並列に実行することを特徴とする付記１６記載のストレージ制御装置。
【０３１５】
（付記１８）  前記パリティ算出部は、前記ｎ個のデータのそれぞれのサイズが同じになるように、前記ｎ個のデータのうち、少なくとも、最大サイズのデータを除くデータのそれぞれに対してダミーデータを付加し、ダミーデータの付加によってそれぞれのサイズが同じになった前記ｎ個のデータを基にパリティを算出することを特徴とする付記１〜１７のいずれか１つに記載のストレージ制御装置。
【０３１６】
（付記１９）  第１の記憶装置および第２の記憶装置と、
ｎ個のデータ（ただし、ｎは２以上の整数）を前記第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記ｎ個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを前記第２の記憶装置に格納するパリティ算出部と、
前記ｎ個のデータを前記第１の記憶装置から読み出す際に、前記ｎ個のデータのうちの少なくとも１つを、前記第１の記憶装置から読み出す代わりに、前記ｎ個のデータのうち前記第１の記憶装置から読み出し済みの他のデータと前記第２の記憶装置に格納されたパリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージシステム。
【０３１７】
（付記２０）  ｎ個のデータ（ただし、ｎは２以上の整数）を第１の記憶装置に書き込み、書き込んだ前記ｎ個のデータを前記第１の記憶装置から読み出すストレージ制御方法において、
コンピュータが、
前記ｎ個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出して、算出したパリティを第２の記憶装置に格納し、
前記ｎ個のデータを前記第１の記憶装置から読み出す際に、前記ｎ個のデータのうちの少なくとも１つを、前記第１の記憶装置から読み出す代わりに、前記ｎ個のデータのうち前記第１の記憶装置から読み出し済みの他のデータと前記第２の記憶装置に格納されたパリティとを用いて復元する、
ことを特徴とするストレージ制御方法。
【符号の説明】
【０３１８】
１  ストレージシステム
１０  ストレージ制御装置
１１  パリティ算出部
１２  読み出し制御部
２１  第１の記憶装置
２２  第２の記憶装置
【図１】
0005942512.tif 000002
【図２】
0005942512.tif 000003
【図３】
0005942512.tif 000004
【図４】
0005942512.tif 000005
【図５】
0005942512.tif 000006
【図６】
0005942512.tif 000007
【図７】
0005942512.tif 000008
【図８】
0005942512.tif 000009
【図９】
0005942512.tif 000010
【図１０】
0005942512.tif 000011
【図１１】
0005942512.tif 000012
【図１２】
0005942512.tif 000013
【図１３】
0005942512.tif 000014
【図１４】
0005942512.tif 000015
【図１５】
0005942512.tif 000016
【図１６】
0005942512.tif 000017
【図１７】
0005942512.tif 000018
【図１８】
0005942512.tif 000019
【図１９】
0005942512.tif 000020
【図２０】
0005942512.tif 000021
【図２１】
0005942512.tif 000022
【図２２】
0005942512.tif 000023
【図２３】
0005942512.tif 000024
【図２４】
0005942512.tif 000025
【図２５】
0005942512.tif 000026
【図２６】
0005942512.tif 000027
【図２７】
0005942512.tif 000028
【図２８】
0005942512.tif 000029
【図２９】
0005942512.tif 000030
【図３０】
0005942512.tif 000031
【図３１】
0005942512.tif 000032
【図３２】
0005942512.tif 000033
【図３３】
0005942512.tif 000034
【図３４】
0005942512.tif 000035
【図３５】
0005942512.tif 000036
【図３６】
0005942512.tif 000037
【図３７】
0005942512.tif 000038
【図３８】
0005942512.tif 000039