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