テープ媒体にデータを書き込む装置及び方法
【課題】ABFラップに書かれたデータがABFラップに書かれた別のデータや通常ラップに書かれたデータで上書きされることにより読み出せなくなるという問題を回避する。
【解決手段】テープドライブのコントローラ16において、バッファ管理部42が、フラッシュ発生を検知し、チャネル入出力部43が、書込みヘッドを介して、第1のデータをフラッシュ発生時に順方向の第1のABFラップに書き込み、第2のデータをフラッシュ発生時に逆方向の第2のABFラップに書き込み、その後、第1のデータ及び第2のデータを第1のABFラップに隣接する順方向の第1の通常ラップに書き込む。このうち、第2のデータを第2のABFラップに書き込む場合に、オフセット判定部44が、書込みヘッドを、第1の通常ラップの次に使用される逆方向の第2の通常ラップの方向へオフセットするよう制御する。
【解決手段】テープドライブのコントローラ16において、バッファ管理部42が、フラッシュ発生を検知し、チャネル入出力部43が、書込みヘッドを介して、第1のデータをフラッシュ発生時に順方向の第1のABFラップに書き込み、第2のデータをフラッシュ発生時に逆方向の第2のABFラップに書き込み、その後、第1のデータ及び第2のデータを第1のABFラップに隣接する順方向の第1の通常ラップに書き込む。このうち、第2のデータを第2のABFラップに書き込む場合に、オフセット判定部44が、書込みヘッドを、第1の通常ラップの次に使用される逆方向の第2の通常ラップの方向へオフセットするよう制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テープ媒体にデータを書き込む装置及び方法に関する。特に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置及び方法に関する。
【背景技術】
【0002】
磁気テープ等のテープ媒体にデータを書き込むテープドライブでは、データを一旦バッファに蓄積しておき、ドライブの都合の良いタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。このようなバッファからテープ媒体への書込みを「フラッシュ」という。
ところで、ホストがフラッシュを頻繁に要求すると、その都度、フラッシュ後にホストから送られてくるデータをテープ媒体に書き込むために、バックヒッチが発生する。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、逆方向に走行し、その後、再度元の方向に走行して書き込むべき位置に達して次のデータを書く、という一連の動作のことである。バックヒッチは、書き込むデータの間隔を狭くすることにより、テープ媒体の記録密度を高めるために行われる。
【0003】
このバックヒッチには5秒程度の時間がかかるため、フラッシュの頻度が高いと、書込みのパフォーマンスが低下する。
そこで、かかるパフォーマンスの低下を回避するための技術として、RABF(Recursive Accumulating Backhitchless Flush)が提案されている(例えば、特許文献1、2参照)。
RABFの実行中は、それまで利用していた通常記録領域(通常ラップ)とは別の一時記録領域(ABFラップ)に、フラッシュが発生してもバックヒッチを行わずにデータを書き込む。つまり、データの間隔を疎にして記録密度の低い状態で書き込む。そして、一定の量のデータを一時記録領域に書いた後で、その一度書いたデータを元の通常記録領域に再度書き込む。これにより、フラッシュが頻発する環境であっても、書込み時のパフォーマンスの劣化を低減している。
【0004】
【特許文献1】米国特許第6856479号明細書
【特許文献2】米国特許第6865043号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
このように、フラッシュ発生時のパフォーマンス低下を回避するためのRABFという技術は従来から知られていた。
しかしながら、特許文献1、2では、例えば、書込みヘッドの幅がトラック幅より広いことにより、トラックに書き込まれるデータがそのトラックに隣接する領域にはみ出すことは想定されていない。従って、一時記録領域に書かれたデータが、一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題については全く考えられておらず、この問題を回避する手法を提供するものでもない。
【0006】
本発明の目的は、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することにある。
【課題を解決するための手段】
【0007】
かかる目的のもと、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置であって、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第2の位置への第2のデータの書込み、及び、書込み部による第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部とを含む、装置を提供する。
ここで、第1のトラック及び第2のトラックは、バックヒッチを伴わない書込みのためのトラックであってもよい。
【0008】
この場合、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理としては、例えば、次の2つの処理を行うことが考えられる。
まず、第一に、第2のトラックは、第1のトラックに隣接する領域と、第3のトラックの後に使用される通常の書込みのための第4のトラックとに挟まれており、処理部は、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、第2の位置を、第2のトラック及び第4のトラックにまたがる位置に設定する処理を行う、というものである。
このとき、装置は、第1のトラックからデータを読み出す要求に応じて、第1のトラックに隣接する領域からデータを読み出す読出し部を更に含む、ものであってよい。
また、処理部は、第3の位置が第3のトラック及び第1のトラックにまたがる位置であることを条件として、第2の位置を、第2のトラック及び第4のトラックにまたがる位置に設定する処理を行う、ものであってよい。
【0009】
そして、第二に、処理部は、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第3の位置への第1のデータの書込みにおいて上書きされるかどうかを、書込みに先立って判定する処理を行う、というものである。
【0010】
また、本発明は、テープ媒体にデータを書き込む装置であって、データを蓄積するバッファと、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込むための書込みヘッドと、書込みヘッドを用いて第1の位置に書き込まれた第1のデータが、書込みヘッドを用いた第2の位置への第2のデータの書込み、及び、書込みヘッドを用いた第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラとを含む、装置も提供する。
【0011】
また、本発明は、バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、第1のトラックに第2のトラックとは反対の側で隣接する第1の方向への書込みのための第3のトラックと、第3のトラックの後に使用され、第2のトラックに第1のトラックとは反対の側で隣接する第2の方向への書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体に書き込まれるデータを取得する取得部と、バッファに蓄積されたデータをテープ媒体に書き込むに当たって、書込みヘッドを、第1のトラック及び中心領域にまたがる位置、及び、第2のトラック及び第4のトラックにまたがる位置のうちの指定された位置に位置付け、その後、書込みヘッドを、第1のトラック及び第3のトラックにまたがる位置に位置付ける位置付け部と、取得部により取得されたデータを書込みヘッドに出力することにより、データを、位置付け部により書込みヘッドが位置付けられた位置に書き込む書込み部とを含む、装置も提供する。
【0012】
更に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む方法であって、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込むステップと、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込むステップと、第1のデータが第1の位置に書き込まれ、かつ、第2のデータが第2の位置に書き込まれた後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込むステップと、第1の位置に書き込まれた第1のデータが、第2の位置への第2のデータの書込み、及び、第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップとを含む、方法も提供する。
【0013】
更にまた、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、コンピュータを、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第2の位置への第2のデータの書込み、及び、書込み部による第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部として機能させる、プログラムも提供する。
【発明の効果】
【0014】
本発明によれば、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
図1は、本実施の形態が適用されるテープドライブ10の構成例を示した図である。このテープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、書込みヘッド14aと、読出しヘッド14bと、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ20が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ20も図示している。このテープカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0016】
ここで、ホストI/F11は、上位装置の一例であるホスト30との通信を行う。例えば、ホスト30から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト30に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【0017】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAM(Dynamic Random Access Memory)によって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
チャネル13は、テープ23に書き込むべきデータを書込みヘッド14aに送ったり、テープ23から読み出されたデータを読出しヘッド14bから受け取ったりするために用いられる通信経路である。
書込みヘッド14aは、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込み、読出しヘッド14bは、テープ23が長手方向に移動するとき、テープ23から情報を読み出す。
モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0018】
一方、コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。
ヘッド位置制御システム17は、書込みヘッド14a及び読出しヘッド14bが所望の1つ又は複数のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド14a及び読出しヘッド14bを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。
【0019】
以下、テープドライブ10として、IBMエンタープライズテープドライブTS1120を例にとり、本実施の形態について詳細に説明する。
まず、本実施の形態の前提として、テープ23上のフォーマットについて説明する。
図2は、テープ23上のフォーマットの概略を示した図である。図中、LP2からLP3の間はキャリブレーション領域であり、LP3からLP4の間がユーザデータ領域である。
図示するように、テープ23上には、5本のサーボバンドが設けられている。このサーボバンドは、テープ23の製造時にテープ23上の物理的な位置を示すサーボパターンが書き込まれた領域である。
【0020】
また、テープ23は、この5本のサーボバンドによって、4本のデータバンドに分割されている。このデータバンドは、ユーザデータが書き込まれる領域であり、各データバンドには、十数本のラップと呼ばれる細長いデータ領域が設けられている。図では、1本の実線の矢印が1本のラップを表している。データは、右方向の矢印で示すようにラップに順方向に読み書きされた後、破線で連結した左方向の矢印で示すようにラップに逆方向に読み書きされる。図では、簡単化のため、1つのデータバンド内で、データが順方向に読み書きされるラップ、及び、データが逆方向に読み書きされるラップを、2本ずつ示している。しかしながら、実際には、順方向のラップ及び逆方向のラップはそれぞれ、例えば7本〜9本あり、1つのデータバンド内でラップは渦巻き状に配置されているものとする。つまり、順方向への読み書き及び逆方向への読み書きが繰り返し行われることにより、データはテープ23上で何度も往復して読み書きされるようになっている。
【0021】
更に、このようなフォーマットのテープ23では、開始位置201を起点とし、データバンド#0内に渦巻き状に配置されたラップに沿ってデータの読み書きが行われる。その後、データバンド#1,#2,#3に順に移動し、各データバンド内に渦巻き状に配置されたラップに沿ってデータは読み書きされ、終了位置202まで進む。つまり、次のデータバンドに移動するのに5秒程度の時間がかかるため、原則として、あるデータバンドのラップを使い切ってから次のデータバンドに移るようなフォーマットになっている。
【0022】
尚、図2は、あくまで書込みヘッド14aや読出しヘッド14bとの関係には触れずに示した概念図である。テープドライブ10は、通常、複数の書込みヘッド14aや読出しヘッド14bを有する。例えば、図2の実線の矢印を1つの書込みヘッド14aや読出しヘッド14bのデータを読み書きする時の軌跡と捉えた場合、この実線の矢印はトラックに相当する。そして、右向きの矢印が1つ目の書込みヘッド14a及び読出しヘッド14bに対応する順方向のトラックを示しているとすると、2つ目、3つ目、それ以降の書込みヘッド14a及び読出しヘッド14bに対応する順方向のトラックが、これよりも下に順に配置されるフォーマットとなる。また、左向きの矢印が1つ目の書込みヘッド14a及び読出しヘッド14bに対応する逆方向のトラックを示しているとすると、2つ目、3つ目、それ以降の書込みヘッド14a及び読出しヘッド14bに対応する逆方向のトラックが、これよりも下に順に配置されるフォーマットとなる。
【0023】
ここで、第2世代エンタープライズテープフォーマットでは、データバンド毎に14本のラップが存在する。このうち、偶数ラップは、テープの先頭(図2のLP3)からテープの末尾(図2のLP4)に向かう方向、つまり、順方向にデータを読み書きする場合に利用される。また、奇数ラップは、LP4からLP3に向かう方向、つまり、逆方向にデータを読み書きする場合に利用される。図2に示したように、各データバンド内のラップは渦巻き状に利用されるため、ラップ#2に隣接するラップは、ラップ#1やラップ#3ではなく、ラップ#0やラップ#4となる。
【0024】
ところで、テープ23の先頭からデータを書き込む場合、通常ラップとして使われるラップの順序は予め決められている。
図3に、その順序をテーブル形式で示す。通常ラップとしては、このテーブルの「通常ラップ」欄に示した番号のラップが上の行から順に使われる。即ち、ラップ#0、#1、#2、・・・、#9を使った後は、ラップ#10ではなく、ラップ#14が使われる。
また、各データバンドでは、データバンド中心に隣接する2本のラップがABFラップとして使われる。このABFラップは、前述の通り、RABF機能によりバックヒッチを挟まずに書き込む場合に利用されるラップである。ABFラップは、データ書込みに利用される通常ラップに応じて、動的に切り替えられる。つまり、通常ラップとしてラップ#0〜#9が使われている間は、ABFラップとしてラップ#12、#13が使われ、通常ラップとしてラップ#14〜#23が使われている間は、ABFラップとしてラップ#26、#27が使われる。
【0025】
更に、各データバンドでは、ABFラップに隣接するラップがガードバンドラップとなっている。
書込みヘッド14aは、ラップ1本の幅(トラックピッチ)より広いことがある。これは、フォーマットによってトラックピッチが異なることと、1つの書込みヘッド14aで複数のフォーマットに対応することとに起因している。このように書込みヘッド14aの幅とトラックピッチとが異なるため、例えばラップ#10にデータを書き込む一方でラップ#12又はラップ#13をABFラップとして利用すると、ABFラップに書き込んだデータをラップ#10に再書込みする際に、トラックピッチよりも広い書込みヘッド14aがラップ#10の隣のラップであるラップ#12上のデータを上書きしてしまうという問題が発生する。この問題を避けるために、ABFラップに隣接するラップは、ガードバンドラップとしてリザーブされている。
【0026】
さて、このようなテープフォーマットでは、RABF機能を利用する場合、書き込んだデータを読み出せなくなる問題が発生する危険性がある。
この問題は、以下の条件が全て揃ったときに発生する。
・ABFラップ上に書き込んだデータを元の通常ラップ(以下、単に「元のラップ」ともいう)に再書込みするときに、通常ラップの終端(EOW:End of Wrap)に到達し、次の通常ラップに遷移する動作(ラップターン)を行う。
・ラップターン後の通常ラップが、そのとき利用しているABFラップのガードバンドラップである。つまり、元のラップは、ラップ#51、#41、#13の何れかである。
・ABFラップ上に書き込んだデータを元のラップに再書込みするときにエラーが発生し、再書込みに失敗する。
・ABFラップ上のラップの先頭から上述のエラーが発生した場所までの間に、データが書き込まれている。
・ABFラップ上の上書きされたデータセットと同じデータを持つデータセットが、未だ元のラップに再書込みされていない。
・ABFラップ上の上書きされたデータセットと同じ内容を持つデータセットが、同じABFラップ上に重複部分を持つデータセットとしても書かれていない。フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込むので、重複部分を持つデータセットが書かれることがある。しかし、上書きされたデータがこのような重複部分にも含まれていないということである。
【0027】
通常、書込みエラーが発生した場合、そのデータを読み出すことはできない。しかしながら、RABF中は、ABFラップにデータを書き込んだ時点でデータの書込みに成功したことをホスト30に報告しているので、その後、ABFラップ上のデータを元のラップに書き込むことに失敗しても、ABFラップ上に書き込まれたデータを読み出せることが求められる。
【0028】
ここで、具体的な問題発生例について説明する。
図4〜6は、問題発生例を示した図である。第2世代エンタープライズテープフォーマットにおいて、トラックピッチは11μmであり、各データバンドの中心には、データバンド上の最後の偶数ラップと最後の奇数ラップの間に幅10.2μmの領域(以下、「バンド中心」という)がある。尚、図中、「DS」はデータセットを表す。IBMエンタープライズテープドライブTS1120の書込みヘッド14aの幅は20.6μmなので、データセットの幅方向の長さも20.6μmとなっている。
【0029】
図4に示すように、まず、テープ23において、ラップ#51上にデータ(DS#X−5〜DS#X)が書き込まれる。また、ラップ#51上でRABF機能が利用され、幾ばくかのデータ(DS#X+1〜DS#X+3)が、ABFラップであるラップ#54上に書き込まれる。
【0030】
次に、ABFラップへの書込み中にラップターンが発生し、図5に示すように、幾ばくかのデータ(DS#X+4〜DS#X+6)が、もう1本のABFラップであるラップ#55に書き込まれる。
【0031】
その後、図6に示すように、ABFラップ上に書き込まれたデータ(DS#X+1〜DS#X+6)がラップ#51に再書込みされる。そのとき、ラップターンが発生し、ラップ#52に遷移する。そして、ラップ#52上にDS#X+2を書き込むときにエラーが発生し、再試行しても再度エラーとなったとする。こうなると、ラップ#54上のDS#X+2は、ラップ#55上のDS#X+5とラップ#52上のDS#X+2により完全に上書きされてしまい、もはや読み出すことはできない。
【0032】
ここで、ABFラップ上に書き込まれたデータを読み出せなくなる問題を回避する方法には、次のようなものがある。
・ラップ#51、#41、#13上の後半では、RABF機能を無効にする。テープ23の全長は600m乃至800mであるが、ここでいう後半とは、そのうちの500m強を指すものとする。但し、この長さは、テープドライブ10のバッファ12のサイズと、データセットの間隔とに依存する。
・ABFラップにおけるデータの書込み領域をLP3の後半、つまり、LP3から500m強離れた領域に限定する。
・ラップ#51のABFラップをラップ#54、#55からラップ#40、#41に変更し、ラップ#41のABFラップをラップ#12、#13からラップ#26、#27に変更し、ラップ#13ではRABF機能を無効にする。
【0033】
しかしながら、何れの方法も、ホスト30がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすため、好ましくない。例えば、RABF機能を無効にすると、フラッシュの度にバックヒッチが発生することにより、RABF機能が有効な場合と比較して書込みに要する時間は約10倍になる。
【0034】
そこで、本実施の形態では、この問題を回避するための2つの手法を提案する。
以下、この2つの手法のうちの1つを第1の実施の形態とし、この2つの手法のうちのもう1つを第2の実施の形態として説明する。
【0035】
[第1の実施の形態]
第1の実施の形態では、ABFラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込む。
これにより、上述のような問題が発生した場合であっても、バンド中心の部分からデータを読み出すことができる。従って、ホスト30がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすことなく、ABFラップ上のデータを元のラップに再書込みする際に発生した上書き問題を回避する。
【0036】
まず、このような動作を行うコントローラ16の機能構成について説明する。
図7は、コントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43と、オフセット判定部44と、ヘッド位置管理部45と、テープ走行管理部46とを備える。
【0037】
このうち、コマンド処理部41は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込むことを指示する同期コマンド、テープ23からデータを読み出すことを指示するReadコマンド等がある。本実施の形態では、テープ媒体に書き込まれるデータを取得する取得部の一例として、コマンド処理部41を設けている。
【0038】
バッファ管理部42は、コマンド処理部41がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部41が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部43に出力する。更に、コマンド処理部41がReadコマンドを受け取った場合は、対象となるデータがバッファ12内になければチャネル入出力部43に対してそのデータを読み出すように指示し、対象となるデータがバッファ12内にあればそのデータをコマンド処理部41を介してホスト30に返す。
【0039】
チャネル入出力部43は、バッファ管理部42がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ管理部42に出力したりする。また、サーボヘッドがサーボトラックを追従することで読み取ったテープ23の長手方向における位置に関する情報(LPOS情報)をチャネル13から取得する。本実施の形態では、データを書き込む書込み部の一例として、チャネル入出力部43を設けている。
【0040】
オフセット判定部44は、データを書き込む際には、ヘッド位置管理部45から取得した現在のラップの情報に基づいて、書込みヘッド14aをオフセットする必要があるかどうかを判定する。また、データを読み出す際には、ヘッド位置管理部45から取得した現在のラップの情報と、バッファ管理部42から取得した読出しエラーの情報とに基づいて、読出しヘッド14bをオフセットする必要があるかどうかを判定する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、オフセット判定部44を設けている。
【0041】
ヘッド位置管理部45は、書込みヘッド14a及び読出しヘッド14bをテープ23の幅方向へ移動させるための信号をヘッド位置制御システム17に出力する。また、書込みヘッド14a及び読出しヘッド14bのテープ23の幅方向における現在位置に関する情報を保持する。本実施の形態では、書込みヘッドを位置付ける位置付け部の一例として、ヘッド位置管理部45を設けている。
テープ走行管理部46は、テープ23を順方向又は逆方向に走行させるための信号をモータドライバ18に出力する。
【0042】
図8に、このテープドライブ10が、ABFラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込むときの様子を示す。
このようにオフセットして書かれるデータセットは、図において太線で囲んで示すように、ラップ#55とバンド中心にまたがって書き込まれるのではなく、ラップ#53とラップ#55にまたがって書き込まれる。尚、ラップ#53はRABFのガードバンドラップなので、ABFラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
テープドライブ10は、ABFラップ上にデータを書き込む場合にこのように書き込むことにより、ラップ#54に書き込まれたDS#X+2をバンド中心周辺から読み出すことができる。
【0043】
また、ABFラップ上で逆方向に書かれるデータは、ABFラップとしてラップ#12、#13が使われる場合であれば、ラップ#11とラップ#13にまたがって書き込まれ、ABFラップとしてラップ#26、#27が使われる場合であれば、ラップ#25とラップ#27にまたがって書き込まれる。
尚、ラップ#11、#25もRABFのガードバンドラップなので、ABFラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
【0044】
このように、IBMエンタープライズテープドライブTS1120の第2世代エンタープライズテープフォーマットにおいて、ABFラップに書き込んだデータが読めなくなる問題を解くためには、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみオフセットしてデータを書き込めば十分であるが、常にオフセットしてデータを書き込むようにしてもよい。
【0045】
以下、テープドライブ10の具体的な動作を説明する。尚、ここでは、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみオフセットしてデータを書き込むものとする。
まず、フラッシュ発生時のテープドライブ10の動作を説明する。
図9は、フラッシュ発生時のテープドライブ10の動作例を示したフローチャートである。フラッシュは、例えば、バッファ12内のデータをテープ23上に書き込むことを指示する同期コマンドがホスト30から送られた場合や、バッファ12に空き領域がなくなった場合等に発生する。つまり、コマンド処理部41がホスト30から同期コマンドを受け付けたことをバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0046】
動作が開始すると、まず、バッファ管理部42は、ABFラップへの切替えをヘッド位置管理部45に指示し、ヘッド位置管理部45が、データの書込み先を通常ラップからABFラップに切り替える(ステップ101)。具体的には、書込みヘッド14aをABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0047】
次に、ヘッド位置管理部45からオフセット判定部44へ制御が移り、オフセット判定部44は、元のラップがラップ#51、#41、#13の何れかであるか判定する(ステップ102)。これは、ヘッド位置管理部45が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ#51、#41、#13の何れかであると判定されれば、ABFラップの番号が奇数であるかを判定する(ステップ103)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、奇数であれば、オフセット判定部44は、書込みヘッド14aをガードバンドラップ側にオフセットする(ステップ104)。具体的には、ヘッド位置管理部45に対し、書込みヘッド14aをガードバンドラップ側にオフセットさせるための信号をヘッド位置制御システム17に出力するよう指示する。
一方、オフセット判定部44は、元のラップがラップ#51、#41、#13以外である場合や、ABFラップの番号が偶数である場合は、書込みヘッド14aをオフセットしない。
【0048】
次いで、ヘッド位置管理部45からバッファ管理部42へ制御が移り、バッファ管理部42は、データセットを書き込む(ステップ105)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ106)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ107)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0049】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ105〜107を繰り返し、ステップ106でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、2本のABFラップを使い切ったかどうかを判定する(ステップ108)。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、2本のABFラップを使い切っていないと判定すれば、ヘッド位置管理部45は、ラップを切り替える(ステップ109)。具体的には、書込みヘッド14aをもう1つのABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。また、2本のABFラップを使い切ったと判定すれば、処理を終了する。
【0050】
このように、ABFラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。ここで、所定のタイミングとしては、データセットのABFラップの1往復分への書込みが終了した時点や、バッファ12に空き領域がなくなった時点等がある。但し、この第1の実施の形態において、再書込み時のテープドライブ10の動作は、現在のRABF機能で実現されている再書込み時の動作と同じであるので、詳しい説明は省略する。
【0051】
次いで、ABFラップからのデータ読出し時のテープドライブ10の動作を説明する。
図10は、データ読出し時のテープドライブ10の動作例を示したフローチャートである。尚、ABFラップからのデータ読出しは、通常ラップからのデータ読出しがエラーになった場合の復旧処理として実行されるものである。
動作が開始すると、まず、バッファ管理部42が、ABFラップからデータセットを読み出す(ステップ141)。具体的には、ヘッド位置管理部45に対し、読出しヘッド14bをABFラップに位置付けるための信号をヘッド位置制御システム17に出力すると共に、テープ走行管理部46に対し、テープ23を読出し時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、チャネル入出力部43が読出しヘッド14bを介してデータセットを読み出してバッファ管理部42に渡す。
【0052】
そして、バッファ管理部42は、データセットの読出しエラーが発生したかどうかを判定する(ステップ142)。ここでは、例えば、1回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【0053】
その結果、読出しエラーが発生したと判定されれば、バッファ管理部42からオフセット判定部44へ制御が移り、オフセット判定部44は、元のラップがラップ#51、#41、#13の何れかであるか判定する(ステップ143)。これは、ヘッド位置管理部45が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ#51、#41、#13の何れかであると判定されれば、ABFラップの番号が偶数であるかを判定する(ステップ144)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、偶数であれば、オフセット判定部44は、読出しヘッド14bをバンド中心側にオフセットする(ステップ145)。具体的には、ヘッド位置管理部45に対し、読出しヘッド14bをバンド中心側にオフセットさせるための信号をヘッド位置制御システム17に出力するよう指示する。
【0054】
その後、ヘッド位置管理部45からバッファ管理部42へ制御が移り、バッファ管理部42は、データセットを読み出す(ステップ146)。具体的には、テープ走行管理部46に対し、テープ23を読出し時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、チャネル入出力部43が読出しヘッド14bを介してデータセットを読み出してバッファ管理部42に渡す。
【0055】
そして、バッファ管理部42は、データセットの読出しエラーが発生したかどうかを判定する(ステップ147)。ここでは、例えば、1回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【0056】
その結果、読出しエラーが発生したと判定されれば、ホスト30にエラーを報告する(ステップ148)。具体的には、バッファ管理部42が、読出しを行えない旨をコマンド処理部41に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
一方、オフセット判定部44は、元のラップがラップ#51、#41、#13以外である場合や、ABFラップの番号が奇数である場合は、ホスト30にエラーを報告する(ステップ148)。具体的には、バッファ管理部42が、元のラップがラップ#51、#41、#13以外であることや、ABFラップの番号が奇数であることを示す情報をオフセット判定部44から受け取ってその旨をコマンド処理部41に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
【0057】
また、ステップ142やステップ147で読出しエラーが発生しなかった場合、バッファ管理部42は、データセットをホスト30に送る(ステップ149)。具体的には、チャネル入出力部43から受け取ったデータセットをバッファ12に蓄積し、ホスト30からの読出しコマンドに応じてデータセットをバッファ12から取り出し、ホスト30へ送る。
【0058】
[第2の実施の形態]
第2の実施の形態では、ABFラップ上に書かれたデータセットを上書きする可能性がある再書込み中に、ABFラップ上の各データセットの終端位置(End LPOS)を意識し、未だ元のラップに再書込みされていないデータを持つABFラップ上のデータセットが上書きされないようにする。
【0059】
即ち、テープドライブ10は、データセットが書き込まれた位置のラップ番号やLPOS情報、データセットに格納されたレコードやファイルマークの数を、リングバッファと呼ばれるDRAMに保持する。そして、ABFラップにデータセットを書いた時点、もしくは、ABFラップから元のラップに再書込みした時点で、リングバッファが持つ上記の情報を最新の情報に更新する。そして、一度ABFラップに書き込んだデータを元のラップに再書込みする際に、その最新の情報を参照し、再書込みを行ってよいかどうかを判断する。これにより、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐことができる。
【0060】
まず、このような動作を行うコントローラ16の機能構成について説明する。
図11は、コントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43と、ヘッド位置管理部45と、テープ走行管理部46と、書込み位置記憶部47と、書込み位置比較部48とを備える。
【0061】
このうち、コマンド処理部41、バッファ管理部42、チャネル入出力部43、ヘッド位置管理部45、テープ走行管理部46は、図7を参照して既に説明したので、ここでの詳細な説明は省略する。
【0062】
書込み位置記憶部47は、ヘッド位置管理部45が保持するデータセットを書き込んだ位置のラップ番号と、チャネル入出力部43が取得したデータセットを書き込んだ位置のLPOS情報とを、バッファ12で管理されるデータセットのデータセット番号に対応付けて記憶する。
【0063】
書込み位置比較部48は、ヘッド位置管理部45が保持するデータセットを書き込む位置のラップ番号が、書込み位置記憶部47にそのデータセットのデータセット番号に対応付けて記憶されたラップ番号と等しく、かつ、チャネル入出力部43が取得したデータセットを書き込む位置のLPOS情報が、書込み位置記憶部47にそのデータセットに対応付けて記憶されたLPOS情報と近いかどうかを判定する。そして、ラップ番号が等しくLPOS情報が近い場合は、データセットを書けない旨をバッファ管理部42に伝え、それ以外の場合は、データセットを書き込むようバッファ管理部42に指示する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、書込み位置比較部48を設けている。
【0064】
以下、テープドライブ10の具体的な動作を説明する。尚、ここでは、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみABFラップ上のデータセットが上書きされないように制御するものとする。
まず、フラッシュ発生時のテープドライブ10の動作を説明する。
図12は、フラッシュ発生時のテープドライブ10の動作例を示したフローチャートである。フラッシュは、例えば、バッファ12内のデータをテープ23上に書き込むことを指示する同期コマンドがホスト30から送られた場合や、バッファ12に空き領域がなくなった場合等に発生する。つまり、コマンド処理部41がホスト30から同期コマンドを受け付けたことをバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0065】
動作が開始すると、まず、バッファ管理部42は、ABFラップへの切替えをヘッド位置管理部45に指示し、ヘッド位置管理部45が、データの書込み先を通常ラップからABFラップに切り替える(ステップ151)。具体的には、書込みヘッド14aをABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0066】
次に、バッファ管理部42は、データセットを書き込む(ステップ152)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
【0067】
このとき、バッファ管理部42は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部45から取得し、データセットを書き込んだ位置のLPOS情報をチャネル入出力部43から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部47に記憶する(ステップ153)。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びLPOS情報のみを、データセット番号に対応付けて記憶するものとする。
【0068】
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ154)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ155)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0069】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ152〜155を繰り返し、ステップ154でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、2本のABFラップを使い切ったかどうかを判定する(ステップ156)。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、2本のABFラップを使い切っていないと判定すれば、ヘッド位置管理部45は、ラップを切り替える(ステップ157)。具体的には、書込みヘッド14aをもう1つのABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。また、2本のABFラップを使い切ったと判定すれば、処理を終了する。
【0070】
このように、ABFラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。
図13は、この再書込み時のテープドライブ10の動作例を示したフローチャートである。ここで、所定のタイミングとしては、データセットのABFラップの1往復分への書込みが終了した時点や、バッファ12に空き領域がなくなった時点等がある。つまり、図12のステップ156でヘッド位置管理部45が2本のABFラップを使い切ったと判定した旨をバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0071】
動作が開始すると、まず、バッファ管理部42は、データセットの書込み位置を決定する(ステップ171)。例えば、1つ前のデータセットの終端から予め決められた長さだけ離れた位置を書込み位置として決定すればよい。
次に、バッファ管理部42から書込み位置比較部48へ制御が移り、書込み位置比較部48は、現在のラップがラップ#52、#10、#24の何れかであるか判定する(ステップ172)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、現在のラップがラップ#52、#10、#24の何れでもないと判定されれば、ステップ175へ進む。また、現在のラップがラップ#52、#10、#24の何れかであると判定されれば、書込み位置記憶部47からデータセットの番号に対応付けて記憶されたラップ番号とLPOS情報とを取り出す(ステップ173)。
【0072】
そして、書込み位置比較部48は、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号であり、かつ、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示しているかどうかを判定する(ステップ174)。ここでは、例えば、最大限エラーが発生したときのデータセットの長さを予め定めておき、書込み位置からその長さだけデータセットを書いたとして、LPOS情報に対応するデータセットの先端に到達する場合に、LPOS情報が書込み位置の近くを示していると判定すればよい。
【0073】
その結果、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号であり、かつ、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示していると判定した場合、書込み位置比較部48は、ホスト30にエラーを報告する(ステップ180)。具体的には、書込み位置比較部48が、書込みを行えない旨をバッファ管理部42に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
【0074】
一方、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号でないと判定した場合、又は、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示していないと判定した場合、書込み位置比較部48は、バッファ管理部42に制御を渡し、バッファ管理部42が、データセットを書き込む(ステップ175)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
【0075】
このとき、バッファ管理部42は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部45から取得し、データセットを書き込んだ位置のLPOS情報をチャネル入出力部43から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部47に記憶する(ステップ176)。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びLPOS情報のみを、データセット番号に対応付けて記憶するものとする。
【0076】
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ177)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ178)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0077】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ171〜178を繰り返し、ステップ177でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、ラップを切り替える(ステップ179)。具体的には、書込みヘッド14aを次の通常ラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0078】
尚、この第2の実施の形態では、ステップ153及び176において、データセットの書込みが終了した後に、データセットを書き込んだ位置のラップ番号及びLPOS情報を記憶するようにした。しかしながら、前回記憶したラップ番号及びLPOS情報を、データセットの書込みを開始するときに初期化する実装も考えられる。その場合は、データセットの書込みを開始する際に、ラップ番号及びLPOS情報をリングバッファの他の領域に複製しておく。そして、一度ABFラップに書き込んだデータを元のラップに再書込みする際に、その複製した情報を参照することにより、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐようにするとよい。
【0079】
また、この第2の実施の形態では、ステップ174で上書きできないと判定した場合に、ホスト30にエラーを報告するようにしたが、判定後の処理はこれに限られない。例えば、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされない位置を探し、再書込みするデータセットをその位置に書き込むようにしてもよい。但し、この場合も、そのような位置が見つからなければ、ホスト30にエラーを報告することになる。
【0080】
ところで、本実施の形態では、図2に示したテープフォーマット、及び、図3に示した通常ラップの使用順序やABFラップ、ガードバンドラップの割り当てを前提とした。しかしながら、これらのテープフォーマットやラップの使用順序等でなくても、本実施の形態を適用することは可能である。
例えば、第1のデータが書き込まれる一時的な書込みのための第1のトラックと、第2のデータが書き込まれる一時的な書込みのための第2のトラックと、その後、第1のデータ及び第2のデータが書き込まれる通常の書込みのための第3のトラックと、第3のトラックの後に使用される通常の書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であれば、本実施の形態を適用することができる。
【0081】
また、第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、第1のトラックに第2のトラックとは反対の側で隣接する第1の方向への書込みのための第3のトラックと、第3のトラックの後に使用され、第2のトラックに第1のトラックとは反対の側で隣接する第2の方向への書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であっても、本実施の形態を適用することができる。
【0082】
尚、本実施の形態では、上記第1のデータの一例として、データセット#X+2を用い、上記第2のデータの一例として、データセット#X+5を用いている。また、上記第1の方向の一例として、順方向を用い、上記第2の方向の一例として、逆方向を用いている。更に、上記第1のトラックの一例として、ラップ#54を用い、上記第2のトラックの一例として、ラップ#55を用い、上記第3のトラックの一例として、ラップ#52を用い、上記第4のトラックの一例として、ラップ#53を用い、上記中心領域の一例として、バンド中心を用いている。
【0083】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0084】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【0085】
【図1】本発明の実施の形態が適用されるテープドライブの構成を示したブロック図である。
【図2】本発明の実施の形態で用いるテープのフォーマットを示した図である。
【図3】本発明の実施の形態で用いるテープにおける通常ラップの使用順序やABFラップの割り当てを示した図である。
【図4】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図5】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図6】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図7】本発明の第1の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図8】本発明の第1の実施の形態におけるABFラップ上のデータセットが上書きされる問題の解決手法を示した図である。
【図9】本発明の第1の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図10】本発明の第1の実施の形態におけるデータ読出し時のテープドライブの動作例を示したフローチャートである。
【図11】本発明の第2の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図12】本発明の第2の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図13】本発明の第2の実施の形態における再書込み時のテープドライブの動作例を示したフローチャートである。
【符号の説明】
【0086】
10…テープドライブ、11…ホストI/F、12…バッファ、13…チャネル、14a…書込みヘッド、14b…読出しヘッド、15…モータ、16…コントローラ、17…ヘッド位置制御システム、18…モータドライバ
【技術分野】
【0001】
本発明は、テープ媒体にデータを書き込む装置及び方法に関する。特に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置及び方法に関する。
【背景技術】
【0002】
磁気テープ等のテープ媒体にデータを書き込むテープドライブでは、データを一旦バッファに蓄積しておき、ドライブの都合の良いタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。このようなバッファからテープ媒体への書込みを「フラッシュ」という。
ところで、ホストがフラッシュを頻繁に要求すると、その都度、フラッシュ後にホストから送られてくるデータをテープ媒体に書き込むために、バックヒッチが発生する。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、逆方向に走行し、その後、再度元の方向に走行して書き込むべき位置に達して次のデータを書く、という一連の動作のことである。バックヒッチは、書き込むデータの間隔を狭くすることにより、テープ媒体の記録密度を高めるために行われる。
【0003】
このバックヒッチには5秒程度の時間がかかるため、フラッシュの頻度が高いと、書込みのパフォーマンスが低下する。
そこで、かかるパフォーマンスの低下を回避するための技術として、RABF(Recursive Accumulating Backhitchless Flush)が提案されている(例えば、特許文献1、2参照)。
RABFの実行中は、それまで利用していた通常記録領域(通常ラップ)とは別の一時記録領域(ABFラップ)に、フラッシュが発生してもバックヒッチを行わずにデータを書き込む。つまり、データの間隔を疎にして記録密度の低い状態で書き込む。そして、一定の量のデータを一時記録領域に書いた後で、その一度書いたデータを元の通常記録領域に再度書き込む。これにより、フラッシュが頻発する環境であっても、書込み時のパフォーマンスの劣化を低減している。
【0004】
【特許文献1】米国特許第6856479号明細書
【特許文献2】米国特許第6865043号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
このように、フラッシュ発生時のパフォーマンス低下を回避するためのRABFという技術は従来から知られていた。
しかしながら、特許文献1、2では、例えば、書込みヘッドの幅がトラック幅より広いことにより、トラックに書き込まれるデータがそのトラックに隣接する領域にはみ出すことは想定されていない。従って、一時記録領域に書かれたデータが、一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題については全く考えられておらず、この問題を回避する手法を提供するものでもない。
【0006】
本発明の目的は、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することにある。
【課題を解決するための手段】
【0007】
かかる目的のもと、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置であって、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第2の位置への第2のデータの書込み、及び、書込み部による第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部とを含む、装置を提供する。
ここで、第1のトラック及び第2のトラックは、バックヒッチを伴わない書込みのためのトラックであってもよい。
【0008】
この場合、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理としては、例えば、次の2つの処理を行うことが考えられる。
まず、第一に、第2のトラックは、第1のトラックに隣接する領域と、第3のトラックの後に使用される通常の書込みのための第4のトラックとに挟まれており、処理部は、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、第2の位置を、第2のトラック及び第4のトラックにまたがる位置に設定する処理を行う、というものである。
このとき、装置は、第1のトラックからデータを読み出す要求に応じて、第1のトラックに隣接する領域からデータを読み出す読出し部を更に含む、ものであってよい。
また、処理部は、第3の位置が第3のトラック及び第1のトラックにまたがる位置であることを条件として、第2の位置を、第2のトラック及び第4のトラックにまたがる位置に設定する処理を行う、ものであってよい。
【0009】
そして、第二に、処理部は、第1の位置に書き込まれた第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第3の位置への第1のデータの書込みにおいて上書きされるかどうかを、書込みに先立って判定する処理を行う、というものである。
【0010】
また、本発明は、テープ媒体にデータを書き込む装置であって、データを蓄積するバッファと、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込むための書込みヘッドと、書込みヘッドを用いて第1の位置に書き込まれた第1のデータが、書込みヘッドを用いた第2の位置への第2のデータの書込み、及び、書込みヘッドを用いた第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラとを含む、装置も提供する。
【0011】
また、本発明は、バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、第1のトラックに第2のトラックとは反対の側で隣接する第1の方向への書込みのための第3のトラックと、第3のトラックの後に使用され、第2のトラックに第1のトラックとは反対の側で隣接する第2の方向への書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体に書き込まれるデータを取得する取得部と、バッファに蓄積されたデータをテープ媒体に書き込むに当たって、書込みヘッドを、第1のトラック及び中心領域にまたがる位置、及び、第2のトラック及び第4のトラックにまたがる位置のうちの指定された位置に位置付け、その後、書込みヘッドを、第1のトラック及び第3のトラックにまたがる位置に位置付ける位置付け部と、取得部により取得されたデータを書込みヘッドに出力することにより、データを、位置付け部により書込みヘッドが位置付けられた位置に書き込む書込み部とを含む、装置も提供する。
【0012】
更に、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む方法であって、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込むステップと、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込むステップと、第1のデータが第1の位置に書き込まれ、かつ、第2のデータが第2の位置に書き込まれた後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込むステップと、第1の位置に書き込まれた第1のデータが、第2の位置への第2のデータの書込み、及び、第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップとを含む、方法も提供する。
【0013】
更にまた、本発明は、バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、コンピュータを、バッファに蓄積された第1のデータをテープ媒体に書き込むに当たって、第1のデータを、一時的な書込みのための第1のトラック及び第1のトラックに隣接する領域にまたがる第1の位置に書き込み、バッファに蓄積された第2のデータをテープ媒体に書き込むに当たって、第2のデータを、一時的な書込みのための第2のトラック及び第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、第1のデータ及び第2のデータを、通常の書込みのための第3のトラック及び第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、書込み部により第1の位置に書き込まれた第1のデータが、書込み部による第2の位置への第2のデータの書込み、及び、書込み部による第3の位置への第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部として機能させる、プログラムも提供する。
【発明の効果】
【0014】
本発明によれば、一時記録領域に書かれたデータが一時記録領域に書かれた別のデータや通常記録領域に書かれたデータで上書きされることにより読み出せなくなるという問題を回避することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
図1は、本実施の形態が適用されるテープドライブ10の構成例を示した図である。このテープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、書込みヘッド14aと、読出しヘッド14bと、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ20が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ20も図示している。このテープカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0016】
ここで、ホストI/F11は、上位装置の一例であるホスト30との通信を行う。例えば、ホスト30から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト30に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【0017】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAM(Dynamic Random Access Memory)によって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
チャネル13は、テープ23に書き込むべきデータを書込みヘッド14aに送ったり、テープ23から読み出されたデータを読出しヘッド14bから受け取ったりするために用いられる通信経路である。
書込みヘッド14aは、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込み、読出しヘッド14bは、テープ23が長手方向に移動するとき、テープ23から情報を読み出す。
モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0018】
一方、コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。
ヘッド位置制御システム17は、書込みヘッド14a及び読出しヘッド14bが所望の1つ又は複数のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド14a及び読出しヘッド14bを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。
【0019】
以下、テープドライブ10として、IBMエンタープライズテープドライブTS1120を例にとり、本実施の形態について詳細に説明する。
まず、本実施の形態の前提として、テープ23上のフォーマットについて説明する。
図2は、テープ23上のフォーマットの概略を示した図である。図中、LP2からLP3の間はキャリブレーション領域であり、LP3からLP4の間がユーザデータ領域である。
図示するように、テープ23上には、5本のサーボバンドが設けられている。このサーボバンドは、テープ23の製造時にテープ23上の物理的な位置を示すサーボパターンが書き込まれた領域である。
【0020】
また、テープ23は、この5本のサーボバンドによって、4本のデータバンドに分割されている。このデータバンドは、ユーザデータが書き込まれる領域であり、各データバンドには、十数本のラップと呼ばれる細長いデータ領域が設けられている。図では、1本の実線の矢印が1本のラップを表している。データは、右方向の矢印で示すようにラップに順方向に読み書きされた後、破線で連結した左方向の矢印で示すようにラップに逆方向に読み書きされる。図では、簡単化のため、1つのデータバンド内で、データが順方向に読み書きされるラップ、及び、データが逆方向に読み書きされるラップを、2本ずつ示している。しかしながら、実際には、順方向のラップ及び逆方向のラップはそれぞれ、例えば7本〜9本あり、1つのデータバンド内でラップは渦巻き状に配置されているものとする。つまり、順方向への読み書き及び逆方向への読み書きが繰り返し行われることにより、データはテープ23上で何度も往復して読み書きされるようになっている。
【0021】
更に、このようなフォーマットのテープ23では、開始位置201を起点とし、データバンド#0内に渦巻き状に配置されたラップに沿ってデータの読み書きが行われる。その後、データバンド#1,#2,#3に順に移動し、各データバンド内に渦巻き状に配置されたラップに沿ってデータは読み書きされ、終了位置202まで進む。つまり、次のデータバンドに移動するのに5秒程度の時間がかかるため、原則として、あるデータバンドのラップを使い切ってから次のデータバンドに移るようなフォーマットになっている。
【0022】
尚、図2は、あくまで書込みヘッド14aや読出しヘッド14bとの関係には触れずに示した概念図である。テープドライブ10は、通常、複数の書込みヘッド14aや読出しヘッド14bを有する。例えば、図2の実線の矢印を1つの書込みヘッド14aや読出しヘッド14bのデータを読み書きする時の軌跡と捉えた場合、この実線の矢印はトラックに相当する。そして、右向きの矢印が1つ目の書込みヘッド14a及び読出しヘッド14bに対応する順方向のトラックを示しているとすると、2つ目、3つ目、それ以降の書込みヘッド14a及び読出しヘッド14bに対応する順方向のトラックが、これよりも下に順に配置されるフォーマットとなる。また、左向きの矢印が1つ目の書込みヘッド14a及び読出しヘッド14bに対応する逆方向のトラックを示しているとすると、2つ目、3つ目、それ以降の書込みヘッド14a及び読出しヘッド14bに対応する逆方向のトラックが、これよりも下に順に配置されるフォーマットとなる。
【0023】
ここで、第2世代エンタープライズテープフォーマットでは、データバンド毎に14本のラップが存在する。このうち、偶数ラップは、テープの先頭(図2のLP3)からテープの末尾(図2のLP4)に向かう方向、つまり、順方向にデータを読み書きする場合に利用される。また、奇数ラップは、LP4からLP3に向かう方向、つまり、逆方向にデータを読み書きする場合に利用される。図2に示したように、各データバンド内のラップは渦巻き状に利用されるため、ラップ#2に隣接するラップは、ラップ#1やラップ#3ではなく、ラップ#0やラップ#4となる。
【0024】
ところで、テープ23の先頭からデータを書き込む場合、通常ラップとして使われるラップの順序は予め決められている。
図3に、その順序をテーブル形式で示す。通常ラップとしては、このテーブルの「通常ラップ」欄に示した番号のラップが上の行から順に使われる。即ち、ラップ#0、#1、#2、・・・、#9を使った後は、ラップ#10ではなく、ラップ#14が使われる。
また、各データバンドでは、データバンド中心に隣接する2本のラップがABFラップとして使われる。このABFラップは、前述の通り、RABF機能によりバックヒッチを挟まずに書き込む場合に利用されるラップである。ABFラップは、データ書込みに利用される通常ラップに応じて、動的に切り替えられる。つまり、通常ラップとしてラップ#0〜#9が使われている間は、ABFラップとしてラップ#12、#13が使われ、通常ラップとしてラップ#14〜#23が使われている間は、ABFラップとしてラップ#26、#27が使われる。
【0025】
更に、各データバンドでは、ABFラップに隣接するラップがガードバンドラップとなっている。
書込みヘッド14aは、ラップ1本の幅(トラックピッチ)より広いことがある。これは、フォーマットによってトラックピッチが異なることと、1つの書込みヘッド14aで複数のフォーマットに対応することとに起因している。このように書込みヘッド14aの幅とトラックピッチとが異なるため、例えばラップ#10にデータを書き込む一方でラップ#12又はラップ#13をABFラップとして利用すると、ABFラップに書き込んだデータをラップ#10に再書込みする際に、トラックピッチよりも広い書込みヘッド14aがラップ#10の隣のラップであるラップ#12上のデータを上書きしてしまうという問題が発生する。この問題を避けるために、ABFラップに隣接するラップは、ガードバンドラップとしてリザーブされている。
【0026】
さて、このようなテープフォーマットでは、RABF機能を利用する場合、書き込んだデータを読み出せなくなる問題が発生する危険性がある。
この問題は、以下の条件が全て揃ったときに発生する。
・ABFラップ上に書き込んだデータを元の通常ラップ(以下、単に「元のラップ」ともいう)に再書込みするときに、通常ラップの終端(EOW:End of Wrap)に到達し、次の通常ラップに遷移する動作(ラップターン)を行う。
・ラップターン後の通常ラップが、そのとき利用しているABFラップのガードバンドラップである。つまり、元のラップは、ラップ#51、#41、#13の何れかである。
・ABFラップ上に書き込んだデータを元のラップに再書込みするときにエラーが発生し、再書込みに失敗する。
・ABFラップ上のラップの先頭から上述のエラーが発生した場所までの間に、データが書き込まれている。
・ABFラップ上の上書きされたデータセットと同じデータを持つデータセットが、未だ元のラップに再書込みされていない。
・ABFラップ上の上書きされたデータセットと同じ内容を持つデータセットが、同じABFラップ上に重複部分を持つデータセットとしても書かれていない。フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込むので、重複部分を持つデータセットが書かれることがある。しかし、上書きされたデータがこのような重複部分にも含まれていないということである。
【0027】
通常、書込みエラーが発生した場合、そのデータを読み出すことはできない。しかしながら、RABF中は、ABFラップにデータを書き込んだ時点でデータの書込みに成功したことをホスト30に報告しているので、その後、ABFラップ上のデータを元のラップに書き込むことに失敗しても、ABFラップ上に書き込まれたデータを読み出せることが求められる。
【0028】
ここで、具体的な問題発生例について説明する。
図4〜6は、問題発生例を示した図である。第2世代エンタープライズテープフォーマットにおいて、トラックピッチは11μmであり、各データバンドの中心には、データバンド上の最後の偶数ラップと最後の奇数ラップの間に幅10.2μmの領域(以下、「バンド中心」という)がある。尚、図中、「DS」はデータセットを表す。IBMエンタープライズテープドライブTS1120の書込みヘッド14aの幅は20.6μmなので、データセットの幅方向の長さも20.6μmとなっている。
【0029】
図4に示すように、まず、テープ23において、ラップ#51上にデータ(DS#X−5〜DS#X)が書き込まれる。また、ラップ#51上でRABF機能が利用され、幾ばくかのデータ(DS#X+1〜DS#X+3)が、ABFラップであるラップ#54上に書き込まれる。
【0030】
次に、ABFラップへの書込み中にラップターンが発生し、図5に示すように、幾ばくかのデータ(DS#X+4〜DS#X+6)が、もう1本のABFラップであるラップ#55に書き込まれる。
【0031】
その後、図6に示すように、ABFラップ上に書き込まれたデータ(DS#X+1〜DS#X+6)がラップ#51に再書込みされる。そのとき、ラップターンが発生し、ラップ#52に遷移する。そして、ラップ#52上にDS#X+2を書き込むときにエラーが発生し、再試行しても再度エラーとなったとする。こうなると、ラップ#54上のDS#X+2は、ラップ#55上のDS#X+5とラップ#52上のDS#X+2により完全に上書きされてしまい、もはや読み出すことはできない。
【0032】
ここで、ABFラップ上に書き込まれたデータを読み出せなくなる問題を回避する方法には、次のようなものがある。
・ラップ#51、#41、#13上の後半では、RABF機能を無効にする。テープ23の全長は600m乃至800mであるが、ここでいう後半とは、そのうちの500m強を指すものとする。但し、この長さは、テープドライブ10のバッファ12のサイズと、データセットの間隔とに依存する。
・ABFラップにおけるデータの書込み領域をLP3の後半、つまり、LP3から500m強離れた領域に限定する。
・ラップ#51のABFラップをラップ#54、#55からラップ#40、#41に変更し、ラップ#41のABFラップをラップ#12、#13からラップ#26、#27に変更し、ラップ#13ではRABF機能を無効にする。
【0033】
しかしながら、何れの方法も、ホスト30がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすため、好ましくない。例えば、RABF機能を無効にすると、フラッシュの度にバックヒッチが発生することにより、RABF機能が有効な場合と比較して書込みに要する時間は約10倍になる。
【0034】
そこで、本実施の形態では、この問題を回避するための2つの手法を提案する。
以下、この2つの手法のうちの1つを第1の実施の形態とし、この2つの手法のうちのもう1つを第2の実施の形態として説明する。
【0035】
[第1の実施の形態]
第1の実施の形態では、ABFラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込む。
これにより、上述のような問題が発生した場合であっても、バンド中心の部分からデータを読み出すことができる。従って、ホスト30がフラッシュを頻発しながらデータを書き込む場合のパフォーマンスに悪影響を及ぼすことなく、ABFラップ上のデータを元のラップに再書込みする際に発生した上書き問題を回避する。
【0036】
まず、このような動作を行うコントローラ16の機能構成について説明する。
図7は、コントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43と、オフセット判定部44と、ヘッド位置管理部45と、テープ走行管理部46とを備える。
【0037】
このうち、コマンド処理部41は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込むことを指示する同期コマンド、テープ23からデータを読み出すことを指示するReadコマンド等がある。本実施の形態では、テープ媒体に書き込まれるデータを取得する取得部の一例として、コマンド処理部41を設けている。
【0038】
バッファ管理部42は、コマンド処理部41がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部41が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部43に出力する。更に、コマンド処理部41がReadコマンドを受け取った場合は、対象となるデータがバッファ12内になければチャネル入出力部43に対してそのデータを読み出すように指示し、対象となるデータがバッファ12内にあればそのデータをコマンド処理部41を介してホスト30に返す。
【0039】
チャネル入出力部43は、バッファ管理部42がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ管理部42に出力したりする。また、サーボヘッドがサーボトラックを追従することで読み取ったテープ23の長手方向における位置に関する情報(LPOS情報)をチャネル13から取得する。本実施の形態では、データを書き込む書込み部の一例として、チャネル入出力部43を設けている。
【0040】
オフセット判定部44は、データを書き込む際には、ヘッド位置管理部45から取得した現在のラップの情報に基づいて、書込みヘッド14aをオフセットする必要があるかどうかを判定する。また、データを読み出す際には、ヘッド位置管理部45から取得した現在のラップの情報と、バッファ管理部42から取得した読出しエラーの情報とに基づいて、読出しヘッド14bをオフセットする必要があるかどうかを判定する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、オフセット判定部44を設けている。
【0041】
ヘッド位置管理部45は、書込みヘッド14a及び読出しヘッド14bをテープ23の幅方向へ移動させるための信号をヘッド位置制御システム17に出力する。また、書込みヘッド14a及び読出しヘッド14bのテープ23の幅方向における現在位置に関する情報を保持する。本実施の形態では、書込みヘッドを位置付ける位置付け部の一例として、ヘッド位置管理部45を設けている。
テープ走行管理部46は、テープ23を順方向又は逆方向に走行させるための信号をモータドライバ18に出力する。
【0042】
図8に、このテープドライブ10が、ABFラップ上で逆方向にデータを書き込む場合に、バンド中心を潰さぬよう、ガードバンドラップ寄りにオフセットして書き込むときの様子を示す。
このようにオフセットして書かれるデータセットは、図において太線で囲んで示すように、ラップ#55とバンド中心にまたがって書き込まれるのではなく、ラップ#53とラップ#55にまたがって書き込まれる。尚、ラップ#53はRABFのガードバンドラップなので、ABFラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
テープドライブ10は、ABFラップ上にデータを書き込む場合にこのように書き込むことにより、ラップ#54に書き込まれたDS#X+2をバンド中心周辺から読み出すことができる。
【0043】
また、ABFラップ上で逆方向に書かれるデータは、ABFラップとしてラップ#12、#13が使われる場合であれば、ラップ#11とラップ#13にまたがって書き込まれ、ABFラップとしてラップ#26、#27が使われる場合であれば、ラップ#25とラップ#27にまたがって書き込まれる。
尚、ラップ#11、#25もRABFのガードバンドラップなので、ABFラップにデータを書き込む場合にガードバンドラップ上にも書き込んでしまうことに問題はない。
【0044】
このように、IBMエンタープライズテープドライブTS1120の第2世代エンタープライズテープフォーマットにおいて、ABFラップに書き込んだデータが読めなくなる問題を解くためには、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみオフセットしてデータを書き込めば十分であるが、常にオフセットしてデータを書き込むようにしてもよい。
【0045】
以下、テープドライブ10の具体的な動作を説明する。尚、ここでは、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみオフセットしてデータを書き込むものとする。
まず、フラッシュ発生時のテープドライブ10の動作を説明する。
図9は、フラッシュ発生時のテープドライブ10の動作例を示したフローチャートである。フラッシュは、例えば、バッファ12内のデータをテープ23上に書き込むことを指示する同期コマンドがホスト30から送られた場合や、バッファ12に空き領域がなくなった場合等に発生する。つまり、コマンド処理部41がホスト30から同期コマンドを受け付けたことをバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0046】
動作が開始すると、まず、バッファ管理部42は、ABFラップへの切替えをヘッド位置管理部45に指示し、ヘッド位置管理部45が、データの書込み先を通常ラップからABFラップに切り替える(ステップ101)。具体的には、書込みヘッド14aをABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0047】
次に、ヘッド位置管理部45からオフセット判定部44へ制御が移り、オフセット判定部44は、元のラップがラップ#51、#41、#13の何れかであるか判定する(ステップ102)。これは、ヘッド位置管理部45が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ#51、#41、#13の何れかであると判定されれば、ABFラップの番号が奇数であるかを判定する(ステップ103)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、奇数であれば、オフセット判定部44は、書込みヘッド14aをガードバンドラップ側にオフセットする(ステップ104)。具体的には、ヘッド位置管理部45に対し、書込みヘッド14aをガードバンドラップ側にオフセットさせるための信号をヘッド位置制御システム17に出力するよう指示する。
一方、オフセット判定部44は、元のラップがラップ#51、#41、#13以外である場合や、ABFラップの番号が偶数である場合は、書込みヘッド14aをオフセットしない。
【0048】
次いで、ヘッド位置管理部45からバッファ管理部42へ制御が移り、バッファ管理部42は、データセットを書き込む(ステップ105)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ106)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ107)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0049】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ105〜107を繰り返し、ステップ106でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、2本のABFラップを使い切ったかどうかを判定する(ステップ108)。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、2本のABFラップを使い切っていないと判定すれば、ヘッド位置管理部45は、ラップを切り替える(ステップ109)。具体的には、書込みヘッド14aをもう1つのABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。また、2本のABFラップを使い切ったと判定すれば、処理を終了する。
【0050】
このように、ABFラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。ここで、所定のタイミングとしては、データセットのABFラップの1往復分への書込みが終了した時点や、バッファ12に空き領域がなくなった時点等がある。但し、この第1の実施の形態において、再書込み時のテープドライブ10の動作は、現在のRABF機能で実現されている再書込み時の動作と同じであるので、詳しい説明は省略する。
【0051】
次いで、ABFラップからのデータ読出し時のテープドライブ10の動作を説明する。
図10は、データ読出し時のテープドライブ10の動作例を示したフローチャートである。尚、ABFラップからのデータ読出しは、通常ラップからのデータ読出しがエラーになった場合の復旧処理として実行されるものである。
動作が開始すると、まず、バッファ管理部42が、ABFラップからデータセットを読み出す(ステップ141)。具体的には、ヘッド位置管理部45に対し、読出しヘッド14bをABFラップに位置付けるための信号をヘッド位置制御システム17に出力すると共に、テープ走行管理部46に対し、テープ23を読出し時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、チャネル入出力部43が読出しヘッド14bを介してデータセットを読み出してバッファ管理部42に渡す。
【0052】
そして、バッファ管理部42は、データセットの読出しエラーが発生したかどうかを判定する(ステップ142)。ここでは、例えば、1回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【0053】
その結果、読出しエラーが発生したと判定されれば、バッファ管理部42からオフセット判定部44へ制御が移り、オフセット判定部44は、元のラップがラップ#51、#41、#13の何れかであるか判定する(ステップ143)。これは、ヘッド位置管理部45が保持するラップ切替え前のラップ番号に基づいて判定すればよい。その結果、元のラップがラップ#51、#41、#13の何れかであると判定されれば、ABFラップの番号が偶数であるかを判定する(ステップ144)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、偶数であれば、オフセット判定部44は、読出しヘッド14bをバンド中心側にオフセットする(ステップ145)。具体的には、ヘッド位置管理部45に対し、読出しヘッド14bをバンド中心側にオフセットさせるための信号をヘッド位置制御システム17に出力するよう指示する。
【0054】
その後、ヘッド位置管理部45からバッファ管理部42へ制御が移り、バッファ管理部42は、データセットを読み出す(ステップ146)。具体的には、テープ走行管理部46に対し、テープ23を読出し時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、チャネル入出力部43が読出しヘッド14bを介してデータセットを読み出してバッファ管理部42に渡す。
【0055】
そして、バッファ管理部42は、データセットの読出しエラーが発生したかどうかを判定する(ステップ147)。ここでは、例えば、1回目の読出しでエラーが発生した場合に、読出しの再試行を行い、それでも読出しエラーが発生したことをもって、読出しエラーが発生したものとしてもよい。具体的には、データセットのデコードが正常に行えるかどうかを検証すること等により、データセットの読出しエラーが発生したかどうかを判定する。
【0056】
その結果、読出しエラーが発生したと判定されれば、ホスト30にエラーを報告する(ステップ148)。具体的には、バッファ管理部42が、読出しを行えない旨をコマンド処理部41に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
一方、オフセット判定部44は、元のラップがラップ#51、#41、#13以外である場合や、ABFラップの番号が奇数である場合は、ホスト30にエラーを報告する(ステップ148)。具体的には、バッファ管理部42が、元のラップがラップ#51、#41、#13以外であることや、ABFラップの番号が奇数であることを示す情報をオフセット判定部44から受け取ってその旨をコマンド処理部41に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
【0057】
また、ステップ142やステップ147で読出しエラーが発生しなかった場合、バッファ管理部42は、データセットをホスト30に送る(ステップ149)。具体的には、チャネル入出力部43から受け取ったデータセットをバッファ12に蓄積し、ホスト30からの読出しコマンドに応じてデータセットをバッファ12から取り出し、ホスト30へ送る。
【0058】
[第2の実施の形態]
第2の実施の形態では、ABFラップ上に書かれたデータセットを上書きする可能性がある再書込み中に、ABFラップ上の各データセットの終端位置(End LPOS)を意識し、未だ元のラップに再書込みされていないデータを持つABFラップ上のデータセットが上書きされないようにする。
【0059】
即ち、テープドライブ10は、データセットが書き込まれた位置のラップ番号やLPOS情報、データセットに格納されたレコードやファイルマークの数を、リングバッファと呼ばれるDRAMに保持する。そして、ABFラップにデータセットを書いた時点、もしくは、ABFラップから元のラップに再書込みした時点で、リングバッファが持つ上記の情報を最新の情報に更新する。そして、一度ABFラップに書き込んだデータを元のラップに再書込みする際に、その最新の情報を参照し、再書込みを行ってよいかどうかを判断する。これにより、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐことができる。
【0060】
まず、このような動作を行うコントローラ16の機能構成について説明する。
図11は、コントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43と、ヘッド位置管理部45と、テープ走行管理部46と、書込み位置記憶部47と、書込み位置比較部48とを備える。
【0061】
このうち、コマンド処理部41、バッファ管理部42、チャネル入出力部43、ヘッド位置管理部45、テープ走行管理部46は、図7を参照して既に説明したので、ここでの詳細な説明は省略する。
【0062】
書込み位置記憶部47は、ヘッド位置管理部45が保持するデータセットを書き込んだ位置のラップ番号と、チャネル入出力部43が取得したデータセットを書き込んだ位置のLPOS情報とを、バッファ12で管理されるデータセットのデータセット番号に対応付けて記憶する。
【0063】
書込み位置比較部48は、ヘッド位置管理部45が保持するデータセットを書き込む位置のラップ番号が、書込み位置記憶部47にそのデータセットのデータセット番号に対応付けて記憶されたラップ番号と等しく、かつ、チャネル入出力部43が取得したデータセットを書き込む位置のLPOS情報が、書込み位置記憶部47にそのデータセットに対応付けて記憶されたLPOS情報と近いかどうかを判定する。そして、ラップ番号が等しくLPOS情報が近い場合は、データセットを書けない旨をバッファ管理部42に伝え、それ以外の場合は、データセットを書き込むようバッファ管理部42に指示する。本実施の形態では、データが読み出せなくなる程度に上書きされることを回避する処理を行う処理部の一例として、書込み位置比較部48を設けている。
【0064】
以下、テープドライブ10の具体的な動作を説明する。尚、ここでは、ラップ#51、#41、#13上でデータを書いているときにRABF機能が利用された場合にのみABFラップ上のデータセットが上書きされないように制御するものとする。
まず、フラッシュ発生時のテープドライブ10の動作を説明する。
図12は、フラッシュ発生時のテープドライブ10の動作例を示したフローチャートである。フラッシュは、例えば、バッファ12内のデータをテープ23上に書き込むことを指示する同期コマンドがホスト30から送られた場合や、バッファ12に空き領域がなくなった場合等に発生する。つまり、コマンド処理部41がホスト30から同期コマンドを受け付けたことをバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0065】
動作が開始すると、まず、バッファ管理部42は、ABFラップへの切替えをヘッド位置管理部45に指示し、ヘッド位置管理部45が、データの書込み先を通常ラップからABFラップに切り替える(ステップ151)。具体的には、書込みヘッド14aをABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0066】
次に、バッファ管理部42は、データセットを書き込む(ステップ152)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
【0067】
このとき、バッファ管理部42は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部45から取得し、データセットを書き込んだ位置のLPOS情報をチャネル入出力部43から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部47に記憶する(ステップ153)。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びLPOS情報のみを、データセット番号に対応付けて記憶するものとする。
【0068】
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ154)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ155)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0069】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ152〜155を繰り返し、ステップ154でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、2本のABFラップを使い切ったかどうかを判定する(ステップ156)。これは、例えば、ラップの切替え回数を記憶しておき、この切替え回数に基づいて判定するとよい。そして、2本のABFラップを使い切っていないと判定すれば、ヘッド位置管理部45は、ラップを切り替える(ステップ157)。具体的には、書込みヘッド14aをもう1つのABFラップに位置付けるための信号をヘッド位置制御システム17に出力する。また、2本のABFラップを使い切ったと判定すれば、処理を終了する。
【0070】
このように、ABFラップにデータセットが書き込まれると、その後の所定のタイミングで、通常ラップへのデータセットの再書込みが行われる。
図13は、この再書込み時のテープドライブ10の動作例を示したフローチャートである。ここで、所定のタイミングとしては、データセットのABFラップの1往復分への書込みが終了した時点や、バッファ12に空き領域がなくなった時点等がある。つまり、図12のステップ156でヘッド位置管理部45が2本のABFラップを使い切ったと判定した旨をバッファ管理部42が受け取った場合や、バッファ12が一杯になったことをバッファ管理部42が検知した場合に、この動作は開始する。
【0071】
動作が開始すると、まず、バッファ管理部42は、データセットの書込み位置を決定する(ステップ171)。例えば、1つ前のデータセットの終端から予め決められた長さだけ離れた位置を書込み位置として決定すればよい。
次に、バッファ管理部42から書込み位置比較部48へ制御が移り、書込み位置比較部48は、現在のラップがラップ#52、#10、#24の何れかであるか判定する(ステップ172)。これは、ヘッド位置管理部45が保持する現在のラップ番号に基づいて判定すればよい。そして、現在のラップがラップ#52、#10、#24の何れでもないと判定されれば、ステップ175へ進む。また、現在のラップがラップ#52、#10、#24の何れかであると判定されれば、書込み位置記憶部47からデータセットの番号に対応付けて記憶されたラップ番号とLPOS情報とを取り出す(ステップ173)。
【0072】
そして、書込み位置比較部48は、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号であり、かつ、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示しているかどうかを判定する(ステップ174)。ここでは、例えば、最大限エラーが発生したときのデータセットの長さを予め定めておき、書込み位置からその長さだけデータセットを書いたとして、LPOS情報に対応するデータセットの先端に到達する場合に、LPOS情報が書込み位置の近くを示していると判定すればよい。
【0073】
その結果、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号であり、かつ、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示していると判定した場合、書込み位置比較部48は、ホスト30にエラーを報告する(ステップ180)。具体的には、書込み位置比較部48が、書込みを行えない旨をバッファ管理部42に伝え、コマンド処理部41が、ホスト30に対してエラーを報告する。
【0074】
一方、ステップ173で取り出したラップ番号が元のラップに対するABFラップのラップ番号でないと判定した場合、又は、ステップ173で取り出したLPOS情報がステップ171で決定した書込み位置の近くを示していないと判定した場合、書込み位置比較部48は、バッファ管理部42に制御を渡し、バッファ管理部42が、データセットを書き込む(ステップ175)。具体的には、テープ走行管理部46に対し、テープ23を書込み時の速度で走行させるための信号をモータドライバ18に出力するよう指示する。また、バッファ12からデータセットを取り出してチャネル入出力部43に渡し、チャネル入出力部43が書込みヘッド14aを介してテープ23にデータセットを書き込む。
【0075】
このとき、バッファ管理部42は、データセットを書き込んだ位置のラップ番号をヘッド位置管理部45から取得し、データセットを書き込んだ位置のLPOS情報をチャネル入出力部43から取得し、データセット番号とこれらの情報とを対応付けて書込み位置記憶部47に記憶する(ステップ176)。尚、上述したように、フラッシュ時にはその時点でデータセットを構成するデータが揃っていなくてもABFラップに書き込み、次のフラッシュ時にはデータを追加して同じデータセットをABFラップに書き込む。このような場合は、最も多くのデータを含むデータセットを書き込んだ位置、つまり、最新の書込み位置のラップ番号及びLPOS情報のみを、データセット番号に対応付けて記憶するものとする。
【0076】
その後、バッファ管理部42は、バッファ12内にデータセットがあるかどうかを判定し(ステップ177)、バッファ12内にデータセットがあれば、同じラップにデータセットを書けるかどうかを判定する(ステップ178)。具体的には、チャネル入出力部43が取得した現在位置のLPOS情報に基づいて判定する。
【0077】
その結果、同じラップにデータセットを書けると判定すれば、バッファ管理部42は、ステップ171〜178を繰り返し、ステップ177でバッファ12内にデータセットがないと判定されれば、処理を終了する。
一方、同じラップにデータセットを書けないと判定すれば、バッファ管理部42は、ヘッド位置管理部45に制御を渡し、ヘッド位置管理部45が、ラップを切り替える(ステップ179)。具体的には、書込みヘッド14aを次の通常ラップに位置付けるための信号をヘッド位置制御システム17に出力する。
【0078】
尚、この第2の実施の形態では、ステップ153及び176において、データセットの書込みが終了した後に、データセットを書き込んだ位置のラップ番号及びLPOS情報を記憶するようにした。しかしながら、前回記憶したラップ番号及びLPOS情報を、データセットの書込みを開始するときに初期化する実装も考えられる。その場合は、データセットの書込みを開始する際に、ラップ番号及びLPOS情報をリングバッファの他の領域に複製しておく。そして、一度ABFラップに書き込んだデータを元のラップに再書込みする際に、その複製した情報を参照することにより、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされるのを防ぐようにするとよい。
【0079】
また、この第2の実施の形態では、ステップ174で上書きできないと判定した場合に、ホスト30にエラーを報告するようにしたが、判定後の処理はこれに限られない。例えば、ABFラップ上のデータセットの中で未だ元のラップに再書込みされていないデータを持つデータセットが上書きされない位置を探し、再書込みするデータセットをその位置に書き込むようにしてもよい。但し、この場合も、そのような位置が見つからなければ、ホスト30にエラーを報告することになる。
【0080】
ところで、本実施の形態では、図2に示したテープフォーマット、及び、図3に示した通常ラップの使用順序やABFラップ、ガードバンドラップの割り当てを前提とした。しかしながら、これらのテープフォーマットやラップの使用順序等でなくても、本実施の形態を適用することは可能である。
例えば、第1のデータが書き込まれる一時的な書込みのための第1のトラックと、第2のデータが書き込まれる一時的な書込みのための第2のトラックと、その後、第1のデータ及び第2のデータが書き込まれる通常の書込みのための第3のトラックと、第3のトラックの後に使用される通常の書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であれば、本実施の形態を適用することができる。
【0081】
また、第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、第1のトラックに第2のトラックとは反対の側で隣接する第1の方向への書込みのための第3のトラックと、第3のトラックの後に使用され、第2のトラックに第1のトラックとは反対の側で隣接する第2の方向への書込みのための第4のトラックと、第1のトラック及び第2のトラックに挟まれた中心領域とを少なくとも含むテープ媒体であっても、本実施の形態を適用することができる。
【0082】
尚、本実施の形態では、上記第1のデータの一例として、データセット#X+2を用い、上記第2のデータの一例として、データセット#X+5を用いている。また、上記第1の方向の一例として、順方向を用い、上記第2の方向の一例として、逆方向を用いている。更に、上記第1のトラックの一例として、ラップ#54を用い、上記第2のトラックの一例として、ラップ#55を用い、上記第3のトラックの一例として、ラップ#52を用い、上記第4のトラックの一例として、ラップ#53を用い、上記中心領域の一例として、バンド中心を用いている。
【0083】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0084】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【0085】
【図1】本発明の実施の形態が適用されるテープドライブの構成を示したブロック図である。
【図2】本発明の実施の形態で用いるテープのフォーマットを示した図である。
【図3】本発明の実施の形態で用いるテープにおける通常ラップの使用順序やABFラップの割り当てを示した図である。
【図4】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図5】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図6】本発明の実施の形態においてABFラップ上のデータセットが上書きされる問題を説明するための図である。
【図7】本発明の第1の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図8】本発明の第1の実施の形態におけるABFラップ上のデータセットが上書きされる問題の解決手法を示した図である。
【図9】本発明の第1の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図10】本発明の第1の実施の形態におけるデータ読出し時のテープドライブの動作例を示したフローチャートである。
【図11】本発明の第2の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図12】本発明の第2の実施の形態におけるフラッシュ時のテープドライブの動作例を示したフローチャートである。
【図13】本発明の第2の実施の形態における再書込み時のテープドライブの動作例を示したフローチャートである。
【符号の説明】
【0086】
10…テープドライブ、11…ホストI/F、12…バッファ、13…チャネル、14a…書込みヘッド、14b…読出しヘッド、15…モータ、16…コントローラ、17…ヘッド位置制御システム、18…モータドライバ
【特許請求の範囲】
【請求項1】
バッファに蓄積されたデータをテープ媒体に書き込む装置であって、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、
前記書込み部により前記第1の位置に書き込まれた前記第1のデータが、前記書込み部による前記第2の位置への前記第2のデータの書込み、及び、前記書込み部による前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
を含む、装置。
【請求項2】
前記第1のトラック及び前記第2のトラックは、バックヒッチを伴わない書込みのためのトラックである、請求項1の装置。
【請求項3】
前記第2のトラックは、前記第1のトラックに隣接する領域と、前記第3のトラックの後に使用される通常の書込みのための第4のトラックとに挟まれており、
前記処理部は、前記第1の位置に書き込まれた前記第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記第2の位置を、前記第2のトラック及び前記第4のトラックにまたがる位置に設定する処理を行う、請求項1の装置。
【請求項4】
前記第1のトラックからデータを読み出す要求に応じて、前記第1のトラックに隣接する領域から当該データを読み出す読出し部を更に含む、請求項3の装置。
【請求項5】
前記処理部は、前記第3の位置が前記第3のトラック及び前記第1のトラックにまたがる位置であることを条件として、前記第2の位置を、前記第2のトラック及び前記第4のトラックにまたがる位置に設定する処理を行う、請求項3の装置。
【請求項6】
前記処理部は、前記第1の位置に書き込まれた前記第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記書込み部により当該第1の位置に書き込まれた当該第1のデータが、前記書込み部による前記第3の位置への当該第1のデータの書込みにおいて上書きされるかどうかを、当該書込みに先立って判定する処理を行う、請求項1の装置。
【請求項7】
テープ媒体にデータを書き込む装置であって、
前記データを蓄積するバッファと、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込むための書込みヘッドと、
前記書込みヘッドを用いて前記第1の位置に書き込まれた前記第1のデータが、前記書込みヘッドを用いた前記第2の位置への前記第2のデータの書込み、及び、前記書込みヘッドを用いた前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラと
を含む、装置。
【請求項8】
バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、
第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、当該第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、当該第1のトラックに当該第2のトラックとは反対の側で隣接する当該第1の方向への書込みのための第3のトラックと、当該第3のトラックの後に使用され、当該第2のトラックに当該第1のトラックとは反対の側で隣接する当該第2の方向への書込みのための第4のトラックと、当該第1のトラック及び当該第2のトラックに挟まれた中心領域とを少なくとも含む前記テープ媒体に書き込まれるデータを取得する取得部と、
前記バッファに蓄積されたデータを前記テープ媒体に書き込むに当たって、前記書込みヘッドを、前記第1のトラック及び前記中心領域にまたがる位置、及び、前記第2のトラック及び前記第4のトラックにまたがる位置のうちの指定された位置に位置付け、その後、前記書込みヘッドを、前記第1のトラック及び前記第3のトラックにまたがる位置に位置付ける位置付け部と、
前記取得部により取得されたデータを前記書込みヘッドに出力することにより、当該データを、前記位置付け部により当該書込みヘッドが位置付けられた位置に書き込む書込み部と
を含む、装置。
【請求項9】
バッファに蓄積されたデータをテープ媒体に書き込む方法であって、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込むステップと、
前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込むステップと、
前記第1のデータが前記第1の位置に書き込まれ、かつ、前記第2のデータが前記第2の位置に書き込まれた後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込むステップと、
前記第1の位置に書き込まれた前記第1のデータが、前記第2の位置への前記第2のデータの書込み、及び、前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップと
を含む、方法。
【請求項10】
バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、
前記書込み部により前記第1の位置に書き込まれた前記第1のデータが、前記書込み部による前記第2の位置への前記第2のデータの書込み、及び、前記書込み部による前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
して機能させる、プログラム。
【請求項1】
バッファに蓄積されたデータをテープ媒体に書き込む装置であって、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、
前記書込み部により前記第1の位置に書き込まれた前記第1のデータが、前記書込み部による前記第2の位置への前記第2のデータの書込み、及び、前記書込み部による前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
を含む、装置。
【請求項2】
前記第1のトラック及び前記第2のトラックは、バックヒッチを伴わない書込みのためのトラックである、請求項1の装置。
【請求項3】
前記第2のトラックは、前記第1のトラックに隣接する領域と、前記第3のトラックの後に使用される通常の書込みのための第4のトラックとに挟まれており、
前記処理部は、前記第1の位置に書き込まれた前記第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記第2の位置を、前記第2のトラック及び前記第4のトラックにまたがる位置に設定する処理を行う、請求項1の装置。
【請求項4】
前記第1のトラックからデータを読み出す要求に応じて、前記第1のトラックに隣接する領域から当該データを読み出す読出し部を更に含む、請求項3の装置。
【請求項5】
前記処理部は、前記第3の位置が前記第3のトラック及び前記第1のトラックにまたがる位置であることを条件として、前記第2の位置を、前記第2のトラック及び前記第4のトラックにまたがる位置に設定する処理を行う、請求項3の装置。
【請求項6】
前記処理部は、前記第1の位置に書き込まれた前記第1のデータが読み出せなくなる程度に上書きされることを回避する処理として、前記書込み部により当該第1の位置に書き込まれた当該第1のデータが、前記書込み部による前記第3の位置への当該第1のデータの書込みにおいて上書きされるかどうかを、当該書込みに先立って判定する処理を行う、請求項1の装置。
【請求項7】
テープ媒体にデータを書き込む装置であって、
前記データを蓄積するバッファと、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込むための書込みヘッドと、
前記書込みヘッドを用いて前記第1の位置に書き込まれた前記第1のデータが、前記書込みヘッドを用いた前記第2の位置への前記第2のデータの書込み、及び、前記書込みヘッドを用いた前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うコントローラと
を含む、装置。
【請求項8】
バッファに蓄積されたデータを書込みヘッドによりテープ媒体に書き込む装置であって、
第1の方向へのバックヒッチを伴わない書込みのための第1のトラックと、当該第1の方向とは逆の第2の方向へのバックヒッチを伴わない書込みのための第2のトラックと、当該第1のトラックに当該第2のトラックとは反対の側で隣接する当該第1の方向への書込みのための第3のトラックと、当該第3のトラックの後に使用され、当該第2のトラックに当該第1のトラックとは反対の側で隣接する当該第2の方向への書込みのための第4のトラックと、当該第1のトラック及び当該第2のトラックに挟まれた中心領域とを少なくとも含む前記テープ媒体に書き込まれるデータを取得する取得部と、
前記バッファに蓄積されたデータを前記テープ媒体に書き込むに当たって、前記書込みヘッドを、前記第1のトラック及び前記中心領域にまたがる位置、及び、前記第2のトラック及び前記第4のトラックにまたがる位置のうちの指定された位置に位置付け、その後、前記書込みヘッドを、前記第1のトラック及び前記第3のトラックにまたがる位置に位置付ける位置付け部と、
前記取得部により取得されたデータを前記書込みヘッドに出力することにより、当該データを、前記位置付け部により当該書込みヘッドが位置付けられた位置に書き込む書込み部と
を含む、装置。
【請求項9】
バッファに蓄積されたデータをテープ媒体に書き込む方法であって、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込むステップと、
前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込むステップと、
前記第1のデータが前記第1の位置に書き込まれ、かつ、前記第2のデータが前記第2の位置に書き込まれた後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込むステップと、
前記第1の位置に書き込まれた前記第1のデータが、前記第2の位置への前記第2のデータの書込み、及び、前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行うステップと
を含む、方法。
【請求項10】
バッファに蓄積されたデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記バッファに蓄積された第1のデータを前記テープ媒体に書き込むに当たって、当該第1のデータを、一時的な書込みのための第1のトラック及び当該第1のトラックに隣接する領域にまたがる第1の位置に書き込み、前記バッファに蓄積された第2のデータを前記テープ媒体に書き込むに当たって、当該第2のデータを、一時的な書込みのための第2のトラック及び当該第2のトラックに隣接する領域にまたがる第2の位置に書き込み、その後、当該第1のデータ及び当該第2のデータを、通常の書込みのための第3のトラック及び当該第3のトラックに隣接する領域にまたがる第3の位置に書き込む書込み部と、
前記書込み部により前記第1の位置に書き込まれた前記第1のデータが、前記書込み部による前記第2の位置への前記第2のデータの書込み、及び、前記書込み部による前記第3の位置への前記第1のデータの書込みにおいて、読み出せなくなる程度に上書きされる、ことを回避する処理を行う処理部と
して機能させる、プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2010−40106(P2010−40106A)
【公開日】平成22年2月18日(2010.2.18)
【国際特許分類】
【出願番号】特願2008−202309(P2008−202309)
【出願日】平成20年8月5日(2008.8.5)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
【公開日】平成22年2月18日(2010.2.18)
【国際特許分類】
【出願日】平成20年8月5日(2008.8.5)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
[ Back to top ]