(57)【要約】【課題】  記憶装置にその都度アクセスしなくても、該記憶装置に記録されたファイルの読み出しにかかる正確な時間を提供できるシステムや方法を提供する。【解決手段】  このシステムは、ファイルの読み出しにかかる時間を提供する情報提供システムであって、記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得する取得手段と、取得された記録位置の情報を、該ファイルをアクセスするために参照されるインデックスに書き込む記録手段と、ファイルの読み出しにかかる時間の取得要求を受けて、インデックスに書き込まれた記録位置の情報を使用して該時間を計算し、ファイルの読み出しにかかる時間を要求する要求元へ計算した該時間を提供する計算手段とを含む。【選択図】  図４
2016099728.tif 000002
【特許請求の範囲】
【請求項１】
ファイルの読み出しにかかる時間を提供する情報提供システムであって、
記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得する取得手段と、
取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込む記録手段と、
前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算し、前記ファイルの読み出しにかかる時間を要求する要求元へ計算した該時間を提供する計算手段とを含む、情報提供システム。
【請求項２】
前記記憶装置は、磁気テープ媒体であり、前記取得手段は、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、該ファイルの記録開始位置の情報と、該ファイルの記録終了位置の情報とを取得する、請求項１に記載の情報提供システム。
【請求項３】
前記ファイルの記録位置は、磁気テープの長手方向の前記ファイルの記録開始位置および記録終了位置と、該長手方向に垂直な該磁気テープの幅方向の該ファイルの記録開始位置および記録終了位置である、請求項２に記載の情報提供システム。
【請求項４】
前記記憶装置から読み出された前記インデックスを保存する保存手段をさらに含み、前記計算手段は、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項１に記載の情報提供システム。
【請求項５】
前記計算手段は、前記ファイルのデータを読み始めるまでの第１の時間と、該データを読み始めてから読み終えるまでの第２の時間とを計算し、該第１の時間と該第２の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項１に記載の情報提供システム。
【請求項６】
前記ファイルは、第１のデータと、該第１のデータに追記される１以上の第２のデータとを含み、前記取得手段は、前記第１のデータおよび前記１以上の第２のデータの各々につき、前記記録位置の情報を取得し、前記記録手段は、前記インデックスに各前記記録位置の情報を書き込み、前記計算手段は、前記第１のデータおよび前記１以上の第２のデータの各々につき計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する、請求項１に記載の情報提供システム。
【請求項７】
前記磁気テープ媒体がマウントされているか否かを判断する第１の判断手段と、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、前記ファイルが記録された磁気テープ上にあるかどうかを判断する第２の判断手段とをさらに含み、
前記磁気テープ上にあると判断された場合、前記計算手段は、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、残りの該ファイルの読み出しにかかる時間を計算する、請求項２に記載の情報提供システム。
【請求項８】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記第１の判断手段で前記磁気テープ媒体がマウントされていないと判断された場合、前記計算手段は、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項７に記載の情報提供システム。
【請求項９】
ファイルの読み出しにかかる時間を提供する情報提供システムにより実行される方法であって、
記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得するステップと、
取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込むステップと、
前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算するステップと、
前記ファイルの読み出しにかかる時間を要求する要求元へ計算した前記時間を提供するステップとを含む、方法。
【請求項１０】
前記記憶装置は、磁気テープ媒体であり、前記取得するステップでは、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、該ファイルの記録開始位置の情報と、該ファイルの記録終了位置の情報とを取得する、請求項９に記載の方法。
【請求項１１】
前記ファイルの記録位置は、磁気テープの長手方向の前記ファイルの記録開始位置および記録終了位置と、該長手方向に垂直な該磁気テープの幅方向の該ファイルの記録開始位置および記録終了位置である、請求項１０に記載の方法。
【請求項１２】
前記記憶装置から読み出された前記インデックスを保存手段に保存するステップをさらに含み、前記計算するステップでは、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項９に記載の方法。
【請求項１３】
前記計算するステップでは、前記ファイルのデータを読み始めるまでの第１の時間と、該データを読み始めてから読み終えるまでの第２の時間とを計算し、前記提供するステップでは、前記第１の時間と前記第２の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項９に記載の方法。
【請求項１４】
前記ファイルは、第１のデータと、該第１のデータに追記される１以上の第２のデータとを含み、前記取得するステップでは、前記第１のデータおよび前記１以上の第２のデータの各々につき、前記記録位置の情報を取得し、前記書き込むステップでは、前記インデックスに各前記記録位置の情報を書き込み、前記計算するステップでは、前記第１のデータおよび前記１以上の第２のデータの各々につき計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する、請求項９に記載の方法。
【請求項１５】
前記磁気テープ媒体がマウントされているか否かを判断するステップと、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、前記ファイルが記録された磁気テープ上にあるかどうかを判断するステップとをさらに含み、
前記磁気テープ上にあると判断された場合、前記計算するステップでは、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、残りの該ファイルの読み出しにかかる時間を計算する、請求項１０に記載の方法。
【請求項１６】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記マウントされているか否かを判断するステップで前記磁気テープ媒体がマウントされていないと判断された場合、前記計算するステップでは、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項１５に記載の方法。
【請求項１７】
ファイルの読み出しにかかる時間を提供する方法をコンピュータに実行させるためのプログラムであって、
記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得するステップと、
取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込むステップと、
前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算するステップと、
前記ファイルの読み出しにかかる時間を要求する要求元へ計算した前記時間を提供するステップとを前記コンピュータに実行させる、プログラム。
【請求項１８】
前記記憶装置は、磁気テープ媒体であり、前記取得するステップでは、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、該ファイルの記録開始位置の情報と、該ファイルの記録終了位置の情報とを取得する、請求項１７に記載のプログラム。
【請求項１９】
前記ファイルの記録位置は、磁気テープの長手方向の前記ファイルの記録開始位置および記録終了位置と、該長手方向に垂直な該磁気テープの幅方向の該ファイルの記録開始位置および記録終了位置である、請求項１８に記載のプログラム。
【請求項２０】
前記記憶装置から読み出された前記インデックスを保存手段に保存するステップをさらに実行させ、前記計算するステップでは、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項１７に記載のプログラム。
【請求項２１】
前記計算するステップでは、前記ファイルのデータを読み始めるまでの第１の時間と、該データを読み始めてから読み終えるまでの第２の時間とを計算し、前記提供するステップでは、前記第１の時間と前記第２の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項１７に記載のプログラム。
【請求項２２】
前記ファイルは、第１のデータと、該第１のデータに追記される１以上の第２のデータとを含み、前記取得するステップでは、前記第１のデータおよび前記１以上の第２のデータの各々につき、前記記録位置の情報を取得し、前記書き込むステップでは、前記インデックスに各前記記録位置の情報を書き込み、前記計算するステップでは、前記第１のデータおよび前記１以上の第２のデータの各々につき計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する、請求項１７に記載のプログラム。
【請求項２３】
前記磁気テープ媒体がマウントされているか否かを判断するステップと、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、前記ファイルが記録された磁気テープ上にあるかどうかを判断するステップとをさらに実行させ、前記磁気テープ上にあると判断された場合、前記計算するステップでは、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、該ファイルの読み出しにかかる時間を計算する、請求項１８に記載のプログラム。
【請求項２４】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記マウントされているか否かを判断するステップで前記磁気テープ媒体がマウントされていないと判断された場合、前記計算するステップでは、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項２３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルの読み出しにかかる時間を提供するシステム、その提供方法およびその方法を実行させるためのプログラムに関する。
【背景技術】
【０００２】
データを記憶するための記憶装置には、SSD(Solid State Drive)、HHD(Hard Disk Drive)、磁気テープ媒体（以下、単にテープと呼ぶ。）等がある。記憶装置は、データをファイルとして記録し、そのファイルに関する情報（メタ情報）をインデックスとして使用し、ファイルシステムでファイルを管理する。
【０００３】
テープを記憶装置として用いる場合、ファイルシステムとしては、例えばLTFS(Linear Tape File System)が使用される。LTFSのフォーマットでテープにファイルを記録する場合、テープが一方に長く延びる記録媒体であるため、テープの一端から他端までの移動には数分かかり、ファイルがテープ上のどの位置に記録されているかで、読み出し時間が大きく変わる。
【０００４】
Microsoft（登録商標）社が提供するInternet Explorer（登録商標）では、ファイルの転送にかかる時間を、転送を開始してから転送レートを計測し、ファイル・サイズを計測した転送レートで除算して求め、それを表示する等して、ユーザに対してその情報を提供している。
【０００５】
テープでは、ファイルの転送を開始する前に、テープ内のファイルの記録位置まで読み取りヘッドが移動する時間（シーク時間）があり、その間転送にかかる時間を更新することができない。また、LTFSでは、データが追記されている場合、データの断片がテープ上の複数の位置にばらばらに記録されており、読み出す際、それらを全てシークしながら読み出しを行う。このため、ファイルの読み出し開始から終了までの時間を予測しにくく、正確な読み出し時間を提供することもできない。
【０００６】
従来、テープにおいてファイルの読み出しにかかる時間を予測するために、テープ・ライブラリ内のテープに記録されたデータを読み出すときの読み出し時間を計算により算出する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１０／０３５６１７号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
LTFSフォーマットでファイルをテープに記録するとき、そのファイルに関する情報であるインデックスもテープに記録される。インデックスには、ファイル名、データ・サイズ、記録した時間等が含まれている。テープ・ライブラリには、サーバ装置が接続され、読み出し要求や書き込み要求を受けたサーバ装置がテープ・ライブラリに対してファイルの読み出しや書き込みを行うが、その際、サーバ装置に実装されるアプリケーションがテープ上のファイルをLTFSで使用できるように、テープのマウントを行う。テープを一度マウントすると、テープからLTFSが使用するインデックスを読み出し、サーバ装置のキャッシュ上に保存する。
【０００９】
LTFSフォーマットでは、ファイルを追記した場合、図１に示すように、ファイル２を追記するとき、既にファイル３が記録されていると、ファイル２の追記するデータの断片はファイル３の後に記録されることになる。このため、テープ上でファイルの位置がとびとびになる。データの断片に関する情報は、インデックス内に設けたExtentという所定の領域に記録される。なお、Extentには、データの断片に関する情報として、ファイル内のオフセット、テープ上でのブロック番号、バイト数等が保存される。ブロック番号は、テープ上で連番として付される番号であるが、テープ上のファイルの記録位置を示すものではない。
【００１０】
テープ上のファイルの記録位置は、テープの長手方向の位置（以下、LPOSと呼ぶ。）と、その長手方向に対して垂直なテープの幅方向の位置（以下、Wrapと呼ぶ。）とで表される。テープ・ドライブ装置は、WrapとLPOSとを基にデータを読み書きするが、LTFSは、ファイルがどのWrapとLPOSに記録されているかは感知しない。
【００１１】
したがって、上記の特許文献１に記載の方法では、テープ内でのファイルの読み出し時間を計算するために、テープをマウントし、テープ内に記録されたファイルの位置情報を取得する必要があり、また、追記により散在して記録されたデータに対しては、上記のように正確な読み出し時間を提供することができないという問題があった。
【課題を解決するための手段】
【００１２】
本発明は、上記課題に鑑み、ファイルの読み出しにかかる時間を提供する情報提供システムであって、記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得する取得手段と、取得された記録位置の情報を、ファイルにアクセスするために参照されるインデックスに書き込む記録手段と、ファイルの読み出しにかかる時間の取得要求を受けて、インデックスに書き込まれた記録位置の情報を使用して該時間を計算し、ファイルの読み出しにかかる時間を要求する要求元へ計算した該時間を提供する計算手段とを含む、情報提供システムが提供される。
【発明の効果】
【００１３】
本発明によれば、記憶装置にその都度アクセスしなくても、該記憶装置に記録されたファイルの読み出しにかかる正確な時間を提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】テープに記録されるファイルの配置を例示した図。
【図２】情報提供システムの構成例を示した図。
【図３】情報提供システムのソフトウェア構成を例示した図。
【図４】情報提供システムの機能ブロック図。
【図５】記録位置の情報を取得した後にその情報を書き込んだインデックスを例示した図。
【図６】テープにファイルを記録する際の記録位置を説明する図。
【図７】テープにファイルを記録する際の記録位置を説明する図。
【図８】情報提供システムが行う処理の流れを例示したフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明を図面に示した具体的な実施の形態に沿って説明するが、本発明は、後述する実施の形態に限定されるものではない。図２は、情報提供システムの構成例を示した図である。情報提供システムは、ファイルの読み出しにかかる時間の取得要求を受けて、その読み出し時間を計算し、計算した読み出し時間を提供する。この時間は、ディスプレイに表示する等して、ユーザに提示することができる。
【００１６】
情報提供システム１０は、ファイルを記録するための記憶装置と、記憶装置からファイルを読み出す時間を計算し、その計算した時間を提供する情報処理装置とを含む。図２では、記憶装置が、テープ１１と、テープ１１に対してファイルの読み書きを行うテープ・ドライブ装置１２とから構成され、情報処理装置が、テープ・ドライブ装置１２と接続されるサーバ装置１３とされている。なお、この構成は、一例を示したものであり、これに限られるものではない。
【００１７】
したがって、記憶装置は、SSDやHDD等であってもよく、また、情報処理装置も、PC、タブレット端末、ワークステーション等であってもよい。また、記憶装置と情報処理装置はそれぞれ１台ずつではなく、それぞれが２台以上であってもよい。図２では、テープ１１とそのテープ１１が挿入されるテープ・ドライブ装置１２により構成されているが、複数のテープを管理、操作し、複数のテープ・ドライブ装置を組み込んだテープ・ライブラリを使用することもできる。
【００１８】
図２では、テープ・ドライブ装置１２とサーバ装置１３とはケーブル等により接続されているが、これに限られるものではなく、LAN(Local Area Network)やWAN(Wide Area Network)、インターネット等のネットワークにより接続されていてもよい。また、ネットワークは、有線ネットワークであってもよいし、無線ネットワークであってもよい。
【００１９】
テープ１１は、例えば、リールに多重に巻かれた磁気テープをカートリッジ内に収納したものとされ、テープ・ドライブ装置１２は、そのカートリッジを挿入する挿入口を備え、その挿入口へカートリッジを挿入することにより、テープ１１をセットすることができる。また、テープ・ドライブ装置１２は、サーバ装置１３からの命令に基づき、テープ・ドライブ装置１２内にセットしたテープ１１に対してファイルの読み書きを行う。
【００２０】
テープ・ドライブ装置１２は、例えば、サーバ装置１３に実装されるアプリケーションからファイルシステムを介してテープ１１へのファイルの書き込みや読み出しを指示する命令を受け付ける入出力I/Fと、書き込むべきファイルや読み出したファイルを蓄積するメモリと、実際にテープ１１へのファイルの書き込みや読み出しを行うヘッドと、リールを一定の回転数で回転させる駆動部と、テープ・ドライブ装置１２全体の制御を行うコントローラとを含んで構成することができる。
【００２１】
サーバ装置１３は、１台のコンピュータから構成されていてもよいし、複数のコンピュータが互いに接続され、各々のコンピュータがノードとして並列に処理を実行することができるように構成されたものであってもよい。サーバ装置１３は、サーバ装置１３全体の制御を行うCPU１４と、ROM１５と、RAM１６と、HDD１７と、入出力I/F１８とを含んで構成される。これらは、互いにバス１９により接続され、情報のやりとりを行うことができる。
【００２２】
ROM１５は、サーバ装置１３を起動させるためのブート・プログラムやサーバ装置１３に接続されるテープ・ドライブ装置１２等を制御するためのファームウェアを記憶する。RAM１６は、CPU１４に対して作業領域を提供し、処理を高速するためにHDD１７のキャッシュとして使用される。HDD１７は、OSや上記のファイルの読み出し時間を計算し、計算した読み出し時間を提供する処理を行うためのプログラムを記憶する。HDD１７は、そのほか、OS上で動作する各種のアプリケーション・プログラムやそのアプリケーション・プログラムに必要とされるデータ等を記憶することができる。
【００２３】
入出力I/F１８は、テープ・ドライブ装置１２と接続し、テープ１１へのファイルの書き込みや読み出しを指示する命令をアプリケーションからファイルシステムを介して受け付け、テープ・ドライブ装置１２へ出力する。また、入出力I/F１８は、テープ・ドライブ装置１２へ書き込むべきファイルを送り、テープ・ドライブ装置１２を使用してファイルを読み出し、取得する。
【００２４】
テープ１１には、ファイルを管理するためのLTFS等のファイルシステムが利用できるフォーマットで記録され、メタ情報であるインデックスが保存される。サーバ装置１３のファイルシステムは、テープ１１がテープ・ドライブ装置１２に挿入され、テープ１１がマウントされると、テープ１１が保持するインデックスを、入出力I/F１８を介して読み出し、キャッシュ上に保存する。これにより、ファイルシステムは、テープ１１上のファイルへのアプリケーションからの問い合わせ等に対し、応答することができる。
【００２５】
サーバ装置１３は、ハードウェアとして、上記のほかに、外部記憶I/F、ネットワークI/F、入力装置、表示装置、音声入力装置、音声出力装置等を備えることができる。外部記憶I/Fは、外付けHDD等と接続するためのインタフェースで、ネットワークI/Fは、ネットワークと接続するためのインタフェースである。入力装置は、キーボードやマウス等のデータ等を入力するための装置で、表示装置は、ディスプレイ等の処理の状況や処理結果等を表示するための装置である。
【００２６】
サーバ装置１３は、ネットワークに接続され、ネットワークを介してユーザやこの情報提供システムを管理する管理者のコンピュータに接続されていてもよい。
【００２７】
図３は、情報提供システムのソフトウェア構成を例示した図である。サーバ装置１３は、Linux（登録商標）、Windows（登録商標）、MacOS（登録商標）等のOSのほか、OS上で動作するファイルの読み出し時間の取得を要求するアプリケーション２０を実装することができる。アプリケーション２０は、その時間の取得を要求するものであれば、いかなるアプリケーションであってもよい。なお、アプリケーション２０は、上記のユーザや管理者のコンピュータに実装されていてもよい。
【００２８】
テープ１１は、LTFS２１が管理するフォーマットで書かれた１以上のファイルと、LTFS２１が管理するインデックス２２とを含む。サーバ装置１３は、上記のアプリケーション２０、LTFS２１のほか、LTFS２１がキャッシュ２３に読み出したインデックス２２やテープ１１内のファイルへアクセスすることを可能にするデバイス・ドライバ２４を実装する。したがって、詳細には、テープ１１へのファイルの書き込みや読み出しを指示する命令は、アプリケーション２０からLTFS２１およびデバイス・ドライバ２４を介してテープ・ドライブ装置１２へ出力される。図３では、インデックス２２は、既にキャッシュ２３に読み出され、保存されている。
【００２９】
OSとしてLinux（登録商標）を使用する場合について説明する。ファイルの読み出し時間は、アプリケーション２０がioctlシステム・コールにより、その取得を要求することができる。ioctlシステム・コールは、ユーザや管理者が使用するコンピュータからのユーザ・プロセスにより呼び出すことができ、そのほか、デバイス設定の変更やその読み出し等に使用することができる。なお、Windows（登録商標）を使用する場合には、DeviceIoControl()という関数を使用し、このioctlシステム・コールと同様の要求を行うことができる。Ioctlシステム・コールの詳細については、http://www.ibm.com/developerworks/jp/linux/library/l-devctrl-migration/を参照されたい。
【００３０】
ioctlシステム・コールでは、ファイルの読み出し時間を取得するためにioctlコマンド定数（LTFS_FILE_READ_TIME）を定義することができる。LTFS２１には、その定義されたioctlコマンド定数で呼び出される、読み出し時間計算関数（ltfs_file_read_time()）が用意される。
【００３１】
アプリケーション２０は、ioctlシステム・コールの引数として、ファイル名、ファイル・パス、ioctlコマンド定数、ファイルのオフセットとデータ・サイズを用い、ioctlシステム・コールで、LTFS２１内の関数を呼び出す。その関数では、受け取った引数に設定された、ファイル内の読み出したいデータのオフセットとデータ・サイズを基に、読み出し時間を計算し、その結果を構造体にセットして返す。
【００３２】
アプリケーション２０は、ファイルの読み出し時に随時、ioctlシステム・コールを行い、変化する残りの読み出し時間を取得し、表示装置等に表示することができる。
【００３３】
図４は、その処理を実現するための機能ブロック図である。情報提供システムは、その機能部として、取得部３０と、記録部３１と、計算部３２とを含んで構成される。取得部３０は、テープ１１といった記憶装置にファイルを記録した際、そのファイルの記録位置の情報を取得する。テープ１１へのファイルの書き込みは、アプリケーションからの指示を、ファイルシステムを介して受け付け、テープ・ドライブ装置１２が行う。取得部３０は、テープ・ドライブ装置１２が実際に書き込んだテープ１１の位置、具体的には書き込み開始のWrap、LPOS、書き込み終了時のWrap、LPOSを、テープ・ドライブ装置１２から取得する。
【００３４】
Wrap、LPOSは、例えば、テープ・ドライブ装置１２の動作状態を示すセンス・データやモード・ページ・データをSCSI(Small Computer System Interface)コマンドで取得することにより、それらのデータから取得することができる。Wrap、LPOSは、そのほか、書き込みデータを指定して、WrapとLPOSを取得するコマンドをテープ・ドライブ装置１２に実装する方法を採用することもできる。なお、センス・データやモード・ページ・データは、ファイルの記録開始位置および記録終了位置の情報のほか、ヘッドの位置情報も含み、これらのデータからヘッドのWrap、LPOSを取得することができる。
【００３５】
記録部３１は、取得部３０により取得されたファイルの記録位置の情報を、そのファイルをアクセスするために参照されるインデックスに書き込む。LTFS２１は、データを記録する際、インデックス内にExtentを作成する。図５は、そのインデックスの例を示した図である。図５中、太字で示された部分が、作成したExtentであり、その中の斜字で示した部分がファイルの記録位置の情報である。
【００３６】
Extentに書き込む情報は、ファイル内のオフセット(fileoffset)、ファイルの記録を開始したブロック番号(startblock)、バイト数(bytecount)を含み、それに加えて、ファイルの記録開始位置(startwrap、startlpos)、ファイルの記録終了位置(endwrap、endlpos)を含む。
【００３７】
再び図４を参照して、計算部３２は、アプリケーション２０からのファイルの読み出し時間の取得要求を受けて、インデックスに書き込まれたファイルの記録開始位置および記録終了位置の情報と、後述する計算式とを使用して、そのファイルの読み出し時間を計算する。計算部３２は、データの読み始めまでの時間と、読み始めてから読み終わるまでの時間とを計算することができる。
【００３８】
計算部３２は、計算して得られた各時間を、計算結果としてアプリケーション２０に返し、アプリケーション２０が表示装置にその時間を表示させることができる。なお、アプリケーション２０は、時間を表示させることに限られるものではなく、音声にて時間を出力することも可能である。また、ネットワークに接続される他の機器、例えばユーザや管理者が使用するコンピュータのディスプレイ等に表示させることもできるし、当該他の機器が備えるスピーカ等の音声出力装置から音声により出力させてもよい。
【００３９】
図６を参照して、テープ１１へのデータの追記について説明する。テープ・ドライブ装置１２は、テープ１１が挿入され、アプリケーションからの指示を、ファイルシステムを介して受け付け、テープ１１上の指定された記録位置にデータを追記する。追記されるデータは、テープ１１上で前に記録したデータとは離れた別のブロックに記録され、その場所を示す別のExtentがインデックスに追加される。なお、このExtentにも、新たに記録されたデータのWrap、LPOSが記録される。
【００４０】
図６に示す例では、LP3、LP4を、テープ１１の長手方向のデータ記憶領域の記録開始位置、記録終了位置とし、最初のWrapはLP3からLP4へ向けて、次のWrapはその反対のLP4からLP3へ向けて、さらに次のWrapはLP3からLP4へ向けてデータが記録されるようになっている。なお、データは、テープ１１の端のWrapから順番に記録するわけではないが、ここでは分かりやすくするため、上から順に記録するようにしている。
【００４１】
図６では、テープ１１上の位置S1から位置E1へ向けて最初のデータを記録し、他のデータが記録された後、位置S2から位置E2へ向けて追記するデータを記録している。詳細には、最初のデータを、WS1について位置S1からLP3へ向けて記録し、次のWrapについてLP3からLP4へ向けて記録し、さらに次のWrapについてLP4からLP3へ向けて記録し、WE1についてLP3から位置E1へ向けて記録する。また、他のデータを記録した後、追記するデータを、WS2について位置S2からLP4へ向けて記録し、WE2についてLP4から位置E2へ向けて記録する。
【００４２】
取得部３０は、最初のデータ、追記するデータについて記録する際、記録を開始する位置S1、S2の情報を取得し、各データを記録した際、記録を終了する位置E1、E2の情報を取得する。具体的には、位置S1の情報としてWrap=WS1、LPOS=LS1を取得し、位置S2の情報としてWrap=WS2、LPOS=LS2を取得する。また、位置E1の情報としてWrap=WE1、LPOS=LE1を取得し、位置E2の情報としてWrap=WE2、LPOS=LE2を取得する。
【００４３】
記録部３１は、取得部３０が取得した記録位置の情報を、インデックスに作成したExtentに書き込む。最初のデータについてのインデックスのExtentには、位置S1と位置E1のWS1、LS1、WE1、LE1を書き込みし、追記するデータについてのインデックスのExtentには、位置S2と位置E2のWS2、LS2、WE2、LE2を書き込む。
【００４４】
計算部３２は、データの読み始めまでの時間(fileStartReadTime)と、そのデータを読み始めてから読み終える時間(fileLeftReadTime)を、上記のExtentに記録したWrap、LPOSを使用して計算する。位置S1から位置E1に記録された最初のデータについてのfileStartReadTimeは、次の数式１を使用して、fileLeftReadTimeは、次の数式２を使用して計算することができる。
【００４５】
【数１】
2016099728.tif 000003
【００４６】
【数２】
2016099728.tif 000004
【００４７】
上記数式１および数式２中、LP3およびLP4のLPOSをlp3、lp4とし、読み出し速度をSR(LPOS/s)とし、シーク時にヘッドをテープ１１上の所定位置へ移動する速度をSL(LPOS/s)とし、Wrapの移り変わりでWrap nからWrap mへ移る時間を関数TWC(Wn->Wm)としている。また、任意のWrap Wにおいてデータが記録される方向にある端のLPOSがLP3のときはlp3、LP4のときはlp4となる関数をl(W)とし、記録終了位置のWrap=WEnと記録開始位置のWrap=WSnの差が１より大きいときに１とし、そうでないときに０とする関数をf(WEn,WSn)としている。さらに、上記のWEnとWSnとが同じときに０とし、そうでないときに１とする関数をg(WEn,WSn)としている。なお、テープ１１をロードしたときは、LP3にヘッドがあるため、上記数式１では関数l(W)ではなく、lp3を用いている。
【００４８】
上記数式１は、ヘッドが初期位置Wrap=0から記録開始位置のWrapへ移動する時間と、LP3から任意のLPOSへ移動する時間とを加算した式である。上記数式２は、Wrapの移り変わりがある場合にその移り変わりにかかる時間と、Wrapの移り変わりがあり、データが同じWrap内の端から端まで記録されている場合に端から端まで読み出す時間と、Wrapの移り変わりがあり、データが同じWrap内の端から端まで記録されていない場合の記録開始位置から端まで、および、端から記録終了位置まで読み出す時間と、Wrapの移り変わりがない場合の記録開始位置から記録終了位置まで読み出す時間とを加算した式である。
【００４９】
上記数式２は、最初のデータに限らず、追記するデータに対しても適用して、その追記するデータの読み始めから読み終えるまでの時間を計算することができる。ファイルの読み始めから読み終わりまでの時間は、最初のデータおよび追記するデータを読み出す時間のほか、最初のデータの記録終了位置から追記するデータの記録開始位置までヘッドが移動する時間も含まれる。そこで、この時間を含めたファイルの読み終わりまでの時間(fileLeftReadTime)は、次の数式３により求めることができる。なお、数式３中、Nは、最後のExtentの番号を示す。
【００５０】
【数３】
2016099728.tif 000005
【００５１】
最初のデータからすべての追記したデータを読み終えるまでの時間は、上記数式３により計算し、求めることができる。テープ１１が既にマウントされている場合、データを書き込み、読み出すために使用するヘッドの位置は、テープ１１の途中にある場合もある。このとき、アプリケーション２０からファイルの読み出し時間の取得要求を受けた場合、データの途中からファイルの読み始めの位置までヘッドを移動しなければならない。
【００５２】
この場合のヘッドは、例えば、図７に示すように、Extent kに対応するデータが記録された部分(Wcur,Lcur)の上に位置している。なお、Extent kに対応するデータは、上記の最初のデータであってもよいし、追記するデータのいずれであってもよい。ヘッドがこのようにデータの途中にある場合、その位置からS1へ戻る時間は、次の数式４により求めることができる。
【００５３】
【数４】
2016099728.tif 000006
【００５４】
このS1へ戻る時間に上記数式２や数式３のfileLeftReadTimeを加算することで、ファイルの読み出しにかかる時間を求めることができる。
【００５５】
逐次読み出し時間が要求され、その時間を計算して提供する場合、途中の位置から読み終わりまでの時間を計算し、提供する必要がある。Extentデータの途中からそのExtentデータの記録終了位置までの読み出し時間は、その記録終了位置Wrap=WEk、LPOS=LEkを用いて、次の数式５により求めることができる。
【００５６】
【数５】
2016099728.tif 000007
【００５７】
また、Extent k+1以降のExtent Nまでの対応する残りのデータの読み出し時間は、次の数式６により求めることができる。
【００５８】
【数６】
2016099728.tif 000008
【００５９】
上記数式５で求めた時間と、上記数式６で求めた時間とを加算することで、途中から読み終えるまでの残りのデータを読み出す時間を求めることができる。計算部３２は、この数式５および数式６を使用し、逐次計算を行い、変化する残りの読み出し時間を、その時間を要求する要求元に逐次提供することができる。
【００６０】
ここでは、残りのデータを読み出す時間を求めたが、これに限られるものではなく、上記数式２により全部のデータの読み出し時間を求め、その途中までの読み出し時間を求め、差し引くことにより、残りのデータを読み出す時間を求めてもよい。
【００６１】
図８を参照して、情報提供システムが行う処理の流れについて説明する。ステップ８００から処理を開始し、ステップ８０５では、ファイルの読み出しにかかる時間の取得要求を出す要求元であるアプリケーション２０から、ファイル名、ファイルのオフセットおよびデータの長さを指定したファイルの読み出し時間の取得要求を受け付ける。具体的には、上記のこれらを引数としたioctlシステム・コールによる問い合わせを受ける。
【００６２】
ステップ８１０では、その要求で指定されたファイル名、ファイルのオフセット、データの長さに基づき、インデックス内の参照するExtentを決定する。インデックスには、ファイル名やデータの長さ等の属性情報に加え、Extentが設けられ、Extentにファイルのオフセットが書き込まれている。このため、これらの属性情報等に基づき、参照するExtentを決定することができる。
【００６３】
ステップ８１５では、決定したExtentからデータの記録開始位置、記録終了位置の情報を取得する。具体的には、読み始めおよび読み終わりのWrap、LPOSを取得する。ステップ８２０では、テープ１１がマウントされているかどうかを判断する。マウントされている場合、ステップ８２５へ進み、テープ・ドライブ装置１２から取得した情報により現在のヘッドの位置を確認し、ステップ８３０へ進む。マウントされていない場合、直接ステップ８３０へ進む。現在のヘッドの位置は、上記のSCSIコマンドでセンス・データ等を取得し、そのセンス・データ等からWrap、LPOSの情報として取得することができる。
【００６４】
ステップ８３０では、予め設定されたヘッドの初期位置または現在のヘッドの位置の情報、取得したファイルの記録開始位置および記録終了位置の情報と、上記の各数式とを用い、fileStartReadTimeとfileLeftReadTimeとを計算する。ステップ８３５では、計算部３２は、計算して得られたfileStartReadTimeとfileLeftReadTimeとを、要求したアプリケーション２０へ返す。アプリケーション２０は、その情報をディスプレイ等の表示装置に表示し、ステップ８４０でこの処理を終了する。
【００６５】
これまで、１つのアプリケーション２０のみからファイルを読み出す際の読み出し時間を要求することについて説明してきたが、複数のアプリケーションから同じファイルを読み出す場合も考えられる。この場合、アプリケーションがその都度読み出し時間を問い合わせ、その問い合わせ時点での読み出し時間の見積もりを返すことができる。
【００６６】
複数のノードからアクセス可能なテープは、一度マウントされると、そのインデックスは、複数のノードが共有する共有ディスク上に保存される。このため、各ノードが備える各アプリケーションから同じファイルを読み出す際、共有ディスク上に保存されたインデックス内のExtentの情報を読み出し、ファイルの読み出し時間を計算することができる。
【００６７】
複数のテープと複数のドライブ装置とが組み込まれたテープ・ライブラリを使用する場合、テープがマウントされていないとき、そのテープをテープ・ドライブ装置へ移動し、セットする時間も発生する。このため、マウントしていないテープについては、ライブラリ内の移動時間を、fileStartReadTimeに加算することができる。
【００６８】
このライブラリ内の移動時間は、ファイルの拡張属性に、計算した時間を設定することも可能である。この場合、拡張属性を参照し、その設定された時間を取得し、fileStartReadTimeに加算することができる。この時間は、予め設定しておいてもよいし、定期的に計算を行い、得られた時間を定期的に設定してもよいし、要求に応じて設定してもよい。
【００６９】
また、上記のライブラリ内の移動時間だけではなく、マウントしていないファイルの読み出し時間も事前に計算し、ファイルの拡張属性に設定しておくことも可能である。これにより、ファイルの読み出しにかかる正確な時間をより早く提供することができる。
【００７０】
なお、OSとしてUnix（登録商標）を使用する場合、システム・コマンドであるattr -gコマンドにより、上記のファイルの拡張属性に設定した値を読み出し、取得することができる。また、OSとしてWindows（登録商標）を使用する場合は、API(Application Programming Interface)を使用して、上記のファイルの拡張属性に設定した値を取得することができる。OSとしてWindows（登録商標）を使用する場合、拡張属性を読み出す機能を付与するIBM社が提供するIBM LTFS Toolsというソフトウェアを用いることができる。
【００７１】
上記のキャッシュ２３は、テープ１１から読み出されたインデックスを保存する保存手段として用いることができ、計算部３２は、そのインデックスを使用してファイルの読み出しにかかる時間を計算することができる。上記のテープ１１がマウントされているか否かの判断は、判断部を設け、その判断部により行うことができる。また、別途判断部を設け、テープ１１がマウントされていると判断した場合、ヘッドが、ファイルが記録されたテープ１１上にあるかどうかを判断することができる。
【００７２】
このように、インデックスのExtentに、テープ上のファイルの物理的な記録開始位置および記録終了位置を記録しておき、ファイルの読み出し時間の要求があった場合に、そのExtentからそれらの位置の情報を読み出し、読み出し時間を計算して返すことで、その都度テープにアクセスすることなく、ファイルの読み出し時間を提供することができる。また、追記されるデータが散在しているファイルでも、その正確な読み出し時間を提供することができる。
【００７３】
これまで、本発明の情報提供システム、情報提供方法およびプログラムについて、図面を参照して詳細に説明してきたが、他の実施形態や、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。したがって、上記のプログラムを記録する記録媒体やそのプログラムを、ネットワーク等を介して提供するサーバ装置等も提供することができるものである。
【符号の説明】
【００７４】
１０…情報提供システム、１１…テープ、１２…テープ・ドライブ装置、１３…サーバ装置、１４…CPU、１５…ROM、１６…RAM、１７…HDD、１８…入出力I/F、１９…バス、２０…アプリケーション、２１…LTFS、２２…インデックス、２３…キャッシュ、２４…デバイス・ドライバ、３０…取得部、３１…記録部、３２…計算部
【図１】
2016099728.tif 000009
【図２】
2016099728.tif 000010
【図３】
2016099728.tif 000011
【図４】
2016099728.tif 000012
【図５】
2016099728.tif 000013
【図６】
2016099728.tif 000014
【図７】
2016099728.tif 000015
【図８】
2016099728.tif 000016