(57)【特許請求の範囲】
【請求項１】
テープ装置システムにおいて、ファイルをスパニングにしてテープに書込む方法であって、
（ａ）ホストからのファイルの書込み要求を受取るステップと、
（ｂ）前記要求に応じて、順次受け取る前記ファイルのデータを所定のサイズのセグメントに分割するステップと、
（ｃ）前記ファイルをテープに保存するために、一連の前記セグメントを順次１または複数のテープに書込むステップと、を含み、
（ｄ）前記セグメントの所定のサイズは、前記複数のテープにスパニングされたファイル（スパニングファイル）を他の複数のテープに複製する際の前記他のテープの容量の利用効率及び前記複製の所要時間を基に決定されるステップを更に含む、書込みする方法。
【請求項２】
前記（ｄ）の前記セグメントの所定のサイズを決定するステップは、前記テープの空き容量に基づいて前記所定のサイズを決定する請求項１に記載の方法。
【請求項３】
前記（ｄ）の前記セグメントの所定のサイズを決定するステップは、前記スパニングファイルを他の複数のテープに複製する際の前記複製の所要時間を、前記セグメントのリライト所要時間及び前記セグメントのメタ情報（index）の書き込み所要時間に基づいて決
定する請求項１に記載の方法。
【請求項４】
前記所定のサイズは、前記テープの空き容量が減少するに従って小さくなるように決定される請求項２に記載の書込み方法。
【請求項５】
前記（ｄ）の前記セグメントの所定のサイズを決定するステップは、前記テープの空き容量の値が一定の割合以上の場合に、実行される請求項３に記載の書込み方法。
【請求項６】
前記所定のサイズは、前記テープの全記憶容量域の前半部分に書込むセグメント数を低減するように決定される請求項３に記載の書込み方法。
【請求項７】
前記所定のサイズは、前記テープの全記憶容量域の前半部分に書込むセグメントのサイズより、前記テープの全記憶容量の端部付近に書込むセグメントについて小さくなるように決定される請求項３に記載の書込み方法。
【請求項８】
請求項１〜７の何れか１項の記載の書込み方法により、前記テープ装置システムにおいて所定のサイズのセグメントで複数の前記テープにスパニングされたファイル（スパニングファイル）を複製する方法であって、
（ｅ）複製元の前記テープに書き込まれたスパニングファイルのデータを順次、前記セグメント単位で読み出すステップと、
（ｆ）前記読み出されたセグメントのデータを複製先の複数のテープに順次、前記セグメント単位で書き込みするステップと、
（ｇ）前記（ｆ）のセグメント単位でのデータの書込みステップにおいて、前記複製先の複数のテープの内の第１のテープの記憶容量域の終端までの空き容量が前記セグメントの所定のサイズより小さい場合、前記第１のテープへの書込みできないため、前記セグメントのデータを前記複製先の複数のテープの内の第２のテープに再書き込み（rewrite）するステップと、
を含むスパニングファイルを複製する方法。  
【請求項９】
請求項１〜７の何れか１項の各ステップを実行する、テープ装置システム。
【請求項１０】
請求項１〜７の何れか１項の各ステップを前記テープ装置システムに実行させるコンピュータ・プログラム。
【請求項１１】
請求項８の各ステップをテープ装置システムにおいて実行する、テープ装置システム。
【請求項１２】
請求項８の各ステップをテープ装置システムに実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テープ装置システムにおいてファイルを複数のセグメントに分割してテープ（テープカートリッジ、テープメメディア）にスパニング（ｓｐａｎｎｉｎｇ）して書込む方法に関する。詳細には、本発明は、複数のテープにスパニングされて保存されたファイル（スパニングファイル）の複製の際にストレージの利用効率を損なわないように、書込む方法に関する。
【背景技術】
【０００２】
テープメディアをあたかもＵＳＢメモリのようにファイルシステムとして利用する方法としてＬＴＦＳ (Linear Tape File System) が存在する。ＩＢＭ及び他のストレージ会社はフォーマットを定義しその実装を公開している。ＬＴＦＳは、テープメディアをインデックス・パーティション（ＩＰ：Index Partition）と データ・パーティション（ＤＰ：Data Partition） の２つの領域に分割する。前者には主にファイル名などのメタ情報 (インデックス（index)を、後者には主にファイルの本体を記録する。
【０００３】
図１は、従来のＬＴＦＳによる１つのファイルを複数のメディアに分割して保存（スパニング）する典型的な態様を示す。
図１は、１つのドライブに対して複数のメディアをロード／アンロードする態様を示している。典型的には、ストレージ・システムは１または２以上のテープドライブを含み、複数のメディアが複数のドライブを使用する。ａ，ｂ，ｃメディアの指標を意味するメディアのＩＤであり、テープライブラリなどのストレージ・システムは、このＩＤで目的のメディアを特定する。スパニングのために1つのドライブで使用可能で、他のドライブは他の用途に使用されている場合を想定する。１つのドライブに最初のメディアａをロード（マウント）し、ファイルの先頭（最初のファイル部分）を書込む。このドライブはメディアａに、インデックスとしてそのファイルのメタデータを保存する。次にメディアａをアンロード（アンマウント）して。同じドライブに次のメディアｂをロードし、ファイルの次のファイル部分を書込む。このドライブはメディアｂに、インデックスとしてファイルのメタデータを保存する。次にメディアｂをアンロードし、同じドライブに次のメディアｃをロードし、ファイルの次のファイル部分を書込む。このドライブはメディアｃに、インデックスとしてそのファイルのメタデータを保存する。ここで、１つのファイルのスパニングが完了したことになる。従来のＬＴＦＳでは、１つのファイルを複数メディアに書き込む場合に、書き始めの段階において複数メディアに書き込む場合あるとは想定できないので、各メディアは各ファイル部分を独立に保存することになる。
【０００４】
図２は、ＬＴＦＳが１つのファイルを複数（例えば２）のセグメントに分割してスパニングファイルとして、複数（例えば２）のテープに書き込む模式図を示す。
ＬＴＦＳ Format v2.2 では、スパニングファイルと呼ばれる、ファイル“hello_world.txt”を複数のファイル部分 (セグメント) に分割してテープメディア上に保存するフォーマットが策定された。セグメント１にはＬＴＦＳファイルの前半部分（Hello）を割当て、セグメント２にはＬＴＦＳファイルの後半部分（world!）を割当てている。従来、ＬＴＦＳでは１つのファイルを複数のテープメディアに跨って保存させることはできなかった。例えばテープメディアの容量を越えるようなファイルサイズのファイルを取り扱えなかった。ＬＴＦＳのスパニングファイルのサポートにより、１ のファイル “hello_world.txt”を２のセグメントに分割して２つのテープメディアに保存することができるようになった。 “hello_world.txt”のＬＴＦＳファイルの前半部分は、セグメント１としてテープＡに保存される。“hello_world.txt”のＬＴＦＳファイルの後半部分は、セグメント２としてテープＢに保存される。
【０００５】
ＬＴＦＳ は、ＩＰ には主にインデックス（index）と呼ばれるメタデータ (ファイル名、ファイルサイズ、タイムスタンプなど) を保存し、ＤＰには主にファイルの本体を保存する。ＬＴＦＳ はファイルをテープに書き込む際、定期的シンク（periodic sync）という機能により定期的に(例えば５分おきに) indexをＤＰに書き込む。定期的シンクは定期的同期とも言う。定期的シンク時にindexをＩＰではなくＤＰ上に保存するのは、定期的シンクがファイル書き込み所要時間に与える影響を低減するためである。定期的にindexをテープメディアに書き込むは、例えばファイル書き込み中にテープドライブの電源が落ちたような場合のファイルの保全のためである。定期的シンクにより書き込まれた index を活用することによりそれ以前にＤＰに書き込まれたファイルデータがどのファイルのどの部分の情報であるかということを特定することができる。各ファイルに関するindexの容量は ファイル当たり１KB 程度 (１００万ファイルで１ GB 程度) であり、定期的シンク時にはテープメディアに保存された全ファイルのこのメタ情報をＤＰに保存する。このため、テープメディア上に保存するファイル数が多ければ多い程、ＤＰ領域に占めるindexの割合が増え、ファイル本体を保存するための容量が減少する。
【０００６】
スパニングファイルを複製の際に、保存先で保存できなかった場合、再度別のテープメディアに該当するセグメントを保存する必要が生じる。再度の書込み（rewrite）には、通常３〜４時間の時間が必要になる。indexの容量の変動により、セグメントが保存できない場合の再保存所要時間の低減が、本発明が取り組む課題である。
【０００７】
特許文献１は、テープドライブ用のファイルシステムにおいて、１つのファイルを複数のテープメディアに分割して保存（スパニング）する方法を示す。特許文献１を含む従来技術は、１または２以上のテープに保存されたスパニングファイルを他のテープへ複製することについて言及はない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−１１５８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
スパニングファイルの複製の際に、定期的シンクに起因するindexを書き込むタイミングのばらつきによるindexの総容量の変動が生じる。このindex の総容量の変動に起因して、あるテープに書き込まれた全てのセグメントを必ずしも同容量の他のテープに書き込めない課題が存在する。
【００１０】
従って、本発明の目的は、複数のテープに保存されたスパニングファイルの複製の際にストレージの利用効率を損なわないように、書込む方法、テープ装置システム、及びプログラムを提供することである。
【課題を解決するための手段】
【００１１】
かかる目的のもと、本発明は、ホストに接続されたテープ装置を含むテープ装置システムにおいて、ファイルを複数のセグメントに分割して複数のテープ（テープカートリッジ）に、スパニングして書込む方法である。この書込み方法は、
（ａ）ホストのアプリケーションからのファイルの書込み要求を受取るステップと、
（ｂ）前記要求に応じて、順次受け取る前記ファイルのデータを所定のサイズのセグメントに分割するステップと、
（ｃ）前記ファイルをテープに保存するために、一連の前記セグメントを順次１または複数のテープに書込むステップと、を含み、
（ｄ）前記セグメントの所定のサイズは、前記複数のテープにスパニングされたファイル（スパニングファイル）を他の複数のテープに複製する際の前記他のテープの容量の利用効率及び前記複製の所要時間を基に決定されるステップを更に含む。
【００１２】
また、この書込み方法において、前記（ｄ）の前記セグメントの所定のサイズを決定するステップは、前記テープの空き容量に基づいて前記所定のサイズを決定する（図８のステップ８０６）。
【００１３】
また、この書込み方法において、前記所定のサイズは、前記テープの空き容量が減少するに従って小さくなるように決定される。
【００１４】
また、この書込み方法において、前記（ｄ）の前記セグメントの所定のサイズを決定するステップは、前記テープの空き容量の値が一定の割合以上の場合に、実行される。
【００１５】
また、この書込み方法において、前記所定のサイズは、前記テープの全記憶容量域の前半部分付近に書込むセグメント数を低減するように決定される。
【００１６】
また、この書込み方法において、前記所定のサイズは、前記テープの全記憶容量域の前半部分付近に書込むセグメントのサイズより、前記テープの全記憶容量の端部付近に書込むセグメントについて小さくなるように決定される。
【００１７】
更に、かかる目的のもと、本発明は、上述の書込み方法により、前記テープ装置システムにおいて所定のサイズのセグメントで複数の前記テープにスパニングされたファイル（スパニングファイル）を複製する方法である。この複製方法は、
（ｅ）複製元の前記テープに書き込まれたスパニングファイルのデータを順次、前記セグメント単位で読み出すステップと、
（ｆ）前記読み出されたセグメントのデータを複製先の複数のテープに順次、前記セグメント単位で書き込みするステップと、
（ｇ）前記（ｆ）のセグメント単位でのデータの書込みステップにおいて、前記複写先の複数のテープの内の第１のテープの記憶容量域の終端までの空き容量が前記セグメントの所定のサイズより小さい場合、前記第１のテープへの書込みできないため、前記セグメントのデータを前記複写先の複数のテープの内の第２のテープに再書き込み（rewrite）するステップと、を含む。
【００１８】
更に、かかる目的のもと、本発明は、上述の書込み方法の各ステップを実行するテープ装置システムである。
【００１９】
更に、かかる目的のもと、本発明は、上述の書込み方法の各ステップをテープ装置において実行するためのコンピュータ・プログラムである。
【００２０】
更に、かかる目的のもと、本発明は、上述の複製する方法の各ステップを実行するテープ装置システム。
【００２１】
更に、かかる目的のもと、本発明は、上述の複製する方法の各ステップをテープ装置システムに実行させるコンピュータ・プログラムである。
【発明の効果】
【００２２】
上述の本発明の書込み方法により複数のテープに書込まれたスパニングファイルを複製する場合に、テープの容量の利用効率及び複製所要時間を損うことを低減できる。
【図面の簡単な説明】
【００２３】
【図１】従来のＬＴＦＳによる１つのファイルを複数のメディアに分割して保存（スパニング）する典型的な態様を示す。
【図２】ＬＴＦＳが１つのファイルを２のセグメントに分割してスパニングファイルとして、複数（例えば２）のテープに書き込む模式図を示す。
【図３】ＬＴＦＳが３のセグメントに分割されたスパニングファイルの複製を作成する際に、各セグメントを他の複数のテープに書き込む模式図を示す。
【図４】ＬＴＦＳによる２つのパーティションに区分けされたテープを示す。
【図５】ホストに接続されたテープ装置を含むテープストレージ・システム（テープ装置システム）のハードウェア構成を示す。
【図６】セグメントのサイズとＤＰに記録されるindexの総容量との相関関係を示す。
【図７】セグメントのリライト所要時間、定期的なシンクによる書き込むindexの書き込み所要時間、及び合計所要時間と、セグメントサイズとの関係を示す。
【図８】本発明の実施例として、ＬＴＦＳによりファイルをスパニングして書き込むフローチャートを示す。
【図９】ＬＴＦＳによりスパニングファイルを読み出すフローチャートを示す。
【発明を実施するための形態】
【００２４】
以下において、テープ装置システムにおいて、ファイルを複数のテープにスパニングして書込み、及びそのスパニングされたファイルを複製する、実施の形態（実施例）について説明する。
本発明は、複数のストレージにファイルを分割して書込む際に、ファイルのセグメント（ファイルの部分）のサイズを２つの事項を考慮して決定する。第１の事項はセグメントのリライト所要時間である。第２の事項はindexの書き込み所要時間である。これらの２つの事項に基づき、ファイルのセグメントを定めることにより、ストレージの容量の利用効率を損なうことなく、分割して保存されたファイルを格納したストレージの複製の作成を可能にできる。
【００２５】
図３は、ＬＴＦＳが３のセグメントに分割されたスパニングファイルの複製を作成する際に、各セグメントを他の複数のテープに書き込む模式図を示す。
スパニングファイルを作成する際の複写元テープＡ及びＢと、そのスパニングファイルの複製の際の複写先テープＣ及びＤとの間で、使用されるテープドライブ及び通信回線の状況が異なる。そのためのスパニングファイルの複製を作成する際に、定期的シンク（periodic sync）に起因するindexを書き込むタイミングのばらつきによる index の総容量の変動が生じる。図３は、この総容量の変動がスパニングファイルの中盤のセグメント２を保存するテープをシフトさせていることを示す。ファイル“foo_bar_baz.txt” を前半部分（foo）、中盤部分（bar）、後半部分（baz）の ３の セグメント（セグメント１，２，３）に分割して、スパニングファイルとして２のテープに保存する。テープＡは、ファイルの前半部分（foo）を割り当てたセグメント１とファイルの中盤部分（bar）を割当てたセグメント２を格納する。テープＢは、ファイルの後半部分（baz）を割当てたセグメント３を格納する。このようにして、１つのファイルは３つのセグメントに分割されて、スパニングファイルとして２つのテープに書き込まれている。一方で、スパニングファイルの複製ではテープＣには中盤部分（bar）を割当てたセグメント２が収まらなかったとの想定で前半部分（foo）のセグメント１のみを保存している。テープＤ に中盤部分（bar）を割当てたセグメント２と後半部分（baz）を割当てたセグメント３を保存している。この複製の際に、テープＡ上の index の総量がテープＣ上のindexより大きくなり、セグメントが テープＣに収まらない状況は発生する。図３において、テープＣに保存されるindexの総量が増加していることを、テープＣの楕円アイコンをテープＡのものより大きく表している。 テープＣ及びＤにスパニングファイルの複製作成する時の書込み転送速度が、テープＡ及びＢにスパニングファイルを書込み際の転送速度と異なることにより、定期的シンクによる、indexのデータ量が変動する。例えば、テープＣ及びＤにスパニングファイルを書込む転送速度が、テープＡ及びＢへのスパニングファイルの書込み際の転送速度より低い場合が起こりうる。転送速度が低く書き込み所要時間が長くなると、テープ一本書き込む間の定期的シンクの回数が増えるためindexの総量が増える。この場合、indexのデータ量は、テープＡ及びＢ上に比べてテープＣ及びＤ上の方が多く書込まれる。一定時間にはテープＣ及びＤ上に多く数のセグメントが書き込まれるため、その分indexのデータ量もシンクのタイミングで多く書き込まれる。テープＣのＤＰにindexのデータ量が多く書き込まれため、テープＤにはファイルの中盤部分に対応するセグメント２のデータを保存できる残存容量を確保できない。そのため、ファイルシステム（ＬＴＦＳ）は、セグメント２の中盤部分の書込みをテープＣへ実行すると、その書込み動作が失敗してエラー応答を受け取る。同じセグメント２のデータについて、次のテープＤへの再書込み（rewrite）をしなければならないため、余分な時間を費やす必要がある。この余分な時間を、セグメントのリライト所要時間(time of rewrite segment）と言う。
【００２６】
第５世代ＬＴＯ（LinearTape Open）テープメディアを ＬＴＦＳ フォーマットで初期すると、ＤＰの容量は１．４２５TBとなる。ＤＰの容量を越えるファイルを保存する場合、ＤＰの容量に対し一定の割合の大きさ (例えば 100 MB) 毎のセグメントに分割する。つまり、あるテープメディア (テープＸ) には、１００００個のセグメント (foo_bar_baz.txt-ＬＴＦＳseg1 〜 foo_bar_baz.txt-ＬＴＦＳseg10000) まで保存する。その続きのセグメント (foo_bar_baz.txt-ＬＴＦＳseg10001〜foo_bar_baz.txt-ＬＴＦＳseg20000) を別のテープメディア (テープＹ) に保存する。それにより、特に複製の作成時にあるセグメントをテープメディアに保存できなかった場合にそのセグメントを他のテープメディアに保存する所要時間を従来の 0.01 % 以下に低減する。
【００２７】
本発明の実施例を説明のため、ＬＴＦＳフォーマット、テープドライブ、ＬＴＦＳでのファイルのデータの書込みについて説明する。
図４は、ＬＴＦＳにより２つのパーティションに区分けされたテープを示す。
ＬＴＯ５テープドライブは、テープの長手方向に沿った書き込み領域のラップ（wrap）を往復しながらデータを書く。ＬＴＦＳではこのラップ２本分（１往復分）をインデックス・パーティションとして利用している。テープの先端部（ＢＯＴ：Beginning of Tape）から終端部（ＥＯＴ：End of tape）に渡ってＩＰとＤＰとの２つに区分される。ヘッドが同時に読み書きする単位がトラックであり、トラック１６本がラップ１本に相当する。ＬＴＯ５のテープカートリッジでは、テープ長手方向は約８００ｍ、横手方向はラップ数８０本の幅である。ＩＰとＤＰとは２本のラップの保護領域（guard band）で区分される。テープはラップの長手方向に前後に進行し、ＢＯＴおよびＥＯＴにおいて進行する向きを反転することをラップターン（wrap turn）と呼ぶ。テープドライブのヘッドに対してテープの長手方向のＢＯＴからＥＯＴの移動時間は６０〜９０秒である。長手方向の半分のテープ移動時間は３０〜４５秒程度である。
【００２８】
テープドライブ用のファイルシステム、例えばＬＴＦＳでは、メディア上に書かれたデータをファイルとして見せることができる。ユーザがＬＴＦＳを利用してテープメディアに書き込むと、テープメディアではファイル本体の他、インデックスファイル（単にインデックス（index））と呼ばれるメタ情報をテープメディアに書き込む。インデックスは、メタ情報としてディレクトリ名及びファイル名やファイル作成日、及び、メディア上の位置、サイズ、ファイル内のオフセットなどを含む位置メタ情報をＸＭＬ形式で含む。また、インデックスは、１つのファイルが複数のセグメントに分割される場合に、そのセグメントに関連するメタ情報も含む。ＩＰには、主に最新のインデックスが書き込まれる。メディアのＤＰには、逐次追加及び変更されるファイルの本体、及び、それに関連するインデックスの履歴を、追記（append）で書き込まれる。
【００２９】
ＬＴＦＳ を用いてテープメディア上のファイルを読み書きする場合、レコードと呼ばれる単位でデータの読み書きを行う。レコードは、ＬＴＦＳではブロックと呼んでＬＴＦＳフォーマットを与える。ブロックは、ファイルのデータが記録されるパーティション毎にパーティションの先頭から何番目のブロックであるという番号で管理される。インデックスファイルには、ファイルのデータに対するブロックの番号で指示される位置情報が含まれる。
【００３０】
図５は、ホストに接続されたテープドライブ（テープ装置）を含むテープ装置システムのハードウェア構成を示す。
テープドライブ６０は、ホスト３００のアプリケーションからファイルシステム（ＬＴＦＳ）を介してファイルの読み書き要求を受け取る。テープドライブは、通信Ｉ／Ｆ（インターファース）１１０と、バッファ１２０と、記録チャネル１３０と、読書きヘッド１４０と、制御部１５０と、位置決め部１６０と、モータドライバ１７０と、モータ１８０とを含む。
【００３１】
インターフェース１１０は、ネットワークを介してホスト３００との通信を行う。例えばインターフェース１１０は、ホスト３００から、テープカートリッジ（メディア）４０へのデータの書込みを指示する書込みコマンドを受信する。またインターフェース１１０は、ホスト３００から、メディア４０からのデータ読出しを指示する読出しコマンドを受信する。インターファース１１０は、書込みデータの圧縮と、読み出しデータの非圧縮とを行う機能を有し、実際のデータに対してメディアへの記憶容量を約２倍近く高めている。
【００３２】
テ−プドライブ６０は、ホスト３００のアプリケーションから送られた複数のレコードで構築されるデータセット（ＤａｔａＳｅｔ：ＤＳと言う）単位でメディア４０への読み書きを行う。ＤＳの典型的な大きさは４ＭＢである。ホスト３００のアプリケーションは、ファイルシステム（例えばＬＴＦＳ−ＡＰＩ(Application Program Interface））によりファイル名を指定して読み書きアクセスをテープドライブ６０に発行する。ファイルシステムは、ＳＣＳＩコマンドのレベルでレコードをテープドライブに書込み／読み出し要求（Ｗｒｉｔｅ／Ｒｅａｄ）を送る。ＤＳは複数のレコードで構成される。
【００３３】
各ＤＳは、データセットに関する管理情報を含む。ユーザデータはレコード単位で管理される。管理情報はデータセット情報テーブル（ＤＳＩＴ：Data Set Information Table）に含まれる。ＤＳＩＴは、そのＤＳに含まれるレコード又はブロック数およびＦＭ（Filemark）数、更にはメディアの先頭から書かれた累積レコード数および累積ＦＭ数、を含む。
【００３４】
バッファ１２０は、メディア４０に書込むべきデータ、また、メディアから読み出したデータを一時的に蓄積するメモリである。例えばバッファ１２０は、ＤＲＡＭ(Dynamic Random Access Memory）によって構成される。記録チャネル１３０は、バッファ１２０に蓄積されたデータをメディア４０に書き出すため、またはメディア４０から読み出されたデータをバッファ１２０に一時的に蓄積するために用いられる通信経路である。
【００３５】
読書きヘッド１４０は、データ読書き素子を有し、メディア４０へのデータの書込み及びメディアからのデータの読出しを行う。本実施形態に係る読書きヘッド１４０はまたサーボ読取り素子を有し、メディア４０に設けられたサーボトラックから信号を読み取る。位置決め部１６０は、カートリッジ４０の短手方向（幅方向）に読書きヘッド１４０の移動を指示する。モータドライバ１７０は、モータ１８０を駆動する。
【００３６】
テ−プドライブ６０は、ホスト３００から受取ったコマンドに従って、データのテ−プへの書込みやテ−プからの読出しをする。テ−プドライブ６０は、バッファ、読み書きチャネル、ヘッド、モ−タ、テ−プを巻きつけるリ−ルと、読み書き制御と、ヘッド位置制御システムと、モ−タドライバとを含む。テ−プドライブは、テープカートリッジを着脱可能に搭載する。テ−プは、リ−ルの回転に伴い、長手方向に移動する。ヘッドは、テープの長手方向に移動してデータを書き込んだり、テ−プからデータを読出したりする。また、テープカートリッジ４０はカートリッジメモリ（ＣＭ：Cartridge Memory）と呼ばれる非接触不揮発性メモリを備える。テープカートリッジ４０に搭載されたＣＭは、テープドライブ６０により非接触的に読み書きされる。ＣＭはカートリッジ属性を保存する。テープドライブは、読出し及び書込み時に、ＣＭからカートリッジ属性を取り出して最適な読み書きができるようにする。
【００３７】
制御部１５０は、テープドライブ６０の全体の制御を行う。すなわち、制御部１５０は、インターフェースで受信したコマンドに従って、データのメディア４０への書込み及びメディア４０からのデータの読出しを制御する。また、制御部１５０は、読取られたサーボドラックの信号に従って位置決め部１６０を制御する。更に制御部１５０は、位置決め部１６０及びモータドライバ１７０を介してモータの動作を制御する。なお、モータドライバ１７０は制御部１５０に直接接続されてもよい。
【００３８】
本発明の具体的なスパニングファイルの書き込み方法を説明する。
図６は、セグメントのサイズとＤＰに記録されるindexの総容量との相関関係を示す。
セグメントのサイズを小さくすればするほど、セグメントの再書き込み所要時間を低減できる。一方、セグメントのサイズを小さくすればするほど一本のテープメディアに保存されるセグメントの数が増え、index の容量増大に繋がる。第５世代ＬＴＯ テープメディアに対しデータを読み書きする際の転送速度は１４０MB/sec である。これは、ＤＰ をファイルで埋め尽くすのに１６９分 (= 1.425[TB] * 1000 * 1000 / 140 [MB/sec] / 60) かかる。つまり、書き込み中に３３回 定期的シンクによるindexの書き込みが発生することを意味する。各セグメントのサイズと ＤＰ 中に占めるindex の総容量をグラフで示すと図６のようになる。セグメントのサイズが１０GBであれば ＤＰに記録されるindexの総容量は３MB 弱である。反対に、例えばセグメントのサイズを１MB にすると、ＤＰに記録されるindexの総容量は２３GBにも及ぶ。
【００３９】
図７は、セグメントのリライト所要時間と、定期的なシンクによる書き込むindexの書き込み所要時間との合計所要時間とセグメントサイズとの関係を示す。
スパニングファイルの複製において、ストレージの容量の利用効率は、次に与える第１要因、第２要因、及び第３要因に依存する。一連のセグメントを書き込む過程でのテープ終端直前での特定のセグメントの書込みの際に、テープの記憶域終端までの空容量を越えると書込みエラーとなる。リライト（rewrite）所要時間（第１要因）とは、書込みエラーとなったセグメントを次のテープに再度買い込みをする必要があり、その再書込みのための時間を意味する。ＤＰに定期的シンクによるメタ情報（index）の書込み所要時間（第２要因）は、複製時でのオーバーヘッドとなる。例えば、３３回のシンクによりindexを３３回書き込むことが書き込み所要時間を増加させる要因となる。合計所要時間（第３要因）は、スパニングファイルの複製を作成する際の評価時間を意味する。図７は、合計所要時間は、リライト所要時間（第１要因）と定期的シンクでのindexの書込みの所要時間（第２要因）と合計である。所要時間の観点で見れば、セグメントのリライト所要時間と index の書き込み所要時間が最小になるセグメントのサイズ (100MB程度) が好適である。また、この１００MB という値は、テープメディアの容量の有効活用という観点でも、ＤＰの容量 １．４２５TBに対し高々０．００１％であるという観点で好ましい。この値は、あるセグメントが書き込めなかった時の影響の観点からも好ましい。
【００４０】
本発明では、スパニングファイルの複製の際に、テープストレージの利用効率を損なわないように、セグメントのサイズを適宜状況に応じて変更する。ここまで、実施例として、全てのセグメントのサイズを同じサイズに揃えた例を説明した。例えばテープメディアの空き容量に応じ変動させても良い。空き容量が一定の値 (例えば１０ＧＢ) ないし割合 (１０％) 以下になったときだけ本発明を適用しても良いし、空き容量の値が一定の値ないし割合以上の場合には空き容量に応じてセグメントのサイズを決めても良い。例えばセグメントの容量をテープメディアの空き容量の１０％とする場合である。テープメディアの前半に保存するセグメント数を低減することにより、indexの書き込み所要時間を低減することができる。
【００４１】
図８は、本発明の実施例として、ＬＴＦＳによりファイルをスパニングして書き込むフローチャートを示す。
図８は、図２及び図３において、ファイルの書込み要求を受け取った場合の本発明のスパニング態様を示す。ファイルシステム（ＬＴＦＳ）が、容量が大きなファイルを複数のセグメントに分割して１または複数のテープに、次のステップを行っても良い。また、同様な処理を、ＬＴＦＳを利用するアプリケーションが行っても良い。
（８０２）ホストのアプリケーションからファイルシステム（ＬＴＦＳ）が書き込み要求を受け取った場合である。
（８０４）ＬＴＦＳは、テープカートリッジの空き容量は一定の容量または一定の割合以上であるか確認する。ファイルを分割するセグメントのサイズ（セグメントサイズ）を、空き容量に基づいて決定する。
（８０６）テープカートリッジの空き容量が一定の容量以上である場合（８０６でＹＥＳ）、テープカートリッジの空き容量に基づいて最大セグメントサイズを選択できる。
（８０８）テープカートリッジの空き容量が一定の容量より小さい場合（８０６でＮＯ）セグメントのリライト所要時間（第１の要因）とindex書き込み所要時間と（第２の要因）とに基づいて最大セグメントサイズを決定する。
（８１０）順次アプリケーションから送られてくるファイルのデータについて、書き込むとセグメントの最大サイズを越えるかを確認する。
（８１２）ＬＴＦＳはファイルのデータをセグメントの最大サイズまで書き込みできる。
（８１４）ＬＴＦＳは、このセグメントをクローズ（Close）する。
（８１６）ファイルのアプリケーションから受け取る後続のデータのために新たなセグメントを生成（Create）する。
（８１８）アプリケーションから送られるファイルのデータのサイズがセグメントサイズに満たない場合（８１０でＮＯ）、ファイルのデータの終端部と見なせる。この場合、かかるデータを最終のセグメントとしてテープに書き込む。
（８２０）ステップ８１８にファイルの最終セグメントが書き込まれ、ファイルのスパニングによる書込み終了する。
【００４２】
図９は、ＬＴＦＳによりスパニングファイルを読み出すフローチャートを示す。
この読み出し方法を使用して元のテープＡ及びＢからスパニングファイルが読み出され、セグメント単位で先のテープＣ及びＤに書込み、複製作成（図３参照）される。
（９０２）ファイルシステム（ＬＴＦＳ）がホストのアプリケーションからファイルの読み出し要求を受け取った場合である。
（９０４）ＬＴＦＳは、読み出し要求された要求されたファイルについて順次（シーケンシャルに）読み出される順次データのサイズがセグメントサイズを越えるか確認する。ＬＴＦＳは、テープに保存されたindexを参照して要求されたファイルが分割されたスパニングファイルことを特定できる。
（９０６）読み出される順次データのサイズがセグメントサイズを越える場合（９０４でＹＥＳ）、ファイルを分割したセグメントを特定して、セグメントサイズまでのデータを読み出す。
（９０８）そのセグメントを閉じる（Close）する。
（９１０）要求されたファイルの後続のデータを含む次のセグメントを特定して、そのセグメントを開く（Open）する。
（９１２）要求されたファイルについて読み出される順次データのサイズがセグメントのサイズを越えない場合（９０４でＮＯ）、ファイルの終端のセグメントのデータを読み出しである。
（９１４）ステップ９１２においてファイルの最終データ即ち、最終セグメントの読み出しで読み出しが終了する。
【００４３】
これらのフローチャートでは、書き込み及び読み出し要求について説明している。実際にはその前に Open ないし Create の要求があり、Open であれば Open 後書き込み/読み出し前に Seek の要求が来る。Open/Create では先頭のセグメントを開き/作成する。その後の Seek では、Seek先がセグメント内であればその場所へ、セグメントのサイズを越える場合は２つ目移行のセグメント内の該当位置へ位置合わせを行う。
【００４４】
本発明の書込み（スパニング）する方法及び読み出し方法を利用して、スパニングファイルについて複製する実施例を説明する。図３に示すように、テープＡ及びＢに保存されたスパニングファイル“foo_bar_baz.txt”のセグメント１、セグメント２、及びセグメント３をテープＣ及びＤに複製する場合を想定する。特に、複製書込みの際のindexの容量の増加に伴いセグメント１及び２のデータを含む書込みデータ量が大きくなると、テープＣへの書込みの最終階においてエラーとなる。複写先のテープＣの記憶容量域終端までの空き容量が、セグメント１及び２とインデックスとのデータ総容量より小さいためである。セグメント１のデータをテープＣへの書込みできないため、そのデータをテープＤに再書き込み（rewrite）する余分な時間（セグメントのリライト所要時間）を必要とする。このリトライ時間が大きいと、スパニングファイルの複製の作成に時間がかかりすぎる。また、セグメント２のデータがテープＣに書き込まれないために、テープＣ記憶域端部までの空き容量が無駄になり、ストレージ容量の利用効率が損なわれる。スパニングファイル作成の際にセグメント１及び２のサイズをある程度小さくすることにより再書込みの悪影響を小さくできる。しかしながら、セグメントサイズを小さくし過ぎるとセグメント数を増加させることになり、indexの総容量を増やすことになり、ストレージの容量の利用効率を低下させる。従って。本発明では、スパニングファイル書込みの際のセグメントのサイズを、複製先のテープの容量の利用効率及び複製の所要時間のバランスを考慮して決定される。
【００４５】
以上より、本発明の方法は、この書込み方法により、複数のテープに書込まれたスパニングファイルを複製する場合にテープの容量の利用効率及び複製所要時間を損うことを低減できる。なお、本発明を実施の形態（実施例）を用いて説明したが、本発明の範囲は上記実施例には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００４６】
４０…テープカートリッジ（メディア、テープ）、
６０…テープドライブ（テープ装置）、
１１０…通信Ｉ／Ｆ（インターフェース）、
１２０…バッファ、
１３０…記録チャネル、
１４０…読み書きヘッド、
１５０…制御部（コントローラ、読み書き制御を含む）、
１６０…位置決め部
１７０…モータドライバ、
１８０…モータ、
３００…ホスト（ユーザ・アプリケーションとファイルシステムを含む）、
【図１】
0006005122.tif 000002
【図２】
0006005122.tif 000003
【図３】
0006005122.tif 000004
【図４】
0006005122.tif 000005
【図５】
0006005122.tif 000006
【図６】
0006005122.tif 000007
【図７】
0006005122.tif 000008
【図８】
0006005122.tif 000009
【図９】
0006005122.tif 000010