以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示あり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1−1〕一実施形態に係るライブラリ装置の構成例
図1は、実施形態の一例としてのライブラリ装置1の構成を示す斜視図である。
ライブラリ装置1は、コンピュータシステムのデータをバックアップする外部記憶装置として備えられ、多数のカートリッジ式記録装置(可搬性記録媒体)が収納される。
すなわち、ライブラリ装置1は、被搬送物である物品を収納する物品収納装置の一例である。そして、可搬性記録媒体は、被搬送物である物品の一例である。可搬性記録媒体としては、例えば、磁気テープカートリッジ,フレキシブルディスク,光ディスク,リールに巻回された磁気テープ等がある。ここでは、磁気テープを記録媒体に用いた磁気テープカートリッジを可搬性記録媒体として用いる場合を説明する。磁気テープカートリッジは、その内部に磁気記録テープ等の記録媒体を収納する。なお、以下、磁気テープカートリッジを、単に、媒体ともいう。
ライブラリ装置1は、図1に示すように、1つ以上の収納棚(10a,10b)、1つ以上(図2に示す例では4つ)のドライブ12、及び1つ以上(図2に示す例では2つ)のロボット(11a,11b)を備える。なお、以下、収納棚を示す符号としては、複数の収納棚のうち1つを特定する必要があるときには符号10a,10bを用いるが、任意の収納棚を指すときには符号10を用いる。また、以下、ロボットを示す符号としては、複数のロボットのうち1つを特定する必要があるときには符号11a,11bを用いるが、任意のロボットを指すときには符号11を用いる。
収納棚10は、媒体4(図2参照)を収納するものであり、例えば、収納棚10には、媒体4を収納する複数に区分けされた収納空間部として複数のセル14がマトリクス状に形成されている。
図1に示すように、収納棚10には複数のドライブ12が設置されている。
ロボット11は、図示しないカートリッジ投入排出機構部(CAS:Cartridge Access Station)から収納棚10へ媒体4を搬送したり、また、収納棚10からドライブ12に対して媒体4を搬送し、ドライブ12から媒体4を収納棚10に搬送する搬送手段である。
本ライブラリ装置1においては、ロボット11を用いることで、収納棚10のセル14から媒体4を取り出し、ドライブ12の何れかに搬送して装着し、データの読出し又は書込みを実行する。このような処理の後、ロボット11はライブラリコントローラ2(図2参照)からの動作命令を受けるために待機する。
〔1−2〕一実施形態に係るライブラリ装置のハードウェア構成例
図2は実施形態の一例としてのライブラリ装置1のハードウェア構成を例示する図である。なお、図中、同一部分には同一符号を付してある。また、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
本ライブラリ装置1は、図2に示すように、ロボット制御ボード(201a,201b)、及びライブラリコントローラ2を備える。ロボット制御ボード201aは、ロボット11aの制御を行ない、ロボット制御ボード201bは、ロボット11bの制御を行なう。
これらのロボット制御ボード201a,201bは互いに同様の構成を備える。以下、ロボット制御ボードを示す符号としては、複数のロボット制御ボードのうち1つを特定する必要があるときには符号201a,201bを用いるが、任意のロボット制御ボードを指すときには符号201を用いる。
ライブラリコントローラ2は、本ライブラリ装置1における全系統の制御を行なう。ライブラリコントローラ2には、ドライブ12が接続されるとともに、ホストコンピュータ100が接続されている。
図2に示すホストコンピュータ100は、CPU(Central Processing Unit)101,RAM(Random-Access Memory)102,及び記憶部103を備える。CPU101は、記憶部103にあるOS(Operating System)やプログラムを実行し、ライブラリコントローラ2を介して媒体4に対する情報の読出し又は書込み等の制御を行なう。この読出し要求や書込み要求は、ホストコンピュータ100のアプリケーション(図示せず)から取得されてもよいし、ユーザコンピュータ等の外部装置(図示せず)において管理者によって入力され、ホストコンピュータ100によって取得されてもよい。記憶部103は、例えば、不揮発性メモリで構成され、ライブラリコントローラ2との通信制御や、媒体4に対する読出し又は書込みを実行するためのプログラムや、セル14に格納されている媒体4を特定するための識別情報等を格納する。CPU101は、ロボット11の位置制御等も行なう。
各ドライブ12にはライブラリコントローラ2が接続され、ドライブ12に装着された媒体4に対する情報の読出し又は書込みが、このライブラリコントローラ2により実行される。
ロボット11は、例えば、ロボット機構部としてピッカー部220(アクセッサ)を備え、ピッカー部220の内部に媒体4を把持する把持手段として媒体固定ツメ2201を備える。
〔1−3〕一実施形態に係るライブラリ装置におけるホストコンピュータの機能構成例及び各処理部の動作
図3は、図2に示すライブラリ装置1におけるホストコンピュータ100の機能構成を例示したブロック図である。
図3に示すように、一実施形態に係るライブラリ装置1のホストコンピュータ100は、例示的に、要求受信処理部21,要求処理部22,要求実行時間短化処理部23,ロボット競合見積もり修正処理部24,統括処理部25を備えてよい。さらに、一実施形態に係るライブラリ装置1のホストコンピュータ100は、例示的に、予測完了時刻表示処理部26,異常監視処理部28,ドライブ通信プログラム29a,ライブラリ情報取得部29b,及び予測機能群105を備えてよい。また、予測機能群105には、予測機能を実現するための各処理部が含まれており、図3の説明では、その中の要求キュー完了時間予測処理部27を用い、その他の処理部については後述する。
記憶部103は、読出し要求キュー30,実行待ちキュー31,ロボット使用状況格納テーブル32,及びラップ始端終端位置情報33を記憶する。実行待ちキュー31は複数備えられてもよく、本実施形態では、ドライブ12毎に実行待ちキュー31が備えられているものとする。なお、図中、同一部分には同一符号を付してある。また、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
読出し要求キュー30は、後述する要求受信処理部21によって取得される読出し要求を格納する。すなわち、読出し要求キュー30は、ホストコンピュータ100のアプリケーションや、管理者から送信される読出し要求を格納するための記憶部として機能する。
実行待ちキュー31は、後述する統括処理部25から送信される読出し要求を格納する。後述の如く、実行待ちキュー31は、最短の処理順番となるように読出し要求を格納する。
ロボット使用状況格納テーブル32は、ロボット11の使用状況を示す情報を記憶する。すなわち、ロボット使用状況格納テーブル32は、ドライブ12毎に割り当てられたロボット11が動作中であるか否かや、ロボット11の動作の開始予定時刻と終了予定時間等を記憶するものである。
要求受信処理部21は、ホストコンピュータ100のアプリケーションや管理者から読出し要求を取得する。要求受信処理部21は、読出し要求を取得すると、記憶部103に格納される読出し要求キュー30に当該読出し要求を追加して記憶する。
統括処理部25は、要求受信処理部21から読出し要求を受け取り、当該読出し要求を後述する要求実行時間短化処理部23に送信する。具体的には、統括処理部25は、要求受信処理部21から受け取る1つ以上の読出し要求を備える読出し要求群(以下、単に読出し要求ともいう)を要求実行時間短化処理部23へ送信する。そして、統括処理部25は、読出し要求を要求実行時間短化処理部23へ送信する頻度を、読出し要求キュー30の長さや時間あたりの要求数に基づいて制御する。これについては、図4を用いて後述する。
統括処理部25は、後述する要求実行時間短化処理部23から、複数の読出し要求についての処理順番を受信する。また、統括処理部25は、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部23から通知された処理順番を変更する(並び替える)。また、統括処理部25は、例えば、締め切り時刻(Deadline)が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。
統括処理部25は、変更した処理順番を、要求実行時間短化処理部23を介して、後述する要求キュー完了時間予測処理部27に送信し、当該読出し要求の完了予測時刻を取得すると、この完了予測時刻を予測完了時刻表示処理部26へ送信する。また、統括処理部25は、後述する要求処理部22に対して、読出し要求の処理順番を送信し、要求処理部22は、この処理順番に従って読出し要求を実行待ちキュー31(の最後尾)に追加する。すなわち、統括処理部25は、処理順番を要求処理部22に送信することにより、この処理順番に従って読出し要求を実行待ちキュー31に追加させる。
さらに、統括処理部25は、実行待ちキュー31から、既に処理順番が決定している読出し要求を取り出して(取り戻して)、読出し要求キュー30に格納されている読出し要求(処理順番が決定していない読出し要求)とまとめる(併合する)。そして、統括処理部25は、要求実行時間短化処理部23を介して、後述する要求キュー完了時間予測処理部27に対し、まとめた読出し要求について処理順番を決定するよう依頼する。これを、再計算ともいう。実行待ちキュー31に格納されている読出し要求のすべて(既に処理順番が決定している読出し要求)を取り出して再計算を行なうと、再計算前の処理順番で処理した場合よりも時間がかかってしまうことが多い。そこで、実行待ちキュー31に格納されている読出し要求に関し、実行直前の処理読出し要求(例えば、先頭の読出し要求や、先頭から一定バイト数の読出し要求等)については、取り出さないものとしてもよい。すなわち、実行直前の読出し要求については、既に決定している処理順番のままで処理を行なってもよい。
また、統括処理部25は、いずれかのドライブ12において障害やクリーニング要求等が発生し、当該ドライブ12が使用できなくなった場合、当該ドライブ12や媒体4を使用不可なものとして再計算を行なうものとする。この場合には、実行中の読出し要求や、実行直前の処理も取り出して再計算を行なうものとする。
実施形態の一例としての統括処理部25における再計算の処理を、図4に示すフローチャート(ステップA1〜A9)に従って説明する。
ステップA1において、統括処理部25は、読出し要求キュー30に格納される読出し要求の数が一定数(例えば、R_max)以上であるか否かを判定する。読出し要求の数が一定数(R_max)以上である場合には(ステップA1でYes)、処理がステップA2に移行する。読出し要求の数が一定数に達していない場合には(ステップA1でNo)、処理がステップA3に移行する。
ステップA2において、読出し要求キュー30に格納される読出し要求を、処理対象要求Qとして決定し、処理がステップA5に移行する。ここで、処理対象要求Qとは、後述する要求キュー完了時間予測処理部27において処理順番を決定する対象となる、複数の読出し要求のことをいう。
ステップA3において、統括処理部25が要求受信処理部21より読出し要求を前回受信してから経過した時間がT(秒)以上である場合には(ステップA3でYes)、処理がステップA4に移行する。なお、統括処理部25は、読出し要求を受信する度に、例えば、経過した時間を測定するためのタイマの値を0(秒)に設定(リセット)するものとする。前回の読出し要求を受信してから経過した時間がT(秒)未満である場合には(ステップA3でNo)、処理がステップA1に戻る。すなわち、前回、要求受信処理部21より読出し要求を受信してから一定時間が経過するまでは、要求実行時間短化処理部23へ処理を依頼しないように、統括処理部25から依頼を送出する頻度を抑制する。
ステップA4において、統括処理部25は、実行待ちキュー31から、既に処理順番が決定している読出し要求を取り出す。そして、統括処理部25は、実行待ちキュー31から取り出した読出し要求と、読出し要求キュー30に格納されている読出し要求(処理順番が決定していない読出し要求)とをまとめて、処理対象要求Qとして決定する。その際、処理対象要求Qに含まれる読出し要求の数が、R_max以下となるようにまとめるものとする。
続くステップA5では、統括処理部25は、要求実行時間短化処理部23を介して、後述する要求キュー完了時間予測処理部27に対し、ステップA4において処理対象要求Qに含まれる読出し要求について処理順番を決定するよう依頼する。そして、統括処理部25は、要求キュー完了時間予測処理部27から再計算の結果となる最短の処理順番を取得する。この際、統括処理部25は、要求キュー完了時間予測処理部27から、ライブラリ装置1に備えられる各ドライブ12に対する処理順番を取得するものとする。
続くステップA6において、統括処理部25は、読出し要求の中に、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部23によって決定された処理順番を変更する(並び替える)。また、統括処理部25は、例えば、締め切り時刻が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。
続くステップA7では、統括処理部25は、ステップA6において変更した処理順番を、要求実行時間短化処理部23を介して、後述する要求キュー完了時間予測処理部27に送信する。そして、統括処理部25は、当該読出し要求の完了予測時刻を取得し、この完了予測時刻を予測完了時刻表示処理部26へ送信する。
続くステップA8では、統括処理部25は、後述するロボット競合見積もり修正処理部24に対して、ステップA7において取得した完了予測時刻を送信し、その結果、ロボット競合見積もり修正処理部24から更新(修正)後の完了予測時刻を取得する。なお、このステップA8の統括処理部25における詳細な処理については後述する。統括処理部25は、ロボット競合見積もり修正処理部24から更新された完了予測時刻を受信すると、その更新された完了予測時刻を、予測完了時刻表示処理部26へ再送信してもよい。
続くステップA9において、統括処理部25は、後述する要求処理部22に対して、処理順番を送信する。これにより、統括処理部25は、要求処理部22に対して、当該処理順番に従って読出し要求を実行待ちキュー31に追加するよう依頼することになる。そして、処理を終了する。
要求処理部22は、統括処理部25から処理順番を受信すると、この処理順番に従って読出し要求を実行待ちキュー31(の最後尾)に追加する。すなわち、要求処理部22は、統括処理部25から受信した処理順番に従って、読出し要求を実行待ちキュー31に並べ替えて格納することになる。
要求実行時間短化処理部23は、統括処理部25から複数の読出し要求を受信する。要求実行時間短化処理部23は、これら複数の読出し要求(アクセス要求)を一連の処理として処理する処理順番を設定するという機能と共に、処理時間(の総和)が最短と予測される処理順番を決定するという機能を併せもつ。読出し要求の処理順番を設定するための手法としては、逐次改善法等の公知の近似アルゴリズムを用いてもよく、また、これら公知のアルゴリズムを組み合わせてもよい。また、要求実行時間短化処理部23は、ライブラリ装置1に備えられるドライブ12毎に処理順番を設定するものとする。
そして、要求実行時間短化処理部23は、読出し要求をドライブ12毎に分割する。この読出し要求をドライブ12毎に分割するための手法については、媒体4の世代や読出し要求の優先度等に基づく公知の手法を用いてもよく、また、これら公知の手法を組み合わせてもよい。
さらに、要求実行時間短化処理部23は、設定した処理順番を、後述する要求キュー完了時間予測処理部27に送信し、その結果として、当該処理順番での処理時間等を取得する。また、要求実行時間短化処理部23は、自身が設定した複数の処理順番のうち、最短の処理時間となる処理順番を決定する。この処理順番の決定手法については後述する。
媒体4に対し、これから行なう読出し要求(後の読出し要求)の処理に要する処理時間は、当該読出し要求の前(直前)に行なった読出し要求(前回の読出し要求)の処理により変動する場合がある。例えば、後の読出し要求が、前回の読出し要求と同一の媒体4に対する読出しを要求するものではない場合、前回の読出し要求の際にロードした媒体4をアンロードして新たな媒体4をロードする必要がある。この場合、前回の読出し要求と同一の媒体4に対して読出しを行なう場合と比べて、後の読出し要求を処理する際に、媒体4のロード(及びアンロード)に要する時間が長くなる。また、例えば、後の読出し要求の対象となるデータと、前回の読出し要求の対象となるデータとの、媒体4上での位置が離れていればいるほど、後の読出し要求を処理する際のシークに要する時間が長くなる。したがって、複数の読出し要求を処理する場合、これら複数の読出し要求に係る処理を完了させるまでに要する時間は、各読出し要求の処理順番(前後関係)が影響する場合がある。また、上述したように、各読出し要求の処理時間には、例えば、ロードやシークといった複数種類の処理(サブプロセス)が関係しているので、各読出し要求の処理時間を予測するうえでは、各サブプロセスに要する処理時間を考慮しなければならない場合がある。そこで、本実施形態では、要求実行時間短化処理部23が処理順番を設定し、要求キュー完了時間予測処理部27が当該処理順番に従って複数の読出し要求を処理する場合の処理時間を予測する、という処理を、設定可能な処理順番の数だけ繰り返す。これにより、要求実行時間短化処理部23において設定可能な処理順番の中で、最短の処理時間となる処理順番を決定することが可能となる。
図5には、上述したような、実施形態の一例としての要求実行時間短化処理部23の処理を、ステップB1〜B4に従って説明する。
ステップB1において、要求実行時間短化処理部23は、統括処理部25から複数の読出し要求を受信し、公知の並べ替え手法に基づき、受信した複数の読出し要求の処理順番を設定する。また、後述するステップB4からステップB1に処理が戻った場合には、ステップB1において、これまでにまだ用いていない公知の並べ替え手法やこれらの組み合わせのうちのいずれかを用いて、複数の読出し要求の処理順番を設定するものとする。
続くステップB2において、要求実行時間短化処理部23は、公知の手法や、これらを組み合わせた手法を用いて、読出し要求をドライブ12毎に分割する。
続くステップB3では、要求実行時間短化処理部23は、ステップB1において設定した処理順番を、後述する要求キュー完了時間予測処理部27に送信し、その結果として、要求キュー完了時間予測処理部27から、当該処理順番での処理時間を取得する。
続くステップB4では、要求実行時間短化処理部23は、最短の処理時間、又は、最短の近似値としての処理時間が取得できたか否かを判断し、最短、又は、最短の近似値としての処理時間が得られた場合には(ステップB4でYes)、処理を終了する。この最短の近似値としての処理時間を求めるためには、2−opt法等の公知の局所探索法を用いてもよい。一方、ステップB4において、最短、又は、最短の近似値としての処理時間が得られなかった場合には(ステップB4でNo)、ステップB1に戻る。
このようにステップB1〜B4を繰り返すことにより、ホストコンピュータ100は、複数の読出し要求の処理順番を入れ替えて処理時間の総和を取得して、最短、又は、最短の近似値としての時間で処理を完了することのできる処理順番を決定する。このようにして、ホストコンピュータ100は、最短、又は、最短の近似値としての処理順番、すなわち、最短と予測される処理順番を決定する。
ロボット競合見積もり修正処理部24は、記憶部103のロボット使用状況格納テーブル32を参照しつつ、実行待ちキュー31に含まれる(未処理の)読出し要求の完了予測時刻を修正(補正)し、修正後の完了予測時刻を統括処理部25に送信する。これは、ライブラリ装置1において、ロボット11の数がドライブ12の数よりも少ないために、多くの読出し要求を同時に処理できなかったり、ロボット11が他の読出し要求を処理しており、受信した読出し要求をすぐに処理できない場合があるためである。また、上述の再計算の結果、処理順番に変更が発生した場合等は、当初算出した完了予測時刻迄に処理を完了することができない読出し要求が発生することがある。このような場合には、完了予測時刻を修正し、より正確な完了予測時刻を算出する。なお、要求キュー完了時間予測処理部27は、読出し要求の完了予測時刻だけでなく開始予測時刻等も算出し、統括処理部25は、要求キュー完了時間予測処理部27から、読出し要求の完了予測時刻や開始予測時刻等を取得するものとする。
実施形態の一例としてのロボット競合見積もり修正処理部24の処理を、図6に示すフローチャート(ステップC1〜C6)に従って説明する。
ステップC1において、ロボット競合見積もり修正処理部24は、統括処理部25から、実行待ちキュー31に含まれる(未処理の)読出し要求と、各読出し要求の完了予測時刻や開始予測時刻を取得する。そして、ロボット競合見積もり修正処理部24は、記憶部103に格納されるロボット使用状況格納テーブル32の情報を読出す。
ステップC2において、ロボット競合見積もり修正処理部24は、ロボット11毎に、実行待ちキュー31に含まれる(未処理の)読出し要求(の組み合わせ)を抽出する。
続くステップC3では、ロボット競合見積もり修正処理部24は、各読出し要求の完了予測時刻や開始予測時刻に基づき、ステップC2において抽出した複数の読出し要求の処理時間帯が重なっているかを判定する。処理時間帯が重なっていると判定された場合(ステップC3でYes)、処理がステップC4に移行する。処理時間帯が重なっていないと判定された場合(ステップC3でNo)、処理がステップC6に移行する。
ステップC4において、ロボット競合見積もり修正処理部24は、ステップC2において抽出した複数の読出し要求のうち、より早い開始予測時刻が設定されている読出し要求をαとする。そして、ロボット競合見積もり修正処理部24は、ステップC2において抽出した複数の読出し要求のうち、αの次に早い開始予測時刻が設定されている読出し要求をβとする。ここで、例えば、αの処理が完了しないうちにβの開始予測時刻をむかえるものとする。
続くステップC5において、ロボット競合見積もり修正処理部24は、αの処理とβの処理との重なりがなくなるまで、βの開始予測時刻を必要なだけ後ろに遅らせることにより、βの開始予測時刻を修正する。すなわち、ロボット競合見積もり修正処理部24は、開始予測時刻が先の読出し要求αを優先して処理し、αの処理が完了した後にβの処理を開始するように、後の読出し要求βの開始予測時刻を修正する。
ステップC6において、ロボット競合見積もり修正処理部24は、実行待ちキュー31に含まれる読出し要求について、すべての組み合わせを確認したかを判定する。すなわち、ロボット競合見積もり修正処理部24は、実行待ちキュー31に含まれるすべての読出し要求について、ステップC2〜C5の処理を行なったかを判定する。すべての組み合わせを確認したと判定された場合(ステップC6でYes)、処理を終了する。すべての組み合わせを確認したと判定されなかった場合は(ステップC6でNo)、処理がステップC2に戻る。このようにステップC1〜C6を経て、開始予測時刻が重なる読出し要求が発生した場合にも、開始予測時刻の補正を行なうことにより、より正確な完了予測時刻を算出することができる。
予測完了時刻表示処理部26は、統括処理部25から完了予測時刻を受信し、ホストコンピュータ100のアプリケーションや管理者に通知する。予測完了時刻表示処理部26は、統括処理部25から更新された完了予測時刻を受信すると、その更新された完了予測時刻を、ホストコンピュータ100や管理者に再通知してもよい。また、予測完了時刻表示処理部26は、実行結果の統計情報や予測精度等を表示する機能を併せもってもよい。
要求キュー完了時間予測処理部27は、後述する予測機能群105内の各処理部を用いて、要求実行時間短化処理部23から取得した処理順番に従って、読出し要求を処理した場合の処理時間を予測する。そして、要求キュー完了時間予測処理部27は、予測した処理時間を要求実行時間短化処理部23に送信する。要求キュー完了時間予測処理部27において処理時間を予測するための具体的な手法については後述する。
異常監視処理部28は、要求処理部22から、読出し要求の完了予測時刻と、当該読出し要求に関する処理が実際に完了した時刻(完了時刻)とを取得し、両者を比較する。例えば、ホストコンピュータ100のアプリケーションや管理者によって完了時刻に閾値が設定されてもよい。異常監視処理部28は、完了時刻と完了予測時刻との差分が閾値を超えると、ライブラリ装置1のハードウェアやホストコンピュータ100において異常が発生したと判断したり、異常の予兆を検出したものと判断してもよい。さらに、異常監視処理部28は、当該差分が閾値を超えた場合、ホストコンピュータ100のアプリケーションや管理者に、当該差分の値(時間)と、読出し要求の対象となった媒体4の番号等を通知してもよい。
また、異常監視処理部28は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ100において算出した完了予測時刻の精度を分析し、当該ホストコンピュータ100のアプリケーションや管理者に表示してもよい。これにより、ホストコンピュータ100のアプリケーションや管理者によって、各種パラメータが調整される等して、算出する完了予測時刻の精度を向上させることが可能となる。
実施形態の一例としての異常監視処理部28の処理を、図7に示すフローチャート(ステップD1〜D5)に従って説明する。
ステップD1において、異常監視処理部28は、要求処理部22から、実行待ちキュー31に格納されている各読出し要求の完了予測時刻を取得する。
続くステップD2において、異常監視処理部28は、各読出し要求の完了時刻を取得する。
続くステップD3において、異常監視処理部28は、完了時刻と完了予測時刻との差分を算出し、当該差分が、例えば、予め設定している閾値以下の場合には(ステップD3でYes)、処理がステップD5に移行する。当該差分が閾値を超えた場合には(ステップD3でNo)、異常が発生したものと判断され、処理がステップD4に移行する。
ステップD4において、異常監視処理部28は、例えば、ホストコンピュータ100のアプリケーションや管理者に、異常が発生した旨の通知、又は、異常の予兆を検出した旨の通知を行ない、処理を完了する。同時に、異常監視処理部28は、当該差分の値(時間)や、読出し要求の対象となった媒体4の番号等を通知してもよい。
ステップD5において、異常監視処理部28は、一定時間スリープした後、ステップD1の処理に戻る。
ドライブ通信プログラム29aは、ライブラリコントローラ2を介して、ライブラリ装置1に備えられるドライブ12と通信するために必要な情報を記録したプログラムである。ホストコンピュータ100が、ライブラリコントローラ2を介して、ライブラリ装置1のドライブ12と通信するために必要なドライブ通信プログラム29aについては公知であるため、ここではその説明を省略する。
ライブラリ情報取得部29bは、ホストコンピュータ100が、ライブラリコントローラ2を介して、ライブラリ装置1に対してデータの読出しを要求する等の制御を行なう際、ライブラリ装置1や自身の記憶部103等から必要なライブラリ情報を取得する。このようなライブラリ情報取得部29bについては公知であるため、ここではその説明を省略する。
上述の如く、図3〜図7を用いて、ホストコンピュータ100が備える個々の機能を説明したが、図8を用いて、これら複数の機能を連携させて、ホストコンピュータ100が、読出し要求を受信してから読出し要求を処理(移譲)するまでの処理について説明する。
実施形態の一例としてのライブラリ装置1における読出し要求の処理全体を、図8に例示したフローチャート(ステップE1〜E6,A1〜A9)に従って説明する。
なお、以下、図中、既述の符号と同一の符号を付したステップ(例えば、A1〜A9)は、同様の処理を示しているので、その具体的な説明は省略する。
ステップE1において、要求受信処理部21は、ホストコンピュータ100のアプリケーションや管理者から読出し要求を取得し、記憶部103に格納される読出し要求キュー30に当該読出し要求を追加して記憶する。
続くステップE2において、要求受信処理部21は、読出し要求の処理を、統括処理部25に移譲する。
続いて、図4に示したステップA1〜A5と同様の処理を行なう。すなわち、ステップA1において、統括処理部25は、読出し要求キュー30に格納される読出し要求の数が一定数以上であるか否かを判定する。読出し要求の数が一定数以上である場合には、処理がステップA2に移行し、統括処理部25は、読出し要求キュー30に格納される読出し要求を、処理対象要求Qとして決定した後、ステップA5に移行する。読出し要求の数が一定数に達していない場合には、処理がステップA3に移行する。ステップA3では、統括処理部25が前回要求受信処理部21より読出し要求を受信してから経過した時間がT(秒)以上である場合には、処理がステップA4に移行する。前回の読出し要求を受信してから経過した時間がT(秒)未満である場合には、処理がステップA1に戻る。ステップA4では、統括処理部25は、実行待ちキュー31から、既に処理順番が決定している読出し要求を取り出して、読出し要求キュー30に格納されている読出し要求(処理順番が決定していない読出し要求)とまとめ、処理対象要求Qとして決定する。続くステップA5では、統括処理部25は、要求実行時間短化処理部23を介して、要求キュー完了時間予測処理部27に対し、ステップA4において、処理対象要求Qに含まれる読出し要求について処理順番を設定するよう依頼する。そして、統括処理部25は、要求キュー完了時間予測処理部27から最短の処理順番を取得し、処理がステップE3に進む。
続くステップE3において、要求キュー完了時間予測処理部27は、読出し要求の処理に要する処理時間を予測するために、予測機能群105内の各処理部を呼び出す。
続いて、図4に示すステップA6〜A7の処理を行なう。ステップA6において、統括処理部25は、読出し要求の中に、例えば、優先度が設定されている読出し要求があれば、優先度の高い読出し要求から先に処理するように、要求実行時間短化処理部23によって決定された処理順番を変更する。また、統括処理部25は、例えば、締め切り時刻が設定されている読出し要求があれば、締め切り時刻に近い読出し要求を優先的に処理するように処理順番を変更する。続くステップA7において、統括処理部25は、ステップA6において変更した処理順番に基づき各読出し要求の完了予測時刻を取得し、予測完了時刻表示処理部26へ送信する。そして、処理がステップA8とA9とに進む。すなわち、ステップA8〜ステップE6の処理と、ステップA9〜ステップE5との処理が並行して行なわれる。
図4に示すステップA8において、ロボット競合見積もり修正処理部24は完了予測時刻を修正し、統括処理部25は、修正後の完了予測時刻を取得し、処理がステップE6に進む。
ステップE6において、予測完了時刻表示処理部26は、完了予測時刻を受信して、ホストコンピュータ100のアプリケーションや管理者に通知したり、実行結果の統計情報や予測精度等を表示してもよい。
また、図8に示すステップA9において、統括処理部25は、読出し要求の処理を、要求処理部22に移譲し、処理がステップE4に進む。
ステップE4では、当該読出し要求の処理順番になると、要求処理部22はドライブ通信プログラム29aやライブラリ情報取得部29bを用いて、ドライブ12に対し当該読出し要求のデータ読出し先となる媒体4から目的のデータを読出すよう命令を送信する。そして、要求受信処理部21は、読出し要求の送信元(例えば、ホストコンピュータ100のアプリケーションや管理者)に対して、読出したデータを送信する。
ステップE5において、異常監視処理部28は、読出し要求の完了予測時刻と、当該読出し要求に関する処理が実際に完了した時刻(完了時刻)とを比較する。そして、異常監視処理部28は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ100において算出した完了予測時刻の精度を分析する等して評価を行ない、処理が終了する。
次に、図9を用いて、図3に示す予測機能群105に含まれる各種機能について説明する。図9に示すように、一実施形態に係る予測機能群105は、例示的に、ラップ始端終端位置確認処理部41,終端ブロック位置推定処理部42,BOT距離測定処理部43,シーク時間予測処理部44,及び初期状態把握処理部45を備えてよい。さらに、一実施形態に係る予測機能群105は、例示的に、ロード時間予測処理部46,アンロード時間予測処理部47,ロボット動作時間予測処理部48,及びデータ読出し時間予測処理部49を備えてよい。
次に、図9に示す予測機能群105内の各処理部(41〜49)について説明するにあたり、図10を用いて、媒体4内の磁気テープ60の構造について説明する。図10は、実施形態の一例としてのライブラリ装置1における媒体4内の磁気テープ60の構造を模式的に示す図である。
磁気テープ60は、媒体4内において図示しない軸に巻き付けられており、媒体4に備えられている軸と、ドライブ12に備えられている軸とが協調して、磁気テープ60が長手方向に移動する。磁気テープ60内には、長手方向に対して垂直な方向に並んで複数のエリアが存在し、これらのエリアをラップ61という。
図10に示す白抜き矢印は、1つのドライブ12を用いて、連続して書込みを行なった場合のヘッドの位置の変化を、ラップ一往復分だけ模式的に示したものである。図10に示すように、ヘッドは、その位置を変化させながら、EOT(End Of Tape;テープの終端)までデータを書込み、EOTに到達する手前で書込みの向きを反転して、BOT(Beginning Of Tape;テープの始端)に向けてデータを書込む。ヘッドは、BOTまで書込みを行なった後は、BOTに到達する手前で書込みの向きを反転して、EOTに向けてデータを書込む。ヘッドは、このような往復運動を繰り返すことによりデータの書込みを行なうために、BOTから始まりEOTの方向にデータが書込まれる順方向のラップ61と、EOTから始まりBOTの方向にデータが書込まれる逆方向のラップ61とが存在する。
続いて、図9に示す予測機能群105の機能ブロック図の説明に戻り、予測機能群105内のラップ始端終端位置確認処理部41について説明する。ラップ始端終端位置確認処理部41は、磁気テープ60のラップ61におけるEOT側の折り返し位置、すなわち、終端ブロック位置を求める。ラップ始端終端位置確認処理部41は、例えば、媒体4をライブラリ装置1に取り込む際、ドライブ通信プログラム29aやライブラリ情報取得部29bを介してドライブ12に命令を発行し、ラップ61の始端ブロック位置や終端ブロック位置を取得してもよい。また、ラップ始端終端位置確認処理部41は、例えば、記憶部103に格納されているラップ始端終端位置情報33を取得して、ラップ61の終端ブロック位置を求めてもよい。ラップ61の始端ブロック位置と終端ブロック位置とは媒体4固有の情報である。そこで、例えば、ホストコンピュータ100が媒体4からデータの読出しを要求する際、ドライブ通信プログラム29aやライブラリ情報取得部29bを介しドライブ12に当該媒体4におけるラップ61の終端ブロック位置の取得を要求する。そして、ホストコンピュータ100は、取得した、当該媒体4におけるラップ61の終端ブロック位置をラップ始端終端位置情報33に格納してもよい。また、図示しない他の情報システムにおいて、媒体4におけるラップ61の終端ブロック位置を取得した場合には、ホストコンピュータ100がこれらの値をネットワーク経由で取得し、ラップ始端終端位置情報33に格納してもよい。
ラップ61へデータを書込む場合には、既に書込まれているデータの最後尾(End Of Data;最終有効データセットの終端)の次のブロック位置に書込みを行なうことが多い。そこで、ラップ始端終端位置確認処理部41は、例えば、一つ前のラップ61の終端ブロック位置を示すアドレス値に1を加算することにより、次のラップ61の始端ブロック位置を求める。また、データがラップ61の途中までしか書込まれていない場合、すなわち、データの終端がBOTとEOTとの間である場合、当該ラップ61の正確な終端ブロック位置を得ることが難しい。このような場合、例えば、ラップ始端終端位置確認処理部41は、1ラップ当たりのブロック数の平均又は推定値を、始端ブロック位置を示すアドレス値に加算することにより、終端ブロック位置を求めてもよい。
実施形態の一例としてのラップ始端終端位置確認処理部41の処理を、図11に示すフローチャート(ステップF1〜F8)に従って説明する。
ステップF1において、ラップ始端終端位置確認処理部41は、例えば、記憶部103に格納されているラップ始端終端位置情報33にアクセスして、磁気テープ60におけるラップ61の終端ブロック位置を取得する。そして、処理がステップF2に進み、最初のラップ61についてステップF3以降の処理を行なう。
ステップF3において、ラップ始端終端位置確認処理部41は、データがラップ61のEOT(辺り)まで書込まれているかを判定する。データがラップ61のEOTまで書込まれていると判定された場合(ステップF3でYes)、ステップF4に移行する。そして、ステップF4にて、ラップ始端終端位置確認処理部41は、ステップF1において取得したデータを終端ブロック位置とし、処理がステップF6に進む。一方、ステップF3において、データがラップ61のEOTまで書込まれていると判定されなかった場合(ステップF3でNo)、すなわち、データがラップ61の途中までしか書込まれていないと判定された場合、処理がステップF5に移行する。
ステップF5において、ラップ始端終端位置確認処理部41は、例えば、1ラップ当たりのブロック数の平均又は推定値から終端ブロック位置を求める。また、ステップF5において、ラップ始端終端位置確認処理部41は、上述したように、ドライブ12に命令を発行したり、記憶部103にアクセスすることにより、当該媒体4の終端ブロック位置を求めてもよい。また、ステップF5にてラップ始端終端位置確認処理部41が取得した、媒体4の終端ブロック位置を記憶部103に格納してもよい。
続くステップF6において、ラップ始端終端位置確認処理部41は、例えば、一つ前のラップ61の終端ブロック位置に1を加算することにより、次のラップ61の始端ブロック位置を求める。
続くステップF7において、ラップ始端終端位置確認処理部41は、当該ラップ61が最後のラップ61であるかを判定する。ステップF7において、最後のラップ61であると判定した場合(ステップF7でYes)、処理を終了する。ステップF7において、最後のラップ61であると判定しなかった場合(ステップF7でNo)、ステップF8に進み、次のラップ61に進む。その後、ステップF3に戻る。
このようにステップF3〜F8の処理を繰り返すことにより、ホストコンピュータ100は、各ラップ61の始端ブロック位置と終端ブロック位置とを、媒体4毎に求めることができる。
次に、図9に示す予測機能群105の機能ブロック図の説明に戻り、終端ブロック位置推定処理部42について説明する。読出し要求を受け取った際、終端ブロック位置推定処理部42は、当該要求において読出しを行なうデータのサイズを始端ブロック位置に加算して、終端ブロック位置を求める。そして、終端ブロック位置推定処理部42は、算出した終端ブロック位置を要求キュー完了時間予測処理部27に送信する。
BOT距離測定処理部43は、読出し要求の対象となるデータがどのラップ61に属するかを算出する。BOT距離測定処理部43は、例えば、ラップ始端終端位置確認処理部41において算出されたラップ61の始端ブロック位置と終端ブロック位置とから、読出し要求の対象となるデータのブロック位置が何番目のラップ61に属するかを算出する。そして、BOT距離測定処理部43は、算出したラップ61の番号が奇数であれば順方向のラップ61に属すると判定し、ラップ61の番号が偶数であれば逆方向のラップ61に属すると判定してもよい。
このようにして、BOT距離測定処理部43は、読出し要求の対象となるデータが属するラップ61を算出し、これに基づきBOT距離を算出する。ここで、BOT距離とは、読出し要求において取得する対象のブロック位置が、BOTからどの程度離れているかを示すものであり、磁気テープ60における各ラップ61の長さを1として求める。BOT距離測定処理部43は、例えば、下記式(1−1)、又は、下記式(1−2)によりBOT距離を算出してよい。下記式(1−1)は、読出し要求の対象となるデータが順方向のラップ61に属する場合に用い、下記式(1−2)は、読出し要求の対象となるデータが逆方向のラップ61に属する場合に用いるものとする。なお、lは、磁気テープ60における各ラップ61の長さを1としたときのBOT距離である。また、Wb,Weは、それぞれ、読出し要求の対象となるデータが属するラップ61の始端ブロック位置,終端ブロック位置であり、Blkは、読出し要求の対象となるデータの始端ブロック位置である。なお、Wb,Weは、ラップ始端終端位置確認処理部41において算出されたラップ61の始端ブロック位置と終端ブロック位置を用いるものとする。そして、BOT距離測定処理部43は、算出したBOT距離を要求キュー完了時間予測処理部27に送信する。
l(Blk,Wb,We)=(Blk−Wb)/(We−Wb) (1−1)
l(Blk,Wb,We)=(We−Blk)/(We−Wb) (1−2)
実施形態の一例としてのBOT距離測定処理部43の処理を、図12に示すフローチャート(ステップG1〜G3)に従って説明する。
ステップG1において、BOT距離測定処理部43は、読出し要求の対象となるデータがどのラップ61に属するかを算出し、ステップG2に進む。
ステップG2において、BOT距離測定処理部43は、ラップ始端終端位置確認処理部41において算出されたラップ61の始端ブロック位置と終端ブロック位置を取得し、ステップG3に進む。
ステップG3において、BOT距離測定処理部43は、例えば、上記式(1−1)又は(1−2)によりBOT距離を算出し、処理を終了する。
次に、図9に示す予測機能群105の機能ブロック図の説明に戻り、シーク時間予測処理部44について説明する。複数の読出し要求を処理する場合、1つのデータ(第1のデータ)を読出した後に、次のデータ(第2のデータ)を読出すためにヘッドをシークさせる必要がある。シーク時間予測処理部44は、このシークに要する時間t1を算出する。シーク時間予測処理部44は、例えば、下記式(2)を用いて、第1のデータのBOT距離L1と第2のデータのBOT距離L2とからシークに要する時間t1を算出する。この、第1のデータのBOT距離L1と第2のデータのBOT距離L2との差分の絶対値が、シークする距離であるので、シーク時間予測処理部44は、上記差分の絶対値と、一定の距離をシークするのに要する時間τに基づきシークに要する時間を算出する。なお、τの値は、記憶部103等に格納されている実績値や、ホストコンピュータ100のアプリケーションや管理者によって設定される値であってもよい。そして、シーク時間予測処理部44は、算出した、シークに要する時間を要求キュー完了時間予測処理部27に送信する。
t1=|L1−L2|×τ (2)
実施形態の一例としてのシーク時間予測処理部44の処理を、図13に示すフローチャート(ステップH1〜H3)に従って説明する。
ステップH1において、シーク時間予測処理部44は、一定の距離をシークするのに要する時間τを、例えば、記憶部103等や、ホストコンピュータ100のアプリケーションや管理者から取得し、ステップH2に進む。
ステップH2において、シーク時間予測処理部44は、第1のデータのBOT距離L1と第2のデータのBOT距離L2との差分の絶対値をシークする距離として算出し、ステップH3に進む。
ステップH3では、ステップH1において取得した、一定の距離のシークに要する時間τと、ステップH2において算出した、シークする距離とを用いて、例えば、上記式(2)によりシークに要する時間を算出し、処理を終了する。
次に、図9に示す予測機能群105の機能ブロック図の説明に戻り、初期状態把握処理部45について説明する。初期状態把握処理部45は、ヘッドが位置するブロック位置や、ドライブ12の状態等を確認する。
実施形態の一例としての初期状態把握処理部45の処理を、図14に示すフローチャート(ステップI1〜I7)に従って説明する。
ステップI1において、初期状態把握処理部45は、ドライブ12の実行待ちキュー31が空であるかを判定する。実行待ちキュー31が空でない場合(ステップI1でNo)、処理がステップI2に進む。実行待ちキュー31が空である場合(ステップI1でYes)、処理がステップI3に進む。
ステップI2において、初期状態把握処理部45は、ドライブ12で最後に読出す予定のデータ、すなわち、実行待ちキュー31に格納されている最後尾の読出し要求の対象データについて、終端ブロック位置を取得する。そして、初期状態把握処理部45は、要求キュー完了時間予測処理部27に対して、取得した終端ブロック位置を送信し、処理を完了する。
ステップI3において、初期状態把握処理部45は、ドライブ12に媒体4が格納されているか否かを判定する。ドライブ12に媒体4が格納されていると判定された場合には(ステップI3でYes)、処理がステップI4に進む。ドライブ12に媒体4が格納されていない(空である)と判定された場合には(ステップI3でNo)、処理がステップI5に進む。
ステップI4において、初期状態把握処理部45は、ヘッドの現在の位置、すなわち、ドライブ12が最後に読出したデータの終端ブロック位置を取得する。そして、要求キュー完了時間予測処理部27に対して、取得した終端ブロック位置と、ドライブ12が空でないという情報とを送信し、処理を完了する。
ステップI5において、初期状態把握処理部45は、ドライブ12が前回読出したデータが存在するかを判定する。ドライブ12が前回読出したデータが存在しないと判定された場合には(ステップI5でNo)、処理がステップI6に進む。ドライブ12が前回読出したデータが存在すると判定された場合には(ステップI5でYes)、処理がステップI7に進む。
ステップI6において、初期状態把握処理部45は、ドライブ12が前回読出したデータが存在しないという情報と、ドライブ12が空であるという情報とを、要求キュー完了時間予測処理部27に送信し、処理を完了する。
ステップI7において、初期状態把握処理部45は、ドライブ12が前回読出したデータの終端ブロック位置を取得する。そして、初期状態把握処理部45は、要求キュー完了時間予測処理部27に対して、取得した終端ブロック位置と、ドライブ12が空であるという情報とを送信し、処理を完了する。
このようにステップI1〜I7を経て、ホストコンピュータ100は、ドライブ12に媒体4が格納されているか否か(ドライブ12が空であるか否か)に関する状況や、ヘッドの現在の位置を求めることができる。
次に、図9に示す予測機能群105の機能ブロック図の説明に戻り、ロード時間予測処理部46について説明する。ロード時間予測処理部46は、セル14に入っている媒体4をドライブ12にロードしてデータの読出しを開始するまでの時間を算出する。そして、ロード時間予測処理部46は、予測した時間を要求キュー完了時間予測処理部27に送信する。
ロード時間予測処理部46は、以下のT1〜T3を加算することによりデータの読出しを開始するまでの時間を算出する。T1は、セル14から媒体4を取り出してドライブ12に格納するのに要する時間であり、T2は、ドライブ12に格納された媒体4を確認するのに要する時間である。また、T3は、ドライブ12の軸と媒体4の軸とを協調して磁気テープ60を回転させて、磁気テープ60を媒体4から引き出しながら、ヘッドを、読出し対象となるデータの手前までシークするのに要する時間である。上記T1について、ロード時間予測処理部46は、後述するロボット動作時間予測処理部48において算出された時間を取得する。上記T2について、ロード時間予測処理部46は、具体的に、ドライブ12に格納された媒体4のラベル情報やCM(カートリッジメモリ)の情報等に基づき、当該媒体4が要求したものと同一であるか否かを判定してもよい。そのため、ロード時間予測処理部46は、ドライブ通信プログラム29aやライブラリ情報取得部29bから、ラベル情報やCMの情報等を取得してもよい。この場合、上記T2として、ドライブ通信プログラム29aやライブラリ情報取得部29bから上記情報を取得するのに要する推定値又は実績値を用いてもよい。上記T3は、ロード時間予測処理部46が、上記式(2)を用いて取得するものとする。
アンロード時間予測処理部47は、媒体4のアンロードに要する時間、すなわち、ドライブ12内に格納されている媒体4を排出して、セル14に戻すのに要する時間を算出する。アンロード時間予測処理部47は、以下のT4〜T6を加算することにより媒体4のアンロードに要する時間を算出する。T4は、磁気テープ60を媒体4側の軸に巻き取るのに要する時間であり、T5は、ドライブ12におけるアンロード前処理と共に媒体4の排出に要する時間であり、T6は、媒体4をドライブ12からセル14に移動させるのに要する時間である。上記T4は、シークに要する時間と等しいことから、アンロード時間予測処理部47は、上記式(2)を用いて取得するものとする。上記T4は、前回読出したデータの終端ブロック位置からBOTまでをシークするための時間に等しいことから、アンロード時間予測処理部47が、上記式(2)を用いて上記T4を取得するものとする。上記T5については、当該ドライブ12におけるアンロード前処理に要する時間や、媒体4の排出に要する時間として、推定値又は実績値を用いてもよい。上記T6について、アンロード時間予測処理部47は、後述するロボット動作時間予測処理部48が算出した時間を取得するものとする。
ロボット動作時間予測処理部48は、セル14の格納位置,ドライブ12の位置に基づき、ライブラリ装置1においてロボット11の動作に要する動作時間を算出する。この動作時間を算出するためには、公知の関数を用いてもよい。この場合、ロボット11の動作時間は、ライブラリ装置1の構造や仕様に影響する場合があるので、関数を用いる上で実績値をフィードバックしながらパラメータ等を変更してもよい。
データ読出し時間予測処理部49は、読出し対象のデータのサイズに基づき、ヘッドを当該データの始端ブロック位置から終端ブロック位置まで移動させるのに要する時間を算出する。データ読出し時間予測処理部49は、例えば、下記式(3)を用いて、データ読出し時の際にヘッドを移動させるのに要する時間t2を算出する。ヘッドを移動させるのに要する時間は、データの読出しに用いるドライブ12の種類によって異なる場合があるので、比例定数τRを用いる。なお、E,Bはそれぞれ、終端ブロック位置を示すアドレス値,始端ブロック位置を示すアドレス値であり、t0は折り返しに要する定数時間である。また、nは折り返しの回数である。
t2=(E−B)×τR+t0×n (3)
要求キュー完了時間予測処理部27は、上述したように、予測機能群105内の各処理部を用いて、要求実行時間短化処理部23から取得した処理順番に従って、読出し要求を処理した場合に要する処理時間を予測する。
実施形態の一例としての要求キュー完了時間予測処理部27の処理を、図15に示すフローチャート(ステップJ1〜J12,F1〜F7,I1〜I3,I5,G1〜G3,H1〜H3)に従って説明する。
なお、図中、既述の符号と同一の符号を付したステップ(F1〜F7,I1〜I3,I5,G1〜G3,H1〜H3)は、同様の処理を示しているので、その詳細な説明は省略する。
ステップJ1において、終端ブロック位置推定処理部42は、読出し要求の対象データについて、始端ブロック位置及び終端ブロック位置をそれぞれ算出する。例えば、読出し要求の対象データの数がM(Mは整数)であるものとする。終端ブロック位置推定処理部42は、N番目(N=1,2,…,M;Nは整数)の読出し対象データの始端ブロック位置B[N]に対して当該データのサイズを加算することにより、当該データの終端ブロック位置E[N]を算出する。具体的には、終端ブロック位置推定処理部42は、図11のステップF1〜F7の処理を、読出し対象データの個数分繰り返す。
次に、図14に示したステップI1と同様の処理を行なう。ステップI1において、初期状態把握処理部45は、ドライブ12の実行待ちキュー31が空であるかを判定する。実行待ちキュー31が空でない場合、処理がステップI2に進む。実行待ちキュー31が空である場合、処理がステップG1〜G3に進む。ステップI2において、初期状態把握処理部45は、実行待ちキュー31に格納されている最後尾の読出し要求の対象データについて、その終端ブロック位置を取得し、処理がステップJ3に進む。処理がステップJ3に進んだ場合、ステップJ3では、ステップI2において、初期状態把握処理部45が取得した、実行待ちキュー31に格納されている最後尾の読出し要求の対象データの終端ブロック位置をE[0]に格納し、処理がステップJ5に進む。
処理がステップG1に進んだ場合、図12に示したステップG1と同様の処理を行なう。すなわち、ステップG1において、BOT距離測定処理部43は、読出し要求の対象となるデータがどのラップ61に属するかを算出する。続くステップG2において、ラップ始端終端位置確認処理部41において算出されたラップ61の始端ブロック位置,終端ブロック位置を取得する。そして、続くステップG3において、BOT距離測定処理部43は、例えば、上記式(1−1)又は(1−2)によりBOT距離を算出し、処理がステップJ2に進む。
ステップJ2において、所定の処理順番で当該読出し要求を処理した場合に要する処理時間Tを0に初期化する。この処理時間Tは、要求キュー完了時間予測処理部27が最終的に算出する値である。
次に、図14に示したステップI3と同様の処理を行なう。ステップI3において、初期状態把握処理部45は、ドライブ12に媒体4が格納されているか否かを判定する。ドライブ12に媒体4が格納されていると判定された場合には(ステップI3でYes)、処理がステップJ3に進む。ドライブ12に媒体4が格納されていない(空である)と判定された場合には(ステップI3でNo)、処理がステップI5に進む。ステップI5において、初期状態把握処理部45は、ドライブ12が前回読出したデータが存在するかを判定する。ドライブ12が前回読出したデータが存在しないと判定された場合には(ステップI5でNo)、処理がステップJ4に進む。ドライブ12が前回読出したデータが存在すると判定された場合には(ステップI5でYes)、処理がステップJ3に進む。
ステップJ3では、ドライブ12が前回読出したデータの終端ブロック位置をE[0]に格納し、処理がステップJ5に進む。
ステップJ4では、E[0]に0を格納し、処理がステップJ5に進む。
続くステップJ5において、要求キュー完了時間予測処理部27は、今回の読出し要求は、前回と同一の媒体4からの読出し要求であるかを判定する。すなわち、要求キュー完了時間予測処理部27は、今回(N番目)に読出しを行なうデータが格納されている媒体4が、前回(N−1番目)読出しを行なったデータが格納されている媒体4と同一であるか否かを判定する。前回と同一の媒体4からの読出し要求であると判定された場合には(ステップJ5でYes)、処理がステップJ7に進む。前回と同一の媒体4からの読出し要求でないと判定された場合には(ステップJ5でNo)、処理がステップJ6に進む。
ステップJ6において、アンロード時間予測処理部47は、前回(N−1番目)読出しを行なった媒体4をアンロードして、今回(N番目)に読出しを行なう媒体4をロードするのに要する時間を算出する。そして、処理がステップJ8に進む。
ステップJ7において、要求キュー完了時間予測処理部27は、N−1の値が0であるか、又は、ドライブ12が空であるかを判定する。これらの情報は、要求キュー完了時間予測処理部27が初期状態把握処理部45から受信した情報に含まれるものである。ステップJ7において、N−1の値が0である場合(1番目のデータの読出しである場合)、又は、ドライブ12が空であると判定された場合(ステップJ7でYes)、処理がシーク時間予測処理部44(ステップH1〜H3)に進む。一方、ステップJ7において、N−1の値が0ではない、且つ、ドライブ12が空ではないと判定された場合(ステップJ7でNo)、処理がステップJ8に進む。
ステップJ8において、ロード時間予測処理部46は、ロードに要する時間を算出し、算出した時間を処理時間Tに加算する。そして、処理がH1〜H3に進み、図13に示すステップH1〜H3と同様の処理を行なう。
図13に示したステップH1〜H3では、シーク時間予測処理部44は、一定の距離のシークに要する時間τを取得し(ステップH1)、シークする距離を算出し(ステップH2)、例えば、上記式(2)によりシークに要する時間を算出する(ステップH3)。そして、要求キュー完了時間予測処理部27は、シーク時間予測処理部44が算出したシーク時間を取得して、処理時間Tに加算し、処理がステップJ9に進む。
続くステップJ9において、データ読出し時間予測処理部49は、上述したステップにおいて算出した、B[N],E[N]に基づき、ヘッドをデータの始端ブロック位置から終端ブロック位置まで移動させるのに要する時間を算出する。そして、データ読出し時間予測処理部49は、算出したヘッドを移動させるのに要する時間を処理時間Tに加算し、処理がステップJ10に進む。
このようにして、上述した処理を経て累積された処理時間Tは、所定の処理順番のもと、当該読出し要求がN番目に処理された場合に要する処理時間といえる。ステップJ10において、要求キュー完了時間予測処理部27は、この処理時間Tを、N番目の読出し要求の処理に要する処理時間として、P[N]に格納する。
続くステップJ11において、要求キュー完了時間予測処理部27は、当該N番目の読出し要求が、最後の読出し要求であるかを判定する。最後の読出し要求であると判定された場合(ステップJ11でYes)、処理を完了する。最後の読出し要求であると判定されなかった場合(ステップJ11でNo)、処理がステップJ12に進む。ステップJ12において、Nの値に1を加算し、ステップJ5に戻る。ステップJ12において、Nの値に1を加算し、ステップJ5に戻る。
上述の如く構成されたホストコンピュータ100の動作について、図5を用いて改めて説明する。ステップB1において、要求実行時間短化処理部23は、複数の読出し要求(上述した図15に示す例ではM個の読出し要求)を処理する処理順番を複数設定する。続くステップB2において、要求実行時間短化処理部23は、読出し要求をドライブ12毎に分割する。続くステップB3では、要求実行時間短化処理部23は、ステップB1において設定した処理順番のうちの1つを要求キュー完了時間予測処理部27に送信する。そして、図15に示す一連の処理を経て、要求キュー完了時間予測処理部27は、予測機能群105内の各処理部を用い、M個の読出し要求のうち、それぞれの読出し要求について、所定の処理順番で処理された場合に要する処理時間Tを求める。例えば、N番目の読出し要求について、所定の処理順番で処理された場合に要する処理時間Tについては、P[N]に格納する。このようにして、M個の読出し要求のそれぞれについて、所定の処理順番で処理された場合に要する処理時間Tを求め、それぞれ、P[1]〜P[M]に格納する。さらに、完了時間予測処理部27は、P[1]〜P[M]に格納されている各読出し要求の処理時間の総和Zを求めることにより、ステップB1において設定した処理順番でM個の読出し要求を処理した場合に要する処理時間の総和Zを算出できる。この処理時間の総和Zは、処理順番に依存する場合があるので、本実施形態では、設定可能な処理順番毎に処理時間の総和Zを算出することで、設定可能な処理順番の数だけ処理時間の総和Zの算出を繰り返す。そして、図5のステップB4に示すように、処理時間の総和Zが最短となる処理順番を決定するものとする。
〔2〕一実施形態の第一の変形例
図4〜図8、及び図11〜15に示したフローチャートにおいては、ホストコンピュータ100が、当該ホストコンピュータ100のアプリケーションや管理者から、読出し要求を取得した場合の処理の流れを説明したが、これに限定されるものではない。例えば、ホストコンピュータ100が、当該ホストコンピュータ100のアプリケーションや管理者から、書込み要求を受信してもよい。その場合、例えば、図16に示すような処理を行なう。
図16に示すステップK1において、要求受信処理部21は、当該ホストコンピュータ100のアプリケーションや管理者から、書込み要求を受信する。そして、要求受信処理部21は、例えば、図示しないキャッシュ等の記憶装置に当該書込み要求を書込む。
続くステップK2において、要求受信処理部21は、実行待ちキュー31やキャッシュ等の状況を考慮して、要求処理部22に当該書込み要求を送信する。
続くステップK3において、要求受信処理部21は、当該書込み要求の処理順番になると、ドライブ通信プログラム29aに書込み指示を行なう。ドライブ通信プログラム29aは、ライブラリコントローラ2を介し、ドライブ12に対して、媒体4へデータの書込み指示を行なう。そして、処理を完了する。
〔3〕一実施形態の第二の変形例
上述した一実施形態では、図1〜図15を用いて、最短の処理時間と予測される処理順番を決定することにより、複数の読出し要求を処理する際の時間を短縮する手法について説明したが、これに限定されるものではない。第二の変形例では、最短の近似値としての処理時間となる処理順番を決定することにより、複数の読出し要求を処理する際の時間を短縮する手法について説明する。
また、上述した一実施形態では、読出し要求の対象データが格納されている媒体4に関わらず処理順番を決定するものとしたが、第二の変形例では、媒体4毎に処理順番を決定するものとする。すなわち、第二の変形例では、各媒体4に対する読出し要求の対象データが複数ある場合、このうち一の媒体4に対する読出し要求を処理した後に、異なる媒体4に対する読出し要求を処理するような処理順番を決定するものとする。
なお、本変形例に係るライブラリ装置1の構成(斜視図;図1参照)、及び、ライブラリ装置1のハードウェア構成(図2参照)、ホストコンピュータ100の機能構成(図3参照)については、上述した一実施形態と同様であるため、ここでは説明を省略する。また、本変形例に係るライブラリ装置1における予測機能群105の機能構成(図9参照)、及び、ライブラリ装置1における媒体内のテープの構造(図10参照)については、上述した一実施形態と同様であるため、ここでは説明を省略する。
第二の変形例に係るライブラリ装置1における統括処理部25における動作の概要を、図17のフローチャート(ステップA1〜A3,A5,A7,A9)に例示する。この図17は、第二の変形例に係る統括処理部25において、複数の読出し要求の処理順番を決定する動作の概要を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
なお、図17に示すフローチャートにおける、ステップA1〜A3,A5,A7,A9については、一実施形態における図4に示す各処理と同様であるため、ここでは説明を省略する。また、図17に示すフローチャートでは、上述した図4に示すフローチャートのうち、ステップA4,A6,A8に示す処理を省略している。これは、全体の処理の簡略化を目的としたためであり、上述した一実施形態と同様に、これらのステップA4,A6,A8に示す処理を経てもよい。
また、上述のとおり、図17に例示するフローチャートでは、図4に示すフローチャートのステップA4を省略しているため、ステップA3でYesの場合に処理がステップA2に移行する点が、上述した一実施形態における統括処理部25での処理と異なる。すなわち、第二の変形例では、ステップA3において、統括処理部25が要求受信処理部21より読出し要求を前回受信してから経過した時間がT(秒)以上である場合(ステップA3でYes)、処理がステップA2に移行する。
また、本変形例では、図17に例示するステップA5において、統括処理部25は、要求実行時間短化処理部23を介して、要求キュー完了時間予測処理部27から最短の近似値としての処理順番を取得する。
このようにして、図17のステップA1〜A3,A5,A7に示す処理を経た後、ステップA9において、統括処理部25は、読出し要求の処理を要求処理部22に移譲する。この第二の変形例における要求処理部22の処理を、図18に示すフローチャート(ステップX1〜X3)を用いて説明する。この図18は、第二の変形例に係る要求処理部22において、要求の処理を依頼する動作を説明するためのフローチャートである。
本変形例において、要求処理部22は、統括処理部25から読出し要求の処理が移譲される(図17に示すステップA9)のを契機として実行を開始するのではなく、読出し要求の処理を実行できるようスタンバイしておくものとする。このような処理は、公知の並列処理(マルチスレッド)技術等を用いて実現してもよい。
ステップX1において、要求処理部22は、初期状態把握処理部45に対して、実行待ちキュー31が空であるかを判定するよう依頼する。実行待ちキュー31が空であると判定した場合(ステップX1でYes)、処理がステップX1に戻る。一方、実行待ちキュー31が空でないと判定した場合(ステップX1でNo)、処理がステップX2に進む。すなわち、要求処理部22は、実行待ちキュー31に処理すべき読出し要求が存在すれば、当該読出し要求の処理を依頼し、実行待ちキュー31に処理すべき読出し要求が存在しなければ、当該実行待ちキュー31に読出し要求が追加されるまで待機する。
ステップX2では、既に読出し要求処理が開始されている(実行中の)媒体4がある場合、要求処理部22は、後述する媒体4の処理順番に基づき、実行中の媒体4の次に処理対象となる媒体4(実行中の媒体4を除く先頭の媒体4)に対する処理を依頼する。そして、実行中の媒体4の次に処理対象となる媒体4に対する複数の読出し要求は、後述する手順に基づき決定された処理順番に従って処理される。そこで、要求処理部22は、当該読出し要求の処理順番になると、ドライブ通信プログラム29aやライブラリ情報取得部29bを用いて、ドライブ12に対して、当該読出し要求のデータ読出し先となる媒体4から的のデータを読出すよう命令を送信する。そして、要求受信処理部21は、読出し要求の送信元(例えば、ホストコンピュータ100のアプリケーションや管理者)に対して、読出したデータを送信する。
続くステップX3において、要求処理部22は、後述する図19のフローチャートに示すステップX’1〜X’2の処理を実行しているドライブ12の数又は有無を判定する。そして、媒体4に対してステップX’1〜X’2の処理を実行していないドライブ12が存在すると判定した場合(ステップX3でYes)、処理がステップX1に戻る。一方、すべてのドライブ12が媒体4に対して処理を実行していると判定した場合(ステップX3でNo)、ステップX3の処理を繰り返す。すなわち、いずれかのドライブ12がステップX’1〜X’2の処理を完了すると、要求処理部22は、後述するX’2の処理にて通知される完了の旨の通知を受信するまで待機する。
上述したステップX2において、要求処理部22から目的のデータを読出す命令を受信すると、ライブラリ装置1側では、ドライブ12を制御して媒体4からデータの読出しを実行する。次に、この動作を、図19に示すフローチャート(ステップX’1〜X’2)に従って説明する。この図19は、第二の変形例に係るライブラリ装置1における読出し処理を説明するためのフローチャートである。
ステップX’1では、上述したステップX2において、要求処理部22から対象となるデータを読出す命令を受信すると、当該対象となるデータが格納されている媒体4から当該データを読出す処理を実行する。すなわち、ライブラリ装置1側では、決定された処理順番に従って、処理対象要求Qに含まれる複数の読出し要求を実行する。
続くステップX’2では、処理対象要求Qに含まれる複数の読出し要求のうち、処理順番が最後の読出し要求を処理した後、すべての読出し要求が完了したことを、要求処理部22に通知する。そして、処理が終了する。
次に、第二の変形例における、最短の近似値としての処理順番を決定する処理を行なう要求実行時間短化処理部23の動作を、図20に示すフローチャート(ステップY1〜Y5)に従って説明する。この図20は、第二の変形例に係る要求実行時間短化処理部23の動作を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
ステップY1において、要求実行時間短化処理部23は、統括処理部25から複数の読出し要求を受信し、受信した複数の読出し要求を媒体4毎に分割する。
続くステップY2では、要求実行時間短化処理部23は、ステップY1において媒体4毎に分割した読出し要求について、これら読出し要求の対象となるデータの始端ブロック位置に基づき、処理順番を決定する前処理を行なう。例えば、この前処理において、要求実行時間短化処理部23は、読出し要求の対象となるデータの始端ブロック位置を示すアドレス値が昇順又は降順となるように、複数の読出し要求の処理順番を決定する。そして、要求実行時間短化処理部23は、この前処理を媒体4毎に行なう。
続くステップY3では、要求実行時間短化処理部23は、ステップY2に示す前処理において決定した処理順番を初期状態とし、2−opt法等の公知の局所探索法を用いて、この初期状態の処理順番を変更する。そして、要求実行時間短化処理部23は、この変更した処理順番を新たな処理順番として設定する。なお、本変形例において、読出し要求の処理順番を設定するための手法としては、上記の局所探索法以外の手法を用いてもよく、また、公知のアルゴリズムとを組み合わせてもよい。
続くステップY4では、要求実行時間短化処理部23は、ステップY3において設定した処理順番を要求キュー完了時間予測処理部27に送信し、その結果として、要求キュー完了時間予測処理部27から、当該処理順番での処理時間Tを取得する。
本変形例において、要求実行時間短化処理部23は、ステップY3において設定した処理順番で一連の読出し要求を処理した場合に要する処理時間を、これら一連の読出し要求の対象データをシークする際に要する処理時間Tの総和により求める。また、ステップY3において設定した処理順番で、隣り合う読出し要求を処理する場合に要する各シーク時間は、上述の一実施形態と同様に、シーク時間予測処理部44が、例えば、上記式(2)を用いて算出する。
なお、本変形例では、媒体4毎に読出し要求を処理するため、上記式(2)におけるτの値(一定の距離をシークするのに要する時間)を1とする(省略する)。
続くステップY5では、要求実行時間短化処理部23は、最短の近似値としての処理時間が取得できたか否かを判断する。最短の近似値としての処理時間が得られた場合には(ステップY5でYes)、処理を終了する。一方、最短の近似値としての処理時間が得られなかった場合には(ステップY5でNo)、ステップY1に戻る。
このように、図20のステップY1〜Y5に示す処理を繰り返すことにより、ホストコンピュータ100は、複数の読出し要求の処理順番を入れ替えて処理時間Tの総和を取得して、最短の近似値としての処理時間で処理を完了できる処理順番を決定する。
本変形例においても、複数の読出し要求を、一連の(連続的な)読出し要求として処理する。そのため、本変形例において、ステップY2に示す前処理を行なわず、ステップY3に示す2−opt法等の公知の局所探索法だけを用いて処理順番を求めると、まとまった複数の読出し要求が連続的に処理されない処理順番が決定されるおそれがある。そこで、本変形例では、ステップY3に示す2−opt法等の公知の局所探索法だけでなく、ステップY2に示す前処理も併せて行なうものとする。これにより、特に、性能測定時や、媒体4に格納される大半のデータをまとめて読出す要求を処理する場合、本手法は有効となる。
上述の如く、図17〜図20を用いて、本変形例に係る各機能を説明したが、これら複数の機能を連携させて、ホストコンピュータ100が読出し要求を受信してから読出し要求を処理(移譲)するまでの処理を図21に例示する。この図21に例示したフローチャート(ステップE1,E2,A1〜A3,A5,E3,A7,E6,A9,E4,E5)は、第二の変形例に係るライブラリ装置1における読出し要求の処理全体を説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
この図21に示すフローチャートにおける、ステップA1〜A3,A5,A7,A9の各処理は、図4、及び、図17における既述の各処理と同様であるため、ここでは説明を省略する。また、図21に示すフローチャートでは、一実施形態において上述した図8に示すフローチャートのうち、ステップA4,A6,A8に示す処理を省略している。これは、全体の処理の簡略化を目的としたためであり、上述した一実施形態と同様に、これらのステップA4,A6,A8に示す処理を経てもよい。
また、図21に示すフローチャートにおける、ステップE1〜E6の各処理は、図8における既述の各処理と同様であるため、ここでは説明を省略する。
図21に示すステップE1において、ホストコンピュータ100のアプリケーションや管理者から取得した要求を取得する。そして、図21に示すステップE2,A1〜A3,A5,E3,A7を経て、ステップE6にて、予測完了時刻表示処理部26は、ホストコンピュータ100のアプリケーションや管理者に完了予測時刻を通知する。さらに、ステップA9,E4を経て、ステップE5において、異常監視処理部28は、当該比較結果に関する統計情報を作成したり、ホストコンピュータ100において算出した完了予測時刻の精度を分析する等して評価を行ない、処理が終了する。
次に、上述の図17に示した統括処理部25の動作の概要のうち、ステップA5以降の処理を、図22のフローチャート(ステップS1〜S7,Y1〜Y5,S8〜S11)を用いて詳細に説明する。したがって、図22のステップS1に示す処理は、図17のフローチャートにおけるステップA2に示す処理を契機として開始するものとする。
この図22は、第二の変形例に係る統括処理部25において、複数の読出し要求の処理順番を決定する動作を具体的に説明するためのフローチャートである。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
なお、図22に示すフローチャートにおける、ステップY1〜Y5の各処理は、図20における既述の各処理と同様であるため、ここでは説明を省略する。
また、後述するステップS1〜S7に示す処理においては、上述のステップA2に示す処理にて、統括処理部25により決定された処理対象要求Qに含まれる各読出し要求がその処理対象となるものとする。
ステップS1では、処理対象要求Qに含まれる各読出し要求について、当該読出し要求の対象となる媒体4を特定する。ここで、例えば、統括処理部25は、読出し要求の送信元(例えば、ホストコンピュータ100のアプリケーションや管理者)やライブラリ装置1から、各読出し要求の対象データが格納される媒体4を特定するための識別情報等を取得してもよい。
続くステップS2において、読出し対象データについての始端ブロック位置とサイズとを取得する。これらの読出し対象データについての始端ブロック位置とサイズとについても、例えば、統括処理部25が、読出し要求の送信元(例えば、ホストコンピュータ100のアプリケーションや管理者)やライブラリ装置1から取得してもよい。また、後述する当該読出し対象データのメタデータから取得してもよい。
続くステップS3において、ラップ始端終端位置確認処理部41は、例えば、ドライブ通信プログラム29aやライブラリ情報取得部29bを介してドライブ12に命令を発行し、ラップ61の終端ブロック位置を取得してもよい。このドライブ12に対して発行する命令としては、SCSI(Small Computer System Interface)コマンド等を用いてもよい。
また、ラップ始端終端位置確認処理部41は、媒体4をライブラリ装置1に取り込む際にラップ61の終端ブロック位置を取得し、例えば、記憶部103に格納しておいてもよい。そして、ラップ始端終端位置確認処理部41は、定期的にドライブ12に命令を発行することにより取得したラップ61の終端ブロック位置を用いて、記憶部103に格納されている情報を更新してもよい。この場合、ラップ始端終端位置確認処理部41は、記憶部103を参照して最新の終端ブロック位置を取得してもよい。
続くステップS4では、ステップS1において特定した媒体4が非圧縮であるか否かを判定する。ここでは、例えば、統括処理部25が、ライブラリ装置1にアクセスすることにより、所定の媒体4の圧縮に関する情報を取得し、この取得した情報に基づき、媒体4が非圧縮であるか否かを判定する。非圧縮であると判定しなかった場合(ステップS4のNoルート)、処理がステップS5に進む。一方、非圧縮であると判定した場合(ステップS4のYesルート)、処理がステップS6に進む。
ステップS5において、例えば、統括処理部25は、読出し対象となるデータの終端ブロック位置を推定する。ここで、読出し対象となるデータの終端ブロック位置を推定する際、例えば、統括処理部25は、ライブラリ装置1にアクセスして当該データのメタデータを参照する。そして、メタデータに終端ブロック位置が格納されている場合には、この格納されている終端ブロック位置を、当該データの終端ブロック位置として求める。なお、このメタデータの設定処理については後述する。
また、メタデータに終端ブロック位置が格納されていない場合には、例えば、統括処理部25は、ラップ始端終端位置確認処理部41から当該データの終端ブロック位置の推定値を取得する。具体的に、ラップ始端終端位置確認処理部41は、例えば、ステップS2において取得した当該データの始端ブロック位置とサイズ、一般的な圧縮率、及び、ブロックサイズ等から当該データの終端ブロック位置を推定してもよい。そして、処理がステップS7に進む。
一方、ステップS6において、読出し対象となるデータの終端ブロック位置を求める。例えば、統括処理部25は、ライブラリ装置1にアクセスして当該データのメタデータを参照する。そして、メタデータに終端ブロック位置が格納されている場合には、この格納されている終端ブロック位置を、当該データの終端ブロック位置として求める。
また、メタデータに終端ブロック位置が格納されていない場合には、例えば、統括処理部25は、ラップ始端終端位置確認処理部41から当該データの終端ブロック位置の推定値を取得する。具体的に、ラップ始端終端位置確認処理部41は、例えば、ステップS2において取得した当該データの始端ブロック位置に、ステップS2において取得した当該データのサイズをブロック数に変換した値を加算して、当該データの終端ブロック位置を求めてもよい。そして、処理がステップS7に進む。
続くステップS7において、BOT距離測定処理部43は、例えば、上記式(1−1)又は(1−2)によりBOT距離を算出する。
そして、上記ステップS1〜S7に示す処理を、処理対象要求Qに含まれる各読出し要求の数だけ繰り返す。そして、ステップY1〜Y5に移行する。
ステップY1において、処理対象要求Qに含まれる複数の読出し要求を、媒体4毎に分割する。そして、上述の図20のステップY2〜Y5に示した処理を経ることにより、ホストコンピュータ100は、複数の読出し要求の処理順番を入れ替えて処理時間Tの総和を取得して、最短の近似値としての処理時間で処理を完了できる処理順番を決定する。
続くステップS8において、初期状態把握処理部45は、ドライブ12が空であるか否かを判定する。ドライブ12が空であると判定した場合(ステップS8でYes)、ステップS9に移行する。一方、ドライブ12が空でないと判定した場合(ステップS8でNo)、処理がステップS10に移行する。
ステップS9において、例えば、要求実行時間短化処理部23は、公知の並べ替え手法等を用いて、複数の媒体4を処理する順番(媒体4の処理順番)を決定する。そして、処理がステップS11に進む。
ステップS10では、ドライブ12に格納されている媒体4を優先して処理するような媒体4の処理順番を決定する。ここで、例えば、要求実行時間短化処理部23は、公知の並べ替え手法等を用いて媒体4の処理順番を決定するが、ドライブ12に格納されている媒体4が優先して処理されるように媒体4の処理順番を変更する。そして、処理がステップS11に進む。
続くステップS11において、要求処理部22は、ステップY1〜Y5を経て決定した読出し要求の処理順番と、ステップS10において決定した媒体4の処理順番とに従って、読出し要求を実行待ちキュー31に格納する。すなわち、要求処理部22は、決定した処理順番に従って、読出し要求を実行待ちキュー31に並べ替えて格納する。そして、処理がステップS1に戻る。
次に、メタデータの設定処理について、図23のフローチャート(ステップU1〜U4)を用いて説明する。本処理は、媒体4に対してデータの書込みを行なった後に実施される。
また、本変形例では、媒体4に対して所定のデータの書込みが行なわれた際に、当該データのファイルパスが、当該ライブラリ装置1の図示しない記憶部や外部のHDD(Hard Disk Drive)等における、媒体4毎に付与された領域に格納されるものとする。
ステップU1において、例えば、ホストコンピュータ100が、当該ホストコンピュータ100のアプリケーションや管理者から書込み要求を受信すると、ライブラリ装置1側では、媒体4に対して所定のデータが書込まれる。
続くステップU2では、例えば、統括処理部25は、ステップU1にてデータが書込まれた媒体4に紐付けられた領域から、当該媒体4において、ステップU1における書込みの直前に書込まれたデータ(直前の書込みデータ)のファイルパスを取得する。この直前の書込みデータとは、ステップU1にて行なわれた書込みの直前の時間に書込まれたデータ、すなわち、媒体4上で、ステップU1にて書込まれたデータの直前の位置に書込まれたデータである。
続くステップU3では、ステップU2において取得したファイルパスの示すデータ、すなわち、直前の書込みデータの終端ブロック位置を求め、当該直前の書込みデータのメタデータ(後述)に格納する。ここでは、例えば、終端ブロック位置推定処理部42が、ステップU1において書込まれたデータの始端ブロック位置から1を減算することにより、直前の書込みデータの終端ブロック位置を求めてもよい。
このメタデータとは、書込み対象データに関する終端ブロック位置等の属性を、書込み対象データ毎に格納する情報(拡張属性)である。このメタデータは、例えば、ライブラリ装置1の図示しない記憶部、外部のHDDや媒体等に格納され、ライブラリ装置1の起動時に当該ライブラリ装置1のメモリ(図示せず)等に展開されてもよい。また、このメタデータは、一時的にホストコンピュータ100の記憶部103等にダウンロードされてもよい。また、このメタデータは、例えば、ホストコンピュータ100のアプリケーションや管理者から参照可能であってもよい。
続くステップU4では、例えば、統括処理部25は、ステップU1において書込まれたデータのファイルパスを、当該ライブラリ装置1の図示しない記憶部や外部のHDD等における媒体4毎に付与された領域に格納する。
このようにステップU1〜U4を経て、媒体4に新たにデータが書込まれる際に、当該媒体4における直前の書込みデータに関する終端ブロック位置が、この直前の書込みデータのメタデータに書込まれる。したがって、媒体4に書込まれた最新(最後尾)のデータを除き、既に当該媒体4に書込まれているデータについては、これらの各メタデータから当該データの終端ブロック位置を取得できる。
なお、本変形例では、最短の近似値としての処理順番に従って、媒体4毎に複数の読出し要求を処理する手法を説明したが、第一の変形例と同様に、処理対象は読出し要求に限られない。また、処理対象となる要求は、書込み要求や、読出し要求と書込み要求とが混在するものであってもよい。
〔4〕効果
このように、本実施形態、第一の変形例、及び、第二の変形例に係る、媒体4をロードしてアクセスを行なうライブラリ装置1では、受信した複数の読出し要求を所定の処理順番にしたがって処理した場合の、各読出し要求の処理に要する処理時間Tを予測する。次に、所定の処理順番にしたがって複数の読出し要求を処理した場合に要する処理時間、すなわち、Tの総和を算出する。このような予測を、設定可能な処理順番の数だけ繰り返し、複数の媒体4に対して複数の読出し要求を処理する際に最短、又は、最短の近似値としての処理時間となる処理順番を決定することにより、複数の読出し要求の処理に要する時間を短縮することができる。
また、本実施形態及び第一の変形例のライブラリ装置1においては、磁気テープ60上のアクセス対象となる複数のデータの位置に基づき処理時間を算出することで、磁気テープ60上の各データの配置やデータの偏りを反映させた処理時間を算出することができる。さらに、本実施形態の予測プログラムは、本ライブラリ装置1が備えるヘッド,ドライブ12,及びロボット等のハードウェア資源の状態や性能を考慮して処理時間を算出することで、より正確な処理時間を算出することが可能となる。
また、第二の変形例のライブラリ装置1においては、最短の近似値としての処理時間となる処理順番を決定することにより、処理順番のすべてのパターンから最短となる処理順番を求める場合に比して、処理順番の決定に要する計算量を抑えることができる。したがって、第二の変形例のライブラリ装置1においては、複数のデータを読出す処理に要する時間をより短縮することができる。
また、媒体4やドライブ12の数の増加に起因してシステム規模が大きくなると、処理順番のパターン数は増大するため、処理順番のすべてのパターンから最短の処理順番を厳密に求めるためには、計算処理能力の高いプロセッサ等が必要となる場合がある。このような場合においても、第二の変形例のライブラリ装置1では、2−opt法等の公知の局所探索法を使用して最短の近似値を求め、略最短となる処理順番を求める。これにより、計算処理能力の高いプロセッサ等を用いることなく、厳密な最短の処理順番に近いものを得ることができる。
〔5〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
上述した一実施形態、及び、第二の変形例では、ライブラリ装置1において、読出し要求を受理した場合に、当該読出し要求の処理順番を決定するものとしたが、これに限られない。また、処理対象とする要求は読出し要求に限定されず、書込み要求を受信してその処理順番を決定するものとしてもよい。
また、上述した一実施形態、及び、第二の変形例では、記憶部103に、読出し要求キュー30,実行待ちキュー31,ロボット使用状況格納テーブル32,ラップ始端終端位置情報33を格納する構成としたが、これに限られない。また、これらの情報は、ライブラリ装置1の図示しない記憶部に格納してもよい。その場合、ホストコンピュータ100は、ライブラリコントローラ2を介し、ライブラリ装置1側からネットワーク経由で必要な情報を取得するものとする。また、上述した一実施形態、及び、第二の変形例では、ホストコンピュータ100が自主的に情報を記憶部103に格納するものとしたが、ライブラリ装置1側からネットワーク経由で記憶部103や図示しないメモリに書込んでもよい。
また、上述した一実施形態、及び、第二の変形例では、図2に示すように、ホストコンピュータ100は、ライブラリコントローラ2を介して、ライブラリ装置1のドライブ12を制御するものとしたが、これに限られない。また、システムの構成はこれに限定されるものではなく、適宜変更して実施できる。
〔6〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
1つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定する処理順番設定部と、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測するサブプロセス処理時間予測部と、
前記サブプロセス処理時間予測部で予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測するアクセス要求処理時間予測部と、
前記処理順番設定部が設定した前記複数の処理順番の各々について、前記一連の処理に要する処理時間を前記アクセス要求処理時間予測部から取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する処理順番決定部と、
を備える、
ことを特徴とする、情報処理装置。
(付記2)
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体上における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも1つである、
ことを特徴とする、付記1記載の情報処理装置。
(付記3)
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも1つである
ことを特徴とする、付記1又は付記2記載の情報処理装置。
(付記4)
前記処理順番決定部は、前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記1〜付記3のいずれか一項に記載の情報処理装置。
(付記5)
1つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、
ことを特徴とする、予測方法。
(付記6)
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも1つである、
ことを特徴とする、付記5記載の予測方法。
(付記7)
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも1つである、
ことを特徴とする、付記5又は付記6記載の予測方法。
(付記8)
前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記5〜付記7のいずれか一項に記載の予測方法。
(付記9)
1つ以上の記憶媒体をロードしてアクセスを行なうライブラリ装置を制御する情報処理装置において、
前記記憶媒体に対する複数のアクセス要求を一連の処理として処理する処理順番を複数設定し、
各アクセス要求の処理を構成する複数のサブプロセスのそれぞれに要する時間を求め、当該アクセス要求の処理に要する処理時間を予測し、
前記予測した各アクセス要求の処理に要する処理時間を用いて、前記一連の処理に要する処理時間を予測し、
前記設定した複数の処理順番の各々について、前記一連の処理に要する処理時間を取得し、前記取得した処理時間の中から処理時間が最短と予測される処理順番を決定する、処理をコンピュータに実行させる、
ことを特徴とする予測プログラム。
(付記10)
前記サブプロセスは、前記アクセス要求の対象であるデータが格納されている前記記憶媒体上における格納位置までのヘッドのシーク、及び当該データの開始位置から終了位置までの読出しまたは書込み動作、のうちの少なくとも1つである、
ことを特徴とする、付記9記載の予測プログラム。
(付記11)
前記サブプロセスは、前記アクセス要求の対象であるデータにアクセスするために前記ライブラリ装置が備えるロボットの動作、及び、前記アクセス要求の対象であるデータが格納されている前記記憶媒体のロード、のうちの少なくとも1つである、
ことを特徴とする、付記9又は付記10記載の予測プログラム。
(付記12)
前記複数のアクセス要求を、前記記憶媒体毎に処理する処理順番を決定する、
ことを特徴とする、付記9〜付記11のいずれか一項に記載の予測プログラム。