(57)【特許請求の範囲】
【請求項１】
固定長のデータセット（ＤＳ）の単位でテープに記録する装置において、ホストからのファイルの書込み要求に応じて前記ファイルを書込む方法であって、
第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、
前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、
第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ、ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、
を実行するテープ書込み方法。
【請求項２】
第２のファイルに続いて第３のファイルの書込み要求を受けた場合において、前記残余の第１、第２、または第３のファイルを詰めてＤＳ＃ＮでＷＰ＃Ｍ＋２で、ＷＰ＃ＭのＤＳ＃Ｎを上書きするステップと、
第２のファイル及び第３のファイルのＤＳ＃Ｎ以降の残り部分は後続のＤＳのＤＳ＃Ｎ＋１、Ｎ＋２・・・として、ＷＰ＃Ｍ＋２としてテープに書込むステップと、
前記ＤＳ＃Ｎ,＃Ｎ＋１，＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップと、
を実行する請求項１に記載の方法。
【請求項３】
前記ＤＳ（＃Ｎ，ＷＰ＃Ｍ＋２）の書込みが成功した場合、
前記ＤＳ（ＤＳ＃Ｎ）のＷＰ＃Ｍ＋２を不揮発性メモリから削除し、前記ＤＳ＃Ｎ,ＤＳ＃Ｎ＋１，ＤＳ＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップとを含み、
前記ＤＳ＃Ｎを見出す場合前記不揮発性メモリを参照してＷＰ＃Ｍ＋２のＤＳを読み出すことを特徴とする請求項２に記載の方法。
【請求項４】
前記ＤＳ（＃Ｎ，ＷＰ＃Ｍ＋２）の書込みが失敗した場合、
前記ＤＳ＃Ｎを見出す場合前記不揮発性メモリに保管されたＷＰ＃Ｍ＋２のＤＳに含まれる第１、第２、または第３のファイルを読み出すことを特徴とする請求項２に記載の方法。
【請求項５】
前記ファイルが前記データセットの固定長より十分小さい場合に、前記データセットに出来るだけ複数の前記ファイルを充填することを特徴とする請求項３に記載の方法。
【請求項６】
前記ファイルごとの書込み要求は、ホストから書込み命令（Ｗｒｉｔｅ）に続いて同期命令（Ｆｌｕｓｈ）が伴うことを特徴とする請求項１〜５何れか１項に記載の方法。
【請求項７】
前記不揮発性メモリは、前記テープを含むカートリッジに具備されているＣＭ（カートリッジメモリ）であることを特徴とする請求項１〜６何れか1項に記載の方法。
【請求項８】
前記同期命令に続いて前記書込められたファイルの後部に区切りマーク（ＦＭ）を書き込むことを特徴とする請求項６に記載の方法。
【請求項９】
固定長のデータセット（ＤＳ）の単位でテープに記録するコンピュータにおいて、ホストからのファイルの書込み要求に応じて前記ファイルを前記テープに書込むプログラムであって、
第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、
前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、
第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ,ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、
をコンピュータに実行させるプログラム。
【請求項１０】
固定長のデータセット（ＤＳ）単位でテープに記録し、ホストからのファイルの書込み要求に応じて前記ファイルを前記テープに書込む、テープ記録装置であって、
ホストからのファイルを一時保管するバッファと、
前記バッファに保管されたデータセットを固定長のＤＳ単位で書き込まれるテープ媒体と、
前記ファイルを前記データセット（ＤＳ）単位で前記テープ媒体に書き込む書込み読出し制御手段とを備え、
前記書込み読み出し制御手段は、
第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、
前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、
第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ、ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、
第２のファイルに続いて第３のファイルの書込み要求を受けた場合において、前記残余の第１、第２、または第３のファイルを詰めてＤＳ＃ＮでＷＰ＃Ｍ＋２で、ＷＰ＃ＭのＤＳ＃Ｎを上書きするステップと、
第２のファイル及び第３のファイルのＤＳ番号が＃Ｎの残り部分は後続のＤＳとしてＤＳ＃Ｎ＋１、Ｎ＋２・・・として、ＷＰ＃Ｍ＋２としてテープに書込むステップと、
前記ＤＳ＃Ｎ,＃Ｎ＋１，＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップと、
を実行するテープ記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、小さなトランザクションをテープに書込みことを要求された場合の書込み方法、及びテープ記録装置（テープドライブ）に関する。
【背景技術】
【０００２】
テープドライブの典型例は、ＬＴＯ（Ｌｉｎｅａｒ  Ｔａｐｅ＿Ｏｐｅｎ）テープドライブやＩＢＭエンタープライズテープドライブＴＳ１１３０などである。テープドライブに利用されるテープメディアは、データカートリッジとＷＯＲＭ (Ｗｒｉｔｅ  Ｏｎｃｅ  Ｒｅａｄ  ｍａｎｙ) カートリッジの２つの種類に大別される。例えば、記録媒体であるＣＤを用いて説明する。 ２つのカートリッジはそれぞれＣＤ−ＲＷ（Compact  Disc-Rewritable)とＣＤ−Ｒ(CompactDisc Recordable)に対応する。前者は一度保存したデータを消去/更新することができるが、後者はできない。【０００３】
ホストは、記録したい可変長のトランザクション（ファイルまたはデータとも言う）をテープドライブに送る（Ｗｒｉｔｅ命令）。ホストから送られてきた可変長のデータで送られる。テープドライブは、テープメディアにデータを書き込む際、データセット（ＤａｔａＳｅｔ：ＤＳ省略する）と呼ばれる１．６ＭＢ程度の固定長のデータとして再構築する。【０００４】
テープドライブは、データセット単位でテープメディアに書き込んでいる。データセットはデータセット番号（ＤＳ＃）とＷｒｉｔｅＰａｓｓ(ＷＰ) と呼ばれる２つのＩＤ によって識別される。ＤＳ＃は０から始まり、例えばデータを書き込む際、ＤＳ＃Ｎのデータセットに入りきらかったデータをＤＳ＃Ｎ＋１のデータセットに詰めるといった感じでＤＳ＃ は用いられる。ＷＰはＤＳ＃の世代/鮮度を表す。データセットは通常ＤＳ＃の順に並んでテープメディア上に書き込まれている。【０００５】
例えば ＤＳ＃Ｎ の内容を更新する場合、テープ上の全てのデータセットが持つどのＷＰよりも高いＷＰを用いてＤＳ＃Ｎを書き込む。データセットを読み出す場合、ＤＳ＃ＮのＷＰが＃Ｍであれば、テープドライブはＷＰがＭ以上のＤＳ＃Ｎ+1を次に読み出そうとする。言い換えると、ＤＳ＃Ｎを更新すると、それ以前に書き込まれたＤＳ＃Ｎ+1 以降のＤＳは論理的には消去されたものと見做され、以後それらの古いＤＳを読み出すことはできなくなる。【０００６】
ＩＢＭエンタープライズテープドライブ及びＬＴＯ（Linear Tape Open）に準拠したテープドライブは、データをテープ媒体上に、固定長のデータセット(ＤＳ: Data Set) という単位でシーケンシャルに書込む。テープドライブは、ホストから読出し命令に応じて、テープに書かれたＤＳをシーケンシャルに読出す。テープドライブでは、１つのテープカートリッジを、新しいＤＳを古いＤＳの上に上書きして、何度も使用を続ける。【０００７】
図１は、複数のＤＳがシーケンシャルにテープ媒体上に書込まれた状態を示す。テープ上のＤＳを上書きするという。テープドライブは、先ず新しいデータをＤＳ単位で、ＤＳ番号（ＤＳ＃）を順番に付してテープ媒体上にシーケンシャルに書く。テープ上のＤＳを上書きする場合は、テープ媒体上に古いＤＳは、残したまま同じＤＳ＃の新しいＤＳにより実質的に重ね書きされることが望まれる。【０００８】
図１下図は、ＤＳ＃１〜＃５を上書きした状態を示す。テープに書かれた各ＤＳには、ＤＳ＃と、Ｗｒｉｔｅ  Ｐａｓｓ（ＷＰ）とが識別標識として割当てられる。テープドライブは、データを書き込む場合ＤＳをテープに書き込むたびにＤＳ＃を１ずつ増加させる。同じＤＳ＃のＷＰは、上書き回数、または、エラー時の再試行（retry)の書込み回数を示す。テープドライブがＤＳ＃Ｘ（Ｘは任意の番号）のＤＳの書き込みに失敗した場合には、ＷＰを増加させた値を後続番号のＤＳとして割り振る。
【０００９】
図１上図の現在のテープの書込み状態は、成功裡に各ＤＳがテープに書込まれた初期の段階を示す。現在の状態では、各ＤＳは書込み操作が１回しか行われていないため、各ＤＳには同じ値（ＷＰ１）が割当てられる。図１下図において、上書したＤＳ＃１〜＃５を、上図の上書きされたＤＳ＃１〜＃５と区別するためにＷＰを加算して１から２になる。テープドライブは、ＷＰの値により、テープ上に上書きされた同じＤＳ＃について古いＤＳと新しいＤＳを識別して、新しいＤＳを読み取る。【００１０】
上書きは、古いＤＳを同じＤＳ＃の新しいＤＳにより完全に上書きすることがデータ保全（ＤＩ：Data Integrity）上望ましい。しかし、テープドライブの書込み制御に多少の誤差が生じるため、テープ上に書かれた古いＤＳの前後の両端部が多少残存する。従って、上書き操作を複数回行うと同じＤＳ＃のＤＳがテープ上に複数残る。テープドライブは、シーケンシャル読取り時に複数の同じＤＳ＃のＤＳから、最高のＷＰが付されたＤＳを新しいＤＳとしてホストに転送し、データ保全（ＤＩ）を保証する。【００１１】
テープメディア上に書き込まれたデータセットの長さは約１０ｃｍである。テープドライブがデータセットを書き込む際、並び合うデータセットの間隔は４ｍ以内にすることが求められている。これはデータセットを読み出す際に探索する範囲を限定するためである。【００１２】
通常は各データセットの間隔は可能な限り短くする。間隔をあけると、その分記録密度が低下し、テープメディア上に書き込めるデータの容量が低下するからである。また、あるデータセットを上書きする (あるデータセットが含むデータを更新する) 場合は、以前書いた同じ ＤＳ＃ のデータセットの先頭から書き始める。これは、データセットの読み出し時に更新前のデータを持つデータセットを読み出し、ホストに送信してしまうことを避けるためである。【００１３】
ホストはテープメディアにファイルマーク (ＦＭ：File Mark) と呼ばれる特殊なデータを書き込むことができる。これのＦＭは本のしおり相当し、ファイル間の区切りを示す。ＦＭを書き込んだデータを読み出す際の位置合わせに利用される。【００１４】
ＦＭは、ファイルとファイルの間に 1 つ、最後のファイルの末尾に２つ書き込まれることがある。これらのＦＭを書き込むにあたり、ホストはファイルを書き終わるとＦＭを２つ書く。次のファイルを書き込む場合には最後のＦＭを上書きする形でデータを書き込むことが多い。そのためＷＯＲＭカートリッジであっても最後のＦＭが上書きされる。そのカートリッジに書き込まれたデータの中で最後に書き込まれたデータが複数のＦＭである場合、それらのＦＭの一部を消去することは許容されている。【００１５】
図２は、テープに１つのファイルの書込みごとに２つのＦＭを書いていることを図示する。この機能を実現するため、現在のテープドライブはＷＯＲＭカートリッジに複数のＦＭを書き込む際、最初のＦＭと２つ目以降のＦＭを別のデータセットに書き込む。まず、ホストから送られてきたファイルＡはテープドライブ内のバッファメモリ内に格納される。その後ＦＭを２つ書き込む際に、ファイルＡとＦＭ 1 つが ＤＳ＃Ｎ に格納さる。もう 1 つの ＦＭ は ＤＳ＃Ｎ+1 に格納された状態でテープメディア上に書き込まれる。次に、ホストからファイルＢ及びＦＭ２個をファイルＡのあとに書き込まれた１つ目のＦＭの次に書き込むように、ドライブか行う。テープドライブは、ＤＳ＃Ｎ+1にファイルＢとＦＭ １つを書込む。先程ファイルＡを書い込むときにＤＳ＃Ｎ+1 を書き込んだ時のＷＰより高いＷＰを用い、ＤＳ＃Ｎ+1 を上書きする。その後、ＤＳ＃Ｎ＋２にＦＭを1つ格納し直近に書き込んだＤＳ＃Ｎ+1と同じＷＰを用いＤＳ＃Ｎ＋２をＤＳ＃Ｎ+1の後方に書き込む。以下同様にファイルＣ以降も書き込まれる。【００１６】
特許文献１は、読み出しエラーが起こった場合に、迅速かつ適切にデータ読み出しを続けるための技術を提供する。同文献は、ホストコンピュータに接続されたテープ読出装置である点で本発明の技術分野と共通するが、読み出し技術を提示しているに過ぎない。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】国際公開ＷＯ２００７／１０２４３４号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１８】
ところで、データセットの容量は１．６ＭＢであるので、例えば２５６ＫＢのファイルを書いてはＦＭを書くことを繰り返すアプリケーションを利用する。データセットの容量よりも十分大きなサイズのファイルを書き込む場合と比べ記録密度が２割以下にまで低下するという課題が存在する。これが本発明により解くべき課題である。【００１９】
本発明の目的は、テープへの書込み方法、特に小さなトランザクションをテープ書込みすることを要求され場合の書込方法、そのプログラム、及びテープドライブを提供することである。
【課題を解決するための手段】
【００２０】
上記の目的を達成する本発明は、固定長のデータセット（ＤＳ）の単位でテープに記録する装置において、ホストからのファイルの書込み要求に応じて前記ファイルを書込む方法である。この書込み方法は、
（ステップ１）第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、
前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
（ステップ２）第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、
第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ、ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、
を実行する。
【００２１】
この書込み方法は、
（ステップ３）第２のファイルに続いて第３のファイルの書込み要求を受けた場合において、前記残余の第１、第２、または第３のファイルを詰めてＤＳ＃ＮでＷＰ＃Ｍ＋２で、ＷＰ＃ＭのＤＳ＃Ｎを上書きするステップと、
第２のファイル及び第３のファイルのＤＳ＃以降の残り部分は後続のＤＳとしてＤＳ＃Ｎ＋１、Ｎ＋２・・・として、ＷＰ＃Ｍ＋２としてテープに書込むステップと、
前記ＤＳ＃Ｎ、＃Ｎ＋１，＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップと、を含む。【００２２】
この書込み方法は、前記ＤＳ（＃Ｎ，ＷＰ＃Ｍ＋２）の書込みが成功した場合、前記ＤＳ（ＤＳ＃Ｎ）のＷＰ＃Ｍ＋２を不揮発性メモリから削除し、前記ＤＳ＃Ｎ、ＤＳ＃Ｎ＋１，ＤＳ＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップとを含み、前記ＤＳ＃Ｎを見出す場合前記不揮発性メモリを参照してＷＰ＃Ｍ＋２のＤＳを読み出すことを特徴とする。【００２３】
この書込み方法は、前記ＤＳ（＃Ｎ，ＷＰ＃Ｍ＋２）の書込みが失敗した場合、前記ＤＳ＃Ｎを見出す場合前記不揮発性メモリに保管されたＷＰ＃Ｍ＋２のＤＳに含まれる第１、第２、または第３のファイルを読み出すことを特徴とする。【００２４】
この書込み方法は、前記ファイルが前記データセットの固定長より十分小さい場合に、前記データセットに出来るだけ複数の前記ファイルを充填することを特徴とする。
【００２５】
この書込み方法は、前記ファイルが前記データセットの固定長より十分小さい場合に、前記固定長のデータセットを複数の前記ファイルで詰めることにより、前記データセットの固定長に対して書込み記録密度を１００％に近づけることを特徴とする。【００２６】
この書込み方法は、前記不揮発性メモリが、前記テープを含むカートリッジに具備されているＣＭ（カートリッジメモリ）である。【００２７】
この書込み方法は、前記同期命令に続いて前記書込められたファイルの後部に区切りマーク（ＦＭ）を書き込むことを特徴とする。【００２８】
更に上記の目的を達成する本発明は、固定長のデータセット（ＤＳ）の単位でテープに記録するコンピュータにおいて、ホストからのファイルの書込み要求に応じて前記ファイルを前記テープに書込むプログラムである。本発明のプログラムは、
（ステップ１）第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
（ステップ２）第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ、ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、をコンピュータに実行させることを特徴とする。
【００２９】
更に上記の目的を達成する本発明は、固定長のデータセット（ＤＳ）単位でテープに記録し、ホストからのファイルの書込み要求に応じて前記ファイルをテープに書込む、テープ記録装置である。本発明の装置は、ホストからのファイルを一時保管するバッファと、前記バッファに保管されたデータセットを固定長のＤＳ単位で書き込まれるテープ媒体と、前記ファイルを前記データセット（ＤＳ）単位で前記テープ媒体に書き込む書込み読出し制御手段とを備え、前記書込み読み出し制御手段は、
（ステップ１）第１のファイルの書込み要求を受けた場合に、第１のファイルを複数のＤＳとしてテープに書込むステップと、
前記複数のＤＳの最後のＤＳのＤＳ番号を＃Ｎ（ＤＳ＃Ｎ）及びＷＰ番号を＃Ｍ（ＷＰ＃Ｍ）として不揮発性メモリに保管するステップと、
（ステップ２）第１のファイルに続いて第２のファイルの書込み要求を受けた場合に、第１のファイルを含む前記最後のＤＳ（ＤＳ＃Ｎ、ＷＰ＃Ｍ）の後続のＤＳに、前記最後の第１のファイル及び第２のファイルを詰めて順次ＤＳ単位でテープに書き込むステップと、
第２のファイルを含む前記ＤＳを順にＤＳ＃Ｎ、ＤＳ＃Ｎ＋１・・・及びＷＰ＃Ｍ＋１として前記不揮発性メモリに保管するステップと、
（ステップ３）第２のファイルに続いて第３のファイルの書込み要求を受けた場合において、前記残余の第１、第２、または第３のファイルを詰めてＤＳ＃ＮでＷＰ＃Ｍ＋２で、ＷＰ＃ＭのＤＳ＃Ｎを上書きするステップと、
第２のファイル及び第３のファイルのＤＳ番号が＃Ｎの残り部分は後続のＤＳとしてＤＳ＃Ｎ＋１、Ｎ＋２・・・として、ＷＰ＃Ｍ＋２としてテープに書込むステップと、
前記ＤＳ＃Ｎ,＃Ｎ＋１，＃Ｎ＋２・・・で、そのＷＰ＃Ｍ＋２であることを不揮発性メモリに保管するステップと、を実行することを特徴とする。
【００３０】
以上の書込み方法を実装したテープドライブは、書込みエラー時のファイルの回復を保証しつつ、テープ上のデータ記録密度を向上させる有利な効果を有する。
【図面の簡単な説明】
【００３１】
【図１】複数のＤＳがシーケンシャルにテープ媒体上に書込まれた状態を示す。
【図２】テープに１つのファイルの書込みごとに２つのＦＭを書いていることを図示する。
【図３】ファイルＡと次のファイルＢを分離されたＤＳ＃に書かない場合の、エラーが生じる事態を示す。
【図４】本実施形態が適用されるテープドライブ１０の構成例を示した図である。
【図５】テープに同じＤＳ＃ＮのＤＳが古い順に３つ上書きにより古いＤＳを完全に重ね書きをしたと仮定した状態を示す。
【図６】最初にＤＳが＃１から２０までテープに書かれた後（上図）、ＤＳ＃１０のＤＳが上書きされた状態（下図）を示す。
【図７】ＣＭに登録されている、テープカートリッジの属性情報のメモリマップを表す。
【図８】本発明の書込み方法を説明する。
【図９】本発明のファイル書込みの手続きを示すフローチャートである。
【発明を実施するための形態】
【００３２】
以下において、本発明のテープドライブのデータ（ファイル、トランザクション）の書込み方法について、幾つかの典型的な実施形態（以下「実施例」という）が説明される。これら実施例は、例示であり本発明の選択方法を限定するものではない。
【００３３】
図３は、ファイルＡと次のファイルＢを分離されたＤＳ＃に書かない場合の、エラーが生じる事態を示す。テープドライブが、２つのＦＭを１つのデータセットに格納すると、ファイルＡとＦＭ２つを書き込む際に、上書き動作が生じる。その全てを ＤＳ＃Ｎ に詰め込むと、上書きして最後尾のＦＭを消し、ファイルＢ書き込むためにはＤＳ＃Ｎ を書き直す必要がある。
【００３４】
ファイルＢを書き込む際、ファイルＢもＤＳ＃Ｎの空き領域に追加し ＤＳ＃Ｎ を書き込む。ファイルＢを書き込み時にエラーが発生した場合に、すでに書き込んだことを保証しているファイルＡのデータまで失われてしまう。そこで、書き込みエラー発生時にファイルＡが失われることを防ぐ手段として、Ｂを別のＤＳ に書くことを考えている。ファイルＢを書き込む際にファイルＡを含む ＤＳ＃Ｎ を再度書きこむ必要がないように、２つ目以降の ＦＭ を別の ＤＳ に分離しているのである。
なおＷＯＲＭカートリッジでは、一度書いたファイルＡやその直後のＦＭを上書きすることは許されていない。
【００３５】
図４は、本実施形態が適用されるテープドライブ１０の構成例を示した図である。テープドライブ１０は、ホスト３０から送られた複数のファイル、またはデータ（ファイル）を固定長のデータセット（ＤＳ）単位でテープ記録媒体への書込みまたは上書き（Write)する。ＤＳは複数のファイルの集まりであり、固定長のフォーマット構造を有するテープに書込む単位である。尚、本発明はＤＳが可変長である場合を排除するものではないが、以下実施形態ではＤＳが固定長である場合について説明する。
【００３６】
テープドライブ１０は、インターフェース１１と、バッファ１２と、チャネル１３と、ヘッド１４と、モータ１５と、テープ２３を巻きつけるリール２２とを含む。書込み読取り制御１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。モータ１５は、２個のモータを設けてよい。テープドライブ１０は、テープカートリッジ２０を着脱可能に搭載する。
【００３７】
テープカートリッジ２０は、リール２１に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。テープ２３は、磁気テープ以外のテープ媒体でもよい。読取り時に、テープを目的位置まで高速に移動させることができるように、テープドライブでは、テープカートリッジの属性（テープディレクトリと呼ばれる）情報を、テープカートリッジ内に装備されているカートリッジメモリ（ＣＭ：Cartridge Memory）２５と呼ばれる非接触不揮発性メモリに記録している。搭載されたテープ２０のカートリッジＣＭ２５は、テープドライブ１０により非接触的に読み書きされる。
【００３８】
図７は、ＣＭに登録されている、テープカートリッジの属性情報のメモリマップを表す。テープドライブは、上書き時に書き込み位置をずらした再試行を行った場合、再試行によりＤＳ情報を、ＣＭに記録する。メディアの傷により上書きできない問題を避けるために、テープカートリッジに付帯するＣＭに上書き時に書き込み位置をずらして書き込む。例えばＣＭには、特定のＤＳ＃について書込み回数の最新値がＷＰ値として記録される。
【００３９】
ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読出したりする。モータ１５は、リール２１、２２を回転させる。１つのモータ１５を表しているが、リール２１、２２の各々に１つずつのモータを設けるのが好ましい。
【００４０】
書込み読み込み制御１６は、テープドライブ１０の全体を制御する。例えば、インターフェース１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読取りを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御、及び、書込みデータへの訂正符号の付加・読取りデータのエラー訂正も行う。モータドライバ１８は、モータ１５を駆動する。
【００４１】
インターフェース１１は、上位装置の一例であるホスト３０との通信を行う。ホスト３０から、テープ２３を目的の位置に移動させるコマンド、テープ２３へのデータの書込みを指示するコマンド、テープ２３からのデータの読取りを指示するコマンドを受け取る。それぞれは、位置決めコマンド、Ｗｒｉｔｅコマンド及び同期コマンド（Ｆｌｕｓｈ）、Ｒｅａｄコマンドに相当する。また、インターフェース１１は、ホスト３０に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。ホスト３０は、これらコマンドに可変長のデータの位置、数を指定してテープドライブ１０に発行する。
【００４２】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読出されたデータを蓄積するメモリである。例えば、ＤＲＡＭによって構成される。また、バッファ１２は、複数の固定長のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセット（ＤＳ）を格納している。１つのデータセットは、ホスト３０から送られるデータの１つの一部分、または、複数のデータから構成される。読み書きチャネル１３を介して渡されたデータはＤＳ単位（例えば４００ＫＢまたは１．６ＭＢ）として、ヘッド１４によりテープ２３に書込まれる。同期コマンドはバッファ内に保管されたデータをテープに書く込み命令である。
【００４３】
図５は、テープに同じＤＳ＃ＮのＤＳを古い順に３つ上書きにより完全に重ね書きをしたと仮定した状態を示す。テープドライブは、データを読出す場合に、ＤＳ＃の順にデータを読出す。同じＤＳ＃ＮのＤＳが複数存在するときにはＷＰの大きなＤＳのデータを読出す。特定の番号のＤＳの読み出しの例として、テープドライブは、ＤＳの読取り時にＣＭのディレクトリを参照できるので、読取りパフォーマンスに影響しない。
【００４４】
また順次読み進んで行く場合、あるＷＰの ＤＳを読出したら、その後それより低いＷＰを有するＤＳは不要な（Ｏｂｓｏｌｅｔｅ）なファイル（データ）である。ＷＰにより不要なデータを無視してテープ上を読み進む。例えば、テープドライブが、ＤＳ＃Ｎを読む場合ＷＰ１，２，３を有する３つのＤＳ＃Ｎを読み取る。テープドライブは、テープに書込まれたＤＳ＃Ｎ−１のＷＰ値が３の場合に３より低位のＷＰ１とＷＰ２のＤＳを無視する。
【００４５】
図６は、最初にＤＳが＃１から２０までテープに書かれた後（上図）、ＤＳ＃１０のＤＳが上書きされた状態（下図）を示す。テープドライブは、上書きしたＤＳ＃１０のＤＳより後続のＤＳ（ＤＳ＃１１〜＃２０）を無視してシーケンシャル読出しを行う。テープドライブが、ＤＳ＃１０〜＃２０を読取る方法は、上書きしたＤＳ＃１０にＷＰ２を割当てることにより、古いＤＳ＃１０のＤＳ（ＷＰ１）と識別される。テープドライブは、ＤＳ＃１０が上書きされた後では（下図）、読取り時に、当初から書込み済みのＤＳ＃１１〜＃２０を無視する。この場合テープ上に＃１１、１２、・・・のＤＳが存在したとしても、テープドライブは、古いＤＳ＃１１、１２、・・・のＷＰは追記で書き込んだＤＳ＃１０のＷＰよりも低いため、ＤＳ＃１０以降のＤＳは存在しないものと見なす。従って、図６の例においても、読取りパフォーマンスに影響なく、かつ、誤って古いデータセットに含まれるデータを送るデータ保全（ＤＩ：Ｄａｔａ  Ｉｎｔｅｇｉｒｉｔｙ）の問題を生じない。
【００４６】
図８を用いて、本発明の書込み方法を説明する。
本発明の書込み方式では、ＷＰを利用して、新たな手順で各ファイルを書き込む。新たな書込み方法により、ファイルサイズがデータセットの容量に対し比較的小さい場合のテープメディア上のデータの記録密度を向上させ、データ保証、書込みパフォーマンスなどに影響を与えることはない。
【００４７】
図９は、本発明のファイル書込みのステップ１〜４を示すフローチャートである。
１．（８０２）ホストからファイルＡとＦＭを２つ書き込むよう依頼された場合である。テープドライブはそれらを全てデータセットＤＳ＃Ｎに書き込む。ＤＳ＃ＮのＷＰはＷＰ＃Mであり、ＣＭに登録される。ここで２つ目のＦＭをＤＳ＃Ｎに詰めることは、本発明にとって必須の要件ではない。２つ目のＦＭをＤＳ＃Ｎ+1に格納しても本発明の範囲である。
【００４８】
２．（８０４）次にホストから、最後のＦＭの手前からファイルＢ、及びＦＭ２個を書き込むよう依頼された場合である。
テープドライブはファイルＡを含むデータセットの後方にファイルＢ、及びＦＭを詰め込み ＤＳ＃Ｎ, ＷＰ＃Ｍ＋１としてテープメディア上に書き込む。
（８０６）このとき、従来とは異なり、ＤＳ＃Ｎ, ＷＰ＃Ｍのデータセットを上書きしない。本発明の特徴は、ＤＳ＃Ｎ,ＷＰ＃Ｍのデータセットを上書きしないで、ＤＳ＃Ｎ, ＷＰ＃Ｍのデータセットの後方に、ファイルＡとＢをＤＳ＃Ｎ, ＷＰ＃Ｍ＋１ のデータセットとして書き込む。
（８０７）このように書き込んだままではＤＳ＃Ｎの読み出し時に、ＷＰ＃Ｍ＋１のＤＳ＃Ｎの換わりにＷＰ＃ＭのＤＳ＃Ｎをホストに送信してしまう危険がある。ＤＳ＃Ｎを読み出す際は、テープカートリッジが持つ不揮発性メモリ(ＣＭ: Cartridge Memory) などに、ＷＰ＃Ｍ＋１のＤＳ＃Ｎを読み出すよう記録されている。データセットＤＳ＃Ｎを読み出す際、ＣＭの記録データに基づいてＷＰ＃Ｍ＋１のデータセットＤＳ＃Ｎを読み出せばよい。
【００４９】
３．（８０８）次にホストから、最後の ＦＭ の手前からファイルＣ、および ＦＭ２個を書き込むよう依頼された場合である。ファイルＡ〜ＣおよびＦＭ を詰めこめるだけＤＳ＃Ｎに詰め込む。
（８１０）ＤＳ＃ＮをＷＰ＃Ｍ＋２のデータセットとして ＤＳ＃Ｎ, ＷＰ＃Ｍのデータセットを上書きするようにテープ媒体に書き込む。
【００５０】
（８１２）ファイルＣの書き込みに成功した場合である。
ステップ３は、ＤＳ＃Ｎ, ＷＰ＃Ｍ＋２の２以上のＤＳ（ＤＳ＃Ｎ、＃Ｎ＋１・・・）に跨って書き込みに成功した場合である。
このデータセットの書き込みに成功した時点で ＤＳ＃Ｎ の読み出し時に ＷＰ＃Ｍ＋１のＤＳ＃Ｎ を読み出す必要はなくなる。ステップ２でＣＭに登録したＤＳ＃/ＷＰ＃ の情報は削除する。ＤＳ＃Ｎ に入りきらなかったデータは ＤＳ＃Ｎ+1、＃Ｎ＋２・・・として格納しテープに書き込まれる。
【００５１】
（８１４）ＤＳ＃Ｎ, ＷＰ＃Ｍ＋２のＤＳの書込みを失敗した場合である。
ステップ３（８０８）においてＣの書込みを行った場合に、テープドライブがファイルＡ及びファイルＢを読み出す場合である。ステップ２（８０７）でＣＭに格納した情報を元に、書き損なったＤＳ＃Ｎ、ＷＰ＃Ｍ＋２の情報は無視して、ＤＳ＃ＮのＤＳについては、 ＣＭを参照してＷＰ＃Ｍ＋１のＤＳを読み出す。ＤＳ＃Ｎ, ＷＰ＃Ｍ＋２のＤＳを書き損なったとしても、ＷＰ＃Ｍ＋１のＤＳを読出すことによりファイルＡおよびＢを回復できる。
【００５２】
４．（８１６）：以下、ファイルＤ、Ｅ、Ｆ・・・以降もステップ２とステップ３の手順を繰り返せば良い。なお、図７に示されるＤａｔａＳｅｔ番号（ＤＳ＃）及びＷｒｉｔｅｐａｓｓ番号（ＷＰ＃）の対応関係の保管は、カートリッジが具備するＣＭに限定されない。例えば、ＤＳ＃及びＷＰ＃はテープドライブが具備する不揮発性メモリに保管されてもよい。
【００５３】
以上の説明は、理解の簡単にするため、ファイルのサイズがデータセットの容量の半分以下であることを想定している。本発明は、データセットのサイズより十分小さいトランザクション・サイズの場合に有効である。
【００５４】
しかしながら、ファイルサイズが例えデータセットの容量（１．６ＭＢ）より大きい場合であっても本発明は適用可能である。データセットのサイズより十分大きなファイルＢの書き込み時に新たに書き込むデータセットを書き始める位置を直近に書いたデータセットから十分離すことである。また、各データセットを物理的に上書きするタイミングを調節することにより適応できる。
【００５５】
ファイルＢのサイズが非常に大きい（数ＧＢ）場合には、上記ステップ３（８０８）は多くのＤＳの書き直しが介在する。ファイルＣの書き込み時にＤＳ＃Ｎ, ＷＰ＃ＭのＤＳを上書きするためにファイルＢを書き直すこと（ステップ３（８０８））は、時間がかかるため現実的ではない。ＷＰ＃ＭとＷＰ＃Ｍ＋２の２つのＤＳ＃Ｎをテープ上に残したままにしておくことになる。ＤＳの読み出しの観点では上述の通り問題ない。また、テープの容量の影響という観点でも従来の手法（図２及びその説明）と比較しても特に問題とはならない。
【００５６】
ファイルＢのサイズが非常に大きい場合に、Ｂの書き直し（ステップ３（８０８））に時間がかかる。ファイルＣの書き込みを待たずに、ＤＳ＃Ｎ, ＷＰ＃Ｍ＋２のＤＳの書込みが成功した直後にそのＤＳのデータ内容でＤＳ＃Ｎ, ＷＰ＃ＭのＤＳを上書きしてもよい。ファイルＢについて、ＤＳ＃Ｎの後続のデータ、即ちＤＳ＃Ｎ＋１以降についてそのまま書き続けても良い。そのようにするとテープを一回余分に巻き戻す（２〜４秒）必要があるためファイルＢの書き込み所要時間が上記手順の場合と比較し数秒長くなる。その一方、ＷＰ＃ＭとＷＰ＃Ｍ＋２の２つのＤＳ＃Ｎ をテープ上に残すことによるテープの容量の損失を避けることができる。
【００５７】
上記手順では、ＤＳ＃Ｎ, ＷＰ＃Ｍ＋２のデータセットの書き込みをステップ３の冒頭に持ってきたが、これはファイルＣの書き込みを待たずにステップ２の末尾で行っても良い。そうするのであれば、ファイルＣの書き込みもステップ２の手順が適用できる。ファイルを連続して書き込む場合、ＤＳが＃Ｎで、ＷＰが＃Ｍ＋２のデータセットの書き込みをステップ２で行なうようにするとテープを一回余分に巻き戻す必要がある。そのためパフォーマンスに悪い影響を与えるようにおもえる。しかしながら、各ファイルを書き込むにあたり間隔が数秒以上開いているので、テープドライブにとって数秒以上アイドルな時間があることになる。これは余分な時間とならず実装を簡単にできる効果がある。
【００５８】
テープメディアの容量への効果は、ひとえにファイルサイズとデータセットサイズの相関に依存する。データセットの容量を C、ファイルサイズを F とすると、テープメディア上に従来手法の C/F 倍だけ余分にデータを書き込めるようになる。例えばデータセットの容量が１．６ＭＢであり、ファイルサイズが２５６ＫＢである場合には、１．６ＭＢ／２５６ＫＢ＝６．４倍書き込めるようになる。
【００５９】
書込みパフォーマンスへの効果という点では、本発明の書込み手法ではパフォーマンスが改善することが期待される。例えばファイルサイズが２５６ＫＢの場合、従来手法（図２及びその説明）ではファイル毎にＤＳを２つずつ書いていた。本発明の手法では２回に１回はＤＳを１つ書くだけで良くなるためパフォーマンスの改善が期待できる。
【００６０】
テープドライブは約１．５［ｍ／ｓｅｃ］〜８．５［ｍ／ｓｅｃ］の範囲でテープメディアを動かすことができる。ＤＳを少数書き込む場合はテープの定速走行時間よりも加減速にかかる時間が効いてくるため遅いテープ速度を選択した方がパフォーマンスは良くなる。加速度を１０［ｍ／ｓｅｃ2］、加速後テープの走行が安定するまでの時間を０．４［ｓｅｃ］と、データセットの長さを１０［ｃｍ］とするとＤＳ を 1 つ、及び、２つ書き込む所要時間は次のように算出される。
ＤＳ１つ：４×１．５／１０＋０．４×２＋１×０．１／１．５＝１．４７[ｓｅｃ]
ＤＳ２つ：４×１．５／１０＋０．４×２＋２×０．１／１．５＝１．５３[ｓｅｃ]
【００６１】
また、従来手法では常にＤＳ１つ分手前に戻る必要がある。本発明の手法ではステップ２ では書き終わったＤＳの直後から書き始められる一方、ステップ３ではＤＳ２つ分戻る必要がある。本発明の書込み手順は、パフォーマンスの観点では定性的には従来手法より優れているが定量的には数％の改善であり有意な差はない。
【符号の説明】
【００６２】
１０…テープドライブ、
１１…インターフェース、
１２…バッファ（ＤＲＡＭ）、
１３…読み書きチャネル、
１４…ヘッド、
１５…モータ、
１６…書込み読取り制御（コントローラ）、
１７…ヘッド位置制御システム、
１８…モータドライバ、
２０…カートリッジ、
２１，２２…リール、
【図１】
0005506926.tif 000002
【図２】
0005506926.tif 000003
【図３】
0005506926.tif 000004
【図４】
0005506926.tif 000005
【図５】
0005506926.tif 000006
【図６】
0005506926.tif 000007
【図７】
0005506926.tif 000008
【図８】
0005506926.tif 000009
【図９】
0005506926.tif 000010