(57)【要約】【課題】磁気テープへの書き込み処理全体にかかる時間を短縮する。【解決手段】書き込み制御部１２は、複数のデータのそれぞれの書き込みを要求するデータ書き込み要求をテープドライブ２に送信する際に、バッファメモリ２２の残量が所定のしきい値より大きい場合には、書き込み対象のデータをバッファメモリ２２に格納させ、当該データを磁気テープ２１に書き込まずに書き込み完了を通知させる第１の書き込みモードでデータ書き込み要求を送信する。一方、バッファメモリ２２の残量がしきい値以下である場合には、バッファメモリ２２に格納されたデータと書き込み対象のデータとを磁気テープ２１に書き込ませる第２の書き込みモードでデータ書き込み要求を送信する。【選択図】図１
2016071766.tif 000002
【特許請求の範囲】
【請求項１】
磁気テープに対する複数のデータの書き込みをテープドライブに要求する情報処理装置において、
前記テープドライブが備えるバッファメモリの残量を検出する残量検出部と、
前記複数のデータのそれぞれの書き込みを要求するデータ書き込み要求を前記テープドライブに送信する際に、前記残量が所定のしきい値より大きい場合には、書き込み対象のデータを前記バッファメモリに格納させ、当該データを前記磁気テープに書き込まずに書き込み完了を通知させる第１の書き込みモードで前記データ書き込み要求を送信し、前記残量が前記しきい値以下である場合には、前記バッファメモリに格納されたデータと前記書き込み対象のデータとを前記磁気テープに書き込ませる第２の書き込みモードで前記データ書き込み要求を送信する書き込み制御部と、
を有する情報処理装置。
【請求項２】
前記複数のデータのそれぞれは、複数のファイルを一定サイズに分割して得られる分割データであり、
前記書き込み制御部は、前記複数のファイルに対応する分割データのうち最後の分割データの前記データ書き込み要求を送信した後、前記磁気テープ上の有効データの記憶領域の終端を示す識別子の書き込みを要求する第１識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信する、
請求項１記載の情報処理装置。
【請求項３】
前記書き込み制御部は、前記複数のファイルのうちの１つのファイルに対応するすべての分割データの前記データ書き込み要求を送信した後、前記残量が前記しきい値より大きい場合には、前記磁気テープ上のファイル記憶領域の終端を示す識別子の書き込みを要求する第２識別子書き込み要求を前記第１の書き込みモードで前記テープドライブに送信し、前記残量が前記しきい値以下である場合には、前記第２識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信する、請求項２記載の情報処理装置。
【請求項４】
前記書き込み制御部は、
前記データ書き込み要求または前記第２識別子書き込み要求を前記テープドライブに送信するたびに、前記磁気テープにおける書き込み先ブロックのブロック番号を示す第１のカウント値をカウントアップするとともに、前記第２識別子書き込み要求を前記テープドライブに送信するたびに、第２のカウント値をカウントアップし、前記第１のカウント値と前記第２のカウント値とを対応付けて管理情報に登録し、
前記第２の書き込みモードで前記データ書き込み要求、前記第１識別子書き込み要求または前記第２識別子書き込み要求のいずれかを送信したときに前記テープドライブから書き込みエラーが通知された場合、前記書き込みエラーが発生したブロックのブロック番号を前記テープドライブから取得し、前記管理情報から当該ブロック番号と同じ前記第１のカウント値に対応付けられた前記第２のカウント値を取得し、当該第２のカウント値に基づいて前記複数のファイルの中から前記磁気テープの書き込みに成功したファイルを特定する、
請求項３記載の情報処理装置。
【請求項５】
前記複数のファイルのそれぞれの前記磁気テープへの書き込みがファイルごとに第２の制御コマンドによって要求される場合に、前記書き込み制御部は、
前記複数のファイルのそれぞれに対応する分割データの書き込みを要求する前記データ書き込み要求を前記第１の書き込みモードで前記テープドライブに送信し、
１つのファイルに対応するすべての分割データの前記データ書き込み要求を送信した後のタイミングで、前記磁気テープ上のファイル記憶領域の終端を示す識別子の書き込みを要求する第２識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信するとともに、前記第１識別子書き込み要求の送信を省略し、
前記磁気テープからのデータの読み出しを要求するコマンド、または、前記磁気テープの排出を要求するコマンドを受信したとき、前記第１識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信した後、受信したコマンドに応じた処理を実行する、
請求項２記載の情報処理装置。
【請求項６】
前記書き込み制御部は、
前記第１識別子書き込み要求の送信を省略したとき、フラグ情報に送信回避を示す値を設定し、
前記磁気テープからのデータの読み出しを要求するコマンド、または、前記磁気テープの排出を要求するコマンドを受信したとき、前記フラグ情報に前記送信回避を示す値が設定されていた場合に、前記第１識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信する、
請求項５記載の情報処理装置。
【請求項７】
前記書き込み制御部は、ファイルの書き込みが要求されてから一定時間、前記磁気テープを用いた処理を要求するコマンドを受信しなかった場合に、前記第１識別子書き込み要求を前記第２の書き込みモードで前記テープドライブに送信する、請求項５記載の情報処理装置。
【請求項８】
前記書き込み制御部は、
前記データ書き込み要求または前記第２識別子書き込み要求を前記テープドライブに送信するたびに、前記磁気テープにおける書き込み先ブロックのブロック番号を示すカウント値をカウントアップし、
前記第２の制御コマンドを受信したとき、前記磁気テープにおける磁気ヘッドの現在位置を示す第１のブロック番号を前記テープドライブから取得し、前記第１のブロック番号と前記カウント値とが一致しなかった場合には、前記磁気ヘッドの位置を前記磁気テープにおける有効データの記憶領域の終端位置に位置合わせさせる位置合わせ要求を前記テープドライブに送信し、前記磁気テープにおける磁気ヘッドの現在位置を示す第２のブロック番号を前記テープドライブから取得して前記カウント値に前記第２のブロック番号を設定し、前記第１のブロック番号と前記カウント値とが一致した場合には、前記位置合わせ要求の送信を省略する、
請求項５〜７のいずれか１項に記載の情報処理装置。
【請求項９】
バッファメモリを備えたテープドライブと、
磁気テープに対する複数のデータの書き込みを前記テープドライブに要求する情報処理装置と、
を有し、
前記情報処理装置は、前記複数のデータのそれぞれの書き込みを要求するデータ書き込み要求を前記テープドライブに送信する際に、前記バッファメモリの残量が所定のしきい値より大きい場合には、書き込み対象のデータを前記バッファメモリに格納させ、当該データを前記磁気テープに書き込まずに書き込み完了を通知させる第１の書き込みモードで前記データ書き込み要求を送信し、前記残量が前記しきい値以下である場合には、前記バッファメモリに格納されたデータと前記書き込み対象のデータとを前記磁気テープに書き込ませる第２の書き込みモードで前記データ書き込み要求を送信する、
情報処理システム。
【請求項１０】
磁気テープに対する複数のデータの書き込みをテープドライブに要求するコンピュータに、
前記複数のデータのそれぞれの書き込みを要求するデータ書き込み要求を前記テープドライブに送信する際に、前記テープドライブが備えるバッファメモリの残量が所定のしきい値より大きい場合には、書き込み対象のデータを前記バッファメモリに格納させ、当該データを前記磁気テープに書き込まずに書き込み完了を通知させる第１の書き込みモードで前記データ書き込み要求を送信し、前記残量が前記しきい値以下である場合には、前記バッファメモリに格納されたデータと前記書き込み対象のデータとを前記磁気テープに書き込ませる第２の書き込みモードで前記データ書き込み要求を送信する、
処理を実行させる書き込み制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよび書き込み制御プログラムに関する。
【背景技術】
【０００２】
磁気テープは、低コストかつ大容量の可搬型記録媒体として広く利用されている。例えば、ＬＴＯ  Ｕｌｔｒｉｕｍ  ６（ＬＴＯ：Liner Tape-Open）規格では、１つのテープカートリッジに非圧縮時で２．５テラバイトのデータを記録可能である。
【０００３】
また、一般的に、記録媒体にデータを記録する際、そのデータは一時記憶手段に一時的に記憶される。これに関連する技術の例として、キャッシュメモリに記憶された情報が光ディスクに記録され終わるまで、光ディスクのイジェクトを禁止するようにした情報記録システムが提案されている。また、キャッシュメモリの対象領域への入出力が一定未満となったことを契機に、ライトアフター方式からライトスルー方式に切り替えてキャッシュメモリを経由してデータを転送するストレージシステムが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２５５４１８号公報
【特許文献２】特表２０１３−５１０３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、テープドライブでは、磁気テープへのデータ書き込みを開始する際、磁気テープにおける書き込み開始位置に磁気ヘッドを位置合わせする“リポジショニング”が行われる。このリポジショニングにかかる時間は、磁気テープへの書き込み処理全体にかかる時間の中で比較的大きな割合を占める。
【０００６】
特に近年、テープドライブの小型化が進むのに伴い、磁気テープを走行させるモータの駆動力が低くなる傾向にある。これにより、リポジショニングにかかる時間が長くなり、その結果、磁気テープへの書き込み処理全体にかかる時間が長くなってしまうという問題がある。
【０００７】
１つの側面では、本発明は、磁気テープへの書き込み処理全体にかかる時間を短縮することが可能な情報処理装置、情報処理システムおよび書き込み制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、磁気テープに対する複数のデータの書き込みをテープドライブに要求する情報処理装置が提供される。この情報処理装置は、残量検出部と書き込み制御部とを有する。残量検出部は、テープドライブが備えるバッファメモリの残量を検出する。書き込み制御部は、複数のデータのそれぞれの書き込みを要求するデータ書き込み要求をテープドライブに送信する際に、残量が所定のしきい値より大きい場合には、書き込み対象のデータをバッファメモリに格納させ、当該データを磁気テープに書き込まずに書き込み完了を通知させる第１の書き込みモードでデータ書き込み要求を送信し、残量がしきい値以下である場合には、バッファメモリに格納されたデータと書き込み対象のデータとを磁気テープに書き込ませる第２の書き込みモードでデータ書き込み要求を送信する。
【０００９】
また、１つの案では、テープドライブと、上記情報処理装置と同様の処理を実行する情報処理装置とを有する情報処理システムが提供される。
さらに、１つの案では、上記情報処理装置と同様の処理をコンピュータに実行させる書き込み制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、磁気テープへの書き込み処理全体にかかる時間を短縮できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係る情報処理システムの構成例を示す図である。
【図３】サーバ装置の処理機能の例を示すブロック図である。
【図４】複数ファイル指定によるバックアップ処理の比較例を示す図である。
【図５】バッファメモリおよび磁気テープに関する動作の例を示すタイミングチャートである。
【図６】第２の実施の形態での複数ファイル指定によるバックアップ処理例を示す図である。
【図７】ＢＩＤ管理テーブルのデータ構成例を示す図である。
【図８】ＢＩＤ管理テーブルを用いた書き込み成功ファイルの判定方法の例を示す図である。
【図９】コマンド発行依頼処理手順の例を示すフローチャートである。
【図１０】コマンド発行制御処理手順の例を示すフローチャート（その１）である。
【図１１】コマンド発行制御処理手順の例を示すフローチャート（その２）である。
【図１２】単独ファイル指定によるバックアップ処理の比較例を示す図である。
【図１３】１つのファイルに続いて次のファイルが磁気テープに書き込まれる場合の処理例について示す図である。
【図１４】ｔｍ２コマンドの発行が省略される場合の例を示す図である。
【図１５】エミュレーション後のｔｍ２コマンドの発行タイミングの例を示す図である。
【図１６】コマンド発行依頼処理手順の例を示すフローチャートである。
【図１７】コマンド発行制御処理手順の例を示すフローチャート（その１）である。
【図１８】コマンド発行制御処理手順の例を示すフローチャート（その２）である。
【図１９】データ読み出しまたは磁気テープ排出が要求された場合のコマンド発行制御処理手順の例を示すフローチャートである。
【図２０】図１９のステップＳ１０７でＢＳＢコマンドの発行が依頼された場合の処理手順の例を示すフローチャートである。
【図２１】タイムアウト発生時の制御処理手順の例を示すフローチャートである。
【図２２】２種類のファイル指定方法に対応したコマンド発行制御処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。図１に示す情報処理システムは、情報処理装置１とテープドライブ２とを含む。
【００１３】
テープドライブ２は、磁気テープ２１の記録再生動作を行う。また、テープドライブ２は、磁気テープ２１に書き込むデータを一時的に記憶するバッファメモリ２２を備える。
情報処理装置１は、磁気テープ２１に対するデータの書き込みをテープドライブ２に要求する。情報処理装置１は、残量検出部１１と書き込み制御部１２とを有する。なお、残量検出部１１および書き込み制御部１２の処理は、例えば、情報処理装置１が備えるプロセッサが所定のプログラムを実行することで実現される。
【００１４】
残量検出部１１は、テープドライブ２のバッファメモリ２２の残量を検出する。
書き込み制御部１２は、テープドライブ２に書き込み要求を送信することで、磁気テープ２１へのデータの書き込みを制御する。書き込み制御部１２は、磁気テープ２１への複数のデータの書き込みを要求する際、データごとに書き込み要求をテープドライブ２に送信する。その際、残量検出部１１によるバッファメモリ２２の残量の検出結果に基づいて次のような処理を行う。
【００１５】
書き込み制御部１２は、書き込み要求を送信する際に、バッファメモリ２２の残量が所定のしきい値より大きい場合には、書き込み対象のデータをバッファメモリ２２に格納させ、当該データを磁気テープ２１に書き込まずに書き込み完了を通知させるバッファモード（第１の書き込みモード）で書き込み要求を送信する。一方、書き込み制御部１２は、バッファメモリ２２の残量が上記のしきい値以下である場合には、バッファメモリ２２に格納されたデータと書き込み対象のデータとを磁気テープ２１に書き込ませるダイレクトモード（第２の書き込みモード）で書き込み要求を送信する。
【００１６】
例えば、図１に示すように、データＤ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，・・・を磁気テープ２１に書き込むものとする。書き込み制御部１２は、まず、データＤ１の書き込みを要求する際に、バッファメモリ２２の残量をチェックする。残量がしきい値より大きかったとすると、書き込み制御部１２は、データＤ１の書き込み要求をバッファモードで送信する。テープドライブ２は、受信したデータＤ１をバッファメモリ２２に書き込むものの、磁気テープ２１には書き込まずに書き込み制御部１２に書き込み完了を通知する。
【００１７】
次に、書き込み制御部１２は、データＤ２の書き込みを要求する際に、バッファメモリ２２の残量をチェックする。残量がしきい値より大きかったとすると、書き込み制御部１２は、データＤ２の書き込み要求をバッファモードで送信する。このようにして、書き込み制御部１２は、バッファメモリ２２の残量がしきい値より大きい間、書き込み要求をバッファモードで送信する。
【００１８】
そして、データＤ５の書き込みを要求する際に、バッファメモリ２２の残量がしきい値以下になったとする。この状態では、バッファメモリ２２にはデータＤ１〜Ｄ４が格納されている。書き込み制御部１２は、データＤ５の書き込み要求をダイレクトモードで送信する。テープドライブ２は、リポジショニングを行った後、バッファメモリ２２に格納されたデータＤ１〜Ｄ４と、情報処理装置１から送信されたデータＤ５とを、磁気テープ２１に一度に書き込む。
【００１９】
以上の第１の実施の形態によれば、書き込み制御部１２は、バッファメモリ２２に対して書き込み対象のデータを格納できる最大限の期間において、データの書き込み要求をバッファモードで送信する。書き込み要求をバッファモードで送信した場合には、テープドライブ２でリポジショニングが実行されない。したがって、書き込み制御部１２の処理により、リポジショニングが実行される回数を、バッファメモリ２２の容量から決まる限度まで減らすことができる。その結果、データの書き込み処理全体にかかる時間を短縮することができる。
【００２０】
〔第２の実施の形態〕
図２は、第２の実施の形態に係る情報処理システムの構成例を示す図である。図２に示す情報処理システムは、サーバ装置１００、テープドライブ２００および端末装置３００を含む。
【００２１】
サーバ装置１００は、端末装置３００を操作するユーザに対して所定のサービスを提供する。また、サーバ装置１００は、内部の記憶領域に記憶されたデータをテープドライブ２００内の磁気テープにバックアップする機能を備える。
【００２２】
テープドライブ２００は、ロードされたテープカートリッジ内の磁気テープを用いてデータの読み書きを行う。テープドライブ２００は、例えば、ＬＴＯ  Ｕｌｔｒｉｕｍに準拠した磁気テープの読み書きを行うことができる。
【００２３】
また、テープドライブ２００は、バッファメモリ２０１を備える。バッファメモリ２０１は、ＲＡＭ（Random Access Memory）などの不揮発性記憶装置として実現される。テープドライブ２００は、サーバ装置１００から磁気テープへのデータの書き込みが要求されたとき、サーバ装置１００から送信されたデータをバッファメモリ２０１に一時的に格納した後、そのデータをバッファメモリ２０１から磁気テープへ書き込む。
【００２４】
端末装置３００は、サーバ装置１００が提供するサービスの提供対象となるユーザによって操作されるコンピュータである。
ここで、サーバ装置１００は、例えば、次のようなハードウェア構成のコンピュータとして実現することができる。
【００２５】
サーバ装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２６】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、サーバ装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２７】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６、ネットワークインタフェース１０７およびテープインタフェース１０８がある。
【００２８】
ＨＤＤ１０３は、サーバ装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００２９】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像を表示装置１０４ａの画面に表示させる。表示装置としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３０】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３１】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３２】
ネットワークインタフェース１０７は、図示しないネットワークを介して、端末装置３００などの他の装置との間でデータの送受信を行う。テープインタフェース１０８は、テープドライブ２００との間でデータの送受信を行う。
【００３３】
なお、端末装置３００についても、図２のサーバ装置１００と同様のハードウェア構成を有するコンピュータとして実現可能である。
図３は、サーバ装置の処理機能の例を示すブロック図である。サーバ装置１００は、ＯＳ１１０、バックアップ処理部１２０および記憶部１３０を有する。
【００３４】
ＯＳ１１０の処理は、ＯＳプログラムがプロセッサ１０１に実行されることで実現される。ＯＳ１１０は、バックアップ処理部１２０に対して所定のデータを磁気テープへバックアップするよう要求する。バックアップ対象のデータとしては、例えば、サーバ装置１００のＨＤＤ１０３に格納されたデータが適用される。
【００３５】
また、ＯＳ１１０は、バックアップ処理部１２０に対して、複数のファイルのバックアップを１回のバックアップコマンドの出力によって要求する場合と、１つのファイルのバックアップを１回のバックアップコマンドの出力によって要求する場合とがある。以下、前者の要求に応じて実行されるバックアップ処理を“複数ファイル指定によるバックアップ処理”と呼び、後者の要求に応じて実行されるバックアップ処理を“単独ファイル指定によるバックアップ処理”と呼ぶ場合がある。
【００３６】
また、ＯＳ１１０は、磁気テープからのデータの読み出しや、テープカートリッジの排出をバックアップ処理部１２０に要求することもできる。データの読み出しは、例えば、リストアやダンプなどのコマンドによって要求される。
【００３７】
バックアップ処理部１２０は、ＯＳ１１０からのバックアップ要求に応じて、テープドライブ２００にロードされた磁気テープに対してデータを書き込むようテープドライブ２００に要求し、バックアップ対象のデータをテープドライブ２００へ送信する。また、バックアップ処理部１２０は、ＯＳ１１０からデータの読み出しが要求された場合、テープドライブ２００に対してデータの読み出しを要求し、テープドライブ２００から読み出されたデータをＯＳ１１０に引き渡す。
【００３８】
このバックアップ処理部１２０の処理は、例えば、バックアップ処理を行うためのアプリケーションプログラムがプロセッサ１０１に実行されることで実現される。また、バックアップ処理部１２０は、コマンド処理部１２１とコマンド発行制御部１２２とを有する。
【００３９】
コマンド処理部１２１は、ＯＳ１１０から受信したコマンドを、テープドライブ２００に送信するためのコマンドに変換する。また、コマンド処理部１２１は、複数ファイル指定によるバックアップ処理と単独ファイル指定によるバックアップ処理のどちらがＯＳ１１０から要求されたかをコマンド発行制御部１２２に通知する機能を有する。
【００４０】
コマンド発行制御部１２２は、コマンド処理部１２１によって変換されたコマンドをテープドライブ２００に発行する処理を制御する。例えば、コマンド発行制御部１２２は、変換されたコマンドに、そのコマンドに基づく処理を後述するバッファモードとダイレクトモードのどちらで実行させるかを示すモード情報を付加して送信する。
【００４１】
また、コマンド発行制御部１２２は、残量判定部１２３を有する。残量判定部１２３は、テープドライブ２００に対する書き込み要求の発行回数と、書き込み対象のブロックのサイズとに基づいて、テープドライブ２００のバッファメモリ２０１の残量の推定値を算出する。
【００４２】
記憶部１３０は、例えば、サーバ装置１００内のＲＡＭ１０２の記憶領域によって実現される。記憶部１３０には、コマンド発行制御部１２２の処理の際に利用される情報として、バッファサイズ情報１３１、ＢＩＤ管理テーブル１３２、エラーメモ１３３およびＥＭフラグ１３４が格納される。
【００４３】
バッファサイズ情報１３１は、テープドライブ２００のバッファメモリ２０１のサイズを示す。なお、バッファサイズ情報１３１は、サーバ装置１００の不揮発性記憶装置（例えば、ＨＤＤ１０３）にあらかじめ格納され、コマンド発行制御部１２２の処理の際にＲＡＭ１０２にロードされる。
【００４４】
ＢＩＤ管理テーブル１３２には、磁気テープの記憶領域における各ブロックのＩＤ（ＢＩＤ）と、後述するｔｍ１コマンドの発行回数とが対応付けて登録される。ＢＩＤ管理テーブル１３２は、例えば、複数ファイル指定によるバックアップ処理を実行する場合に、磁気テープで正常に書き込みが行われたファイルを認識できるようにするために使用される。
【００４５】
エラーメモ１３３には、単独ファイル指定によるバックアップ処理を実行した場合に、磁気テープで書き込みエラーが発生したブロックＩＤが登録される。
ＥＭフラグ１３４には、単独ファイル指定によるバックアップ処理の実行の際に、後述するｔｍ２コマンドの発行のエミュレーションが行われたか否かを示すフラグ情報が登録される。
【００４６】
＜複数ファイル指定によるバックアップ処理＞
次に、ＯＳ１１０から複数ファイル指定によるバックアップ処理が要求された場合の処理について説明する。まず、図４、図５を用いて、複数ファイル指定によるバックアップ処理の比較例とその問題点について説明する。そして、図６以降で本実施の形態でのバックアップ処理について説明する。また、以下の説明では、サーバ装置１００からテープドライブ２００へ発行される書き込みコマンドを“ｗｒコマンド”と記載する場合がある。
【００４７】
図４は、複数ファイル指定によるバックアップ処理の比較例を示す図である。
テープドライブ２００に対するデータの書き込み要求は、所定サイズのブロックを単位として行われる。すなわち、バックアップ処理部１２０は、テープドライブ２００に対してブロックごとにｗｒコマンドを送信する。ブロックのサイズは、バックアップを要求するＯＳ１１０から指定される。図４の例では、ブロックのサイズとして３２キロバイトが指定されたものとする。
【００４８】
また、図４において、“テープフォーマット”の欄には、上記のバックアップコマンドに応じて磁気テープに書き込まれるデータの構成例を示す。また、“発行されたコマンド”の欄には、対応する磁気テープ上のブロックへの書き込みのためにバックアップ処理部１２０からテープドライブ２００に発行されたコマンド名を示す。“発行されたコマンド”の欄に示された“（Ｂ）”は、コマンドがバッファモードで発行されたことを示し、“（Ｄ）”は、コマンドがダイレクトモードで発行されたことを示す。
【００４９】
図４では、例として、ファイルａａａ、ファイルｂｂｂ、ファイルｃｃｃ、ファイルｄｄｄという４つのファイルのバックアップが、ＯＳ１１０から１つのバックアップコマンドによって要求されたものとする。ファイルａａａ、ファイルｂｂｂ、ファイルｃｃｃ、ファイルｄｄｄは、それぞれ３２キロバイトのブロックに分割されて磁気テープに記録される。図４の例では、ファイルａａａは４つのブロックに分割され、ファイルｂｂｂは２つのブロックに分割され、ファイルｃｃｃは３つのブロックに分割され、ファイルｄｄｄは５つのブロックに分割されたものとする。
【００５０】
また、１つのファイルの次のブロックには、テープマークＴＭ１が記録される。テープマークＴＭ１は、１つのファイルの記憶領域の終端であることを示すファイル終端識別子である。テープマークＴＭ１は、バックアップ処理部１２０からのｔｍ１コマンドに応じて磁気テープに記録される。さらに、磁気テープ上の最後に記録されたファイルについてのテープマークＴＭ１の次のブロックには、テープマークＴＭ２が記録される。テープマークＴＭ２は、磁気テープ上に記録されたデータ全体の記憶領域の終端であることを示すデータ終端識別子である。磁気テープに記録されたデータを有効にする（すなわち、どのテープドライブでも読み出し可能にする）ためには、データの記憶領域の終端にテープマークＴＭ２が記録されている必要がある。
【００５１】
ここで、バッファモードおよびダイレクトモードについて説明する。コマンドがバッファモードで発行された場合、テープドライブ２００は、該当するブロックをバッファメモリ２０１に書き込むが、そのブロックを磁気テープには書き込まずにコマンド発行元へ完了応答を送信する。一方、コマンドがダイレクトモードで発行された場合、テープドライブ２００は、該当するブロックを磁気テープに書き込んだ後、コマンド発行元へ完了応答を送信する。また、バッファメモリ２０１に未書き込みのブロックが存在する場合には、テープドライブ２００は、バッファメモリ２０１内のブロックを磁気テープに書き込んだ後、受信コマンドに対応するブロックを磁気テープに続けて書き込み、コマンド発行元へ完了応答を送信する。
【００５２】
テープドライブ２００は、バッファモードでコマンドが発行された場合、ダイレクトモードで発行された場合と比較してはるかに短時間で完了応答を送信することができる。このため、テープドライブ２００に対するデータの書き込み処理では、すべてのブロックについてダイレクトモードでコマンドを発行するのではなく、ダイレクトモードでのコマンド発行をある程度間隔を空けて行い、その間ではバッファモードでコマンドを発行することが行われる。例えば、図４に示すように、ファイルを分割したブロックの書き込みをバッファモードで要求し、１つのファイルの書き込み領域の終端を示すテープマークＴＭ１の書き込み時に、ダイレクトモードでコマンドを発行する方法がある。
【００５３】
図５は、バッファメモリおよび磁気テープに関する動作の例を示すタイミングチャートである。この図５を用いて、バッファモードおよびダイレクトモードでの処理時間について説明する。
【００５４】
例えば、バッファモードでｗｒコマンドが発行された場合、テープドライブ２００は、受信したブロックをバッファメモリ２０１へ格納し、コマンド発行元へ完了応答を送信する。ｗｒコマンドを受信してから完了応答を送信するまでの処理時間は、数ミリ秒程度である。
【００５５】
一方、図５に示すタイミングＴ１１において、１つのファイルの書き込み要求が終了して、ｔｍ１コマンドがダイレクトモードで発行されたとする。この場合、テープドライブ２００は、まず、磁気テープのリポジショニングを行う。リポジショニングとは、磁気ヘッドによる磁気テープへの書き込み開始位置に正確に合わせるための動作である。具体的には、リポジショニングには、データの書き込み開始位置より前の位置まで磁気テープを巻き戻す動作、その位置から磁気テープを正方向に走行させ、データ書き込み時の速度になるまで走行速度を加速させる動作などが含まれる。
【００５６】
テープドライブ２００は、リポジショニングの後、バッファメモリからブロックを読み出して磁気テープに書き込み、さらに、テープマークＴＭ１を磁気テープに書き込む。テープドライブ２００は、これらの動作が完了した時点で、コマンド発行元へ完了応答を送信する（タイミングＴ１２）。このように、ダイレクトモードでは、磁気テープに対するデータ書き込み時間だけでなくリポジショニングの時間もかかるので、バッファモードよりコマンド受信からの応答までの時間が非常に長くなる。なお、テープドライブ２００は、磁気テープへの書き込みが終了した後、磁気テープの走行速度を減速させ、やがて磁気テープを停止させる。
【００５７】
ところで、近年、テープドライブの小型化が進み、それに伴ってテープドライブに搭載される磁気テープ走行用のモータも小型化されつつある。モータが小型化されると、モータの動力も小さくなる。このため、リポジショニング時の磁気テープの走行速度が低くなり、その結果、リポジショニングに要する時間が長くなるという問題があった。
【００５８】
例えば、ＣＭＴ（Cartridge Magnetic Tape）のテープドライブでは、リポジショニングの時間は３００ミリ秒程度であった。ところが、テープカートリッジやテープドライブがより小型化されたＬＴＯ  Ｕｌｔｒｉｕｍのテープドライブでは、リポジショニングに５秒程度かかってしまう場合があり、このことがバックアップ全体に要する時間を長くする大きな原因になってしまう。
【００５９】
そこで、第２の実施の形態では、バックアップ処理部１２０は、次のようにして複数ファイル指定によるバックアップ処理を行う。
（１−１）指定された各ファイルの書き込みを要求する間、ｗｒコマンドだけでなくｔｍ１コマンドもバッファモードで発行し、最後のｔｍ２コマンドのみダイレクトモードで発行する。
【００６０】
（１−２）ただし、テープドライブ２００のバッファメモリ２０１の残量が所定量以下になった場合には、ダイレクトモードでコマンドを発行する。
図６は、第２の実施の形態での複数ファイル指定によるバックアップ処理例を示す図である。図６では例として、図４と同様に、ファイルａａａ、ファイルｂｂｂ、ファイルｃｃｃ、ファイルｄｄｄという４つのファイルのバックアップが、ＯＳ１１０からバックアップ処理部１２０に対して１つのバックアップコマンドによって要求されたものとする。
【００６１】
バックアップコマンドを受信したコマンド処理部１２１は、ファイルａａａを４つのブロックに分割し、ファイルｂｂｂを２つのブロックに分割し、ファイルｃｃｃを３つのブロックに分割し、ファイルｄｄｄを５つのブロックに分割する。そして、ファイルａａａの４つのブロックにそれぞれ対応するｗｒコマンド、ｔｍ１コマンド、ファイルｂｂｂの２つのブロックにそれぞれ対応するｗｒコマンド、ｔｍ１コマンド、ファイルｃｃｃの３つのブロックにそれぞれ対応するｗｒコマンド、ｔｍ１コマンド、ファイルｄｄｄの５つのブロックにそれぞれ対応するｗｒコマンド、ｔｍ１コマンド、ｔｍ２コマンドの発行を、コマンド発行制御部１２２に対して順に依頼する。これとともに、コマンド処理部１２１は、複数ファイル指定によるバックアップ処理が要求されたことをコマンド発行制御部１２２に通知する。
【００６２】
残量判定部１２３は、バッファサイズ情報１３１に登録された、テープドライブ２００のバッファメモリ２０１のサイズを読み込む。コマンド発行制御部１２２は、発行を依頼されたコマンドを順にバッファモードでテープドライブ２００に発行する。残量判定部１２３は、１つのブロックの書き込みが要求される際に、書き込みを要求済みのブロックの総サイズとバッファメモリ２０１のサイズとに基づいて、バッファメモリ２０１の残量を算出する。
【００６３】
ここで、すべてのファイルに対応するブロックの書き込みを要求する間に、バッファメモリ２０１の残量が所定のしきい値以下にならなかったとする。この場合、図６（Ａ）に示すように、コマンド発行制御部１２２は、最後のｔｍ２コマンドを除くすべてのコマンドをバッファモードでテープドライブ２００に発行する。そして、コマンド発行制御部１２２は、ｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。ｔｍ２コマンドの発行に応じて、バッファメモリ２０１に蓄積されていたデータが磁気テープに書き込まれる。この図６（Ａ）の例では、磁気テープのリポジショニングが１回しか発生しないため、図４の例と比較してバックアップ処理全体に要する時間が大幅に短縮される。
【００６４】
一方、バックアップ処理の途中でバッファメモリ２０１の残量が所定のしきい値以下になった場合は、次のような処理が行われる。例えば、図６（Ｂ）に示すように、データｄｄｄの１つ目のブロックの書き込みを要求した後のタイミングＴ２１において、バッファメモリ２０１の残量が所定のしきい値以下になったとする。
【００６５】
このケースでは、コマンド発行制御部１２２は、タイミングＴ２１より前のすべてのコマンドをバッファモードでテープドライブ２００に発行する。そして、コマンド発行制御部１２２は、タイミングＴ２１でバッファメモリ２０１の残量が所定のしきい値以下になったと判定すると、次のブロックの書き込みを要求するためのｗｒコマンドをダイレクトモードでテープドライブ２００に発行する。これにより、バッファメモリ２０１に蓄積されていたデータが磁気テープに書き込まれ、さらに、コマンド発行制御部１２２から送信された、データｄｄｄに対応する２つ目のブロックも磁気テープに書き込まれる。
【００６６】
また、コマンド発行制御部１２２は、それ以後のブロックの書き込みを要求するコマンドをバッファモードでテープドライブ２００に発行する。そして、コマンド発行制御部１２２は、最後のｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。
【００６７】
以上の図６（Ｂ）の例のように、コマンド発行制御部１２２は、バッファメモリ２０１の残量がしきい値以下になるまでの間、コマンドをバッファモードで発行し、残量がしきい値以下になった時点で、次のコマンドをダイレクトモードで発行し、磁気テープへの書き込みを実行させる。これにより、リポジショニングの発生回数を極力抑えながらも、書き込みを要求したブロックがバッファメモリ２０１からあふれて失われる事態を防止することができる。したがって、バックアップ時間の短縮とデータ書き込みの信頼性とを高い次元で両立させることができる。
【００６８】
次に、上記の図６のようにバックアップ処理を行った場合の新たな問題点について説明する。
テープドライブ２００は、磁気テープに対するデータの書き込みに失敗する場合がある。ここで、図４の例では、ファイルごとに磁気テープへの書き込み処理が発生する。このため、バックアップ処理部１２０は、磁気テープへの書き込みに失敗したことがテープドライブ２００から通知された場合に、書き込みを要求したブロックのうち、どのブロックまでの書き込みに成功し、どのブロックから書き込みが行われていないかを、ファイル単位で特定することができる。
【００６９】
ところが、図６のような方法でバックアップ処理を行った場合、バックアップ処理部１２０は、書き込みに成功したブロックおよび失敗したブロックを、ファイル単位で特定することができない。例えば、図６（Ｂ）のタイミングＴ２１においてｗｒコマンドがダイレクトモードで発行されたとき、テープドライブ２００において書き込みエラーが発生したとする。この場合、コマンド発行制御部１２２は、それより前にテープドライブ２００へ送信済みのファイルａａａ、ファイルｂｂｂ、ファイルｃｃｃのうち、どのファイルまで磁気テープへの書き込みに成功しているかを判別できない。このため、ファイルの書き込み漏れを防ぐためには、コマンド発行制御部１２２は、例えば、送信済みの３つのファイルのすべてについて書き込みに失敗したと見なし、これらの３つのファイルの書き込みをテープドライブ２００に再度要求しなければならない。
【００７０】
このような問題点に対して、コマンド発行制御部１２２は、さらに次のような処理を行うことで、書き込みに成功したブロックをファイル単位で特定できるようにする。
（１−３）磁気テープにおける書き込み先のブロックＩＤと、それらのうちのどのブロックＩＤのブロックにテープマークＴＭ１が書き込まれたかを、ＢＩＤ管理テーブル１３２を用いて管理する。
【００７１】
（１−４）テープドライブ２００から書き込みエラーが通知されたとき、書き込みエラーが発生したブロックのブロックＩＤをテープドライブ２００から取得し、取得したブロックＩＤとＢＩＤ管理テーブル１３２の登録情報とを用いて、書き込みに成功したファイルを特定する。
【００７２】
図７は、ＢＩＤ管理テーブルのデータ構成例を示す図である。ＢＩＤ管理テーブル１３２には、カウント値ＢＩＤ＿ＣＮＴとカウント値ＴＭ１＿ＣＭＴとが対応付けて登録される。カウント値ＢＩＤ＿ＣＮＴおよびカウント値ＴＭ１＿ＣＭＴは、いずれもコマンド発行制御部１２２によってカウントされて、ＢＩＤ管理テーブル１３２に登録される。
【００７３】
カウント値ＢＩＤ＿ＣＮＴは、テープドライブ２００にｗｒコマンドまたはｔｍ１コマンドを発行するたびにカウントアップされる値である。したがって、カウント値ＢＩＤ＿ＣＮＴの項目には、先頭から１ずつインクリメントされた値が登録される。
【００７４】
コマンド発行制御部１２２は、複数ファイル指定によるバックアップ処理の開始時に、テープドライブ２００から磁気ヘッドが現在位置しているブロックのブロックＩＤを取得する。ここで取得されるブロックＩＤは、磁気ヘッドがあるブロックの末尾に位置している場合に、そのブロックを示すブロックＩＤである。コマンド発行制御部１２２は、取得したブロックＩＤをカウント値ＢＩＤ＿ＣＮＴの初期値としてカウントを開始する。これにより、カウント値ＢＩＤ＿ＣＮＴは、コマンド発行制御部１２２がｗｒコマンドまたはｔｍ１コマンドを発行したときの磁気テープにおける書き込み先のブロックＩＤを示す。
【００７５】
カウント値ＴＭ１＿ＣＮＴは、複数ファイル指定によるバックアップ処理が開始されてから、テープドライブ２００にｔｍ１コマンドを発行するたびにカウントアップされる値である。これにより、カウント値ＴＭ１＿ＣＮＴは、１つのファイルの全ブロックの書き込みがテープドライブ２００に要求された直後のコマンド発行時にカウントアップされることから、実質的に、書き込み要求済みのファイル数を示す値となる。
【００７６】
なお、以下の説明では、カウント値ＢＩＤ＿ＣＮＴの値が“Ｘ”であることをＢＩＤ＿ＣＮＴ“Ｘ”と表記する場合がある。同様に、カウント値ＴＭ１＿ＣＮＴの値が“Ｙ”であることをＴＭ１＿ＣＮＴ“Ｙ”と表記する場合がある。
【００７７】
図８は、ＢＩＤ管理テーブルを用いた書き込み成功ファイルの判定方法の例を示す図である。図８では、例として、図６（Ａ）のようにコマンドが発行された場合を想定する。また、図８では、例として、磁気テープの先頭から書き込みが開始されるものとする。この場合、コマンド発行制御部１２２がバックアップ処理の開始時にテープドライブ２００から取得したブロックＩＤは“０”となり、カウント値ＢＩＤ＿ＣＮＴの初期値も“０”となる。なお、磁気テープにおいては、先頭ブロックの次のブロックからデータが書き込まれる。
【００７８】
コマンド発行制御部１２２は、テープドライブ２００にコマンドを発行するごとに、カウント値ＢＩＤ＿ＣＮＴをカウントアップし、ＢＩＤ管理テーブル１３２に登録する。また、コマンド発行制御部１２２は、ｔｍ１コマンドの発行時にカウント値ＴＭ１＿ＣＮＴをカウントアップし、ＢＩＤ管理テーブル１３２に登録する。これにより、ＢＩＤ管理テーブル１３２には、カウント値ＢＩＤ＿ＣＮＴとカウント値ＴＭ１＿ＣＮＴとが対応付けて登録される。
【００７９】
すべてのファイルに対応するブロックの書き込みを要求する間に、バッファメモリ２０１の残量が所定のしきい値以下にならなかったとすると、コマンド発行制御部１２２は、最後のｔｍ２コマンドを除くすべてのコマンドをバッファモードでテープドライブ２００に発行する。そして、コマンド発行制御部１２２は、ｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。ｔｍ２コマンドの発行に応じて、テープドライブ２００では、バッファメモリ２０１に蓄積されていたデータが磁気テープに書き込まれる。
【００８０】
ここで、例えば、テープドライブ２００がブロックＩＤ“１０”のブロックにおける書き込み処理に失敗したとする。この場合、テープドライブ２００からコマンド発行制御部１２２に対して書き込みエラーが通知される。コマンド発行制御部１２２は、現在の書き込み対象ブロックのブロックＩＤの通知を要求するためのＲＤＢＩＤコマンドを、テープドライブ２００に発行する。これにより、コマンド発行制御部１２２は、書き込みエラーが発生したブロックのブロックＩＤ“１０”をテープドライブ２００から取得する。
【００８１】
コマンド発行制御部１２２は、ＢＩＤ管理テーブル１３２を参照し、ＢＩＤ＿ＣＮＴ“１０”に対応付けられたカウント値ＴＭ１＿ＣＮＴを読み出す。図８の例では、ＴＭ１＿ＣＮＴ“２”が読み出される。この場合、コマンド発行制御部１２２は、先頭から２番目のファイルｂｂｂまでが磁気テープに正常に書き込まれ、３番目以降のファイルについては磁気テープへの書き込みが完了していないと判断することができる。したがって、コマンド発行制御部１２２は、ファイルａａａ、ファイルｂｂｂの書き込みが正常に完了し、ファイルｃｃｃ、ファイルｄｄｄの書き込みに失敗したことを、コマンド処理部１２１を介してＯＳ１１０に報告する。
【００８２】
以上の処理により、リポジショニングの発生回数が抑制されてバックアップの処理時間を短縮可能でありながらも、コマンド発行制御部１２２は、磁気テープへの書き込みに成功したブロックをファイル単位で特定することができる。これにより、実際には書き込みに成功しているファイルを磁気テープに再度書き込むという事態が回避され、磁気テープへの書き込みエラーが発生した場合でも、バックアップ処理全体にかかる時間を短縮することができる。
【００８３】
次に、複数ファイル指定によるバックアップ処理手順について、フローチャートを用いて説明する。
図９は、コマンド発行依頼処理手順の例を示すフローチャートである。図９の処理は、コマンド処理部１２１によって実行される。
【００８４】
［ステップＳ１１］コマンド処理部１２１は、ＯＳ１１０から、バックアップ対象として複数のファイルが指定されたバックアップ要求コマンドを受信する。なお、受信したバックアップ要求コマンドには、ブロックサイズが指定されている。コマンド処理部１２１は、複数ファイル指定によるバックアップ処理が要求されたことをコマンド発行制御部１２２に通知する。
【００８５】
［ステップＳ１２］コマンド処理部１２１は、バックアップが要求された複数のファイルの中から、処理対象のファイルを１つ選択する。
［ステップＳ１３］コマンド処理部１２１は、選択したファイルをバックアップ要求コマンドにより指定されたブロックサイズで分割して得られる１つのブロックについて、ｗｒコマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｗｒコマンドに対応する処理の完了応答が通知されると、次のステップＳ１４の処理が実行される。
【００８６】
［ステップＳ１４］コマンド処理部１２１は、ステップＳ１２で選択したファイルから得られる全ブロックについて、ｗｒコマンドの発行を依頼済みかを判定する。ｗｒコマンドの発行を依頼済みでないブロックがある場合、ステップＳ１３の処理が実行される。一方、全ブロックについてｗｒコマンドの発行を依頼済みである場合、ステップＳ１５の処理が実行される。
【００８７】
［ステップＳ１５］コマンド処理部１２１は、ｔｍ１コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｔｍ１コマンドに対応する処理の完了応答が通知されると、次のステップＳ１６の処理が実行される。
【００８８】
［ステップＳ１６］コマンド処理部１２１は、バックアップが要求された全ファイルを選択済みかを判定する。未選択のファイルがある場合、ステップＳ１２の処理が実行される。一方、全ファイルを選択済みである場合、ステップＳ１７の処理が実行される。
【００８９】
［ステップＳ１７］コマンド処理部１２１は、ｔｍ２コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｔｍ２コマンドに対応する処理の完了応答が通知されると、次のステップＳ１８の処理が実行される。
【００９０】
［ステップＳ１８］コマンド処理部１２１は、ＯＳ１１０に対してバックアップ処理が完了したことを報告する。
図１０および図１１は、コマンド発行制御処理手順の例を示すフローチャートである。図１０および図１１の処理は、コマンド発行制御部１２２によって実行される。
【００９１】
［ステップＳ２１］図９のステップＳ１１で、コマンド処理部１２１が複数ファイル指定によるバックアップ処理が要求されたことをコマンド発行制御部１２２に通知すると、このステップＳ２１の処理が開始される。コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、磁気ヘッドの現在位置を示すブロックＩＤをテープドライブ２００から取得する。ここでは、ブロックＩＤとして“Ｎ”が通知されたものとする。
【００９２】
［ステップＳ２２］コマンド発行制御部１２２は、Ｎ＝０であるか、すなわち、書き込み開始位置が磁気テープの先頭であるかを判定する。Ｎ＝０である場合、ステップＳ２３の処理が実行される。Ｎ＝０でない場合、ステップＳ２４の処理が実行される。
【００９３】
［ステップＳ２３］コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴに初期値として“０”を設定する。
［ステップＳ２４］コマンド発行制御部１２２は、磁気ヘッドをＥＯＤ（End Of Data）に位置合わせするように指示するコマンドをテープドライブ２００に発行する。ＥＯＤとは、磁気テープにおける書き込み済みブロックのうち、最終ブロックにおける末尾の位置を示す。
【００９４】
ステップＳ２１で取得されたブロックＩＤが“０”でない場合、磁気テープには書き込み済みのデータがあり、終端位置にテープマークＴＭ２が記録されている。このため、上記コマンドの発行により、磁気ヘッドはタイムマークＴＭ２が記録されたブロックの末尾に位置合わせされる。
【００９５】
上記コマンドに対する完了応答を受信すると、コマンド発行制御部１２２は、さらに、磁気ヘッドを現在より１ブロック分だけ前のブロックに位置合わせするように指示するＢＳＰＦ（Backspace File）コマンドをテープドライブ２００に発行する。これにより、磁気ヘッドはテープマークＴＭ２の直前のテープマークＴＭ１のブロックの末尾に位置合わせされ、テープマークＴＭ１の次のブロックから書き込みを開始できるようになる。
【００９６】
［ステップＳ２５］コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、磁気テープにおける書き込み開始位置を示すブロックＩＤをテープドライブ２００から取得する。ここでは、ブロックＩＤとして“Ｍ”が通知されたものとする。コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴに初期値として“Ｍ”を設定する。
【００９７】
［ステップＳ２６］コマンド発行制御部１２２は、カウント値ＴＭ１＿ＣＮＴに初期値として“０”を設定する。
［ステップＳ２７］残量判定部１２３は、バッファサイズ情報１３１からテープドライブ２００のバッファメモリ２０１のサイズを読み出す。残量判定部１２３は、バッファメモリ２０１の残量を示す変数Ａ＿ＢＵＦＦ（以下、「バッファ残量Ａ＿ＢＵＦＦ」と記載する）に、初期値として読み出したサイズの値を設定する。
【００９８】
なお、バッファサイズ情報１３１には、テープドライブの機種ごとにバッファメモリのサイズが登録されていてもよい。この場合、ステップＳ２６では、残量判定部１２３は、接続されているテープドライブの機種を判別し、判別された機種に対応するバッファメモリのサイズをバッファサイズ情報１３１から読み出す。
【００９９】
［ステップＳ２８］コマンド発行制御部１２２は、コマンド処理部１２１からコマンドの発行依頼を受ける。コマンド発行制御部１２２は、発行が依頼されたコマンドがｗｒコマンドかを判定する。発行が依頼されたコマンドがｗｒコマンドである場合、ステップＳ２９の処理が実行され、ｗｒコマンドでない場合、図１１のステップＳ４１の処理が実行される。
【０１００】
［ステップＳ２９］コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴをカウントアップし、カウントアップ後のカウント値ＢＩＤ＿ＣＮＴをＢＩＤ管理テーブル１３２に登録する。また、コマンド発行制御部１２２は、現在のカウント値ＴＭ１＿ＣＮＴを、カウントアップ後のカウント値ＢＩＤ＿ＣＮＴに対応付けてＢＩＤ管理テーブル１３２に登録する。
【０１０１】
［ステップＳ３０］コマンド発行制御部１２２は、バッファ残量Ａ＿ＢＵＦＦが所定のしきい値以下かを判定する。なお、しきい値は、“０”以上の値として設定される。バッファ残量Ａ＿ＢＵＦＦがしきい値以下である場合、ステップＳ３３の処理が実行され、しきい値より大きい場合、ステップＳ３１の処理が実行される。
【０１０２】
［ステップＳ３１］コマンド発行制御部１２２は、発行が依頼されたｗｒコマンドをバッファモードでテープドライブ２００に発行する。
［ステップＳ３２］残量判定部１２３は、現在のバッファ残量Ａ＿ＢＵＦＦから１ブロック分のデータサイズを減算することで、バッファ残量Ａ＿ＢＵＦＦを更新する。
【０１０３】
［ステップＳ３３］コマンド発行制御部１２２は、発行が依頼されたｗｒコマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ３４］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生した場合、ステップＳ３５の処理が実行される。書き込みエラーが発生せず、ステップＳ３３で発行したコマンドに応じた処理が正常に終了した場合、ステップＳ２７の処理が実行される。
【０１０４】
［ステップＳ３５］コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、書き込みエラーが発生したブロックのブロックＩＤをテープドライブ２００から取得する。ここで、取得したブロックＩＤを“Ｌ”とする。
【０１０５】
［ステップＳ３６］コマンド発行制御部１２２は、ＢＩＤ管理テーブル１３２を参照し、ＢＩＤ＿ＣＮＴ“Ｌ”に対応付けられたカウント値ＴＭ１＿ＣＮＴを読み出す。ここで、読み出したカウント値ＴＭ１＿ＣＮＴを“Ｐ”とする。
【０１０６】
コマンド発行制御部１２２は、ＯＳ１１０からバックアップが要求された複数のファイルのうち、１番目からＰ番目までのファイルの書き込みに成功し、（Ｐ＋１）番目以降のファイルの書き込みに失敗したことを、コマンド処理部１２１に通知する。コマンド処理部１２１は、コマンド発行制御部１２２からの通知に基づいて、例えば、書き込みに成功したファイルのファイル名と書き込みに失敗したファイルのファイル名をＯＳ１１０に報告する。
【０１０７】
［ステップＳ４１］コマンド発行制御部１２２は、ステップＳ２８で発行が依頼されたコマンドがｔｍ１コマンドかを判定する。発行が依頼されたコマンドがｔｍ１コマンドである場合、ステップＳ４２の処理が実行され、それ以外のコマンドである場合、ステップＳ４７の処理が実行される。
【０１０８】
［ステップＳ４２］コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴをカウントアップし、カウントアップ後のカウント値ＢＩＤ＿ＣＮＴをＢＩＤ管理テーブル１３２に登録する。また、コマンド発行制御部１２２は、カウント値ＴＭ１＿ＣＮＴもカウントアップし、カウントアップ後のカウント値ＴＭ１＿ＣＮＴを、カウントアップ後のカウント値ＢＩＤ＿ＣＮＴに対応付けてＢＩＤ管理テーブル１３２に登録する。
【０１０９】
［ステップＳ４３］コマンド発行制御部１２２は、バッファ残量Ａ＿ＢＵＦＦが所定のしきい値以下かを判定する。バッファ残量Ａ＿ＢＵＦＦがしきい値以下である場合、ステップＳ４５の処理が実行され、しきい値より大きい場合、ステップＳ４４の処理が実行される。
【０１１０】
［ステップＳ４４］コマンド発行制御部１２２は、ｔｍ１コマンドをバッファモードでテープドライブ２００に発行する。この後、図１０のステップＳ２８の処理が実行される。
【０１１１】
なお、ｔｍ１コマンドをバッファモードで発行した場合、このコマンド発行によりバッファメモリ２０１に格納されるデータのサイズは、ファイルを分割して得られたブロックのサイズより十分に小さいと考えられる。このため、図１０の例では、ｔｍ１コマンドをバッファモードで発行した場合に、バッファ残量Ａ＿ＢＵＦＦを減算していない。
【０１１２】
［ステップＳ４５］コマンド発行制御部１２２は、ｔｍ１コマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ４６］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生した場合、図１０のステップＳ３５の処理が実行される。書き込みエラーが発生せず、ステップＳ４６で発行したコマンドに応じた処理が正常に終了した場合、図１０のステップＳ２７の処理が実行される。
【０１１３】
［ステップＳ４７］コマンド発行制御部１２２は、ステップＳ２８で発行が依頼されたコマンドがｔｍ２コマンドかを判定する。発行が依頼されたコマンドがｔｍ２コマンドである場合、ステップＳ４９の処理が実行され、それ以外のコマンドである場合、ステップＳ４８の処理が実行される。
【０１１４】
［ステップＳ４８］コマンド発行制御部１２２は、発行が依頼されたコマンドをテープドライブ２００に発行し、そのコマンドに応じた処理を実行させる。処理が完了すると、その旨がコマンド処理部１２１を介してＯＳ１１０に通知され、バックアップ処理部１２０の処理が終了する。
【０１１５】
［ステップＳ４９］コマンド発行制御部１２２は、ｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ５０］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生した場合、Ｓ５１の処理が実行される。書き込みエラーが発生せず、ステップＳ５０で発行したコマンドに応じた処理が正常に終了した場合、ステップＳ５２の処理が実行される。
【０１１６】
［ステップＳ５１］コマンド発行制御部１２２は、テープマークＴＭ２の書き込みエラーが発生したことをコマンド処理部１２１に通知する。コマンド処理部１２１は、例えば、磁気テープの書き込み完了処理で異常が発生したことを、ＯＳ１１０に報告する。
【０１１７】
［ステップＳ５２］コマンド発行制御部１２２は、書き込みが完了したことをコマンド処理部１２１に通知する。コマンド処理部１２１は、要求されたすべてのファイルのバックアップ処理が正常に完了したことをＯＳ１１０に報告する。
【０１１８】
なお、上記処理では、ステップＳ２５においてカウント値ＢＩＤ＿ＣＮＴの初期値を“０”以外に設定可能になっている。しかし、例えば、必ず磁気テープの先頭から書き込みを開始するという運用がなされる場合には、カウント値ＢＩＤ＿ＣＮＴの初期値を“０”に固定し、ステップＳ２１〜Ｓ２５の処理を省略してもよい。換言すると、図１０のようにカウント値ＢＩＤ＿ＣＮＴの初期値を“０”以外に設定可能にすることで、データを書き込み済みの磁気テープに対して、バックアップが要求された複数のファイルを追記することが可能になる。
【０１１９】
＜単独ファイル指定によるバックアップ処理＞
次に、ＯＳ１１０から単独ファイル指定によるバックアップ処理が要求された場合の処理について説明する。まず、図１２、図１３を用いて、単独ファイル指定によるバックアップ処理の比較例とその問題点について説明する。そして、図１４以降で本実施の形態でのバックアップ処理について説明する。
【０１２０】
図１２は、単独ファイル指定によるバックアップ処理の比較例を示す図である。図１２では、ファイルａａａのバックアップ処理、ファイルｂｂｂのバックアップ処理、ファイルｃｃｃのバックアップ処理が、それぞれ個別のバックアップ要求コマンドによってＯＳ１１０から要求されたものとする。また、ブロックサイズとして、ファイルａａａについては３２キロバイトが、ファイルｂｂｂについては２０キロバイト、ファイルｃｃｃについては１２キロバイトがそれぞれ指定されたものとする。
【０１２１】
バックアップ処理部１２０は、ファイルａａａのバックアップ処理が要求されると、ファイルａａａを３２キロバイトごとに分割して得られた４つのブロックの書き込みを、各ブロックに対応するｗｒコマンドによってテープドライブ２００に要求する。これらのｗｒコマンドはバッファモードで発行される。また、バックアップ処理部１２０は、４つのブロックの書き込みが完了すると、テープマークＴＭ１，ＴＭ２の書き込みをｔｍ１コマンド、ｔｍ２コマンドによってテープドライブ２００に要求する。ｔｍ１コマンドおよびｔｍ２コマンドはダイレクトモードで発行される。ここで、テープマークＴＭ２の書き込みを要求する理由は、ファイルの書き込みが終了した時点で、このファイルが記録された磁気テープを、他のテープドライブでも読み書き可能な状態にしておく必要があるからである。
【０１２２】
次に、バックアップ処理部１２０は、ファイルｂｂｂのバックアップ処理が要求されると、ファイルｂｂｂを２０キロバイトごとに分割して得られた４つのブロックの書き込みを、各ブロックに対応するｗｒコマンドによってテープドライブ２００に要求する。これらのｗｒコマンドはバッファモードで発行される。また、バックアップ処理部１２０は、４つのブロックの書き込みが完了すると、テープマークＴＭ１，ＴＭ２の書き込みをｔｍ１コマンド、ｔｍ２コマンドによってテープドライブ２００に要求する。ｔｍ１コマンドおよびｔｍ２コマンドはダイレクトモードで発行される。
【０１２３】
このようなファイルｂｂｂのバックアップ処理では、ファイルｂｂｂから得られた先頭ブロックの書き込み位置が、テープマークＴＭ１の次のブロックとされ、この先頭ブロックによってテープマークＴＭ２が上書きされる。これにより、ファイルｂｂｂの書き込み完了後の磁気テープにおいては、ファイルａａａに対応するブロックの次に、テープマークＴＭ１が記録され、その後にファイルｂｂｂに対応するブロックが記録される。これにより、ファイルとファイルとの間にテープマークＴＭ２が記録されて異常な書き込み状態になることが防止される。
【０１２４】
その後、バックアップ処理部１２０は、ファイルｃｃｃのバックアップ処理が要求されると、ファイルｃｃｃを１２キロバイトごとに分割して得られた４つのブロックの書き込みを、各ブロックに対応するｗｒコマンドによってテープドライブ２００に要求する。これらのｗｒコマンドはバッファモードで発行される。また、バックアップ処理部１２０は、４つのブロックの書き込みが完了すると、テープマークＴＭ１，ＴＭ２の書き込みをｔｍ１コマンド、ｔｍ２コマンドによってテープドライブ２００に要求する。ｔｍ１コマンドおよびｔｍ２コマンドはダイレクトモードで発行される。
【０１２５】
ファイルｃｃｃのバックアップ処理でも、ファイルｂｂｂの場合と同様に、ファイルｃｃｃから得られた先頭ブロックの書き込み位置がテープマークＴＭ１の次のブロックとされ、この先頭ブロックによってテープマークＴＭ２が上書きされる。
【０１２６】
図１３は、１つのファイルに続いて次のファイルが磁気テープに書き込まれる場合の処理例について示す図である。図１３では例として、図１２の処理のうち、ファイルａａａの次にファイルｂｂｂが書き込まれる場合を示す。なお、図１３に示す太線矢印は、磁気ヘッドが位置合わせされる位置が１ブロック分移動する動作を示し、太線矢印の方向は磁気テープの走行方向（すなわち、順方向への移動か、巻き戻し方向への移動か）を示す。
【０１２７】
単独ファイル指定によりバックアップ処理が行われる場合、上記のように、次のファイルの先頭ブロックの書き込み位置は、前のファイルに対応するテープマークＴＭ１の次のブロックとされる。このような位置合わせを行うために、バックアップ処理部１２０からテープドライブ２００に対して「ＥＯＤチェック」と呼ばれる動作が要求される。ＥＯＤチェックの要求は、図１０のステップＳ２４にも示したように、ＥＯＤへの位置合わせを指示するためのコマンドと、ＢＳＰＳコマンドとによって行われる。
【０１２８】
ＥＯＤへの位置合わせが指示されると、テープドライブ２００は、磁気テープを１ブロック分ずつ巻き戻しながらブロックの記録内容を読み出し、ファイルの最後尾ブロックの位置を検出する。図１３の例では、テープドライブ２００は、テープマークＴＭ２の読み出し、テープマークＴＭ１の読み出し、ファイルａａａの最後尾ブロックの読み出しを順に行う。これらの１回１回の読み出しのために、その都度リポジショニングが行われることになる。
【０１２９】
次に、テープドライブ２００は、テープマークＴＭ２の次のブロック位置を検出するために、磁気テープを順方向に走行させながら各ブロックの内容を読み出す。図１３の例では、テープドライブ２００は、ファイルａａａの最後尾ブロックの読み出し、テープマークＴＭ１の読み出し、テープマークＴＭ２の読み出し、その次のブロックの読み出しを行う。これらの１回１回の読み出しのために、その都度リポジショニングが行われることになる。テープドライブ２００は、テープマークＴＭ２の次に何も記録されていないことを確認して、磁気ヘッドをテープマークＴＭ２のブロックの末尾、すなわちＥＯＤに位置合わせする。
【０１３０】
次に、テープドライブ２００は、バックアップ処理部１２０からのＢＳＰＦコマンドに応じて、磁気ヘッドを１ブロック分だけ前のテープマークＴＭ１のブロックの末尾に位置合わせする。この位置合わせの際にもリポジショニングが行われる。
【０１３１】
以上の例のように、ファイルごとにバックアップ処理が要求される場合には、１つのファイルに続いて次のファイルを書き込む際に多数回のリポジショニングが発生する。前述のように、近年、１回のリポジショニングにかかる時間が長くなる傾向にあり、例えば、ＣＭＴのテープドライブでは３００ミリ秒程度だったのに対し、ＬＴＯ  Ｕｌｔｒｉｕｍのテープドライブでは５秒程度かかってしまう場合がある。このため、多数回のリポジショニングの発生により、バックアップ処理全体の時間が大幅に長くなってしまうという問題がある。
【０１３２】
なお、上記の図１３の例では、位置合わせのために多数回のリポジショニングが行われたが、これは位置合わせの精度を高めるための処理の一例である。磁気ヘッドの位置をテープマークＴＭ１のブロックの末尾に位置合わせするためには、テープマークＴＭ２を読み取るためのリポジショニングと、読み取ったテープマークＴＭ２の前に位置合わせするためのリポジショニングという、最低２回のリポジショニングが必要となる。このような最低２回のリポジショニングの発生により、バックアップ処理全体の時間が長くなってしまう。
【０１３３】
このような問題に対し、コマンド発行制御部１２２は、次のような処理を行うことで、単独ファイル指定によるバックアップ処理が連続して要求された場合のリポジショニングの発生回数を抑制する。
【０１３４】
（２−１）１つのファイルの書き込み後のｔｍ２コマンドの発行を非同期のタイミングで行う。
（２−２）ｔｍコマンド発行の契機として、リストアやダンプなどの磁気テープからのデータ読み出しを伴う処理が要求された場合、磁気テープの排出が要求された場合、バックアップ系コマンドの発行から一定時間処理が要求されずにタイムアウトが発生した場合とする。
【０１３５】
（２−３）コマンド発行による書き込み先ブロックのブロックＩＤをカウント値ＢＩＤ＿ＣＮＴを用いて管理し、新たなファイル書き込み時にテープドライブ２００から取得したブロックＩＤと照合する。
【０１３６】
（２−１）および（２−２）の処理により、単独ファイル指定によるバックアップ処理が、タイムアウトが発生しない時間間隔で連続して要求された場合、ファイル書き込み後のｔｍ２コマンドの発行が省略され、テープマークＴＭ２が磁気テープへ書き込まれなくなる。そして、次のファイルは前のファイルの終端のテープマークＴＭ１の次のブロックから書き込まれる。このとき、テープマークＴＭ２の位置から磁気テープを巻き戻してテープマークＴＭ１を検出することが行われなくなり、その結果、リポジショニングが行われなくなる。
【０１３７】
また、（２−２）に示すようなタイミングでテープマークＴＭ２が書き込まれることで、磁気テープを正常に利用できる状態に遷移させた後に、読み出しや排出が行われるようになる。また、（２−３）の処理は、新たなファイルの書き込みを、リポジショニングを行わずに開始できるかを判定するための処理である。
【０１３８】
図１４は、ｔｍ２コマンドの発行が省略される場合の例を示す図である。図１４では例として、ファイルａａａのバックアップ処理、ファイルｂｂｂのバックアップ処理が、それぞれ個別のバックアップ要求コマンドによってＯＳ１１０から要求されたものとする。
【０１３９】
まず、ＯＳ１１０からファイルａａａのバックアップ処理が要求されると、コマンド処理部１２１は、図１２の例と同様に、ファイルａａａから得られる４つのブロックについてのｗｒコマンドと、ｔｍ１コマンドと、ｔｍ２コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２は、４つのｗｒコマンドとｔｍ１コマンドについては、図１２の例と同様にテープドライブ２００に発行する。すなわち、４つのｗｒコマンドはそれぞれバッファモードでテープドライブ２００に発行され、ｔｍ１コマンドはダイレクトモードでテープドライブ２００に発行される。これにより、磁気テープには、ファイルａａａから得られる４つのブロックと、テープマークＴＭ１とが書き込まれる。
【０１４０】
しかし、コマンド発行制御部１２２は、ｔｍ２コマンドをテープドライブ２００に発行せずに、コマンド処理部１２１に対してｔｍ２コマンドの発行完了を通知する。また、コマンド発行制御部１２２は、ｔｍ２コマンドを発行しない代わりに、ＥＭフラグ１３４を“１”にする。以下、コマンド発行制御部１２２が、ｔｍ２コマンドを発行せずにＥＭフラグ１３４を“１”にし、コマンド処理部１２１にｔｍ２コマンドの発行完了を通知することを、“ｔｍ２コマンド発行のエミュレーション”と記載する場合がある。
【０１４１】
コマンド処理部１２１は、コマンド発行制御部１２２からｔｍ２コマンドの発行完了が通知されると、ＯＳ１１０に対してファイルａａａのバックアップが完了したことを報告する。この時点で、磁気テープには、ファイルａａａから得られた４つのブロックとテープマークＴＭ１とが記録された状態となり、磁気ヘッドはテープマークＴＭ１の次のブロックから書き込み可能な状態となっている。
【０１４２】
なお、コマンド発行制御部１２２は、前述の“複数ファイル指定によるバックアップ処理”と同様の手順で、カウント値ＢＩＤ＿ＣＮＴをカウントする。ファイルａａａの書き込みが磁気テープの先頭から行われたものとすると、ファイルａａａのバックアップ完了がＯＳ１１０に報告された時点で、カウント値ＢＩＤ＿ＣＮＴの値は“５”となっている。
【０１４３】
次に、ＯＳ１１０からファイルｂｂｂのバックアップ処理が要求されると、コマンド処理部１２１は、図１２の例と同様に、ファイルｂｂｂから得られる４つのブロックについてのｗｒコマンドと、ｔｍ１コマンドと、ｔｍ２コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２は、ファイルｂｂｂに対応する最初のｗｒコマンドの発行依頼を受けると、次のような処理を行う。
【０１４４】
コマンド発行制御部１２２は、テープドライブ２００にＲＤＢＩＤコマンドを発行して、磁気ヘッドの位置を示すブロックＩＤを取得する。コマンド発行制御部１２２は、取得したブロックＩＤと現在のカウント値ＢＩＤ＿ＣＮＴとを比較する。もし、ファイルａａａのバックアップ処理の後に磁気テープに対するアクセス処理が行われていない場合、取得したブロックＩＤと現在のカウント値ＢＩＤ＿ＣＮＴとは一致する。この場合、テープドライブ２００は、リポジショニングを行うことなく、テープマークＴＭ１の次のブロックから書き込みを開始できる状態にある。
【０１４５】
このため、コマンド発行制御部１２２は、テープドライブ２００にＥＯＤチェックを要求せずに、発行が依頼されたｗｒコマンドをバッファモードでテープドライブ２００に発行する。さらに、コマンド発行制御部１２２は、残りのｗｒコマンドもバッファモードでテープドライブ２００に発行し、さらにｔｍ１コマンドをダイレクトモードでテープドライブ２００に発行する。これにより、テープドライブ２００では、リポジショニングが行われずに、ファイルｂｂｂから得られた４つのブロックとテープマークＴＭ１とが磁気テープに書き込まれる。
【０１４６】
なお、コマンド発行制御部１２２は、ファイルａａａのバックアップ処理と同様に、ファイルｂｂｂのバックアップ処理でもｔｍ２コマンドについてはエミュレーションを行う。ただし、ＥＭフラグ１３４はすでに“１”であるので、この値が維持される。これにより、磁気テープにテープマークＴＭ２が書き込まれないまま、ＯＳ１１０にファイルｂｂｂのバックアップの完了が報告される。
【０１４７】
以上の処理により、ＯＳ１１０がファイルｂｂｂのバックアップを要求してからバックアップの完了報告を受けるまでの間に、リポジショニングが発生しなくなり、ファイルｂｂｂのバックアップにかかる時間が短縮される。
【０１４８】
また、コマンド発行制御部１２２は、新たなファイルの書き込みを開始する時点で、テープドライブ２００から取得したブロックＩＤと現在のカウント値ＢＩＤ＿ＣＮＴとを照合する。そして、これらの値が一致していた場合に、ＥＯＤチェックを要求せずにｗｒコマンドを発行する。これにより、リポジショニングを行わなくても、新たなファイルの書き込みをテープマークＴＭ１の次のブロックから開始できることを判定でき、データ書き込みの信頼性を向上させることができる。
【０１４９】
なお、上記の処理では、ＯＳ１１０からバックアップ要求を受けてその要求に応答するコマンド処理部１２１の処理手順は、図１２の比較例での処理手順と同じとなる。これにより、コマンド処理部１２１を実現するプログラムを変更せず、このプログラムに対して、コマンド発行制御部１２２を実現する新たなプログラムを追加するだけで、リポジショニングの発生回数を抑制する。したがって、バックアップ処理部１２０を実現するプログラムの開発コストの上昇を抑制できる。
【０１５０】
図１５は、エミュレーション後のｔｍ２コマンドの発行タイミングの例を示す図である。図１４に示した処理が終了した時点で、磁気テープには、ファイルａａａから得られた４つのブロック、テープマークＴＭ１、ファイルｂｂｂから得られた４つのブロック、テープマークＴＭ１の順にデータが記録されている。この状態では、末尾にテープマークＴＭ２が記録されていないため、この磁気テープはどのテープドライブでも読み書き可能な有効な状態になっていない。そこで、コマンド発行制御部１２２は、この磁気テープがバックアップ処理以外の用途で利用されるタイミングの直前に、ｔｍ２コマンドをテープドライブ２００に発行し、磁気テープを有効化する。
【０１５１】
上記の（２−２）に記載したように、ｔｍ２コマンドの発行タイミングとしては、リストアやダンプなどの磁気テープからのデータ読み出しを伴う処理が要求された場合、磁気テープの排出が要求された場合、バックアップ系コマンドの発行から一定時間処理が要求されずにタイムアウトが発生した場合がある。図１５では例として、データ読み出しまたは磁気テープの排出が要求された場合について示す。なお、ここではデータ読み出しおよびテープ排出はＯＳ１１０から要求されるものとするが、例えば、他のアプリケーションプログラムの実行に伴ってデータ読み出しおよびテープ排出が要求されてもよい。
【０１５２】
ＯＳ１１０からデータ読み出しまたはテープ排出が要求されると、コマンド処理部１２１は、要求に応じた処理を実行するためのコマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２は、ＥＭフラグ１３４を読み出す。ここで、ＥＭフラグ１３４が“１”である場合、テープドライブ２００にロードされた磁気テープについてｔｍ２コマンド発行のエミュレーションが実行済みであり、この磁気テープにはテープマークＴＭ２が記録されていない。この場合、コマンド発行制御部１２２は、ｔｍ２コマンドをテープドライブ２００に発行する。これにより、磁気テープにおけるデータ記録済み領域の末尾にテープマークＴＭ２が書き込まれ、この磁気テープが有効化される。
【０１５３】
コマンド発行制御部１２２は、テープマークＴＭ２の書き込みが正常に完了したことの通知を受けると、コマンド処理部１２１から依頼されたコマンドをテープドライブ２００に発行する。データ読み出しが要求された場合、テープドライブ２００から要求されたデータが読み出される。また、テープ排出が要求された場合、テープドライブ２００からテープカートリッジが排出される。
【０１５４】
発行したコマンドに対応する処理が正常に完了すると、コマンド発行制御部１２２は、コマンド処理部１２１にコマンドに応じた処理の実行完了を通知する。コマンド処理部１２１は、ＯＳ１１０に対して、要求された処理が正常に完了したことを報告する。
【０１５５】
なお、図示しないが、テープドライブ２００がテープマークＴＭ２の書き込みに失敗した場合には、コマンド発行制御部１２２は、現在のカウント値ＢＩＤ＿ＣＮＴをエラーメモ１３３に登録し、そのまま上記と同様の処理を継続する。この場合、磁気テープにテープマークＴＭ２が記録されないまま、ＯＳ１１０から要求された処理が継続する。エラーメモ１３３は、その後の書き込み処理や読み出し処理の際に参照される。エラーメモ１３を利用した処理については後述する。
【０１５６】
次に、単独ファイル指定によるバックアップ処理手順について、フローチャートを用いて説明する。
図１６は、コマンド発行依頼処理手順の例を示すフローチャートである。図１６の処理は、コマンド処理部１２１によって実行される。
【０１５７】
［ステップＳ７１］コマンド処理部１２１は、ＯＳ１１０から、バックアップ対象として１つのファイルが指定されたバックアップ要求コマンドを受信する。なお、受信したバックアップ要求コマンドには、ブロックサイズが指定されている。コマンド処理部１２１は、単独ファイル指定によるバックアップ処理が要求されたことをコマンド発行制御部１２２に通知する。
【０１５８】
［ステップＳ７２］コマンド処理部１２１は、指定されたファイルを、指定されたブロックサイズで分割して得られる１つのブロックについて、ｗｒコマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｗｒコマンドに対応する処理の完了応答が通知されると、次のステップＳ７３の処理が実行される。
【０１５９】
［ステップＳ７３］コマンド処理部１２１は、指定されたファイルから得られる全ブロックについて、ｗｒコマンドの発行を依頼済みかを判定する。ｗｒコマンドの発行を依頼済みでないブロックがある場合、ステップＳ７２の処理が実行される。一方、全ブロックについてｗｒコマンドの発行を依頼済みである場合、ステップＳ７４の処理が実行される。
【０１６０】
［ステップＳ７４］コマンド処理部１２１は、ｔｍ１コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｔｍ１コマンドに対応する処理の完了応答が通知されると、次のステップＳ７５の処理が実行される。
【０１６１】
［ステップＳ７５］コマンド処理部１２１は、ｔｍ２コマンドの発行をコマンド発行制御部１２２に依頼する。コマンド発行制御部１２２からｔｍ２コマンドに対応する処理の完了応答が通知されると、次のステップＳ７６の処理が実行される。
【０１６２】
［ステップＳ７６］コマンド処理部１２１は、ＯＳ１１０に対してバックアップ処理が完了したことを報告する。
以上の図１６によれば、コマンド処理部１２１は、コマンド発行制御部１２２においてｔｍ２コマンド発行のエミュレーションが行われたことを全く認識せずに処理を行う。
【０１６３】
図１７および図１８は、コマンド発行制御処理手順の例を示すフローチャートである。図１７および図１８の処理は、コマンド発行制御部１２２によって実行される。
［ステップＳ８１］図１６のステップＳ７１で、コマンド処理部１２１が単独ファイル指定によるバックアップ処理が要求されたことをコマンド発行制御部１２２に通知すると、このステップＳ８１の処理が開始される。コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、磁気ヘッドの現在位置を示すブロックＩＤをテープドライブ２００から取得する。ここでは、ブロックＩＤとして“Ｎ”が通知されたものとする。
【０１６４】
［ステップＳ８２］コマンド発行制御部１２２は、現在のカウント値ＢＩＤ＿ＣＮＴが“Ｎ”であるかを判定する。カウント値ＢＩＤ＿ＣＮＴが“Ｎ”でない場合、ステップＳ８３の処理が実行される。カウント値ＢＩＤ＿ＣＮＴが“Ｎ”である場合、ステップＳ８５の処理が実行される。
【０１６５】
［ステップＳ８３］カウント値ＢＩＤ＿ＣＮＴが“Ｎ”でない場合、前回のバックアップ処理の後に、バックアップ処理以外の処理が実行され、それによって磁気テープに対する磁気ヘッドの位置が変化してしまったと考えられる。このため、コマンド発行制御部１２２は、次のような処理により、カウント値ＢＩＤ＿ＣＮＴを磁気テープにおける書き込み済みの最終ブロックのブロック番号に合わせる。
【０１６６】
まず、コマンド発行制御部１２２は、磁気ヘッドをＥＯＤに位置合わせするように指示するコマンドをテープドライブ２００に発行する。テープドライブ２００では、磁気ヘッドをＥＯＤに位置合わせするためのリポジショニングが行われる。ここで、バックアップ処理が実行されている間、磁気テープにはテープマークＴＭ２が記録されない。このため、テープドライブ２００からは、最終のテープマークＴＭ１が記録されたブロックのブロックＩＤが通知される。
【０１６７】
［ステップＳ８４］コマンド発行制御部１２２は、通知されたブロックＩＤをカウント値ＢＩＤ＿ＣＮＴに設定する。
なお、ステップＳ８２でカウント値ＢＩＤ＿ＣＮＴが“Ｎ”である場合、前回のバックアップ処理の後にバックアップ処理以外の処理が実行されておらず、磁気ヘッドの位置が最終のテープマークＴＭ１が記録されたブロックの末尾になっている。このため、コマンド発行制御部１２２は、ステップＳ８３，Ｓ８４の処理を行わずに、ステップＳ８５以降の処理を実行する。これにより、単独ファイル指定によるバックアップ処理が連続して要求される場合には、リポジショニング（具体的には、テープマークＴＭ２のブロックを探索した後、その直前のテープマークＴＭ１のブロックを探索する動作）を行わずに次のファイルの書き込みを開始できる。したがって、バックアップ処理にかかる時間を短縮できる。
【０１６８】
［ステップＳ８５］コマンド発行制御部１２２は、コマンド処理部１２１からコマンドの発行依頼を受ける。コマンド発行制御部１２２は、発行が依頼されたコマンドがｗｒコマンドかを判定する。発行が依頼されたコマンドがｗｒコマンドである場合、ステップＳ８６の処理が実行され、ｗｒコマンドでない場合、図１８のステップＳ９１の処理が実行される。
【０１６９】
［ステップＳ８６］コマンド発行制御部１２２は、エラーメモ１３３に現在のカウント値ＢＩＤ＿ＣＮＴの値が登録されているかを判定する。登録されている場合、ステップＳ８９の処理が実行され、登録されていない場合、ステップＳ８７の処理が実行される。
【０１７０】
［ステップＳ８７］コマンド発行制御部１２２は、発行が依頼されたｗｒコマンドをバッファモードでテープドライブ２００に発行する。
［ステップＳ８８］コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴをカウントアップする。この後、ステップＳ８５の処理が実行される。
【０１７１】
［ステップＳ８９］コマンド発行制御部１２２は、エラーメモ１３３に登録された値をクリアする。
［ステップＳ９０］コマンド発行制御部１２２は、書き込みエラーが発生したことをコマンド処理部１２１に通知する。コマンド処理部１２１は、バックアップ処理が異常終了したことをＯＳ１１０に報告する。
【０１７２】
［ステップＳ９１］コマンド発行制御部１２２は、ステップＳ８５で発行が依頼されたコマンドがｔｍ１コマンドかを判定する。発行が依頼されたコマンドがｔｍ１コマンドである場合、ステップＳ９２の処理が実行され、それ以外のコマンドである場合、ステップＳ９４の処理が実行される。
【０１７３】
［ステップＳ９２］コマンド発行制御部１２２は、発行が依頼されたｔｍ１コマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ９３］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生せず、ステップＳ９２で発行したコマンドに応じた処理が正常に終了した場合、図１７のステップＳ８８の処理が実行される。一方、書き込みエラーが発生した場合、図１７のステップＳ９０の処理が実行される。
【０１７４】
［ステップＳ９４］コマンド発行制御部１２２は、ステップＳ８５で発行が依頼されたコマンドがｔｍ２コマンドかを判定する。発行が依頼されたコマンドがｔｍ２コマンドである場合、ステップＳ９６の処理が実行され、それ以外のコマンドである場合、ステップＳ９５の処理が実行される。
【０１７５】
［ステップＳ９５］コマンド発行制御部１２２は、発行が依頼されたコマンドをテープドライブ２００に発行し、そのコマンドに応じた処理を実行させる。処理が完了すると、その旨がコマンド処理部１２１を介してＯＳ１１０に通知され、バックアップ処理部１２０の処理が終了する。
【０１７６】
［ステップＳ９６］コマンド発行制御部１２２は、ＥＭフラグ１３４を“１”に設定する。なお、ＥＭフラグ１３４がすでに“１”である場合、その値が維持される。
［ステップＳ９７］コマンド発行制御部１２２は、書き込みが完了したことをコマンド処理部１２１に通知する。コマンド処理部１２１は、ファイルのバックアップ処理が正常に完了したことをＯＳ１１０に報告する。
【０１７７】
なお、ステップＳ９６，Ｓ９７により、“ｔｍ２コマンド発行のエミュレーション”が行われる。
次に、ファイルのバックアップ処理以外の処理について説明する。
【０１７８】
図１９は、データ読み出しまたは磁気テープ排出が要求された場合のコマンド発行制御処理手順の例を示すフローチャートである。
［ステップＳ１０１］ＯＳ１１０からバックアップ処理部１２０に対して、ファイルの読み出し、または磁気テープの排出が要求される。なお、これらの要求は、バックアップ処理プログラム以外のアプリケーションプログラムの実行によって要求されてもよい。コマンド処理部１２１は、コマンド発行制御部１２２に対して、データ読み出しまたはテープ排出を要求するためのコマンド発行を依頼する。
【０１７９】
［ステップＳ１０２］コマンド発行制御部１２２は、ＥＭフラグ１３４が“１”であるかを判定する。ＥＭフラグ１３４が“１”である場合、ステップＳ１０３の処理が実行され、“０”である場合、ステップＳ１０７の処理が実行される。
【０１８０】
［ステップＳ１０３］コマンド発行制御部１２２は、ＥＭフラグ１３４を“０”に更新する。また、コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴをカウントアップする。
【０１８１】
［ステップＳ１０４］コマンド発行制御部１２２は、ｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ１０５］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生せず、ステップＳ９２で発行したコマンドに応じた処理が正常に終了した場合、ステップＳ１０７の処理が実行される。一方、書き込みエラーが発生した場合、ステップＳ１０６の処理が実行される。
【０１８２】
［ステップＳ１０６］コマンド発行制御部１２２は、エラーメモ１３３に現在のカウント値ＢＩＤ＿ＣＮＴの値を上書きして登録する。
［ステップＳ１０７］コマンド発行制御部１２２は、コマンド処理部１２１から依頼されたコマンドをテープドライブ２００に発行する。このステップＳ１０７では、ステップＳ１０１でＯＳ１１０などから要求された内容に対応する１つ以上のコマンドの発行がコマンド処理部１２１から依頼され、コマンド発行制御部１２２は、依頼された各コマンドをテープドライブ２００に発行する。
【０１８３】
ここで、ステップＳ１０７の処理には、コマンド処理部１２１からのＢＳＢ（Backspace Block）コマンドの発行依頼が含まれる。ＢＳＢコマンドは、磁気ヘッドの位置を前のブロックの末尾に移動させることを要求するものであり、ステップＳ１０７の処理の中ではテープマークＴＭ２のブロックの確認に用いられる。しかし、上記のステップＳ１０５でエラーが発生した場合、磁気テープにはテープマークＴＭ２が記録されていないため、テープドライブ２００ではＢＳＢコマンドの受信に応じてエラーが発生する。そこで、次の図２０を用いて、このようなエラーが発生した場合の対処方法について説明する。
【０１８４】
図２０は、図１９のステップＳ１０７でＢＳＢコマンドの発行が依頼された場合の処理手順の例を示すフローチャートである。
［ステップＳ１０７ａ］コマンド発行制御部１２２は、コマンド処理部１２１からの発行依頼に応じて、ＢＳＢコマンドをテープドライブ２００に発行する。
【０１８５】
［ステップＳ１０７ｂ］テープドライブ２００でエラーが発生した場合には、ステップＳ１０７ｃの処理が実行される。一方、エラーが発生しなかった場合、図２０の処理は終了し、図１９のステップＳ１０７の処理が継続される。
【０１８６】
［ステップＳ１０７ｃ］コマンド発行制御部１２２は、エラーメモ１３３に現在のカウント値ＢＩＤ＿ＣＮＴの値が登録されているかを判定する。登録されている場合、ステップＳ１０７ｄの処理が実行され、登録されていない場合、ステップＳ１０７ｅの処理が実行される。
【０１８７】
［ステップＳ１０７ｄ］コマンド発行制御部１２２は、ＢＳＢコマンドに対応する処理が正常に終了したことをコマンド処理部１２１に報告する。これにより、ステップＳ１０７の処理が継続される。
【０１８８】
［ステップＳ１０７ｅ］コマンド発行制御部１２２は、ＢＳＢコマンドに対応する処理のエラーが発生したことをコマンド処理部１２１に報告する。コマンド処理部１２１は、ＯＳ１１０に対して異常発生を報告し、処理が終了される。
【０１８９】
図２１は、タイムアウト発生時の制御処理手順の例を示すフローチャートである。
［ステップＳ１２１］コマンド発行制御部１２２は、最後にバックアップ系コマンドを発行してから一定時間、コマンド処理部１２１からコマンドの発行が依頼されていない場合に、ステップＳ１２２以降の処理を実行する。なお、バックアップ系コマンドが発行されたタイミングとは、図１７のステップＳ８７または図１８のステップＳ９２である。
【０１９０】
［ステップＳ１２２］コマンド発行制御部１２２は、ＥＭフラグ１３４が“１”であるかを判定する。ＥＭフラグ１３４が“１”である場合、ステップＳ１２３の処理が実行される。一方、ＥＭフラグ１３４が“０”である場合、図２１の処理が終了される。
【０１９１】
［ステップＳ１２３］コマンド発行制御部１２２は、ＥＭフラグ１３４を“０”に更新する。また、コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴをカウントアップする。
【０１９２】
［ステップＳ１２４］コマンド発行制御部１２２は、ｔｍ２コマンドをダイレクトモードでテープドライブ２００に発行する。
［ステップＳ１２５］コマンド発行制御部１２２は、テープドライブ２００からの応答に基づいて、磁気テープへの書き込みエラーが発生したかを判定する。書き込みエラーが発生せず、ステップ１２４で発行したコマンドに応じた処理が正常に終了した場合、図２１の処理が終了される。一方、書き込みエラーが発生した場合、ステップＳ１２６の処理が実行される。
【０１９３】
［ステップＳ１２６］コマンド発行制御部１２２は、エラーメモ１３３に現在のカウント値ＢＩＤ＿ＣＮＴの値を上書きして登録する。
以上で説明したように、コマンド発行制御部１２２は、１つのファイルのバックアップの終了時に、テープマークＴＭ２を磁気テープに書き込まずに、バックアップ処理が正常に終了したことをコマンド処理部１２１に報告させる（図１８のステップＳ９５，Ｓ９６）。これにより、次のファイルの磁気テープへの書き込み開始時にリポジショニングが発生する確率が低減し、複数のファイルについてのバックアップ処理にかかる時間が短縮される。
【０１９４】
また、コマンド発行制御部１２２は、バックアップ時の書き込み先ブロックのブロックＩＤをカウント値ＢＩＤ＿ＣＮＴで管理する。そして、次のファイルの書き込み開始時に、テープドライブ２００から読み出したブロックＩＤとカウント値ＢＩＤ＿ＣＮＴとが一致した場合に、リポジショニングを省略してファイルの書き込みを開始させる。これにより、リポジショニングを行わずにファイルの書き込みを開始した場合でも、ファイルの書き込み開始位置の正確性を向上させることができる。
【０１９５】
また、コマンド発行制御部１２２は、ファイルのバックアップ処理が終了した後、バックアップ対象の磁気テープが利用されるタイミングの直前、具体的にはデータ読み出しの直前やテープ排出の直前に、磁気テープにテープマークＴＭ２を書き込む（図１９のステップＳ１０４）。これにより、ファイルのバックアップ処理にかかる時間に影響を与えないタイミングで、テープマークＴＭ２を書き込むことができる。これとともに、有効化された状態で磁気テープを利用させることができる。
【０１９６】
また、コマンド発行制御部１２２は、ファイルのバックアップ処理が終了してから一定時間処理が要求されなかったタイミングでも、磁気テープにテープマークＴＭ２を書き込む（図２１のステップＳ１２４）。これにより、ファイルのバックアップ処理にかかる時間に影響を与えないタイミングで、テープマークＴＭ２を書き込むことができる。
【０１９７】
また、コマンド発行制御部１２２は、磁気テープへのテープマークＴＭ２の書き込みに失敗した場合でも、この磁気テープを用いた処理を継続させる（図１９のステップＳ１０６、図２１のステップＳ１２６）。テープマークＴＭ２の書き込み処理は、実際に書き込みを要求する時点ではすでに正常に完了したことを報告済みの処理である。このため、コマンド発行制御部１２２は、書き込みに失敗した場合でも、そのことを報告せずに処理を継続することで、処理の整合をとる。また、テープマークＴＭ２の書き込みに失敗しても、ＯＳ１１０から書き込みが要求されたファイルの内容について書き込みに成功していれば、ユーザにとって実害はない。このため、テープマークＴＭ２が書かれていない磁気テープを継続して利用可能にすることで、ユーザの利便性を高めることができる。
【０１９８】
また、コマンド発行制御部１２２は、テープマークＴＭ２の書き込みに失敗したブロックのブロックＩＤをエラーメモ１３３に登録しておく。そして、エラーメモ１３３に基づき、ＢＳＢコマンドの発行に応じて当該ブロックでの読み出しエラーが発生したことを検知した場合にも、エラーの発生をＯＳ１１０に通知せずに処理を継続させる（図２０のステップＳ１０７ｄ）。これにより、上記のテープマークＴＭ２の書き込み失敗時と同様、処理の整合がとられるとともに、この磁気テープを継続して利用可能にし、ユーザの利便性が高められる。
【０１９９】
なお、図１９のステップＳ１０１でテープ排出が要求された場合には、図２０のステップＳ１０７ｄでは、例えばサーバ装置１００の管理者に、テープマークＴＭ２が記録されていない磁気テープが排出されたことが通知されることが望ましい。あるいは、テープ排出が要求された場合には、ステップＳ１０７ｃの判定処理が行われずに、無条件でステップＳ１０７ｅの処理が実行されてもよい。
【０２００】
＜複数ファイル指定と単独ファイル指定との併存＞
ところで、バックアップ処理部１２０は、次の図２２に示すような処理により、複数ファイル指定によるバックアップ処理がＯＳ１１０から要求された場合と、単独ファイル指定によるバックアップ処理がＯＳ１１０から要求された場合のどちらにも対応できる。
【０２０１】
図２２は、２種類のファイル指定方法に対応したコマンド発行制御処理手順の例を示すフローチャートである。
［ステップＳ１４１］図９のステップＳ１１または図１６のステップＳ７１で、コマンド処理部１２１がバックアップ処理が要求されたことをコマンド発行制御部１２２に通知すると、このステップＳ１４１の処理が開始される。コマンド発行制御部１２２は、複数ファイル指定と、単独ファイル指定のどちらによってバックアップ処理が要求されたかを判定する。
【０２０２】
ここで、複数ファイル指定によるバックアップ処理が要求された場合、ステップＳ１４２に進む。ステップＳ１４２以降では、図１０および図１１に示した処理のうちの最初の部分のみが変形された処理が実行される。一方、単独ファイル指定によるバックアップ処理が要求された場合、図１７の処理が最初のステップＳ８１から実行される。
【０２０３】
［ステップＳ１４２］コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、磁気ヘッドの現在位置を示すブロックＩＤをテープドライブ２００から取得する。ここでは、ブロックＩＤとして“Ｎ”が通知されたものとする。
【０２０４】
［ステップＳ１４３］コマンド発行制御部１２２は、Ｎ＝０であるか、すなわち、書き込み開始位置が磁気テープの先頭であるかを判定する。Ｎ＝０である場合、ステップＳ１４４の処理が実行される。Ｎ＝０でない場合、ステップＳ１４５の処理が実行される。
【０２０５】
［ステップＳ１４４］コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴに初期値として“０”を設定する。
［ステップＳ１４５］コマンド発行制御部１２２は、磁気ヘッドをＥＯＤに位置合わせするように指示するコマンドをテープドライブ２００に発行する。テープドライブ２００からこのコマンドに対する完了応答が送信されると、次のステップＳ１４６の処理が実行される。
【０２０６】
［ステップＳ１４６］コマンド発行制御部１２２は、ＥＭフラグ１３４が“１”であるかを判定する。ＥＭフラグ１３４が“０”の場合、ステップＳ１４７の処理が実行される。一方、ＥＭフラグ１３４が“１”の場合、ステップＳ１４８の処理が実行される。
【０２０７】
［ステップＳ１４７］コマンド発行制御部１２２は、ＢＳＰＦコマンドをテープドライブ２００に発行する。これにより、磁気ヘッドはテープマークＴＭ２の直前のテープマークＴＭ１のブロックの末尾に位置合わせされ、テープマークＴＭ１の次のブロックから書き込みを開始できるようになる。
【０２０８】
なお、ステップＳ１４６で“Ｙｅｓ”の場合には、磁気テープの最終ブロックにはテープマークＴＭ２ではなくテープマークＴＭ１が記録されているので、ステップＳ１４５の処理により磁気ヘッドはテープマークＴＭ１の末尾に位置している。このため、ステップＳ１４７の処理はスキップされる。
【０２０９】
［ステップＳ１４８］コマンド発行制御部１２２は、テープドライブ２００に対してＲＤＢＩＤコマンドを発行し、磁気テープにおける書き込み開始位置を示すブロックＩＤをテープドライブ２００から取得する。ここでは、ブロックＩＤとして“Ｍ”が通知されたものとする。コマンド発行制御部１２２は、カウント値ＢＩＤ＿ＣＮＴに初期値として“Ｍ”を設定する。
【０２１０】
ステップＳ１４４またはステップＳ１４８の実行後、図１０のステップＳ２６の処理が実行される。
なお、上記の各実施の形態に示した装置（情報処理装置１およびサーバ装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２１１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２１２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０２１３】
１  情報処理装置
２  テープドライブ
１１  残量検出部
１２  書き込み制御部
２１  磁気テープ
２２  バッファメモリ
【図１】
2016071766.tif 000003
【図２】
2016071766.tif 000004
【図３】
2016071766.tif 000005
【図４】
2016071766.tif 000006
【図５】
2016071766.tif 000007
【図６】
2016071766.tif 000008
【図７】
2016071766.tif 000009
【図８】
2016071766.tif 000010
【図９】
2016071766.tif 000011
【図１０】
2016071766.tif 000012
【図１１】
2016071766.tif 000013
【図１２】
2016071766.tif 000014
【図１３】
2016071766.tif 000015
【図１４】
2016071766.tif 000016
【図１５】
2016071766.tif 000017
【図１６】
2016071766.tif 000018
【図１７】
2016071766.tif 000019
【図１８】
2016071766.tif 000020
【図１９】
2016071766.tif 000021
【図２０】
2016071766.tif 000022
【図２１】
2016071766.tif 000023
【図２２】
2016071766.tif 000024