(57)【特許請求の範囲】
【請求項１】
第１および第２の書込み装置を含んでおり、何れかの書込み装置を用いた記録媒体へのデータの書込み中に未書込みのデータが発生した旨の通知を受信すると当該書込み装置から前記未書込みのデータを取得する情報処理装置と接続される書込みシステムであって、
前記第１の書込み装置は、
前記記録媒体と前記記録媒体とは異なる記憶部とを備え前記第１の書込み装置に収納されたカートリッジの前記記録媒体への前記データの書込み中に前記未書込みのデータが発生すると、前記未書込みのデータが前記情報処理装置に取得されないようにするためのダミーの情報を前記情報処理装置に送信し、前記未書込みのデータを前記記憶部に書込む第１の書込み部を有し、
前記第２の書込み装置は、
前記第１の書込み装置から前記第２の書込み装置へ前記カートリッジが移されると、前記記憶部に記憶された前記未書込みのデータを、前記記録媒体に書込む第２の書込み部を有する、
書込みシステム。
【請求項２】
前記第１の書込み部は、前記ダミーの情報として、前記未書込みのデータが発生していない旨の通知を前記情報処理装置に送信する、請求項１記載の書込みシステム。
【請求項３】
前記第１の書込み部は、前記未書込みのデータが発生すると、前記未書込みのデータが発生した旨の通知を前記情報処理装置に送信し、前記未書込みのデータの送信指示を前記情報処理装置から受信すると、前記未書込みのデータに代えて、前記未書込みのデータよりもサイズの小さな所定のデータを、前記ダミーの情報として、前記情報処理装置に送信する、請求項１記載の書込みシステム。
【請求項４】
前記第１の書込み部は、前記第２の書込み装置が前記未書込みのデータの書込みを開始すべき前記記録媒体の第１のアドレスを前記記憶部に格納し、前記情報処理装置が前記第２の書込み装置を用いて前記記録媒体へのデータの書込みを再開すべきアドレスとして、前記第１のアドレスとは異なる第２のアドレスを前記情報処理装置に報告する、請求項１乃至３の何れか一項に記載の書込みシステム。
【請求項５】
前記第１の書込み部は、前記未書込みのデータのうち、前記記憶部に書込めなかった残りデータが発生した場合、前記残りデータを前記情報処理装置に取得させ、
前記第２の書込み部は、前記記憶部に記憶された前記未書込みのデータの一部と前記情報処理装置が保持する前記残りデータとを前記記録媒体に書込む、
請求項１乃至４の何れか一項に記載の書込みシステム。
【請求項６】
記録媒体へのデータの書込みを行っている装置から未書込みのデータが発生した旨の通知を受信すると当該装置から前記未書込みのデータを取得する情報処理装置により、前記記録媒体へのデータの書込みに用いられる書込み装置であって、
前記記録媒体と前記記録媒体とは異なる記憶部とを備え自身に収納されたカートリッジの前記記録媒体への前記データの書込み中に前記未書込みのデータが発生すると、前記未書込みのデータが前記情報処理装置に取得されないようにするためのダミーの情報を前記情報処理装置に送信し、前記未書込みのデータを前記記憶部に書込む第１の書込み部と、
前記第１の書込み部から自身へ前記カートリッジが移されると、前記記憶部に記憶された前記未書込みのデータを、前記記録媒体に書込む第２の書込み部と、
を有する書込み装置。
【請求項７】
第１および第２の書込み装置を含んでおり、何れかの書込み装置を用いた記録媒体へのデータの書込み中に未書込みのデータが発生した旨の通知を受信すると当該書込み装置から前記未書込みのデータを取得する情報処理装置と接続される書込みシステムで実行される書込み方法であって、
前記第１の書込み装置を用いて、前記記録媒体と前記記録媒体とは異なる記憶部とを備え前記第１の書込み装置に収納されたカートリッジの前記記録媒体へ前記データを書込んでいるときに、前記未書込みのデータが発生すると、前記未書込みのデータを前記記憶部に書込み、前記未書込みのデータが前記情報処理装置に取得されないようにするためのダミーの情報を前記情報処理装置に送信し、
前記第１の書込み装置から前記第２の書込み装置へ前記カートリッジが移されると、前記第２の書込み装置を用いて、前記記憶部に記憶された前記未書込みのデータを、前記記録媒体に書込む、
書込み方法。
【請求項８】
記録媒体へのデータの書込みを行っている装置から未書込みのデータが発生した旨の通知を受信すると当該装置から前記未書込みのデータを取得する情報処理装置により、前記記録媒体へのデータの書込みに用いられる書込み装置で実行される書込み方法であって、
前記書込み装置は、前記記録媒体にデータを書込む第１および第２の書込み部を有しており、
前記第１の書込み部を用いて、前記記録媒体と前記記録媒体とは異なる記憶部とを備え前記第１の書込み部に収納されたカートリッジの前記記録媒体への前記データを書込んでいるときに、前記未書込みのデータが発生すると、前記未書込みのデータを前記記憶部に書込み、前記未書込みのデータが前記情報処理装置に取得されないようにするためのダミーの情報を前記情報処理装置に送信し、
前記第１の書込み部から前記第２の書込み部へ前記カートリッジが移されると、前記第２の書込み部を用いて、前記記憶部に記憶された前記未書込みのデータを、前記記録媒体に書込む、
書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は書込みシステム、書込み装置および書込み方法に関する。
【背景技術】
【０００２】
コンピュータなどの情報処理装置で扱うデータを、情報処理装置の外部に取り出せる記録媒体に記録する書込み装置が利用されている。例えば、データを書込んだ記録媒体を保管し、当該データのバックアップとする。記録媒体には、例えば、磁気テープ媒体や光ディスク媒体などがある。記録媒体は、取扱い等の便利のためカートリッジ（cartridge）と呼ばれるケースに収納されていることがある。
【０００３】
ところで、書込み装置では当該装置の異常などにより、記録媒体に対するデータの書込みに失敗することがある。そこで、例え書込みに失敗してもデータの書込みを続行可能にする方法が考えられている。
【０００４】
例えば、光ディスク媒体にバックアップメモリを設け、ディスク媒体に書込むデータをバックアップメモリにも格納して、データの書込みエラー時には、当該バックアップメモリからデータを復元可能とする提案がある。
【０００５】
また、例えば、磁気テープ媒体へのデータの書込みに対して、動的デバイス再配置（ＤＤＲ：Dynamic Device Reconfiguration）と呼ばれる方法が提案されている。ＤＤＲでは、磁気テープ媒体へのデータの書込み中に磁気テープ装置でエラーが発生すると、磁気テープ装置がその旨を上位装置に報告する。すると、上位装置は、磁気テープ装置側でバッファリングされた未書込みのデータを上位装置の主記憶領域に退避する。上位装置は、磁気テープ媒体を正常な他の磁気テープ装置に移すようオペレータに指示する。オペレータは、正常な他の磁気テープ装置に磁気テープ媒体を移す。すると、上位装置は、他の磁気テープ装置を用いて、退避した未書込みのデータを磁気テープ媒体に追記する。このようにして、ＤＤＲではエラー時でも磁気テープ媒体へのデータの書込みを続行する。
【０００６】
なお、磁気テープ媒体を収めたカートリッジに不揮発性メモリを設け、磁気テープ媒体のパーティション情報やユーザ情報などを不揮発性メモリに格納する提案がある。また、磁気テープ媒体のカートリッジに不揮発性の記憶部を設け、当該記憶部に書込んだデータを、磁気テープ媒体上の指定された位置に書き直す提案もある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−１７５７９３号公報
【特許文献２】特開２００３−２６３８４０号公報
【特許文献３】特開平６−１７５７９２号公報
【特許文献４】特開平９−１６１４５２号公報
【特許文献５】特開２０１１−１４６１０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＤＤＲのように未書込みのデータを上位装置に退避させる場合、退避用の記憶領域のサイズが退避させるデータのサイズに比べて小さい場合がある。この場合、未書込みのデータの全部を退避させることができずに、データの書込みが中断されてしまう。そこで、上位装置の退避用の記憶領域のサイズを拡大することが考えられる。しかし、上位装置が稼働中であったり、他のデバイスなどへも主記憶装置から記憶領域が割り当てられていたりすると、上位装置側で退避用の記憶領域を十分に確保することが困難な場合がある。
【０００９】
これに対し、磁気テープ媒体のカートリッジにメモリを設けて、当該メモリ上の記憶領域を退避用に利用可能とすることが考えられる。しかし、この場合、カートリッジ上のメモリを用いたデータの退避／書込みの処理を、上位装置における既存のＤＤＲの処理に対し、どのようにコストを抑えて組み込むかが問題となる。
【００１０】
例えば、上位装置のＤＤＲの処理において、未書込みのデータの退避先を、上位装置側の主記憶装置に代えてカートリッジ上のメモリとするように作り変えるとすると、作り変えのための工数が生ずる。また、安定稼働中の上位装置の既存処理を変更する際、既存の他の業務処理などへの影響を考慮した入念な準備や実作業のための工数も問題となる。
【００１１】
一側面では、本発明は、データ退避用の記憶領域を低コストで拡張できるようにした書込みシステム、書込み装置および書込み方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
一実施態様では、第１および第２の書込み装置を含んでおり、何れかの書込み装置を用いた記録媒体へのデータの書込み中に未書込みのデータが発生した旨の通知を受信すると当該書込み装置から未書込みのデータを取得する情報処理装置と接続される書込みシステムが提供される。第１の書込み装置は、第１の書込み部を有する。第１の書込み部は、記録媒体と記録媒体とは異なる記憶部とを備え第１の書込み装置に収納されたカートリッジの記録媒体へのデータの書込み中に未書込みのデータが発生すると、未書込みのデータが情報処理装置に取得されないようにするためのダミーの情報を情報処理装置に送信し、未書込みのデータを記憶部に書込む。第２の書込み装置は、第２の書込み部を有する。第２の書込み部は、第１の書込み装置から第２の書込み装置へカートリッジが移されると、記憶部に記憶された未書込みのデータを、記録媒体に書込む。
【００１３】
また、一実施態様では、記録媒体へのデータの書込みを行っている装置から未書込みのデータが発生した旨の通知を受信すると当該装置から未書込みのデータを取得する情報処理装置により、記録媒体へのデータの書込みに用いられる書込み装置が提供される。書込み装置は、第１の書込み部と第２の書込み部とを有する。第１の書込み部は、記録媒体と記録媒体とは異なる記憶部とを備え自身に収納されたカートリッジの記録媒体へのデータの書込み中に未書込みのデータが発生すると、未書込みのデータが情報処理装置に取得されないようにするためのダミーの情報を情報処理装置に送信し、未書込みのデータを記憶部に書込む。第２の書込み部は、第１の書込み部から自身へカートリッジが移されると、記憶部に記憶された未書込みのデータを、記録媒体に書込む。
【００１４】
また、一実施態様では、第１および第２の書込み装置を含んでおり、何れかの書込み装置を用いた記録媒体へのデータの書込み中に未書込みのデータが発生した旨の通知を受信すると当該書込み装置から未書込みのデータを取得する情報処理装置と接続される書込みシステムで実行される書込み方法が提供される。書込み方法では、第１の書込み装置を用いて、記録媒体と記録媒体とは異なる記憶部とを備え第１の書込み装置に収納されたカートリッジの記録媒体へデータを書込んでいるときに、未書込みのデータが発生すると、未書込みのデータを記憶部に書込み、未書込みのデータが情報処理装置に取得されないようにするためのダミーの情報を情報処理装置に送信する。第１の書込み装置から第２の書込み装置へカートリッジが移されると、第２の書込み装置を用いて、記憶部に記憶された未書込みのデータを、記録媒体に書込む。
【００１５】
また、一実施態様では、記録媒体へのデータの書込みを行っている装置から未書込みのデータが発生した旨の通知を受信すると当該装置から未書込みのデータを取得する情報処理装置により、記録媒体へのデータの書込みに用いられる書込み装置で実行される書込み方法が提供される。書込み方法では、書込み装置は記録媒体にデータを書込む第１および第２の書込み部を有しており、第１の書込み部を用いて、記録媒体と記録媒体とは異なる記憶部とを備え第１の書込み部に収納されたカートリッジの記録媒体へのデータを書込んでいるときに、未書込みのデータが発生すると、未書込みのデータを記憶部に書込み、未書込みのデータが情報処理装置に取得されないようにするためのダミーの情報を情報処理装置に送信する。第１の書込み部から第２の書込み部へカートリッジが移されると、第２の書込み部を用いて、記憶部に記憶された未書込みのデータを、記録媒体に書込む。
【発明の効果】
【００１６】
一実施態様によれば、データ退避用の記憶領域を低コストで拡張できる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態の書込みシステムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態のテープ装置のハードウェア例を示す図である。
【図４】第２の実施の形態のサーバのハードウェア例を示す図である。
【図５】第２の実施の形態のソフトウェア例を示す図である。
【図６】第２の実施の形態の制御テーブルの例を示す図である。
【図７】第２の実施の形態の未書込みデータテーブルの例を示す図である。
【図８】第２の実施の形態のエラー時の前処理の例を示すフローチャートである。
【図９】第２の実施の形態のエラー時の前処理の具体例を示す図である。
【図１０】第２の実施の形態のエラー時の前処理の具体例（続き）を示す図である。
【図１１】第２の実施の形態のエラー時の後処理の例を示すフローチャートである。
【図１２】第２の実施の形態のエラー時の後処理の具体例を示す図である。
【図１３】第２の実施の形態の書込み再開処理の例を示すフローチャートである。
【図１４】書込みエラー時の処理の比較例を示す図である。
【図１５】第３の実施の形態のエラー時の前処理の例を示すフローチャートである。
【図１６】第３の実施の形態の書込み再開処理の例を示すフローチャートである。
【図１７】第４の実施の形態のエラー時の前処理の例を示すフローチャートである。
【図１８】第４の実施の形態の書込み再開処理の例を示すフローチャートである。
【図１９】第５の実施の形態のテープ装置のハードウェア例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の書込みシステムを示す図である。第１の実施の形態の書込みシステムは、書込み装置１，２を含む。第１の実施の形態の書込みシステムは、情報処理装置３と接続されている。情報処理装置３は、書込み装置１，２に対する上位装置ということもできる。書込み装置１，２は、自装置に収納されたカートリッジ４の記録媒体４ａに対し、情報処理装置３が出力するデータの書込みを行う。ここで、書込み装置１，２は、情報処理装置３が出力するデータを自身のバッファに格納する。書込み装置１，２は、自身のバッファに格納したデータを記録媒体４ａへ書込む。
【００１９】
情報処理装置３は、書込み装置１を用いた記録媒体４ａへのデータの書込み時に書込み装置１から未書込みのデータの発生の通知を受ける。すると、情報処理装置３は、バッファリングされた未書込みのデータを書込み装置１から取得して、情報処理装置３の主記憶装置上の所定の退避領域に保持する。情報処理装置３は、オペレータに指示して、カートリッジ４を書込み装置２へ移動させる。情報処理装置３は、書込み装置２を用いてカートリッジ４の記録媒体４ａに対し、自身の退避領域に保持した未書込みのデータを書込む。この方法は、ＤＤＲと呼ばれることがある。
【００２０】
ここで、カートリッジ４は、記録媒体４ａおよび記憶部４ｂを有する。記録媒体４ａは、記憶部４ｂに比べて記憶領域のサイズが大きく、大量のデータを格納できる。記録媒体４ａは、例えば、磁気テープ媒体である。記憶部４ｂは、記録媒体４ａとは異なる媒体に設けられた記憶部である。記憶部４ｂは、書込み装置１，２の障害などで記録媒体４ａへの未書込みのデータが発生した場合に、当該未書込みのデータを退避させるための記憶領域である。記憶部４ｂは、例えば、半導体メモリである。
【００２１】
書込み装置１は、書込み部１ａを有する。書込み部１ａは、記録媒体４ａへのデータの書込み中に未書込みのデータが発生すると、未書込みのデータを記憶部４ｂに書込む。このとき、書込み部１ａは、未書込みのデータが情報処理装置３に取得されないようにするためのダミーの情報を情報処理装置３に送信する。
【００２２】
ダミーの情報は、情報処理装置３による既存の処理を阻害しない情報である。例えば、ダミーの情報は、未書込みのデータが発生していない旨を通知する情報である。あるいは、未書込みのデータが発生したことを情報処理装置３に通知した後、情報処理装置３が未書込みのデータを取得しようとするときに、未書込みのデータよりもサイズの小さな所定のデータを、ダミーの情報として送信してもよい。この場合、情報処理装置３は、未書込みのデータの代わりに、ダミーの情報を受信することになる。
【００２３】
書込み装置２は、書込み部２ａを有する。書込み部２ａは、書込み装置１から書込み装置２へカートリッジ４が移されると、記憶部４ｂに記憶された未書込みのデータを記録媒体４ａに書込む。
【００２４】
その後、情報処理装置３は、書込み装置２を用いて、記録媒体４ａに対する通常の書込みを再開する。ここで、書込み装置２は未書込みのデータの記録媒体４ａへの書込みが完了した後に、書込みの継続が可能な旨を情報処理装置３に通知してもよい。そうすれば、情報処理装置３は、当該通知を受けて、通常の書込みを再開できる。
【００２５】
第１の実施の形態の書込みシステムによれば、書込み部１ａにより、カートリッジ４の記録媒体４ａへのデータの書込み中に未書込みのデータが発生すると（ステップＳ１）、未書込みのデータが記憶部４ｂに書込まれる（ステップＳ２）。このとき、書込み部１ａにより、情報処理装置３にダミーの情報が送られる（ステップＳ３）。ダミーの情報が送られることで未書込みのデータが情報処理装置３に取得されない。書込み装置１から書込み装置２へカートリッジ４が移動されると、書込み部２ａにより、記憶部４ｂに記憶された未書込みのデータが取得され（ステップＳ４）、記録媒体４ａに書込まれる（ステップＳ５）。
【００２６】
これにより、データ退避用の記憶領域を低コストで拡張可能となる。具体的には、書込み装置１は、情報処理装置３にダミーの情報を送信することで、情報処理装置３が未書込みのデータを取得するのを抑制する。これにより、情報処理装置３によるＤＤＲの処理のうち、データ退避の処理を一部制限できる。そして、書込み装置１，２は記憶部４ｂを用いた未書込みのデータの退避および記録媒体４ａへの未書き込みのデータの書込みを情報処理装置３とは独立に行える。このようにして、カートリッジ４に設けた記憶部４ｂをデータ退避用の記憶領域として容易に利用できるようになる。特に、情報処理装置３の既存のＤＤＲの処理を作り変えずに済むので、記憶領域の拡張のために生じ得るコストを抑えられる。
【００２７】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、テープ装置１００，１００ａ、サーバ２００およびストレージ装置３００を含む。テープ装置１００，１００ａ、サーバ２００およびストレージ装置３００は、ネットワーク１０で接続されている。ネットワーク１０は、例えば、イーサネット（登録商標）やファイバチャネル（ＦＣ：Fibre Channel）などを用いたＳＡＮ（Storage Area Network）である。
【００２８】
テープ装置１００，１００ａは、カートリッジ４００に収められた記録媒体にデータを書込む書込み装置である。テープ装置１００，１００ａは、筐体内部に複数のカートリッジ４００を格納したライブラリ装置やチェンジャ装置などと呼ばれる装置でもよい。
【００２９】
ここで、カートリッジ４００は磁気テープ４１０およびカートリッジメモリ（ＣＭ：Cartridge Memory）４２０を有する。磁気テープ４１０は、磁気テープ媒体である。磁気テープ４１０は、ＣＭ４２０よりも記憶領域のサイズが大きく、大量のデータの格納が可能である。磁気テープ４１０には、例えば、サーバ２００が扱うデータのバックアップが格納される。ＣＭ４２０は、半導体メモリである。ＣＭ４２０は、データの退避用に利用される。
【００３０】
なお、テープ装置１００，１００ａおよび磁気テープ４１０としては、例えば、ＬＴＯ（Linear Tape Open、登録商標）、ＤＬＴ（Digital Linear Tape、登録商標）、ＡＩＴ（Advanced Intelligent Tape、登録商標）、ＤＤＳ（Digital Data Storage、登録商標）などの規格に準拠したものが考えられる。
【００３１】
例えば、ＬＴＯ５では、磁気テープ４１０全体で約１．６Ｔバイト（Terabytes）の記憶領域を利用可能である。一方、ＣＭ４２０では、例えば、数Ｇバイト（Gigabytes）〜数十Ｇバイト程度の記憶領域を利用可能である。
【００３２】
サーバ２００は、他のサーバ装置やクライアント装置など（図示を省略）に所定のサービスを提供するサーバコンピュータである。サーバ２００は、テープ装置１００，１００ａを用いて、自身やストレージ装置３００に格納されたデータのバックアップを行う。ここで、サーバ２００はＤＤＲの機能を備えている。なお、サーバ２００は、端末装置からの入力に対して処理を実行するホストコンピュータと呼ばれるものでもよい。
【００３３】
ストレージ装置３００は、サーバ２００の処理に用いるデータを格納するための記憶装置である。例えば、サーバ２００がデータベース（ＤＢ：DataBase）サーバとして機能する場合、ストレージ装置３００には、ＤＢの本体が格納される。
【００３４】
図３は、第２の実施の形態のテープ装置のハードウェア例を示す図である。テープ装置１００は、ＭＰＵ（Micro Processing Unit）１１０、不揮発性メモリ（ＮＶＲＡＭ： Non Volatile Random Access Memory）１２０、バッファ１３０、ドライブ１４０および通信部１５０を有する。各ユニットがテープ装置１００のバスに接続されている。
【００３５】
ＭＰＵ１１０は、テープ装置１００の情報処理を制御するプロセッサである。
不揮発性メモリ１２０は、ＭＰＵ１１０が実行するファームウェアのプログラムを記憶する。また、ＭＰＵ１１０による処理に用いるデータを記憶する。
【００３６】
バッファ１３０は、サーバ２００から取得した書込み対象のデータを、一時的に格納するための記憶領域である。
ドライブ１４０は、カートリッジ４００を収納可能である。ドライブ１４０は、ＭＰＵ１１０の命令にしたがって、収納されたカートリッジ４００に対するデータの書込み／読出しを行う。ドライブ１４０は、テープ記録部１４１およびメモリ記録部１４２を有する。テープ記録部１４１は、磁気テープ４１０に対するデータの書込み／読出しを行う。メモリ記録部１４２は、ＣＭ４２０に対するデータの書込み／読出しを行う。
【００３７】
通信部１５０は、ネットワーク１０を介して、サーバ２００と通信を行う通信インタフェースである。
図４は、第２の実施の形態のサーバのハードウェア例を示す図である。サーバ２００は、ＣＰＵ（Central Processing Unit）２１０、ＲＡＭ（Random Access Memory）２２０、ＨＤＤ（Hard Disk Drive）２３０、画像信号処理部２４０、入力信号処理部２５０、出力信号処理部２６０、ディスクドライブ２７０および通信部２８０を有する。各ユニットがサーバ２００のバスに接続されている。
【００３８】
ＣＰＵ２１０は、サーバ２００の情報処理を制御するプロセッサである。ＣＰＵ２１０は、ＨＤＤ２３０に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ２２０に展開してプログラムを実行する。
【００３９】
ＲＡＭ２２０は、ＣＰＵ２１０が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。
ＨＤＤ２３０は、ＯＳ（Operating System）プログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。ＨＤＤ２３０は、ＣＰＵ２１０の命令にしたがって、内蔵の磁気ディスクに対してデータの読み書きを行う。
【００４０】
画像信号処理部２４０は、ＣＰＵ２１０の命令にしたがって、サーバ２００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４１】
入力信号処理部２５０は、サーバ２００に接続された入力デバイス１２から入力信号を取得し、ＣＰＵ２１０に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４２】
出力信号処理部２６０は、ＣＰＵ２１０の命令にしたがって、ＣＰＵ２１０から出力信号を取得し、サーバ２００に接続された出力デバイス１３に出力する。出力デバイス１３としては、例えば、プリンタを用いることができる。
【００４３】
ディスクドライブ２７０は、記録媒体１４に記録されたプログラムやデータを読み取る駆動装置である。ディスクドライブ２７０で扱う記録媒体１４としては、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）がある。ディスクドライブ２７０は、例えば、ＣＰＵ２１０の命令にしたがって、記録媒体１４から読み取ったプログラムやデータをＲＡＭ２２０またはＨＤＤ２３０に格納する。
【００４４】
通信部２８０は、ネットワーク１０を介してテープ装置１００，１００ａと通信を行う通信インタフェースである。
図５は、第２の実施の形態のソフトウェア例を示す図である。図５に示すユニットの一部または全部は、テープ装置１００およびサーバ２００が実行するプログラムのモジュールであってもよい。また、図５に示すユニットの一部または全部は、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などの電子回路であってもよい。テープ装置１００ａもテープ装置１００と同様のユニットを用いて実装できる。
【００４５】
テープ装置１００は、サーバ通信部１１１、サーバ命令処理部１１２、ドライブ通信部１１３、ドライブ命令処理部１１４およびバッファ制御部１１５を有する。
サーバ通信部１１１は、サーバ２００と通信する。サーバ通信部１１１は、サーバ２００から受信した命令をサーバ命令処理部１１２に出力する。
【００４６】
サーバ命令処理部１１２は、サーバ通信部１１１から取得した命令に応じた処理を実行する。例えば、データの書込み命令を取得した場合、サーバ命令処理部１１２は書込み対象のデータをバッファ１３０に格納し、サーバ２００に書込み済を応答する。サーバ命令処理部１１２によるバッファ１３０の操作は、バッファ制御部１１５を介して行われる。バッファ１３０に書込まれたデータは、ドライブ命令処理部１１４により、磁気テープ４１０に書込まれる。サーバ命令処理部１１２とサーバ２００との通信は、サーバ通信部１１１を介して行われる。また、例えば、磁気テープ４１０からのデータの読出し命令を受信した場合、サーバ命令処理部１１２は、磁気テープ４１０に格納されたデータをドライブ命令処理部１１４に読出させ、バッファ１３０に格納させる。サーバ命令処理部１１２は、バッファ１３０に格納されたデータをサーバ２００に応答する。このように、サーバ２００から磁気テープ４１０へのデータの書込みは、バッファ１３０を介して行われる。同様に、サーバ２００による磁気テープ４１０からのデータの読出しは、バッファ１３０を介して行われる。
【００４７】
ドライブ通信部１１３は、ドライブ１４０と通信する。また、ドライブ通信部１１３は、ドライブ１４０の状態を監視する。ドライブ通信部１１３は、磁気テープ４１０に対するデータの書込み中にテープ記録部１４１の動作で異常が発生し、書込みに失敗した場合、ドライブ命令処理部１１４にエラーを通知する。
【００４８】
ドライブ命令処理部１１４は、サーバ命令処理部１１２からのデータの書込み／読出しの指示に応じて、磁気テープ４１０に対する書込み／読出しを実行する。ドライブ命令処理部１１４は、磁気テープ４１０から読出したデータをバッファ１３０に格納する。ドライブ命令処理部１１４とドライブ１４０との通信は、ドライブ通信部１１３を介して行われる。ドライブ命令処理部１１４によるバッファ１３０の操作は、バッファ制御部１１５を介して行われる。
【００４９】
また、ドライブ命令処理部１１４は、ドライブ通信部１１３からエラーの通知を受け付けると、当該エラーをサーバ命令処理部１１２およびバッファ制御部１１５に通知する。ここで、エラーの通知を受けたサーバ命令処理部１１２は、エラーが発生した旨をサーバ２００に送信する。
【００５０】
更に、ドライブ命令処理部１１４は、バッファ制御部１１５からの指示により、ＣＭ４２０にデータを書込む。ここで、ＣＭ４２０に書込まれるデータは、障害発生時にバッファ１３０に残った未書込みのデータ（以下、未書込みデータという）である。また、ドライブ命令処理部１１４は、ＣＭ４２０に格納された未書込みデータを読出し、バッファ１３０に格納する。ドライブ命令処理部１１４は、バッファ１３０に格納された未書込みデータを磁気テープ４１０に書込む。
【００５１】
バッファ制御部１１５は、サーバ命令処理部１１２およびドライブ命令処理部１１４からの指示によりバッファ１３０に対するデータの書込み／読出しを行う。また、バッファ制御部１１５は、ドライブ命令処理部１１４からエラーの通知を受けると、バッファ１３０に格納された（書込まれた）未書込みデータをＣＭ４２０に書込むようにドライブ命令処理部１１４に指示する。
【００５２】
サーバ２００は、ＤＤＲ処理部２１１およびＤＤＲ用記憶部２２１を有する。
ＤＤＲ処理部２１１は、サーバ２００によるＤＤＲ処理を制御する。具体的には、ＤＤＲ処理部２１１は、エラーの通知とともに、未書込みデータが発生した旨をテープ装置１００から受信すると、当該未書込みデータを提供するようにテープ装置１００に指示する。ＤＤＲ処理部２１１は、テープ装置１００から取得した未書込みデータをＤＤＲ用記憶部２２１に格納する。その後、ＤＤＲ処理部２１１は、テープ装置１００に収納されたカートリッジ４００をテープ装置１００ａに移すようにオペレータに指示する。ＤＤＲ処理部２１１は、カートリッジ４００がテープ装置１００ａに移されると、テープ装置１００ａを用いて、ＤＤＲ用記憶部２２１に格納された未書込みデータを磁気テープ４１０に書込む。なお、ＤＤＲ処理部２１１は、テープ装置１００，１００ａ間でカートリッジ４００を移動させるロボットがある場合、当該ロボットにカートリッジ４００の移し替えを指示してもよい。
【００５３】
ＤＤＲ用記憶部２２１は、サーバ２００がＤＤＲの処理を行う際に、テープ装置１００のバッファ１３０に残った未書込みデータを退避させるための記憶領域である。ＤＤＲ用記憶部２２１は、ＲＡＭ２２０上の記憶領域を用いて実装できる。
【００５４】
図６は、第２の実施の形態の制御テーブルの例を示す図である。制御テーブル４２１は、ドライブ命令処理部１１４により、ＣＭ４２０に格納される。制御テーブル４２１は、書込み失敗時の磁気テープ４１０のＢＩＤ（Block IDentifier）およびＣＭ４２０に書込まれた未書込みデータ数を含む。
【００５５】
書込み失敗時のＢＩＤは、書込みに失敗した時にテープ記録部１４１が書込みを行っていた磁気テープ４１０のアドレスである。書込み失敗時のＢＩＤには、例えば、ＣＭ４２０のうち４バイトの領域が割り当てられる。
【００５６】
ＣＭ４２０に書込まれた未書込みデータ数は、ＣＭ４２０に書込まれた未書込みデータの数である。当該未書込みデータ数には、例えば、書込み失敗時のＢＩＤに割り当てられた領域の次の２バイトの領域が割り当てられる。
【００５７】
当該未書込みデータ数の領域の次の２バイトの領域は、例えば予備領域である。
制御テーブル４２１ａは、制御テーブル４２１に具体的な値を設定した場合を例示している。例えば、書込み失敗時のＢＩＤには“０ｘ０００００００２”（“０ｘ００”，“０ｘ００”，“０ｘ００”，“０ｘ０２”）という情報が設定される。これは、磁気テープ４１０の２ブロック目で書込み失敗が発生したことを示す。すなわち、当該アドレス（２ブロック目）から未書込みデータの書込みを開始すべきことを示している。また、例えば、未書込みデータ数には“０ｘ０００３”（“０ｘ００”，“０ｘ０３”）という情報が設定される。これは、ＣＭ４２０に格納された（書込み失敗時にバッファ１３０に格納されていた）未書込みデータの数が３であることを示す。
【００５８】
図７は、第２の実施の形態の未書込みデータテーブルの例を示す図である。未書込みデータテーブル４２２は、ドライブ命令処理部１１４により、ＣＭ４２０に格納される。未書込みデータテーブル４２２は、未書込みデータを格納したテーブルである。１つの未書込みデータに対して６５５３５バイトの領域が割り当てられている。
【００５９】
各領域の最初の２バイトはデータ長を設定する領域である。各領域のデータ長以外の領域が、未書込みデータの本体を格納する領域である。
例えば、データ長には最大３２７６８バイト（３２Ｋバイト（Kilobytes））を指定可能とする。データ長を３２Ｋバイトとした場合、６５５３５バイトの領域のうち、最初の２バイトに続けて３２Ｋバイト分の領域に未書込みデータの本体が格納される。余りの領域は予備の領域とする。なお、図７ではバイト数を１６進数で表している。
【００６０】
未書込みデータテーブル４２２ａは、未書込みデータテーブル４２２の先頭の領域に具体的な値を設定した場合を例示している。例えば、データ長には“０ｘ８０００”（“０ｘ８０”，“０ｘ００”）という情報が設定される。これは、データ長が３２Ｋバイトであることを示す。この場合、２バイト目から３２７７０バイト目まで（３２Ｋバイト分）に未書込みデータの本体が格納される。残りの領域（３２７７１〜６５５３５バイト）は予備の領域となる。
【００６１】
例えば、制御テーブル４２１で未書込みデータ数の最大値を６５５３５とし、未書込みデータを６５５３５個格納可能とする場合、未書込みデータテーブル４２２ａでは、６５５３５バイト×６５５３５個＝４Ｇバイトの記憶領域が利用できればよい。ＣＭ４２０として、制御テーブル４２１および未書込みデータテーブル４２２を格納できるだけの記憶領域を有するものを用いる。
【００６２】
次に、以上の構成の情報処理システムにおける磁気テープ４１０へのデータの書込みの手順を説明する。特に、データの書込み中にテープ記録部１４１で障害が発生し、書込みが失敗する場合を想定する。その場合、テープ装置１００は、失敗したデータの書込みをテープ装置１００ａで継続できるよう、未書込みデータをＣＭ４２０に格納する。テープ装置１００によるこの処理をエラー時の前処理ということとする。また、ＣＭ４２０に格納されたデータに基づいて、テープ装置１００ａが行う処理をエラー時の後処理ということとする。
【００６３】
図８は、第２の実施の形態のエラー時の前処理の例を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。なお、ステップＳ１１の直前ではドライブ１４０にカートリッジ４００が収納されているとする。
【００６４】
（ステップＳ１１）サーバ命令処理部１１２は、サーバ２００から取得したデータを、バッファ１３０に格納する（バッファリング）。ドライブ命令処理部１１４は、バッファ１３０に格納されたデータを、ドライブ１４０を用いて磁気テープ４１０に書込む。バッファ制御部１１５は、磁気テープ４１０への書込みに成功したデータをバッファ１３０から削除する。書込み中、ドライブ通信部１１３はテープ記録部１４１の状態を監視する。
【００６５】
（ステップＳ１２）ドライブ通信部１１３は、テープ記録部１４１による書込みが失敗したか否かを判定する。書込みが失敗した場合、ドライブ通信部１１３はドライブ命令処理部１１４にエラーを通知して、処理をステップＳ１３に進める。書込みが失敗していない場合、処理をステップＳ１１に進めて監視を継続する。
【００６６】
（ステップＳ１３）ドライブ命令処理部１１４は、ドライブ通信部１１３からエラーの通知を受けると、サーバ命令処理部１１２およびバッファ制御部１１５に当該エラーを通知する。ドライブ命令処理部１１４は、ドライブ通信部１１３から書込み失敗時の磁気テープのＢＩＤを取得する。ドライブ命令処理部１１４は、メモリ記録部１４２を用いて、ＣＭ４２０に記憶された制御テーブル４２１の所定の領域に当該ＢＩＤを登録する。また、ドライブ命令処理部１１４は、エラー通知に応じてバッファ制御部１１５からバッファ１３０に記憶された未書込みデータの数を取得する。すると、ドライブ命令処理部１１４は、当該未書込みデータの数を、制御テーブル４２１の所定の領域に登録する。
【００６７】
（ステップＳ１４）ドライブ命令処理部１１４は、バッファ制御部１１５を介して、バッファ１３０に記憶された未書込みデータを取得する。ドライブ命令処理部１１４は、ＣＭ４２０に記憶された未書込みデータテーブル４２２に、未書込みデータを順次格納する。ドライブ命令処理部１１４は、未書込みデータとともに、未書込みデータのデータ長も格納する。バッファ制御部１１５は、ＣＭ４２０に退避済の未書込みデータをバッファ１３０から削除する。
【００６８】
（ステップＳ１５）サーバ命令処理部１１２は、ドライブ命令処理部１１４からエラーを受け付けた後、サーバ２００から次のデータの書込み命令を受信したとき、当該データのバッファリングを行わずに、サーバ２００に書込みエラーを報告する。このとき、サーバ命令処理部１１２は、書込みエラーとともに、未書込みデータが無い旨を報告する。例えば、サーバ２００で管理する磁気テープ４１０の現在のＢＩＤ（ＣＨＮ  ＢＩＤ：Channel BID）に対し、テープ装置１００で書込みが成功しているＢＩＤ（ＤＥＶ  ＢＩＤ：Device BID）を通知することで、未書込みデータの有無をサーバ２００に通知することがある。この場合、ＣＨＮ  ＢＩＤよりもＤＥＶ  ＢＩＤが小さければ未書込みデータ有りである。未書込みデータ有りならば、ＤＤＲ処理部２１１は、ＣＨＮ  ＢＩＤとＤＥＶ  ＢＩＤとの差分のアドレス範囲に対応するデータを、テープ装置１００から取得する。一方、ＣＨＮ  ＢＩＤとＤＥＶ  ＢＩＤとが一致すれば未書込みデータ無しである。例えばステップＳ１５では、未書込みデータ無しに見せかけるため、サーバ命令処理部１１２は、ＣＨＮ  ＢＩＤと一致するＤＥＶ  ＢＩＤをサーバ２００に報告する。
【００６９】
（ステップＳ１６）ＤＤＲ処理部２１１は、テープ装置１００から書込みエラーの報告を受けると、テープ装置１００に対して再マウント要求を送信する。また、ＤＤＲ処理部２１１は、オペレータにカートリッジ４００をテープ装置１００ａに移すよう指示する。なお、ＤＤＲのために何れのテープ装置に移せばよいかは、ＤＤＲ処理部２１１に予め設定される。
【００７０】
ここで、ＤＤＲ処理部２１１は、ステップＳ１５で未書込みデータ無しの報告をテープ装置１００から受けている。よって、本処理ではＤＤＲ処理部２１１は、テープ装置１００から未書込みデータの取得を行わない。
【００７１】
次に、図８で説明した各ステップにおける、バッファ１３０、磁気テープ４１０およびＣＭ４２０の状態を具体的に説明する。
図９は、第２の実施の形態のエラー時の前処理の具体例を示す図である。各バッファの状態は、図８で説明した各ステップに対応している。サーバ２００のデータを磁気テープ４１０に書込む際、サーバ２００から所定量のデータを予め取得してバッファリングする。ここでは一例として、４つの書込み命令（ＷＲＩＴＥ）をバッファリングの１単位とする。すなわち、４つの書込み命令とともに取得したデータをバッファリングすると、磁気テープ４１０への書込みを実行する。まず、テープ装置１００は、４つの書込み命令を順次受け付ける。すると、テープ装置１００は、各書込み命令とともに受信した４つの未書込みデータＷＲ１，ＷＲ２，ＷＲ３，ＷＲ４をバッファ１３０に格納する（ステップＳ１１）。なお、テープ装置１００は、各未書込みデータをバッファリングした時点で、サーバ２００に書込み成功を応答する。サーバ２００への応答を早めるためである。
【００７２】
次に、テープ装置１００は、バッファ１３０に格納された未書込みデータＷＲ１，ＷＲ２，ＷＲ３，ＷＲ４を、磁気テープ４１０に順次書込む。テープ装置１００は、未書込みデータＷＲ１の書込みに成功したとする。テープ装置１００は、未書込みデータＷＲ１をバッファ１３０から削除する。テープ装置１００は、テープ記録部１４１の障害により、未書込みデータＷＲ２の書込みに失敗したとする（ステップＳ１２）。
【００７３】
すると、テープ装置１００は、書込み失敗時のＢＩＤをＣＭ４２０の制御テーブル４２１に登録する。ここでは、書込み失敗時のＢＩＤ＝２（未書込みデータＷＲ２を書込むべきアドレスに対応する）を例示している。また、テープ装置１００は、バッファ１３０に格納された未書込みデータＷＲ２，ＷＲ３，ＷＲ４をＣＭ４２０の未書込みデータテーブル４２２に順次書込む（未書込みデータの退避）。テープ装置１００は、退避が完了した未書込みデータをバッファ１３０から削除する（ステップＳ１３〜Ｓ１４）。
【００７４】
図１０は、第２の実施の形態のエラー時の前処理の具体例（続き）を示す図である。テープ装置１００は、サーバ２００から５番目の書込み命令（未書込みデータＷＲ５の書込みを要求するもの）を受信する。テープ装置１００は、当該書込み命令に対して、書込みエラーを報告する。このとき、テープ装置１００は、書込みエラーとともに未書込みデータがバッファ１３０に無いことを報告する。具体的には、未書込みデータＷＲ５を書込むブロックのＢＩＤが、例えば“５”であるとする。この場合、サーバ２００が管理するＣＨＮ  ＢＩＤ＝５である。よって、テープ装置１００は、ＤＥＶ  ＢＩＤ＝ＣＨＮ  ＢＩＤ＝５をサーバ２００に報告する（サーバ２００がテープ装置１００ａを用いてデータの書込みを再開すべきアドレスに対応する）。これにより、サーバ２００に対し、未書込みデータ無しに見せかける。
【００７５】
サーバ２００は、当該報告によりテープ装置１００における未書込みデータＷＲ５の書込み失敗を検出するが、未書込みデータＷＲ２，ＷＲ３，ＷＲ４の書込み失敗は検出しない。このため、サーバ２００は、別のテープ装置１００ａを用いて、今回要求した未書込みデータＷＲ５の書込みから再開すればよいと判断する。したがって、サーバ２００は、テープ装置１００から未書込みデータＷＲ２，ＷＲ３，ＷＲ４の取得を行わない。そして、サーバ２００は、カートリッジ４００のテープ装置１００ａへの再マウントをテープ装置１００に要求する。また、サーバ２００は、オペレータに対し、カートリッジ４００をテープ装置１００ａに移すように指示する（ステップＳ１５〜Ｓ１６）。
【００７６】
次に、テープ装置１００ａによるエラー時の後処理を説明する。ここで、テープ装置１００ａは上述のようにテープ装置１００と同様の機能を有している。以下では、テープ装置１００ａの各構成をテープ装置１００の各構成と同一の名称で指し示すものとする。
【００７７】
図１１は、第２の実施の形態のエラー時の後処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
（ステップＳ２１）オペレータにより、テープ装置１００ａのドライブにカートリッジ４００が移される。すると、テープ装置１００ａは、カートリッジ４００のマウント処理を行う。以下、“テープ装置１００ａ”の記載を省略するが、処理の主体となる各部はテープ装置１００ａに含まれる。
【００７８】
（ステップＳ２２）ドライブ命令処理部は、ＣＭ４２０に未書込みデータが有るか否かを判定する。有る場合、処理をステップＳ２３に進める。無い場合、処理をステップＳ２６に進める。例えば、ドライブ命令処理部は、ＣＭ４２０に記憶された制御テーブル４２１の未書込みデータ数により、未書込みデータの有無を判断できる。未書込みデータ数が１以上であれば、未書込みデータ有りである。未書込みデータ数が０であれば、未書込みデータ無しである。
【００７９】
（ステップＳ２３）ドライブ命令処理部は、ＣＭ４２０の未書込みデータテーブル４２２から未書込みデータを読み出して、バッファにコピーする。
（ステップＳ２４）ドライブ命令処理部は、制御テーブル４２１の書込み失敗時のＢＩＤを参照し、磁気テープ４１０の書込みブロック位置を変更するようテープ記録部を制御する。
【００８０】
（ステップＳ２５）ドライブ命令処理部は、バッファに格納された未書込みデータを磁気テープ４１０の当該ブロック位置から書込む。バッファ制御部は、磁気テープ４１０への書込みが完了した未書込みデータをバッファおよびＣＭ４２０から削除する。そして、処理を終了する。
【００８１】
（ステップＳ２６）ドライブ命令処理部は、未書込みデータが無い旨をサーバ命令処理部に通知する。すると、サーバ命令処理部は、サーバ２００にＮＲＴＲ（Not Ready To Ready）を報告する。ＮＲＴＲの報告は、磁気テープ４１０へのデータの書込みを再開する準備が整ったことをサーバ２００に通知するための報告である。
【００８２】
（ステップＳ２７）サーバ命令処理部は、磁気テープ４１０のブロック位置の変更命令をサーバ２００から受信する。サーバ命令処理部は、ドライブ命令処理部に当該命令を通知する。ドライブ命令処理部は、磁気テープ４１０の書込みブロック位置を指定されたブロック位置に変更するようテープ記録部を制御する。
【００８３】
（ステップＳ２８）サーバ命令処理部は、サーバ２００から書込み対象のデータを受信してバッファリングする。ドライブ命令処理部は、当該ブロック位置からの通常のデータ書込みを再開する。
【００８４】
このようにして、ＣＭ４２０に退避された未書込みデータがテープ装置１００ａによって、磁気テープ４１０に追記される。
次に、図１１で説明した各ステップ（ただし、ＣＭ４２０に未書込みデータが有る場合のみ）における、テープ装置１００ａのバッファ、磁気テープ４１０およびＣＭ４２０の状態を具体的に説明する。なお、以下ではテープ装置１００ａのバッファを便宜的にバッファ１３０ａと表記する。また、カートリッジ４００がテープ装置１００ａに移されたときの磁気テープ４１０およびＣＭ４２０の状態は、図１０の状態と同一とする。
【００８５】
図１２は、第２の実施の形態のエラー時の後処理の具体例を示す図である。テープ装置１００ａは、ＣＭ４２０に未書込みデータＷＲ２，ＷＲ３，ＷＲ４があることを検出する。すると、テープ装置１００ａは、ＣＭ４２０に格納された未書込みデータＷＲ２，ＷＲ３，ＷＲ４をバッファ１３０ａにコピーする（ステップＳ２３）。
【００８６】
テープ装置１００ａは、ＣＭ４２０の制御テーブル４２１を参照して、書込み失敗時のＢＩＤを取得する。ここでは、ＢＩＤ＝２である。テープ装置１００ａは、磁気テープ４１０の書込みブロック位置を“２”に変更する。テープ装置１００ａは、バッファ１３０ａに格納された未書込みデータＷＲ２，ＷＲ３，ＷＲ４を変更後のブロック位置から順次追記する（ステップＳ２４〜Ｓ２５）。テープ装置１００ａは、磁気テープ４１０への書込みが完了した未書込みデータをバッファおよびＣＭ４２０から削除する。
【００８７】
テープ装置１００ａは、全ての未書込みデータを磁気テープ４１０に書込むと、サーバ２００にＮＲＴＲを報告して通常の書込みを再開する。次に、その手順を説明する。
図１３は、第２の実施の形態の書込み再開処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【００８８】
（ステップＳ３１）ドライブ命令処理部は、ＣＭ４２０に格納された未書込みデータの、磁気テープ４１０への書込みが全て正常に終了したか否かを判定する。正常に終了している場合、処理をステップＳ３２に進める。正常に終了していない場合、処理をステップＳ３５に進める。
【００８９】
（ステップＳ３２）ドライブ命令処理部は、サーバ命令処理部に正常終了を通知する。サーバ命令処理部は、サーバ２００にＮＲＴＲを報告する。
（ステップＳ３３）サーバ命令処理部は、磁気テープ４１０のブロック位置の変更命令をサーバ２００から受信する。サーバ命令処理部は、当該命令に対する処理（ブロック位置の変更）を行わずに、ブロック位置の変更が完了したことをサーバ２００に応答する。ここで、ブロック位置の変更を行わずに済むのは、図１１のステップＳ２５を終えた段階で、サーバ２００が指定するブロック位置へ移動済だからである。具体的には、図１２の例でいえば、バッファ１３０ａに格納された未書込みデータＷＲ４（ＢＩＤ“４”に対応するブロック位置に書込まれる）の磁気テープ４１０への書込みが完了すると、磁気テープ４１０の次の記録開始点はＢＩＤ“５”となっている。これに対し、サーバ２００は、図１０で説明したように、書込み失敗時のＢＩＤを“５”と認識している。したがって、サーバ２００は、ＢＩＤ“５”のブロック位置へ変更するようテープ装置１００ａに対する変更命令を発行することになる。よって、テープ装置１００ａは、当該命令に対してブロック位置の変更を行わなくてよい。
【００９０】
（ステップＳ３４）サーバ命令処理部は、サーバ２００から書込み対象のデータを受信してバッファリングする。ドライブ命令処理部は、当該ブロック位置からの通常のデータ書込みを再開する。そして、処理を終了する。以降、テープ装置１００ａでも書込みの監視を行う（図８のステップＳ１１，Ｓ１２に対応）。
【００９１】
（ステップＳ３５）ドライブ命令処理部は、サーバ命令処理部にエラーを通知する。サーバ命令処理部は、サーバ２００に報告するためのエラーを生成する。
（ステップＳ３６）ドライブ命令処理部は、サーバ２００にＮＲＴＲを報告する。
【００９２】
（ステップＳ３７）サーバ命令処理部は、磁気テープ４１０のブロック位置の変更命令をサーバ２００から受信する。
（ステップＳ３８）サーバ命令処理部は、ブロック位置の変更命令に対し、ステップＳ３５で生成したエラーをサーバ２００に応答する。
【００９３】
このようにして、テープ装置１００ａは、ＣＭ４２０からの未書込みデータの書込みを完了すると、磁気テープ４１０に対する通常のデータ書込みを再開する。
なお、ステップＳ３８の後、サーバ２００は、テープ装置１００ａに対して再マウント要求を行い、オペレータに対して別のテープ装置にカートリッジ４００を移すよう指示する。別のテープ装置にカートリッジ４００が再度マウントされれば、当該別のテープ装置が図１１，１３で説明したテープ装置１００ａと同様の処理を行う。これにより、ＣＭ４２０に格納した未書込みデータを確実に磁気テープ４１０に書込める。
【００９４】
次に、サーバ２００のＤＤＲ用記憶部２２１にデータを退避させる場合を例示して、上述の処理と比較する。
図１４は、書込みエラー時の処理の比較例を示す図である。図１４では、ＣＭ４２０を用いずに、サーバ２００に設けられたＤＤＲ用記憶部２２１を用いてＤＤＲ処理を行う場合を例示している。このような処理が行われるのは、例えば、ＣＭ４２０を備えていないカートリッジの磁気テープ４１０にデータを書込む場合である。
【００９５】
まず、テープ装置１００は、サーバ２００から受信した未書込みデータＷＲ１，ＷＲ２，ＷＲ３，ＷＲ４をバッファ１３０に格納する（ステップＳＴ１）。
次に、テープ装置１００は、バッファ１３０に格納した未書込みデータを磁気テープ４１０に順次書込む。未書込みデータＷＲ１の書込みに成功したとする。そして、未書込みデータＷＲ２の書込みに失敗したとする（ステップＳＴ２）。
【００９６】
テープ装置１００は、書込み失敗のエラーをサーバ２００に報告する。テープ装置１００は、当該エラーとともに、書込み失敗時のＢＩＤ“２”をサーバ２００に報告する。すると、サーバ２００は、当該ＢＩＤ“２”に対応する未書込みデータＷＲ２以降の未書込みデータを送信するようテープ装置１００に指示する。テープ装置１００は、指示された未書込みデータをサーバ２００に順次送信する。サーバ２００は、テープ装置１００から受信した未書込みデータをＤＤＲ用記憶部２２１に格納して保持する。しかし、ＤＤＲ用記憶部２２１として確保された記憶領域のサイズが未書込みデータＷＲ２，ＷＲ３，ＷＲ４の合計サイズに比べて小さいことがある。この場合、例えば、未書込みデータＷＲ２，ＷＲ３は退避できたが、未書込みデータＷＲ４は退避できないという事態が発生し得る（ステップＳＴ３）。退避できていない未書込みデータが存在すると、サーバ２００によるＤＤＲの続行が困難になる。
【００９７】
特に、ＤＤＲ用記憶部２２１は、ＲＡＭ２２０のうちの所定の記憶領域を用いて実現される。その場合、ＤＤＲ用記憶部２２１のサイズが固定値（例えば、１Ｇバイト程度）で割り当てられることがある。そこで、ＤＤＲ用記憶部２２１のサイズを大きくするよう変更することが考えられる。しかしながら、ＲＡＭ２２０の記憶領域は、他のデバイス（例えば、入力デバイス１２や出力デバイス１３など）に対しても固定的に割り当てられていることがある。このため、ＤＤＲ用記憶部２２１のサイズを大きくすると、他のデバイスに割り当てた領域に影響を及ぼしてしまい、当該サイズの拡大が難しい場合がある。また、サーバ２００が稼働中であると、当該サイズの拡大のための作業を行うこと自体が難しい。
【００９８】
一方で、例えば、新しい世代のＬＴＯのように、磁気テープ４１０で利用可能な記憶領域のサイズおよび記録速度は年々増加している。このため、テープ装置１００側でバッファリングするデータ量も増加しており、ＤＤＲ用記憶部２２１のサイズとバッファリングするデータ量との格差が大きくなる可能性が高まっている。特に、既存のサーバに対して、テープ装置を新たに導入する場合に、当該格差が発生する可能性が高い。
【００９９】
そこで、カートリッジ４００にＣＭ４２０を設けて、ＣＭ４２０を退避用の領域として利用することが考えられる。このようにすれば、未書込みデータを退避させる記憶領域を容易に拡張可能となるからである。ところが、その場合、サーバ２００による既存のＤＤＲの一連の処理に対し、ＣＭ４２０を用いた未書込みデータ退避／書込みの処理をどのように組み込むかが問題となる。例えば、ＤＤＲの処理を作り変えるとすると、そのための作業コストが問題となる。また、サーバ２００が稼働中の場合には、ＤＤＲの処理を変更するための作業を行うことが難しい。
【０１００】
これに対し、第２の実施の形態のテープ装置１００では、データの書込みに失敗した場合、バッファ１３０内に未書込みデータが残っていても、未書込みデータが無い旨を示すダミーの情報をサーバ２００に送信する。これにより、サーバ２００に対し未書込みデータが無いように見せかける。そうすれば、サーバ２００に未書込みデータを取得されずに済む。そして、テープ装置１００は、サーバ２００に未書込みデータを退避させる代わりに、ＣＭ４２０に未書込みデータを退避させる。
【０１０１】
更に、テープ装置１００ａは、ＣＭ４２０に格納された未書込みデータを磁気テープ４１０に書込んだ後に、サーバ２００にＮＲＴＲを報告する。このため、サーバ２００は、自身が認識している次のデータから書込み再開すればよい。
【０１０２】
このように、テープ装置１００，１００ａは、サーバ２００の既存のＤＤＲの処理に影響を与えずに、ＣＭ４２０に未書込みデータを退避させ、退避させた未書込みデータを磁気テープ４１０に書込める。このため、ＣＭ４２０を用いた退避領域のサイズの拡張を、サーバ２００の既存のＤＤＲの処理を作り変える場合に比べて、低コストで行えるようになる。
【０１０３】
［第３の実施の形態］
以下、第３の実施の形態を説明する。前述の第２の実施の形態との相違点を主に説明し、同様の事項の説明を省略する。
【０１０４】
第２の実施の形態では、ＣＭ４２０に全ての未書込みデータを格納する場合を例示した。一方、ＣＭ４２０に加えて、サーバ２００のＤＤＲ用記憶部２２１を利用可能としてもよい。両方の記憶領域を利用すれば、より大きな記憶領域を退避領域として利用可能となるからである。そこで、第３の実施の形態では、ＣＭ４２０に加えて、ＤＤＲ用記憶部２２１を利用可能とする機能を提供する。
【０１０５】
ここで、第３の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様である。第３の実施の形態の情報処理システムに含まれる各装置を第２の実施の形態と同一の名称・符号を用いて示す。当該各装置のハードウェア例およびソフトウェア例は、図３〜５で説明した第２の実施の形態の各装置のハードウェア例およびソフトウェア例と同様である。第３の実施の形態の各装置の構成を第２の実施の形態と同一の名称・符号を用いて示す。
【０１０６】
第３の実施の形態のテープ装置１００，１００ａでは、第２の実施の形態で説明したエラー時の前処理、エラー時の後処理および書込み再開処理のうち、エラー時の前処理および書込み再開処理の一部が異なる。そこで、以下では、第３の実施の形態のエラー時の前処理および書込み再開処理の手順を説明する。
【０１０７】
図１５は、第３の実施の形態のエラー時の前処理の例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。ここで、ステップＳ１１〜Ｓ１４，Ｓ１５，Ｓ１６は、図８の同一符号のステップと同様である。ただし、ステップＳ１４からステップＳ１４ａへ進む点およびステップＳ１４ａからステップＳ１５またはステップＳ１５ａに分岐する点が異なる。以下では、当該差分のステップを説明し、その他のステップの説明を省略する。
【０１０８】
（ステップＳ１４ａ）ドライブ命令処理部１１４は、ＣＭ４２０の容量を超過せずに未書込みデータのＣＭ４２０へのコピーを完了できたか否かを判定する。完了できた場合、処理をステップＳ１５に進める。ＣＭ４２０の容量を超過してしまい、未書込みデータのＣＭ４２０へのコピーを完了できなかった場合、処理をステップＳ１５ａに進める。
【０１０９】
（ステップＳ１５ａ）ドライブ命令処理部１１４は、ＣＭ４２０に書込めなかった分の未書込みデータ（以下、残りデータという）に対応するＢＩＤや残りデータ全体のデータ量を取得する。ドライブ命令処理部１１４は、サーバ命令処理部１１２に当該ＢＩＤやデータ量を通知する。
【０１１０】
（ステップＳ１５ｂ）サーバ命令処理部１１２は、ドライブ命令処理部１１４から当該ＢＩＤなどの情報を受け付ける。サーバ命令処理部１１２は、サーバ２００から次にデータの書込み命令を受信したとき、当該データのバッファリングを行わずに、サーバ２００に書込みエラーを報告する。このとき、サーバ命令処理部１１２は、書込みエラーとともに、未書込みデータ有りを報告する。ただし、未書込みデータとして、ＣＭ４２０に書込めなかった残りデータを報告する。具体的には、ドライブ命令処理部１１４から取得した（残りデータの先頭の）ＢＩＤである。また、サーバ命令処理部１１２は、残りデータのデータ量もサーバ２００に報告する。
【０１１１】
（ステップＳ１５ｃ）サーバ命令処理部１１２は、残りデータの送信指示をサーバ２００から受信する。サーバ命令処理部１１２は、バッファ１３０から残りデータを取得してサーバ２００に送信する。そして、処理をステップＳ１６に進める。
【０１１２】
このようにして、サーバ命令処理部１１２は、ＣＭ４２０に退避済の未書込みデータを除いた残りデータについて書込みを行えなかったかのように、サーバ２００に対して見せかける。この場合、サーバ２００は、残りデータのみをＤＤＲ用記憶部２２１に退避させると判断する。
【０１１３】
その後、カートリッジ４００がテープ装置１００ａに移されると、テープ装置１００ａは、ＣＭ４２０に記憶された未書込みデータを磁気テープ４１０に書込む（図１１で説明したエラー時の後処理）。
【０１１４】
図１６は、第３の実施の形態の書込み再開処理の例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。ここで、ステップＳ３１，Ｓ３２およびステップＳ３４〜Ｓ３８は、図１３の同一符号のステップと同様である。ただし、ステップＳ３２，Ｓ３４の間にステップＳ３３ａ，Ｓ３３ｂを実行する点が異なる。以下では、当該差分のステップＳ３３ａ，Ｓ３３ｂを説明し、その他のステップの説明を省略する。
【０１１５】
（ステップＳ３３ａ）サーバ命令処理部は、磁気テープ４１０のブロック位置の変更命令をサーバ２００から受信する。ここで、本ステップＳ３３ａでは、サーバ２００はステップＳ１５ｂでテープ装置１００から報告を受けたＢＩＤ（ブロック位置）をテープ装置１００ａに指定する点が図１３のステップＳ３３と異なる。サーバ命令処理部は、当該命令に対する処理（ブロック位置の変更）を行わずにブロック位置の変更が完了したことをサーバ２００に応答する。
【０１１６】
（ステップＳ３３ｂ）サーバ命令処理部は、サーバ２００のＤＤＲ用記憶部２２１に退避した残りデータを、サーバ２００から受信する。サーバ命令処理部は、受信した残りデータをバッファリングする。ドライブ命令処理部は、サーバ２００から指定されたブロック位置からの残りデータの書込みを行う。そして、処理をステップＳ３４に進める。ステップＳ３４では、残りデータの書込み後のブロック位置から、通常のデータ書込みを再開する。
【０１１７】
このようにして、サーバ２００のＤＤＲ用記憶部２２１に退避された残りデータがテープ装置１００ａによって、磁気テープ４１０に追記される。テープ装置１００ａは、当該残りデータの書込みを完了すると、磁気テープ４１０に対する通常のデータ書込みを再開する。これにより、ＣＭ４２０に加え、ＤＤＲ用記憶部２２１をも退避用の領域として利用可能となる。
【０１１８】
［第４の実施の形態］
以下、第４の実施の形態を説明する。前述の第２，第３の実施の形態との相違点を主に説明し、同様の事項の説明を省略する。
【０１１９】
第２，第３の実施の形態では、テープ装置１００，１００ａは未書込みデータの有無について、サーバ２００に対しダミーの報告を行うことで、未書込みデータの全部をサーバ２００に取得させないようにした。一方、未書込みデータが有る旨をサーバ２００に対して報告した上で、未書込みデータの代わりに、未書込みデータに比べてサイズの小さなダミーのデータをサーバ２００に送るようにしてもよい。第４の実施の形態では、このように未書込みデータの代わりにダミーのデータをサーバ２００に送る機能を提供する。
【０１２０】
ここで、第４の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様である。第４の実施の形態の情報処理システムに含まれる各装置を第２の実施の形態と同一の名称・符号を用いて示す。当該各装置のハードウェア例およびソフトウェア例は、図３〜５で説明した第２の実施の形態の各装置のハードウェア例およびソフトウェア例と同様である。第４の実施の形態の各装置の構成を第２の実施の形態と同一の名称・符号を用いて示す。
【０１２１】
第４の実施の形態のテープ装置１００，１００ａでは、第２の実施の形態で説明したエラー時の前処理、エラー時の後処理および書込み再開処理のうち、エラー時の前処理および書込み再開処理の一部が異なる。そこで、以下では、第４の実施の形態のエラー時の前処理および書込み再開処理の手順を説明する。
【０１２２】
図１７は、第４の実施の形態のエラー時の前処理の例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。ここで、ステップＳ１１〜Ｓ１４，Ｓ１６は、図８の同一符号のステップと同様である。ただし、ステップＳ１４，Ｓ１６の間にステップＳ１５ｄ，Ｓ１５ｅを実行する点が異なる。以下では、当該差分のステップＳ１５ｄ，Ｓ１５ｅを説明し、その他のステップの説明を省略する。
【０１２３】
（ステップＳ１５ｄ）サーバ命令処理部１１２は、ドライブ命令処理部１１４からエラーを受け付けた後、サーバ２００から次のデータの書込み命令を受信した時、当該データのバッファリングを行わずに、サーバ２００に書込みエラーを報告する。このとき、サーバ命令処理部１１２は、エラーとともに未書込みデータ有りを報告する。具体的には、図９，１０の例でいえば、未書込みデータＷＲ２で書込みに失敗した場合、当該未書込みデータＷＲ２に対応するＢＩＤ“２”をサーバ２００に応答する。すると、サーバ２００は、ＢＩＤ“２”で示されるブロック位置から、未書込みデータを追記すればよいと判断する。
【０１２４】
（ステップＳ１５ｅ）サーバ命令処理部１１２は、バッファ１３０に格納された未書込みデータの送信指示をサーバ２００から受信する。サーバ命令処理部１１２は、未書込みデータをサーバ２００に送信する代わりに、未書込みデータのサイズよりも小さなダミーデータをサーバ２００に送信する。そして、処理をステップＳ１６に進める。
【０１２５】
このようにして、テープ装置１００は、未書込みデータをＣＭ４２０に格納した後、サーバ２００から未書込みデータの送信指示を受けると、ダミーデータをサーバ２００に応答する。その後、カートリッジ４００がテープ装置１００ａに移されると、テープ装置１００ａは、ＣＭ４２０に記憶された未書込みデータを磁気テープ４１０に書込む（図１１で説明したエラー時の後処理）。
【０１２６】
図１８は、第４の実施の形態の書込み再開処理の例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。ここで、ステップＳ３１，Ｓ３２およびステップＳ３４〜Ｓ３８は、図１３の同一符号のステップと同様である。ただし、ステップＳ３２，Ｓ３４の間にステップＳ３３ｃ，Ｓ３３ｄを実行する点が異なる。以下では、当該差分のステップＳ３３ｃ，Ｓ３３ｄを説明し、その他のステップの説明を省略する。
【０１２７】
（ステップＳ３３ｃ）サーバ命令処理部は、磁気テープ４１０のブロック位置の変更命令をサーバ２００から受信する。ここで、本ステップＳ３３ｃでは、サーバ２００はステップＳ１５ｄでテープ装置１００から報告を受けたＢＩＤ（ブロック位置）をテープ装置１００ａに指定する点が図１３のステップＳ３３と異なる。サーバ命令処理部は、当該命令に対する処理（ブロック位置の変更）を行わずにブロック位置の変更が完了したことをサーバ２００に応答する。
【０１２８】
（ステップＳ３３ｄ）サーバ命令処理部は、サーバ２００から書込み命令とともにダミーデータを受信する。サーバ命令処理部は、受信したダミーデータを破棄する。サーバ命令処理部は、当該書込み命令に対する書込みを完了した旨をサーバ２００に応答する。そして、処理をステップＳ３４に進める。
【０１２９】
このように、テープ装置１００ａは、サーバ２００から書込み命令とともにダミーデータを受信したとしても、当該ダミーデータを破棄する。そして、テープ装置１００ａは、書込み処理を行わずに書込み完了をサーバ２００に応答する。このような方法によっても、サーバ２００の既存のＤＤＲ処理を変更せずに、ＣＭ４２０をデータ退避用の記憶領域として利用できる。このため、データ退避用の記憶領域を低コストで拡張できるようになる。
【０１３０】
［第５の実施の形態］
以下、第５の実施の形態を説明する。前述の第２〜第４の実施の形態との相違点を主に説明し、同様の事項の説明を省略する。
【０１３１】
第２〜第４の実施の形態では、未書込みデータが発生した場合に、テープ装置１００，１００ａを用いて、書込みを継続する場合を例示した。これに対し、１台のテープ装置に複数のドライブが存在する場合には、当該テープ装置内でカートリッジ４００を収納するドライブを変更して、書込みを継続してもよい。そこで、第５の実施の形態では、そのためのテープ装置を提供する。
【０１３２】
ここで、第５の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様である。ただし、第５の実施の形態では、テープ装置１００に代えて、テープ装置１００ｂを設ける点が異なる。第５の実施の形態の情報処理システムに含まれる各装置（テープ装置１００ｂ以外）を第２の実施の形態と同一の名称・符号を用いて示す。
【０１３３】
図１９は、第５の実施の形態のテープ装置のハードウェア例を示す図である。テープ装置１００ｂは、ＭＰＵ１１０、不揮発性メモリ１２０、バッファ１３０、ドライブ１４０，１４０ａおよび通信部１５０を有する。各ユニットがテープ装置１００のバスに接続されている。ここで、ＭＰＵ１１０、不揮発性メモリ１２０、バッファ１３０、ドライブ１４０および通信部１５０は、図３で説明したテープ装置１００の各構成と同様であるため説明を省略する。
【０１３４】
ドライブ１４０ａは、カートリッジ４００を収納可能である。ドライブ１４０ａは、ＭＰＵ１１０の命令にしたがって、収納されたカートリッジ４００に対するデータの書込み／読出しを行う。ドライブ１４０ａは、ドライブ１４０と同様にテープ記録部およびメモリ記録部を有する。テープ記録部は、磁気テープ４１０に対するデータの書込み／読出しを行う。メモリ記録部は、ＣＭ４２０に対するデータの書込み／読出しを行う。
【０１３５】
また、テープ装置１００ｂのソフトウェア例は、図５で説明したテープ装置１００のソフトウェア例と同様である。ただし、テープ装置１００ｂでは、ドライブ通信部１１３がドライブ１４０，１４０ａの両方と通信可能な点が異なる。ＭＰＵ１１０は、ドライブ１４０，１４０ａの何れかを用いて、磁気テープ４１０に対するデータの書込みを行える。
【０１３６】
第５の実施の形態では、例えば、テープ記録部１４１の障害によりドライブ１４０での磁気テープ４１０への書込みに失敗すると、メモリ記録部１４２はバッファ１３０に記憶された未書込みデータや書込み失敗時のＢＩＤなどの情報をＣＭ４２０に退避させる。そして、カートリッジ４００がドライブ１４０ａに移されると、ドライブ１４０ａは、ＣＭ４２０に退避された未書込みデータを、磁気テープ４１０に追記する。
【０１３７】
このように、複数のドライブを有するテープ装置１００ｂにおいても、ＣＭ４２０への未書込みデータの退避、および、ＣＭ４２０に退避された未書込みデータの磁気テープ４１０への書込みを行うことができる。テープ装置１００ｂは、前述の第２〜第４の実施の形態と同様に、ＣＭ４２０に未書込みデータを退避する際、サーバ２００にダミーの情報を送信することで、サーバ２００に未書込みデータを取得されないようにする。なお、“未書込みデータを取得されないようにする”とは、未書込みデータの少なくとも一部を取得されないようにすることを含む。これによって、サーバ２００に退避するデータ量を軽減できる。また、サーバ２００による既存のＤＤＲの処理を変更せずに済み、ＣＭ４２０を用いて、退避領域を低コストで拡張できるようになる。
【符号の説明】
【０１３８】
１，２  書込み装置
１ａ，２ａ  書込み部
３  情報処理装置
４  カートリッジ
４ａ  記録媒体
４ｂ  記憶部
【図１】
0005786739.tif 000002
【図２】
0005786739.tif 000003
【図３】
0005786739.tif 000004
【図４】
0005786739.tif 000005
【図５】
0005786739.tif 000006
【図６】
0005786739.tif 000007
【図７】
0005786739.tif 000008
【図８】
0005786739.tif 000009
【図９】
0005786739.tif 000010
【図１０】
0005786739.tif 000011
【図１１】
0005786739.tif 000012
【図１２】
0005786739.tif 000013
【図１３】
0005786739.tif 000014
【図１４】
0005786739.tif 000015
【図１５】
0005786739.tif 000016
【図１６】
0005786739.tif 000017
【図１７】
0005786739.tif 000018
【図１８】
0005786739.tif 000019
【図１９】
0005786739.tif 000020