以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
(PVの説明)
図1は、PV100のフォーマットの一例を示す図である。仮想テープ装置において、PV100を使用する(データを読み書きする)ために、PV100は、フォーマットとして、PV100のヘッダである「PV-HDR」、複数の「LV」(図1の例ではLV-A、LV-B)及び「PVディレクトリ」を含んでよい。「PVディレクトリ」は、「PV-DIR」と表記されてもよい。
「PV-HDR」は、識別子の一例である「VOL1」、テープ媒体名を示す「PV名」、テープ媒体のグループ名を示す「PVグループ名」、仮想テープ装置固有の識別子を示す「VTLS」、及び、正常又は異常フラグを示す「テープ媒体ステータス」を含む。
「LV」は、LVのヘッダである「LV-HDR」に加えて、「VOL1」、「HDR1」、「HDR2」、「Data」、「EOF1」、「EOF2」、及び、「EOV」を含む。
「LV-HDR」は、LVの更新回数を示す「世代」、論理ボリューム名を示す「LV名」、論理ボリュームグループ名を示す「LVグループ名」、LVデータサイズを示す「LVサイズ」、及び、LVを作成した日付を示す「LV作成日」を含む。
「LV」において、「VOL1」(Volume)は、ボリューム名や所有者等が設定されるブロックであり、「HDR1」(Header 1)は、ファイル名や更新日等が設定されるブロックである。「HDR2」(Header 2)は、レコード形式やブロック長等が設定されるブロックであり、「Data」は、ユーザデータが設定される可変長バイトのブロックである。「EOF1」(End of File 1)は、ファイル名や更新日等が設定されるブロックであり、「EOF2」(End of File 2)は、レコード形式やブロック長等が設定されるブロックである。「EOV」(End of Volume)は、ボリュームの最後を示すマークブロックである。なお、「VOL1」、「HDR1」、「HDR2」、「EOF1」及び「EOF2」は、例えば80バイト程度のデータ長である。
図2は、仮想テープ装置が備えるディスクアレイ装置、例えばTVC200から、テープライブラリ装置のPV100へのLVの書込処理の一例を示す図である。
図2の上段に示すように、TVC200には、3つのLV(図2では「LV-A」、「LV-B」、「LV-C」と表記する)が作成されており、3つのLVが更新された場合を想定する。なお、PV100には、PV-HDRが書き込まれている。
ホスト装置がジョブを実行し、ホスト装置は、図2の中段に示すように、TVC200において更新されたLVをPV100へ書き込む書込処理を行なう。PV100には、LV-A、LV-B、LV-C、PV-DIRが書き込まれる。
さらに時間が経過し、LV-Aが更新された場合を想定する。この場合、図2の下段に示すように、以前にPV100に書き込まれたLV-Aは無効となり、PV100の末尾にLV-Aが書き込まれる。
(スピードマッチング機能の説明)
ところで、テープライブラリ装置においてPV100に対するデータの書き込み及び読み出しを行なうドライブ或いはコントローラは、「スピードマッチング」機能を有することがある。
「スピードマッチング」機能とは、データパターンに合わせてドライブの動作速度を最適化する機能である。例えば、スピードマッチング機能では、「リポジショニング」を考慮し、ドライブが、書込処理で使用されるPV100に対して、サイズの大きいデータを高速で書き込み、サイズの小さいデータを低速で書き込む。
まず、「リポジショニング」について説明する。図3は、仮想テープシステムで使用されるPV100のデータフォーマットの一例を示す図である。図3の例では、PV100には、PV100の先頭に設定されるPVヘッダ、LVの区切りを示すテープマーク(TM)、LVごとに設定されるLVヘッダ、及びLVのデータを所定サイズ(図3の例では256バイト)で区切った1以上のLVブロックが含まれる。
ドライブは、各LVのデータの終端にデータの書き込み完了を示すテープマークを書き込むと書き込み動作を停止する。
また、ドライブは、モータ等の駆動機構によりPV100のテープを送りながら、ヘッドによりテープにデータを書き込むが、駆動機構の動作速度、換言すればテープの走行速度が規定値になるまでは、PV100へのデータの書き込みを開始しない。
このため、ドライブがデータを書き終えて駆動機構の動作が停止すると、次のデータの書き込みを開始するまでに、駆動機構の動作速度を規定値まで上げる助走期間が発生する。従って、図4(a)に示すように、PV100に書き込まれるLVのデータ間に助走期間分の「隙間」が発生することがある。
「リポジショニング」は、このような「隙間」を最小限に抑えるために、次のデータの書き込みを開始する前に、駆動機構によりテープを書込方向とは逆の巻戻方向に戻す(換言すればヘッドの位置を巻き戻し方向へ戻す)処理である(図4(b)参照)。ドライブを高速で動作させる場合、長い助走期間を取ることになるため、リポジショニングにかかる時間は長くなる。
例えば、小さいサイズの複数のLVを連続して書き込む場合のように、小さいサイズが連続するデータパターンでドライブを高速動作させた場合、長いリポジショニングが頻繁に発生する状態となり、トータルの書き込み性能が低下する。そこで、スピードマッチング機能は、小さいサイズが連続するデータパターンの場合、ドライブを低速動作させる。
一方、大きいサイズの複数のLVを連続して書き込む場合のように、大きいサイズが連続するデータパターンでドライブを低速動作させた場合、リポジショニングは短時間で済むが、書込時間が長くなる。そこで、スピードマッチング機能は、大きいサイズが連続するデータパターンの場合、ドライブを高速動作させる。
なお、書込処理では、仮想テープ装置は、ホスト装置から命令された書込対象のLVの指定順序(例えば書込対象のLVを指定するリストにおける記載順)に従って、テープライブラリ装置に対して、排出対象のLVをPV100に書き込む指示を行なう。また、スピードマッチング機能による書き込み速度の切り替えをLVのデータサイズに応じて変更することは困難である。
このため、PV100に対して、サイズの大きい第1データを書き込んだ後にサイズの小さい複数の第2データを数回に亘って書き込む場合、第1データの高速書き込み後、第2データの複数の書き込みが高速になる。これにより、長いリポジショニング処理が発生することがある。
また、PV100に対して、サイズの小さい第2データを書き込んだ後にサイズの大きい第1データを数回に亘って書き込む場合、第2データの低速書き込み後、第1データの複数の書き込みが低速になり、書き込み時間が長くなってしまう。
(キャッシュ状態別の動作の説明)
仮想テープ装置は、書込処理の実行中に、書込対象となったLVがディスクアレイ装置上に存在しないオフキャッシュ状態の場合、書込対象のLVのデータをディスクアレイ装置上に格納するオンキャッシュ処理の実行後に、書込用PVに書き込む処理を行なう。オンキャッシュ処理では、仮想テープ装置は、書込対象のLVのデータを格納するテープライブラリ装置上のPVからLVのデータを読み出し、ディスクアレイ装置上に格納することで、書込対象のLVをオンキャッシュ状態にする。オンキャッシュ処理は、「リコール処理」と称されてもよい。
このため、オフキャッシュ状態のLVに対してオンキャッシュ処理を実行する間、書込用PVに対する当該LVの書き込み処理が停滞してしまう。
また、書込用PVへの書き込みが停滞した場合、一時的に書込用PVがアンマウントされ、LVのオンキャッシュ処理完了後に再度書込用PVのマウントが実行される。このため、書込用PVに対するLVの書き込みを、オンキャッシュ処理の完了後にスムーズに再開することが困難になることがある。
(比較例の説明)
そこで、仮想テープ装置により、スピードマッチング機能を搭載したドライブを経由して、TVCからテープライブラリ装置へ書き込みを行なう書込処理を、以下の手法を用いて効率よく実行させることが考えられる。なお、以下、書込処理の一例であるLVの排出(EXPORT;エクスポート)処理に適用される場合を説明する。
・仮想テープ装置は、データサイズ(以下、「LVサイズ」と表記する場合がある)順にLVをPVに排出することで、連続して書き込まれるLVサイズ間の変動を抑え、リポジショニングの影響を最小化する。
・仮想テープ装置は、オンキャッシュLVの排出処理とオフキャッシュLVのリコール処理とを別々のドライブを利用し並行して実施することで、オンキャッシュ(リコール)待ちによる排出用PVのアンマウントを回避する。
・仮想テープ装置は、オフキャッシュLVの合計LVサイズがオンキャッシュLVの合計LVサイズよりも大きい場合、予めオンキャッシュLVを増やすことで、オンキャッシュ待ちによる排出用PVのアンマウントを回避する。
このように、比較例においては、仮想テープ装置は、リコール処理と書込処理とを並行処理させる際にリコール処理を優先させる。換言すれば、仮想テープ装置は、書込対象のLVに対するオンキャッシュLVの割合をオフキャッシュLVの割合よりも大きい状態に制御することで処理を継続させる。
一方で、LVサイズごとに、オンキャッシュLVの割合とオフキャッシュLVの割合とにバラツキがある場合がある。例えば、比較的大サイズのLV数はオフキャッシュLVの方が多く、比較的小サイズのLV数はオンキャッシュLVの方が多く、且つ、比較的大サイズの合計LVサイズよりも比較的小サイズの合計LVサイズの方が大きい場合がある。
この場合、LVの処理がサイズ順にならなくなるため、ドライブによるPVへの書込速度が最適とならない場合がある。例えば、大サイズのLVのリコール処理完了までに時間がかかった結果、ドライブが中サイズ又は小サイズのLVをPVに書き込んでいる場合、書込対象のLVは不適切な速度(例えば中速度又は低速度)で処理され、スループットが低下することになる。
そこで、一実施形態では、LVサイズごとに、オンキャッシュLVの割合とオフキャッシュLVの割合とのバラツキがある場合においても、PVに対するLVの書込処理時間を短縮する手法を説明する。
〔1-1〕仮想テープシステムの構成例
図5は一実施形態の一例としての仮想テープシステム1の構成例を示すブロック図である。仮想テープシステム1は、ストレージシステムの一例であり、図5に示すように、例示的に、仮想テープ装置2及びテープライブラリ装置4をそなえてよい。仮想テープ装置2には、ホスト装置5が接続されてよい。なお、仮想テープシステム1は、複数のテープライブラリ装置4をそなえてもよい。
仮想テープ装置2は、テープライブラリ装置4とホスト装置5との間に介設され、ホスト装置5からの要求に応じてテープライブラリ装置4に対する種々の制御を行なう。
図5に示すように、仮想テープ装置2は、例示的に、ディスクアレイ装置21と、複数(図5の例では2台)の制御サーバ3-1及び3-2と、をそなえてよい。なお、以下の説明において、制御サーバ3-1及び3-2を区別しない場合には、単に制御サーバ3と表記する。
制御サーバ3は、制御装置の一例であり、仮想テープ装置2において種々の制御を行なう。一実施形態において、制御サーバ3は、ホスト装置5からLV22を指定した書込指示を受信すると、ディスクアレイ装置21及びテープライブラリ装置4に対する書込処理の制御を行なう。
なお、制御サーバ3-1及び3-2のうちの一方(図5の例では制御サーバ3-1)はプライマリとして動作し、他方(図5の例では制御サーバ3-2)はプライマリに障害が発生した場合に動作するセカンダリ(スタンバイ)として待機してよい。例えば、セカンダリの制御サーバ3-2は、プライマリの制御サーバ3-1に異常が発生したときに自身がプライマリに昇格して制御サーバ3の処理を引き継いでよい。
ディスクアレイ装置21は、複数のPV43に格納されるデータを記憶する記憶装置の一例であり、ホスト装置5とテープライブラリ装置4との間のアクセスに係るLV22のデータを記憶する。
ディスクアレイ装置(「TVC」と称されてもよい)21は、複数の記憶部を含んでよく、これらの記憶部によりRAID等のディスクグループを構成してよい。また、ディスクアレイ装置21は、ディスクグループを用いてファイルシステムを提供してもよい。記憶部としては、HDD(Hard Disk Drive)等の磁気ディスク装置、或いは、SSD(Solid State Drive)等の半導体ドライブ装置等が挙げられる。
なお、図5において、便宜上図示を省略しているが、仮想テープ装置2は、上述した装置に加えて、例えば、制御サーバ3とは異なる機能を有するサーバ、通信装置、及び電源装置等の種々の装置をそなえてよい。
仮想テープ装置2内の少なくとも一部の装置間、及び、仮想テープ装置2とテープライブラリ装置4との間は、FC(Fibre Channel)ケーブル等を介したSAN(Storage Area Network)等のネットワークにより相互に通信可能に接続されてよい。また、仮想テープ装置2内の他の装置間は、LAN(Local Area Network)等のネットワークにより相互に通信可能に接続されてよい。
テープライブラリ装置4は、ストレージ装置の一例であり、PV43を複数収納し、仮想テープ装置2からの指示に応じてPV43に対するアクセスを行なう。なお、PV43はデータを記憶する記録媒体の一例である。PV43としては、LTO(Linear Tape Open)カートリッジ等の磁気テープや、光ディスクカートリッジ等が挙げられる。
図5に示すように、テープライブラリ装置4は、例示的に、複数(図5の例では3台以上)のドライブ41、2台以上(図5の例では2台)のロボット42、及び、コントローラ44をそなえてよい。
複数のドライブ41は、可搬型記録媒体の一例としてのPV43に対するデータの記録及び再生等を行なう媒体処理装置の一例であり、PV43にアクセスする複数のアクセス部の一例である。ロボット42は、PV43の媒体カートリッジのピックアップ、搬送、ドライブ41への挿入等を行なう運搬装置の一例である。なお、ドライブ41の台数やロボット42の台数は例示であり、それぞれ任意の台数がテープライブラリ装置4にそなえられてよい。
コントローラ44は、テープライブラリ装置4における種々の制御を行なう。例えば、コントローラ44は、仮想テープ装置2から受信した指示(例えばコマンド)に応じて、ドライブ41及びロボット42の動作を制御してよく、コマンドに対する応答を仮想テープ装置2に送信してよい。
一例として、コントローラ44は、制御サーバ3からPV43に対するLV22のデータの書込指示(マイグレーション指示)を受信すると、ロボット42を制御して、指定された又は空き記憶容量のあるPV43をドライブ41に挿入する。そして、コントローラ44は、ドライブ41にLV22のデータを書き込み、制御サーバ3に応答する。
他の例として、コントローラ44は、制御サーバ3からPV43に対するLV22のデータの読出指示(オンキャッシュ指示)を受信すると、ロボット42を制御して、当該LV22を格納するPV43をドライブ41に挿入する。そして、コントローラ44は、ドライブ41からLV22のデータを読み出し、制御サーバ3に応答する。
なお、一実施形態において、テープライブラリ装置4は複数のドライブ41をそなえるため、コントローラ44は、仮想テープ装置2からの指示に応じて、PV43への書き込み及び読み出しが並行して実行されるように、複数のドライブ41を制御してよい。
例えば、コントローラ44は、互いに異なるPV43に対する複数の書込指示、複数の読出指示、又は、1以上の書込指示及び1以上の読出指示を受信した場合、空き状態である(利用されていない)複数のドライブ41を利用してよい。
また、一実施形態において、コントローラ44及びドライブ41は、「リポジショニング」を考慮した「スピードマッチング」機能を有する(図4(b)参照)。すなわち、コントローラ44は、書込処理で使用されるPV43に対して、サイズの大きいLV22のデータについてはドライブ41を高速動作させ、サイズの小さいLV22のデータについてはドライブ41を低速動作させるように制御する。なお、PV43のデータフォーマットは図1及び図3に例示するものと同様であってよい。
このように、コントローラ44は、複数のドライブ41のうちの書込データをPV43に書き込むドライブ41の書込速度を、当該書込データのサイズに応じて制御する制御部の一例である。
ホスト装置5は、仮想テープ装置2を介したテープライブラリ装置4へのアクセスを行なう情報処理装置の一例である。ホスト装置5としては、例えば、PC(Personal Computer)、サーバ、或いはメインフレーム等の種々のコンピュータが挙げられる。
ホスト装置5では、例えば、仮想テープシステム1の運用に関する種々の制御を行なうソフトウェアが実行されてよい。当該ソフトウェアによる制御には、例えば、仮想テープ装置2におけるLV22のマウント・アンマウントに関する制御や、LV22の書き込みに関する制御等が含まれてよい。ホスト装置5と仮想テープ装置2との間は、例えば、LAN等のネットワークにより相互に通信可能に接続されてよい。
図5に示す仮想テープシステム1において、ホスト装置5からデータの書込指示又は読出指示を受信すると、仮想テープ装置2は、ホスト装置5に対して、「従来のテープライブラリ装置」として振る舞う。例えば、仮想テープ装置2は、ディスクアレイ装置21に対してLV22のデータの書き込み又は読み出しを行なう。
このように、仮想テープ装置2は、PV43よりもデータアクセスの速いディスクアレイ装置21を用いて、ホストに対して応答を返すため、「従来のテープライブラリ装置」を使用するよりも高速に処理を行なうことが可能である。
仮想テープ装置2は、ホスト装置5への応答後、ホスト装置5を介さずにバックグラウンドで、換言すれば、ホスト装置5からの書込指示に応じて、非同期で、ディスクアレイ装置21に書き込まれたLV22をPV43へ保存する。以下、ディスクアレイ装置21からPV43へLV22を書き込む書込処理を「マイグレーション処理」と表記する場合がある。
なお、仮想テープ装置2は、ディスクアレイ装置21に書き込まれたLV22によって容量が圧迫されるのを防ぐために、頻繁にLV22の更新がなく、且つ、マイグレーション済である大容量のLV22を、ディスクアレイ装置21から削除してよい。
〔1-2〕ハードウェア構成例
次に、図6を参照して、図5に示す仮想テープシステム1における制御サーバ3及びテープライブラリ装置4のハードウェア構成例について説明する。
図6に示すように、制御サーバ3は、例示的に、プロセッサ3a、メモリ3b、記憶部3c、テープIF(Interface)3d-1、入出力IF3d-2、ホストIF3d-3、ディスクIF3d-4、及び読取部3eをそなえてよい。
プロセッサ3aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ3aは、各ブロック3b~3eとバス3iで相互に通信可能に接続されてよい。プロセッサ3aとしては、種々の集積回路(IC;Integrated Circuit)、例えば、CPU、MPU、DSP、ASIC、PLD(例えばFPGA)等のうちのいずれか1つ、又は、これらの2以上の組み合わせが挙げられる。なお、CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称である。また、ASICはApplication Specific Integrated Circuitの略称であり、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
メモリ3bは、種々のデータやプログラムを格納するハードウェアの一例である。メモリ3bとしては、揮発性メモリ、例えば、DRAM(Dynamic RAM)等のRAMが挙げられる。なお、RAMはRandom Access Memoryの略称である。
記憶部3cは、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部3cは、制御サーバ3の二次記憶装置として使用されてよく、OS(Operating System)やファームウェア、アプリケーション等のプログラム、及び各種データが格納されてよい。記憶部3cとしては、例えば、HDD等の磁気ディスク装置、SSD等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。記憶部3cは、制御サーバ3の各種機能の全部若しくは一部を実現するプログラム3fを格納してもよい。
テープIF3d-1、入出力IF3d-2、ホストIF3d-3、及びディスクIF3d-4は、それぞれ、テープライブラリ装置4、入出力装置3g、ホスト装置5、及びディスクアレイ装置21との間の接続及び通信の制御等を行なう通信IFの一例である。なお、入出力装置3gは、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力部、及び、ディスプレイやプリンタ等の出力部、の一方又は双方を含んでよい。
なお、制御サーバ3は、管理者の管理端末との間の接続及び通信の制御等を行なう通信IFをそなえてもよく、当該通信IFを用いて、図示しないネットワークからプログラム3fをダウンロードしてもよい。
読取部3eは、記録媒体3hに記録されたデータやプログラムを読み出し、プロセッサ3aに出力するリーダの一例である。読取部3eは、記録媒体3hを接続又は挿入可能な接続端子又は装置を含んでもよい。読取部3eとしては、例えばUSB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体3hにはプログラム3fが格納されてもよい。
記録媒体3hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。なお、CDとしては、例示的に、CD-ROM、CD-R、CD-RW等が挙げられる。また、DVDとしては、例示的に、DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等が挙げられる。
上述した制御サーバ3のハードウェア構成は例示である。従って、制御サーバ3内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
また、仮想テープ装置2がそなえる他の装置は、図6に示す制御サーバ3と同様のハードウェア構成をそなえてもよい。
図6に示すように、テープライブラリ装置4は、例示的に、上述した複数のドライブ41(図6の例では41-1~41-n;nは2以上の整数)、複数のロボット42、及びコントローラ44に加えて、PV43を格納する格納部45をそなえてよい。
なお、コントローラ44は、例えば、プロセッサ、メモリ、記憶部等のハードウェア構成をそなえてよく、これらの少なくとも一部が集積回路として実装されてもよい。
〔1-3〕機能構成例
次に、一実施形態に係る制御サーバ3の機能構成例を説明する。一実施形態に係る機能に着目すると、図7に示すように、制御サーバ3は、例示的に、メモリ部31、分類処理部32、書込処理部33、及び読出処理部34をそなえてよい。
なお、メモリ部31は、制御サーバ3のメモリ3b及び記憶部3c(図6参照)の少なくとも一方により実現されてよい。また、分類処理部32、書込処理部33、及び読出処理部34は、制御サーバ3のプロセッサ3aがプログラム3fをメモリ3bに展開して実行することにより実現されてよい。
メモリ部31は、マスタLVリスト311、書込対象LVリスト312、オンキャッシュLVリスト313、オフキャッシュLVリスト314、Lリスト315、Mリスト316、Sリスト317、書込モード情報318、及びリコールモード情報319の各情報を記憶する記憶領域を有してよい。上記リスト311~317、書込モード情報318、及びリコールモード情報319の詳細については後述する。
なお、以下の説明において、書込対象LVリスト312、オンキャッシュLVリスト313、及びオフキャッシュLVリスト314を、それぞれ「リストLw」、「リストLon」、及び「リストLoff」と表記する場合がある。また、以下の説明において、Lリスト315、Mリスト316、及びSリスト317を、それぞれ「リストL」、「リストM」、及び「リストS」と表記する場合がある。
図8にマスタLVリスト311の一例を示す。図8に示すように、マスタLVリスト311は、例示的に、「LV名」、「キャッシュ状態」、「LVデータ格納先PV名」、及び「LVサイズ」の項目を含んでよい。なお、マスタLVリスト311は、図8に示す項目以外にも、例えばエクスポートの実行時刻や回数等、LV22に関連する種々の項目を含んでよい。
LV名には、ホスト装置5が認識するLV22の名称が設定されてよい。キャッシュ状態には、オンキャッシュ状態を示す“ON”又はオフキャッシュを示す“OFF”が設定されてよい。LVデータ格納先PV名には、LV22のデータを格納するPV43の名称が設定されてよい。LVサイズには、当該LV22のデータサイズが設定されてよい。
マスタLVリスト311は、後述する分類処理部32、書込処理部33、及び読出処理部34による各処理によって、LV22に関する情報が変化する都度、制御サーバ3により更新されてよい。
なお、図8では、マスタLVリスト311を、便宜上、テーブル形式として示すが、これに限定されるものではない。例えば、マスタLVリスト311は、DB(Database)形式やXML(eXtensible Markup Language)形式、配列等の種々の形態であってよい。上記リスト312~317についても同様である。
分類処理部32は、ホスト装置5から書込指示又は読出指示を受信すると、書込処理又は読出処理の実施のための処理を行なう。当該処理には、書込処理又は読出処理の対象となるLV22の分類が含まれてよい。
書込処理部33は、分類処理部32が受信した書込指示に基づき、書込対象のLV22のキャッシュ状態に応じた書込処理を行なう。
図7に示すように、書込処理部33は、例示的に、Lon処理部33a及びLMS処理部33bをそなえてよい。Lon処理部33aは、後述するリストLonに基づく書込処理を行なう。LMS処理部33bは、後述するリストL、リストM、及びリストSに基づく書込処理を行なう。
読出処理部34は、分類処理部32が受信した読出指示、又は、書込処理部33から発行された読出指示(オンキャッシュ指示)、に基づき、読出対象のLV22のキャッシュ状態に応じた読出処理を行なう。
図7に示すように、読出処理部34は、例示的に、Loff処理部34aをそなえてよい。Loff処理部34aは、後述するリストLoffに基づく読出処理、並びに、リストL、リストM、及びリストSの作成及び更新処理を行なう。
分類処理部32、書込処理部33、及び読出処理部34の詳細は後述する。
ここで、ディスクアレイ装置21がLV22のデータを記憶する場合、当該LV22は「オンキャッシュ」の状態である。ホスト装置5からのアクセスに係るLV22がオンキャッシュの場合、書込処理部33は、ディスクアレイ装置21上のオンキャッシュのLV22に対して処理を行ない、ホスト装置5に応答を返してよい。
例えば、書込処理部33は、書込指示に係る書込対象のLV22がオンキャッシュの場合、ディスクアレイ装置21内のLV22に対してデータを書き込む。また、読出処理部34は、読出指示に係る読出対象のLV22がオンキャッシュの場合、ディスクアレイ装置21内のLV22からデータを読み出す。
一方、ディスクアレイ装置21に存在しないLV22は「オフキャッシュ」の状態である。書込指示又は読出指示に係るLV22がオフキャッシュの場合、読出処理部34は、書込指示又は読出指示で指定されたLV22が書き込み(マイグレーション)済みであるPV43から、当該LV22のデータをディスクアレイ装置21上に読み出すオンキャッシュ処理(リコール処理)を行なう。
オンキャッシュ処理によりLV22がオンキャッシュになると、書込処理部33又は読出処理部34は、ホスト装置5に応答を返してよい。また、オンキャッシュになったLV22に対して、書込処理部33又は読出処理部34は、ホスト装置5からの書込指示又は読出指示に係る書込処理又は読出処理を行なう。
〔1-4〕書込処理の説明
以下、一実施形態に係る書込処理について説明する。以下の説明では、書込処理は、複数のドライブ41を利用して、複数のPV43に対するLV22の書き込み、並びに、1以上のPV43からのリコール、が並行して実行される場合を想定する。このため、書込処理は、便宜上、エクスポート処理とは異なる、マイグレーション処理等の書き込み動作であるものとする。なお、書込処理からエクスポート処理を除外する意図はない。
また、以下の説明では、読出(リコール)対象となるオフキャッシュ状態のLV22及び書込対象となるオンキャッシュ状態のLV22は、書込処理部33及び読出処理部34により、LVサイズ順に処理が実行されるものとする。また、テープライブラリ装置4におけるドライブ41及びPV43の数、並びに、ディスクアレイ装置21の空き記憶領域は、それぞれ、一実施形態に係る処理のために十分に足りており、且つ、使用可能であるものとする。
〔1-4-1〕LV分類処理
分類処理部32は、書込指示をホスト装置5から受信すると、書込対象LVリスト312を作成する。なお、書込指示は、少なくとも、書込対象のLV22を指定する情報を含んでよく、例えば、PV43への書込対象のLV22のリストをパラメータとして含んでもよい。
例えば、分類処理部32は、書込指示に含まれる書込対象(処理対象)の全てのLV22について、マスタLVリスト311からLVサイズ及び状態(オンキャッシュ又はオフキャッシュ)の取得を行ない、書込対象LVリスト312を生成する。
図9は、書込対象LVリスト312の一例を示す図である。図9に示すように、リストLwは、例示的に、書込対象のLV22の「LV名」、当該LV22の「キャッシュ状態」、「LVデータ格納先PV名」、及び「LVサイズ」の項目を含んでよい。
分類処理部32は、マスタLVリスト311から、書込対象のLV名に対応するエントリの情報、例えば「キャッシュ状態」、「LVデータ格納先PV名」及び「LVサイズ」を抽出することで、リストLwを作成してよい。
また、分類処理部32は、書込対象のLV22を分類し、分類結果に基づいて、オンキャッシュLVリスト313及びオフキャッシュLVリスト314を生成する。分類処理部32による分類には、キャッシュ状態による分類と、LVサイズによる分類とが含まれてよい。
図10及び図11は、それぞれ、オンキャッシュLVリスト313及びオフキャッシュLVリスト314の一例を示す図である。図10に例示するように、リストLonは、リストLwのうちのキャッシュ状態が“ON”であるLV22のエントリを抽出したリストであってよい。また、図11に例示するように、リストLoffは、リストLwのうちのキャッシュ状態が“OFF”であるLV22のエントリを抽出したリストであってよい。
また、リストLon及びLoffは、それぞれ、分類処理部32によりLVサイズに基づき分類された「カテゴリ」の項目を含んでよい。
「カテゴリ」には、分類処理部32により決定される、LVサイズに応じたLVの分類、例えば「大」、「中」、「小」等の段階的な複数のサイズ範囲のグループ(区分、種類)が設定されてよい。
図10及び図11では、分類処理部32は、例えば、50MB(メガバイト)以上を大サイズ、1MB以上且つ50MB未満を中サイズ、1MB未満を小サイズとして、LVサイズに基づきLV22を分類する例を示すが、これに限定されるものではない。
例えば、大サイズの下限且つ中サイズの上限である第1の閾値、並びに、中サイズの下限且つ小サイズの上限である第2の閾値は、それぞれ、ドライブ41の書込性能及び/又は読出性能に基づき、予め決定されてよい。なお、第1及び第2の閾値は、例えば、書込対象LVリスト312に含まれるLV22のLVサイズの分布(分散)や、最大サイズ及び最小サイズの少なくとも1つに基づき、決定されてもよい。
ここで、書込処理において、書込対象のPV43に対するLV22の書込順序は、便宜上、ホスト装置5からの命令順となる場合が多いが、PV43に対する書込順序が当該命令順に制限されるわけではない。換言すれば、命令順に書き込むことは必須ではない。
そこで、分類処理部32は、リストLon及びLoffを、それぞれ、LVサイズをキーとしてソートしてよい。図10及び図11は、LVサイズをキーに降順でソートしたリストLon及びLoffを示す。
このように、リストLonは、PV43へ書き込まれる書込対象の複数のデータのうち、ディスクアレイ装置21に記憶されている一以上のデータのリストをデータサイズに基づきソートした第1リストの一例である。また、リストLoffは、PV43へ書き込まれる書込対象の複数のデータのうち、ディスクアレイ装置21に記憶されていない二以上のデータのリストをデータサイズに基づきソートした第2リストの一例である。
なお、図10及び図11の例では、LVサイズが大から小へと変動する順(すなわち降順)でエントリがソートされているが、これに限定されるものではなく、エントリは、LVサイズが小から大へと変動する順(すなわち昇順)でソートされてもよい。
このように、分類処理部32は、リストLon及びLoffの各々に対して、LVサイズが緩やかに変化するようにソートを行なう。これにより、後述するように、リストLonに基づくPV43へのLV22の書込処理において、LVサイズによるPV43へのLV22の書込速度の大きな変動を抑止できる。このため、書込速度を緩やかに変化させることができ、リポジショニングによる書込処理の遅延を最小限に抑えることができる。
なお、分類処理部32は、リストLon及びLoffのソートに上記のいずれのソート規則を用いてもよく、リストLonとリストLoffとで同じソート規則を用いてよい。リストLonとリストLoffとで同じソート規則を用いることにより、リストLoffに基づきオンキャッシュ処理が実施されたLV22のLVサイズと、リストLon内のLV22のLVサイズとの間の差分を小さくできる。このため、オンキャッシュ処理が実施された後にも、書込速度の大きな変動を抑止することができる。
以上のように、分類処理部32は、図12に例示するように、処理対象となるLV22を、LVサイズ及びキャッシュ状態の2つの観点によって分類するといえる。
従って、分類処理部32は、データがディスクアレイ装置21に記憶されているか否かに応じたリストLonと、リストLoffと、を生成する生成部の一例である。また、分類処理部32は、複数のデータをデータサイズに基づき複数のサイズ範囲のグループに分類する分類部の一例である。
〔1-4-2〕LV22の書込処理及びリコール処理
分類処理部32により、LV22が分類されると、書込処理部33及び読出処理部34は、以下の(i)~(v)の処理を互いに独立して実行する。
(i)リストLonに基づくLV22の書込処理
(ii)リストLoffに基づくLV22のリコール処理
(iii)リストLに基づくLV22の書込処理
(iv)リストMに基づくLV22の書込処理
(v)リストSに基づくLV22の書込処理
例えば、上記(i)~(v)の各処理は、他の処理の完了を待たずに(換言すれば、非同期に)実行されてもよく、少なくとも1つの処理が並行して実行されてもよい。また、上記(i)~(v)の各処理は、互いに異なるドライブ41を利用して、互いに異なるPV43に対して、並行して実行されてよい。
(i)リストLonに基づくLV22の書込処理
書込処理部33のLon処理部33aは、リストLonに基づき、リストLonの登録順(換言すればLVサイズ順)に、書込処理を行なう。
例えば、Lon処理部33aは、リストLonのサイズ順に、順次、ディスクアレイ装置21からテープライブラリ装置4のPV43にLV22を書き込み、LV22の書き込み完了後、書き込みを行なった対象のLV22のエントリをリストLonから削除する。
なお、リストLonには、並行して実行されるリコール処理が完了したLV22のエントリが適宜追加(登録)される。このため、書込処理部33は、LV22のエントリがリストLonの末尾に登録される場合には、書込処理を実行する前に、リストLonをサイズ順にソートし直してもよい。
ここで、Lon処理部33aは、書き込みを行なっているLV22のカテゴリを、書込モード情報318に設定してよい。例えば、Lon処理部33aは、書込対象のLV22のカテゴリが直前に書込処理を行なったLV22から変化した場合に、書込モード情報318を変更してよい。
図13は、書込モード情報318の一例を示す図である。書込モード情報318には、書込モードに応じた値が設定されてよい。書込モードは、書込処理を行なっているLV22のカテゴリを示す情報であり、例えば、大サイズは「3」、中サイズは「2」、小サイズは「1」、リストLonに基づく書込処理が完了した場合は「0」、が設定されてよい。
上述のように、リストLonは、LVサイズに応じてソートされている。このため、例えば、図14に示すように、リストLonのサイズ順に(リストの先頭から順に)LV22の書込処理を行なうと、同一カテゴリに属するLV22のグループ順に、リストLonの書込処理用のPV43への書込処理が進行する。
このように、書込モード情報318は、書込処理実行中のカテゴリを示す、換言すれば、書込処理のフェーズを示す情報であるといえる。
なお、Lon処理部33aは、テープライブラリ装置4に対して、PV43を書き込むための制御を行なってよい。例えば、Lon処理部33aは、書込処理を行なう前に、テープライブラリ装置4のコントローラ44に対して、ドライブ41の確保、及び、リストLonの書込対象となるPV43のマウントを指示してよい。また、Lon処理部33aは、書込処理の完了後に、コントローラ44に対して、ドライブ41の解放、及び、書込対象のPV43のアンマウントを指示してよい。
以上のように、Lon処理部33aは、リストLonのソート順に従って、リストLon内のデータを、ディスクアレイ装置21から第1PV43に書き込む制御を行なう第1書込部の一例である。
(ii)リストLoffに基づくLV22のリコール処理
読出処理部34のLoff処理部34aは、リストLoffに基づき、リストLoffの登録順(換言すればLVサイズ順)に、リコール処理を行なう。
例えば、Loff処理部34aは、リストLoffのサイズ順に、順次、テープライブラリ装置4のPV43からディスクアレイ装置21にLV22を読み出す。
ここで、Loff処理部34aは、読み出しを行なっているLV22のカテゴリを、リコールモード情報319に設定してよい。例えば、リコールモード情報319は、リコール対象のLV22のカテゴリが直前にリコール処理を行なったLV22から変化した場合に、リコールモード情報319を変更してよい。
図15は、リコールモード情報319の一例を示す図である。リコールモード情報319には、リコールモードに応じた値が設定されてよい。リコールモードは、リコール処理を行なっているLV22のカテゴリを示す情報であり、例えば、大サイズは「3」、中サイズは「2」、小サイズは「1」、リストLoffに基づくリコール処理が完了した場合は「0」、が設定されてよい。
上述のように、リストLoffは、LVサイズに応じてソートされている。このため、例えば、リストLoffのサイズ順に(リストの先頭から順に)LV22のリコール処理を行なうと、同一カテゴリに属するLV22のグループ順にリコール処理が進行する。
このように、リコールモード情報319は、リコール処理実行中のカテゴリを示す、換言すれば、リコール処理のフェーズを示す情報であるといえる。
なお、書込モード情報318及びリコールモード情報319は、それぞれ、フラグ等の情報として管理されてもよいし、フラグ以外の制御情報として管理されてもよい。また、書込モード情報318及びリコールモード情報319は、個別に又はまとめて、配列、XML、又はDB等の種々の形態でメモリ部31に格納されてよい。
一実施形態に係るLoff処理部34aは、リコール処理完了後のLV22のエントリを、リストLoffから削除するとともに、リストLon、リストL、リストM、及びリストSのうちのいずれかに登録する。
例えば、Loff処理部34aは、LV22ごとのリコール処理完了後、書込モード情報318とリコールモード情報319とを比較し、書込モード情報318の示すカテゴリがリコールモード情報319の示すカテゴリよりも小さいか否かを判定する。換言すれば、Loff処理部34aは、リコール処理に係るLV22のLVサイズが、書込処理に係るLV22のLVサイズよりも大きいか否かを判定する。
書込モード情報318の示すカテゴリがリコールモード情報319の示すカテゴリよりも大きい又は同じ場合、換言すれば、リコール処理に係るLVサイズが書込処理に係るLVサイズ以下の場合、登録先リストは、リストLonとなる。
この場合、図16に例示するように、Loff処理部34aは、リストLoffのリコール処理用のPV43からのリコールが完了したLV22のエントリを、リストLoffからリストLonへ移動させる。
一方、書込モード情報318の示すカテゴリがリコールモード情報319の示すカテゴリよりも小さい場合、換言すれば、リコール処理に係るLVサイズが書込処理に係るLVサイズよりも大きい場合、登録先リストは、リストL、M又はSとなる。
この場合、図17に例示するように、Loff処理部34aは、リコール処理用のPV43からのリコールが完了したLV22のエントリを、リストLoffから、リコールが完了したLV22のカテゴリに基づき、リストL、M又はSへ移動させる。
LV22のエントリの追加先は、図18に例示するように、リコール対象のLV22のカテゴリ(換言すればLVサイズ)に対応するリストL、M又はSとなる。
例えば、Loff処理部34aは、大サイズのLV22のリコール処理中の場合、且つ、中サイズ又は小サイズのLV22の書込処理中の場合又はリストLonの書込処理が完了した場合、リコール処理が完了した大サイズのLV22を、リストLに登録する。
また、Loff処理部34aは、中サイズのLV22のリコール処理中の場合、且つ、小サイズのLV22の書込処理中の場合又はリストLonの書込処理が完了した場合、リコール処理が完了した中サイズのLV22を、リストMに登録する。
さらに、Loff処理部34aは、小サイズのLV22のリコール処理中の場合、且つ、リストLonの書込処理が完了した場合、リコール処理が完了した小サイズのLV22を、リストSに登録する。
図19~図21は、それぞれ、リストL、M及びSの一例を示す図である。リストL、M及びSは、リストグループリストの一例である。図19~図21に例示するように、リストL、M及びSは、それぞれ、リストLoffのうちの、Loff処理部34aにより抽出された、リストL、M又はSに対応するカテゴリ(“大”、“中”又は“小”)であるLV22のエントリを含んでよい。なお、図19~図21に示すように、リストL、M、及びSには、それぞれカテゴリ別のLV22が登録されているため、リストLoffの「カテゴリ」の項目は省略されてよい。
Loff処理部34aは、上述したリコール処理を、リストLoffに登録された全てのLV22について実行するまで、LV22単位で実行する。
ここで、大サイズのLV22のリコール処理が完了したときに、書込処理では中サイズ又は小サイズのLV22の書き込みが実行中である場合を想定する。この場合、リストLonには、中サイズ又は小サイズのLV22に続いて、リコール処理が完了した大サイズのLV22が追加される。このため、当該大サイズのLV22は、ドライブ41のスピードマッチング機能によって、不適切な速度(例えば中速度又は低速度)で処理され、スループットが低下することになる。
そこで、一実施形態に係るLoff処理部34aは、リストLoffのリコール処理の対象LVサイズが書込処理の対象LVサイズよりも大きい場合、処理完了後のLV22を、リストLonではなくリストL、M又はSに追加するのである。
なお、リストLon及びLoffのソート順が昇順の場合、Loff処理部34aは、リストLoffのリコール処理の対象LVサイズが書込処理の対象LVサイズよりも小さい場合に、処理完了後のLV22をリストL、M又はSに追加してよい。
このように、Loff処理部34aは、読み出したデータの属する第1グループの第1サイズ範囲と、書き込み中のデータの属する第2グループの第2サイズ範囲とに応じて、読み出したデータの情報を、リストLoffから、当該データの属するグループに対応するリストL、M又はSに移動する移動部の一例である。例えば、移動部としてのLoff処理部34aは、第1サイズ範囲が第2サイズ範囲よりもソート順で前となる(換言すれば、ソート順とは逆順方向の)サイズ範囲である場合に、リストL、M又はSへの移動を行なってよい。この場合、Loff処理部34aは、第1サイズ範囲が、第2サイズ範囲と同じサイズ範囲である場合、又は、第2サイズ範囲よりもソート順で後となる(換言すれば、ソート順方向の)サイズ範囲である場合、読み出したデータの情報をリストLonに登録してよい。
これにより、LVサイズごとに、オンキャッシュ状態のLV22の割合とオフキャッシュ状態のLV22の割合とのバラツキがある場合においても、PV43に対するLV22の書込処理時間を短縮することが可能となる。換言すれば、書込対象のLV22のデータをPV43に書き込む書込処理を効率的に実施することが可能となる。
なお、Loff処理部34aは、リストLoffから移動するLV22のエントリを、リストLon、L、M又はSの末尾に登録してもよい。或いは、Loff処理部34aは、移動するエントリを、リストLon、L、M又はSにおいてサイズ順となる位置に登録してもよいし、末尾への登録後にリストLon、L、M又はSをサイズ順にソートし直してもよい。
また、Loff処理部34aは、テープライブラリ装置4に対して、PV43からリコールするための制御を行なってよい。例えば、Loff処理部34aは、リコール処理を行なう前に、テープライブラリ装置4のコントローラ44に対して、ドライブ41の確保、及び、リストLoffのリコール対象となるPV43のマウントを指示してよい。また、読出処理部34は、リコール処理の完了後に、コントローラ44に対して、ドライブ41の解放、及び、リコール対象のPV43のアンマウントを指示してよい。
以上のように、Loff処理部34aは、リストLoffのソート順に従って、リストLoff内のデータを、当該データを格納する格納元PV43からディスクアレイ装置21に読み出す制御を行なう読出部の一例である。
(iii)~(v)リストL、M、Sに基づくLV22の書込処理
書込処理部33のLMS処理部33bは、リストL、M、及びSに基づき、リストL、M、Sの登録順(換言すればLVサイズ順)に、書込処理を行なう。
例えば、Lon処理部33aは、リストL、M、Sの各々について、サイズ順に、順次、ディスクアレイ装置21からPV43にLV22を書き込み、LV22の書き込み完了後、書き込みを行なった対象のLV22のエントリをリストL、M、Sから削除する。
なお、リストL、M、Sには、それぞれ、並行して実行されるリコール処理が完了したLV22のエントリが適宜追加(登録)される。このため、書込処理部33は、LV22のエントリがリストL、M又はSの末尾に登録される場合には、書込処理を実行する前に、リストL、M又はSをサイズ順にソートし直してもよい。
ここで、LMS処理部33bは、分類処理部32によりリストLon及びLoffが作成されると、リストL、M及びSの各々について、以下の実行条件の判定(監視)を行ない、実行条件を満たすリストL、M又はSに基づき、書込処理の実行を開始する。
実行条件としては、例えば、書込処理未実行のリストL、M又はSに所属するLV22のLVサイズの合計値が、リストLoffにおけるリストL、M又はSに対応するカテゴリのLVサイズの合計値よりも大きくなった場合が挙げられる。
一例として、LMS処理部33bは、リストLのLV22について、リストLのLVサイズの合計値がリストLoffのうちのカテゴリが“大”のLVサイズの合計値よりも大きくなった場合に、リストLに基づく書込処理を開始する。
また、LMS処理部33bは、リストMのLV22について、リストMのLVサイズの合計値がリストLoffのうちのカテゴリが“中”のLVサイズの合計値よりも大きくなった場合に、リストMに基づく書込処理を開始する。
さらに、LMS処理部33bは、リストSのLV22について、リストSのLVサイズの合計値がリストLoffのうちのカテゴリが“小”のLVサイズの合計値よりも大きくなった場合に、リストSに基づく書込処理を開始する。
なお、LMS処理部33bは、実行条件を満たさないリストL、M又はSについては、当該リストL、M又はS内のデータのPV43への書き込みを抑止する。
LMS処理部33bは、図22に例示するように、上述したリストL、M又はS別の書込処理を、リストL、M又はSに登録された全てのLV22について実行するまで、LV22単位で実行する。
なお、LMS処理部33bは、リストL、M及びSにそれぞれ対応するPV43にデータを書き込むため、PV43間でのカテゴリの混在が回避される。
また、上述した実行条件により、リストL、M又はSの書込処理が開始した場合、当該リストL、M又はSの全ての書込処理が完了する前に、リストLoffのリコール処理が終了することが期待できる。従って、オンキャッシュ処理中(PV43からLV22のデータの読出処理中)に、リストL、M又はSの書込対象のPV43への書込処理において、オンキャッシュ処理待ちによる書込処理の停滞が発生することを抑制できる。
LMS処理部33bは、リストL、M又はS別の書込処理を行なう前に、テープライブラリ装置4のコントローラ44に対して、ドライブ41の確保、及び、リストL、M又はSの書込対象となるPV43のマウントを指示してよい。また、LMS処理部33bは、リストL、M又はSの書込処理の完了後に、コントローラ44に対して、ドライブ41の解放、及び、書込対象のPV43のアンマウントを指示してよい。
以上のように、一実施形態に係る仮想テープ装置2は、オフキャッシュ状態のLV22のリコール処理と、オンキャッシュ状態のLV22の書込処理とを並行して実行する。また、オンキャッシュ状態の書込処理は、LVサイズが緩やかな変化となるリストLon、並びに、LVサイズが同一のカテゴリ内に制限されるリストL、M、及びS、のそれぞれに基づき、並行して実行される。
このように、仮想テープ装置2は、複数の書込処理とリコール処理とを並列で実行させることにより、ドライブ41等のリソースの有効活用や、書込処理及びリコール処理の最適化を行なうことができる。これにより、複数の書込処理及びリコール処理におけるそれぞれのドライブ41の書込速度又は読出速度を安定させることができる。従って、複数のPV43に対する、リコール処理を含む書込処理における書込処理時間の短縮を可能とすることができ、スループットを向上させることができる。
例えば、マイグレーション処理の場合は、ディスクアレイ装置21にのみLV22が存在し、テープライブラリ装置4のPV43には存在しないマイグレーション未完了の状態、すなわちダーティ(Dirty)状態をより速く解消することができる。これにより、データロストのリスクを減少させることができる。
以上のように、LMS処理部33bは、リストL、M又はS内のデータを、リストL、M又はSごとに、第1PV43とは異なる第2PV43に書き込む第2書込部の一例である。
〔1-5〕動作例
次に、図23~図30を参照して、上述の如く構成された仮想テープシステム1(制御サーバ3)の動作例を説明する。
〔1-5-1〕全体の動作例
図23に例示するように、制御サーバ3の分類処理部32は、ホスト装置5から書込指示を受信すると、マスタLVリスト311に基づき書込対象LVリスト312を生成し、分類処理を実行する(ステップS1)。
書込処理部33のLon処理部33aは、分類処理で生成されたリストLonに基づき、書込処理Wを開始する(ステップS2)。
読出処理部34のLoff処理部34aは、分類処理で生成されたリストLoffに基づき、リコール処理Rを開始する(ステップS3)。
書込処理部33のLMS処理部33bは、リコール処理において生成されるリストLのLVサイズ合計値がリストLoffの“大”カテゴリのLVサイズ合計値以上、且つ、ステップS5が未実行、という実行条件を満たすか否かを判定する(ステップS4)。
実行条件を満たすと判定した場合(ステップS4でYes)、LMS処理部33bは、リストLに基づく書込処理WLを開始し(ステップS5)、処理がステップS6に移行する。なお、実行条件を満たさないと判定した場合(ステップS4でNo)、処理がステップS6に移行する。
ステップS6において、LMS処理部33bは、リコール処理において生成されるリストMのLVサイズ合計値がリストLoffの“中”カテゴリのLVサイズ合計値以上、且つ、ステップS7が未実行、という実行条件を満たすか否かを判定する。
実行条件を満たすと判定した場合(ステップS6でYes)、LMS処理部33bは、リストMに基づく書込処理WMを開始し(ステップS7)、処理がステップS8に移行する。なお、実行条件を満たさないと判定した場合(ステップS6でNo)、処理がステップS8に移行する。
ステップS8において、LMS処理部33bは、リコール処理において生成されるリストSのLVサイズ合計値がリストLoffの“小”カテゴリのLVサイズ合計値以上、且つ、ステップS9が未実行、という実行条件を満たすか否かを判定する。
実行条件を満たすと判定した場合(ステップS8でYes)、LMS処理部33bは、リストSに基づく書込処理WSを開始し(ステップS9)、処理がステップS10に移行する。なお、実行条件を満たさないと判定した場合(ステップS8でNo)、処理がステップS10に移行する。
ステップS10において、LMS処理部33bは、処理W及びRがいずれも完了し、且つ、処理WL、WM及びWSがいずれも非実行中(すなわち、未実行又は完了済)であり、且つ、リストL、M及びSがいずれも空か否かを判定する。少なくとも1つの条件を満たさないと判定した場合(ステップS10でNo)、処理がステップS4に移行する。全ての条件を満たすと判定した場合(ステップS10でYes)、処理が終了する。
なお、ステップS2、ステップS3、ステップS4及びS5、ステップS6及びS7、並びに、ステップS8及びS9の実行順序は、図23に示す順序に限定されるものではない。また、これらの処理が、複数のプロセスにより並行して実行されてもよい。
〔1-5-2〕LV分類処理の動作例
図24に例示するように、図23のステップS1の分類処理において、分類処理部32は、リストLwに含まれる書込対象のLV22にオフキャッシュ状態のLV22があるか否かを判定する(ステップS11)。
オフキャッシュ状態のLV22があると判定した場合(ステップS11でYes)、分類処理部32は、オフキャッシュ状態のLV22を抽出し(ステップS12)、リストLoffに抽出した全てのLV22を挿入する(ステップS13)。また、分類処理部32は、リストLoffの全てのLV22をLVサイズに基づくカテゴリに分類し(ステップS14)、処理がステップS15に移行する。なお、オフキャッシュ状態のLV22がないと判定した場合(ステップS11でNo)、処理がステップS15に移行する。
ステップS15において、分類処理部32は、リストLwに含まれる書込対象のLV22からオンキャッシュ状態のLV22を抽出する。また、分類処理部32は、リストLonに抽出したオンキャッシュ状態の全てのLV22を挿入し(ステップS16)、リストLonの全てのLV22をLVサイズに基づくカテゴリに分類し(ステップS17)、処理が終了する。
〔1-5-3〕リストLonに基づく書込処理の動作例
図25に例示するように、図23のステップS2で開始した書込処理Wにおいて、Lon処理部33aは、書込モード情報318の書込モードを“大”(例えば値“3”)に設定する(ステップS21)。
Lon処理部33aは、処理中の書込モードのカテゴリでリストLonに存在する最大サイズのLV22をPV43に書き込み(ステップS22)、書き込みを行なった対象LV22をリストLonから削除する(ステップS23)。
Lon処理部33aは、処理中の書込モードのカテゴリに属するLV22がリストLonにあるか否かを判定する(ステップS24)。リストLonにあると判定した場合(ステップS24でYes)、処理がステップS22に移行する。
一方、リストLonにないと判定した場合(ステップS24でNo)、Lon処理部33aは、書込モード情報318を参照し、処理中の書込モードが“大”か否かを判定する(ステップS25)。書込モードが“大”であると判定した場合(ステップS25でYes)、Lon処理部33aは、書込モード情報318に対して、書込モードを“中”(例えば値“2”)に設定し(ステップS26)、処理がステップS22に移行する。
書込モードが“大”ではないと判定した場合(ステップS25でNo)、Lon処理部33aは、処理中の書込モードが“中”か否かを判定する(ステップS27)。書込モードが“中”であると判定した場合(ステップS27でYes)、Lon処理部33aは、書込モード情報318に対して、書込モードを“小”(例えば値“1”)に設定し(ステップS28)、処理がステップS22に移行する。
書込モードが“中”ではないと判定した場合(ステップS27でNo)、Lon処理部33aは、書込モード情報318に対して、書込モードを“完了”(例えば値“0”)に設定し(ステップS29)、処理が終了する。
〔1-5-4〕リストLoffに基づくリコール処理の動作例
図26に例示するように、図23のステップS3で開始したリコール処理Rにおいて、Loff処理部34aは、リコールモード情報319のリコールモードを“大”(例えば値“3”)に設定する(ステップS31)。
Loff処理部34aは、処理中のリコールモードのカテゴリでリストLoffに存在する最大サイズのLV22をリコールする(ステップS32)。
リコール後、Loff処理部34aは、書込モード情報318及びリコールモード情報319を参照し、処理中の書込モードがリコールモードよりも小さいか否かを判定する(ステップS33)。
小さいと判定した場合(ステップS33でYes)、Loff処理部34aは、処理中のリコールモードが“大”か否かを判定する(ステップS34)。リコールモードが“大”であると判定した場合(ステップS34でYes)、Loff処理部34aは、リコールを行なった対象LV22をリストLに追加し(ステップS35)、処理がステップS41に移行する。
リコールモードが“大”ではないと判定した場合(ステップS34でNo)、Loff処理部34aは、処理中のリコールモードが“中”か否かを判定する(ステップS36)。リコールモードが“中”であると判定した場合(ステップS36でYes)、Loff処理部34aは、対象LV22をリストMに追加し(ステップS37)、処理がステップS41に移行する。
リコールモードが“中”ではないと判定した場合(ステップS36でNo)、Loff処理部34aは、対象LV22をリストSに追加し(ステップS38)、処理がステップS41に移行する。
ステップS33において、処理中の書込モードがリコールモード以上であると判定した場合(ステップS33でNo)、Loff処理部34aは、対象LV22をリストLonに追加する(ステップS39)。また、Loff処理部34aは、リストLonに対して、対象LV22をLVサイズに基づくカテゴリに分類する(ステップS40)。
次いで、Loff処理部34aは、対象LV22をリストLoffから削除し(ステップS41)、処理中のリコールモードのカテゴリに属するLV22がリストLoffにあるか否かを判定する(ステップS42)。リストLoffにあると判定した場合(ステップS42でYes)、処理がステップS32に移行する。
一方、リストLoffにないと判定した場合(ステップS42でNo)、図27に例示するように、Loff処理部34aは、処理中のリコールモードが“大”か否かを判定する(ステップS43)。リコールモードが“大”であると判定した場合(ステップS43でYes)、Loff処理部34aは、リコールモード情報319に対して、リコールモードを“中”(例えば値“2”)に設定し(ステップS44)、処理が図26のステップS32に移行する。
リコールモードが“大”ではないと判定した場合(ステップS43でNo)、Loff処理部34aは、処理中のリコールモードが“中”か否かを判定する(ステップS45)。リコールモードが“中”であると判定した場合(ステップS45でYes)、Loff処理部34aは、リコールモード情報319に対して、リコールモードを“小”(例えば値“1”)に設定し(ステップS46)、処理がステップS32に移行する。
リコールモードが“中”ではないと判定した場合(ステップS45でNo)、Loff処理部34aは、リコールモード情報319に対して、リコールモードを“完了”(例えば値“0”)に設定し(ステップS47)、処理が終了する。
〔1-5-5〕リストLに基づく書込処理の動作例
図28に例示するように、図23のステップS5で開始した書込処理WLにおいて、LMS処理部33bは、リストLに存在する最大サイズのLV22をPV43に書き込み(ステップS51)、対象LV22をリストLから削除する(ステップS52)。
LMS処理部33bは、リストLにLV22があるか否かを判定し(ステップS53)、あると判定した場合(ステップS53でYes)、処理がステップS51に移行する。一方、LV22がないと判定した場合(ステップS53でNo)、処理が終了する。
〔1-5-6〕リストMに基づく書込処理の動作例
図29に例示するように、図23のステップS7で開始した書込処理WMにおいて、LMS処理部33bは、リストMに存在する最大サイズのLV22をPV43に書き込み(ステップS61)、対象LV22をリストMから削除する(ステップS62)。
LMS処理部33bは、リストMにLV22があるか否かを判定し(ステップS63)、あると判定した場合(ステップS63でYes)、処理がステップS61に移行する。一方、LV22がないと判定した場合(ステップS63でNo)、処理が終了する。
〔1-5-7〕リストSに基づく書込処理の動作例
図30に例示するように、図23のステップS9で開始した書込処理WSにおいて、LMS処理部33bは、リストSに存在する最大サイズのLV22をPV43に書き込み(ステップS71)、対象LV22をリストSから削除する(ステップS72)。
LMS処理部33bは、リストSにLV22があるか否かを判定し(ステップS73)、あると判定した場合(ステップS73でYes)、処理がステップS71に移行する。一方、LV22がないと判定した場合(ステップS73でNo)、処理が終了する。
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図7に示す制御サーバ3の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
また、分類処理部32は、書込指示に応じて、書込対象LVリスト312を作成するものとして説明したが、これに限定されるものではない。例えば、分類処理部32は、書込指示に含まれる書込対象のLV22のリストと、マスタLVリスト311とに基づき、リストLon及びLoffを作成してもよく、この場合、書込対象LVリスト312の作成は省略されてもよい。
さらに、分類処理部32、書込処理部33及び読出処理部34は、LV22の各リスト312~317を、LVサイズの降順にソートするものとして説明したが、これに限定されるものではない。LVサイズの昇順にソートする場合、リストLon及びLoffに基づく処理、換言すれば、書込モード及びリコールモードの遷移は、カテゴリが“小”、“中”、“大”、“完了”の順で行なわれてよい。
また、カテゴリは、“大”、“中”、“小”の3つであるものとしたが、これに限定されるものではなく、2つ、又は、4つ以上であってもよい。
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
可搬型の記録媒体へ書き込まれる書込対象の複数のデータのうち、記憶装置に記憶されている一以上のデータのリストをデータサイズに基づきソートした第1リストと、前記記憶装置に記憶されていない二以上のデータのリストをデータサイズに基づきソートした第2リストと、を生成する生成部と、
前記複数のデータをデータサイズに基づき複数のサイズ範囲のグループに分類する分類部と、
前記第1リストのソート順に従って、前記第1リスト内のデータを、前記記憶装置から可搬型の第1記録媒体に書き込む制御を行なう第1書込部と、
前記第2リストのソート順に従って、前記第2リスト内のデータを、当該データを格納する格納元記録媒体から前記記憶装置に読み出す制御を行なう読出部と、
前記読出部により読み出されたデータの属する第1グループの第1サイズ範囲と、前記第1書込部による書き込み中のデータの属する第2グループの第2サイズ範囲とに応じて、前記読み出されたデータの情報を、前記第2リストから前記第1グループに対応するグループリストに移動する移動部と、
前記グループリスト内のデータを、前記グループリストごとに、前記第1記録媒体とは異なる可搬型の第2記録媒体に書き込む第2書込部と、
をそなえる、ストレージ制御装置。
(付記2)
前記第1リストのソート順と前記第2リストのソート順とが同じソート順であり、
前記移動部は、前記第1サイズ範囲が前記第2サイズ範囲よりも前記ソート順で前となるサイズ範囲である場合、前記読み出されたデータの情報を、前記第2リストから前記第1グループに対応するグループリストに移動する、
付記1に記載のストレージ制御装置。
(付記3)
前記移動部は、前記第1サイズ範囲が、前記第2サイズ範囲と同じサイズ範囲である場合、又は、前記第2サイズ範囲よりも前記ソート順で後となるサイズ範囲である場合、前記読み出されたデータの情報を前記第1リストに登録する、
付記2に記載のストレージ制御装置。
(付記4)
前記第2書込部は、前記グループリスト内のデータの合計サイズが、前記グループリストに対応するグループに属する前記第2リスト内のデータの合計サイズ以上の場合に、前記グループリスト内のデータを、前記第2記録媒体に書き込む、
付記1~付記3のいずれか1項に記載のストレージ制御装置。
(付記5)
前記第2書込部は、前記グループリスト内のデータの合計サイズが、前記グループリストに対応するグループに属する前記第2リスト内のデータの合計サイズよりも小さい場合、前記グループリスト内のデータの前記第2記録媒体への書き込みを抑止する、
付記1~付記4のいずれか1項に記載のストレージ制御装置。
(付記6)
前記第1リスト及び前記第2リストの各々のソート順は、データサイズが大から小へと変動する順、又は、データサイズが小から大へと変動する順、である、付記1~付記5のいずれか1項に記載のストレージ制御装置。
(付記7)
前記第1書込部、前記第2書込部、及び、前記読出部は、互いに異なる記録媒体に対して、並行して処理を行なう、
付記1~付記6のいずれか1項に記載のストレージ制御装置。
(付記8)
前記第1書込部及び前記第2書込部は、
複数のアクセス部と、
前記複数のアクセス部のうちの書込データを可搬型の記録媒体に書き込むアクセス部の書込速度を、当該書込データのサイズに応じて制御する制御部と、
を有するストレージ装置の前記制御部に対して、互いに異なるアクセス部を利用した前記第1記録媒体及び前記第2記録媒体へのデータの書き込みを指示する、
付記1~付記7のいずれか1項に記載のストレージ制御装置。
(付記9)
コンピュータが、
可搬型の記録媒体へ書き込まれる書込対象の複数のデータのうち、記憶装置に記憶されている一以上のデータのリストをデータサイズに基づきソートした第1リストと、前記記憶装置に記憶されていない二以上のデータのリストをデータサイズに基づきソートした第2リストと、を生成し、
前記複数のデータをデータサイズに基づき複数のサイズ範囲のグループに分類し、
前記第1リストのソート順に従って、前記第1リスト内のデータを、前記記憶装置から可搬型の第1記録媒体に書き込む制御を行ない、
前記第2リストのソート順に従って、前記第2リスト内のデータを、当該データを格納する格納元記録媒体から前記記憶装置に読み出す制御を行ない、
読み出されたデータの属する第1グループの第1サイズ範囲と、書き込み中のデータの属する第2グループの第2サイズ範囲とに応じて、前記読み出されたデータの情報を、前記第2リストから前記第1グループに対応するグループリストに移動し、
前記グループリスト内のデータを、前記グループリストごとに、前記第1記録媒体とは異なる可搬型の第2記録媒体に書き込む、
ストレージ制御方法。
(付記10)
可搬型の記録媒体へ書き込まれる書込対象の複数のデータのうち、記憶装置に記憶されている一以上のデータのリストをデータサイズに基づきソートした第1リストと、前記記憶装置に記憶されていない二以上のデータのリストをデータサイズに基づきソートした第2リストと、を生成し、
前記複数のデータをデータサイズに基づき複数のサイズ範囲のグループに分類し、
前記第1リストのソート順に従って、前記第1リスト内のデータを、前記記憶装置から可搬型の第1記録媒体に書き込む制御を行ない、
前記第2リストのソート順に従って、前記第2リスト内のデータを、当該データを格納する格納元記録媒体から前記記憶装置に読み出す制御を行ない、
読み出されたデータの属する第1グループの第1サイズ範囲と、書き込み中のデータの属する第2グループの第2サイズ範囲とに応じて、前記読み出されたデータの情報を、前記第2リストから前記第1グループに対応するグループリストに移動し、
前記グループリスト内のデータを、前記グループリストごとに、前記第1記録媒体とは異なる可搬型の第2記録媒体に書き込む、
処理をコンピュータに実行させる、ストレージ制御プログラム。