(57)【要約】【課題】記録媒体に対するアクセス再開を適切に行える。【解決手段】ドライブ１ａ，１ｂは、カートリッジ３を収納可能であり、情報処理装置２が管理するビット数によるブロック番号の上限よりも大きなブロック番号により記録媒体３ａにアクセス可能である。制御部１ｃは、ドライブ１ａにより記録媒体３ａに対して当該上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報をメモリ３ｂに格納する。制御部１ｃは、メモリ３ｂに記憶された管理情報に基づいて、記録媒体３ａのアクセスを実行する。【選択図】図１
2017049817.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体に対するアクセス先の位置を示すブロック番号を所定のビット数で管理する情報処理装置と接続されるストレージ装置であって、
前記記録媒体と前記記録媒体とは異なるメモリとを備えたカートリッジを収納可能であり、前記ビット数によるブロック番号の上限よりも大きなブロック番号により前記記録媒体にアクセス可能なドライブと、
前記ドライブにより前記記録媒体に対して前記上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報を前記メモリに格納し、
前記メモリに記憶された前記管理情報に基づいて、前記記録媒体の前記アクセスを実行する、制御部と、
を有するストレージ装置。
【請求項２】
前記ドライブを複数有し、
前記制御部は、第１のドライブによる前記記録媒体に対するアクセスでエラーが発生すると、前記ビット数とエラー時のブロック番号とに応じたオフセット値を前記メモリに格納し、前記カートリッジが第２のドライブに移された後、前記メモリに記憶された前記管理情報を検出すると、前記メモリに記憶された前記オフセット値に基づいて、前記記録媒体の前記アクセスを再開するブロック番号を前記第２のドライブに出力する、
請求項１記載のストレージ装置。
【請求項３】
前記制御部は、前記上限よりも大きな第１のブロック番号に対するアクセスでエラーが発生すると、前記ビット数で表わされる第２のブロック番号を前記第１のブロック番号から生成し、前記情報処理装置に送信する、請求項２記載のストレージ装置。
【請求項４】
前記制御部は、前記カートリッジが前記第２のドライブに移された後、前記第２のブロック番号を前記情報処理装置から受信すると、前記第２のブロック番号と前記メモリに記憶された前記オフセット値とに基づいて、前記第１のブロック番号を生成し、前記第２のドライブに出力する、請求項３記載のストレージ装置。
【請求項５】
前記制御部は、前記第２のドライブに前記カートリッジが移された後、前記メモリに記憶された前記管理情報を検出すると、自ストレージ装置が前記上限を超えたブロック番号を管理可能なモードで動作しているか否かの確認に応じて、前記情報処理装置による前記記録媒体へのアクセスの再開を受け付け可能であるか否かを判定する、請求項２乃至４の何れか１つに記載のストレージ装置。
【請求項６】
前記制御部は、前記管理情報を前記メモリに格納した後、前記記録媒体に対するアクセスでエラーが発生すると、前記ビット数とエラー時のブロック番号とに応じたオフセット値を前記メモリに格納する、請求項１記載のストレージ装置。
【請求項７】
前記制御部は、他のストレージ装置による前記記録媒体に対するアクセスでエラーが発生して前記カートリッジが前記ドライブに移された後、前記記録媒体の前記管理情報が前記メモリに記録されていることを検出すると、前記メモリに記憶されたオフセット値に基づいて、前記記録媒体の前記アクセスを再開するブロック番号を前記ドライブに出力する、請求項１記載のストレージ装置。
【請求項８】
前記制御部は、前記情報処理装置からの動作モードの問い合わせに対し、前記記録媒体に対するアクセス先のブロック番号が前記上限に達したときにエラーを報告するモードであることを応答し、その後、前記ドライブによる前記記録媒体に対するアクセス先のブロック番号が前記上限に達しても前記エラーを報告せずに、前記上限を超えたブロック番号に対するアクセスを継続する、請求項１記載のストレージ装置。
【請求項９】
記録媒体に対するアクセス先の位置を示すブロック番号を所定のビット数で管理する情報処理装置と接続されるストレージ装置が備えるコンピュータに、
前記記録媒体と前記記録媒体とは異なるメモリとを備えたカートリッジを収納可能であり前記ビット数によるブロック番号の上限よりも大きなブロック番号により前記記録媒体にアクセス可能なドライブにより前記記録媒体に対して前記上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報を前記メモリに格納し、
前記メモリに記憶された前記管理情報に基づいて、前記記録媒体の前記アクセスを実行する、
処理を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ装置および制御プログラムに関する。
【背景技術】
【０００２】
コンピュータなどの情報処理装置で扱われるデータを、情報処理装置の外部に取り出せる記録媒体に記録するストレージ装置が利用されている。例えば、データを書込んだ記録媒体を保管し、当該データのバックアップとして利用できる。記録媒体には、磁気テープ媒体や光ディスク媒体などがある。記録媒体は、取扱いの便利のためカートリッジ（cartridge）と呼ばれるケースに収納されていることが多い。記録媒体に記録可能なデータ量は、記録媒体自体の容量の他、情報処理装置で実行される記録処理用のソフトウェアの仕様により制限されることがある。
【０００３】
ところで、ストレージ装置では動作異常により、記録媒体に対するデータの書込みや読出しのアクセスでエラーが発生することがある。そこで、仮にアクセスエラーが発生してもアクセスを続行可能にする方法が考えられている。
【０００４】
例えば、磁気テープ媒体へのデータの書込みに対して、動的デバイス再配置（ＤＤＲ：Dynamic Device Reconfiguration）と呼ばれるリカバリ方法が提案されている。ＤＤＲでは、磁気テープ媒体へのデータの書込み中に磁気テープ装置でエラーが発生すると、磁気テープ装置がエラー発生時の書込み位置を示すブロック番号を上位装置に報告する。そして、例えば、オペレータなどにより正常なドライブに磁気テープ媒体が移されると、上位装置は、移し先のドライブを用いて、報告されたブロック番号を起点に、未書込みのデータを磁気テープ媒体に追記する。
【０００５】
この提案では、磁気テープ装置が、上位装置で管理可能なブロック番号よりも大きなブロック番号にデータを書込むことも考えられている。すると、上位装置側のソフトウェアの仕様により、磁気テープ媒体の全ての記憶領域を上位装置側で認識できなくても、磁気テープ媒体の利用可能な容量を増やせる。ＤＤＲ時は、磁気テープ装置が、自身で管理する複数のブロック番号を、上位装置側で管理可能な１つのブロック番号に対応付ける。磁気テープ装置は、エラー発生時、上位装置側で管理可能な範囲内のブロック番号を上位装置に報告する。これにより、ＤＤＲ時の上位装置側への影響を抑えてＤＤＲを行える。
【０００６】
なお、テープ状の記録媒体と半導体メモリをカセットに備え、カセットに収められたテープに記録した情報に関する情報（記録プログラム名や検索のためのアドレス番号など）をカセットが備える半導体メモリに記録する提案がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１２／０４２６６１号
【特許文献２】特開平５−２５８５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記提案のように、例えば、ストレージ装置が、上位装置で管理可能なブロック番号よりも大きなブロック番号にデータを書込むことで、上位装置のソフトウェアに起因する記録媒体の使用容量の制限を緩和し得る。このとき、上記のように、ストレージ装置が、ストレージ装置で管理可能な複数のブロック番号を、上位装置で管理可能な１つのブロック番号に対応付けることで、ＤＤＲを行うことが考えられる。しかし、この方法では、ストレージ装置側で保持するブロック番号の対応関係に依存することになり、当該対応関係を保持していないストレージ装置ではＤＤＲによる記録媒体へのアクセス再開を適切に行えない。そこで、ストレージ装置側で保持する情報に依存せずに、記録媒体へのアクセス再開を適切に実行可能にする仕組みをどのようにして実現するかが問題となる。
【０００９】
１つの側面では、本発明は、記録媒体に対するアクセス再開を適切に行えるストレージ装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、記録媒体に対するアクセス先の位置を示すブロック番号を所定のビット数で管理する情報処理装置と接続されるストレージ装置が提供される。このストレージ制御装置は、ドライブと制御部とを有する。ドライブは、記録媒体と当該記録媒体とは異なるメモリとを備えたカートリッジを収納可能であり、当該ビット数によるブロック番号の上限よりも大きなブロック番号により記録媒体にアクセス可能である。制御部は、ドライブにより記録媒体に対して上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報をメモリに格納し、メモリに記憶された管理情報に基づいて、記録媒体のアクセスを実行する。
【００１１】
また、１つの態様では、コンピュータによって実行される制御プログラムが提供される。この制御プログラムは、記録媒体に対するアクセス先の位置を示すブロック番号を所定のビット数で管理する情報処理装置と接続されるストレージ装置が備えるコンピュータに、記録媒体と当該記録媒体とは異なるメモリとを備えたカートリッジを収納可能であり当該ビット数によるブロック番号の上限よりも大きなブロック番号により記録媒体にアクセス可能なドライブにより記録媒体に対して上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報をメモリに格納し、メモリに記憶された管理情報に基づいて、記録媒体のアクセスを実行する、処理を実行させる。
【発明の効果】
【００１２】
１つの側面では、記録媒体に対するアクセス再開を適切に行える。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態のストレージ装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】テープ装置のハードウェア例を示す図である。
【図４】サーバのハードウェア例を示す図である。
【図５】テープ装置の機能例を示す図である。
【図６】ＤＤＲに用いられるコマンドのパラメータ例を示す図である。
【図７】アクセス可能なブロック番号の上限の例を示す図である。
【図８】モード管理テーブルの例を示す図である。
【図９】ＣＭに格納される情報の例を示す図である。
【図１０】モード報告処理の例を示すフローチャートである。
【図１１】書込み時ブロック番号管理処理の例を示すフローチャートである。
【図１２】読出し時ブロック番号管理処理の例を示すフローチャートである。
【図１３】エラー時ブロック番号報告処理の例を示すフローチャートである。
【図１４】カートリッジ確認処理の例を示す図である。
【図１５】位置付け処理の例を示す図である。
【図１６】ＥＸ３６ＴＲＫモードでの書込み時のシーケンス例を示す図である。
【図１７】ＤＤＲの他の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージ装置を示す図である。ストレージ装置１は、情報処理装置２に接続されている。ストレージ装置１は、情報処理装置２とネットワークを介して接続されてもよい。ストレージ装置１には、カートリッジ３を収納可能である。カートリッジ３は、記録媒体３ａおよびメモリ３ｂを有する。
【００１５】
ストレージ装置１は、情報処理装置２による指示に応じて、記録媒体３ａに対するアクセス（データの書込みやデータの読出し）を行う。記録媒体３ａは、例えば、磁気テープ媒体である。例えば、情報処理装置２の処理に用いられるデータを記録媒体３ａに記録しておくことで、記録したデータを業務データのバックアップとして利用できる。メモリ３ｂは、例えば、フラッシュメモリなどの書き換え可能な不揮発性の記憶装置である。メモリ３ｂは、カートリッジ３に備えられているため、カートリッジメモリと呼ばれることもある。
【００１６】
ここで、情報処理装置２は、記録媒体３ａに対するアクセス先の位置を示すブロック番号を第１のビット数で管理する。説明を容易化するため、一例として、第１のビット数を４とする。すると、管理可能なブロック番号の範囲は、“０ｂ００００”から“０ｂ１１１１”まで（すなわち、“０”から“７”まで）となる。ここで、プレフィクス“０ｂ”は後続の数値または数値列が２進数表記であることを示す（プレフィクスがない場合は１０進数表記である）。例えば、１ブロック番号当たりに記録可能なデータのサイズ（ブロックサイズ）は３２ＫＢ（キロバイト）である。この場合、情報処理装置２によって認識可能な記録媒体３ａの総記憶容量は、３２ＫＢ×８＝２５６ＫＢである。
【００１７】
ストレージ装置１は、ドライブ１ａ，１ｂおよび制御部１ｃを有する。ドライブ１ａ，１ｂは、カートリッジ３を収納可能である。ドライブ１ａを第１のドライブ、ドライブ１ｂを第２のドライブということもできる。例えば、ドライブ１ａは、カートリッジ３が収納されると、記録媒体３ａに対するアクセスが可能となる。ドライブ１ａ，１ｂは、第１のビット数よりも大きな第２のビット数で表わされるブロック番号により、記録媒体３ａに対するアクセスを行える。すなわち、ドライブ１ａ，１ｂでは、情報処理装置２で管理されるブロック番号の範囲の上限を超えたブロック番号により、記録媒体３ａのアクセス位置を特定できる。
【００１８】
例えば、第２のビット数を６とする。すると、管理可能なブロック番号の範囲は、“０ｂ００００００”から“０ｂ１１１１１１”（すなわち、“０”から“３１”）までとなる。上記のようにブロックサイズが３２ＫＢのとき、ドライブ１ａ，１ｂによって記録媒体３ａに記録可能なサイズは、３２ＫＢ×３２＝１０２４ＫＢである。すなわち、ストレージ装置１は、記録媒体３ａに対し、情報処理装置２によって認識可能な領域（２５６ＫＢ分の領域）よりも大きな領域（１０２４ＫＢ分の領域）を扱える。
【００１９】
制御部１ｃは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。制御部１ｃはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００２０】
制御部１ｃは、ドライブ１ａまたはドライブ１ｂに収納されたカートリッジ３の記録媒体３ａに対する、情報処理装置２によるアクセスを制御する。例えば、通常、制御部１ｃは、記録媒体３ａのアクセス位置が、第１のビット数の上限のブロック番号に相当する位置に達すると、ブロック番号が上限に達した旨を情報処理装置２に報告し、アクセスを中止させる。ただし、ドライブ１ａ，１ｂは、第１のビット数の上限のブロック番号よりも大きなブロック番号によりアクセス位置を特定可能である。このため、制御部１ｃは、ブロック番号が第１のビット数の上限のブロック番号に達しても、情報処理装置２に上記報告を行わずにアクセスを継続させる。本例では、制御部１ｃは、ブロック番号“０ｂ１１１１”に相当する位置に達してもブロック番号の上限に達した旨の報告を情報処理装置２に対して行わず、ブロック番号“０ｂ１１１１１１”に達した時点で上限に達した旨の報告を行う。すると、記録媒体３ａに対し、第１のビット数の上限のブロック番号よりも大きなブロック番号に対応する位置にも位置付け可能となる。このため、記録媒体３ａの利用可能な記憶容量に対し、情報処理装置２のソフトウェアで管理可能なブロック数が要因となる制限を緩和できる。
【００２１】
ところが、この場合、情報処理装置２で認識可能なブロック番号の上限を超えたブロック番号にアクセスしているタイミングでエラーが発生し得る。例えば、ドライブ１ａが備える記録媒体３ａに対する読み書き用のヘッドやテープのキズなどがエラー原因となり得る。ＤＤＲなどのリカバリ処理において、情報処理装置２で認識可能なブロック番号の上限を超えたブロック番号が報告されても、情報処理装置２は当該ブロック番号を適切に認識できない。このため、制御部１ｃは、次のようにリカバリ処理を行う。まず、ドライブ１ａにカートリッジ３を収納しているとき、記録媒体３ａに対するアクセスでエラーが発生すると、制御部１ｃは、図１（Ａ）に示す処理を行う。
【００２２】
まず、制御部１ｃは、ドライブ１ａを用いて記録媒体３ａに対して書込みを行う際、記録媒体３ａに対して第１のビット数の上限よりも大きなブロック番号への書込みを行うと、当該書込みが行われたことを示す管理情報をメモリ３ｂに格納する。管理情報は、情報処理装置２の管理上限のブロック番号よりも大きなブロック番号への書込みが行われたことを示すフラグであるということもできる。
【００２３】
その後、ドライブ１ａは、ドライブ１ａによる記録媒体３ａへのアクセス中に、アクセスエラーが発生すると、エラーが発生したことを制御部１ｃに通知する。制御部１ｃは、第１のビット数によるブロック番号の上限よりも大きな第１のブロック番号（エラー時のブロック番号）に対するアクセスでエラーが発生したことを検出する（図１（Ａ）（１））。例えば、第１のブロック番号は“０ｂ１１１０１０”である。図１では、ブロック番号を“ＢＬＫ（BLocK）”と略記している（図１ではＢＬＫの値を２進数で表記している）。制御部１ｃは、第１のブロック番号“０ｂ１１１０１０”を、ドライブ１ａから取得可能である（図１（Ａ）（２））。
【００２４】
制御部１ｃは、第１のビット数で表わされる第２のブロック番号を第１のブロック番号から生成して情報処理装置２に送信する。例えば、制御部１ｃは、第１のビット数“４”
で表わされる第２のブロック番号“０ｂ１０１０”を、第１のブロック番号“０ｂ１１１０１０”から生成する。より具体的には、制御部１ｃは、第１のブロック番号“０ｂ１１１０１０”の下位４ビット（第１のビット数分）を抽出して、第２のブロック番号“０ｂ１０１０”とする。制御部１ｃは、第２のブロック番号“０ｂ１０１０”を情報処理装置２に送信する（図１（Ａ）（３））。制御部１ｃは、エラー発生の報告後、情報処理装置２から要求されたタイミングで第２のブロック番号を情報処理装置２に送信してもよいし、エラーが発生した旨の報告とともに、第２のブロック番号を情報処理装置２に送信してもよい。
【００２５】
制御部１ｃは、第１のビット数と第１のブロック番号とに応じたオフセット値をメモリ３ｂに格納する（当該オフセット値を管理情報に含めてもよい）。例えば、制御部１ｃは、オフセット値“０ｂ１１００００”をメモリ３ｂに格納する。より具体的には、制御部１ｃは、第１のブロック番号“０ｂ１１１０１０”の上位２ビット（第１のビット数を除いた上位ビット数分）を取得し、下位４ビットを全て“０”にすることで、オフセット値“０ｂ１１００００”を生成し、メモリ３ｂに格納する（図１（Ａ）（４））。図１では、オフセット値を“Ｏｆｆｓｅｔ”と表記している。図１では、オフセット値を２進数で表記している。なお、図１（Ａ）（３）および図１（Ａ）（４）の各ステップの順序は逆でもよいし並列に行われてもよい。
【００２６】
その後、カートリッジ３が、ドライブ１ａからドライブ１ｂに移し替えられる。移し替えは、例えば、システムの管理者によって行われてもよいし、ロボットによって行われてもよい。情報処理装置２は、制御部１ｃからのエラー時のブロック番号の報告を受け付けたことを契機に、カートリッジ３のドライブ１ａからドライブ１ｂへの移し替えを、管理者に報知したり、カートリッジ移動用のロボットに指示したりしてもよい。また、ドライブ１ｂは、ドライブ１ａをストレージ装置１から取り除いて、ドライブ１ａが設けられていたスロットに新たに設置されたドライブでもよい。その後、制御部１ｃは、図１（Ｂ）に示す処理を行う。
【００２７】
制御部１ｃは、カートリッジ３がドライブ１ｂに移し替えられたことを検出すると、その旨を情報処理装置２に報告する。情報処理装置２は当該報告に対して、記録媒体３ａのアクセス再開位置を示す第２のブロック番号（上記の例では“１０１０”）を制御部１ｃに通知する。制御部１ｃは、第２のブロック番号を情報処理装置２から受信する（図１（Ｂ）（５））。
【００２８】
制御部１ｃは、メモリ３ｂに記憶された管理情報を検出する。これにより、制御部１ｃは、記録媒体３ａには、情報処理装置２により管理される第１のビット数の上限よりも大きなブロック番号によりデータの書込みが行われていることを確認できる。そして、制御部１ｃは、メモリ３ｂに記憶されたオフセット値を取得する。例えば、メモリ３ｂに記憶されたオフセット値は“０ｂ１１００００”である（図１（Ｂ）（６））。制御部１ｃは、第２のブロック番号とオフセット値とに基づいて、第１のブロック番号をドライブ１ｂに出力する。例えば、制御部１ｃは、第２のブロック番号とオフセット値とのＯＲ演算を行うことで、第１のブロック番号を生成する。より具体的には、第２のブロック番号が“０ｂ１０１０”であり、オフセット値が“０ｂ１１００００”である場合、制御部１ｃは、各ビットの同じ桁同士のＯＲをとることで、第１のブロック番号“０ｂ１１１０１０”を生成する。当該第１のブロック番号を復元する処理は、情報処理装置２から取得した第２のブロック番号をオフセット値（いわば補正値）により補正することで、第１のブロック番号を生成する処理であるということもできる。制御部１ｃは、生成した第１のブロック番号“０ｂ１１１０１０”をドライブ１ｂに出力する（図１（Ｂ）（７））。
【００２９】
すると、ドライブ１ｂは、第１のブロック番号“０ｂ１１１０１０”によって記録媒体３ａに対する位置付けを行える。第１のブロック番号“０ｂ１１１０１０”は、エラー時にアクセスしていたブロック番号である。すなわち、エラー時にアクセスしていたブロック番号を直接指定して、アクセスを再開できることになる。例えば、情報処理装置２は、エラーが発生したタイミングにおけるデータから、アクセスを再開するようストレージ装置１に指示する。すると、ストレージ装置１は、第１のブロック番号に相当する位置からアクセスを再開する（図１（Ｂ）（８））。
【００３０】
このように、ストレージ装置１によれば、カートリッジ３をドライブ１ａからドライブ１ｂに移し替えた後に、メモリ３ｂに記録された情報を基に記録媒体３ａのアクセス再開位置を適切に決定できる。ストレージ装置１は、カートリッジ３が備えるメモリ３ｂに、アクセス再開時のブロック番号の決定に利用される情報を記録する。このため、カートリッジ３を移動させることで、アクセス再開時のブロック位置決定用の情報も移動させることができる。これにより、ストレージ装置側で保持する情報に依存せずに、ブロック番号の決定を適切に行える。
【００３１】
また、第１の実施の形態の方法では、アクセス再開時に、第１のブロック番号（エラー時のブロック番号）を復元でき、アクセスを再開するブロック番号を直接指定できる。このため、ＤＤＲなどのリカバリ処理を効率的に行える。例えば、ストレージ装置が、自身で管理する複数のブロック番号を、上位装置側で管理可能な１つのブロック番号に対応付ける方法も考えられるが、この方法では、アクセスを再開するブロック番号を直接指定できないことがあるからである。具体的には、実際の書込みを行わずに正常書込みしたことを上位装置（例えば、情報処理装置２）に報告するといった非効率的なアクセス（いわゆる「空書き」）が、アクセス再開時に発生し得る。他方、第１の実施の形態の方法によれば、アクセス再開時のブロック番号を直接指定でき、「空書き」のような非効率的なアクセスを行わずに済む。
【００３２】
ここで、メモリ３ｂに記録されるオフセット値は、“０”であることが明らかな下位４ビットを含まない値でもよい。例えば、図１（Ａ）（４）において、上記のオフセット値“０ｂ１１００００”に代えて、オフセット値“０ｂ１１”のみをメモリ３ｂに格納してもよい。この場合、制御部１ｃは、カートリッジ３がドライブ１ｂに移された後、オフセット値“０ｂ１１”に下位４ビットを付加した値と、情報処理装置２から取得したブロック番号“０ｂ１０１０”とのＯＲ演算により、第１のブロック番号“０ｂ１１１０１０”を復元し得る。このようにして、メモリ３ｂの記憶容量を節約することもできる。
【００３３】
なお、第１の実施の形態の例では、メモリ３ｂをカートリッジ３に設けて、オフセット値の格納用としたが、ストレージ装置１が備えるメモリ（図１では図示を省略）にオフセット値を格納してもよい。その場合、当該メモリは不揮発性メモリでもよいし揮発性メモリでもよい。ただし、不揮発性メモリとすることが好ましい。停電などによりストレージ装置１が電源オフになる可能性もあり、その場合にもオフセット値を保持可能だからである。
【００３４】
また、カートリッジ３のメモリ３ｂにオフセット値を格納すれば、ストレージ装置１以外の他のストレージ装置が備えるドライブにカートリッジ３を移し替えて、メモリ３ｂに格納されたオフセット値を基に、当該他のストレージ装置によりリカバリ処理を行える。例えば、ストレージ装置が備えるドライブが１つである場合にも、カートリッジ３を他のストレージ装置のドライブに移し替えることで、ＤＤＲを効率的に実行可能となる。
【００３５】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、テープ装置１００，１００ａおよびサーバ２００を含む。テープ装置１００，１００ａは、サーバ２００に接続されている。サーバ２００は、ネットワーク１０に接続されている。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。
【００３６】
テープ装置１００，１００ａは、カートリッジ３００に収められた記録媒体にデータを書込むストレージ装置である。テープ装置１００，１００ａは、筐体内部にカートリッジ３００を複数個格納できる、ライブラリ装置やチェンジャ装置などと呼ばれるものでもよい。テープ装置１００，１００ａは、第１の実施の形態のストレージ装置１の一例である。
【００３７】
カートリッジ３００は、磁気テープ３１０およびカートリッジメモリ（ＣＭ：Cartridge Memory）３２０を有する。磁気テープ３１０は、磁気テープ媒体である。磁気テープ３１０は、ＣＭ３２０と比較して記憶領域のサイズが大きく、大量のデータを格納可能である。磁気テープ３１０には、シーケンシャルアクセスによりデータの書込みや読出しが行われる。磁気テープ３１０には、例えば、サーバ２００が扱うデータのバックアップが格納される。ＣＭ３２０は、半導体メモリである。ＣＭ３２０は、ＤＤＲ処理に用いられるデータを記憶する。カートリッジ３００は、第１の実施の形態のカートリッジ３の一例である。ここで、カートリッジ３００は、ＬＴＯ（Linear Tape-Open、登録商標）規格に準拠したメディアである。テープ装置１００，１００ａは、ＬＴＯ型のカートリッジ３００（カートリッジ内の磁気テープ３１０）に対するデータの書込みや読出しを行える。ＬＴＯ型の磁気テープ３１０では、例えば、数百ＧＢ〜数ＴＢの記憶容量を利用できる。一方、ＣＭ３２０は、磁気テープ３１０と比べると記憶容量は小さい。
【００３８】
サーバ２００は、他のサーバ装置やクライアント装置など（図示を省略）に所定の業務サービスを提供するサーバコンピュータである。サーバ２００は、テープ装置１００，１００ａを用いて、サーバ２００の処理に用いられる業務データのバックアップを行う。ここで、サーバ２００はＤＤＲの機能を備えている。サーバ２００は、端末装置からの入力に対して処理を実行するホストコンピュータと呼ばれるものでもよい。サーバ２００は、第１の実施の形態の情報処理装置２の一例である。
【００３９】
ここで、サーバ２００の磁気テープ３１０に対するアクセス方法には、磁気テープ３１０に対してアクセスするトラック数に応じて複数のモードが存在する。例えば、１８トラック（ＴＲＫ：TRacK）モード、３６ＴＲＫモードおよび１２８ＴＲＫモードがある。各モードで、サーバ２００がＤＤＲ処理に利用できるブロック番号の範囲が異なる。
【００４０】
例えば、１８ＴＲＫモードおよび３６ＴＲＫモードでは、サーバ２００は、ブロック番号を２２ビットで管理する。この場合、サーバ２００は、２22個（約４００万）のブロック番号を管理可能である。例えば、１ブロックサイズは、３２ＫＢなので、２２ビットで表わされるブロック番号によって利用可能な磁気テープ媒体の総サイズは、およそ１２８ＧＢ（＝３２ＫＢ×４００万）である。１８ＴＲＫモードで利用される磁気テープ媒体には、例えば、ＯＰＥＮ型のものがある。ＯＰＥＮ型の磁気テープ媒体のテープ１巻当たりの容量は１．２ＧＢ程度なので、ブロック番号を２２ビットで管理できれば十分である。同様に、３６ＴＲＫモードで利用される磁気テープ媒体には、例えば、ＣＭＴ（Cartridge Magnetic Tape）型のものがある。ＣＭＴ型の磁気テープ媒体のテープ１巻当たりの容量は２．４ＧＢ程度なので、ブロック番号を２２ビットで管理できれば十分である。
【００４１】
一方、近年では、磁気テープ媒体として前述のＬＴＯ型のものが利用されることが多い。ＬＴＯには複数の世代（ＬＴＯ１〜ＬＴＯ５など）があり、世代によっては、１巻当たりの容量が２００ＧＢ〜１．６ＴＢ（テラバイト）まで書込み可能となっている。ところが、１ブロックサイズが３２ＫＢであるとき、ブロック番号を２２ビットで管理していると、１２８ＧＢまでしか利用できない。そこで、ＬＴＯへのアクセスには、通常、前述の１２８ＴＲＫモードが用いられる。１２８ＴＲＫモードでは、ブロック番号が３２ビットで管理される。この場合、２32個（約４億）のブロック番号を管理可能である。３２ビットで表わされるブロック番号によって利用可能な磁気テープ媒体の総サイズは、１２８ＴＢ（＝３２ＫＢ×４億）となり、ＬＴＯ型の磁気テープ媒体の総容量をフルに利用できることになる。
【００４２】
ここで、テープ装置１００，１００ａがＬＴＯ型の磁気テープ媒体への書込みをサポートしているにも関わらず、サーバ２００側のＯＳ（Operating System）やドライバなどのソフトウェアが１８ＴＲＫ／３６ＴＲＫモードに対応しているが１２８ＴＲＫモードに対応していないことがある。例えば、既存のサーバ２００を使用し続けながら、テープ装置を新型のテープ装置１００にリプレースすることもあるからである（テープ装置１００ａも同様）。この場合、テープ装置１００は、サーバ２００に合わせて１８ＴＲＫモードまたは３６ＴＲＫモードの動作をエミュレートし、ＬＴＯ型の磁気テープ媒体への書込みを可能とする。
【００４３】
１８ＴＲＫ／３６ＴＲＫモードでは、磁気テープ３１０のアクセス先のブロック番号が２２ビットで管理可能な上限以上になると、サーバ２００によるＤＤＲ処理で使用されるブロック番号上限を超えることになる。このため、テープ装置１００は、上記エミュレート処理において、アクセス先のブロック番号が２２ビットで表わされる上限以上になると、論理ＥＯＴ（End Of Tape）エラーをサーバ２００に報告し、それ以上のアクセスを抑止することになる。
【００４４】
しかし、この場合、ＬＴＯでは２32以上のブロック番号を扱えるにも関わらず、２22以上のブロック番号を利用できないことになる。すると、磁気テープ３１０の容量をフルに利用することができない。第２の実施の形態の例では、サーバ２００は１２８ＴＲＫモードに対応していない。そこで、テープ装置１００，１００ａは、サーバ２００が１２８ＴＲＫモードに対応していない場合でも、ＤＤＲ処理への影響を抑えて、磁気テープ３１０の容量をフルに利用可能とする機能を提供する。
【００４５】
図３は、テープ装置のハードウェア例を示す図である。テープ装置１００は、プロセッサ１０１、ＲＡＭ１０２、不揮発性メモリ（ＮＶＲＡＭ：Non-Volatile Random Access Memory）１０３、接続インタフェース１０４およびドライブ１０５，１０６を有する。各ユニットがテープ装置１００のバスに接続されている。テープ装置１００ａもテープ装置１００と同様のハードウェアにより実現できる。
【００４６】
プロセッサ１０１は、テープ装置１００の情報処理を制御するプロセッサである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４７】
ＲＡＭ１０２は、プロセッサ１０１が実行するファームウェアのプログラムや、各種データを一時的に記憶する揮発性メモリである。ＲＡＭ１０２は、磁気テープ３１０やＣＭ３２０に格納するデータを一時的に保持するバッファとして利用されることもある。
【００４８】
ＮＶＲＡＭ１０３は、プロセッサ１０１が実行するファームウェアのプログラムを記憶する。ＮＶＲＡＭ１０３は、プロセッサ１０１が実行する処理に用いられるデータを記憶する。
【００４９】
接続インタフェース１０４は、サーバ２００と所定のケーブルを介して接続される通信用のインタフェースである。接続インタフェース１０４としては、例えば、ＳＡＳ（Serial Attached SCSI、ＳＣＳＩはSmall Computer System Interfaceの略）や、ＯＣＬＩＮＫ（Optical Channel LINK、登録商標）などを用いることができる。
【００５０】
ドライブ１０５，１０６は、カートリッジ３００を収納可能である。ドライブ１０５は、プロセッサ１０１の命令にしたがって、収納されたカートリッジ３００に対するデータの書込み／読出しを行う。ドライブ１０５は、テープ記録部１０５ａおよびメモリ記録部１０５ｂを有する。テープ記録部１０５ａは、磁気テープ３１０に対するデータの書込み／読出しを行う。メモリ記録部１０５ｂは、ＣＭ３２０に対するデータの書込み／読出しを行う。ドライブ１０６は、テープ記録部１０６ａおよびメモリ記録部１０６ｂを有する。テープ記録部１０６ａの機能は、テープ記録部１０５ａと同様である。メモリ記録部１０６ｂの機能は、メモリ記録部１０５ｂと同様である。
【００５１】
ここで、テープ記録部１０５ａ，１０６ａそれぞれは、磁気テープ３１０に対するデータの書込み／読出しを行うための磁気ヘッドを備えている。テープ記録部１０５ａ，１０６ａは、磁気テープ３１０のあるブロック番号に対応する位置にアクセスする際、磁気ヘッドが、磁気テープ３１０の該当位置に配置されるよう磁気テープ３１０を巻き取るなどして移動させる。このように、磁気ヘッドに対して磁気テープ３１０の位置を合わせる処理を「磁気テープ３１０の位置付け」または単に「位置付け」と称することがある。
【００５２】
図４は、サーバのハードウェア例を示す図である。サーバ２００は、プロセッサ２０１、ＲＡＭ２０２、ＨＤＤ（Hard Disk Drive）２０３、接続インタフェース２０４、画像信号処理部２０５、入力信号処理部２０６、媒体リーダ２０７および通信インタフェース２０８を有する。各ユニットはサーバ２００のバスに接続されている。
【００５３】
プロセッサ２０１は、サーバ２００の情報処理を制御する。プロセッサ２０１は、マルチプロセッサであってもよい。プロセッサ２０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ２０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００５４】
ＲＡＭ２０２は、サーバ２００の主記憶装置である。ＲＡＭ２０２は、プロセッサ２０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ２０２は、プロセッサ２０１による処理に用いる各種データを記憶する。
【００５５】
ＨＤＤ２０３は、サーバ２００の補助記憶装置である。ＨＤＤ２０３は、内蔵した磁気ディスクに対して、磁気的にデータの書込みおよび読出しを行う。ＨＤＤ２０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。サーバ２００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００５６】
接続インタフェース２０４は、テープ装置１００，１００ａと所定のケーブルを介して接続される通信用のインタフェースである。
画像信号処理部２０５は、プロセッサ２０１からの命令に従って、サーバ２００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００５７】
入力信号処理部２０６は、サーバ２００に接続された入力デバイス１２から入力信号を取得し、プロセッサ２０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００５８】
媒体リーダ２０７は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ２０７は、例えば、プロセッサ２０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ２０２またはＨＤＤ２０３に格納する。
【００５９】
通信インタフェース２０８は、ネットワーク１０を介して他のコンピュータと通信を行う。通信インタフェース２０８は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００６０】
図５は、テープ装置の機能例を示す図である。テープ装置１００は、ＲＷ（Read / Write）制御部１１０および記憶部１２０を有する。ＲＷ制御部１１０は、ＲＡＭ１０２に格納されたプログラムをプロセッサ１０１が実行することで実現される。記憶部１２０は、ＲＡＭ１０２やＮＶＲＡＭ１０３上に確保された記憶領域により実現される。
【００６１】
ＲＷ制御部１１０は、ドライブ１０５，１０６によるデータの書込みや読出しの実行を制御する。例えば、ドライブ１０５にカートリッジ３００が収納されている場合、ＲＷ制御部１１０は、サーバ２００から書込み指示されたデータを、カートリッジ３００の磁気テープ３１０に書込む。また、ＲＷ制御部１１０は、サーバ２００から読出し指示されたデータを、カートリッジ３００の磁気テープ３１０から読出し、サーバ２００に提供する。
【００６２】
ＲＷ制御部１１０は、ドライブ１０５またはドライブ１０６において、あるブロック番号に対するアクセス時にアクセスエラーが発生すると、エラー発生をサーバ２００に通知する。その後、ＲＷ制御部１１０は、アクセス時のブロック番号の通知指令をサーバ２００から受け付けると、該当のブロック番号をサーバ２００に報告する。ただし、ＲＷ制御部１１０は、アクセスエラーの発生したブロック番号が、サーバ２００が管理するブロック番号の上限（２22）以上である場合、当該ブロック番号から２２ビット長のブロック番号を生成して、サーバ２００に報告する。ＲＷ制御部１１０は、生成した２２ビット長のブロック番号に対する元のブロック番号のオフセット値をＣＭ３２０に格納する。
【００６３】
ＲＷ制御部１１０は、その後、正常なドライブ（ドライブ１０５でエラーが発生した場合、ドライブ１０６）にカートリッジ３００が移されたことを検出すると、エラー時に報告した２２ビット長のブロック番号をサーバ２００から取得する。当該２２ビット長のブロック番号とＣＭ３２０に記憶されたオフセット値とを基に、磁気テープ３１０へのアクセス再開位置を決定する。
【００６４】
記憶部１２０は、ＲＷ制御部１１０による処理に用いられる情報を記憶する。記憶部１２０は、ＲＷ制御部１１０がサーバ２００から受信した書込み対象のデータや、磁気テープ３１０から読出したデータを一時的に記憶するバッファとして用いられることもある。
【００６５】
上記の説明では、テープ装置１００の機能について説明したが、テープ装置１００ａも同様の機能を有する。ＤＤＲ処理はテープ装置１００，１００ａを跨いで実行されることもある（例えば、テープ装置１００でのアクセスでエラーが発生した場合、テープ装置１００ａを用いて当該アクセスをリカバリするなど）。
【００６６】
サーバ２００は、ＤＤＲ処理部２１０および記憶部２２０を有する。ＤＤＲ処理部２１０は、ＲＡＭ２０２に記憶されたプログラムをプロセッサ２０１が実行することで実現される。記憶部２２０は、ＲＡＭ２０２またはＨＤＤ２０３上に確保された記憶領域により実現される。
【００６７】
ＤＤＲ処理部２１０は、ＤＤＲ処理を制御する。具体的には、テープ装置１００で、ドライブ１０５に収納されたカートリッジ３００の磁気テープ３１０にアクセス中、アクセスエラーが発生したとする。すると、ＤＤＲ処理部２１０は、テープ装置１００からアクセスエラーの通知とともに、エラー時のブロック番号をテープ装置１００から受信する。ＤＤＲ処理部２１０は、カートリッジ３００をドライブ１０６に移し替えるようオペレータに報知する。例えば、ＤＤＲ処理部２１０は、カートリッジ３００の移し替えを促すメッセージをディスプレイ１１に表示させることで、当該報知を行ってもよい。または、ＤＤＲ処理部２１０は、オペレータが利用する端末装置に当該メッセージを送信してもよいし、サーバ２００に接続されたスピーカから音声により当該メッセージを報知してもよい。
【００６８】
その後、ＤＤＲ処理部２１０は、カートリッジ３００がドライブ１０６に移し替えられた旨の通知をテープ装置１００から受け付ける。ＤＤＲ処理部２１０は、エラー時に報告を受けたブロック番号とともに、当該ブロック番号に対応する位置からアクセスを再開するようテープ装置１００に指示する。
【００６９】
記憶部２２０は、ＤＤＲ処理部２１０による処理に用いられる情報を記憶する。例えば、記憶部２２０は、テープ装置１００から受信したエラー時のブロック番号の情報を記憶する。
【００７０】
図６は、ＤＤＲに用いられるコマンドのパラメータ例を示す図である。ＤＤＲでは、主に２種類のコマンドが利用される。第１のコマンドは、“ＲＤＢＩＤ（ReaD Block ID）”である。ＩＤはIDentifierの略である。“ＢＩＤ”はブロック番号を示す。ＲＤＢＩＤコマンドは、テープ装置１００からサーバ２００へアクセスエラーが通知された後に、サーバ２００によってテープ装置１００に対して発行されるコマンドであり、エラー時のブロック番号の通知を指示するコマンドである。第２のコマンドは、“ＬＯＣＡＴＥ”である。ＬＯＣＡＴＥコマンドは、サーバ２００によりテープ装置１００に対して発行されるコマンドであり、アクセス再開時の磁気テープ３１０の位置をテープ装置１００に指示するコマンドである。
【００７１】
ＲＤＢＩＤコマンドおよびＬＯＣＡＴＥコマンドの何れも、パラメータとして、ブロック番号が指定される。図６（Ａ）は、ＲＤＢＩＤコマンドにおいてブロック番号を指定するパラメータで使用されるビット数を示している。１８ＴＲＫモードおよび３６ＴＲＫモードでは、ＲＤＢＩＤコマンドでブロック番号の指定に使用されるビット数は２２である（図６（Ａ）の０番目〜２１番目のビットが対応）。一方、１２８ＴＲＫモードでは、ＲＤＢＩＤコマンドでブロック番号の指定に使用されるビット数は３２である（図６（Ａ）の０番目〜３１番目のビットが対応）。
【００７２】
図６（Ｂ）は、ＬＯＣＡＴＥコマンドにおいてブロック番号を指定するパラメータで使用されるビット数を示している。１８ＴＲＫおよび３６ＴＲＫモードでは、ＬＯＣＡＴＥコマンドでブロック番号の指定に使用されるビット数は２２である（図６（Ｂ）の０番目〜２１番目のビットが対応）。一方、１２８ＴＲＫモードでは、ＬＯＣＡＴＥコマンドでブロック番号の指定に使用されるビット数は３２である（図６（Ｂ）の０番目〜３１番目のビットが対応）。
【００７３】
図７は、アクセス可能なブロック番号の上限の例を示す図である。図７では、磁気テープ３１０の論理的な記憶領域を１つの帯で模式的に表わしている。ＬＴＯ型の磁気テープ３１０の記憶領域の先頭（ＢＯＴ：Beginning Of Tape）のブロック番号は“０”である。終端（ＥＯＴ）のブロック番号は“２32−１”である。ブロック番号“０”の位置には、磁気テープ３１０を識別するＶＯＬ  ＩＤ（VOLume ID）が書込まれる。以降のブロックにユーザデータがシーケンシャルに書込まれる。ブロックサイズは３２ＫＢである。
【００７４】
例えば、３６ＴＲＫモードでは、前述のようにブロック番号は２２ビットで管理されるので、ブロック番号の最大値は２22−１である。一方、１２８ＴＲＫモードでは、前述のようにブロック番号は３２ビットで管理されるので、ブロック番号の最大値は２32−１である。
【００７５】
３６ＴＲＫモードをサポートするが１２８ＴＲＫモードをサポートしていないサーバ２００からも磁気テープ３１０の記憶領域をフルに利用可能とするために、テープ装置１００の動作モードとして、ＥＸ３６ＴＲＫモード（拡張３６ＴＲＫモード）を新たに設ける。ＥＸ３６ＴＲＫモードは、テープ装置１００があたかも３６ＴＲＫモードで磁気テープ３１０にアクセスしているようにサーバ２００に認識させるが、テープ装置１００内では磁気テープ３１０に対して１２８ＴＲＫモード相当でアクセスを行うモードである。ＥＸ３６ＴＲＫモードでは、ブロック番号が２22に達しても、テープ装置１００は、サーバ２００へ論理ＥＯＴエラーを報告しない。そして、テープ装置１００は、ＥＸ３６ＴＲＫモードでは、１２８ＴＲＫモードと同様、３２ビットで表わされるブロック番号により位置付けする。このため、ＥＸ３６ＴＲＫモードでは、１２８ＴＲＫモードと同様に磁気テープ３１０の記憶領域をフルに利用できる。
【００７６】
図８は、モード管理テーブルの例を示す図である。モード管理テーブル１２１は、記憶部１２０に格納される。モード管理テーブル１２１は、テープ装置動作区分、動作モード、ＳＮＳ  Ｉ／Ｏ（SeNSe Input / Output）コマンドおよびブロック管理ビット数の項目を含む。
【００７７】
テープ装置動作区分の項目には、テープ装置の動作区分を示す情報が登録される。動作モードの項目には、テープ装置の動作モードを示す情報が登録される。ＳＮＳ  Ｉ／Ｏコマンドの項目には、動作モードに応じたＳＮＳ  Ｉ／Ｏコマンドに対する応答コードが登録される。ここで、ＳＮＳ  Ｉ／Ｏコマンドは、サーバ２００により発行されるコマンドであり、テープ装置１００の動作区分を確認するためのコマンドである。テープ装置１００は、ＳＮＳ  Ｉ／Ｏコマンドに対して、テープ装置１００で現在利用している動作モードに応じた応答コードを、サーバ２００に応答することで、テープ装置１００の動作区分をサーバ２００に報告する。ブロック管理ビット数の項目には、ブロック番号の管理に用いるビット数が登録される。
【００７８】
例えば、モード管理テーブル１２１には、テープ装置動作区分が“ＣＭＴ型”、動作モードが“３６ＴＲＫ”、ＳＮＳ  Ｉ／Ｏコマンドが“ＦＦ１７Ｅ２３６６４７０３６”、ブロック管理ビット数が“２２”という情報が登録される。
【００７９】
これは、テープ装置１００の動作区分が“ＣＭＴ型”であり、動作モードが３６ＴＲＫモードであるとき、サーバ２００に“ＣＭＴ型（３６ＴＲＫモード）”であることを通知するために、ＳＮＳ  Ｉ／Ｏコマンドの応答コード“ＦＦ１７Ｅ２３６６４７０３６”を報告することを示す。また、３６ＴＲＫモードでは、ブロック番号の管理に利用可能なビット数が２２ビットであることを示す。
【００８０】
また、例えば、モード管理テーブル１２１には、テープ装置動作区分が“ＬＴＯ型”、動作モードが“ＥＸ３６ＴＲＫ”、ＳＮＳ  Ｉ／Ｏコマンドが“ＦＦ１７Ｅ２３６６４７０３６”、ブロック管理ビット数が“３２”という情報が登録される。
【００８１】
これは、テープ装置１００の動作区分が“ＬＴＯ型”であり、動作モードがＥＸ３６ＴＲＫモードであるとき、サーバ２００に“ＬＴＯ型”ではなく“ＣＭＴ型（３６ＴＲＫモード）”であることを通知するために、ＳＮＳ  Ｉ／Ｏコマンドの応答コード“ＦＦ１７Ｅ２３６６４７０３６”（３６ＴＲＫモードの応答コード）を報告することを示す。この報告は、テープ装置１００の動作区分が“ＣＭＴ型”である旨を、サーバ２００に認識させるためである。また、ＥＸ３６ＴＲＫモードでは、ブロック番号の管理に利用可能なビット数が３２ビットであることを示す。
【００８２】
図９は、ＣＭに格納される情報の例を示す図である。ＣＭ３２０には、ＥＸ３６ＴＲＫ使用フラグ３２１（図９（Ａ））およびオフセット値３２２（図９（Ｂ））が格納される。ＥＸ３６ＴＲＫ使用フラグ３２１は、磁気テープ３１０に対するアクセスにＥＸ３６ＴＲＫモードが用いられており、かつ、３６ＴＲＫモードのブロック番号の上限を超えたブロック番号でアクセスが行われた場合に“ｔｒｕｅ”が設定される管理情報である。磁気テープ３１０に対するアクセスにＥＸ３６ＴＲＫモードが用いられていない場合、または、アクセス先のブロック番号が３６ＴＲＫモードのブロック番号の上限を超えていない場合、ＥＸ３６ＴＲＫ使用フラグ３２１は、“ｆａｌｓｅ”が設定される。磁気テープ３１０に対するアクセスにＥＸ３６ＴＲＫモードが用いられておらず、かつ、アクセス先のブロック番号が３６ＴＲＫモードのブロック番号の上限を超えていない場合も、ＥＸ３６ＴＲＫ使用フラグ３２１は、“ｆａｌｓｅ”が設定される。ＥＸ３６ＴＲＫ使用フラグ３２１は、磁気テープ３１０に対するアクセス先のブロック番号が２２ビットの上限を超えていることを示す管理情報であるということもできる。
【００８３】
オフセット値３２２は、磁気テープ３１０に対するアクセスエラー時に、ＲＷ制御部１１０によって生成されるオフセット値である。オフセット値３２２は、エラー時においてアクセスされていた３２ビットのブロック番号の下位２２ビット分が除去された上位１０ビットである。オフセット値３２２は、当該３２ビットのブロック番号の下位２２ビットを除去せずに、下位２２ビットを全て“０”とした値でもよい（ただし、下位２２ビット分を除去した方が、ＣＭ３２０の記憶領域を節約できる）。
【００８４】
例えば、磁気テープ３１０のブロック番号“０ｘＡ００００１００”でアクセスエラーが発生したとする（プレフィクス“０ｘ”は後続の数値または数値列が１６進数表記であることを示す）。ブロック番号“０ｘＡ００００１００”は、２２ビットで管理可能な上限のブロック番号を超えている。この場合、例えば、上位１０ビット“０ｂ１０１０００００００”がオフセット値３２２としてＣＭ３２０に記録される（図９のオフセット値は２進数表記である）。オフセット値３２２とＥＸ３６ＴＲＫ使用フラグ３２１との両方を含む情報を管理情報と考えてもよい。
【００８５】
次に、以上のような構成のテープ装置１００における処理手順を説明する。ここで、テープ装置１００には、予め何れの動作モードとするかが（サーバ２００側の動作モードと整合した動作モードが）システム管理者によって予め設定されている。例えば、ＮＶＲＡＭ１０３に、予め設定された動作モードの情報が格納される。
【００８６】
図１０は、モード報告処理の例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
（Ｓ１１）ＲＷ制御部１１０は、モード確認コマンド（ＳＮＳ  Ｉ／Ｏコマンド）をサーバ２００から受信する。ＲＷ制御部１１０は、ＮＶＲＡＭ１０３を参照して、テープ装置１００に設定されている動作モードを取得する。ＲＷ制御部１１０は、取得した動作モードを基に、以下のステップＳ１２，Ｓ１４，Ｓ１６，Ｓ１８の判定を行う。
【００８７】
（Ｓ１２）ＲＷ制御部１１０は、設定された動作モードが１８ＴＲＫモードであるか否かを判定する。１８ＴＲＫモードである場合、処理をステップＳ１３に進める。１８ＴＲＫモードでない場合、処理をステップＳ１４に進める。
【００８８】
（Ｓ１３）ＲＷ制御部１１０は、１８ＴＲＫモードであることを示す応答コード“ＦＦ１７５１１８６４７０１８”をサーバ２００に報告する。そして、処理を終了する。動作モードに対して報告すべき応答コードは、モード管理テーブル１２１から取得可能である。サーバ２００は、応答コードから、サーバ２００の動作モードがテープ装置１００の動作モードと一致していることを確認する。その上で、サーバ２００は、テープ装置１００に収納されたカートリッジ３００へのアクセスを行うことになる（他のモードでも同様）。
【００８９】
（Ｓ１４）ＲＷ制御部１１０は、３６ＴＲＫモードであるか否かを判定する。３６ＴＲＫモードである場合、処理をステップＳ１５に進める。３６ＴＲＫモードでない場合、処理をステップＳ１６に進める。
【００９０】
（Ｓ１５）ＲＷ制御部１１０は、３６ＴＲＫモードであることを示す応答コード“ＦＦ１７Ｅ２３６６４７０３６”をサーバ２００に報告する。そして、処理を終了する。
（Ｓ１６）ＲＷ制御部１１０は、ＥＸ３６ＴＲＫモードであるか否かを判定する。ＥＸ３６ＴＲＫモードである場合、処理をステップＳ１７に進める。ＥＸ３６ＴＲＫモードでない場合、処理をステップＳ１８に進める。
【００９１】
（Ｓ１７）ＲＷ制御部１１０は、３６ＴＲＫモードであることを示す応答コード“ＦＦ１７Ｅ２３６６４７０３６”をサーバ２００に報告する。そして、処理を終了する。
（Ｓ１８）ＲＷ制御部１１０は、１２８ＴＲＫモードであるか否かを判定する。１２８ＴＲＫモードである場合、処理をステップＳ１９に進める。１２８ＴＲＫモードでない場合、処理をステップＳ２０に進める。
【００９２】
（Ｓ１９）ＲＷ制御部１１０は、１２８ＴＲＫモードであることを示す応答コード“ＦＦ１７Ｅ２７Ｆ６４８３７Ｆ”をサーバ２００に報告する。そして、処理を終了する。
（Ｓ２０）ＲＷ制御部１１０は、モードアンマッチエラーをサーバ２００に報告する。何れのモードも設定されておらず、モードを確認できなかったからである。
【００９３】
このようにして、サーバ２００は、テープ装置１００のモードを確認する。特に、テープ装置１００は、ＥＸ３６ＴＲＫモードが設定されている場合、３６ＴＲＫモードであることをサーバ２００に報告する。なお、サーバ２００は、報告を受けた動作モードが、サーバ２００の動作モードと一致しない場合には、システム管理者にエラーを通知してもよい。
【００９４】
図１１は、書込み時ブロック番号管理処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。以下の手順は、ドライブ１０５またはドライブ１０６を用いた磁気テープ３１０へのデータ書込み時（データはブロック番号の昇順にシーケンシャルに書込まれる）、ブロック番号がインクリメントされるたびに実行される。
【００９５】
（Ｓ２１）ＲＷ制御部１１０は、テープ装置１００の動作モードが１８ＴＲＫまたは３６ＴＲＫモードの何れかであるか否かを判定する。１８ＴＲＫまたは３６ＴＲＫモードの何れかである場合、処理をステップＳ２２に進める。１８ＴＲＫまたは３６ＴＲＫモードの何れでもない場合、処理をステップＳ２４に進める。
【００９６】
（Ｓ２２）ＲＷ制御部１１０は、書込み対象のブロック番号（書込みブロック番号）が２22以上であるか否かを判定する。２22以上の場合、処理をステップＳ２３に進める。２22以上でない場合、処理を終了する（１８ＴＲＫまたは３６ＴＲＫモードでの書込みが継続される）。
【００９７】
（Ｓ２３）ＲＷ制御部１１０は、論理ＥＯＴ検出エラーをサーバ２００に報告する。そして、処理を終了する。論理ＥＯＴ検出エラーの報告後、書込み処理は中断されることになる。
【００９８】
（Ｓ２４）ＲＷ制御部１１０は、テープ装置１００の動作モードが１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れかであるか否かを判定する。１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れかである場合、処理をステップＳ２６に進める。１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れでもない場合、処理をステップＳ２５に進める。
【００９９】
（Ｓ２５）ＲＷ制御部１１０は、モードアンマッチエラーをサーバ２００に報告する。そして、処理を終了する。モードアンマッチエラーの報告後、書込み処理は中断されることになる。
【０１００】
（Ｓ２６）ＲＷ制御部１１０は、書込みブロック番号が２32以上であるか否かを判定する。２32以上である場合、処理をステップＳ２７に進める。２32以上でない場合、処理をステップＳ２８に進める。
【０１０１】
（Ｓ２７）ＲＷ制御部１１０は、論理ＥＯＴ検出エラーをサーバ２００に報告する。そして、処理を終了する。論理ＥＯＴ検出エラーの報告後、書込み処理は中断されることになる。
【０１０２】
（Ｓ２８）ＲＷ制御部１１０は、テープ装置１００の動作モードがＥＸ３６ＴＲＫモードであるか否かを判定する。ＥＸ３６ＴＲＫモードである場合、処理をステップＳ２９に進める。ＥＸ３６ＴＲＫモードでない場合、処理を終了する。なお、ＥＸ３６ＴＲＫモードでない場合は、１２８ＴＲＫモードであるということになる（１２８ＴＲＫモードでの書込みが継続される）。
【０１０３】
（Ｓ２９）ＲＷ制御部１１０は、書込みブロック番号が２22以上であるか否かを判定する。２22以上の場合、処理をステップＳ３０に進める。２22以上でない場合、処理をステップＳ３１に進める。
【０１０４】
（Ｓ３０）ＲＷ制御部１１０は、ＥＸ３６ＴＲＫ使用フラグ３２１を“ｔｒｕｅ”に設定する。そして、処理を終了する（ＥＸ３６ＴＲＫモード（１２８ＴＲＫモード相当）での書込みが継続される）。
【０１０５】
（Ｓ３１）ＲＷ制御部１１０は、ＥＸ３６ＴＲＫ使用フラグ３２１を“ｆａｌｓｅ”に設定する。そして、処理を終了する（ＥＸ３６ＴＲＫモード（１２８ＴＲＫモード相当）での書込みが継続される）。
【０１０６】
なお、複数のブロック番号に対してシーケンシャルに連続して書込みを行う場合には、ステップＳ２１，Ｓ２４，Ｓ２８のモード確認は１度実行すれば２回目以降は実行しなくてもよい（２回目以降も判定結果は同じになるため）。その場合、ＲＷ制御部１１０は、１回目に実行した手順と同じ手順で、ブロック番号の判定を行うことになる（例えば、１回目にステップＳ２１でＹｅｓであった場合、２回目以降はステップＳ２１の判定を行うまでもなくステップＳ２２の判定によりブロック番号の判定を行う）。また、ＲＷ制御部１１０は、２回目以降、設定済のフラグ内容から変更がない場合はステップＳ３０，Ｓ３１をスキップしてよい（例えば、既に“ｔｒｕｅ”が設定されている場合に上書きして“ｔｒｕｅ”を設定せずにスキップしてよい）。
【０１０７】
図１２は、読出し時ブロック番号管理処理の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。以下の手順は、ドライブ１０５またはドライブ１０６を用いた磁気テープ３１０からのデータ読出し時（データはブロック番号の昇順にシーケンシャルに読出される）、ブロック番号がインクリメントされるたびに実行される。
【０１０８】
（Ｓ４１）ＲＷ制御部１１０は、テープ装置１００の動作モードが１８ＴＲＫまたは３６ＴＲＫモードの何れかであるか否かを判定する。１８ＴＲＫまたは３６ＴＲＫモードの何れかである場合、処理をステップＳ４２に進める。１８ＴＲＫまたは３６ＴＲＫモードの何れでもない場合、処理をステップＳ４４に進める。
【０１０９】
（Ｓ４２）ＲＷ制御部１１０は、読出し対象のブロック番号（読出しブロック番号）が２22以上であるか否かを判定する。２22以上の場合、処理をステップＳ４３に進める。２22以上でない場合、処理を終了する（１８ＴＲＫまたは３６ＴＲＫモードでの読出しが継続される）。
【０１１０】
（Ｓ４３）ＲＷ制御部１１０は、論理ＥＯＴ検出エラーをサーバ２００に報告する。そして、処理を終了する。論理ＥＯＴ検出エラーの報告後、読出し処理は中断されることになる。
【０１１１】
（Ｓ４４）ＲＷ制御部１１０は、テープ装置１００の動作モードが１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れかであるか否かを判定する。１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れかである場合、処理をステップＳ４６に進める。１２８ＴＲＫまたはＥＸ３６ＴＲＫモードの何れでもない場合、処理をステップＳ４５に進める。
【０１１２】
（Ｓ４５）ＲＷ制御部１１０は、モードアンマッチエラーをサーバ２００に報告する。そして、処理を終了する。モードアンマッチエラーの報告後、読出し処理は中断されることになる。
【０１１３】
（Ｓ４６）ＲＷ制御部１１０は、読出しブロック番号が２32以上であるか否かを判定する。２32以上である場合、処理をステップＳ４７に進める。２32以上でない場合、処理を終了する（１２８ＴＲＫモードまたはＥＸ３６ＴＲＫモード（１２８ＴＲＫモード相当）での読出しが継続される）。
【０１１４】
（Ｓ４７）ＲＷ制御部１１０は、論理ＥＯＴ検出エラーをサーバ２００に報告する。そして、処理を終了する。論理ＥＯＴ検出エラーの報告後、読出し処理は中断されることになる。
【０１１５】
なお、複数のブロック番号に対してシーケンシャルに連続して読出しを行う場合には、ステップＳ４１，Ｓ４４のモード確認は１度実行すれば２回目以降は実行しなくてもよい（２回目以降も判定結果は同じになるため）。その場合、ＲＷ制御部１１０は、１回目に実行した手順と同じ手順で、ブロック番号の判定を行うことになる（例えば、１回目にステップＳ４１でＹｅｓであった場合、２回目以降はステップＳ４１の判定を行うまでもなくステップＳ４２の判定によりブロック番号の判定を行う）。
【０１１６】
図１３は、エラー時ブロック番号報告処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
（Ｓ５１）ＲＷ制御部１１０は、ドライブ１０５に収納されたカートリッジ３００の磁気テープ３１０に対するアクセスでエラーが発生したことを検出する。ＲＷ制御部１１０は、エラー発生をサーバ２００に報告する。このとき、カートリッジ３００の磁気テープ３１０に格納されたＶＯＬ  ＩＤもサーバ２００に報告する。報告されたＶＯＬ  ＩＤは、サーバ２００によって保持される。その後、ＲＷ制御部１１０は、ＲＤＢＩＤコマンドをサーバ２００から受信する。
【０１１７】
（Ｓ５２）ＲＷ制御部１１０は、アクセスエラーが発生したタイミングにおけるアクセス先のブロック番号（エラー時ブロック番号）をドライブ１０５から取得する。
（Ｓ５３）ＲＷ制御部１１０は、ドライブ１０５にマウントされているカートリッジ３００のＣＭ３２０から、ＥＸＴ３６ＴＲＫ使用フラグ３２１を取得する。
【０１１８】
（Ｓ５４）ＲＷ制御部１１０は、ＥＸＴ３６ＴＲＫ使用フラグ３２１が“ｔｒｕｅ”であるか否かを判定する。“ｔｒｕｅ”である場合、処理をステップＳ５５に進める。“ｔｒｕｅ”でない（すなわち、“ｆａｌｓｅ”である）場合、処理をステップＳ５７に進める。ＥＸＴ３６ＴＲＫ使用フラグ３２１が“ｔｒｕｅ”の場合、ＥＸＴ３６ＴＲＫモードが用いられており、エラー時ブロック番号が、２２ビットで表わされるブロック番号の上限を超過していることになる。一方、ＥＸＴ３６ＴＲＫ使用フラグ３２１が“ｆａｌｓｅ”の場合、ＥＸＴ３６ＴＲＫモードが用いられていない、あるいは、ＥＸＴ３６ＴＲＫモードが用いられているがエラー時ブロック番号が２２ビットで表わされるブロック番号の上限以下であることになる。
【０１１９】
（Ｓ５５）ＲＷ制御部１１０は、エラー時ブロック番号の下位２２ビットを除去した上位１０ビット（オフセット値）をＣＭ３２０に記録する。例えば、エラー時ブロック番号が“０ｂ１０１００００００００００００００００００００１００００００００”の場合、オフセット値３２２は、“０ｂ１０１０００００００”である。
【０１２０】
（Ｓ５６）ＲＷ制御部１１０は、エラー時ブロック番号の下位２２ビット（ダミーのブロック番号）をサーバ２００（ホスト）に報告する。例えば、ステップＳ５５のエラー時ブロック番号に対して、サーバ２００に報告されるダミーのブロック番号は、“０ｂ０００００００００００００１００００００００”である。そして、処理を終了する。
【０１２１】
（Ｓ５７）ＲＷ制御部１１０は、エラー時ブロック番号をサーバ２００（ホスト）に報告する。この場合、サーバ２００では、エラー時ブロック番号として下位２２ビットのみが認識される（上位１０ビットは全て“０”なので、サーバ２００側で当該上位１０ビットが破棄されても問題ない）。そして、処理を終了する。
【０１２２】
サーバ２００は、ＲＤＢＩＤコマンドに対してエラー時ブロック番号をテープ装置１００から取得すると、カートリッジ３００を別のドライブに移すようオペレータに報知する。オペレータは、ドライブ１０５からドライブ１０６へカートリッジ３００を移し替える。
【０１２３】
図１４は、カートリッジ確認処理の例を示す図である。以下、図１４に示す処理をステップ番号に沿って説明する。
（Ｓ６１）ＲＷ制御部１１０は、ドライブ１０６（他ドライブ）に収納されたカートリッジ３００をマウントする。これにより、ドライブ１０６を用いた磁気テープ３１０およびＣＭ３２０へのアクセスが可能となる。ＲＷ制御部１１０は、カートリッジ３００がドライブ１０６にマウントされたことをサーバ２００に通知する。
【０１２４】
（Ｓ６２）ＲＷ制御部１１０は、サーバ２００からＶＯＬ  ＩＤの報告指示を受け付ける。ＲＷ制御部１１０は、磁気テープ３１０に格納されたＶＯＬ  ＩＤを取得して、サーバ２００に報告する。
【０１２５】
サーバ２００は、ドライブ１０６にマウントされたカートリッジ３００が、ドライブ１０５でアクセスエラーになったものと同一であることをＶＯＬ  ＩＤにより判断する。例えば、サーバ２００は、エラー発生時にテープ装置１００からカートリッジ３００のＶＯＬ  ＩＤを取得し、保持している（図１３のステップＳ５１）。このため、サーバ２００は、保持されているＶＯＬ  ＩＤと、ステップＳ６２で取得したＶＯＬ  ＩＤとが一致していれば、ドライブ１０６にマウントされたカートリッジ３００がＤＤＲ対象のものであると判断できる。一方、両方のＶＯＬ  ＩＤが一致していなければ、ドライブ１０６にマウントされたカートリッジ３００はＤＤＲ対象ではないということになる。
【０１２６】
サーバ２００は、ドライブ１０６にマウントされたカートリッジ３００がＤＤＲ対象のものであると判断すると、ＬＯＣＡＴＥコマンドを用いて、磁気テープ３１０に対するアクセス再開を行うブロック番号を、テープ装置１００に通知する。テープ装置１００は、ＬＯＣＡＴＥコマンドで指定されたブロック番号を基に、磁気テープ３１０の位置付けを行う。
【０１２７】
図１５は、位置付け処理の例を示す図である。以下、図１５に示す処理をステップ番号に沿って説明する。
（Ｓ７１）ＲＷ制御部１１０は、サーバ２００（ホスト）からブロック番号を指定したＬＯＣＡＴＥコマンドを受信する。ＲＷ制御部１１０は、サーバ２００から受信したブロック番号を記憶部１２０に記録する。
【０１２８】
（Ｓ７２）ＲＷ制御部１１０は、ドライブ１０６にマウントされているカートリッジ３００のＣＭ３２０から、ＥＸＴ３６ＴＲＫ使用フラグ３２１を取得する。
（Ｓ７３）ＲＷ制御部１１０は、ＥＸＴ３６ＴＲＫ使用フラグ３２１が“ｔｒｕｅ”であるか否かを判定する。“ｔｒｕｅ”である場合、処理をステップＳ７４に進める。“ｔｒｕｅ”でない（すなわち、“ｆａｌｓｅ”である）場合、処理をステップＳ８０に進める。
【０１２９】
（Ｓ７４）ＲＷ制御部１１０は、テープ装置１００（自テープ装置）の動作モードが、ＥＸＴ３６ＴＲＫモードであるか否かを判定する。ＥＸＴ３６ＴＲＫモードである場合、処理をステップＳ７７に進める。ＥＸＴ３６ＴＲＫモードでない場合、処理をステップＳ７５に進める。
【０１３０】
（Ｓ７５）ＲＷ制御部１１０は、テープ装置１００（自テープ装置）の動作モードが、１８ＴＲＫまたは３６ＴＲＫモードであるか否かを判定する。１８ＴＲＫまたは３６ＴＲＫモードである場合、処理をステップＳ７６に進める。１８ＴＲＫまたは３６ＴＲＫモードでない場合（すなわち、１２８ＴＲＫモードの場合）、処理をステップＳ７７に進める。１２８ＴＲＫモードの場合にステップＳ７７へ進める理由は、１２８ＴＲＫモードであれば、ＥＸ３６ＴＲＫモードの全ブロック番号での位置付けが可能だからである。
【０１３１】
（Ｓ７６）ＲＷ制御部１１０は、磁気テープ３１０の位置付けを行えない旨（位置付け不可）をサーバ２００に報告する。そして、処理を終了する。この場合、テープ装置１００では、ＤＤＲ処理を続行することができないことになる。
【０１３２】
（Ｓ７７）ＲＷ制御部１１０は、サーバ２００（ホスト）から受信したブロック番号とＣＭ３２０に格納されたオフセット値３２２とをＯＲ演算する。ここで、オフセット値３２２は、エラー時ブロック番号の上位１０ビットを抽出し、下位２２ビットを除去したものである。このため、ＲＷ制御部１１０は、オフセット値３２２の下位に２２ビット分の“０”を加えた値と、サーバ２００から取得したブロック番号とをＯＲ演算する。より具体的には、オフセット値３２２が“０ｂ１０１０００００００”である場合、まず、下位に２２ビット分の“０”を加えたＯＲ演算用のオフセット値“０ｂ１０１０００００００００００００００００００００００００００００”を生成する。そして、サーバ２００から取得したブロック番号“０ｂ０００００００００００００１００００００００”の各桁と上記ＯＲ演算用のオフセット値の各桁とのＯＲをとる。その結果、ＲＷ制御部１１０は、エラー時ブロック番号“０ｂ１０１００００００００００００００００００００１００００００００”を得る。
【０１３３】
（Ｓ７８）ＲＷ制御部１１０は、ＣＭ３２０に記録されたオフセット値３２２をクリアする。その結果、オフセット値３２２は設定なしとなる。
（Ｓ７９）ＲＷ制御部１１０は、ステップＳ７７のＯＲ演算で求めたブロック番号（エラー時ブロック番号）でドライブ１０６に位置付けを指示する。これにより、ドライブ１０６の磁気ヘッドが、磁気テープ３１０の当該エラー時ブロック番号に対応する位置に配置される。そして、処理を終了する。
【０１３４】
（Ｓ８０）ＲＷ制御部１１０は、サーバ２００（ホスト）から受信したブロック番号でドライブ１０６に位置付けを指示する。ＥＸＴ３６ＴＲＫ使用フラグが“ｆａｌｓｅ”の場合、サーバ２００から受信したブロック番号はエラー時ブロック番号（より正確には、エラー時ブロック番号の下位２２ビット）に一致するためである（３２ビットのうち上位１０ビットは全て“０”としてよい）。これにより、ドライブ１０６の磁気ヘッドが、磁気テープ３１０の当該エラー時ブロック番号に対応する位置に配置される。
【０１３５】
なお、ステップＳ７４，Ｓ７５，Ｓ７６は、テープ装置１００とは異なるテープ装置で、２２ビットのブロック番号上限を超えてアクセスされた磁気テープ３１０が、ＤＤＲのためにテープ装置１００に収納された場合を想定したモード確認処理である。２２ビットより大きなブロック番号にアクセスされた磁気テープ３１０は、移動先のテープ装置の動作モードがＥＸＴ３６ＴＲＫモードまたは１２８ＴＲＫモードの場合は、移動先のテープ装置により正しく位置付け可能である。一方、移動先のテープ装置が１８ＴＲＫモードまたは３６ＴＲＫモードの場合は、２２ビットより大きなブロック番号を利用できないので、位置付け不可となる。後者の場合、仮に、サーバ２００から指定されたブロック番号からアクセス再開してしまうと、適切でないブロック番号のデータが上書きされたり、読出されたりするおそれがある。そこで、ＲＷ制御部１１０は、ステップＳ７６で位置付け不可をサーバ２００に報告し、このような不具合が起こらないよう制御する。
【０１３６】
ただし、テープ装置１００のみを用いてＤＤＲを行う場合でも、ドライブ１０５からカートリッジ３００を取出した後、テープ装置１００のモードがＥＸ３６ＴＲＫモードから、３６ＴＲＫモードに変更され、その後にカートリッジ３００がドライブ１０６に移されることも考えられる。このようなケースを考慮すると、ステップＳ７４，Ｓ７５，Ｓ７６の処理は、テープ装置１００のみを用いてＤＤＲを行う場合にも上記不具合を回避する上でも有用である。
【０１３７】
次に、以上の手順によるテープ装置１００とサーバ２００との間のＥＸ３６ＴＲＫモードでの処理の流れの具体例を説明する。下記では、一例として、カートリッジ３００の磁気テープ３１０に対するデータの書込みを行う場合を説明する。
【０１３８】
図１６は、ＥＸ３６ＴＲＫモードでの書込み時のシーケンス例を示す図である。以下、図１６に示す処理をステップ番号に沿って説明する。
（ＳＴ１）サーバ２００は、テープ装置１００に対して書込み対象のデータとともに書込みコマンドを送信する。ＲＷ制御部１１０は、サーバ２００から書込みコマンドおよび書込み対象のデータを受信する。ＲＷ制御部１１０は、受信した書込みコマンドに応じて、ドライブ１０５に収納されたカートリッジ３００の磁気テープ３１０に対するデータの書込みを開始する。データの書込みは、ブロック番号の昇順にシーケンシャルに行われる。例えば、ＲＷ制御部１１０は書込み対象のデータをサーバ２００から継続的に受信して記憶部１２０に格納し、記憶部１２０からデータを取得して磁気テープ３１０へ書込む。
【０１３９】
（ＳＴ２）ＲＷ制御部１１０は、（図１６ではＢＬＫ番号と表記）が２２ビットで表わされる上限よりも大きなブロック番号に対応する位置にデータを書込む。
（ＳＴ３）ＲＷ制御部１１０は、ＥＸ３６ＴＲＫ使用フラグ３２１を“ｔｒｕｅ”に設定する。
【０１４０】
（ＳＴ４）ＲＷ制御部１１０は、ドライブ１０５で書込みエラーが発生したことを検出する。
（ＳＴ５）ＲＷ制御部１１０は、書込みエラーが発生したことをサーバ２００に通知する。ＲＷ制御部１１０は、書込みエラーとともに、磁気テープ３１０に格納されたＶＯＬ  ＩＤをサーバ２００に通知してもよい。サーバ２００は、書込みエラー通知を受信する。サーバ２００は、書込み対象のデータのうち、何れの部分でエラーが発生したかを示す情報を記憶部２２０に記録する。サーバ２００は、ＤＤＲにより書込みを再開する際に、当該情報で示されるデータ部分から、書込みを再開する。
【０１４１】
（ＳＴ６）サーバ２００は、テープ装置１００に対してＲＤＢＩＤコマンドを送信する。テープ装置１００は、ＲＤＢＩＤコマンドを受信する。
（ＳＴ７）ＲＷ制御部１１０は、３２ビットで表わされるエラー時ブロック番号をドライブ１０５から取得する。
【０１４２】
（ＳＴ８）ＲＷ制御部１１０は、エラー時ブロック番号から上位１０ビットを抽出し、当該上位１０ビットをオフセット値３２２として、カートリッジ３００のＣＭ３２０に記録する。
【０１４３】
（ＳＴ９）ＲＷ制御部１１０は、エラー時ブロック番号から下位２２ビットを抽出し、当該下位２２ビット（ダミーのブロック番号）をサーバ２００に報告する。サーバ２００は、カートリッジ３００をドライブ１０５から他のドライブに移し替えるようオペレータに報知する。
【０１４４】
（ＳＴ１０）カートリッジ３００が、ドライブ１０５からドライブ１０６に移し替えられる。ドライブ１０５からカートリッジ３００を取出す際、ＲＷ制御部１１０は、ドライブ１０５によるカートリッジ３００のアンマウント処理を行う。また、ドライブ１０６にカートリッジ３００を収納した際、ＲＷ制御部１１０は、ドライブ１０６によるカートリッジ３００のマウント処理を行う。ＲＷ制御部１１０は、ドライブ１０６によるカートリッジ３００のマウント処理を完了したことをサーバ２００に通知する。
【０１４５】
（ＳＴ１１）ＲＷ制御部１１０は、磁気テープ３１０に格納されたＶＯＬ  ＩＤをドライブ１０６から取得する。
（ＳＴ１２）ＲＷ制御部１１０は、サーバ２００と通信して、カートリッジ３００がドライブ１０５から移し替えられたものであることを相互に確認する。具体的には、エラー時においてサーバ２００に報告されたＶＯＬ  ＩＤと、ドライブ１０６に移し替えられたカートリッジ３００から取得されたＶＯＬ  ＩＤと、が一致することを確認する。
【０１４６】
（ＳＴ１３）サーバ２００は、テープ装置１００に対してＬＯＣＡＴＥコマンドを送信する。ＬＯＣＡＴＥコマンドは、ステップＳＴ９で受け付けた２２ビットで表わされるブロック番号の指定を含む。ＲＷ制御部１１０は、ＬＯＣＡＴＥコマンドを受信する。
【０１４７】
（ＳＴ１４）ＲＷ制御部１１０は、カートリッジ３００のＣＭ３２０に格納されたオフセット値３２２をドライブ１０６から取得する。
（ＳＴ１５）ＲＷ制御部１１０は、ステップＳＴ１３で取得したブロック番号（サーバ２００に報告されたダミーのブロック番号）と、ステップＳＴ１４で取得したオフセット値とを基に、エラー時ブロック番号（３２ビット）を生成する。
【０１４８】
（ＳＴ１６）ＲＷ制御部１１０は、ステップＳＴ１５で生成した３２ビットのエラー時ブロック番号を指定して、磁気テープ３１０の位置付けをドライブ１０６に指示する。
（ＳＴ１７）ＲＷ制御部１１０は、位置付け完了をサーバ２００に報告する。サーバ２００は、位置付け完了の報告を受信する。
【０１４９】
（ＳＴ１８）サーバ２００は、テープ装置１００に対して書込み対象のデータとともに書込みコマンドを送信する。ここで、サーバ２００は、エラーにより書込みが中断されたデータ箇所から、テープ装置１００に送信すればよい。例えば、ステップＳＴ５で示したように、サーバ２００は、エラーにより書込みが中断された箇所を記憶部２２０に記録しておけば、本ステップＳＴ１８において、記憶部２２０に記憶された情報により書込みが中断されたデータ箇所を特定できる。ＲＷ制御部１１０は、サーバ２００から書込みコマンドおよび書込み対象のデータを受信する。
【０１５０】
（ＳＴ１９）ＲＷ制御部１１０は、書込みコマンドに応じて、磁気テープ３１０に対し、エラー時ブロック番号に対応する位置から、データの書込みを再開する。
このように、テープ装置１００によれば、磁気テープ３１０をドライブ１０５からドライブ１０６に移し替えた後に、磁気テープ３１０に対するアクセス再開位置を適切に決定できる。このため、ドライブ１０６において磁気テープ３１０に対する非効率的なアクセス（例えば、実際の書込みを行わずに正常書込みしたことをサーバ２００に報告する「空書き」処理など）を行わずに済む。よって、ＬＴＯ型の磁気テープ３１０の記憶領域をフルに利用可能としながら、ＤＤＲによるリカバリ処理を効率的に行えるようになる。
【０１５１】
図１７は、ＤＤＲの他の例を示す図である。前述のように、サーバ２００には、テープ装置１００に加えて、テープ装置１００ａも接続されている。この場合、テープ装置１００，１００ａは、上記と同様に、ＥＸ３６ＴＲＫモードでのＤＤＲ処理を行える。具体的には、テープ装置１００にカートリッジ３００を収納して、磁気テープ３１０にアクセスしている際に、アクセスエラーが発生した場合を考える。このとき、エラー時ブロック番号が２２ビットの上限を超えていると、カートリッジ３００のＣＭ３２０には、ＥＸ３６ＴＲＫ使用フラグ３２１（“ｔｒｕｅ”）およびオフセット値３２２が格納されることになる。
【０１５２】
すると、テープ装置１００ａが備えるドライブにカートリッジ３００を移し替えることで、テープ装置１００ａは、ＥＸ３６ＴＲＫ使用フラグ３２１およびオフセット値３２２をＣＭ３２０から取得できる。このため、テープ装置１００ａは、ＣＭ３２０から取得したＥＸ３６ＴＲＫ使用フラグ３２１およびオフセット値３２２を基に、図１５の手順を実行できる（図１６の手順のステップＳＴ１１以降の処理を、テープ装置１００ａによって実行する）。このように、ＥＸ３６ＴＲＫ使用フラグ３２１およびオフセット値３２２をＣＭ３２０に格納することで、複数のテープ装置を用いてＤＤＲを実行できる。例えば、テープ装置１００，１００ａが備えるドライブが１つの場合にも複数のテープ装置を用いてＤＤＲを実行できる。
【０１５３】
ところで、例えば、上記のようにストレージ装置（例えば、テープ装置１００）が、上位装置（例えば、サーバ２００）で管理可能なブロック番号よりも大きなブロック番号にデータを書込むことで、上位装置のソフトウェアに起因する磁気テープの使用容量制限を緩和し得る。このとき、ストレージ装置が、ストレージ装置で管理可能な複数のブロック番号を、上位装置で管理可能な１つのブロック番号に対応付けることで、ＤＤＲなどのリカバリ処理を行うことが考えられる（この方法を「比較例の方法」と称する）。しかし、比較例の方法では、カートリッジ３００を正常なドライブに移し替えた後の磁気テープ３１０へのアクセスの再開が問題となる。
【０１５４】
例えば、ストレージ装置が管理する連続するブロック番号“Ａ１”、“Ａ２”、“Ａ３”（Ａ１＜Ａ２＜Ａ３）を、上位装置が管理するブロック番号“Ｂ１”に対応付け、エラー時にブロック番号“Ｂ１”を上位装置に報告することを考える。この場合、例えば、ストレージ装置は、カートリッジ３００の移し替え後、上位装置から指定されるブロック番号“Ｂ１”に対し、ストレージ装置が管理するブロック番号“Ａ１”、“Ａ２”、“Ａ３”の先頭の“Ａ１”を、アクセス再開位置と決定する。ところが、例えばエラー発生前にブロック番号“Ａ１”、“Ａ２”へ正常にアクセスした後、ブロック番号“Ａ３”へのアクセスでエラーが発生することもある。ブロック番号“Ｂ１”が上位装置から指定されただけでは、正常なドライブに移し替えた後に、エラー時のブロック番号“Ａ３”に直接位置付けすることはできない。
【０１５５】
そこで、カートリッジ３００が正常なドライブに移し替えられた後、ストレージ装置は、上位装置から指定されたブロック番号“Ｂ１”に対し、まず、ブロック番号“Ａ１”に位置付けすることになる。その後、ストレージ装置は、正常にアクセス済のブロック番号“Ａ１”、“Ａ２”へのアクセスを、再度疑似的に行って（例えば、実際の書込みを行わずに正常書込みしたことを上位装置に報告するなどの「空書き」処理）、アクセスを再開するブロック番号“Ａ３”に到達する。このように、比較例の方法では、カートリッジ３００を正常なドライブに移し替えた後に磁気テープ３１０に対して「空書き」のような非効率的なアクセスが発生するおそれがある。
【０１５６】
他方、第２の実施の形態の方法によれば、カートリッジ３００を正常なドライブに移し替えた後、ＣＭ３２０に記録されたオフセット値により、サーバ２００から指示されるブロック番号を補正して、エラー時のブロック番号に直接位置付けできる。このため、「空書き」のような非効率的なアクセスの発生を抑制できる。
【０１５７】
また、第２の実施の形態の方法によれば、カートリッジ３００が備えるＣＭ３２０にＥＸＴ３６使用フラグ３２１やオフセット値３２２を記録する。このため、カートリッジ３００を正常なドライブに移し替えさえすれば、移し替え先のストレージ装置によりＣＭ３２０に記録された情報を基に、アクセス再開位置を適切に特定してＤＤＲ処理を継続できる。
【０１５８】
なお、第１の実施の形態の情報処理は、制御部１ｃとして用いられるプロセッサにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。テープ装置１００は、プロセッサ１０１およびＲＡＭ１０２を含むコンピュータを備えていると考えることができる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１５９】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＮＶＲＡＭ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。例えば、テープ装置１００が備えるコンピュータは、サーバ２００が記録媒体１３またはネットワーク１０を介して取得したプログラムを、サーバ２００から取得して、ＲＡＭ１０２やＮＶＲＡＭ１０３などの記憶装置に格納してもよい。
【符号の説明】
【０１６０】
１  ストレージ装置
１ａ，１ｂ  ドライブ
１ｃ  制御部
２  情報処理装置
３  カートリッジ
３ａ  記録媒体
３ｂ  メモリ
【図１】
2017049817.tif 000003
【図２】
2017049817.tif 000004
【図３】
2017049817.tif 000005
【図４】
2017049817.tif 000006
【図５】
2017049817.tif 000007
【図６】
2017049817.tif 000008
【図７】
2017049817.tif 000009
【図８】
2017049817.tif 000010
【図９】
2017049817.tif 000011
【図１０】
2017049817.tif 000012
【図１１】
2017049817.tif 000013
【図１２】
2017049817.tif 000014
【図１３】
2017049817.tif 000015
【図１４】
2017049817.tif 000016
【図１５】
2017049817.tif 000017
【図１６】
2017049817.tif 000018
【図１７】
2017049817.tif 000019