(57)【要約】【課題】ホストが管理できるテープボリュームのサイズを増加させ、記録媒体の使用可能領域を増やす。【解決手段】テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加し、上位装置に対して、前記第２の識別番号を用いて前記テープボリュームの読み書きを制御し、テープライブラリ装置には前記テープボリュームと前記第１の識別番号を書き込む。【選択図】図５
2014191412.tif 000002
【特許請求の範囲】
【請求項１】
上位装置および磁気テープを有するテープライブラリ装置と接続し、仮想的なテープ装置のテープボリュームを格納する仮想テープ装置であって、
複数のブロックを含む前記テープボリュームを格納する記憶部と、
前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加する識別子制御部と、
前記仮想テープ装置と前記上位装置との間で、前記第２の識別番号を用いて前記記憶部に格納される前記テープボリュームの読み書きを制御する第１の制御部と、
前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込み、前記第１の識別番号を用いて前記テープライブラリ装置を制御する第２の制御部と、
を備える仮想テープ装置。
【請求項２】
前記テープボリュームを格納するバッファをさらに備え、
前記第１の制御部は、前記テープボリュームを前記記憶部に格納する前に、前記バッファに前記テープボリュームを格納し、
前記識別子制御部は、前記バッファの前記テープボリュームの各ブロックに前記第１の識別子および前記第２の識別子を付加し、前記第１の制御部が前記記憶部に前記テープボリュームを書き込む際にエラーが発生した場合、前記バッファの前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックの第２の識別子をブロック毎に番号が増加するように更新することを特徴とする請求項１記載の仮想テープ装置。
【請求項３】
前記第１の制御部は、
前記バッファの前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを前記上位装置に送信し、
前記上位装置から前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを受信し、
受信した前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを前記バッファに格納し、
前記識別子制御部は、前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックに、前記エラーが発生する前に付加されていた前記第２の識別子と同じ番号の前記第２の識別子を前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックに付加することを特徴とする請求項２記載の仮想テープ装置。
【請求項４】
上位装置および磁気テープを有するテープライブラリ装置と接続し、仮想的なテープ装置のテープボリュームを格納する仮想テープ装置が実行するテープ制御方法であって、
複数のブロックを含む前記テープボリュームを格納し、
前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加し、
前記仮想テープ装置と前記上位装置との間で、前記第２の識別番号を用いて前記テープボリュームの読み書きを制御し、
前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込む、
処理を備えるテープ制御方法。
【請求項５】
上位装置および磁気テープを有するテープライブラリ装置と接続し、テープボリュームを格納するテープ制御装置であって、
複数のブロックを含む前記テープボリュームを格納するバッファと、
前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加する識別子制御部と、
前記テープ制御装置と前記上位装置との間で、前記第２の識別番号を用いて前記バッファに格納される前記テープボリュームの読み書きを制御する第１の制御部と、
前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込み、前記第１の識別番号を用いて前記テープライブラリ装置を制御する第２の制御部と、
を備えるテープ制御装置。
【請求項６】
前記識別子制御部は、前記第２の制御部が前記テープライブラリ装置に前記テープボリュームを書き込む際にエラーが発生した場合、前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックの第２の識別子をブロック毎に番号が増加するように更新することを特徴とする請求項５記載のテープ制御装置。
【請求項７】
前記第１の制御部は、
前記バッファの前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを前記上位装置に送信し、
前記上位装置から前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを受信し、
受信した前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックを前記バッファに格納し、
前記識別子制御部は、前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックに、前記エラーが発生する前に付加されていた前記第２の識別子と同じ番号の前記第２の識別子を前記エラーが発生したブロックおよび該エラーが発生したブロック以降のブロックに付加することを特徴とする請求項６記載のテープ制御装置。
【請求項８】
上位装置および磁気テープを有するテープライブラリ装置と接続し、テープボリュームを格納するテープ制御装置が実行するテープ制御方法であって、
複数のブロックを含む前記テープボリュームを格納し、
前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加し、
前記テープ制御装置と前記上位装置との間で、前記第２の識別番号を用いて前記テープボリュームの読み書きを制御し、
前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込む、
処理を備えるテープ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想テープ装置、テープ制御装置、およびテープ制御方法に関する。
【背景技術】
【０００２】
データのバックアップに用いられる大容量の記憶装置として、磁気テープ装置や仮想テープ装置がある。
【０００３】
磁気テープ装置や仮想テープ装置で使われるテープフォーマットは、ISO、ANSI、JISなどで標準化されている。
【０００４】
例えば、磁気テープ装置や仮想テープ装置で使われる３６トラックテープフォーマットは、JIS X6135、ISO/IEC 14251、ファイル構成は、JIS X601に記載されている。
【０００５】
仮想テープ装置や磁気テープ装置で使われる３６トラックテープフォーマットには、下記のようなブロックが含まれている。
【０００６】
Volume Block(VOL)：ボリューム名、所有者などが記述された８０バイトのブロック
Header 1 Block(HDR1)：ファイル名、更新日などが記述された８０バイトのブロック
Header 2 Block(HDR2)：レコード形式、ブロック長などが記述された８０バイトのブロック
Data Block(D1,…,DN)：データが記述された可変調のブロック
Tape Mark Block(TM)：ファイルの区切りを示すマークブロック
End of File 1 Block(EOF1)：ファイル名、更新日などが記述された８０バイトのブロック
End of File 2 Block(EOF2)：レコード形式、ブロック長などが書かれている８０バイトのブロック
End of Data Block(EOD)：テープボリュームの最後を示すマークブロック。
【０００７】
また、テープボリュームの各ブロックには、磁気テープ上での位置を識別するためのブロック識別子（BID）が付加されている。
【０００８】
従来のBIDは、先頭のブロックに0が割り当てられ、ブロック毎に１ずつ増加する。
磁気テープ装置は、磁気テープのデータの読み書きを行う場合、BIDを用いて読み書きを行うブロックの位置を磁気テープ上から検出する。
【０００９】
図１は、シングルファイルのテープフォーマットとBIDを示す図である。
図１の上部はテープボリュームのブロックを示し、下部は各ブロックに付加されるBIDを示す。
【００１０】
図１は、１ファイル（File-1）が含まれているテープボリュームを示す。
シングルファイルのテープフォーマットでは、先頭にVOLが配置され、次にFile-1の各ブロック（HDR1,HDR2,TM,D1,D2,…,DN,TM,EOF1,EOF2,TM）が配置され、最後にTMとEODが配置されている。
【００１１】
図１の下部に示すように、BIDは、先頭のVOLに0が割り当てられ、ブロックごとに１ずつ増加している。
【００１２】
図２は、マルチファイルのテープフォーマットとBIDを示す図である。
図２の上部はテープボリュームのブロックを示し、下部は各ブロックに付加されるBIDを示す。
【００１３】
図２は、File-1とFile-2の２ファイルが含まれているテープボリュームを示す。
マルチファイルのテープフォーマットでは、先頭にVOLが配置され、次にFile-1の各ブロック（HDR1,HDR2,TM,D1,D2,…,DN,TM,EOF1,EOF2,TM）が配置され、File-1の最後のTMの後ろにFile-2の各ブロック（HDR1,HDR2,TM,D1,D2,…,DN,TM,EOF1,EOF2,TM）が配置され、最後にTMとEODが配置されている。
【００１４】
また、図２の下部に示すように、BIDは、先頭のVOLに0が割り当てられ、ブロック毎に１ずつ増加している。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平５−２４１７３６号公報
【特許文献２】特開平６−３０２１１２号公報
【特許文献３】国際公開第２０１２／０４２６６１号
【発明の概要】
【発明が解決しようとする課題】
【００１６】
BIDはテープフォーマット情報として定義され、テープドライブがテープへ書き込めるブロック数(BID総数)、ブロックサイズにより、ホスト側で認識できるテープの最大容量が決定される。
【００１７】
例えば、仮想テープ装置で扱われるテープフォーマットでは、従来の36トラック磁気テープのテープフォーマットが使用される。36トラックテープフォーマットではBIDのデータ領域は22ビット(3FFFFFh)で定義されており、これらを制御するホストのオペレーティングシステム（OS）もBIDを22ビットとしてテープ容量を管理している。
【００１８】
例えば１ブロック32kbのブロックサイズで書き込みが行われると、ホストが管理できるテープボリューム容量は137GB(32Kb x 4M(22bit))となり、ホストは137GBより大きいテープボリュームを管理できない。
【００１９】
近年記録方式の改良により、テープの一巻当たりの記録容量は200GB、400GB、800GBなど137GBを超える大容量のものが主流なって来ている。これらは新テープフォーマットにより、BIDのデータ領域は32ビット(FFFFFFFFh)で定義されており、例えば1ブロック32kbのブロックサイズで書き込みが行われると、管理できるボリューム容量は、137TB  (32Kb  x  4G(32bit))となる。
【００２０】
BIDが22ビット、１ブロックのサイズが32kbである場合に、36トラックテープフォーマットを使用するシステムでは、以下のような問題がある。
（１）137GBの超えるテープボリュームを仮想テープ装置の36トラックテープフォーマットでコピーすると複数巻のテープに分かれてしまう。
（２）仮想テープ装置でExport(仮想ボリュームを実テープに出力し、仮想テープ装置外に取り出す処理)すると、大容量（例えば、800GB以上）の実テープに最大137GBのデータしか出力されず、大容量のテープの記憶領域を有効に活用できない。
（３）従来の36トラックテープを制御するOSを使用して、OSの管理できる容量を超えた位置(137GBを超えた領域)で書き込みエラーが発生した場合、エラーが発生した位置が特定できないため、ホストからのデータリカバリができない。
【００２１】
本発明の課題は、ホストが管理できるテープボリュームのサイズを増加させ、記録媒体の使用可能領域を増やすことである。
【課題を解決するための手段】
【００２２】
実施の形態の仮想テープ装置は、上位装置および磁気テープを有するテープライブラリ装置と接続し、仮想的なテープ装置のテープボリュームを格納する。
前記仮想テープ装置は、記憶部と、識別子制御部と、第１の制御部と、第２の制御部と、を備える。
【００２３】
前記記憶部は、複数のブロックを含む前記テープボリュームを格納する。
前記識別子制御部は、前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加する。
【００２４】
第１の制御部は、前記仮想テープ装置と前記上位装置との間で、前記第２の識別番号を用いて前記記憶部に格納される前記テープボリュームの読み書きを制御する。
前記第２の制御部は、前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込み、前記第１の識別番号を用いて前記テープライブラリ装置を制御する。
【００２５】
実施の形態のテープ制御装置は、上位装置および磁気テープを有するテープライブラリ装置と接続し、テープボリュームを格納する。
前記テープ制御装置は、バッファと、識別子制御部と、第１の制御部と、第２の制御部と、を備える。
【００２６】
前記バッファは、複数のブロックを含む前記テープボリュームを格納する。
前記識別子制御部は、前記テープボリュームのブロック毎に番号が増加する第１の識別番号と、前記テープボリュームの先頭ブロックの次のブロック、ファイルの区切りを示すテープマーク、および前記テープマークの次のブロックのみで番号が増加する第２の識別番号とを、前記テープボリュームの各ブロックに付加する。
【００２７】
前記第１の制御部は、前記テープ制御装置と前記上位装置との間で、前記第２の識別番号を用いて前記バッファに格納される前記テープボリュームの読み書きを制御する。
前記第２の制御部は、前記テープボリュームと前記第１の識別番号を前記テープライブラリ装置に書き込み、前記第１の識別番号を用いて前記テープライブラリ装置を制御する。
【発明の効果】
【００２８】
実施の形態の仮想テープ装置およびテープ制御装置によれば、ホストが管理できるテープボリュームのサイズを増加させることでき、記録媒体の使用可能領域を増やすことである。
【図面の簡単な説明】
【００２９】
【図１】シングルファイルのテープフォーマットとBIDを示す図である。
【図２】マルチファイルのテープフォーマットとBIDを示す図である。
【図３】実施の形態に係るシングルファイルのテープフォーマット、BID、およびF-BIDを示す図である。
【図４】実施の形態に係るマルチファイルのテープフォーマット、BID、およびF-BIDを示す図である。
【図５】第１の実施の形態に係るシステムの構成図である。
【図６】管理テーブルの例を示す図である。
【図７】第１の実施の形態に係るホストのライト処理および更新処理のフローチャートである。
【図８】第１の実施の形態に係る仮想テープ装置のライト処理および更新処理のフローチャートである。
【図９】書き込みエラー検出前および書き込みエラー検出時のデータバッファのF-BIDを示す図である。
【図１０】第１の実施の形態に係る書き込みエラー発生時のホストの処理を示す図である。
【図１１】第１の実施の形態に係るエラーリカバリ処理の詳細なフローチャートである。
【図１２】第１の実施の形態に係る仮想テープ装置のエラーリカバリ処理のフローチャートである。
【図１３】エラー無し時、エラー発生時、およびエラーリカバリ後のデータバッファ上のF-BIDを示す図である。
【図１４】第２の実施の形態に係るシステムの構成図である。
【図１５】第２の実施の形態に係るホストのライト処理および更新処理のフローチャートである。
【図１６】第２の実施の形態に係るテープ制御装置のライト処理および更新処理のフローチャートである。
【図１７】書き込みエラー検出前および書き込みエラー検出時のデータバッファのF-BIDを示す図である。
【図１８】第２の実施の形態に係る書き込みエラー発生時のホストの処理を示す図である。
【図１９】第２の実施の形態に係るエラーリカバリ処理の詳細なフローチャートである。
【図２０】第２の実施の形態に係る仮想テープ装置のエラーリカバリ処理のフローチャートである。
【発明を実施するための形態】
【００３０】
以下、図面を参照しながら実施の形態について説明する。
最初に、第１および第２の実施の形態で使用する新しいBID（以下、F-BIDと呼ぶ）の更新ルールについて説明する。
【００３１】
第１および第２の実施の形態では、テープボリュームの各ブロックに、BIDに加えてF-BIDを付加する。実施の形態においてBIDは３２ビット、F-BIDはBIDより小さい２２ビットとする。
【００３２】
上述のように従来のBIDは、ブロック毎に番号を１ずつ増加させている。
一方、実施の形態のF-BIDは、テープボリュームの先頭のブロック（VOL）に0を付加し、テープボリュームの先頭のブロックの次のブロック、テープマーク、およびテープマークの次のブロックのみで番号が１増加する。
【００３３】
図３は、実施の形態に係るシングルファイルのテープフォーマット、BID、およびF-BIDを示す図である。
図３の上段はシングルファイルのテープフォーマット、中段はBID、下段はF-BIDを示す。
シングルファイルのテープフォーマットおよびBIDについては、図１と同様であるので説明は省略する。
【００３４】
上述のF-BIDの更新ルールに基づいて、F-BIDを各ブロックに付加すると、図３の下段に示すようになる。
すなわち、VOLにF-BID=0、HDR1とHDR2にF-BID=1、HDR2の後ろのTMにF-BID=2、Data BlockにF-BID=3、Data Blockの後ろのTMにF-BID=4、EOF1とEOF2にF-BID=5、EOF2の後ろのTMにF-BID=6、TMの後ろのTMにF-BID=7、EODにF-BID=8がそれぞれ付加されている。
【００３５】
図３の下部に示すように、同一のファイル内のData Blockの各ブロックには、同じF-BID(=3)が付加されている。また、同一のファイル内のHDR1とHDR2には同じF-BID(=1)が付加されており、同一のファイル内のEOF1とEOF2には同じF-BID(=5)が付加されている。
【００３６】
図４は、実施の形態に係るマルチファイルのテープフォーマット、BID、およびF-BIDを示す図である。
図４の上段はマルチファイルのテープフォーマット、中段はBID、下段はF-BIDを示す。
マルチファイルのテープフォーマットおよびBIDについては、図２と同様であるので説明は省略する。
【００３７】
上述のF-BIDの更新ルールに基づいて、F-BIDを各ブロックに付加すると、図４の下段に示すようになる。
すなわち、VOLにF-BID=0が付加されている。また、File-1に関して、HDR1とHDR2にF-BID=1、HDR2の後ろのTMにF-BID=2、Data BlockにF-BID=3、Data Blockの後ろのTMにF-BID=4、EOF1とEOF2にF-BID=5、EOF2の後ろのTMにF-BID=6がそれぞれ付加されている。File-2に関して、HDR1とHDR2にF-BID=7、HDR2の後ろのTMにF-BID=8、Data BlockにF-BID=9、Data Blockの後ろのTMにF-BID=10、EOF1とEOF2にF-BID=11、EOF2の後ろのTMにF-BID=12がそれぞれ付加されている。また、File-2の最後のTMの後ろのTMにF-BID=13、EODにF-BID=14がそれぞれ付加されている。
【００３８】
（第１の実施の形態）
第１の実施の形態では、仮想テープ装置を用いた形態について説明する。
【００３９】
図５は、第１の実施の形態に係るシステムの構成図である。
第１の実施の形態のシステム１０１は、ホスト（上位装置）２０１、仮想テープ装置３０１、およびテープライブラリ（実テープ装置）４０１を備える。
【００４０】
ホスト２０１と仮想テープ装置３０１、仮想テープ装置３０１とテープライブラリ４０１は、それぞれ光ケーブルを介して接続されている。
【００４１】
第１の実施の形態のシステム１０１は、標準化された３６トラックテープフォーマットを用いる。例えば、３６トラックテープフォーマットは、JIS X6135、ISO/IEC 14251、ファイル構成は、JIS X601に記載されている。
【００４２】
ホスト２０１は、仮想テープ装置３０１からテープボリュームのデータを読み出す、または仮想テープ装置３０１に書き込みデータを送信する。ホスト２０１は、ブロックのテープ上の位置を示すF-BIDが記載されたF-BID情報を格納し、ホスト２０１のＯＳは、ブロックの読み書き時にはF-BIDを用いて、書き込み位置や読み出し位置を制御する。ホスト２０１は、仮想テープ装置３０１とファイバチャネルを用いて通信を行う。ホスト２０１は、例えば、サーバやパーソナルコンピュータ（ＰＣ）等の情報処理装置である。
【００４３】
仮想テープ装置３０１は、テープ運用をディスクアレイ装置上で仮想的に行う装置である。仮想テープ装置３０１は、仮想テープ装置３０１内に仮想的なテープ装置（ドライブ）を実現し、ホスト２０１には、通常のテープ装置と接続しているように見せる。テープボリュームがディスクアレイ装置上に配置されることにより、テープマウント、ロード、アンロードなどの機械的な動作を無くし、高速処理を図っている。
【００４４】
仮想テープ装置３０１は、Integrated Channel Processor（ＩＣＰ）３１１、Integrated Device Processor（ＩＤＰ）３５１、およびディスクアレイ装置３９１を備える。
【００４５】
ＩＣＰ３１１は、ホスト２０１と接続し、ディスクアレイ装置３９１上のテープボリュームのデータの送受信の制御を行う。ＩＣＰ３１１は、ディスクアレイ装置３９１上に仮想テープドライブの機能を実現する。
【００４６】
ＩＣＰ３１１は、Central Processing Unit（ＣＰＵ）３２１、メモリ３３１、およびファイバチャネル（ＦＣ）カード３４１−１、３４１−２を備える。
【００４７】
ＣＰＵ３２１は、メモリ３３１からプログラムを読み出して実行し、各種処理を実行するプロセッサ（処理装置）である。
【００４８】
ＣＰＵ３２１は、ホストＩＦ制御部３２２、ディスクアレイ制御部３２４、ＩＤ制御部３２５、およびロボット制御部３２６を備える。
【００４９】
ホストＩＦ制御部３２２は、ホスト２０１とのデータの送受信を制御する。ホストＩＦ制御部３２２は、ＣＰＵ３２１がホストＩＦドライバ３３２をメモリ３３１から読み出して実行することにより実現される。
【００５０】
ディスクアレイ制御部３２４は、ディスアレイ装置３９１を制御し、ディスアレイ装置３９１へデータの書き込みやディスアレイ装置３９１からのデータの読み出しを行う。詳細には、ディスアレイ装置３９１への書き込み時には、ディスクアレイ制御部３２４は、ディスアレイ装置３９１に書き込む前に、テープボリュームのブロックをデータバッファ３３３に書き込み、BIDおよびF-BIDがブロックに付加された後、テープボリュームのブロックをデータバッファ３３３から読み出してディスアレイ装置３９１に書き込む。ディスクアレイ制御部３２４は、２２ビットのF-BIDを用いて、データバッファ３３３およびディスクアレイ装置３９３の読み書きの制御を行う。また、ディスクアレイ制御部３２４は、管理テーブル３９３の読み書きを行う。ディスクアレイ制御部３２４は、ＣＰＵ３２１がディスクアレイドライバ３３４をメモリ３３１から読み出して実行することにより実現される。
【００５１】
ＩＤ制御部３２５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）。ＩＤ制御部３２５は、ＣＰＵ３２１がF-BID/BID制御プログラム３３５をメモリ３３１から読み出して実行することにより実現される。
【００５２】
ロボット制御部３２６は、ロボット４１１を制御する。ロボット制御部３２６は、ＣＰＵ３２１がロボット制御ドライバ３３６をメモリ３３１から読み出して実行することにより実現される。
【００５３】
メモリ３３１は、データやプログラム等を格納する記憶装置である。メモリ３３１は、例えば、Random Access Memory（ＲＡＭ）である。
メモリ３３１は、ホストＩＦドライバ３３２、データバッファ３３３、ディスクアレイドライバ３３４、F-BID/BID制御プログラム３３５、およびロボット制御ドライバ３３６を有する。
【００５４】
ホストＩＦドライバ３３２は、ホスト２０１とのデータの送受信を制御するプログラムである。
データバッファ３３３は、テープボリューム３９２のデータをディスクアレイ装置３９１に書き込む前にデータを一時的に格納する領域である。
ディスクアレイドライバ３３４は、ディスアレイ装置３９１を制御するプログラムである。
【００５５】
F-BID/BID制御プログラム３３５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）プログラムである。第１の実施の形態では、F-BIDは22bit、BIDは32bitとする。
【００５６】
ロボット制御ドライバ３３６は、ロボット４１１を制御するプログラムである。
ＦＣカード３４１は、ファイバチャネルにより他の装置と接続するインタフェースカードである。ＦＣカード３４１−１は、ホスト２０１と接続する。ＦＣカード３４１−２は、ディスクアレイ装置３９１およびテープライブラリ４０１と接続する。
【００５７】
ＩＤＰ３５１は、ディスクアレイ装置３９１上のテープボリューム３５１をテープライブラリ４０１にストアし、またテープライブラリ４０１からテープボリュームを読み出してディスクアレイ装置３９１上にリストアする。
【００５８】
ＩＤＰ３５１は、ＣＰＵ３６１、メモリ３７１、およびＦＣカード３８１−１、３８１−２を備える。
【００５９】
ＣＰＵ３６１は、メモリ３７１からプログラムを読み出して実行し、各種処理を実行するプロセッサ（処理装置）である。
ＣＰＵ３６１は、ディスクアレイ制御部３６２、テープドライブ制御部３６４、およびＩＤ制御部３６５を備える。
【００６０】
ディスクアレイ制御部３６２は、ディスアレイ装置３９１を制御し、ディスアレイ装置３９１へデータの書き込みやディスアレイ装置３９１からのデータの読み出しを行う。ディスクアレイ制御部３６２は、３２ビットのBIDを用いて、ディスクアレイ装置３９３の読み書きの制御を行う。ディスクアレイ制御部３６２は、ＣＰＵ３６１がディスクアレイドライバ３７２をメモリ３７１から読み出して実行することにより実現される。
【００６１】
テープドライブ制御部３６４は、ドライブ４１３を制御し、テープドライブ４０１とのデータの送受信を制御する。テープドライブ制御部３６４は、３２ビットのBIDを用いて、テープライブラリ４０１の制御を行う。テープドライブ制御部３６４は、ＣＰＵ３６１がテープドライブドライバ３７４をメモリ３７１から読み出して実行することにより実現される。
【００６２】
ＩＤ制御部３６５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）。ＩＤ制御部３６５は、ＣＰＵ３６１がF-BID/BID制御プログラム３７５をメモリ３７１から読み出して実行することにより実現される。
【００６３】
メモリ３７１は、データやプログラム等を格納する記憶装置である。メモリ３７１は、例えば、ＲＡＭである。
メモリ３７１は、ディスクアレイドライバ３７２、データバッファ３７３、テープドライブドライバ３７４、およびF-BID/BID制御プログラム３７５を有する。
ディスクアレイドライバ３７２は、ディスアレイ装置３９１を制御するプログラムである。
【００６４】
データバッファ３７３は、テープボリューム３９２のデータをディスクアレイ装置３９１に書き込む前にデータを一時的に格納する領域である。
テープドライブドライバ３７４は、ドライブ４１３を制御し、テープドライブ４０１とのデータの送受信を制御するプログラムである。
【００６５】
F-BID/BID制御プログラム３７５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）プログラムである。第１の実施の形態では、F-BIDは22bit、BIDは32bitとする。
【００６６】
ＦＣカード３８１は、ファイバチャネルにより他の装置と接続するインタフェースカードである。ＦＣカード３８１−１は、ディスクアレイ装置３９１と接続する。ＦＣカード３８１−２は、テープライブラリ４０１と接続する。
【００６７】
ディスクアレイ装置３９１は、複数の磁気ディスク装置（ハードディスクドライブ（ＨＤＤ））を備えるストレージ装置である。
ディスクアレイ装置３９１は、テープボリューム３９２および管理テーブル３５３を格納する。
【００６８】
テープボリューム３９２は、仮想テープ１巻分のデータに相当するデータファイルである。
テープボリューム３９２の形式は、例えば、図３や図４に示すような標準化されたテープフォーマットである。テープボリューム３９２は、複数のブロックと各ブロックに付加されたBIDおよびF-BIDを含んでいる。
【００６９】
管理テーブル３９３は、テープボリューム３９２の各ブロック、BID、およびF-BIDの対応関係が記載されたテーブルである。管理テーブル３９３の詳細については後述する。
テープライブラリ４０１は、ロボット４１１、磁気テープ４１２−ｉ（ｉ＝１〜３）、およびドライブ４１３を備える。
【００７０】
ロボット４１１は、仮想テープ２０１により制御され、読み書きを行う対象の磁気テープ４１２をドライブ４１３にセットする。
磁気テープ４１２は、データを記録する記録媒体である。
ドライブ４１３は、ドライブ４１３にセットされた磁気テープ４１２に対するデータの読み書きを行う。ドライブ４１３は、磁気テープ４１２から読み出したデータをＦＣカードに送信、およびＦＣカードから受信したデータを磁気テープ４１２に書き込む。
【００７１】
図６は、管理テーブルの例を示す図である。
管理テーブル３９３は、項目として、ブロックの種類、Type Code、Block Size、Data、BID、およびF-BIDを有する。管理テーブルには、ブロックの種類、Type Code、Block Size、Data、BID、およびF-BIDが対応付けられて記載されている。
【００７２】
ブロックの種類は、ブロックの種類を示す。
Type Codeは、ブロックの種類を示すコードである。
Block Sizeは、ブロックのサイズを示す。
Dataは、ブロックの種類、例えば、ホストから貰ったデータ、または制御装置（例えば仮想テープ装置）で作成したデータを示す情報である。
【００７３】
BIDは、BIDの番号である。
F-BIDは、F-BIDの番号である。
ここで、第１の実施の形態のシステム１０１で用いられるRead BID（RBID）コマンドおよびLocateコマンドについて説明する。
【００７４】
・Read BIDコマンド
第１の実施の形態において、仮想テープ装置３０１がホスト２０１からRead BIDコマンドを受信すると、チャネルBIDとデバイスBIDを含むBID情報をホスト２０１に応答する。
【００７５】
チャネルBIDは、ホスト２０１と仮想テープ装置３０１間の進行状況を示す情報、すなわち、どのブロックまでホスト２０１が送信（仮想テープ装置３０１が受信）したかを示す情報である。具体的には、チャネルBIDは、仮想テープ装置３０１がホスト２０１から受信したテープボリュームのブロックの内の最後に受信したブロックのF-BIDである。言い換えれば、データバッファ３３３内にある最後のブロックのF-BIDである。
【００７６】
デバイスBIDは、仮想ドライブのテープヘッダの位置を示す情報であり、ICP３１１とディスクアレイ装置３９１間の処理の進行状況を示す情報、すなわちどのブロックまでディスクアレイ装置３９２に書き込み済みであるかを示す情報である。具体的には、デバイスBIDは、テープヘッダの直前のブロック（ディスクアレイ装置３９１に最後に書き込まれたブロック）のF-BIDに1を加算した値である。
【００７７】
例えば、例えばチャネルBIDが5で、デバイスBIDが3の場合、F-BID=2までのブロックはディスクアレイ装置３９１に書き込み済みあり、F-BID=5までのブロックはホスト２０１から仮想テープ装置３０１に送信済みであることを示す。すなわち、F-BID=3,F-BID=4,F-BID=5のブロックが未書き込みで仮想テープ装置３０１のデータバッファ３３３内に残っていることを示す。
【００７８】
・Locateコマンド
Locateコマンドは、読み書きを行うドライブのテープヘッドを指定された位置に位置付けるためのコマンドである。
【００７９】
第１の実施の形態において、仮想テープ装置３０１がホスト２０１からLocateコマンドを受信すると、Locateコマンドで指定されたF-BIDのブロック位置まで仮想テープ装置３０１に実現された仮想ドライブのテープヘッドを位置付ける。例えばLocate コマンドによりF-BID=5が指定された場合は、仮想テープ装置１３０１は、仮想ドライブのテープヘッドをテープボリューム３９２のF-BID=4のブロックとF-BID=5のブロックの間に位置付ける。
これにより、仮想ドライブは、F-BID=5のブロックから書き込みまたは読み込みを行う。
【００８０】
図７は、第１の実施の形態に係るホストのライト処理および更新処理のフローチャートである。
図７では、ホスト２０１がボリューム名がVOLAAAのテープボリューム（以下、単にVOLAAAと表記する）を書き込みまたは更新する場合について述べる。
【００８１】
ステップＳ５０１において、ホスト２０１は、VOLAAAのマウントコマンドをＩＣＰ３１１に送信する。
ステップＳ５０２において、ホスト２０１は、ＩＣＰ３１１からの通知をチェックし、VOLAAAがマウントされた通知を受信した場合、制御はステップＳ５０３に進む。
【００８２】
ステップＳ５０３において、ホスト２０１が実行しようとしているジョブがファイルを更新するファイル更新ジョブの場合、制御はステップＳ５０４に進み、ホスト２０１が実行しようとしているジョブがファイル更新ジョブでない場合（ファイルを新たに書き込むライトジョブの場合）、制御はステップＳ５０５に進む。
ステップＳ５０４のファイル更新では、テープボリュームは図４に示すような２ファイルのマルチテープフォーマットであり、File-2を更新する場合について述べる。
【００８３】
ステップＳ５０４において、ホスト２０１は、ファイル更新ジョブを開始し、更新するファイルのData Blockの先頭のブロックへテープヘッドを位置付けるコマンドをＩＣＰ３１１に発行する。詳細には、ホスト２０１は、以前に記憶したF-BID情報を参照し、更新するファイルのData Blockの先頭のブロック（F-BID=9）へテープヘッドを位置付けるため、Locate(9)コマンドをＩＣＰ３１１に発行する。図４に示すように、File-2のData Blockの先頭のブロックのF-BIDは9であるので、ホスト２０１はLocate(9)コマンドを発行している。
【００８４】
ステップＳ５０５において、ホスト２０１は、ライトジョブを開始し、VOLを書き込むWriteコマンド（Write(VOL)）を発行する。
ステップＳ５０６において、ホスト２０１は、HDR1を書き込むWriteコマンド（Write(HDR1)）を発行する。
ステップＳ５０７において、ホスト２０１は、HDR2を書き込むWriteコマンド（Write(HDR2)）を発行する。
ステップＳ５０８において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【００８５】
ステップＳ５０９において、ホスト２０１は、RBIDコマンドを発行し、仮想テープ装置３０１から受信したF-BIDを記憶する。受信したF-BIDは、Data Blockの先頭のブロックのF-BIDである。尚、記憶するF-BIDは、仮想テープ装置３０１から受信したBID情報に含まれるチャネルBIDとデバイスBIDのうちのチャネルBIDである。ステップＳ５０９で記憶したF-BIDの情報は、例えば、ファイル更新ジョブ（ステップＳ５０４）で用いられる。
【００８６】
ステップＳ５１０において、ホスト２０１は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を連続で発行する。
ステップＳ５１１において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
ステップＳ５１２において、ホスト２０１は、EOF1を書き込むWriteコマンド（Write(EOF1)）を発行する。
ステップＳ５１３において、ホスト２０１は、EOF2を書き込むWriteコマンド（Write(EOF2)）を発行する。
ステップＳ５１４において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【００８７】
ステップＳ５１５において、マルチファイル処理の場合、制御はステップＳ５０６に戻り、マルチファイル処理でない場合（シングルファイル処理の場合）、制御はステップＳ５１６に進む。
ステップＳ５１６において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドおよびアンロードを行うUnloadコマンドをＩＣＰ３１１に送信し、ジョブを終了する。
【００８８】
図８は、第１の実施の形態に係る仮想テープ装置のライト処理および更新処理のフローチャートである。
図８では、図７で述べた処理をホスト２０１が実行した場合の仮想テープ装置のライト処理および更新処理について説明する。
【００８９】
ステップＳ６０１において、ホスト２０１からマウントコマンドを受信した場合、制御はステップＳ６０２に進む。
ここでは、ＩＣＰ３１１がボリューム名がVOLAAAのテープボリュームをマウントするマウントコマンドを受信したとする。
【００９０】
ステップＳ６０２において、テープドライブ制御部３６４は、テープライブラリ４０１からボリューム名がVOLAAAのテープボリュームを読み出し、ディスクアレイ制御部３６２は、ディスクアレイ装置３９１にVOLAAAをマウントする。ディスクアレイ制御部３２４は、VOLAAAがマウントされたことをホスト２０１に通知する。
【００９１】
ステップＳ６０３において、Locateコマンドが受信された場合（ホスト２０１がファイル更新ジョブを行う場合）、制御はステップＳ６０４に進み、Locateコマンド以外のコマンドが受信された場合（ホスト２０１がライトジョブを行う場合）、制御はステップＳ６０５に進む。
【００９２】
ステップＳ６０４において、ホスト２０１では図７のステップＳ５０４の処理が実行されたものとする。
ステップＳ６０４において、ディスクアレイ制御部３２４は、Locate(9)コマンドを受信し、ディスクアレイ装置３９１からVOLAAAを読み出し、F-BID=9のブロックにテープヘッドを位置付ける。尚、該テープヘッドは、VOLAAAの読み書きに使用するディスクアレイ装置３９１上に仮想的に設けられたドライブ（仮想ドライブ）のテープヘッドである。
【００９３】
ステップＳ６０５以降のステップにおいて、ホスト２０１では図７のステップＳ５０５以降の処理が実行されたものとする。
ステップＳ６０５において、ＩＤ制御部３２５は、VOLを書き込むWriteコマンド（Write(VOL)）を受信し、VOLにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、VOLをディスクアレイ装置３９１に書き込む。図３および４に示すようにVOLには、BID=0、F-BID=0が付加される。
【００９４】
ステップＳ６０６において、ＩＤ制御部３２５は、HDR1を書き込むWriteコマンド（Write(HDR1)）を受信し、HDR1にBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、HDR1をディスクアレイ装置３９１に書き込む。図３および４に示すようにHDR1がFile-1のHDR1の場合には、BID=1、F-BID=1が付加され、HDR1がFile-2のHDR1の場合には、BID=n+5、F-BID=7が付加される。
【００９５】
ステップＳ６０７において、ＩＤ制御部３２５は、HDR2を書き込むWriteコマンド（Write(HDR2)）を受信し、HDR2にBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、HDR2をディスクアレイ装置３９１に書き込む。図３および４に示すようにHDR2がFile-1のHDR2の場合には、BID=2、F-BID=1が付加され、HDR2がFile-2のHDR2の場合には、BID=n+6、F-BID=7が付加される。
【００９６】
ステップＳ６０８において、ＩＤ制御部３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、TMをディスクアレイ装置３９１に書き込む。図３および４に示すようにTMがFile-1のTMの場合には、BID=3、F-BID=2が付加され、TMがFile-2のTMの場合には、BID=n+7、F-BID=8が付加される。
【００９７】
ステップＳ６０９において、ディスクアレイ制御部３２４は、RBIDコマンドを受信し、BID情報をホストに送信する。ここでは、BID情報として、F-BIDを使用する。ディスクアレイ制御部３２４は、File-1の書き込み中の場合はF-BID=3、File-2の書き込み中の場合はF-BID=9をBID情報として送信する。尚、送信するF-BIDは、ディスクアレイ装置３９１に書き込み済みのブロックを示すF-BIDであり、前述のチャネルBIDに相当する。
【００９８】
ステップＳ６１０において、ＩＤ制御部３２５は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を受信し、各Data BlockにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、Data Block D1〜DNをディスクアレイ装置３９１に書き込む。図３および４に示すようにFile-1のData Blockを書き込む場合には、BID=4〜n、F-BID=3がそれぞれ付加される。また、図４に示すFile-2のData Blockを書き込む場合には、BID=n+8〜m、F-BID=9がそれぞれ付加される。
【００９９】
ステップＳ６１１において、ＩＤ制御部３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、TMをディスクアレイ装置３９１に書き込む。図３および４に示すようにTMがFile-1のData Blockの次のTMの場合には、BID=n+1、F-BID=4が付加され、TMがFile-2のData Blockの次のTMの場合には、BID=m+1、F-BID=10が付加される。
【０１００】
ステップＳ６１２において、ＩＤ制御部３２５は、EOF1を書き込むWriteコマンド（Write(EOF1)）を受信し、EOF1にBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、EOF1をディスクアレイ装置３９１に書き込む。図３および４に示すようにEOF1がFile-1のEOF1の場合には、BID=n+2、F-BID=5が付加され、EOF1がFile-2のEOF1の場合には、BID=m+2、F-BID=11が付加される。
【０１０１】
ステップＳ６１３において、ＩＤ制御部３２５は、EOF2を書き込むWriteコマンド（Write(EOF2)）を受信し、EOF2にBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、EOF2をディスクアレイ装置３９１に書き込む。図３および４に示すようにEOF2がFile-1のEOF1の場合には、BID=n+3、F-BID=5が付加され、EOF2がFile-2のEOF2の場合には、BID=m+3、F-BID=11が付加される。
【０１０２】
ステップＳ６１４において、ＩＤ制御部３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、TMをディスクアレイ装置３９１に書き込む。図３および４に示すようにTMがFile-1のEOF2の次のTMの場合には、BID=n+4、F-BID=6が付加され、TMがFile-2のEOF2の次のTMの場合には、BID=m+4、F-BID=12が付加される。
【０１０３】
ステップＳ６１５において、TMを書き込むWrite Tape Markコマンドが受信された場合、制御はステップＳ６１６に進み、Write Tape Markコマンド以外のコマンド（Writeコマンド）が受信された場合、制御はステップＳ６０６に戻る。
【０１０４】
ステップＳ６１６において、ＩＤ制御部３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、TMをディスクアレイ装置３９１に書き込む。図３に示すようにシングルファイルテープフォーマットの場合には、BID=n+5、F-BID=7が付加され、図4に示すようにマルチファイルテープフォーマットの場合には、BID=m+5、F-BID=13が付加される。
【０１０５】
ステップＳ６１７において、Unloadコマンドが受信された場合、制御はステップＳ６１８に進む。
ステップＳ６１８において、ＩＤ制御部３２５は、Unloadコマンドを受信し、EODにBIDおよびF-BIDを付加する。ディスクアレイ制御部３２４は、EODをディスクアレイ装置３９１に書き込む。図３に示すようにシングルファイルテープフォーマットの場合には、BID=n+6、F-BID=8が付加され、図4に示すようにマルチファイルテープフォーマットの場合には、BID=m+6、F-BID=14が付加される。
【０１０６】
ステップＳ６１９において、ディスクアレイ制御部３６２は、ディスクアレイ装置３９１からVOLAAAを読み出す。
ステップＳ６２０において、テープドライブ制御部３６４は、テープライブラリ４０１の磁気テープ４１２にVOLAAAを書き込む。詳細には、テープドライブ制御部３６４は、VOLAAAの各ブロックと各ブロックに付加されているBIDを磁気テープ４１２に書き込む。テープドライブ制御部３６４は、F-BIDについては磁気テープ４１２に書き込まない。尚、BIDは、ディスクアレイ装置３９１に格納されているものを使用しても良いし、磁気テープ４１２への書き込み時にＩＤ制御部３６５がBIDを各ブロックに付加しても良い。
【０１０７】
次に、第１の実施の形態の書き込みエラー発生時のエラーリカバリ処理について説明する。
初めに、ディスクアレイ制御部３２４のディスアレイ装置３９１へのテープボリュームの書き込み処理の詳細について説明する。
【０１０８】
先ず、ディスクアレイ制御部３２４は、ホスト２０１から受信したテープボリュームのデータやディスクアレイ制御部３２４で生成したブロックをデータバッファ３３３に書き込む。
ＩＤ制御部３２５は、データバッファ３３３のテープボリュームの各ブロックにBIDおよびF-BIDを付加する。
【０１０９】
そして、ディスクアレイ制御部３２４は、テープボリュームの各ブロックをデータバッファ３３３から読み出して、ディスクアレイ装置３９１に書き込む。
図９は、書き込みエラー検出前および書き込みエラー検出時のデータバッファのF-BIDを示す図である。
【０１１０】
図９の上部は、書き込みエラー検出前のF-BIDを示し、下部は書き込みエラー検出時のF-BIDを示す。
データバッファ３３３には、VOLからDM-1までのブロックが格納され、図９の上部に示すようなF-BIDが付加されているとする。図９の上部に示すように、Data Block(D1〜DM-1)には、F-BID=3が付加されている。
【０１１１】
ここで、ディスクアレイ制御部３３４は、ディスクアレイ装置３９１へのデータの書き込みをテープボリュームの先頭から順に行っており、ブロックDM-3のディスクアレイ装置３９１へ書き込み時に書き込みエラーが発生したとする。
ＩＤ制御部３２５は、エラーが発生したブロックからブロックごとにF-BIDを１増加するようにデータバッファ３３３のF-BIDを更新する。
【０１１２】
これにより、図９の下部に示すようにエラーブロック（DM-3）からブロックごとに１ずつ増加するようにF-BIDが更新されている。すなわち、ブロックDM-3、DM-2、DM-1にそれぞれF-BID=4、5、6が付加されている。
F-BID=4〜6のブロック（DM-3〜DM-1）は、ディスクアレイ装置３９１に書き込まれていないため、これらは未書き込みデータ（ブロック）である。
【０１１３】
図１０は、第１の実施の形態に係る書き込みエラー発生時のホストの処理を示す図である。
ここでは、ホスト２０１は、ディスクアレイ装置３９１上に設けられた仮想ドライブ#0を用いてボリューム名がVOLAAAのテープボリュームを書き込む場合について説明する。
【０１１４】
ステップＳ７０１において、ホスト２０１は、VOLAAAのマウントコマンドを仮想ドライブ#0、すなわち仮想ドライブ#0を実現しているＩＣＰ３１１に送信する。
ステップＳ７０２において、ホスト２０１は、ＩＣＰ３１１からの通知をチェックし、VOLAAAが仮想ドライブ#0にマウントされた通知を受信した場合、制御はステップＳ７０３に進む。
【０１１５】
ステップＳ７０３において、ホスト２０１は、ライトジョブを開始し、VOLを書き込むWriteコマンド（Write(VOL)）を発行する。
ステップＳ７０４において、ホスト２０１は、HDR1を書き込むWriteコマンド（Write(HDR1)）を発行する。
ステップＳ７０５において、ホスト２０１は、HDR2を書き込むWriteコマンド（Write(HDR2)）を発行する。
ステップＳ７０６において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０１１６】
ステップＳ７０７において、ホスト２０１は、RBIDコマンドを発行し、仮想テープ装置３０１から受信したF-BIDを記憶する。受信したF-BIDは、Data Blockの先頭のブロックのF-BIDである。尚、記憶するF-BIDは、仮想テープ装置３０１から受信したBID情報に含まれるチャネルBIDとデバイスBIDのうちのチャネルBIDである。
【０１１７】
ステップＳ７０８において、ホスト２０１は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を連続で発行する。
ステップＳ７０９において、仮想ドライブ#0でエラーが発生した場合、制御はステップＳ７１０に進み、エラーが発生しなかった場合、制御はステップＳ７１１に進む。またエラーが発生した場合、ホスト２０１は、Writeコマンドの発行を中断する。
【０１１８】
ステップＳ７１０において、ホスト２０１は、エラーリカバリ処理を行う。尚、エラーリカバリ処理の詳細は後述する。また、ホスト２０１は、Data BlockのDM以降のブロックを書き込むWriteコマンドの発行を中断したとする。
【０１１９】
ステップＳ７１１において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
ステップＳ７１２において、ホスト２０１は、EOF1を書き込むWriteコマンド（Write(EOF1)）を発行する。
ステップＳ７１３において、ホスト２０１は、EOF2を書き込むWriteコマンド（Write(EOF2)）を発行する。
ステップＳ７１４において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０１２０】
ステップＳ７１５において、マルチファイル処理の場合、制御はステップＳ５０６に戻り、マルチファイル処理でない場合（シングルファイル処理の場合）、制御はステップＳ５１６に進む。
ステップＳ７１６において、ホスト２０１は、TMを書き込むWrite Tape Markコマンドおよびアンロードを行うUnloadコマンドをＩＣＰ３１１に送信し、ジョブを終了する。
【０１２１】
図１１は、第１の実施の形態に係るエラーリカバリ処理の詳細なフローチャートである。
図１１は、図１０のステップＳ７１０に対応する。
ここでは、書き込みエラーが発生し、図９に示すようにF-BIDが更新された場合について述べる。
【０１２２】
ステップＳ７２１において、ホスト２０１は、センスコマンドを発行し、仮想テープ装置３０１からエラー詳細情報（書き込みエラー）、およびセンス情報として未書き込みデータ量を受信する。
【０１２３】
ステップＳ７２２において、ホスト２０１は、RBIDコマンドを発行し、エラーが発生したブロック（エラーブロック）の位置（すなわち、エラーブロックのF-BID（＝４））と未書き込みデータブロック数情報（＝３）を受信する。尚、エラーブロックのF-BIDは、ホスト１２０１から受信したBID情報に含まれるデバイスBIDである。
【０１２４】
ステップＳ７２３において、ホスト２０１は、未書き込みデータブロック数だけRead Bufferコマンドを発行し（すなわち、Read Bufferコマンドを３回発行し）、仮想テープ装置３０１から未書き込みデータを受信する。
【０１２５】
ここでRead Bufferコマンドについて説明する。
仮想テープ装置３０１は、Read Bufferコマンドを受け取ると、仮想テープ装置３０１のデータバッファ３３３に存在する未書き込みデータ（すなわち、ディスクアレイ装置３９３に未書き込みであるデータ）をF-BIDの大きい方から順に１ブロック分のデータをホスト２０１に送信する。
【０１２６】
ホスト２０１は、１回目のRead Bufferコマンドの発行により、F-BID=6のブロックのデータ、２回目のRead Bufferコマンドの発行により、F-BID=5のブロックのデータ、３回目のRead Bufferコマンドの発行により、F-BID=4のブロックのデータを受信する。
【０１２７】
ステップＳ７２４において、ホスト２０１は、エラーブロックの位置、未書き込みデータブロック数情報、および未書き込みデータをホスト２０１内に記憶する。
ステップＳ７２５において、ホスト２０１は、VOLAAAを仮想ドライブ#0からアンマウントするUnloadコマンドを仮想テープ装置３０１に発行する。
【０１２８】
ステップＳ７２６において、ホスト２０１が仮想テープ装置３０１からアンマウント完了の通知を受信すると、制御はステップＳ７２７に進む。
ステップＳ７２７において、ホスト２０１は、VOLAAAを別の仮想ドライブ#1にマウントするマウントコマンドをＩＣＰ３１１に送信する。
【０１２９】
ステップＳ７２８において、ホスト２０１は、ＩＣＰ３１１からの通知をチェックし、VOLAAAが仮想ドライブ#1にマウントされた通知を受信した場合、制御はステップＳ７２９に進む。
ステップＳ７２９において、ホスト２０１は、記憶したエラーブロック位置（F-BID=4）を元に、仮想ドライブ#1のテープヘッドをエラーブロック位置に位置付けるLocateコマンド（Locate(4)）を発行する。
【０１３０】
ステップＳ７３０において、ホスト２０１は、記憶した未書き込みデータブロック数情報および未書き込みデータを元に、該未書き込みデータを書き込むWriteコマンドを未書き込みデータブロック数情報分（すなわち、３回）発行する。詳細には、ホスト２０１は、１回目のWriteコマンドでF-BID=4の未書き込みデータを書き込むWriteコマンド、２回目のWriteコマンドでF-BID=5の未書き込みデータを書き込むWriteコマンド、３回目のWriteコマンドでF-BID=6の未書き込みデータを書き込むWriteコマンドを発行する。
【０１３１】
ステップＳ７３１において、ホスト２０１は、中断したジョブのWriteコマンド、すなわちData BlockのDM〜DNを書き込むWriteコマンド（（Write(DM)、Write(DM+1)、〜、Write(DN)））を連続で発行する。
【０１３２】
図１２は、第１の実施の形態に係る仮想テープ装置のエラーリカバリ処理のフローチャートである。
図１２は、ホスト２０１が図１１のエラーリカバリ処理を行ったときの仮想テープ装置３０１の処理を示す。
【０１３３】
先ず、仮想テープ装置３０１のデータバッファ３３３には、図９の上部に示すようなF-BIDが付加されたテープボリュームのデータが格納されている。
【０１３４】
図９で述べたように、書き込みエラーが発生すると、ＩＤ制御部３２５は、データバッファ３３３のテープボリュームのエラーが発生したブロックからブロックごとにF-BIDを１増加するようにF-BIDを更新する。
それにより、図９の下部に示すようなF-BIDが付加されたテープボリュームのデータがデータバッファ３３３に格納されている。
【０１３５】
図９で述べたように、F-BID=4のブロックでエラーが発生し、F-BID=4〜6のブロックは、ディスクアレイ装置３９１に未書き込みであるとする。
ステップＳ８０１において、ディスクアレイ制御部３２４は、センスコマンドを受信し、ディスクアレイ３９１に未書き込みのデータ（すなわち、F=BID=4〜6のブロック）のサイズの合計（未書き込みデータ量）を算出する。ディスクアレイ制御部３２４は、センス情報として未書き込みデータ量および詳細エラー情報（書き込みエラー）をホスト２０１に通知する。
【０１３６】
ステップＳ８０２において、ディスクアレイ制御部３２４は、RBIDコマンドを受信し、チャネルBID（=6）およびデバイスBID（=4）をBID情報としてホスト２０１に通知し、さらに未書き込みデータブロック数（=3）をホスト２０１に通知する。尚、上記チャネルBIDおよびデバイスBIDは、F-BIDの番号を用いる。
【０１３７】
ステップＳ８０３において、ディスクアレイ制御部３２４は、Read Bufferコマンドを３回受信し、１回目のRead Bufferコマンドに対してF-BID=6のブロックのデータをホスト２０１に送信し、２回目のRead Bufferコマンドに対してF-BID=5のブロックのデータをホスト２０１に送信し、３回目のRead Bufferコマンドに対してF-BID=4のブロックのデータをホスト２０１に送信する。
【０１３８】
ステップＳ８０４において、仮想テープ装置３０１が仮想ドライブ#0のVOLAAAのアンマウントコマンドを受信した場合、制御はステップＳ８０５に進む。
ステップＳ８０５において、ディスクアレイ制御部３２４は、VOLAAAを仮想ドライブ#0からアンマウントする。
【０１３９】
ステップＳ８０６において、仮想テープ装置３０１が仮想ドライブ#1へのVOLAAAのマウントコマンドを受信した場合、制御はステップＳ８０７に進む。
ステップＳ８０７において、ディスクアレイ制御部３２４は、VOLAAAを仮想ドライブ#1にマウントし、VOLAAAが仮想ドライブ#1にマウントされたことをホスト２０１に通知する。
【０１４０】
ステップＳ８０８において、ディスクアレイ制御部３２４は、Locateコマンド（Locate(4)）を受信し、仮想ドライブ#1のテープヘッドをF-BID=3の後端のブロックとエラーブロック（F-BID=4）との間に位置付ける。
【０１４１】
ステップＳ８０９において、ディスクアレイ制御部３２４は、F-BID=4の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータをデータバッファ３３３に再書き込み（上書き）する。ＩＤ制御部３２５は、該未書き込みデータにF-BID=3を付加する。また、ＩＤ制御部３２５は、該未書き込みデータにBIDを付加する。
【０１４２】
ステップＳ８１０において、ディスクアレイ制御部３２４は、F-BID=5の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータをデータバッファ３３３に再書き込み（上書き）する。ＩＤ制御部３２５は、該未書き込みデータにF-BID=3を付加する。また、ＩＤ制御部３２５は、該未書き込みデータにBIDを付加する。
【０１４３】
ステップＳ８１１において、ディスクアレイ制御部３２４は、F-BID=6の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータをデータバッファ３３３に再書き込み（上書き）する。ＩＤ制御部３２５は、該未書き込みデータにF-BID=3を付加する。また、ＩＤ制御部３２５は、該未書き込みデータにBIDを付加する。
【０１４４】
ステップＳ８０９〜Ｓ８１１において、ＩＤ制御部３２５は、図３、４で述べたF-BIDの更新ルールに従って、F-BIDを付加する。それにより、ＩＤ制御部３２５は、未書き込みデータに、エラーが発生する前に該未書き込みデータに付加されていたF-BID（=3）と同じF-BIDを付加している。
【０１４５】
ステップＳ８１２において、ディスクアレイ制御部３２４は、未書き込みデータをディスクアレイ装置３９１に書き込む。詳細には、ディスクアレイ制御部３２４は、ステップＳ８０９〜Ｓ８１１でデータバッファ３３３に書き込まれた未書き込みデータをディスクアレイ装置３９１に書き込む。尚、該未書き込みデータは、新たに付加されたF-BIDおよびBIDを含む。
【０１４６】
図１３は、エラー無し時、エラー発生時、およびエラーリカバリ後のデータバッファ上のF-BIDを示す図である。
図１３の右から３列目はエラー無し時のF-BIDを示し、右から２列目はエラー発生時のF-BIDを示し、右から１列目はエラーリカバリ後のF-BIDを示す。
【０１４７】
図１３の右から３列目に示すように、エラーブロックが発生しなければ、Data Blockには、同じF-BID（=3）が付加される。
図１３の右から２列目に示すように、エラー発生時には、エラーブロックとその後の未書き込みブロックは、ブロック毎にF-BIDの番号が増加する。
【０１４８】
図１３の右から１列目に示すように、エラーリカバリ後、すなわちエラーブロックと未書き込みブロックの再書き込み後、該エラーブロックと該未書き込みブロックには、エラー無し時と同様に他のData Blockと同じF-BID(=3)が付加される。
【０１４９】
第１の実施の形態のシステムによれば、仮想テープ装置とホスト間のディスクアレイ装置の制御では、F-BIDを用いるため、ホストは、137GB以上のテープボリュームを管理できる。
【０１５０】
第１の実施の形態のシステムによれば、137GBの超えるテープボリュームを36トラックテープを制御するOS(F-BID22ビット制御)を使用してコピーまたはExportしても、137GB以上のデータを扱える。
【０１５１】
第１の実施の形態のシステムによれば、137GBの超えるテープボリュームを36トラックテープを制御するOS(F-BID22ビット制御)を使用してコピーまたはExportしても、TMのブロック位置が特定できる。
【０１５２】
第１の実施の形態のシステムによれば、36トラックテープを制御するOS(F-BID22ビット制御)を使用して、22ビットのBIDを用いたOSが管理できる容量を超えた位置(137GBを超えた領域)で書き込みエラーが発生した場合、エラーしたブロック位置およびそれに続く未書き込みブロック位置が特定でき、エラーリカバリが可能となる。
【０１５３】
（第２の実施の形態）
第２の実施の形態では、テープ制御装置を用いた形態について説明する。
図１４は、第２の実施の形態に係るシステムの構成図である。
第２の実施の形態のシステム１１０１は、ホスト（上位装置）１２０１、テープ制御装置１３０１、およびテープライブラリ（実テープ装置）１４０１を備える。
ホスト１２０１とテープ制御装置１３０１、テープ制御装置１３０１とテープライブラリ１４０１は、それぞれ光ケーブルを介して接続されている。
【０１５４】
第２の実施の形態のシステム１１０１は、標準化された３６トラックテープフォーマットを用いる。例えば、３６トラックテープフォーマットは、JIS X6135、ISO/IEC 14251、ファイル構成は、JIS X601に記載されている。
【０１５５】
ホスト１２０１は、テープ制御装置１３０１を介してテープライブラリ１４０１からデータを読み出す、またはテープ制御装置１３０１を介してテープライブラリ１４０１に書き込みデータを送信する。ホスト１２０１は、ブロックのテープ上の位置を示すF-BIDが記載されたF-BID情報を格納し、ホスト１２０１のＯＳは、ブロックの読み書き時にはF-BIDを用いて、書き込み位置や読み出し位置を制御する。ホスト１２０１は、テープ制御装置１３０１とファイバチャネルを用いて通信を行う。ホスト１２０１は、例えば、サーバやパーソナルコンピュータ（ＰＣ）等の情報処理装置である。
【０１５６】
テープ制御装置１３０１は、テープライブラリ１４０１を制御する装置である。
テープ制御装置１３０１は、ホストインタフェース制御部１３１１、フォーマッタ制御部１３５１、およびデータバッファ１３９１を備える。
【０１５７】
ホストインタフェース制御部１３１１は、ホスト１２０１と接続し、データバッファ１３９１上のテープボリュームのデータの送受信の制御を行う。
ホストインタフェース制御部１３１１は、ＣＰＵ１３２１、メモリ１３３１、ホストＩＦ制御回路１３４１、データバッファ制御回路１３４２、およびロボットＩＦ制御回路１３４３を備える。
【０１５８】
ＣＰＵ１３２１は、メモリ１３３１からプログラムを読み出して実行し、各種処理を実行するプロセッサ（処理装置）である。
ＣＰＵ１３２１は、ホストＩＦ制御部１３２２、データバッファ制御部１３２４、ＩＤ制御部１３２５、およびロボットＩＦ制御部１３２６を備える。
【０１５９】
ホストＩＦ制御部１３２２は、ホストＩＦ制御回路１３４１を制御し、ホストＩＦ制御回路１３４１を介してホスト１２０１とのデータの送受信を制御する。ホストＩＦ制御部１３２２は、ＣＰＵ１３２１がホストＩＦプログラム１３３２をメモリ１３３１から読み出して実行することにより実現される。
【０１６０】
データバッファ制御部１３２４は、データバッファ制御回路１３４２を制御し、データバッファ制御回路１３４２を介して、データバッファ１３９１へデータの書き込みやデータバッファ１３９１からのデータの読み出しを行う。データバッファ制御部１３２４は、２２ビットのF-BIDを用いて、データバッファ１３９１の読み書きの制御を行う。また、データバッファ制御部１３２４は、管理テーブル１３９３の読み書きを行う。データバッファ制御部１３２４は、ＣＰＵ１３２１がデータバッファ制御プログラム１３３４をメモリ１３３１から読み出して実行することにより実現される。
【０１６１】
ＩＤ制御部１３２５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）。ＩＤ制御部１３２５は、ＣＰＵ１３２１がF-BID/BID制御プログラム１３３５をメモリ１３３１から読み出して実行することにより実現される。
【０１６２】
ロボットＩＦ制御部１３２６は、ロボットＩＦ制御回路１３４３を制御し、ロボットＩＦ制御回路１３４３を介して、ロボット１４１１を制御する。ロボットＩＦ制御部１３２６は、ＣＰＵ１３２１がロボットＩＦ制御プログラム１３３６をメモリ１３３１から読み出して実行することにより実現される。
【０１６３】
メモリ１３３１は、データやプログラム等を格納する記憶装置である。メモリ１３３１は、例えば、ＲＡＭである。
メモリ１３３１は、ホストＩＦプログラム１３３２、データバッファプログラム１３３４、F-BID/BID制御プログラム１３３５、およびロボット制御プログラム１３３６を有する。
【０１６４】
ホストＩＦプログラム１３３２は、ホストＩＦ制御回路１３４１を制御し、ホスト１２０１とのデータの送受信を制御するプログラムである。
データバッファプログラム１３３４は、データバッファ制御回路１３４２を制御し、データバッファ１３９１のデータの読み書きを制御するプログラムである。
【０１６５】
F-BID/BID制御プログラム１３３５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）プログラムである。第２の実施の形態では、F-BIDは22bit、BIDは32bitとする。
【０１６６】
ロボット制御プログラム１３３６は、ロボット１４１１を制御するプログラムである。
ホストＩＦ制御回路１３４１は、ホスト１２０１とのデータの送受信を制御する。
データバッファ制御回路１３４２は、データバッファ１３９１のデータの読み書きを制御する。
【０１６７】
ロボットＩＦ制御回路１３４３は、ロボット１４１１を制御する。
フォーマッタ制御部１３５１は、ＣＰＵ１３６１、メモリ１３７１、およびデータバッファ制御回路１３８１、およびドライブＩＦ制御回路１３８２を備える。
【０１６８】
ＣＰＵ１３６１は、メモリ１３７１からプログラムを読み出して実行し、各種処理を実行するプロセッサ（処理装置）である。
ＣＰＵ１３６１は、データバッファ制御部１３６２、ドライブＩＦ制御部１３６４、およびＩＤ制御部１３６５を備える。
【０１６９】
データバッファ制御部１３６２は、データバッファ制御回路１３８１を制御し、データバッファ制御回路１３８１を介して、データバッファ１３９１へデータの書き込みやデータバッファ１３９１からのデータの読み出しを行う。データバッファ制御部１３６２は、３２ビットのBIDを用いて、データバッファ１３９１の読み書きの制御を行う。データバッファ制御部１３６２は、ＣＰＵ１３６１がデータバッファ制御プログラム１３７２をメモリ１３７１から読み出して実行することにより実現される。
【０１７０】
ドライブＩＦ制御部１３６４は、ドライブＩＦ制御回路１３８２を制御し、ドライブＩＦ制御回路１３８２を介してドライブ１４１３を制御し、テープドライブ１４０１とのデータの送受信を制御する。ドライブＩＦ制御部１３６４は、３２ビットのBIDを用いて、テープライブラリ１４０１の読み書きの制御を行う。ドライブＩＦ制御部１３６４は、ＣＰＵ１３６１がドライブＩＦ制御プログラム１３７４をメモリ１３７１から読み出して実行することにより実現される。
【０１７１】
ＩＤ制御部１３６５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）。ＩＤ制御部１３６５は、ＣＰＵ１３６１がF-BID/BID制御プログラム１３７５をメモリ１３７１から読み出して実行することにより実現される。
【０１７２】
メモリ１３７１は、データやプログラム等を格納する記憶装置である。メモリ１３７１は、例えば、ＲＡＭである。
メモリ１３７１は、データバッファ制御プログラム１３７２、ドライブＩＦ制御プログラム１３７４、およびF-BID/BID制御プログラム１３７５を有する。
【０１７３】
データバッファ制御プログラム１３７２は、データバッファ制御回路１３８１を制御し、データバッファ１３９１のデータの読み書きを制御するプログラムである。
ドライブＩＦ制御プログラム１３７４は、ドライブＩＦ制御回路１３８２を制御し、テープドライブ１４０１とのデータの送受信を制御するプログラムである。
【０１７４】
F-BID/BID制御プログラム１３７５は、F-BIDおよびBIDをテープボリュームの各ブロックに付加する（割り当てる）プログラムである。第２の実施の形態では、F-BIDは22bit、BIDは32bitとする。
【０１７５】
データバッファ制御回路１３８１は、データバッファ１３９１のデータの読み書きを制御する。
ドライブＩＦ制御回路１３８２は、ドライブ１４１３を制御し、テープドライブ１４０１とのデータの送受信を制御する。
【０１７６】
データバッファ１３９１は、データを格納する記憶装置である。データバッファ１３９１は、例えば、ＲＡＭである。
データバッファ１３９１は、テープボリューム１３９２および管理テーブル１３９３を格納する。
【０１７７】
テープボリューム１３９２の形式は、例えば、図３や図４に示すような標準化されたテープフォーマットである。テープボリューム１３９２は、複数のブロックと各ブロックに付加されたBIDおよびF-BIDを含んでいる。
【０１７８】
管理テーブル１３９３は、テープボリューム１３９２の各ブロック、BID、およびF-BIDの対応関係が記載されたテーブルである。管理テーブル１３９３は、第１の実施の形態の管理テーブル３９３と同様であるので説明は省略する。
【０１７９】
テープライブラリ１４０１は、ロボット１４１１、磁気テープ１４１２−ｉ（ｉ＝１〜３）、およびドライブ１４１３を備える。
ロボット１４１１は、ロボットＩＦ制御部１３２６により制御され、読み書きを行う対象の磁気テープ１４１２をドライブ１４１３にセットする。
【０１８０】
磁気テープ１４１２は、データを記録する記録媒体である。
ドライブ１４１３は、ドライブ１４１３にセットされた磁気テープ１４１２に対するデータの読み書きを行う。ドライブ１４１３は、磁気テープ１４１２から読み出したデータをドライブＩＦ制御回路１３８２に送信、およびドライブＩＦ制御回路１３８２から受信したデータを磁気テープ１４１２に書き込む。
ここで、第２の実施の形態のシステム１１０１で用いられるRead BID（RBID）コマンドおよびLocateコマンドについて説明する。
【０１８１】
・Read BIDコマンド
第２の実施の形態において、テープ制御装置１３０１がホスト２０１からRead BIDコマンドを受信すると、チャネルBIDとデバイスBIDを含むBID情報をホスト１２０１に応答する。
【０１８２】
チャネルBIDは、ホスト１２０１とテープ制御装置１３０１間の進行状況を示す情報、すなわち、どのブロックまでホスト１２０１が送信（テープ制御装置１１３０１が受信）したかを示す情報である。具体的には、チャネルBIDは、テープ制御装置１３０１がホスト２０１から受信したテープボリュームのブロックの内の最後に受信したブロックのF-BIDである。言い換えれば、データバッファ１３９１内にあるテープボリュームの最後のブロックのF-BIDである。
【０１８３】
デバイスBIDは、ドライブ１４１３のテープヘッダの位置を示す情報であり、テープ制御装置１３０１とテープライブラリ１４０１間の処理の進行状況を示す情報、すなわちどのブロックまでテープライブラリ１４０１に書き込み済みであるかを示す情報である。具体的には、デバイスBIDは、テープヘッダの直前のブロック（テープライブラリ１４０１に最後に書き込まれたブロック）のBIDに1を加算したBIDに対応するF-BIDである。
【０１８４】
例えば、例えばチャネルBIDが5で、デバイスBIDが3の場合、F-BID=2までのブロックはテープライブラリ１４０１に書き込み済みあり、F-BID=5までのブロックはホスト１２０１からテープ制御装置１３０１に送信済みであることを示す。すなわち、F-BID=3,F-BID=4,F-BID=5のブロックが未書き込みでテープ制御装置１３０１のデータバッファ１３９３内に残っていることを示す。
【０１８５】
・Locateコマンド
Locateコマンドは、読み書きを行うドライブのテープヘッドを指定された位置に位置付けるためのコマンドである。
【０１８６】
第２の実施の形態において、テープ制御装置１３０１がホスト２０１からLocateコマンドを受信すると、Locateコマンドで指定されたF-BIDに対応するBIDのブロック位置までドライブ１４１２のテープヘッドを位置付ける。例えばLocate コマンドによりF-BID=5が指定された場合、ドライブＩＦ制御部１３６４は、テープヘッドを磁気テープ１４１２のテープボリュームのF-BID=4に対応するBIDのブロックとF-BID=5に対応するBIDのブロックの間に位置付ける。尚、F-BIDに対応するBIDは、管理テープル１３９３を参照することにより、取得できる。
これにより、ドライブ１４１３は、F-BID=5に対応するBIDのブロックから書き込みまたは読み込みを行う。
【０１８７】
図１５は、第２の実施の形態に係るホストのライト処理および更新処理のフローチャートである。
図１５では、ホスト１２０１がボリューム名がVOLAAAのテープボリューム（以下、単にVOLAAAと表記する）を書き込みまたは更新する場合について述べる。
【０１８８】
ステップＳ１５０１において、ホスト１２０１は、VOLAAAのマウントコマンドをホストインタフェース制御部１３１１に送信する。
ステップＳ１５０２において、ホスト１２０１は、ホストインタフェース制御部１３１１からの通知をチェックし、VOLAAAがマウントされた通知を受信した場合、制御はステップＳ１５０３に進む。
【０１８９】
ステップＳ１５０３において、ホスト１２０１が実行しようとしているジョブがファイルを更新するファイル更新ジョブの場合、制御はステップＳ１５０４に進み、ホスト１２０１が実行しようとしているジョブがファイル更新ジョブでない場合（ファイルを新たに書き込むライトジョブの場合）、制御はステップＳ１５０５に進む。
【０１９０】
ステップＳ１５０４のファイル更新では、テープボリュームは図４に示すような２ファイルのマルチテープフォーマットであり、File-2を更新する場合について述べる。
ステップＳ１５０４において、ホスト１２０１は、ファイル更新ジョブを開始し、更新するファイルのData Blockの先頭のブロックへテープヘッドを位置付けるコマンドをホストインタフェース制御部１３１１に発行する。詳細には、ホスト１２０１は、以前に記憶したF-BID情報を参照し、更新するファイルのData Blockの先頭のブロック（F-BID=9）へテープヘッドを位置付けるため、Locate(9)コマンドをホストインタフェース制御部１３１１に発行する。図４に示すように、File-2のData Blockの先頭のブロックのF-BIDは9であるので、ホスト１２０１はLocate(9)コマンドを発行している。
【０１９１】
ステップＳ１５０５において、ホスト１２０１は、ライトジョブを開始し、VOLを書き込むWriteコマンド（Write(VOL)）を発行する。
ステップＳ１５０６において、ホスト１２０１は、HDR1を書き込むWriteコマンド（Write(HDR1)）を発行する。
ステップＳ１５０７において、ホスト１２０１は、HDR2を書き込むWriteコマンド（Write(HDR2)）を発行する。
ステップＳ１５０８において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０１９２】
ステップＳ１５０９において、ホスト１２０１は、RBIDコマンドを発行し、テープ制御装置１３０１から受信したF-BIDを記憶する。受信したF-BIDは、Data Blockの先頭のブロックのF-BIDである。尚、記憶するF-BIDは、テープ制御装置１３０１から受信したBID情報に含まれるチャネルBIDとデバイスBIDのうちのチャネルBIDである。ステップＳ１５０９で記憶したF-BIDの情報は、例えば、ファイル更新ジョブ（ステップＳ１５０４）で用いられる。
【０１９３】
ステップＳ１５１０において、ホスト１２０１は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を連続で発行する。
【０１９４】
ステップＳ１５１１において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
ステップＳ１５１２において、ホスト１２０１は、EOF1を書き込むWriteコマンド（Write(EOF1)）を発行する。
ステップＳ１５１３において、ホスト１２０１は、EOF2を書き込むWriteコマンド（Write(EOF2)）を発行する。
ステップＳ１５１４において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０１９５】
ステップＳ１５１５において、マルチファイル処理の場合、制御はステップＳ１５０６に戻り、マルチファイル処理でない場合（シングルファイル処理の場合）、制御はステップＳ１５１６に進む。
【０１９６】
ステップＳ１５１６において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドおよびアンロードを行うUnloadコマンドをホストインタフェース制御部１３１１に送信し、ジョブを終了する。
【０１９７】
図１６は、第２の実施の形態に係るテープ制御装置のライト処理および更新処理のフローチャートである。
図１６では、図１５で述べた処理をホスト２０１が実行した場合のテープ制御装置３０１のライト処理および更新処理について説明する。
【０１９８】
ステップＳ１６０１において、ホスト１２０１からマウントコマンドを受信した場合、制御はステップＳ１６０２に進む。
ここでは、ホストインタフェース制御部１３１１がボリューム名がVOLAAAのテープボリュームをマウントするマウントコマンドを受信したとする。
【０１９９】
ステップＳ１６０２において、ドライブＩＦ制御部１３６４は、ボリューム名がVOLAAAの磁気テープ１４１２をドライブ１４１３にマウントする。データバッファ制御部１３２４は、VOLAAAがマウントされたことをホスト１２０１に通知する。
【０２００】
ステップＳ１６０３において、Locateコマンドが受信された場合（ホスト１２０１がファイル更新ジョブを行う場合）、制御はステップＳ１６０４に進み、Locateコマンド以外のコマンドが受信された場合（ホスト１２０１がライトジョブを行う場合）、制御はステップＳ１６０５に進む。
【０２０１】
ステップＳ１６０４において、ホスト１２０１では図１５のステップＳ１５０４の処理が実行されたものとする。
ステップＳ１６０４において、ホストＩＦ制御部１３２２は、Locate(9)コマンドを受信する。ドライブＩＦ制御部１３６４は、管理テーブル１３９３を参照し、F-BID=9のブロックのうちの先頭のブロックに対応するBID=n+8を取得し、ドライブ１４１２のテープヘッドをBID=n+8に位置付ける。
【０２０２】
ステップＳ１６０５以降のステップにおいて、ホスト１２０１では図１５のステップＳ１５０５以降の処理が実行されたものとする。
ステップＳ１６０５において、ＩＤ制御部１３２５は、VOLを書き込むWriteコマンド（Write(VOL)）を受信し、VOLにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、VOLをデータバッファ１３９１に書き込む。図３および４に示すようにVOLには、BID=0、F-BID=0が付加される。
【０２０３】
ステップＳ１６０６において、ＩＤ制御部１３２５は、HDR1を書き込むWriteコマンド（Write(HDR1)）を受信し、HDR1にBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、HDR1をデータバッファ１３９１に書き込む。図３および４に示すようにHDR1がFile-1のHDR1の場合には、BID=1、F-BID=1が付加され、HDR1がFile-2のHDR1の場合には、BID=n+5、F-BID=7が付加される。
【０２０４】
ステップＳ１６０７において、ＩＤ制御部１３２５は、HDR2を書き込むWriteコマンド（Write(HDR2)）を受信し、HDR2にBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、HDR2をデータバッファ１３９１に書き込む。図３および４に示すようにHDR2がFile-1のHDR2の場合には、BID=2、F-BID=1が付加され、HDR2がFile-2のHDR2の場合には、BID=n+6、F-BID=7が付加される。
【０２０５】
ステップＳ１６０８において、ＩＤ制御部１３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、TMをデータバッファ１３９１に書き込む。図３および４に示すようにTMがFile-1のTMの場合には、BID=3、F-BID=2が付加され、TMがFile-2のTMの場合には、BID=n+7、F-BID=8が付加される。
【０２０６】
ステップＳ１６０９において、ドライブＩＦ制御部１３６４は、データバッファ１３９１のデータのうち、磁気テープ１４１２に未書き込みのデータと該未書き込みのデータのBIDをテープライブラリ１４０１の磁気テープ１４１２に書き込む。例えば、図３または図４のFile-1を書き込んでいる場合には、VOL、HDR1、HDR2、およびTM、さらにこれらブロックに付加されているBIDを磁気テープ１４１２に書き込む。尚、磁気テープ１４１２に書き込むBIDは、データバッファ１３９１に格納されているBIDを使用しても良いし、テープライブラリ１４０１への書き込み時にＩＤ制御部１３６５がBIDを各ブロックに付加しても良い。尚、ドライブＩＦ制御部１３６４は、F-BIDについては、磁気テープ１４１２に書き込まない。
【０２０７】
ステップＳ１６１０において、データバッファ制御部１３２４は、RBIDコマンドを受信し、BID情報をホストに送信する。ここでは、BID情報として、F-BIDを使用する。データバッファ制御部１３２４は、File-1の書き込み中の場合はF-BID=3、File-2の書き込み中の場合はF-BID=9をBID情報として送信する。尚、送信するF-BIDは、データバッファ１３９１に書き込み済みのブロックを示すF-BIDであり、前述のチャネルBIDに相当する。
【０２０８】
ステップＳ１６１１において、ＩＤ制御部１３２５は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を受信し、各Data BlockにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、Data Block D1〜DNをデータバッファ１３９１に書き込む。図３および４に示すようにFile-1のData Blockを書き込む場合には、BID=4〜n、F-BID=3がそれぞれ付加される。また、図４に示すFile-2のData Blockを書き込む場合には、BID=n+8〜m、F-BID=9がそれぞれ付加される。
【０２０９】
ステップＳ１６１２において、ＩＤ制御部２３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、TMをデータバッファ１３９１に書き込む。図３および４に示すようにTMがFile-1のData Blockの次のTMの場合には、BID=n+1、F-BID=4が付加され、TMがFile-2のData Blockの次のTMの場合には、BID=m+1、F-BID=10が付加される。
【０２１０】
ステップＳ１６１３において、ドライブＩＦ制御部１３６４は、データバッファ１３９１のデータのうち、磁気テープ１４１２に未書き込みのデータと該未書き込みのデータのBIDをテープライブラリ１４０１の磁気テープ１４１２に書き込む。詳細には、ドライブＩＦ制御部１３６４は、Data BlockのD1〜DNとTM、さらにこれらブロックに付加されているBIDを磁気テープ１４１２に書き込む。尚、磁気テープ１４１２に書き込むBIDは、データバッファ１３９１に格納されているBIDを使用しても良いし、テープライブラリ１４０１への書き込み時にＩＤ制御部１３６５がBIDを各ブロックに付加しても良い。尚、ドライブＩＦ制御部１３６４は、F-BIDについては、磁気テープ１４１２に書き込まない。
【０２１１】
ステップＳ１６１４において、ＩＤ制御部１３２５は、EOF1を書き込むWriteコマンド（Write(EOF1)）を受信し、EOF1にBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、EOF1をデータバッファ１３９１に書き込む。図３および４に示すようにEOF1がFile-1のEOF1の場合には、BID=n+2、F-BID=5が付加され、EOF1がFile-2のEOF1の場合には、BID=m+2、F-BID=11が付加される。
【０２１２】
ステップＳ１６１５において、ＩＤ制御部１３２５は、EOF2を書き込むWriteコマンド（Write(EOF2)）を受信し、EOF2にBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、EOF2をデータバッファ１３９１に書き込む。図３および４に示すようにEOF2がFile-1のEOF1の場合には、BID=n+3、F-BID=5が付加され、EOF2がFile-2のEOF2の場合には、BID=m+3、F-BID=11が付加される。
【０２１３】
ステップＳ１６１６において、ＩＤ制御部１３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、TMをデータバッファ１３９１に書き込む。図３および４に示すようにTMがFile-1のEOF2の次のTMの場合には、BID=n+4、F-BID=6が付加され、TMがFile-2のEOF2の次のTMの場合には、BID=m+4、F-BID=12が付加される。
【０２１４】
ステップＳ１６１７において、ドライブＩＦ制御部１３６４は、データバッファ１３９１のデータのうち、磁気テープ１４１２に未書き込みのデータと該未書き込みのデータのBIDをテープライブラリ１４０１の磁気テープ１４１２に書き込む。詳細には、ドライブＩＦ制御部１３６４は、EOF1、EOF2、およびTM、さらにこれらブロックに付加されているBIDを磁気テープ１４１２に書き込む。尚、磁気テープ１４１２に書き込むBIDは、データバッファ１３９１に格納されているBIDを使用しても良いし、テープライブラリ１４０１への書き込み時にＩＤ制御部１３６５がBIDを各ブロックに付加しても良い。尚、ドライブＩＦ制御部１３６４は、F-BIDについては、磁気テープ１４１２に書き込まない。
【０２１５】
ステップＳ１６１８において、TMを書き込むWrite Tape Markコマンドが受信された場合、制御はステップＳ１６１９に進み、Write Tape Markコマンド以外のコマンド（Writeコマンド）が受信された場合、制御はステップＳ１６０６に戻る。
【０２１６】
ステップＳ１６１９において、ＩＤ制御部１３２５は、TMを書き込むWrite Tape Markコマンドを受信し、TMにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、TMをデータバッファ１３９１に書き込む。図３に示すようにシングルファイルテープフォーマットの場合には、BID=n+5、F-BID=7が付加され、図4に示すようにマルチファイルテープフォーマットの場合には、BID=m+5、F-BID=13が付加される。
【０２１７】
ステップＳ１６２０において、ドライブＩＦ制御部１３６４は、データバッファ１３９１のデータのうち、磁気テープ１４１２に未書き込みのデータと該未書き込みのデータのBIDをテープライブラリ１４０１の磁気テープ１４１２に書き込む。詳細には、ドライブＩＦ制御部１３６４は、TM、さらに該TMに付加されているBIDを磁気テープ１４１２に書き込む。尚、磁気テープ１４１２に書き込むBIDは、データバッファ１３９１に格納されているBIDを使用しても良いし、テープライブラリ１４０１への書き込み時にＩＤ制御部１３６５がBIDを各ブロックに付加しても良い。尚、ドライブＩＦ制御部１３６４は、F-BIDについては、磁気テープ１４１２に書き込まない。
【０２１８】
ステップＳ１６２１において、Unloadコマンドが受信された場合、制御はステップＳ１６２２に進む。
ステップＳ１６２２において、ＩＤ制御部３２５は、Unloadコマンドを受信し、EODにBIDおよびF-BIDを付加する。データバッファ制御部１３２４は、EODをデータバッファ１３９１に書き込む。図３に示すようにシングルファイルテープフォーマットの場合には、BID=n+6、F-BID=8が付加され、図4に示すようにマルチファイルテープフォーマットの場合には、BID=m+6、F-BID=14が付加される。ドライブＩＦ制御部１３６４は、EOD、さらにEODに付加されているBIDを磁気テープ１４１２に書き込む。尚、磁気テープ１４１２に書き込むBIDは、データバッファ１３９１に格納されているBIDを使用しても良いし、テープライブラリ１４０１への書き込み時にＩＤ制御部１３６５がBIDを各ブロックに付加しても良い。尚、ドライブＩＦ制御部１３６４は、F-BIDについては、磁気テープ１４１２に書き込まない。磁気テープ１４１２へのEODの書き込み後、ドライブＩＦ制御部１３６４は、VOLAAAをアンマウントする。
【０２１９】
次に、第２の実施の形態の書き込みエラー発生時のエラーリカバリ処理について説明する。
図１７は、書き込みエラー検出前および書き込みエラー検出時のデータバッファのF-BIDを示す図である。
【０２２０】
図１７の上部は、書き込みエラー検出前のF-BIDを示し、下部は書き込みエラー検出時のF-BIDを示す。
データバッファ１３９１には、VOLからDM-1までのブロックが格納され、図１７の上部に示すようなF-BIDが付加されているとする。図１７の上部に示すように、Data Block(D1〜DM-1)には、F-BID=3が付加されている。
【０２２１】
ここで、データバッファ制御部１３２４は、データバッファ１３９１へのデータの書き込みをテープボリュームの先頭から順に行っており、ブロックDM-3のデータバッファ１３９１へ書き込み時に書き込みエラーが発生したとする。
ＩＤ制御部１３２５は、エラーが発生したブロックからブロックごとにF-BIDを１増加するようにデータバッファ１３９１のF-BIDを更新する。
【０２２２】
これにより、図１７の下部に示すようにエラーブロック（DM-3）からブロックごとに１ずつ増加するようにF-BIDが更新されている。すなわち、ブロックDM-3、DM-2、DM-1にそれぞれF-BID=4、5、6が付加されている。
F-BID=4〜6のブロック（DM-3〜DM-1）は、ディスクアレイ装置３９１に書き込まれていないため、これらは未書き込みデータ（ブロック）である。
【０２２３】
図１８は、第２の実施の形態に係る書き込みエラー発生時のホストの処理を示す図である。
ここでは、テープライブラリ１４０１のドライブ１４１３は複数あり（ドライブ#0、ドライブ#1）、ホスト１２０１は、複数のドライブ１４１３のうちのドライブ#0を用いてボリューム名がVOLAAAのテープボリュームを書き込む場合について説明する。
【０２２４】
ステップＳ１７０１において、ホスト１２０１は、VOLAAAのマウントコマンドをテープライブラリ１４０１のドライブ#0に送信する。
ステップＳ１７０２において、ホスト１２０１は、テープ制御装置１３０１からの通知をチェックし、VOLAAAがドライブ#0にマウントされた通知を受信した場合、制御はステップＳ１７０３に進む。
【０２２５】
ステップＳ１７０３において、ホスト１２０１は、ライトジョブを開始し、VOLを書き込むWriteコマンド（Write(VOL)）を発行する。
ステップＳ１７０４において、ホスト１２０１は、HDR1を書き込むWriteコマンド（Write(HDR1)）を発行する。
ステップＳ１７０５において、ホスト１２０１は、HDR2を書き込むWriteコマンド（Write(HDR2)）を発行する。
ステップＳ１７０６において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０２２６】
ステップＳ１７０７において、ホスト１２０１は、RBIDコマンドを発行し、テープ制御装置１３０１から受信したF-BIDを記憶する。受信したF-BIDは、Data Blockの先頭のブロックのF-BIDである。尚、記憶するF-BIDは、テープ制御装置１３０１から受信したBID情報に含まれるチャネルBIDとデバイスBIDのうちのチャネルBIDである。
【０２２７】
ステップＳ１７０８において、ホスト１２０１は、Data BlockのD1からDNまでのブロックを書き込むWriteコマンド（Write(D1)、Write(D2)、〜、Write(DN)）を連続で発行する。
ステップＳ１７０９において、ドライブ#0でエラーが発生した場合、制御はステップＳ１７１０に進み、エラーが発生しなかった場合、制御はステップＳ１７１１に進む。またエラーが発生した場合、ホスト１２０１は、Writeコマンドの発行を中断する。
【０２２８】
ステップＳ１７１０において、ホスト１２０１は、エラーリカバリ処理を行う。尚、エラーリカバリ処理の詳細は後述する。また、ホスト１２０１は、Data BlockのDM以降のブロックを書き込むWriteコマンドの発行を中断したとする。
【０２２９】
ステップＳ１７１１において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
ステップＳ１７１２において、ホスト１２０１は、EOF1を書き込むWriteコマンド（Write(EOF1)）を発行する。
ステップＳ１７１３において、ホスト１２０１は、EOF2を書き込むWriteコマンド（Write(EOF2)）を発行する。
ステップＳ１７１４において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドを発行する。
【０２３０】
ステップＳ１７１５において、マルチファイル処理の場合、制御はステップＳ１５０６に戻り、マルチファイル処理でない場合（シングルファイル処理の場合）、制御はステップＳ１５１６に進む。
【０２３１】
ステップＳ１７１６において、ホスト１２０１は、TMを書き込むWrite Tape Markコマンドおよびアンロードを行うUnloadコマンドをテープ制御装置１３０１に送信し、ジョブを終了する。
【０２３２】
図１９は、第２の実施の形態に係るエラーリカバリ処理の詳細なフローチャートである。
図１９は、図１８のステップＳ１７１０に対応する。
ここでは、書き込みエラーが発生し、図１７に示すようにデータバッファ１３９１のF-BIDが更新された場合について述べる。すなわち、F-BID=4〜6のブロックは、テープライブラリ１４０１に書き込まれていない未書き込みデータである。
【０２３３】
ステップＳ１７２１において、ホスト１２０１は、センスコマンドを発行し、テープ制御装置１３０１からエラー詳細情報（書き込みエラー）、センス情報として未書き込みデータ量を受信する。
【０２３４】
ステップＳ１７２２において、ホスト１２０１は、RBIDコマンドを発行し、エラーが発生したブロック（エラーブロック）の位置（すなわち、エラーブロックのF-BID（＝４））と未書き込みデータブロック数情報（＝３）を受信する。尚、エラーブロックのF-BIDは、ホスト１２０１から受信したBID情報に含まれるデバイスBIDである。
【０２３５】
ステップＳ１７２３において、ホスト１２０１は、未書き込みデータブロック数だけRead Bufferコマンドを発行し（すなわち、Read Bufferコマンドを３回発行し）、テープ制御装置１３０１から未書き込みデータを受信する。
【０２３６】
ここでRead Bufferコマンドについて説明する。
テープ制御装置１３０１は、Read Bufferコマンドを受け取ると、テープ制御装置１３０１のデータバッファ１３９１に存在する未書き込みデータ（すなわち、テープライブラリ１４０１に未書き込みであるデータ）をF-BIDの大きい方から順に１ブロック分のデータをホスト１２０１に送信する。
【０２３７】
ホスト１２０１は、１回目のRead Bufferコマンドの発行により、F-BID=6のブロックのデータ、２回目のRead Bufferコマンドの発行により、F-BID=5のブロックのデータ、３回目のRead Bufferコマンドの発行により、F-BID=4のブロックのデータを受信する。
【０２３８】
ステップＳ１７２４において、ホスト１２０１は、エラーブロックの位置、未書き込みデータブロック数情報、および未書き込みデータをホスト１２０１内に記憶する。
ステップＳ１７２５において、ホスト１２０１は、VOLAAAをドライブ#0からアンマウントするUnloadコマンドをテープ制御装置１３０１に発行する。
【０２３９】
ステップＳ１７２６において、ホスト１２０１がテープ制御装置１３０１からアンマウント完了の通知を受信すると、制御はステップＳ１７２７に進む。
ステップＳ１７２７において、ホスト１２０１は、VOLAAAを別のドライブ#1にマウントするマウントコマンドをテープ制御装置１３０１に送信する。
【０２４０】
ステップＳ１７２８において、ホスト１２０１は、テープ制御装置１３０１からの通知をチェックし、VOLAAAがドライブ#1にマウントされた通知を受信した場合、制御はステップＳ１７２９に進む。
ステップＳ１７２９において、ホスト１２０１は、記憶したエラーブロック位置（F-BID=4）を元に、ドライブ#1のテープヘッドをエラーブロック位置に位置付けるLocateコマンド（Locate(4)）を発行する。
【０２４１】
ステップＳ１７３０において、ホスト１２０１は、記憶した未書き込みデータブロック数情報および未書き込みデータを元に、該未書き込みデータを書き込むWriteコマンドを未書き込みデータブロック数分（すなわち、３回）発行する。詳細には、ホスト１２０１は、１回目のWriteコマンドでF-BID=4の未書き込みデータを書き込むWriteコマンド、２回目のWriteコマンドでF-BID=5の未書き込みデータを書き込むWriteコマンド、３回目のWriteコマンドでF-BID=6の未書き込みデータを書き込むWriteコマンドを発行する。
【０２４２】
ステップＳ１７３１において、ホスト１２０１は、中断したジョブのWriteコマンド、すなわちData BlockのDM〜DNを書き込むWriteコマンド（（Write(DM)、Write(DM+1)、〜、Write(DN)））を連続で発行する。
【０２４３】
図２０は、第２の実施の形態に係る仮想テープ装置のエラーリカバリ処理のフローチャートである。
図２０は、ホスト１２０１が図１９のエラーリカバリ処理を行ったときのテープ制御装置１３０１の処理を示す。
先ず、テープ制御装置１３０１のデータバッファ１３９１には、図１７の上部に示すようにF-BIDが付加されたテープボリュームのデータが格納されている。
【０２４４】
図１７で述べたように、書き込みエラーが発生すると、ＩＤ制御部１３２５は、データバッファ１３９１のテープボリュームのエラーが発生したブロックからブロックごとにF-BIDを１増加するようにF-BIDを更新する。
それにより、図１７の下部に示すようなF-BIDが付加されたテープボリュームのデータがデータバッファ１３９１に格納されている。
【０２４５】
図１７で述べたように、F-BID=4のブロックでエラーが発生し、F-BID=4〜6のブロックは、テープライブラリ１４０１の磁気テープ１４１２に未書き込みである。
ステップＳ１８０１において、データバッファ制御部１３２４は、センスコマンドを受信し、テープライブラリ１４０１に未書き込みのデータ（すなわち、F=BID=4〜6のブロック）のサイズの合計（未書き込みデータ量）を算出する。データバッファ制御部１３２４は、センス情報として未書き込みデータ量および詳細エラー情報（書き込みエラー）をホスト１２０１に通知する。
【０２４６】
ステップＳ１８０２において、データバッファ制御部１３２４は、RBIDコマンドを受信し、チャネルBID（=6）およびデバイスBID（=4）をBID情報としてホスト１２０１に通知し、さらに未書き込みデータブロック数（=3）をホスト１２０１に通知する。尚、上記チャネルBIDおよびデバイスBIDは、F-BIDの番号を用いる。
【０２４７】
ステップＳ１８０３において、データバッファ制御部１３２４は、Read Bufferコマンドを３回受信し、１回目のRead Bufferコマンドに対してF-BID=6のブロックのデータをホスト１２０１に送信し、２回目のRead Bufferコマンドに対してF-BID=5のブロックのデータをホスト１２０１に送信し、３回目のRead Bufferコマンドに対してF-BID=4のブロックのデータをホスト１２０１に送信する。
【０２４８】
ステップＳ１８０４において、テープ制御装置１３０１がドライブ#0のVOLAAAのアンマウントコマンドを受信した場合、制御はステップＳ１８０５に進む。
ステップＳ１８０５において、ドライブＩＦ制御部１３６４は、VOLAAAをドライブ#0からアンマウントする。
ステップＳ１８０６において、テープ制御装置１３０１がドライブ#1へのVOLAAAのマウントコマンドを受信した場合、制御はステップＳ１８０７に進む。
ステップＳ１８０７において、ドライブＩＦ制御部１３６４は、VOLAAAをドライブ#1にマウントし、VOLAAAがドライブ#1にマウントされたことをホスト１２０１に通知する。
【０２４９】
ステップＳ１８０８において、ドライブＩＦ制御部１３６４は、Locateコマンド（Locate(4)）を受信し、ドライブ#1のテープヘッドをF-BID=3の後端のブロックとエラーブロック（F-BID=4）との間に位置付ける。すなわち、テープヘッドを書き込み済みのブロックの後ろ、すなわちエラーブロックの先頭に位置付けることにより、エラーブロックの位置から書き込みできるようにする。尚、テープライブラリ１４０１では、BIDを用いてブロックの位置を管理しているため、ドライブＩＦ制御部１３６４は、管理テーブル１３９３を参照して、F-BIDに対応するBIDを取得して、BIDを用いてテープヘッドを位置付けている。
【０２５０】
ステップＳ１８０９において、ＩＤ制御部３２５は、F-BID=4の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータにF-BID=3を付加し、データバッファ制御部１３２４は、該未書き込みデータをデータバッファ１３９１に再書き込み（上書き）する。すなわち、ＩＤ制御部３２５は、エラーリカバリ時にエラーを検出しない場合に付加されるF-BIDと同様のF-BIDを付加する。また、ＩＤ制御部３２５は、BIDについても該未書き込みデータに付加している。
【０２５１】
ステップＳ１８１０９において、ＩＤ制御部３２５は、F-BID=5の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータにF-BID=3を付加し、データバッファ制御部１３２４は、該未書き込みデータをデータバッファ１３９１に再書き込み（上書き）する。すなわち、ＩＤ制御部３２５は、エラーリカバリ時にエラーを検出しない場合に付加されるF-BIDと同様のF-BIDを付加する。また、ＩＤ制御部３２５は、BIDについても該未書き込みデータに付加している。
【０２５２】
ステップＳ１８１１において、ＩＤ制御部３２５は、F-BID=6の未書き込みデータを書き込むWriteコマンドを受信し、該未書き込みデータにF-BID=3を付加し、データバッファ制御部１３２４は、該未書き込みデータをデータバッファ１３９１に再書き込み（上書き）する。すなわち、ＩＤ制御部３２５は、エラーリカバリ時にエラーを検出しない場合に付加されるF-BIDと同様のF-BIDを付加する。また、ＩＤ制御部３２５は、BIDについても該未書き込みデータに付加している。
【０２５３】
ステップＳ１８０９〜Ｓ１８１１において、ＩＤ制御部１３２５は、図３、４で述べたF-BIDの更新ルールに従って、F-BIDを付加する。それにより、ＩＤ制御部１３２５は、未書き込みデータに、エラーが発生する前に該未書き込みデータに付加されていたF-BID（=3）と同じF-BIDを付加している。
【０２５４】
ステップＳ１８１２において、ドライブＩＦ制御部１３６４は、未書き込みデータとBIDをテープライブラリ１４０１に書き込む。詳細には、ドライブＩＦ制御部１３６４は、ステップＳ１８０９〜Ｓ１８１１でデータバッファ１３９１に書き込まれた未書き込みデータと該未書き込みデータのBIDをテープライブラリ１４０１に書き込む。尚、BIDは、データバッファ１３９１に格納されているBIDを用いても良いし、ＩＤ制御部１３６５が付加してもよい。
【０２５５】
第２の実施の形態のシステムによれば、テープ制御装置とホスト間のテータバッファの制御では、F-BIDを用いるため、ホストは、137GB以上のテープボリュームを管理できる。
第２の実施の形態のシステムによれば、36トラックテープを制御するOS(F-BID22ビット制御)を使用して、22ビットのBIDを用いたOSが管理できる容量を超えた位置(137GBを超えた領域)で書き込みエラーが発生した場合、エラーしたブロック位置およびそれに続く未書き込みブロック位置が特定でき、エラーリカバリが可能となる。
【符号の説明】
【０２５６】
１０１    システム
２０１    ホスト
３０１    仮想テープ装置
３１１    ＩＣＰ
３２１    ＣＰＵ
３２２    ホストＩＦ制御部
３２４    ディスクアレイ制御部
３２５    ＩＤ制御部
３２６    ロボット制御部
３３１    メモリ
３３２    ホストＩＦドライバ
３３３    データバッファ
３３４    ディスクアレイドライバ
３３５    F-BID/BID制御プログラム
３３６    ロボット制御ドライバ
３４１    ＦＣカード
３５１    ＩＤＰ
３６１    ＣＰＵ
３６２    ディスクアレイ制御部
３６４    テープドライブ制御部
３６５    ＩＤ制御部
３７１    メモリ
３７２    ディスクアレイドライバ
３７３    データバッファ
３７４    テープドライバ
３７５    F-BID/BID制御プログラム
３８１    ＦＣカード
３９１    ディスクアレイ装置
３９２    テープボリューム
３９３    管理テーブル
４０１    テープライブラリ
４１１    ロボット
４１２    磁気テープ
４１３    ドライブ
１１０１    システム
１２０１    ホスト
１３０１    テープ制御装置
１３１１    ホストインタフェース制御部
１３２１    ＣＰＵ
１３２２    ホストＩＦ制御部
１３２４    データバッファ制御部
１３２５    ＩＤ制御部
１３２６    ロボット制御部
１３３１    メモリ
１３３２    ホストＩＦプログラム
１３３４    データバッファ制御プログラム
１３３５    F-BID/BID制御プログラム
１３３６    ロボットＩＦ制御プログラム
１３４１    ホストＩＦ制御回路
１３４２    データバッファ制御回路
１３５１    フォーマット制御部
１３６１    ＣＰＵ
１３６２    データバッファ制御部
１３６４    ドライブＩＦ制御部
１３６５    ＩＤ制御部
１３７１    メモリ
１３７２    データバッファ制御プログラム
１３７４    ドライブＩＦ制御プログラム
１３７５    F-BID/BID制御プログラム
１３８１    データバッファ制御回路
１３８２    ドライブＩＦ制御回路
１３９１    データバッファ
１３９２    テープボリューム
１３９３    管理テーブル
１４０１    テープライブラリ
１４１１    ロボット
１４１２    磁気テープ
１４１３    ドライブ
【図１】
2014191412.tif 000003
【図２】
2014191412.tif 000004
【図３】
2014191412.tif 000005
【図４】
2014191412.tif 000006
【図５】
2014191412.tif 000007
【図６】
2014191412.tif 000008
【図７】
2014191412.tif 000009
【図８】
2014191412.tif 000010
【図１０】
2014191412.tif 000011
【図１１】
2014191412.tif 000012
【図１２】
2014191412.tif 000013
【図１４】
2014191412.tif 000014
【図１５】
2014191412.tif 000015
【図１６】
2014191412.tif 000016
【図１８】
2014191412.tif 000017
【図１９】
2014191412.tif 000018
【図２０】
2014191412.tif 000019
【図９】
2014191412.tif 000020
【図１３】
2014191412.tif 000021
【図１７】
2014191412.tif 000022