特許第6242326号(P6242326)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6242326情報提供システム、情報提供方法およびプログラム
<>
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000008
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000009
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000010
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000011
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000012
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000013
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000014
  • 特許6242326-情報提供システム、情報提供方法およびプログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6242326
(24)【登録日】2017年11月17日
(45)【発行日】2017年12月6日
(54)【発明の名称】情報提供システム、情報提供方法およびプログラム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20171127BHJP
   G06F 12/00 20060101ALI20171127BHJP
【FI】
   G06F3/06 303C
   G06F3/06 301J
   G06F3/06 302J
   G06F3/06 304N
   G06F12/00 520A
【請求項の数】15
【全頁数】18
(21)【出願番号】特願2014-234793(P2014-234793)
(22)【出願日】2014年11月19日
(65)【公開番号】特開2016-99728(P2016-99728A)
(43)【公開日】2016年5月30日
【審査請求日】2016年1月12日
【審判番号】不服2016-14411(P2016-14411/J1)
【審判請求日】2016年9月27日
【早期審査対象出願】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】山本 紀子
(72)【発明者】
【氏名】長谷川 徹
(72)【発明者】
【氏名】渡邊 輝江
(72)【発明者】
【氏名】三間 慎介
(72)【発明者】
【氏名】板垣 浩
【合議体】
【審判長】 和田 志郎
【審判官】 高瀬 勤
【審判官】 千葉 輝久
(56)【参考文献】
【文献】 米国特許出願公開第2012/0323934(US,A1)
【文献】 国際公開第2010/035617(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06
G06F12/00
(57)【特許請求の範囲】
【請求項1】
ファイルの読み出しにかかる時間を提供する情報提供システムであって、
記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得する取得手段と、
取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込む記録手段と、
前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算し、前記ファイルの読み出しにかかる時間を要求する要求元へ計算した該時間を提供する計算手段とを含み、
前記記憶装置は、長手方向の一端と他端との間を、該長手方向に垂直な幅方向の位置に応じて記録方向を変えて記録される磁気テープ媒体であり、
前記ファイルは、第1のデータと、前記第1のデータに追記され、該第1のデータが記録される前記磁気テープ媒体上のブロックから離れた別のブロックに記録される1以上の第2のデータとを含み、
前記取得手段は、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記長手方向のデータの記録開始位置および記録終了位置の情報と、前記幅方向のデータの記録開始位置および記録終了位置の情報とを取得し、
前記記録手段は、前記インデックスに前記第1のデータおよび前記1以上の第2のデータの各々の記録開始位置および記録終了位置の情報を書き込み、
前記計算手段は、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記幅方向のデータの記録開始位置および記録終了位置の関数を含む計算式を用いて計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する、情報提供システム。
【請求項2】
前記記憶装置から読み出された前記インデックスを保存する保存手段をさらに含み、前記計算手段は、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項1に記載の情報提供システム。
【請求項3】
前記計算手段は、前記ファイルのデータを読み始めるまでの第1の時間と、該データを読み始めてから読み終えるまでの第2の時間とを計算し、該第1の時間と該第2の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項1または2に記載の情報提供システム。
【請求項4】
前記磁気テープ媒体がマウントされているか否かを判断する第1の判断手段と、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、磁気テープの前記ファイルが記録された部分上にあるかどうかを判断する第2の判断手段とをさらに含み、
前記磁気テープの前記ファイルが記録された部分上にあると判断された場合、前記計算手段は、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、前記ファイルの残りの部分の読み出しにかかる時間を計算する、請求項1〜のいずれか1項に記載の情報提供システム。
【請求項5】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記第1の判断手段で前記磁気テープ媒体がマウントされていないと判断された場合、前記計算手段は、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項に記載の情報提供システム。
【請求項6】
ファイルの読み出しにかかる時間を提供する情報提供システムにより実行される方法であって、前記情報提供システムが、取得手段と、記録手段と、計算手段とを含み、
記憶装置にファイルを記録した際、前記取得手段が、該ファイルの記録位置の情報を取得するステップと、
前記記録手段が、取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込むステップと、
前記計算手段が、前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算するステップと、
前記計算手段が、前記ファイルの読み出しにかかる時間を要求する要求元へ計算した前記時間を提供するステップとを含み、
前記記憶装置は、長手方向の一端と他端との間を、該長手方向に垂直な幅方向の位置に応じて記録方向を変えて記録される磁気テープ媒体であり、
前記ファイルは、第1のデータと、前記第1のデータに追記され、該第1のデータが記録される前記磁気テープ媒体上のブロックから離れた別のブロックに記録される1以上の第2のデータとを含み、
前記取得するステップでは、前記取得手段が、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記長手方向のデータの記録開始位置および記録終了位置の情報と、前記幅方向のデータの記録開始位置および記録終了位置の情報とを取得し、
前記書き込むステップでは、前記記録手段が、前記インデックスに前記第1のデータおよび前記1以上の第2のデータの各々の記録開始位置および記録終了位置の情報を書き込み、
前記計算するステップでは、前記計算手段が、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記幅方向のデータの記録開始位置および記録終了位置の関数を含む計算式を用いて計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する、方法。
【請求項7】
前記記憶装置から読み出された前記インデックスを保存手段に保存するステップをさらに含み、前記計算するステップでは、前記計算手段が、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項に記載の方法。
【請求項8】
前記計算するステップでは、前記計算手段が、前記ファイルのデータを読み始めるまでの第1の時間と、該データを読み始めてから読み終えるまでの第2の時間とを計算し、前記提供するステップでは、前記第1の時間と前記第2の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項またはに記載の方法。
【請求項9】
前記情報提供システムは、第1の判断手段と、第2の判断手段とをさらに含み、
前記第1の判断手段が、前記磁気テープ媒体がマウントされているか否かを判断するステップと、前記第2の判断手段が、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、磁気テープの前記ファイルが記録された部分上にあるかどうかを判断するステップとをさらに含み、
前記磁気テープの前記ファイルが記録された部分上にあると判断された場合、前記計算するステップでは、前記計算手段が、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、前記ファイルの残りの部分の読み出しにかかる時間を計算する、請求項のいずれか1項に記載の方法。
【請求項10】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記マウントされているか否かを判断するステップで前記磁気テープ媒体がマウントされていないと判断された場合、前記計算するステップでは、前記計算手段が、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項に記載の方法。
【請求項11】
ファイルの読み出しにかかる時間を提供する方法をコンピュータに実行させるためのプログラムであって、
記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得するステップと、
取得された前記記録位置の情報を、前記ファイルにアクセスするために参照されるインデックスに書き込むステップと、
前記ファイルの読み出しにかかる時間の取得要求を受けて、前記インデックスに書き込まれた前記記録位置の情報を使用して該時間を計算するステップと、
前記ファイルの読み出しにかかる時間を要求する要求元へ計算した前記時間を提供するステップとを前記コンピュータに実行させ、
前記記憶装置は、長手方向の一端と他端との間を、該長手方向に垂直な幅方向の位置に応じて記録方向を変えて記録される磁気テープ媒体であり、
前記ファイルは、第1のデータと、前記第1のデータに追記され、該第1のデータが記録される前記磁気テープ媒体上のブロックから離れた別のブロックに記録される1以上の第2のデータとを含み、
前記取得するステップでは、前記ファイルを前記磁気テープ媒体に記録するテープ・ドライブ装置から、該ファイルの記録位置の情報として、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記長手方向のデータの記録開始位置および記録終了位置の情報と、前記幅方向のデータの記録開始位置および記録終了位置の情報とを取得し、
前記書き込むステップでは、前記インデックスに前記第1のデータおよび前記1以上の第2のデータの各々の記録開始位置および記録終了位置の情報を書き込み、
前記計算するステップでは、前記第1のデータおよび前記1以上の第2のデータの各々につき、前記幅方向のデータの記録開始位置および記録終了位置の関数を含む計算式を用いて計算した各データの読み出しにかかる時間を加算して、該ファイルの読み出しにかかる時間を計算する処理を実行させる、プログラム。
【請求項12】
前記記憶装置から読み出された前記インデックスを保存手段に保存するステップをさらに実行させ、前記計算するステップでは、前記保存手段に保存された前記インデックスを使用して前記ファイルの読み出しにかかる時間を計算する、請求項11に記載のプログラム。
【請求項13】
前記計算するステップでは、前記ファイルのデータを読み始めるまでの第1の時間と、該データを読み始めてから読み終えるまでの第2の時間とを計算し、前記提供するステップでは、前記第1の時間と前記第2の時間とを、前記ファイルの読み出しにかかる時間として提供する、請求項11または12に記載のプログラム。
【請求項14】
前記磁気テープ媒体がマウントされているか否かを判断するステップと、前記磁気テープ媒体がマウントされていると判断された場合に、前記テープ・ドライブ装置が読み書きを行うために使用するヘッドが、磁気テープの前記ファイルが記録された部分上にあるかどうかを判断するステップとをさらに実行させ、前記磁気テープの前記ファイルが記録された部分上にあると判断された場合、前記計算するステップでは、前記ヘッドの現在位置を前記ファイルの読み始めの位置として、前記ファイルの残りの部分の読み出しにかかる時間を計算する、請求項1113のいずれか1項に記載のプログラム。
【請求項15】
前記インデックスは、前記磁気テープ媒体をマウントするために該磁気テープ媒体を移動する時間の情報を含み、
前記マウントされているか否かを判断するステップで前記磁気テープ媒体がマウントされていないと判断された場合、前記計算するステップでは、前記磁気テープ媒体を移動する時間を加算して、前記ファイルの読み出しにかかる時間を計算する、請求項14に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファイルの読み出しにかかる時間を提供するシステム、その提供方法およびその方法を実行させるためのプログラムに関する。
【背景技術】
【0002】
データを記憶するための記憶装置には、SSD(Solid State Drive)、HDD(Hard Disk Drive)、磁気テープ媒体(以下、単にテープと呼ぶ。)等がある。記憶装置は、データをファイルとして記録し、そのファイルに関する情報(メタ情報)をインデックスとして使用し、ファイルシステムでファイルを管理する。
【0003】
テープを記憶装置として用いる場合、ファイルシステムとしては、例えばLTFS(Linear Tape File System)が使用される。LTFSのフォーマットでテープにファイルを記録する場合、テープが一方に長く延びる記録媒体であるため、テープの一端から他端までの移動には数分かかり、ファイルがテープ上のどの位置に記録されているかで、読み出し時間が大きく変わる。
【0004】
Microsoft(登録商標)社が提供するInternet Explorer(登録商標)では、ファイルの転送にかかる時間を、転送を開始してから転送レートを計測し、ファイル・サイズを計測した転送レートで除算して求め、それを表示する等して、ユーザに対してその情報を提供している。
【0005】
テープでは、ファイルの転送を開始する前に、テープ内のファイルの記録位置まで読み取りヘッドが移動する時間(シーク時間)があり、その間転送にかかる時間を更新することができない。また、LTFSでは、データが追記されている場合、データの断片がテープ上の複数の位置にばらばらに記録されており、読み出す際、それらを全てシークしながら読み出しを行う。このため、ファイルの読み出し開始から終了までの時間を予測しにくく、正確な読み出し時間を提供することもできない。
【0006】
従来、テープにおいてファイルの読み出しにかかる時間を予測するために、テープ・ライブラリ内のテープに記録されたデータを読み出すときの読み出し時間を計算により算出する方法が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公開第2010/035617号
【発明の概要】
【発明が解決しようとする課題】
【0008】
LTFSフォーマットでファイルをテープに記録するとき、そのファイルに関する情報であるインデックスもテープに記録される。インデックスには、ファイル名、データ・サイズ、記録した時間等が含まれている。テープ・ライブラリには、サーバ装置が接続され、読み出し要求や書き込み要求を受けたサーバ装置がテープ・ライブラリに対してファイルの読み出しや書き込みを行うが、その際、サーバ装置に実装されるアプリケーションがテープ上のファイルをLTFSで使用できるように、テープのマウントを行う。テープを一度マウントすると、テープからLTFSが使用するインデックスを読み出し、サーバ装置のキャッシュ上に保存する。
【0009】
LTFSフォーマットでは、ファイルを追記した場合、図1に示すように、ファイル2を追記するとき、既にファイル3が記録されていると、ファイル2の追記するデータの断片はファイル3の後に記録されることになる。このため、テープ上でファイルの位置がとびとびになる。データの断片に関する情報は、インデックス内に設けたExtentという所定の領域に記録される。なお、Extentには、データの断片に関する情報として、ファイル内のオフセット、テープ上でのブロック番号、バイト数等が保存される。ブロック番号は、テープ上で連番として付される番号であるが、テープ上のファイルの記録位置を示すものではない。
【0010】
テープ上のファイルの記録位置は、テープの長手方向の位置(以下、LPOSと呼ぶ。)と、その長手方向に対して垂直なテープの幅方向の位置(以下、Wrapと呼ぶ。)とで表される。テープ・ドライブ装置は、WrapとLPOSとを基にデータを読み書きするが、LTFSは、ファイルがどのWrapとLPOSに記録されているかは感知しない。
【0011】
したがって、上記の特許文献1に記載の方法では、テープ内でのファイルの読み出し時間を計算するために、テープをマウントし、テープ内に記録されたファイルの位置情報を取得する必要があり、また、追記により散在して記録されたデータに対しては、上記のように正確な読み出し時間を提供することができないという問題があった。
【課題を解決するための手段】
【0012】
本発明は、上記課題に鑑み、ファイルの読み出しにかかる時間を提供する情報提供システムであって、記憶装置にファイルを記録した際、該ファイルの記録位置の情報を取得する取得手段と、取得された記録位置の情報を、ファイルにアクセスするために参照されるインデックスに書き込む記録手段と、ファイルの読み出しにかかる時間の取得要求を受けて、インデックスに書き込まれた記録位置の情報を使用して該時間を計算し、ファイルの読み出しにかかる時間を要求する要求元へ計算した該時間を提供する計算手段とを含む、情報提供システムが提供される。
【発明の効果】
【0013】
本発明によれば、記憶装置にその都度アクセスしなくても、該記憶装置に記録されたファイルの読み出しにかかる正確な時間を提供することが可能となる。
【図面の簡単な説明】
【0014】
図1】テープに記録されるファイルの配置を例示した図。
図2】情報提供システムの構成例を示した図。
図3】情報提供システムのソフトウェア構成を例示した図。
図4】情報提供システムの機能ブロック図。
図5】記録位置の情報を取得した後にその情報を書き込んだインデックスを例示した図。
図6】テープにファイルを記録する際の記録位置を説明する図。
図7】テープにファイルを記録する際の記録位置を説明する図。
図8】情報提供システムが行う処理の流れを例示したフローチャート。
【発明を実施するための形態】
【0015】
以下、本発明を図面に示した具体的な実施の形態に沿って説明するが、本発明は、後述する実施の形態に限定されるものではない。図2は、情報提供システムの構成例を示した図である。情報提供システムは、ファイルの読み出しにかかる時間の取得要求を受けて、その読み出し時間を計算し、計算した読み出し時間を提供する。この時間は、ディスプレイに表示する等して、ユーザに提示することができる。
【0016】
情報提供システム10は、ファイルを記録するための記憶装置と、記憶装置からファイルを読み出す時間を計算し、その計算した時間を提供する情報処理装置とを含む。図2では、記憶装置が、テープ11と、テープ11に対してファイルの読み書きを行うテープ・ドライブ装置12とから構成され、情報処理装置が、テープ・ドライブ装置12と接続されるサーバ装置13とされている。なお、この構成は、一例を示したものであり、これに限られるものではない。
【0017】
したがって、記憶装置は、SSDやHDD等であってもよく、また、情報処理装置も、PC、タブレット端末、ワークステーション等であってもよい。また、記憶装置と情報処理装置はそれぞれ1台ずつではなく、それぞれが2台以上であってもよい。図2では、テープ11とそのテープ11が挿入されるテープ・ドライブ装置12により構成されているが、複数のテープを管理、操作し、複数のテープ・ドライブ装置を組み込んだテープ・ライブラリを使用することもできる。
【0018】
図2では、テープ・ドライブ装置12とサーバ装置13とはケーブル等により接続されているが、これに限られるものではなく、LAN(Local Area Network)やWAN(Wide Area Network)、インターネット等のネットワークにより接続されていてもよい。また、ネットワークは、有線ネットワークであってもよいし、無線ネットワークであってもよい。
【0019】
テープ11は、例えば、リールに多重に巻かれた磁気テープをカートリッジ内に収納したものとされ、テープ・ドライブ装置12は、そのカートリッジを挿入する挿入口を備え、その挿入口へカートリッジを挿入することにより、テープ11をセットすることができる。また、テープ・ドライブ装置12は、サーバ装置13からの命令に基づき、テープ・ドライブ装置12内にセットしたテープ11に対してファイルの読み書きを行う。
【0020】
テープ・ドライブ装置12は、例えば、サーバ装置13に実装されるアプリケーションからファイルシステムを介してテープ11へのファイルの書き込みや読み出しを指示する命令を受け付ける入出力I/Fと、書き込むべきファイルや読み出したファイルを蓄積するメモリと、実際にテープ11へのファイルの書き込みや読み出しを行うヘッドと、リールを一定の回転数で回転させる駆動部と、テープ・ドライブ装置12全体の制御を行うコントローラとを含んで構成することができる。
【0021】
サーバ装置13は、1台のコンピュータから構成されていてもよいし、複数のコンピュータが互いに接続され、各々のコンピュータがノードとして並列に処理を実行することができるように構成されたものであってもよい。サーバ装置13は、サーバ装置13全体の制御を行うCPU14と、ROM15と、RAM16と、HDD17と、入出力I/F18とを含んで構成される。これらは、互いにバス19により接続され、情報のやりとりを行うことができる。
【0022】
ROM15は、サーバ装置13を起動させるためのブート・プログラムやサーバ装置13に接続されるテープ・ドライブ装置12等を制御するためのファームウェアを記憶する。RAM16は、CPU14に対して作業領域を提供し、処理を高速するためにHDD17のキャッシュとして使用される。HDD17は、OSや上記のファイルの読み出し時間を計算し、計算した読み出し時間を提供する処理を行うためのプログラムを記憶する。HDD17は、そのほか、OS上で動作する各種のアプリケーション・プログラムやそのアプリケーション・プログラムに必要とされるデータ等を記憶することができる。
【0023】
入出力I/F18は、テープ・ドライブ装置12と接続し、テープ11へのファイルの書き込みや読み出しを指示する命令をアプリケーションからファイルシステムを介して受け付け、テープ・ドライブ装置12へ出力する。また、入出力I/F18は、テープ・ドライブ装置12へ書き込むべきファイルを送り、テープ・ドライブ装置12を使用してファイルを読み出し、取得する。
【0024】
テープ11には、ファイルを管理するためのLTFS等のファイルシステムが利用できるフォーマットで記録され、メタ情報であるインデックスが保存される。サーバ装置13のファイルシステムは、テープ11がテープ・ドライブ装置12に挿入され、テープ11がマウントされると、テープ11が保持するインデックスを、入出力I/F18を介して読み出し、キャッシュ上に保存する。これにより、ファイルシステムは、テープ11上のファイルへのアプリケーションからの問い合わせ等に対し、応答することができる。
【0025】
サーバ装置13は、ハードウェアとして、上記のほかに、外部記憶I/F、ネットワークI/F、入力装置、表示装置、音声入力装置、音声出力装置等を備えることができる。外部記憶I/Fは、外付けHDD等と接続するためのインタフェースで、ネットワークI/Fは、ネットワークと接続するためのインタフェースである。入力装置は、キーボードやマウス等のデータ等を入力するための装置で、表示装置は、ディスプレイ等の処理の状況や処理結果等を表示するための装置である。
【0026】
サーバ装置13は、ネットワークに接続され、ネットワークを介してユーザやこの情報提供システムを管理する管理者のコンピュータに接続されていてもよい。
【0027】
図3は、情報提供システムのソフトウェア構成を例示した図である。サーバ装置13は、Linux(登録商標)、Windows(登録商標)、MacOS(登録商標)等のOSのほか、OS上で動作するファイルの読み出し時間の取得を要求するアプリケーション20を実装することができる。アプリケーション20は、その時間の取得を要求するものであれば、いかなるアプリケーションであってもよい。なお、アプリケーション20は、上記のユーザや管理者のコンピュータに実装されていてもよい。
【0028】
テープ11は、LTFS21が管理するフォーマットで書かれた1以上のファイルと、LTFS21が管理するインデックス22とを含む。サーバ装置13は、上記のアプリケーション20、LTFS21のほか、LTFS21がキャッシュ23に読み出したインデックス22やテープ11内のファイルへアクセスすることを可能にするデバイス・ドライバ24を実装する。したがって、詳細には、テープ11へのファイルの書き込みや読み出しを指示する命令は、アプリケーション20からLTFS21およびデバイス・ドライバ24を介してテープ・ドライブ装置12へ出力される。図3では、インデックス22は、既にキャッシュ23に読み出され、保存されている。
【0029】
OSとしてLinux(登録商標)を使用する場合について説明する。ファイルの読み出し時間は、アプリケーション20がioctlシステム・コールにより、その取得を要求することができる。ioctlシステム・コールは、ユーザや管理者が使用するコンピュータからのユーザ・プロセスにより呼び出すことができ、そのほか、デバイス設定の変更やその読み出し等に使用することができる。なお、Windows(登録商標)を使用する場合には、DeviceIoControl()という関数を使用し、このioctlシステム・コールと同様の要求を行うことができる。Ioctlシステム・コールの詳細については、http://www.ibm.com/developerworks/jp/linux/library/l-devctrl-migration/を参照されたい。
【0030】
ioctlシステム・コールでは、ファイルの読み出し時間を取得するためにioctlコマンド定数(LTFS_FILE_READ_TIME)を定義することができる。LTFS21には、その定義されたioctlコマンド定数で呼び出される、読み出し時間計算関数(ltfs_file_read_time())が用意される。
【0031】
アプリケーション20は、ioctlシステム・コールの引数として、ファイル名、ファイル・パス、ioctlコマンド定数、ファイルのオフセットとデータ・サイズを用い、ioctlシステム・コールで、LTFS21内の関数を呼び出す。その関数では、受け取った引数に設定された、ファイル内の読み出したいデータのオフセットとデータ・サイズを基に、読み出し時間を計算し、その結果を構造体にセットして返す。
【0032】
アプリケーション20は、ファイルの読み出し時に随時、ioctlシステム・コールを行い、変化する残りの読み出し時間を取得し、表示装置等に表示することができる。
【0033】
図4は、その処理を実現するための機能ブロック図である。情報提供システムは、その機能部として、取得部30と、記録部31と、計算部32とを含んで構成される。取得部30は、テープ11といった記憶装置にファイルを記録した際、そのファイルの記録位置の情報を取得する。テープ11へのファイルの書き込みは、アプリケーションからの指示を、ファイルシステムを介して受け付け、テープ・ドライブ装置12が行う。取得部30は、テープ・ドライブ装置12が実際に書き込んだテープ11の位置、具体的には書き込み開始のWrap、LPOS、書き込み終了時のWrap、LPOSを、テープ・ドライブ装置12から取得する。
【0034】
Wrap、LPOSは、例えば、テープ・ドライブ装置12の動作状態を示すセンス・データやモード・ページ・データをSCSI(Small Computer System Interface)コマンドで取得することにより、それらのデータから取得することができる。Wrap、LPOSは、そのほか、書き込みデータを指定して、WrapとLPOSを取得するコマンドをテープ・ドライブ装置12に実装する方法を採用することもできる。なお、センス・データやモード・ページ・データは、ファイルの記録開始位置および記録終了位置の情報のほか、ヘッドの位置情報も含み、これらのデータからヘッドのWrap、LPOSを取得することができる。
【0035】
記録部31は、取得部30により取得されたファイルの記録位置の情報を、そのファイルをアクセスするために参照されるインデックスに書き込む。LTFS21は、データを記録する際、インデックス内にExtentを作成する。図5は、そのインデックスの例を示した図である。図5中、太字で示された部分が、作成したExtentであり、その中の斜字で示した部分がファイルの記録位置の情報である。
【0036】
Extentに書き込む情報は、ファイル内のオフセット(fileoffset)、ファイルの記録を開始したブロック番号(startblock)、バイト数(bytecount)を含み、それに加えて、ファイルの記録開始位置(startwrap、startlpos)、ファイルの記録終了位置(endwrap、endlpos)を含む。
【0037】
再び図4を参照して、計算部32は、アプリケーション20からのファイルの読み出し時間の取得要求を受けて、インデックスに書き込まれたファイルの記録開始位置および記録終了位置の情報と、後述する計算式とを使用して、そのファイルの読み出し時間を計算する。計算部32は、データの読み始めまでの時間と、読み始めてから読み終わるまでの時間とを計算することができる。
【0038】
計算部32は、計算して得られた各時間を、計算結果としてアプリケーション20に返し、アプリケーション20が表示装置にその時間を表示させることができる。なお、アプリケーション20は、時間を表示させることに限られるものではなく、音声にて時間を出力することも可能である。また、ネットワークに接続される他の機器、例えばユーザや管理者が使用するコンピュータのディスプレイ等に表示させることもできるし、当該他の機器が備えるスピーカ等の音声出力装置から音声により出力させてもよい。
【0039】
図6を参照して、テープ11へのデータの追記について説明する。テープ・ドライブ装置12は、テープ11が挿入され、アプリケーションからの指示を、ファイルシステムを介して受け付け、テープ11上の指定された記録位置にデータを追記する。追記されるデータは、テープ11上で前に記録したデータとは離れた別のブロックに記録され、その場所を示す別のExtentがインデックスに追加される。なお、このExtentにも、新たに記録されたデータのWrap、LPOSが記録される。
【0040】
図6に示す例では、LP3、LP4を、テープ11の長手方向のデータ記憶領域の記録開始位置、記録終了位置とし、最初のWrapはLP3からLP4へ向けて、次のWrapはその反対のLP4からLP3へ向けて、さらに次のWrapはLP3からLP4へ向けてデータが記録されるようになっている。なお、データは、テープ11の端のWrapから順番に記録するわけではないが、ここでは分かりやすくするため、上から順に記録するようにしている。
【0041】
図6では、テープ11上の位置S1から位置E1へ向けて最初のデータを記録し、他のデータが記録された後、位置S2から位置E2へ向けて追記するデータを記録している。詳細には、最初のデータを、WS1について位置S1からLP3へ向けて記録し、次のWrapについてLP3からLP4へ向けて記録し、さらに次のWrapについてLP4からLP3へ向けて記録し、WE1についてLP3から位置E1へ向けて記録する。また、他のデータを記録した後、追記するデータを、WS2について位置S2からLP4へ向けて記録し、WE2についてLP4から位置E2へ向けて記録する。
【0042】
取得部30は、最初のデータ、追記するデータについて記録する際、記録を開始する位置S1、S2の情報を取得し、各データを記録した際、記録を終了する位置E1、E2の情報を取得する。具体的には、位置S1の情報としてWrap=WS1、LPOS=LS1を取得し、位置S2の情報としてWrap=WS2、LPOS=LS2を取得する。また、位置E1の情報としてWrap=WE1、LPOS=LE1を取得し、位置E2の情報としてWrap=WE2、LPOS=LE2を取得する。
【0043】
記録部31は、取得部30が取得した記録位置の情報を、インデックスに作成したExtentに書き込む。最初のデータについてのインデックスのExtentには、位置S1と位置E1のWS1、LS1、WE1、LE1を書き込みし、追記するデータについてのインデックスのExtentには、位置S2と位置E2のWS2、LS2、WE2、LE2を書き込む。
【0044】
計算部32は、データの読み始めまでの時間(fileStartReadTime)と、そのデータを読み始めてから読み終える時間(fileLeftReadTime)を、上記のExtentに記録したWrap、LPOSを使用して計算する。位置S1から位置E1に記録された最初のデータについてのfileStartReadTimeは、次の数式1を使用して、fileLeftReadTimeは、次の数式2を使用して計算することができる。
【0045】
【数1】
【0046】
【数2】
【0047】
上記数式1および数式2中、LP3およびLP4のLPOSをlp3、lp4とし、読み出し速度をSR(LPOS/s)とし、シーク時にヘッドをテープ11上の所定位置へ移動する速度をSL(LPOS/s)とし、Wrapの移り変わりでWrap nからWrap mへ移る時間を関数TWC(Wn->Wm)としている。また、任意のWrap Wにおいてデータが記録される方向にある端のLPOSがLP3のときはlp3、LP4のときはlp4となる関数をl(W)とし、記録終了位置のWrap=WEnと記録開始位置のWrap=WSnの差が1より大きいときに1とし、そうでないときに0とする関数をf(WEn,WSn)としている。さらに、上記のWEnとWSnとが同じときに0とし、そうでないときに1とする関数をg(WEn,WSn)としている。なお、テープ11をロードしたときは、LP3にヘッドがあるため、上記数式1では関数l(W)ではなく、lp3を用いている。
【0048】
上記数式1は、ヘッドが初期位置Wrap=0から記録開始位置のWrapへ移動する時間と、LP3から任意のLPOSへ移動する時間とを加算した式である。上記数式2は、Wrapの移り変わりがある場合にその移り変わりにかかる時間と、Wrapの移り変わりがあり、データが同じWrap内の端から端まで記録されている場合に端から端まで読み出す時間と、Wrapの移り変わりがあり、データが同じWrap内の端から端まで記録されていない場合の記録開始位置から端まで、および、端から記録終了位置まで読み出す時間と、Wrapの移り変わりがない場合の記録開始位置から記録終了位置まで読み出す時間とを加算した式である。
【0049】
上記数式2は、最初のデータに限らず、追記するデータに対しても適用して、その追記するデータの読み始めから読み終えるまでの時間を計算することができる。ファイルの読み始めから読み終わりまでの時間は、最初のデータおよび追記するデータを読み出す時間のほか、最初のデータの記録終了位置から追記するデータの記録開始位置までヘッドが移動する時間も含まれる。そこで、この時間を含めたファイルの読み終わりまでの時間(fileLeftReadTime)は、次の数式3により求めることができる。なお、数式3中、Nは、最後のExtentの番号を示す。
【0050】
【数3】
【0051】
最初のデータからすべての追記したデータを読み終えるまでの時間は、上記数式3により計算し、求めることができる。テープ11が既にマウントされている場合、データを書き込み、読み出すために使用するヘッドの位置は、テープ11の途中にある場合もある。このとき、アプリケーション20からファイルの読み出し時間の取得要求を受けた場合、データの途中からファイルの読み始めの位置までヘッドを移動しなければならない。
【0052】
この場合のヘッドは、例えば、図7に示すように、Extent kに対応するデータが記録された部分(Wcur,Lcur)の上に位置している。なお、Extent kに対応するデータは、上記の最初のデータであってもよいし、追記するデータのいずれであってもよい。ヘッドがこのようにデータの途中にある場合、その位置からS1へ戻る時間は、次の数式4により求めることができる。
【0053】
【数4】
【0054】
このS1へ戻る時間に上記数式2や数式3のfileLeftReadTimeを加算することで、ファイルの読み出しにかかる時間を求めることができる。
【0055】
逐次読み出し時間が要求され、その時間を計算して提供する場合、途中の位置から読み終わりまでの時間を計算し、提供する必要がある。Extentデータの途中からそのExtentデータの記録終了位置までの読み出し時間は、その記録終了位置Wrap=WEk、LPOS=LEkを用いて、次の数式5により求めることができる。
【0056】
【数5】
【0057】
また、Extent k+1以降のExtent Nまでの対応する残りのデータの読み出し時間は、次の数式6により求めることができる。
【0058】
【数6】
【0059】
上記数式5で求めた時間と、上記数式6で求めた時間とを加算することで、途中から読み終えるまでの残りのデータを読み出す時間を求めることができる。計算部32は、この数式5および数式6を使用し、逐次計算を行い、変化する残りの読み出し時間を、その時間を要求する要求元に逐次提供することができる。
【0060】
ここでは、残りのデータを読み出す時間を求めたが、これに限られるものではなく、上記数式2により全部のデータの読み出し時間を求め、その途中までの読み出し時間を求め、差し引くことにより、残りのデータを読み出す時間を求めてもよい。
【0061】
図8を参照して、情報提供システムが行う処理の流れについて説明する。ステップ800から処理を開始し、ステップ805では、ファイルの読み出しにかかる時間の取得要求を出す要求元であるアプリケーション20から、ファイル名、ファイルのオフセットおよびデータの長さを指定したファイルの読み出し時間の取得要求を受け付ける。具体的には、上記のこれらを引数としたioctlシステム・コールによる問い合わせを受ける。
【0062】
ステップ810では、その要求で指定されたファイル名、ファイルのオフセット、データの長さに基づき、インデックス内の参照するExtentを決定する。インデックスには、ファイル名やデータの長さ等の属性情報に加え、Extentが設けられ、Extentにファイルのオフセットが書き込まれている。このため、これらの属性情報等に基づき、参照するExtentを決定することができる。
【0063】
ステップ815では、決定したExtentからデータの記録開始位置、記録終了位置の情報を取得する。具体的には、読み始めおよび読み終わりのWrap、LPOSを取得する。ステップ820では、テープ11がマウントされているかどうかを判断する。マウントされている場合、ステップ825へ進み、テープ・ドライブ装置12から取得した情報により現在のヘッドの位置を確認し、ステップ830へ進む。マウントされていない場合、直接ステップ830へ進む。現在のヘッドの位置は、上記のSCSIコマンドでセンス・データ等を取得し、そのセンス・データ等からWrap、LPOSの情報として取得することができる。
【0064】
ステップ830では、予め設定されたヘッドの初期位置または現在のヘッドの位置の情報、取得したファイルの記録開始位置および記録終了位置の情報と、上記の各数式とを用い、fileStartReadTimeとfileLeftReadTimeとを計算する。ステップ835では、計算部32は、計算して得られたfileStartReadTimeとfileLeftReadTimeとを、要求したアプリケーション20へ返す。アプリケーション20は、その情報をディスプレイ等の表示装置に表示し、ステップ840でこの処理を終了する。
【0065】
これまで、1つのアプリケーション20のみからファイルを読み出す際の読み出し時間を要求することについて説明してきたが、複数のアプリケーションから同じファイルを読み出す場合も考えられる。この場合、アプリケーションがその都度読み出し時間を問い合わせ、その問い合わせ時点での読み出し時間の見積もりを返すことができる。
【0066】
複数のノードからアクセス可能なテープは、一度マウントされると、そのインデックスは、複数のノードが共有する共有ディスク上に保存される。このため、各ノードが備える各アプリケーションから同じファイルを読み出す際、共有ディスク上に保存されたインデックス内のExtentの情報を読み出し、ファイルの読み出し時間を計算することができる。
【0067】
複数のテープと複数のドライブ装置とが組み込まれたテープ・ライブラリを使用する場合、テープがマウントされていないとき、そのテープをテープ・ドライブ装置へ移動し、セットする時間も発生する。このため、マウントしていないテープについては、ライブラリ内の移動時間を、fileStartReadTimeに加算することができる。
【0068】
このライブラリ内の移動時間は、ファイルの拡張属性に、計算した時間を設定することも可能である。この場合、拡張属性を参照し、その設定された時間を取得し、fileStartReadTimeに加算することができる。この時間は、予め設定しておいてもよいし、定期的に計算を行い、得られた時間を定期的に設定してもよいし、要求に応じて設定してもよい。
【0069】
また、上記のライブラリ内の移動時間だけではなく、マウントしていないファイルの読み出し時間も事前に計算し、ファイルの拡張属性に設定しておくことも可能である。これにより、ファイルの読み出しにかかる正確な時間をより早く提供することができる。
【0070】
なお、OSとしてUnix(登録商標)を使用する場合、システム・コマンドであるattr -gコマンドにより、上記のファイルの拡張属性に設定した値を読み出し、取得することができる。また、OSとしてWindows(登録商標)を使用する場合は、API(Application Programming Interface)を使用して、上記のファイルの拡張属性に設定した値を取得することができる。OSとしてWindows(登録商標)を使用する場合、拡張属性を読み出す機能を付与するIBM社が提供するIBM LTFS Toolsというソフトウェアを用いることができる。
【0071】
上記のキャッシュ23は、テープ11から読み出されたインデックスを保存する保存手段として用いることができ、計算部32は、そのインデックスを使用してファイルの読み出しにかかる時間を計算することができる。上記のテープ11がマウントされているか否かの判断は、判断部を設け、その判断部により行うことができる。また、別途判断部を設け、テープ11がマウントされていると判断した場合、ヘッドが、ファイルが記録されたテープ11上にあるかどうかを判断することができる。
【0072】
このように、インデックスのExtentに、テープ上のファイルの物理的な記録開始位置および記録終了位置を記録しておき、ファイルの読み出し時間の要求があった場合に、そのExtentからそれらの位置の情報を読み出し、読み出し時間を計算して返すことで、その都度テープにアクセスすることなく、ファイルの読み出し時間を提供することができる。また、追記されるデータが散在しているファイルでも、その正確な読み出し時間を提供することができる。
【0073】
これまで、本発明の情報提供システム、情報提供方法およびプログラムについて、図面を参照して詳細に説明してきたが、他の実施形態や、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。したがって、上記のプログラムを記録する記録媒体やそのプログラムを、ネットワーク等を介して提供するサーバ装置等も提供することができるものである。
【符号の説明】
【0074】
10…情報提供システム、11…テープ、12…テープ・ドライブ装置、13…サーバ装置、14…CPU、15…ROM、16…RAM、17…HDD、18…入出力I/F、19…バス、20…アプリケーション、21…LTFS、22…インデックス、23…キャッシュ、24…デバイス・ドライバ、30…取得部、31…記録部、32…計算部
図1
図2
図3
図4
図5
図6
図7
図8