先ず、テープカートリッジに格納されるデータのデータ構造について説明する。図2は、テープカートリッジに格納されるデータのデータ構造の一例を示す図である。図2に示すように、テープカートリッジに格納されるデータは、BOT(Beginning Of Tape)6a、VOL(Volume)6b、HDR(header)6c,6i、ファイルデータ6e,6k、EOF(End Of File)6g,6mの各領域を含む。さらに、テープカートリッジに格納されるデータは、T(Tape Mark)6d,6f,6h,6i,6l,6n,6o、及びEOT(End Of Tape)6pの各領域を含む。
ここで、BOT(6a)は、テープカートリッジのデータの書き込み領域の始端を示すマークである。また、EOT(6p)は、テープカートリッジのデータの書き込み領域の終端を示すマークである。このBOT(6a)とEOT(6p)の間の領域にデータが格納される。
VOL(6b)は、ボリューム領域であり、ユーザやテープカートリッジに記録されるボリュームの識別ラベルが記録される。VOL(6b)は、各カートリッジ媒体につき一つ記録される。このVOL(6b)のサイズは80バイトである。
HDR(6c,6i)は、ヘッダ領域であり、ファイルデータを識別するラベルが記録される。このHDR(6c,6i)のサイズは80バイトである。
ファイルデータ(6e,6k)は、ユーザが格納したいデータの本体のデータである。
EOF(6g,6m)は、ファイルデータの終わりを示す。このEOF(6g,6m)のサイズは80バイトである。
T(6d,6f,6h,6i,6l,6n,6o)は、カートリッジ媒体上にデータの読み書きを制御するために記録される特別の符号または符号列である。T(6d,6f,6h,6i,6l,6n,6o)は、ファイルデータと、HDRやEOFなどのラベルとの間、または、ラベル群の間の境界を示す。
カートリッジ媒体では、HDR、T、ファイルデータ、T、EOF、Tを一つのデータ書込み単位とし、以下の説明ではこれらをまとめて単にファイルと記す。尚、連続して記録された2つのTにより、テープカートリッジへの書込みの終了が示される。すなわち図2に示す例では、T(6n)の後に書込まれたT(6o)は、書込みの終了を示す。
次に、テープカートリッジのテープレイアウトについて説明する。図3は、テープレイアウトの一例を示す。尚、図3の例の矢印は、ドライブのヘッドの位置の動きを示している。尚、図3と同様に以下の図4〜5、9〜11、13〜17の矢印もドライブのヘッドの位置の動きを示すものとする。
テープへのデータの書込みは、テープの物理的な始端から終端にかけて、テープの走行方向(巻き取り方向)に沿って行われる。データの書込みが行われるテープ上のパスをトラックまたはラップと呼ぶ。このようなテープの走行方向に沿った複数のラップは、テープの走行方向とは垂直(この方向を幅方向と呼ぶ)に複数配置される。尚、以下の説明では、テープに含まれる複数のラップのうちで、データの書き込みが最後に行われるラップを最終ラップと記す。また、EOTは最終ラップの終端に位置するものとする。
図3の例において、例えば、先ずテープの始端からラップ1に対してデータの書き込みが行われ、テープの終端に達すると、テープの幅方向に書込み位置がずらされ、ラップ2に対して、テープの終端から始端に向けてデータの書き込みが行われる。ここで以下の説明では、テープの始端から終端に向かう方向を前進方向と記し、テープの終端から始端に向かう方向を後進方向と記す。すなわち、ラップ1の書込み方向は前進方向であり、ラップ2の書込み方向は後進方向である。
ラップ2へのデータの書き込みが行われ、テープの始端に到達すると、ラップ3に切り替えが行われ、データの書き込み方向を後進から前進に折り返して、データの書き込みが行われる。ラップ3への書き込みが終了すると、同様にラップの切り替えが行われ、書込み方向が折り返されてデータの書き込みが行われる。
そして、テープカートリッジに対する全ての書込み対象ファイルの書き込みが終了すると、最後に、データの書き込み終了を示すTが書き込まれる。図3の例では、ラップ5のファイル8の後にTが記録されており、ここで全てのファイルの書き込みが終了している。
このとき、仮にテープカートリッジに書込み可能なラップの数が10個である場合、残りの5個のラップにはデータの書き込みは行われないこととなる。尚、汎用機システムでは、カートリッジのすべての記憶容量を使い切らない可能性が高いため、データが書き込まれないラップが複数存在することがある。
次に、テープの終端でラップの折り返しが行われる図3のようなレイアウトにおいて、ファイルの検索が行われる様子を説明する。ファイルの検索では、メインフレーム(以下、ホストと記す)からの検索対象のファイルの指定において、テープマークが用いられる方法と、ファイル名が用いられる方法がある。
先ずテープマークを用いたファイルの検索について説明する。この方法では、検索対象のファイルの指定において、検索対象のファイルのHDRの直前のテープマークの番号がホストから指定される。すると制御部は、指定されたテープマークの位置に、データの読み込みを行うヘッドを位置づけるようにドライブを制御する。
図4は、テープの終端でラップの折り返しが行われるレイアウトにおいて、テープマークの番号を指定した検索の様子の一例を示す。ここで例えば、テープマークの9番(T9と記す)がホストから指定されたとする。すると先ず制御部は、指定されたテープマークが存在するラップへの切り替えを行い、そのラップの始端から、指定されたテープマークの位置まで順にテープを走行させるようにドライブを制御する。ここで図4の例におけるT9のように、指定されたテープマークがテープの終端に位置する場合、テープの走行距離は、ほぼテープの始端から終端までの距離となる。
次にファイル名を指定したファイルの検索について説明する。この方法では、検索対象のファイルの指定において、ホストから検索対象のファイル名が指定される。このような検索要求を受信すると制御部は、ドライブの制御を行って、指定されたファイル名のファイルの検索を行う。すなわち制御部は、テープに記憶されたHDRの情報をラップ1の始端からデータの書込み順に読み込むようにドライブを制御する。そして制御部は、指定されたファイル名に対応するHDRを特定し、特定したHDRの位置に、ドライブのヘッドの位置づけを行うように制御する。
図5は、テープの終端でラップの折り返しが行われる図4のようなレイアウトにおいて、検索対象のファイル名を指定した検索の様子の一例を示す。図5は、検索対象のファイル名として、ファイル7が指定された例を示している。
図5に示すように、制御部は、ラップ1から順にテープを走行させ、順次、各ラップに記録されたHDRが、指定されたファイル名に対応するものか否かを判定する。
具体的には、先ず制御部は、ラップ1の始端から終端にテープを走行させ、ラップ1に記録されたHDRが、指定されたファイル名に対応するものか否かを順次判定する。ラップ1の終端まで達したら、次に制御部はラップの切り替えを行ってラップ2の終端から始端にテープを走行させ、ラップ1と同様に、ラップ2に記録されたHDRが、指定されたファイル名に対応するものか否かを順次判定する。同様に制御部は、ラップ3の始端から終端にテープを走行させ、ラップ3に記録されたHDRが、指定されたファイル名に対応するものか否かを順次判定していく。ここで制御部は、ラップ3に記録されたファイル7のHDRが、指定されたファイル名に対応するか否かの判定を行い、その結果として、ファイル7のHDRは指定されたファイル名に対応すると判定する。すると制御部は、ドライブのヘッドをファイル7のHDRの位置に位置づけする。
ここで図5の例のファイル7のように、指定されたファイルが、テープに書き込まれたデータのうちで、書込み順において後方に位置するに従い、ファイル名を指定したファイルの検索におけるテープの走行距離は長くなる。
図6は、本実施形態に係るテープ装置の構成の一例を示す。図6において、テープ装置10は、第1書込部11、書込制御部12、第2書込部13、読込部14、及び読込制御部15を含む。
第1書込部11は、第1のテープ媒体に含まれる複数のトラックのうちいずれかのトラックに情報を書き込む。
書込制御部12は、第1書込部11に、第1トラックに書き込み対象情報を書き込ませる制御と、第1書込部11の位置から第1トラックの開始位置までの長さが所定の閾値以上である場合、トラックの終端を示す制御情報を書き込ませ、第1書込部11を第2トラックに移動させる制御を行なう。制御情報は、各トラックに記録された情報を特定するための情報を含む。ここで、所定の閾値は、例えば、書き込み対象情報が記憶されるテープ長を、第1のテープ媒体に含まれるトラック数で割った値である。
第2書込部13は、テープの始端と終端で折り返された複数のトラックを含む第2のテープ媒体に、書き込み対象情報を書き込む。
書込制御部12は、第1のテープ媒体への書き込み対象情報の書込み途中で、第1のテープ媒体の最終トラックの終端を検出した場合、第2のテープ媒体に記録された情報を、第1のテープ媒体に上書きする制御を行なう。また、書込制御部12は、書き込み対象情報の第1のテープ媒体への書込みが完了した場合、第1のテープ媒体に書き込まれた情報を第2のテープ媒体に上書きする制御を行なう。
読込部14は、テープ媒体に含まれる複数のトラックのうちいずれかのトラックに書き込まれた情報を読み込む。
読込制御部15は、読込部14に第1トラックに記録された情報を読み込ませる制御と、制御情報を読み込んだ場合、読込部14を第2トラックに移動させる制御を行なう。また、読込制御部15は、トラックに記録された制御情報のうち、テープの始端側に記録された制御情報を読み込み、読み込んだ制御情報に基いて、トラックに記録された情報を特定する。
図7は、本実施形態に係る情報処理システムの構成の一例を示す。図7において、情報処理システムは、メインフレーム21、及びテープ装置22を含み、メインフレーム21とテープ装置22は、例えばバスやネットワーク等を介して接続されている。メインフレーム21はテープ装置22にセットされたテープカートリッジにデータを記憶させ、また、テープカートリッジからテープ装置22を介して、データを取得する。本実施形態では、メインフレーム21は、正と副の2つのテープカートリッジに、同じデータを記憶させる構成とする。
メインフレーム21では、正カートリッジにデータを書き込むための正ドライブに対応するジョブ27が実行される。尚、図1の例では、正と副のテープカートリッジにデータを書き込むときに2つのジョブが実行されているが、図7の例では、1つのジョブが実行されている。図1の例と比較して図7の情報処理システムでは、メインフレームにかかる書込み処理の負荷が軽減されている。
テープ装置22は、2つのテープカートリッジの挿入が可能であり、制御部23、正ドライブ24、副ドライブ25、及び記憶部26を含む。正ドライブ24と副ドライブ25のそれぞれは、挿入された2つのテープカートリッジの各々へデータの読み書きを行う。
尚、テープ装置22は、テープ装置10の一例である。制御部23は、書込制御部12及び読込制御部15の一例である。副ドライブ25のヘッドは、第1書込部11の一例である。正ドライブ24のヘッドは、第2書込部13の一例である。
尚テープ装置22は、メインフレーム21から受信したデータを正と副のカートリッジに同時に書き込んでもよいし、先ず正カートリッジにデータを格納し、その後所定のタイミングで、正カートリッジのデータを副カートリッジに複製してもよい。
制御部23は、テープカートリッジへのデータの読み書きに関する制御を行う。
データの書き込みに関して、具体的には制御部23は、メインフレーム21からテープカートリッジへのデータの書込み要求とともに、書き込み対象データを受信する。すると制御部23は、受信したデータを正ドライブ24または副ドライブ25に転送するとともに、転送したデータを正カートリッジまたは副カートリッジに書き込ませるように正ドライブ24または副ドライブ25を制御する。
データの読み込みに関して制御部23は、メインフレーム21からテープカートリッジに記憶されたデータの読み込み要求を受信すると、テープカートリッジからデータを読み出すように正ドライブ24及び副ドライブ25を制御する。そして、正ドライブ24及び副ドライブ25が読み出したデータを取得し、取得したデータをメインフレーム21へ転送する。
制御部23は、正カートリッジに記憶されたデータを所定のタイミングで副カートリッジに複製してもよい。すなわち、正カートリッジからデータを読み出すように正ドライブ24を制御して、読み出されたデータを副カートリッジに書き込ませるように副ドライブ25を制御する。
記憶部26は、制御部23がテープへのデータを書き込む際に使用する種々の一時変数を記憶する。また記憶部26は、テープ装置22において、以前にテープカートリッジへの書込み処理を実行したことのあるボリュームと、そのボリュームのサイズとを対応付けたボリューム情報を記憶する。図8は、ボリューム情報の一例を示す図である。図8において、ボリューム情報は、ボリューム名31と、ボリュームセクター値32のデータ項目を含む。ボリューム名31は、テープ装置22が以前にテープカートリッジへの書込み処理を行ったことのあるボリュームを一意に識別するための識別情報である。尚、このボリューム名は、テープカートリッジに書き込まれるVOLラベルと対応していてもよい。ボリュームセクター値32は、ボリューム名で示されるボリュームの全てのデータをテープカートリッジに書き込んだときに使用されたテープ長をセクター値で表した値である。尚テープ長は、ドライブのヘッドが移動したテープ上の距離ともいえる。
尚、制御部23は、書込み対象データの書込みが完了した場合、書込み対象データのボリューム名と、書込み対象データを書き込んだときに使用されたテープ長をセクター値で表した値とを対応付けて、ボリューム情報に格納する。
図7の例においては、メインフレーム21のデータが正ドライブ24にセットされた正カートリッジに書き込まれ、その後、正カートリッジに格納されたデータが、副ドライブ25にセットされた副カートリッジに複製される例を示している。図7に示すように、メインフレーム21では正ドライブ24に対応するジョブが実行され、このジョブがテープ装置の制御部23へデータの書き込み要求とともに、書込み対象データを送信する。書込み対象データを受信すると制御部23は、受信したデータを正ドライブ24に転送する。正ドライブ24は、制御部23からデータを受信すると、正ドライブ24にセットされた正カートリッジに受信したデータを格納する。
その後、所定のタイミングで以下の複製処理が行われる。すなわち制御部23は、正カートリッジからデータを読み出すように正ドライブ24を制御して、読み出したデータを正ドライブ24から取得する。そして制御部23は、取得したデータを副ドライブ25へ転送するとともに、転送したデータを副カートリッジに書き込ませるように副ドライブ25を制御する。
次に、本実施形態に係るテープカートリッジのテープレイアウトについて説明する。正ドライブ24にセットされる正カートリッジのテープレイアウトは、図3で説明したものと同様であるが、副ドライブ25にセットされる副カートリッジのテープレイアウトは、図3で説明したものとは異なる。本実施形態の副カートリッジのテープレイアウトにおいては、テープの折り返し位置はテープの終端ではなく、テープに格納されるデータの総量に応じて変更される。
図9は、本実施形態に係る副カートリッジのテープレイアウトの一例を示す。図9に示すように、各ラップの折り返し位置は、テープの始端と終端の間の位置となっている。図9に示すように、各ラップの開始位置と終了位置には、制御マーク(MK1、MK2、・・・)が挿入されている。この制御マークにより、折り返し位置が管理される。
ここで各ラップの折り返し位置の決定方法について説明する。本実施形態においては、副カートリッジの各ラップに格納されるデータ量が均一となるように折り返し位置が決定される。ただし折り返し位置は、ファイルの途中では折り返されず、2つのファイルの間で折り返される。
各ラップの折り返し位置の決定方法は、副カートリッジに格納されるデータの総量が判明している場合と、そうでない場合とで異なる。先ず、副カートリッジに格納されるデータの総量が判明している場合について説明する。
各ラップの折り返し位置の決定において、副カートリッジに格納されるデータの総量が判明している場合には、先ず制御部23は、副カートリッジに格納されるデータの総量を副カートリッジに記憶させた場合の記憶領域の総テープ長のセクター値を算出する。そしてここで算出した値を、制御部23は、副カートリッジの全ラップ数で割り、その結果の値を平均セクター値として算出する。
例えば、副カートリッジに格納されるデータの総セクター値が「10,000」であり、カートリッジの総ラップ数が「20」である場合には、平均セクター値は「500」となる。
平均セクター値を算出すると、次に制御部23は、各ラップの開始位置からのテープ長をセクター値で表した値が、平均セクター値と等しくなるような、各ラップ上の位置を特定する。そしてこの特定した位置に格納されるブロック(データ)が含まれるファイルの書込み終了位置を、制御部23は、そのラップの折り返し位置として決定する。尚、以下の説明においては、テープ長をセクター値で表した値を単にセクター値と記す。
例えば、図9の例において平均セクター値が「500」であり、ファイル1の書込み終了位置からテープの始端までのセクター値が「700」である場合には、制御部23は、ファイル1の書込み終了位置を折り返し位置として決定する。具体的には後ほど説明するが、1つのファイルの書き込みが終了する毎に制御部23は、ファイルの書き込み終了位置からラップの始端までのセクター値と、平均セクター値とを比較する。そしてこの結果に基づいて、制御部23は、ファイルの書き込み終了位置が折り返し位置であるか否かを判定する。
ラップ2についてもラップ1と同様にして制御部23は折り返し位置を決定する。例えば、図9の例においてファイル2の書込み終了位置からラップ2の開始位置までのセクター値が「200」であり、ファイル3の書込み終了位置からラップ3の開始位置までのセクター値が「700」であるとする。この場合、制御部23は、ファイル3の書込み終了位置を折り返し位置として決定する。
以上のようにして、副カートリッジに格納されるデータの総量が判明している場合は折り返し位置を決定する。次に、カートリッジに格納されるデータの総量が判明していない場合の、各ラップの折り返し位置の決定方法について説明する。
尚、カートリッジに格納されるデータの総量が判明している場合の一例として、書込み対象のボリュームと同じボリューム名のデータを、以前にテープ装置22がテープカートリッジに書き込んだことがある場合がある。このような場合、記憶部26に記憶されたボリューム情報には、ボリューム名31の値が書き込み対象ボリュームのボリューム名と等しいレコードが存在することとなる。そこで制御部23は、ボリューム名31が書込み対象ボリューム名と等しいレコードを抽出し、抽出したレコードのボリュームセクター値32を取得する。そして制御部23は、取得したボリュームセクター値を、副カートリッジの総ラップ数で割った値を平均セクター値として算出する。
各ラップの折り返し位置の決定において、カートリッジに格納されるデータの総量が判明していない場合には、先ず制御部23は、テープの始端から終端までのテープ長に対応するセクター値の1/2の値を、平均セクター値として算出する。尚、本実施形態においては、テープの始端から終端までのテープ長に対応するセクター値の1/2の値を平均セクター値として算出したが、テープの始端から終端までのテープ長のうちの所定のテープ長を平均セクター値としてもよい。
例えば、テープの始端から終端までのテープ長に対応するセクター値が「800」である場合、平均セクター値は「800」の1/2である「400」となる。
平均セクター値を算出すると、次に制御部23は、カートリッジに格納されるデータの総量が判明している場合と同様に、各ラップの開始位置からのセクター値が平均セクター値と等しくなるような、各ラップ上の位置を特定する。そしてこの特定した位置に格納されるブロック(データ)が含まれるファイルの終了位置を、制御部23は、そのラップの折り返し位置として決定する。
以上のようにして、テープカートリッジの折り返し位置は決定される。折り返し位置が決定されると、決定した折り返し位置に制御部23は、折り返し位置であることを示す制御マークを挿入する。データの読み込み時に、副ドライブ25のヘッドはこの制御マークを検出すると、その検出位置でラップの切り替えを行い、テープの走行方向を折り返す。
ただし制御部23は、各ラップの開始位置にも制御マークの挿入を行う。すなわち、本実施形態において、副カートリッジに含まれる各ラップの開始位置と終了位置には、制御マークが記録されることとなる。
尚、ラップの開始位置は、正順にデータが書き込まれるラップの場合、テープの始端の位置にあり、後順にデータが書き込まれるラップの場合は、テープの終端の位置にある。また、ラップの終了位置は、正順にデータが書き込まれるラップの場合、テープの終端の位置にあり、後順にデータが書き込まれるラップの場合は、テープの始端の位置にある。
制御マークのデータ構成は、各ラップの開始位置に挿入されるものと、終了位置に挿入されるものとで、データの構成が異なる。さらに、終了位置に挿入される制御マークにおいても、正順にデータが書き込まれるラップと、後順にデータが書き込まれるラップとで、データの構成が異なる。以下、図10を参照して、各々の場合について、制御マークの構成を説明する。図10は、制御マークのデータ構成を説明するための図である。
先ず、各ラップの開始位置に挿入される制御マークのデータ構成を説明する。各ラップの開始位置に挿入される制御マークは、図10の例においては、MK1、MK3(41a)、MK5(41c)、MK7(41d)、MK9、・・・である。図10に示すように、ラップの開始位置に挿入される制御マークは、一つ前のラップに記録されたファイルのファイル名を含む。ここで説明のためにあるラップに注目し、注目したラップを注目ラップAと記すと、注目ラップAの開始位置に挿入される制御マークは、注目ラップAへの切り替え前(直前)のラップに格納されたファイルのファイル名を含む。
具体的には、例えば図10において、ラップ2の開始位置に挿入される制御マークMK3には、ラップ1に記録されたファイルであるファイル1のファイル名が含まれる。また、ラップ3の開始位置に挿入される制御マークMK5には、ラップ2に格納されたファイルであるファイル2とファイル3のファイル名が含まれる。
次に、ラップの終了位置に挿入される制御マークであって、正順にデータが書き込まれるラップに挿入される制御マークのデータ構成を説明する。正順にデータが書き込まれるラップの終了位置に挿入される制御マークは、図10の例においては、MK2(41a)、MK6(41d)、・・・である。図10に示すように、正順にデータが書き込まれるラップの終了位置に挿入される制御マークは、制御マークが挿入されるラップに記録されたファイルのファイル名を含む。ここで説明のためにある正順にデータが記録されるラップに注目し、注目したラップを注目ラップBと記すと、注目ラップBの終了位置に挿入される制御マークは、注目ラップBに格納されたファイルのファイル名を含む。
具体的には、例えば図10の例において、ラップ1の終了位置に挿入される制御マークMK2には、ラップ1に格納されたファイルであるファイル1のファイル名が含まれる。また、ラップ3の終了位置に挿入される制御マークMK6には、ラップ3に格納されたファイルであるファイル4のファイル名が含まれる。
次に、ラップの終了位置に挿入される制御マークであって、後順にデータが書き込まれるラップに挿入される制御マークのデータ構成を説明する。後順にデータが書き込まれるラップの終了位置に挿入される制御マークは、図10の例においては、MK4(41b)、MK8(41e)・・・である。図10に示すように、後順にデータが書き込まれるラップの終了位置に挿入される制御マークは、制御マークが挿入されるラップに記録されたファイルのファイル名と、その一つ前のラップに記録されたファイルのファイル名を含む。ここで説明のために、後順にデータが記録されるあるラップに注目し、注目したラップを注目ラップCと記す。すると、注目ラップCの終了位置に挿入される制御マークは、注目ラップCに格納されたファイルのファイル名と、注目ラップCへの切り替え前(直前)のラップに格納されたファイルのファイル名とを含む。
具体的には、例えば図10の例において、ラップ2の終了位置に挿入される制御マークMK4には、ラップ2に格納されたファイルであるファイル2、3と、ラップ1に格納されたファイルであるファイル1のファイル名が含まれる。また、ラップ4の終了位置に挿入される制御マークMK8には、ラップ4に格納されたファイルであるファイル5と、ラップ3に格納されたファイルであるファイル4のファイル名が含まれる。
尚、本実施形態において、折り返し位置を2つのファイルの間としたのは、例えばファイルデータが重要なデータである場合に、ファイルデータの途中に制御マークを挿入することはデータの信頼性の観点から望ましくないためである。ファイルデータに信頼性が求められず、ファイルデータの途中に制御マークが挿入されても特に問題がない場合には、制御マークは所定の位置に挿入することができる。その場合は、さらにテープの効率的な使用が可能となる。
次に、副カートリッジへのデータの書込みについて説明する。副カートリッジへデータを書き込む場合、制御部23は、図9において説明したテープレイアウトとなるように、データの書き込みを行う。尚、以下の説明では、書き込み対象のラップの開始位置から、そのラップに対してデータの書き込みが完了した完了位置までのテープ長をセクター値で表した値を書込みセクター値と記す。
図11は、本実施形態において、副カートリッジにデータを書き込む様子を説明するための図である。
データの書き込みは、具体的には、制御部23は先ず書込み対象データのうちのVOLラベルの書き込みを行い、それに続いて、ラップ1の開始位置の制御マーク(図11においてはMKと記す)を書き込む。そして制御部23は、制御マークの書き込みに続いてファイル1の書き込みを行う。ファイル1の書込みが終了したら、制御部23は書込みセクター値と平均セクター値とを比較する。ここで書込みセクター値が平均セクター値未満であると判定した場合は、制御部23はファイル1に続けて、同じラップ1に次のファイル2の書き込みを行う。そして、ファイル2の書込みが終了したら、再び制御部23は書込みセクター値と平均セクター値とを比較する。ここで書込みセクター値が平均セクター値未満であると判定した場合は、同様に制御部23は、書き込んだファイルに続けて、同じラップ1に更に次のファイルの書き込みを行う。
このようにファイルの書込み終了時には、書込みセクター値と平均セクター値の比較が行われるが、その際、書込みセクター値が平均セクター値未満であると判定した場合には、制御部23は、続けて同じラップに次のファイルを書き込む動作を、同様に繰り返す。
ファイルの書込み終了時の比較において、書込みセクター値が平均セクター値以上であると判定すると、制御部23は、ファイルの書き込みが終了した時点のヘッドの位置を折り返し位置であると判定する。そして制御部23は、書き込んだファイルに続いて制御マークを書込み、次のラップであるラップ2へ切り替えを行う。尚、この切り替えにおいては、ヘッドの位置をテープの幅方向にずらしてラップ2に切り替えるが、テープの走行方向にはヘッドをずらさないものとする。
図11の例は、ファイル2の書込み終了時の書込みセクター値と平均セクター値の比較において、書込みセクター値が平均セクター値以上となる例を示している。よって、ファイル2に続いて制御マークが書き込まれ、ラップの切り替えが行われている。
ラップ2への切り替えを行うと制御部23は、ラップ2の開始位置に制御マークを書込み、それに続いて新たなファイルの書き込みを行う。ファイルの書き込みが終了したら、制御部23は、書込みセクター値と平均セクター値とを比較する。ここで書込みセクター値が平均セクター値未満であると判定した場合には、制御部23は、続けて同じラップに次のファイルを書き込む動作を、ラップ1と同様に繰り返す。また、書込みセクター値が平均セクター値以上であると判定した場合には、ラップ1と同様に制御部23は、書き込んだファイルに続いて制御マークを書込み、次のラップへ切り替えを行う。ラップ3以降の動作は、ラップ2と同様となる。
次に、副カートリッジに記録されたファイルの検索について説明する。上述したようにファイルの検索では、検索対象のファイルを指定するのに、テープマークを用いる方法と、ファイル名を指定する方法などがある。
図12は、本実施形態に係る副カートリッジに対するテープマークを用いたファイルの検索の様子を示す。図12において、テープマークの9番が読み込み対象ファイルとして指定された場合を説明する。
先ず制御部23は指定されたテープマークが存在するラップへの切り替えを行い、テープの始端側から指定されたテープマークの位置まで順にテープを走行させる。
具体的には、制御部23は先ずラップ2に切り替えを行い、テープマークの9番の位置までテープを走行させて、ドライブのヘッドを位置づけする。
ここで、テープマークを用いたファイルの検索について、図4と図12の例を比較する。
図4においては、例えば、ホストから指定されたテープマークが、テープの終端に位置する場合、テープの走行距離は、テープの始端から終端までの距離となる。それに対して、図12においては、テープマークは、テープの始端からラップの折り返し位置までに記録される。よって、図12の例におけるテープの走行距離は、図4の例におけるテープの走行距離よりも短くなる。したがって、副カートリッジに対するテープマークを指定したファイルの検索時間は、正カートリッジに対するものよりも短くなる。
次にファイル名を指定したファイルの検索について説明する。この方法では、検索対象のファイルの指定において、ホストから検索対象のファイル名が指定される。
図13は、副カートリッジに対するファイル名を用いたファイルの検索の様子を示す。図13に示すように、制御部23は先ず、各ラップのテープ始端側の制御マークの読み込みをドライブに指示し、読み込んだ制御マークの内容から、検索対象のファイルが記録されたラップを特定する。そして制御部23は、特定したラップのファイルの前部にヘッドの位置づけを行うようにドライブを制御する。
ただし、カートリッジ始端側の制御マークの構成は、図10を参照して説明したように3パターンあり、パターンにより制御マークの内容が異なることから、ラップによって、読み込み対象ファイルの特定の仕方が異なる。以下の説明では、正順にデータが記録されるラップを正順ラップと記し、後順にデータが記録されるラップを後順ラップと記す。
先ず、後順ラップに検索対象ファイルが含まれるか否かの特定について説明する。ここでは説明のために、検索対象ファイルが含まれているか否かの判定を行うラップを対象ラップDと記す。すると、図10を参照して説明したように、対象ラップDの次の正順ラップの開始位置に記録される制御マークには、一つ前のラップである対象ラップに記録されたファイルのファイル名を含む。よって、対象ラップDに検索対象データが記録されているか否かの判定は、制御部23は、対象ラップDの次の正順ラップの開始位置の制御マークに、検索対象ファイルが含まれているか否かを判定することによって行う。
次に、正順ラップに検索対象ファイルが含まれているか否かの特定について説明する。ここでは、説明のために、検索対象ファイルが含まれているか否かの判定を行う正順ラップを対象ラップE、対象ラップEの次のラップをラップF、ラップFの次のラップをラップGと記す。すると、図10を参照して説明したように、対象ラップEの次の後順ラップFの終了位置(テープの始端側)に記録される制御マークMK(F)には、対象ラップEとラップFに記録されたファイルのファイル名が含まれる。一方、正順ラップGの開始位置に記録される制御マークMK(G)には、図10を参照して説明したように、ラップFに記録されたファイルのファイル名が含まれる。よって、ラップFの終了位置に記録される制御マークMK(F)に検索対象のファイル名が含まれていない場合には、制御部23は、対象ラップEには検索対象ファイルは記録されていないと判定する。また、ラップFの終了位置の制御マークMK(F)に検索対象のファイル名が含まれており、ラップGの開始位置の制御マークMK(G)に検索対象のファイル名が含まれていない場合には、制御部23は対象ラップEに検索対象ファイルが記録されていると判定する。
ここで図13において、ファイル4を検索する場合の動作を説明する。先ず制御部23は、ラップ1の制御マークMK1を読み込む。MK1にはいずれのファイル名も含まれていないため、制御部23は、次のラップであるラップ2に切り替え、制御マークMK4を読み込む。尚、MK1にはファイル名は含まれないため、MK1の読み込みは省略してもよい。
次に、制御マークMK4を読み込むと制御部23は、制御マークMK4に、ファイル4のファイル名が含まれるか否かを判定する。図13の例では、ラップ2にファイル4が記録されているため、制御部23は、制御マークMK4にファイル4のファイル名が含まれると判定する。すると制御部23は、制御マークMK4が記録されたラップであるラップ2と、その直前のラップであるラップ1の何れかに、ファイル4が記録されていると判定する。
そして制御部23は、次のラップであるラップ3に切り替え、制御マークMK5を読み込み、制御マークMK5にファイル4のファイル名が含まれるか否かを判定する。ここでは制御部23は、MK5にはファイル4のファイル名が含まれると判定する。すると制御部23は、ラップ2にファイル4が記録されていると判定する。これは、制御マークMK5は、ラップの開始位置に挿入される制御マークであり、そのような制御マークには、図10に示すように、その制御マークが記録されたラップの切り替え直前のラップに記録されたファイルのファイル名を含むからである。
検索対象のファイルが記録されたラップを特定すると制御部23は、特定したラップを走行させ、検索対象ファイルの前部にヘッドの位置づけを行うようにドライブを制御する。
ここで、ファイル名を用いたファイルの検索について、図5と図13の例を比較する。
図5においては、検索対象のファイル名に対応するHDRを読み込むまで、ラップ1から順にテープの走査が行われる。それに対して、図13においては、先ず、検索対象ファイルが記録されているラップを、テープの始端側に記録された制御情報を用いて特定し、特定したラップに対してHDRの読み込みが行われるため、テープの走行距離が短くなる。
したがって、副カートリッジに対するファイル名を指定したファイルの検索時間は、正カートリッジに対するものよりも短くなる。
次に、カートリッジに書込み済みのファイルに対するデータの上書きの動作について、図14及び図15を用いて説明する。
図14は、ファイル名による上書き対象ファイルの検索を行って、上書きを行う様子を示す。図14においては、既に記憶されていたファイル4をファイル8に上書きする様子を示している。
先ず制御部23は、上書きの対象であるファイル4の検索を行う。ここでは、検索対象ファイルとしてファイル4がホストにより指定される。ファイル4の検索の方法は図13を用いて説明したものと同様である。ファイル4の前部にドライブのヘッドの位置づけが完了したら、制御部23は、ファイル4に対してファイル8を上書きする。
図15は、テープマークによる上書き対象ファイルの検索を行って、ファイルの上書きを行う様子を示す。図15においては、既に記憶されていたファイル4をファイル8に上書きする様子を示している。
先ず制御部23は、上書きの対象であるファイル4の検索を行う。ここでは、ファイル4の前に位置するテープマークがホストにより指定される。ファイル4の検索の方法は図12を用いて説明したものと同様である。ファイル4の前部にドライブのヘッドの位置づけが完了したら、制御部23は、ファイル4に対してファイル8を上書きする。
尚、テープマークによるファイルの検索は、図15に示すようにテープの前進方向に行われる場合(スペースファイル)と、テープの後進方向に行われる場合(バックスペースファイル)がある。
次に、副カートリッジの折り返し位置の変更について説明する。副カートリッジの折り返し位置は、テープの始端と終端で折り返されるため、副カートリッジへ記録されるデータのデータ量が予め判明していない場合には、書込み対象データの量によっては、全てのデータを書ききれない場合がある。また、副カートリッジへファイルの追記を行う場合にも、追記するファイルのサイズによっては、副カートリッジにすべてのデータを書ききれない場合がある。そのような場合には制御部23は、副カートリッジの折り返しの位置を変更することによって、副カートリッジに書込み対象の全てのデータを格納する。
本実施形態では、正カートリッジと副カートリッジには同じ書込み対象データが記録される。ここでは、正カートリッジと副カートリッジに同時に書込み対象ファイルが書き込まれるときの動作を説明する。
図16及び図17A、17Bは、副カートリッジの折り返し位置の変更について説明するための図である。図16は、書き込み対象データが正カートリッジへ書き込まれる様子を示す。図17Aは、書き込み対象データが、最初に副カートリッジへ書き込まれ、書き込みの途中でEOTが検出される様子を示す。図17Bは、折り返し位置の変更後に、再度副カートリッジへ書込み対象データが書き込まれる様子を示す。
先ず制御部23は、図16、図17Aに示すように、正ドライブ24と副ドライブ25にセットされた正副のカートリッジへ書込み対象ファイルの書き込みを行う。ここで、制御部23は、ファイルの書込みとともに、書込み対象ファイルが書き込まれた正カートリッジのセクター値を、記憶部26に記録する。
その後、副ドライブ25への書き込みが進行していくと、最終ラップへの切り替えが行われる。最終ラップへの切り替え時には、制御部23は、切り替え前に最後に書き込んだブロックのブロックIDを記憶部26に記憶しておく。尚、ブロックIDは、書込み対象データに含まれる各ブロックを一意に識別するための識別情報である。
そして図17Aに示すように、制御部23は、副カートリッジへの書込み対象データの書き込みの途中でEOTを検出すると、副カートリッジへのデータの書き込みを停止する。尚、副カートリッジへの書き込みが停止しても、図16に示すように、正カートリッジへの書込みは継続され、全ての書込み対象データが正カートリッジへ書き込まれる。
図16において、全ての書込み対象データの正カートリッジへの書き込みが終了すると、制御部23は、副カートリッジの最終ラップへの切り替え前の位置に対応する位置に正ドライブ24のヘッドを移動させる。具体的には、制御部23は先ず、記憶部26から、副カートリッジの最終ラップへの切り替え前に最後に書き込まれたブロックのブロックIDを取得する。そして、制御部23は、取得したブロックIDをもつブロックが記憶された正カートリッジの位置に、正ドライブ24のヘッドを位置付けする。
また図17Bに示すように制御部23は、副カートリッジの最終ラップへの切り替え前に最後に書き込んだブロックが記憶された位置に、副ドライブ25のヘッドを位置づけする。
そして、制御部23は、正カートリッジに書き込まれた書込み対象ファイルのセクター値に基づいて、副カートリッジに書込み対象ファイルの全てが書込み可能なように折り返し位置を変更する。具体的には制御部23は、正カートリッジに書き込まれた書込み対象ファイルのセクター値の1/2の値を平均セクター値として設定して、制御部23は折り返し位置を決定する。
そして制御部23は、位置づけを行った正ドライブ24のヘッドの位置から、ファイルの読み出しを行う。そして、図17Bに示すように制御部23は、位置づけを行った副ドライブ25のヘッドの位置を再書込みの開始点として、正ドライブ24から読み出したデータに上書きする。
データの再書込みにおいても、データの書き込みと同様に制御部23は、ラップの開始位置からのセクター値が平均セクター値と等しくなるようなラップ上の位置を特定する。そして制御部23は、特定した位置に格納されるブロック(データ)が含まれるファイルの終了位置で、ラップを切り替える。
尚、折り返し位置の変更において、全ての書込み対象データの正カートリッジへの書き込み完了後に移動させるヘッドの位置は、書込み対象ファイルのうちで最初に書き込まれるファイルのHDRのブロックの位置としてもよい。ただしその場合、制御部23は、正カートリッジへの書込み処理時に、書込み対象ファイルのうちで最初に書き込まれるファイルのHDRのブロックIDを記憶部26に記録しておき、このブロックIDに基づいて、移動させるヘッドの位置を制御部は特定する。またこの場合、再書込みにおける平均セクター値は、正カートリッジに書き込まれた書込み対象ファイルのセクター値を、再書込みが開始されるラップから最終ラップまでのラップ数で割った値としてもよい。
次に、本実施形態に係る制御部23の動作フローについて、図18〜図27を参照して説明する。図18は、制御部23の全体の動作フローを図解したフローチャートである。
図18において、先ず制御部23は、ホストからのコマンドの受信処理を行う(S101)。コマンドの受信処理の詳細については、後ほど図19を用いて説明する。
次に制御部23は、各ドライブのステータスがレディか、オフラインかの監視を行う(S102)。このドライブのステータスの監視の処理の詳細については、後ほど図20を用いて説明する。
次に制御部23は、副ドライブ25のレディフラグがオンか否かを判定する(S103)。ここでドライブのレディフラグとは、ドライブにカートリッジが挿入されているか否か(マウントされているか否か)を示すフラグである。ドライブにカートリッジが挿入されている場合は、レディフラグの値はオンとなり、挿入されていない場合は、レディフラグの値はオフとなる。レディフラグは記憶部26に記憶される。副ドライブ25のレディフラグがオフであると判定された場合は(S103でNo)、処理はS101に遷移する。
S103においてドライブのレディフラグがオンであると判定した場合(S103でYes)、制御部23は、正ドライブ24のライトフラグがオンか否かを判定する(S104)。ここで正ドライブ24のライトフラグとは、正ドライブ24のカートリッジへのデータの書き込みが発生したかを示すフラグである。正ドライブ24のカートリッジへのデータの書き込みが発生した場合、ライトフラグの値はオンとなり、データの書き込みが発生していない場合、ライトフラグの値はオフとなる。ライトフラグは記憶部26に記憶される。正ドライブ24のライトフラグがオフであると判定された場合(S104でNo)、処理はS101に遷移する。
S104において正ドライブ24のライトフラグがオンであると判定した場合(S104でYes)、制御部23は、副ドライブ25のEOTフラグがオンか否かを判定する(S105)。ここでEOTフラグとは、副カートリッジへデータが書き込まれた結果、最終ラップの終端(EOT)にヘッドが達したか否かを示すフラグである。すなわち、副ドライブ25のEOTフラグがオンである場合には、副ドライブ25のテープには、データの追加ができない状態である。EOTフラグは記憶部26に記憶される。副ドライブ25のEOTフラグがオンであると判定されると(S105でYes)、処理はS101に遷移する。
S105において、副ドライブ25のEOTフラグがオフであると判定した場合(S105でNo)、制御部23は、副ドライブ25のファイル書き込み処理を開始する(S106)。副ドライブ25のファイル書き込み処理については、後ほど図23を参照して説明する。
次に、S101の処理である、ホストからのコマンドの受信処理の動作フローの詳細について説明する。図19は、ホストコマンド受信処理の動作フローを図解したフローチャートである。
図19において、制御部23は先ず、ホストからコマンドを受信する(S201)。
次に制御部23は、受信したコマンドを解析し、コマンドの種類を特定する(S202)。ここで、コマンドの種類の一例について説明する。コマンドの種類には例えば、書込み(WT(Write))コマンド、読み込み(RD(Read))コマンド、SP(Space Block)コマンド、SPF(Space File)コマンドなどがある。また例えばコマンドの種類には、BSP(Back Space Block)コマンド、BSPF(Back Space File)コマンド、FileSearchコマンドなどがある。
書込みコマンドは、データを書込むコマンドである。読み込みコマンドは、データを読込むコマンドである。SPコマンドは、ブロックを1つ分進むコマンドである。SPFコマンドは、テープマークで挟まれたファイルを1つ分進むコマンドである。BSPコマンドは、ブロックを1つ分後退するコマンドである。BSPFコマンドは、テープマークで挟まれたファイルを1つ分後退するコマンドである。FileSearchコマンドは、指定されたファイル名のファイルを検索するコマンドである。
そして制御部23は、受信したコマンドの種類に応じて、各コマンドに対応する処理を実行する(S203)。各コマンドに対応する処理のフローについては、後ほど図21〜図26を参照して説明する。
各コマンドに対応する処理が終了すると、制御部23は、S203の処理のステータスの確認を行い、ステータスに応じた処理を実行する(S204)。例えば、制御部23は、S203の処理が正常に終了したか否かの判定において、記憶部26に記憶された正常フラグ及び異常フラグの値を参照し、正常フラグがオンであれば、処理が正常に終了したと判定し、異常フラグがオンであれば、処理が異常終了したと判定する。制御部23は、S203の処理が異常終了したと判定すると、異常が発生した旨の通知をホストに送信してもよい。そして処理は終了する。
次に、S102の処理である、制御部23が各ドライブのステータスがレディか、オフラインかの監視処理の動作の詳細について説明する。図20は、各ドライブのステータスの監視処理の動作を図解したフローチャートである。
図20において、制御部23は先ず、正ドライブ24と副ドライブ25のステータスを取得する(S301)。すなわち、制御部23は、正ドライブ24と副ドライブ25の各々にテープカートリッジが挿入されている(マウントされている)か否かを示す情報を各ドライブから取得する。
そして制御部23は、S301で各ドライブから取得した情報に基いて、正ドライブ24と副ドライブ25の各々にテープカートリッジが挿入されている(マウントされている)か否かの判定を行う(S302)。以下の説明では、ドライブにテープカートリッジが挿入されている(マウントされている)ことをレディ状態と記し、ドライブにテープカートリッジが挿入されていない(マウントされていない)ことをオフライン状態と記す場合がある。
そして副ドライブ25がレディ状態であると判定すると(S302でYes)、制御部23は、副ドライブ25のレディフラグをオンにする(S303)。そして処理は終了する。
一方、S302において、副ドライブ25がレディ状態でないと判定すると(S302でNo)、制御部23は、副ドライブ25のレディフラグをオフにする(S304)。そして処理は終了する。
次に、正カートリッジへのファイルの書込み処理の動作フローについて、図21、図22を参照して説明する。図21は、正カートリッジへのファイルの書込み処理の処理内容を図解したフローチャートの前半である。図22は、正カートリッジへのファイルの書込み処理の処理内容を図解したフローチャートの後半である。図21、22のフローでは、書き込み対象データには、VOL、HDR、ファイルデータ、EOFが含まれる。
図21において、書き込みコマンドを受信すると、制御部23は先ず、書込みコマンドとともにホストから受信した書き込み対象データを、テープ装置の所定のバッファに格納する(S401)。
次に制御部23は、S401で受信した書込みコマンドの直前にホストから受信したコマンドが、副ドライブ25に対する検索コマンドか否かを判定する(S402)。ここで検索コマンドとは、具体的には例えば、SPコマンド、SPFコマンド、BSPコマンド、BSPFコマンド、FileSearchコマンドである。
直前のコマンドが検索コマンドであると判定した場合(S402でYes)、制御部23は、副ドライブ25に対してデータの書き込み処理を行う(S403)。副ドライブ25に対するデータの書き込み処理の詳細については、後ほど図23を参照して説明する。
一方、S402において、直前のコマンドが検索コマンドではないと判定した場合(S402でNo)、制御部23は、バッファにおいて、書込み対象ファイルが格納されている領域の開始アドレスを記憶部26に格納する(S404)。そして処理は図22のS405に遷移する。
図22のS405において制御部23は、バッファに格納された書込み対象データのうち、ドライブへ送信する送信対象のデータ(以下送信データと記す)を選択する(S405)。ここで選択される送信データは正ドライブ24へ送信されると、正ドライブ24により正カートリッジに書き込まれる。
次に制御部23は、送信データのバイト数を記憶部26に記憶する(S406)。ここで記憶される送信データのバイト数は、書込み対象データのうち、現在までに送信されたデータのバイト数の累積値である。これにより制御部23は、書き込み対象データのうち、どこまで書込みが終了したかの管理を行う。
次に制御部23は、送信データのサイズが80バイトか否かを判定する(S407)。送信データのサイズが80バイトでないと判定した場合(S407でNo)、処理はS412に遷移する。一方、送信データのサイズが80バイトであると判定した場合(S407でYes)、制御部23は、送信データがVOLラベルか否かを判定する(S408)。
S408において、送信データがVOLラベルであると判定した場合(S408でYes)、制御部23は、折り返し位置を決定するための平均セクター値を算出する(S409)。
平均セクター値を算出では、具体的には先ず制御部23は、送信データのVOLラベルが示すボリュームの書込み処理が以前に行われたか否かを判定する。送信データのVOLラベルが示すボリュームの書込み処理が以前に行われたことがあると判定した場合、制御部23は、以前に書き込まれたセクター値を取得する。そして取得したセクター値を、制御部23は、副カートリッジの総ラップ数で割り、その結果の値を平均セクター値として算出する。
さらに具体的には先ず制御部23は、記憶部26に記憶されたボリューム情報に、送信データのVOLラベルが示すボリューム名と同じボリューム名31を有するレコードが存在するか否かを判定する。そして、送信データのVOLラベルが示すボリューム名と同じボリューム名31を有するレコードが存在すると判定した場合、制御部23は、ボリューム名31に対応するボリュームセクター値32の値を取得する。そして、制御部23は、取得したボリュームセクター値を、副カートリッジの総ラップ数で割った値を平均セクター値として算出する。
一方、送信データのVOLラベルが示すボリュームの書込み処理が以前に行われていないと判定した場合、制御部23は、テープの始端から終端までのテープ長に対応するセクター値の1/2の値を、平均セクター値として算出する。
そして処理はS413に遷移する。
S408において、送信データがVOLラベルでないと判定した場合(S408でNo)、制御部23は、送信データが、書込み対象データのうちで、最初に正ドライブ24に送信されたHDRラベルであるか否かを判定する(S410)。送信データが、書込み対象データのうちで最初に正ドライブ24に送信されたHDRラベルであると判定した場合(S410でYes)、制御部23は、送信データのブロックIDを記憶部26に格納する(S411)。すなわち、書込み対象データのうちで最初に正ドライブ24に送信されたHDRラベルのブロックIDが記憶部26に記憶される。
S410において、送信データが書込み対象データのうちで最初に正ドライブ24に送信されたHDRラベルでないと判定した場合(S410でNo)、制御部23は、正ドライブ24のライトフラグの値がオンか否かを判定する(S412)。正ドライブ24のライトフラグの値がオンでない、すなわちオフであると判定した場合(S412でNo)、処理はS413に遷移する。正ドライブ24のライトフラグの値がオンであると判定した場合(S412でYes)、処理はS414に遷移する。
S413では、制御部23は、正ドライブ24のライトフラグの値をオンに設定する(S413)。次に制御部23は、S405で選択した送信データを正ドライブ24に送信する(S414)。正ドライブ24に送信されたデータは、正ドライブ24により正カートリッジに書き込まれる。
次に制御部23は、S414で正ドライブ24に送信したデータの正カートリッジへの書込みが正常に終了したか否かを判定する(S415)。具体的には制御部23は、正ドライブ24から書込みが正常に終了したか否かを示す情報を受信することにより、正ドライブ24に送信したデータの正カートリッジへの書込みが正常に終了したか否かを判定する。
S415において、正カートリッジへの書込みが正常に終了しなかったと判定した場合(S415でNo)、制御部23は、異常フラグの値をオンに設定する(S417)。そして処理は終了する。
一方、S415において、正カートリッジへの書込みが正常に終了したと判定した場合(S415でYes)、制御部23は、正常フラグの値をオンに設定する(S416)。
次に制御部23は、全ての書込み対象データを正ドライブに送信したか否かを判定する(S418)。制御部23が、書込み対象データのいずれかを未だ正ドライブに送信していないと判定した場合(S418でNo)、処理はS405に遷移する。一方、制御部23が、全ての書込み対象データを正ドライブに送信したと判定した場合(S418でYes)、処理は終了する。
次に、副カートリッジへのファイルの書込み処理の動作フローについて説明する。図23は、副カートリッジへのファイルの書込み処理の処理内容を図解したフローチャートである。尚、図23のフローにおいては、図21、22で説明した正カートリッジへの書き込み対象ファイルの書込みが終了したのちに開始されるものとして説明する。
図23において、先ず制御部23は、S404において記憶部26に記録した、バッファに格納された書込み対象ファイルの開始アドレスを取得する(S501)。
次に制御部23は、S406において記憶部26に記録した、正ドライブ24への送信データのバイト数を取得する(S502)。
次に制御部23は、バッファに格納された書込み対象データのうち、副ドライブ25へ送信する送信データを選択する(S503)。ここで選択する送信データのサイズは、正ドライブ24と合わせるため、S502で取得した送信データのバイト数としてもよい。
次に制御部23は、S503で選択した送信データを副ドライブ25に送信する(S504)。この送信データは副ドライブ25へ送信されると、副ドライブ25により副カートリッジに書き込まれる。
次に制御部23は、書込み対象データのうち、副カートリッジの書き込み対象ラップへ書き込んだデータのセクター値である書込みセクター値と平均セクター値との比較を行い、書込みセクター値が平均セクター値以上か否かを判定する(S505)。尚、平均セクター値は、S409またはS909で算出された値である。書込みセクター値が平均セクター値以上であると判定した場合(S505でYes)、制御部23は、S504で送信した送信データの書込み終了時のヘッダの位置が折り返し位置であると判定し、制御マークの書込み処理を行う(S506)。尚S505において、書込み対象ラップが最終ラップである場合にはそれ以上折り返し処理はできないので、処理はS507に遷移するものとする。制御マークの書込み処理については、後ほど図24を参照して説明する。そして処理は、S513に遷移する。
S505において、書込みセクター値が平均セクター値未満であると判定した場合(S505でNo)、制御部23は、S504において副ドライブ25に送信した送信データの副カートリッジへの書込みが異常終了したか否かを判定する(S507)。具体的には制御部23は、副ドライブ25から書込みが正常に終了したか否かを示す情報を受信することにより、副ドライブ25に送信した送信データの副カートリッジへの書込みが異常終了したか否かを判定する。
S507において、副カートリッジへの書込みが異常終了したと判定した場合(S507でYes)、制御部23は、異常フラグの値をオンに設定する(S508)。そして処理は終了する。
S507において、副カートリッジへの書込みが正常終了したと判定した場合(S507でNo)、制御部23は、副カートリッジのEOTを検出したか否かを判定する(S509)。具体的には例えば、制御部23は副ドライブ25から、S504で送信した送信データの書き込み中に最終ラップの終端(EOT)を検出したことを示す通知を受信し、この通知の受信を確認することによって、副カートリッジのEOTを検出したと判定する。
S509において、EOTを検出したと判定した場合(S509でYes)、制御部23は、EOTフラグをオンに設定する(S510)。そして処理は終了する。
S509において、EOTを検出していないと判定した場合(S509でNo)、制御部23は、S504で送信した送信データが、書込み対象データのうちで、最初に副ドライブ25に送信されたHDRラベルであるか否かを判定する(S511)。送信データが、書込み対象データのうちで、最初に副ドライブ25に送信されたHDRラベルであると判定した場合(S511でYes)、制御部23は、送信データのブロックIDを記憶部26に格納する(S512)。そして処理はS513に遷移する。
S511において、送信データが、書込み対象データのうちで、最初に副ドライブ25に送信されたHDRラベルではないと判定された場合(S511でNo)、処理はS513に遷移する。
S513において、制御部23は、送信対象データのうち、全てのデータの送信が完了したか否かを判定する(S513)。送信対象データのうち、全てのデータの送信が完了したと判定された場合(S513でYes)、処理は終了する。送信対象データのうち、全てのデータの送信が完了していないと判定された場合(S513でNo)、処理はS502に遷移する。
次に、S505の処理である、制御マーク書込み処理の動作フローについて説明する。図24は、制御マーク書込み処理の動作フローを図解したフローチャートである。
図24において、制御部23は先ず、制御マーク書込み処理が行われる直前に副カートリッジへ書き込まれたブロックのブロックIDを記憶部26に記憶する(S601)。
次に制御部23は、現在データの書き込みが行われているラップ(このラップを対象ラップと記す)のラップ番号が奇数か否かを判定する(S602)。ここで、ラップ番号が奇数のラップは、正順にデータが書き込まれるラップであり、ラップ番号が偶数のラップは、後順にデータが書き込まれるラップである。対象ラップのラップ番号が奇数であると判定した場合(S602でYes)、制御部23は、対象ラップに記録されたファイルのファイル名の情報を制御マークに含める。そしてその制御マークを、制御部23は、直前に副カートリッジへ書き込まれたブロックの直後の対象ラップの終了位置に書き込むように、副ドライブ25に指示する。そして処理はS605に遷移する。
S602において、対象ラップのラップ番号が偶数であると判定した場合(S602でNo)、制御部23は、対象ラップ及び対象ラップの切り替え直前のラップに記憶されたファイルのファイル名を制御マークに記録する。この制御マークを、制御部23は、直前に副カートリッジへ書き込まれたブロックの直後の位置に書き込むように副ドライブ25に指示する(S604)。そして処理はS605に遷移する。
S605において、制御部23は、制御マーク番号をインクリメントする(S605)制御マークの番号は、副カートリッジへ記録される複数の制御マークのうち、各々の制御マークを一意に識別するための識別情報である。
次に制御部23は、副ドライブ25にラップの切り替えを指示する(S606)。副ドライブ25は、切り替え指示を受信すると、次のラップへ切り替えを行う。
次に制御部23は、S606で切り替えたラップの開始位置に、切り替え前のラップに記録されたファイルのファイル名を含む制御マークの書き込みを指示する(S607)。
制御部23は、制御マークの番号をインクリメントする(S608)。そして処理は終了する。
次に、テープマーク番号を指定したファイルの検索の動作フローについて説明する。図25は、副ドライブ25に対するテープマーク番号を指定したファイルの検索の動作フローを図解したフローチャートである。
図25において、先ず制御部23は、ホストから指定されたテープマーク番号を記憶部26に格納する(S701)。
次に制御部23は、指定されたテープマーク番号にヘッドの位置づけを行うように、副ドライブ25に指示する(S702)。そして制御部23は、指定されたテープ番号への位置づけが正常に完了したか否かを判定する(S703)。すなわち制御部23は、副ドライブ25から、指定したテープマーク番号の位置にドライブの位置づけが正常に完了したか否かを示す通知を受信し、受信した通知に基づいて、指定されたテープ番号への位置づけが正常に完了したか否かを判定する。
S703において、指定されたテープ番号への位置づけが正常に完了したと判定した場合(S703でYes)、制御部23は正常フラグの値をオンに設定する(S704)。そして処理は終了する。
一方、S703において、指定されたテープ番号への位置づけが正常に完了していないと判定した場合(S703でNo)、制御部23は異常フラグの値をオンに設定する(S705)。そして処理は終了する。
次に、ファイル名を指定したファイルの検索の動作フローについて説明する。図26は、副ドライブ25に対するファイル名を指定したファイルの検索の動作フローを図解したフローチャートである。
図26において、先ず制御部23は、ホストから指定されたファイル名を記憶部26に格納する(S801)。
次に制御部23は、副カートリッジのラップに書き込まれているテープの始端側の制御マークを読み込むように、副ドライブに指示する(S802)。副ドライブは、副カートリッジのテープの始端側の制御マークを読み込むように指示されると、テープの始端側の制御マークの読み込みを行い、読み込んだ制御マークの内容を制御部23に送信する。制御部23は、制御マークの読み込み指示の応答として制御マークの内容を受信すると、制御マークに含まれるファイル名に基づいて、指定されたファイルが記録されたラップを特定する(S803)。
S803において、指定されたファイルが記録されたラップを特定できなかった場合(S803でNo)、制御部23は、副ドライブ25にラップ切り替えの指示を送信する(S805)。そして処理はS802に戻る。
一方S803において、指定されたファイルが記録されたラップを特定した場合(S803でYes)、制御部23は、特定したラップを走行させて、指定されたファイルのHDRの前部にヘッドの位置づけを行うように副ドライブ25に指示する(S804)。
次に制御部23は、指定されたファイルのHDRの前部に位置付けが正常に完了したか否かを判定する(S806)。すなわち制御部23は、副ドライブ25から、指定したファイルのHDRの前部の位置にドライブのヘッドの位置づけが正常に完了したか否かを示す通知を受信し、受信した通知に基づいて、指定されたテープ番号への位置づけが正常に完了したか否かを判定する。
S806において、指定されたテープ番号への位置づけが正常に完了したと判定した場合(S806でYes)、制御部23は正常フラグの値をオンに設定する(S807)。そして処理は終了する。
一方、S806において、指定されたテープ番号への位置づけが正常に完了していないと判定した場合(S806でNo)、制御部23は異常フラグの値をオンに設定する(S808)。そして処理は終了する。
次に、テープカートリッジ排出処理の動作フローについて説明する。図27は、テープカートリッジの排出処理時の動作フローを図解したフローチャートである。
図27において、先ず制御部23は、副ドライブ25のEOTフラグがオフか否かを判定する(S901)。EOTフラグがオフであると判定した場合(S901でYes)、制御部23は、正ドライブ24が直近で書込みを行ったブロックIDと、副ドライブ25が直近で書き込みを行ったブロックIDとが等しいか否かを判定する(S902)。
正ドライブ24が直近で書込みを行ったブロックIDと、副ドライブ25が直近で書き込みを行ったブロックIDとが等しいと判定された場合(S902でYes)、処理はS912に遷移する。
S902において、正ドライブ24が直近で書込みを行ったブロックIDと、副ドライブ25が直近で書き込みを行ったブロックIDとが異なると判定した場合(S902でNo)、制御部23は以下の処理を行う。すなわち制御部23は、副ドライブ25に対して、書込み対象データの追加前のブロックIDの位置に、ドライブのヘッドを位置づけするように指示する(S903)。具体的には制御部23は、S512で記憶部26に記録したブロックIDが書き込まれた副カートリッジの位置に、ヘッドの位置付けを行うように副ドライブ25を制御する。
そして制御部23は、正ドライブ24に対して、書込み対象データの追加前のブロックIDの位置に、ドライブのヘッドを位置づけするように指示する(S904)。具体的には制御部23は、S512で記憶部26に記録したブロックIDに対応するブロックが記録された、正カートリッジの位置に、ヘッドの位置づけを行うように正ドライブ24を制御する。
次に、制御部23は、副ドライブ25に対して、S903でヘッドの位置付けをした位置から、副カートリッジのデータを読み込むように指示する(S905)。読み込み指示を受信した副ドライブ25は、読み込んだデータをテープ装置内のバッファに格納する。そして制御部23は、正ドライブ24に対して、S905で読み込んだデータを正カートリッジへ書き込むように指示する(S906)。そして処理はS912に遷移する。
S901においてEOTフラグがオンであると判定すると(S901でNo)、制御部23は、正ドライブ24に対して、書込み対象データの追加前のブロックIDの位置に、ドライブのヘッドを位置づけするように指示する(S907)。具体的には制御部は、S411で記憶部26に記録したブロックIDが書き込まれた正カートリッジの位置に、ヘッドの位置付けを行うように正ドライブ25を制御する。
そして制御部23は、副ドライブ25に対して、書込み対象データの追加前のブロックIDの位置に、ドライブのヘッドを位置づけするように指示する(S908)。具体的には制御部23は、S411で記憶部26に記録したブロックIDに対応するブロックが記録された、副カートリッジの位置に、ヘッドの位置づけを行うように副ドライブ25を制御する。
次に制御部23は、書込み対象ファイルのすべてのブロックを正ドライブ24に書き込んだときの書込みセクター値の合計値に基づいて、平均セクター値を算出する(S909)。具体的には例えば、制御部23は、正カートリッジに書き込まれた書込み対象ファイルのセクター値を、再書込みが開始されるラップから最終ラップまでのラップ数で割った値を平均セクター値として算出する。
次に、制御部23は、正ドライブ24に対して、S907で指示した位置から、正カートリッジのデータを読み込むように指示する(S910)。読み込み指示を受信した正ドライブ24は、読み込んだデータをテープ装置内のバッファに格納する。そして制御部23は、副ドライブ25に対して、S910で読み込んだデータを副カートリッジへ書き込むように指示する(S911)。尚、副カートリッジへの書込み処理は、図23で説明したものと同様である。そして処理はS912に遷移する。
S912において、制御部23は記憶部26に記憶されたすべてのフラグの値をクリアする(S912)。すなわち制御部23は、レディフラグ、ライトフラグ、EOTフラグ、正常フラグ、及び異常フラグの値をクリアする。そして制御部23は、記憶部26に記憶された、正ドライブ24及び副ドライブ25に対するデータブロックIDをクリアする(S913)。そして処理は終了する。
尚、S907においては、制御部23により指示される正ドライブ24の位置は、S601で記憶部26に記憶されたブロックIDのブロックが記憶された正カートリッジの位置としてもよい。その場合、S908において、制御部23により指示される副ドライブ25の位置は、S601で記憶部26に記憶されたブロックIDのブロックが記憶された副カートリッジの位置としてもよい。また、S907において制御部23が、正ドライブ24に対して、書込み対象データの追加前のブロックIDの位置に、ドライブのヘッドを位置づけするように指示する場合には、S601は省略してもよい。
次に、本実施形態に係るテープ装置の構成について説明する。図28は、テープ装置22のハードウェア構成の一例を示す。
テープ装置22は、CPU(Central Processing Unit)401、主メモリ402、不揮発性メモリ403、バッファ404(404a、404b、404c)、正ドライブ405、副ドライブ406、及び通信インタフェース407を含む。CPU401、メモリ402、記憶装置403、及びバッファ404(404a、404b、404c)は、バスを介して接続される。通信インタフェース407とバッファ404a、正ドライブ24とバッファ404b、副ドライブ25とバッファ404cは、それぞれバスを介して接続される。
CPU401は、主メモリ402を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、制御部23の一部または全部の機能を提供する。
主メモリ402は、例えば半導体メモリであり、RAM(Random Access Memory)領域およびROM(Read Only Memory)領域を含んで構成される。
不揮発性メモリ403は、例えばROMやフラッシュメモリである。また、不揮発性メモリ403は、ハードディスクなどの記憶装置であってもよい。不揮発性メモリ403は、記憶部26の機能の一部または全てを提供する。
バッファ404aは、ホストと通信インタフェース407を介して送受信されるデータを一時的に記憶する。
バッファ404bは、正ドライブ24がテープカートリッジから読み出したデータや、テープカートリッジに書き込むデータを一時的に記憶する。
バッファ404cは、副ドライブ25がテープカートリッジから読み出したデータや、テープカートリッジに書き込むデータを一時的に記憶する。
正ドライブ405は、リードライトヘッド408を含む。正ドライブ405は、正ドライブ24の一例である。リードライトヘッド408は、正ドライブ405にセットされたテープカートリッジのテープ媒体にデータの読み書きを行うヘッドである。リードライトヘッド408は、第2書込部13の一例である。
副ドライブ406は、リードライトヘッド409を含む。正ドライブ405は、正ドライブ25の一例である。リードライトヘッド409は、副ドライブ406にセットされたテープカートリッジのテープ媒体にデータの読み書きを行うヘッドである。リードライトヘッド409は、第1書込部11の一例である。
通信インタフェース407は、ホストに接続し、CPU401の指示に従ってネットワークやバス等を介して、ホストとの間でデータを送受信する。
実施形態のプログラムは、例えば、下記の形態でテープ装置22に提供される。
(1)不揮発性メモリ403に予めインストールされている。
(2)プログラムサーバ(図示せず)から通信インタフェース407を介して提供される。
さらに、実施形態のテープ装置22の一部は、ハードウェアで実現してもよい。或いは、実施形態のテープ装置22は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
第1のテープ媒体に含まれる複数のトラックのうちいずれかのトラックに情報を書き込む第1書込部と、
前記第1書込部に、第1トラックに書き込み対象情報を書き込ませる制御と、該第1書込部の位置から前記第1トラックの開始位置までの長さが所定の閾値以上である場合、トラックの終端を示す制御情報を書き込ませ、前記第1書込部を第2トラックに移動させる制御を行なう書込制御部
を備えることを特徴とするテープ装置。
(付記2)
前記テープ装置は、さらに、
テープの始端と終端で折り返された複数のトラックを含む第2のテープ媒体に、前記書き込み対象情報を書き込む第2書込部と、
を備え、
前記書込制御部は、前記第1のテープ媒体への前記書き込み対象情報の書込み途中で、前記第1のテープ媒体の最終トラックの終端を検出した場合、前記第2のテープ媒体に記録された情報を、前記第1のテープ媒体に上書きする制御を行なう
ことを特徴とする付記1に記載のテープ装置。
(付記3)
前記書込制御部は、前記書き込み対象情報の前記第1のテープ媒体への書込みが完了した場合、前記第1のテープ媒体に書き込まれた情報を前記第2のテープ媒体に上書きする制御を行なう
ことを特徴とする付記1または2に記載のテープ装置。
(付記4)
前記テープ装置は、さらに、
テープ媒体に含まれる複数のトラックのうちいずれかのトラックに書き込まれた情報を読み込む読込部と、
前記読込部に前記第1トラックに記録された情報を読み込ませる制御と、前記制御情報を読み込んだ場合、前記読込部を前記第2トラックに移動させる制御を行なう読込制御部
を備えることを特徴とする付記1〜3のうちいずれか1項に記載のテープ装置。
(付記5)
前記制御情報は、各トラックに記録された情報を特定するための情報を含む
ことを特徴とする付記1〜4のうちいずれか1項に記載のテープ装置。
(付記6)
前記閾値は、前記書き込み対象情報が記憶されるテープ長を、前記第1のテープ媒体に含まれるトラック数で割った値である
ことを特徴とする付記1〜5のうちいずれか1項に記載のテープ装置。
(付記7)
前記読込制御部は、前記トラックに記録された制御情報のうち、テープの始端側に記録された前記制御情報を読み込み、読み込んだ該制御情報に基いて、前記トラックに記録された情報を特定する
ことを特徴とする付記5に記載のテープ装置。
(付記8)
テープ媒体に情報を書き込む書込処理方法であって、
前記第1のテープ媒体に含まれる複数のトラックのうちいずれかのトラックに情報を書き込む第1書込部は、第1トラックに書き込み対象情報を書き込み、該第1書込部の位置から前記第1トラックの開始位置までの長さが所定の閾値以上である場合、トラックの終端を示す制御情報を書き込み、第2トラックに移動する
ことを特徴とする書込処理方法。
(付記9)
コンピュータに、
第1のテープ媒体に含まれる複数のトラックのうちいずれかのトラックに情報を書き込む第1書込部に第1トラックに書き込み対象情報を書き込ませ、該第1書込部の位置から前記第1トラックの開始位置までの長さが所定の閾値以上である場合、トラックの終端を示す制御情報を書き込ませ、前記第1書込部を第2トラックに移動させる
処理を実行させることを特徴とする書込制御プログラム。