以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、ストレージ制御装置10、キャッシュ装置20、記憶装置30およびホスト装置40を含む。
ストレージ制御装置10は、記憶装置30に含まれる可搬型記録媒体M1,M2,M3,・・・に記憶された複数のデータを、キャッシュ装置20を介して利用できるように制御する。図1の例では、複数のデータをホスト装置40が利用できるように制御される。
キャッシュ装置20は、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの固定型の記録媒体によって実現される。キャッシュ装置20は、可搬型記録媒体M1,M2,M3,・・・に記憶された複数のデータにアクセスする際のキャッシュ領域として利用される。
記憶装置30は、前述の可搬型記録媒体M1,M2,M3,・・・を含む。記憶装置30は、例えば、1台以上の図示しないドライブ装置を備え、ドライブ装置に可搬型記録媒体をマウントすることで、マウントされた可搬型記録媒体に対するデータの書き込みや、その可搬型記録媒体からのデータの読み出しを実行する。
ホスト装置40は、可搬型記録媒体M1,M2,M3,・・・に記憶された複数のデータを利用して、各種の処理を実行する。例えば、これらの複数のデータのそれぞれが論理ボリュームである場合、ホスト装置40は、仮想ドライブに対する論理ボリュームのマウントをストレージ制御装置10に要求することで、その論理ボリュームのデータの利用を要求する。
以下、ストレージ制御装置10の詳細について説明する。ストレージ制御装置10は、記憶部11と制御部12を有する。
記憶部11は、例えば、RAM(Random Access Memory)などのストレージ制御装置10が備える図示しない記憶装置の記憶領域によって実現される。記憶部11には、管理情報11aが記憶される。管理情報11aには、グループを識別するためのグループ番号と、グループに含まれるデータを識別するためのデータ番号とが対応付けて記録されている。
制御部12は、例えば、ストレージ制御装置10が備える図示しないプロセッサとして実現される。制御部12は、可搬型記録媒体M1,M2,M3,・・・に記憶された複数のデータのうち、所定の時間帯にホスト装置40から利用が要求された2以上のデータを、同一のグループに属するデータとして管理情報11aに登録する。図1の例では、ある時間帯に利用が要求されたデータD1~D3が、同一のグループG1に属するデータとして管理情報11aに登録される。また、別の時間帯に利用が要求されたデータD4,D5が、同一のグループG2に属するデータとして管理情報11aに登録される。
また、制御部12は、管理情報11aに登録された同一のグループに属するデータを、可搬型記録媒体M1,M2,M3,・・・のうち同一の可搬型記録媒体にまとめて格納する。図1の例では、グループG1に属するデータD1~D3が同一の可搬型記録媒体M1に格納され、グループG2に属するデータD4,D5が同一の可搬型記録媒体M2に格納される。
さらに、制御部12は、管理情報11aに登録されたグループの1つに属するデータの1つの利用がホスト装置40から要求されたとき、次のような処理を実行する。なお、ここでは例として、グループG1に属するデータD1の利用が要求されたとする。また、利用の要求時点で、データD1~D3はキャッシュ装置20に記憶されていないものとする。
制御部12は、管理情報11aを参照して、利用が要求されたデータD1がグループG1に属すると判定する。すると、制御部12は、グループG1に対応する可搬型記録媒体M1から、利用が要求されたデータD1だけでなく、グループG1に属する残りのすべてのデータD2,D3もキャッシュ装置20に読み込む。制御部12は、これらの読み込みが完了すると、データD1の利用要求に対する応答を示す情報をホスト装置40に送信する。
このような処理により、多数のデータの利用が集中的に要求された際の応答性能を向上させることができる。すなわち、同一グループに含まれる複数のデータは、近い時刻に利用が要求される可能性が高い。そのため、上記のようにグループ単位でデータをキャッシュ装置20に読み込むことで、グループ内の1つのデータの利用が要求された後の近い時刻に、同じグループ内の他のデータの利用が要求されたとき、そのデータがオンキャッシュである可能性が高まる。したがって、多数のデータの利用が集中的に要求された場合のキャッシュヒット率を高めることができ、その結果として、データの利用要求に対する応答性能を向上させることができる。
具体的な例として、図1に示したように、データD1の利用要求に応じてグループG1に属するデータD1~D3がキャッシュ装置20に読み込まれたとする。この場合、その後の短時間でホスト装置40からデータD2,D3の利用が要求される可能性が高い。予測通りに短時間でデータD2,D3の利用が要求されたとき、データD2,D3はいずれもキャッシュ装置20に読み込み済みであるので、制御部12は、これらを可搬型記録媒体M1からあらためて読み込む必要はない。したがって、データD2,D3の利用が要求されてから短時間でホスト装置40に応答できるようになる。
〔第2の実施の形態〕
次に、第2の実施の形態として、可搬型記録媒体として磁気テープを用いたストレージシステムについて説明する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、仮想テープ装置100、テープライブラリ200およびホスト装置300を含む。
仮想テープ装置100には、ディスクアレイ110が搭載されている。仮想テープ装置100は、テープライブラリ200をバックエンドのライブラリ装置、ディスクアレイ110をキャッシュ装置とした階層型の仮想ライブラリシステムを実現するための制御を行う。仮想ライブラリシステムとは、テープライブラリ200によって実現される大容量の記憶領域に対して、ホスト装置300がディスクアレイ110を通じて仮想的にアクセスできるようにしたものである。
より具体的には、仮想テープ装置100は、ホスト装置300に対して有限台数の仮想ドライブを提供する。仮想ドライブは、後述するテープライブラリ200の物理ドライブ(Physical Drive:PD)231~234を仮想化したものである。仮想ドライブは、ホスト装置300に対して、テープライブラリ200内の実際の物理ドライブ231~234の台数より多い数だけ認識させることができる。
ホスト装置300からマウントが要求された論理ボリューム(Logical Volume:LV)を仮想テープ装置100が仮想ドライブにマウントすることで、ホスト装置300はその論理ボリュームのデータを利用可能になる。また、仮想テープ装置100は、マウントが要求された論理ボリュームがディスクアレイ110にキャッシュされていない場合、その論理ボリュームのデータをテープライブラリ200内の物理ボリューム(Physical Volume:PV)からディスクアレイ110に読み込む。以後、仮想テープ装置100は、ホスト装置300からの読み書きの要求に基づき、ディスクアレイ110上における論理ボリュームに対して読み書きを行う。
テープライブラリ200は、図1の記憶装置30の一例である。テープライブラリ200は、仮想ライブラリシステムにおけるバックエンドの記憶領域を実現する記憶装置である。物理ボリュームは、このようなバックエンドの記憶領域を実現するための可搬型の記録媒体である。本実施の形態では、物理ボリュームとして磁気テープが用いられる。磁気テープは、例えば、テープカートリッジに収容された状態で利用される。なお、物理ボリュームとしては、光ディスク、光磁気ディスクなどの他の種類の可搬型の記録媒体を利用することもできる。
テープライブラリ200は、収納スロット210、ロボット220および物理ドライブ231~234を備える。収納スロット210には、物理ボリューム(磁気テープ)が複数収納されている。ロボット220は、仮想テープ装置100による制御の下で、収納スロット210と物理ドライブ231~234との間で物理ボリュームを搬送する。物理ドライブ231~234にはそれぞれ、ロボット220によって搬送された物理ボリュームが1つずつマウントされる。物理ドライブ231~234はそれぞれ、仮想テープ装置100による制御の下で、マウントされた物理ボリューム(磁気テープ)に対するデータの書き込みや、物理ボリュームからのデータの読み出しを行うテープドライブである。
なお、テープライブラリ200に搭載される物理ドライブの数は、図2の例のように4台に限定されるものではない。
ホスト装置300は、図1のホスト装置40の一例である。ホスト装置300は、例えば、各種の業務のための処理を実行するサーバ装置である。ホスト装置300は、仮想テープ装置100に対してアクセスを要求することで、仮想ドライブにマウントされた論理ボリュームにアクセスする。
次に、仮想テープ装置100の内部構成について、さらに説明する。仮想テープ装置100は、ディスクアレイ110に加えて、チャネル制御サーバ120、仮想ライブラリ制御サーバ130、ドライブ制御サーバ140およびロボット制御サーバ150を備える。ディスクアレイ110は、図1のキャッシュ装置20の一例であり、仮想ライブラリ制御サーバ130は、図1のストレージ制御装置10の一例である。
ディスクアレイ110は、仮想ライブラリシステムにおけるキャッシュ装置の記憶領域を実現する記録媒体として、複数のHDDを備える。ディスクアレイ110は、例えば、搭載された複数のHDDに対するアクセスをRAID(Redundant Arrays of Independent Disks)によって制御する。なお、ディスクアレイ110は、このような記録媒体の少なくとも一部として、SSDなどの他の種類の不揮発性記憶装置を備えていてもよい。
チャネル制御サーバ120は、ホスト装置300、ディスクアレイ110および仮想ライブラリ制御サーバ130に接続されている。チャネル制御サーバ120は、仮想ドライブの機能を実現する。チャネル制御サーバ120は、仮想ドライブにマウントされた論理ボリュームに対するホスト装置300からのアクセス要求を受信し、ディスクアレイ110上の論理ボリュームに対するアクセスを制御する。
仮想ライブラリ制御サーバ130は、ホスト装置300、ディスクアレイ110、チャネル制御サーバ120、ドライブ制御サーバ140およびロボット制御サーバ150に接続されている。仮想ライブラリ制御サーバ130は、仮想ライブラリシステムにおけるボリューム管理を行う。
例えば、仮想ライブラリ制御サーバ130は、ホスト装置300からの要求に応じて、論理ドライブに対する論理ボリュームのマウントや、論理ドライブからの論理ボリュームのアンマウントを制御する。また、仮想ライブラリ制御サーバ130は、ロボット制御サーバ150に対し、物理ドライブ231~234に対する物理ボリュームのマウントや、物理ドライブ231~234からの物理ボリュームのアンマウントを指示する。さらに、仮想ライブラリ制御サーバ130は、ドライブ制御サーバ140に対し、物理ボリュームからディスクアレイ110への論理ボリュームのデータの読み出しや、ディスクアレイ110から物理ボリュームへの論理ボリュームのデータの書き込みを指示する。
ドライブ制御サーバ140は、ディスクアレイ110、仮想ライブラリ制御サーバ130およびテープライブラリ200の物理ドライブ231~234に接続されている。ドライブ制御サーバ140は、仮想ライブラリ制御サーバ130からの指示に応じて、物理ドライブ231~234にマウントされた物理ボリュームとの間のデータの読み書きを制御する。例えば、ドライブ制御サーバ140は、物理ボリュームからディスクアレイ110への論理ボリュームのデータの読み出しや、ディスクアレイ110から物理ボリュームへの論理ボリュームのデータの書き込みを制御する。
ロボット制御サーバ150は、ディスクアレイ110、仮想ライブラリ制御サーバ130およびテープライブラリ200のロボット220に接続されている。ロボット制御サーバ150は、仮想ライブラリ制御サーバ130からの指示に応じて、ロボット220に対し、物理ドライブ231~234への物理ボリュームのマウントや、物理ドライブ231~234からの物理ボリュームのアンマウントを指示する。
図3は、仮想ライブラリ制御サーバのハードウェア構成例を示す図である。仮想ライブラリ制御サーバ130は、プロセッサ130a、RAM130b、SSD130cおよび通信インタフェース130dを備える。
プロセッサ130aは、仮想ライブラリ制御サーバ130全体を統括的に制御する。プロセッサ130aは、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ130aは、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。なお、プロセッサ130aは、図1の制御部12の一例である。
RAM130bは、仮想ライブラリ制御サーバ130の主記憶装置として使用される。RAM130bには、プロセッサ130aに実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM130bには、プロセッサ130aによる処理に必要な各種データが格納される。
SSD130cは、仮想ライブラリ制御サーバ130の補助記憶装置として使用される。SSD130cには、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、HDDなどの他の種類の不揮発性記憶装置を使用することもできる。
なお、RAM130bまたはSSD130cは、図1の記憶部11の一例である。
通信インタフェース130dは、ネットワーク160を介して、ホスト装置300、ディスクアレイ110、チャネル制御サーバ120、ドライブ制御サーバ140およびロボット制御サーバ150と通信する。ネットワーク160は、例えば、LAN(Local Area Network)である。
なお、チャネル制御サーバ120、ドライブ制御サーバ140およびロボット制御サーバ150も、仮想ライブラリ制御サーバ130と同様のハードウェア構成によって実現可能である。ただし、チャネル制御サーバ120は、例えば、仮想ライブラリ制御サーバ130との間でLANを介して通信する通信インタフェースと、ホスト装置300およびディスクアレイ110との間でファイバチャネル(FC)ネットワークを介して通信する通信インタフェースとを備えてもよい。また、ドライブ制御サーバ140およびロボット制御サーバ150は、例えば、仮想ライブラリ制御サーバ130との間でLANを介して通信する通信インタフェースと、ディスクアレイ110およびテープライブラリ200との間でファイバチャネル(FC)ネットワークを介して通信する通信インタフェースとを備えてもよい。
次に、図4は、論理ボリュームに対するアクセス処理の基本的な手順を示すシーケンス図である。この図4を用いて、ホスト装置300からの論理ボリュームに対するアクセス処理の基本的な手順について説明する。
前述のように、ホスト装置300は、複数の仮想ドライブを認識している。ホスト装置300は、仮想ライブラリ制御サーバ130に対して、アクセス対象の論理ボリュームを仮想ドライブの1つにマウントするように要求する。ここでは、論理ボリュームLV-Aのマウントが要求されたとする(ステップS11)。
ここで、仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aがディスクアレイ110に存在する場合、すなわちオンキャッシュ状態である場合には、論理ボリュームLV-Aを仮想ドライブにマウントするようにチャネル制御サーバ120に要求する。
一方、図4では、論理ボリュームLV-Aがディスクアレイ110に存在しなかった、すなわちオフキャッシュ状態であったとする。この場合、仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aのデータが格納されている物理ボリュームを物理ドライブにマウントするように、ロボット制御サーバ150に要求する。図4では、物理ボリュームPV-Aを物理ドライブ231にマウントするように要求されたとする(ステップS12)。
ロボット制御サーバ150は、テープライブラリ200のロボット220に対して、物理ボリュームPV-Aを物理ドライブ231にマウントするように要求する。ロボット220は、物理ボリュームPV-Aを収納スロット210から物理ドライブ231に搬送してマウントする(ステップS13)。マウントが完了すると、ロボット220からロボット制御サーバ150にマウント完了通知が送信され(ステップS14)、ロボット制御サーバ150から仮想ライブラリ制御サーバ130にマウント完了通知が送信される(ステップS15)。
マウント完了通知を受信した仮想ライブラリ制御サーバ130は、物理ドライブ231にマウントされた物理ボリュームPV-Aから論理ボリュームLV-Aをディスクアレイ110に読み込むように、ドライブ制御サーバ140に要求する(ステップS16)。ドライブ制御サーバ140は、物理ボリュームPV-Aから論理ボリュームLV-Aを読み出すように物理ドライブ231に要求する。物理ドライブ231は、物理ボリュームPV-Aから論理ボリュームLV-Aのデータを読み出し、ドライブ制御サーバ140に送信する。ドライブ制御サーバ140は、送信された論理ボリュームLV-Aのデータをディスクアレイ110に格納する(ステップS17)。このように、論理ドライブに対するマウント要求に応じて論理ボリュームのデータを物理ボリュームからディスクアレイ110に読み込む処理を、「リコール」と呼ぶ。
ディスクアレイ110への論理ボリュームLV-Aのデータの読み込みが完了すると、ドライブ制御サーバ140は、読み込み完了通知を仮想ライブラリ制御サーバ130に送信する(ステップS18)。仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aを論理ドライブにマウントするようにチャネル制御サーバ120に要求し、チャネル制御サーバ120は、論理ボリュームLV-Aを仮想ドライブにマウントする。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS19)。
以上の処理により、ホスト装置300は、論理ボリュームLV-Aにアクセス可能になる。例えば、ホスト装置300は、論理ボリュームLV-Aからのデータの読み出し要求をチャネル制御サーバ120に送信する。すると、チャネル制御サーバ120は、読み出しが要求されたデータをディスクアレイ110から読み出し、ホスト装置300に送信する。また、ホスト装置300は、論理ボリュームLV-Aに対するデータの書き込み要求および書き込みデータを、チャネル制御サーバ120に送信する。すると、チャネル制御サーバ120は、書き込みデータをディスクアレイ110上の論理ボリュームLV-Aに書き込み、ホスト装置300に書き込み完了通知を送信する。
また、図示しないが、ホスト装置300はその後、仮想ライブラリ制御サーバ130に対して、論理ボリュームLV-Aを仮想ドライブからアンマウントするように要求する。仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aのアンマウントをチャネル制御サーバ120に要求し、チャネル制御サーバ120は、論理ボリュームLV-Aを仮想ドライブからアンマウントする。これにより、ホスト装置300は論理ボリュームLV-Aを認識しなくなる。
仮想ライブラリ制御サーバ130は、アンマウントされた論理ボリュームLV-Aのデータを、ディスクアレイ110に格納されたままにする。これにより、同じ論理ボリュームLV-Aを仮想ドライブにマウントするように再度要求されたとき、論理ボリュームLV-Aのデータを物理ボリュームから読み出すことなく、マウント処理が短時間で実行される。
また、仮想ライブラリ制御サーバ130は、ディスクアレイ110上の論理ボリュームLV-Aにダーティデータが含まれる場合、ドライブ制御サーバ140およびロボット制御サーバ150を制御して、論理ボリュームLV-Aのデータを物理ボリュームにも書き込む。このように、ディスクアレイ110上の論理ボリュームのデータを物理ボリュームに書き込む処理を、「マイグレーション」と呼ぶ。マイグレーションは、論理ボリュームのアンマウントが要求されたタイミング、またはそれ以後の任意のタイミングで実行される。
さらに、仮想ライブラリ制御サーバ130は、ディスクアレイ110の空き領域が足りなくなると、ディスクアレイ110から論理ボリュームのデータを追い出す処理を実行する。仮想ライブラリ制御サーバ130は、基本的には、ディスクアレイ110にデータが格納されたマイグレーション済みの論理ボリュームの中から、LRU(Least Recently Used)方式によって追い出し対象の論理ボリュームを選択する。ディスクアレイ110から論理ボリュームのデータが追い出される(消去される)ことで、この論理ボリュームはオフキャッシュ状態となる。
ところで、図4で説明したように、マウントが要求された論理ボリュームがオフキャッシュ状態の場合、その論理ボリュームのリコールが実行される。ここで、オフキャッシュ状態の論理ボリュームのマウントが要求されたときに、すべての物理ドライブが使用中の場合には、空きの物理ドライブが発生するまで、その論理ボリュームのリコールの実行を開始できない状態が発生する。以下、このような状態を「リコール実行待ち」の状態と記載する。リコール実行待ちが発生すると、その分だけマウントを要求したホスト装置300が論理ボリュームにアクセスできるようになるまでの時間が長くなってしまう。また、図2に示した構成例のように複数の物理ドライブが搭載されている場合でも、物理ドライブの台数を超える数の論理ボリュームのマウントが短い期間内に要求されると、リコール実行待ちが発生しやすくなってしまう。
図5、図6は、リコール実行待ちが発生する場合の比較例を示すシーケンス図である。この図5、図6では、説明を簡単にするために、2台の物理ドライブ231,232のみが使用されるものとする。そして、ほぼ同じ時刻に3つの論理ボリュームLV-A,LV-B,LV-Cのマウントが要求され(ステップS21a,S21b,S21c)、これらがすべてオフキャッシュ状態であったとする。なお、論理ボリュームLV-A,LV-B,LV-Cは、それぞれ物理ボリュームPV-A,PV-B,PV-Cに格納されているとする。
この場合、論理ボリュームLV-A,LV-B,LV-Cのリコールが必要となる。しかし、2台の物理ドライブ231,232のみ使用可能なので、仮想ライブラリ制御サーバ130はまず、論理ボリュームLV-Aのリコール(ステップS22a~S28a)と論理ボリュームLV-Bのリコール(ステップS22b~S28b)とを並行して実行する。
すなわち、物理ドライブ231に対する物理ボリュームPV-Aのマウントが、仮想ライブラリ制御サーバ130からロボット制御サーバ150を介してロボット220に要求される(ステップS22a,S23a)。ロボット220によって物理ドライブ231に対して物理ボリュームPV-Aがマウントされると、マウント完了がロボット制御サーバ150を介して仮想ライブラリ制御サーバ130に通知される(ステップS24a,S25a)。
続いて、仮想ライブラリ制御サーバ130からの読み込み要求(ステップS26a)に応じて、論理ボリュームLV-Aのデータが物理ボリュームPV-Aからドライブ制御サーバ140を介してディスクアレイ110に読み込まれる(ステップS27a)。仮想ライブラリ制御サーバ130は、読み込み完了通知を受信すると(ステップS28a)、仮想ドライブに論理ボリュームLV-Aをマウントするようにチャネル制御サーバ120に要求する。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS29a)。
また、以上の処理と並行して、物理ドライブ232に対する物理ボリュームPV-Bのマウントが、仮想ライブラリ制御サーバ130からロボット制御サーバ150を介してロボット220に要求される(ステップS22b,S23b)。ロボット220によって物理ドライブ232に対して物理ボリュームPV-Bがマウントされると、マウント完了がロボット制御サーバ150を介して仮想ライブラリ制御サーバ130に通知される(ステップS24b,S25b)。
続いて、仮想ライブラリ制御サーバ130からの読み込み要求(ステップS26b)に応じて、論理ボリュームLV-Bのデータが物理ボリュームPV-Bからドライブ制御サーバ140を介してディスクアレイ110に読み込まれる(ステップS27b)。仮想ライブラリ制御サーバ130は、読み込み完了通知を受信すると(ステップS28b)、仮想ドライブに論理ボリュームLV-Bをマウントするようにチャネル制御サーバ120に要求する。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS29b)。
また、ステップS28a,S28bのいずれかが完了するまで、論理ボリュームLV-Cのリコールは実行待ち状態となる。そして、例えばステップS28aが先に完了したとすると、仮想ライブラリ制御サーバ130は、物理ドライブ231から物理ボリュームPV-Aをアンマウントするようにロボット制御サーバ150に要求する(ステップS30)。ロボット制御サーバ150は、物理ドライブ231からの物理ボリュームPV-Aのアンマウントを要求すると(ステップS31)、ロボット220はこの要求に応じて、物理ドライブ231から物理ボリュームPV-Aをアンマウントする。アンマウントが完了すると、アンマウント完了がロボット220からロボット制御サーバ150を介して仮想ライブラリ制御サーバ130に通知される(ステップS32,S33)。
これにより物理ドライブ231が空き状態になり、この物理ドライブ231を使用して論理ボリュームLV-Cのリコールを実行可能になる。すなわち、物理ドライブ231に対する物理ボリュームPV-Cのマウントが、仮想ライブラリ制御サーバ130からロボット制御サーバ150を介してロボット220に要求される(ステップS34、S35)。ロボット220によって物理ドライブ231に対して物理ボリュームPV-Bがマウントされると、マウント完了がロボット制御サーバ150を介して仮想ライブラリ制御サーバ130に通知される(ステップS36,S37)。
続いて、仮想ライブラリ制御サーバ130からの読み込み要求(ステップS38)に応じて、論理ボリュームLV-Cのデータが物理ボリュームPV-Cからドライブ制御サーバ140を介してディスクアレイ110に読み込まれる(ステップS39)。仮想ライブラリ制御サーバ130は、読み込み完了通知を受信すると(ステップS40)、仮想ドライブに論理ボリュームLV-Cをマウントするようにチャネル制御サーバ120に要求する。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS41)。
このように、物理ドライブ231,232のいずれかが空き状態になるまで、論理ボリュームLV-Cのリコールの実行を開始できないリコール実行待ちが発生する。このため、ホスト装置300が論理ボリュームLV-Cのマウントを要求してから論理ボリュームLV-Cにアクセスできるようになるまで長い時間がかかってしまうという問題がある。
このような問題に対し、本実施の形態の仮想テープ装置100は、論理ボリュームのマウント要求の履歴からマウント要求の発生傾向を解析する。仮想テープ装置100は、その解析結果に基づいて、近い時刻にマウントが要求される可能性が高い複数の論理ボリュームをグループ化し、それらを同一の物理ボリュームに格納する。そして、仮想テープ装置100は、あるグループに含まれる論理ボリュームのマウントが要求されたとき、そのグループに含まれるすべての論理ボリュームを同一物理ボリュームから一度にリコールする。これにより、近い時刻にマウントが要求された複数の論理ボリュームについて、リコールの実行が1回だけで済む確率を高める。その結果、論理ボリュームのマウントが要求されたときにリコール実行待ちが発生する確率を低減し、論理ボリュームのマウント要求に対する応答性能を向上させる。
図7は、仮想ライブラリ制御サーバが備える処理機能の構成例を示すブロック図である。仮想ライブラリ制御サーバ130は、記憶部131、LV管理部132およびLVグループ生成部133を備える。
記憶部131は、例えば、RAM130b、SSD130cなどの仮想ライブラリ制御サーバ130が備える記憶装置の記憶領域によって実現される。記憶部131には、ボリューム管理テーブル131a、LVマウント検知テーブル131b、LV抽出テーブル131cおよびLVグループ管理テーブル131dが記憶される。
ボリューム管理テーブル131aには、データがディスクアレイ110に格納されている各論理ボリュームに関する情報が登録される。例えば、ボリューム管理テーブル131aには、各論理ボリュームが論理ドライブにマウントされているか否かを示すマウントフラグや、各論理ボリュームにダーティデータが含まれているか否かを示すダーティフラグなどが登録される。
LVマウント検知テーブル131bには、所定期間(本実施の形態では例として24時間)における仮想ドライブへの論理ボリュームのマウント要求の履歴が記録される。
LV抽出テーブル131cには、時間帯(本実施の形態では例として1時間)ごとにマウントが要求された論理ボリュームが記録される。このLV抽出テーブル131cには、LVグループ生成部133により、LVマウント検知テーブル131bに基づいて抽出された情報が記録される。
LVグループ管理テーブル131dには、LVグループ生成部133により、LVマウント検知テーブル131bおよびLV抽出テーブル131cに基づいて生成されたLVグループに関する情報が記録される。例えば、LVグループ管理テーブル131dには、各LVグループに含まれる論理ボリュームの識別情報や、各グループに対応付けられた物理ボリュームの識別情報が記録される。
LV管理部132およびLVグループ生成部133の処理は、例えば、プロセッサ130aが所定のプログラムを実行することで実現される。
LV管理部132は、ホスト装置300から仮想ドライブへの論理ボリュームのマウントや、仮想ドライブからの論理ボリュームのアンマウントの要求を受信し、要求に応じた処理の実行を制御する。例えば、LV管理部132は、ホスト装置300から論理ボリュームのマウント要求を受信すると、ボリューム管理テーブル131aに基づいてその論理ボリュームがオンキャッシュ状態か否かを判定する。オンキャッシュ状態の場合、LV管理部132は、チャネル制御サーバ120にその論理ボリュームを仮想ドライブにマウントさせて、ホスト装置300に応答する。
一方、オフキャッシュ状態の場合、LV管理部132は、その論理ボリュームのリコールの実行を制御する。このとき、LV管理部132は、LVグループ管理テーブル131dに基づき、その論理ボリュームがLVグループに含まれる場合には、そのLVグループに含まれるすべての論理ボリュームのデータを、対応する同一の物理ボリュームからリコールさせる。リコールが完了すると、LV管理部132は、チャネル制御サーバ120にその論理ボリュームを仮想ドライブにマウントさせて、ホスト装置300に応答する。
また、LV管理部132は、ホスト装置300から論理ボリュームのアンマウント要求を受信すると、チャネル制御サーバ120にその論理ボリュームを仮想ドライブからアンマウントさせて、ホスト装置300に応答する。その後、LV管理部132は、その論理ボリュームがLVグループに含まれる場合には、そのLVグループに対応付けられた1つの物理ボリュームに対してマイグレーションが行われるように制御する。これにより、LV管理部132は、同じLVグループに含まれるすべての論理ボリュームのデータが同一の物理ボリュームに格納されるように制御する。
LVグループ生成部133は、24時間における論理ボリュームのマウント要求の履歴をLVマウント検知テーブル131bに記録する。LVグループ生成部133は、1時間の時間帯ごとに、その時間帯にマウントが要求された論理グループをLVマウント検知テーブル131bから抽出して、LV抽出テーブル131cに記録する。LVグループ生成部133は、LVマウント検知テーブル131bおよびLV抽出テーブル131cに基づいてLVグループを生成して、そのLVグループに含まれる論理ボリュームをLVグループ管理テーブル131dに記録する。また、LVグループ生成部133は、LVグループに対応する物理ボリュームをLVグループ管理テーブル131dに記録する。
図8は、LVマウント検知テーブルの構成例を示す図である。LVマウント検知テーブル131bには、24時間における論理ボリュームのマウント要求の履歴が記録される。具体的には、LVマウント検知テーブル131bには、ホスト装置300からの論理ボリュームのマウント要求が検知されるたびに、マウントが要求された論理ボリュームを示すLV名と、マウントが要求された時刻を示すマウント要求時刻とが記録される。マウント要求時刻としては、時、分の値が記録される。
図9は、LV抽出テーブルの構成例を示す図である。LV抽出テーブル131cには、1時間の時間帯ごとのレコードが24時間分設けられる。各レコードには、LVマウント検知テーブル131bから、対応する時間帯にマウントが要求された論理ボリュームを示すLV名が記録される。例えば図9では、1時からの1時間の時間帯に論理ボリュームLV0001,LV0002のマウントが要求されたことが記録されている。
なお、これ以後、X時0分からX時59分までの1時間の時間帯のことを「X時台」と記載する場合がある。例えば、1時0分から1時59分までの1時間の時間帯を「1時台」と記載する場合がある。
図10は、LVグループ管理テーブルの構成例を示す図である。LVグループ管理テーブル131dには、LVグループを示すLVグループ名ごとに、そのLVグループに含まれる論理ボリュームを示すLV名と、そのLVグループに対応付けられた1つの物理ボリュームを示すPV名とが対応付けて記録される。
次に、図11は、論理ボリュームのマウント要求状況の例を示す図である。この図11を用いて、LVグループの生成方法について説明する。
図11に示す黒丸は、対応する1時間の時間帯において、対応する論理ボリュームのマウントが要求されたことを示す。例えば、1時台には論理ボリュームLV0002,LV0009のマウントが要求され、2時台には、論理ボリュームLV0007,LV0012,LV0013のマウントが要求されたことが示されている。
ここで、ホスト装置300では、業務用のアプリケーションプログラムが実行されるものとする。業務では、1日の中の時間帯や、曜日、月次、年次に応じた定型的な作業が行われることが多い。そのため、業務用のアプリケーションプログラムによれば、個人用のものとは異なり、決められた時刻から時刻までの連続した期間においては、同じような処理が実行されることが多い。したがって、ホスト装置300からの論理ボリュームに対するアクセスについても、決められた時刻から時刻までの連続した期間において同じ論理ボリュームにアクセスされることが多いと推定される。
また、ある決められた時刻から時刻までの連続期間において同じ複数の論理ボリュームにアクセスされる場合には、管理を容易化するために、それらの複数の論理ボリュームに対して連番の識別番号(LV名)が設定されることが多い。
以上の観点から、本実施の形態の仮想テープ装置100は、「連続する期間内にマウントが要求された、連番のLV名を有する複数の論理ボリューム」を、同一のLVグループにグループ化する。そして、仮想テープ装置100は、後の図12、図13で説明するように、マイグレーションおよびリコールの処理をLVグループ単位で実行する。すなわち、仮想テープ装置100は、同一のLVグループに含まれる論理ボリュームのデータを同一の物理ボリュームに格納する。また、仮想テープ装置100は、同一のLVグループに含まれる論理ボリュームのデータを、対応する1つの物理ボリュームからディスクアレイ110に対して一度に読み込む。このような処理により、物理ドライブに対する物理ボリュームのマウント、および物理ドライブからの物理ボリュームのアンマウントの実行回数を低減できる。
図11の例では、1時台から3時台までの連続した期間において、連続したLV名を有する論理ボリュームLV0002~LV0013のマウントが要求されている。そのため、論理ボリュームLV0002~LV0013は、1つのLVグループGP0001にグループ化される。また、7時台から10時台までの連続した期間において、連続したLV名を有する論理ボリュームLV0017~LV0025のマウントが要求されている。そのため、論理ボリュームLV0017~LV0025は、1つのLVグループGP0002にグループ化される。
なお、LVグループの生成条件の他の1つとして、1つのLVグループに含められる論理ボリュームの上限数は、論理ボリュームがマウントされる仮想ドライブの台数とされる。これは、この台数を超える論理ボリュームのマウントが短期間に要求されることがあり得ないからである。
図12は、LVグループに含まれる論理ボリュームのマイグレーションについて説明するための図である。同一のLVグループに含まれる論理ボリュームのデータは、マイグレーションの際に同一の物理ボリュームに格納される。図12の例では、LVグループGP0001に含まれる論理ボリュームLV0002~LV0013のデータは、1つの物理ボリュームPV0001に格納される。また、LVグループGP0002に含まれる論理ボリュームLV0017~LV0025のデータは、1つの物理ボリュームPV0002に格納される。
図13は、LVグループに含まれる論理ボリュームのリコールについて説明するための図である。LVグループに含まれる1つの論理ボリュームのマウントが要求されると、そのLVグループに含まれるすべての論理ボリュームのデータが、対応する1つの物理ボリュームから一度にリコールされる。
例えば、図13に示すように、1時台に論理ボリュームLV0009のマウントが要求されたとき、LVグループGP0001に含まれる論理ボリュームLV0002~LV0013のデータが、物理ボリュームPV0001からディスクアレイ110に読み込まれる。また、例えば、7時台に論理ボリュームLV0023のマウントが要求されたとき、LVグループGP0002に含まれる論理ボリュームLV0017~LV0025のデータが、物理ボリュームPV0002からディスクアレイ110に読み込まれる。
LVグループGP0001に含まれる論理ボリュームLV0002~LV0013は、1時台から3時台までの短い期間に集中的にマウントが要求される可能性が高い。そのため、この期間にLVグループGP0001に含まれる論理ボリュームLV0009以外の他の論理ボリュームのマウントが要求された場合に、これらの論理ボリュームがオンキャッシュ状態であり、リコールが実行されない確率が高まる。これにより、LVグループGP0001に含まれる各論理ボリュームのマウント要求に対し、リコールが1回しか実行されず、リコールに伴う物理ボリュームのマウントおよびアンマウントも1回しか実行されない確率が高くなる。
同様に、LVグループGP0002に含まれる論理ボリュームLV0017~LV0025についても、7時台から10時台までの短い期間に集中的にマウントが要求される可能性が高い。そのため、この期間にLVグループGP0002に含まれる論理ボリュームLV0023以外の他の論理ボリュームのマウントが要求された場合に、これらの論理ボリュームがオンキャッシュ状態である(キャッシュヒットする)確率が高まる。これは、この期間にLVグループGP0002に含まれる論理ボリュームLV0023以外の他の論理ボリュームのマウントが要求された場合に、物理ドライブの使用が必要となるリコールが実行されない確率が高まることを意味する。したがって、LVグループGP0002に含まれる各論理ボリュームのマウント要求に対し、リコールが1回しか実行されず、リコールに伴う物理ボリュームのマウントおよびアンマウントも1回しか実行されない確率が高くなる。
このように、各LVグループに含まれる複数の論理ボリュームのマウント要求に対し、リコールが1回しか実行されない確率が高くなる。これによって、仮想テープ装置100の全体においてリコールの実行回数が減少し、リコールに伴う物理ボリュームのマウントおよびアンマウントの実行回数、すなわち物理ドライブの使用回数も減少する。その結果、ホスト装置300から論理ボリュームのマウントが要求されたときに、物理ドライブの空きがなくてリコールを開始できないリコール実行待ちが発生する確率を低減できる。したがって、全体として、論理ボリュームのマウント要求に対する応答性能を向上させることができる。
また、LVグループとしてグループ化された論理ボリュームについて、マウントが要求された際のキャッシュヒット率が高まるので、マウント要求に対する応答性能を向上させることができる、ということもできる。
次に、仮想テープ装置100の処理についてフローチャートを用いて説明する。
まず、図14、図15は、LVグループの生成処理を示すフローチャートの例である。
[ステップS111]仮想ライブラリ制御サーバ130のLVグループ生成部133は、変数LVGR_VALUE,START_TIMEを設定する。変数LVGR_VALUEは、1つのLVグループに含めることが可能な論理ボリュームの上限数を示す。変数LVGR_VALUEとしては、仮想ドライブの台数が設定される。変数START_TIMEは、論理ボリュームのマウント要求の発生状況(マウント要求の履歴)を収集する期間の開始日時を示し、年、月、日、時、分の値が記録される。変数START_TIMEとしては、現在の日時が設定される。
[ステップS112]LVグループ生成部133は、LVマウント検知テーブル131b、LV抽出テーブル131cおよびLVグループ管理テーブル131dに登録された情報をクリアする。
[ステップS113]LVグループ生成部133は、ホスト装置300からの仮想ドライブに対する論理ボリュームのマウント要求を、LV管理部132が受信したかを監視する。LVグループ生成部133は、一定時間内にマウント要求の受信を検知した場合、ステップS114の処理を実行し、一定時間内にマウント要求の受信を検知できなかった場合、ステップS115の処理を実行する。
[ステップS114]LVグループ生成部133は、LVマウント検知テーブル131bにレコードを追加する。LVグループ生成部133は、マウントが要求された論理ボリュームのLV名と、マウントが要求された時刻とを、追加したレコードに記録する。
[ステップS115]LVグループ生成部133は、現在の時刻を取得し、変数START_TIMEが示す時刻から24時間が経過したかを判定する。LVグループ生成部133は、24時間が経過していない場合、処理をステップS113に進め、マウント要求の受信を監視する。一方、変数START_TIMEが示す時刻から24時間が経過したと判定された場合、直近の24時間分のマウント要求の履歴がLVマウント検知テーブル131bに記録された状態となる。この場合、LVグループ生成部113は、図15のステップS121の処理を実行する。
以下、図15を用いて説明を続ける。
[ステップS121]LVグループ生成部133は、変数HOURには、変数START_TIMEの「時」の値を設定する。
[ステップS122]LVグループ生成部133は、LVマウント検知テーブル131bから、変数HOURが示す時間に対応する時間帯においてマウント要求が検知された論理ボリュームを抽出する。例えば、変数HOURが1の場合、1時台にマウントが要求された論理ボリュームが抽出される。LVグループ生成部133は、抽出された論理ボリュームのLV名を、LV抽出テーブル131cにおける該当時間帯のレコードに記録する。
[ステップS123]LVグループ生成部133は、ステップS122で抽出された論理ボリュームの中に、LV名が連番となる論理ボリュームのグループがあるかを判定する。LVグループ生成部133は、該当する論理ボリュームのグループがある場合、ステップS124の処理を実行し、該当する論理ボリュームのグループがない場合、ステップS125の処理を実行する。
[ステップS124]LVグループ生成部133は、ステップS122で抽出された論理ボリュームのうち、LV名が連番となる論理ボリュームのグループを、LVグループに設定する。ただし、LVグループに含められる論理ボリュームの数は、変数LVGR_VALUEの値以下とされる。LVグループ生成部133は、LVグループ管理テーブル131dにレコードを追加し、LVグループに設定された各論理ボリュームのLV名を追加したレコードに記録する。
[ステップS125]LVグループ生成部133は、変数HOURの値をインクリメントする。
[ステップS126]LVグループ生成部133は、変数HOURの値と変数START_TIMEの「時」の値とが一致するかを判定する。LVグループ生成部133は、これらの値が一致しない場合、処理をステップS122に進める。この場合、次の時間帯にマウント要求が検知された論理ボリュームについて、ステップS122~S124の処理が実行される。一方、LVグループ生成部133は、上記の値が一致した場合、24時間分の全時間帯について処理が終了したと判断し、ステップS127の処理を実行する。
[ステップS127]この時点で、LVグループ管理テーブル131dには、1時間の時間帯ごとにマウントが要求された連番のLV名を有する複数の論理ボリュームを含むLVグループが、記録された状態となる。すなわち、生成された各LVグループには、1つの時間帯が対応付けられている状態となる。次に、LVグループ生成部133は、生成された各LVグループに対応する時間帯と、これに隣接する時間帯とを含む連続する期間において、LV名が連番となる論理ボリュームおよびLVグループをマージ(統合)して、1つのグループにまとめる。このマージ処理は、LV抽出テーブル131cとLVグループ管理テーブル131dとを参照することで実行される。LVグループ生成部133は、マージによって一体化されたLVグループを示すレコードが記録されるように、LVグループ管理テーブル131dを更新する。
ここで、図11に示したLVグループGP0001を例に挙げて、マージ処理の例を説明する。ステップS127の実行開始時点では、2時台にマウントが要求された論理ボリュームLV0012,LV0013を含むLVグループと、3時台にマウントが要求された論理ボリュームLV0003~LV0011を含むLVグループとが生成された状態となる。ここで、前者をLVグループGP-Aとし、後者をLVグループGP-Bとする。
ステップS127では、まず、LVグループGP-Aに対応付けられた2時台に隣接する1時台および3時台から、LVグループGP-Aに含まれる論理ボリュームに対して連番となるLV名を有する論理ボリュームまたはLVグループが抽出される。ここでは、LVグループGP-Bが抽出され、LVグループGP-A,GP-Bがマージされて、論理ボリュームLV0003~LV0013を含むLVグループGP-Cが生成される。
なお、このマージでは、LVグループGP-A,GP-Bの例のように、一方のLVグループに含まれる各論理ボリュームのLV名の最後尾と、他方のLVグループに含まれる各論理ボリュームのLV名の先頭とが連続する場合に、これらのLVグループがマージされる。これに加えて、一方のLVグループに含まれる論理ボリュームのLV名の一部と、他方のLVグループに含まれる論理ボリュームのLV名の一部とが重複する場合にも、これらのLVグループがマージされる。
次に、LVグループGP-Cに対応する2時台および3時台と、これらに隣接する1時台および4時台とを含む1時台から4時台の期間から、LVグループGP-Cに含まれる論理ボリュームに対して連番となるLV名を有する論理ボリュームまたはLVグループが抽出される。ここでは、1時台から論理ボリュームLV0002が抽出され、この論理ボリュームLV0002がLVグループGP-Cに編入される。すなわち、LVグループGP-Cは、論理ボリュームLV0002~LV0013を含むように拡張される。
次に、拡張されたLVグループGP-Cに対応する1時台から3時台の期間と、これに隣接する0時台および4時台とを含む0時台から4時台の期間から、LVグループGP-Cに含まれる論理ボリュームに対して連番となるLV名を有する論理ボリュームまたはLVグループが抽出される。ここでは、該当する論理ボリュームおよびLVグループが抽出されないので、LVグループGP-CがLVグループGP0001として確定される。
[ステップS128]LVグループ生成部133は、変数START_TIMEが示す日時から6ヶ月が経過したかを判定する。6ヶ月が経過するまでの間、LVグループ生成部133は待ち状態となり、この期間では上記のステップS127までの処理によって生成されたLVグループを用いて、LV管理部132の処理が実行される。そして、6ヶ月が経過すると、LVグループ生成部133はステップS129の処理を実行する。なお、このステップS128で使用される経過時間の閾値は、6ヶ月に限定されるものではなく、任意の値を設定可能である。
[ステップS129]LVグループ生成部133は、変数START_TIMEの値を、現在の日時によって更新する。この後、LVグループ生成部133は、処理を図14のステップS112に進め、LVグループを生成し直す。
図16は、アンマウント処理を示すフローチャートの例である。
[ステップS131]LV管理部132が仮想ドライブからの論理ボリュームのアンマウント要求をホスト装置300から受信すると、ステップS132の処理が実行される。
[ステップS132]LV管理部132は、チャネル制御サーバ120に対して、該当論理ボリュームを仮想ドライブからアンマウントするように要求する。チャネル制御サーバ120によるアンマウントが完了すると、LV管理部132は、ホスト装置300に対してアンマウントの完了通知を送信する。
[ステップS133]LV管理部132は、LVグループ管理テーブル131dを参照し、アンマウントされた論理ボリュームがいずれかのLVグループに含まれるかを判定する。LV管理部132は、論理ボリュームがいずれかのLVグループに含まれる場合、ステップS134の処理を実行し、いずれのLVグループにも含まれない場合、ステップS137の処理を実行する。
なお、このステップS133の処理は、ステップS132の実行後に即座に実行されなくてもよい。
[ステップS134]LV管理部132は、LVグループ管理テーブル131dのレコードのうち、アンマウントされた論理ボリュームが含まれるLVグループのレコードを参照する。LV管理部132は、このレコードにLVグループに対応する物理ボリュームのPV名が設定されているかを判定する。LV管理部132は、物理ボリュームのPV名が設定済みの場合、ステップS136の処理を実行し、物理ボリュームのPV名が未設定の場合、ステップS135の処理を実行する。
[ステップS135]LV管理部132は、未使用の物理ボリュームの中から1つを選択し、選択した物理ボリュームのPV名をステップS134で参照したレコードに記録する。これにより、LVグループに対して1つの物理ボリュームが設定される。
[ステップS136]LV管理部132は、アンマウントされた論理ボリュームを物理ボリュームにマイグレーションする処理の実行を制御する。このとき、マイグレーション先の物理ボリュームは、論理ボリュームが含まれるLVグループに対応付けて設定された物理ボリュームとなる。
LV管理部132は、物理ドライブ231~234の中から空きの物理ドライブを選択し、選択した物理ドライブに上記の物理ボリュームをマウントするようにロボット制御サーバ150に要求する。この要求により、ロボット220によって該当物理ドライブに対して該当物理ボリュームがマウントされる。ただし、該当物理ドライブがすでにいずれかの物理ドライブにマウントされている場合には、上記処理は省略される。同一のLVグループに含まれる論理ボリュームは、同時期に仮想ドライブからのアンマウントが要求される可能性も高いので、ステップS136において物理ボリュームのマウント処理が省略される可能性も高い。この場合、ステップS136での処理時間が短縮される。
続いて、LV管理部132は、該当論理ボリュームのデータをディスクアレイ110から読み出して該当物理ボリュームに書き込むように、ドライブ制御サーバ140に要求する。この要求により、該当論理ボリュームのデータが該当物理ボリュームに格納される。このようなマイグレーションが完了すると、処理はステップS131に進められる。
以上のステップS136の処理により、同一のLVグループに含まれる論理ボリュームのデータが、そのLVグループに対応付けられた同一の物理ボリュームに格納される。
[ステップS137]LV管理部132は、アンマウントされた論理ボリュームを物理ボリュームにマイグレーションする処理の実行を制御する。このとき、マイグレーション先の物理ボリュームは、未使用の物理ボリュームの中から任意に選択される。このようなマイグレーションが完了すると、処理はステップS131に進められる。
なお、ステップS136,S137では、アンマウントされた論理ボリュームのデータはディスクアレイ110に残され、この論理ボリュームはオンキャッシュ状態のままになる。
図17は、オフキャッシュ処理を示すフローチャートの例である。
[ステップS141]LV管理部132は、ディスクアレイ110のキャッシュ領域の空き容量が所定量を下回ったかを判定する。LV管理部132は、空き容量が所定量以上の場合、一定時間後にステップS141の処理を再実行する。一方、LV管理部132は、空き容量が所定量を下回った場合、ステップS142の処理を実行する。
[ステップS142]LV管理部132は、LVグループ管理テーブル131dに1以上のLVグループが登録されているかを判定する。LV管理部132は、1以上のLVグループが登録済みの場合、ステップS143の処理を実行し、LVグループが1つも登録されていない場合、ステップS144の処理を実行する。
[ステップS143]LV管理部132は、オンキャッシュ状態のLVグループ(すなわち、すべての論理ボリュームのデータがディスクアレイ110に存在するLVグループ)の中から、アンマウント状態かつマイグレーション済みのLVグループを抽出する。LV管理部132は、抽出したLVグループの中から、過去における現在の時刻に最も近い時刻にマウントが要求されたLVグループを選択し、選択したLVグループに含まれるすべての論理ボリュームをオフキャッシュ状態にする。すなわち、LV管理部132は、該当論理ボリュームのデータをディスクアレイ110から削除する。この後、処理はステップS141に進められる。
ここで、LVグループとしてグループ化された複数の論理ボリュームは、比較的短い期間内に集中的に使用される(マウントが要求される)可能性が高い。このため、論理ボリューム単位ではなく、ステップS143の処理のようにLVグループ単位でオフキャッシュ処理を実行する方が、ディスクアレイ110のキャッシュ領域を有効に利用できる。
また、LVグループとしてグループ化された複数の論理ボリュームは、周期的に使用される(マウントが要求される)可能性が高い。このため、例えば、LRU論理にしたがって最後にマウントが要求されてから最も時間が経過しているLVグループをオフキャッシュ処理の対象とした場合、その後の比較的短い時間で、このLVグループ内の論理ボリュームのマウントが要求される可能性が高い。一方、最後にマウントが要求されてからの時間が最も短いLVグループは、これ以降しばらくは使用されない(マウントが要求されない)可能性が高いと考えられる。
このため、後者のLVグループに含まれる全論理ボリュームのデータを優先的にオフキャッシュ状態にすることで、このLVグループの各論理ボリュームがオンキャッシュ状態になっている時間を可能な限り短くすることができる。これにより、キャッシュ領域や物理ドライブ231~234を他の論理ボリュームのために有効利用できるようになる。
[ステップS144]LV管理部132は、オンキャッシュ状態かつマイグレーション済みの論理ボリュームの中から、LRU論理にしたがってオフキャッシュ対象の論理ボリュームを選択する。LV管理部132は、選択した論理ボリュームのデータをオフキャッシュ状態にする。すなわち、LV管理部132は、該当論理ボリュームのデータをディスクアレイ110から削除する。この後、処理はステップS141に進められる。
図18は、マウント処理を示すフローチャートの例である。
[ステップS151]LV管理部132が仮想ドライブに対する論理ボリュームのマウント要求をホスト装置300から受信すると、ステップS152の処理が実行される。
[ステップS152]LV管理部132は、マウントが要求された論理ボリュームがオンキャッシュ状態かを判定する。LV管理部132は、論理ボリュームがオンキャッシュ状態の場合、ステップS157の処理を実行し、オフキャッシュ状態の場合、ステップS153の処理を実行する。
[ステップS153]LV管理部132は、LVグループ管理テーブル131dを参照して、マウントが要求された論理ボリュームがいずれかのLVグループに含まれるかを判定する。LV管理部132は、論理ボリュームがいずれかのLVグループに含まれる場合、ステップS154の処理を実行し、いずれのLVグループにも含まれない場合、ステップS155の処理を実行する。
[ステップS154]LV管理部132は、LVグループ管理テーブル131dに基づき、マウントが要求された論理ボリュームを含むLVグループを特定し、そのLVグループに含まれるすべての論理ボリュームを特定する。LV管理部132は、特定したすべての論理ボリュームのデータをリコールする処理の実行を制御する。
LV管理部132は、LVグループ管理テーブル131dに基づいて、特定したLVグループに対応付けられた物理ボリュームを特定する。LV管理部132は、物理ドライブ231~234の中から空きの物理ドライブを選択し、選択した物理ドライブに上記の物理ボリュームをマウントするようにロボット制御サーバ150に要求する。この要求により、ロボット220によって該当物理ドライブに対して該当物理ボリュームがマウントされる。続いて、LV管理部132は、該当LVグループに含まれるすべての論理ボリュームのデータをマウントされた物理ボリュームから読み出してディスクアレイ110に書き込むように、ドライブ制御サーバ140に要求する。この要求により、該当物理ボリュームから上記のすべての論理ボリュームのデータがディスクアレイ110に読み込まれる。
[ステップS155]LV管理部132は、マウントが要求された論理ボリュームのデータをリコールする処理の実行を制御する。すなわち、LV管理部132は、マウントが要求された論理ボリュームのデータが格納された物理ボリュームを特定する。LV管理部132は、物理ドライブ231~234の中から空きの物理ドライブを選択し、選択した物理ドライブに特定した物理ボリュームをマウントするようにロボット制御サーバ150に要求する。この要求により、ロボット220によって該当物理ドライブに対して該当物理ボリュームがマウントされる。続いて、LV管理部132は、該当論理ボリュームのデータをマウントされた物理ボリュームから読み出してディスクアレイ110に書き込むように、ドライブ制御サーバ140に要求する。この要求により、該当物理ボリュームから該当論理ボリュームのデータのみがディスクアレイ110に読み込まれる。
[ステップS156]LV管理部132は、ステップS154またはステップS155のリコール処理が完了するまで、待ち状態となる。そして、リコール処理が完了すると、LV管理部132は、ステップS157の処理を実行する。
[ステップS157]LV管理部132は、チャネル制御サーバ120に対して、マウントが要求された論理ボリュームを仮想ドライブに対してマウントするように要求する。チャネル制御サーバ120によるマウントが完了すると、LV管理部132は、ホスト装置300に対してマウントの完了通知を送信する。そして、処理がステップS151に進められる。
なお、ステップS154の処理が実行された場合、LVグループ内のすべての論理ボリュームがオンキャッシュ状態となる。ステップS157では、これらのうち、マウントが要求された論理ボリュームのみが仮想ドライブにマウントされた状態となるが、残りの論理ボリュームはいずれも、仮想ドライブに対するアンマウント状態として管理される。
次に、図19、図20は、複数の論理ボリュームのマウントが要求された場合の処理例を示すシーケンス図である。図19、図20では、図5、図6と同様に、説明を簡単にするために、2台の物理ドライブ231,232のみが使用されるものとする。
また、図19、図20では、図5、図6と同様に、ほぼ同じ時刻に3つの論理ボリュームLV-A,LV-B,LV-Cのマウントが要求されたとする(ステップS51a,S51b,S51c)。また、論理ボリュームLV-A,LV-B,LV-Cのそれぞれは、マウントが要求された時点ではオフキャッシュ状態であったとする。さらに、図5、図6の場合とは異なり、論理ボリュームLV-A,LV-Cが同一のLVグループに含まれており、それらのデータが物理ボリュームPV-Aに格納されているとする。一方、論理ボリュームLV-Bのデータについては、図5、図6と同様に物理ボリュームPV-Bに格納されているとする。
仮想ライブラリ制御サーバ130は、まず、論理ボリュームLV-Aのマウント処理と、論理ボリュームLV-Cのマウント処理とを並行して実行する。論理ボリュームLV-Aのマウント処理では、仮想ライブラリ制御サーバ130は、論理ボリュームLV-AがLVグループに含まれると判定する。さらに、仮想ライブラリ制御サーバ130は、そのLVグループには論理ボリュームLV-Cも含まれていると判定する(ステップS52)。すると、仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aのリコール(ステップS53a~S59a)に続けて、論理ボリュームLV-Cのリコール(ステップS57c~S59c)を実行する。
論理ボリュームLV-Aのリコール(ステップS53a~S59a)の処理内容は、図5のステップS22a~S28aと同様なので、ここでは説明を省略する。また、論理ボリュームLV-Cのリコール(ステップS57c~S59c)では、物理ドライブ231にマウント済みの物理ボリュームPV-Aから、論理ボリュームLV-Cのデータがディスクアレイ110に読み込まれる。
以上のリコールが完了すると、仮想ライブラリ制御サーバ130は、仮想ドライブに論理ボリュームLV-Aをマウントするようにチャネル制御サーバ120に要求する。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS60a)。これにより、論理ボリュームLV-Aのマウント処理が完了する。
一方、論理ボリュームLV-Bのマウント処理(ステップS53b~S60b)の処理内容は、図5のステップS22b~S29bと同様なので、ここでは説明を省略する。
また、仮想ライブラリ制御サーバ130は、論理ボリュームLV-Aのマウント処理に続けて、論理ボリュームLV-Cのマウント処理を実行する。この処理では、仮想ライブラリ制御サーバ130は、論理ボリュームLV-Cがオンキャッシュ状態であると判定し(ステップS61)、仮想ドライブに論理ボリュームLV-Cをマウントするようにチャネル制御サーバ120に要求する。マウントが完了すると、仮想ライブラリ制御サーバ130は、マウント完了通知をホスト装置300に送信する(ステップS60c)。これにより、論理ボリュームLV-Cのマウント処理が完了する。
このように、図19、図20の処理によれば、図5、図6の処理とは異なり、論理ボリュームLV-Cのマウントの際にリコール実行待ちが発生しない。したがって、論理ボリュームLV-Cのマウントが要求されてからの応答時間を短縮できる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置10、チャネル制御サーバ120、仮想ライブラリ制御サーバ130、ドライブ制御サーバ140、ロボット制御サーバ150)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。