(57)【特許請求の範囲】
【請求項１】
ファイルシステムにおいてテープ上のファイルの管理方法であって、
テープ上へのファイルの書き込みの際に、重複データの検出機能を有するソフトウェアを用いて、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、
前記他のファイルが前記テープ上に存在する場合、前記ファイルの書き込み後に、前記他のファイルの第１インデックスを更新するステップであって、当該第１インデックスに、書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を追加し、前記テープ上のインデックスパーティションに書き込むことを含むステップと、
書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を含む第２インデックスを作成または更新するステップであって、作成または更新後の第２インデックスを前記テープ上のインデックスパーティションに書き込むステップを含む、ステップと、を含む方法。
【請求項２】
前記検出するステップの前または後に、前記テープ上へ前記ファイルを書き込むステップを含む、請求項１に記載の方法。
【請求項３】
前記テープ上の前記ファイルまたは前記他のファイルの読み出しの際に、前記テープ上のインデックスパーティションから前記第１インデックス及び前記第２インデックスのメタ情報を取得するステップと、
取得した前記メタ情報から前記ファイルまたは前記他のファイルのどちらが現在のヘッド位置から早く読み出せるかを判定するステップであって、現在のヘッド位置を検出するステップを含む、ステップと、
早く読み出せる前記ファイルまたは前記他のファイルをテープ上から読み出すステップと、を更に含む、請求項１または２に記載の方法
【請求項４】
ファイルシステムにおいてテープ上へのファイルの書き込み方法であって、
テープ上へのファイルの書き込みが発生した際に、重複データの検出機能を有するソフトウェアを用いて、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、
前記テープ上へ前記ファイルを書き込むステップと、
前記他のファイルが前記テープ上に存在する場合、前記他のファイルの第１インデックスを更新するステップであって、当該第１インデックスに、書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を追加し、前記テープ上のインデックスパーティションに書き込むことを含むステップと、
書き込みされた前記ファイルの前記テープ上でのデータ開始位置およびサイズを含むメタ情報を含む第２インデックスを作成または更新するステップであって、作成または更新後の第２インデックスを前記テープ上のインデックスパーティションに書き込むステップを含む、ステップと、
を含む方法。
【請求項５】
前記テープ上へ前記ファイルを書き込むステップは、前記検出するステップの前に実行される、請求項４に記載の方法。
【請求項６】
請求項１〜５のいずれか１項の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【請求項７】
請求項１〜５のいずれか１項の各ステップを実行する、テープドライブを含むファイルシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テープドライブを含むファイルシステムに関し、より具体的には、そのファイルシステムにおいてテープ上のファイルの管理、書き込み、及び読み出しに関する。
【背景技術】
【０００２】
テープドライブ上のデータをファイルシステムにおけるファイルとしてアクセスする仕組みとして、例えばＬＴＦＳ（Linear Tape File System）が実用化されている。ＬＴＦＳでは、ファイルを構成するデータ領域がテープ上のどこに存在するか等のメタ情報（データ領域の位置やサイズ等）をインデックスとして保管することにより、ファイルシステムを実現している。このＬＴＦＳを用いることにより、ＨＤＤやＵＳＢメモリ等の記憶デバイスと同様の方法でテープをファイルの記憶先として使用することができる。
【０００３】
ＬＴＦＳでは、テープの性質上、ファイルの編集（更新）時に、過去に書いたファイルのデータ（以下、単に「ファイル」あるいは「データ」とも記載する）を上書きせずにそのデータの後方に編集されたデータを追記する仕組みになっている。データを読み出す際には、データが書かれた位置での磁気ヘッドとテープの位置合わせ（テープ及び／又は磁気ヘッドの移動）を行った後にデータを読み出す。そのため、その位置合わせに時間がかかることがあり、ＨＤＤやＵＳＢメモリを想定して作られたアプリケーションを、そのままテープに適用させると、ファイルの読み出し動作が非常に遅くなることがある。
【０００４】
例えば、図１に示すように、ファイルＡ、 ファイルＢ、 ファイルＣがテープ上に順番に書かれているとする。この場合に、ファイルＢを読み出した後にファイルＡを読み出そうとすると、ヘッドがテープ上の位置ｃから位置ｄまでのデータを読み出した後（Ｒ１）、位置ａまでヘッドが移動して（テープを巻き戻して）から位置ｂまでファイルＡのデータを読み出す必要がある（Ｒ２）。このヘッドの移動（テープの巻き戻し）には数秒から数十秒かかることがあり、ＨＤＤやＵＳＢメモリを想定して作られたアプリケーションを使用している場合、突然読み出し動作が遅くなるという問題が起こる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2013-182476号公報
【特許文献２】特開2011-197977号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、上記した従来技術の問題を解決あるいは軽減し、テープ上のファイルの読み出しを速くするための方法、より具体的には、ファイルの管理方法、書き込み方法、及び読み出し方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様では、ファイルシステムにおいてテープ上のファイルの管理方法を提供する。その方法は、（ａ）テープ上へのファイルの書き込みの際に、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、（ｂ）他のファイルがテープ上に存在する場合、他のファイルの第１インデックスを更新するステップであって、ファイルの書き込み後に、第１インデックスに、書き込みされたファイルのテープ上でのデータ開始位置およびサイズを含むメタ情報を追加することを含むステップと、を含む。
【０００８】
本発明の一態様によれば、書き込みをするファイルのデータと同一データを含むテープ上の既に書き込まれているファイルのメタ情報を管理（更新）することにより、例えば、それらのファイルのいずれかを読み出す際にファイルのメタ情報（位置情報）から速く読み出せるファイルを特定した後にそのファイルを速く読み出すことが可能となる。
【０００９】
本発明の他の一態様では、ファイルシステムにおいてテープ上へのファイルの書き込み方法を提供する。その方法は、（ａ）テープ上へのファイルの書き込みが発生した際に、当該ファイルのデータと同じデータを含む他のファイルが既に前記テープ上に存在するか否かを検出するステップと、（ｂ）テープ上へファイルを書き込むステップと、（ｃ）他のファイルがテープ上に存在する場合、他のファイルの第１インデックスを更新するステップであって、当該第１インデックスに、書き込みされたファイルのテープ上でのデータ開始位置およびサイズを含むメタ情報を追加することを含むステップと、を含む。
【００１０】
本発明の他の一態様によれば、書き込みをするファイルのデータと同一データを含むテープ上の既に書き込まれているファイルのメタ情報を管理（更新）することにより、例えば、それらのファイルのいずれかを読み出す際にファイルのメタ情報（位置情報）から速く読み出せるファイルを特定した後にそのファイルを速く読み出すことが可能となる。
【００１１】
本発明の他の一態様では、ファイルシステムにおいてテープ上からファイルの読み出し方法を提供する。その方法は、（ａ）テープ上からファイルの読み出しが発生した際に、当該ファイルのデータと同一データがテープ上に存在するか否かを検出するステップと、（ｂ）同一データがテープ上に存在する場合、ファイルのデータまたは同一データのどちらが現在のヘッド位置から早く読み出せるかを判定するステップと、（ｃ）早く読み出せるファイルのデータまたは同一データをテープ上から読み出すステップと、を含む。
【００１２】
本発明の他の一態様によれば、読み出しをするファイルのデータと同一データを検出して、それらの中で速く読み出せるデータを特定し、そのデータを速く読み出すことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】テープ上のデータの構成例を示す図である。
【図２】本発明のファイルシステムの構成例を示す図である。
【図３】本発明のテープドライブの構成例を示す図である。
【図４】データパーティションの構成例を示す図である。
【図５】本発明の一実施形態の方法フローを示す図である。
【図６】本発明の一実施形態の方法フローを示す図である。
【図７】本発明のメタ情報の構成例を示す図である。
【図８】本発明の一実施形態の方法フローを示す図である。
【図９】本発明の方法を適用したデータパーティションの構成例を示す図である。
【発明を実施するための形態】
【００１４】
図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明では、必要に応じて従来技術の内容と比較しながら本発明の実施の形態について説明する。図２は、本発明の方法が実施されるファイルシステムの構成例を示す図である。ファイルシステム１００は、ネットワーク３６を介して相互に通信可能なテープドライブ１０、ホスト（サーバー）３０、ＰＣ（端末）３２、３４からなる。図２では、テープドライブ１０とホスト（サーバー）３０は、それぞれ１つしか描かれていないが、これはあくまで例示であって、２以上のテープドライブ１０やホスト（サーバー）３０を含むことができることは言うまでもない。
【００１５】
ファイルシステム１００は、例えばＬＴＦＳとすることができる。ＬＴＦＳでは、ＨＤＤやＵＳＢメモリ、あるいはＣＤ−Ｒを始めとする他のリムーバブルな記録媒体同様に、テープカートリッジをテープドライブに挿入すれば、そのテープカートリッジに保存されたファイルに直接アクセスできる。テープドライブ上でファイルシステムを構築するためには、テープドライブがパーティションを有していることが必要である。なお、パーティションについては後述する。
【００１６】
図３は、図２のファイルシステム１００で利用可能なテープドライブの構成例を示す図である。テープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、チャネル１３と、ヘッド１４と、モータ１５とを含む。また、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ２０が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ２０も図示している。このテープカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。なお、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００１７】
また、テープカートリッジ２０は、カートリッジメモリ（ＣＭ）２４も含む。このＣＭ２４は、例えば、テープ２３上にどのようにデータが書かれたかの情報を記録する。そして、例えばＲＦインターフェイスを用いて非接触でテープ２３に書かれたデータのインデックスやテープ２３の使用状況等を調べることにより、データへの高速アクセスを可能としている。なお、図３では、このＲＦインターフェイスのようなＣＭ２４へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス（以下、「ＣＭＩ／Ｆ」という）１９として示している。
【００１８】
ここで、ホストＩ／Ｆ１１は、ホスト（サーバー）３０や他のＰＣ３２等との通信を行う。例えば、ホスト３０のＯＳから、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。上述したＬＴＦＳの例では、デスクトップＯＳなどから直接、テープドライブ内のデータを参照でき、ＨＤ内のファイルを扱うのと同様に、ダブルクリックでファイルを実行したり、ドラッグアンドドロップでコピーしたりできる。
【００１９】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭによって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
【００２０】
チャネル１３は、テープ２３に書き込むべきデータをヘッド１４に送ったり、テープ２３から読み出されたデータをヘッド１４から受け取ったりするために用いられる通信経路である。ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読み出したりする。モータ１５は、リール２１、２２を回転させる。なお、図３では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００２１】
一方、コントローラ１６は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。ヘッド位置制御システム１７は、所望のラップを追跡するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド１４を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１７で行う。
【００２２】
モータドライバ１８は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１８も２個設けられる。ＣＭＩ／Ｆ１９は、例えば、ＲＦリーダライタにより実現され、ＣＭ２４への情報の書込みや、ＣＭ２４からの情報の読出しを行う。
【００２３】
ここで、本発明が実施されるＬＴＦＳにおけるパーティションおよびインデックスの構成について説明する。ＬＴＦＳでは、LTO5からサポートされるようになったパーティションと呼ばれるテープ上の論理的な区切りを使用している。パーティションには、インデックスパーティションとデータパーティションの２つがある。データパーティションは、ファイルを構成するデータそのものと、ファイルの書き込み完了後に一定の条件が整ったときに書き込むインデックスとで構成されている。インデックスパーティションには、最新のインデックスが格納されていて、カートリッジがロードされたときに読み込まれて、メディア上のどの位置にファイルが存在するかが判別できるようになっている。インデックスには、後述するメタ情報が含まれる。
【００２４】
図４にデータパーティションの構成例を示す。図４は、1つのファイルＡが、データ（data）と付随するインデックス（index_a）とから構成される。インデックス（index_a）には、テープ２３上のファイルの位置等を特定するためのメタ情報を構成する要素として、partition ID、start block、 byte offset、byte count、file offsetが含まれ、これらはまとめてextentと呼ばれている。各要素の内容は下記に示す通りである。なお、以下の説明では、１つのファイルに含まれるデータを単にデータあるいはデータ領域と呼ぶ場合がある。また、インデックスに含まれる情報（要素）をメタ情報またはextentと呼ぶ。
【００２５】
（ａ）file offset：このextentを構成するデータがファイル全体でどの位置にあるかを示す。
（ｂ）partition ID：パーティションに割り振られた論理的なIDである。
（ｃ）start block：ファイルを構成するデータの先頭部分が含まれているブロック番号を示す。テープ上のデータの位置を示すのにブロックという概念を使用しており、デフォルトで512KBに設定されている。
（ｄ）byte offset：データの先頭位置がそのブロック上のどの位置から始まっているかを示すオフセットである。
（ｅ）byte count：そのデータを構成するバイト数を示している。
【００２６】
ＬＴＦＳのインデックスでは、ファイルをテープ上に書き込むと、ファイル全体がひとつのextentとして書き込まれる。これによって、次に読み出すときに一度のアクセスで効率的に読み出すことができる。このextentについてはさらに図７を参照しながら後述する。
【００２７】
図５〜図９を参照しながら本発明の方法の実施形態について説明する。本発明の方法の実施形態は、ファイルシステム１００のコンピュータ３０〜３４あるいはテープドライブ１０で利用可能な所定のソフトウェア、ハードウェアを用いて実行される。図５は、本発明のファイルの書き込み時における方法（動作）フローを示す図である。図５は、１つのファイル１を書き込む場合の一例を示している。複数のファイルを連続してあるいは離散的に書き込む場合も基本的な動作フローは同様である。なお、以下の各例（実施形態）ではファイルシステム１００としてＬＴＦＳを利用する場合について説明するが、同様な機能／仕様を備える他のファイルシステムでも同様に利用可能であることは言うまでもない。
【００２８】
ステップＳ１において、テープ上へのファイル１の書き込みの際に、当該ファイル１のデータと同じデータを含む他のファイル２が既にテープ上に存在するか否かを検索する。この検索には、例えば、従来からあるData Deduplicationで使用されている技術を利用する。例えば、ＩＢＭ社のＴＳＭ（Ｔｉｖｏｌｉ  Ｓｔｏｒａｇｅ  Ｍａｎａｇｅｒ、（Ｔｉｖｏｌｉ：登録商標））で使用されている重複データの検出機能と同様な機能を利用することができる。
【００２９】
Data Deduplication技術における、データがすでにテープ上に書かれたデータと重複しているかどうかを判定する機能をDedup Engineと表記すると、本発明は、既存のLTFSの仕様を変更し、このDedup Engineを使用できるようにすることで実現される。ここで、Dedup Engineは、ソフトウェアとしてLTFS内部に実装しても良いし、LTFSが呼び出す外部のソフトウェアもしくはハードウェアとして実装しても良い。Dedup Engineとしては、例えば、LTFSに書き込むデータを含むファイル１を送ると、すでに書かれているファイル２のデータと一致する部分がある場合には、ファイル１、２それぞれの一致しているデータ部分の先頭からのOffset、Lengthなどの情報を返す機能を想定する。
【００３０】
ステップＳ２において、ステップＳ１の検索結果に基づき、ファイル１のデータと同じデータを含む他のファイル２が既にテープ上に存在するか否かを判定する。その判定がＹｅｓの場合、ステップＳ３において、見つかった他のファイル２のメタ情報を取得する。このメタ情報の取得には、例えば、上述したDedup Engineの機能が利用される。メタ情報には、ファイル２の同一データのテープ上の領域を特定するためのデータ開始位置およびサイズが少なくとも含まれる。より具体的には、メタ情報には、上述した（ａ）file offset、（ｂ）partition ID、（ｃ）start block、（ｄ）byte offset、及び（ｅ）byte countの少なくも一部あるいは全てを含むことができる。ステップＳ２の判定がＮｏの場合、ステップＳ４にステップＳ３を介さずに直ちにステップＳ４に進む。
【００３１】
ステップＳ４において、テープ上へのファイル１の書き込みが実行される。ステップＳ５において、書き込み後のファイル１のメタ情報の更新／作成が行われる。メタ情報の内容には、ファイル１のメタ情報に加えて、ステップＳ３で取得された他のファイル２のメタ情報も含まれる。これにより、同一データを含む２つのファイル１、２のメタ情報を、ファイル１のメタ情報から取得する（読み出す）ことが可能となる。更新あるいは作成されたメタ情報は、インデックス（extent）として、図４に例示されるように、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング（カートリッジの取り出し時等）でインデックスパーティションに書きこまれる。
【００３２】
ステップＳ６において、テープ上に既に書き込まれている他のファイル２のメタ情報を更新する。その更新は、新たに書き込まれたファイルファイル１のメタ情報を元々あるファイル２のメタ情報に追加する形で行われる。これにより、同一データを含む２つのファイル１、２のメタ情報を、他のファイル２のメタ情報から取得する（読み出す）ことが可能となる。更新されたメタ情報は、ファイル１の場合と同様に、インデックス（extent）として、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング（カートリッジの取り出し時等）でインデックスパーティションに書きこまれる。
【００３３】
図６は、本発明のファイルの書き込み時における方法（動作）フローの他の一例を示す図である。図５のフローと比較して、図６のフローでは、ステップＳ１１において、先にテープ上へのファイル１の書き込みが実行され、続けて、ステップＳ１２において、ファイル１のメタ情報だけを先に更新／作成しておく。このように先にファイル１の書き込みを実行するのは以下の理由による。すなわち、図５のステップＳ１で利用するDedup Engineとしては、書き込みデータが発生した際に、短時間で一致するデータの情報を返すものを想定したが、Dedup Engineには一致するデータの情報を返すのに時間がかかる実装もある。本発明の実装形態としては、そのような時間のかかるDedup Engineを使用することもできるので、その場合に対応するべく、書き込みとは非同期に（例えば、ＬＴＦＳのアクセスが少ない時等に）後から一致するデータの情報を特定し、メタ情報を更新する。
【００３４】
図６のステップＳ１３において、図５のステップＳ１の場合と同様に、ファイル１のデータと同じデータを含む他のファイル２が既にテープ上に存在するか否かを検索する。次のステップＳ１４において、図５のステップＳ２の場合と同様に、ステップＳ１３の検索結果に基づき、ファイル１のデータと同じデータを含む他のファイル２が既にテープ上に存在するか否かを判定する。その判定がＮｏの場合、ファイル１の書き込み動作を終了する。ステップＳ１４の判定がＹｅｓの場合、ステップＳ１５において、見つかった他のファイル２のメタ情報を更新する。その更新に際して、他のファイル２の元々あるメタ情報を最初に取得する。
【００３５】
そのメタ情報の取得には、例えば、上述したDedup Engineの機能が利用される。そして、取得したファイル２のメタ情報に、ステップＳ１２において更新したファイル１のメタ情報を追加する形で、ファイル２のメタ情報を更新する。ステップＳ１６において、ステップＳ１２において更新したファイル１のメタ情報に、ステップＳ１５で取得されたファイル２の元々あるメタ情報を追加する形でファイル１のメタ情報を更に更新する。ステップＳ１５及び１６において、更新された各々のメタ情報により、同一データを含む２つのファイル１、２のメタ情報を、ファイル１または他のファイル２の各々のメタ情報から取得する（読み出す）ことが可能となる。いずれの場合も更新されたメタ情報は、インデックス（extent）として、所定のタイミング(一定時間経過後等)でテープ上のデータパーティションに書きこまれ、さらに所定のタイミング（カートリッジの取り出し時等）でインデックスパーティションに書きこまれる。
【００３６】
図７に、図５のステップＳ５、Ｓ６、あるいは図６のステップＳ１５、Ｓ１６で更新された後のメタ情報の例（extent）を示す。ＬＴＦＳではメタ情報をテープに記録する際には、ＸＭＬ形式で記録することＦｏｒｍａｔ  Ｓｐｅｃｉｃｉｃａｔｉｏｎにより規定されている。図７の例はそのＸＭＬのうちの一部で、ファイルのメタ情報に関する記述例である。
【００３７】
extentの情報は、それぞれ対応するタグにより保存され、これらのタグをまとめたタグとして、＜extent＞タグがある。１つのファイルが、複数のエクステントからなる場合には、＜extent＞タグを複数持つこととなる。図７の例では、（１）で指示されるＦｉｌｅＡという名前のファイルは、Ｅ１とＥ２で指示される範囲の２つの＜extent＞タグから構成されている。Ｅ１の＜extent＞タグでは、1036ブロック目からのextentがあり（２）、Ｅ２の＜extent＞タグでは、1040ブロック目からのextentがある（３）。各＜extent＞タグの内容には、上述した（ａ）file offset、（ｂ）partition ID、（ｃ）start block、（ｄ）byte offset、及び（ｅ）byte countに相当するタグが含まれる（（４）と（５））。
【００３８】
図７の例では、Ｅ１の＜extent＞タグにおいて、＜extent＞タグの子要素としてＥ３とＥ４で指示される＜dupextent＞というタグを作っている。そして、＜dupextent＞の内容として、＜startblock＞、 ＜byteoffset＞、及び＜bytecount＞のタグが含まれるようにすることで（（６）と（７））、同一のデータが別の場所に書かれていることを記録することができる。図７の例では、1036ブロック目から始まるデータ（２）と同じデータが、ｘｘｘｘブロックとｙｙｙｙブロックから始まるデータとして（（８）と（９））、テープ上の２箇所に存在することを示している。なお、ここで示したタグ名やＸＭＬタグの構成（要素）は１つの実施例であり、別の名称や構成で記述してもよい。
【００３９】
図８に、本発明の方法におけるファイルの読み出し方法の一実施形態のフローを示す。図８では１つのファイル１を読み出す場合を想定している。複数のファイルを連続してあるいは離散的に読み出す場合も基本的な動作フローは同様である。ステップＳ２１において、ファイル１のメタ情報を取得する。具体的には、テープ上のインデックスパーティション及び／またはデータパーティションに書きこまれたインデックスのメタ情報（extent）を読み出して、ファイル１のデータの位置情報を取得する。
【００４０】
ステップＳ２２において、ファイル１のデータと同一のデータを含むメタ情報（extent）がテープ上に存在するか否かを検索する。この検索は、図７のＥ３あるいはＥ４で示したような＜dupextent＞がファイル１のメタ情報内に存在するか否かで判断できる。ステップＳ２３において、ステップＳ２２の検索結果に基づき、ファイル１のデータと同じデータがテープ上に存在するか否かを判定する。その判定がＹｅｓの場合、ステップＳ２４において、見つかった他のファイル２のメタ情報を取得する。ステップＳ２３の判定がＮｏの場合、先のステップＳ２６に進む。
【００４１】
次のステップＳ２５において、見つかった同一データとファイル１のデータのどちらが現在のヘッドの位置から早く読み出せるかを判定する。その判定には、従来からある技術、例えば、国際公開WO2010／073776で開示されるようなデータ読み出し順序の決定方法を利用することができる。このデータ読み出し順序の決定方法は、テープドライブにおいて実装され、その判定結果はテープドライブから取得することができる。ステップＳ２６において、ステップＳ２５で得られた早く読み出せるデータを読み出す。なお、同一のデータが複数存在する場合は、ファイル１を含めてそれらの中で一番早く読み出せるデータを選択して読み出すことになる。
【００４２】
最後に、図９を参照しながら本発明の方法を適用した場合のデータ構造について説明する。なお、図９では、データに付随して書かれるインデックス（extent）は省略されている。最初に（ａ）に示すように、ファイルＡとファイルＢがテープ上に書かれている場合を想定する。このとき、新たなファイルとして、ファイルＣが書かれるタイミングで、ファイルＣがファイルＡと同じデータ内容であればテープ上には図のようにファイルＣのデータが書き込まれる。さらに、ファイルＡのメタ情報として、詳細は上述したように、データの開始位置をテープ上の位置ａだけでなく、位置ｃも記録される。またファイルＣのメタ情報として、テープ上の位置情報はａとｃの両方が記録される。
【００４３】
この状態で、テープ上のデータの配置は、図９（ｂ）のようになっている。このとき、アプリケーションがファイルＢを読み出すために、テープ上の位置ｂから位置ｃまでのデータを読み出した後（Ｒ１）に、ファイルＡの読み出しをする際には、位置ａまでテープ巻き戻すことなく（ヘッドを移動させることなく）位置ｃからデータを読み出すことができる（Ｒ２）。その結果、ファイルＡのデータを高速に読み出すことができる。
【００４４】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。さらに、本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００４５】
１０  テープドライブ
１１  ホストＩ／Ｆ
１２  バッファ
１３  チャネル
１４  ヘッド
１５  モータ
１６  コントローラ
１７  ヘッド位置制御システム
１８  モータドライバ
１９  カートリッジメモリＩ／Ｆ
２０  テープカートリッジ
２１、２２  リール
２３  テープ
２４  カートリッジメモリ（ＣＭ）
３０  サーバー（ホスト）
３２、３４  ＰＣ
３６  ネットワーク
４０  サーボバンド
１００  ファイルシステム
【図１】
0006052812.tif 000002
【図２】
0006052812.tif 000003
【図３】
0006052812.tif 000004
【図４】
0006052812.tif 000005
【図５】
0006052812.tif 000006
【図６】
0006052812.tif 000007
【図７】
0006052812.tif 000008
【図８】
0006052812.tif 000009
【図９】
0006052812.tif 000010