以下、実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。ストレージシステム1は、ストレージ制御装置10、第1の記憶装置21および第2の記憶装置22を備える。
ストレージ制御装置10は、第1の記憶装置21に対するデータの書き込み、および、第1の記憶装置21からのデータの読み出しを制御する。また、ストレージ制御装置10は、第2の記憶装置22にアクセス可能である。
なお、第2の記憶装置22は、ストレージ制御装置10の内部に設けられていてもよい。また、ストレージ制御装置10から第2の記憶装置22に対するアクセス速度は、ストレージ制御装置10から第1の記憶装置21に対するアクセス速度より速い。例えば、第1の記憶装置21が記録媒体として磁気テープあるいは光ディスクなどの可搬型記録媒体を用いた記憶装置である場合、第2の記憶装置22は、HDD、SSD(Solid State Drive)などの固定式の不揮発性記録媒体、または、DRAM(Dynamic Random Access Memory)、SRAM(Static RAM)などの揮発性の半導体メモリとして実現することができる。
ストレージ制御装置10は、n個のデータ(ただし、nは3以上の整数)を第1の記憶装置21に書き込む。例えば、ストレージ制御装置10は、図1に示すデータA,B,Cを第1の記憶装置21に書き込む。また、ストレージ制御装置10は、所定のタイミングで、書き込んだn個のデータを第1の記憶装置21から読み出す。
ここで、n個のデータのそれぞれは、例えば、1つのファイルであってもよく、あるいは、論理ボリュームのように複数のファイルを含むデータ群であってもよい。また、1つのグループとしてn個のデータが管理されるようにユーザによって予め設定されたものであってもよい。
ストレージ制御装置10は、パリティ算出部11および制御部12を備える。パリティ算出部11および制御部12の処理は、例えば、ストレージ制御装置10が備えるプロセッサが所定のプログラムを実行することで実現される。
パリティ算出部11は、n個のデータを第1の記憶装置21に書き込む際に、これらのn個のデータのうち最大サイズである第1のデータとサイズが同じになるように、n個のデータのうち第1のデータ以外の各データにダミーデータを付加する。そして、パリティ算出部11は、ダミーデータを付加した各データと第1のデータとを基に(n−1)個のパリティを算出し、(n−1)個のパリティを第2の記憶装置22に格納する。
例えば、図1に示すデータA,B,Cは、それぞれ同じサイズのブロックに分割されているものとする。データAにはブロックA1〜A5が含まれ、データBにはブロックB1〜B4が含まれ、データCにはブロックC1〜C3が含まれている。データA,B,Cのうち、最大サイズのデータはデータAであり、このデータAが上記の第1のデータに対応する。そのため、パリティ算出部11は、データB,Cにダミーデータを付加する。ダミーデータもブロックと同じサイズのダミーブロックに分割されるものとすると、データBにはダミーブロックB5dが付加され、データCにはダミーブロックC4d,C5dが付加される。なお、各ダミーブロックには、例えば、あらかじめ決められた同じ値が設定されている。
パリティ算出部11は、データAと、それぞれパリティが付加されたデータB,Cとを基に、(n−1)個のパリティを算出する。図1の例ではn=3なので、パリティ算出部11は、2個のパリティX,Yを算出して、第2の記憶装置22に格納する。
パリティXは、例えば、次のようにして算出される。パリティXに含まれる部分パリティX1は、ブロックA1,B1,C1を用いて算出される。同様に、パリティXに含まれる部分パリティX2は、ブロックA2,B2,C2を用いて算出され、パリティXに含まれる部分パリティX3は、ブロックA3,B3,C3を用いて算出される。パリティXに含まれる部分パリティX4は、ブロックA4,B4と、ダミーブロックC4dを用いて算出される。パリティXに含まれる部分パリティX5は、ブロックA5と、ダミーブロックB5d,C5dを用いて算出される。
パリティYに含まれる部分パリティY1〜Y5も、部分パリティX1〜X5と同様の手順で算出される。ただし、部分パリティY1〜Y5を算出するための計算式は、部分パリティX1〜X5を算出するための計算式とは異なる。
なお、ダミーデータは、パリティ算出のために一時的に付加されるデータであるため、第1の記憶装置21に書き込まれる必要はない。
また、パリティX,Yが算出されるタイミングは、データA〜Cを第1の記憶装置21から読み出すように要求される前であればよい。また、パリティX,Yの算出の際、データA〜Cは、第1の記憶装置21から読み出されて参照されるのではなく、ストレージ制御装置10内のバッファや、第2の記憶装置22など、第1の記憶装置21よりアクセス速度が速い記憶装置から読み出されて参照されることが望ましい。
制御部12は、n個のデータを第1の記憶装置21から読み出す際に、これらのn個のデータのうち最小サイズの第2のデータを第1の記憶装置21から読み出す読み出し処理と、n個のデータのうち第2のデータ以外の複数のデータそれぞれを、算出された(n−1)個のパリティとダミーデータとを用いて復元する処理とを、並行して実行する。
図1に示すデータA〜Cのうち、最小サイズのデータはデータCであり、このデータCが上記の第2のデータに対応する。そのため、制御部12は、データCを第1の記憶装置21から読み出す。また、制御部12は、データA,Bを、第2の記憶装置22に格納されているパリティX,Yと、ダミーデータとを用いて復元する。そして、制御部12は、データCの読み出し処理と、データA,Bの復元処理とを、並行して実行する。
パリティX,Yとダミーデータを用いて復元されるのは、ブロックA4,A5,B4である。ブロックA4は、部分パリティX4,Y4と、ダミーブロックC4dに対応するダミーデータを用いて復元される。ブロックA5は、部分パリティX5,Y5と、ダミーブロックC5dに対応するダミーデータを用いて復元される。ブロックB4は、部分パリティX4,Y4と、ダミーブロックC4dに対応するダミーデータを用いて復元される。
ブロックA4,A5,B4を復元する処理速度は、ブロックA4,A5,B4を第1の記憶装置21から読み出す処理速度より速い。このため、ブロックA4,A5,B4を第1の記憶装置21から読み出す代わりに復元することで、ストレージ制御装置10がブロックA4,A5,B4を得るためにかかる時間を短縮できる。
なお、ブロックA4,A5,B4の復元が完了した後、制御部12はさらに、パリティX,Yと、データCのうち第1の記憶装置21から読み出し済みのブロックとを用いて、データA,Bの残りのブロックを復元する処理を、データCの読み出しと並行して実行してもよい。これにより、ストレージ制御装置10は、データA,Bの全体を、第1の記憶装置21からのデータ読み出しを行わずに復元により取得することができ、データA,B全体の取得に必要な時間が短縮される。しかも、その復元処理がデータCの読み出しと並行して行われることから、データA〜Cをすべて第1の記憶装置21から読み出す場合と比較して、ストレージ制御装置10がデータA〜C全体を取得するのにかかる時間が短縮される。
ここで、パリティX,Yとダミーデータを用いてブロックA4,A5,B4を復元する処理は、パリティX,YとデータCのうち読み出し済みのブロックとを用いてブロックA1〜A3,B1〜B3を復元する処理より、早いタイミングで開始することが可能である。なぜなら、ブロックA4,A5,B4を復元するために、データCの一部が第1の記憶装置21から読み出されるのを待たなくてもよいからである。
従って、制御部12が、パリティX,Yとダミーデータを用いてブロックA4,A5,B4を復元することにより、データA,Bの復元を開始するタイミングが早められる。そして、復元開始タイミングが早くなる分だけ、データCの読み出し処理とデータA,Bの復元処理とが並行して実行される期間を長くすることができ、処理効率が向上する。
また、上記のように、ブロックA4,A5,B4の復元完了後に、データA,Bの残りのブロックが、パリティX,YおよびデータCのうち読み出し済みのブロックを用いて復元されることで、ストレージ制御装置10がデータA〜C全体を取得するのにかかる時間を短縮することができる。
なお、ストレージ制御装置10は、上記のn個のデータを含むm個のデータ(mは、nより大きい整数)を、第1の記憶装置21に書き込み、その後、第1の記憶装置21から読み出してもよい。この場合、(n−1)個のパリティは、n個のデータだけでなく、m個のデータを用いて算出されてもよい。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムの構成例を示す図である。ストレージシステム100は、制御装置200、ディスクアレイ装置300およびテープライブラリ装置400を備える。また、制御装置200には、ホスト装置500が接続されている。
制御装置200は、ホスト装置500とディスクアレイ装置300との間のデータ転送または、ディスクアレイ装置300とテープライブラリ装置400との間のデータ転送を制御する。制御装置200は、ストレージシステム100が、テープライブラリ装置400をライブラリ装置、ディスクアレイ装置300をキャッシュ装置とした階層型の仮想テープライブラリシステムとして動作するように制御する。ここで、仮想テープライブラリシステムとは、テープライブラリ装置400によって実現される大容量の記憶領域に対して、ホスト装置500が、ディスクアレイ装置300を通じて仮想的にアクセスできるようにしたものである。
ディスクアレイ装置300は、仮想テープライブラリシステムにおけるキャッシュ装置の記憶領域を実現する記録媒体として、複数のHDDを備える。なお、ディスクアレイ装置300は、キャッシュ装置の記憶領域を実現するための記録媒体として、SSDなどの他の種類の不揮発性記憶装置を備えていてもよい。
テープライブラリ装置400は、仮想テープライブラリシステムにおけるバックエンドの記憶領域を実現する記録媒体として、複数の磁気テープを用いた記憶装置である。後述するように、テープライブラリ装置400は、磁気テープに対するデータアクセスを行う1つまたは複数のテープドライブや、磁気テープを収容したテープカートリッジを搬送する機構などを備える。
なお、仮想テープライブラリシステムのバックエンドの記憶領域を実現する記録媒体として、磁気テープの他、例えば、光ディスク、光磁気ディスクなどの可搬型の記録媒体を利用することもできる。
また、制御装置200、ディスクアレイ装置300およびテープライブラリ装置400は、例えば、1つの筐体内、またはそれぞれ個別の筐体内に設けられる。あるいは、例えば、制御装置200とディスクアレイ装置300とが1つの筐体内に設けられ、テープライブラリ装置400が別の筐体内に設けられてもよい。
ホスト装置500は、ユーザの入力操作に応じて制御装置200にアクセス要求を発することで、仮想テープライブラリシステムに定義された論理ボリュームにアクセスする。論理ボリュームとは、ストレージシステム100の物理記憶領域を用いてユーザに提供される論理的な記憶領域である。
図3は、制御装置のハードウェア例を示す図である。制御装置200は、例えば、図3のようなコンピュータとして実現される。
制御装置200は、プロセッサ201によって装置全体が制御されている。プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ201は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ201には、バス209を介して、RAM202および複数の周辺機器が接続されている。
RAM202は、制御装置200の主記憶装置として使用される。RAM202には、プロセッサ201に実行させるファームウェアプログラムの少なくとも一部が一時的に格納される。また、RAM202には、プロセッサ201による処理に必要な各種データが格納される。
バス209に接続されている周辺機器としては、SSD203、入力インタフェース204、読み取り装置205、ホストインタフェース206、ディスクインタフェース207およびテープインタフェース208がある。
SSD203は、制御装置200の二次記憶装置として使用される。SSD203には、ファームウェアプログラムおよび各種データが格納される。なお、二次記憶装置としては、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
入力インタフェース204には、例えば、各種の操作キーなどを備える入力装置204aが接続可能になっている。入力インタフェース204は、入力装置204aからの信号をバス209を介してプロセッサ201に送信する。なお、入力装置204aは、制御装置200に搭載されていてもよい。
読み取り装置205には、可搬型記録媒体205aが脱着される。読み取り装置205は、可搬型記録媒体205aに記録されたデータを読み取ってプロセッサ201に送信する。可搬型記録媒体205aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
ホストインタフェース206は、ホスト装置500との間でデータを送受信する通信インタフェースである。ディスクインタフェース207は、ディスクアレイ装置300との間でデータを送受信する通信インタフェースである。テープインタフェース208は、テープライブラリ装置400との間でデータを送受信する通信インタフェースである。
なお、ホスト装置500についても、制御装置200と同様に、プロセッサ、RAM、周辺機器などを備えるコンピュータとして実現することができる。
図4は、テープライブラリ装置のハードウェア例を示す図である。テープライブラリ装置400は、コントローラ401、RAM402、フラッシュメモリ403、テープドライブ411,412、テープ格納部421およびテープ搬送部422を備える。
コントローラ401は、例えばCPUを備え、テープライブラリ装置400全体を統括的に制御する。RAM402は、コントローラ401に実行させるファームウェアプログラムの少なくとも一部が一時的に格納される。また、RAM402には、コントローラ401による処理に必要な各種データが格納される。フラッシュメモリ403には、ファームウェアプログラムや各種データが格納される。
テープドライブ411,412は、それぞれ、テープ搬送部422によって搬送されたテープカートリッジを1つずつマウントし、コントローラ401の制御の下で、マウントしたテープカートリッジ内の磁気テープに対するデータの書き込みや、磁気テープからのデータの読み出しを行う。なお、テープライブラリ装置400が備えるテープドライブの数は特に限定されるものではない。
テープ格納部421には、複数のテープカートリッジが格納されている。テープ搬送部422は、コントローラ401による制御の下でテープカートリッジを搬送する。テープ搬送部422は、例えば、テープ格納部421に格納されたテープカートリッジを、テープドライブ411,412のいずれかに搬送してマウントする。また、テープ搬送部422は、テープドライブ411,412のいずれかからテープカートリッジをアンマウントし、テープ格納部421に搬送して格納する。
図5は、制御装置の機能例を示すブロック図である。制御装置200は、書き込み制御部211、読み出し制御部212、データ復元部213、仮想テープ制御部221およびLVG(Logical Volume Group)読み出し制御部222を備える。これらの各部の処理は、例えば、制御装置200のプロセッサ201が所定のファームウェアプログラムを実行することによって実現される。
また、制御装置200のSSD203には、LV(Logical Volume)管理テーブル230およびLVG管理テーブル240が記憶される。なお、LV管理テーブル230およびLVG管理テーブル240の少なくとも一方は、例えば、ディスクアレイ装置300内のいずれかのHDDに記憶されてもよい。さらに、制御装置200のRAM202には、測定情報250が一時的に記憶される。
書き込み制御部211は、仮想テープ制御部221からの指示に応じて、ディスクアレイ装置300内のデータをテープライブラリ装置400に転送し、転送したデータを磁気テープに書き込むようにテープライブラリ装置400に要求する。また、書き込み制御部211は、仮想テープ制御部221からの指示に応じて、ホスト装置500から受信したデータをディスクアレイ装置300に書き込むこともできる。
ここで、仮想テープ制御部221からの指示に応じたテープライブラリ装置400へのデータ転送は、予め設定された1つ以上の論理ボリューム(LV)からなる論理ボリュームグループ(LVG)を単位として実行される。書き込み制御部211は、論理ボリュームグループのデータをテープライブラリ装置400に転送する際に、論理ボリュームグループに属する各論理ボリュームのデータを用いて2種類のパリティを算出し、算出した2種類のパリティをディスクアレイ装置300に格納する。以下、算出される2種類のパリティを、それぞれ「パリティP」、「パリティQ」と呼ぶ場合がある。
読み出し制御部212は、仮想テープ制御部221またはLVG読み出し制御部222からの指示に応じて、テープライブラリ装置400に対して磁気テープからのデータ読み出しを要求する。読み出し制御部212は、読み出し要求に応じてテープライブラリ装置400から送信されたデータを、ディスクアレイ装置300に格納する。また、読み出し制御部212は、仮想テープ制御部221からの指示に応じて、ディスクアレイ装置300からデータを読み出し、仮想テープ制御部221に転送する。
ここで、読み出し制御部212は、論理ボリュームグループ単位でテープライブラリ装置400からのデータ読み出しを要求された場合、論理ボリュームグループに属する論理ボリュームのうち一部の論理ボリュームを、テープライブラリ装置400から読み出さずに、データ復元部213にパリティを用いて復元させる。テープライブラリ装置400からのデータ読み出しに要する時間は、例えばディスクアレイ装置300からのデータ読み出しに要する時間と比較して長い。上記のように、論理ボリュームグループ内の一部の論理ボリュームがデータ復元部213によって復元されて、テープライブラリ装置400から実際に読み出されるデータ量が減少することで、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間を短縮することができる。
データ復元部213は、論理ボリュームグループ内の一部の論理ボリュームを、同じ論理ボリュームグループ内の論理ボリュームに対応するダミーデータとディスクアレイ装置300に格納されたパリティP,Qとを用いて、復元する。また、データ復元部213は、テープライブラリ装置400から読み出し済みの論理ボリュームと、パリティP,Qとを用いて、復元する。
仮想テープ制御部221は、ホスト装置500からの仮想テープライブラリシステムへのアクセス要求に応じて、ディスクアレイ装置300内のHDDに対するデータアクセス、テープライブラリ装置400内の磁気テープに対するデータアクセスなどの処理の実行を、書き込み制御部211または読み出し制御部212に指示する。仮想テープ制御部221は、例えば、次のような制御を行う。
仮想テープ制御部221は、ディスクアレイ装置300に論理ボリュームの領域を確保する。仮想テープ制御部221は、ホスト装置500から論理ボリュームに対する書き込み要求を受けると、書き込みが要求されたデータをディスクアレイ装置300上の対応する領域に書き込む。仮想テープ制御部221は、ディスクアレイ装置300へデータを書き込んでから任意のタイミングで、データが書き込まれた論理ボリュームを、テープライブラリ装置400内の磁気テープに書き込む。ここで、仮想テープ制御部221は、ディスクアレイ装置300内の論理ボリュームをテープライブラリ装置400に書き込む際に、その論理ボリュームが属する論理ボリュームグループ内のすべての論理ボリュームを、テープライブラリ装置400内の磁気テープに書き込むように制御する。
また、仮想テープ制御部221は、ディスクアレイ装置300の空き容量が所定量以下に低下したとき、ディスクアレイ装置300内の論理ボリュームグループのうち、最終アクセス時刻が最も長い論理ボリュームグループを、ディスクアレイ装置300から消去する。このとき、消去対象の論理ボリュームグループの中に、テープライブラリ装置400内の磁気テープに書き込んでいないデータが存在する場合には、消去対象の論理ボリュームグループをテープライブラリ装置400内の磁気テープに書き込むように制御する。
なお、仮想テープ制御部221は、論理ボリュームを磁気テープに書き込む際に、その書き込み先を示す情報を論理ボリュームの識別情報に対応付けて、LV管理テーブル230に登録する。
一方、仮想テープ制御部221は、ホスト装置500からデータの読み出し要求を受けると、読み出し要求されたデータを含む論理ボリュームがディスクアレイ装置300にキャッシュされているかを判定する。論理ボリュームがディスクアレイ装置300にキャッシュされている場合、仮想テープ制御部221は、読み出し要求されたデータをディスクアレイ装置300から読み出して、ホスト装置500に送信する。
一方、論理ボリュームがディスクアレイ装置300にキャッシュされていない場合、仮想テープ制御部221は、LV管理テーブル230を参照して、論理ボリュームが格納されている磁気テープを特定する。仮想テープ制御部221は、特定した磁気テープから論理ボリュームを読み出して、ディスクアレイ装置300に書き込む。なお、このときの磁気テープからディスクアレイ装置300へのデータ転送処理を「リコール」と呼ぶ。仮想テープ制御部221は、ディスクアレイ装置300に書き込んだ論理ボリュームから、読み出しを要求されたデータを読み出して、ホスト装置500に送信する。
LVG読み出し制御部222は、例えばホスト装置500などからの要求に応じて、読み出し制御部212に対して、論理ボリュームグループ単位での、テープライブラリ装置400からのデータの読み出しを要求する。このような読み出しが要求されるケースとしては、例えば、テープライブラリ装置400の磁気テープに格納された論理ボリュームグループをディスクアレイ装置300に読み出して、他の装置(例えば、他のストレージシステムにおけるディスクアレイ装置)に移動する処理がある。あるいは、テープライブラリ装置400の複数の磁気テープに分散して格納されたLVGをディスクアレイ装置300に一旦読み出して、仮想テープライブラリ用の磁気テープとは別の、外部保管用の磁気テープに一括してコピーする処理もある。
次に、LV管理テーブル230、LVG管理テーブル240および測定情報250に登録される情報について説明する。
図6は、LV管理テーブルの例を示す図である。LV管理テーブル230は、仮想テープライブラリシステム上に定義された論理ボリュームが、どの磁気テープのどの位置に格納されているかを示す情報を保持する。LV管理テーブル230には、論理ボリュームごとに各レコード231が生成され、各レコード231には、「LV番号」、「格納先テープ番号」、「LVサイズ」および「先頭アドレス」の各欄が設けられている。
「LV番号」の欄には、対応する論理ボリュームを識別するための識別番号が登録される。「格納先テープ番号」の欄には、対応する論理ボリュームが格納された磁気テープを識別するための識別番号が登録される。「LVサイズ」の欄には、対応する論理ボリュームのサイズが登録される。「先頭アドレス」の欄には、対応する論理ボリュームが格納された磁気テープにおける領域の先頭を示すアドレスが登録される。
図7は、LVG管理テーブルの例(その1)を示す図である。LVG管理テーブル240は、論理ボリュームグループに属する論理ボリュームを管理するための情報を保持するとともに、論理ボリュームグループをテープライブラリ装置400内の磁気テープから読み出す際に用いられる情報を保持する。
LVG管理テーブル240には、論理ボリュームグループのすべての共通の情報として「パリティサイズ」の欄が設けられている。「パリティサイズ」の欄には、書き込み制御部211が1回のパリティ演算によって算出するパリティのサイズが登録される。このパリティのサイズは、パリティ演算の際に論理ボリュームを分割して得られるブロック1つ分のサイズと等しい。なお、ブロックについては後で詳しく説明する。
また、LVG管理テーブル240には、論理ボリュームグループごとにLVG情報241が登録される。各LVG情報241には、「LVG番号」、「LV数」、「LV番号」、「LVサイズ1」、「最小LVサイズ」および「ライン数」の各欄が設けられている。
「LVG番号」の欄には、対応する論理ボリュームグループを識別するための識別番号が登録される。「LV数」の欄には、対応する論理ボリュームグループに属する論理ボリュームの数が登録される。「LV番号」の欄には、対応する論理ボリュームグループに属する各論理ボリュームを識別するための識別番号のリストが登録される。なお、どの論理ボリュームグループにどの論理ボリュームを所属させるかは、ホスト装置500を通じてユーザが設定可能であり、「LV数」および「LV番号」の各欄には、ユーザの設定操作に応じた情報が登録される。
「LVサイズ1」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大の論理ボリュームのサイズが登録される。「最小LVサイズ」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最小の論理ボリュームのサイズが登録される。
「ライン数」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームから得られるブロックの数を示す。「ライン数」の欄の情報は、「LVサイズ1」の欄に登録されたサイズを「パリティサイズ」の欄に登録されたサイズで除算することで得られる。
「LVサイズ1」、「最小LVサイズ」および「ライン数」の各欄の情報は、例えば、ユーザによって論理ボリュームグループに所属させる論理ボリュームが設定されたときに、仮想テープ制御部221によって自動的に登録される。
さらに、LVG情報241には、ラインごとにライン管理情報242が登録される。LVG情報241に登録されるライン管理情報242の数は、「ライン数」の欄に登録されている数と一致する。ライン管理情報242には、「ライン番号」および「先頭アドレス」の各欄が設けられている。
「ライン番号」の欄には、対応するラインを識別するための識別番号が登録される。この識別番号は、ラインの先頭から順に割り当てられる。「先頭アドレス」の欄には、対応するラインの先頭からの位置を示す情報が登録される。先頭のラインのアドレスは「0」であり、次のラインのアドレスは、前のラインのアドレスに、「パリティサイズ」の欄に登録されたサイズに対応する分のアドレスが加算された値となる。
また、ライン管理情報242には、パリティP,Qにそれぞれ対応する2つのパリティ管理情報243が登録される。
パリティ管理情報243は、「LVG番号」で識別される論理ボリュームグループおよび「ライン番号」で識別されるラインに対応するパリティが、ディスクアレイ装置300の記憶領域のうちのどこに格納されているかを示すものである。すなわち、パリティ管理情報243で管理されるパリティとは、1つの論理ボリュームグループから算出されるひとまとめのパリティを、ライン単位で分割したデータを示す。
パリティ管理情報243には、「パリティ番号」、「格納先LV番号」および「先頭アドレス」の各欄が設けられている。「パリティ番号」の欄には、対応するパリティを識別するための識別番号が登録される。なお、同一の論理ボリュームグループのパリティには、例えば、ライン順に連続した識別番号が付与される。「格納先LV番号」の欄には、対応するパリティが格納された、ディスクアレイ装置300上の論理ボリュームの識別番号が登録される。なお、「格納先LV番号」が示す論理ボリュームは、論理ボリュームグループに属していない論理ボリュームの1つである。「先頭アドレス」の欄には、対応するパリティの記憶領域の先頭部分が、「格納先LV番号」が示す論理ボリューム内のどの位置かを示す情報が登録される。
図8は、測定情報の例(その1)を示す図である。測定情報250は、論理ボリュームグループを単位として、テープライブラリ装置400内の磁気テープからディスクアレイ装置300に対してデータが読み出される際に、読み出し制御部212およびデータ復元部213によって登録され、また参照される情報である。測定情報250には、「LVG番号」、「読み出し中ライン番号」、「復元中ライン番号1」、「初期間隔値1」、「読み出し処理速度」および「復元処理速度1」の各欄が設けられる。
「LVG番号」の欄には、読み出し処理対象の論理ボリュームグループを識別するための識別番号が登録される。読み出し制御部212は、ある論理ボリュームグループをテープライブラリ装置400内の磁気テープから読み出す処理を開始する際に、その論理ボリュームグループの識別番号を「LVG番号」の欄に登録した測定情報250を、RAM202に生成する。それ以後、論理ボリュームグループ全体がディスクアレイ装置300に書き込まれるまでの間、生成された測定情報250における「LVG番号」以外の欄の情報が、読み出し制御部212またはデータ復元部213によって随時更新される。
「読み出し中ライン番号」の欄には、テープライブラリ装置400内の磁気テープから読み出し中の論理ボリュームにおいて、どのラインのデータが読み出し中であるかを示すライン番号が登録される。
「復元中ライン番号1」の欄には、パリティを用いて復元中の論理ボリュームにおいて、どのラインのデータが復元中であるかを示すライン番号が登録される。
「初期間隔値1」の欄には、パリティを用いた復元処理を開始するタイミング、または再開するタイミングを決定するために用いられるデータ量が登録される。データ復元部213は、ある論理ボリュームの復元処理を実行する際に、その論理ボリュームにおける復元すべき残データ量と、復元処理と並行にテープライブラリ装置400からの読み出しを行っている論理ボリュームのうち、読み出すべき残データ量との差分が、「初期間隔値1」の欄に登録されたデータ量以上になるようにする。「初期間隔値1」の欄の情報は、データ復元部213によって計算される。
「読み出し処理速度」の欄には、読み出し制御部212による磁気テープからの論理ボリュームの読み出し処理速度の計測結果が登録される。「復元処理速度1」の欄には、データ復元部213によるパリティP,Qを用いた論理ボリュームの復元処理速度の計測結果が登録される。
次に、図9は、論理ボリュームグループの書き込み処理例の概要を示す図である。
制御装置200は、ホスト装置500を通じたユーザからの指示に応じて、仮想テープライブラリシステム上の任意の複数の論理ボリュームを、論理ボリュームグループに割り当てることができる。論理ボリュームグループに割り当てられた論理ボリュームは、例えば、ユーザがアクセス可能な論理記憶領域としてホスト装置500から認識されるようになる。一方、制御装置200は、論理ボリュームグループに割り当てられておらず、ホスト装置500から認識されていない論理ボリュームを、フローティングと呼ばれる領域として管理する。
図9の例では、論理ボリュームLV0〜LV2が、論理ボリュームグループLVG0に割り当てられ、論理ボリュームLV10〜LV13が、論理ボリュームグループLVG1に割り当てられている。一方、論理ボリュームLV20,LV21は、ともにフローティング領域に属している。
前述したように、制御装置200の書き込み制御部211は、仮想テープ制御部221からの指示に応じたテープライブラリ装置400へのデータ転送を、論理ボリュームグループ単位で実行する。書き込み制御部211は、論理ボリュームグループをテープライブラリ装置400内の磁気テープに書き込む際に、論理ボリュームグループに属する各論理ボリュームのデータを用いてパリティを算出し、算出したパリティをディスクアレイ装置300内の所定の記憶領域に格納する。書き込み制御部211は、例えば、算出したパリティを、フローティング領域に属する論理ボリュームに格納する。
図9の例では、書き込み制御部211は、論理ボリュームグループLVG0のデータをテープライブラリ装置400に書き込む際に、論理ボリュームグループLVG0に属する論理ボリュームLV0〜LV2のデータを基にパリティを算出する。書き込み制御部211は、算出したパリティを、フローティング領域に属する論理ボリュームLV20に格納する。論理ボリュームLV20に格納されたパリティは、その後、論理ボリュームグループLVG0がテープライブラリ装置400の磁気テープからディスクアレイ装置300に読み出される際に、データ復元部213によって参照される。
次に、テープライブラリ装置内の磁気テープに対する論理ボリュームグループ単位の書き込み処理手順を説明する。
図10は、書き込み処理例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS11]仮想テープ制御部221は、書き込み制御部211に対して、論理ボリュームグループを識別するLVG番号を指定し、磁気テープへの書き込みを要求する。
[ステップS12]書き込み制御部211は、LVG管理テーブル240を参照して、仮想テープ制御部221から指定された論理ボリュームグループに属する論理ボリュームを特定する。
[ステップS13]書き込み制御部211は、ステップS12で特定した各論理ボリュームのサイズをLV管理テーブル240から読み出し、各論理ボリュームのサイズが同じであるかを判定する。書き込み制御部211は、各論理ボリュームのサイズが同じである場合、ステップS15の処理を実行する。一方、書き込み制御部211は、各論理ボリュームのうち少なくとも1つのサイズが他の論理ボリュームのサイズと異なる場合、ステップS14の処理を実行する。
[ステップS14]書き込み制御部211は、特定した論理ボリュームのうち、最大サイズの論理ボリューム以外の論理ボリュームに対して、ダミーデータを付加する。これにより、書き込み制御部211は、各論理ボリュームのサイズを均等化する。
[ステップS15]書き込み制御部211は、各論理ボリュームのブロックをライン番号順にディスクアレイ装置300から読み出し、パリティP,Qを算出する。書き込み制御部211は、算出したパリティP,Qを、ディスクアレイ装置300におけるフローティング領域に属する所定の論理ボリュームに格納する。
書き込み制御部211は、パリティにおける1つのライン番号に対応するブロックを算出するたびに、LVG管理テーブル240に対して、そのライン番号に対応するライン管理情報242を登録する。なお、ステップS15では、ライン管理情報242内のパリティ管理情報243は、2つ登録される。
[ステップS16]書き込み制御部211は、ステップS12で特定した各論理ボリュームのデータをディスクアレイ装置300からテープライブラリ装置400に転送し、テープライブラリ装置400に対して、転送したデータを磁気テープに格納するように指示する。テープライブラリ装置400は、例えば、テープ格納部421から未使用の磁気テープを順次選択して、選択した磁気テープをテープドライブ411,412のいずれかにマウントし、書き込み制御部211から受信したデータをマウントされた磁気テープに書き込んでいく。書き込み制御部211は、各論理ボリュームが書き込まれた磁気テープの識別番号や書き込み位置情報を、テープライブラリ装置400から受信し、LV管理テーブル230における対応する論理ボリュームのレコードに登録する。
なお、ステップS16では、論理ボリュームに付加されたダミーデータを磁気テープに書き込む必要はない。
図11は、パリティ算出処理の具体例を示す図である。以下、例として、論理ボリュームLV0〜LV2が、1つの論理ボリュームグループLVG0に属しているものとして説明する。
論理ボリュームグループに属する複数の論理ボリュームは、それぞれ同一のサイズであるとは限らない。そこで、書き込み制御部211は、パリティP,Qを算出する際に、論理ボリュームグループに属する論理ボリュームの後端にダミーデータを付加して、各論理ボリュームのサイズを均等化する。
ダミーデータは、「0」などのあらかじめ決められた一律の値を有する。また、ダミーデータは、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリューム以外の論理ボリュームに対して付加される。図11の例では、同一論理ボリュームグループに属する論理ボリュームLV0〜LV2のうち、論理ボリュームLV0のサイズが最大となっている。書き込み制御部211は例えば、図11の下側に示すように、論理ボリュームLV1,LV2のそれぞれに対してダミーデータを付加することで、論理ボリュームLV0〜LV2のサイズを均等化する。
なお、これ以降、説明を簡単にするために、論理ボリュームの後端にダミーデータが付加されているとき、付加されたダミーデータを含めた全体を「論理ボリューム」と称することとする。ただし、ダミーデータは、パリティ算出のために一時的に付加されるデータであって、テープライブラリ装置400の磁気テープに対して書き込まれなくてよい。
サイズの均等化処理を実行した後、書き込み制御部211は、論理ボリュームLV0〜LV2のそれぞれを先頭から一定サイズごとに分割したブロックごとに、2種類のパリティP,Qを算出する。書き込み制御部211は、論理ボリュームグループに属する各論理ボリュームにおける同一のライン番号に対応するブロックを用いて、パリティP,Qをブロックごとに算出する。
例えば、パリティP,Qにおけるライン番号0のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号0のブロックを基に算出される。同様に、パリティP,Qにおけるライン番号1のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号1のブロックを基に算出される。
また、パリティP,Qにおけるライン番号10のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号10のブロックを基に算出されるが、論理ボリュームLV2におけるライン番号10のブロックとしてダミーデータが使用される。このように、書き込み制御部211は、後端にダミーデータを付加することで、論理ボリュームグループに属する論理ボリュームのサイズが均等でない場合でも、これらの論理ボリュームのデータを基にパリティP,Qを算出できるようになる。
そして、書き込み制御部211は、算出したパリティP,Qを、ディスクアレイ装置300におけるフローティング領域に属する所定の論理ボリュームに格納する。
なお、パリティの算出処理の際には、ディスクアレイ装置300の記憶領域に、付加されるダミーデータ全体の記憶領域が確保されなくてもよい。例えば、書き込み制御部211は、ディスクアレイ装置300の記憶領域に1ブロック分のダミーデータを格納しておく。そして、書き込み制御部211は、あるライン番号に対応するパリティのブロックを算出する際にダミーデータが必要な場合には、格納されている1ブロック分のダミーデータをディスクアレイ装置300から読み込む。
次に、制御装置200が論理ボリュームグループ単位でのテープライブラリ装置400の磁気テープからデータを読み出し、ディスクアレイ装置300に格納する処理について説明する。
書き込み制御部211による上記処理により、テープライブラリ装置400の磁気テープに格納された論理ボリュームグループに対応するパリティP,Qが、ディスクアレイ装置300に格納されている。本実施の形態のように2種類のパリティP,Qが格納されている場合、制御装置200は、論理ボリュームグループに属する論理ボリュームのうちの最大2つを、その他の論理ボリュームとパリティP,Qとから復元することができる。さらに、制御装置200は、復元可能な最大2つの論理ボリュームの一部については、磁気テープからの論理ボリュームの読み出し順を工夫することにより、磁気テープから読み出した論理ボリュームのデータではなく、ダミーデータを使用して復元することもできる。
そこで、読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、指示された論理ボリュームグループに属する論理ボリュームのうち、2つを除く論理ボリュームを、テープライブラリ装置400の磁気テープから読み出す。また、読み出し制御部212は、残り2つの論理ボリュームを、磁気テープから読み出さずに、ダミーデータと、読み出し済みの論理ボリュームのデータと、ディスクアレイ装置300に格納されたパリティP,Qとを用いて、データ復元部213に復元させる。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
さらに、データ復元部213による論理ボリュームの復元処理は、読み出し制御部212による他の1つの論理ボリュームの磁気テープからの読み出し処理と、並行に実行される。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間がさらに短縮される。
特に、本実施の形態では、論理ボリュームの復元を行う際に、磁気テープから読み出された論理ボリュームのデータを用いて、残り2つの論理ボリュームの先頭から復元する処理よりも、磁気テープから読み出される論理ボリュームに対応するダミーデータを用いて、残り2つの論理ボリュームの途中からその最後尾までを復元する処理を先行して実行する。後者の復元処理を先行して実行することで、磁気テープからのデータ読み出しと復元との並列度を高める(すなわち、並列に実行される時間を長くする)ことができ、その結果、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間を短縮することができる。
次に、読み出し制御部212およびデータ復元部213の処理手順の例を、フローチャートを用いて説明する。
図12は、読み出し制御部の処理手順(その1)を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS21]読み出し制御部212は、LVG読み出し制御部222から、読み出し処理の実行指示およびLVG番号の指定を受付ける。
[ステップS22]読み出し制御部212は、LVG管理テーブル240を参照して、指定されたLVG番号に対応する論理ボリュームグループに属する論理ボリュームを特定する。
[ステップS23]読み出し制御部212は、LV管理テーブル230から、特定した各論理ボリュームのサイズを読み出し、特定した論理ボリュームのサイズが小さい順にソートする。
[ステップS24]読み出し制御部212は、最小サイズの論理ボリュームを最後から3番目に読み出すように処理順番を設定する。読み出し処理の順番としては、2番目に小さいサイズの論理ボリュームから昇順に読み出しが行われ、最後の3つについては、最小サイズの論理ボリューム、2番目に大きいサイズの論理ボリューム、最大サイズの論理ボリュームの順となる。
例えば、図11に示した論理ボリュームグループLVG0に属する各論理ボリュームを磁気テープから読み出してディスクアレイ装置300に格納する場合には、次のように読み出し順が設定される。論理ボリュームグループLVG0に属する論理ボリュームのうち、最小サイズの論理ボリュームは論理ボリュームLV2であり、最大サイズの論理ボリュームは論理ボリュームLV0であり、2番目に大きいサイズの論理ボリュームは論理ボリュームLV1である。この場合、読み出し順は、論理ボリュームLV2,LV1,LV0の順となる。
なお、後述するが、最大サイズの論理ボリュームと2番目に大きいサイズの論理ボリュームは、テープライブラリ装置400から読み出されるわけではなく、パリティP,Qを用いて復元されるので、本ステップでは読み出しの順序のみを決めるだけである。すなわち、最大サイズの論理ボリュームと2番目に大きいサイズの論理ボリューム以外の論理ボリュームが、次のステップS25以降でのテープライブラリ装置400からの読み出し対象となる。
[ステップS25]読み出し制御部212は、読み出し対象の論理ボリュームのブロックのうち、読み出し未完了のブロックを選択し、選択したブロックのデータをテープライブラリ装置400内の磁気テープから読み出す。ブロックの選択順は、ステップS24で設定された順番となる。読み出し制御部212は、読み出した論理ボリュームのデータをディスクアレイ装置300に格納する。
[ステップS26]読み出し制御部212は、読み出しが未完了である残りの論理ボリューム数が3であるかを判定する。読み出し制御部212は、残りの論理ボリューム数が4以上である場合、ステップS25に戻って、次の論理ボリュームの読み出し処理を実行する。一方、読み出し制御部212は、残りの論理ボリューム数が3である場合、ステップS27の処理を実行する。
[ステップS27]読み出し制御部212は、読み出し対象の論理ボリュームグループのLVG番号に対応する測定情報250を、RAM202に生成する。読み出し制御部212は、測定情報250の「読み出し中ライン番号」の欄に先頭のライン番号を登録し、「読み出し処理速度」の欄に所定の初期値を登録する。そして、処理をステップS31に進める。
図13は、読み出し制御部の処理手順(その2)を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS31]読み出し制御部212は、データ復元部213に対して、読み出し処理対象の論理ボリュームグループのLVG番号と、読み出し順が最後および最後から2番目の各論理ボリュームのLV番号とを通知し、通知したLV番号に対応する論理ボリュームグループの復元処理の実行を指示する。これにより、読み出し制御部212によるステップS32以降の処理と、後の図14に示すデータ復元部213の処理とが、並行して実行される。
[ステップS32]読み出し制御部212は、読み出し対象の論理ボリュームのブロックのうち、読み出し未完了のブロックを選択し、選択したブロックのデータをテープライブラリ装置400内の磁気テープから読み出す。読み出し制御部212は、読み出したブロックのデータをディスクアレイ装置300に格納する。なお、本ステップでは、読み出し対象の論理ボリュームは、最小サイズの論理ボリュームとなる。
[ステップS33]読み出し制御部212は、最小サイズの論理ボリュームに含まれる全ブロックの読み出しが完了したかを判定する。読み出し制御部212は、読み出しが完了していない場合、ステップS34の処理を実行する。一方、読み出し制御部212は、読み出しが完了した場合、処理を終了する。
[ステップS34]読み出し制御部212は、読み出し対象の論理ボリュームの先頭ブロックから現在までの読み出し処理速度を計算する。読み出し制御部212は、算出した読み出し処理速度を、測定情報250の「読み出し処理速度」の欄に登録する。
なお、このステップS34において、読み出し制御部212は、例えば、「読み出し処理速度」の欄に登録する情報として、論理ボリュームグループにおける先頭の論理ボリュームを開始してから、現在までの読み出し速度を算出してもよい。この場合、読み出し制御部212は、ステップS27の時点でも、「読み出し処理速度」の欄に、所定の初期値ではなく読み出し速度の算出値を登録する。
[ステップS35]読み出し制御部212は、測定情報250の「読み出し中ライン番号」の欄のライン番号を、1だけインクリメントする。この後、読み出し制御部212は、ステップS32に戻って、次のブロックの読み出しを実行する。
図14は、第2の実施の形態のデータ復元部の処理手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
データ復元部213は、図13のステップS31において読み出し制御部212から復元処理の実行指示を受けると、図14の処理を、読み出し制御部212による読み出し処理と並行に実行する。
[ステップS41]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元処理速度1」の欄に所定の初期値を登録する。また、データ復元部213は、測定情報250の「復元中ライン番号1」の欄に、最小サイズの論理ボリュームに対応するダミーデータの先頭のライン番号を登録する。図11の論理ボリュームグループLVG0の例では、論理ボリュームLV0〜LV2の中で最小サイズの論理ボリュームはLV2である。論理ボリュームLV2に対応するダミーデータの先頭ラインは10である。よって、「復元中ライン番号1」の欄に10が登録される。
本ステップで「復元中ライン番号1」に設定されるライン番号は、パリティP,Qを用いたデータ復元処理の先頭ブロックを示す。すなわち、データ復元部213は、復元対象の2つの論理ボリュームについて、それらの先頭から順に復元を行うのではなく、「復元中ライン番号1」のライン番号が示す、各論理ボリュームの途中のブロックから復元を開始する。
[ステップS42]データ復元部213は、式(1)に従って初期間隔値Lpqを算出し、測定情報250の「初期間隔値1」の欄に登録する。
Lpq=Vr{L3/Vr−Lmax/Vpq} ・・・(1)
L3は、論理ボリュームグループに属する論理ボリュームのうち最小の論理ボリュームのサイズであり、このサイズは読み出し中の論理ボリューム(図11の例では論理ボリュームLV2)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「最小LVサイズ」の欄からL3を取得する。また、L3の値は、最小サイズの論理ボリュームのブロックがテープライブラリ装置400から読み出される度に小さくなる。
Vrは、現在読み出し中の論理ボリューム(すなわち、最小サイズの論理ボリューム)についての、読み出し制御部212による読み出し速度の計測値である。データ復元部213は、測定情報250の「読み出し処理速度」の欄からVrを取得する。
Lmaxは、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち最大の論理ボリュームのサイズであり、このサイズは復元対象の論理ボリュームのうち大きい方(図11の例では論理ボリュームLV0)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ1」の欄からLmaxを取得する。また、Lmaxの値は、最大サイズの論理ボリュームのブロックが復元される度に小さくなる。
Vpqは、データ復元部213によるデータ復元速度の計測値である。データ復元部213は、測定情報250の「復元処理速度1」の欄からVpqを取得する。初期段階では、「復元処理速度1」の欄には所定の初期値が登録されており、その後、「復元処理速度1」の欄の情報はデータ復元部213によって随時更新される。
式(1)におけるL3/Vrは、読み出し対象である最小サイズの論理ボリュームの読み出しに要する予想時間であり、Lmax/Vpqは、復元対象である最大サイズの論理ボリュームの復元に要する予想時間である。初期間隔値Lpqは、L3/VrとLmax/Vpqとの差分に応じたデータ量である。
パリティP,Qを用いた復元処理は、磁気テープからの読み出し処理より高速で実行されるため、L3/VrよりLmax/Vpqの方が短くなる場合があり得る。そこで、データ復元部213は、初期間隔値Lpqを用いて復元中のラインの位置を調整することで、最小サイズの論理ボリュームの磁気テープからの読み出し終了タイミングと、最大サイズの論理ボリュームの復元終了タイミングとがほぼ同じになるように制御することができる。
[ステップS43]データ復元部213は、復元対象である最大の論理ボリュームのサイズから、読み出し対象である最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、ステップS42で算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値Lpq以上の場合はステップS44の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値Lpq以上になるまで待機状態となり、最小サイズの論理ボリュームの読み出しが進行して差分データ量が初期間隔値Lpq以上になったとき、ステップS44の処理を実行する。なお、最小サイズの論理ボリュームのうち読み出しが済んでいない残データ量の計算の際には、例えば、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号が参照される。
[ステップS44]データ復元部213は、読み出し制御部212から通知された復元対象の2つの論理ボリュームにおける復元未完了のブロックのうち、「復元中ライン番号1」と同一のライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する最小サイズの論理ボリュームのブロックおよびパリティP,Qのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、復元対象の2つの論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置300に格納する。
ただし、復元対象のブロックが論理ボリュームの先頭に移行するより前の期間では、データ復元部213は、磁気テープから読み出された最小サイズの論理ボリュームのデータではなく、最小サイズの論理ボリュームに対応するダミーデータを用いて復元を行う。最小サイズの論理ボリュームに対応するダミーデータについては、例えば、ディスクアレイ装置300にあらかじめ格納されていたものが利用されてもよいし、あるいは、この時点で生成されてもよい。
[ステップS45]データ復元部213は、復元対象の2つの論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、2つの論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、2つの論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS46の処理を実行する。
[ステップS46]データ復元部213は、復元対象の2つの論理ボリュームの復元を開始してから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度1」の欄の情報を更新する。
また、データ復元部213は、測定情報250の「復元中ライン番号1」の欄のライン番号を、1だけインクリメントする。ただし、データ復元部213は、「復元中ライン番号1」のライン番号が最大サイズの論理ボリュームの最後尾のライン番号と同じになっている場合には、「復元中ライン番号1」のライン番号に0を登録する。これにより、復元対象が論理ボリュームの先頭ラインに移行する。
[ステップS47]データ復元部213は、最大サイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。なお、復元未完了の残データ量の計算の際には、例えば、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号が参照される。また、読み出し未完了の残データ量の計算の際には、例えば、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号が参照される。
データ復元部213は、算出した差分データ量が、所定の差分設定値以下であるかを判定する。データ復元部213は、差分データ量が所定の差分設定値より大きい場合、ステップS44に進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、差分データ量が所定の差分設定値以下である場合、ステップS48の処理を実行する。
なお、差分設定値は、1ブロックのサイズ以上の値に設定されることが望ましい。その理由は、復元対象のブロックと同じライン番号のブロックの読み出しが完了するまでは、復元対象のブロックの復元を開始できないからである。
また、本ステップでは、データ復元部213は、上記判定処理の代わりに、現在の読み出し対象のラインに対して、復元対象のラインが所定ライン数以内まで近づいたかを判定し、近づいた場合にステップS48の処理を行うようにしてもよい。
[ステップS48]データ復元部213は、復元対象の2つの論理ボリュームの復元処理を一時的に停止する。
[ステップS49]データ復元部213は、式(1)に従って初期間隔値Lpqを再計算し、算出した値によって、測定情報250の「初期間隔値1」の欄を更新する。この再計算を行う際、データ復元部213は、最大サイズの論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(1)のLmaxに代入する。また、データ復元部213は、読み出し順が最後から3番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の最小サイズの論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(1)のL3に代入する。さらに、データ復元部213は、Vpq,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された値を代入する。
[ステップS50]データ復元部213は、ステップS47と同様の手順で、最大サイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。データ復元部213は、算出した差分データ量が、ステップS49で算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値Lpq以上である場合、ステップS44の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値Lpq以上になるまで待機状態となり、差分データ量が初期間隔値Lpq以上になったとき、ステップS44の処理を実行する。
上記の図14の処理によれば、データ復元部213は、最大サイズおよび2番目に大きいサイズの各論理ボリュームについて、その途中からパリティP,Qとダミーデータとを用いて復元する。そして、データ復元部213は、各論理ボリュームの最後尾まで復元が完了した後、各論理ボリュームの先頭から、パリティP,Qと、磁気テープからディスクアレイ装置300へ格納済みの他の論理ボリューム(最小サイズの論理ボリューム)のデータとを用いて復元を継続する。これにより、各論理ボリュームに含まれる全データを復元できる。
そして、このような復元処理が、最小サイズの論理ボリュームを磁気テープからディスクアレイ装置300へ読み出す処理と、並行して実行される。
ここで、例えば、最大サイズおよび2番目に大きいサイズの各論理ボリュームの復元を、各論理ボリュームの先頭から行う場合には、最小サイズの論理ボリュームの読み出しがある程度進むまで復元を開始することができない。これに対して、上記処理によれば、最大サイズおよび2番目に大きいサイズの各論理ボリュームの復元を、ダミーデータを用いて各論理ボリュームの途中から開始することで、復元開始時刻を早めることができる。これにより、磁気テープからの読み出し処理とパリティP,Qを用いた復元処理との並列度を高める(すなわち、並列処理される時間を長くする)ことができる。その結果、読み出しが要求された論理ボリュームグループ内の全データをディスクアレイ装置300へ格納する処理全体にかかる時間を、短縮することができる。
また、上記の例では、テープライブラリ装置400から読み出す論理ボリュームグループのうち最後から3番目に読み出す論理ボリュームを最小のサイズの論理ボリュームとしているが、最後から3番目に読み出す論理ボリュームとしては、少なくとも論理ボリュームグループのうち2番目に大きいサイズの論理ボリュームよりも小さいサイズであればよい。ただし、最後から3番目に読み出す論理ボリュームを最小のサイズの論理ボリュームとすれば、他の論理ボリュームよりもダミーデータの領域が広い分、ダミーデータを用いて復元できるブロック数が増えることになる。このため、復元を開始可能な時刻を早めることができる。
さらに、読み出し順が最後の論理ボリュームを最大サイズの論理ボリュームとし、かつ、最後から3番目に読み出す論理ボリュームを最小のサイズの論理ボリュームとした場合、ダミーデータを用いて復元できるブロック数が最大となる。この場合、復元を開始可能な時刻を早めることができ、読み出し処理と復元処理との並列度も高まる。従って、必要な全データをディスクアレイ装置300へ格納する処理全体にかかる時間を、最も短くすることができる。
また、復元対象のうち大きいサイズの論理ボリュームについての復元未完了の残データ量と、磁気テープからの読み出し未完了の残データ量との差分が、所定の差分設定値以下になった場合、データ復元部213は復元処理を停止する。例えば、データ復元部213が復元処理を停止しないと、復元処理対象のブロックが読み出し処理対象のブロックよりも先行してしまう可能性がある。すると、データ復元部213が、パリティP,Qとディスクアレイ装置300に格納済みの論理ボリュームとを用いて復元することができなくなってしまう。そこで、残データ量の差分が所定の差分設定値以下になった場合、データ復元部213が復元処理を停止することで、パリティP,Qとディスクアレイ装置300に格納済みの論理ボリュームとを用いて復元することができなくなるという事態を防止することができる。
次に、図11に示した論理ボリュームグループLVG0を、テープライブラリ装置400から読み出してディスクアレイ装置300に格納する際の処理例について、図15〜図17を用いて説明する。図15は、第2の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その1)を示す図である。図16は、第2の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その2)を示す図である。図17は、第2の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その3)を示す図である。
読み出し制御部212は、最小サイズの論理ボリュームLV2を最後から3番目に読み出し、2番目に大きいサイズの論理ボリュームLV1を最後から2番目に読み出し、最大サイズの論理ボリュームLV0を最後に読み出すように処理順番を設定する。読み出し制御部212は、図15の状態1に示すように、テープライブラリ装置400内の磁気テープからの最小サイズの論理ボリュームLV2の読み出しを開始する。また、読み出し制御部212は、データ復元部213に対して、論理ボリュームLV0,LV1の復元処理の実行を指示する。
データ復元部213は、「復元中ライン番号1」の欄に、論理ボリュームLV2に対応するダミーデータの先頭のライン番号10を登録する。データ復元部213は、初期間隔値Lpqを算出して、測定情報250の「初期間隔値1」の欄に登録する。データ復元部213は、最大の論理ボリュームLV0のサイズから、最小サイズの論理ボリュームLV2のうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値Lpqが示すデータ量以上になるのを待つ(状態1)。
読み出し制御部212による読み出し対象のラインが進んで、差分データ量が初期間隔値Lpq以上になった場合、データ復元部213は、「復元中ライン番号1」に登録したライン番号10と同一の番号のパリティP,Qのブロックと論理ボリュームLV2に対応するダミーデータのブロックと用いて、ライン番号10の論理ボリュームLV0,LV1のブロックのデータについて、復元を開始する(状態2)。このように、読み出し制御部212の書き込み処理とデータ復元部213の復元処理は、並行して行われる。
ここで、状態1,2に示す処理では、例えば、論理ボリュームLV0,LV1の先頭ブロックから、パリティP,Qおよび読み出し済みの論理ボリュームLV2のデータを用いて復元を開始する場合と比較して、復元を開始するタイミングが早くなる。その結果、必要な全データをディスクアレイ装置300へ格納するのにかかる全体の処理時間を短縮することができる。
データ復元部213がライン番号10の論理ボリュームLV0,LV1のブロックを復元した後、データ復元部213は、昇順に論理ボリュームLV0,LV1のブロックを復元する(状態3)。具体的には、論理ボリュームLV0は、ライン番号10〜15のブロックのデータまで復元される。論理ボリュームLV1は、ライン番号10〜12のブロックのデータまで復元される。
データ復元部213は、最大サイズの論理ボリュームLV0の最後尾のライン番号まで復元した後は、先頭のライン番号0のパリティP,Qのブロックと、ディスクアレイ装置300に書き込み済みの論理ボリュームLV2のライン番号0のブロックと用いて、ライン番号0の論理ボリュームLV0,LV1のブロックのデータについて、復元を開始する(状態4)。以後、データ復元部213は、ライン番号を1ずつインクリメントしながら、ライン番号にそれぞれ対応する、パリティP,Qのブロックおよびディスクアレイ装置300に書き込み済みの論理ボリュームLV2のブロックを用いて、論理ボリュームLV0,LV1の復元を継続する。
読み出し制御部212は、論理ボリュームLV2のライン番号9までのブロックについて、テープライブラリ装置400からディスクアレイ装置300への書き込み処理を終了する(状態5)。その後、データ復元部213は、論理ボリュームLV2のライン番号9と同一の番号のパリティP,Qのブロックと用いて、ライン番号9の論理ボリュームLV0,LV1のブロックのデータを復元する。そして、論理ボリュームLV0,LV1の全てのブロックのデータが復元される(状態6)。
ただし、状態2〜5の間で、最大の論理ボリュームLV0のうち未復元の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値Lpqが示すデータ量未満になった場合、データ復元部213は、復元処理を停止する。データ復元部213は、式(1)を用いて、初期間隔値Lpqを再計算する。データ復元部213は、論理ボリュームLV2の読み出しが進んで、上記の差分データ量が、再計算した初期間隔値Lpq以上になった場合、復元処理を再開する。
このように、読み出し制御部212の読み出し処理と、データ復元部213の論理ボリュームLV2に対応するダミーデータとパリティP,Qとを用いて復元する処理とを並行して実行することで、論理ボリュームグループLVG0に属する全論理ボリュームのデータをディスクアレイ装置300に格納するためにかかる時間を短縮できる。
なお、読み出し制御部212が、テープライブラリ装置400から論理ボリュームLV2を読み出す処理と、データ復元部213がパリティP,Qと論理ボリュームLV2に対応するダミーデータとを用いて復元する処理とを実行するのと並行して、データ復元部213が、既にディスクアレイ装置300に格納済みの論理ボリュームLV2のブロックのデータとパリティP,Qとを用いて復元する処理をさらに行ってもよい。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
第2の実施の形態では、それぞれ同一のライン番号に対応するダミーデータのブロックとパリティP,Qのブロックとを用いて、2つの論理ボリュームのデータを同時に復元した。これに対して、第3の実施の形態では、互いに異なるライン番号に対応するダミーデータおよびパリティP,Qのブロックを用いて、2つの論理ボリュームのデータをそれぞれ個別に復元し、かつ、これらの復元処理を並行して行う。
ここで、第3の実施の形態のストレージシステムのシステム構成は、図2で示した第2の実施の形態のストレージシステムと同様である。また、第3の実施の形態における制御装置200が備える処理機能の基本的な構成は、図5と同様である。そこで、第3の実施の形態では、第2の実施の形態と同じ符号、名称を用いる。
第3の実施の形態において、読み出し制御部212が実行する読み出し処理は、第2の実施の形態と同じである。また、第3の実施の形態でも、読み出し制御部212が実行する書き込み処理とデータ復元部213が実行する復元処理は並行して実行される。一方、第3の実施の形態では、データ復元部213による復元処理が第2の実施の形態とは異なる。
次に、第3の実施の形態で各テーブルに追加される項目について説明する。
図18は、LVG管理テーブルの例(その2)を示す図である。LVG管理テーブル240に含まれる各LVG情報241には、「LVサイズ2」の欄が追加される。「LVサイズ2」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、2番目に大きい論理ボリュームのサイズが登録される。
図19は、測定情報の例(その2)を示す図である。測定情報250には、「復元中ライン番号2」、「初期間隔値2」および「復元処理速度2」の各欄が追加される。
ここで、第2の実施の形態と登録される内容が異なる欄についても合わせて説明する。「復元中ライン番号1」の欄には、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームについての復元処理対象のライン番号が登録される。「復元中ライン番号2」の欄には、論理ボリュームグループに属する論理ボリュームのうち、2番目に大きいサイズの論理ボリュームについての復元処理対象のライン番号が登録される。
「初期間隔値1」の欄には、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームを復元する処理で使用されるデータ量が登録される。「初期間隔値2」の欄には、論理ボリュームグループに属する論理ボリュームのうち、2番目に大きいサイズの論理ボリュームを復元する処理で使用されるデータ量が登録される。
「復元処理速度1」の欄には、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームを復元する処理の速度の計測結果が登録される。「復元処理速度2」の欄には、論理ボリュームグループに属する論理ボリュームのうち、2番目に大きいサイズの論理ボリュームを復元する処理の速度の計測結果が登録される。
次に、データ復元部213が、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームを復元する処理を説明する。
図20は、第3の実施の形態のデータ復元部の処理手順(その1)を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
データ復元部213は、図13のステップS31において読み出し制御部212から復元処理の実行指示を受けると、図20の処理を、読み出し制御部212による読み出し処理と並行に実行する。
[ステップS61]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元処理速度1」の欄に所定の初期値を登録する。また、データ復元部213は、測定情報250の「復元中ライン番号1」の欄に、最小サイズの論理ボリュームに対応するダミーデータの先頭のライン番号を登録する。
[ステップS62]データ復元部213は、式(2)に従って初期間隔値L_02を算出し、測定情報250の「初期間隔値1」の欄に登録する。
L_02=Vr{L3/Vr−Lmax/V1} ・・・(2)
Vr、L3、Lmaxは、式(1)と同じ意味なので説明を省略する。
V1は、最大サイズの論理ボリュームの復元時における、データ復元部213によるデータ復元速度の計測値である。データ復元部213は、測定情報250の「復元処理速度1」の欄からV1を取得する。初期段階では、「復元処理速度1」の欄には所定の初期値が登録されており、その後、「復元処理速度1」の欄の情報はデータ復元部213によって随時更新される。
[ステップS63]データ復元部213は、復元対象である最大の論理ボリュームのサイズから、読み出し対象である最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、ステップS62で算出した初期間隔値L_02以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値L_02以上の場合はステップS64の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値L_02以上になるまで待機状態となり、差分データ量が初期間隔値L_02以上になったとき、ステップS64の処理を実行する。
[ステップS64]データ復元部213は、読み出し制御部212から通知された復元対象である最大サイズの論理ボリュームにおける復元未完了のブロックのうち、「復元中ライン番号1」と同一のライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する最小サイズの論理ボリュームのブロックおよびパリティP,Qのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、最大サイズの論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックをディスクアレイ装置300に格納する。
ただし、復元対象のブロックが論理ボリュームの先頭に移行するより前の期間では、データ復元部213は、磁気テープから読み出された最小サイズの論理ボリュームのデータではなく、最小サイズの論理ボリュームに対応するダミーデータを用いて復元を行う。
[ステップS65]データ復元部213は、最大サイズの論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、最大サイズの論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、最大サイズの論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS66の処理を実行する。
[ステップS66]データ復元部213は、最大サイズの論理ボリュームの復元を開始してから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度1」の欄の情報を更新する。
また、データ復元部213は、測定情報250の「復元中ライン番号1」の欄のライン番号を、1だけインクリメントする。ただし、データ復元部213は、「復元中ライン番号1」のライン番号が最大サイズの論理ボリュームの最後尾のライン番号と同じになっている場合には、「復元中ライン番号1」のライン番号に0を登録する。これにより、復元対象が論理ボリュームの先頭ラインに移行する。
[ステップS67]データ復元部213は、最大サイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。なお、復元未完了の残データ量の計算の際には、例えば、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号が参照される。また、読み出し未完了の残データ量の計算の際には、例えば、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号が参照される。
データ復元部213は、算出した差分データ量が所定の差分設定値以下であるかを判定する。データ復元部213は、差分データ量が所定の差分設定値より大きい場合、ステップS64に進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、差分データ量が所定の差分設定値以下である場合、ステップS68の処理を実行する。
[ステップS68]データ復元部213は、最大サイズの論理ボリュームの復元処理を一時的に停止する。
[ステップS69]データ復元部213は、式(2)に従って初期間隔値L_02を再計算し、算出した値によって、測定情報250の「初期間隔値1」の欄を更新する。この再計算を行う際、データ復元部213は、最大サイズの論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(2)のLmaxに代入する。また、データ復元部213は、読み出し順が最後から3番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の最小サイズの論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(2)のL3に代入する。さらに、データ復元部213は、V1,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された値を代入する。
[ステップS70]データ復元部213は、ステップS67と同様の手順で、最大サイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。データ復元部213は、算出した差分データ量が、ステップS69で算出した初期間隔値L_02以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値L_02以上である場合、ステップS64の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値L_02以上になるまで待機状態となり、差分データ量が初期間隔値L_02以上になったとき、ステップS64の処理を実行する。
このようにして、最大サイズの論理ボリュームは、データ復元部213により復元される。
次に、データ復元部213が、論理ボリュームグループに属する論理ボリュームのうち、2番目に大きいサイズの論理ボリュームを復元する処理を説明する。
図21は、第3の実施の形態のデータ復元部の処理手順(その2)を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
データ復元部213は、図13のステップS31において読み出し制御部212から復元処理の実行指示を受けると、図21の処理を、読み出し制御部212による読み出し処理、および、図20に示した最大サイズの論理ボリュームの復元処理と並行に実行する。
[ステップS81]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元処理速度2」の欄に所定の初期値を登録する。また、データ復元部213は、測定情報250の「復元中ライン番号2」の欄に、最小サイズの論理ボリュームに対応するダミーデータの先頭のライン番号を登録する。
[ステップS82]データ復元部213は、式(3)に従って初期間隔値L_12を算出し、測定情報250の「初期間隔値2」の欄に登録する。
L_12=Vr{L3/Vr−L2/V2} ・・・(3)
Vr、L3は、式(1)と同じ意味なので説明を省略する。
L2は、論理ボリュームグループに属する論理ボリュームのうち2番目に大きい論理ボリュームのサイズである。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ2」の欄からL2を取得する。また、L2の値は、2番目に大きいサイズの論理ボリュームのブロックのデータが復元される度に小さくなる。
V2は、2番目に大きい論理ボリュームの復元時における、データ復元部213によるデータ復元速度の計測値である。データ復元部213は、測定情報250の「復元処理速度2」の欄からV2を取得する。初期段階では、「復元処理速度2」の欄には所定の初期値が登録されており、その後、「復元処理速度2」の欄の情報はデータ復元部213によって随時更新される。
[ステップS83]データ復元部213は、復元対象である2番目に大きい論理ボリュームのサイズから、読み出し対象である最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、ステップS82で算出した初期間隔値L_12以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値L_12以上の場合はステップS84の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値L_12以上になるまで待機状態となり、差分データ量が初期間隔値L_12以上になったとき、ステップS84の処理を実行する。
[ステップS84]データ復元部213は、読み出し制御部212から通知された復元対象である2番目に大きいサイズの論理ボリュームにおける復元未完了のブロックのうち、「復元中ライン番号2」と同一のライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する最小サイズの論理ボリュームのブロックおよびパリティP,Qのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、2番目に大きいサイズの論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックをディスクアレイ装置300に格納する。
ただし、復元対象のブロックが論理ボリュームの先頭に移行するより前の期間では、データ復元部213は、磁気テープから読み出された最小サイズの論理ボリュームのデータではなく、最小サイズの論理ボリュームに対応するダミーデータを用いて復元を行う。
[ステップS85]データ復元部213は、2番目に大きいサイズの論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、2番目に大きいサイズの論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、2番目に大きいサイズの論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS86の処理を実行する。
[ステップS86]データ復元部213は、2番目に大きいサイズの論理ボリュームの復元を開始してから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度2」の欄の情報を更新する。
また、データ復元部213は、測定情報250の「復元中ライン番号2」の欄のライン番号を、1だけインクリメントする。ただし、データ復元部213は、「復元中ライン番号2」のライン番号が2番目に大きいサイズの論理ボリュームの最後尾のライン番号と同じになっている場合には、「復元中ライン番号2」のライン番号に0を登録する。これにより、復元対象が論理ボリュームの先頭ラインに移行する。
[ステップS87]データ復元部213は、2番目に大きいサイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。なお、復元未完了の残データ量の計算の際には、例えば、測定情報250の「復元中ライン番号2」の欄に登録されたライン番号が参照される。また、読み出し未完了の残データ量の計算の際には、例えば、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号が参照される。
データ復元部213は、算出した差分データ量が所定の差分設定値以下であるかを判定する。データ復元部213は、差分データ量が所定の差分設定値より大きい場合、ステップS84に進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、差分データ量が所定の差分設定値以下である場合、ステップS88の処理を実行する。
[ステップS88]データ復元部213は、2番目に大きいサイズの論理ボリュームの復元処理を一時的に停止する。
[ステップS89]データ復元部213は、式(3)に従って初期間隔値L_12を再計算し、算出した値によって、測定情報250の「初期間隔値2」の欄を更新する。この再計算を行う際、データ復元部213は、2番目に大きいサイズの論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(3)のL2に代入する。また、データ復元部213は、読み出し順が最後から3番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の最小サイズの論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(2)のL3に代入する。さらに、データ復元部213は、V2,Vrに対して、それぞれ測定情報250の「復元処理速度2」、「読み出し処理速度」の欄に登録された値を代入する。
[ステップS90]データ復元部213は、ステップS87と同様の手順で、2番目に大きいサイズの論理ボリュームのうち復元未完了の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量を算出する。データ復元部213は、算出した差分データ量が、ステップS89で算出した初期間隔値L_12以上であるかを判定する。データ復元部213は、差分データ量が初期間隔値L_12以上である場合、ステップS84の処理を実行する。一方、データ復元部213は、差分データ量が初期間隔値L_12以上になるまで待機状態となり、差分データ量が初期間隔値L_12以上になったとき、ステップS84の処理を実行する。
このようにして、2番目に大きいサイズの論理ボリュームは、データ復元部213により復元される。
次に、図11に示した論理ボリュームグループLVG0を、テープライブラリ装置400から読み出してディスクアレイ装置300に格納する際の処理例について、図22〜図25を用いて説明する。図22は、第3の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その1)を示す図である。図23は、第3の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その2)を示す図である。図24は、第3の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その3)を示す図である。図25は、第3の実施の形態の論理ボリュームグループの読み出し処理および復元処理の具体例(その4)を示す図である。
読み出し制御部212は、最小サイズの論理ボリュームLV2を最後から3番目に読み出し、2番目に大きいサイズの論理ボリュームLV1を最後から2番目に読み出し、最大サイズの論理ボリュームLV0を最後に読み出すように処理順番を設定する。読み出し制御部212は、図22の状態11に示すように、テープライブラリ装置400内の磁気テープからの最小サイズの論理ボリュームLV2の読み出しを開始する。また、読み出し制御部212は、データ復元部213に対して、論理ボリュームLV0,LV1の復元処理の実行を指示する。
データ復元部213は、「復元中ライン番号1」の欄に、論理ボリュームLV2に対応するダミーデータの先頭のライン番号10を登録する。データ復元部213は、初期間隔値L_02を算出して、測定情報250の「初期間隔値1」の欄に登録する。データ復元部213は、最大の論理ボリュームLV0のサイズから、最小サイズの論理ボリュームLV2のうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値L_02が示すデータ量以上になるのを待つ。また、データ復元部213は、初期間隔値L_12を算出して、測定情報250の「初期間隔値2」の欄に登録する。データ復元部213は、論理ボリュームLV1のサイズから、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値L_12が示すデータ量以上になるのを待つ(状態11)。
読み出し制御部212による読み出し対象のラインが進んで、論理ボリュームLV0についての差分データ量が初期間隔値L_02以上となった場合、データ復元部213は、「復元中ライン番号1」に登録したライン番号10と同一の番号のパリティP,Qのブロックと論理ボリュームLV2に対応するダミーデータのブロックと用いて、ライン番号10の論理ボリュームLV0のブロックのデータについて、復元を開始する(状態12)。この後、データ復元部213は、論理ボリュームLV0の末尾方向に対してデータの復元を継続する。
ここで、状態12に示す処理では、例えば、論理ボリュームLV0の先頭ブロックから、パリティP,Qおよび読み出し済みの論理ボリュームLV2のデータを用いて復元を開始する場合と比較して、論理ボリュームLV0の復元を開始するタイミングが早くなる。その結果、必要な全データをディスクアレイ装置300へ格納するのにかかる全体の処理時間を短縮することができる。
さらに、論理ボリュームLV1についての差分データ量が初期間隔値L_12以上となった場合、データ復元部213は、「復元中ライン番号2」に登録したライン番号10と同一の番号のパリティP,Qのブロックと論理ボリュームLV2に対応するダミーデータのブロックと用いて、ライン番号10の論理ボリュームLV1のブロックのデータについて、復元を開始する(状態13)。このように、読み出し制御部212の書き込み処理とデータ復元部213の復元処理は、並行して実行される。
ここで、状態13に示す処理では、例えば、論理ボリュームLV1の先頭ブロックから、パリティP,Qおよび読み出し済みの論理ボリュームLV2のデータを用いて復元を開始する場合と比較して、論理ボリュームLV1の復元を開始するタイミングが早くなる。その結果、必要な全データをディスクアレイ装置300へ格納するのにかかる全体の処理時間を短縮することができる。
なお、復元対象の論理ボリュームLV0,LV1のうち、サイズが大きい方から順に復元を開始することで、必要な全データをディスクアレイ装置300へ格納するのにかかる全体の処理時間を最も短くすることができる。
データ復元部213は、ライン番号15まで論理ボリュームLV0のブロックを復元する。また、データ復元部213は、ライン番号12まで論理ボリュームLV1のブロックを復元する(状態14)。
データ復元部213は、論理ボリュームLV0の最後尾のライン番号15まで復元した後は、先頭のライン番号0のパリティP,Qのブロックと、ディスクアレイ装置300に書き込み済みの論理ボリュームLV2のライン番号0のブロックと用いて、ライン番号0の論理ボリュームLV0のブロックのデータについて復元を開始する(状態15)。以後、データ復元部213は、ライン番号を1ずつインクリメントしながら、論理ボリュームLV0の復元を継続する。
読み出し制御部212は、ディスクアレイ装置300に対する論理ボリュームLV2のデータの書き込み処理を終了する。また、データ復元部213は、論理ボリュームLV1の後尾のライン番号12まで復元した後は、先頭のライン番号0のパリティP,Qのブロックと、ディスクアレイ装置300に書き込み済みの論理ボリュームLV2のライン番号0のブロックと用いて、ライン番号0の論理ボリュームLV1のブロックのデータについて復元を開始する(状態16)。以後、データ復元部213は、ライン番号を1ずつインクリメントしながら、論理ボリュームLV1の復元を継続する。
データ復元部213は、論理ボリュームLV2のライン番号9のブロックと同一の番号のパリティP,Qのブロックと用いて、ライン番号9の論理ボリュームLV0のブロックを復元する。そして、論理ボリュームLV0の全てのブロックが復元される(状態17)。
データ復元部213は、論理ボリュームLV2のライン番号9のブロックと同一の番号のパリティP,Qのブロックと用いて、ライン番号9の論理ボリュームLV1のブロックを復元する。そして、論理ボリュームLV1の全てのブロックが復元される(状態18)。
ただし、状態12から、論理ボリュームLV2の読み出しが完了するまでの期間では、最大の論理ボリュームLV0のうち未復元の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値L_02が示すデータ量未満になった場合、データ復元部213は、論理ボリュームLV0の復元処理を停止する。データ復元部213は、式(2)を用いて、初期間隔値L_02を再計算する。データ復元部213は、論理ボリュームLV2の読み出しが進んで、上記の差分データ量が、再計算した初期間隔値L_02以上になった場合、論理ボリュームLV0の復元処理を再開する。これにより、パリティP,Qとディスクアレイ装置300に格納済みの論理ボリュームLV2のデータとを用いて論理ボリュームLV0を復元できなくなるという事態を防止することができる。
同様に、状態12から、論理ボリュームLV2の読み出しが完了するまでの期間では、論理ボリュームLV1のうち未復元の残データ量から、最小サイズの論理ボリュームのうち読み出し未完了の残データ量を減算した差分データ量が、初期間隔値L_12が示すデータ量未満になった場合、データ復元部213は、論理ボリュームLV1の復元処理を停止する。データ復元部213は、式(3)を用いて、初期間隔値L_12を再計算する。データ復元部213は、論理ボリュームLV2の読み出しが進んで、上記の差分データ量が、再計算した初期間隔値L_12以上になった場合、論理ボリュームLV1の復元処理を再開する。これにより、パリティP,Qとディスクアレイ装置300に格納済みの論理ボリュームLV2のデータとを用いて論理ボリュームLV1を復元できなくなるという事態を防止することができる。
なお、上記の各実施の形態に示したストレージ制御装置10および制御装置200の処理機能は、コンピュータによって実現することができる。その場合、各通信装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Rewritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。
また、以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) n個のデータ(ただし、nは3以上の整数)を第1の記憶装置に書き込む際に、前記n個のデータのうち最大サイズである第1のデータとサイズが同じになるように、前記n個のデータのうち前記第1のデータ以外の各データにダミーデータを付加し、ダミーデータを付加した各データと前記第1のデータとを基に(n−1)個のパリティを算出し、前記(n−1)個のパリティを第2の記憶装置に格納するパリティ算出部と、
前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうち最小サイズの第2のデータを前記第1の記憶装置から読み出す読み出し処理と、前記n個のデータのうち前記第2のデータ以外の複数のデータそれぞれを、前記(n−1)個のパリティとダミーデータとを用いて復元する処理とを、並行して実行する制御部と、
を有することを特徴とするストレージ制御装置。
(付記2) 前記制御部は、前記(n−1)個のパリティとダミーデータとを用いて前記複数のデータを復元する処理が終了した後、前記第2のデータのうち前記第1の記憶装置から読み出し済みのデータと前記(n−1)個のパリティとを用いて、前記複数のデータそれぞれにおける復元されていない残りの領域を復元する処理を、前記読み出し処理と並行して実行することを特徴とする付記1記載のストレージ制御装置。
(付記3) 前記制御部は、前記複数のデータのうち最大サイズのデータにおける、復元が未完了のデータのサイズから、前記第2のデータのうち前記第1の記憶装置からの読み出しが未完了のデータのサイズを減算した差分値が、所定値以下である場合に、前記複数のデータの復元処理を一時的に停止することを特徴とする付記2記載のストレージ制御装置。
(付記4) 前記制御部は、前記複数のデータの復元処理を一時的に停止した後、前記最大サイズのデータのうち復元が未完了のデータのサイズと、前記複数のデータの復元処理の速度と、前記第2のデータのうち前記第1の記憶装置からの読み出しが未完了のデータのサイズと、前記第2のデータの読み出し処理の速度とを用いて、閾値を計算し、前記差分値が前記閾値以上になった場合に、前記複数のデータの復元処理を再開することを特徴とする付記3記載のストレージ制御装置。
(付記5) 前記ストレージ制御装置は、前記n個のデータを含むm個のデータ(ただし、mはnより大きい整数)を前記第1の記憶装置に書き込み、書き込んだ前記m個のデータを前記第1の記憶装置から読み出し、
前記第2のデータは、前記m個のデータのうち最小サイズのデータである、
ことを特徴とする付記1〜4のいずれか1つに記載のストレージ制御装置。
(付記6) 前記第1のデータは、前記m個のデータのうち最大サイズのデータであることを特徴とする付記5記載のストレージ制御装置。
(付記7) 前記制御部は、前記複数のデータそれぞれについての、前記(n−1)個のパリティとダミーデータとを用いた復元処理を、データサイズが大きい順に開始することを特徴とする付記1〜6のいずれか1つに記載のストレージ制御装置。
(付記8) 第1の記憶装置と、
第2の記憶装置と、
n個のデータ(ただし、nは3以上の整数)を前記第1の記憶装置に書き込む際に、前記n個のデータのうち最大サイズである第1のデータとサイズが同じになるように、前記n個のデータのうち前記第1のデータ以外の各データにダミーデータを付加し、ダミーデータを付加した各データと前記第1のデータとを基に(n−1)個のパリティを算出し、前記(n−1)個のパリティを前記第2の記憶装置に格納し、前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうち最小サイズの第2のデータを前記第1の記憶装置から読み出す読み出し処理と、前記n個のデータのうち前記第2のデータ以外の複数のデータそれぞれを、前記(n−1)個のパリティとダミーデータとを用いて復元する処理とを、並行して実行するストレージ制御装置と、
を有することを特徴とするストレージシステム。
(付記9) コンピュータが、
n個のデータ(ただし、nは3以上の整数)を第1の記憶装置に書き込む際に、前記n個のデータのうち最大サイズである第1のデータとサイズが同じになるように、前記n個のデータのうち前記第1のデータ以外の各データにダミーデータを付加し、ダミーデータを付加した各データと前記第1のデータとを基に(n−1)個のパリティを算出し、前記(n−1)個のパリティを第2の記憶装置に格納し、
前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうち最小サイズの第2のデータを前記第1の記憶装置から読み出す読み出し処理と、前記n個のデータのうち前記第2のデータ以外の複数のデータそれぞれを、前記(n−1)個のパリティとダミーデータとを用いて復元する処理とを、並行して実行する、
ことを特徴とするストレージ制御方法。
(付記10) 前記コンピュータが、前記(n−1)個のパリティとダミーデータとを用いて前記複数のデータを復元する処理が終了した後、前記第2のデータのうち前記第1の記憶装置から読み出し済みのデータと前記(n−1)個のパリティとを用いて、前記複数のデータそれぞれにおける復元されていない残りの領域を復元する処理を、前記読み出し処理と並行して実行することを特徴とする付記9記載のストレージ制御方法。
(付記11) 前記コンピュータが、前記複数のデータのうち最大サイズのデータにおける、復元が未完了のデータのサイズから、前記第2のデータのうち前記第1の記憶装置からの読み出しが未完了のデータのサイズを減算した差分値が、所定値以下である場合に、前記複数のデータの復元処理を一時的に停止することを特徴とする付記10記載のストレージ制御方法。
(付記12) 前記コンピュータが、前記複数のデータの復元処理を一時的に停止した後、前記最大サイズのデータのうち復元が未完了のデータのサイズと、前記複数のデータの復元処理の速度と、前記第2のデータのうち前記第1の記憶装置からの読み出しが未完了のデータのサイズと、前記第2のデータの読み出し処理の速度とを用いて、閾値を計算し、前記差分値が前記閾値以上になった場合に、前記複数のデータの復元処理を再開することを特徴とする付記11記載のストレージ制御方法。
(付記13) 前記コンピュータが、前記n個のデータを含むm個のデータ(ただし、mはnより大きい整数)を前記第1の記憶装置に書き込み、書き込んだ前記m個のデータを前記第1の記憶装置から読み出し、
前記第2のデータは、前記m個のデータのうち最小サイズのデータである、
ことを特徴とする付記9〜12のいずれか1つに記載のストレージ制御方法。
(付記14) 前記第1のデータは、前記m個のデータのうち最大サイズのデータであることを特徴とする付記13記載のストレージ制御方法。
(付記15) 前記複数のデータそれぞれについての、前記(n−1)個のパリティとダミーデータとを用いた復元処理は、データサイズが大きい順に開始されることを特徴とする付記9〜14のいずれか1つに記載のストレージ制御方法。