(57)【要約】【課題】ライブラリ装置において記録媒体への書き込みが失敗した場合に未書き込みデータの転送にかかる時間を短縮する。【解決手段】制御部１９２１は、ホスト装置１９０１から複数のデータを受信して、ドライブ１９２２−１のデータバッファ１９３３−１に書き込む。ドライブ１９２２−１は、データバッファ１９３３−１のデータをドライブ１９２２−１にマウントされた記録媒体に書き込む。書き込みエラーが発生した場合、制御部１９２１は、記録媒体をドライブ１９２２−１からデマウントしてドライブ１９２２−２にマウントする操作を操作部１９２３に指示する。次に、制御部１９２１は、データバッファ１９３３−１から未書き込みデータを読み出してデータバッファ１９２５に格納し、データバッファ１９２５から未書き込みデータを読み出して、ドライブ１９２２−２のデータバッファ１９３３−２に書き込む。【選択図】図１９
2014130475.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体を格納する格納部と、
第１のデータバッファを含み、前記第１のデータバッファに格納されたデータを前記記録媒体に書き込む第１のドライブと、
第２のデータバッファを含み、前記第２のデータバッファに格納されたデータを前記記録媒体に書き込む第２のドライブと、
前記格納部から前記記録媒体を取り出して前記第１のドライブ又は前記第２のドライブにマウントする操作と、前記記録媒体を前記第１のドライブ又は前記第２のドライブからデマウントして前記格納部に格納する操作とを行う操作部と、
第３のデータバッファを含み、ホスト装置から複数のデータを受信して前記第１のドライブの前記第１のデータバッファに書き込み、前記第１のドライブが前記第１のデータバッファから、前記操作部により前記格納部から取り出されて前記第１のドライブにマウントされた前記記録媒体に、前記複数のデータのうち一部のデータを書き込む際に、書き込みエラーが発生した場合、前記記録媒体を前記第１のドライブからデマウントして前記第２のドライブにマウントする操作を前記操作部に指示し、前記第１のデータバッファから前記一部のデータを含む未書き込みデータを読み出して前記第３のデータバッファに格納し、前記第３のデータバッファから前記未書き込みデータを読み出して前記第２のドライブの前記第２のデータバッファに書き込む制御部と、
を備えることを特徴とするライブラリ装置。
【請求項２】
前記制御部は、前記書き込みエラーが発生した場合、コマンド発行停止要求を前記ホスト装置へ送信し、前記第２のドライブが前記未書き込みデータを前記第２のデータバッファから前記記録媒体に書き込む際に書き込みエラーが発生しなかった場合、コマンド発行要求を前記ホスト装置へ送信することを特徴とする請求項１記載のライブラリ装置。
【請求項３】
前記制御部は、前記コマンド発行要求を前記ホスト装置へ送信した後に、前記ホスト装置から発行された前記第１のドライブに対する書き込みコマンドを受信した場合、前記第１のドライブに対する書き込みコマンドに含まれるデータを、前記第２のドライブの前記第２のデータバッファに書き込むことを特徴とする請求項２記載のライブラリ装置。
【請求項４】
前記制御部は、前記第２のドライブが前記未書き込みデータを前記第２のデータバッファから前記記録媒体に書き込む際に書き込みエラーが発生しなかった場合、前記第１のドライブを使用不可状態に設定することを特徴とする請求項１乃至３のいずれか１項に記載のライブラリ装置。
【請求項５】
前記制御部は、前記第２のドライブが前記未書き込みデータを前記第２のデータバッファから前記記録媒体に書き込む際に書き込みエラーが発生した場合、前記記録媒体が異常であることを示す媒体異常情報を前記ホスト装置へ送信することを特徴とする請求項１乃至３のいずれか１項に記載のライブラリ装置。
【請求項６】
記録媒体を格納する格納部、第１のドライブ、第２のドライブ、及び操作部を含むライブラリ装置を制御するコンピュータのためのプログラムであって、
ホスト装置から複数のデータを受信して前記第１のドライブに含まれる第１のデータバッファに書き込み、
前記第１のドライブが前記第１のデータバッファから、前記操作部により前記格納部から取り出されて前記第１のドライブにマウントされた前記記録媒体に、前記複数のデータのうち一部のデータを書き込む際に、書き込みエラーが発生した場合、前記記録媒体を前記第１のドライブからデマウントして前記第２のドライブにマウントする操作を前記操作部に指示し、前記第１のデータバッファから前記一部のデータを含む未書き込みデータを読み出して前記コンピュータに含まれる第３のデータバッファに格納し、前記第３のデータバッファから前記未書き込みデータを読み出して前記第２のドライブに含まれる第２のデータバッファに書き込む、
処理を前記コンピュータに実行させるプログラム。
【請求項７】
記録媒体を格納する格納部、第１のドライブ、第２のドライブ、及び操作部を含むライブラリ装置を制御するコンピュータによって実行される制御方法であって、
ホスト装置から複数のデータを受信して前記第１のドライブに含まれる第１のデータバッファに書き込み、
前記第１のドライブが前記第１のデータバッファから、前記操作部により前記格納部から取り出されて前記第１のドライブにマウントされた前記記録媒体に、前記複数のデータのうち一部のデータを書き込む際に、書き込みエラーが発生した場合、前記記録媒体を前記第１のドライブからデマウントして前記第２のドライブにマウントする操作を前記操作部に指示し、前記第１のデータバッファから前記一部のデータを含む未書き込みデータを読み出して前記コンピュータに含まれる第３のデータバッファに格納し、前記第３のデータバッファから前記未書き込みデータを読み出して前記第２のドライブに含まれる第２のデータバッファに書き込む、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブラリ装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ストレージ装置のハードディスクドライブ等に格納されているデータのバックアップのために、ライブラリ装置が用いられることがある。ライブラリ装置は、ホスト装置から受信した書き込みコマンドに従って、ホスト装置から受信したデータを磁気テープ等の記録媒体に書き込む。
【０００３】
図１は、ライブラリ装置の構成例を示している。図１のライブラリ装置１０２は、制御部１２１、ドライブ１２２−１〜ドライブ１２２−４、操作部１２３、及び格納部１２４を含む。
【０００４】
格納部１２４は、複数の磁気テープを格納する格納棚であり、ドライブ１２２−１〜ドライブ１２２−４は、磁気テープにデータを書き込み、磁気テープからデータを読み出すテープドライブである。ドライブ１２２−１〜ドライブ１２２−４はそれぞれ、一時的にデータを格納するためのデータバッファ１３３−１〜データバッファ１３３−４を含む。
【０００５】
以下の説明では、ドライブ１２２−１〜ドライブ１２２−４のいずれか１台又は複数台を指して、ドライブ１２２と記す場合がある。
【０００６】
操作部１２３は、例えば、ロボットのような搬送機構であり、格納部１２４から磁気テープを取り出してドライブ１２２にマウントする操作と、磁気テープをドライブ１２２からデマウントして格納部１２４に格納する操作とを行う。
【０００７】
制御部１２１は、通信回線１３１によりホスト装置１０１と接続され、通信回線１３２−１〜通信回線１３２−４によりドライブ１２２−１〜ドライブ１２２−４とそれぞれ接続されている。通信回線１３１は、例えば、光ファイバを用いたシリアル転送の光チャネルリンクであり、通信回線１３２−１〜通信回線１３２−４は、例えば、パラレル転送又はシリアル転送のSmall Computer System Interface（ＳＣＳＩ）である。
【０００８】
制御部１２１は、通信回線１３１を介してホスト装置１０１と通信し、通信回線１３２−１〜通信回線１３２−４を介してドライブ１２２−１〜ドライブ１２２−４とそれぞれ通信する。
【０００９】
図２は、図１のライブラリ装置１０２による書き込み処理の例を示している。ホスト装置１０１は、データＤ１を含む書き込みコマンドＷＲ１を制御部１２１へ送信する（手順２１１）。制御部１２１は、書き込みコマンドＷＲ１をドライブ用のコマンドに変換してドライブ１２２−１へ転送することで、データＤ１をドライブ１２２−１のデータバッファ１３３−１に書き込む（手順２１２）。ドライブ１２２−１は、データバッファ１３３−１への書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順２１３）。
【００１０】
制御部１２１は、ホスト装置１０１への応答を早めるために、ドライブ１２２−１から応答を受信した時点で、磁気テープ２０１への書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順２１４）。その後、ドライブ１２２−１は、データバッファ１３３−１から磁気テープ２０１へデータＤ１を非同期に書き込む（手順２１５）。このとき、ドライブ１２２−１は、磁気テープ２０１のBeginning of Tape（ＢＯＴ）からEnd of Tape（ＥＯＴ）までの範囲内のＢＯＴの位置にデータＤ１を書き込む。
【００１１】
非同期書き込みでは、データバッファ１３３−１への書き込みが完了した時点で、書き込みが終了したことを示す応答が制御部１２１からホスト装置１０１へ送信される。これに対して、同期書き込みでは、磁気テープ２０１への書き込みが完了した時点で、書き込みが終了したことを示す応答が制御部１２１からホスト装置１０１へ送信される。
【００１２】
次に、図３から図９までを参照しながら、制御部１２１がホスト装置１０１からバックアップ用の書き込みコマンドＷＲ１〜書き込みコマンドＷＲ４を受信した場合の書き込み処理の例を説明する。
【００１３】
まず、制御部１２１は、書き込みコマンドＷＲ１を受信すると（図３の手順３０１）、書き込みコマンドＷＲ１をドライブ１２２−１へ転送することで、書き込みコマンドＷＲ１に含まれるデータＤ１をデータバッファ１３３−１に書き込む（手順３０２）。ドライブ１２２−１は、データＤ１の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順３０３）、制御部１２１は、データＤ１の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順３０４）。
【００１４】
次に、制御部１２１は、書き込みコマンドＷＲ２を受信すると（手順３０５）、書き込みコマンドＷＲ２をドライブ１２２−１へ転送することで、書き込みコマンドＷＲ２に含まれるデータＤ２をデータバッファ１３３−１に書き込む（手順３０６）。ドライブ１２２−１は、データＤ２の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順３０７）、制御部１２１は、データＤ２の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順３０８）。
【００１５】
次に、制御部１２１は、書き込みコマンドＷＲ３を受信すると（手順３０９）、書き込みコマンドＷＲ３をドライブ１２２−１へ転送することで、書き込みコマンドＷＲ３に含まれるデータＤ３をデータバッファ１３３−１に書き込む（手順３１０）。ドライブ１２２−１は、データＤ３の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順３１１）、制御部１２１は、データＤ３の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順３１２）。
【００１６】
次に、制御部１２１は、書き込みコマンドＷＲ４を受信すると（図４の手順４０１）、書き込みコマンドＷＲ４をドライブ１２２−１へ転送することで、書き込みコマンドＷＲ４に含まれるデータＤ４をデータバッファ１３３−１に書き込む（手順４０２）。ドライブ１２２−１は、データＤ４の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順４０３）、制御部１２１は、データＤ４の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順４０４）。
【００１７】
ここで、データバッファ１３３−１が一杯になったため、ドライブ１２２−１は、データバッファ１３３−１の先頭のデータＤ１を磁気テープ２０１に書き込み、データバッファ１３３−１からデータＤ１を削除する（手順４０５）。
【００１８】
制御部１２１は、データＤ１を磁気テープ２０１に書き込んでいる間に、ファイルの区切りを示すテープマークを書き込むコマンドＷＦＭをホスト装置１０１から受信すると（図５の手順５１１）、コマンドＷＦＭをドライブ１２２−１へ転送する（手順５１２）。ドライブ１２２−１は、データバッファ１３３−１内のすべてのデータが磁気テープ２０１に書き込まれるまで、コマンドＷＦＭの実行を保留する。
【００１９】
データＤ１の書き込みが正常に終了すると（手順５０１）、ドライブ１２２−１は、データバッファ１３３−１のデータＤ２を磁気テープ２０１に書き込み、データバッファ１３３−１からデータＤ２を削除する（図６の手順６０１）。
【００２０】
データＤ２の書き込みが正常に終了すると（手順６０２）、ドライブ１２２−１は、データバッファ１３３−１のデータＤ３を磁気テープ２０１に書き込み、データバッファ１３３−１からデータＤ３を削除する（図７の手順７０１）。
【００２１】
データＤ３の書き込みが正常に終了すると（手順７０２）、ドライブ１２２−１は、データバッファ１３３−１のデータＤ４を磁気テープ２０１に書き込み、データバッファ１３３−１からデータＤ４を削除する（図８の手順８０１）。
【００２２】
データＤ４の書き込みが正常に終了すると（手順８０２）、データバッファ１３３−１のデータＤ１〜データＤ４がすべて磁気テープ２０１に書き込まれ、データバッファ１３３−１が空になる。そこで、ドライブ１２２−１は、保留していたコマンドＷＦＭを実行して、磁気テープ２０１のデータＤ４の後の位置にテープマーク９１１を書き込む（図９の手順９０１）。
【００２３】
テープマーク９１１の書き込みが正常に終了すると（手順９０２）、ドライブ１２２−１は、テープマーク９１１の書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順９０３）。制御部１２１は、テープマーク９１１の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順９０４）。
【００２４】
入出力バスを介してブロック単位で転送された書き込みデータを一時蓄積するバッファと、そのバッファに一時蓄積された書き込みデータを転送して保持する補助バッファとを有する磁気テープ制御装置も知られている（例えば、特許文献１を参照）。この磁気テープ制御装置は、磁気テープ装置における書き込みエラーによる書き込みリトライ時に、補助バッファに保持された書き込みデータを磁気テープ装置のキャッシュバッファに転送して、書き込みを行わせる。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開平５−２９７５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００２６】
上述した従来のライブラリ装置には、以下のような問題がある。
磁気テープの不良又はドライブの磁気ヘッドの不良により磁気テープへの書き込みが失敗した場合、動的装置再構成（Dynamic Device Reconfiguration，ＤＤＲ）処理が行われることがある。ＤＤＲ処理において、ライブラリ装置は、データリカバリのために、書き込みが失敗した磁気テープを別のドライブにマウントして、書き込みが失敗した位置からデータの書き込みを継続する。
【００２７】
しかしながら、ＤＤＲ処理では、ホスト装置から一度ドライブへ転送された書き込みデータが未書き込みデータとしてホスト装置へ転送され、ホスト装置から再度別のドライブへ転送される。このため、未書き込みデータの転送に時間がかかるとともに、ホスト装置の負荷が増大する。
【００２８】
さらに、近年の技術向上により、ライブラリ装置における磁気テープの規格がCartridge Magnetic Tape（ＣＭＴ）からLinear Tape-Open（ＬＴＯ）へと移行し、それに伴いドライブ内のデータバッファの容量が増加してきている。データバッファの容量が増加すると、それに伴い未書き込みデータの量も増加するため、ＣＭＴの場合と比較して、未書き込みデータの転送により多くの時間がかかり、ホスト装置の負荷もより増大することになる。
【００２９】
なお、このような問題は、記録媒体として磁気テープを用いる場合に限らず、他の記録媒体を用いる場合においても生ずるものである。
【００３０】
１つの側面において、本発明は、ライブラリ装置において記録媒体への書き込みが失敗した場合に未書き込みデータの転送にかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【００３１】
１つの案では、ライブラリ装置は、格納部、第１のドライブ、第２のドライブ、操作部、及び制御部を備える。
【００３２】
格納部は、記録媒体を格納する。第１のドライブは、第１のデータバッファを含み、第１のデータバッファに格納されたデータを記録媒体に書き込む。第２のドライブは、第２のデータバッファを含み、第２のデータバッファに格納されたデータを記録媒体に書き込む。操作部は、格納部から記録媒体を取り出して第１のドライブ又は第２のドライブにマウントする操作と、記録媒体を第１のドライブ又は第２のドライブからデマウントして格納部に格納する操作とを行う。
【００３３】
制御部は、第３のデータバッファを含み、ホスト装置から複数のデータを受信して第１のドライブの第１のデータバッファに書き込む。第１のドライブは、第１のデータバッファから、操作部により格納部から取り出されて第１のドライブにマウントされた記録媒体に、受信した複数のデータのうち一部のデータを書き込む。第１のドライブが一部のデータを書き込む際に、書き込みエラーが発生した場合、制御部は、記録媒体を第１のドライブからデマウントして第２のドライブにマウントする操作を操作部に指示する。次に、制御部は、第１のデータバッファから上記一部のデータを含む未書き込みデータを読み出して第３のデータバッファに格納する。そして、制御部は、第３のデータバッファから未書き込みデータを読み出して、第２のドライブの第２のデータバッファに書き込む。
【発明の効果】
【００３４】
実施形態のライブラリ装置によれば、記録媒体への書き込みが失敗した場合に未書き込みデータの転送にかかる時間を短縮することができる。
【図面の簡単な説明】
【００３５】
【図１】従来のライブラリ装置の構成図である。
【図２】従来の第１の書き込み処理を示す図である。
【図３】従来の第２の書き込み処理を示す図（その１）である。
【図４】従来の第２の書き込み処理を示す図（その２）である。
【図５】従来の第２の書き込み処理を示す図（その３）である。
【図６】従来の第２の書き込み処理を示す図（その４）である。
【図７】従来の第２の書き込み処理を示す図（その５）である。
【図８】従来の第２の書き込み処理を示す図（その６）である。
【図９】従来の第２の書き込み処理を示す図（その７）である。
【図１０】第１のＤＤＲ処理を示す図である。
【図１１】第２のＤＤＲ処理を示す図（その１）である。
【図１２】第２のＤＤＲ処理を示す図（その２）である。
【図１３】第２のＤＤＲ処理を示す図（その３）である。
【図１４】第２のＤＤＲ処理を示す図（その４）である。
【図１５】第２のＤＤＲ処理を示す図（その５）である。
【図１６】第２のＤＤＲ処理を示す図（その６）である。
【図１７】第２のＤＤＲ処理を示す図（その７）である。
【図１８】第２のＤＤＲ処理を示す図（その８）である。
【図１９】実施形態のライブラリ装置の構成図である。
【図２０】書き込み制御のフローチャートである。
【図２１】制御部の構成図である。
【図２２】書き込み制御を示す図である。
【図２３】書き込みエラーが発生した場合の書き込み制御のフローチャートである。
【図２４】割り込み処理のフローチャートである。
【図２５】ホスト装置が行う処理のフローチャートである。
【図２６】書き込みエラーが発生した場合の書き込み制御シーケンスを示す図（その１）である。
【図２７】書き込みエラーが発生した場合の書き込み制御シーケンスを示す図（その２）である。
【発明を実施するための形態】
【００３６】
以下、図面を参照しながら、実施形態を詳細に説明する。
上述したように、従来のライブラリ装置では、制御部からドライブのデータバッファへの書き込みと、データバッファから磁気テープへの書き込みとを非同期に行うことで、ホスト装置への応答を早めることができる。これにより、ホスト装置は、磁気テープへの書き込みが終了するのを待ち合わせることなく、別の処理を行うことが可能になる。しかしながら、従来のライブラリ装置には、次のような問題がある。
【００３７】
磁気テープの不良又はドライブの磁気ヘッドの不良により磁気テープへの書き込みが失敗した場合、動的装置再構成（Dynamic Device Reconfiguration，ＤＤＲ）処理が行われることがある。ＤＤＲ処理において、ライブラリ装置は、データリカバリのために、書き込みが失敗した磁気テープを別のドライブにマウントして、書き込みが失敗した位置からデータの書き込みを継続する。
【００３８】
図１０は、図１のライブラリ装置１０２によるＤＤＲ処理の例を示している。ホスト装置１０１は、バックアップ処理のために、ドライブ１２２−１に対する書き込みコマンドＷＲを制御部１２１へ送信する（手順１０１１）。制御部１２１は、書き込みコマンドＷＲをドライブ用のコマンドに変換してドライブ１２２−１へ転送する。その後、ドライブ１２２−１のデータバッファ１３３−１から磁気テープ２０１への非同期書き込みにおいて、書き込みエラーが発生する（手順１０１２）。
【００３９】
このとき、ホスト装置１０１は、ドライブ１２２−１のデータバッファ１３３−１から、磁気テープ２０１に未だ書き込まれていないデータ（未書き込みデータ）を読み出すためのコマンドＲＤＢＵＦを制御部１２１へ送信する（手順１０１３）。制御部１２１は、コマンドＲＤＢＵＦをドライブ用のコマンドに変換してドライブ１２２−１へ転送する。そして、ドライブ１２２−１は、データバッファ１３３−１内の未書き込みデータを制御部１２１を介してホスト装置１０１へ送信する。ホスト装置１０１は、受信した未書き込みデータをＤＤＲメモリ１００１に格納する。
【００４０】
次に、ホスト装置１０１は、制御部１２１を介して操作部１２３を制御し、磁気テープ２０１をドライブ１２２−１からデマウントして、他の空きドライブ１２２−２にマウントする（手順１０１４）。そして、ホスト装置１０１は、制御部１２１を介して、ドライブ１２２−２の書き込み位置を磁気テープ２０１の書き込みが失敗した位置へ位置付ける。
【００４１】
次に、ホスト装置１０１は、ＤＤＲメモリ１００１から未書き込みデータを、制御部１２１を介してドライブ１２２−２へ転送し、ドライブ１２２−２のデータバッファ１３３−２に書き込む（手順１０１５）。ドライブ１２２−２は、同期書き込みにより、未書き込みデータを磁気テープ２０１に書き込む（手順１０１６）。
【００４２】
次に、ホスト装置１０１は、ドライブ１２２−２に対する書き込みコマンドＷＲを制御部１２１へ送信し（手順１０１７）、制御部１２１は、書き込みコマンドＷＲをドライブ用のコマンドに変換してドライブ１２２−２へ転送する。そして、ドライブ１２２−２は、データバッファ１３３−２内のデータを非同期で磁気テープ２０１に書き込む（手順１０１８）。これにより、ドライブ１２２−２を介して残りのデータが磁気テープ２０１に書き込まれ、バックアップ処理が終了する。
【００４３】
次に、図１１から図１８までを参照しながら、制御部１２１がホスト装置１０１から書き込みコマンドＷＲ１〜書き込みコマンドＷＲ８を受信した場合のＤＤＲ処理の例を説明する。
【００４４】
制御部１２１が書き込みコマンドＷＲ１〜書き込みコマンドＷＲ４を受信してデータＤ１〜データＤ４をデータバッファ１３３−１に書き込み、ドライブ１２２−１がデータＤ１を磁気テープ２０１に書き込むまでの手順は、図３〜図５に示した手順と同様である。
【００４５】
データＤ１の書き込みが正常に終了すると（手順５０１）、ドライブ１２２−１は、データバッファ１３３−１のデータＤ２を磁気テープ２０１に書き込む（図１１の手順１１０１）。
【００４６】
ここで、書き込みエラーが発生したため（図１２の手順１２０１）、ドライブ１２２−１は、データＤ２の書き込みが失敗したことを示す応答を、コマンドＷＦＭに対する応答として制御部１２１へ送信する（手順１２０２）。この場合、ドライブ１２２−１は、データＤ２をデータバッファ１３３−１から削除しない。制御部１２１は、データＤ２の書き込みが失敗したことを示す応答とＤＤＲ要求とを、ホスト装置１０１へ送信する（手順１２０３）。
【００４７】
ホスト装置１０１は、受信したＤＤＲ要求に基づいてＤＤＲ処理を開始し、コマンドＲＤＢＵＦを制御部１２１へ送信する（図１３の手順１３０１）。制御部１２１は、コマンドＲＤＢＵＦをドライブ用のコマンドに変換してドライブ１２２−１へ転送する（手順１３０２）。
【００４８】
ドライブ１２２−１は、データバッファ１３３−１内の未書き込みデータＤ２〜未書き込みデータＤ４を制御部１２１を介してホスト装置１０１へ送信し（手順１３０３）、データバッファ１３３−１から未書き込みデータＤ２〜未書き込みデータＤ４を削除する。制御部１２１は、未書き込みデータＤ２〜未書き込みデータＤ４をホスト装置１０１へ転送する（手順１３０４）。ホスト装置１０１は、受信した未書き込みデータＤ２〜未書き込みデータＤ４をＤＤＲメモリ１００１に格納する（図１４）。
【００４９】
次に、ホスト装置１０１は、制御部１２１を介して操作部１２３を制御し、磁気テープ２０１をドライブ１２２−１からデマウントして、他の空きドライブ１２２−２にマウントする。そして、ホスト装置１０１は、制御部１２１を介して、ドライブ１２２−２の書き込み位置を磁気テープ２０１の書き込みが失敗した位置へ位置付ける。
【００５０】
次に、ホスト装置１０１は、ＤＤＲメモリ１００１から未書き込みデータＤ２〜未書き込みデータＤ４を制御部１２１を介してドライブ１２２−２へ転送し、ドライブ１２２−２のデータバッファ１３３−２に書き込む。ドライブ１２２−２は、同期書き込みにより、未書き込みデータＤ２〜未書き込みデータＤ４を磁気テープ２０１に書き込む。
【００５１】
まず、ホスト装置１０１は、ＤＤＲメモリ１００１から未書き込みデータＤ２を読み出し、未書き込みデータＤ２を含む書き込みコマンドを制御部１２１へ送信する（手順１５０１）。制御部１２１は、受信した書き込みコマンドをドライブ１２２−２へ転送することで、未書き込みデータＤ２をデータバッファ１３３−２に書き込む（手順１５０２）。
【００５２】
ドライブ１２２−２は、同期書き込みにより、未書き込みデータＤ２を磁気テープ２０１に書き込む（手順１５０３）。そして、ドライブ１２２−２は、データＤ２の書き込みが正常に終了すると（手順１５０４）、データバッファ１３３−２からデータＤ２を削除して、データＤ２の書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順１５０５）。制御部１２１は、データＤ２の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１５０６）。
【００５３】
次に、ホスト装置１０１は、ＤＤＲメモリ１００１から未書き込みデータＤ３を読み出し、未書き込みデータＤ３を含む書き込みコマンドを制御部１２１へ送信する（手順１５０７）。制御部１２１は、受信した書き込みコマンドをドライブ１２２−２へ転送することで、未書き込みデータＤ３をデータバッファ１３３−２に書き込む（手順１５０８）。
【００５４】
ドライブ１２２−２は、同期書き込みにより、未書き込みデータＤ３を磁気テープ２０１に書き込む（手順１５０９）。そして、ドライブ１２２−２は、データＤ３の書き込みが正常に終了すると（手順１５１０）、データバッファ１３３−２からデータＤ３を削除して、データＤ３の書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順１５１１）。制御部１２１は、データＤ３の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１５１２）。
【００５５】
次に、ホスト装置１０１は、ＤＤＲメモリ１００１から未書き込みデータＤ４を読み出し、未書き込みデータＤ４を含む書き込みコマンドを制御部１２１へ送信する（手順１５１３）。制御部１２１は、受信した書き込みコマンドをドライブ１２２−２へ転送することで、未書き込みデータＤ４をデータバッファ１３３−２に書き込む（手順１５１４）。
【００５６】
ドライブ１２２−２は、同期書き込みにより、未書き込みデータＤ４を磁気テープ２０１に書き込む（手順１５１５）。そして、ドライブ１２２−２は、データＤ４の書き込みが正常に終了すると（手順１５１６）、データバッファ１３３−２からデータＤ４を削除して、データＤ４の書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順１５１７）。制御部１２１は、データＤ４の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１５１８）。
【００５７】
次に、制御部１２１は、コマンドＷＦＭをホスト装置１０１から受信すると（図１６の手順１６０１）、コマンドＷＦＭをドライブ１２２−１へ転送する（手順１６０２）。ドライブ１２２−１は、コマンドＷＦＭを実行して、磁気テープ２０１のデータＤ４の後の位置にテープマーク１６１１を書き込む。
【００５８】
テープマーク１６１１の書き込みが正常に終了すると、ドライブ１２２−１は、テープマーク１６１１の書き込みが終了したことを示す応答を、制御部１２１へ送信する（手順１６０３）。制御部１２１は、テープマーク１６１１の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１６０４）。
【００５９】
次に、ホスト装置１０１は、残りの書き込みコマンドＷＲ５〜書き込みコマンドＷＲ８を制御部１２１へ送信する。
【００６０】
まず、制御部１２１は、書き込みコマンドＷＲ５を受信すると（図１７の手順１７０１）、書き込みコマンドＷＲ５をドライブ１２２−２へ転送することで、書き込みコマンドＷＲ５に含まれるデータＤ５をデータバッファ１３３−２に書き込む（手順１７０２）。ドライブ１２２−２は、データＤ５の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順１７０３）、制御部１２１は、データＤ５の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１７０４）。
【００６１】
次に、制御部１２１は、書き込みコマンドＷＲ６を受信すると（手順１７０５）、書き込みコマンドＷＲ６をドライブ１２２−２へ転送することで、書き込みコマンドＷＲ６に含まれるデータＤ６をデータバッファ１３３−２に書き込む（手順１７０６）。ドライブ１２２−２は、データＤ６の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順１７０７）、制御部１２１は、データＤ６の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１７０８）。
【００６２】
次に、制御部１２１は、書き込みコマンドＷＲ７を受信すると（手順１７０９）、書き込みコマンドＷＲ７をドライブ１２２−２へ転送することで、書き込みコマンドＷＲ７に含まれるデータＤ７をデータバッファ１３３−２に書き込む（手順１７１０）。ドライブ１２２−２は、データＤ７の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順１７１１）、制御部１２１は、データＤ７の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１７１２）。
【００６３】
次に、制御部１２１は、書き込みコマンドＷＲ８を受信すると（手順１７１３）、書き込みコマンドＷＲ８をドライブ１２２−２へ転送することで、書き込みコマンドＷＲ８に含まれるデータＤ８をデータバッファ１３３−２に書き込む（手順１７１４）。ドライブ１２２−２は、データＤ８の書き込みが終了したことを示す応答を、制御部１２１へ送信し（手順１７１５）、制御部１２１は、データＤ８の書き込みが終了したことを示す応答を、ホスト装置１０１へ送信する（手順１７１６）。
【００６４】
ここで、データバッファ１３３−２が一杯になったため、ドライブ１２２−２は、データバッファ１３３−２の先頭のデータＤ５を、磁気テープ２０１のテープマーク１６１１の後の位置に書き込む（手順１８０１）。そして、ドライブ１２２−２は、データバッファ１３３−２からデータＤ５を削除する。
【００６５】
データＤ５の書き込みが正常に終了すると（手順１８０２）、ドライブ１２２−２は、手順１８０１と同様にして、データＤ６〜データＤ８を順番に磁気テープ２０１に書き込む。こうして、残りのデータＤ５〜データＤ８が磁気テープ２０１に書き込まれ、バックアップ処理が終了する。
【００６６】
このようなＤＤＲ処理によれば、バックアップ処理の途中で書き込みエラーが発生した場合であっても、磁気テープの不良でなければ、磁気テープを別のドライブに再度マウントしてバックアップ処理を継続することができる。
【００６７】
しかしながら、ＤＤＲ処理では、ホスト装置から一度ドライブへ転送された書き込みデータが未書き込みデータとしてホスト装置へ転送され、ホスト装置から再度別のドライブへ転送される。このため、未書き込みデータの転送に時間がかかるとともに、ホスト装置の負荷が増大する。
【００６８】
さらに、近年の技術向上により、ライブラリ装置における磁気テープの規格がCartridge Magnetic Tape（ＣＭＴ）からLinear Tape-Open（ＬＴＯ）へと移行し、それに伴いドライブ内のデータバッファの容量が増加してきている。データバッファの容量が増加すると、それに伴い未書き込みデータの量も増加するため、ＣＭＴの場合と比較して、未書き込みデータの転送により多くの時間がかかり、ホスト装置の負荷もより増大することになる。
【００６９】
発明者は、ライブラリ装置の制御部が、書き込みエラーが発生したドライブから未書き込みデータを読み出して別のドライブへ転送すれば、未書き込みデータをホスト装置へ転送することなく、バックアップ処理を継続できることに気付いた。未書き込みデータをホスト装置へ転送しなければ、未書き込みデータの転送にかかる時間が短縮されるとともに、ホスト装置の負荷が軽減される。
【００７０】
図１９は、実施形態のライブラリ装置の構成例を示している。図１９のライブラリ装置１９０２は、制御部１９２１、ドライブ１９２２−１〜ドライブ１９２２−４、操作部１９２３、及び格納部１９２４を含む。制御部１９２１は、データバッファ１９２５を含む。
【００７１】
格納部１９２４は、１つ又は複数の記録媒体を格納する格納棚であり、ドライブ１９２２−１〜ドライブ１９２２−４は、記録媒体にデータを書き込み、記録媒体からデータを読み出す媒体ドライブである。記録媒体としては、磁気テープ、光ディスク、光磁気ディスク、磁気ディスク等を用いることができる。
【００７２】
ドライブ１９２２−１〜ドライブ１９２２−４はそれぞれ、一時的にデータを格納するためのデータバッファ１９３３−１〜データバッファ１９３３−４を含む。そして、ドライブ１９２２−１〜ドライブ１９２２−４はそれぞれ、データバッファ１９３３−１〜データバッファ１９３３−４に格納されたデータを記録媒体に書き込む。
【００７３】
以下の説明では、ドライブ１９２２−１〜ドライブ１９２２−４のいずれか１台又は複数台を指して、ドライブ１９２２と記す場合がある。また、データバッファ１９３３−１〜データバッファ１９３３−４のいずれか１台又は複数台を指して、データバッファ１９３３と記す場合がある。
【００７４】
ドライブ１９２２の数は４台に限定されることはなく、２台以上の整数であればよい。また、各データバッファ１９３３は、Ｎ個（Ｎは２以上の整数）の書き込みコマンドに含まれるデータが書き込まれたときに一杯になるものとする。
【００７５】
操作部１９２３は、例えば、ロボットのような搬送機構であり、格納部１９２４から記録媒体を取り出してドライブ１９２２にマウントする操作と、記録媒体をドライブ１９２２からデマウントして格納部１９２４に格納する操作とを行う。
【００７６】
制御部１９２１は、通信回線１９３１によりホスト装置１９０１と接続され、通信回線１９３２−１〜通信回線１９３２−４によりドライブ１９２２−１〜ドライブ１９２２−４とそれぞれ接続されている。通信回線１９３１は、例えば、光ファイバを用いたシリアル転送の光チャネルリンクであり、通信回線１９３２−１〜通信回線１９３２−４は、例えば、パラレル転送又はシリアル転送のSmall Computer System Interface（ＳＣＳＩ）である。
【００７７】
制御部１９２１は、通信回線１９３１を介してホスト装置１９０１と通信し、通信回線１９３２−１〜通信回線１９３２−４を介してドライブ１９２２−１〜ドライブ１９２２−４とそれぞれ通信する。
【００７８】
図２０は、図１９のライブラリ装置による書き込み制御の例を示すフローチャートである。
まず、制御部１９２１は、ホスト装置１９０１から複数のデータを受信して、ドライブ１９２２−１〜ドライブ１９２２−４のうち第１のドライブ１９２２に含まれる第１のデータバッファ１９３３に書き込む（ステップ２００１）。
【００７９】
次に、第１のドライブ１９２２は、第１のデータバッファ１９３３から、操作部１９２３により格納部１９２４から取り出されて第１のドライブ１９２２にマウントされた記録媒体に、複数のデータのうち一部のデータを書き込む（ステップ２００２）。
【００８０】
記録媒体への書き込みの際に書き込みエラーが発生した場合、制御部１９２１は、記録媒体を第１のドライブ１９２２からデマウントして第２のドライブ１９２２にマウントする操作を操作部１９２３に指示する（ステップ２００３）。次に、制御部１９２１は、第１のデータバッファ１９３３から上記一部のデータを含む未書き込みデータを読み出して、データバッファ１９２５に格納する（ステップ２００４）。そして、制御部１９２１は、データバッファ１９２５から未書き込みデータを読み出して、第２のドライブ１９２２に含まれる第２のデータバッファ１９３３に書き込む（ステップ２００５）。
【００８１】
このような書き込み制御によれば、記録媒体への書き込みが失敗した場合に未書き込みデータの転送にかかる時間を短縮することができる。
【００８２】
図２１は、図１９の制御部１９２１の構成例を示している。図２１の制御部１９２１は、情報処理装置（コンピュータ）であり、データバッファ１９２５、インタフェース２１０１、インタフェース２１０２、メモリ２１０３、（Central Processing Unit，ＣＰＵ）２１０４、Read Only Memory（ＲＯＭ）２１０５を含む。これらの構成要素はバス２１１１により互いに接続されている。
【００８３】
データバッファ１９２５は、未書き込みデータの一部又は全部を記憶するための記憶部である。データバッファ１９２５の容量は、特に限定されるものではないが、好ましくは、データバッファ１９３３の容量と同じか又はそれ以上である。
【００８４】
ＲＯＭ２１０５は、ライブラリ装置１９０２の制御に用いられるプログラムを格納するメモリである。メモリ２１０３は、例えば、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリである。ＣＰＵ２１０４（プロセッサ）は、ＲＯＭ２１０５からメモリ２１０３へプログラムをロードして実行することにより、ライブラリ装置１９０２の制御を行う。
【００８５】
ＣＰＵ２１０４が行うライブラリ装置１９０２の制御には、以下の処理が含まれる。
（１）ホスト装置１９０１から受信するコマンドをドライブ用のコマンドに変換してドライブ１９２２へ転送する処理。
（２）書き込みエラーが発生した場合、記録媒体を第１のドライブ１９２２からデマウントして第２のドライブ１９２２にマウントする操作を操作部１９２３に指示する処理。
（３）書き込みエラーが発生した場合、第１のデータバッファ１９３３から未書き込みデータを読み出してデータバッファ１９２５に格納し、データバッファ１９２５から未書き込みデータを読み出して第２のデータバッファ１９３３に書き込む処理。
【００８６】
インタフェース２１０１は、通信回線１９３１を介したホスト装置１９０１との通信に伴うデータ変換を行う通信インタフェースである。インタフェース２１０２は、通信回線１９３２−１〜通信回線１９３２−４を介したドライブ１９２２−１〜ドライブ１９２２−４との通信に伴うデータ変換を行う通信インタフェースである。
【００８７】
制御部１９２１は、さらに、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等の補助記憶装置を含んでもよい。この補助記憶装置には、ハードディスクドライブ、及びフラッシュメモリのような半導体メモリも含まれる。制御部１９２１は、補助記憶装置にプログラムを格納しておき、それをメモリ２１０３にロードして使用することができる。
【００８８】
制御部１９２１は、さらに、可搬型記録媒体を駆動し、その記録内容にアクセスする媒体駆動装置を含んでもよい。可搬型記録媒体は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体には、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等も含まれる。ユーザ又はオペレータは、この可搬型記録媒体にプログラムを格納しておき、それをメモリ２１０３にロードして使用することができる。
【００８９】
このように、ライブラリ装置１９０２の制御に用いられるプログラムを格納するコンピュータ読み取り可能な記録媒体には、メモリ２１０３、ＲＯＭ２１０５、補助記憶装置、及び可搬型記録媒体のような、物理的な（非一時的な）記録媒体が含まれる。
【００９０】
制御部１９２１は、さらに、Local Area Network（ＬＡＮ）等の通信ネットワークに接続されたネットワーク接続装置を含んでもよい。制御部１９２１は、プログラムを外部の装置からネットワーク接続装置を介して受け取り、それをメモリ２１０３にロードして使用することもできる。
【００９１】
なお、制御部１９２１が図２１のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、制御部１９２１が可搬型記録媒体又は外部の装置からプログラムを受け取る場合、ＲＯＭ２１０５を省略することができる。
【００９２】
図２２は、図１９のライブラリ装置１９０２による書き込み制御の例を示している。ホスト装置１９０１は、バックアップ処理のために、ドライブ１９２２−１に対する書き込みコマンドＷＲを制御部１９２１へ送信する（手順２２１１）。制御部１９２１は、書き込みコマンドＷＲをドライブ用のコマンドに変換してドライブ１９２２−１へ転送する。その後、ドライブ１９２２−１のデータバッファ１９３３−１から記録媒体２２０１への非同期書き込みにおいて、書き込みエラーが発生する（手順２２１２）。
【００９３】
このとき、制御部１９２１は、ドライブ１９２２−１のデータバッファ１９３３−１から未書き込みデータを読み出すためのコマンドＲＤＢＵＦをドライブ１９２２−１へ送信する（手順２２１３）。ドライブ１９２２−１は、データバッファ１９３３−１内の未書き込みデータを制御部１９２１へ送信する。制御部１９２１は、受信した未書き込みデータをデータバッファ１９２５に格納する。
【００９４】
次に、制御部１９２１は、操作部１９２３を制御し、記録媒体２２０１をドライブ１９２２−１からデマウントして、他の空きドライブ１９２２−２にマウントする（手順２２１４）。そして、制御部１９２１は、ドライブ１９２２−２の書き込み位置を記録媒体２２０１の書き込みが失敗した位置へ位置付ける。
【００９５】
次に、制御部１９２１は、データバッファ１９２５から未書き込みデータをドライブ１９２２−２へ転送し、ドライブ１９２２−２のデータバッファ１９３３−２に書き込む（手順２２１５）。ドライブ１９２２−２は、同期書き込みにより、未書き込みデータを記録媒体２２０１に書き込む（手順２２１６）。
【００９６】
次に、ホスト装置１９０１は、ドライブ１９２２−１に対する書き込みコマンドＷＲを制御部１９２１へ送信する（手順２２１７）。このとき、制御部１９２１は、書き込みコマンドＷＲをドライブ１９２２−２に対する書き込みコマンドに変換し、ドライブ１９２２−１の代わりに、ドライブ１９２２−２へ転送する。そして、ドライブ１９２２−２は、データバッファ１９３３−２内のデータを非同期で記録媒体２２０１に書き込む（手順２２１８）。これにより、ドライブ１９２２−２を介して残りのデータが記録媒体２２０１に書き込まれ、バックアップ処理が終了する。
【００９７】
このような書き込み制御によれば、書き込みエラーが発生した場合に、未書き込みデータをホスト装置１９０１へ転送することなく、バックアップ処理を継続できる。したがって、未書き込みデータの転送にかかる時間が短縮されるとともに、ホスト装置１９０１の負荷が軽減される。さらに、制御部１９２１が未書き込みデータを記録媒体２２０１に書き込む制御を行っている間、ホスト装置１９０１は別の処理を行うことができるため、ホスト装置１９０１の利用効率が向上する。
【００９８】
次に、図２３から図２７までを参照しながら、図１９のライブラリ装置１９０２の動作についてより詳細に説明する。
【００９９】
図２３は、ドライブ１９２２−１のデータバッファ１９３３−１から記録媒体２２０１への非同期書き込みにおいて書き込みエラーが発生した場合に、制御部１９２１が行う書き込み制御の例を示すフローチャートである。図２４は、図２３の書き込み制御において、制御部１９２１が行う割り込み処理の例を示すフローチャートである。図２５は、ホスト装置１９０１が行う処理の例を示すフローチャートである。
【０１００】
ドライブ１９２２−１のデータバッファ１９３３−１から記録媒体２２０１への非同期書き込みにおいて書き込みエラーが発生した場合、ドライブ１９２２−１は、書き込みエラーが発生したことを示す応答を、制御部１９２１へ送信する。
【０１０１】
そこで、制御部１９２１は、記録媒体２２０１への書き込みが失敗したデータの位置（書き込み失敗位置）を読み出すためのコマンドＲＤＢＩＤをドライブ１９２２−１へ送信する（図２３のステップ２３０１）。ドライブ１９２２−１は、書き込み失敗位置を制御部１９２１へ送信し、制御部１９２１は、受信した書き込み失敗位置をメモリ２１０３に記録する。書き込み失敗位置としては、例えば、書き込みが失敗したデータのブロックＩＤを用いることができる。
【０１０２】
次に、制御部１９２１は、ドライブ１９２２−１のデータバッファ１９３３−１から未書き込みデータを読み出すためのコマンドＲＤＢＵＦをドライブ１９２２−１へ送信する（ステップ２３０２）。ドライブ１９２２−１は、データバッファ１９３３−１内の書き込み失敗位置以降に格納されている、書き込みが失敗したデータを含む未書き込みデータを、制御部１９２１へ送信する。制御部１９２１は、受信した未書き込みデータをデータバッファ１９２５に格納する。
【０１０３】
次に、制御部１９２１は、ホスト装置１９０１からのコマンド発行を一時的に停止させるために、コマンド発行停止要求をホスト装置１９０１へ送信する（ステップ２３０３）。
【０１０４】
ホスト装置１９０１は、制御部１９２１からコマンド発行停止要求を受信すると、バックアップ処理を一時的に中断して、他の処理を実行する（図２５のステップ２５０１）。そして、ホスト装置１９０１は、制御部１９２１からコマンド発行要求を受信したか否かをチェックし（ステップ２５０２）、コマンド発行要求を受信していない場合（ステップ２５０２，ＮＯ）、他の処理を継続する。
【０１０５】
次に、制御部１９２１は、図２４の割り込み処理を起動し（ステップ２３０４）、ドライブ１９２２−１以外に空きドライブ１９２２があるか否かをチェックする（ステップ２３０５）。例えば、ドライブ１９２２−２〜ドライブ１９２２−４のうちいずれかのドライブ１９２２が以下の条件を満たしている場合、そのドライブ１９２２は空きドライブ１９２２であると判定される。
（１）ドライブ１９２２に記録媒体がマウントされていない。
（２）ホスト装置１９０１からドライブ１９２２に対する直近のコマンドを受信してから所定時間が経過している。この所定時間は、好ましくは、制御部１９２１が受信したコマンドに基づく制御を実行するのにかかる時間以上の時間である。
【０１０６】
空きドライブ１９２２がない場合（ステップ２３０５，ＮＯ）、制御部１９２１は、空きドライブ１９２２が見つかるまで、ステップ２３０５の処理を繰り返す。空きドライブ１９２２がある場合（ステップ２３０５，ＹＥＳ）、制御部１９２１は、その空きドライブ１９２２を使用状態に設定する（ステップ２３０６）。
【０１０７】
以下では、ドライブ１９２２−２が空きドライブ１９２２である場合について説明する。制御部１９２１は、例えば、メモリ２１０３内に格納されたドライブ１９２２−２のアサインフラグをオンに設定することで、ドライブ１９２２−２を使用状態に設定することができる。ドライブ１９２２−２を使用状態に設定することで、ホスト装置１９０１からドライブ１９２２−２に対するコマンドを受信した場合に、ドライブ１９２２−２が使用中であることを示す応答を返信することが可能になる。
【０１０８】
次に、制御部１９２１は、操作部１９２３を制御し、記録媒体２２０１をドライブ１９２２−１からデマウントして、ドライブ１９２２−２にマウントする（ステップ２３０７）。そして、制御部１９２１は、ドライブ１９２２−２の書き込み位置を記録媒体２２０１の書き込み失敗位置へ位置付ける。
【０１０９】
次に、制御部１９２１は、データバッファ１９２５から未書き込みデータをドライブ１９２２−２へ転送し、ドライブ１９２２−２のデータバッファ１９３３−２に書き込む。ドライブ１９２２−２は、同期書き込みにより、未書き込みデータを記録媒体２２０１に書き込む。そして、制御部１９２１は、未書き込みデータの書き込みが正常に終了したか否かをチェックする（ステップ２３０８）。
【０１１０】
未書き込みデータの書き込みが正常に終了した場合（ステップ２３０８，ＹＥＳ）、制御部１９２１は、図２４の割り込み処理を停止し（ステップ２３０９）、コマンド発行要求をホスト装置１９０１へ送信する（ステップ２３１０）。
【０１１１】
ホスト装置１９０１は、制御部１９２１からコマンド発行要求を受信した場合（ステップ２５０２，ＹＥＳ）、他の処理を中断してバックアップ処理を再開する。そして、ホスト装置１９０１は、ドライブ１９２２−１に対する残りの書き込みコマンドを制御部１９２１へ送信する（ステップ２５０３）。
【０１１２】
制御部１９２１は、受信した書き込みコマンドの発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、ドライブ１９２２−１の代わりに、ドライブ１９２２−２へ書き込みコマンドを転送する（ステップ２３１１）。これにより、書き込みコマンドに含まれるデータが、ドライブ１９２２−２のデータバッファ１９３３−２に書き込まれる。そして、ドライブ１９２２−２は、データバッファ１９３３−２内のデータを非同期で記録媒体２２０１に書き込む。
【０１１３】
次に、制御部１９２１は、書き込みエラーが発生したドライブ１９２２−１を使用不可状態に設定する（ステップ２３１２）。制御部１９２１は、例えば、ドライブ１９２２−１をオフライン状態にすることで、ドライブ１９２２−１を使用不可状態に設定することができる。
【０１１４】
ドライブ１９２２−１が使用不可状態に設定された後に、ホスト装置１９０１からドライブ１９２２−１に対する書き込みコマンドを受信した場合、制御部１９２１は、ドライブ１９２２−１が使用不可状態であることを示す応答をホスト装置１９０１へ返信する。使用不可状態に設定されたドライブ１９２２−１は、ユーザ又はオペレータにより正常なドライブに交換される。
【０１１５】
次に、制御部１９２１は、ドライブ１９２２−２の使用状態を解除する（ステップ２３１３）。制御部１９２１は、例えば、メモリ２１０３内に格納されたドライブ１９２２−２のアサインフラグをオフに設定することで、ドライブ１９２２−２の使用状態を解除することができる。ドライブ１９２２−２の使用状態を解除することで、ホスト装置１９０１からドライブ１９２２−２に対するコマンドを受信した場合に、ドライブ１９２２−２を使用することが可能になる。
【０１１６】
一方、未書き込みデータの書き込み時に書き込みエラーが発生した場合（ステップ２３０８，ＮＯ）、制御部１９２１は、図２４の割り込み処理を停止する（ステップ２３２１）。そして、制御部１９２１は、操作部１９２３を制御し、記録媒体２２０１をドライブ１９２２−２からデマウントする（ステップ２３２２）。
【０１１７】
次に、制御部１９２１は、ドライブ１９２２−２の使用状態を解除し（ステップ２３２３）、記録媒体２２０１が異常であることを示す媒体異常情報をホスト装置１９０１へ送信する（ステップ２３２４）。これにより、ホスト装置１９０１は、ドライブ１９２２−１ではなく、記録媒体２２０１が異常であることを認識できる。
【０１１８】
制御部１９２１は、図２４の割り込み処理を起動した後、図２３の書き込み制御の間、一定周期で割り込み処理を繰り返す。制御部１９２１は、まず、タイマ値をカウントアップし（ステップ２４０１）、タイムアウトまでの残り時間を所定時間と比較する（ステップ２４０２）。
【０１１９】
割り込み処理の起動からタイムアウトまでの時間は、例えば、ホスト装置１９０１がコマンド発行停止要求に基づいてコマンドの発行を保留できる時間に基づいて決められる。また、所定時間は、好ましくは、制御部１９２１が記録媒体２２０１をドライブ１９２２−２からデマウントするのにかかる時間以上の時間である。
【０１２０】
残り時間が所定時間より長い場合（ステップ２４０２，ＮＯ）、一旦、割り込み処理を終了し、次の割り込み処理の開始まで図２３の書き込み制御を続行する。
【０１２１】
一方、残り時間が所定時間以下である場合（ステップ２４０２，ＮＯ）、空きドライブ１９２２−２を用いた未書き込みデータの書き込みを中止する（ステップ２４０３）。そして、制御部１９２１は、操作部１９２３を制御し、記録媒体２２０１をドライブ１９２２−２からデマウントする（ステップ２４０４）。
【０１２２】
次に、制御部１９２１は、ドライブ１９２２−２の使用状態を解除し（ステップ２４０５）、ドライブ１９２２−１又は記録媒体２２０１が異常であることを示す異常情報をホスト装置１９０１へ送信する（ステップ２４０６）。これにより、ホスト装置１９０１は、ドライブ１９２２−１又は記録媒体２２０１のいずれか一方又は両方が異常であることを認識できる。
【０１２３】
そして、制御部１９２１は、図２３の書き込み制御を強制的に終了させる（ステップ２４０７）。
【０１２４】
図２６及び図２７は、ドライブ１９２２−１による非同期書き込みにおいて書き込みエラーが発生した場合の書き込み制御シーケンスの例を示している。
【０１２５】
ホスト装置１９０１は、ドライブ１９２２−１を指定したバックアップ処理を開始する（図２６の手順２６０１）。そして、ホスト装置１９０１は、ドライブ１９２２−１に記録媒体２２０１をマウントするためのコマンドＬＯＡＤを、制御部１９２１を介して、ドライブ１９２２−１へ送信する（手順２６０２）。このとき、操作部１９２３は、制御部１９２１により制御され、格納部１９２４から記録媒体２２０１を取り出してドライブ１９２２−１にマウントする。
【０１２６】
次に、ホスト装置１９０１は、書き込みコマンドＷＲ１を制御部１９２１へ送信する（手順２６０３）。制御部１９２１は、書き込みコマンドＷＲ１をドライブ１９２２−１へ転送することで、書き込みコマンドＷＲ１に含まれるデータをデータバッファ１９３３−１に書き込む（手順２６０４）。ドライブ１９２２−１は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２６０５）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２６０６）。
【０１２７】
次に、ホスト装置１９０１は、書き込みコマンドＷＲ２を制御部１９２１へ送信する（手順２６０７）。制御部１９２１は、書き込みコマンドＷＲ２をドライブ１９２２−１へ転送することで、書き込みコマンドＷＲ２に含まれるデータをデータバッファ１９３３−１に書き込む（手順２６０８）。ドライブ１９２２−１は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２６０９）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２６１０）。
【０１２８】
次に、ホスト装置１９０１は、書き込みコマンドＷＲ３を制御部１９２１へ送信する（手順２６１１）。制御部１９２１は、書き込みコマンドＷＲ３をドライブ１９２２−１へ転送することで、書き込みコマンドＷＲ３に含まれるデータをデータバッファ１９３３−１に書き込む（手順２６１２）。ドライブ１９２２−１は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２６１３）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２６１４）。
【０１２９】
次に、ホスト装置１９０１は、コマンドＷＦＭを制御部１９２１へ送信し（手順２６１５）、制御部１９２１は、コマンドＷＦＭをドライブ１９２２−１へ転送する（手順２６１６）。ドライブ１９２２−１は、コマンドＷＦＭの実行を保留する。
【０１３０】
ここで、データバッファ１９３３−１が一杯になったため、ドライブ１９２２−１は、データバッファ１９３３−１の先頭のデータを記録媒体２２０１に書き込む（手順２６１７）。データの書き込みが正常に終了すると（手順２６１８）、ドライブ１９２２−１は、データバッファ１９３３−１の次のデータを記録媒体２２０１に書き込む（手順２６１９）。このとき、書き込みエラーが発生し（手順２６２０）、ドライブ１９２２−１は、書き込みエラーが発生したことを示す応答を、制御部１９２１へ送信する。
【０１３１】
そこで、制御部１９２１は、コマンドＲＤＢＩＤをドライブ１９２２−１へ送信する（手順２６２１）。ドライブ１９２２−１は、書き込み失敗位置を制御部１９２１へ送信し（手順２６２２）、制御部１９２１は、受信した書き込み失敗位置をメモリ２１０３に記録する。
【０１３２】
次に、制御部１９２１は、コマンドＲＤＢＵＦをドライブ１９２２−１へ送信する（手順２６２３）。ドライブ１９２２−１は、データバッファ１９３３−１内の未書き込みデータを制御部１９２１へ送信する（手順２６２４）。制御部１９２１は、受信した未書き込みデータをデータバッファ１９２５に格納する。
【０１３３】
次に、制御部１９２１は、コマンド発行停止要求をホスト装置１９０１へ送信する（手順２６２５）。ホスト装置１９０１は、バックアップ処理を一時的に中断して、コマンド発行要求の受信を待ち合わせる（手順２６２６）。
【０１３４】
次に、制御部１９２１は、割り込み処理を起動し、タイムアウトまでの残り時間が所定時間以下である場合、ドライブ１９２２−１又は記録媒体２２０１が異常であることを示す異常情報をホスト装置１９０１へ送信する（手順２６２７）。ホスト装置１９０１は、異常情報を受信した場合、ドライブ１９２２−１又は記録媒体２２０１のいずれか一方又は両方が異常であると判断して、バックアップ処理を終了する（手順２６２８）。
【０１３５】
タイムアウトまでの残り時間が所定時間より長い場合、制御部１９２１は、空きドライブ１９２２−２を使用状態に設定する（手順２６２９）。
【０１３６】
ホスト装置１９０１は、他の処理を開始して（手順２６３０）、ドライブ１９２２−２に対するコマンドを制御部１９２１へ送信する（手順２６３１）。制御部１９２１は、ドライブ１９２２−２が使用状態に設定されているため、ドライブ１９２２−２が使用中であることを示す応答を、ホスト装置１９０１へ送信する（手順２６３２）。そこで、ホスト装置１９０１は、別の空きドライブ１９２２を探して他の処理を続行する（手順２６３３）。
【０１３７】
次に、制御部１９２１は、記録媒体２２０１をドライブ１９２２−１からデマウントして、ドライブ１９２２−２にマウントする制御を開始する（図２７の手順２７０１）。そして、制御部１９２１は、記録媒体２２０１をドライブ１９２２−２にマウントするためのコマンドＬＯＡＤを、ドライブ１９２２−２へ送信する（手順２７０２）。このとき、操作部１９２３は、制御部１９２１により制御され、記録媒体２２０１をドライブ１９２２−１からデマウントして、ドライブ１９２２−２にマウントする。
【０１３８】
次に、制御部１９２１は、ドライブ１９２２−２の書き込み位置を記録媒体２２０１の書き込み失敗位置へ位置付けるためのコマンドＬＯＣＡＴＥを、ドライブ１９２２−２へ送信する（手順２７０３）。ドライブ１９２２−２は、書き込み位置を記録媒体２２０１の書き込み失敗位置へ位置付け、書き込み位置が書き込み失敗位置へ位置付けられたことを示す応答を、制御部１９２１へ送信する（手順２７０４）。
【０１３９】
次に、制御部１９２１は、データバッファ１９２５から未書き込みデータをドライブ１９２２−２へ転送し、ドライブ１９２２−２は、同期書き込みにより、未書き込みデータを記録媒体２２０１に書き込む（手順２７０５）。
【０１４０】
未書き込みデータの書き込み時に書き込みエラーが発生した場合、ドライブ１９２２−２は、書き込みエラーが発生したことを示す応答を、制御部１９２１へ送信する（手順２７０６）。制御部１９２１は、記録媒体２２０１が異常であることを示す媒体異常情報をホスト装置１９０１へ送信する（手順２７０７）。ホスト装置１９０１は、媒体異常情報を受信した場合、記録媒体２２０１が異常であると判断して、バックアップ処理を終了する（手順２７０８）。
【０１４１】
一方、未書き込みデータの書き込みが正常に終了した場合、ドライブ１９２２−２は、未書き込みデータの書き込みが正常に終了したことを示す応答を、制御部１９２１へ送信する（手順２７０９）。制御部１９２１は、コマンド発行要求をホスト装置１９０１へ送信する（手順２７１０）。
【０１４２】
ホスト装置１９０１は、他の処理を中断してバックアップ処理を再開し、ドライブ１９２２−１に対するコマンドＷＦＭを、再び制御部１９２１へ送信する（手順２７１１）。制御部１９２１は、受信したコマンドＷＦＭの発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、コマンドＷＦＭをドライブ１９２２−２へ転送する（手順２７１２）。
【０１４３】
ドライブ１９２２−１は、コマンドＷＦＭを実行して、記録媒体２２０１にテープマークを書き込み、テープマークの書き込みが正常に終了したことを示す応答を、制御部１９２１へ送信する（手順２７１３）。制御部１９２１は、テープマークの書き込みが正常に終了したことを示す応答を、ホスト装置１９０１へ送信する（手順２７１４）。
【０１４４】
次に、ホスト装置１９０１は、ドライブ１９２２−１に対する残りの書き込みコマンドＷＲ４を制御部１９２１へ送信する（手順２７１５）。制御部１９２１は、書き込みコマンドＷＲ４の発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、書き込みコマンドＷＲ４をドライブ１９２２−２へ転送する（手順２７１６）。これにより、書き込みコマンドＷＲ４に含まれるデータがデータバッファ１９３３−２に書き込まれる。ドライブ１９２２−２は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２７１７）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２７１８）。
【０１４５】
次に、ホスト装置１９０１は、ドライブ１９２２−１に対する残りの書き込みコマンドＷＲ５を制御部１９２１へ送信する（手順２７１９）。制御部１９２１は、書き込みコマンドＷＲ５の発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、書き込みコマンドＷＲ５をドライブ１９２２−２へ転送する（手順２７２０）。これにより、書き込みコマンドＷＲ５に含まれるデータがデータバッファ１９３３−２に書き込まれる。ドライブ１９２２−２は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２７２１）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２７２２）。
【０１４６】
次に、ホスト装置１９０１は、ドライブ１９２２−１に対する残りの書き込みコマンドＷＲ６を制御部１９２１へ送信する（手順２７２３）。制御部１９２１は、書き込みコマンドＷＲ６の発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、書き込みコマンドＷＲ６をドライブ１９２２−２へ転送する（手順２７２４）。これにより、書き込みコマンドＷＲ６に含まれるデータがデータバッファ１９３３−２に書き込まれる。ドライブ１９２２−２は、データの書き込みが終了したことを示す応答を、制御部１９２１へ送信し（手順２７２５）、制御部１９２１は、その応答をホスト装置１９０１へ送信する（手順２７２６）。
【０１４７】
そして、ドライブ１９２２−２は、データバッファ１９３３−２内のデータを非同期で記録媒体２２０１に書き込み（手順２７２６）、データが正常に書き込まれたことを検知する（手順２７２７）。
【０１４８】
ホスト装置１９０１は、バックアップ処理を終了し（手順２７２８）、記録媒体２２０１をドライブ１９２２−１からデマウントするためのコマンドＵＮＬＤを、制御部１９２１へ送信する（手順２７２９）。制御部１９２１は、コマンドＵＮＬＤの発行先をドライブ１９２２−１からドライブ１９２２−２に変更し、コマンドＵＮＬＤをドライブ１９２２−２へ転送する。このとき、操作部１９２３は、制御部１９２１により制御され、記録媒体２２０１をドライブ１９２２−２からデマウントして、格納部１９２４に格納する。
【０１４９】
そして、制御部１９２１は、書き込みエラーが発生したドライブ１９２２−１を使用不可状態に設定し（手順２７３０）、ドライブ１９２２−２の使用状態を解除する（手順２７３１）。
【０１５０】
図２３〜図２５のフローチャートと図２６及び図２７の書き込み制御シーケンスは一例に過ぎず、ホスト装置１９０１又はライブラリ装置１９０２の構成や条件に応じて一部の処理を省略又は変更してもよい。
【０１５１】
例えば、未書き込みデータを記録媒体２２０１に書き込んでいる間にホスト装置１９０１によるコマンドの発行を停止させる必要がない場合は、図２３のステップ２３０３及びステップ２３１０の処理を省略することができる。この場合、図２６の手順２６２５及び図２７の手順２７１０の処理も省略することができる。
【０１５２】
また、ドライブ１９２２−１又は記録媒体２２０１の異常をホスト装置１９０１へ通知する必要がない場合は、図２３のステップ２３２４及び図２４のステップ２４０６の処理を省略することができる。この場合、図２６の手順２６２７及び図２７の手順２７０７の処理も省略することができる。
【０１５３】
さらに、書き込みエラーが発生したドライブ１９２２−１の使用を禁止する必要がない場合は、図２３のステップ２３１２の処理を省略することができる。この場合、図２７の手順２７３０の処理も省略することができる。
【０１５４】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【０１５５】
１０１、１９０１  ホスト装置
１０２、１９０２  ライブラリ装置
１２１、１９２１  制御部
１２２−１〜１２２−４、１９２２−１〜１９２２−４  ドライブ
１２３、１９２３  操作部
１２４、１９２４  格納部
１３１、１３２−１〜１３２−４、１９３１、１９３２−１〜１９３２−４  通信回線
１３３−１〜１３３−４、１９２５、１９３３−１〜１９３３−４  データバッファ
２０１、２２０１  記録媒体
２１０１、２１０２  インタフェース
２１０３  メモリ
２１０４  ＣＰＵ
２１０５  ＲＯＭ
２１１１  バス
【図１】
2014130475.tif 000003
【図２】
2014130475.tif 000004
【図３】
2014130475.tif 000005
【図４】
2014130475.tif 000006
【図５】
2014130475.tif 000007
【図６】
2014130475.tif 000008
【図７】
2014130475.tif 000009
【図８】
2014130475.tif 000010
【図９】
2014130475.tif 000011
【図１０】
2014130475.tif 000012
【図１１】
2014130475.tif 000013
【図１２】
2014130475.tif 000014
【図１３】
2014130475.tif 000015
【図１４】
2014130475.tif 000016
【図１５】
2014130475.tif 000017
【図１６】
2014130475.tif 000018
【図１７】
2014130475.tif 000019
【図１８】
2014130475.tif 000020
【図１９】
2014130475.tif 000021
【図２０】
2014130475.tif 000022
【図２１】
2014130475.tif 000023
【図２２】
2014130475.tif 000024
【図２３】
2014130475.tif 000025
【図２４】
2014130475.tif 000026
【図２５】
2014130475.tif 000027
【図２６】
2014130475.tif 000028
【図２７】
2014130475.tif 000029