(57)【要約】【課題】ＡＢＦラップに書かれたデータがＡＢＦラップに書かれた別のデータや通常ラップに書かれたデータで上書きされることにより読み出せなくなるという問題を回避する。【解決手段】テープドライブのコントローラ１６において、バッファ管理部４２が、フラッシュ発生を検知し、チャネル入出力部４３が、書込みヘッドを介して、第１のデータをフラッシュ発生時に順方向の第１のＡＢＦラップに書き込み、第２のデータをフラッシュ発生時に逆方向の第２のＡＢＦラップに書き込み、その後、第１のデータ及び第２のデータを第１のＡＢＦラップに隣接する順方向の第１の通常ラップに書き込む。このうち、第２のデータを第２のＡＢＦラップに書き込む場合に、オフセット判定部４４が、書込みヘッドを、第１の通常ラップの次に使用される逆方向の第２の通常ラップの方向へオフセットするよう制御する。【選択図】図７
2010040106.tif 000002
【特許請求の範囲】
【請求項１】
バッファに蓄積されたデータをテープ媒体に書き込む装置であって、
前記バッファに蓄積された第１のデータを前記テープ媒体に書き込むに当たって、当該第１のデータを、一時的な書込みのための第１のトラック及び当該第１のトラックに隣接する領域にまたがる第１の位置に書き込み、前記バッファに蓄積された第２のデータを前記テープ媒体に書き込むに当たって、当該第２のデータを、一時的な書込みのための第２のトラック及び当該第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、当該第１のデータ及び当該第２のデータを、通常の書込みのための第３のトラック及び当該第３のトラックに隣接する領域にまたがる第３の位置に書き込む書込み部と、
前記書込み部により前記第１の位置に書き込まれた前記第１のデータが、前記書込み部による前記第２の位置への前記第２のデータの書込み、及び、前記書込み部による前記第３の位置への前記第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
を含む、装置。
【請求項２】
前記第１のトラック及び前記第２のトラックは、バックヒッチを伴わない書込みのためのトラックである、請求項１の装置。
【請求項３】
前記第２のトラックは、前記第１のトラックに隣接する領域と、前記第３のトラックの後に使用される通常の書込みのための第４のトラックとに挟まれており、
前記処理部は、前記第１の位置に書き込まれた前記第１のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記第２の位置を、前記第２のトラック及び前記第４のトラックにまたがる位置に設定する処理を行う、請求項１の装置。
【請求項４】
前記第１のトラックからデータを読み出す要求に応じて、前記第１のトラックに隣接する領域から当該データを読み出す読出し部を更に含む、請求項３の装置。
【請求項５】
前記処理部は、前記第３の位置が前記第３のトラック及び前記第１のトラックにまたがる位置であることを条件として、前記第２の位置を、前記第２のトラック及び前記第４のトラックにまたがる位置に設定する処理を行う、請求項３の装置。
【請求項６】
前記処理部は、前記第１の位置に書き込まれた前記第１のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記書込み部により当該第１の位置に書き込まれた当該第１のデータが、前記書込み部による前記第３の位置への当該第１のデータの書込みにおいて上書きされるかどうかを、当該書込みに先立って判定する処理を行う、請求項１の装置。
【請求項７】
テープ媒体にデータを書き込む装置であって、
前記データを蓄積するバッファと、
前記バッファに蓄積された第１のデータを前記テープ媒体に書き込むに当たって、当該第１のデータを、一時的な書込みのための第１のトラック及び当該第１のトラックに隣接する領域にまたがる第１の位置に書き込み、前記バッファに蓄積された第２のデータを前記テープ媒体に書き込むに当たって、当該第２のデータを、一時的な書込みのための第２のトラック及び当該第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、当該第１のデータ及び当該第２のデータを、通常の書込みのための第３のトラック及び当該第３のトラックに隣接する領域にまたがる第３の位置に書き込むための書込みヘッドと、
前記書込みヘッドを用いて前記第１の位置に書き込まれた前記第１のデータが、前記書込みヘッドを用いた前記第２の位置への前記第２のデータの書込み、及び、前記書込みヘッドを用いた前記第３の位置への前記第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラと
を含む、装置。
【請求項８】
バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、
第１の方向へのバックヒッチを伴わない書込みのための第１のトラックと、当該第１の方向とは逆の第２の方向へのバックヒッチを伴わない書込みのための第２のトラックと、当該第１のトラックに当該第２のトラックとは反対の側で隣接する当該第１の方向への書込みのための第３のトラックと、当該第３のトラックの後に使用され、当該第２のトラックに当該第１のトラックとは反対の側で隣接する当該第２の方向への書込みのための第４のトラックと、当該第１のトラック及び当該第２のトラックに挟まれた中心領域とを少なくとも含む前記テープ媒体に書き込まれるデータを取得する取得部と、
前記バッファに蓄積されたデータを前記テープ媒体に書き込むに当たって、前記書込みヘッドを、前記第１のトラック及び前記中心領域にまたがる位置、及び、前記第２のトラック及び前記第４のトラックにまたがる位置のうちの指定された位置に位置付け、その後、前記書込みヘッドを、前記第１のトラック及び前記第３のトラックにまたがる位置に位置付ける位置付け部と、
前記取得部により取得されたデータを前記書込みヘッドに出力することにより、当該データを、前記位置付け部により当該書込みヘッドが位置付けられた位置に書き込む書込み部と
を含む、装置。
【請求項９】
バッファに蓄積されたデータをテープ媒体に書き込む方法であって、
前記バッファに蓄積された第１のデータを前記テープ媒体に書き込むに当たって、当該第１のデータを、一時的な書込みのための第１のトラック及び当該第１のトラックに隣接する領域にまたがる第１の位置に書き込むステップと、
前記バッファに蓄積された第２のデータを前記テープ媒体に書き込むに当たって、当該第２のデータを、一時的な書込みのための第２のトラック及び当該第２のトラックに隣接する領域にまたがる第２の位置に書き込むステップと、
前記第１のデータが前記第１の位置に書き込まれ、かつ、前記第２のデータが前記第２の位置に書き込まれた後、当該第１のデータ及び当該第２のデータを、通常の書込みのための第３のトラック及び当該第３のトラックに隣接する領域にまたがる第３の位置に書き込むステップと、
前記第１の位置に書き込まれた前記第１のデータが、前記第２の位置への前記第２のデータの書込み、及び、前記第３の位置への前記第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップと
を含む、方法。
【請求項１０】
バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記バッファに蓄積された第１のデータを前記テープ媒体に書き込むに当たって、当該第１のデータを、一時的な書込みのための第１のトラック及び当該第１のトラックに隣接する領域にまたがる第１の位置に書き込み、前記バッファに蓄積された第２のデータを前記テープ媒体に書き込むに当たって、当該第２のデータを、一時的な書込みのための第２のトラック及び当該第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、当該第１のデータ及び当該第２のデータを、通常の書込みのための第３のトラック及び当該第３のトラックに隣接する領域にまたがる第３の位置に書き込む書込み部と、
前記書込み部により前記第１の位置に書き込まれた前記第１のデータが、前記書込み部による前記第２の位置への前記第２のデータの書込み、及び、前記書込み部による前記第３の位置への前記第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テープ媒体にデータを書き込む装置及び方法に関する。特に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置及び方法に関する。
【背景技術】
【０００２】
磁気テープ等のテープ媒体にデータを書き込むテープドライブでは、データを一旦バッファに蓄積しておき、ドライブの都合の良いタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。このようなバッファからテープ媒体への書込みを「フラッシュ」という。
ところで、ホストがフラッシュを頻繁に要求すると、その都度、フラッシュ後にホストから送られてくるデータをテープ媒体に書き込むために、バックヒッチが発生する。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、逆方向に走行し、その後、再度元の方向に走行して書き込むべき位置に達して次のデータを書く、という一連の動作のことである。バックヒッチは、書き込むデータの間隔を狭くすることにより、テープ媒体の記録密度を高めるために行われる。
【０００３】
このバックヒッチには５秒程度の時間がかかるため、フラッシュの頻度が高いと、書込みのパフォーマンスが低下する。
そこで、かかるパフォーマンスの低下を回避するための技術として、ＲＡＢＦ（Recursive Accumulating Backhitchless Flush）が提案されている（例えば、特許文献１、２参照）。
ＲＡＢＦの実行中は、それまで利用していた通常記録領域（通常ラップ）とは別の一時記録領域（ＡＢＦラップ）に、フラッシュが発生してもバックヒッチを行わずにデータを書き込む。つまり、データの間隔を疎にして記録密度の低い状態で書き込む。そして、一定の量のデータを一時記録領域に書いた後で、その一度書いたデータを元の通常記録領域に再度書き込む。これにより、フラッシュが頻発する環境であっても、書込み時のパフォーマンスの劣化を低減している。
【０００４】
【特許文献１】米国特許第６８５６４７９号明細書
【特許文献２】米国特許第６８６５０４３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、フラッシュ発生時のパフォーマンス低下を回避するためのＲＡＢＦという技術は従来から知られていた。
しかしながら、特許文献１、２では、例えば、書込みヘッドの幅がトラック幅より広いことにより、トラックに書き込まれるデータがそのトラックに隣接する領域にはみ出すことは想定されていない。従って、一時記録領域に書かれたデータが、一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題については全く考えられておらず、この問題を回避する手法を提供するものでもない。
【０００６】
本発明の目的は、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することにある。
【課題を解決するための手段】
【０００７】
かかる目的のもと、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置であって、バッファに蓄積された第１のデータをテープ媒体に書き込むに当たって、第１のデータを、一時的な書込みのための第１のトラック及び第１のトラックに隣接する領域にまたがる第１の位置に書き込み、バッファに蓄積された第２のデータをテープ媒体に書き込むに当たって、第２のデータを、一時的な書込みのための第２のトラック及び第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、第１のデータ及び第２のデータを、通常の書込みのための第３のトラック及び第３のトラックに隣接する領域にまたがる第３の位置に書き込む書込み部と、書込み部により第１の位置に書き込まれた第１のデータが、書込み部による第２の位置への第２のデータの書込み、及び、書込み部による第３の位置への第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部とを含む、装置を提供する。
ここで、第１のトラック及び第２のトラックは、バックヒッチを伴わない書込みのためのトラックであってもよい。
【０００８】
この場合、第１の位置に書き込まれた第１のデータが読み出せなくなる程度に上書きされることを回避する処理としては、例えば、次の２つの処理を行うことが考えられる。
まず、第一に、第２のトラックは、第１のトラックに隣接する領域と、第３のトラックの後に使用される通常の書込みのための第４のトラックとに挟まれており、処理部は、第１の位置に書き込まれた第１のデータが読み出せなくなる程度に上書きされることを回避する処理として、第２の位置を、第２のトラック及び第４のトラックにまたがる位置に設定する処理を行う、というものである。
このとき、装置は、第１のトラックからデータを読み出す要求に応じて、第１のトラックに隣接する領域からデータを読み出す読出し部を更に含む、ものであってよい。
また、処理部は、第３の位置が第３のトラック及び第１のトラックにまたがる位置であることを条件として、第２の位置を、第２のトラック及び第４のトラックにまたがる位置に設定する処理を行う、ものであってよい。
【０００９】
そして、第二に、処理部は、第１の位置に書き込まれた第１のデータが読み出せなくなる程度に上書きされることを回避する処理として、書込み部により第１の位置に書き込まれた第１のデータが、書込み部による第３の位置への第１のデータの書込みにおいて上書きされるかどうかを、書込みに先立って判定する処理を行う、というものである。
【００１０】
また、本発明は、テープ媒体にデータを書き込む装置であって、データを蓄積するバッファと、バッファに蓄積された第１のデータをテープ媒体に書き込むに当たって、第１のデータを、一時的な書込みのための第１のトラック及び第１のトラックに隣接する領域にまたがる第１の位置に書き込み、バッファに蓄積された第２のデータをテープ媒体に書き込むに当たって、第２のデータを、一時的な書込みのための第２のトラック及び第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、第１のデータ及び第２のデータを、通常の書込みのための第３のトラック及び第３のトラックに隣接する領域にまたがる第３の位置に書き込むための書込みヘッドと、書込みヘッドを用いて第１の位置に書き込まれた第１のデータが、書込みヘッドを用いた第２の位置への第２のデータの書込み、及び、書込みヘッドを用いた第３の位置への第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラとを含む、装置も提供する。
【００１１】
また、本発明は、バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、第１の方向へのバックヒッチを伴わない書込みのための第１のトラックと、第１の方向とは逆の第２の方向へのバックヒッチを伴わない書込みのための第２のトラックと、第１のトラックに第２のトラックとは反対の側で隣接する第１の方向への書込みのための第３のトラックと、第３のトラックの後に使用され、第２のトラックに第１のトラックとは反対の側で隣接する第２の方向への書込みのための第４のトラックと、第１のトラック及び第２のトラックに挟まれた中心領域とを少なくとも含むテープ媒体に書き込まれるデータを取得する取得部と、バッファに蓄積されたデータをテープ媒体に書き込むに当たって、書込みヘッドを、第１のトラック及び中心領域にまたがる位置、及び、第２のトラック及び第４のトラックにまたがる位置のうちの指定された位置に位置付け、その後、書込みヘッドを、第１のトラック及び第３のトラックにまたがる位置に位置付ける位置付け部と、取得部により取得されたデータを書込みヘッドに出力することにより、データを、位置付け部により書込みヘッドが位置付けられた位置に書き込む書込み部とを含む、装置も提供する。
【００１２】
更に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む方法であって、バッファに蓄積された第１のデータをテープ媒体に書き込むに当たって、第１のデータを、一時的な書込みのための第１のトラック及び第１のトラックに隣接する領域にまたがる第１の位置に書き込むステップと、バッファに蓄積された第２のデータをテープ媒体に書き込むに当たって、第２のデータを、一時的な書込みのための第２のトラック及び第２のトラックに隣接する領域にまたがる第２の位置に書き込むステップと、第１のデータが第１の位置に書き込まれ、かつ、第２のデータが第２の位置に書き込まれた後、第１のデータ及び第２のデータを、通常の書込みのための第３のトラック及び第３のトラックに隣接する領域にまたがる第３の位置に書き込むステップと、第１の位置に書き込まれた第１のデータが、第２の位置への第２のデータの書込み、及び、第３の位置への第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップとを含む、方法も提供する。
【００１３】
更にまた、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、コンピュータを、バッファに蓄積された第１のデータをテープ媒体に書き込むに当たって、第１のデータを、一時的な書込みのための第１のトラック及び第１のトラックに隣接する領域にまたがる第１の位置に書き込み、バッファに蓄積された第２のデータをテープ媒体に書き込むに当たって、第２のデータを、一時的な書込みのための第２のトラック及び第２のトラックに隣接する領域にまたがる第２の位置に書き込み、その後、第１のデータ及び第２のデータを、通常の書込みのための第３のトラック及び第３のトラックに隣接する領域にまたがる第３の位置に書き込む書込み部と、書込み部により第１の位置に書き込まれた第１のデータが、書込み部による第２の位置への第２のデータの書込み、及び、書込み部による第３の位置への第１のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部として機能させる、プログラムも提供する。
【発明の効果】
【００１４】
本発明によれば、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、「実施の形態」という）について詳細に説明する。
図１は、本実施の形態が適用されるテープドライブ１０の構成例を示した図である。このテープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、チャネル１３と、書込みヘッド１４ａと、読出しヘッド１４ｂと、モータ１５とを含む。また、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ２０が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ２０も図示している。このテープカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。尚、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００１６】
ここで、ホストＩ／Ｆ１１は、上位装置の一例であるホスト３０との通信を行う。例えば、ホスト３０から、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。尚、このホストＩ／Ｆ１１で用いる通信規格としては、ＳＣＳＩが例示される。ＳＣＳＩの場合、１つ目のコマンドは、Ｗｒｉｔｅコマンドに相当し、２つ目のコマンドは、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに相当し、３つ目のコマンドは、Ｒｅａｄコマンドに相当する。また、ホストＩ／Ｆ１１は、ホスト３０に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【００１７】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
チャネル１３は、テープ２３に書き込むべきデータを書込みヘッド１４ａに送ったり、テープ２３から読み出されたデータを読出しヘッド１４ｂから受け取ったりするために用いられる通信経路である。
書込みヘッド１４ａは、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込み、読出しヘッド１４ｂは、テープ２３が長手方向に移動するとき、テープ２３から情報を読み出す。
モータ１５は、リール２１、２２を回転させる。尚、図では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００１８】
一方、コントローラ１６は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。
ヘッド位置制御システム１７は、書込みヘッド１４ａ及び読出しヘッド１４ｂが所望の１つ又は複数のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド１４ａ及び読出しヘッド１４ｂを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１７で行う。
モータドライバ１８は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１８も２個設けられる。
【００１９】
以下、テープドライブ１０として、ＩＢＭエンタープライズテープドライブＴＳ１１２０を例にとり、本実施の形態について詳細に説明する。
まず、本実施の形態の前提として、テープ２３上のフォーマットについて説明する。
図２は、テープ２３上のフォーマットの概略を示した図である。図中、ＬＰ２からＬＰ３の間はキャリブレーション領域であり、ＬＰ３からＬＰ４の間がユーザデータ領域である。
図示するように、テープ２３上には、５本のサーボバンドが設けられている。このサーボバンドは、テープ２３の製造時にテープ２３上の物理的な位置を示すサーボパターンが書き込まれた領域である。
【００２０】
また、テープ２３は、この５本のサーボバンドによって、４本のデータバンドに分割されている。このデータバンドは、ユーザデータが書き込まれる領域であり、各データバンドには、十数本のラップと呼ばれる細長いデータ領域が設けられている。図では、１本の実線の矢印が１本のラップを表している。データは、右方向の矢印で示すようにラップに順方向に読み書きされた後、破線で連結した左方向の矢印で示すようにラップに逆方向に読み書きされる。図では、簡単化のため、１つのデータバンド内で、データが順方向に読み書きされるラップ、及び、データが逆方向に読み書きされるラップを、２本ずつ示している。しかしながら、実際には、順方向のラップ及び逆方向のラップはそれぞれ、例えば７本〜９本あり、１つのデータバンド内でラップは渦巻き状に配置されているものとする。つまり、順方向への読み書き及び逆方向への読み書きが繰り返し行われることにより、データはテープ２３上で何度も往復して読み書きされるようになっている。
【００２１】
更に、このようなフォーマットのテープ２３では、開始位置２０１を起点とし、データバンド＃０内に渦巻き状に配置されたラップに沿ってデータの読み書きが行われる。その後、データバンド＃１，＃２，＃３に順に移動し、各データバンド内に渦巻き状に配置されたラップに沿ってデータは読み書きされ、終了位置２０２まで進む。つまり、次のデータバンドに移動するのに５秒程度の時間がかかるため、原則として、あるデータバンドのラップを使い切ってから次のデータバンドに移るようなフォーマットになっている。
【００２２】
尚、図２は、あくまで書込みヘッド１４ａや読出しヘッド１４ｂとの関係には触れずに示した概念図である。テープドライブ１０は、通常、複数の書込みヘッド１４ａや読出しヘッド１４ｂを有する。例えば、図２の実線の矢印を１つの書込みヘッド１４ａや読出しヘッド１４ｂのデータを読み書きする時の軌跡と捉えた場合、この実線の矢印はトラックに相当する。そして、右向きの矢印が１つ目の書込みヘッド１４ａ及び読出しヘッド１４ｂに対応する順方向のトラックを示しているとすると、２つ目、３つ目、それ以降の書込みヘッド１４ａ及び読出しヘッド１４ｂに対応する順方向のトラックが、これよりも下に順に配置されるフォーマットとなる。また、左向きの矢印が１つ目の書込みヘッド１４ａ及び読出しヘッド１４ｂに対応する逆方向のトラックを示しているとすると、２つ目、３つ目、それ以降の書込みヘッド１４ａ及び読出しヘッド１４ｂに対応する逆方向のトラックが、これよりも下に順に配置されるフォーマットとなる。
【００２３】
ここで、第２世代エンタープライズテープフォーマットでは、データバンド毎に１４本のラップが存在する。このうち、偶数ラップは、テープの先頭（図２のＬＰ３）からテープの末尾（図２のＬＰ４）に向かう方向、つまり、順方向にデータを読み書きする場合に利用される。また、奇数ラップは、ＬＰ４からＬＰ３に向かう方向、つまり、逆方向にデータを読み書きする場合に利用される。図２に示したように、各データバンド内のラップは渦巻き状に利用されるため、ラップ＃２に隣接するラップは、ラップ＃１やラップ＃３ではなく、ラップ＃０やラップ＃４となる。
【００２４】
ところで、テープ２３の先頭からデータを書き込む場合、通常ラップとして使われるラップの順序は予め決められている。
図３に、その順序をテーブル形式で示す。通常ラップとしては、このテーブルの「通常ラップ」欄に示した番号のラップが上の行から順に使われる。即ち、ラップ＃０、＃１、＃２、・・・、＃９を使った後は、ラップ＃１０ではなく、ラップ＃１４が使われる。
また、各データバンドでは、データバンド中心に隣接する２本のラップがＡＢＦラップとして使われる。このＡＢＦラップは、前述の通り、ＲＡＢＦ機能によりバックヒッチを挟まずに書き込む場合に利用されるラップである。ＡＢＦラップは、データ書込みに利用される通常ラップに応じて、動的に切り替えられる。つまり、通常ラップとしてラップ＃０〜＃９が使われている間は、ＡＢＦラップとしてラップ＃１２、＃１３が使われ、通常ラップとしてラップ＃１４〜＃２３が使われている間は、ＡＢＦラップとしてラップ＃２６、＃２７が使われる。
【００２５】
更に、各データバンドでは、ＡＢＦラップに隣接するラップがガードバンドラップとなっている。
書込みヘッド１４ａは、ラップ１本の幅（トラックピッチ）より広いことがある。これは、フォーマットによってトラックピッチが異なることと、１つの書込みヘッド１４ａで複数のフォーマットに対応することとに起因している。このように書込みヘッド１４ａの幅とトラックピッチとが異なるため、例えばラップ＃１０にデータを書き込む一方でラップ＃１２又はラップ＃１３をＡＢＦラップとして利用すると、ＡＢＦラップに書き込んだデータをラップ＃１０に再書込みする際に、トラックピッチよりも広い書込みヘッド１４ａがラップ＃１０の隣のラップであるラップ＃１２上のデータを上書きしてしまうという問題が発生する。この問題を避けるために、ＡＢＦラップに隣接するラップは、ガードバンドラップとしてリザーブされている。
【００２６】
さて、このようなテープフォーマットでは、ＲＡＢＦ機能を利用する場合、書き込んだデータを読み出せなくなる問題が発生する危険性がある。
この問題は、以下の条件が全て揃ったときに発生する。
・ＡＢＦラップ上に書き込んだデータを元の通常ラップ（以下、単に「元のラップ」ともいう）に再書込みするときに、通常ラップの終端（ＥＯＷ：End of Wrap）に到達し、次の通常ラップに遷移する動作（ラップターン）を行う。
・ラップターン後の通常ラップが、そのとき利用しているＡＢＦラップのガードバンドラップである。つまり、元のラップは、ラップ＃５１、＃４１、＃１３の何れかである。
・ＡＢＦラップ上に書き込んだデータを元のラップに再書込みするときにエラーが発生し、再書込みに失敗する。
・ＡＢＦラップ上のラップの先頭から上述のエラーが発生した場所までの間に、データが書き込まれている。
・ＡＢＦラップ上の上書きされたデータセットと同じデータを持つデータセットが、未だ元のラップに再書込みされていない。
・ＡＢＦラップ上の上書きされたデータセットと同じ内容を持つデータセットが、同じＡＢＦラップ上に重複部分を持つデータセットとしても書かれていない。フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもＡＢＦラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをＡＢＦラップに書き込むので、重複部分を持つデータセットが書かれることがある。しかし、上書きされたデータがこのような重複部分にも含まれていないということである。
【００２７】
通常、書込みエラーが発生した場合、そのデータを読み出すことはできない。しかしながら、ＲＡＢＦ中は、ＡＢＦラップにデータを書き込んだ時点でデータの書込みに成功したことをホスト３０に報告しているので、その後、ＡＢＦラップ上のデータを元のラップに書き込むことに失敗しても、ＡＢＦラップ上に書き込まれたデータを読み出せることが求められる。
【００２８】
ここで、具体的な問題発生例について説明する。
図４〜６は、問題発生例を示した図である。第２世代エンタープライズテープフォーマットにおいて、トラックピッチは１１μｍであり、各データバンドの中心には、データバンド上の最後の偶数ラップと最後の奇数ラップの間に幅１０．２μｍの領域（以下、「バンド中心」という）がある。尚、図中、「ＤＳ」はデータセットを表す。ＩＢＭエンタープライズテープドライブＴＳ１１２０の書込みヘッド１４ａの幅は２０．６μｍなので、データセットの幅方向の長さも２０．６μｍとなっている。
【００２９】
図４に示すように、まず、テープ２３において、ラップ＃５１上にデータ（ＤＳ＃Ｘ−５〜ＤＳ＃Ｘ）が書き込まれる。また、ラップ＃５１上でＲＡＢＦ機能が利用され、幾ばくかのデータ（ＤＳ＃Ｘ＋１〜ＤＳ＃Ｘ＋３）が、ＡＢＦラップであるラップ＃５４上に書き込まれる。
【００３０】
次に、ＡＢＦラップへの書込み中にラップターンが発生し、図５に示すように、幾ばくかのデータ（ＤＳ＃Ｘ＋４〜ＤＳ＃Ｘ＋６）が、もう１本のＡＢＦラップであるラップ＃５５に書き込まれる。
【００３１】
その後、図６に示すように、ＡＢＦラップ上に書き込まれたデータ（ＤＳ＃Ｘ＋１〜ＤＳ＃Ｘ＋６）がラップ＃５１に再書込みされる。そのとき、ラップターンが発生し、ラップ＃５２に遷移する。そして、ラップ＃５２上にＤＳ＃Ｘ＋２を書き込むときにエラーが発生し、再試行しても再度エラーとなったとする。こうなると、ラップ＃５４上のＤＳ＃Ｘ＋２は、ラップ＃５５上のＤＳ＃Ｘ＋５とラップ＃５２上のＤＳ＃Ｘ＋２により完全に上書きされてしまい、もはや読み出すことはできない。
【００３２】
ここで、ＡＢＦラップ上に書き込まれたデータを読み出せなくなる問題を回避する方法には、次のようなものがある。
・ラップ＃５１、＃４１、＃１３上の後半では、ＲＡＢＦ機能を無効にする。テープ２３の全長は６００ｍ乃至８００ｍであるが、ここでいう後半とは、そのうちの５００ｍ強を指すものとする。但し、この長さは、テープドライブ１０のバッファ１２のサイズと、データセットの間隔とに依存する。
・ＡＢＦラップにおけるデータの書込み領域をＬＰ３の後半、つまり、ＬＰ３から５００ｍ強離れた領域に限定する。
・ラップ＃５１のＡＢＦラップをラップ＃５４、＃５５からラップ＃４０、＃４１に変更し、ラップ＃４１のＡＢＦラップをラップ＃１２、＃１３からラップ＃２６、＃２７に変更し、ラップ＃１３ではＲＡＢＦ機能を無効にする。
【００３３】
しかしながら、何れの方法も、ホスト３０がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすため、好ましくない。例えば、ＲＡＢＦ機能を無効にすると、フラッシュの度にバックヒッチが発生することにより、ＲＡＢＦ機能が有効な場合と比較して書込みに要する時間は約１０倍になる。
【００３４】
そこで、本実施の形態では、この問題を回避するための２つの手法を提案する。
以下、この２つの手法のうちの１つを第１の実施の形態とし、この２つの手法のうちのもう１つを第２の実施の形態として説明する。
【００３５】
［第１の実施の形態］
第１の実施の形態では、ＡＢＦラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込む。
これにより、上述のような問題が発生した場合であっても、バンド中心の部分からデータを読み出すことができる。従って、ホスト３０がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすことなく、ＡＢＦラップ上のデータを元のラップに再書込みする際に発生した上書き問題を回避する。
【００３６】
まず、このような動作を行うコントローラ１６の機能構成について説明する。
図７は、コントローラ１６の機能構成例を示したブロック図である。
図示するように、コントローラ１６は、コマンド処理部４１と、バッファ管理部４２と、チャネル入出力部４３と、オフセット判定部４４と、ヘッド位置管理部４５と、テープ走行管理部４６とを備える。
【００３７】
このうち、コマンド処理部４１は、ホストＩ／Ｆ１１からコマンドを受け取る。ここで、コマンドとしては、バッファ１２にデータを格納することを指示するＷｒｉｔｅコマンド、バッファ１２に格納されたデータをテープ２３に書き込むことを指示する同期コマンド、テープ２３からデータを読み出すことを指示するＲｅａｄコマンド等がある。本実施の形態では、テープ媒体に書き込まれるデータを取得する取得部の一例として、コマンド処理部４１を設けている。
【００３８】
バッファ管理部４２は、コマンド処理部４１がＷｒｉｔｅコマンドを受け取った場合は、データをバッファ１２内に用意する。また、コマンド処理部４１が同期コマンドを受け取った場合は、データをバッファ１２から読み出してチャネル入出力部４３に出力する。更に、コマンド処理部４１がＲｅａｄコマンドを受け取った場合は、対象となるデータがバッファ１２内になければチャネル入出力部４３に対してそのデータを読み出すように指示し、対象となるデータがバッファ１２内にあればそのデータをコマンド処理部４１を介してホスト３０に返す。
【００３９】
チャネル入出力部４３は、バッファ管理部４２がバッファ１２から読み出したデータをチャネル１３に出力したり、チャネル１３から受け取ったデータをバッファ管理部４２に出力したりする。また、サーボヘッドがサーボトラックを追従することで読み取ったテープ２３の長手方向における位置に関する情報（ＬＰＯＳ情報）をチャネル１３から取得する。本実施の形態では、データを書き込む書込み部の一例として、チャネル入出力部４３を設けている。
【００４０】
オフセット判定部４４は、データを書き込む際には、ヘッド位置管理部４５から取得した現在のラップの情報に基づいて、書込みヘッド１４ａをオフセットする必要があるかどうかを判定する。また、データを読み出す際には、ヘッド位置管理部４５から取得した現在のラップの情報と、バッファ管理部４２から取得した読出しエラーの情報とに基づいて、読出しヘッド１４ｂをオフセットする必要があるかどうかを判定する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、オフセット判定部４４を設けている。
【００４１】
ヘッド位置管理部４５は、書込みヘッド１４ａ及び読出しヘッド１４ｂをテープ２３の幅方向へ移動させるための信号をヘッド位置制御システム１７に出力する。また、書込みヘッド１４ａ及び読出しヘッド１４ｂのテープ２３の幅方向における現在位置に関する情報を保持する。本実施の形態では、書込みヘッドを位置付ける位置付け部の一例として、ヘッド位置管理部４５を設けている。
テープ走行管理部４６は、テープ２３を順方向又は逆方向に走行させるための信号をモータドライバ１８に出力する。
【００４２】
図８に、このテープドライブ１０が、ＡＢＦラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込むときの様子を示す。
このようにオフセットして書かれるデータセットは、図において太線で囲んで示すように、ラップ＃５５とバンド中心にまたがって書き込まれるのではなく、ラップ＃５３とラップ＃５５にまたがって書き込まれる。尚、ラップ＃５３はＲＡＢＦのガードバンドラップなので、ＡＢＦラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
テープドライブ１０は、ＡＢＦラップ上にデータを書き込む場合にこのように書き込むことにより、ラップ＃５４に書き込まれたＤＳ＃Ｘ＋２をバンド中心周辺から読み出すことができる。
【００４３】
また、ＡＢＦラップ上で逆方向に書かれるデータは、ＡＢＦラップとしてラップ＃１２、＃１３が使われる場合であれば、ラップ＃１１とラップ＃１３にまたがって書き込まれ、ＡＢＦラップとしてラップ＃２６、＃２７が使われる場合であれば、ラップ＃２５とラップ＃２７にまたがって書き込まれる。
尚、ラップ＃１１、＃２５もＲＡＢＦのガードバンドラップなので、ＡＢＦラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
【００４４】
このように、ＩＢＭエンタープライズテープドライブＴＳ１１２０の第２世代エンタープライズテープフォーマットにおいて、ＡＢＦラップに書き込んだデータが読めなくなる問題を解くためには、ラップ＃５１、＃４１、＃１３上でデータを書いているときにＲＡＢＦ機能が利用された場合にのみオフセットしてデータを書き込めば十分であるが、常にオフセットしてデータを書き込むようにしてもよい。
【００４５】
以下、テープドライブ１０の具体的な動作を説明する。尚、ここでは、ラップ＃５１、＃４１、＃１３上でデータを書いているときにＲＡＢＦ機能が利用された場合にのみオフセットしてデータを書き込むものとする。
まず、フラッシュ発生時のテープドライブ１０の動作を説明する。
図９は、フラッシュ発生時のテープドライブ１０の動作例を示したフローチャートである。フラッシュは、例えば、バッファ１２内のデータをテープ２３上に書き込むことを指示する同期コマンドがホスト３０から送られた場合や、バッファ１２に空き領域がなくなった場合等に発生する。つまり、コマンド処理部４１がホスト３０から同期コマンドを受け付けたことをバッファ管理部４２が受け取った場合や、バッファ１２が一杯になったことをバッファ管理部４２が検知した場合に、この動作は開始する。
【００４６】
動作が開始すると、まず、バッファ管理部４２は、ＡＢＦラップへの切替えをヘッド位置管理部４５に指示し、ヘッド位置管理部４５が、データの書込み先を通常ラップからＡＢＦラップに切り替える（ステップ１０１）。具体的には、書込みヘッド１４ａをＡＢＦラップに位置付けるための信号をヘッド位置制御システム１７に出力する。
【００４７】
次に、ヘッド位置管理部４５からオフセット判定部４４へ制御が移り、オフセット判定部４４は、元のラップがラップ＃５１、＃４１、＃１３の何れかであるか判定する（ステップ１０２）。これは、ヘッド位置管理部４５が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ＃５１、＃４１、＃１３の何れかであると判定されれば、ＡＢＦラップの番号が奇数であるかを判定する（ステップ１０３）。これは、ヘッド位置管理部４５が保持する現在のラップ番号に基づいて判定すればよい。そして、奇数であれば、オフセット判定部４４は、書込みヘッド１４ａをガードバンドラップ側にオフセットする（ステップ１０４）。具体的には、ヘッド位置管理部４５に対し、書込みヘッド１４ａをガードバンドラップ側にオフセットさせるための信号をヘッド位置制御システム１７に出力するよう指示する。
一方、オフセット判定部４４は、元のラップがラップ＃５１、＃４１、＃１３以外である場合や、ＡＢＦラップの番号が偶数である場合は、書込みヘッド１４ａをオフセットしない。
【００４８】
次いで、ヘッド位置管理部４５からバッファ管理部４２へ制御が移り、バッファ管理部４２は、データセットを書き込む（ステップ１０５）。具体的には、テープ走行管理部４６に対し、テープ２３を書込み時の速度で走行させるための信号をモータドライバ１８に出力するよう指示する。また、バッファ１２からデータセットを取り出してチャネル入出力部４３に渡し、チャネル入出力部４３が書込みヘッド１４ａを介してテープ２３にデータセットを書き込む。
その後、バッファ管理部４２は、バッファ１２内にデータセットがあるかどうかを判定し（ステップ１０６）、バッファ１２内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する（ステップ１０７）。具体的には、チャネル入出力部４３が取得した現在位置のＬＰＯＳ情報に基づいて判定する。
【００４９】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部４２は、ステップ１０５〜１０７を繰り返し、ステップ１０６でバッファ１２内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部４２は、ヘッド位置管理部４５に制御を渡し、ヘッド位置管理部４５が、２本のＡＢＦラップを使い切ったかどうかを判定する（ステップ１０８）。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、２本のＡＢＦラップを使い切っていないと判定すれば、ヘッド位置管理部４５は、ラップを切り替える（ステップ１０９）。具体的には、書込みヘッド１４ａをもう１つのＡＢＦラップに位置付けるための信号をヘッド位置制御システム１７に出力する。また、２本のＡＢＦラップを使い切ったと判定すれば、処理を終了する。
【００５０】
このように、ＡＢＦラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。ここで、所定のタイミングとしては、データセットのＡＢＦラップの１往復分への書込みが終了した時点や、バッファ１２に空き領域がなくなった時点等がある。但し、この第１の実施の形態において、再書込み時のテープドライブ１０の動作は、現在のＲＡＢＦ機能で実現されている再書込み時の動作と同じであるので、詳しい説明は省略する。
【００５１】
次いで、ＡＢＦラップからのデータ読出し時のテープドライブ１０の動作を説明する。
図１０は、データ読出し時のテープドライブ１０の動作例を示したフローチャートである。尚、ＡＢＦラップからのデータ読出しは、通常ラップからのデータ読出しがエラーになった場合の復旧処理として実行されるものである。
動作が開始すると、まず、バッファ管理部４２が、ＡＢＦラップからデータセットを読み出す（ステップ１４１）。具体的には、ヘッド位置管理部４５に対し、読出しヘッド１４ｂをＡＢＦラップに位置付けるための信号をヘッド位置制御システム１７に出力すると共に、テープ走行管理部４６に対し、テープ２３を読出し時の速度で走行させるための信号をモータドライバ１８に出力するよう指示する。また、チャネル入出力部４３が読出しヘッド１４ｂを介してデータセットを読み出してバッファ管理部４２に渡す。
【００５２】
そして、バッファ管理部４２は、データセットの読出しエラーが発生したかどうかを判定する（ステップ１４２）。ここでは、例えば、１回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【００５３】
その結果、読出しエラーが発生したと判定されれば、バッファ管理部４２からオフセット判定部４４へ制御が移り、オフセット判定部４４は、元のラップがラップ＃５１、＃４１、＃１３の何れかであるか判定する（ステップ１４３）。これは、ヘッド位置管理部４５が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ＃５１、＃４１、＃１３の何れかであると判定されれば、ＡＢＦラップの番号が偶数であるかを判定する（ステップ１４４）。これは、ヘッド位置管理部４５が保持する現在のラップ番号に基づいて判定すればよい。そして、偶数であれば、オフセット判定部４４は、読出しヘッド１４ｂをバンド中心側にオフセットする（ステップ１４５）。具体的には、ヘッド位置管理部４５に対し、読出しヘッド１４ｂをバンド中心側にオフセットさせるための信号をヘッド位置制御システム１７に出力するよう指示する。
【００５４】
その後、ヘッド位置管理部４５からバッファ管理部４２へ制御が移り、バッファ管理部４２は、データセットを読み出す（ステップ１４６）。具体的には、テープ走行管理部４６に対し、テープ２３を読出し時の速度で走行させるための信号をモータドライバ１８に出力するよう指示する。また、チャネル入出力部４３が読出しヘッド１４ｂを介してデータセットを読み出してバッファ管理部４２に渡す。
【００５５】
そして、バッファ管理部４２は、データセットの読出しエラーが発生したかどうかを判定する（ステップ１４７）。ここでは、例えば、１回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【００５６】
その結果、読出しエラーが発生したと判定されれば、ホスト３０にエラーを報告する（ステップ１４８）。具体的には、バッファ管理部４２が、読出しを行えない旨をコマンド処理部４１に伝え、コマンド処理部４１が、ホスト３０に対してエラーを報告する。
一方、オフセット判定部４４は、元のラップがラップ＃５１、＃４１、＃１３以外である場合や、ＡＢＦラップの番号が奇数である場合は、ホスト３０にエラーを報告する（ステップ１４８）。具体的には、バッファ管理部４２が、元のラップがラップ＃５１、＃４１、＃１３以外であることや、ＡＢＦラップの番号が奇数であることを示す情報をオフセット判定部４４から受け取ってその旨をコマンド処理部４１に伝え、コマンド処理部４１が、ホスト３０に対してエラーを報告する。
【００５７】
また、ステップ１４２やステップ１４７で読出しエラーが発生しなかった場合、バッファ管理部４２は、データセットをホスト３０に送る（ステップ１４９）。具体的には、チャネル入出力部４３から受け取ったデータセットをバッファ１２に蓄積し、ホスト３０からの読出しコマンドに応じてデータセットをバッファ１２から取り出し、ホスト３０へ送る。
【００５８】
［第２の実施の形態］
第２の実施の形態では、ＡＢＦラップ上に書かれたデータセットを上書きする可能性がある再書込み中に、ＡＢＦラップ上の各データセットの終端位置（End LPOS）を意識し、未だ元のラップに再書込みされていないデータを持つＡＢＦラップ上のデータセットが上書きされないようにする。
【００５９】
即ち、テープドライブ１０は、データセットが書き込まれた位置のラップ番号やＬＰＯＳ情報、データセットに格納されたレコードやファイルマークの数を、リングバッファと呼ばれるＤＲＡＭに保持する。そして、ＡＢＦラップにデータセットを書いた時点、もしくは、ＡＢＦラップから元のラップに再書込みした時点で、リングバッファが持つ上記の情報を最新の情報に更新する。そして、一度ＡＢＦラップに書き込んだデータを元のラップに再書込みする際に、その最新の情報を参照し、再書込みを行ってよいかどうかを判断する。これにより、ＡＢＦラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐことができる。
【００６０】
まず、このような動作を行うコントローラ１６の機能構成について説明する。
図１１は、コントローラ１６の機能構成例を示したブロック図である。
図示するように、コントローラ１６は、コマンド処理部４１と、バッファ管理部４２と、チャネル入出力部４３と、ヘッド位置管理部４５と、テープ走行管理部４６と、書込み位置記憶部４７と、書込み位置比較部４８とを備える。
【００６１】
このうち、コマンド処理部４１、バッファ管理部４２、チャネル入出力部４３、ヘッド位置管理部４５、テープ走行管理部４６は、図７を参照して既に説明したので、ここでの詳細な説明は省略する。
【００６２】
書込み位置記憶部４７は、ヘッド位置管理部４５が保持するデータセットを書き込んだ位置のラップ番号と、チャネル入出力部４３が取得したデータセットを書き込んだ位置のＬＰＯＳ情報とを、バッファ１２で管理されるデータセットのデータセット番号に対応付けて記憶する。
【００６３】
書込み位置比較部４８は、ヘッド位置管理部４５が保持するデータセットを書き込む位置のラップ番号が、書込み位置記憶部４７にそのデータセットのデータセット番号に対応付けて記憶されたラップ番号と等しく、かつ、チャネル入出力部４３が取得したデータセットを書き込む位置のＬＰＯＳ情報が、書込み位置記憶部４７にそのデータセットに対応付けて記憶されたＬＰＯＳ情報と近いかどうかを判定する。そして、ラップ番号が等しくＬＰＯＳ情報が近い場合は、データセットを書けない旨をバッファ管理部４２に伝え、それ以外の場合は、データセットを書き込むようバッファ管理部４２に指示する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、書込み位置比較部４８を設けている。
【００６４】
以下、テープドライブ１０の具体的な動作を説明する。尚、ここでは、ラップ＃５１、＃４１、＃１３上でデータを書いているときにＲＡＢＦ機能が利用された場合にのみＡＢＦラップ上のデータセットが上書きされないように制御するものとする。
まず、フラッシュ発生時のテープドライブ１０の動作を説明する。
図１２は、フラッシュ発生時のテープドライブ１０の動作例を示したフローチャートである。フラッシュは、例えば、バッファ１２内のデータをテープ２３上に書き込むことを指示する同期コマンドがホスト３０から送られた場合や、バッファ１２に空き領域がなくなった場合等に発生する。つまり、コマンド処理部４１がホスト３０から同期コマンドを受け付けたことをバッファ管理部４２が受け取った場合や、バッファ１２が一杯になったことをバッファ管理部４２が検知した場合に、この動作は開始する。
【００６５】
動作が開始すると、まず、バッファ管理部４２は、ＡＢＦラップへの切替えをヘッド位置管理部４５に指示し、ヘッド位置管理部４５が、データの書込み先を通常ラップからＡＢＦラップに切り替える（ステップ１５１）。具体的には、書込みヘッド１４ａをＡＢＦラップに位置付けるための信号をヘッド位置制御システム１７に出力する。
【００６６】
次に、バッファ管理部４２は、データセットを書き込む（ステップ１５２）。具体的には、テープ走行管理部４６に対し、テープ２３を書込み時の速度で走行させるための信号をモータドライバ１８に出力するよう指示する。また、バッファ１２からデータセットを取り出してチャネル入出力部４３に渡し、チャネル入出力部４３が書込みヘッド１４ａを介してテープ２３にデータセットを書き込む。
【００６７】
このとき、バッファ管理部４２は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部４５から取得し、データセットを書き込んだ位置のＬＰＯＳ情報をチャネル入出力部４３から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部４７に記憶する（ステップ１５３）。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもＡＢＦラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをＡＢＦラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びＬＰＯＳ情報のみを、データセット番号に対応付けて記憶するものとする。
【００６８】
その後、バッファ管理部４２は、バッファ１２内にデータセットがあるかどうかを判定し（ステップ１５４）、バッファ１２内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する（ステップ１５５）。具体的には、チャネル入出力部４３が取得した現在位置のＬＰＯＳ情報に基づいて判定する。
【００６９】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部４２は、ステップ１５２〜１５５を繰り返し、ステップ１５４でバッファ１２内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部４２は、ヘッド位置管理部４５に制御を渡し、ヘッド位置管理部４５が、２本のＡＢＦラップを使い切ったかどうかを判定する（ステップ１５６）。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、２本のＡＢＦラップを使い切っていないと判定すれば、ヘッド位置管理部４５は、ラップを切り替える（ステップ１５７）。具体的には、書込みヘッド１４ａをもう１つのＡＢＦラップに位置付けるための信号をヘッド位置制御システム１７に出力する。また、２本のＡＢＦラップを使い切ったと判定すれば、処理を終了する。
【００７０】
このように、ＡＢＦラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。
図１３は、この再書込み時のテープドライブ１０の動作例を示したフローチャートである。ここで、所定のタイミングとしては、データセットのＡＢＦラップの１往復分への書込みが終了した時点や、バッファ１２に空き領域がなくなった時点等がある。つまり、図１２のステップ１５６でヘッド位置管理部４５が２本のＡＢＦラップを使い切ったと判定した旨をバッファ管理部４２が受け取った場合や、バッファ１２が一杯になったことをバッファ管理部４２が検知した場合に、この動作は開始する。
【００７１】
動作が開始すると、まず、バッファ管理部４２は、データセットの書込み位置を決定する（ステップ１７１）。例えば、１つ前のデータセットの終端から予め決められた長さだけ離れた位置を書込み位置として決定すればよい。
次に、バッファ管理部４２から書込み位置比較部４８へ制御が移り、書込み位置比較部４８は、現在のラップがラップ＃５２、＃１０、＃２４の何れかであるか判定する（ステップ１７２）。これは、ヘッド位置管理部４５が保持する現在のラップ番号に基づいて判定すればよい。そして、現在のラップがラップ＃５２、＃１０、＃２４の何れでもないと判定されれば、ステップ１７５へ進む。また、現在のラップがラップ＃５２、＃１０、＃２４の何れかであると判定されれば、書込み位置記憶部４７からデータセットの番号に対応付けて記憶されたラップ番号とＬＰＯＳ情報とを取り出す（ステップ１７３）。
【００７２】
そして、書込み位置比較部４８は、ステップ１７３で取り出したラップ番号が元のラップに対するＡＢＦラップのラップ番号であり、かつ、ステップ１７３で取り出したＬＰＯＳ情報がステップ１７１で決定した書込み位置の近くを示しているかどうかを判定する（ステップ１７４）。ここでは、例えば、最大限エラーが発生したときのデータセットの長さを予め定めておき、書込み位置からその長さだけデータセットを書いたとして、ＬＰＯＳ情報に対応するデータセットの先端に到達する場合に、ＬＰＯＳ情報が書込み位置の近くを示していると判定すればよい。
【００７３】
その結果、ステップ１７３で取り出したラップ番号が元のラップに対するＡＢＦラップのラップ番号であり、かつ、ステップ１７３で取り出したＬＰＯＳ情報がステップ１７１で決定した書込み位置の近くを示していると判定した場合、書込み位置比較部４８は、ホスト３０にエラーを報告する（ステップ１８０）。具体的には、書込み位置比較部４８が、書込みを行えない旨をバッファ管理部４２に伝え、コマンド処理部４１が、ホスト３０に対してエラーを報告する。
【００７４】
一方、ステップ１７３で取り出したラップ番号が元のラップに対するＡＢＦラップのラップ番号でないと判定した場合、又は、ステップ１７３で取り出したＬＰＯＳ情報がステップ１７１で決定した書込み位置の近くを示していないと判定した場合、書込み位置比較部４８は、バッファ管理部４２に制御を渡し、バッファ管理部４２が、データセットを書き込む（ステップ１７５）。具体的には、テープ走行管理部４６に対し、テープ２３を書込み時の速度で走行させるための信号をモータドライバ１８に出力するよう指示する。また、バッファ１２からデータセットを取り出してチャネル入出力部４３に渡し、チャネル入出力部４３が書込みヘッド１４ａを介してテープ２３にデータセットを書き込む。
【００７５】
このとき、バッファ管理部４２は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部４５から取得し、データセットを書き込んだ位置のＬＰＯＳ情報をチャネル入出力部４３から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部４７に記憶する（ステップ１７６）。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもＡＢＦラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをＡＢＦラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びＬＰＯＳ情報のみを、データセット番号に対応付けて記憶するものとする。
【００７６】
その後、バッファ管理部４２は、バッファ１２内にデータセットがあるかどうかを判定し（ステップ１７７）、バッファ１２内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する（ステップ１７８）。具体的には、チャネル入出力部４３が取得した現在位置のＬＰＯＳ情報に基づいて判定する。
【００７７】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部４２は、ステップ１７１〜１７８を繰り返し、ステップ１７７でバッファ１２内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部４２は、ヘッド位置管理部４５に制御を渡し、ヘッド位置管理部４５が、ラップを切り替える（ステップ１７９）。具体的には、書込みヘッド１４ａを次の通常ラップに位置付けるための信号をヘッド位置制御システム１７に出力する。
【００７８】
尚、この第２の実施の形態では、ステップ１５３及び１７６において、データセットの書込みが終了した後に、データセットを書き込んだ位置のラップ番号及びＬＰＯＳ情報を記憶するようにした。しかしながら、前回記憶したラップ番号及びＬＰＯＳ情報を、データセットの書込みを開始するときに初期化する実装も考えられる。その場合は、データセットの書込みを開始する際に、ラップ番号及びＬＰＯＳ情報をリングバッファの他の領域に複製しておく。そして、一度ＡＢＦラップに書き込んだデータを元のラップに再書込みする際に、その複製した情報を参照することにより、ＡＢＦラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐようにするとよい。
【００７９】
また、この第２の実施の形態では、ステップ１７４で上書きできないと判定した場合に、ホスト３０にエラーを報告するようにしたが、判定後の処理はこれに限られない。例えば、ＡＢＦラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされない位置を探し、再書込みするデータセットをその位置に書き込むようにしてもよい。但し、この場合も、そのような位置が見つからなければ、ホスト３０にエラーを報告することになる。
【００８０】
ところで、本実施の形態では、図２に示したテープフォーマット、及び、図３に示した通常ラップの使用順序やＡＢＦラップ、ガードバンドラップの割り当てを前提とした。しかしながら、これらのテープフォーマットやラップの使用順序等でなくても、本実施の形態を適用することは可能である。
例えば、第１のデータが書き込まれる一時的な書込みのための第１のトラックと、第２のデータが書き込まれる一時的な書込みのための第２のトラックと、その後、第１のデータ及び第２のデータが書き込まれる通常の書込みのための第３のトラックと、第３のトラックの後に使用される通常の書込みのための第４のトラックと、第１のトラック及び第２のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であれば、本実施の形態を適用することができる。
【００８１】
また、第１の方向へのバックヒッチを伴わない書込みのための第１のトラックと、第１の方向とは逆の第２の方向へのバックヒッチを伴わない書込みのための第２のトラックと、第１のトラックに第２のトラックとは反対の側で隣接する第１の方向への書込みのための第３のトラックと、第３のトラックの後に使用され、第２のトラックに第１のトラックとは反対の側で隣接する第２の方向への書込みのための第４のトラックと、第１のトラック及び第２のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であっても、本実施の形態を適用することができる。
【００８２】
尚、本実施の形態では、上記第１のデータの一例として、データセット＃Ｘ＋２を用い、上記第２のデータの一例として、データセット＃Ｘ＋５を用いている。また、上記第１の方向の一例として、順方向を用い、上記第２の方向の一例として、逆方向を用いている。更に、上記第１のトラックの一例として、ラップ＃５４を用い、上記第２のトラックの一例として、ラップ＃５５を用い、上記第３のトラックの一例として、ラップ＃５２を用い、上記第４のトラックの一例として、ラップ＃５３を用い、上記中心領域の一例として、バンド中心を用いている。
【００８３】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００８４】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の形態が適用されるテープドライブの構成を示したブロック図である。
【図２】本発明の実施の形態で用いるテープのフォーマットを示した図である。
【図３】本発明の実施の形態で用いるテープにおける通常ラップの使用順序やＡＢＦラップの割り当てを示した図である。
【図４】本発明の実施の形態においてＡＢＦラップ上のデータセットが上書きされる問題を説明するための図である。
【図５】本発明の実施の形態においてＡＢＦラップ上のデータセットが上書きされる問題を説明するための図である。
【図６】本発明の実施の形態においてＡＢＦラップ上のデータセットが上書きされる問題を説明するための図である。
【図７】本発明の第１の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図８】本発明の第１の実施の形態におけるＡＢＦラップ上のデータセットが上書きされる問題の解決手法を示した図である。
【図９】本発明の第１の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図１０】本発明の第１の実施の形態におけるデータ読出し時のテープドライブの動作例を示したフローチャートである。
【図１１】本発明の第２の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図１２】本発明の第２の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図１３】本発明の第２の実施の形態における再書込み時のテープドライブの動作例を示したフローチャートである。
【符号の説明】
【００８６】
１０…テープドライブ、１１…ホストＩ／Ｆ、１２…バッファ、１３…チャネル、１４ａ…書込みヘッド、１４ｂ…読出しヘッド、１５…モータ、１６…コントローラ、１７…ヘッド位置制御システム、１８…モータドライバ
【図１】
2010040106.tif 000003
【図２】
2010040106.tif 000004
【図３】
2010040106.tif 000005
【図４】
2010040106.tif 000006
【図５】
2010040106.tif 000007
【図６】
2010040106.tif 000008
【図７】
2010040106.tif 000009
【図８】
2010040106.tif 000010
【図９】
2010040106.tif 000011
【図１０】
2010040106.tif 000012
【図１１】
2010040106.tif 000013
【図１２】
2010040106.tif 000014
【図１３】
2010040106.tif 000015