以下、実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のテープ装置を示す図である。テープ装置10は、テープドライブ11および制御部12を有する。
テープドライブ11には、磁気テープ1が格納される。テープドライブ11は、制御部12の制御の下で、磁気テープ1に対するデータの書き込みや、磁気テープ1からのデータの読み出しを実行する。磁気テープ1には、複数のトラックが形成されている。複数のトラックには、読み書きの方向が順方向のトラックと逆方向のトラックとが含まれる。
テープドライブ11は、あるトラックに順方向にデータを書き込み、次のトラックに逆方向にデータを書き込み、次のトラックに順方向にデータを書き込むというように、磁気テープ1上で磁気ヘッドを往復させながらデータの書き込みを実行する。また、テープドライブ11は、あるトラックに記録されたデータを順方向に読み出し、データ領域に端部で読み出し方向を反転して、次のトラックに記録されたデータを逆方向に読み出すというように、磁気テープ1上で磁気ヘッドを往復させながらデータの読み出しを実行する。
制御部12は、例えば、プロセッサである。プロセッサには、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含み得る。
制御部12は、磁気テープ1をその走行方向に分割した複数の分割領域を設定する。図1の例では、磁気テープ1の先頭側から順に分割領域2a,2bが設定されている。各分割領域は、例えば、同じ長さである。
制御部12は、分割領域2aを用いてデータを読み書きするようにテープドライブ11を制御する。これにより、テープドライブ11は、分割領域2a上で磁気ヘッドを往復させながらデータの読み書きを実行する。例えば、テープドライブ11は、図1の状態1のように、トラック1aの領域のうち分割領域2aに含まれる領域1a1に対して、データ3を順方向に書き込む。テープドライブ11は、領域1a1での書き込みを終了するための所定の条件が満たされると、書き込み方向を反転し、後続のデータ4をトラック1bの領域のうち分割領域2aに含まれる領域1b1に対して書き込む。
このように、1つの分割領域2aだけにデータが書き込まれることで、例えば磁気テープ1に記録するデータ量が磁気テープ1の最大容量より小さい場合に、データの読み出しにかかる時間を短縮できる。なぜなら、磁気テープ1全体にデータを書き込んだ場合より、データを読み出すための磁気ヘッドの位置付け量が小さくなり、データを短時間で読み出し可能となるからである。
また、制御部12は、分割領域2a内の各トラックで異常が発生したかを監視する。例えば、各トラックでの読み出しのリトライ回数、または書き込みのリトライ回数、またはそれらの合計値が所定の閾値を超えた場合に、異常が発生したと判定される。
制御部12は、例えば、トラック1bの領域1b1で異常が発生したと判定すると、このトラック1bをコピー対象として予約する。そして、制御部12は、所定のタイミングにおいて、予約されたトラック1bの領域1b1に記録されたデータ4を、同じトラック1bの領域のうち、分割領域2aに隣接する分割領域2bに含まれる領域1b2にコピーするように、テープドライブ11に指示する。これにより、図1の状態2のように、テープドライブ11は、領域1b1に記録されたデータ4を領域1b2にコピーする。
なお、領域1b1から領域1b2へのデータ4のコピーは、読み書き性能に影響を与えないようにするために、磁気テープ1の読み書きが実行されていない期間に実行されることが望ましい。例えば、制御部12が図示しないホスト装置などから磁気テープ1のアンマウントの指示を受け付けたときに、アンマウントを実行する前にデータ4のコピーが実行される。
ここで、状態1のように分割領域2aだけを用いてデータの読み書きが行われると、分割領域2a上でのみ磁気ヘッドが繰り返し往復し、分割領域2aが酷使される状態になる。このため、分割領域2a内のトラックで書き込みや読み出しのエラーが発生する確率が高くなり、それに伴って書き込みや読み出しのリトライが実行される回数が増加する。
例えば、トラック1bの領域1b1において読み出しのリトライ回数が増えるほど、領域1b1からのデータ読み出しにかかる時間が長くなる。これに対して、第1の実施の形態では、領域1b1で異常が発生したと判定されると、領域1b1に記録されているデータ4が領域1b1から領域1b2にコピーされる。領域1b2は、読み書きが実行された回数が領域1b1より少ないため、領域1b1より読み出しのリトライが発生する確率が低い。そのため、領域1b1の代わりに領域1b2からデータ4が読み出されることで、読み出しにかかる時間が増大することを抑制できる。
[第2の実施の形態]
図2は、第2の実施の形態のテープ装置のハードウェア例を示す図である。テープ装置100は、コントローラ110とテープドライブ120を有する。テープ装置100は、複数のテープドライブを有していてもよい。
コントローラ110は、ホスト装置200からの要求に応じたテープドライブ120に格納されるテープカートリッジ130に対するデータアクセス、テープ装置100内のハードウェアモジュールの動作などを制御する。
コントローラ110は、プロセッサ110a、RAM(Random Access Memory)110b、フラッシュメモリ110c、ホストインタフェース110d、ドライブインタフェース110eおよび読み取り装置110fを有する。
プロセッサ110aは、コントローラ110全体を統括的に制御する。プロセッサ110aは、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ110aは、マルチプロセッサであってもよい。プロセッサ110aは、CPU、DSP、ASIC、FPGAなどの2以上の要素の組合せであってもよい。
RAM110bは、テープ装置100の主記憶装置である。RAM110bは、プロセッサ110aに実行させるプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM110bは、プロセッサ110aによる処理に用いる各種データを記憶する。
フラッシュメモリ110cは、テープ装置100の補助記憶装置である。フラッシュメモリ110cには、アプリケーションプログラムおよび各種データが格納される。
ホストインタフェース110dは、ホスト装置200と通信を行うためのインタフェースである。ドライブインタフェース110eは、テープドライブ120と通信を行うためのインタフェースである。
読み取り装置110fは、可搬型の記録媒体140に記録されたプログラムやデータを読み取る装置である。記録媒体140として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDD(Hard Disk Drive)などの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体140として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置110fは、例えば、プロセッサ110aからの命令に従って、記録媒体140から読み取ったプログラムやデータをRAM110bまたはフラッシュメモリ110cに格納する。
テープドライブ120には、磁気テープが格納されたテープカートリッジ130が挿抜される。テープカートリッジ130は、カートリッジメモリ130aを有する。カートリッジメモリ130aには、テープカートリッジ130に関する様々な情報が記憶される。テープドライブ120は、テープカートリッジ130をマウントし、コントローラ110の制御の下で、マウントしたテープカートリッジ130内の磁気テープに対するデータの書き込みや、磁気テープからのデータの読み出しを行う。また、テープドライブ120は、マウントしたテープカートリッジ130のカートリッジメモリ130aに対するデータの書き込みや、カートリッジメモリ130aからのデータの読み出しを行うこともできる。例えば、テープドライブ120は、テープカートリッジ130のアンマウントが要求されると、磁気テープの残容量をカートリッジメモリ130aに記録した後、テープカートリッジ130をアンマウントする。
図3は、磁気テープの例を示す図である。本実施の形態では、例として、LTO Ultrium規格の磁気テープが使用される。LTO Ultrium規格の磁気テープは、5本のサーボバンドと4本のデータバンドを有する。各データバンドは、複数のトラックを有する。LTO Ultrium6の場合、磁気テープは、データバンドごとに544本ずつの合計2176本のトラックを有する。
また、LTO Ultrium規格では、順方向と逆方向の両方向に対して読み書きが行われる。さらに、LTO Ultrium規格では、データバンド内の複数のトラックが同時に読み書きされる。例えば、LTO Ultrium6の場合、1つのデータバンドに16本のトラックが同時に書き込まれ、磁気ヘッドが17往復することで合計544(16×2×17)本のトラックが1つのデータバンドに書き込まれる。ここで、同時に読み書きされる複数のトラック群を「WRAP」という。LTO Ultrium6の場合、1つのWRAPは16本のトラックによって構成される。
図4は、磁気テープのデータフォーマットを説明するための図である。この図4では、磁気テープ全体の記憶領域でのデータフォーマットを示す。なお、BOT(Beginning Of Tape)は磁気テープの始端を意味し、EOT(End Of Tape)は磁気テープの終端を意味する。実際には、磁気テープの最も始端側の位置にはBOTを示すラベルが記録され、磁気テープの最も終端側の位置にはEOTを示すラベルが記録されるが、図4ではこれらのラベルの図示を省略している。
磁気テープの先頭には、VOL(Volume)が記録される。VOLは、磁気テープにどのような情報が登録されているかなどの見出しとなる情報が記録されるラベルである。図4では、VOLの後にファイルMが書き込まれている例を示している。ファイルMの実データの記憶領域であるDAT(Data)の前には、HDR(Header)1、HDR2、TM(Tape Mark)が記録される。説明を分かりやすくするために、HDR2の後に記録されるTMをTM1とする。また、DATの後には、TM、EOF(End Of File)1、EOF2、TMが記録される。説明を分かりやすくするために、DATの後に記録されるTMをTM2、EOF2の後に記録されるTMをTM3とする。
HDR1およびHDR2は、ファイルの見出しを示すラベルである。TM1は、実データの始まりを示すマーカである。DATには、ファイルMの実データが一定サイズごとのデータブロックに分割されて書き込まれる。TM2は、実データの終わりを示すマーカである。EOF1およびEOF2は、ファイルの終わりを示すラベルである。TM3は、ファイルの終わりを示すマーカである。すなわち、HDR1からTM3までが、1つのファイルMに対応する記憶領域となる。
また、ファイルMの後に他のファイルが書き込まれずに書き込みが終了した場合、ファイルMに対応する記憶領域の後には、TM、EOD(End Of Data)が記録される。説明を分かりやすくするために、ファイルMに対応する記憶領域の後に記録されるTMをTM4とする。TM4は、データが格納された領域の終端を示すマーカである。EODは、データが格納された領域の終端を示すラベルである。
なお、BOT、VOL、HDR1、HDR2、EOF1およびEOF2の各ラベルは、80バイトである。TM1〜4は、10バイト未満のそれぞれ同一の容量である。
図5は、WRAP単位でのデータの書き込みおよび読み出しについて説明するための図である。なお、図示を省略するが、各WRAPの始端にはBOTを示すラベルがあらかじめ記録され、終端にはEOTを示すラベルがあらかじめ記録される。ここで言う「始端」「終端」とは、読み書き方向とは関係ない、磁気テープの物理的な始端および終端を指す。
LTO Ultrium規格では、BOTからEOTへの方向を示す順方向と、EOTからBOTへの方向を示す逆方向の両方向に対して、読み書きが行われる。したがって、WRAPには、順方向に読み書きが行われる「順方向WRAP」と、逆方向に読み書きが行われる「逆方向WRAP」とがある。図5の例では、WRAP131aは先頭のWRAPであり、順方向WRAPである。WRAP131bは2番目のWRAPであり、逆方向WRAPである。WRAP131cは3番目のWRAPであり、順方向WRAPである。すなわち、先頭から奇数番目のWRAPは順方向WRAPであり、偶数番目のWRAPは逆方向WRAPである。
なお、これ以後、WRAPにおける読み書き方向に対する始端および終端を、それぞれ「WRAP始端」「WRAP終端」と記載し、BOTおよびEOTがそれぞれ示す始端および終端と区別する。
WRAPには、読み出しの際に方向を反転させる位置であることを示す、WRAPマークというマーカが記録される。例えば、図5において、テープドライブ120は、WRAP131aに対する順方向のデータ書き込みを行っているとする。テープドライブ120は、書き込み位置がEOTから所定の長さの位置に達すると、WRAPマーク132aを書き込み、書き込み方向を反転させる。テープドライブ120は、次のWRAP131bにおけるWRAPマーク132aと同じ位置にWRAPマーク132bを書き込んだ後、WRAP131bに対する逆方向のデータ書き込みを行う。また、テープドライブ120は、書き込み位置がBOTから所定の長さの位置に達すると、WRAPマーク132cを書き込み、書き込み方向を反転させる。テープドライブ120は、次のWRAP131cにおけるWRAPマーク132cと同じ位置にWRAPマーク132dを書き込んだ後、WRAP131cに対する順方向のデータ書き込みを行う。
また、データ読み出しの際には次のような動作が行われる。例えば、図5において、テープドライブ120は、順方向に対してWRAP131aからのデータ読み出しを行っているとする。テープドライブ120は、WRAPマーク132aを検出すると、読み出し方向を反転し、WRAPマーク132bの位置を起点として逆方向に対してWRAP131bからデータ読み出しを行う。また、テープドライブ120は、WRAPマーク132cを検出すると、読み出し方向を反転し、WRAPマーク132dの位置を起点として順方向に対してWRAP131cからのデータ読み出しを行う。
なお、WRAPの書き込み方向または読み出し方向を反転することを、「WRAP反転」と記載する場合がある。上記のように、読み出しの際にはWRAPマークの検出に応じてWRAP反転が行われる。
ところで、磁気テープの書き込みモードの例として、128トラックモードと36トラックモードの2つのモードがある。128トラックモードは、書き込み可能なデータブロック数に制限がなく、磁気テープ全体にデータが書き込まれるモードである。一方、36トラックモードは、書き込み可能なデータブロック数に制限が設けられるモードである。例えば、書き込み可能なデータブロック数は、最大で400万ブロックである。これは、CMT(Cartridge Magnetic Tape)などの磁気テープの他の規格とデータフォーマットの互換性を持たせることを目的としたモードである。
LTO Ultrium規格の磁気テープに対して36トラックモードで書き込みが行われた場合、書き込みが許される最大のデータ量は、磁気テープに書き込み可能な最大データ量より小さい。このため、許される最大量のデータが書き込まれたとしても、一部のWRAPには未使用領域が残る。
ここで、36トラックモードで書き込み処理を行う場合の比較例について、図6、図7を用いて説明する。
図6は、36トラックモードでの第1の書き込み処理例を示す図である。
36トラックモードでの書き込み方法の例としては、先頭側のWRAPから順に、各WRAPのWRAP始端からWRAP終端までの全体を使用してデータを書き込む方法が考えられる。この場合、先頭側のWRAPでは、EOTまでデータが書き込まれることになる。しかし、読み出し対象のデータの位置がEOTに近いほど、そのデータの位置に磁気ヘッドを位置付けするためのテープ走行に長い時間が必要になり、データの読み出し開始までに時間がかかってしまう。また、データの終端が逆方向WRAPの途中となった場合、当該WRAPにおいては、本来短時間で位置付けが可能であるBOT側にはデータが書き込まれないことになる。このため、磁気ヘッドの位置付けのためのテープ走行に無駄な時間が使われてしまう。
そこで、WRAPの途中に反転位置を設定し、順方向WRAPの書き込みの際にはその反転位置で必ずWRAP反転する、という方法が考えられる。図6は、このような方法の例を示す。
この方法では、各順方向WRAPに共通の反転位置133aが設定される。反転位置133aは、例えば、BOTを起点として、制限された書き込み容量の上限を総WRAP数で除算して得られるデータ量に対応する位置に設定される。なお、反転位置133aは、例えば、このような計算式により求められた位置から、EOTより手前までの領域における所定の位置に設定されてもよい。
テープドライブ120は、コントローラ110からの指示に応じて次のような書き込み処理を行う。テープドライブ120は、順方向WRAPへの書き込み中に反転位置133aに達すると、順方向WRAPにWRAPマークを書き込み、WRAP反転を行う。テープドライブ120は、次の逆方向WRAPの反転位置133aにWRAPマークを書き込み、逆方向WRAPへの書き込みを継続する。
図6の例では、テープドライブ120は、WRAP134aに対する順方向への書き込み中に反転位置133aに達すると、WRAP134aにWRAPマーク135aを書き込み、WRAP反転を行う。テープドライブ120は、次のWRAP134bにおけるWRAPマーク135aと同じ位置にWRAPマーク135bを書き込み、WRAP134bに対する逆方向への書き込みを継続する。
この方法によれば、全てのWRAPにおいて、BOTから反転位置133aまでの領域にデータが書き込まれる。このため、読み出し時に磁気ヘッドが位置付けされる磁気テープの領域がBOTから反転位置133aまでに制限され、データ読み出し開始までにかかる時間が短縮される。また、データを追記する際にも、データの追記を開始する位置までの磁気ヘッドの位置付けにかかる時間が短縮され、短時間で追記を開始できる。また、反転位置133aを、前述した計算式によって求められた位置とした場合には、磁気ヘッドの位置付けにかかる時間を最小にすることができる。
しかしながら、この方法には次のような問題がある。図6に示すように、ある1つのファイルに対応するファイル領域300の途中で反転位置133aに達すると、WRAP反転が行われる。このファイルがデータブロックX1〜X12に分割され、データブロックX11の書き込み終了時点で反転位置133aに達したとすると、データブロックX11の次にWRAPマーク135aが書き込まれ、WRAP反転が行われる。次のWRAP134bでは、WRAPマーク135bが書き込まれた後、残りのデータブロックX12が逆方向に書き込まれる。
このような書き込みが行われた状態で、ファイル領域300内のファイルの読み出しが要求された場合、ファイルの読み出し途中でWRAP反転が発生してしまう。WRAP反転では、少なくとも磁気テープの走行停止と走行再開という動作が生じるため、ある程度の時間がかかる。このため、1つのWRAP内に全体が記録されたファイルを読み出す場合と比較して、ファイルの読み出しにかかる時間が大幅に長くなってしまう。
このような問題点を解決する方法として、次の図7に示すような方法が考えられる。
図7は、36トラックモードでの第2の書き込み処理例を示す図である。
テープドライブ120は、WRAP134aへのファイル領域300の書き込み途中で反転位置133aに達した場合、ファイル領域300の終端まで書き込みをそのまま継続する。テープドライブ120は、ファイル領域300の終端位置133bの次に、WRAPマーク135cを書き込み、WRAP反転を行う。テープドライブ120は、次のWRAP134bにおけるWRAPマーク135cと同じ位置にWRAPマーク135dを書き込む。もし次のファイルの書き込みが要求された場合、WRAP134bにおいてWRAPマーク135dに続いて逆方向にデータの書き込みが行われる。
これにより、テープドライブ120がファイル領域300のファイルを読み出す場合、ファイル領域300の読み出し途中でWRAP反転を行わなくて済む。そのため、WRAP反転にかかる時間だけ図6の場合より短時間にファイルを読み出すことができる。
しかしながら、図6,7の方法では、次のような問題がある。図6,7の方法では、読み出し時間を短くするために、BOTに近い領域が繰り返し利用される。繰り返し利用されることで、例えば、データを読み出す際にエラーが発生しやすくなる。すると、データを読み出すためのリトライが発生し、磁気テープからデータを読み出す時間が長くなる。
そこで、本実施の形態では、初期状態では、磁気テープにおける最もBOTに近い領域を用いて、図6または図7の方法によってデータの読み書きが実行される。また、各トラックでのリトライ数が計数され、あるトラックでのリトライ数が閾値を超えた場合、そのトラックがコピー対象として予約される。その後の所定のタイミングで、予約されたトラックに記録されているデータが、EOT側に隣接する領域内の同じトラックにコピーされる。コピー先のデータが、その後の読み出し対象となる。これにより、予約されたトラックからのデータ読み出し時にリトライが発生する確率が低減され、リトライの頻発によってデータ読み出しにかかる時間が増大することを抑制できる。
次に、図8〜10を用いて、本実施の形態における36トラックモードでの読み書き動作の具体例を説明する。なお、予約されたトラックからデータをコピーするタイミングは、例として、ホスト装置200からテープカートリッジ130のアンマウントが指示されたタイミングとする。ただし、データコピーのタイミングはこれに限定されない。例えば、ホスト装置200から磁気テープの読み書きが要求されない時間帯が特定される場合には、この時間帯にデータコピーが実行されてもよい。
また、図8〜10では、ファイル領域の始端に記録されるHDR1,HDR2,TM1、およびファイル領域の終端に記録されるTM2,EOF1,EOF2,TM3の図示を省略している。
図8は、アンマウント時のコピー処理の具体例を示す図である。図8において、WRAP136aは、順方向WRAPである。WRAP136bは、WRAP136aの次に読み書きの対象となる逆方向WRAPである。
本実施の形態では、磁気テープはそれぞれ容量が同じ複数の領域に分割される。以下、これらの領域を「分割テープ領域」と記載する。以下の説明では、例として、磁気テープは4つの分割テープ領域に分割されるものとする。このような分割により、各WRAPも4つの分割領域に分割される。以下の説明では、「分割領域」は、1つのWRAPの領域のうち、1つの分割テープ領域に含まれる領域を指す。
図8では、WRAP136aは4つの分割領域に分割され、分割領域136a1,136a2は、それぞれBOT側から第1番目の分割テープ領域、第2番目の分割テープ領域に属する。また、WRAP136bも4つの分割領域に分割され、分割領域136b1,136b2は、それぞれBOT側から第1番目の分割テープ領域、第2番目の分割テープ領域に属する。
初期状態では、BOT側から第1番目の分割テープ領域だけを用いて、図6または図7の方法によってデータが書き込まれる。ここで、図6の方法が用いられる場合、1つの分割領域の容量は、図6のWRAP134aにおけるBOTから反転位置133aまでの容量に設定される。したがって、例えば図8のWRAP136a,136bに図6の方法を用いてデータが書き込まれる場合、テープドライブ120は、分割領域136a1に順方向にデータを書き込み、分割領域136aのEOT側の末尾にWRAPマーク137aを書き込む。そして、テープドライブ120は、書き込み方向を反転し、分割領域136b1のEOT側の端部にWRAPマーク137bを書き込み、分割領域136b1に対して逆方向にデータを書き込む。
また、図7の方法が用いられる場合、1つの分割領域の容量は、図7のWRAP134aにおけるBOTから反転位置133aまでの容量に、所定の余剰容量が加算された容量に設定される。例えば図8のWRAP136a,136bに図6の方法を用いてデータが書き込まれる場合、テープドライブ120は、分割領域136a1に順方向にデータを書き込む。ファイルの書き込み中に標準反転位置138に達した場合には、テープドライブ120は、さらに順方向の書き込みを継続し、図8の上部に示すように、ファイル領域の端部の次にWRAPマーク137aを書き込む。ただし、ファイルの書き込み中に分割領域136a1の端部に達した場合には、その時点でWRAPマーク137aが書き込まれる。そして、テープドライブ120は、書き込み方向を反転し、分割領域136b1に対して、WRAPマーク137aを先頭として逆方向にデータを書き込む。
このようにして分割領域136a1,136b1に記録されたデータは、次のような処理によって読み出される。テープドライブ120は、分割領域136a1に書き込まれているデータを順方向に読み出し、WRAPマーク137aを検知するとWRAP反転を行う。WRAP反転後、テープドライブ120は、分割領域136b1に書き込まれているデータをWRAPマーク137bからWRAPマーク137cに向けて逆方向に読み出す。
ところで、テープドライブ120は、WRAPに対するデータの書き込みに失敗した場合、書き込みをリトライする。また、テープドライブ120は、WRAPからのデータの読み出しに失敗した場合、読み出しをリトライする。カートリッジメモリ130aには、読み出しのリトライ数と書き込みのリトライ数がWRAPごとに記録される。そして、テープドライブ120は、書き込みのリトライや読み出しのリトライを実行するたびに、カートリッジメモリ130a内の対応するリトライ数を増加させる。
本実施の形態では、コントローラ110は、WRAPごとの書き込みのリトライ数および読み出しのリトライ数を、カートリッジメモリ130aから取得する。そして、コントローラ110は、いずれかのリトライ数が所定の閾値を超えたか否かを判定する。ここで、WRAP136bでの書き込みまたは読み出しのリトライ数が閾値を超えたとする。この場合、コントローラ110は、WRAP136bをコピー対象として予約する。
上記のような読み出し処理の終了後、コントローラ110は、ホスト装置200からテープカートリッジのアンマウント指示を受信する。図8の下部は、アンマウント指示を受けた後に行われるコピー処理を示している。
コントローラ110は、テープドライブ120に、分割領域136b1に書き込まれているデータを、隣の分割領域136b2にコピーするように指示する。テープドライブ120は、分割領域136b1に書き込まれているデータを、隣の分割領域136b2にコピーする。この処理では、分割領域136b1全体のデータイメージが分割領域136b2にコピーされればよい。
次に、テープカートリッジ130が再マウントされてデータを読み出す場合について、具体例を用いて説明する。
図9は、再マウント後の読み出し処理の具体例を示す図である。コントローラ110は、ホスト装置200から読み出し要求を受信する。読み出し要求には、読み出し開始位置のデータブロックY1を示す情報が含まれている。
コントローラ110は、データブロックY1の位置を特定する。特定後、コントローラ110は、テープドライブ120に、磁気ヘッドをデータブロックY1の位置へ移動するように指示する。指示後、コントローラ110は、Readコマンドをテープドライブ120に発行する。
テープドライブ120は、コントローラ110からReadコマンドを受信すると、分割領域136a1からデータブロックY1を先頭として順方向にデータを読み出す。WRAPマーク137aが読み出されると、コントローラ110は、次のWRAP136bのどの分割領域にデータが記録されているかを判定する。WRAP136bのどの分割領域にデータが記録されているかを示す情報は、カートリッジメモリ130aに記録されている。コントローラ110は、WRAP136bの分割領域136b2にデータが記録されていると判定すると、分割領域136b2のWRAPマーク137bの位置に磁気ヘッドを移動させるように、テープドライブ120に指示する。
テープドライブ120は、磁気ヘッドをWRAPマーク137bの位置に移動させ、WRAPマーク137bの位置からWRAPマーク137cの位置まで逆方向にデータを読み出す。WRAPマーク137dが読み出されると、コントローラ110は、次のWRAP136cの分割領域136c1にデータが記録されていると判定する。そして、コントローラ110は、分割領域136c1のWRAPマーク137dの位置に磁気ヘッドを移動させるように、テープドライブ120に指示する。テープドライブ120は、磁気ヘッドをWRAPマーク137dの位置に移動させる。そして、テープドライブ120は、WRAPマーク137dの位置から順方向にデータを読み出す。
以上の図8,9の処理によれば、閾値を超える回数のリトライが発生した分割領域136b1に格納されていたデータが、隣接する分割領域136b2にコピーされる。分割領域136b2は、データの読み書きが実行されていない領域である。そのため、テープドライブ120が分割領域136b2からデータを読み出す場合、リトライが発生する可能性は低い。一方、分割領域136b1からのデータ読み出しを継続した場合、リトライ数が今後も増加する可能性が高い。よって、分割領域136b1からデータを読み出す場合と比べて、分割領域136b2からデータを読み出す方が、データの読み出し時間が短くなる可能性が高い。
また、分割領域136b1に格納されていたデータは、隣の分割領域136b2にコピーされる。隣の分割領域136b2にデータをコピーすることで、データを読み出す場合、磁気ヘッドを移動させる時間が短くて済む。よって、分割領域136b2以外のWRAP136bの分割領域にデータをコピーするよりも、分割領域136b2にデータをコピーした方が、データを読み出す時間を短縮できる。
さらに、分割領域136b1は劣化している可能性が高いので、分割領域136b1に記録されたデータが失われる可能性がある。上記のように分割領域136b1のデータを隣接領域にコピーすることで、データロストの可能性を低減できる。
次に、磁気テープにデータを追記する場合について、具体例を用いて説明する。
図10は、データの追記処理の具体例を示す図である。WRAP136d,136fは、順方向WRAPである。WRAP136eは、逆方向WRAPである。図10の上部に示すように、WRAP136dの分割領域136d1にデータが順方向に記録され、それに続けて、WRAP136eの分割領域136e1にデータが逆方向に記録され、書き込みが終了されたものとする。さらにその後、分割領域136e1でのリトライ数が閾値を超えて、分割領域136e1のデータが隣接する分割領域136e2にコピーされたものとする。また、分割領域136e2の途中までしかデータが書き込まれておらず、分割領域136eのBOT側の端部と分割領域136e内のEODとの間は離れている。
この状態で、ホスト装置200から新たなデータの書き込みが要求されたとする。コントローラ110は、テープドライブ120に、磁気ヘッドをEODの位置に移動するように指示する。テープドライブ120は、磁気ヘッドを分割領域136e内のEODの位置に移動させる。
テープドライブ120は、コントローラ110からの指示に応じて、EODの位置からデータの書き込みを開始する。このとき、新たなデータによってEODは上書きされる。テープドライブ120は、分割領域136eのBOT側の端部までデータを書き込むと、コントローラ110からの指示に応じて、分割領域136e2にWRAPマーク137eを書き込み、WRAP反転を行う。
このとき、次のWRAP136fにおけるデータの書き込み領域は、未使用の分割領域136f1ではなく、分割領域136e2と同じ分割テープ領域に属する分割領域136f2とされる。すなわち、テープドライブ120は、コントローラ110からの指示に応じて、分割領域136f2にWRAPマーク137gを書き込む。そして、テープドライブ120は、WRAPマーク137gの位置から順方向にデータの書き込みを行う。
このように、分割領域136e2にデータが書き込まれた後、分割領域136e2と同じ分割テープ領域に属する分割領域136f2にデータが書き込まれる。このような書き込みが行われることにより、WRAP136e,136fを跨いでデータを読み出す場合、WRAPマーク137eの位置でWRAP反転をするだけなので、磁気ヘッドを移動させる距離が短くて済む。よって、データの読み出し時間を短縮できる。
次に、コントローラ110について説明する。以下の説明では、図7に示した方法で書き込みが行われるものとする。
図11は、コントローラの機能例を示す図である。コントローラ110は、記憶部111、マウント制御部112、I/O(In/Out)制御部113および監視部114を有する。
記憶部111は、例えば、RAM110bまたはフラッシュメモリ110cに確保した記憶領域として実装される。記憶部111は、媒体仕様テーブル、媒体情報テーブルおよび書き込み管理テーブルを記憶する。
媒体仕様テーブルには、LTOの世代に対応するWRAP数などの仕様情報が登録される。媒体情報テーブルには、テープカートリッジ130のシリアル番号、残容量、WRAP毎に書き込み済みのデータ容量など、マウントされたテープカートリッジ130に関する情報が登録される。書き込み管理テーブルには、データ書き込み動作を制御するための管理情報が登録される。
マウント制御部112、I/O制御部113および監視部114は、例えば、プロセッサ110aが実行するプログラムのモジュールとして実装される。
マウント制御部112は、ホスト装置200からマウント指示を受け付けると、テープドライブ120にテープカートリッジ130をマウントするように指示する。また、マウント制御部112は、テープカートリッジ130をマウントした際に、分割領域のBOT側の端部から標準反転位置までのデータ容量を示す標準WRAP容量を算出する。標準反転位置とは、順方向WRAPにおける分割領域の途中においてWRAP反転を行う標準位置であり、書き込み動作の開始前に決定される。標準反転位置は、図7の反転位置133aに対応する。
マウント制御部112は、1つのWRAPを複数の領域に分割する。1つの分割領域の容量は、標準WRAP容量に余剰領域の容量を追加した容量である。
マウント制御部112は、ホスト装置200からアンマウント指示を受け付けると、コピー対象のWRAPを特定する。マウント制御部112は、特定したWRAPに書き込まれているデータを、当該データが書き込まれている分割領域に隣接する分割領域にコピーするように、テープドライブ120に指示する。テープドライブ120によるコピーが完了すると、マウント制御部112は、テープドライブ120にテープカートリッジ130をアンマウントするように指示する。
I/O制御部113は、ホスト装置200からI/O指示を受け付けると、マウントされたテープカートリッジ130内の磁気テープに対する、I/O指示に応じたI/O動作を行うように、テープカートリッジ130に指示する。ホスト装置200からのI/O指示には、書き込み指示と読み出し指示がある。書き込み指示には、ラベルの書き込み指示、マーカの書き込み指示、データブロックの書き込み指示などがある。
また、I/O制御部113の書き込み制御モードには、通常制御モードと高速制御モードとがある。通常制御モードとは、BOTからEOTまでの全体にデータを書き込むモードである。高速制御モードは、各WRAPにおいて、複数の分割領域のうちの1つだけを用いて読み書きが行われるモードである。高速制御モードは、読み出し時に磁気ヘッドの位置付けにかかる時間を低減して、読み出し性能を向上させる制御モードである。
36トラックモードでの書き込みでは、高速制御モードが選択される。I/O制御部113は、高速制御モードでの順方向WRAPでの書き込みでは、基本的に、分割領域内の標準反転位置で書き込み方向を反転するようにテープカートリッジ130を制御する。ただし、I/O制御部113は、ファイルの書き込み途中で標準反転位置に達した場合には、そのファイルに対応するファイル領域の終端まで順方向の書き込みを続行した後、書き込み方向を反転するようにテープカートリッジ130を制御する。
I/O制御部113は、アンマウント後に、テープドライブ120がテープカートリッジ130を再マウントすると、媒体情報テーブルを用いて、データの読み出し処理またはデータの書き込み処理を行う。
監視部114は、テープカートリッジ130のカートリッジメモリ130aから、WRAPごとのリトライ数を取得する。例えば、監視部114は、リトライ数をカートリッジメモリ130aから定期的に取得する。監視部114は、WRAPでのリトライの発生回数が閾値を超えるか否かを判定する。リトライ数が閾値以上の場合、監視部114は、当該WRAPをコピー対象に予約する。
図12は、媒体仕様テーブルの例を示す図である。媒体仕様テーブル111aは、記憶部111に格納される。媒体仕様テーブル111aは、世代、データ容量、トラック数およびデータバンドあたりのWRAP数の項目を含む。世代の項目には、LTOの世代が登録される。データ容量の項目には、磁気テープに記録可能なデータ量が登録される。トラック数の項目には、磁気テープ全体でのトラック数が登録される。データバンドあたりのWRAP数の項目には、1つのデータバンドに含まれるWRAP数が登録される。
例えば、媒体仕様テーブル111aには、世代が“LTO1”、データ容量が“100GB”、トラック数が“384”およびデータバンドあたりのWRAP数が“12”という情報が登録される。これは、LTO1(LTO Ultrium1)の場合、磁気テープに記録可能なデータ量が“100GB”であり、トラック数が“384”本で、データバンドあたりのWRAP数が“12”本であることを示す。
図13は、媒体情報テーブルの例を示す図である。媒体情報テーブル111bは、記憶部111に格納される。媒体情報テーブル111bは、世代、シリアル番号、テープ残容量および高速制御フラグの項目を含む。
世代の項目には、LTOの世代が登録される。シリアル番号の項目には、テープカートリッジ130のシリアル番号が登録される。テープ残容量の項目には、磁気テープの残容量が登録される。
高速制御フラグの項目には、高速制御モードに設定するか否かを示す情報が登録される。高速制御フラグの項目には、高速制御モードに設定することを示す“true”、または高速制御フラグに設定しないことを示す“false”のいずれかが登録される。また、テープカートリッジ130が未使用の場合、高速制御フラグの項目には、“false”または、“−(ハイフン)”のいずれかが登録される。
また、媒体情報テーブル111bにはさらに、WRAP情報が含まれる。WRAP情報は、対応するテープカートリッジ130内の磁気テープのWRAPごとに設けられる。各WRAP情報には、WRAP ID(identifier)、開始セクタ番号、先頭ブロックID、最終ブロックIDおよび書き込み容量の項目を含む。
WRAP IDの項目には、WRAPを識別する情報が登録される。開始セクタ番号の項目には、データの読み込みを開始する位置を示すセクタ番号が登録される。先頭ブロックIDの項目には、WRAP内の有効な分割領域に書き込まれているデータブロックのうち、先頭のデータブロックを示す情報が登録される。最終ブロックIDの項目には、WRAP内の有効な分割領域に書き込まれているデータブロックのうち、最終のデータブロックを示す情報が登録される。書き込み容量の項目には、WRAP内の有効な分割領域に書き込み済みのデータ容量が登録される。
ここで、有効な分割領域とは、読み書きの対象とされている分割領域である。例えば、WRAP上である分割領域から別の分割領域へのコピーが実行された場合、最後に実行されたコピーでのコピー先の分割領域が、有効な分割領域となる。また、有効な分割領域におけるデータ記録済み領域の先頭位置が、開始セクタ番号の項目に登録される。
なお、媒体情報テーブル111bと同じデータ構造の情報は、テープカートリッジ130のカートリッジメモリ130aにも記録される。カートリッジメモリ130aがテープドライブ120にマウントされると、コントローラ110は、カートリッジメモリ130aに記録された情報を読み込み、媒体情報テーブル111bとして記憶部111に記録する。また、コントローラ110は、媒体情報テーブル111bにおける情報の更新を、カートリッジメモリ130a内の対応する情報にも反映させる。また、テープドライブ120は、テープカートリッジ130をアンマウントする際に、カートリッジメモリ130a内のテープ残容量の項目を自分自身で更新する。
図14は、書き込み管理テーブルの例を示す図である。書き込み管理テーブル111cは、記憶部111に格納される。書き込み管理テーブル111cは、標準WRAP容量、方向フラグ、書き込み先WRAP IDおよび分割領域の容量の各項目を含む。
標準WRAP容量は、分割領域のBOT側の端部から標準反転位置までのWRAP上のデータ容量を示す。標準WRAP容量は、例えば、36トラックモードで書き込み可能な最大の容量とWRAP数との関係から求められる。図7の例では、標準反転位置は反転位置133aに対応し、標準WRAP容量はBOTから反転位置133aまでのWRAP134aにおけるデータ容量に対応する。方向フラグは、現在の書き込み方向を示すフラグ情報である。書き込み先WRAP IDは、現在の書き込み先のWRAPを識別する識別情報である。分割領域の容量は、標準WRAP容量に余剰領域の容量を追加した容量である。
図15は、リトライ数テーブルの例を示す図である。リトライ数テーブル130a1は、WRAPごとに作成されて、カートリッジメモリ130aに格納される。リトライ数テーブル130a1は、WRAP ID、読み出し時のリトライ数、書き込み時のリトライ数およびコピーフラグの各項目を含む。WRAP IDの項目には、WRAPを識別する情報が登録される。読み出し時のリトライ数の項目には、テープドライブ120が該当WRAPでの読み出し時にリトライした回数が登録される。書き込み時のリトライ数の項目には、テープドライブ120が該当WRAPでの書き込み時にリトライした回数が登録される。コピーフラグの項目には、コピーを実行するか否かを示す情報が登録される。コピーフラグの項目には、コピーを実行する(すなわち、コピー対象として予約されている)ことを示す“true”、またはコピーを実行しないことを示す“false”のいずれかが登録される。
なお、データの読み出しまたはデータの書き込みでリトライが実行されると、テープドライブ120は、リトライ数テーブル130a1内の該当するリトライ数をインクリメントする。コントローラ110は、リトライ数テーブル130a1に記録された情報を例えば定期的に読み込み、リトライ数が閾値を超えたWRAPがあるかを判定する。
図16は、マウント時の処理例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。図16の処理は、ホスト装置200からマウント指示をマウント制御部112が受け付けることにより始まる。また、マウント制御部112は、ホスト装置200から書き込みモードの指定を受け付ける。
(S11)マウント制御部112は、テープドライブ120にテープカートリッジ130をマウントするように指示する。これにより、テープドライブ120は、テープカートリッジ130をマウントする。
(S12)マウント制御部112は、ホスト装置200から36トラックモードの書き込み指示を受けているか否かを判定する。36トラックモードの指示を受けている場合、処理をステップS13に進める。36トラックモードの指示を受けていない場合、処理をステップS21に進める。
(S13)マウント制御部112は、テープドライブ120にカートリッジメモリ130aに記録されている情報を取得するように指示する。取得する情報は、世代、シリアル番号、テープ残容量、高速制御フラグ、WRAP IDおよびWRAPごとの書き込み容量である。マウント制御部112は、取得した情報を媒体情報テーブル111bに登録する。
(S14)マウント制御部112は、媒体情報テーブル111bの高速制御フラグを参照し、高速制御フラグが“true”であるか否かを判定する。“true”の場合、処理をステップS17に進める。“false”の場合、処理をステップS15に進める。
(S15)マウント制御部112は、テープカートリッジ130が未使用であるか否かを判定する。具体的には、マウント制御部112は、媒体情報テーブル111bの世代に対応するデータ容量を媒体仕様テーブル111aから特定する。マウント制御部112は、特定したデータ容量が、媒体情報テーブル111bのテープ残容量と一致する場合に、未使用と判定する。未使用の場合、処理をステップS16に進める。未使用でない場合、処理をステップS21に進める。
(S16)マウント制御部112は、媒体情報テーブル111bの高速制御フラグに“true”を登録する。
(S17)マウント制御部112は、媒体情報テーブル111bの高速制御フラグが“true”であるため、高速制御モードで書き込みを実行することを決定する。
(S18)マウント制御部112は、標準WRAP容量を算出する。マウント制御部112は、算出した標準WRAP容量を、書き込み管理テーブル111cの標準WRAP容量の項目に登録する。
標準WRAP容量は、次のような方法によって算出される。例えば、データブロックのサイズを32KBとした場合、36トラックモードで書き込める最大容量は、128GB(32KB×400万データブロック)である。標準WRAP容量は、“128GB/総WRAP数”という式により算出される。総WRAP数は、“データバンドあたりのWRAP数×データバンドの数”という式により算出される。ここで、データバンドあたりのWRAP数およびデータバンドの数は、媒体仕様テーブル111aのレコードのうち、媒体情報テーブル111bの世代に対応するレコードの情報に基づいて得られる。例えば、世代がLTO4の場合、標準WRAP容量は、“128GB/(14×4)”(約2.3GB)となる。
標準WRAP容量は、分割領域のBOT側の端部から標準反転位置までの順方向WRAP上の容量を示す。したがって、上記の計算により、マウントされたテープカートリッジ130の世代にあった標準反転位置を算出することができる。算出された標準反転位置は、36トラックモードで書き込み可能な最大容量のデータを高速制御モードで磁気テープに書き込んだ際に、BOTに最も近い反転位置を示す。このような標準反転位置を、順方向WRAPの分割領域への書き込み時にWRAP反転すべきかを判定するための基準位置(図7の反転位置133aに対応)として使用することで、WRAP反転の位置を可能な限りBOTに近づけることができる。その結果、書き込まれたデータの読み出し時間を短縮することができる。
なお、標準WRAP容量は、36トラックモードで書き込み可能な最大容量と、磁気テープの仕様とから決まる。このため、例えば、標準WRAP容量は、磁気テープの世代ごとに媒体仕様テーブル111aにあらかじめ登録されていてもよい。この場合、ステップS18では、マウント制御部112は、上記のような計算を行わずに、媒体仕様テーブル111aから、マウントされた磁気テープの世代に対応する標準WRAP容量を取得することができる。
(S19)マウント制御部112は、WRAP毎に、1つのWRAPを複数の分割領域に分割する。
分割領域の容量は次のような方法によって算出される。例えば、世代がLTO4の場合、初めに、マウント制御部112は、標準WRAP容量に余剰領域の容量を追加する。余剰領域は、例えば、標準WRAP容量の約30%である。余剰領域を追加するのは、例えば、図7で示したように反転位置133aを超えて終端位置133bまでデータが書き込まれる可能性があるからである。標準WRAP容量を有する領域に余剰領域を追加した領域が、1つの分割領域になる。1つの分割領域の容量は、標準WRAP容量(2.3GB)に余剰領域(約0.7GB)を加えた容量(3GB)である。マウント制御部112は、分割領域の容量を、書き込み管理テーブル111cの分割領域の容量の項目に登録する。
次に、マウント制御部112は、WRAP単位の容量を算出する。WRAP単位の容量は、“800GB/(14×4)”(約14.3GB)となる。この後、マウント制御部112は、WRAPをBOT側から4つ(14.3GB/3GB)の分割領域に分割する。
(S20)マウント制御部112は、1つの分割領域のセクタ数を算出する。例えば、1つのセクタの容量をSEとした場合、1つの分割領域のセクタ数は、“3GB/SE”となる。これにより、各分割領域が、セクタ番号で対応付けられる。そして、処理を終了する。
(S21)マウント制御部112は、媒体情報テーブル111bの高速制御フラグが“false”であるため、通常制御モードで書き込みを実行することを決定する。そして、処理を終了する。
次に、図17,18では、書き込み時の処理例を説明する。また、図17,18の処理は、ホスト装置200から書き込み指示を受信するたびに実行される。書き込み指示には、ラベルの書き込み指示、マーカの書き込み指示、ファイルが分割されたデータブロックの書き込み指示などがある。
図17は、書き込み時の処理例(その1)を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(S31)I/O制御部113は、媒体情報テーブル111bの高速制御フラグを参照し、通常制御モードで書き込みを実行するか否かを判定する。高速制御フラグが“false”の場合、通常制御モードで実行すると判定される。通常制御モードで実行する場合、処理をステップS32に進める。高速制御モードで実行する場合、処理をステップS35に進める。
(S32)I/O制御部113は、テープカートリッジ130が使用済み媒体であるが、書き込み済みのデータを破棄して新規の書き込みを行うか否かを判定する。例えば、I/O制御部113は、図16の処理の終了後から図17の処理の直前で磁気テープが完全に巻き戻された場合に、新規書き込みを行うと判定して、処理をステップS33に進める。図17の処理の直前で巻き戻しが行われていない場合、処理をステップS35に進める。なお、例えば、巻き戻しが行われた際に記憶部111内の所定のフラグを“1”に設定し、ステップS32ではこのフラグに基づいて巻き戻しが行われたかが判定されてもよい。
(S33)I/O制御部113は、媒体情報テーブル111bの高速制御フラグに“true”を登録し、高速制御モードで書き込みを実行することを決定する。また、I/O制御部113は、媒体情報テーブル111bの全WRAP情報における書き込み容量を“0”に設定し、全WRAP情報をリセットする。
(S34)I/O制御部113は、標準WRAP容量を算出し、書き込み管理テーブル111cに登録する。算出方法は、ステップS18と同じである。
また、I/O制御部113は、分割領域の容量を算出し、書き込み管理テーブル111cに登録する。算出方法は、ステップS19と同じである。
(S35)I/O制御部113は、媒体情報テーブル111bの高速制御フラグを参照し、高速制御モードで書き込みを実行するかを判定する。高速制御モードで実行する場合、処理をステップS36に進める。通常制御モードで実行する場合、処理をステップS41に進める。
(S36)I/O制御部113は、ホスト装置200から書き込みが指示されているデータ(ラベル、マーカ、データブロックのいずれか)を書き込み可能か否かを判定する。具体的には、I/O制御部113は、媒体情報テーブル111bの全WRAP情報を参照し、各WRAPの書き込み容量を全て加算した総容量を算出する。I/O制御部113は、36トラックモードで書き込み可能な最大容量である128GBから当該総容量を減算した容量よりも、ホスト装置200から書き込みが指示されているデータの容量の方が小さいか否かを判定する。当該データの容量の方が小さい場合、処理をステップS37に進める。当該データの容量の方が大きい場合、書き込み済みのデータ量がすでに限度に達している。そのため、I/O制御部113は、当該データをテープカートリッジ130に書き込めない旨の通知をホスト装置200に送信する。そして、処理を終了する。
(S37)I/O制御部113は、テープカートリッジ130をマウントした後の最初の書き込みか否かを判定する。最初の書き込みの場合、処理をステップS38に進める。最初の書き込みでない場合、処理をステップS41に進める。
(S38)I/O制御部113は、書き込み方向が順方向か否かを判定する。具体的には、I/O制御部113は、次の式(1)の計算を行う。
媒体情報テーブル111bのテープ残容量/WRAPの容量・・・(1)
式(1)のWRAPの容量は、媒体仕様テーブル111aのレコードのうち、媒体情報テーブル111bの世代に対応するレコードの情報に基づいて、“データ容量/(データバンド数×データバンドあたりのWRAP数)”という式によって算出される。
式(1)の商は、データがまったく書き込まれていない残りWRAP数を示す。残りWRAP数が奇数の場合、現在の書き込み方向は順方向であり、残りWRAP数が偶数の場合、現在の書き込み方向は逆方向と判定される。
I/O制御部113は、書き込み管理テーブル111cの方向フラグに、書き込み方向の判定結果に応じた値を設定する。例えば、I/O制御部113は、書き込み方向が順方向の場合、方向フラグを「0」に設定し、書き込み方向が逆方向の場合、方向フラグを「1」に設定する。
(S39)I/O制御部113は、現在の書き込み先のWRAPを判定する。上記の式(1)の商をQとすると、最後から(Q+1)番目のWRAPが現在の書き込み先のWRAPと判定される。I/O制御部113は、判定された現在の書き込み先のWRAPを示すIDを、書き込み管理テーブル111cの書き込み先WRAP IDの項目に登録する。この後、処理をステップS41に進める。
図18は、書き込み時の処理例(その2)を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(S41)I/O制御部113は、ホスト装置200から指示されたデータの書き込みを指示するためのWriteコマンドをテープドライブ120に発行する。テープドライブ120は、ホストから書き込みが指示されたラベル、マーカ、データブロックのいずれかをテープカートリッジ130の磁気テープに書き込む。テープドライブ120は、現在の書き込み方向が順方向であれば、指示されたデータを順方向に書き込み、現在の書き込み方向が逆方向であれば、指示されたデータを逆方向に書き込む。
なお、テープドライブ120は、指示されたデータの書き込みが完了した位置がBOTまたはEOTまで所定容量の位置である場合には、当該位置にWRAPマークを記録してWRAP反転を行う。テープドライブ120は、次のWRAPの同じ位置にもWRAPマークを記録し、次のWriteコマンドを待つ。
(S42)I/O制御部113は、媒体情報テーブル111bにおける現在の書き込み先WRAPに対応するWRAP情報を特定する。I/O制御部113は、特定したWRAP情報の分割領域の書き込み容量に、ステップS41のコマンド発行によって磁気テープに書き込まれた書き込みデータ量(ラベル、マーカ、データブロックのいずれかの容量)を加算し、WRAP情報の書き込み容量を更新する。
また、I/O制御部113は、ステップS41でデータブロックの書き込みが指示された場合、媒体情報テーブル111bにおける現在の書き込み先WRAPに対応するWRAP情報の最終ブロックIDとして、書き込みが指示されたブロックのIDを登録する。さらに、I/O制御部113は、ステップS41でデータブロックの書き込みが指示され、かつ、媒体情報テーブル111bにおける現在の書き込み先WRAPに対応するWRAP情報の先頭ブロックIDが登録されていない場合は、書き込みが指示されたブロックのIDを先頭ブロックIDとして登録する。
(S43)I/O制御部113は、ステップS41でのコマンド発行によってテープドライブ120でWRAP反転が発生したか否かを判定する。
具体的には、書き込み管理テーブル111cの方向フラグが逆方向を示す場合、I/O制御部113は、ステップS42で更新した分割領域の書き込み容量と、1つ前のWRAPに対応するWRAP情報に登録された分割領域の書き込み容量との差分を算出する。I/O制御部113は、算出された差分が、BOTに近づいたかを判定するための所定の閾値以下の場合に、WRAP反転が発生したと判定する。
WRAP反転が発生した場合、処理をステップS44に進める。WRAP反転が発生していない場合、処理をステップS45に進める。
(S44)I/O制御部113は、書き込み管理テーブル111cの方向フラグを他方の値に更新する。また、I/O制御部113は、書き込み管理テーブル111cの書き込み先WRAP IDを、次のWRAPのIDに更新する。
(S45)I/O制御部113は、媒体情報テーブル111bの高速制御フラグを参照し、高速制御モードか否かを判定する。高速制御モードの場合、処理をステップS46に進める。通常制御モードの場合、処理を終了する。
(S46)I/O制御部113は、分割領域の末尾に近づいたか否かを判定する。書き込み方向が順方向の場合、I/O制御部113は、ステップS42で更新した分割領域の書き込み容量と、書き込み管理テーブル111cの分割領域の容量との差分を算出する。I/O制御部113は、算出された差分がWRAPマーク1つの容量に対応する所定量以下の場合に、分割領域の末尾に近づいたと判定する。また、書き込み方向が逆方向の場合、I/O制御部113は、ステップS43で算出した差分がWRAPマーク1つの容量に対応する所定量以下の場合に、分割領域の末尾に近づいたと判定する。
分割領域の末尾まで書き込みされた場合、処理をステップS50に進める。分割領域の末尾まで書き込みされていない場合、処理をステップS47に進める。
なお、現在の書き込み方向が逆方向であり、かつ、BOTに最も近い分割領域への書き込み中である場合には、ステップS46からは無条件にステップS47に進められる。
(S47)I/O制御部113は、ファイルの領域の終端か否かを判定する。具体的には、I/O制御部113は、ステップS41で発行したWriteコマンドがTM3の書き込みを指示するものであったか否かを判定する。TM3の書き込み指示であった場合、ファイルの領域の終端であると判定される。ファイルの領域の終端の場合、処理をステップS48に進める。ファイルの領域の終端でない場合、処理を終了する。
(S48)I/O制御部113は、書き込み管理テーブル111cの方向フラグに基づいて、現在の書き込み方向を判定する。書き込み方向が順方向の場合、処理をステップS49に進める。書き込み方向が逆方向の場合、処理を終了する。
(S49)I/O制御部113は、書き込み位置が標準反転位置に達したか否かを判定する。具体的には、I/O制御部113は、媒体情報テーブル111bのWRAP情報の中から、書き込み管理テーブル111cの書き込み先WRAP IDに対応するWRAP情報を特定する。I/O制御部113は、書き込み管理テーブル111cの標準WRAP容量から、特定したWRAP情報の書き込み容量を減算する。減算結果が0の場合は、標準反転位置までデータが書き込まれていることを示す。減算結果がマイナスの場合は、標準反転位置を超えてデータが書き込まれていることを示す。これらのケースでは、書き込み位置が標準反転位置に達したと判定して、処理をステップS50に進める。一方、減算結果が0より大きい場合、書き込み位置が標準反転位置まで達していないと判定して、処理を終了する。
(S50)I/O制御部113は、WRAPマークの書き込みを指示するWriteコマンドをテープドライブ120に発行する。Writeコマンドを受信したテープドライブ120は、現在書き込み中のWRAPが順方向WRAPの場合、順方向WRAPにWRAPマークを書き込み、書き込み方向を反転して、次の逆方向WRAPにもWRAPマークを書き込む。また、テープドライブ120は、現在書き込み中のWRAPが逆方向WRAPの場合、逆方向WRAPにWRAPマークを書き込み、書き込み方向を反転して、次の順方向WRAPにもWRAPマークを書き込む。いずれの場合でも、次のWRAPの分割領域のうち、現在書き込み中の分割領域と同じ分割テープ領域に属する分割領域に対して、WRAPマークが書き込まれる。
(S51)I/O制御部113は、書き込み管理テーブル111cの方向フラグを更新する。また、I/O制御部113は、書き込み管理テーブル111cの書き込み先WRAP IDを、次のWRAPのIDに更新する。
また、I/O制御部113は、媒体情報テーブル111bに次のWRAPの開始セクタ番号を登録する。例えば、次のWRAPの開始セクタ番号は、ステップS50で次のWRAPに書き込んだWRAPマークの位置である。そして、処理を終了する。
なお、高速制御モードでデータを記録済みのテープカートリッジ130がマウントされ、マウント直後にデータが追記される場合には、次のような処理が実行される。まず、テープカートリッジ130がマウントされると、マウント制御部112は、テープカートリッジ130のカートリッジメモリ130aから情報を読み出す。マウント制御部112は、読み出した情報に基づいて媒体情報テーブル111bを作成し、記憶部111に登録する。さらに、マウント制御部112は、図16のステップS18、S19の手順で、書き込み管理テーブル111cの項目のうち、標準WRAP容量および分割領域の容量を登録する。また、マウント制御部112は、図16のステップS20の手順で分割領域のセクタ数を算出する。
次に、I/O制御部113は、ホスト装置200から追記の指示を受けると、媒体情報テーブル111bのWRAP情報に基づいて、追記の開始位置を特定する。I/O制御部113は、テープドライブ120にLocateコマンドを発行して、磁気ヘッドを追記の開始位置、すなわちEODの位置に移動させる。これとともに、I/O制御部113は、書き込み管理テーブル111cに方向フラグと書き込み先WRAP IDを登録する。そして、I/O制御部113は、図18のステップS41以降の処理を実行して、最初のWriteコマンドを発行する。それ以後、追記が終了するまで図17,18の処理が繰り返される。
次に、コピー判定処理について説明する。コピー判定処理は、図17,18の書き込み処理や、図21,22に示す読み出し処理と並行して実行される。
図19は、コピー判定処理の例を示すフローチャートである。図19の処理は、例えば、一定時間間隔で実行される。また、テープドライブ120は、リトライが発生した数をカートリッジメモリ130aに記録する。以下、図19に示す処理をステップ番号に沿って説明する。
(S61)監視部114は、テープドライブ120に、カートリッジメモリ130aに記録されているリトライ数テーブル130a1の情報を取得するように指示する。取得する情報は、WRAP ID、読み出し時のリトライ数および書き込み時のリトライ数である。監視部114は、これらの情報をテープドライブ120から取得する。
(S62)監視部114は、取得した情報に基づいて、読み出し時のリトライ数と書き込み時のリトライ数のいずれかが閾値を超えたWRAPがあるか否かを判定する。このようなWRAPが1つ以上存在する場合、処理をステップS63に進める。このようなWRAPが存在しない場合、処理を終了する。
なお、読み出し時のリトライ数と書き込み時のリトライ数のいずれかが閾値を超えたWRAPが複数存在する場合、ステップS63以降の処理はこれらのWRAPごとに実行される。
また、ステップS62では、監視部114は、読み出し時のリトライ数と書き込み時のリトライ数との合算値を閾値と比較してもよい。
(S63)監視部114は、36トラックモードであるか否かを判定する。36トラックモードの場合、処理をステップS64に進める。36トラックモードでない場合、処理を終了する。
(S64)監視部114は、媒体情報テーブル111bを参照し、高速制御フラグがtrueであるか否かを判定する。trueの場合、処理をステップS65に進める。falseの場合、処理を終了する。
(S65)監視部114は、ステップS62の条件に合致するWRAP(対象WRAP)に対応するリトライ数テーブル130a1のコピーフラグにtrueを設定するように、テープドライブ120に指示する。これによって、リトライ数テーブル130a1のコピーフラグが更新される。
このように、リトライ数が閾値を超えた場合、リトライが発生している分割領域の品質が低下していると判断できる。そして、品質が低下している分割領域を有するWRAPがコピー対象に予約される。
次に、アンマウント処理について説明する。アンマウント処理は、ホスト装置200からアンマウント指示をコントローラ110が受信することで開始される。
図20は、アンマウント処理の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
(S71)マウント制御部112は、36トラックモードであるか否かを判定する。36トラックモードの場合、処理をステップS72に進める。36トラックモードでない場合、処理をステップS79に進める。
(S72)マウント制御部112は、媒体情報テーブル111bを参照し、高速制御フラグがtrueであるか否かを判定する。trueの場合、処理をステップS73に進める。falseの場合、処理をステップS79に進める。
(S73)マウント制御部112は、テープドライブ120に、カートリッジメモリ130aに格納されているリトライ数テーブル130a1の情報を取得するように指示する。具体的には、各リトライ数テーブル130a1のWRAP IDとコピーフラグとを取得するように指示される。マウント制御部112は、テープドライブ120から、各リトライ数テーブル130a1に登録されたWRAP IDとコピーフラグとを取得する。
マウント制御部112は、取得した情報に基づいて、コピーフラグがtrueであるWRAPが存在するか否かを判定する。存在する場合、処理をステップS74に進める。存在しない場合、処理をステップS79に進める。
(S74)マウント制御部112は、コピーフラグがtrueであるWRAPを1つ選択する。
(S75)マウント制御部112は、媒体情報テーブル111bのWRAP情報のうち、ステップS74で選択したWRAPに対応するWRAP情報を参照する。マウント制御部112は、WRAP情報に登録された開始セクタ番号と、分割領域の容量およびWRAPの容量とに基づいて、選択したWRAPで読み書きの対象となっている分割領域を特定する。マウント制御部112は、特定した分割領域に対してEOT側に隣接する分割領域があるか否かを判定する。隣接する分割領域がある場合、処理をステップS76に進める。隣接する分割領域がない場合、処理をステップS78に進める。
(S76)マウント制御部112は、特定した分割領域からデータを読み出すようにテープドライブ120に指示する。この指示では、特定した分割領域の先頭のセクタ番号から末端のセクタ番号までの読み出しが指示される。これにより、マウント制御部112は、特定した分割領域のデータイメージを取得する。
次に、マウント制御部112は、取得したデータイメージを、隣接する分割領域に書き込むようにテープドライブ120に指示する。この指示では、隣接する分割領域の先頭のセクタ番号から末端のセクタ番号までの書き込みが指示される。これにより、特定した分割領域全体の内容が、隣接する分割領域にコピーされる。
(S77)マウント制御部112は、隣接する分割領域においてデータが記録された先頭位置のセクタ番号によって、媒体情報テーブル111bの該当WRAPのWRAP情報内の開始セクタ番号を更新する。この処理では、WRAP情報に登録されていた開始セクタ番号に、1つの分割領域の大きさを示すセクタ数が加算される。
また、マウント制御部112は、カートリッジメモリ130aのリトライ数テーブル130a1を更新するようにテープドライブ120に指示する。具体的には、該当WRAPに対応するリトライ数テーブル130a1において、読み出し時および書き込み時の各リトライ数を0にリセットし、コピーフラグを0に更新するように指示される。テープドライブ120は、指示に応じて、該当WRAPに対応するリトライ数テーブル130a1を更新する。
(S78)マウント制御部112は、コピーフラグがtrueであるWRAPを全て選択したか否かを判定する。全て選択した場合、処理をステップS79に進める。全て選択していない場合、処理をステップS74に進める。
(S79)マウント制御部112は、テープドライブ120にアンマウントを指示する。そして、処理を終了する。これにより、テープカートリッジ130がアンマウントされる。
このように、書き込み処理や読み出し処理が発生しないアンマウント時にコピー処理を実行することで、書き込み処理や読み出し処理の性能に影響を与えずにコピー処理を実行できる。
次に、読み出し処理について説明する。
図21は、読み出し処理の例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
(S81)I/O制御部113は、ホスト装置200から読み出し要求を受信する。例えば、読み出しが要求される際には、まず、読み出し開始位置のデータブロックIDを指定したLocateコマンドが発行され、その後にReadコマンドが発行される。この場合、ステップS81では、I/O制御部113は、Locateコマンドを受信する。
(S82)I/O制御部113は、36トラックモードであるか否かを判定する。36トラックモードの場合、処理をステップS83に進める。36トラックモードでない場合、処理をステップS86に進める。
(S83)I/O制御部113は、媒体情報テーブル111bを参照し、高速制御フラグがtrueであるか否かを判定する。trueの場合、処理をステップS84に進める。falseの場合、処理をステップS86に進める。
(S84)I/O制御部113は、媒体情報テーブル111bを用いて、読み出し開始位置を特定する。詳細には、I/O制御部113は、媒体情報テーブル111bの各WRAP情報を参照し、先頭ブロックIDから最終ブロックIDまでの範囲に、読み出し開始位置のデータブロックIDが属するWRAPを特定する。
例えば、読み出し開始位置のデータブロックIDを123とする。また、媒体情報テーブル111bのWRAP ID“3”に対応するWRAP情報には、開始セクタ番号が“4”、先頭ブロックIDが“102”、最終ブロックIDが“151”が登録されているものとする。I/O制御部113は、データブロックID“123”が先頭ブロックID“102”から最終ブロックID“151”までの範囲に属すると判定する。そして、I/O制御部113は、データブロックID“123”がWRAP ID“3”のWRAPに存在すると判定する。
I/O制御部113は、読み出し開始位置のセクタ番号を特定する。上記の例では、該当WRAPは順方向WRAPであるので、I/O制御部113は、読み出し開始位置のセクタ番号を“25”(4+(123−102))と特定する。
(S85)I/O制御部113は、テープドライブ120に、磁気ヘッドを読み出し開始位置のセクタへ移動させることを指示するLocateコマンドを送信する。そして、処理をステップS87に進める。
(S86)I/O制御部113は、通常移動処理を実行する。例えば、I/O制御部113は、WRAP毎に読み出し開始位置のデータブロックIDを検索して、読み出し開始位置を特定する。特定後、I/O制御部113は、テープドライブ120に、磁気ヘッドを読み出し開始位置へ移動するように指示する。
(S87)I/O制御部113は、Readコマンドをテープドライブ120に発行する。このとき、I/O制御部113は、読み出し方向をテープドライブ120に指示する。ステップS84で特定したWRAP IDが奇数の場合、順方向に読み出すように指示され、ステップS84で特定したWRAP IDが偶数の場合、逆方向に読み出すように指示される。これにより、テープドライブ120は、読み出し開始位置からデータの読み出しを開始する。そして、処理を終了する。
図22は、Readコマンド発行後の処理例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
(S91)I/O制御部113は、WRAPマークが検出されたか否かを判定する。WRAPマークが検出された場合、処理をステップS92に進める。検出されていない場合、処理を終了する。
(S92)I/O制御部113は、36トラックモードであるか否かを判定する。36トラックモードの場合、処理をステップS93に進める。36トラックモードでない場合、処理をステップS96に進める。
(S93)I/O制御部113は、媒体情報テーブル111bを参照し、高速制御フラグがtrueであるか否かを判定する。trueの場合、処理をステップS94に進める。falseの場合、処理をステップS96に進める。
(S94)I/O制御部113は、媒体情報テーブル111bを参照し、次のWRAPの開始セクタ番号を特定する。
(S95)I/O制御部113は、磁気ヘッドを、次のWRAPにおける特定した開始セクタ番号へ移動させることを指示するLocateコマンドを、テープドライブ120に送信する。また、I/O制御部113は、読み出し方向を反転させるようにテープドライブ120に指示する。そして、処理を終了する。
(S96)I/O制御部113は、テープドライブ120に、WRAPマークでWRAP反転を行うように指示する。
なお、第1の実施の形態の情報処理は、テープ装置10に用いられるプロセッサに、プログラムを実行させることで実現できる。第2の実施の形態の情報処理は、プロセッサ110aにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、マウント制御部112、I/O制御部113および監視部114に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。マウント制御部112、I/O制御部113および監視部114の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM110bやフラッシュメモリ110cに格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
なお、各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
また、以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 読み書きの方向が順方向のトラックと逆方向のトラックとを含む複数のトラックが形成された磁気テープを用いてデータを読み書きするテープドライブと、
前記磁気テープを走行方向に分割した複数の分割領域のうち、第1の分割領域を用いてデータを読み書きするように前記テープドライブを制御し、前記第1の分割領域内の一のトラックで異常が発生したと判定すると、前記一のトラックをコピー対象として予約し、所定のタイミングにおいて、前記第1の分割領域内の前記一のトラックに記録されたデータを、前記複数の分割領域のうち前記第1の分割領域に隣接する第2の分割領域内の前記一のトラックにコピーするように前記テープドライブに指示する制御部と、
を有するテープ装置。
(付記2) 前記制御部は、前記第1の分割領域内の前記一のトラックでの書き込みまたは読み出しの少なくとも一方についてのリトライ回数に基づいて、前記第1の分割領域内の前記一のトラックで異常が発生したかを判定する、
付記1記載のテープ装置。
(付記3) 前記所定のタイミングは、前記テープドライブから前記磁気テープをアンマウントする指示を受け付けたタイミングである、
付記1または2記載のテープ装置。
(付記4) 前記制御部は、前記テープドライブに、前記第2の分割領域内の前記一のトラックの途中からデータの追記を開始させた場合、前記第2の分割領域内の前記一のトラックにデータを書き込んだ後、書き込み方向を反転し、前記第2の分割領域内の次のトラックにデータを書き込むように前記テープドライブに指示する、
付記1乃至3のいずれか1つに記載のテープ装置。
(付記5) 読み書きの方向が順方向のトラックと逆方向のトラックとを含む複数のトラックが形成された磁気テープを用いてデータを読み書きするテープドライブを制御する制御装置において、
前記複数のトラックそれぞれにおける異常の発生を監視する監視部と、
前記磁気テープを走行方向に分割した複数の分割領域のうち、第1の分割領域を用いてデータを読み書きするように前記テープドライブを制御し、前記監視部によって前記第1の分割領域内の一のトラックで異常が発生したと判定されると、前記一のトラックをコピー対象として予約し、所定のタイミングにおいて、前記第1の分割領域内の前記一のトラックに記録されたデータを、前記複数の分割領域のうち前記第1の分割領域に隣接する第2の分割領域内の前記一のトラックにコピーするように前記テープドライブに指示する制御部と、
を有する制御装置。
(付記6) 前記監視部は、前記第1の分割領域内の前記一のトラックでの書き込みまたは読み出しの少なくとも一方についてのリトライ回数に基づいて、前記第1の分割領域内の前記一のトラックで異常が発生したかを判定する、
付記5記載の制御装置。
(付記7) 前記所定のタイミングは、前記テープドライブから前記磁気テープをアンマウントする指示を受け付けたタイミングである、
付記5または6記載の制御装置。
(付記8) 前記制御部は、前記テープドライブに、前記第2の分割領域内の前記一のトラックの途中からデータの追記を開始させた場合、前記第2の分割領域内の前記一のトラックにデータを書き込んだ後、書き込み方向を反転し、前記第2の分割領域内の次のトラックにデータを書き込むように前記テープドライブに指示する、
付記5乃至7のいずれか1つに記載の制御装置。
(付記9) 読み書きの方向が順方向のトラックと逆方向のトラックとを含む複数のトラックが形成された磁気テープを用いてデータを読み書きするテープドライブを制御するための制御プログラムにおいて、
コンピュータに、
前記磁気テープを走行方向に分割した複数の分割領域のうち、第1の分割領域を用いてデータを読み書きするように前記テープドライブを制御し、
前記第1の分割領域内の一のトラックで異常が発生したと判定すると、前記一のトラックをコピー対象として予約し、
所定のタイミングにおいて、前記第1の分割領域内の前記一のトラックに記録されたデータを、前記複数の分割領域のうち前記第1の分割領域に隣接する第2の分割領域内の前記一のトラックにコピーするように前記テープドライブに指示する、
処理を実行させる制御プログラム。
(付記10) 前記判定では、前記第1の分割領域内の前記一のトラックでの書き込みまたは読み出しの少なくとも一方についてのリトライ回数に基づいて、前記第1の分割領域内の前記一のトラックで異常が発生したかを判定する、
付記9記載の制御プログラム。
(付記11) 前記所定のタイミングは、前記テープドライブから前記磁気テープをアンマウントする指示を受け付けたタイミングである、
付記9または10記載の制御プログラム。
(付記12) 前記テープドライブに、前記第2の分割領域内の前記一のトラックの途中からデータの追記を開始させた場合、前記第2の分割領域内の前記一のトラックにデータを書き込んだ後、書き込み方向を反転し、前記第2の分割領域内の次のトラックにデータを書き込むように前記テープドライブに指示する、
付記9乃至11のいずれか1つに記載の制御プログラム。