以下、本発明を実施するための形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
図1は、本発明の実施の形態において使用可能な仮想テープ・システム100の代表的なハードウェア構成の一例を示す。本実施形態に係る仮想テープ・システム100は、少なくとも1つのホスト装置105、少なくとも1つの仮想テープ・サーバ(Virtual Tape Server、VTS)110、及びライブラリ・システム115を含む。
各ホスト装置105a、bは、パーソナル・コンピュータ、ワークステーション、サーバ、メインフレームのような、当該技術分野において周知のいずれかの計算機とすることができる。また各ホスト装置105a、bは、当該技術分野において周知のいずれかのオペレーティング・システムを含むことができる。ホスト装置105とVTS110の間の接続120は、ストレージ・エリア・ネットワーク(SAN)又は、他の好適な通信チャネル、例えばIBM(商標)メインフレーム・コンピュータで使用されるエンタープライズ・システム接続(ESCOM)(商標)チャネルを使用できる。
VTS110は、当該技術分野において周知のいずれかのサーバ計算機であり、当該技術分野において周知のいずれかのオペレーティング・システムを含む。例えば、本発明の特定の実施において、VTS110は、IBM RS/6000(登録商標)システム、IBM Pシリーズ(IBM Corporationの商標)を含む1つ又は複数のコンピュータにおいて実施することができ、IBM AIX(IBM Corporationの商標)オペレーティング・システムを含むことができる。
VTS110はまた、ストレージの使用を最適化するストレージ・マネージャのようなアプリケーションを含むことができる。ストレージ・マネージャは、独立のアプリケーションとして実装することも、又は複数の他のアプリケーションの一部として実装することもできる。特定の実施においてストレージ・マネージャは、IBM Magstar(IBM Corporationの商標)仮想テープ・サーバ及びIBM ADSTAR(IBM Corporationの商標)分散型管理(ADSM)ソフトウェア又はTivoli(IBM Corporationの商標)ストレージ・マネージャのような自動データ・ストレージ・ライブラリを使用するためのソフトウェアを含むことができる。ストレージ・マネージャは、ホスト装置105、後述するVTS110内のキャッシュ、及びライブラリ・システム115間のデータ移動作業を行うことができる。
ライブラリ・システム115は、Magstar(IBM Corporationの商標)3494テープ・ライブラリのようなテープ・ライブラリ、又は、当該技術分野において周知の他のいずれかの自動データ・ストレージ・ライブラリ・システムとすることができる。特定の実施において、ライブラリ・システム115は、ライブラリ・マネージャ130、テープ・ドライブ・ユニットとすることができる1以上のテープ・ドライブ装置135a、b、c、アクセス機構140、及び複数のテープ・カートリッジ145a、…、nを含む。計算機によって実現されるライブラリ・マネージャ130は、テープ・ドライブ装置135及びアクセス機構140と相互接続され、これらの動作を制御する。
図1には、3つのテープ・ドライブ装置135a、b、cが示されている。本発明は1つ又は複数のテープ・ドライブ装置135を含む仮想テープ・システム100の下において動作可能である。図1において、ライブラリ・マネージャ130と、テープ・ドライブ装置135及びアクセス機構140との相互接続は、ライブラリ・マネージャ130が、テープ・ドライブ装置135或いはアクセス機構140又はその両方に制御信号を送信及び受信するためのものであることを示すため、破線で示している。その一方で、VTS110とテープ・ドライブ装置135との間の相互接続は、格納又は検索されるデータを送信及び受信するためのものであることから、実線で示している。
VTS110とテープ・ドライブ装置135との間の相互接続125は、SAN、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、又はインターネットを介して行うことができる。又は、VTS110とテープ・ドライブ装置135は、ポイント・ツー・ポイント又はマルチドロップ・バス接続、例えば、SmallComputer Storage Interface(SCSI)インター・フェースを介した直接接続を含む、他の好適なタイプのネットワークを介して接続してもよい。
アクセス機構140は、選択されたテープ・カートリッジ145を指定されたテープ・ドライブ装置135へ移送するように構成された、ロボット・アーム又は他の機械的な装置とすることができる。アクセス機構140は、通常はグリッパと、グリッパ上に実装されたバーコード・スキャナまたは同様の読み取りシステムを含む。バーコード・スキャナはテープ・カートリッジ145に貼り付けられたカートリッジ・ラベル上に印刷されたボリュームの通し番号を読み取るために使用される。
オペレータ・インタフェース150が、ライブラリ・マネージャ130に接続される。オペレータ・インタフェース150は、ライブラリ・マネージャ130と通信する計算機とすることができる。ユーザは、ホスト装置105とは独立にライブラリ・システム115のオペレーティング・パラメータを制御することができる。
ホスト装置105は、VTS110とテープ操作を取り交わす。テープ操作の実行は、後述するVTS110内のキャッシュ内に格納された論理ボリュームからデータを検索するか、又は、該論理ボリュームにデータを格納するというものである。VTS110は、キャッシュ内の論理ボリュームを自動的に事前マイグレーション(オフロード)する。特定の実施においては、最長時間未使用の論理ボリュームが、キャッシュからライブラリ・システム115内のテープ・カートリッジ145へ転送される。ホスト装置105が、キャッシュ内にはない論理ボリュームを必要とする場合、VTS110のストレージ・マネージャは、要求される論理ボリュームを含むテープ・カートリッジ145を適当なテープ・ドライブ装置135にマウントするよう、ライブラリ・システム115、即ちライブラリ・マネージャ130に命令する。要求されたデータは、VTS110のキャッシュ内の論理ボリュームとして、上記テープ・カートリッジ145から呼び戻されコピーされる。
図2は、図1に示すVTS110の一実施形態を示す概略ブロック図である。VTS110は、バス、プロセッサ、メモリ、その他を備えた計算機によって実現できる。しかしながらこれらの要素は、本発明に関するVTS110の様々な実行可能モジュール及びデータ・ブロックをより明確に示すために、図2からは省略されている。またVTS110の実装は、当分野で知られた他の実行可能モジュール及びデータ・ブロックが存在してもよいが、本発明に不可欠な要素に焦点を当てるためにそのような要素は図2では省略している。
図2に示されるように、VTS110は、複数の仮想テープ・ドライブ200a、…m、ファイル・システム・マネージャ205、少なくとも1つの直接アクセス記憶装置(Direct Access Storage Device、DASD)キャッシュ210、ストレージ・マネージャ215、及びキュー220を含む。
DASDキャッシュ210は、ホスト装置105からのデータを論理ボリューム上にファイルの形式で一時的に格納する。一例によれば、DASDキャッシュ210は、RAID5などの独立ドライブの冗長アレイ内に配置構成可能な1つまたは複数のハードディスク・ドライブにより実現される。ホスト装置105からの書き込みコマンド及びデータは、仮想テープ・ドライブ200によって受け取られ、処理された後、ファイルとしてDASDキャッシュ210に書き込まれる。その後適当なタイミングで、ストレージ・マネージャ215は、テープ・カートリッジ145へのファイルのコピーを、ライブラリ・マネージャ130に要求する。その後、更新済み論理ボリュームは、ストレージ・マネージャ215により、DASDキャッシュ210からテープ・ドライブ装置135にマウントされた適切なテープ・カートリッジ145へ転送される。なお、仮想テープ・ドライブ200は、ホスト装置105からの制御コマンドも処理する。
ファイル・システム・マネージャ205は、DASDキャッシュ210内のデータ・ストレージを管理及び調整する。ストレージ・マネージャ215は、ファイル・システム・マネージャ205とテープ・ドライブ装置135との間の通信を制御する。ストレージ・マネージャ215はまた、VTS110とライブラリ・マネージャ130との間の通信も制御する。ホスト装置105が、特定の論理ボリュームを要求すると、仮想テープ・ドライブ200を介して該要求を受け取ったストレージ・マネージャ215は、要求された論理ボリュームがDASDキャッシュ210内にあるか否かを判断する。
DASDキャッシュ210内にない場合、ストレージ・マネージャ215は、要求された論理ボリュームの再呼び出しを、ライブラリ・マネージャ130に要求する。その後テープ・ドライブ装置135からVTS110へ戻された要求された論理ボリュームは、DASDキャッシュ210にコピーされるとともに、仮想テープ・ドライブ200を介してホスト装置105へ返される。ストレージ・マネージャ215は、追加の再呼び出し要求を一時的に入れるためのキュー220を含むことができる。従って、ストレージ・マネージャ215は、テープ・ドライブ装置135を用いてテープ・カートリッジ145から論理ボリュームを再呼び出しするための装置である。
なお、図1に示すライブラリ・マネージャ130は、その内部に、論理ボリューム及び物理ボリュームに関する情報を格納するデータ・ベース(図示しない)を有する。VTS110から命令を受け取ると、ライブラリ・マネージャ130は、そのデータ・ベースを参照して、論理ボリュームのコピーが作成される又は検索されることになるテープ・カートリッジ145を見つけ、該テープ・カートリッジ145をマウントするための命令を、適切なテープ・ドライブ装置135あるいはアクセス機構140またはその両方へ送る。
(第1実施形態)図3は、本発明の第1実施形態に係る、データの再呼び出し順を決定するための装置としてのストレージ・マネージャ300aの機能構成の一例を示す図である。なお、第1実施形態では、図1に示すライブラリ・システム115はテープ・ドライブ装置135を1つのみ含むものとする。第1実施形態に係るストレージ・マネージャ300aは、キュー・テーブルに入れられた全要求の考え得る全実行順の中から、要求が受け付けられてからライブラリ・システム115におけるその処理が完了するまでの待ち時間の平均が最小となる実行順を求め、該実行順に従ってキュー・テーブル内の要求を並び替える。
そのような第1実施形態に係るストレージ・マネージャ300aは、要求受付部305、格納部310、キュー・テーブル315、最小待ち時間決定部320a、並び替え部335を含む。ここで、最小待ち時間決定部320aは、第1待ち時間予測部325及び第1実行順決定部330を含む。
要求受付部305は、ライブラリ・システム115から再呼び出しする必要のあるデータに対するホスト装置105の要求Xを受け付ける。このとき、要求受付部305は、要求Xの受信時刻として現在時刻を取得する。要求受付部305はまた、要求Xを一意に識別するためのコマンドIDを、受け付けた要求に割り当てる。なお、要求受付部305が受け付けるホスト装置105の要求Xは、データの読出し又は書込み要求のいずれかであり得るが、本実施例ではデータの読出し要求について説明する。
ホスト装置105からのデータ読出し要求には、目的のデータを識別するための情報が含まれる。そこで、要求受付部305は、目的のデータの識別情報から、目的のデータが記録されているメディアID、即ちテープ・カートリッジの識別子、テープ・カートリッジ上の読出し開始位置、目的のデータの読出しにかかる実行時間、及びテープ・カートリッジ上の読出し終了位置を決定する。ここで、実行時間は、読出し開始位置から読出し終了位置までテープを移動させるために要する時間を意味する。実行時間を求めるに際しては、例えば、デフォルト設定されている読出し時のテープ速度(例えば8.5m/sec)を利用できる。要求受付部305は、受け付けた要求に関する各種情報を、格納部310へ渡す。
格納部310は、要求受付部305により受け付けられた要求Xをキュー・テーブル315に格納する。図4(a)は、本発明に係るキュー・テーブル315の一例を示す。図4(a)に示すように、本実施例におけるキュー・テーブル315は、コマンドIDフィールド、受信時刻フィールド、メディアIDフィールド、開始位置フィールド、実行時間フィールド、及び終了位置フィールドを含む。格納部310は、要求受付部305から渡された各種情報を、キュー・テーブル315の対応するフィールドにそれぞれ格納する。なお、要求Xは、処理のためにキュー・テーブル315から取り出される際にキュー・テーブル315から削除される。しかしながら、取り出された要求Xの各種情報は、その処理開始時刻とともに、要求Xの処理が完了するまでメモリに保持される。図4(a)では、理解を容易にするため、処理中の要求(コマンド#0)のエントリを含む、開始時刻フィールドを有するキュー・テーブル315を示す。
第1待ち時間予測部325は、キュー・テーブル315への要求Xの格納に応答して、キュー・テーブル315内に格納されている全要求の考え得る全実行順のそれぞれについて、該実行順で処理した場合の各要求についての待ち時間を予測する。ここで、待ち時間とは、要求受付部305による要求Xの受け付けから要求Xのライブラリ・システム115における処理の完了までの時間を意味する。このような要求Xの待ち時間TXは、次の式により表すことができる。
TX=WX(o)+AX(p、n) ―(1)
式(1)において、WX(o)は、要求受付部305において要求Xが受け付けられてから要求Xの処理が開始されるまでの、開始前待ち時間を表す。WX(o)は、キュー・テーブル315に格納されている全要求の処理順に依存する関数である。また、AX(p、n)は、要求Xの処理が開始されてから終了するまでの処理所要時間を表す。AX(p、n)は、直前及び直後に処理される要求に依存する関数である。処理所要時間を表すAX(p、n)はまた、次の式により表すことができる。
AX(p、n)=LX(p)+SX(p)+CX+RX(n)+UX(n)―(2)
LX(p)は、要求Xが対象とするデータを記録するメディア、即ちテープ・カートリッジ145をテープ・ドライブ装置135にロードするのに必要なロード時間を表す。ロード時間は、厳密にはテープ・カートリッジ145の格納場所とテープ・ドライブ装置135の物理的な位置関係に依存すると考えられる。しかし、テープドライブ装置135がテープ・カートリッジ145をアンロードしている間に、アクセス機構140が次に使用するテープ・カートリッジ145をテープドライブ装置135のすぐ傍に移動させるライブラリ・システム115の下では、違いはない。本実施例ではLX(p)は、予め定めたロード時間、例えば10秒とする。但し、要求Xが対象とするデータが、直前に処理される要求と同じテープ・カートリッジ145に記録されている場合、テープ・カートリッジ145をロードする必要はないため、LX(p)は0となる。以上のようにLX(p)は、直前に処理される要求に依存する関数である。
SX(p)は、要求Xが対象とするデータの読出し開始位置にテープを移動させるのに必要な位置合わせ時間を表す。SX(p)は、テープの先頭から要求Xが対象とするデータの読出し開始位置までのテープの長さを、テープの移動速度で割ることにより求められる。テープの移動速度は、デフォルト設定されているテープの移動速度(例えば、10m/sec)を利用できる。但し、要求Xが対象とするデータが、直前に処理される要求と同じテープ・カートリッジ145に記録されている場合、関数SX(p)は、直前の要求のデータの読出し終了位置から、要求Xが対象とするデータの読出し開始位置までのテープの長さを、テープの移動速度で割ることにより求められる。以上のようにSX(p)は、直前に処理される要求に依存する関数である。
CXは、上述した、目的のデータの読出しに実際にかかる実行時間を表す。RX(n)は、目的のデータの読出し終了後に、テープをその先頭まで巻き戻すのに必要な巻き戻し時間を表す。RX(n)は、要求Xが対象とするデータの読出し終了位置からテープの先頭からまでのテープの長さを、テープの移動速度で割ることにより求められる。テープの移動速度は、上述したようにデフォルト設定されているテープの移動速度(例えば、10m/sec)を利用できる。但し、要求Xが対象とするデータが、直後に処理される要求と同じテープ・カートリッジ145に記録されている場合、テープの巻き戻しは必要ないため、RX(n)は0となる。以上のようにRX(p)は、直後に処理される要求に依存する関数である。
最後にUX(n)は、データの読出しが終了したテープ・カートリッジ145を、テープ・ドライブ装置135からアンロードするのに必要なアンロード時間を表す。なお、テープ・ドライブ装置135は、テープ・カートリッジ145をアンロードした後は次の処理を行うことができるため、本実施例におけるアンロード時間は、テープ・カートリッジ145をテープ・ドライブ装置135からもとの格納場所まで移動させるに要する時間を含まないものとする。本実施例では、UX(p)は、予め定めたアンロード時間、例えば20秒とする。但し、要求Xが対象とするデータが、直後に処理される要求と同じテープ・カートリッジ145に記録されている場合、テープ・カートリッジ145をアンロードする必要はないため、UX(p)は0となる。以上のようにUX(p)は、直後に処理される要求に依存する関数である。
ここで、図5(a)及び(b)を参照して、WX(o)が、キュー・テーブル315に格納されている全要求の処理順に依存することを説明する。図5(a)及び(b)では、現在時刻Tcurにおいて要求(コマンド#0)の再呼び出し要求が処理されており、キュー・テーブル315には、要求(コマンド#1)と、時刻Tcurに受け付けられたばかりの要求(コマンド#2)が格納されているものとする。そして、要求(コマンド#1)の実行時間C1は非常に長く、一方要求(コマンド#2)の実行時間C2は非常に短いとする。
図5(a)及び(b)において、時刻TR0、TR1、TR2はそれぞれ、要求(コマンド#0)〜要求(コマンド#2)の要求受付部305における受付時刻を示す。また時刻TS0は、要求(コマンド#0)の処理開始時刻を、時刻TE0、TE1/T’E1、TE2/T’E2はそれぞれ、要求(コマンド#0)〜要求(コマンド#2)の処理終了時刻を示す。なお、理解を容易にするため、要求(コマンド#0)〜要求(コマンド#2)がそれぞれ目的とするデータは、いずれも同じテープ・カートリッジ145に記録されているものとする。
このような状況において、要求受付部305における受付時刻の早い順に要求を処理する場合の各要求の開始前待ち時間W及び処理所要時間Aを示したのが図5(a)である。図5(a)をみると分かるように、要求(コマンド#1)の処理所要時間A1508がその実行時間C1に起因して非常に長いため、要求(コマンド#2)の開始前待ち時間W2510は、その処理所要時間A2512は非常に短いにも関わらず、長くなっている。
一方、要求(コマンド#1)よりも後に受け付けられた要求(コマンド#2)を先に処理した場合の各要求の開始前待ち時間W及び処理所要時間Aを示したのが図5(b)である。この場合、要求(コマンド#2)は、長い実行時間C1を有する要求(コマンド#1)の処理を待つ必要がないため、その開始前待ち時間W2526は、図5(a)における要求2の開始前待ち時間W2510よりも非常に短くなっている。一方要求(コマンド#1)の開始前待ち時間W1530は、5(a)における要求(コマンド#1)の開始前待ち時間W1506よりも長くなっているが、先に処理される要求(コマンド#2)の実行時間C2が非常に短いため、その差はわずかである。結果、要求(コマンド#0)〜要求(コマンド#2)の待ち時間の平均は、図5(a)の場合よりも図5(b)の場合のほうが小さい。このように、要求Xの開始前待ち時間WX(o)は、キュー・テーブル315に格納されている全要求の処理順に依存する。
第1待ち時間予測部325は、上述した式(1)及び(2)を用いて、キュー・テーブル315内に格納された全要求の考え得る全実行順のそれぞれについて、該実行順で処理した場合の各要求の待ち時間を予測する。一例として、第1待ち時間予測部325は、次のようにして各要求の待ち時間を算出する。なお、説明のため、現在要求(コマンド#0)の再呼び出しが処理中であり、キュー・テーブル315には、要求(コマンド#1)〜要求(コマンド#N)までのN個の要求が格納されていると仮定する。すると、全要求の考え得る実行順はN!通り存在する。そこで、N!通りの実行順について、図6(a)に示すような待ち時間算出テーブルを順に作成する。
図6(a)に示す複数の待ち時間算出テーブルの各々は、コマンドIDフィールド、受信時刻フィールド、開始時刻フィールド、処理所要時間フィールド、完了時刻フィールド、待ち時間フィールドを有する。ここである1つの実行順Dについて、待ち時間算出テーブルの作成方法を説明する。実行順Dの待ち時間算出テーブルを完成させるため、まず、実行順Dに従って順に、各要求のコマンドIDと受信時刻とを待ち時間算出テーブルに登録する。ここで、登録する要求は現在処理中の要求(コマンド#0)も含む。但し、どの実行順の待ち時間算出テーブルについても、要求(コマンド#0)は実行順0として待ち時間算出テーブルの最初に登録する。
次に、上述した式(2)を用いて、実行順Dに従って順に各要求の処理所要時間を算出し、算出した処理所要時間を待ち時間算出テーブルに登録する。なお、任意の要求Xの処理所要時間AX(p、n)は、その前後に実行される要求が定まれば、キュー・テーブル315内の値を使用して、上記式(2)により求めることができることに留意されたい。但し、要求(コマンド#0)の直前に処理された要求のメディアIDと読出し終了位置は、常にメモリに一時的に保持しておくものとし、要求(コマンド#0)の処理所要時間AX(p、n)を求める際に参照するものとする。
そして次に、キュー・テーブル315から要求(コマンド#0)の開始時刻TS0を読み出して待ち時間算出テーブルに登録する。また、要求0の開始時刻TS0に要求(コマンド#0)の処理所要時間A0を足し合わせることにより、要求0の完了時刻TE0を求める。最終的に要求(コマンド#0)の待ち時間は、完了時刻TE0から受信時刻TR0を引くことにより求まる。
他の要求についても、要求(コマンド#0)と同様の処理を実行順Dに従って順に行う。但し、他の要求についての開始時刻は、該要求の直前の要求の完了時刻となる。そして上記待ち時間算出テーブル作成処理を、N!通りの実行順それぞれについて行うと、最終的に、全実行順のそれぞれについて、該実行順で処理した場合の各要求の待ち時間が求まる。
第1実行順決定部330は、第1待ち時間予測部325により予測された待ち時間を実行中の要求を含む全要求について足し合わせた合計が最小となる実行順である第1実行順を、適用すべき実行順として決定する。第1実行順決定部330は、第1待ち時間予測部325により作成されたN!個の待ち時間算出テーブルのそれぞれについて、要求0〜Nまでの待ち時間の合計を算出する。そして、第1実行順決定部330は、待ち時間の合計が最小となる待ち時間算出テーブルに対応する実行順である第1実行順を、実際に適用すべき実行順として決定する。
好ましくは第1実行順決定部330は、第1待ち時間予測部325により予測された待ち時間を実行中の要求を含む全要求について足し合わせた合計が最小となり、かつ、各要求の待ち時間がいずれも最大許容待ち時間を超えない実行順である第1実行順を、適用すべき実行順として決定する。こで、最大許容待ち時間は、予め管理者により装置に設定されていてもよく、あるいは、ホスト装置105から要求と共に指定されるものであってもよい。
この場合、第1実行順決定部330は、第1待ち時間予測部325により作成されたN!個のテーブルから、要求(コマンド#0)〜要求(コマンド#N)までの各待ち時間がいずれも最大許容待ち時間を超えていない待ち時間算出テーブルを取り出す。そして第1実行順決定部330は、取り出した待ち時間算出テーブルそれぞれについて、要求(コマンド#0)〜要求(コマンド#N)までの待ち時間の合計を算出する。最後に第1実行順決定部330は、待ち時間の合計が最小となる待ち時間算出テーブルに対応する実行順である第1実行順を、実際に適用すべき実行順として決定する。
並び替え部335は、第1実行順決定部330により決定された適用すべき実行順に従って、キュー・テーブル315内の全要求の実行順を並び替える。
このように第1実施形態に係るストレージ・マネージャ300aでは、キュー・テーブル315に入れられた各要求は、要求が受け付けられてからその処理が完了するまでの待ち時間の全要求についての合計が最小となるような実行順に並び替えられる。その結果、本発明に係る装置では、ホスト装置105の平均待ち時間を最小にすることができ、ホスト装置からみた再呼び出し要求の効率が上がる。
(第2実施形態)図7は、本発明の第2実施形態に係るデータの再呼び出し順を決定するための装置としてのストレージ・マネージャ300bの機能構成の一例を示す図である。なお、第2実施形態においても、図1に示すライブラリ・システム115はテープ・ドライブ装置135を1つのみ含むものとする。第2実施形態に係るストレージ・マネージャ300bは、現在実行中の要求の処理を一旦中断して後に受け付けた要求を先に処理する方が、オーバヘッドを考慮してもホスト装置105の平均待ち時間を短縮できる場合があることを考慮する。
そのように現在実行中の要求の処理を一旦中断した方が、ホスト装置105の平均待ち時間を短縮できる場合を、図5(a)及び図8を参照して説明する。図5(a)及び図8では、現在時刻Tcurにおいて要求(コマンド#0)の再呼び出し要求が処理されており、キュー・テーブル315には、要求(コマンド#1)と、時刻Tcurに受け付けられたばかりの要求(コマンド#2)が格納されているものとする。そして、要求(コマンド#0)の実行時間C0と要求(コマンド#1)の実行時間C1は非常に長く、一方要求(コマンド#2)の実行時間C2は非常に短いとする。
また図5(a)及び図8において、時刻TR0、TR1、TR2はそれぞれ、要求(コマンド#0)〜要求(コマンド#2)の要求受付部305における受付時刻を示す。時刻TS0は、要求(コマンド#0)の処理開始時刻を示す。図5(a)において、時刻TE0、TE1、TE2はそれぞれ、要求(コマンド#0)〜要求(コマンド#2)の処理終了時刻を示す。また、図8において、時刻T’E0は要求(コマンド#0)を中断した時刻(同時に、現在時刻Tcur、要求(コマンド#2)の受付時刻でもある)、T’’E0、T’’E1、T’’E2はそれぞれ、再開した要求(コマンド#0)、要求(コマンド#1)及び要求(コマンド#2)の処理終了時刻を示す。なお、理解を容易にするため、要求(コマンド#0)〜要求(コマンド#2)がそれぞれ目的とするデータは、いずれも同じテープ・カートリッジ145に記録されているものとする。
このような状況において、要求受付部305における受付時刻の早い順に要求を処理する場合の各要求の開始前待ち時間W及び処理所要時間Aを示したのが図5(a)である。図5(a)をみると分かるように、要求(コマンド#0)の処理所要時間A0504及び要求(コマンド#1)の処理所要時間A1508がその実行時間C0、C1に起因してそれぞれ非常に長いため、要求(コマンド#2)の開始前待ち時間W2510は、その処理所要時間A2512は非常に短いにも関わらず、長くなっている。
一方、要求(コマンド#0)の再呼び出し処理を、要求(コマンド#2)を受け付けた現在時刻Tcurで一旦中断して、要求(コマンド#2)を先に処理した場合の各要求の開始前待ち時間W及び処理所要時間Aを示したのが図8である。この場合、要求(コマンド#2)は、長い実行時間C0、C1をそれぞれ有する要求0及び要求1の処理を待つ必要がないため、その開始前待ち時間は0となっている。なお、要求(コマンド#0)と要求(コマンド#2)が、それぞれ異なるテープ・カートリッジ145に記録されているデータを目的とする場合は、要求(コマンド#2)は、要求(コマンド#0)についての巻き戻し時間R1(n)及びアンロード時間U1(n)を待つ必要がある。
一方、要求(コマンド#0)は、処理の再開を待つため、新たに開始前待ち時間W’0808の待ち時間が発生する。また、要求(コマンド#1)も、要求(コマンド#2)の処理を待つ必要があるため、その開始前待ち時間W1812は図5(a)の開始前待ち時間W1506よりも長くなっている。しかし要求(コマンド#2)の実行時間C2が非常に短いため、その影響はわずかである。結果、要求(コマンド#0)〜要求(コマンド#2)の待ち時間の平均は、図5(a)の場合よりも図8の場合のほうが短い。なお、要求(コマンド#0)の待ち時間は、W0802、A’0804、W’0808及びA’’0810の合計となる。このように、現在実行中の要求の処理を一旦中断した方が、ホスト装置105の平均待ち時間を短縮できる場合がある。なお、中断する前に要求(コマンド#0)について読み出したデータは一時的に保持しておいてもよい。そして要求(コマンド#0)を再開する際には、残りのデータのみを読み出すようにしてもよい。
このように現在処理中の要求の中断を考慮する、第2実施形態に係るストレージ・マネージャ300bは、第1実施形態に係るストレージ・マネージャ300と一部同じ機能構成を有する。しかし、第2実施形態に係る最小待ち時間決定部320は、更に、現在実行中の要求の処理を一旦中断すると仮定した場合の最小の待ち時間の平均値を求めるための、第2待ち時間予測部340及び第2実行順決定部345を含む。また、第2実施形態に係る最小待ち時間決定部320は、現在実行中の要求の処理を中断しないと仮定した場合の最小の待ち時間の平均値と、現在実行中の要求の処理を一旦中断すると仮定した場合の最小の待ち時間の平均値とを比較し、中断した方が待ち時間の平均値が小さくなる場合に現在実行中の要求の処理を中断するための、適用実行順決定部350及び中断部355を含む。
そこで以下では、新たに追加される上記複数の構成要素について説明をする。なお、第2待ち時間予測部340及び第2実行順決定部345による処理は、第1待ち時間予測部325及び第1実行順決定部330による処理から独立しており、従って、これらの処理は同時になされてもよく、又はいずれか一方が先になされてもよく、どちらでもよい。
第2待ち時間予測部340は、キュー・テーブル315への要求Xの格納に応答して、実行中の要求を現在までの処理を行う第1要求と残りの処理を行う第2要求に仮想的に分割し、該第2要求を含むキュー・テーブル315内に格納された全要求の考え得る全実行順のそれぞれについて、該実行順で処理した場合の各要求についての待ち時間を予測する。第2待ち時間予測部340による処理の具体的な方法を以下に説明する。
まず、第2待ち時間予測部340は、キュー・テーブル315への要求Xの格納に応答して、キュー・テーブル315のコピーを作成する。但し、キュー・テーブル315のコピーには、第1要求と第2要求のエントリを追加する。例えば、要求Xが要求受付部305により受け付けられたとき、要求(コマンド#0)が処理中であり、図4(a)に示すキュー・テーブル315があったと仮定する。なお第1実施形態に関して説明したように、図4(a)に示すキュー・テーブル315には、説明を容易にするため、要求(コマンド#0)のエントリを残し、また、開始時間フィールドを設けている。実際はこれらのデータは、キュー・テーブル315とは別にメモリに保持されている。すると、第2待ち時間予測部340は、図4(a)に示すキュー・テーブル315を基に、図4(b)に示す新たなキュー・テーブルを作成する。
図4(a)において、現在処理中の要求のコマンドIDはコマンド#0である。また、図4(b)において、現在処理中の要求を分割してできた第1要求と第2要求のコマンドIDはそれぞれ、コマンド#0−1とコマンド#0−2である。第2要求のメディアIDフィールドと終了位置フィールド、また、第1要求の受信時刻フィールド、メディアIDフィールド、開始位置フィールド及び開始時刻フィールドには、元の現在処理中の要求、即ちコマンド#0のエントリの対応する値がそのままコピーされる(図4(a)及び図4(b)参照)。第1要求の残りのフィールド、即ち、第1要求の終了位置フィールドには、要求Xがキュー・テーブル315へ入れられた時点におけるテープ・ドライブ装置135のヘッドの現在位置E’0が登録される。第1要求の実行時間フィールドには、開始位置S0から終了位置E’0までの距離を、読出し時のテープ速度(例えば8.5m/Sec)で割った値C’0が登録される。
一方、第2要求の開始位置フィールドには、第1要求の終了位置E’0の値が登録される。また第2要求の実行時間フィールドには、元の現在処理中の要求、即ちコマンド#0の実行時間C0から第1要求の実行時間C’0を引いた値C’’0が登録される。なお、第2要求の受信時刻フィールドは、空欄のままとする。これは次の理由による。第2要求の受信時刻は、第1要求の処理の完了時刻となる。しかし、第1要求の処理は、現在処理中の要求(コマンド#0)の中断の決定と同時に終了するのではなく、第1要求についてのテープの巻き戻し、及びテープ・カートリッジのアンロードが終了した時点で終了する。そして、巻き戻し時間Rとアンロード時間Uは、上述したように、直後の要求に依存する。そのため、第1要求の次に処理される要求が決定されないことには、第1要求の処理の完了時刻を算出することはできない。
キュー・テーブル315のコピーが作成できると、第2待ち時間予測部340は、第1実施形態に関して説明した待ち時間算出テーブルを、第1実施形態に関して説明したのと基本的に同様の方法で作成する。そのような待ち時間算出テーブルを図6(b)に示す。なお、第2待ち時間予測部340は、処理中の要求(コマンド#0)を仮想的に分割して、実行中の第1要求と処理待ちの第2要求として取り扱う。そのため、キュー・テーブル315内の処理待ちの要求の数が1つ増えたのと等しくなり、第2待ち時間予測部340は、待ち時間算出テーブルを作成するに当たって、キュー・テーブル315ではなく、上記作成したキュー・テーブル315のコピーを利用する。また、全要求について考えられる実行順は(N+1)!通りとなるため、(N+1)!個の待ち時間算出テーブルが作成される。
なお、いずれの待ち時間算出テーブルにおいても、要求2の受信時刻フィールドは、第1要求の処理の完了時刻の算出後に、該完了時刻が登録されることに留意されたい。第2待ち時間予測部340によって、(N+1)!個の待ち時間算出テーブルが作成されると同時に、第2要求を含むキュー・テーブル315内に格納された全要求の考え得る全実行順のそれぞれについて、該実行順で処理した場合の各要求についての待ち時間が求まる。
第2実行順決定部345は、第2待ち時間予測部340により予測された待ち時間を第1要求を含む全要求について足し合わせた合計が最小となる実行順を、第2実行順として決定する。第2実行順決定部345は、第2待ち時間予測部340により作成された(N+1)!個の待ち時間算出テーブルのそれぞれについて、第1要求(コマンド#0−1)、第2要求(コマンド#0−2)、及び要求(コマンド#1)〜要求(コマンド#N)までの待ち時間の合計を算出する。そして、第2実行順決定部345は、待ち時間の合計が最小となる待ち時間算出テーブルに対応する実行順を、第2実行順として決定する。
好ましくは第2実行順決定部345は、第2待ち時間予測部340により予測された待ち時間を第1要求を含む全要求について足し合わせた合計が最小となり、かつ、各要求の待ち時間がいずれも最大許容待ち時間を超えない実行順を、第2実行順として決定する。ここで、最大許容待ち時間は、予め管理者により装置に設定されていてもよく、あるいは、ホスト装置105から要求と共に指定されるものであってもよい。
この場合、第2実行順決定部345は、第2待ち時間予測部340により作成された(N+1)!個の待ち時間算出テーブルから、第1要求(コマンド#0−1)、第2要求(コマンド#0−2)、及び要求(コマンド#1)〜要求(コマンド#N)の各待ち時間がいずれも最大許容待ち時間を超えていない待ち時間算出テーブルを取り出す。そして第2実行順決定部345は、取り出した待ち時間算出テーブルについて、第1要求(コマンド#0−1)、第2要求(コマンド#0−2)、及び要求(コマンド#1)〜要求(コマンド#N)までの待ち時間の合計を算出する。最後に第2実行順決定部345は、待ち時間の合計が最小となる待ち時間算出テーブルに対応する実行順を、第2実行順として決定する。
適用実行順決定部350は、第2実行順決定部345によって決定された第2実行順における待ち時間の合計が、第1実行順決定部330によって決定された第1実行順における待ち時間の合計よりも小さい場合に第2実行順を、それ以外の場合は第1実行順を、適用すべき実行順として再決定する。第2実行順を適用すべき実行順として決定した場合、適用実行順決定部350は、並び替え部335に、第2要求のエントリをキュー・テーブル315に追加するよう通知する。
並び替え部335は、適用実行順決定部350により決定された適用すべき実行順に従って、キュー・テーブル315内の全要求の実行順を並び替える。適用実行順決定部350から第2要求のエントリを追加するよう通知を受けた場合、並び替え部335は、第2待ち時間予測部340により作成されたキュー・テーブル315のコピーを利用して、キュー・テーブル315に第2要求のエントリを追加する。その後、並び替え部335は、キュー・テーブル315内の全要求の実行順の並び替えを実行する。
中断部355は、適用実行順決定部350による適用すべき実行順としての第2実行順の決定に応答して、実行中の要求の処理を実際に中断する。なお、上述したように、再開時には残りのデータのみを読み出せばよいように、中断前に読み出されたデータは一時的にメモリに保存してもよい。
このように第2実施形態に係るストレージ・マネージャ300bでは、オーバヘッドを考慮してもホスト装置105の平均待ち時間を短縮できる場合には、現在実行中の要求の処理を一旦中断して後に受け付けた要求を先に処理する。その結果、本発明に係る装置では、ホスト装置105の平均待ち時間を最小にすることができ、ホスト装置からみた再呼び出し要求の効率が上がる。
(第3実施形態)図9は、本発明の第3実施形態に係るデータの再呼び出し順を決定するための装置としてのストレージ・マネージャ300cの機能構成の一例を示す図である。第3実施形態に係るストレージ・マネージャ300cは、第1実施形態に係るストレージ・マネージャ300aと基本的に同じ機能構成を有する。但し、第3実施形態では、図1に示すライブラリ・システム115は、複数のテープ・ドライブ装置135を含む。即ち、第3実施形態に係るストレージ・マネージャ300cは、第1実施形態に係るストレージ・マネージャ300aを、複数のテープ・ドライブ装置135a、b、…を含むライブラリ・システム115に適用可能なように拡張したものである。
第3実施形態に係るストレージ・マネージャ300cは、テープ・ドライブ装置135毎に、キュー・テーブル315、第1待ち時間予測部325、及び第1実行順決定部330をそれぞれ用意する。第3実施形態に係る格納部310は、1つの要求を、複数のキュー・テーブル315a、b、…にそれぞれ仮想的に格納する。テープ・ドライブ装置135毎に複数用意される上記各構成要素は、仮想的に格納される要求に対し、第1実施形態に関して説明したのと同様に機能する。
即ち、第3実施形態に係る最小待ち時間決定部320cでは、同一のキュー・テーブル315に対応する第1待ち時間予測部325及び第1実行順決定部330のペア毎に、対応するキュー・テーブル315に入れられた全要求の考え得る全実行順の中から、要求が受け付けられてからその処理が完了するまでの待ち時間の平均が最小となる実行順が求められる。なお、最小となる実行順の求め方は第1実施形態に関して説明したので、繰り返しを避けるためここでは説明を省略する。
第3実施形態に係るストレージ・マネージャ300cはまた、割り当て先決定部360を含む。割り当て先決定部360は、第1待ち時間予測部325及び第1実行順決定部330の各ペアによりそれぞれ求められた複数の実行順に基づいて、上記要求を実際に割り当てるテープ・ドライブ装置135を決定する。即ち、割り当て先決定部360は、複数の第1実行順決定部330a、b、…がそれぞれ決定した、複数の第1実行順における複数の待ち時間の合計の中で、最小の待ち時間の合計を決定した第1実行順決定部330を用意されたテープ・ドライブ装置135に、上記1つの要求を割り当てる。
第3実施形態に係る並び替え部335は、割り当て先決定部360により割り当て先として決定されたテープ・ドライブ装置135に対応するキュー・テーブル315への上記要求の格納を確定する。そして、並び替え部335は、上記要求の格納を確定したキュー・テーブル315内の全要求の実行順を、割り当て先として決定された上記テープ・ドライブ装置135に対応する第1実行順決定部330により決定された第1実行順に従って並び替える。
(第4実施形態)図10は、本発明の第4実施形態に係るデータの再呼び出し順を決定するための装置としてのストレージ・マネージャ300dの機能構成の一例を示す図である。第4実施形態に係るストレージ・マネージャ300dは、第2実施形態に係るストレージ・マネージャ300bと基本的に同じ機能構成を有する。但し、第4実施形態では、図1に示すライブラリ・システム115は、複数のテープ・ドライブ装置135を含む。即ち、第4実施形態に係るストレージ・マネージャ300dは、第2実施形態に係るストレージ・マネージャ300bを、複数のテープ・ドライブ装置135a、b、…を含むライブラリ・システム115に適用可能なように拡張したものである。
第4実施形態に係るストレージ・マネージャ300dは、テープ・ドライブ装置135毎に、キュー・テーブル315、第1待ち時間予測部325、第1実行順決定部330、第2待ち時間予測部340、第2実行順決定部345、適用実行順決定部350及び中断部355をそれぞれ用意する。第4実施形態に係る格納部310は、1つの要求を、複数のキュー・テーブル315a、b、…にそれぞれ仮想的に格納する。テープ・ドライブ装置135毎に複数用意される上記各構成要素は、仮想的に格納される要求に対し、第1実施形態及び第2実施形態に関して説明したのと同様に機能する。
即ち、第4実施形態に係る最小待ち時間決定部320dでは、キュー・テーブル315ごとに、対応する適用実行順決定部350が、対応する第1実行順決定部330及び第2実行順決定部345によりそれぞれ決定された第1実行順と第2実行順とを比較して、適用すべき実行順を決定する。なお、最小となる実行順の求め方は第2実施形態に関して説明したので、繰り返しを避けるためここでは説明を省略する。
第4実施形態に係るストレージ・マネージャ300cはまた、割り当て先決定部360を含む。第4実施形態に係る割り当て先決定部360は、複数の適用実行順決定部350a、b、…によりそれぞれ求められた複数の実行順に基づいて、上記要求を実際に割り当てるテープ・ドライブ装置135を最終的に決定する。即ち、第4実施形態に係る割り当て先決定部360は、複数の適用実行順決定部350a、b、…がそれぞれ決定した、複数の適用すべき実行順における複数の待ち時間の合計の中で、最小の待ち時間の合計を決定した適用実行順決定部350に対応するテープ・ドライブ装置135に、上記1つの要求を割り当てる。
第4実施形態に係る並び替え部335は、上記割り当て先決定部360により要求を割り当てられたテープ・ドライブ装置135に対応するキュー・テーブル315への上記要求の格納を確定する。そして、並び替え部335は、上記要求の格納を確定したキュー・テーブル315内の全要求の実行順を、要求を割り当てられた上記テープ・ドライブ装置135に対応する適用実行順決定部350により決定された適用すべき実行順に従って並び替える。
次に、図11のフローチャートを参照して、第1実施形態に係るデータの再呼び出し順を決定するための装置としてのストレージ・マネージャ300aの動作を説明する。図11において処理はステップ100から開始し、ストレージ・マネージャ300aは、ホスト装置105からN番目の要求を受け付け、該要求をキュー・テーブル315に格納する(ステップ105)。このとき実行中の要求のコマンドIDをコマンド#0とし、キュー・テーブル315には、要求(コマンド#1)〜要求(コマンド#(N−1))までの、N−1個の要求が格納されているものとする。
要求(コマンド#N)をキュー・テーブル315に格納すると、ストレージ・マネージャ300aは、キュー・テーブル315内に格納された全要求の考え得る全実行順、即ち、N!通りの並び順のそれぞれについて、該実行順で処理した場合の各要求の待ち時間Ti(i=0〜N)を算出する(ステップ110)。ここで、各要求の待ち時間とは、各要求のストレージ・マネージャ300aにおける受け付けからテープ・ドライブ装置135における処理の完了までの待ち時間を意味する。
N!通りの並び順のそれぞれについて各要求の待ち時間を算出すると、ストレージ・マネージャ300aは、各要求の待ち時間がいずれも最大許容待ち時間を超えない、そのような並び順をすべて決定する。そして、ストレージ・マネージャ300aは、決定した並び順の中から、実行中の要求(コマンド#0)を含む全要求について待ち時間を足し合わせ、その合計が最小となる実行順を第1実行順として決定する(ステップ115)。なお、全要求の待ち時間がいずれも最大許容待ち時間内である並び順がなかった場合、処理はそこで終了する。
最後にストレージ・マネージャ300aは、第1実行順を適用すべき実行順とし、第1実行順に従ってキュー・テーブル315内の要求を並び替える(ステップ120)。そして処理は終了する。
なお、第3実施形態に係るストレージ・マネージャ300cの動作も、基本的な部分は、図11に示すフローチャートと同じである。しかしながら、第3実施形態に係るストレージ・マネージャ300cの場合、ステップ105において、要求は確定的ではなく、仮想的に複数のキュー・テーブル315a、b、…に格納される。そして、ストレージ・マネージャ300cは、各キュー・テーブル315に対し、ステップ110及びステップ115を実行する。
その後第3実施形態に係るストレージ・マネージャ300cは、ステップ120へ進む前に、各キュー・テーブル315に対してそれぞれ決定した複数の第1実行順の中から、待ち時間の合計が最小となる第1実行順を適用すべき実行順として決定する。そして、ストレージ・マネージャ300cは、適用すべき実行順としての第1実行順を決定されたキュー・テーブル315に対応するテープ・ドライブ装置135に、上記要求を割り当てる。即ち、適用すべき実行順としての第1実行順を決定されたキュー・テーブル315についてのみ、上記要求の格納を確定する。その後処理はステップ120へ進み、ストレージ・マネージャ300cは、適用すべき実行順に従って、上記要求を割り当てられたテープ・ドライブ装置135に対応するキュー・テーブル315内の要求を並び替える。
次に、図12のフローチャートを参照して、第2実施形態に係るデータの再呼び出し順を決定するための装置としてのストレージ・マネージャ300bの動作を説明する。図12において処理はステップ200から開始し、ストレージ・マネージャ300bは、ホスト装置105からN番目の要求を受け付け、該要求をキュー・テーブル315に格納する(ステップ205)。このとき実行中の要求のコマンドIDをコマンド#0とし、キュー・テーブル315には、要求(コマンド#1)〜要求(コマンド#(N−1))までの、N−1個の要求が格納されているものとする。
要求(コマンド#N)をキュー・テーブル315に格納すると、ストレージ・マネージャ300bは、ステップ210からステップ215までの第1の処理と、ステップ220からステップ235までの第2の処理を並列に、または順に実行する。なお、ステップ210及びステップ215の処理については、図11のステップ110及び115を参照して説明した処理と同じであるから、詳細な説明は省略する。第2実施形態に係るストレージ・マネージャ300bは、ステップ215の処理の後、第1実行順O1と該実行順O1に対応する最小の待ち時間の合計値S1とを取得する。但し、ステップ215において、全要求の待ち時間がいずれも最大許容待ち時間内である並び順がなかった場合、処理はステップ245へ進む。
ストレージ・マネージャ300bはまた、実行中の要求(コマンド#0)の中断を仮定して、テープ・ドライブ装置135の読み取りヘッドの現在位置を取得する(ステップ220)。そして、ストレージ・マネージャ300bは、実行中の要求(コマンド#0)を、現在までの処理を行う第1要求(コマンド#0−1)と残りの処理を行う第2要求(コマンド#0−2)に仮想的に分割し、上記ヘッドの現在位置を利用して、要求2を含むキュー・テーブル315のコピーを新たに作成する(ステップ225)。
そしてストレージ・マネージャ300bは、要求2を含むN+1個の要求が格納されたキュー・テーブル315のコピーを基に、(N+1)!通りの並び順のそれぞれについて、該実行順で処理した場合の各要求の待ち時間Ti(i=0−1、0−2、1〜N)を算出する(ステップ230)。なお、ここでも各要求の待ち時間とは、各要求のストレージ・マネージャ300bにおける受け付けからテープ・ドライブ装置135における処理の完了までの待ち時間を意味する。
(N+1)!通りの並び順のそれぞれについて各要求の待ち時間を算出すると、ストレージ・マネージャ300bは、各要求の待ち時間がいずれも最大許容待ち時間を超えない、そのよな並び順をすべて決定する。そして、ストレージ・マネージャ300bは、決定した並び順の中から、要求1及び要求2を含む全要求について待ち時間を足し合わせ、その合計が最小となる実行順を第2実行順O2として、また第2実行順O2に対応する最小の待ち時間の合計値S2を決定する(ステップ235)。但し、全要求の待ち時間がいずれも最大許容待ち時間内である並び順がなかった場合、処理はステップ255へ進む。
その後ストレージ・マネージャ300bは、第1実行順O1に対応する最小の待ち時間の合計値S1と、第2実行順O2に対応する最小の待ち時間の合計値S2とを比較する(ステップ240)。合計値S2がS1以下の場合(ステップ240:NO)、ストレージ・マネージャ300bは、実行中の要求(コマンド#0)の中断をライブラリ・システム115に指示する(ステップ245)。そして、ストレージ・マネージャ300bは、キュー・テーブル315のコピーを用いて元のキュー・テーブル315を更新し、更新後の要求2を含むキュー・テーブル315内の要求を、第2実行順O2に従って並び替える(ステップ250)。そして処理は終了する。
一方、合計値S2がS1より大きい場合(ステップ240:YES)、ストレージ・マネージャ300bは、キュー・テーブル315内の要求を、第1実行順O1に従って並び替える(ステップ255)。そして処理は終了する。
なお、第4実施形態に係るストレージ・マネージャ300dの動作も、基本的な部分は、図12に示すフローチャートとステップ240まで同じである。しかしながら、第4実施形態に係るストレージ・マネージャ300dの場合、ステップ205において、要求は確定的ではなく、仮想的に複数のキュー・テーブル315a、b、…に格納される。そして、ストレージ・マネージャ300dは、各キュー・テーブル315に対し、ステップ210からステップ240までの処理を実行し、適用すべき実行順を決定する。即ち、ステップ240においてYESであれば、第1実行順O1を採用することになり、ステップ240においてNOであれば、第2実行順O2を採用することになる。
その後第4実施形態に係るストレージ・マネージャ300dは、各キュー・テーブル315に対してそれぞれ決定した複数の実行順の中から、待ち時間の合計が最小となる実行順を適用すべき実行順として決定する。そして、ストレージ・マネージャ300dは、適用すべき実行順を決定されたキュー・テーブル315に対応するテープ・ドライブ装置135に、上記要求を割り当てる。即ち、適用すべき実行順を決定されたキュー・テーブル315についてのみ、上記要求の格納を確定する。最後にストレージ・マネージャ300dは、適用すべき実行順に従って、上記要求を割り当てられたテープ・ドライブ装置135に対応するキュー・テーブル315内の要求を並び替える。
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。例えば本発明の第1実施形態を、複数のテープ・ドライブ装置135a、b、…を含むライブラリ・システム115に適用可能なように拡張するにあたり、本発明の第3実施形態では、テープ・ドライブ装置135毎に用意された複数のキュー・テーブルそれぞれに対し、新たに受け付けた要求の割り当てを仮定して、平均待ち時間を算出した。しかしながら、計算時間をより短縮するために次のような方法を採用することもできる。
即ち、新たに受け付けた要求が、テープ・ドライブ装置135のいずれかにマウントされたテープ・カートリッジ145に対するものである場合、該テープ・カートリッジ145をマウントされたテープ・ドライブ装置135に要求を割り当てる。新たに受け付けた要求が、テープ・ドライブ装置135にマウントされたテープ・カートリッジ145のいずれに対するものでもない場合、同じテープ・カートリッジ145に対する要求を集めてグループ化する。そして、メンバー数が多いグループから順に、そのキュー・テーブル315に格納される要求が少ないテープ・ドライブ装置135に振り分ける。そして、要求の割り当てが決定した後に、要求を割り当てられたテープ・ドライブ装置135のキュー・テーブル315に対して、第1実施形態に係るストレージ・マネージャ300cによる要求の再配置を実行する。
同様の手法により、第2実施形態を、複数のテープ・ドライブ装置135a、b、…を含むライブラリ・システム115に適用可能なように拡張することができる。このように上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。従って、そのような変更又は改良を加えた形態も当然に本発明の技術的範囲に含まれる。