(57)【特許請求の範囲】
【請求項１】
テープ媒体からのデータ読み出しエラーを処理するテープ読出装置であって、
前記テープ媒体からデータ読み出し単位であるデータユニットごとデータを読み出す読出部と、
ホストコンピュータからのコマンドに従って、前記読出部によるデータの読み出しを制御し、前記データユニットの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部と、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、前記エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算する計算部と、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送る通信部と、
を含むテープ読出装置。
【請求項２】
前記エラー直前のデータユニットに含まれるレコード及び境界マークに関する情報は、前記エラー直前のデータユニットに含まれるレコード及び境界マークの各数と、前記テープ媒体の先頭から数えた前記エラー直前のデータユニットの１つ前のデータユニットまでのレコード及び境界マークの各数とであり、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報は、前記テープ媒体の先頭から数えた前記エラーが起こったデータユニットまでのレコード及び境界マークの各数である、請求項１記載のテープ読出装置。
【請求項３】
前記テープ媒体及び前記テープ読出装置はＬｉｎｅａｒ  Ｔａｐｅ  Ｏｐｅｎ（ＬＴＯ）規格に準拠し、前記エラー直前のデータユニットに含まれるレコード及び境界マークに関する情報は、前記エラー直前のデータユニットに含まれるデータユニットの内容を記載するＤａｔａ  Ｓｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ（ＤＳＩＴ）から取得し、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報は、前記エラー直後のデータユニットに含まれるＤＳＩＴから取得する、請求項２記載のテープ読出装置。
【請求項４】
計算された前記レコードの数分のダミーレコード及び計算された前記境界マークの数分の境界マークを生成する生成部を更に含み、
前記通信部は、前記数情報として、生成された前記ダミーレコード及び前記境界マークを前記ホストコンピュータへ送る、請求項１記載のテープ読出装置。
【請求項５】
前記生成部は、前記ホストコンピュータから前記テープ読出装置に対して発行されるコマンドにおいて指示された読み出しデータの長さをダミーレコードの長さとして、ダミーレコードを生成する、請求項４記載のテープ読出装置。
【請求項６】
前記通信部はＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）プロトコルに従って前記ホストコンピュータと通信し、
前記生成部は、Ｒｅａｄコマンドに含まれるＦｉｘｅｄＢｉｔ、Ｓｕｐｐｒｅｓｓ  Ｉｎｃｏｒｒｅｃｔ  Ｌｅｎｇｔｈ  Ｉｎｄｉｃａｔｏｒ（ＳＩＬＩ）Ｂｉｔ及びＴｒａｎｓｆｅｒＬｅｎｇｔｈ、並びにＭｏｄｅＳｅｌｅｃｔコマンドと共に事前に前記ホストコンピュータから送られるＢｌｏｃｋＤｅｓｃｒｉｐｔｏｒに含まれるＢｌｏｃｋＬｅｎｇｔｈに基づいてダミーレコードの長さを決定し、ダミーレコードを生成する、請求項５記載のテープ読出装置。
【請求項７】
前記通信部は、データがダミーであることを示すダミー情報と共に前記ダミーレコード及び前記境界マークを前記ホストコンピュータへ送る、請求項４記載のテープ読出装置。
【請求項８】
前記通信部はＳＣＳＩプロトコルに従って前記ホストコンピュータと通信し、
前記通信部は、更に、エラーが起こったことを知らせるためのＣｈｅｃｋＣｏｎｄｉｔｉｏｎ及びエラーの内容を知らせるための、ＳｅｎｓｅＫｅｙにＭｅｄｉｕｍＥｒｒｏｒをセットしたＳｅｎｓｅＤａｔａを前記ホストコンピュータへ送る、請求項７記載のテープ読出装置。
【請求項９】
ダミーレコードの長さを０とする０バイトブロックモードを設定可能である、請求項４記載のテープ読出装置。
【請求項１０】
読み出しエラーが起こった場合に読み出しエラーを返すだけのノーマル・オペレーション・モードと、読み出しエラーが起こった場合に読み出しエラーが起こった部分に含まれるレコードの数及び境界マークの数に関する数情報を返すレスキュー・モードのいずれかを設定可能である、請求項１記載のテープ読出装置。
【請求項１１】
前記ホストコンピュータは、前記テープ読出装置から受け取ったレコードの数と境界マークの数とによって次に読み出し可能なデータ位置を認識する、請求項１記載のテープ読出装置。
【請求項１２】
テープ媒体からのデータ読み出しエラーを処理するシステムであって、
テープ読出装置と、
前記テープ読出装置に接続されたホストコンピュータと、
を含み、
前記テープ読出装置は、
前記ホストコンピュータからデータ読出しコマンドを受け取る受信部と、
前記テープ媒体からデータの読み出し単位であるデータユニットごとデータを読み出す読出部と、
前記データ読出しコマンドに従って前記読出部によるデータの読み出しを制御し、前記データユニットの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部と、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算する計算部と、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送る送信部と、
を含み、
前記ホストコンピュータは、
前記データ読出しコマンドを前記テープ読出装置に送信する送信部と、
前記数情報を受信する受信部と、
前記数情報に基づいて、次に読み出し可能なデータの読出し位置を判断する判断部と
を含むテープ媒体からデータを読み出すシステム。
【請求項１３】
前記テープ読出装置は、計算された前記レコードの数分のダミーレコード及び計算された前記境界マークの数分の境界マークを生成する生成部を更に含み、
前記テープ読出装置の前記送信部は、データがダミーであることを示すダミー情報と共に、数情報として生成された前記ダミーレコード及び前記境界マークを前記ホストコンピュータへ送り、
前記判断部は、前記ダミー情報に基づいて、受信した前記ダミーレコード及び前記境界マークがダミーであるかどうかを判断してデータの読出し位置を判断する、
請求項１２に記載のシステム。
【請求項１４】
テープ媒体からのデータ読み出しエラーを処理するシステムであって、
テープ読出装置と、
前記テープ読出装置に接続されたホストコンピュータと、
を含み、
前記テープ読出装置は、
前記ホストコンピュータからデータ読出しコマンドを受け取る受信部と、
前記テープ媒体からデータの読み出し単位であるデータユニットごとデータを読み出す読出部と、
前記データ読出しコマンドに従って前記読出部によるデータの読み出しを制御し、前記データユニットの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部と、
前記読出部により読み出されたデータユニットを格納するバッファと、
前記バッファから、前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する第１情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する第２情報とを取り出し前記ホストコンピュータへ送る送信部と、
を含み、
前記ホストコンピュータは、
前記データ読出しコマンドを前記テープ読出装置に送信する送信部と、
前記第１情報及び第２情報を受信する受信部と、
前記第１情報及び第２情報に基づいて、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算してデータの読出し位置を判断する判断部と
を含むテープ媒体からデータを読み出すシステム。
【請求項１５】
テープ読出装置において、テープ媒体からのデータ読み出しエラーを処理する方法であって、
ホストコンピュータからデータ読出しコマンドを受け取るステップと、
前記データ読出しコマンドに従ってデータの読み出し単位であるデータユニットごとのデータの読み出しを制御し、前記データの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御するステップと、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び前記境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び前記境界マークの数を計算するステップと、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送るステップと、
を含むテープ媒体からデータを読み出す方法。
【請求項１６】
テープ読出装置と前記テープ読出装置に接続されたホストコンピュータとを含むシステムにおいて、テープ媒体からのデータ読み出しエラーを処理する方法であって、
前記テープ読出装置において、
前記ホストコンピュータからデータ読出しコマンドを受け取るステップと、
前記データ読出しコマンドに従ってデータの読み出し単位であるデータユニット単位でのデータの読み出しを制御し、前記データの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御するステップと、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算するステップと、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送信するステップと、
を含み、
前記ホストコンピュータにおいて、
前記データ読出しコマンドを前記テープ読出装置に送信するステップと、
前記数情報を受信するステップと、
前記数情報に基づいて、次に読み出し可能なデータの読出し位置を判断するステップとを含むテープ媒体からデータを読み出す方法。
【請求項１７】
前記テープ読出装置において、計算された前記レコードの数分のダミーレコード及び計算された前記境界マークの数分の境界マークを生成するステップを更に含み、
前記テープ読出装置における前記送信するステップは、データがダミーであることを示すダミー情報と共に、前記数情報として生成された前記ダミーレコード及び前記境界マークを前記ホストコンピュータへ送信するステップを含み、
前記判断するステップは、前記ダミー情報に基づいて、受信した前記ダミーレコード及び前記境界マークがダミーであるかどうかを判断してデータの読出し位置を判断するステップを含む、請求項１６に記載の方法。
【請求項１８】
テープ媒体からのデータ読み出しエラーを処理するテープ読出装置用のプログラムであって、前記テープ読出装置を、
前記テープ媒体からデータの読み出し単位であるデータユニットごとデータを読み出す読出部、
ホストコンピュータからのコマンドに従って前記読出部によるデータの読み出しを制御し、前記データユニットの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算する計算部、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送る通信部
として機能させるテープ読出装置用プログラム。
【請求項１９】
テープ読出装置と前記テープ読出装置に接続されたホストコンピュータとを含むシステム用のプログラムであって、
前記テープ読出装置を、
前記ホストコンピュータからデータ読出しコマンドを受け取る受信部、
前記テープ媒体からデータの読み出し単位であるデータユニットごとデータを読み出す読出部、
前記データ読出しコマンドに従って前記読出部によるデータの読み出しを制御し、前記データユニットの読み出しにおいてエラーが起こった場合に、前記エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部、
前記エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、前記エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算する計算部、
計算された前記レコードの数及び計算された前記境界マークの数に関する数情報を前記ホストコンピュータへ送る送信部、
として機能させ、
前記ホストコンピュータを、
前記データ読出しコマンドを前記テープ読出装置に送信する送信部、
前記数情報を受信する受信部、
前記数情報に基づいて、次に読み出し可能なデータの読出し位置を判断する判断部として機能させるシステム用のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピュータに接続されたテープ読出装置において回復不能な読み出しエラーが起こった場合に、迅速かつ適切にデータの読み出しを続けるための技術に関する。
【背景技術】
【０００２】
デジタルデータを磁気テープから読み出すテープドライブにおいて、磁気テープに記録されたデータの一部が何らかの理由で読み出し不能となることがある。回復不能な読み出しエラーが起こった場合、従来のテープドライブはホストコンピュータに読み出しエラーを報告し、そこで一旦読み出しを終了する。データの読み出しを続けるためには、ホストコンピュータのアプリケーションは、エラーが起こった部分を避けその後方よりデータを読み出す必要がある。【０００３】
ところで、ホストコンピュータは、ホストコンピュータからみたデータの最小単位であるレコードと１まとまりのレコードの境界を示すファイルマークとをいくつ読み込んだかでデータの読出し位置を管理する。一方、テープドライブは、ホストコンピュータとは異なるデータユニット単位でデータを磁気テープに記録する。そのため、データユニットには複数のレコード及びファイルマークが含まれることになる。しかし、レコードの長さは必ずしも一定とは限らない。またテープドライブはホストコンピュータから受け取ったデータを圧縮した後記録することも多い。そのため、データユニットが何らかの理由で読み出せない場合、ホストコンピュータはそこに含まれるレコードの数及びファイルマークの数を知ることができない。【０００４】
そこで、ホストコンピュータはエラーが起こった部分を避けるために、１）小刻みに読み出し位置を前に進め、その都度データを読み出すことができるかどうか試す、もしくは２）十分に離れた位置まで読み出し位置を移動し、読み出しを開始する、このいずれかを行わなければならない。しかし１）の方法では、何度もリトライが必要になり読出しに時間がかかる。一方２）の方法では、本来読み出し可能であったデータまでも捨ててしまうことになる。【０００５】
回復不能な読み出しエラーが起こった場合に、ホストコンピュータに次に読み出し可能なデータ位置を伝達する従来技術として、例えば特許文献１がある。特許文献１は、グループ単位でデータを扱ってテープを介して記録／再生を行うＡｄｖａｎｃｅｄ  Ｉｎｔｅｌｌｉｇｅｎｔ  Ｔａｐｅ（ＡＩＴ）規格に準拠したテープドライブ装置と、該テープドライブ装置を制御するホストシステムを対象とする。そして、特許文献１は、グループ単位のデータをホストシステムの最小処理単位であるセクタ単位に分配するにあたりグループの先頭とセクタの先頭を一致させることにより、再生エラー発生時には、グループの先頭のレコード番号とグループを構成するフレーム毎のエラー情報とをテープドライブ装置からホストシステムに返すだけで、ホストシステム側でエラーのあるセクタを計算できるようにする技術を開示する。【０００６】
【特許文献１】特許公開公報２００２−２５１８４３号（第４―５頁、第８頁）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の技術は、磁気テープ上に記録されたデータの長さがホストコンピュータで扱われるデータ長に換算可能であることを前提とする技術である。そのため、ホストコンピュータからみたデータの最小単位であるレコードの長さが可変であるという場合や、テープドライブがホストコンピュータからのデータを圧縮した後磁気テープに記録する場合には、特許文献１の技術を用いることはできず、ホストコンピュータにおいて次に読み出し可能な位置を迅速かつ適切に見つけることは依然として困難である。【０００８】
そこで本発明は、上記の課題を解決することができるテープ読出装置、システム、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成する本発明は、次のようなテープ媒体からのデータ読み出しエラーを処理するテープ読出装置によって実現される。
このテープ読出装置は、テープ媒体からデータ読み出し単位であるデータユニットごとデータを読み出すデータ読出部と、ホストコンピュータからのコマンドに従って、データ読出部によるデータの読み出しを制御し、データユニットの読み出しにおいてエラーが起こった場合に、エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出すよう制御する読出制御部と、エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する情報と、エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報とから、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算する計算部と、計算されたレコードの数及び計算された境界マークの数に関する数情報をホストコンピュータへ送信する通信部とを備える。【００１０】
好適には、エラー直前のデータユニットに含まれるレコード及び境界マークに関する情報は、エラー直前のデータユニットに含まれるレコード及び境界マークの各数と、テープ媒体の先頭から数えたエラー直前のデータユニットの１つ前のデータユニットまでのレコード及び境界マークの各数である。また、エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報は、テープ媒体の先頭から数えたエラーが起こったデータユニットまでのレコード及び境界マークの各数である。【００１１】
この場合、テープ媒体の先頭から数えたエラーが起こったデータユニットまでのレコードの数からテープ媒体の先頭から数えたエラー直前のデータユニットの１つ前のデータユニットまでのレコード数を引いた値を求める。そして、この値から更にエラー直前のデータユニットに含まれるレコード数を引くと、エラーが検出されたデータユニットに含まれるレコードの数が求まる。境界マークの数も同様にして求めることができる。【００１２】
更に好適には、上記テープ媒体及び上記テープ読出装置がＬｉｎｅａｒ  Ｔａｐｅ  Ｏｐｅｎ（ＬＴＯ）規格に準拠する。そして、エラー直前のデータユニットに含まれるレコード及び境界マークに関する情報は、エラー直前のデータユニットに含まれるデータユニットの内容を記載するＤａｔａ  Ｓｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ（ＤＳＩＴ）から取得する。また、エラー直後のデータユニットに含まれるレコード及び境界マークに関する情報は、エラー直後のデータユニットに含まれるＤＳＩＴから取得する。【００１３】
また好適には、上記テープ読出装置は、計算されたレコードの数分のダミーレコード及び計算された境界マークの数分の境界マークを生成する生成部を更に含み、上記通信部は、数情報として、生成されたダミーレコード及び境界マークをホストコンピュータへ送る。【００１４】
更に好適には、上記生成部は、ホストコンピュータからテープ読出装置に対して発行されるコマンドにおいて指示された読み出しデータの長さをダミーレコードの長さとして、ダミーレコードを生成する。または、上記テープ読出装置は、ダミーレコードの長さを０とする０バイトブロックモードを設定可能であり、０バイトブロックモードが設定されている場合、上記生成部は、長さが０のダミーレコードを生成する。【００１５】
また更に好適には、上記通信部はＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）プロトコルに従ってホストコンピュータと通信する。そして、上記生成部は、Ｒｅａｄコマンドに含まれるＦｉｘｅｄＢｉｔ、Ｓｕｐｐｒｅｓｓ  Ｉｎｃｏｒｒｅｃｔ  Ｌｅｎｇｔｈ  Ｉｎｄｉｃａｔｏｒ（ＳＩＬＩ）Ｂｉｔ及びＴｒａｎｓｆｅｒＬｅｎｇｔｈ、並びにＭｏｄｅＳｅｌｅｃｔコマンドと共に事前にホストコンピュータから送られるＢｌｏｃｋＤｅｓｃｒｉｐｔｏｒに含まれるＢｌｏｃｋＬｅｎｇｔｈに基づいてダミーレコードの長さを決定し、ダミーレコードを生成する。【００１６】
また好適には、上記通信部は、データがダミーであることを示すダミー情報と共にダミーレコード及び境界マークをホストコンピュータへ送る。更に好適には、上記通信部はＳＣＳＩプロトコルに従ってホストコンピュータと通信する。そして、上記通信部は、エラーが起こったことを知らせるためのＣｈｅｃｋＣｏｎｄｉｔｉｏｎ及びエラーの内容を知らせるための、ＳｅｎｓｅＫｅｙにＭｅｄｉｕｍＥｒｒｏｒがセットされたＳｅｎｓｅＤａｔａをホストコンピュータへ送る。【００１７】
また好適には、テープ読出装置は、読み出しエラーが起こった場合に読み出しエラーを返すだけのノーマル・オペレーション・モードと、読み出しエラーが起こった場合に読み出しエラーが起こった部分に含まれるレコードの数および境界マークの数に関する数情報を返すレスキュー・モードのいずれかを設定可能である。また、上記ホストコンピュータは、テープ読出装置から受け取ったレコードの数と境界マークとの数とによってデータ位置を認識する。【００１８】
また、上記の目的を達成する本発明は、テープ読出装置とテープ読出装置に接続されたホストコンピュータとを含む、次のようなテープ媒体からのデータ読み出しエラーを処理するシステムによって実現される。
このテープ読出装置は、ホストコンピュータからデータ読出しコマンドを受け取る受信部と、上述したテープ読出装置の読出部、読出制御部、計算部、生成部及び送信部（上述した通信部の一部）とを備える。
また、このホストコンピュータは、データ読出しコマンドをテープ読出装置に送信する送信部と、
計算されたレコードの数及び計算された境界マークの数に関する数情報を受信する受信部と、数情報に基づいて、データの読出し位置を判断する判断部とを備える。テープ読出装置から、データがダミーであることを示すダミー情報と共に、数情報として生成されたダミーレコード及び境界マークが送られる場合、判断部は、ダミー情報に基づいて、受信したダミーレコード及び境界マークがダミーであるかどうかを判断してデータの読出し位置を判断する。【００１９】
あるいは、テープ読出装置は、ホストコンピュータからデータ読出しコマンドを受け取る受信部と、上述したテープ読出装置の読出部、読出制御部、読出部により読み出されたデータユニットを格納するバッファ及びバッファから、エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する第１情報と、エラー直後のデータユニットに含まれるレコード及び境界マークに関する第２情報とを取り出しホストコンピュータへ送信する送信部（上述した通信部の一部）とを備える。
そして、ホストコンピュータは、  データ読出しコマンドをテープ読出装置に送信する送信部と、
第１情報及び第２情報を受信する受信部と、第１情報及び第２情報に基づいて、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算してデータの読出し位置を判断する判断部とを備える。【００２０】
以上、テープ媒体からのデータ読み出しエラーを処理するテープ読出装置及びテープ媒体からのデータ読み出しエラーを処理するシステムとして本発明を説明したが、本発明は、方法、プログラムまたはプログラムを格納した記憶媒体として把握することもできる。
【発明の効果】
【００２１】
本発明によれば、ホストコンピュータがテープ媒体に書き込むレコードの長さが一定とは限らず、また、データ圧縮後にデータがテープ媒体に記録される場合でも、テープ媒体からのデータ読み出しにおいて回復不能な読出しエラーが起こった場合に、ホストコンピュータにおいて、読出しエラーが起こったテープ媒体上のデータユニット内にどの程度のデータが含まれていたかを容易にかつ適切に推測することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。【００２３】
図１は、本発明の一実施形態に係るテープ媒体からのデータ読み出しエラーを処理するシステム１０の構成の一例を示す。本実施形態に係るテープ媒体からのデータ読み出しエラーを処理するシステム１０は、ホストコンピュータ４００からの読出しコマンドに応じてテープ読出装置１００がテープ媒体２００からデータを読み出す際に回復不能の読出しエラーが起こったとしても、エラーが起こったテープ媒体２００上の一部分にどの程度のデータが含まれていたかをホストコンピュータ４００が推測できるようにすることを目的とする。【００２４】
読み出しエラーを処理するシステム１０は、テープ媒体２００からデータを読み出すテープ読出装置１００と、テープ読出装置１００に接続されたホストコンピュータ４００とを備える。テープ読出装置１００とホストコンピュータ４００とは、ＳＣＳＩインターフェース、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク３００を介して接続される。また、テープ読出装置１００とホストコンピュータ４００とは、専用線またはインターネット等のネットワーク３００を介して接続されてもよい。なお、テープ読出装置１００は、ＳＣＳＩインターフェース、ＬＡＮ 等の通信インターフェースによってパーソナルコンピュータ等の情報処理装置に接続され、情報処理装置を介してネットワーク３００に接続されてもよい。【００２５】
テープ読出装置１００は、例えばＬＴＯ（Ｌｉｎｅａｒ  Ｔａｐｅ  Ｏｐｅｎ）規格のテープ記録装置であり、テープ媒体２００は、例えばＬＴＯ規格のテープ媒体である。なお、ＬＴＯ 規格とは、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ社、ＩＢＭ 社、Ｑｕａｎｔｕｍ社の３社が共同で開発したオープンフォーマットの規格である。【００２６】
テープ読出装置１００は、ホストコンピュータ４００からのデータ読出しコマンドに従って、テープ媒体２００からデータの読み出し単位であるデータユニットごとデータを読み出す。読み出しにおいてエラーが起こった場合は、テープ読出装置１００は、エラーが起こったデータユニットを読み飛ばして次に読み出し可能なエラー直後のデータユニットを読み出す。そして、テープ読出装置１００は、エラーが起こる直前に読み出されたデータユニットに含まれる該データユニットの内容に関する情報と、エラー直後のデータユニットに含まれる該データユニットの内容に関する情報とから、エラーが起こったデータユニットにどの程度データが含まれていたか、より詳しくは、エラーが起こったデータユニットに含まれるレコードの数及び１まとまりのレコードの境界を示す境界マークの数を計算する。なお、レコードと境界マークは、ホストコンピュータ４００から見た取り扱うデータの最小単位であり、ＳＣＳＩインターフェースでは、境界マークはファイルマークと呼ばれる。以下では、境界マークはファイルマークとして記載する。【００２７】
テープ読出装置１００は、計算されたレコードの数分のダミーレコードと、計算されたファイルマーク数分のファイルマークとを生成し、これらをデータがダミーであることを示すダミー情報と共にホストコンピュータ４００へ送る。ホストコンピュータ４００は、ダミー情報と共にダミーレコード及びファイルマークを受けとると、ダミー情報に基づいて、受信したダミーレコード及びファイルマークがダミーであるかどうかを判断する。【００２８】
以上のように、テープ読出装置１００が、読出しエラーが起こったテープ媒体の一部の前後のデータから、読出しエラーが起こったデータユニット（複数のデータユニットであり得る）に含まれるレコード及びファイルマークの数を計算し、計算した数に関する情報をホストコンピュータ４００へ伝えるので、ホストコンピュータ４００は、エラーが起こったテープ媒体２００の一部分にいくつレコード及びファイルマークが含まれていたかを推測できる。しかも、ここでは、テープ読出装置１００は数に関する情報を該数分のダミーレコード及びファイルマークとしてホストコンピュータ４００に送るので、データの読出しが中断されることもない。  【００２９】
図２（ａ）は、本実施形態に係るテープ媒体２００における記録領域の構成の一例を示す。ここではＬＴＯ規格のテープ媒体２００について説明する。ＬＴＯデータフォーマットでは、ホストコンピュータ４００から受け取ったレコード及びファイルマークは一旦圧縮され、その後、ＤａｔａＳｅｔ（ＤＳ）２０１と呼ばれる単位でテープ媒体２００に記録される。図２（ａ）に示すように、ＤＳ２０１には、テープ媒体２００の先頭位置、すなわちＢｅｇｉｎｉｎｇ  Ｏｆ  Ｔａｐｅ（ＢＯＴ）から順に番号が振られる。また、図２（ｂ）に示すようにＤＳは、データ領域２０３とＤａｔａ  Ｓｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ（ＤＳＩＴ）２０５の２つの領域からなる。データ領域２０３は、その名の通りデータが記録される領域であり、ＤＳＩＴ２０５には、データ領域の内容が記載される。【００３０】
本発明では、エラーが起こったＤＳに含まれるレコード数とファイルマーク数を計算するために、ＤＳＩＴ２０５に含まれる複数の情報のうち、次の情報、すなわち、ＤＳＩＴ２０５が含まれるＤＳ２０１の番号、ＤＳ２０１に含まれるレコード及びファイルマークの数、ＢＯＴから直前のＤＳ２０１までに含まれるレコード及びファイルマークの数、ならびにＴａｐｅＷｉｔｅＰａｓｓ（ＴＷＰ）が使用される。ここでＴＷＰはデータが古いかどうかを判断するために利用されるもので、データが最初に記録されるときその値は１であり、その後データが上書きされる度に値は１増加する。【００３１】
図３を参照して、ＴＷＰによってデータの新旧を判断する方法を説明する。図３（ａ）に示すように、最初テープ媒体２００にはデータがＤＳ＃Ｎ−１  ２１１からＤＳ＃Ｎ＋１  ２１５まで記録されている。いずれのＤＳもテープ媒体２００に初めて書き込まれたものであるため、そのＴＷＰの値は１を示している。次にこの状態のテープ媒体２００に更にデータを上書きした状態を、図３（ｂ）に示す。ＤＳ＃Ｎ−１  ２１１をみると、データが上書きされているため、ＴＷＰの値が１増え、２となっている。次に、ＤＳ＃Ｎ  ２１３をみると、テープ媒体２００の表面のダメージにより書き込みができなくなっている。ＬＴＯ規格では、このように何らかの理由でテープ媒体２００にデータを書き込むことができない場合、テープ媒体２００上の問題ある部分から４メートル以内であれば、書き込みを続けることを許可している。そのため、図３ｂ）では、問題の起きたＤＳ＃Ｎ  ２１３をとばして、ＤＳ＃Ｎ＋１  ２１５の位置に、ＤＳ＃Ｎが上書きされている。ＤＳ＃Ｎ２１５は上書きされたデータであるため、そのＴＷＰの値は１増加され、２となっている。【００３２】
ここで、図３（ｂ）の状態のテープ媒体２００からデータを読み出すとなると、番号ＮのＤＳが２つ存在することになる。そこで、ＴＷＰの値を見てみると、ＤＳ＃Ｎ  ２１３では１となっており、ＤＳ＃Ｎ  ２１５では２となっている。従って、ＴＷＰの値の大きいＤＳ＃Ｎ２１５のデータが新しいデータであることが分かる。このように、ＬＴＯ規格ではＴＷＰの値をみることでデータの新旧を判断できるようにしている。なお、ここではＬＴＯ規格のテープ媒体２００について説明したが、上述したＤＳＩＴに含まれる情報に相当する情報をデータユニットごとに記載するフォーマットを採用する規格であれば、本発明を適用可能であることはいうまでもない。  【００３３】
図４は、本実施形態に係るテープ読出装置１００の機能構成の一例を示す。テープ読出装置１００は、通信部１１０と、バッファ１２０と、読出部１３０と、コントローラ１３５とを含む。コントローラ１３５は、テープ読出装置１００全体を制御し、更に、読出制御部１４０と、計算部１５０と、生成部１６０とを含む。通信部１１０は、ホストコンピュータ４００と通信を行い、受信部及び送信部として認識することもできる。なお、以下では、テープ読出装置１００とホストコンピュータ４００との通信は、ＳＣＳＩインターフェースに従うものとする。通信部（受信部）１１０はホストコンピュータ４００から読出しコマンドを受け取る。【００３４】
読出部１３０は、テープ媒体２００からデータ読み出し単位であるデータユニット、すなわちＤＳごとデータを読み出しバッファ１２０に格納する。読出制御部１４０は、ホストコンピュータ４００の読出しコマンドに従って、読出部１３０によるデータの読み出しを制御する。ＤＳの読み出しにおいてエラーが起こった場合、読出制御部１４０は、エラーが起こったＤＳを読み飛ばし次に読み出し可能なエラー直後のＤＳを読み出しバッファ１２０に格納するよう読出部１３０を制御する。図５に示すテープ媒体２００を例に説明すると、読出部１３０は、ＤＳ２２１を読み出した後、読出しエラーが起こったＤＳ２２３（複数のＤＳであり得る）を読み飛ばし、次に読出し可能なエラー直後のＤＳ２２５をバッファ１２０に格納する。【００３５】
計算部１５０は、エラーが起こる直前に読み出されたエラー直前のＤＳ２２１に含まれるレコード及びファイルマークに関する情報と、エラー直後のＤＳ２２５に含まれるレコード及びファイルマークに関する情報をバッファ１２０から読出し、エラーが起こったＤＳ２２３（複数のＤＳであり得る）に含まれるレコードの数及びファイルマークの数を計算する。以下、計算について詳細に説明する。【００３６】
計算部１５０は、エラー直前のＤＳ２２１のＤＳＩＴから、ＴＷＰｎ、ＤＳ２２１の番号ＤＳｎ、ＢＯＴから直前のＤＳまでに含まれるレコードの数Ｒｎ及びファイルマークの数Ｆｎ、ＤＳ２２１に含まれるレコードの数ｒｎ及びファイルマークの数ｆｎを取り出す。また、計算部１５０は、エラー直後のＤＳ２２５のＤＳＩＴから、ＴＷＰｍ、ＤＳ２２１の番号ＤＳｍ、ＢＯＴから直前のＤＳまでに含まれるレコードの数Ｒｍ及びファイルマークの数Ｆｍを取り出す。【００３７】
ここで、ＤＳ２２３（複数のＤＳであり得る）に含まれるレコードの数等を計算する前に、計算部１５０はまず読み出したエラー前後のＤＳ２２１とＤＳ２２５のデータの連続性を確認する。データの不連続は、上述したように、例えばデータを上書きする際にテープ媒体２００の表面のダメージ等により書き込みエラーが生じ結果古いデータが残る場合に起きる。このような古いデータは破棄すべきものであるため、本発明では最初にデータの連続性を確認する。【００３８】
データの連続性の確認は、次の４つの条件式により確認することができる。
Ｒｍ  ＞  ＝  Ｒｎ  、
Ｆｍ  ＞  ＝  Ｆｎ  、
ＴＷＰｍ  ＞  ＝  ＴＷＰｎ、
ＤＳｍ    ＞  ＤＳｎ 
エラー前後のＤＳ２２１とＤＳ２２５に対し、上記４つの条件式すべてが満たされる場合、ＤＳ２２１とＤＳ２２５は連続しているといえる。上記４つの条件式のいずれか１つでも満たされない場合、計算部１５０はエラー直後のＤＳ２２５を破棄し、ＤＳ２２５に続いて読み出した次のＤＳについて同様の検査を繰り返す。ここでは、ＤＳ２２１とＤＳ２２５についてデータの連続性が確認できたものとする。【００３９】
データの連続性が確認できると、計算部１５０はエラーが起こったＤＳ２２３（複数のＤＳであり得る）に含まれるレコードの数及びファイルマークの数を計算する。ＢＯＴからＤＳ２２１の直前のＤＳまでに含まれるレコードの数Ｒｎ及びファイルマークの数Ｆｎと、ＤＳ２２１に含まれるレコードの数ｒｎ及びファイルマークの数ｆｎとの間には次の関係式がなりたつ。  
Ｒｎ＋１  ＝  Ｒｎ  ＋  ｒｎ
Ｆｎ＋１  ＝  Ｆｎ  ＋  ｆｎ
従って、エラーが起こったＤＳ２２３（複数のＤＳであり得る）に含まれるレコードの数ｒｘとファイルマークの数ｆｘは、次の式により求めることができる。
ｒｘ  ＝  Ｒｍ  ―  Ｒｎ  ―  ｒｎ
ｆｘ  ＝  Ｆｍ  ―  Ｆｎ  ―  ｆｎ【００４０】
上記式から計算部１５０によってレコードの数及びファイルマークの数が計算されると、通信部（送信部）１１０は、その数情報をホストコンピュータ４００へ送る。本発明の一実施形態に係るテープ読出装置１００では、通信部（送信部）１１０は、計算されたレコードの数及び計算されたファイルマークの数を、エラー情報とともに、そのままホストコンピュータ４００へ送る。この場合、ホストコンピュータ４００は、データの読み出しを続けるために、計算されたレコードの数及び計算されたファイルマークの数に基づいて次のデータ読出し位置を指定する必要がある。【００４１】
そこで、本発明の他の実施形態に係るテープ読出装置１００は、データの読出しが中断することがないよう、計算されたレコードの数分のダミーレコード及び計算されたファイルマークの数分のファイルマークを生成する生成部１６０を更に含む。そして、通信部（送信部）１１０は、数情報として、生成されたダミーレコード及びダミーのファイルマークをホストコンピュータ４００へ送る。この場合、生成部１６０は、ホストコンピュータ４００からテープ読出装置１００に対して送られる命令において指示された読み出しデータの長さをダミーレコードの長さとしてダミーレコードを生成することができる。具体的には、生成部１６０は、ホストコンピュータ４００から送られるＲｅａｄコマンドに含まれるＦｉｘｅｄＢｉｔ、Ｓｕｐｐｒｅｓｓ  Ｉｎｃｏｒｒｅｃｔ  Ｌｅｎｇｔｈ  Ｉｎｄｉｃａｔｏｒ（ＳＩＬＩ）Ｂｉｔ及びＴｒａｎｓｆｅｒＬｅｎｇｔｈ、また、Ｒｅａｄコマンドに先立ってＭｏｄｅＳｅｌｅｃｔコマンドと共にホストコンピュータ４００から送られるＢｌｏｃｋＤｅｓｃｒｉｐｔｏｒに含まれるＢｌｏｃｋＬｅｎｇｔｈに基づいてダミーレコードの長さを決定する。【００４２】
ダミーレコードの長さを決定する具体的な方法を説明する前に、まずＳＣＳＩコマンドについて説明する。ＭｏｄｅＳｅｌｅｃｔコマンドは、読出しや書込みをテープドライブに指示する前にテープドライブに構成データを送るためのコマンドである。ＭｏｄｅＳｅｌｅｃｔコマンドと一緒に送られるＭｏｄｅＤａｔａには８ＢｙｔｅのＢｌｏｃｋＤｅｓｃｒｉｐｔｏｒ（ＢＤ）フィールドが定義されており、ＢＤフィールドの５〜７Ｂｙｔｅに定義されているＢｌｏｃｋＬｅｎｇｔｈは、例えば、一連の読出し操作において使用される論理ブロックの長さとして使用される。【００４３】
次に、Ｒｅａｄコマンドについて説明する。Ｒｅａｄコマンドでは、１Ｂｙｔｅ１ＢｉｔにＳｕｐｐｒｅｓｓ  Ｉｎｃｏｒｒｅｃｔ  Ｌｅｎｇｔｈ  Ｉｎｄｉｃａｔｏｒ（ＳＩＬＩ）フィールド、１Ｂｙｔｅ０ＢｉｔにＦｉｘｅｄフィールド、２Ｂｙｔｅ〜４ＢｙｔｅにＴｒａｎｓｆｅｒＬｅｎｇｔｈフィールドが定義されている。Ｆｉｘｅｄフィールドが１に設定され、ＴｒａｎｓｆｅｒＬｅｎｇｔｈフィールドが０でなく、かつＳＩＬＩが０に設定される場合、ＢｌｏｃｋＬｅｎｇｔｈの長さのブロックが読み出されホストコンピュータに返される。このとき、ＴｒａｎｓｆｅｒＬｅｎｇｔｈフィールドの値は、ホストコンピュータに返すべきブロックの数を示す。一方、ＳＩＬＩが１に設定されている場合、テープドライブはホストコンピュータにＣｈｅｃｋＣｏｎｄｉｔｉｏｎステータスを返す。【００４４】
ＣｈｅｃｋＣｏｎｄｉｔｉｏｎステータスは、エラーや警告をホストコンピュータに伝える必要がある場合にテープドライブが受け取ったＳＣＳＩコマンドに対して返すものである。ＣｈｅｃｋＣｏｎｄｉｔｉｏｎステータスは問題があることのみを伝えるものであるため、エラーの詳細を通知するためにテープドライブは更にＳｅｎｓｅＤａｔａを返す。ＳｅｎｓｅＤａｔａには２Ｂｙｔｅ０〜３ＢｉｔにＳｅｎｓｅＫｅｙフィールドが定義されており、ＳｅｎｓｅＫｅｙフィールドによってエラーの内容が示される。なお、このＳｅｎｓｅＤａｔａは、ＦｉｂｅｒＣｈａｎｎｅｌ等のシリアルＳＣＳＩでは、ＣｈｅｃｋＣｏｎｄｉｔｉｏｎと同時にホストコンピュータへ返すことができる。一方、パラレルＳＣＳＩでは、ＳｅｎｓｅＤａｔａは、エラーの詳細を知るためにホストコンピュータから発行されるＲｅｑｕｅｓｔＳｅｎｓｅコマンドに対して送ることができる。【００４５】
Ｒｅａｄコマンドに戻って、Ｆｉｘｅｄフィールドが０に設定され、かつＴｒａｎｓｆｅｒＬｅｎｇｔｈフィールドが０でない場合、ＴｒａｎｓｆｅｒＬｅｎｇｔｈの長さの単一ブロックが読み出される。但し、このときＳＩＬＩフィールドが０に設定されていると、読み出すことができるデータの長さやＢｌｏｃｋＬｅｎｇｔｈの値に応じてＣｈｅｃｋＣｏｎｄｉｔｉｏｎステータスの報告が必要となることがある。【００４６】
本発明の一実施形態に係るテープ読出装置１００では、上述したＳＣＳＩコマンドを利用してホストコンピュータ４００へ返すダミーレコードの長さを推測し、決定する。すなわち、ＲｅａｄコマンドにおいてＦｉｘｅｄフィールドが１に設定されている場合、生成部１６０はＢｌｏｃｋＬｅｎｇｔｈの長さをダミーレコードの長さとする。また、Ｆｉｘｅｄフィールドが０に設定されている場合、生成部１６０はＴｒａｎｓｆｅｒＬｅｎｇｔｈの長さをダミーレコードの長さとする。但し、Ｆｉｘｅｄフィールドが０、かつ、ＳＩＬＩフィールドが１に設定されている場合には、生成部１６０はＢｌｏｃｋＬｅｎｇｔｈが０でない限りＢｌｏｃｋＬｅｎｇｔｈの長さをダミーレコードの長さとする。【００４７】
ここで、ダミーレコードの長さをゼロとして返す０バイトブロックモードを新たに定義し、レコード長の推測をテープ読出装置１００に頼らないようにすることもできる。この場合、通常のデータ読出し手順に従ってエラーが起こった部分に含まれるレコードの数とファイルマークの数とがホストコンピュータ４００に送られるので、上述した計算されたレコードの数及び計算されたファイルマークの数を単純にホストコンピュータ４００に返すのと違い、データ読出しが中断されることはない。なお、０バイトブロックモードは、例えばＭｏｄｅＳｅｌｅｃｔコマンドにより、テープ読出装置１００に設定できる。【００４８】
通信部（送信部）１１０は、生成部１６０により生成された上記ダミーレコードとファイルマークを、データがダミーであることを示すダミー情報と共にホストコンピュータ４００に送る。一例として、
通信部（送信部）１１０は、ＣｈｅｃｋＣｏｎｄｉｔｉｏｎとＳｅｎｓｅＤａｔａとをホストコンピュータ４００に送る。【００４９】
図６は、本実施形態に係るホストコンピュータ４００の機能構成の一例を示す。ホストコンピュータ４００は、送信部４１０と、受信部４２０と、判断部４３０とを含む。送信部４１０は、上述したＭｏｄｅＳｅｌｅｃｔコマンド、Ｒｅａｄコマンド等、読出しに関するコマンドをテープ読出装置１００に送信する。受信部４２０は、テープ読出装置１００から、数情報を受信する。そして、判断部４３０は、数情報に基づいて、データ読出し位置を判断する。好ましい実施形態では、受信部４２０は、テープ読出装置１００から、ダミー情報と共に、数情報としてダミーレコード及びファイルマークを受信する。そして、判断部４３０は、ダミー情報に基づいて、数情報として受信したレコード及びファイルマークがダミーであるかどうかを判断する。上述したように、テープ読出装置１００は、一例として、ＣｈｅｃｋＣｏｎｄｉｔｉｏｎとＳｅｎｓｅＤａｔａとをホストコンピュータ４００へ返す。ホストコンピュータ４００はＣｈｅｃｋＣｏｎｄｉｔｉｏｎを受け取ったことから何らかの問題がおきたことを知り、エラー内容を知るためにＳｅｎｓｅＤａｔａを調査する。そして、ホストコンピュータ４００は、ダミー情報としてのＳｅｎｓｅＫｅｙにＭｅｄｉｕｍＥｒｒｏｒがセットされている場合に受け取ったレコード及びファイルマークがダミーであると判断する。【００５０】
以上のように、本発明の実施形態に係るテープ読出装置１００によれば、読出しエラーが起こった場合でも、エラーが起こった部分に含まれるレコード数及びファイルマーク数が計算され、ホストコンピュータ４００に伝えられるので、受け取ったレコードの数とファイルマーク数とによってデータの読出し位置を管理するホストコンピュータ４００において、正しくデータ位置を認識し管理することができる。しかし、読出しエラーが起こった場合にエラーの原因を詳しく調査する等、読出しを一旦中断することを希望する場合も考えられる。そこで、読み出しエラーが起こった場合に読み出しエラーを返すだけのノーマル・オペレーション・モードと、読み出しエラーが起こった場合に読み出しエラーが起こった部分に含まれるレコードの数とファイルマークの数を返すレスキュー・モードの２つを用意し、ホストコンピュータ４００がモードを選択してテープ読出装置１００に設定できるようにしてもよい。モードの設定は、例えばＭｏｄｅＳｅｌｅｃｔコマンドにより、行うことができる。【００５１】
次に、図７乃至図９のフローチャートを参照して、本実施形態に係るテープ読出装置１００の動作を説明する。図７のステップ１００において、通信部（受信部）１１０は、ホストコンピュータ４００からデータ読出しコマンド、すなわちＲｅａｄコマンドを受信する。読出部１３０は、読出制御部１４０の制御により、Ｒｅａｄコマンドに従ってテープ媒体２００からＤＳ単位でデータを読出す（Ｓ１１０）。データの読み出しにおいてエラーが起こった場合（Ｓ１２０：ＹＥＳ）、処理はステップ１３０へ進みエラー処理が実行される。一方、問題なくＤＳが読み出された場合（Ｓ１２０：ＮＯ）、読出部１３０は、読み出したＤＳをバッファ１２０に格納する（Ｓ１４０）。複数のＤＳがバッファ１２０に格納された時点で、通信部（送信部）１１０は、該複数のＤＳをホストコンピュータ４００へ送る（Ｓ１５０）。そして処理は終了する。【００５２】
次に、ステップ１３０のエラー処理を、図８のフローチャートを参照して説明する。データの読み出しにおいてエラーが起こった場合、読出制御部１４０は、エラーが起こったＤＳを読み飛ばして次に読み出し可能なエラー直後のＤＳを読み出すよう、読出部１３０を制御する（Ｓ２００）。読出部１３０は、読み出したエラー直後のＤＳをバッファ１２０に格納する。計算部１５０は、バッファ１２０に格納されたエラー直前のＤＳのＤＳＩＴとエラー直後のＤＳのＤＳＩＴとから、それぞれ、エラー直前のＤＳに含まれるレコード及びファイルマークに関する情報、エラー直後のＤＳに含まれるレコード及びファイルマークに関する情報を取り出し、エラーが起こったＤＳ（複数のＤＳであり得る）に含まれるレコードの数及びファイルマークの数を計算する（Ｓ２１０）。具体的な計算方法は上記説明したとおりであり繰り返しを避けるためここでは省略する。その後、生成部１６０は、計算されたレコードの数分のダミーレコードと計算されたファイルマーク数のファイルマークとを生成し、通信部（送信部）１１０は生成されたダミーレコードとファイルマークをダミー情報と共にホストコンピュータ４００へ送信する（Ｓ２２０）。【００５３】
次に、ステップ２２０の処理を図９のフローチャートを参照して説明する。計算部１５０により計算された、エラーが起こったＤＳに含まれるレコードの数をｒｘ、ファイルマークの数をｆｘとする。処理はステップ３００から始まり、まず、生成部１６０は、ｒｘ、ｆｘをそれぞれ初期値として変数ｒ、変数ｆに代入する。次にステップ３１０において、生成部１６０は、変数ｒ、変数ｆの値を調べ、いずれも０であれば処理を終了する（Ｓ３１０：ＹＥＳ）。ステップ３１０でＮＯの場合、生成部１６０は更に変数ｒの値が０より大きいかどうか調べる。初めてステップ３１０、ステップ３２０の判断を行う場合は、変数ｒの値は０より大きいので、ダミーレコードの長さを決定するために次のステップ３３０へ進むことになる。【００５４】
変数ｒの値が０より大きい場合（Ｓ３２０：ＹＥＳ）、生成部１６０は、ＲｅａｄコマンドのＦｉｘｅｄフィールドを調べる（Ｓ３３０）。本発明の実施形態に係るテープ読出装置１００では、生成部１６０は、Ｆｉｘｅｄが１に設定されていない場合直ちにＲｅａｄコマンドのＴｒａｎｓｆｅｒＬｅｎｇｔｈの値をダミーレコードの長さとするのでなく、上記で説明したように、ＲｅａｄコマンドのＳＩＬＩフィールドを調べ、ＳＩＬＩが１に設定されている場合には、事前にホストコンピュータ４００から指定されているＢｌｏｃｋＬｅｎｇｔｈの値が０でない限りＢｌｏｃｋＬｅｎｇｔｈの値をダミーレコードの長さとする。そこで、ステップ３３０でＮＯの場合、生成部１６０は、ＲｅａｄコマンドのＳＩＬＩフィールドを調べる（Ｓ３４０）。ＳＩＬＩが１に設定されている場合（Ｓ３４０：ＹＥＳ）、生成部１６０は、更にＢｌｏｃｋＬｅｎｇｔｈの値を調べ（Ｓ３５０）、０でない場合（Ｓ３５０：ＮＯ）、ＢｌｏｃｋＬｅｎｇｔｈの値をダミーレコードの長さとする（Ｓ３６０）。【００５５】
ＳＩＬＩが１に設定されていない場合（Ｓ３４０：ＮＯ）、または、ＳＩＬＩが１に設定されているがＢｌｏｃｋＬｅｎｇｔｈの値が０である場合（Ｓ３５０：ＹＥＳ）、ステップ３７０へ進み、生成部１６０は、ダミーレコードの長さを０として返す０バイトブロックモードが設定されているかどうか判断する。０バイトブロックモードが設定されていない場合（Ｓ３７０：ＮＯ）、生成部１６０は、ＲｅａｄコマンドのＴｒａｎｓｆｅｒＬｅｎｇｔｈの値をダミーレコードの長さをする（Ｓ３８０）。０バイトブロックモードが設定されている場合（Ｓ３７０：ＹＥＳ）、生成部１６０は、ダミーレコードの長さを０とする。そして、ステップ３６０、３８０及び３９０からステップ４００へ進み生成部１６０は、変数ｒの値を１減らす。また、ステップ４５０において、通信部（送信部）１１０は、ホストコンピュータ４００に読出しエラーを知らせるためのＣｈｅｃｋＣｏｎｄｉｔｉｏｎを返す。更に、通信部（送信部）１１０は、送信したレコードが推測された長さをもつダミーレコードであることをホストコンピュータ４００が識別できるように、ＳｅｎｓｅＫｅｙにＭｅｄｉｕｍＥｒｒｏｒを入れたＳｅｎｓｅＤａｔａを返す（Ｓ４５０）。その後、処理はステップ３１０へ戻り、計算された数ｒｘだけ繰り返しダミーレコードが生成される。【００５６】
一方、Ｆｉｘｅｄフィールドが１に設定されている場合（Ｓ３３０：ＹＥＳ）、生成部１６０は、ＢｌｏｃｋＬｅｎｇｔｈの値をダミーレコードの長さとする（Ｓ４１０）。そして、ステップ４２０において変数ｒの値を１減らし、生成部１６０は最後のレコードであるかどうかを判断する（Ｓ４３０）。これはＦｉｘｅｄフィールドが１に設定されている場合は連続した読み出しとなるため、ダミー情報を最後のレコードの後にのみ返すためである。そこで、最後のレコードでない場合（Ｓ４３０：ＮＯ）、処理はステップ３１０へ戻り、引き続きダミーレコードが生成される。最後のレコードである場合（Ｓ４３０：ＹＥＳ）、ステップ４５０に進み、上記説明したようにダミー情報がホストコンピュータ４００へ返される。【００５７】
ステップ３２０に戻って、変数ｒが０以下の場合（Ｓ３２０：ＮＯ）、今度は通信部（送信部）１１０はファイルマークをホストコンピュータ４００へ送る（Ｓ４６０）。具体的には、通信部（送信部）１１０はホストコンピュータ４００に読出しエラーを知らせるためのＣｈｅｃｋＣｏｎｄｉｔｉｏｎを返し、このとき生成部１６０はＳｅｎｓｅＤａｔａのファイルマークのビットを立てる。また、送信したファイルマークがダミーであることをホストコンピュータ４００が識別できるように、通信部（送信部）１１０は、ＳｅｎｓｅＫｅｙにＭｅｄｉｕｍＥｒｒｏｒがセットされたＳｅｎｓｅＤａｔａを返す。その後、処理はステップ３１０へ戻り、計算された数ｆｘだけ繰り返しダミーのファイルマークが返される。【００５８】
次に、図１０のフローチャートを参照して、本実施形態に係るホストコンピュータ４００の動作を説明する。図１０のステップ５００において、ホストコンピュータ４００の送信部４１０は、テープ読出装置１００に対してＲｅａｄコマンドを送信する。ステップ５１０において、受信部４２０は、テープ読出装置１００からＲｅａｄコマンドに対する応答としてレコード、ファイルマークを受信する。この際判断部４３０は、レコード、ファイルマークに続いてＣｈｅｃｋＣｏｎｄｉｔｉｏｎとＳｎｓｅＤａｔａがあわせて送られたかどうか判断する（Ｓ５２０）。ＣｈｅｃｋＣｏｎｄｉｔｉｏｎが送られた場合（Ｓ５２０：ＹＥＳ）、判断部４３０はエラーの内容を調べるためにＳｅｎｓｅＤａｔａのＳｅｎｓｅＫｅｙフィールドにＭｅｄｉｕｍＥｒｒｏｒがセットされているかどうか調査する。ＭｅｄｉｕｍＥｒｒｏｒがセットされている場合、判断部４３０は受信したレコード及びファイルマークはダミーのデータであると判断し（Ｓ５３０）、処理を終了する。なお、ホストコンピュータ４００は、受信したレコード及びファイルマークがダミーであると判断した場合に、ダミーのレコード及びファイルマークを単に破棄してもよく、またはダミーのレコード及びファイルマークに相当する失われたデータを回復する処理、補完する処理をしてもよい。【００５９】
図１１の左側は、本実施形態に係るテープ読出装置１００のハードウェア構成の一例を示す。テープ読出装置１００は、バスにより相互に接続されるテープドライブ６３０ 、ＣＰＵ６００、ＲＡＭ６１０、ＲＯＭ６２０、及び通信インターフェース６４０を含む。テープドライブ６３０は、テープ媒体２００からデータを読み取り、ＲＡＭ６１０に提供する。ＲＯＭ６２０ は、テープ読出装置１００の起動時にＣＰＵ６００が実行するブートプログラムや、起動後にテープ読出装置１００を動作させるプログラム等を格納する。そして、ＣＰＵ６００は、これらのプログラムを、ＲＡＭ６１０を用いて実行する。本発明に係るテープ媒体からのデータ読み出しエラーを処理するテープ読出装置用のプログラムも、ＲＯＭ６２０に格納され、ＲＡＭ６１０を用いてＣＰＵ６００により実行される。テープ読出装置用のプログラムは、テープ読出装置１００を、データ読出部１３０、読出制御部１４０、計算部１５０、生成部１６０、通信部１１０として機能させる。その具体的な機能及び動作は、図４、図７乃至図９を用いて説明したのと同一であるから、説明を省略する。【００６０】
テープ読出装置１００に提供されるプログラムは、テープドライブ６３０によりテープ媒体２００から読み出され、テープ読出装置１００にインストールされる。これに代えて、通信インターフェース６４０は、シリアルポート等の入出力装置またはネットワークを介して、ホストコンピュータ４００からプログラムを取得し、テープ読出装置１００にインストールしてもよい。テープ読出装置１００に提供されるプログラムは、テープ媒体２００、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記憶媒体、ＩＣカード等の半導体メモリ等の記録媒体に格納されて利用者によって提供される。【００６１】
図１１の右側は、本実施形態に係るホストコンピュータ４００のハードウェア構成の一例を示す。ホストコンピュータ４００は、ホストコントローラ７１０により相互に接続されるＣＰＵ７００及びＲＡＭ７２０を含むＣＰＵ周辺部と、入出力コントローラ７３０によりホストコントローラ７１０に接続される通信インターフェース７６０、ハードディスクドライブ７４０、及びＣＤ−ＲＯＭドライブ７５０を含む入出力部と、入出力コントローラ７３０に接続されるスーパーＩ／Ｏコントローラ７７０及びスーパーＩ／Ｏコントローラ７７０に接続されるフレキシブルディスクドライブ７８０、フラッシュＲＯＭ７９０、ならびにキーボードマウスコントローラ８００を有するレガシー入出力部とを備える。【００６２】
ホストコントローラ７１０は、高い転送レートでＲＡＭ７２０にアクセスするＣＰＵ７００をＲＡＭ７２０と接続する。ＣＰＵ７００は、ハードディスクに格納されたプログラムに基づいて動作し、各部の制御を行う。本発明に係るテープ媒体からのデータ読み出しエラーを処理するホストコンピュータ用のプログラムは、ハードディスクに格納され、ＲＡＭ７２０を用いてＣＰＵ７００により実行される。ホストコンピュータ用のプログラムは、ホストコンピュータ４００を、送信部４１０、受信部４２０、判断部４３０として機能させる。その具体的な機能及び動作は、図５及び図１０を用いて説明したのと同一であるから、説明を省略する。【００６３】
入出力コントローラ７３０は、比較的高速な入出力装置である通信インターフェース７６０、ハードディスクドライブ７４０、及びＣＤ−ＲＯＭドライブ７５０をホストコントローラ７１０と接続する。通信インターフェース７６０は、ネットワークを介してテープ読出装置１００等の外部装置と通信する。ＣＤ−ＲＯＭドライブ７５０は、ＣＤ−ＲＯＭからプログラムまたはデータを読み取り、通信インターフェース７６０を介してテープ読出装置１００に提供する。【００６４】
また、入出力コントローラ７３０には、フレキシブルディスクドライブ７８０やキーボードマウスコントローラ８００等の比較的低速な入出力装置と、フラッシュＲＯＭ７９０とが接続される。フラッシュＲＯＭ７９０は、ホストコンピュータ４００の起動時にＣＰＵ７００が実行するブートプログラムや、ホストコンピュータ４００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ７８０は、フレキシブルディスクからプログラムまたはデータを読み取り、ＲＡＭ７２０を介してスーパーＩ／Ｏコントローラ７７０に提供する。スーパーＩ／Ｏコントローラ７７０は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。【００６５】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。例えば、上記の実施形態においては、エラーが起こったテープ媒体２００の一部分に含まれるレコード及びファイルマークの数は、テープ読出装置１００の計算部１５０において計算された。しかしながら、テープ読出装置１００の送信部１１０が、読出部１３０により読み出されたデータユニットを格納するバッファ１２０から、エラーが起こる直前に読み出されたエラー直前のデータユニットに含まれるレコード及び１まとまりのレコードの境界を示す境界マークに関する第１情報と、エラー直後のデータユニットに含まれるレコード及び境界マークに関する第２情報とを取り出しホストコンピュータ４００へ送るようにしてもよい。そして、ホストコンピュータ４００の判断部４３０において、第１情報及び第２情報に基づいて、エラーが起こったデータユニットに含まれるレコードの数及び境界マークの数を計算してデータの読出し位置を判断してもよい。このように上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００６６】
【図１】本発明の一実施形態に係るテープ媒体からのデータ読み出しエラーを処理するシステム１０の構成の一例を示す。
【図２】（ａ）は、本実施形態に係るテープ媒体２００におけるＬＴＯ規格に従う記録領域の構成の一例を示す。（ｂ）は、ＬＴＯデータフォーマットにおけるデータセットの構成を示す。
【図３】（ａ）は、ＬＴＯ規格のテープ媒体２００において、初めてデータが書き込まれた状態を示す。（ｂ）は、（ａ）に示す状態のテープ媒体２００にデータを上書きした後の状態を示す。
【図４】本実施形態に係るテープ読出装置１００の機能構成の一例を示す。
【図５】ＬＴＯ規格のテープ媒体２００において読出しエラーが起こった状態を示す。
【図６】本実施形態に係るホストコンピュータ４００の機能構成の一例を示す。
【図７】本実施形態に係るテープ読出装置１００における、Ｒｅａｄコマンドに応答してデータを読み出す処理の流れを示すフローチャートである。
【図８】本実施形態に係るテープ読出装置１００における、エラー処理の流れを示すフローチャートである。
【図９】本実施形態に係るテープ読出装置１００における、ダミーレコードの生成及びダミー情報の送信処理の流れを示すフローチャートである。
【図１０】本実施形態に係るホストコンピュータ４００における、読出しエラーの処理の流れを示すフローチャートである。
【図１１】本実施形態に係るテープ読出装置１００とホストコンピュータ４００のハードウェア構成の一例を示す。
【図１】
0004848419.tif 000002
【図２】
0004848419.tif 000003
【図３】
0004848419.tif 000004
【図４】
0004848419.tif 000005
【図５】
0004848419.tif 000006
【図６】
0004848419.tif 000007
【図７】
0004848419.tif 000008
【図８】
0004848419.tif 000009
【図９】
0004848419.tif 000010
【図１０】
0004848419.tif 000011
【図１１】
0004848419.tif 000012