以下に、本願の開示するストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法が限定されるものではない。
図1は、実施例に係るストレージシステムの構成図である。本実施例に係るストレージシステムは、図1に示すように、仮想テープライブラリ1が、ホスト2に接続されている。ホスト2は、サーバなどの情報処理装置である。
仮想テープライブラリ1は、階層制御サーバ10、テープライブラリ装置20及びディスクアレイ装置30を有している。具体的には、階層制御サーバ10が、ホスト2に接続している。また、階層制御サーバ10は、テープライブラリ装置20及びディスクアレイ装置30に接続している。
ディスクアレイ装置30は、テープなどの大容量記憶装置に比べて読み書きの速度が高速である記憶媒体を有している。例えば、ディスクアレイ装置30は、ハードディスクなどを有している。そして、ディスクアレイ装置30は、自己が有する記憶媒体に論理ボリューム(LV:Logical Volume)31を格納する。
テープライブラリ装置20は、ロボット21、物理ボリューム(PV:Physical Volume)22及びテープドライブ23を有している。物理ボリューム22は、大容量記憶媒体であり、例えば、磁気テープである。テープライブラリ装置20は、複数の物理ボリューム22を有している。
ロボット21は、物理ボリューム22の搬送を行う。例えば、階層制御サーバ10からの書き込み又は読み出しの指示を受けて、指定された物理ボリューム22をテープドライブ23へ挿入する。その後、テープドライブ23による物理ボリューム22への書き込み又は読出しの処理が終わると、テープドライブ23は、物理ボリューム22をテープドライブ23から取り出し、格納場所に戻す。
テープドライブ23は、階層制御サーバ10からの指示にしたがい、挿入された物理ボリューム22に対してデータの書き込み又は読み出しを行う。
ここで、物理ボリューム22のフォーマットについて説明する。図2は、物理ボリュームのフォーマットを表す概念図である。ここでは、論理ボリューム31A及び31Bが、物理ボリューム22に格納される場合で説明する。先に論理ボリューム31Aが格納され、後から論理ボリューム31Bが格納されたものとする。
論理ボリューム31Aは、論理ボリュームヘッダ(LV−HDR(Header))、VOL(Volume)1、HDR1、HDR2、DATA#A、EOF(End Of File)1、EOF(End Of File)2及びEOV(End Of Volume)を有している。論理ボリューム31Bも、DATA#AがDATA#Bに変わり、後の情報は同様のフォーマットを有している。LV−HDRのブロックは、論理ボリューム31の更新回数を表す世代、論理ボリューム名、論理ボリュームグループ名、論理ボリュームサイズ及び論理ボリューム作成日が格納されるブロックである。VOL1のブロックは、ボリューム名、所有者などの情報が格納される80バイトのブロックである。HDR1のブロックは、ファイル名、更新日などが格納される80バイトのブロックである。HDR2のブロックは、レコード形式、ブロック長などが格納される80バイトのブロックである。Data#A及び#Bのブロックは、ユーザデータが格納される可変長バイトのブロックである。EOF1のブロックは、ファイル名、更新日などが格納される80バイトのブロックである。EOVのブロックは、ボリュームの最後を示すマークブロックである。
そして、物理ボリューム22の先頭には、PV−HDRが格納される。PV−HDRには、標準的識別子、物理ボリューム名及び物理ボリューム22が属するグループ名が格納される。さらに、PV−HDRには、仮想テープライブラリ装置の識別子及び物理ボリューム22のステータスが格納される。物理ボリューム22のグループについては後で詳細に説明する。PV−HDRに続いて、矢印P1で示すように、最初に格納される論理ボリューム31AのLV−HDRが格納される。続いて、矢印P2で示すように、論理ボリューム31AのVOL1、HDR1、HDR2、DATA#A、EOF1、EOF2及びEOVが、1つの論理ボリュームのデータであるLV#Aとして格納される。続いて、矢印P3で示すように、2番目に格納される論理ボリューム31BのLV−HDRが格納される。続いて、矢印P4で示すように、論理ボリューム21BのVOL1、HDR1、HDR2、DATA#B、EOF1、EOF2及びEOVが1つの論理ボリュームのデータであるLV#Bとして格納される。最後に、PV−DIR(Directory)が物理ボリューム22に格納される。PV−DIRには、論理ボリュームのリストや末尾を示す情報などが格納される。このように、論理ボリューム31は、書き込まれた順番に順次後ろにつなげるように物理ボリューム22に格納されていく。
図1に戻って説明を続ける。階層制御サーバ10は、ホスト2からデータの書き込みの指示を受ける。データの書き込みの指示を受けると、階層制御サーバ10は、指定されたデータ群を1つの論理ボリューム31としてディスクアレイ装置30に書き込む。そして、階層制御サーバ10は、応答をホスト2に返す。その後、階層制御サーバ10は、マイグレーションを行う。具体的には、階層制御サーバ10は、ディスクアレイ装置30に格納した論理ボリューム31を読み出し、読み出したデータの物理ボリューム22への書き込みをテープライブラリ装置20に指示し、物理ボリューム22にデータを格納させる。
また、データの読み出しの指示を受けると、階層制御サーバ10は、読み出すデータを格納した論理ボリューム31がディスクアレイ装置30にあるか否かを判定する。読み出すデータを格納した論理ボリューム31がディスクアレイ装置30にある場合、階層制御サーバ10は、その論理ボリューム31をディスクアレイ装置30から読み出す。そして、階層制御サーバ10は、読み出したデータをホスト2に返す。
読み出すデータを格納した論理ボリューム31がディスクアレイ装置30にない場合、階層制御サーバ10は、その論理ボリューム31の読み出しをテープライブラリ装置20に指示し、物理ボリューム22からその論理ボリューム31を読み出させ、読み出させた論理ボリューム31を取得する。その後、階層制御サーバ10は、取得した論理ボリューム31に格納されているデータをホスト2に返し、さらに取得した論理ボリューム31をディスクアレイ装置30に格納する。
また、階層制御サーバ10は、ホスト2からのデータの削除指示を受けて、ディスクアレイ装置30や物理ボリューム22に格納された論理ボリューム31の削除を行う。
さらに、階層制御サーバ10は、物理ボリューム22の無効な論理ボリューム31が格納された無効領域が増えた場合、有効な論理ボリューム31が格納された有効領域を他の物理ボリューム22に移してまとめ、使用領域を増やすリオーガニゼーションを行う。ここで、論理ボリューム31が有効であるとは、その論理ボリューム31に対する更新された論理ボリューム31が格納されていない又はその論理ボリューム31が削除されていない場合である。
また、階層制御サーバ10は、リオーガニゼーションとして、無効領域と未使用領域の合計が1つの物理ボリューム22の容量以上になった場合にリオーガニゼーションを行う。ここでは、無効領域と未使用領域の合計が1つの物理ボリューム22の容量以上になった場合に実施するリオーガニゼーションを「先行リオーガニゼーション」という。また、ここでは、先行リオーガニゼーション以外のリオーガニゼーションを、「通常のリオーガニゼーション」という場合がある。
さらに、図3を参照して、階層制御サーバ10の詳細について説明する。図3は、階層制御サーバのブロック図である。図3に示すように、階層制御サーバ10は、グループ管理部101、情報格納部102、リードライト部103、データ移行処理部104及び判定部105を有する。
リードライト部103は、データの書込命令又は読出命令をホスト2から受信する。書込命令の場合、リードライト部103は、ディスクアレイ装置30に論理ボリューム31としてデータを格納する。ここで、リードライト部103は、ホスト2から論理ボリュームグループの作成を指示された場合、ディスクアレイ装置30に論理ボリュームグループを生成する。そして、リードライト部103は、書き込み命令においてデータの書き込み先として論理ボリュームの指定がある場合、ディスクアレイ装置30において指定された論理ボリュームグループに属するように論理ボリューム31を格納する。
その後、リードライト部103は、論理ボリューム31の格納をデータ移行処理部104に通知する。
さらに、リードライト部103は、論理ボリューム31の削除命令をホスト2から受ける。この場合、リードライト部103は、指定された論理ボリューム31をディスクアレイ装置30から削除する。さらに、リードライト部103は、論理ボリューム31の削除をデータ移行処理部104に指示する。
グループ管理部101は、グループ生成部111及びボリューム管理部112を有する。
グループ生成部111は、テープライブラリ装置20が有する使用済みの物理ボリューム22をまとめてグループを作成し、未使用の物理ボリューム22をまとめてグループを作成する。ここで、使用済みの物理ボリューム22とは、有効な論理ボリューム31が既に格納されている物理ボリュームである。また、未使用の物理ボリューム22とは、有効な論理ボリューム31が1つも格納されていない物理ボリュームである。以下では、使用済みの物理ボリューム22のグループを、「StackedPVG(Physical Volume Group)」という。また、未使用の物理ボリューム22のグループを、「ScratchPVG」という。
グループ生成部111は、StackedPVGを1つ又は複数作成する。また、グループ生成部111は、ScratchPVGを1つ又は複数作成する。
図4は、StackedPVGの一例の図である。例えば、ディスクアレイ装置30は、論理ボリュームグループ(LVG:Logical Volume Group)301〜303を含む論理ボリュームグループを格納する。各論理ボリュームグループ301〜303は、複数の論理ボリューム31を含む。
グループ生成部111は、StackedPVG211〜213を含むStackedPVGを生成する。各StackedPVG211〜213は、以下では、StackedPVGのそれぞれを区別しない場合、「StackedPVG210」という。1つのStackedPVG210には、1つ以上の物理ボリューム22が属している。そして、グループ生成部111は、論理ボリュームグループ301〜303に1つ以上のStackedPVG210に関連付ける。図4では、一点鎖線により論理ボリュームグループ301〜303とStackedPVG211〜213の関連付けを表している。グループ生成部111は、論理ボリュームグループ301にStackedPVG211を関連付ける。また、グループ生成部111は、論理ボリュームグループ302にStackedPVG212及び213を関連付ける。また、グループ生成部111は、論理ボリュームグループ303にStackedPVG213を関連付ける。このように関連付けた論理ボリュームグループとStackedPVGとの間で、論理ボリューム31を物理ボリューム22へ格納する処理や物理ボリューム22に格納された論理ボリューム31を読み出してディスクアレイ装置30内に格納する処理が行われる。
さらに、グループ生成部111は、生成したScratchPVGに1つ又は複数のStackedPVG210を関連付ける。例えば、図5に示すように、グループ生成部111は、ScratchPVG221及び222をStackedPVG211〜213を関連付ける。図5は、StackedPVGとScratchPVGとの関連付けを説明するための図である。以下では、ScratchPVGのそれぞれを区別しない場合、「ScratchPVG220」という。
以下で説明するように、各StackedPVG210は、関連付けられたScratchPVG220に属する物理ボリューム22を利用することができる。すなわち、StackedPVG210からの物理ボリューム22の要求に対して、関連付けらえたScratchPVG220が、物理ボリューム22を提供することができる。このように1つのScratchPVG220に対し、複数のStackedPVG210を関連付けることで、物理ボリューム22を効率よく運用することができる。
グループ生成部111は、StackedPVG210の情報、ScratchPVG220の情報及びその関連付けの情報を図6に示すようなPVG管理テーブル121を用いて管理する。図6は、PVG管理テーブルの一例の図である。図6に示すように、グループ生成部111は、PVG管理テーブル121に、各物理ボリュームグループ(PVG)の識別子に対応させて、関連付けられたScratchPVG220の情報を登録する。さらに、グループ生成部111は、各物理ボリュームグループに格納されているテープライブラリ装置20の情報及びその物理ボリュームグループに属する物理ボリューム22の数をPVG管理テーブル121に登録する。
さらに、グループ生成部111は、PVG管理テーブル121に、SoftMinimumの閾値、HardMinimumの閾値、AbsoluteMinimumの閾値及び有効論理ボリューム(LV)基準率を登録する。ここで、SoftMimimum、HardMinimum及びAbsoluteMinimumとは、管理者から指定された各物理ボリュームグループに対する通常のリオーガニゼーション処理の実行を開始する条件である。SoftMinimumとは、使用可能な物理ボリューム22が所定の閾値未満となり、且つ、有効な論理ボリューム31の割合が有効な論理ボリュームの基準率を超えた場合である。また、HardMinimumとは、使用可能な物理ボリューム22がSoftMinimumの閾値よりも小さい所定の閾値未満となった場合である。AbsoluteMinimumとは、使用可能な物理ボリューム22がHardMinimumの閾値よりも小さい所定の閾値未満となった場合である。例えば、AbsoluteMinimumの閾値は、その閾値以下であればマイグレーションを実行するための物理ボリューム22が無いと判断できる値に設定される。
そして、グループ生成部111は、生成したPVG管理テーブル121を情報格納部102に格納する。
ボリューム管理部112は、各物理ボリューム22に格納されている論理ボリューム31を管理する。具体的には、ボリューム管理部112は、図7に示すPV管理テーブル122を用いて管理を行う。図7は、PV管理テーブルの一例の図である。
ボリューム管理部112は、各物理ボリューム22の格納先のテープライブラリ装置20、所属物理ボリュームグループの情報、使用状態、格納している論理ボリュームの数、有効な論理ボリュームの数、有効な論理ボリュームの割合である有効LV率をPV管理テーブル122に登録する。使用状態は、物理ボリューム22が未使用であるか、使用中であるか、書き込み中であるか、読み出し中であるか、媒体異常であるか、アクセス不可であるかなどを表す。アクセス不可や媒体異常の場合には、その物理ボリューム22は使用できない。また、書き込み中や読み出し中の物理ボリューム22は、使用中の1形態である。
ボリューム管理部112は、物理ボリューム22への書き込みをデータ移行処理部104が開始すると、PV管理テーブル122における書き込み先の物理ボリューム22の状態を書き込み中に変更する。データ移行処理部104による書き込み完了後、ボリューム管理部112は、PV管理テーブル122における書き込み先の物理ボリューム22の状態を使用中に変更する。
また、ボリューム管理部112は、データ移行処理部104が物理ボリューム22から読み出しを開始すると、PV管理テーブル122における読み出し元の物理ボリューム22の状態を読み出し中に変更する。データ移行処理部104による読出し終了後、ボリューム管理部112は、PV管理テーブル122における読み出し元の物理ボリューム22の状態を使用中に変更する。
また、ボリューム管理部112は、データ移行処理部104のデータ管理部141により論理ボリューム31の削除が行われた場合、削除を行った物理ボリューム22及び論理ボリューム31の情報をデータ管理部141から取得する。そして、ボリューム管理部112は、PV管理テーブル122における論理ボリューム31の削除が行われた物理ボリューム22が格納する論理ボリューム31の数、有効な論理ボリューム31の数及び有効な論理ボリューム31の割合を更新する。
次に、ボリューム管理部112は、削除により有効な論理ボリューム31を有さなくなった物理ボリューム22が有る場合、PV管理テーブル122からその物理ボリューム22を特定する。そして、ボリューム管理部112は、PV管理テーブル122における特定した物理ボリューム22の所属先をStackedPVG210からScratchPVG220へ変更する。これにより、ボリューム管理部112は、特定した物理ボリューム22をStackedPVG210から特定したScratchPVG220へ移動する。
また、ボリューム管理部112は、マイグレーションの実行が確定した場合又は論理ボリューム31の削除が行われた場合、確保する物理ボリューム22の個数(Pn)分の物理ボリューム22の確保の指示をリオーガニゼーション処理部142から受ける。そして、ボリューム管理部112は、PV管理テーブル122からScratchPVG220に属するPn個の物理ボリューム22を選択する。次に、ボリューム管理部112は、PV管理テーブル122における選択した物理ボリューム22の所属先をScratchPVG220からStackedPVG210へ変更する。これにより、ボリューム管理部112は、選択した物理ボリューム22をScratchPVG220からStackedPVG210へ移動する。その後、ボリューム管理部112は、StackedPVG210への物理ボリューム22の移動完了をリオーガニゼーション処理部142へ通知する。
また、ボリューム管理部112は、データ移行処理部104によるマイグレーション、リオーガニゼーション及び先行リオーガニゼーション処理が完了した場合、処理対象の論理ボリューム31の情報をデータ移行処理部104から取得する。さらに、ボリューム管理部112は、処理対象の論理ボリューム31の移動元及び移動先の物理ボリューム22の情報をデータ移行処理部104から受信する。
そして、ボリューム管理部112は、PV管理テーブル122における移動先の物理ボリューム22が格納する論理ボリューム31の数、有効な論理ボリューム31の数及び有効な論理ボリューム31の割合を更新する。さらに、ボリューム管理部112は、PV管理テーブル122における書き込み先の物理ボリューム22の状態を使用中に変更する。
さらに、ボリューム管理部112は、PV管理テーブル122における移動元の物理ボリューム22が格納する論理ボリューム31の数、有効な論理ボリューム31の数及び有効な論理ボリューム31の割合を更新する。
この時、移動元の物理ボリューム22に有効な論理ボリューム31が格納されている場合、ボリューム管理部112は、移動元の物理ボリューム22の状態を使用中にする。
これに対して、有効な論理ボリューム31が格納されていない場合、ボリューム管理部112は、移動元の物理ボリューム22の状態を未使用にする。次に、ボリューム管理部112は、移動元の物理ボリューム22が属していたStackedPVG210に対応するScratchPVG220をPVG管理テーブル121から特定する。そして、ボリューム管理部112は、PV管理テーブル122における移動元の物理ボリューム22の所属を特定したScratchPVG220に変更する。これにより、ボリューム管理部112は、移動元の物理ボリューム22をStackedPVG210から特定したScratchPVG220へ移動する。このボリューム管理部112が、「移動部」の一例にあたる。
判定部105は、データ管理部141によりマイグレーションの実行が確定された場合又は削除処理が行われた場合、データ管理部141から通知を受ける。そして、判定部105は、処理の対象となった物理ボリューム22が属するStackedPVG210をPV管理テーブル122から特定し、先行リオーガニゼーション処理の判定対象とする。以下では、判定部105が先行リオーガニゼーションの判定対象とするStackedPVG210を「判定対象StackedPVG210」という。
判定部105は、判定対象StackedPVG210における物理ボリューム22の総無効領域の容量(Ci)を求める。ここで、総無効領域とは、物理ボリューム22の中で、データが更新され無効とされたデータを格納している領域の総計である。さらに、判定部105は、算出した総無効領域の容量(Ci)を1つの物理ボリューム22の容量で除算する。そして、判定部105は、除算結果が1以上か否かを判定する。すなわち、判定部105は、総無効領域の容量(Ci)が1つの物理ボリューム22の容量以上か否かを判定する。言い換えれば、判定部105は、無効領域の合計が1つの物理ボリューム22の容量以上となる物理ボリューム22の組があるか否かを判定する。
次に、判定部105は、判定対象StackedPVG210に属する各物理ボリューム22における有効領域の割合をPV管理テーブル122から取得する。そして、判定部105は、判定対象StackedPVG210全体における有効領域の割合を算出する。そして、判定部105は、判定対象StackedPVG210の全体における有効領域の割合が、PVG管理テーブル121に記載されている有効な物理ボリューム22の基準率以上か否かを判定する。
有効領域の割合が有効な物理ボリュームの基準率以上、且つ、総無効領域の容量が1つの物理ボリューム22の容量以上の場合、判定部105は、判定対象StackedPVG210に対する先行リオーガニゼーションの実行を決定する。言い換えれば、有効領域の割合が有効な物理ボリュームの基準率以上、且つ、無効領域の合計が1つの物理ボリューム22の容量以上となる物理ボリューム22の組がある場合に、判定部105は、先行リオーガニゼーションの実行を決定する。そして、判定部10は、判定対象StackedPVG210に対する先行リオーガニゼーションの実行をデータ移行処理部104に指示する。
これに対して、有効領域の割合が有効な物理ボリュームの基準率未満、又は、総無効領域の容量が1つの物理ボリューム22の容量未満の場合、判定部105は、先行リオーガニゼーションの不実行をデータ移行処理部104に通知する。
データ移行処理部104は、データ管理部141及びリオーガニゼーション処理部142を有する。データ管理部141は、例えば、マイグレーション、論理ボリューム31の削除及びディスクアレイ装置30への論理ボリューム31の書き込みを行う。また、リオーガニゼーション処理部142は、通常のリオーガニゼーション及び先行リオーガニゼーションを実行する。
データ管理部141は、論理ボリューム31の格納の通知をリードライト部103から受けると、ディスクアレイ装置30に格納した論理ボリューム31を物理ボリューム21へ格納する以下のマイグレーションの実行の確定の処理を行う。ただし、このマイグレーションの実行を判断するタイミングは、通知受信後いつでもよい。以下に、データ移行処理部104によるマイグレーションについて説明する。
データ管理部141は、ディスクアレイ装置30を確認し、マイグレーションを行うデータのデータ量(D)を取得する。
次に、データ管理部141は、論理ボリューム31を書き込むマイグレーション先のStackedPVG210を特定する。さらに、データ管理部141は、マイグレーション先のStackedPVG210に属する物理ボリューム22をPV管理テーブル122から特定する。次に、データ管理部141は、特定した各物理ボリューム22から未使用領域の容量を取得する。そして、データ管理部141は、求めた未使用領域の容量を合計してマイグレーション先のStackedPVG210の総空き容量(Cb)を求める。
そして、データ管理部141は、マイグレーションを行うデータのデータ量(D)とマイグレーション先のStackedPVG210の総空き容量(Cb)とを比較する。
総空き容量(Cb)がデータ量(D)より大きい場合、データ管理部141は、マイグレーション先のStackedPVG210に属する物理ボリューム22の構成を変更せずに、マイグレーションの実行を確定する。この場合、データ管理部141は、ScratchPVG220から確保する物理ボリューム22の数(Pn)を0とする。そして、データ管理部141は、マイグレーションの実行の確定及びPn=0をリオーガニゼーション処理部142に通知する。
これに対して、総空き容量(Cb)がデータ量(D)より小さい場合、そのままでは、マイグレーション先のStackedPVG210にはデータが書き込めない。そこで、データ管理部141は、以下のように容量を確保するための処理を実行する。
データ管理部141は、データ量(D)から総空き容量(Cb)を減算し、マイグレーション用に確保する容量(D−Cb)を求める。次に、データ管理部141は、マイグレーション用に確保する容量(D−Cb)を1つの物理ボリューム22の容量(Pu)で除算し、端数を切り上げて、確保する物理ボリューム22の数(Pn)を算出する。そして、データ管理部141は、マイグレーションの実行を確定する。その後、データ管理部141は、マイグレーションの実行の確定及び確保する物理ボリューム22の数(Pn)をリオーガニゼーション処理部142に通知する。
その後、データ管理部141は、マイグレーションの実行の指示をリオーガニゼーション処理部142から受ける。そして、データ管理部141は、マイグレーションを実行する。具体的には、データ移行処理部104は、マイグレーションの対象である論理ボリューム31をディスクアレイ装置30から取得し、マイグレーション先のStackedPVG210の物理ボリューム22へ格納する。
その後、データ管理部141は、マイグレーションにより移動した論理ボリューム31の情報、移動元の物理ボリューム22の情報及び移動先の物理ボリューム22の情報をボリューム管理部112に通知する。
また、データ管理部141は、論理ボリューム31の削除の指示をリードライト部103から受けて、物理ボリューム22から指定された論理ボリューム31を削除する。そして、データ管理部141は、論理ボリューム31の削除後、削除を行った論理ボリューム31の情報及びその論理ボリュームが属する物理ボリューム22の情報をボリューム管理部112へ通知する。さらに、データ管理部141は、削除の通知とともに論理ボリューム31の削除を行った物理ボリューム22が属するStackedPVG210の情報をリオーガニゼーション処理部142へ通知する。このデータ管理部141が、「データ格納部」の一例にあたる。
リオーガニゼーション処理部142は、マイグレーションの実行の確定又は削除の通知をデータ管理部141から受ける。そして、リオーガニゼーション処理部142は、先行リオーガニゼーション処理の判定を判定部105に依頼する。さらに、データ移行処理部104は、マイグレーションの対象となっている物理ボリューム22又は論理ボリューム31の削除が行われた物理ボリューム22が属するStackedPVG210の情報を判定部105に通知する。以下では、判定部105に通知したStackedPVG210を「対象StackedPVG210」という。
判定部105から先行リオーガニゼーションの不実行の通知を受信すると、リオーガニゼーション処理部142は、対象StackedPVG210に属する各物理ボリューム22の有効な論理ボリューム31の数をPV管理テーブル122から取得する。さらに、リオーガニゼーション処理部142は、その物理ボリューム22の有効な論理ボリュームの割合をPV管理テーブル122から取得する。さらに、リオーガニゼーション処理部142は、対象StackedPVG210に設定された有効な論理ボリューム31の基準率を取得する。
また、リオーガニゼーション処理部142は、対象StackedPVG210のSoftMinimumの閾値、HardMinimumの閾値又はAbsoluteMinimumの閾値をPVG管理テーブル121から取得する。そして、リオーガニゼーション処理部142は、各物理ボリューム22の有効な論理ボリューム31の数を各閾値と比較する。
ある物理ボリューム22の有効な論理ボリューム31の数がSoftMinimumの閾値以上でありマイグレーションの実行が確定されていれば、リオーガニゼーション処理部142は、マイグレーションの実行をデータ管理部141に指示する。これに対して、マイグレーションの実行を確定していなければ、リオーガニゼーション処理部142は、処理を終了する。
一方、ある物理ボリューム22の有効な論理ボリューム31の数がSoftMinimumの閾値未満の場合、リオーガニゼーション処理部142は、その物理ボリューム22の有効な論理ボリュームの割合が基準率以上か否かを判定する。有効な論理ボリュームの割合が基準率以上の場合、マイグレーションの実行を確定していれば、リオーガニゼーション処理部142は、マイグレーションの実行をデータ管理部141に指示する。これに対して、マイグレーションの実行を確定していなければ、リオーガニゼーション部142は、処理を終了する。
これに対して、有効な論理ボリュームの割合が基準率未満の場合、データ移行処理部104は、その物理ボリューム22のリオーガニゼーション処理を実行する。また、ある物理ボリューム22の有効な論理ボリューム31の数が、AbsoluteMinimumの閾値以下又はHardMinimumの閾値以下の場合リオーガニゼーション処理部142は、その物理ボリューム22のリオーガニゼーションを実行する。
ここで、リオーガニゼーション処理について説明する。まず、図8〜10を参照して、リオーガニゼーションを実行する理由について説明する。図8は、マイグレーションの処理の概念図である。また、図9は、論理ボリュームの更新時のマイグレーションの処理の概念図である。また、図10は、リオーガニゼーションの処理の概念図である。
図8では、論理ボリューム31としてLV#A、LV#B、LV#Cがディスクアレイ装置30に格納されており、LV#A、LV#B、LV#Cの順番でマイグレーションされるものとする。リオーガニゼーション処理部142は、まず物理ボリューム22のPV−DHRの後にLV#Aを格納する。次に、リオーガニゼーション処理部142は、LV#Aの後にLV#Bを格納する。さらに、データ移行処理部104は、LV#Bの後にLV#Cを格納する。
次に、図9に示すように、ディスクアレイ装置30に、更新されたLV#Aである論理ボリューム311が格納されたとする。この場合、リオーガニゼーション処理部142は、LV#Cの後に、論理ボリューム313として新しいLV#Aを格納する。この時、更新前のLV#Aである論理ボリューム312は、無効な論理ボリューム31となる。この場合、物理ボリューム22における論理ボリューム312の領域は、使用できない領域となってしまう。
このように、論理ボリューム31の更新が繰り返されると、例えば、図10の物理ボリューム221のように、無効な論理ボリューム31が増えてしまい、使用できない領域が多い状態になってしまう。そこで、リオーガニゼーション処理部142は、未使用の物理ボリューム222に物理ボリューム221の有効な論理ボリューム322,324及び325を移行し、有効な論理ボリューム326〜328としてLV#A〜#Cを格納する。この場合、無効な論理ボリューム321及び323は、物理ボリューム222には移行されないので、物理ボリューム222は、有効な論理ボリューム31のみを有することになり、無駄な領域が無くなる。そして、物理ボリューム221は、有効な論理ボリューム31を有さなくなるので、全ての論理ボリュームを削除して新たに未使用の論理ボリューム31として使用することができる。このようなリオーガニゼーション処理により、物理ボリューム22の利用効率を向上させることができる。
図3に戻って、リオーガニゼーション処理部142によるリオーガニゼーション処理の動作について詳しく説明する。以下では、リオーガニゼーション処理の対象とした物理ボリューム22に格納されている有効な論理ボリューム31を対象の論理ボリューム31という。
リオーガニゼーション処理部142は、対象StackedPVG210に属する使用中の物理ボリューム22の中に、対象の論理ボリューム31を格納できる空き領域を有するものがあるかを判定する。対象の論理ボリューム31を格納できる空き領域がある物理ボリューム22が有る場合、リオーガニゼーション処理部142は、その物理ボリューム22に対象の論理ボリューム31を移動する。そして、リオーガニゼーション処理部142は、対象の論理ボリューム31の移動元の物理ボリューム22をボリューム管理部112に通知する。またリオーガニゼーション処理部142は、対象の論理ボリューム31の移動先の物理ボリューム22の情報及び移動した論理ボリューム31の情報をボリューム管理部112に通知する。
一方、対象の論理ボリューム31を格納できる空き領域を有する物理ボリューム22が無い場合、リオーガニゼーション処理部142は、PVG管理テーブル121から対象StackedPVG210に対応するScratchPVG220を特定する。次に、リオーガニゼーション処理部142は、特定したScratchPVG220の中から未使用の物理ボリューム22を選択する。そして、リオーガニゼーション処理部142は、選択した物理ボリューム22の対象StackedPVG210への移動をボリューム管理部112に指示する。
StackedPVG210への物理ボリューム22の移動完了の通知をボリューム管理部112から受信すると、リオーガニゼーション処理部142は、対象の論理ボリューム31を移動した物理ボリューム22へ移動する。
リオーガニゼーション実行後、マイグレーションの実行が確定されていれば、リオーガニゼーション処理部142は、マイグレーションの実行をデータ管理部141に指示する。
マイグレーションの実行が確定されていなければ、リオーガニゼーション処理部142は、移動した論理ボリューム31の情報、移動元の物理ボリューム22の情報及び移動先の物理ボリューム22の情報をボリューム管理部112に通知する。
一方、判定部105から先行リオーガニゼーションの実行指示を受信すると、リオーガニゼーション処理部142は、対象StackedPVG210に属する物理ボリューム22をPV管理テーブル122から特定する。次に、リオーガニゼーション処理部142は、特定した各物理ボリューム22のうちの有効な論理ボリューム31の領域の大きさを求める。
そして、リオーガニゼーション処理部142は、対象StackedPVG210に属する全ての物理ボリューム22の有効な論理ボリューム31の領域の合計である総有効領域(Cv)を算出する。
そして、リオーガニゼーション処理部142は、総有効領域(Cv)を1つの物理ボリューム22の容量(Pu)で除算し、端数を切り上げて、先行リオーガニゼーション用に確保する物理ボリューム22の数を求める。そして、リオーガニゼーション処理部142は、データ管理部141から受信した確保する物理ボリューム22の数(Pn)に先行リオーガニゼーション用に確保する物理ボリューム22の数を加算し、確保する物理ボリューム22の数(Pn)を新たに求める。
また、リオーガニゼーション処理部142は、PVG管理テーブル121から対象StackedPVG210に対応するScratchPVG220を特定する。次に、リオーガニゼーション処理部142は、確保する物理ボリューム22の数(Pn)の未使用の物理ボリューム22の特定したScratchPVG220から確保をボリューム管理部112に通知する。以下では、ボリューム管理部112により対象のStackedPVG210へ移動された物理ボリューム22を「確保した物理ボリューム22」という。
その後、リオーガニゼーション処理部142は、StackedPVG210への物理ボリューム22の移動完了の通知をボリューム管理部112から受信する。そして、リオーガニゼーション処理部142は、対象StackedPVG210に属する物理ボリューム22に格納されている有効な論理ボリューム31及びマイグレーションの対象となる論理ボリューム31を取得する。そして、リオーガニゼーション処理部142は、取得した論理ボリューム31を確保した物理ボリューム22へ移行する。
その後、リオーガニゼーション処理部142は、移動した論理ボリューム31の情報、移動元の物理ボリューム22の情報及び移動先の物理ボリューム22の情報をボリューム管理部112に通知する。さらに、リオーガニゼーション処理部142は、マイグレーションの実行が確定している場合、マイグレーションの実行をデータ管理部141に指示する。
マイグレーションの実行が確定していい場合、リオーガニゼーション処理部142は、マイグレーションの指示を行わずに、移動した論理ボリューム31の情報、移動元及び移動先の物理ボリューム22の情報をボリューム管理部112に通知する。このリオーガニゼーション処理部142が、「データ移行部」の一例にあたる。
次に、図11〜13を参照して、マイグレーション、論理ボリューム31の削除及びリオーガニゼーションの各処理を行った場合のPV管理テーブルの遷移の一例について説明する。図11は、マイグレーション実行時のPV管理テーブルの遷移を表す一例の図である。図12は、論理ボリュームの削除時のPV管理テーブルの遷移を表す一例の図である。図13は、先行リオーガニゼーション実行時のPV管理テーブルの遷移を表す一例の図である。
図11を参照して、マイグレーション実行時のPV管理テーブル122の遷移を説明する。ここでは、リオーガニゼーション処理部によるリオーガニゼーション処理が行われない場合を例に説明する。
図11のテーブル122Aは、マイグレーションを実行する前のPV管理テーブル122の状態を表す。ここでは、物理ボリューム22は、PV00〜02の3つある。そして、テーブル122Aの状態では、PV00〜02は、全て未使用の物理ボリューム122であり、Scratch#00という名のScratchPVG220に属している。PV00〜02は、未使用であるので、格納している論理ボリューム31のV数、有効な論理ボリューム31の数及び有効な論理ボリューム31の割合はすべて0である。
テーブル122Aの状態で、データ管理部141は、ディスクアレイ装置30に格納されている100個の論理ボリューム31をPV00の物理ボリューム22に格納すると決定する。そこで、データ管理部141は、Scratch#00からStacked#0という名のStackedPVG210へのPV00の移行をボリューム管理部112に指示する。ボリューム管理部112は、テーブル122Bに示すようにPV00が属する物理ボリュームグループをStacked#0に変更する。これにより、PV00は、Scratch#00からStacked#0に移動される。
データ管理部141は、PV00がStacked#0に属するように変更された後に、マイグレーション対象の100個の論理ボリューム31をPV00に格納する。この論理ボリューム31の格納を受けて、ボリューム管理部112は、PV管理テーブル122のPV00の有効な物理ボリューム22の数を100にする。この場合、PV00にはそれ以外に論理ボリューム31は格納されていないので、ボリューム管理部112は、格納している物理ボリューム22の数も100にする。さらに、格納されている全ての論理ボリューム31が有効な論理ボリューム31であるので、ボリューム管理部112は、有効な論理ボリュームの割合を100%とする。このマイグレーションにより、PV管理テーブル122は、テーブル122Aからテーブル122Bに更新される。
次に、図12を参照して、論理ボリュームの削除時のPV管理テーブル122の遷移を説明する。ここでは、PV00〜02という物理ボリューム22があり、そのうち使用中のPV00が削除される場合で説明する。テーブル122Cが、削除前のPV管理テーブル122の状態である。
データ管理部141は、Stacked#0に属するPV00に格納されている100個の論理ボリューム31の削除の指示をホスト2から受ける。そして、データ管理部141は、指定された100個の論理ボリューム31をPV00から削除する。削除後、データ管理部141は、PV00から削除した論理ボリューム31の情報をボリューム管理部112に通知する。ボリューム管理部112は、PV管理テーブル122におけるPV00の有効な物理ボリューム22の数を100個減らす。これにより、PV管理テーブル122は、テーブル122Cからテーブル122Dへ遷移する。
次に、ボリューム管理部112は、テーブル122Dの状態のPV管理テーブル122から、PV00に格納されている有効な物理ボリューム22がなくなったことを確認する。そして、ボリューム管理部112は、PV管理テーブル122におけるPV00の所属先をStacked#0からScratch#00へ変更する。これにより、PV管理テーブル122は、テーブル122Dからテーブル122Eへ遷移する。そして、PV00は、Stacked#0からScratch#00へ移動される。
また、ここでは、PV00に格納されている論理ボリューム31の数はそのままにしている。しかし、PV00をStacked#0からScratch#00に移動するときに、無効の論理ボリューム31を全て削除してもよい。その場合、PV00は、Scratch#00に移動されてから、格納している論理ボリューム31の数が0になる。ボリューム管理部112は、PV管理テーブル122におけるPV00の格納している論理ボリューム31の数を0にする。さらに、ボリューム管理部112は、PV管理テーブル122におけるPV00の状態を未使用にする。
次に、図13を参照して、先行リオーガニゼーション実行時のPV管理テーブル122の遷移を説明する。ここでは、PV00〜03という物理ボリューム22があり、そのうちPV00〜02がStackedPVG210であるStacked#0に属しており、PV03がScratchPVG220であるScratch#00に属している。そして、PV00〜02の有効な論理ボリューム31をPV03に移行する場合で説明する。テーブル122Fが、先行リオーガニゼーション前のPV管理テーブル122の状態である。
リオーガニゼーション処理部142は、先行リオーガニゼーションの実行の対象としてPV00〜02を選択する。そして、リオーガニゼーション処理部142は、移行先の物理ボリューム22としてPV03を選択する。リオーガニゼーション処理部142は、PV03のStacked#0への移行をボリューム管理部112に指示する。ボリューム管理部112は、テーブル122Gのように、PV管理テーブル122におけるPV03の所属先をStacked#0に変更する。これにより、PV03は、Scratch#00からStacked#0に移動させられる。
PV03がStacked#0に移動された後、リオーガニゼーション処理部142は、PV00〜02に格納されている有効な論理ボリューム31をPV03に移行する。移行後、リオーガニゼーション処理部142は、移行した論理ボリューム31の情報、移行元の物理ボリューム22であるPV00〜PV02の情報及び移行先の物理ボリュームであるPV03の情報をボリューム管理部112へ通知する。ボリューム管理部112は、通知を受けて、PV管理テーブル122におけるPV00〜02の有効な論理ボリューム31の数及び有効な論理ボリューム31の割合を0にする。さらに、ボリューム管理部112は、PV管理テーブル122におけるPV03の格納している論理ボリューム31の数及び有効な論理ボリュームの数をPV00〜03から移動した論理ボリューム31の合計である90に設定する。この場合、PV03には有効な論理ボリューム31しかないので、ボリューム管理部112は、有効な論理ボリューム31の割合を100%にする。これにより、PV管理テーブル122は、テーブル122Fからテーブル122Gへ遷移する。
次に、ボリューム管理部112は、テーブル122Gの状態のPV管理テーブル122から、PV00〜02に格納されている有効な物理ボリューム22がなくなったことを確認する。そして、ボリューム管理部112は、PV管理テーブル122におけるPV00〜02の所属先をStacked#0からScratch#00へ変更する。これにより、PV管理テーブル122は、テーブル122Gからテーブル122Hへ遷移する。そして、PV00〜02は、Stacked#0からScratch#00へ移動される。
次に、図14〜17を参照して、仮想テープライブラリ1による先行リオーガニゼーションの処理の概要をさらに説明する。図14は、先行リオーガニゼーション前の物理ボリューム及び論理ボリュームの状態を表す図である。図15は、物理ボリューム確保時の物理ボリューム及び論理ボリュームの状態を表す図である。図16は、先行リオーガニゼーション実行後の物理ボリューム及び論理ボリュームの状態を表す図である。図17は、物理ボリュームをScratchPVGに戻した後の物理ボリューム及び論理ボリュームの状態を表す図である。
ここでは、StackedPVG210に物理ボリューム22A〜22Cが属しており、ScratchPVG220に物理ボリューム22D及び22Eが属している場合で説明する。
論理ボリューム群331は、物理ボリューム22A〜22Cに格納されている論理ボリューム31の状態を表している。論理ボリューム群331の内の左端の列が物理ボリューム22Aにおける論理ボリューム31の格納状態を表している。また、論理ボリューム群331の中央の列が物理ボリューム22Bにおける論理ボリューム31の格納状態を表している。また、論理ボリューム群331の内の右端の列が物理ボリューム22Cにおける論理ボリューム31の格納状態を表している。そして、論理ボリューム群331の内、斜線で示された領域が有効な論理ボリューム31が格納されている領域である。また、論理ボリューム群331の内、ドット模様で示された領域が無効な領域である。さらに、白抜きの領域が未使用領域である。また、物理ボリューム22A〜22Cにおける容量を論理ボリューム群331で示される1つずつの区画で表す。ここでは、論理ボリューム群331で示される1つずつの区画に格納可能な論理ボリューム31の数を10として説明する。例えば、物理ボリューム22A〜22Cの1つあたりの容量(Pu)は40である。
リオーガニゼーション処理部142は、物理ボリューム22A〜22Cの無効な論理ボリューム31の容量を取得する。そして、リオーガニゼーション処理部142は、取得した各容量を合計し、StackedPVG210の総無効領域の容量(Ci)を算出する。ここでは、総無効領域の容量(Ci)は、ドット模様のブロックの数であり、40である。そして、リオーガニゼーション処理部142は、総無効領域の容量(Ci)を物理ボリューム22A〜22Cの1つあたりの容量(Pu)で除算する。ここでは、リオーガニゼーション処理部142は、除算結果として1を得る。次に、リオーガニゼーション処理部142は、除算結果が1以上か否かを判定する。本実施例では、除算結果は1であるので、データ移行処理部104は、除算結果は1以上と判定する。ここで、除算結果が1以上であるので、物理ボリューム22A〜22Cに格納された有効な物理ボリュームのみを格納した場合、使用する物理ボリューム22の数を1つ以上減らせる。
そこで、リオーガニゼーション処理部142は、物理ボリューム22A〜22Cの有効な論理ボリューム31の容量を取得する。そして、リオーガニゼーション処理部142は、取得した各容量を合計し、StackedPVG210の総有効領域(Cv)を算出する。ここでは、総有効領域の容量(Cv)は、斜線のブロックの数であり、60である。そして、リオーガニゼーション処理部142は、総有効領域(Cv)を物理ボリューム22A〜22Cの1つあたりの容量(Pu)で除算し、確保する物理ボリューム22の数(Pn)を求める。本実施例では、リオーガニゼーション処理部142は、60を40で除算し余りを切り上げて、確保する物理ボリューム22の数(Pn)を2個と求める。
次に、リオーガニゼーション処理部142は、2個の物理ボリューム22をScratchPVG220からStackedPVG210へ移動する指示をボリューム管理部112に通知する。ボリューム管理部112は、通知を受けて、PV管理テーブル122を変更して、図15に示すように、ScratchPVG220からStackedPVG210へ物理ボリューム22D及び22Eを移動する。図15では、破線で表される物理ボリューム22が既に移動された物理ボリューム22D及び22Eを表す。また、破線矢印は、物理ボリューム22D及び22EのStackedPVG210への移行を表す。
図15における、論理ボリューム群332が、物理ボリューム22D及び22E#に格納されている論理ボリューム31の状態を表している。論理ボリューム群332の内の左端の列が物理ボリューム22Dにおける論理ボリューム31の格納状態を表している。また、論理ボリューム群331の内の右端の列が物理ボリューム22Eにおける論理ボリューム31の格納状態を表している。この状態では、物理ボリューム22D及び22Eともに格納している論理ボリューム31はない。
リオーガニゼーション処理部142は、物理ボリューム22A〜22Cに格納されている有効な論理ボリューム31を物理ボリューム22D〜22Eに移行する。これにより、論理ボリューム群331及び332の状態は、図16に示す状態になる。すなわち、物理ボリューム22A〜22Cは、論理ボリューム群331に示すように、有効な論理ボリューム31を格納しなくなる。これに対して、物理ボリューム22D及び22Eには、論理ボリューム群332に示すように、60の有効な論理ボリューム31が格納されている。
ボリューム管理部112は、移行された論理ボリューム31の情報、移行元の物理ボリューム22A〜22Cの情報、並びに、移行先の物理ボリューム22D及びEの情報をデータ移行処理部104から取得する。そして、取得した情報にしたがってPV管理テーブル122を更新する。その後、ボリューム管理部112は、有効な論理ボリューム31を格納していない物理ボリューム22A〜22CをPV管理テーブル122を用いて特定する。ここで、物理ボリューム22A〜22Cは、有効な論理ボリューム31を格納していないので、図16の破線矢印で示されるように、ScratchPVGへ移行することができる。
そこで、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22A〜22Cの所属先をStackedPVG210からScratchPVG220に変更する。これにより、図17に示すように、物理ボリューム22A〜22Cは、ScratchPVG220に移動する。この後、ボリューム管理部112は、物理ボリューム22A〜22Cは、未使用のディスクとして扱うことができる。また、StackedPVG210には、論理ボリューム群332に示すように、有効な論理ボリューム31のみを格納したボリューム22D及び22Eが属する。
次に、図18を参照して、図14〜17で示した先行リオーガニゼーションを行った場合のPV管理テーブル122の遷移について説明する。図18は、図14〜17で示した先行リオーガニゼーションを行った場合のPV管理テーブルの遷移を表す図である。ここでは、先行リオーガニゼーション対象であるStackedPVG210をStacked#0とし、物理ボリューム22の格納先のScratchPVG220をScratch#1とする。
テーブル122Jは、先行リオーガニゼーションを実施する前の各物理ボリューム22A〜22Eの状態を表したPV管理テーブル122である。テーブル122Jの状態では、物理ボリューム22A〜22Cは、Stacked#0に属し、状態は使用中である。これに対して、物理ボリューム22D及び22Eは、Scratch#0に属し、状態は未使用である。
ボリューム管理部112は、データ移行処理部104から指示を受けて、PV管理テーブル122における物理ボリューム22D及び22Eの所属先をScratch#1からStackedPVG#0へ変更する。そして、リオーガニゼーション処理部142により先行リオーガニゼーションが行われると、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22A〜22Cの有効な論理ボリューム31の数を0とし、有効な論理ボリューム31の割合を0とする。さらに、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22Dが格納する論理ボリューム31の数及び有効な論理ボリュームの数を40とし、有効な論理ボリューム31の割合を100%とする。また、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22Dが格納する論理ボリューム31の数及び有効な論理ボリュームの数を20とし、有効な論理ボリューム31の割合を100%とする。また、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22D及び22Eの状態を使用中に変更する。これにより、PV管理テーブル122は、テーブル122Jの状態からテーブル122Kの状態へ遷移する。
次に、ボリューム管理部112は、テーブル122Kを参照して、物理ボリューム22A〜22Cが有効な論理ボリューム31を有さないことを確認する。そして、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22A〜22Cの所属先をStacked#0からScratch#1に変更する。さらに、ボリューム管理部112は、PV管理テーブル122における物理ボリューム22A〜22Cの状態を未使用に変更する。これにより、PV管理テーブル122は、テーブル122Kの状態からテーブル122Lの状態へ遷移する。
次に、図19を参照して、本実施例に係る仮想テープライブラリ1によるマイグレーションの実行の確定処理の流れについて説明する。図19は、実施例に係る仮想テープライブラリによるマイグレーションの実行の確定処理のフローチャートである。
データ管理部141は、ディスクアレイ装置30に格納されたマイグレーションの対象の論理ボリューム31からマイグレーション先のStackedPVG210への総書込データ量(D)を取得する(S101)。
次に、データ管理部141は、マイグレーション先のStackedPVG210に属する各物理ボリューム22を確認し、マイグレーション先のStackedPVG210における空き総容量(Cb)を取得する(ステップS102)。
そして、データ管理部141は、空き総容量(Cb)が総書込データ量(D)未満か否かを判定する(ステップS103)。空き総容量(Cb)が総書込データ量(D)未満の場合(ステップS103:肯定)、データ管理部141は、ScratchPVG220から確保する物理ボリュームの数(Pn)を算出する。具体的には、データ管理部141は、総書込データ量(D)から空き総容量(Cb)を減算した値を1つの物理ボリューム22あたりの容量(Pu)で除算して、確保する物理ボリュームの数(Pn)を算出する(ステップS104)。
これに対して、空き総容量(Cb)が総書込データ量(D)以上の場合(ステップS103:否定)、データ管理部141は、確保する物理ボリュームの数(Pn)を0とする(ステップS105)。
そして、データ管理部141は、Pn個の物理ボリューム22を確保した上での、マイグレーションの実行を確定する(ステップS106)。その後、データ管理部141は、確保する物理ボリューム22の数(Pn)及びマイグレーションの実行の確定をリオーガニゼーション処理部142に通知する。
次に、図20を参照して、本実施例に係る仮想テープライブラリ1による削除処理の流れについて説明する。図20は、実施例に係る仮想テープライブラリによる削除処理のフローチャートである。
データ管理部141は、論理ボリューム31の削除の指示をホスト2から受けて、StackedPVGから確保する物理ボリュームの数(Pn)を0に設定する(ステップS201)。
そして、データ管理部141は、ホスト2により指定された論理ボリューム31を物理ボリューム22から削除する(ステップS202)。データ管理部141は、削除した論理ボリューム31の情報及びそれを格納していた物理ボリューム22の情報をボリューム管理部112へ通知する。
ボリューム管理部112は、データ移行処理部104からの通知を受けて、有効な論理ボリューム31を有さない物理ボリューム22が存在するか否かを判定する(ステップS203)。有効な論理ボリューム31を有さない物理ボリューム22が存在しない場合(ステップS203:否定)、ボリューム管理部112は、ステップS205へ進む。
一方、有効な論理ボリューム31を有さない物理ボリューム22が存在する場合(ステップS203:肯定)、ボリューム管理部112は、有効な論理ボリュームを有さない物理ボリューム22をScratchPVG220へ移動する(ステップS204)。
次に、ボリューム管理部112は、PVG管理テーブル121及びPV管理テーブル122における、StackedPVGの物理ボリューム数、有効な論理ボリュームの数及び有効な論理ボリュームの割合を更新する(ステップS205)。
次に、図21を参照して、本実施例に係る仮想テープライブラリ1による先行リオーガニゼーションの処理の流れについて説明する。図21は、実施例に係る仮想テープライブラリによる先行リオーガニゼーションの処理のフローチャートである。図21のフローに示される処理は、図19又は20の処理が行われた後に実行される。
リオーガニゼーション処理部142は、StackedPVG210における総無効領域の容量(Ci)を求める(ステップS301)。
次に、リオーガニゼーション処理部142は、総無効領域の容量(Ci)を物理ボリューム22の1つあたりの容量(Pu)除算した結果が1以上か否かを判定する(ステップS302)。
除算結果が1以上の場合(ステップS302:肯定)、リオーガニゼーション処理部142は、PV管理テーブル122から各物理ボリューム22の有効な論理ボリューム31の割合を取得し、StackedPVGにおける有効領域の割合を求める。そして、リオーガニゼーション処理部142は、求めたStackedPVGにおける有効領域の割合が、PVG管理テーブル121に登録されている有効な論理ボリューム31の基準率以上か否かを判定する(ステップS303)。
StackedPVGにおける有効領域の割合が有効な論理ボリューム31の基準率以上の場合(ステップS303:肯定)、リオーガニゼーション処理部142、StackedPVGにおける総有効領域の容量(Cv)を求める(ステップS304)。
次に、リオーガニゼーション処理部142は、総有効領域の容量(Cv)を物理ボリューム22の1つ当たりの容量(Pu)で除算し、総有効領域の容量(Cv)のデータを格納するための物理ボリューム22の数を算出する。そして、リオーガニゼーション処理部142は、既に算出している確保する物理ボリューム22の数(Pn)に総有効領域の容量(Cv)のデータを格納するための物理ボリューム22の数を加算する。これにより、リオーガニゼーション処理部142は、確保する物理ボリューム22の数(Pn)を新たに算出する(ステップS305)。
そして、リオーガニゼーション処理部142は、算出した確保する物理ボリューム22の数(Pn)をボリューム管理部112に通知する。ボリューム管理部112は、通知を受けて、ScratchPVGからPn個の物理ボリューム22を確保する(ステップS306)。
リオーガニゼーション処理部142は、先行リオーガニゼーション対象のデータ及びマイグレーション対象のデータを確保した物理ボリューム22へ移行する(ステップS307)。ただし、マイグレーションを行わない場合には、リオーガニゼーション処理部142は、マイグレーション対象のデータの移行は行わない。
これに対して、除算結果が1未満の場合(ステップS302:否定)又はStackedPVGにおける有効領域の割合が有効な論理ボリューム31の基準率未満の場合(ステップS303:否定)、リオーガニゼーション処理部142は、ステップS308に進む。具体的には、リオーガニゼーション処理部142は、通常のリオーガニゼーション処理及びマイグレーションを行う(ステップS308)。通常のリオーガニゼーション処理及びマイグレーションについては後で図22を参照して説明する。
その後、リオーガニゼーション処理部142は、移行した論理ボリューム31の情報、移行元の物理ボリューム22の情報及び移行先の物理ボリューム22の情報をボリューム管理部112へ通知する。ボリューム管理部112は、通知を受けて、PV管理テーブル122を更新する。さらに、ボリューム管理部112は、有効な論理ボリューム31を有さない物理ボリューム22をScratchPVGへ移動する(ステップS309)。
次に、図22を参照して、本実施例に係る仮想テープライブラリ1による通常のリオーガニゼーション及びマイグレーションの流れについて説明する。図22は、実施例に係る仮想テープライブラリによる通常のリオーガニゼーション及びマイグレーションの処理のフローチャートである。これは、図21のステップS308で実行される処理の一例にあたる。ここでは、リオーガニゼーション実行の判定として、SoftMinimum及びHardMinimumを用いる場合で説明する。
リオーガニゼーション処理部142は、StackedPVGから物理ボリューム22を1つ選択する(ステップS401)。
次に、リオーガニゼーション処理部142は、選択した物理ボリューム22の有効な論理ボリューム31の数をPV管理テーブル122から取得する。さらに、リオーガニゼーション処理部142は、対象としているStackedPVG210のHardMinimum(HardMin)、SoftMinimum(SoftMin)及び有効な論理ボリューム31の基準率をPVG管理テーブル121から取得する。そして、リオーガニゼーション処理部142は、選択した物理ボリューム22の有効な論理ボリューム31の数がHardMinimum未満か否かを判定する(ステップS402)。HardMinimum以上の場合(ステップS402:肯定)、リオーガニゼーション処理部142は、ステップS404へ進む。
これに対して、HardMinimum以上の場合(ステップS402:否定)、リオーガニゼーション処理部142は、有効な論理ボリューム31の数がSoftMinimum未満且つ割合が基準率以下か否かを判定する(ステップS403)。有効な論理ボリューム31の数がSoftMinimum以上又は割合が基準率より大きい場合(ステップS403:否定)、リオーガニゼーション処理部142は、ステップS405へ進む。
これに対して、有効な論理ボリューム31の数がSoftMinimum未満且つ割合が基準率以下の場合(ステップS403:肯定)、リオーガニゼーション処理部142は、リオーガニゼーション処理を実行する(ステップS404)。具体的には、リオーガニゼーション処理部142は、ボリューム管理部112にScratchPVG220から物理ボリューム22を確保させ、選択した物理ボリューム22の有効な論理ボリューム31を確保した物理ボリューム22へ移行する。
そして、リオーガニゼーション処理部142は、対象のStackedPVG210に属する物理ボリューム22の全てについて処理を行ったか否かを判定する(ステップS405)。処理を行っていない物理ボリューム22が残っている場合(ステップS405:否定)、リオーガニゼーション処理部142は、ステップS401へ戻る。
これに対して、全ての物理ボリューム22に対する処理が完了している場合(ステップS405:肯定)、リオーガニゼーション処理部142は、マイグレーションの処理の実行をデータ管理部141に指示する。データ管理部141は、Pn個の物理ボリューム22をScratchPVG220から確保する指示をボリューム管理部112へ通知する。ボリューム管理部112は、通知を受けて、Pn個の物理ボリューム22をScratchPVG220から確保する(ステップS406)。
その後、データ管理部141は、マイグレーションを実行する(ステップS407)。
そして、ボリューム管理部112は、移行した論理ボリューム31の情報、移行先の物理ボリューム22の情報及び移行元の物理ボリューム22の情報をデータ移行処理部104及びリオーガニゼーション処理部142から取得する。その後、ボリューム管理部112は、取得した情報にしたがってPV管理テーブル122を更新する。そして、ボリューム管理部112は、StackedPVG210に属する物理ボリューム22のうち有効な論理ボリューム31を有さない物理ボリューム22をScratchPVG220へ移動する(ステップS408)。
ここで、以上では、物理ボリューム22としてテープ媒体を使用する場合で説明したが、物理ボリュームはこれに限らず、データがシーケンシャルに書き込まれ、データの更新時に無効領域が発生する媒体であれば他のものを用いてもよい。例えば、物理ボリューム22が光ディスクであってもよいし、テープライブライブラリ装置20の代わりにディスクライブラリを用いてもよい。
以上に説明したように、本実施例に係るストレージ装置は、1つのStackedPVGにおける無効領域の総容量が物理ボリュームの1つあたりの容量以上になった場合に、リオーガニゼーションを行い、1つ以上の物理ボリュームを未使用の状態にする。すなわち、管理者が設定したリオーガニゼーションのタイミング以前に、空き容量を確保することができる。これにより、まだStackedPVGの物理ボリュームに空き容量の余裕があるうちに、未使用のボリュームを生成でき、ScratchPVGに移行できるので、そのScratchPVGを共有するStackedPVGが使用可能な物理ボリュームを増やすことができる。そのため、本実施例に係るストレージ装置は、未使用の物理ボリュームの枯渇を防止することができる。例えば、管理者の見積もりミスによる未使用の物理ボリュームの枯渇や、同じScratchPVGを共有するStackedPVGからの物理ボリュームの使用が集中することによる未使用の物理ボリュームの枯渇を回避できる。
(ハードウェア構成)
次に、図23を参照して、本実施例に係る階層管理サーバ10のハードウェア構成について説明する。図23は、階層管理サーバのハードウェア構成図である。
階層制御サーバ10は、プロセッサ91、RAM(Random Access Memory)92、内蔵ディスク93、テープインタフェース94、入力インタフェース95、読取装置96、ホストインタフェース97及びディスクインタフェース98を有する。
RAM92、内蔵ディスク93、テープインタフェース94、入力インタフェース95、読取装置96、ホストインタフェース97及びディスクインタフェース98は、バスを介してプロセッサ91に接続されている。
入力インタフェース95は、入力装置41との間でデータを送受信するインタフェースであり、入力装置41が接続される。
読取装置96は、CD(Compact Disc)やDVD(Digital Versatile Disk)といった可搬記憶媒体42が挿入され、挿入された可搬記憶媒体42の情報を読み取る。
ディスクインタフェース98は、ディスクアレイ装置30との間でデータの送受信を行うためのインタフェースである。ディスクインタフェース98には、ディスクアレイ装置30が接続される。
テープインタフェース94は、テープライブラリ装置20との間でデータの送受信を行うためのインタフェースである。テープインタフェース94には、テープライブラリ装置20が接続される。
内蔵ディスク93は、ハードディスクなどであり、例えば、図3に例示した情報格納部102の機能を実現する。例えば、PVG管理テーブル121及びPV管理テーブル122が内蔵ディスク93に格納される。また、内蔵ディスク93には、図3に例示したグループ管理部101、リードライト部103、データ移行処理部104及び判定部105の機能を実現するプログラムを含む各種プログラムが格納されている。
プロセッサ91及びRAM92は、図3に例示したグループ管理部101、リードライト部103、データ移行処理部104及び判定部105の機能を実現する。
具体的には、プロセッサ91は、内蔵ディスク93から各種プログラムを読み出してRAM92上に展開し実行することで、グループ管理部101、リードライト部103、データ移行処理部104及び判定部105の機能を実現する。
また、ここでは、内蔵ディスク93にグループ管理部101、リードライト部103、データ移行処理部104及び判定部105の機能を実現するプログラムが格納されている場合で説明したがこれに限らない。例えば、グループ管理部101、リードライト部103、データ移行処理部104及び判定部105の機能を実現するプログラムが格納された可搬記憶媒体42を読取装置96で読み取り、読み取ったプログラムを用いてプロセッサ91及びRAM92が各機能実現してもよい。