特許第6052812号(P6052812)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特許6052812テープ上のファイルの管理、書き込み、及び読み出し方法
<>
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000002
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000003
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000004
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000005
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000006
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000007
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000008
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000009
  • 特許6052812-テープ上のファイルの管理、書き込み、及び読み出し方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6052812
(24)【登録日】2016年12月9日
(45)【発行日】2016年12月27日
(54)【発明の名称】テープ上のファイルの管理、書き込み、及び読み出し方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20161219BHJP
   G06F 3/06 20060101ALI20161219BHJP
【FI】
   G06F12/00 541P
   G06F3/06 303G
   G06F3/06 301Z
   G06F3/06 302J
【請求項の数】7
【全頁数】12
(21)【出願番号】特願2014-143728(P2014-143728)
(22)【出願日】2014年7月11日
(65)【公開番号】特開2016-21100(P2016-21100A)
(43)【公開日】2016年2月4日
【審査請求日】2016年1月12日
【早期審査対象出願】
【前置審査】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】長谷川 徹
(72)【発明者】
【氏名】板垣 浩
(72)【発明者】
【氏名】芦田 貴
(72)【発明者】
【氏名】渡邊 輝江
(72)【発明者】
【氏名】三間 慎介
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 特開2013−161185(JP,A)
【文献】 特開2013−206518(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
ファイルシステムにおいてテープ上のファイルの管理方法であって、
テープ上へのファイルの書き込みの際に、重複データの検出機能を有するソフトウェアを用いて、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、
前記他のファイルが前記テープ上に存在する場合、前記ファイルの書き込み後に、前記他のファイルの第1インデックスを更新するステップであって、当該第1インデックスに、書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を追加し、前記テープ上のインデックスパーティションに書き込むことを含むステップと、
書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を含む第2インデックスを作成または更新するステップであって、作成または更新後の第2インデックスを前記テープ上のインデックスパーティションに書き込むステップを含む、ステップと、を含む方法。
【請求項2】
前記検出するステップの前または後に、前記テープ上へ前記ファイルを書き込むステップを含む、請求項1に記載の方法。
【請求項3】
前記テープ上の前記ファイルまたは前記他のファイルの読み出しの際に、前記テープ上のインデックスパーティションから前記第1インデックス及び前記第2インデックスのメタ情報を取得するステップと、
取得した前記メタ情報から前記ファイルまたは前記他のファイルのどちらが現在のヘッド位置から早く読み出せるかを判定するステップであって、現在のヘッド位置を検出するステップを含む、ステップと、
早く読み出せる前記ファイルまたは前記他のファイルをテープ上から読み出すステップと、を更に含む、請求項1または2に記載の方法
【請求項4】
ファイルシステムにおいてテープ上へのファイルの書き込み方法であって、
テープ上へのファイルの書き込みが発生した際に、重複データの検出機能を有するソフトウェアを用いて、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、
前記テープ上へ前記ファイルを書き込むステップと、
前記他のファイルが前記テープ上に存在する場合、前記他のファイルの第1インデックスを更新するステップであって、当該第1インデックスに、書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を追加し、前記テープ上のインデックスパーティションに書き込むことを含むステップと、
書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を含む第2インデックスを作成または更新するステップであって、作成または更新後の第2インデックスを前記テープ上のインデックスパーティションに書き込むステップを含む、ステップと、
を含む方法。
【請求項5】
前記テープ上へ前記ファイルを書き込むステップは、前記検出するステップの前に実行される、請求項4に記載の方法。
【請求項6】
請求項1〜のいずれか1項の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【請求項7】
請求項1〜のいずれか1項の各ステップを実行する、テープドライブを含むファイルシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テープドライブを含むファイルシステムに関し、より具体的には、そのファイルシステムにおいてテープ上のファイルの管理、書き込み、及び読み出しに関する。
【背景技術】
【0002】
テープドライブ上のデータをファイルシステムにおけるファイルとしてアクセスする仕組みとして、例えばLTFS(Linear Tape File System)が実用化されている。LTFSでは、ファイルを構成するデータ領域がテープ上のどこに存在するか等のメタ情報(データ領域の位置やサイズ等)をインデックスとして保管することにより、ファイルシステムを実現している。このLTFSを用いることにより、HDDやUSBメモリ等の記憶デバイスと同様の方法でテープをファイルの記憶先として使用することができる。
【0003】
LTFSでは、テープの性質上、ファイルの編集(更新)時に、過去に書いたファイルのデータ(以下、単に「ファイル」あるいは「データ」とも記載する)を上書きせずにそのデータの後方に編集されたデータを追記する仕組みになっている。データを読み出す際には、データが書かれた位置での磁気ヘッドとテープの位置合わせ(テープ及び/又は磁気ヘッドの移動)を行った後にデータを読み出す。そのため、その位置合わせに時間がかかることがあり、HDDやUSBメモリを想定して作られたアプリケーションを、そのままテープに適用させると、ファイルの読み出し動作が非常に遅くなることがある。
【0004】
例えば、図1に示すように、ファイルA、 ファイルB、 ファイルCがテープ上に順番に書かれているとする。この場合に、ファイルBを読み出した後にファイルAを読み出そうとすると、ヘッドがテープ上の位置cから位置dまでのデータを読み出した後(R1)、位置aまでヘッドが移動して(テープを巻き戻して)から位置bまでファイルAのデータを読み出す必要がある(R2)。このヘッドの移動(テープの巻き戻し)には数秒から数十秒かかることがあり、HDDやUSBメモリを想定して作られたアプリケーションを使用している場合、突然読み出し動作が遅くなるという問題が起こる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2013-182476号公報
【特許文献2】特開2011-197977号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、上記した従来技術の問題を解決あるいは軽減し、テープ上のファイルの読み出しを速くするための方法、より具体的には、ファイルの管理方法、書き込み方法、及び読み出し方法を提供することである。
【課題を解決するための手段】
【0007】
本発明の一態様では、ファイルシステムにおいてテープ上のファイルの管理方法を提供する。その方法は、(a)テープ上へのファイルの書き込みの際に、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、(b)他のファイルがテープ上に存在する場合、他のファイルの第1インデックスを更新するステップであって、ファイルの書き込み後に、第1インデックスに、書き込みされたファイルのテープ上でのデータ開始位置およびサイズを含むメタ情報を追加することを含むステップと、を含む。
【0008】
本発明の一態様によれば、書き込みをするファイルのデータと同一データを含むテープ上の既に書き込まれているファイルのメタ情報を管理(更新)することにより、例えば、それらのファイルのいずれかを読み出す際にファイルのメタ情報(位置情報)から速く読み出せるファイルを特定した後にそのファイルを速く読み出すことが可能となる。
【0009】
本発明の他の一態様では、ファイルシステムにおいてテープ上へのファイルの書き込み方法を提供する。その方法は、(a)テープ上へのファイルの書き込みが発生した際に、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、(b)テープ上へファイルを書き込むステップと、(c)他のファイルがテープ上に存在する場合、他のファイルの第1インデックスを更新するステップであって、当該第1インデックスに、書き込みされたファイルのテープ上でのデータ開始位置およびサイズを含むメタ情報を追加することを含むステップと、を含む。
【0010】
本発明の他の一態様によれば、書き込みをするファイルのデータと同一データを含むテープ上の既に書き込まれているファイルのメタ情報を管理(更新)することにより、例えば、それらのファイルのいずれかを読み出す際にファイルのメタ情報(位置情報)から速く読み出せるファイルを特定した後にそのファイルを速く読み出すことが可能となる。
【0011】
本発明の他の一態様では、ファイルシステムにおいてテープ上からファイルの読み出し方法を提供する。その方法は、(a)テープ上からファイルの読み出しが発生した際に、当該ファイルのデータと同一データがテープ上に存在するか否かを検出するステップと、(b)同一データがテープ上に存在する場合、ファイルのデータまたは同一データのどちらが現在のヘッド位置から早く読み出せるかを判定するステップと、(c)早く読み出せるファイルのデータまたは同一データをテープ上から読み出すステップと、を含む。
【0012】
本発明の他の一態様によれば、読み出しをするファイルのデータと同一データを検出して、それらの中で速く読み出せるデータを特定し、そのデータを速く読み出すことが可能となる。
【図面の簡単な説明】
【0013】
図1】テープ上のデータの構成例を示す図である。
図2】本発明のファイルシステムの構成例を示す図である。
図3】本発明のテープドライブの構成例を示す図である。
図4】データパーティションの構成例を示す図である。
図5】本発明の一実施形態の方法フローを示す図である。
図6】本発明の一実施形態の方法フローを示す図である。
図7】本発明のメタ情報の構成例を示す図である。
図8】本発明の一実施形態の方法フローを示す図である。
図9】本発明の方法を適用したデータパーティションの構成例を示す図である。
【発明を実施するための形態】
【0014】
図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明では、必要に応じて従来技術の内容と比較しながら本発明の実施の形態について説明する。図2は、本発明の方法が実施されるファイルシステムの構成例を示す図である。ファイルシステム100は、ネットワーク36を介して相互に通信可能なテープドライブ10、ホスト(サーバー)30、PC(端末)32、34からなる。図2では、テープドライブ10とホスト(サーバー)30は、それぞれ1つしか描かれていないが、これはあくまで例示であって、2以上のテープドライブ10やホスト(サーバー)30を含むことができることは言うまでもない。
【0015】
ファイルシステム100は、例えばLTFSとすることができる。LTFSでは、HDDやUSBメモリ、あるいはCD−Rを始めとする他のリムーバブルな記録媒体同様に、テープカートリッジをテープドライブに挿入すれば、そのテープカートリッジに保存されたファイルに直接アクセスできる。テープドライブ上でファイルシステムを構築するためには、テープドライブがパーティションを有していることが必要である。なお、パーティションについては後述する。
【0016】
図3は、図2のファイルシステム100で利用可能なテープドライブの構成例を示す図である。テープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、ヘッド14と、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ20が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ20も図示している。このテープカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。なお、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0017】
また、テープカートリッジ20は、カートリッジメモリ(CM)24も含む。このCM24は、例えば、テープ23上にどのようにデータが書かれたかの情報を記録する。そして、例えばRFインターフェイスを用いて非接触でテープ23に書かれたデータのインデックスやテープ23の使用状況等を調べることにより、データへの高速アクセスを可能としている。なお、図3では、このRFインターフェイスのようなCM24へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス(以下、「CMI/F」という)19として示している。
【0018】
ここで、ホストI/F11は、ホスト(サーバー)30や他のPC32等との通信を行う。例えば、ホスト30のOSから、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。上述したLTFSの例では、デスクトップOSなどから直接、テープドライブ内のデータを参照でき、HD内のファイルを扱うのと同様に、ダブルクリックでファイルを実行したり、ドラッグアンドドロップでコピーしたりできる。
【0019】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAMによって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
【0020】
チャネル13は、テープ23に書き込むべきデータをヘッド14に送ったり、テープ23から読み出されたデータをヘッド14から受け取ったりするために用いられる通信経路である。ヘッド14は、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込んだり、テープ23から情報を読み出したりする。モータ15は、リール21、22を回転させる。なお、図3では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0021】
一方、コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。ヘッド位置制御システム17は、所望のラップを追跡するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド14を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
【0022】
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。CMI/F19は、例えば、RFリーダライタにより実現され、CM24への情報の書込みや、CM24からの情報の読出しを行う。
【0023】
ここで、本発明が実施されるLTFSにおけるパーティションおよびインデックスの構成について説明する。LTFSでは、LTO5からサポートされるようになったパーティションと呼ばれるテープ上の論理的な区切りを使用している。パーティションには、インデックスパーティションとデータパーティションの2つがある。データパーティションは、ファイルを構成するデータそのものと、ファイルの書き込み完了後に一定の条件が整ったときに書き込むインデックスとで構成されている。インデックスパーティションには、最新のインデックスが格納されていて、カートリッジがロードされたときに読み込まれて、メディア上のどの位置にファイルが存在するかが判別できるようになっている。インデックスには、後述するメタ情報が含まれる。
【0024】
図4にデータパーティションの構成例を示す。図4は、1つのファイルAが、データ(data)と付随するインデックス(index_a)とから構成される。インデックス(index_a)には、テープ23上のファイルの位置等を特定するためのメタ情報を構成する要素として、partition ID、start block、 byte offset、byte count、file offsetが含まれ、これらはまとめてextentと呼ばれている。各要素の内容は下記に示す通りである。なお、以下の説明では、1つのファイルに含まれるデータを単にデータあるいはデータ領域と呼ぶ場合がある。また、インデックスに含まれる情報(要素)をメタ情報またはextentと呼ぶ。
【0025】
(a)file offset:このextentを構成するデータがファイル全体でどの位置にあるかを示す。
(b)partition ID:パーティションに割り振られた論理的なIDである。
(c)start block:ファイルを構成するデータの先頭部分が含まれているブロック番号を示す。テープ上のデータの位置を示すのにブロックという概念を使用しており、デフォルトで512KBに設定されている。
(d)byte offset:データの先頭位置がそのブロック上のどの位置から始まっているかを示すオフセットである。
(e)byte count:そのデータを構成するバイト数を示している。
【0026】
LTFSのインデックスでは、ファイルをテープ上に書き込むと、ファイル全体がひとつのextentとして書き込まれる。これによって、次に読み出すときに一度のアクセスで効率的に読み出すことができる。このextentについてはさらに図7を参照しながら後述する。
【0027】
図5図9を参照しながら本発明の方法の実施形態について説明する。本発明の方法の実施形態は、ファイルシステム100のコンピュータ30〜34あるいはテープドライブ10で利用可能な所定のソフトウェア、ハードウェアを用いて実行される。図5は、本発明のファイルの書き込み時における方法(動作)フローを示す図である。図5は、1つのファイル1を書き込む場合の一例を示している。複数のファイルを連続してあるいは離散的に書き込む場合も基本的な動作フローは同様である。なお、以下の各例(実施形態)ではファイルシステム100としてLTFSを利用する場合について説明するが、同様な機能/仕様を備える他のファイルシステムでも同様に利用可能であることは言うまでもない。
【0028】
ステップS1において、テープ上へのファイル1の書き込みの際に、当該ファイル1のデータと同じデータを含む他のファイル2が既にテープ上に存在するか否かを検索する。この検索には、例えば、従来からあるData Deduplicationで使用されている技術を利用する。例えば、IBM社のTSM(Tivoli Storage Manager、(Tivoli:登録商標))で使用されている重複データの検出機能と同様な機能を利用することができる。
【0029】
Data Deduplication技術における、データがすでにテープ上に書かれたデータと重複しているかどうかを判定する機能をDedup Engineと表記すると、本発明は、既存のLTFSの仕様を変更し、このDedup Engineを使用できるようにすることで実現される。ここで、Dedup Engineは、ソフトウェアとしてLTFS内部に実装しても良いし、LTFSが呼び出す外部のソフトウェアもしくはハードウェアとして実装しても良い。Dedup Engineとしては、例えば、LTFSに書き込むデータを含むファイル1を送ると、すでに書かれているファイル2のデータと一致する部分がある場合には、ファイル1、2それぞれの一致しているデータ部分の先頭からのOffset、Lengthなどの情報を返す機能を想定する。
【0030】
ステップS2において、ステップS1の検索結果に基づき、ファイル1のデータと同じデータを含む他のファイル2が既にテープ上に存在するか否かを判定する。その判定がYesの場合、ステップS3において、見つかった他のファイル2のメタ情報を取得する。このメタ情報の取得には、例えば、上述したDedup Engineの機能が利用される。メタ情報には、ファイル2の同一データのテープ上の領域を特定するためのデータ開始位置およびサイズが少なくとも含まれる。より具体的には、メタ情報には、上述した(a)file offset、(b)partition ID、(c)start block、(d)byte offset、及び(e)byte countの少なくも一部あるいは全てを含むことができる。ステップS2の判定がNoの場合、ステップS4にステップS3を介さずに直ちにステップS4に進む。
【0031】
ステップS4において、テープ上へのファイル1の書き込みが実行される。ステップS5において、書き込み後のファイル1のメタ情報の更新/作成が行われる。メタ情報の内容には、ファイル1のメタ情報に加えて、ステップS3で取得された他のファイル2のメタ情報も含まれる。これにより、同一データを含む2つのファイル1、2のメタ情報を、ファイル1のメタ情報から取得する(読み出す)ことが可能となる。更新あるいは作成されたメタ情報は、インデックス(extent)として、図4に例示されるように、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング(カートリッジの取り出し時等)でインデックスパーティションに書きこまれる。
【0032】
ステップS6において、テープ上に既に書き込まれている他のファイル2のメタ情報を更新する。その更新は、新たに書き込まれたファイルファイル1のメタ情報を元々あるファイル2のメタ情報に追加する形で行われる。これにより、同一データを含む2つのファイル1、2のメタ情報を、他のファイル2のメタ情報から取得する(読み出す)ことが可能となる。更新されたメタ情報は、ファイル1の場合と同様に、インデックス(extent)として、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング(カートリッジの取り出し時等)でインデックスパーティションに書きこまれる。
【0033】
図6は、本発明のファイルの書き込み時における方法(動作)フローの他の一例を示す図である。図5のフローと比較して、図6のフローでは、ステップS11において、先にテープ上へのファイル1の書き込みが実行され、続けて、ステップS12において、ファイル1のメタ情報だけを先に更新/作成しておく。このように先にファイル1の書き込みを実行するのは以下の理由による。すなわち、図5のステップS1で利用するDedup Engineとしては、書き込みデータが発生した際に、短時間で一致するデータの情報を返すものを想定したが、Dedup Engineには一致するデータの情報を返すのに時間がかかる実装もある。本発明の実装形態としては、そのような時間のかかるDedup Engineを使用することもできるので、その場合に対応するべく、書き込みとは非同期に(例えば、LTFSのアクセスが少ない時等に)後から一致するデータの情報を特定し、メタ情報を更新する。
【0034】
図6のステップS13において、図5のステップS1の場合と同様に、ファイル1のデータと同じデータを含む他のファイル2が既にテープ上に存在するか否かを検索する。次のステップS14において、図5のステップS2の場合と同様に、ステップS13の検索結果に基づき、ファイル1のデータと同じデータを含む他のファイル2が既にテープ上に存在するか否かを判定する。その判定がNoの場合、ファイル1の書き込み動作を終了する。ステップS14の判定がYesの場合、ステップS15において、見つかった他のファイル2のメタ情報を更新する。その更新に際して、他のファイル2の元々あるメタ情報を最初に取得する。
【0035】
そのメタ情報の取得には、例えば、上述したDedup Engineの機能が利用される。そして、取得したファイル2のメタ情報に、ステップS12において更新したファイル1のメタ情報を追加する形で、ファイル2のメタ情報を更新する。ステップS16において、ステップS12において更新したファイル1のメタ情報に、ステップS15で取得されたファイル2の元々あるメタ情報を追加する形でファイル1のメタ情報を更に更新する。ステップS15及び16において、更新された各々のメタ情報により、同一データを含む2つのファイル1、2のメタ情報を、ファイル1または他のファイル2の各々のメタ情報から取得する(読み出す)ことが可能となる。いずれの場合も更新されたメタ情報は、インデックス(extent)として、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング(カートリッジの取り出し時等)でインデックスパーティションに書きこまれる。
【0036】
図7に、図5のステップS5、S6、あるいは図6のステップS15、S16で更新された後のメタ情報の例(extent)を示す。LTFSではメタ情報をテープに記録する際には、XML形式で記録することFormat Specicicationにより規定されている。図7の例はそのXMLのうちの一部で、ファイルのメタ情報に関する記述例である。
【0037】
extentの情報は、それぞれ対応するタグにより保存され、これらのタグをまとめたタグとして、<extent>タグがある。1つのファイルが、複数のエクステントからなる場合には、<extent>タグを複数持つこととなる。図7の例では、(1)で指示されるFileAという名前のファイルは、E1とE2で指示される範囲の2つの<extent>タグから構成されている。E1の<extent>タグでは、1036ブロック目からのextentがあり(2)、E2の<extent>タグでは、1040ブロック目からのextentがある(3)。各<extent>タグの内容には、上述した(a)file offset、(b)partition ID、(c)start block、(d)byte offset、及び(e)byte countに相当するタグが含まれる((4)と(5))。
【0038】
図7の例では、E1の<extent>タグにおいて、<extent>タグの子要素としてE3とE4で指示される<dupextent>というタグを作っている。そして、<dupextent>の内容として、<startblock>、 <byteoffset>、及び<bytecount>のタグが含まれるようにすることで((6)と(7))、同一のデータが別の場所に書かれていることを記録することができる。図7の例では、1036ブロック目から始まるデータ(2)と同じデータが、xxxxブロックとyyyyブロックから始まるデータとして((8)と(9))、テープ上の2箇所に存在することを示している。なお、ここで示したタグ名やXMLタグの構成(要素)は1つの実施例であり、別の名称や構成で記述してもよい。
【0039】
図8に、本発明の方法におけるファイルの読み出し方法の一実施形態のフローを示す。図8では1つのファイル1を読み出す場合を想定している。複数のファイルを連続してあるいは離散的に読み出す場合も基本的な動作フローは同様である。ステップS21において、ファイル1のメタ情報を取得する。具体的には、テープ上のインデックスパーティション及び/またはデータパーティションに書きこまれたインデックスのメタ情報(extent)を読み出して、ファイル1のデータの位置情報を取得する。
【0040】
ステップS22において、ファイル1のデータと同一のデータを含むメタ情報(extent)がテープ上に存在するか否かを検索する。この検索は、図7のE3あるいはE4で示したような<dupextent>がファイル1のメタ情報内に存在するか否かで判断できる。ステップS23において、ステップS22の検索結果に基づき、ファイル1のデータと同じデータがテープ上に存在するか否かを判定する。その判定がYesの場合、ステップS24において、見つかった他のファイル2のメタ情報を取得する。ステップS23の判定がNoの場合、先のステップS26に進む。
【0041】
次のステップS25において、見つかった同一データとファイル1のデータのどちらが現在のヘッドの位置から早く読み出せるかを判定する。その判定には、従来からある技術、例えば、国際公開WO2010/073776で開示されるようなデータ読み出し順序の決定方法を利用することができる。このデータ読み出し順序の決定方法は、テープドライブにおいて実装され、その判定結果はテープドライブから取得することができる。ステップS26において、ステップS25で得られた早く読み出せるデータを読み出す。なお、同一のデータが複数存在する場合は、ファイル1を含めてそれらの中で一番早く読み出せるデータを選択して読み出すことになる。
【0042】
最後に、図9を参照しながら本発明の方法を適用した場合のデータ構造について説明する。なお、図9では、データに付随して書かれるインデックス(extent)は省略されている。最初に(a)に示すように、ファイルAとファイルBがテープ上に書かれている場合を想定する。このとき、新たなファイルとして、ファイルCが書かれるタイミングで、ファイルCがファイルAと同じデータ内容であればテープ上には図のようにファイルCのデータが書き込まれる。さらに、ファイルAのメタ情報として、詳細は上述したように、データの開始位置をテープ上の位置aだけでなく、位置cも記録される。またファイルCのメタ情報として、テープ上の位置情報はaとcの両方が記録される。
【0043】
この状態で、テープ上のデータの配置は、図9(b)のようになっている。このとき、アプリケーションがファイルBを読み出すために、テープ上の位置bから位置cまでのデータを読み出した後(R1)に、ファイルAの読み出しをする際には、位置aまでテープ巻き戻すことなく(ヘッドを移動させることなく)位置cからデータを読み出すことができる(R2)。その結果、ファイルAのデータを高速に読み出すことができる。
【0044】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。さらに、本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【0045】
10 テープドライブ
11 ホストI/F
12 バッファ
13 チャネル
14 ヘッド
15 モータ
16 コントローラ
17 ヘッド位置制御システム
18 モータドライバ
19 カートリッジメモリI/F
20 テープカートリッジ
21、22 リール
23 テープ
24 カートリッジメモリ(CM)
30 サーバー(ホスト)
32、34 PC
36 ネットワーク
40 サーボバンド
100 ファイルシステム
図1
図2
図3
図4
図5
図6
図7
図8
図9