以下、実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態〕
図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は、複数のデータを第1の記憶装置21に書き込む処理と、書き込んだ複数のデータを第1の記憶装置21から読み出す処理とを実行する。以下の説明では、ストレージ制御装置10が第1の記憶装置21に書き込むデータの数をn(ただし、nは2以上の整数)とする。図1では、n個のデータをデータ#1,・・・,データ#nと表している。
ここで、n個のデータのそれぞれは、例えば、1つのファイルであってもよく、あるいは、論理ボリュームのように複数のファイルを含むデータ群であってもよい。また、n個のデータは、例えば、1つのグループとして管理されるようにユーザによってあらかじめ設定されたものである。
ストレージ制御装置10は、n個のデータの読み書きに関する処理機能として、パリティ算出部11と読み出し制御部12とを備える。
パリティ算出部11は、n個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを第2の記憶装置22に格納する。
ここで、パリティ算出部11がパリティを算出するタイミングは、第1の記憶装置21に書き込まれたn個のデータが、ストレージ制御装置10に読み出されるより前の任意のタイミングであればよい。すなわち、パリティ算出部11によって、パリティは、n個のデータが第1の記憶装置21からストレージ制御装置10に読み出されるより前に、あらかじめ第2の記憶装置22に格納される。
また、パリティ算出部11は、ストレージ制御装置10がn個のデータを第1の記憶装置21に書き込むより前にパリティを算出することが望ましい。これにより、パリティ算出部11は、例えばストレージ制御装置10内のRAM(Random Access Memory)や第2の記憶装置22など、第1の記憶装置21よりアクセス速度の高い記憶装置からn個のデータを読み込み、パリティを高速に算出することができる。
なお、n個のデータのそれぞれは、一定サイズであっても、あるいは一定サイズでなくてもよい。ただし、n個のデータのそれぞれが一定サイズでない場合、パリティ算出部11は、例えば次のようにしてm種類のパリティを算出する。パリティ算出部11は、n個のデータのそれぞれのサイズが同じになるように、n個のデータのうち、少なくとも、最大サイズのデータを除くデータのそれぞれに対してダミーデータを付加する。パリティ算出部11は、ダミーデータの付加によってそれぞれのサイズが同じになったn個のデータを基に、m種類のパリティを算出する。なお、付加された各ダミーデータは、n個のデータとともに第1の記憶装置21に書き込まれる必要はない。
読み出し制御部12は、第1の記憶装置21に格納されたn個のデータを読み出す際に、n個のデータのうちの1つ(例えば、図1のデータ#n)を、第1の記憶装置21から直接読み出す代わりに、n個のデータのうち第1の記憶装置21から読み出し済みの他のデータ(例えば、図1のデータ#1〜データ#(n−1))と、第2の記憶装置22に格納されたパリティとを用いて、計算によって復元する。計算によってデータが復元される時間は、同じデータが第1の記憶装置21から読み出される時間より短いことから、n個のデータ全体の読み出しに要する時間を短縮することができる。
また、読み出し制御部12は、計算によるデータの復元処理を、n個のデータのうち他の1つのデータを第1の記憶装置21から読み出す処理と並列に実行してもよい。この場合、読み出し制御部12は、第1の記憶装置21からn個のデータのうち(n−2)個のデータを読み出す。その後、読み出し制御部12は、残りの2個のデータのうち第1のデータ(例えば、図1のデータ#(n−1))を第1の記憶装置21から読み出す処理と、第1の記憶装置21から読み出し済みの(n−2)個のデータ、第1のデータのうち第1の記憶装置21から読み出し済みの分割データ、および第2の記憶装置22に格納されたパリティを用いて、残りの2個のデータのうち第2のデータ(例えば、図1のデータ#n)を復元する処理とを、並列に実行する。このように、第1のデータの読み出し処理と第2のデータの復元処理とが並列に実行されることで、n個のデータ全体の読み出しに要する時間をさらに短縮することができる。
なお、以上の第1の実施の形態では、パリティ算出部11は1種類のパリティを算出するものとしたが、パリティ算出部11は、例えば、2種類のパリティを算出して第2の記憶装置22に格納してもよい。この場合、読み出し制御部12は、n個のデータを第1の記憶装置21から読み出す際に、n個のデータのうち最大で2個のデータを、第1の記憶装置21から読み出す代わりに計算によって復元することができる。
〔第2の実施の形態〕
図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は、CPU(Central Processing Unit)201によって装置全体が制御されている。CPU201には、バス209を介して、RAM202および複数の周辺機器が接続されている。
RAM202は、制御装置200の主記憶装置として使用される。RAM202には、CPU201に実行させるファームウェアプログラムの少なくとも一部が一時的に格納される。また、RAM202には、CPU201による処理に必要な各種データが格納される。
バス209に接続されている周辺機器としては、SSD203、入力インタフェース204、光学ドライブ装置205、ホストインタフェース206、ディスクインタフェース207およびテープインタフェース208がある。
SSD203は、制御装置200の二次記憶装置として使用される。SSD203には、ファームウェアプログラムおよび各種データが格納される。なお、二次記憶装置としては、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
入力インタフェース204には、例えば、各種の操作キーなどを備える入力装置204aが接続可能になっている。入力インタフェース204は、入力装置204aからの信号をバス209を介してCPU201に送信する。なお、入力装置204aは、制御装置200に搭載されていてもよい。
光学ドライブ装置205は、レーザ光などを利用して、光ディスク205aに記録されたデータの読み取りを行う。光ディスク205aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク205aには、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Rewritable)などがある。
ホストインタフェース206は、ホスト装置500との間でデータを送受信する通信インタフェースである。ディスクインタフェース207は、ディスクアレイ装置300との間でデータを送受信する通信インタフェースである。テープインタフェース208は、テープライブラリ装置400との間でデータを送受信する通信インタフェースである。
なお、ホスト装置500についても、制御装置200と同様に、CPU、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のCPU201が所定のファームウェアプログラムを実行することによって実現される。
また、制御装置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に転送する際に、論理ボリュームグループに属する各論理ボリュームのデータを用いてパリティを算出し、算出したパリティをディスクアレイ装置300に格納する。
読み出し制御部212は、仮想テープ制御部221またはLVG読み出し制御部222からの指示に応じて、テープライブラリ装置400に対して磁気テープからのデータ読み出しを要求する。読み出し制御部212は、読み出し要求に応じてテープライブラリ装置400から送信されたデータを、ディスクアレイ装置300に格納する。また、読み出し制御部212は、仮想テープ制御部221からの指示に応じて、ディスクアレイ装置300からデータを読み出し、仮想テープ制御部221に転送する。
ここで、読み出し制御部212は、論理ボリュームグループ単位でテープライブラリ装置400からのデータ読み出しを要求された場合、論理ボリュームグループに属する論理ボリュームのうち一部の論理ボリュームを、テープライブラリ装置400から読み出さずに、データ復元部213にパリティを用いて復元させる。テープライブラリ装置400からのデータ読み出しに要する時間は、例えばディスクアレイ装置300からのデータ読み出しに要する時間と比較して長い。上記のように、論理ボリュームグループ内の一部の論理ボリュームがデータ復元部213によって復元されて、テープライブラリ装置400から実際に読み出されるデータ量が減少することで、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
データ復元部213は、論理ボリュームグループ内の一部の論理ボリュームを、同じ論理ボリュームグループ内のデータのうちテープライブラリ装置400から読み出し済みのデータと、ディスクアレイ装置300に格納されたパリティとを用いて、復元する。
仮想テープ制御部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管理テーブルに登録される情報の例を示す図である。LVG管理テーブル240は、論理ボリュームグループに属する論理ボリュームを管理するための情報を保持するとともに、論理ボリュームグループをテープライブラリ装置400内の磁気テープから読み出す際に必要となる情報を保持する。
LVG管理テーブル240には、論理ボリュームグループのすべての共通の情報として「パリティサイズ」の欄が設けられている。「パリティサイズ」の欄には、書き込み制御部211が1回のパリティ演算によって算出するパリティのサイズが登録される。このパリティのサイズは、パリティ演算の際に論理ボリュームを分割して得られるブロック1つ分のサイズと等しい。なお、ブロックについては後で詳しく説明する。
また、LVG管理テーブル240には、論理ボリュームグループごとにLVG情報241が登録される。各LVG情報241には、「LVG番号」、「LV数」、「LV番号」、「パリティ種別」、「LVサイズ1」、「LVサイズ2」、「LVサイズ3」および「ライン数」の各欄が設けられている。
「LVG番号」の欄には、対応する論理ボリュームグループを識別するための識別番号が登録される。「LV数」の欄には、対応する論理ボリュームグループに属する論理ボリュームの数が登録される。「LV番号」の欄には、対応する論理ボリュームグループに属する各論理ボリュームを識別するための識別番号のリストが登録される。なお、どの論理ボリュームグループにどの論理ボリュームを所属させるかは、ホスト装置500を通じてユーザが設定可能であり、「LV数」および「LV番号」の各欄には、ユーザの設定操作に応じた情報が登録される。
「パリティ種別」の欄には、対応する論理ボリュームグループをテープライブラリ装置400内の磁気テープに書き込む際に、書き込み制御部211に算出させるパリティの種別が登録される。パリティの種別とは、1種類のパリティ(パリティP)が算出させる「シングルパリティ」か、あるいは2種類のパリティ(パリティPとパリティQ)が算出される「ダブルパリティ」かを識別するための情報である。なお、「パリティ種別」の欄についても、例えば、ユーザの設定操作に応じた情報が登録される。
「LVサイズ1」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大の論理ボリュームのサイズが登録される。「LVサイズ2」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、2番目に大きい論理ボリュームのサイズが登録される。「LVサイズ3」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、3番目に大きい論理ボリュームのサイズが登録される。
「ライン数」の欄には、対応する論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームから得られるブロックの数を示す。「ライン数」の欄の情報は、「LVサイズ1」の欄に登録されたサイズを「パリティサイズ」の欄に登録されたサイズで除算することで得られる。
「LVサイズ1」、「LVサイズ2」、「LVサイズ3」および「ライン数」の各欄の情報は、例えば、ユーザによって論理ボリュームグループに所属させる論理ボリュームが設定されたときに、仮想テープ制御部221によって自動的に登録される。なお、「LVサイズ3」の欄には、「パリティ種別」の欄の登録情報がダブルパリティを示す場合にのみ、情報が登録されればよい。
さらに、LVG情報241には、ラインごとにライン管理情報242が登録される。LVG情報241に登録されるライン管理情報242の数は、「ライン数」の欄に登録されている数と一致する。ライン管理情報242には、「ライン番号」および「先頭アドレス」の各欄が設けられている。
「ライン番号」の欄には、対応するラインを識別するための識別番号が登録される。この識別番号は、ラインの先頭から順に割り当てられる。「先頭アドレス」の欄には、対応するラインの先頭からの位置を示す情報が登録される。先頭のラインのアドレスは「0」であり、次のラインのアドレスは、前のラインのアドレスに、「パリティサイズ」の欄に登録されたサイズに対応する分のアドレスが加算された値となる。
また、ライン管理情報242には、パリティごとにパリティ管理情報243が登録される。「パリティ種別」の欄の登録情報がシングルパリティを示す場合、ライン管理情報242にはパリティ管理情報243が1つ登録される。一方、「パリティ種別」の欄の登録情報がダブルパリティを示す場合、ライン管理情報242にはパリティ管理情報243が2つ登録される。
パリティ管理情報243は、「LVG番号」で識別される論理ボリュームグループおよび「ライン番号」で識別されるラインに対応するパリティが、ディスクアレイ装置300の記憶領域のうちのどこに格納されているかを示すものである。すなわち、パリティ管理情報243で管理されるパリティとは、1つの論理ボリュームグループから算出されるひとまとめのパリティを、ライン単位で分割したデータを示す。
パリティ管理情報243には、「パリティ番号」、「格納先LV番号」および「先頭アドレス」の各欄が設けられている。「パリティ番号」の欄には、対応するパリティを識別するための識別番号である。なお、同一の論理ボリュームグループにパリティには、例えば、ライン順に連続した識別番号が付与される。「格納先LV番号」の欄には、対応するパリティが格納された、ディスクアレイ装置300上の論理ボリュームの識別番号が登録される。なお、「格納先LV番号」が示す論理ボリュームは、論理ボリュームグループに属していない論理ボリュームの1つである。「先頭アドレス」の欄には、対応するパリティの記憶領域の先頭部分が、「格納先LV番号」が示す論理ボリューム内のどの位置かを示す情報が登録される。
図8は、測定情報に登録される情報の例を示す図である。
測定情報250は、論理ボリュームグループを単位として、テープライブラリ装置400内の磁気テープからディスクアレイ装置300に対してデータが読み出される際に、読み出し制御部212およびデータ復元部213によって登録され、また参照される情報である。測定情報250には、「LVG番号」、「読み出し中ライン番号」、「復元中ライン番号1」、「復元中ライン番号2」、「初期間隔値1」、「初期間隔値2」、「読み出し処理速度」、「復元処理速度1」および「復元処理速度2」の各欄が設けられる。
「LVG番号」の欄には、読み出し処理対象の論理ボリュームグループを識別するための識別番号が登録される。読み出し制御部212は、ある論理ボリュームグループをテープライブラリ装置400内の磁気テープから読み出す処理を開始する際に、その論理ボリュームグループの識別番号を「LVG番号」の欄に登録した測定情報250を、RAM202に生成する。それ以後、論理ボリュームグループ全体がディスクアレイ装置300に書き込まれるまでの間、生成された測定情報250における「LVG番号」以外の欄の情報が、読み出し制御部212またはデータ復元部213によって随時更新される。
「読み出し中ライン番号」の欄には、テープライブラリ装置400内の磁気テープから読み出し中の論理ボリュームにおいて、どのラインのデータが読み出し中であるかを示すライン番号が登録される。
「復元中ライン番号1」および「復元中ライン番号2」の各欄には、パリティを用いて復元中の論理ボリュームにおいて、どのラインのデータが復元中であるかを示すライン番号が登録される。「復元中ライン番号1」の欄には、後述する処理例1,2における復元処理でのライン番号、および、後述する処理例3におけるパリティPを用いた復元処理でのライン番号が登録される。「復元中ライン番号2」の欄には、処理例3におけるパリティQを用いた復元処理でのライン番号が登録される。
「初期間隔値1」および「初期間隔値2」の各欄には、パリティを用いた復元処理を開始するタイミング、または再開するタイミングを決定するために用いられるライン数が登録される。データ復元部213は、ある論理ボリュームの復元処理を実行する際に、その論理ボリュームにおける復元中のラインと、その論理ボリュームより読み出し順が1つ前の論理ボリュームにおける読み出し中または復元中のラインとの間隔が、「初期間隔値1」または「初期間隔値2」の欄に登録されたライン数以上になるようにする。
「初期間隔値1」の欄には、後述する処理例1,2における復元処理で使用されるライン数が登録され、「初期間隔値2」の欄には、処理例3におけるパリティQを用いた復元処理で使用されるライン数が登録される。「初期間隔値1」および「初期間隔値2」の各欄の情報は、データ復元部213によって計算される。
「読み出し処理速度」の欄には、読み出し制御部212による磁気テープからの論理ボリュームの読み出し処理速度の計測結果が登録される。「復元処理速度1」および「復元処理速度2」の各欄には、データ復元部213によるパリティを用いた論理ボリュームの復元処理速度の計測結果が登録される。「復元処理速度1」の欄には、後述する処理例1,2における復元処理の速度の計測結果が登録され、「復元処理速度2」の欄には、処理例3におけるパリティ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によって参照される。
ところで、書き込み制御部211は、例えば、1種類のパリティを算出してもよく、あるいは、異なる計算方法によって2種類のパリティ(パリティP,Q)を算出してもよい。そこで、以下の説明では、1種類のパリティが算出される場合の例を「処理例1」として説明し、2種類のパリティが算出される場合の例を「処理例2」および「処理例3」として説明する。
<処理例1>
図10は、処理例1におけるパリティ算出処理を説明するための図である。以下、例として、論理ボリュームLV0〜LV2が、1つの論理ボリュームグループLVG0に属しているものとして説明する。
論理ボリュームグループに属する複数の論理ボリュームは、それぞれ同一のサイズであるとは限らない。そこで、書き込み制御部211は、パリティを算出する際に、論理ボリュームグループに属する論理ボリュームの後端にダミーデータを付加して、各論理ボリュームのサイズを均等化する。
ダミーデータは、「0」などのあらかじめ決められた一律の値を有する。また、ダミーデータは、論理ボリュームグループに属する論理ボリュームのうち、少なくとも、最大サイズの論理ボリューム以外の論理ボリュームに対して付加されればよい。図10の例では、同一論理ボリュームグループに属する論理ボリュームLV0〜LV2のうち、論理ボリュームLV2のサイズが最大となっている。書き込み制御部211は例えば、図10の下側に示すように、論理ボリュームLV0,LV1のそれぞれに対してダミーデータを付加することで、論理ボリュームLV0〜LV2のサイズを均等化する。
なお、これ以降、説明を簡単にするために、論理ボリュームの後端にダミーデータが付加されているとき、付加されたダミーデータを含めた全体を「論理ボリューム」と称することとする。ただし、ダミーデータは、パリティ算出のために一時的に付加されるデータであって、テープライブラリ装置400の磁気テープに対して実際に書き込まれる訳ではない。
サイズの均等化処理を実行した後、書き込み制御部211は、論理ボリュームLV0〜LV2のそれぞれを先頭から一定サイズごとに分割したブロックごとに、パリティを算出する。ここで、論理ボリュームグループに属する各論理ボリューム、および、各論理ボリュームから算出されたパリティのそれぞれの先頭からのブロックの番号を、ライン番号によって表す。書き込み制御部211は、論理ボリュームグループに属する各論理ボリュームにおける同一のライン番号に対応するブロックを用いて、パリティをブロックごとに算出する。
例えば、図10において、パリティにおけるライン番号0のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号0のブロックを基に算出される。同様に、パリティにおけるライン番号1のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号1のブロックを基に算出される。
また、パリティにおけるライン番号10のブロックは、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号10のブロックを基に算出されるが、論理ボリュームLV1におけるライン番号10のブロックとしてダミーデータが使用される。このように、書き込み制御部211は、後端にダミーデータを付加することで、論理ボリュームグループに属する論理ボリュームのサイズが均等でない場合でも、これらの論理ボリュームのデータを基にパリティを算出できるようになる。
なお、パリティの算出処理の際には、ディスクアレイ装置300の記憶領域に、付加されるダミーデータ全体の記憶領域が確保される必要はない。例えば、書き込み制御部211は、ディスクアレイ装置300の記憶領域に1ブロック分のダミーデータを格納しておく。そして、書き込み制御部211は、あるライン番号に対応するパリティのブロックを算出する際にダミーデータが必要な場合には、格納されている1ブロック分のダミーデータをディスクアレイ装置300から読み込む。
図11は、論理ボリュームの一部のみが更新された場合のパリティ算出処理について説明するための図である。
書き込み制御部211は、新規に生成された論理ボリュームグループのデータをテープライブラリ装置400内の磁気テープに書き込む場合には、図10に示したように、パリティ全体を新たに算出して、ディスクアレイ装置300に書き込む。一方、論理ボリュームグループのデータを1回以上テープライブラリ装置400の磁気テープに書き込んだことがある場合には、この論理ボリュームグループに対応するパリティがディスクアレイ装置300にすでに格納されていることになる。書き込み制御部211は、このような状態から、論理ボリュームグループのデータを再度、テープライブラリ装置400の磁気テープに書き込む場合には、論理ボリュームグループ内のデータのうちの更新された部分に対応するパリティのブロックについてのみ、再計算を行えばよい。
例えば、図11の上段に示すように、論理ボリュームLV0におけるライン番号0のブロックと、論理ボリュームLV2におけるライン番号1のブロックとが更新されたものとする。この場合、図11の下段に示すように、書き込み制御部211は、論理ボリュームLV0〜LV2をテープライブラリ装置400の磁気テープに書き込む際に、ディスクアレイ装置300に格納されているパリティのうち、ライン0,1に対応するブロックのみを再計算して、ディスクアレイ装置300に上書き保存する。具体的には、書き込み制御部211は、パリティにおけるライン番号0のブロックを、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号0のブロックを基に再計算する。また、書き込み制御部211は、パリティにおけるライン番号1のブロックを、論理ボリュームLV0〜LV2のそれぞれにおけるライン番号1のブロックを基に再計算する。
図12は、テープライブラリ装置内の磁気テープに対する論理ボリュームグループ単位での書き込み処理手順の例を示すフローチャートである。
[ステップS11]仮想テープ制御部221は、書き込み制御部221に対して、論理ボリュームグループを識別するLVG番号を指定し、磁気テープへの書き込みを要求する。
[ステップS12]書き込み制御部211は、LVG管理テーブル240を参照して、仮想テープ制御部221から指定された論理ボリュームグループに属する論理ボリュームを特定する。
[ステップS13]書き込み制御部211は、ステップS12で特定した各論理ボリュームのサイズをLV管理テーブル240から読み出し、各論理ボリュームのサイズが同じであるかを判定する。書き込み制御部211は、各論理ボリュームのサイズが同じである場合、ステップS15の処理を実行する。一方、書き込み制御部211は、各論理ボリュームのうち少なくとも1つのサイズが他の論理ボリュームのサイズと異なる場合、ステップS14の処理を実行する。
[ステップS14]書き込み制御部211は、特定した論理ボリュームのうち、少なくとも、最大サイズの論理ボリューム以外の論理ボリュームに対して、ダミーデータを付加する。これにより、書き込み制御部211は、各論理ボリュームのサイズを均等化する。
[ステップS15]書き込み制御部211は、各論理ボリュームのブロックをライン番号順にディスクアレイ装置300から読み出し、パリティを算出する。書き込み制御部211は、算出したパリティを、ディスクアレイ装置300におけるフローティング領域に属する所定の論理ボリュームに格納する。
書き込み制御部211は、パリティにおける1つのライン番号に対応するブロックを算出するたびに、LVG管理テーブル240に対して、そのライン番号に対応するライン管理情報242を登録する。なお、ステップS15では、ライン管理情報242内のパリティ管理情報243は、1つのみ登録される。
[ステップS16]書き込み制御部211は、ステップS12で特定した各論理ボリュームのデータをディスクアレイ装置300からテープライブラリ装置400に転送し、テープライブラリ装置400に対して、転送したデータを磁気テープに格納するように指示する。テープライブラリ装置400は、例えば、テープ格納部421から未使用の磁気テープを順次選択して、選択した磁気テープをテープドライブ411,412のいずれかにマウントし、書き込み制御部211から受信したデータをマウントされた磁気テープに書き込んでいく。書き込み制御部211は、各論理ボリュームが書き込まれた磁気テープの識別番号や書き込み位置情報を、テープライブラリ装置400から受信し、LV管理テーブル230における対応する論理ボリュームのレコードに登録する。
次に、制御装置200が論理ボリュームグループ単位でのテープライブラリ装置400の磁気テープからデータを読み出し、ディスクアレイ装置300に格納する処理について説明する。
書き込み制御部211による上記処理により、テープライブラリ装置400の磁気テープに格納された論理ボリュームグループに対応するパリティが、ディスクアレイ装置300に格納されている。この処理例1のように1種類のパリティが格納されている場合、論理ボリュームグループに属する論理ボリュームのうちの1つは、その他の論理ボリュームとパリティとから復元することができる。
そこで、読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、指示された論理ボリュームグループに属する論理ボリュームのうち、1つを除く論理ボリュームを、テープライブラリ装置400の磁気テープから読み出す。また、読み出し制御部212は、残り1つの論理ボリュームを、磁気テープから読み出さずに、読み出し済みの論理ボリュームのデータとディスクアレイ装置300に格納されたパリティとを用いて、データ復元部213に復元させる。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
さらに、データ復元部213による論理ボリュームの復元処理は、読み出し制御部212による他の1つの論理ボリュームの磁気テープからの読み出し処理と、並列に実行される。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間がさらに短縮される。
ここではまず、図10に示した論理ボリュームグループLVG0が、テープライブラリ装置400からディスクアレイ装置300に読み出される際の処理例について、図13,図14を用いて説明する。
図13,図14は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。この処理例1では、読み出し制御部212は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。ここで、読み出し順が最後である論理ボリュームは、磁気テープから読み出されずに、データ復元部213によって復元されるものとなる。
図13,図14の例では、論理ボリュームLV0〜LV2のうち、論理ボリュームLV1のサイズが最も小さく、論理ボリュームLV2のサイズが最も大きい。このため、読み出し制御部212は、読み出し順を、論理ボリュームLV1,LV0,LV2の順と決定し、まず、テープライブラリ装置400内の磁気テープからの論理ボリュームLV1の読み出しを開始する。図13の状態1は、論理ボリュームLV1におけるライン番号0,1の各ブロックの読み出しが完了し、ライン番号2のブロックが読み出し中である状態を示す。
読み出し制御部212は、論理ボリュームLV1の全ブロックの読み出しが完了すると、図13の状態2に示すように、論理ボリュームLV0の読み出しを開始する。また、読み出し制御部212は、読み出しを開始した論理ボリュームLV0が、読み出し順が最後から2番目とされていたものであると判定すると、データ復元部213に対して、読み出し順が最後である論理ボリュームLV2の復元処理の実行を指示する。
データ復元部213は、初期間隔値Lpを算出して、測定情報250の「初期間隔値1」の欄に登録する。この初期間隔値Lpは、ライン数を表す1以上の整数である。データ復元部213は、論理ボリュームLV0の読み出し処理が、初期間隔値Lpが示すライン数分のブロックについて完了したとき、論理ボリュームLV2の復元処理を開始する。例えば、初期間隔値Lpがライン数「3」である場合、データ復元部213は、図13の状態3に示すように、論理ボリュームLV0におけるライン番号2のブロックの読み出しが完了して、ライン番号3のブロックの読み出しが開始されると、論理ボリュームLV2の復元処理を開始する。
初期間隔値Lpは、次の式(1)に従って算出される。
Lp=Vr(L2/Vr−Lmax/Vp)/Bs ・・・(1)
ここで、Lmaxは、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち最大の論理ボリュームのサイズであり、このサイズは復元対象の論理ボリューム(図14では論理ボリュームLV2)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ1」の欄からLmaxを取得する。
L2は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち2番目に大きい論理ボリュームのサイズであり、このサイズは読み出し中の論理ボリューム(図14では論理ボリュームLV0)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ2」の欄からL2を取得する。
Vpは、データ復元部213によるデータ復元速度の計測値である。データ復元部213は、測定情報250の「復元処理速度1」の欄からVpを取得する。図13の状態2のような初期段階では、「復元処理速度1」の欄には所定の初期値が登録されており、その後、「復元処理速度1」の欄の情報はデータ復元部213によって随時更新される。
Vrは、現在読み出し中の論理ボリュームについての、読み出し制御部211による読み出し速度の計測値である。データ復元部213は、測定情報250の「読み出し処理速度」の欄からVrを取得する。初期段階では、「読み出し処理速度」の欄には所定の初期値が登録されている。ここで言う初期段階とは、図13における論理ボリュームLV0の読み出しが完了する前までの段階であり、図13の状態2も初期段階に対応する。その後、「読み出し処理速度」の欄の情報は読み出し制御部211によって随時更新される。
Bsは、1ブロック当たりのデータサイズである。
図13の例を挙げて説明すると、式(1)におけるL2/Vrは、論理ボリュームLV0の読み出しに要する予想時間であり、Lmax/Vpは、論理ボリュームLV2の復元に要する予想時間である。論理ボリュームLV0の磁気テープからの読み出し速度より、論理ボリュームLV2の復元処理速度の方が高いことから、L2/VrよりLmax/Vpの方が短くなる場合があり得る。そこで、データ復元部213は、論理ボリュームLV2の復元開始タイミングを、L2/VrとLmax/Vpとの差分に応じたライン数分だけ、論理ボリュームLV0の読み出し開始タイミングから遅延させる。これにより、データ復元部213は、論理ボリュームLV0の磁気テープからの読み出し終了タイミングと、論理ボリュームLV2の復元終了タイミングとがほぼ同じになるように制御する。
ただし、初期間隔値Lpの値は1以上の整数であり、式(1)の計算では、小数点以下第1位の値を切り上げにするとともに、切り上げ後の値が1未満になる場合、計算結果は1に固定される。初期間隔値Lpを1以上にする理由は、読み出し中の論理ボリュームのブロックのうち、復元対象のブロックと同一のライン番号のブロックの読み出しが完了するまでは、データ復元部213は復元対象のブロックの復元処理を開始できないからである。例えば図13において、復元対象のブロックのライン番号を0とすると、データ復元部213は、論理ボリュームLV0のブロックのうち、復元対象のブロックと同一のライン番号0のブロックの読み出しが完了するまでは、復元対象のブロックを復元できない。このため、データ復元部213は、復元対象のブロックのライン番号が、読み出し中のブロックのライン番号より1以上小さくなるように、復元開始タイミングを決定する。
次に、論理ボリュームLV2の復元処理が開始された後の処理について説明する。データ復元部213は、論理ボリュームLV2のブロックを先頭ブロックから順に復元していく。データ復元部213は、論理ボリュームLV2のあるブロックを復元対象としたとき、ディスクアレイ装置300に格納されたパリティおよび他の読み出し済みの論理ボリュームのそれぞれにおける、復元対象ブロックと同一ライン番号のブロックを用いて、論理ボリュームLV2の復元対象ブロックを復元する。
例えば、図13の状態3に示すように、データ復元部213は、パリティ、論理ボリュームLV1および論理ボリュームLV0のそれぞれにおけるライン番号0のブロックをディスクアレイ装置300から読み出し、読み出した各ブロックを用いて、論理ボリュームLV2におけるライン番号0のブロックを復元する。また、図14の状態4に示すように、データ復元部213は、パリティ、論理ボリュームLV1および論理ボリュームLV0のそれぞれにおけるライン番号2のブロックをディスクアレイ装置300から読み出し、読み出した各ブロックを用いて、論理ボリュームLV2におけるライン番号2のブロックを復元する。
なお、データ復元部213は、復元処理の実行の際、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、論理ボリュームLV2のすべてのブロックを復元する。例えば、データ復元部213は、ライン番号10を復元対象とした場合、パリティおよび論理ボリュームLV0のそれぞれにおけるライン番号10のブロックと、論理ボリュームLV1に対応する1ブロック分のダミーデータとを用いて、論理ボリュームLV2におけるライン番号10のブロックを復元する。また、データ復元部213は、ライン番号11を復元対象とした場合、パリティにおけるライン番号11のブロックと、論理ボリュームLV1に対応する1ブロック分のダミーデータと、論理ボリュームLV0に対応する1ブロック分のダミーデータとを用いて、論理ボリュームLV2におけるライン番号11のブロックを復元する。
データ復元部213は、論理ボリュームLV2の復元処理を、読み出し制御部212による論理ボリュームLV0の読み出し処理と並行して実行する。ここで、論理ボリュームLV2における復元対象のブロックのライン番号が、論理ボリュームLV0における読み出し対象ブロックのライン番号と一致してしまうことがあり得る。この場合、データ復元部213は、論理ボリュームLV0のブロックのうち、復元対象のブロックと同一のライン番号のブロックの読み出しが完了するまでは、復元対象のブロックの復元処理を実行できなくなる。このようなケースとしては、例えば、上記の式(1)において代入したVp,Vrの誤差が大きい場合や、論理ボリュームLV0の読み出し中に一時的なエラーが発生して、読み出しのリトライが行われた場合などがある。
上記のように、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが一致してしまう事態が発生しないようにするために、データ復元部213は、論理ボリュームLV2における1ブロックの復元が完了したとき、論理ボリュームLV0における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、1以上の整数として設定される。
図14の状態5では、データ復元部213が論理ボリュームLV2におけるライン番号2のブロックの復元が完了したとき、読み出し制御部212は、論理ボリュームLV0におけるライン番号4のブロックの読み出し処理を実行中である。ここで、差分設定値を2とすると、データ復元部213は、読み出し中のブロックのライン番号4と、復元が完了したブロックのライン番号2との差分が差分設定値「2」以下であると判定して、論理ボリュームLV2の復元処理を一旦停止する。このとき、読み出し制御部212による論理ボリュームLV0の読み出し処理は、それ以前と変わらずに継続される。
復元処理を停止したデータ復元部213は、式(1)に従って初期間隔値Lpを再計算する。この再計算では、データ復元部213は、式(1)のパラメータのうち、Lmaxに対して、論理ボリュームLV2のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部213は、L2に対して、論理ボリュームLV0のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部213は、Vp,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
データ復元部213は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Lp以上になったとき、論理ボリュームLV2の復元処理を再開する。このように復元処理を再開するタイミングを調整することで、データ復元部213は、論理ボリュームLV0の磁気テープからの読み出し終了タイミングと、論理ボリュームLV2の復元終了タイミングとがほぼ同じになるように制御する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
図14の状態5では、データ復元部213は、復元対象のブロックのライン番号が「3」の状態のまま、復元処理を停止する。ここで、初期間隔値Lpが「3」と算出されたものとすると、状態6に示すように、データ復元部213は、論理ボリュームLV0における読み出し中のブロックのライン番号が「6」になったとき、論理ボリュームLV2の復元処理を再開する。
以上の処理により、読み出し順が最後とされた論理ボリュームLV2は、テープライブラリ装置400の磁気テープから読み出されずに、データ復元部213による計算によって復元されて、ディスクアレイ装置300に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置300に格納するまでに要する時間が短縮される。
ところで、上記の図13,図14に示した処理では、読み出し制御部212は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順にテープライブラリ装置400から読み出した。ここで、少なくとも、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームが最後になるように読み出し順が決定されることで、パリティを基に論理ボリュームが計算によって復元されるデータ量が最も大きくなる。このことは、磁気テープからの読み出し速度より高速である、パリティに基づく復元処理の実行時間が、最も長くなることを意味する。従って、ディスクアレイ装置300へのデータ格納に要する時間の短縮効果が大きくなる。これとともに、パリティを基に論理ボリュームが復元される処理と、他の1つの論理ボリュームがテープライブラリ装置400から読み出される処理とが、並列に実行される期間が長くなる。この点でも、ディスクアレイ装置300へのデータ格納に要する時間の短縮効果が大きくなる。
また、例えば、テープドライブへの磁気テープのマウントに要する時間などを含めない、磁気テープからの純粋なデータ読み出しに要する時間のみを考慮した場合には、テープライブラリ装置400からの論理ボリュームの読み出し順をサイズが小さい順とすることで、パリティを基に論理ボリュームが復元される処理と、他の1つの論理ボリュームがテープライブラリ装置400から読み出される処理とが、並列に実行される期間が最も長くなる。
なお、データ復元部213によって復元する論理ボリュームは、読み出し順が1つ前の論理ボリュームとは異なる磁気テープに格納されていることが望ましい。これにより、読み出し順が最後の論理ボリュームが格納された磁気テープをテープドライブにマウントする時間が不要になる分だけ、ディスクアレイ装置300へのデータ格納に要する時間が短縮される。
次に、読み出し制御部212およびデータ復元部213の処理手順の例を、フローチャートを用いて説明する。
図15は、処理例1における読み出し制御部の処理手順を示すフローチャートである。
[ステップS21]読み出し制御部212は、LVG読み出し制御部222から、読み出し処理の実行指示およびLVG番号の指定を受け付ける。
[ステップS22]読み出し制御部212は、LVG管理テーブル240を参照して、指定されたLVG番号に対応する論理ボリュームグループに属する論理ボリュームを、読み出し対象として特定する。
[ステップS23]読み出し制御部212は、LV管理テーブル230から、特定した各論理ボリュームのサイズを読み出し、特定した論理ボリュームの読み出し順を、サイズが小さい順になるように決定する。
[ステップS24]読み出し制御部212は、読み出し未完了の論理ボリュームのうち、読み出し順が最も前の論理ボリュームを選択し、選択した論理ボリュームのデータを、テープライブラリ装置400の磁気テープから読み出す。読み出し制御部212は、読み出した論理ボリュームのデータをディスクアレイ装置300に格納する。
[ステップS25]読み出し制御部212は、読み出しが未完了である残りの論理ボリューム数が2であるかを判定する。読み出し制御部212は、残りの論理ボリューム数が3以上である場合、ステップS24に戻って、次の論理ボリュームの読み出し処理を実行する。一方、読み出し制御部212は、残りの論理ボリューム数が2である場合、ステップS26の処理を実行する。
[ステップS26]読み出し制御部212は、読み出し対象の論理ボリュームグループのLVG番号に対応する測定情報250を、RAM202に生成する。読み出し制御部212は、測定情報250の「読み出し中ライン番号」の欄に先頭のライン番号を登録し、「読み出し処理速度」の欄に所定の初期値を登録する。
[ステップS27]読み出し制御部212は、データ復元部213に対して、読み出し処理対象の論理ボリュームグループのLVG番号と、読み出し順が最後である論理ボリュームのLV番号とを通知し、通知したLV番号に対応する論理ボリュームグループの復元処理の実行を指示する。これにより、読み出し制御部212によるステップS28以降の処理と、後の図16に示すデータ復元部213の処理とが、並列に実行される。
[ステップS28]読み出し制御部212は、読み出し対象の論理ボリュームのブロックのうち、読み出し未完了のブロックを選択し、選択したブロックのデータをテープライブラリ装置400内の磁気テープから読み出す。読み出し制御部212は、読み出したブロックのデータをディスクアレイ装置300に格納する。
[ステップS29]読み出し制御部212は、読み出し対象の論理ボリュームに含まれる全ブロックの読み出しが完了したかを判定する。読み出し制御部212は、読み出しが完了していない場合、ステップS30の処理を実行する。一方、読み出し制御部212は、読み出しが完了した場合、処理を終了する。
[ステップS30]読み出し制御部212は、読み出し対象の論理ボリュームの先頭ブロックから現在までの読み出し処理速度を計算する。読み出し制御部212は、算出した読み出し処理速度によって、測定情報250の「読み出し処理速度」の欄の情報を更新する。
なお、このステップS30において、読み出し制御部212は、例えば、「読み出し処理速度」の欄に登録する情報として、論理ボリュームグループにおける先頭の論理ボリュームを開始してから、現在までの読み出し速度を算出してもよい。この場合、読み出し制御部212は、ステップS26の時点でも、「読み出し処理速度」の欄に、所定の初期値ではなく読み出し速度の算出値を登録する。
[ステップS31]読み出し制御部212は、測定情報250の「読み出し中ライン番号」の欄のライン番号を、1だけインクリメントする。この後、読み出し制御部212は、ステップS28に戻って、次のブロックの読み出しを実行する。
図16は、処理例1におけるデータ復元部の処理手順を示すフローチャートである。データ復元部213は、図15のステップS27において読み出し制御部212から復元処理の実行指示を受けると、図16の処理を、読み出し制御部212による読み出し処理と並列に実行する。
[ステップS41]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250に、次のような情報を登録する。データ復元部213は、「復元中ライン番号1」の欄に先頭のライン番号を登録し、「復元処理速度1」の欄に所定の初期値を登録する。
[ステップS42]データ復元部213は、前述した式(1)に従って初期間隔値Lpを算出し、測定情報250の「初期間隔値1」の欄に登録する。このとき、データ復元部213は、測定情報250の「読み出し処理速度」の欄に登録された実測値を式(1)のVrに代入し、「復元処理速度1」に登録された初期値を式(1)のVpに代入する。
[ステップS43]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、ステップS42で算出した初期間隔値Lp以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lp以上になるまで待機状態となり、差分が初期間隔値Lp以上になったとき、ステップS44の処理を実行する。
[ステップS44]データ復元部213は、復元対象の論理ボリュームのブロックのうち、復元未完了のブロックを選択する。データ復元部213は、選択したブロックと同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティのブロックを、ディスクアレイ装置300から読み出す。なお、データ復元部213は、LVG管理テーブル240を参照し、復元対象のライン番号に対応するライン管理情報242から、パリティの読み出し位置を特定する。データ復元部213は、読み出した各ブロックのデータを用いて、選択した復元未完了のブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置300に格納する。
[ステップS45]データ復元部213は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、論理ボリューム全体の復元が完了した場合、処理を終了する。一方、データ復元部213は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS46の処理を実行する。
[ステップS46]データ復元部213は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度1」の欄の情報を更新する。
[ステップS47]データ復元部213は、測定情報250の「復元中ライン番号1」の欄のライン番号を、1だけインクリメントする。
[ステップS48]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部213は、ライン番号同士の差分が差分設定値より大きい場合、ステップS44に進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、ライン番号同士の差分が差分設定値以下である場合、ステップS49の処理を実行する。
なお、ステップS48では、データ復元部213は、読み出し制御部212による、読み出し順が1つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップS44の処理を実行する。
[ステップS49]データ復元部213は、復元処理を一時的に停止する。
[ステップS50]データ復元部213は、式(1)に従って初期間隔値Lpを再計算し、算出した値によって、測定情報250の「初期間隔値1」の欄を更新する。この再計算を行う際、データ復元部213は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(1)のLmaxに代入する。また、データ復元部213は、読み出し順が最後から2番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(1)のL2に代入する。なお、データ復元部213は、読み出しが完了していないブロックの先頭ライン番号を、測定情報250の「読み出し中ライン番号」の欄から読み出すことで、読み出しが完了していないブロックを認識することができる。さらに、データ復元部213は、Vp,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された値を代入する。
ステップS50が実行されるケースでは、前回初期間隔値Lpが算出されたときと比較して、Vpが高くなっているか、あるいはVrが低くなっているか、あるいはその両方になっている。このため、算出される初期間隔値Lpは、小数点以下第1位の値を切り上げた状態で1より大きくなる。
[ステップS51]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、ステップS50で算出した初期間隔値Lp以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lp以上になるまで待機状態となり、差分が初期間隔値Lp以上になったとき、ステップS44の処理を実行する。
<処理例2>
図17は、処理例2におけるパリティ算出処理を説明するための図である。
処理例2において、書き込み制御部211は、テープライブラリ装置400の磁気テープに対して論理ボリュームグループ単位でデータを書き込む際に、処理例1の場合と同様に、論理ボリュームのサイズを均等化する。図17の例では、書き込み制御部211は例えば、論理ボリュームLV0,LV1のそれぞれに対してダミーデータを付加することで、論理ボリュームLV0〜LV2のサイズを均等化する。
サイズの均等化処理を実行した後、書き込み制御部211は、論理ボリュームLV0〜LV2のそれぞれを先頭から一定サイズごとに分割したブロックごとに、パリティを算出する。処理例2では、書き込み制御部211は、図17の下段に示すように、2種類のパリティ(パリティP,Q)を算出する。書き込み制御部211は、算出したパリティP,Qを、ディスクアレイ装置300におけるフローティング領域に属する所定の論理ボリュームに格納する。
書き込み制御部211による、論理ボリュームグループ単位でのデータ書き込み処理手順は、次の点以外は、図12の処理と同様である。書き込み制御部211は、図12のステップS15において、パリティP,Qを算出して、ディスクアレイ装置300に格納する。このとき、書き込み制御部211は、LVG管理テーブル240内の各ライン管理情報242に対して、パリティP,Qのそれぞれに対応するパリティ管理情報243を登録する。
次に、制御装置200が論理ボリュームグループ単位でのテープライブラリ装置400の磁気テープからデータを読み出し、ディスクアレイ装置300に格納する処理について説明する。
書き込み制御部211による上記処理により、ディスクアレイ装置300に対して2種類のパリティが格納されている場合、データ復元部213は、論理ボリュームグループに属する論理ボリュームのうちの2つを、その他の論理ボリュームとパリティP,Qとから復元することができる。
そこで、読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、指示された論理ボリュームグループに属する論理ボリュームのうち、2つを除く論理ボリュームを、テープライブラリ装置400の磁気テープから読み出す。また、読み出し制御部212は、残り2つの論理ボリュームを、磁気テープから読み出さずに、読み出し済みの論理ボリュームのデータとディスクアレイ装置300に格納されたパリティP,Qとを用いて、データ復元部213に復元させる。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
また、データ復元部213は、残り2つの論理ボリュームを同時に復元する。さらに、データ復元部213による論理ボリュームの復元処理は、読み出し制御部212による他の1つの論理ボリュームの磁気テープからの読み出し処理と並列に実行される。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間がさらに短縮される。
ここではまず、図17に示した論理ボリュームグループLVG0が、テープライブラリ装置400からディスクアレイ装置300に読み出される際の処理例について、図18〜図20を用いて説明する。
図18〜図20は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。読み出し制御部212は、少なくとも、読み出し順を最後の2つとする論理ボリュームを、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームと2番目にサイズが大きい論理ボリュームにする。これにより、計算によって復元されるデータ量が大きくなるとともに、復元処理と他の1つの論理ボリュームの磁気テープからの読み出し処理とを並列に実行できる時間が長くなる。このため、論理ボリュームグループ内の全データがディスクアレイ装置300に格納されるまでの時間を短縮することができる。
本実施の形態では例として、読み出し制御部212は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。図18〜図20の例では、読み出し制御部212は、読み出し順を論理ボリュームLV1,LV0,LV2の順と決定し、まず、図18の状態11に示すように、テープライブラリ装置400内の磁気テープからの論理ボリュームLV1の読み出しを開始する。また、読み出し制御部212は、読み出しを開始した論理ボリュームLV1が、読み出し順が最後から3番目とされていたものであると判定すると、データ復元部213に対して、読み出し順が最後および最後から2番目の論理ボリュームLV0,LV2の復元処理の実行を指示する。
データ復元部213は、初期間隔値Lpqを算出して、測定情報250の「初期間隔値1」の欄に登録する。データ復元部213は、論理ボリュームLV1の読み出し処理が、初期間隔値Lpqが示すライン数分のブロックについて完了したとき、論理ボリュームLV0,LV2の復元処理を開始する。例えば、初期間隔値Lpqがライン数「3」である場合、データ復元部213は、図18の状態12に示すように、論理ボリュームLV1におけるライン番号2のブロックの読み出しが完了して、ライン番号3のブロックの読み出しが開始されると、論理ボリュームLV0,LV2の復元処理を開始する。
処理例2では、初期間隔値Lpqは次の式(2)に従って算出される。ただし、初期間隔値Lpqの値は1以上の整数であり、式(2)の計算では、小数点以下第1位の値を切り上げにするとともに、切り上げ後の値が1未満になる場合、計算結果は1に固定される。
Lpq=Vr(L3/Vr−Lmax/Vpq)/Bs ・・・(2)
式(2)において、L3は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち3番目に大きい論理ボリュームのサイズであり、このサイズは読み出し中の論理ボリューム(図18では論理ボリュームLV1)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ3」の欄からL3を取得する。
また、Vpqは、データ復元部213によるパリティP,Qを用いたデータ復元速度の計測値である。データ復元部213は、測定情報250の「復元処理速度1」の欄からVpqを取得する。初期段階では、「復元処理速度1」の欄には所定の初期値が登録されており、その後、「復元処理速度1」の欄の情報はデータ復元部213によって随時更新される。
図18の例を挙げて説明すると、式(2)におけるL3/Vrは、論理ボリュームLV1の読み出しに要する予想時間であり、Lmax/Vpqは、最大サイズの論理ボリュームLV2の復元に要する予想時間である。データ復元部213は、論理ボリュームLV0,LV2の復元開始タイミングを、L3/VrとLmax/Vpqとの差分に応じたライン数分だけ、論理ボリュームLV1の読み出し開始タイミングから遅延させる。
次に、論理ボリュームLV0,LV2の復元処理が開始された後の処理について説明する。データ復元部213は、論理ボリュームLV0,LV2の同一ライン番号のブロックを、先頭から順に復元していく。例えば、図19の状態13に示すように、データ復元部213は、パリティP、パリティQ、論理ボリュームLV1のそれぞれにおけるライン番号2のブロックをディスクアレイ装置300から読み出し、読み出した各ブロックを用いて、論理ボリュームLV0,LV2のそれぞれにおけるライン番号2のブロックを復元する。
なお、データ復元部213は、処理例1の場合と同様に、復元処理の実行の際、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、論理ボリュームLV0,LV2のそれぞれにおけるすべてのブロックを復元する。
データ復元部213は、論理ボリュームLV0,LV2の復元処理を、読み出し制御部212による論理ボリュームLV1の読み出し処理と並行して実行する。ここで、論理ボリュームLV0,LV2における復元対象のブロックのライン番号が、論理ボリュームLV1における読み出し対象ブロックのライン番号と一致してしまうことがあり得る。このような事態が発生しないようにするために、データ復元部213は、論理ボリュームLV0,LV2の両方についての1ブロックの復元が完了したとき、論理ボリュームLV1における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、1以上の整数として設定される。
図19の状態14では、データ復元部213が論理ボリュームLV0,LV2におけるライン番号2のブロックの復元が完了したとき、読み出し制御部212は、論理ボリュームLV1におけるライン番号4のブロックの読み出し処理を実行中である。ここで、差分設定値を2とすると、データ復元部213は、読み出し中のブロックのライン番号4と、復元が完了したブロックのライン番号2との差分が差分設定値「2」以下であると判定して、論理ボリュームLV0,LV2の復元処理を一旦停止する。このとき、読み出し制御部212による論理ボリュームLV1の読み出し処理は、それ以前と変わらずに継続される。
復元処理を停止したデータ復元部213は、式(2)に従って初期間隔値Lpqを再計算する。この再計算では、データ復元部213は、式(2)のパラメータのうち、Lmaxに対して、論理ボリュームLV2のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部213は、L3に対して、論理ボリュームLV1のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部213は、Vpq,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
データ復元部213は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Lpq以上になったとき、論理ボリュームLV0,LV2の復元処理を再開する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
初期間隔値Lpqが「3」と算出されたものとすると、図20の状態15に示すように、データ復元部213は、論理ボリュームLV1における読み出し中のブロックのライン番号が「6」になったとき、論理ボリュームLV0,LV2の復元処理を再開する。
以上の処理により、論理ボリュームLV0,LV2は、テープライブラリ装置400の磁気テープから読み出されずに、データ復元部213による計算によって復元されて、ディスクアレイ装置300に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置300に格納するまでに要する時間が短縮される。
次に、読み出し制御部212およびデータ復元部213の処理手順の例を、フローチャートを用いて説明する。
図21は、処理例2における読み出し制御部の処理手順を示すフローチャートである。なお、図21のフローチャートは、図15に示したフローチャートにおけるステップS25,S27の処理を、それぞれステップS25a,S27aに変更したものである。そこで、ここでは図15とは異なる処理ステップについてのみ説明し、その他の処理ステップについては説明を省略する。
[ステップS25a]読み出し制御部212は、読み出しが未完了である残りの論理ボリューム数が3であるかを判定する。読み出し制御部212は、残りの論理ボリューム数が4以上である場合、ステップS24に戻って、次の論理ボリュームの読み出し処理を実行する。一方、読み出し制御部212は、残りの論理ボリューム数が3である場合、ステップS26の処理を実行する。
[ステップS27a]読み出し制御部212は、データ復元部213に対して、読み出し処理対象の論理ボリュームグループのLVG番号と、読み出し順が最後および最後から2番目の各論理ボリュームのLV番号を通知し、通知したLV番号に対応する論理ボリュームグループの復元処理の実行を指示する。これにより、読み出し制御部212によるステップS28以降の処理と、次の図22に示すデータ復元部213の処理とが、並列に実行される。
なお、図21におけるステップS28〜S31では、図15の場合とは異なり、読み出し制御部212は、読み出し順が最後から3番目とされていた論理ボリュームの読み出し処理を実行する。
図22は、処理例2におけるデータ復元部の処理手順を示すフローチャートである。なお、図22では、図16と同じ処理が実行される処理ステップには図16と同じステップ番号を付して示している。
データ復元部213は、図21のステップS27aにおいて読み出し制御部212から復元処理の実行指示を受けると、図22の処理を、読み出し制御部212による読み出し処理と並列に実行する。
[ステップS41]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元中ライン番号1」の欄に先頭のライン番号を登録し、「復元処理速度1」の欄に所定の初期値を登録する。
[ステップS42a]データ復元部213は、前述した式(2)に従って初期間隔値Lpqを算出し、測定情報250の「初期間隔値1」の欄に登録する。このとき、データ復元部213は、測定情報250の「読み出し処理速度」の欄に登録された実測値を式(2)のVrに代入し、「復元処理速度1」に登録された初期値を式(2)のVpqに代入する。
[ステップS43]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、ステップS42aで算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lpq以上になるまで待機状態となり、差分が初期間隔値Lpq以上になったとき、ステップS44aの処理を実行する。
[ステップS44a]データ復元部213は、読み出し制御部212から通知された復元対象の2つの論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティP,Qのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、復元対象の2つの論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置300に格納する。
ただし、復元対象の2つの論理ボリュームのサイズが異なる場合、読み出し順が最後の論理ボリューム全体の復元が完了する前に、読み出し順が最後から2番目の論理ボリューム全体の復元が完了する。ステップS44aにおいて、読み出し順が最後から2番目の論理ボリューム全体の復元が完了している場合には、データ復元部213は、読み出し順が最後の論理ボリュームのブロックについてのみ、復元処理を行う。
[ステップS45a]データ復元部213は、復元対象の2つの論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、2つの論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、2つの論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS46aの処理を実行する。
[ステップS46a]データ復元部213は、復元対象の2つの論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度1」の欄の情報を更新する。
[ステップS47]データ復元部213は、測定情報250の「復元中ライン番号1」の欄のライン番号を、1だけインクリメントする。
[ステップS48]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部213は、ライン番号同士の差分が差分設定値より大きい場合、ステップS44aに進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、ライン番号同士の差分が差分設定値以下である場合、ステップS49aの処理を実行する。
なお、ステップS48では、データ復元部213は、読み出し制御部212による、読み出し順が1つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップS44aの処理を実行する。
[ステップS49a]データ復元部213は、復元対象の2つの論理ボリュームの復元処理を一時的に停止する。
[ステップS50a]データ復元部213は、式(2)に従って初期間隔値Lpqを再計算し、算出した値によって、測定情報250の「初期間隔値1」の欄を更新する。この再計算を行う際、データ復元部213は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(2)のLmaxに代入する。また、データ復元部213は、読み出し順が最後から3番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(2)のL3に代入する。さらに、データ復元部213は、Vpq,Vrに対して、それぞれ測定情報250の「復元処理速度1」、「読み出し処理速度」の欄に登録された値を代入する。
[ステップS51]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号との差分が、ステップS50aで算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lpq以上になるまで待機状態となり、差分が初期間隔値Lpq以上になったとき、ステップS44aの処理を実行する。
<処理例3>
以下の処理例3は、処理例2における論理ボリュームグループ単位でのテープライブラリ装置400からのデータ読み出し処理を、次のように変形したものである。
上記の処理例2では、データ復元部213は、論理ボリュームグループに属する論理ボリュームのうち、読み出し順が最後の論理ボリュームと最後から2番目の論理ボリュームの両方を、2種類のパリティP,Qを用いて復元した。これに対して、以下の処理例3では、データ復元部213は、読み出し順が最後から2番目の論理ボリュームを、読み出し済みのデータと2種類のパリティP,Qとを用いて復元する。また、読み出し順が最後の論理ボリュームを、読み出し済みのデータと、読み出し順が最後から2番目の論理ボリュームのうち復元済みのデータと、パリティPまたはパリティQのいずれかとを用いて復元する。さらに、データ復元部213は、読み出し順が最後から2番目の論理ボリュームの復元処理と、読み出し順が最後の論理ボリュームの復元処理とを並列に実行する。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
ここではまず、図17に示した論理ボリュームグループLVG0が、テープライブラリ装置400からディスクアレイ装置300に読み出される際の処理例について、図23〜図25を用いて説明する。
図23〜図25は、テープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
読み出し制御部212は、LVG読み出し制御部222から論理ボリュームグループのデータ読み出し指示を受けると、論理ボリュームグループに属する論理ボリュームの読み出し順を決定する。読み出し制御部212は、少なくとも、論理ボリュームグループに属する論理ボリュームのうち、最大サイズの論理ボリュームの読み出し順を最後に、2番目に大きい論理ボリュームの読み出し順を最後から2番目にする。これにより、計算によって復元されるデータ量が大きくなる。また、1つの論理ボリュームの復元処理と他の1つの論理ボリュームの磁気テープからの読み出し処理とを並列に実行できる時間、および、2つの論理ボリュームの復元処理を並列に実行できる時間を、ともに長くすることができる。このため、論理ボリュームグループ内の全データがディスクアレイ装置300に格納されるまでの時間を短縮することができる。
本実施の形態では例として、読み出し制御部212は、論理ボリュームグループに属する論理ボリュームを、サイズが小さい順に読み出す。図23〜図25の例では、読み出し制御部212は、読み出し順を、論理ボリュームLV1,LV0,LV2の順と決定し、まず、図23の状態21に示すように、テープライブラリ装置400内の磁気テープからの論理ボリュームLV1の読み出しを開始する。また、読み出し制御部212は、読み出しを開始した論理ボリュームLV1が、読み出し順が最後から3番目とされていたものであると判定すると、データ復元部213に対して、読み出し順が最後および最後から2番目の論理ボリュームLV0,LV2の復元処理の実行を指示する。
データ復元部213は、読み出し順が最後から2番目の論理ボリュームLV0を、次のような手順で復元する。
データ復元部213は、初期間隔値Lpqを算出して、測定情報250の「初期間隔値1」の欄に登録する。データ復元部213は、論理ボリュームLV1の読み出し処理が、初期間隔値Lpqが示すライン数分のブロックについて完了したとき、読み出し順が最後から2番目である論理ボリュームLV0の復元処理を開始する。例えば、初期間隔値Lpqがライン数「3」である場合、データ復元部213は、図23の状態22に示すように、論理ボリュームLV1におけるライン番号2のブロックの読み出しが完了して、ライン番号3のブロックの読み出しが開始されると、論理ボリュームLV0の復元処理を開始する。
初期間隔値Lpqは次の式(3)に従って算出される。ただし、初期間隔値Lpqの値は1以上の整数であり、式(3)の計算では、小数点以下第1位の値を切り上げにするとともに、切り上げ後の値が1未満になる場合、計算結果は1に固定される。
Lpq=Vr(L3/Vr−L2/Vpq)/Bs ・・・(3)
式(3)において、L2は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち2番目に大きい論理ボリュームのサイズであり、このサイズはパリティP,Qを用いて復元する論理ボリューム(図23では論理ボリュームLV0)のサイズに対応する。データ復元部213は、例えば、LVG管理テーブル240内のLVG情報241の「LVサイズ2」の欄からL2を取得する。
データ復元部213は式(3)に基づき、論理ボリュームLV0の復元開始タイミングを、論理ボリュームLV2の読み出しに要する予想時間を示すL3/Vrと、論理ボリュームLV0の復元に要する予想時間を示すL2/Vpqとの差分に応じたライン数分だけ、論理ボリュームLV1の読み出し開始タイミングから遅延させる。
データ復元部213は、論理ボリュームLV0のブロックを先頭ブロックから順に復元していく。例えば、図23の状態22に示すように、データ復元部213は、パリティP、パリティQおよび論理ボリュームLV1のそれぞれにおけるライン番号3のブロックをディスクアレイ装置300から読み出し、読み出した各ブロックを用いて、論理ボリュームLV0におけるライン番号3のブロックを復元する。
データ復元部213は、論理ボリュームLV0の復元処理を、読み出し制御部212による論理ボリュームLV1の読み出し処理と並行して実行する。なお、データ復元部213は、読み出し済みの論理ボリュームの後端にダミーデータを付加することで、読み出し順が最後から2番目の論理ボリュームLV0のすべてのブロックを復元する。
また、データ復元部213は、論理ボリュームLV0における1ブロックの復元が完了したとき、論理ボリュームLV1における読み出し中のブロックのライン番号と、復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、1以上の整数として設定される。
復元処理を停止したデータ復元部213は、式(3)に従って初期間隔値Lpqを再計算する。この再計算では、データ復元部213は、式(3)のパラメータのうち、L2に対して、論理ボリュームLV0のうち復元が完了していないブロックの総サイズを代入する。また、データ復元部213は、L3に対して、論理ボリュームLV1のうち読み出しが完了していないブロックの総サイズを代入する。さらに、データ復元部213は、Vpq,Vrに対して、それぞれ測定情報250の「復元処理速度2」、「読み出し処理速度」の欄に登録された最新の実測値を代入する。
データ復元部213は、読み出し中のブロックのライン番号と、復元対象のブロックのライン番号との差分が、再計算された初期間隔値Lpq以上になったとき、論理ボリュームLV0の復元処理を再開する。これにより、復元対象のブロックのライン番号と、読み出し対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
一方、データ復元部213は、読み出し順が最後の論理ボリュームLV2を、次のような手順で復元する。なお、以下の説明では、データ復元部213は、読み出し順が最後の論理ボリュームを、例としてパリティPを用いて復元するものとする。
データ復元部213は、初期間隔値Lpを算出して、測定情報250の「初期間隔値2」の欄に登録する。データ復元部213は、論理ボリュームLV0の復元処理が、初期間隔値Lpが示すライン数分のブロックについて完了したとき、読み出し順が最後の論理ボリュームLV2の復元処理を開始する。例えば、初期間隔値Lpがライン数「3」である場合、データ復元部213は、図24の状態23に示すように、論理ボリュームLV0におけるライン番号2のブロックの復元が完了して、ライン番号3のブロックの復元を開始すると、論理ボリュームLV2の復元処理を開始する。
初期間隔値Lpは、次の式(4)に従って算出される。ただし、初期間隔値Lpの値は1以上の整数であり、式(4)の計算では、小数点以下第1位の値を切り上げにするとともに、切り上げ後の値が1未満になる場合、計算結果は1に固定される。
Lp=Vpq(L2/Vpq−Lmax/Vp)/Bs ・・・(4)
また、データ復元部213は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち2番目に大きい論理ボリューム(図24では論理ボリュームLV0)についての、復元速度の実測値を、Vpqに代入する。さらに、データ復元部213は、読み出し対象の論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリューム(図24では論理ボリュームLV2)の復元速度の初期値を、Vpに代入する。
データ復元部213は式(4)に基づき、論理ボリュームLV2の復元開始タイミングを、論理ボリュームLV0の復元に要する予想時間を示すL2/Vpqと、論理ボリュームLV2の復元に要する予想時間を示すLmax/Vpとの差分に応じたライン数分だけ、論理ボリュームLV2の読み出し開始タイミングから遅延させる。
データ復元部213は、論理ボリュームLV2のブロックを先頭ブロックから順に復元していく。例えば、図24の状態24に示すように、データ復元部213は、パリティP、論理ボリュームLV1および論理ボリュームLV0のそれぞれにおけるライン番号2のブロックをディスクアレイ装置300から読み出し、読み出した各ブロックを用いて、論理ボリュームLV2におけるライン番号2のブロックを復元する。
データ復元部213は、論理ボリュームLV2の復元処理を、論理ボリュームLV0の復元処理と並行して実行する。なお、データ復元部213は、復元済みの論理ボリュームLV0の後端にもダミーデータを付加することで、読み出し順が最後の論理ボリュームLV2のすべてのブロックを復元する。
また、データ復元部213は、論理ボリュームLV2における1ブロックの復元が完了したとき、論理ボリュームLV0における復元中のブロックのライン番号と、論理ボリュームLV2における復元が完了したブロックのライン番号との差分が所定の差分設定値以下である場合には、復元処理を一時的に停止する。差分設定値は、1以上の整数として設定される。
図25の状態25では、データ復元部213は、論理ボリュームLV2におけるライン番号2のブロックの復元を完了したとき、論理ボリュームLV0におけるライン番号4のブロックの復元処理を実行中である。ここで、差分設定値を2とすると、データ復元部213は、論理ボリュームLV0における復元中のブロックのライン番号4と、論理ボリュームLV2における復元が完了したブロックのライン番号2との差分が差分設定値「2」以下であると判定して、論理ボリュームLV2の復元処理を一旦停止する。このとき、データ復元部213は、論理ボリュームLV0の復元処理を継続する。
論理ボリュームLV2の復元処理を停止したデータ復元部213は、式(4)に従って初期間隔値Lpを再計算する。この再計算では、データ復元部213は、式(4)のパラメータのうち、Lmaxに対して、論理ボリュームLV2のうち復元が完了していないブロックの総サイズを代入し、L2に対して、論理ボリュームLV0のうち復元が完了していないブロックの総サイズを代入する。さらに、データ復元部213は、Vp,Vpqに対して、それぞれ測定情報250の「復元処理速度1」、「復元処理速度2」の欄に登録された最新の実測値を代入する。
データ復元部213は、論理ボリュームLV0における復元中のブロックのライン番号と、論理ボリュームLV2における復号対象ブロックのライン番号との差分が、再計算された初期間隔値Lp以上になったとき、論理ボリュームLV2の復元処理を再開する。これにより、論理ボリュームLV2における復元対象のブロックのライン番号と、論理ボリュームLV0における復元対象ブロックのライン番号とが再度一致してしまう可能性を低くすることができる。
初期間隔値Lpが「3」と算出されたものとすると、図25の状態26に示すように、データ復元部213は、論理ボリュームLV0における復元中のブロックのライン番号が「6」になったとき、論理ボリュームLV2の復元処理を再開する。
以上の処理により、論理ボリュームLV0,LV2は、テープライブラリ装置400の磁気テープから読み出されずに、データ復元部213による計算によって復元されて、ディスクアレイ装置300に格納される。これにより、論理ボリュームグループ全体のデータをディスクアレイ装置300に格納するまでに要する時間が短縮される。
次に、処理例3における論理ボリュームグループ単位での読み出し処理手順の例を、フローチャートを用いて説明する。処理例3における、読み出し制御部212による論理ボリュームグループ単位での読み出し処理手順は、図21と同様である。データ復元部213は、図21のステップS27aにおいて読み出し制御部212から復元処理の実行指示を受けると、図26に示す2種類のパリティP,Qを用いたデータ復元処理と、図27に示す1種類のパリティ(ここではパリティPとする)を用いたデータ復元処理とを、並列に実行する。
図26は、処理例3におけるパリティP,Qを用いたデータ復元処理手順を示すフローチャートである。なお、図26では、図16と同じ処理が実行される処理ステップには図16と同じステップ番号を付して示している。
[ステップS41b]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元中ライン番号2」の欄に先頭のライン番号を登録し、「復元処理速度2」の欄に所定の初期値を登録する。
[ステップS42b]データ復元部213は、前述した式(3)に従って初期間隔値Lpqを算出し、測定情報250の「初期間隔値2」の欄に登録する。このとき、データ復元部213は、測定情報250の「読み出し処理速度」の欄に登録された実測値を式(3)のVrに代入し、「復元処理速度2」に登録された初期値を式(3)のVpqに代入する。
[ステップS43b]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号2」の欄に登録されたライン番号との差分が、ステップS42bで算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lpq以上になるまで待機状態となり、差分が初期間隔値Lpq以上になったとき、ステップS44bの処理を実行する。
[ステップS44b]データ復元部213は、図26での復元対象の論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティP,Qのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、復元対象の論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置300に格納する。
[ステップS45]データ復元部213は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS46bの処理を実行する。
[ステップS46b]データ復元部213は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度2」の欄の情報を更新する。
[ステップS47b]データ復元部213は、測定情報250の「復元中ライン番号2」の欄のライン番号を、1だけインクリメントする。
[ステップS48b]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号2」の欄に登録されたライン番号との差分が、所定の差分設定値以下であるかを判定する。データ復元部213は、ライン番号同士の差分が差分設定値より大きい場合、ステップS44bに進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、ライン番号同士の差分が差分設定値以下である場合、ステップS49の処理を実行する。
なお、ステップS48bでは、データ復元部213は、読み出し制御部212による、読み出し順が1つ前の論理ボリュームの磁気テープからの読み出し処理が完了している場合には、無条件にステップS44bの処理を実行する。
[ステップS49]データ復元部213は、復元対象の論理ボリュームの復元処理を一時的に停止する。
[ステップS50b]データ復元部213は、式(3)に従って初期間隔値Lpqを再計算し、算出した値によって、測定情報250の「初期間隔値2」の欄を更新する。この再計算を行う際、データ復元部213は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(3)のL2に代入する。また、データ復元部213は、読み出し順が最後から3番目の論理ボリューム(すなわち、読み出し制御部212によって読み出し中の論理ボリューム)のうち読み出しが完了していないブロックの総サイズを算出し、算出した値を式(3)のL3に代入する。さらに、データ復元部213は、Vpq,Vrに対して、それぞれ測定情報250の「復元処理速度2」、「読み出し処理速度」の欄に登録された値を代入する。
[ステップS51b]データ復元部213は、測定情報250の「読み出し中ライン番号」の欄に登録されたライン番号と、測定情報250の「復元中ライン番号2」の欄に登録されたライン番号との差分が、ステップS50bで算出した初期間隔値Lpq以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lpq以上になるまで待機状態となり、差分が初期間隔値Lpq以上になったとき、ステップS44bの処理を実行する。
図27は、処理例3におけるパリティPを用いたデータ復元処理手順を示すフローチャートである。なお、図27では、図16と同じ処理が実行される処理ステップには同じステップ番号を付して示している。
[ステップS41]データ復元部213は、読み出し制御部212から通知されたLVG番号に対応する測定情報250において、「復元中ライン番号1」の欄に先頭のライン番号を登録し、「復元処理速度1」の欄に所定の初期値を登録する。
[ステップS42c]データ復元部213は、前述した式(4)に従って初期間隔値Lpを算出し、測定情報250の「初期間隔値1」の欄に登録する。このとき、データ復元部213は、測定情報250の「復元処理速度2」の欄に登録された実測値を式(4)のVpqに代入し、「復元処理速度1」に登録された初期値を式(4)のVpに代入する。
[ステップS43c]データ復元部213は、測定情報250の「復元中ライン番号1」および「復元中ライン番号2」の各欄に登録されたライン番号同士の差分が、ステップS42cで算出した初期間隔値Lp以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lp以上になるまで待機状態となり、差分が初期間隔値Lp以上になったとき、ステップS44cの処理を実行する。
[ステップS44c]データ復元部213は、図27での復元対象の論理ボリュームにおける復元未完了のブロックのうち、先頭ブロックのライン番号を選択する。データ復元部213は、選択したライン番号と同一のライン番号に対応する他の論理ボリュームのブロックおよびパリティPのブロックを、ディスクアレイ装置300から読み出す。データ復元部213は、読み出した各ブロックのデータを用いて、復元対象の論理ボリュームにおける選択したライン番号に対応するブロックのデータを復元し、復元したブロックのデータをディスクアレイ装置300に格納する。
[ステップS45]データ復元部213は、復元対象の論理ボリューム全体の復元が完了したかを判定する。データ復元部213は、論理ボリュームの復元が完了した場合、処理を終了する。一方、データ復元部213は、論理ボリューム内のブロックの中に復元未完了のブロックがある場合、ステップS46の処理を実行する。
[ステップS46]データ復元部213は、復元対象の論理ボリュームの先頭ブロックから現在までの復元処理速度を計算する。データ復元部213は、算出した復元処理速度によって、測定情報250の「復元処理速度1」の欄の情報を更新する。
[ステップS47]データ復元部213は、測定情報250の「復元中ライン番号1」の欄のライン番号を、1だけインクリメントする。
[ステップS48c]データ復元部213は、測定情報250の「復元中ライン番号1」および「復元中ライン番号2」の各欄に登録されたライン番号同士の差分が、所定の差分設定値以下であるかを判定する。データ復元部213は、ライン番号同士の差分が差分設定値より大きい場合、ステップS44cに進んで、次のブロックの復元処理を実行する。一方、データ復元部213は、ライン番号同士の差分が差分設定値以下である場合、ステップS49の処理を実行する。
なお、ステップS48cでは、データ復元部213は、読み出し順が1つ前の論理ボリュームの復元処理が完了している場合には、無条件にステップS44cの処理を実行する。
[ステップS49]データ復元部213は、復元対象の論理ボリュームの復元処理を一時的に停止する。
[ステップS50c]データ復元部213は、式(4)に従って初期間隔値Lpを再計算し、算出した値によって、測定情報250の「初期間隔値1」の欄を更新する。この再計算を行う際、データ復元部213は、復元対象の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(4)のLmaxに代入する。また、データ復元部213は、読み出し順が最後から2番目の論理ボリュームのうち復元が完了していないブロックの総サイズを算出し、算出した値を式(4)のL2に代入する。さらに、データ復元部213は、Vp,Vpqに対して、それぞれ測定情報250の「復元処理速度1」、「復元処理速度2」の欄に登録された値を代入する。
[ステップS51c]データ復元部213は、測定情報250の「復元中ライン番号1」および「復元中ライン番号2」の各欄に登録されたライン番号同士の差分が、ステップS50cで再計算した初期間隔値Lp以上であるかを判定する。データ復元部213は、ライン番号同士の差分が初期間隔値Lp以上になるまで待機状態となり、差分が初期間隔値Lp以上になったとき、ステップS44cの処理を実行する。
なお、以上の第2の実施の形態の説明では、読み出し制御部212による論理ボリュームグループ単位でのテープライブラリ装置400からの読み出し処理は、LVG読み出し制御部222からの指示に応じて実行されるものとした。しかしながら、このような読み出し処理は、仮想テープ制御部221からのリコールの実行指示に応じて行われてもよい。
例えば、読み出し制御部212は、仮想テープ制御部221からリコールの実行指示を受けると、リコール対象の論理ボリュームが属する論理ボリュームグループを特定する。この後、読み出し制御部212は、図15または図21のステップS23で、リコール対象の論理ボリュームの読み出し順を先頭にし、同じ論理ボリュームグループに属するその他の論理ボリュームについては読み出し順をサイズが小さい順にする。
これ以後、読み出し制御部212は、図15または図21のステップS24以降の処理を実行する。ここで、ステップS24が最初に実行されたとき、読み出し制御部212は、リコール対象の論理ボリュームをテープライブラリ装置400内の磁気テープから読み出し、ディスクアレイ装置300に格納する。仮想テープ制御部221は、テープライブラリ装置400に格納されたリコール対象の論理ボリュームから、ホスト装置500から読み出しが要求されたデータを読み出してホスト装置500に送信することができる。
また、図15または図21のステップS24以降の処理がさらに続行されることによって、リコール対象の論理ボリュームだけでなく、この論理ボリュームと同じ論理ボリュームグループに属する他の論理ボリュームも、ディスクアレイ装置300にキャッシュされる。これにより、ホスト装置500からの読み出し対象となった論理ボリュームに関連付けられた他の論理ボリューム内のデータについても、ホスト装置500からの読み出し要求に対して高速に応答できるようになる。
また、上記の第2の実施の形態では、制御装置200は、ディスクアレイ装置300に格納されたパリティを、データの読み出し高速化のためにだけ利用した。しかしながら、制御装置200は、ディスクアレイ装置300内のパリティを、磁気テープの不具合などによって磁気テープから読み出し不可能になった論理ボリュームのデータを復元するために利用してもよい。
例えば、シングルパリティの場合、制御装置200は、論理ボリュームグループに属する論理ボリュームのうちの1つを磁気テープから読み出せなくなった場合、その論理ボリュームのデータを、同じ論理ボリュームグループに属する他の論理ボリュームとパリティとから復元することができる。また、ダブルパリティの場合、制御装置200は、論理ボリュームグループに属する論理ボリュームのうちの2つを磁気テープから読み出せなくなった場合、それら2つの論理ボリュームのデータを、同じ論理ボリュームグループに属する他の論理ボリュームと2種類のパリティとから復元することができる。
〔第3の実施の形態〕
第3の実施の形態に係るストレージシステムの制御装置は、第2の実施の形態で説明した処理に加えて、さらに、同一の論理ボリュームについて、その一部を計算によって復元するとともに、その復元処理と並行して他の一部を磁気テープから読み出す。これにより、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間をさらに短縮する。
第3の実施の形態に係るストレージシステムのハードウェア構成は、第2の実施の形態と同様である。また、第3の実施の形態における制御装置が備える基本的な処理機能は、図5に示した通りである。このため、以下の説明では、図5に示した符号を用いることにする。
図28は、LVG管理テーブルに登録される情報の例を示す図である。第3の実施の形態において、LVG管理テーブル240内のLVG情報241には、図7に示した情報に加えて、「格納位置情報1」および「格納位置情報2」の各欄が設けられる。
「格納位置情報1」の欄には、論理ボリュームグループに属する論理ボリュームのうち最大サイズの論理ボリュームについての、磁気テープにおける格納位置を示す情報が登録される。「格納位置情報2」の欄には、論理ボリュームグループに属する論理ボリュームのうち2番目に大きいサイズの論理ボリュームについての、磁気テープにおける格納位置を示す情報が登録される。格納位置を示す情報としては、例えば、磁気テープの識別番号、および、その磁気テープにおける、対応する論理ボリュームが記録された領域の先頭アドレスなどが登録される。
「格納位置情報1」および「格納位置情報2」の各欄の情報は、書き込み制御部211によって論理ボリュームグループのデータがテープライブラリ装置400内の磁気テープに書き込まれる際に、書き込み制御部211によって登録される。「格納位置情報1」および「格納位置情報2」の各欄の情報は、読み出し制御部212から参照される。なお、読み出し制御部212は、「格納位置情報1」および「格納位置情報2」の各欄に対応する情報をLV管理テーブル230から取得してもよい。
図29は、測定情報に登録される情報の例を示す図である。第3の実施の形態において、測定情報250には、図8に示した情報に加えて、「読み出し開始ライン番号1」および「読み出し開始ライン番号2」の各欄が設けられる。
「読み出し開始ライン番号1」の欄には、読み出し順が最後の論理ボリュームのうち、読み出し制御部212が読み出すべき領域の先頭ブロックのライン番号が登録される。「読み出し開始ライン番号2」の欄には、読み出し順が最後から2番目の論理ボリュームのうち、読み出し制御部212が読み出すべき領域の先頭ブロックのライン番号が登録される。
次に、第3の実施の形態での読み出し処理例について、処理例4〜6として説明する。
<処理例4>
処理例4は、上記の処理例1における、論理ボリュームグループ単位でのテープライブラリ装置400からの読み出し処理を、次のように変形したものである。処理例1での読み出し処理では、読み出し制御部212は、読み出し順が最後から2番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例4では、読み出し制御部212は、読み出し順が最後から2番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
図30は、処理例4におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図30の状態31は、例として、図14の状態6から、読み出し制御部212による論理ボリュームLV0の読み出し処理と、データ復元部213による論理ボリュームLV2の復元処理とが、さらに進められた状態を示す。処理例4では、読み出し制御部212は、論理ボリュームLV0における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後である論理ボリュームLV2を磁気テープから読み出すための準備を、テープライブラリ装置400に実行させる。
論理ボリュームLV2が格納された磁気テープがテープライブラリ装置400内のテープドライブにマウントされ、磁気テープ上の論理ボリュームLV2の領域付近に磁気ヘッドが配置されると、読み出し制御部212は、次の式(5)に従って読み出し容量Rd1を算出し、さらに式(6)に従って読み出し開始ライン番号Ld1を算出する。ここで、読み出し開始ライン番号Ld1は、論理ボリュームLV2における復元されていない領域のうち、データ復元部213によって復元すべき領域と、読み出し制御部212によって磁気テープから読み出すべき領域との境界位置を示すものである。
Rd1=Vd・Rp1/(Vd+Vp1) ・・・(5)
Ld1=Nmax−Rd1 ・・・(6)
式(5)において、Vdは、磁気テープからのデータ読み出し速度であり、あらかじめ決められた値が代入される。Vp1は、読み出し順が最後の論理ボリュームにおけるデータ復元速度であり、測定情報250の「復元処理速度1」の欄に登録された実測値が代入される。Rp1は、読み出し順が最後の論理ボリュームのうち、データの復元が完了していない領域のサイズである。Nmaxは、読み出し順が最後の論理ボリュームのブロック数であり、LVG管理テーブル240のLVG情報241の「ライン数」の欄に登録された値が代入される。なお、式(5)の計算の際には、小数点以下の値は切り捨てられる。
読み出し制御部212は、読み出し順が最後の論理ボリュームLV2のうち、算出された読み出し開始ライン番号Ld1に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置300に格納する。一方、データ復元部213は、論理ボリュームLV2のうち、読み出し開始ライン番号Ld1より1小さいライン番号に対応するブロックの復元が完了すると、復元処理を終了する。
図30の状態32では、読み出し開始ライン番号Ld1が「12」と算出されたものとする。この場合、読み出し制御部212は、論理ボリュームLV2のうち先頭から12番目のブロック(すなわち、ライン番号11に対応するブロック)から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部212による磁気テープからの読み出し処理と並行して、データ復元部213は、論理ボリュームLV2のうちライン番号10までのブロックを復元する。
このように、論理ボリュームLV2の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
ここで、上記の式(5)および式(6)によれば、読み出し順が最後の論理ボリュームLV2を磁気テープから読み出すための準備ができた時点で、論理ボリュームLV2のうち復元が完了していないブロックの一部を磁気テープから読み出す時間と、他の一部を計算によって復元する時間とが同じになるように、読み出し開始ライン番号Ld1が算出される。これにより、論理ボリュームLV2の全体がディスクアレイ装置300に格納されるまでの時間を最小限にすることができる。
図31は、処理例4における読み出し制御部の処理手順の例を示すフローチャートである。読み出し制御部212は、図15のステップS29で「Yes」と判定したとき、すなわち、読み出し順が最後から2番目の論理ボリュームの磁気テープからの読み出しを完了したときに、さらに図31に示す処理を実行する。
[ステップS61]読み出し制御部212は、読み出し順が最後である論理ボリュームを読み出し処理対象とし、読み出し処理対象の論理ボリュームの位置情報を、LVG管理テーブル240に登録されたLVG情報241の「格納位置情報1」の欄から読み出す。読み出し制御部212は、読み出した位置情報をテープライブラリ装置400に通知して、読み出し処理対象の論理ボリュームを磁気テープから読み出すための準備をテープライブラリ装置400に実行させる。
[ステップS62]読み出し制御部212は、読み出し処理対象の論理ボリュームのブロックの中に、データ復元部213による復元処理が実行されていないブロックがあるかを判定する。読み出し制御部212は、測定情報250の「復元中ライン番号1」の欄に登録されたライン番号が、読み出し処理対象の論理ボリュームの最終ブロックのライン番号を示している場合、復元未実行のブロックがないと判定して、処理を終了する。一方、読み出し制御部212は、復元未実行のブロックがあると判定した場合、ステップS63の処理を実行する。
[ステップS63]読み出し制御部212は、式(5)に従って読み出し容量Rd1を算出し、読み出し容量Rd1に基づき、式(6)から読み出し開始ライン番号Ld1を算出する。
[ステップS64]読み出し制御部212は、算出した読み出し開始ライン番号Ld1を、測定情報250の「読み出し開始ライン番号1」の欄に登録する。
[ステップS65]読み出し制御部212は、読み出し処理対象の論理ボリュームのブロックのうち、算出した読み出し開始ライン番号Ld1が示すブロックから最終ブロックまでを磁気テープから読み出す。このステップS65の読み出し処理は、データ復元部213による、読み出し開始ライン番号Ld1が示すブロックより前のブロックの復元処理と並列に実行される。
図32は、処理例4におけるデータ復元処理手順を示すフローチャートである。なお、図32のフローチャートは、図16に示したフローチャートにおけるステップS47とステップS48との間に、次のステップS81の処理を追加したものである。
[ステップS81]データ復元部213は、ステップS47で更新した、測定情報250の「復元中ライン番号1」の欄のライン番号が、測定情報250の「読み出し開始ライン番号1」の欄に登録されているライン番号と一致するかを判定する。データ復元部213は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部213は、ライン番号同士が一致しなかった場合、ステップS48の処理を実行する。
<処理例5>
処理例5は、上記の処理例2における、論理ボリュームグループ単位でのテープライブラリ装置400からの読み出し処理を、次のように変形したものである。処理例2での読み出し処理では、読み出し制御部212は、読み出し順が最後から3番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例5では、読み出し制御部212は、読み出し順が最後から3番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
図33は、処理例5におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図33の状態41は、例として、図20の状態15から、読み出し制御部212による論理ボリュームLV1の読み出し処理と、データ復元部213による論理ボリュームLV0,LV2の復元処理とが、さらに進められた状態を示す。処理例5では、読み出し制御部212は、論理ボリュームLV1における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後である論理ボリュームLV2を磁気テープから読み出すための準備を、テープライブラリ装置400に実行させる。
論理ボリュームLV2が格納された磁気テープがテープライブラリ装置400内のテープドライブにマウントされ、磁気テープ上の論理ボリュームLV2の領域付近に磁気ヘッドが配置されると、読み出し制御部212は、上記の式(5)に従って読み出し容量Rd1を算出し、さらに上記の式(6)に従って読み出し開始ライン番号Ld1を算出する。
読み出し制御部212は、読み出し順が最後の論理ボリュームLV2のうち、算出された読み出し開始ライン番号Ld1に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置300に格納する。一方、データ復元部213は、論理ボリュームLV2のうち、読み出し開始ライン番号Ld1より1小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームLV2の復元処理を終了する。ただし、データ復元部213は、論理ボリュームLV0については最終ブロックまで復元処理を実行する。
図33の状態42では、読み出し開始ライン番号Ld1が「13」と算出されたものとする。この場合、読み出し制御部212は、論理ボリュームLV2のうち先頭から13番目のブロック(すなわち、ライン番号12に対応するブロック)から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部212による磁気テープからの読み出し処理と並行して、データ復元部213は、論理ボリュームLV2のうちライン番号11までのブロックを復元する。
このように、論理ボリュームLV2の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
なお、図33の例では、論理ボリュームLV2についてパリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されたが、例えば、論理ボリュームLV2の代わりに論理ボリュームLV0について、パリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されてもよい。ただし、図33の例のように、論理ボリュームグループ内の最大サイズの論理ボリュームLV2についてパリティを用いた復元処理と磁気テープからの読み出し処理とが並列に実行されることで、復元処理と読み出し処理とが並列に実行される時間が長くなる。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間短縮効果が大きくなる。
次に、処理例5における論理ボリュームグループ単位でのテープライブラリ装置400からの読み出し処理を、フローチャートを用いて説明する。まず、読み出し制御部212は、図21に示したフローチャートの処理を実行し、ステップS29で「Yes」と判定したとき、すなわち、読み出し順が最後から3番目の論理ボリュームの磁気テープからの読み出しを完了したときに、図31に示した処理を実行する。
図34は、処理例5におけるデータ復元処理手順を示すフローチャートである。なお、図34のフローチャートは、図22に示したフローチャートにおけるステップS47とステップS48との間に、次のステップS82の処理を追加したものである。
[ステップS82]データ復元部213は、ステップS47で更新した、測定情報250の「復元中ライン番号1」の欄のライン番号が、測定情報250の「読み出し開始ライン番号1」の欄に登録されているライン番号と一致するかを判定する。データ復元部213は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部213は、ライン番号同士が一致しなかった場合、ステップS48の処理を実行する。
<処理例6>
処理例6は、上記の処理例3における、論理ボリュームグループ単位でのテープライブラリ装置400からの読み出し処理を、次のように変形したものである。処理例3での読み出し処理では、読み出し制御部212は、読み出し順が最後から3番目の論理ボリュームを磁気テープから読み出した時点で、処理を終了していた。これに対して、以下の処理例6では、読み出し制御部212は、読み出し順が最後から3番目の論理ボリュームの磁気テープからの読み出しを完了したとき、復元中の論理ボリュームの一部を磁気テープから読み出す処理を開始する。
図35は、処理例6におけるテープライブラリ装置からの論理ボリュームグループの読み出し処理例を示す図である。
図35の状態51は、例として、図24の状態24から、読み出し制御部212による論理ボリュームLV1の読み出し処理と、データ復元部213による論理ボリュームLV0,LV2の復元処理とが、さらに進められた状態を示す。処理例6では、読み出し制御部212は、論理ボリュームLV1における最終ブロックの磁気テープからの読み出しを完了すると、読み出し順が最後から2番目である論理ボリュームLV0を磁気テープから読み出すための準備を、テープライブラリ装置400に実行させる。
論理ボリュームLV0が格納された磁気テープがテープライブラリ装置400内のテープドライブにマウントされ、磁気テープ上の論理ボリュームLV0の領域付近に磁気ヘッドが配置されると、読み出し制御部212は、次の式(7)に従って読み出し容量Rd2を算出し、さらに式(8)に従って読み出し開始ライン番号Ld2を算出する。
Rd2=Vd・Rp2/(Vd+Vp2) ・・・(7)
Ld2=N2−Rd2 ・・・(8)
式(7)において、Vp2は、読み出し順が最後から2番目の論理ボリュームにおけるデータ復元速度であり、測定情報250の「復元処理速度2」の欄に登録された実測値が代入される。Rp2は、読み出し順が最後から2番目の論理ボリュームのうち、データの復元が完了していない領域のサイズである。N2は、読み出し順が最後から2番目の論理ボリュームのブロック数であり、例えば、LVG管理テーブル240のLVG情報241の「LVサイズ2」、およびLVG管理テーブル240の「パリティサイズ」の各欄に登録された値を基に算出される、なお、式(7)の計算の際には、小数点以下の値は切り捨てられる。
読み出し制御部212は、読み出し順が最後から2番目の論理ボリュームLV0のうち、算出された読み出し開始ライン番号Ld2に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出して、ディスクアレイ装置300に格納する。一方、データ復元部213は、論理ボリュームLV0のうち、読み出し開始ライン番号Ld2より1小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームLV0の復元処理を終了する。
図35の状態52では、読み出し開始ライン番号Ld3が「10」と算出されたものとする。この場合、読み出し制御部212は、論理ボリュームLV0のうち先頭から10番目のブロック(すなわち、ライン番号9に対応するブロック)から最終ブロックまでのデータを、磁気テープから読み出す。また、読み出し制御部212による磁気テープからの読み出し処理と並行して、データ復元部213は、論理ボリュームLV0のうちライン番号8までのブロックを復元する。
このように、論理ボリュームLV0の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。その結果、論理ボリュームグループ全体のデータがディスクアレイ装置300に格納されるまでの時間が短縮される。
さらに、図示しないが、読み出し制御部211は、論理ボリュームLV0の最終ブロックまでの読み出しが完了すると、読み出し順が最後である論理ボリュームLV2を磁気テープから読み出すための準備を、テープライブラリ装置400に実行される。その後の読み出し制御部211の処理は前述の処理例5と同様である。すなわち、読み出し制御部211は、式(5)および式(6)を用いて読み出し開始ライン番号Ld1を算出する。読み出し制御部211は、論理ボリュームLV2のうち、算出された読み出し開始ライン番号Ld1に対応するブロックから最終ブロックまでのデータを、磁気テープから読み出してディスクアレイ装置300に格納する。一方、データ復元部213は、論理ボリュームLV2のうち、読み出し開始ライン番号Ld1より1小さいライン番号に対応するブロックの復元が完了すると、論理ボリュームLV2の復元処理を終了する。このようにして、論理ボリュームLV2の一部をパリティを用いて復元する処理と、他の一部を磁気テープから読み出す処理とが並列に実行される。
図36は、処理例6における読み出し制御部の処理手順の例を示すフローチャートである。なお、図36では、図31と同じ処理が実行される処理ステップには同じステップ番号を付して示している。
読み出し制御部212は、図21のステップS29で「Yes」と判定したとき、すなわち、読み出し順が最後から3番目の論理ボリュームの磁気テープからの読み出しを完了したときに、さらに図36に示す処理を実行する。
[ステップS91]読み出し制御部212は、読み出し順が最後から2番目の論理ボリュームを読み出し処理対象とし、読み出し処理対象の論理ボリュームの位置情報を、LVG管理テーブル240に登録されたLVG情報241の「格納位置情報2」の欄から読み出す。読み出し制御部212は、読み出した位置情報をテープライブラリ装置400に通知して、読み出し処理対象の論理ボリュームを磁気テープから読み出すための準備をテープライブラリ装置400に実行させる。
[ステップS92]読み出し制御部212は、読み出し処理対象の論理ボリュームのブロックの中に、データ復元部213による復元処理が実行されていないブロックがあるかを判定する。読み出し制御部212は、測定情報250の「復元中ライン番号2」の欄に登録されたライン番号が、読み出し処理対象の論理ボリュームの最終ブロックのライン番号を示している場合、復元未実行のブロックがないと判定して、ステップS61の処理を実行する。一方、読み出し制御部212は、復元未実行のブロックがあると判定した場合、ステップS93の処理を実行する。
[ステップS93]読み出し制御部212は、式(7)に従って読み出し容量Rd2を算出し、読み出し容量Rd2に基づき、式(8)から読み出し開始ライン番号Ld2を算出する。
[ステップS94]読み出し制御部212は、算出した読み出し開始ライン番号Ld2を、測定情報250の「読み出し開始ライン番号2」の欄に登録する。
[ステップS95]読み出し制御部212は、読み出し処理対象の論理ボリュームのブロックのうち、算出した読み出し開始ライン番号Ld2が示すブロックから最終ブロックまでを磁気テープから読み出す。このステップS95の読み出し処理は、データ復元部213による、読み出し開始ライン番号Ld2が示すブロックより前のブロックの復元処理と並列に実行される。
この後、読み出し制御部212は、読み出し処理対象の論理ボリュームの最終ブロックまでの読み出しが完了すると、読み出し処理対象を読み出し順が最後の論理ボリュームとして、図31に示したステップS61〜S65の処理を実行する。
次に、データ復元部213の処理について説明する。データ復元部213は、図21のステップS27aにおいて読み出し制御部212から復元処理の実行指示を受けると、図37および図38の各処理を並列に実行する。
図37は、処理例6におけるパリティP,Qを用いたデータ復元処理手順を示すフローチャートである。この図37の処理は、データ復元部213が、読み出し順が最後から2番目の論理ボリュームを2種類のパリティP,Qを用いて復元する処理である。図37のフローチャートは、図26に示したフローチャートにおけるステップS47bとステップS48bとの間に、ステップS83の処理を追加したものである。
[ステップS83]データ復元部213は、ステップS47bで更新した、測定情報250の「復元中ライン番号2」の欄のライン番号が、測定情報250の「読み出し開始ライン番号2」の欄に登録されているライン番号と一致するかを判定する。データ復元部213は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部213は、ライン番号同士が一致しなかった場合、ステップS48bの処理を実行する。
図38は、処理例6におけるパリティPを用いたデータ復元処理手順を示すフローチャートである。この図38の処理は、データ復元部213が、読み出し順が最後である論理ボリュームを1種類のパリティ(ここでは例としてパリティP)を用いて復元する処理である。図38のフローチャートは、図27に示したフローチャートにおけるステップS47とステップS48との間に、ステップS84の処理を追加したものである。
[ステップS84]データ復元部213は、ステップS47で更新した、測定情報250の「復元中ライン番号1」の欄のライン番号が、測定情報250の「読み出し開始ライン番号1」の欄に登録されているライン番号と一致するかを判定する。データ復元部213は、ライン番号同士が一致した場合、処理を終了する。一方、データ復元部213は、ライン番号同士が一致しなかった場合、ステップS48の処理を実行する。
なお、上記の各実施の形態に示したストレージ制御装置10および制御装置200の処理機能は、コンピュータによって実現することができる。その場合、各通信装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM、CD−R/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) n個のデータ(ただし、nは2以上の整数)を第1の記憶装置に書き込み、書き込んだ前記n個のデータを前記第1の記憶装置から読み出すストレージ制御装置において、
前記n個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを第2の記憶装置に格納するパリティ算出部と、
前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうちの少なくとも1つを、前記第1の記憶装置から読み出す代わりに、前記n個のデータのうち前記第1の記憶装置から読み出し済みの他のデータと前記第2の記憶装置に格納されたパリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージ制御装置。
(付記2) 前記パリティ算出部は、前記n個のデータのそれぞれから抽出した分割データを基に1種類のパリティを算出して、算出したパリティを前記第2の記憶装置に格納し、
前記読み出し制御部は、前記第1の記憶装置から前記n個のデータのうち(n−2)個のデータを読み出した後、残りの2個のデータのうち第1のデータを前記第1の記憶装置から読み出す読み出し処理と、前記第1の記憶装置から読み出した前記(n−2)個のデータ、前記第1のデータのうち前記第1の記憶装置から読み出し済みの分割データ、および前記第2の記憶装置に格納されたパリティを用いて、前記残りの2個のデータのうち第2のデータを復元するデータ復元処理とを並列に実行する、
ことを特徴とする付記1記載のストレージ制御装置。
(付記3) 前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第1のデータおよび前記第2のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とする付記2記載のストレージ制御装置。
(付記4) 前記読み出し制御部は、前記第1のデータのうち読み出しが完了した部分のサイズと、前記第2のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第1のデータのうち前記第1の記憶装置から読み出されていない部分のサイズと、前記第2のデータのうち復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする付記2または3記載のストレージ制御装置。
(付記5) 前記読み出し制御部は、前記第1のデータを前記第1の記憶装置から読み出した後、前記第2のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、前記データ領域のうち残りの部分を前記第1の記憶装置から読み出す処理とを並列に実行することを特徴とする付記2〜4のいずれか1つに記載のストレージ制御装置。
(付記6) 前記読み出し制御部は、前記データ領域のうち第1の領域をパリティを用いて復元する処理の終了タイミングと、前記データ領域のうち残りの第2の領域を前記第1の記憶装置から読み出す処理の終了タイミングとが一致するように、前記第1の領域と前記第2の領域との境界位置を決定することを特徴とする付記5記載のストレージ制御装置。
(付記7) 前記パリティ算出部は、前記n個のデータのそれぞれから抽出した分割データを基に第1のパリティおよび第2のパリティを算出して、算出した前記第1のパリティおよび前記第2のパリティを前記第2の記憶装置に格納し、
前記読み出し制御部は、前記第1の記憶装置から前記n個のデータのうち(n−3)個のデータを読み出した後、残りの3個のデータのうち第1のデータを前記第1の記憶装置から読み出す読み出し処理と、前記第1の記憶装置から読み出した前記(n−3)個のデータ、前記第1のデータのうち前記第1の記憶装置から読み出し済みの分割データ、および、前記第2の記憶装置に格納された前記第1のパリティおよび前記第2のパリティを用いて、前記残りの3個のデータのうち第2のデータおよび第3のデータを復元するデータ復元処理とを、並列に実行する、
ことを特徴とする付記1記載のストレージ制御装置。
(付記8) 前記読み出し制御部は、前記読み出し処理および前記データ復元処理の各処理速度と、前記第1のデータのサイズと、前記第2のデータおよび前記第3のデータのうち大きい方のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記データ復元処理を開始するタイミングを遅延させることを特徴とする付記7記載のストレージ制御装置。
(付記9) 前記読み出し制御部は、前記第1のデータのうち読み出しが完了した部分のサイズと、前記第2のデータまたは前記第3のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記データ復元処理を一時的に停止し、前記読み出し処理および前記データ復元処理の各処理速度と、前記第1のデータのうち前記第1の記憶装置から読み出されていない部分のサイズと、前記第2のデータおよび前記第3のデータのうち大きい方のデータにおける復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記データ復元処理の終了タイミングとが一致するように、前記データ復元処理を再開するタイミングを決定することを特徴とする付記7または8記載のストレージ制御装置。
(付記10) 前記読み出し制御部は、前記第1のデータを前記第1の記憶装置から読み出した後、前記第2のデータまたは前記第3のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、前記データ領域のうち残りの部分を前記第1の記憶装置から読み出す処理とを並列に実行することを特徴とする付記7〜9のいずれか1つに記載のストレージ制御装置。
(付記11) 前記読み出し制御部は、前記データ領域のうち第1の領域をパリティを用いて復元する処理の終了タイミングと、前記データ領域のうち残りの第2の領域を前記第1の記憶装置から読み出す処理の終了タイミングとが一致するように、前記第1の領域と前記第2の領域との境界位置を決定することを特徴とする付記10記載のストレージ制御装置。
(付記12) 前記パリティ算出部は、前記n個のデータのそれぞれから抽出した分割データを基に第1のパリティおよび第2のパリティを算出して、算出した前記第1のパリティおよび前記第2のパリティを前記第2の記憶装置に格納し、
前記読み出し制御部は、
前記第1の記憶装置から前記n個のデータのうち(n−3)個のデータを読み出した後、残りの3個のデータのうち第1のデータを前記第1の記憶装置から読み出す読み出し処理と、
前記第1の記憶装置から読み出した前記(n−3)個のデータ、前記第1のデータのうち前記第1の記憶装置から読み出し済みの分割データ、および、前記第2の記憶装置に格納された前記第1のパリティおよび前記第2のパリティを用いて、前記残りの3個のデータのうち第2のデータを復元する第1のデータ復元処理と、
前記第1の記憶装置から読み出した前記(n−3)個のデータ、前記第1のデータのうち前記第1の記憶装置から読み出し済みの分割データ、前記第2のデータのうち復元済みの分割データ、および、前記第2の記憶装置に格納された前記第1のパリティまたは前記第2のパリティのいずれかを用いて、前記残りの3個のデータのうち第3のデータを復元する第2のデータ復元処理と、
を並列に実行する、
ことを特徴とする付記1記載のストレージ制御装置。
(付記13) 前記読み出し制御部は、前記読み出し処理および前記第1のデータ復元処理の各処理速度と、前記第1のデータおよび前記第2のデータの各サイズとに基づき、前記読み出し処理の終了タイミングと前記第1のデータ復元処理の終了タイミングとが一致するように、前記読み出し処理を開始した後に前記第1のデータ復元処理を開始するタイミングを遅延させることを特徴とする付記12記載のストレージ制御装置。
(付記14) 前記読み出し制御部は、さらに、前記第1のデータ復元処理および前記第2のデータ復元処理の各処理速度と、前記第2のデータおよび前記第3のデータの各サイズとに基づき、前記第1のデータ復元処理の終了タイミングと前記第2のデータ復元処理の終了タイミングとが一致するように、前記第1のデータ復元処理を開始した後に前記第2のデータ復元処理を開始するタイミングを遅延させることを特徴とする付記13記載のストレージ制御装置。
(付記15) 前記読み出し制御部は、前記第1のデータのうち読み出しが完了した部分のサイズと、前記第2のデータのうち復元が完了した部分のサイズとの差分が所定値以内に近づいたとき、前記第1のデータ復元処理を一時的に停止し、前記読み出し処理および前記第1のデータ復元処理の各処理速度と、前記第1のデータのうち前記第1の記憶装置から読み出されていない部分のサイズと、前記第2のデータのうち復元されていない部分のサイズとに基づき、前記読み出し処理の終了タイミングと前記第1のデータ復元処理の終了タイミングとが一致するように、前記第1のデータ復元処理を再開するタイミングを決定することを特徴とする付記12〜14のいずれか1つに記載のストレージ制御装置。
(付記16) 前記読み出し制御部は、前記第1のデータを前記第1の記憶装置から読み出した後、前記第2のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、当該復元されていないデータ領域のうち残りの部分を前記第1の記憶装置から読み出す処理とを並列に実行することを特徴とする付記12〜15のいずれか1つに記載のストレージ制御装置。
(付記17) 前記読み出し制御部は、前記第2のデータの復元が完了した後、前記第3のデータにおける復元されていないデータ領域のうちの一部をパリティを用いて復元する処理と、当該復元されていないデータ領域のうち残りの部分を前記第1の記憶装置から読み出す処理とを並列に実行することを特徴とする付記16記載のストレージ制御装置。
(付記18) 前記パリティ算出部は、前記n個のデータのそれぞれのサイズが同じになるように、前記n個のデータのうち、少なくとも、最大サイズのデータを除くデータのそれぞれに対してダミーデータを付加し、ダミーデータの付加によってそれぞれのサイズが同じになった前記n個のデータを基にパリティを算出することを特徴とする付記1〜17のいずれか1つに記載のストレージ制御装置。
(付記19) 第1の記憶装置および第2の記憶装置と、
n個のデータ(ただし、nは2以上の整数)を前記第1の記憶装置に書き込み、書き込んだ前記n個のデータを前記第1の記憶装置から読み出すストレージ制御装置と、
を有し、
前記ストレージ制御装置は、
前記n個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出し、算出したパリティを前記第2の記憶装置に格納するパリティ算出部と、
前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうちの少なくとも1つを、前記第1の記憶装置から読み出す代わりに、前記n個のデータのうち前記第1の記憶装置から読み出し済みの他のデータと前記第2の記憶装置に格納されたパリティとを用いて復元する読み出し制御部と、
を有することを特徴とするストレージシステム。
(付記20) n個のデータ(ただし、nは2以上の整数)を第1の記憶装置に書き込み、書き込んだ前記n個のデータを前記第1の記憶装置から読み出すストレージ制御方法において、
コンピュータが、
前記n個のデータのそれぞれから一定サイズごとに抽出した分割データを基にパリティを算出して、算出したパリティを第2の記憶装置に格納し、
前記n個のデータを前記第1の記憶装置から読み出す際に、前記n個のデータのうちの少なくとも1つを、前記第1の記憶装置から読み出す代わりに、前記n個のデータのうち前記第1の記憶装置から読み出し済みの他のデータと前記第2の記憶装置に格納されたパリティとを用いて復元する、
ことを特徴とするストレージ制御方法。