(57)【特許請求の範囲】
【請求項１】
リムーバブルメディアを駆動するドライブにおける、当該リムーバブルメディアに関する処理を行う装置であって、
自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、自ドライブで過去に発生したエラーに関する第１のエラー情報と、当該特定のリムーバブルメディアに過去に発生したエラーに関する第２のエラー情報とを取得する取得部と、
前記特定のリムーバブルメディアにエラーが発生した際に、他のリムーバブルメディアを駆動する他のドライブから、当該他のドライブで過去に発生したエラーに関する第３のエラー情報と、当該他のリムーバブルメディアに過去に発生したエラーに関する第４のエラー情報とを受信する受信部と、
前記第１のエラー情報と前記第３のエラー情報とから得られるエラーの発生状況と、前記第２のエラー情報と前記第４のエラー情報とから得られるエラーの発生状況とを比較することにより、前記特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを判定する判定部と、
前記特定のリムーバブルメディアにエラーが発生した旨を報告するメッセージであって、前記判定部による判定の結果である、当該エラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを示す情報が付加されたメッセージを上位装置に送信する送信部と
を含む、装置。
【請求項２】
前記受信部は、前記特定のリムーバブルメディア上の過去にエラーが発生した領域を示す複数の領域情報を更に受信し、
前記判定部は、前記複数の領域情報のうちの予め定めた基準を満たす数の領域情報が特定の領域を示す場合に、当該特定の領域が不具合を有する可能性がある領域であると判定する、請求項１の装置。
【請求項３】
前記特定のリムーバブルメディアにエラーが発生した際に前記特定の領域へのアクセスを試みる処理、及び、前記特定のリムーバブルメディアにエラーが発生するのに先立って前記特定の領域の存在を加味した情報を上位装置に報告する処理の少なくとも何れか一方を行う処理部を更に含む、請求項２の装置。
【請求項４】
前記受信部は、前記特定のリムーバブルメディア上の過去にエラーが発生した領域と当該エラーを復旧できたときに用いられた復旧手順とを対応付けた複数の対応情報を更に受信し、
前記判定部は、前記複数の対応情報のうちの予め定めた基準を満たす数の対応情報が特定の領域と特定の復旧手順とを対応付けたものである場合に、当該特定の復旧手順が当該特定の領域に発生するエラーを復旧するのに有効であると判定する、請求項１の装置。
【請求項５】
前記特定のリムーバブルメディア上の前記特定の領域にエラーが発生した場合に、前記特定の復旧手順で当該エラーを復旧する処理を行う処理部を更に含む、請求項４の装置。
【請求項６】
リムーバブルメディアを駆動するドライブにおける、当該リムーバブルメディアに発生したエラーを報告する装置であって、
自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、当該エラーを復旧する復旧部と、
前記復旧部により前記エラーが復旧されなかった場合に、当該エラーが発生した旨を報告するメッセージを生成する生成部と、
前記復旧部により前記エラーが復旧されなかった場合に、自ドライブで過去に発生したエラーの量を示す第１のエラー情報と、前記特定のリムーバブルメディアに過去に発生したエラーの量を示す第２のエラー情報とを取得する取得部と、
前記復旧部により前記エラーが復旧されなかった場合に、他のリムーバブルメディアを駆動する他のドライブから、当該他のドライブで過去に発生したエラーの量を示す第３のエラー情報と、当該他のリムーバブルメディアに過去に発生したエラーの量を示す第４のエラー情報とを受信する受信部と、
前記第１のエラー情報と前記第３のエラー情報とから得られるエラーの発生状況と、前記第２のエラー情報と前記第４のエラー情報とから得られるエラーの発生状況とを比較することにより、前記特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを判定する判定部と、
前記生成部により生成された前記メッセージに、前記判定部による判定の結果である、前記エラーの原因が自ドライブにあるのか前記特定のリムーバブルメディアにあるのかを示す情報を付加する付加部と、
前記付加部により情報が付加された前記メッセージを上位装置に送信する送信部と
を含む、装置。
【請求項７】
リムーバブルメディアを駆動する複数のドライブを含むシステムであって、
前記複数のドライブは、互いに通信回線を介して接続されており、
前記複数のドライブの各々は、
自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、自ドライブで過去に発生したエラーに関する第１のエラー情報と、当該特定のリムーバブルメディアに過去に発生したエラーに関する第２のエラー情報とを取得する取得部と、
前記特定のリムーバブルメディアにエラーが発生した際に、他のリムーバブルメディアを駆動する他のドライブから、当該他のドライブで過去に発生したエラーに関する第３のエラー情報と、当該他のリムーバブルメディアに過去に発生したエラーに関する第４のエラー情報とを、前記通信回線を介して受信する受信部と、
前記第１のエラー情報と前記第３のエラー情報とから得られるエラーの発生状況と、前記第２のエラー情報と前記第４のエラー情報とから得られるエラーの発生状況とを比較することにより、前記特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを判定する判定部と、
前記特定のリムーバブルメディアにエラーが発生した旨を報告するメッセージであって、前記判定部による判定の結果である、当該エラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを示す情報が付加されたメッセージを上位装置に送信する送信部と
を含む、システム。
【請求項８】
リムーバブルメディアを駆動するドライブにおける、当該リムーバブルメディアに関する処理を行う方法であって、
自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、自ドライブで過去に発生したエラーに関する第１のエラー情報と、当該特定のリムーバブルメディアに過去に発生したエラーに関する第２のエラー情報とを取得するステップと、
前記特定のリムーバブルメディアにエラーが発生した際に、他のリムーバブルメディアを駆動する他のドライブから、当該他のドライブで過去に発生したエラーに関する第３のエラー情報と、当該他のリムーバブルメディアに過去に発生したエラーに関する第４のエラー情報とを受信するステップと、
前記第１のエラー情報と前記第３のエラー情報とから得られるエラーの発生状況と、前記第２のエラー情報と前記第４のエラー情報とから得られるエラーの発生状況とを比較することにより、前記特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを判定するステップと、
前記特定のリムーバブルメディアにエラーが発生した旨を報告するメッセージであって、前記判定するステップでの判定の結果である、当該エラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを示す情報が付加されたメッセージを上位装置に送信するステップと
を含む、方法。
【請求項９】
リムーバブルメディアを駆動するドライブにおける、当該リムーバブルメディアに関する処理を行う装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、自ドライブで過去に発生したエラーに関する第１のエラー情報と、当該特定のリムーバブルメディアに過去に発生したエラーに関する第２のエラー情報とを取得する取得部と、
前記特定のリムーバブルメディアにエラーが発生した際に、他のリムーバブルメディアを駆動する他のドライブから、当該他のドライブで過去に発生したエラーに関する第３のエラー情報と、当該他のリムーバブルメディアに過去に発生したエラーに関する第４のエラー情報とを受信する受信部と、
前記第１のエラー情報と前記第３のエラー情報とから得られるエラーの発生状況と、前記第２のエラー情報と前記第４のエラー情報とから得られるエラーの発生状況とを比較することにより、前記特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを判定する判定部と、
前記特定のリムーバブルメディアにエラーが発生した旨を報告するメッセージであって、前記判定部による判定の結果である、当該エラーの原因が自ドライブにあるのか当該特定のリムーバブルメディアにあるのかを示す情報が付加されたメッセージを上位装置に送信する送信部と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リムーバブルメディアに関する処理を行う装置及び方法に関する。特に、本発明は、リムーバブルメディアを駆動するドライブにおける、リムーバブルメディアに関する処理を行う装置及び方法に関する。
【背景技術】
【０００２】
テープメディア等のリムーバブルメディアを使用するドライブにおいて、データのメディアへの書き込み又はメディアからの読み出しのエラーが起こった際に、そのエラーの原因がドライブにあるのかメディアにあるのかを判別するのは容易ではない。理由としては、ドライブとメディアの組み合わせによってエラーの発生傾向が異なることが考えられる。また、同じドライブとメディアの組み合わせでも、実行されたオペレーションの種類や、実行時のドライブの環境等によって、エラーの発生傾向が異なる可能性がある。
【０００３】
そこで、ある種のテープドライブは、エラーの発生傾向を調査するため、そのドライブが最近使用したカートリッジのそれぞれについて、そのドライブが使用した際のエラー履歴の情報を、ドライブ内の不揮発性メモリに保管している。本明細書では、このドライブに関するエラー履歴の情報を「ドライブエラー情報」と呼ぶ。また、そのテープドライブのカートリッジには、そのカートリッジを最近使用したドライブのそれぞれについて、そのカートリッジを使用した際のエラー履歴の情報が、カートリッジ内のテープメディアに記録され保管されている。本明細書では、このカートリッジに関するエラー履歴の情報を「カートリッジエラー情報」と呼ぶ。カートリッジエラー情報は、カートリッジがドライブにロードされた際に、カートリッジ内のテープメディアからドライブ内のＲＡＭに読み出され、ドライブのファームウェアによって参照又は更新がなされる。そして、カートリッジがドライブからアンロードされる際に、ドライブ内のＲＡＭからカートリッジ内のテープメディアに書き戻される。
【０００４】
例えば、ドライブＤａでカートリッジＣａを使用しているときにエラーが発生した場合、ドライブＤａはそのドライブエラー情報からカートリッジＣａを使用していた際のエラーレートを知ることができる。その結果、カートリッジＣａについてのエラーレートの平均値が、全てのカートリッジについてのエラーレートの平均値よりも高ければ、ドライブＤａとカートリッジＣａの組み合わせが悪いと判断することができる。
しかしながら、ドライブの品質が悪いためにエラーが発生したのか、カートリッジの品質が悪いためにエラーが発生したのか、或いは、他の要因で偶然そのときだけエラーが発生したのかを、ドライブＤａのドライブエラー情報だけで判断するのは難しい。
ここで仮に、他のドライブＤｂ，Ｄｃのドライブエラー情報や、他のカートリッジＣｂ，Ｃｃのカートリッジエラー情報を入手できたとすると、判断に使用するデータの母数が増えることとなる。そして、結果的に、ドライブとカートリッジのどちらの品質が悪い可能性が高いのかを、より高い確度で判断できるようになる。
【０００５】
従来、複数のドライブ又は複数のメディアが保持するエラー情報からエラー原因を総合的に判断するには、それらのドライブの外部に用意された専用のソフトウェアや、それらのドライブを使用しているライブラリのエラー情報を収集する仕組みを利用していた。
また、エラー原因の判断に限らず、メディア上のエラーが発生し易い領域、エラーが発生したときの復旧方法等のエラーに関する判断を、複数のドライブ又は複数のメディアが保持するエラー情報に基づいて行う場合にも、ドライブ外部の専用のソフトウェアや、ライブラリのエラー情報を収集する仕組みを利用していた。
【０００６】
尚、公報記載の技術としても、ライブラリがそれぞれのドライブから情報を収集するものは知られていた（例えば、特許文献１、２参照）。
【０００７】
特許文献１の技術では、搬入・搬出装置のＣＡＳおよびＤＥＥ、記録・再生装置のＤＭ、ならびに制御装置のＡＤＲ、ＡＭＣおよびＣＳＶに接続されて、それらに備えられたＭＰＵのトレース情報を収集し、そのトレース情報をトレース情報記憶装置に記憶させるＭＩＮを備えている。
【０００８】
特許文献２の技術では、磁気テープライブラリ装置のメモリ情報リード処理部が、磁気テープドライブ装置が磁気テープカートリッジに対しておこなったデータの読み込みまたはデータの書き込みに係る情報を、磁気テープを内蔵した磁気テープカートリッジのメモリから読み取り、保守／交換判定部が、読み取った情報に基づいて、磁気テープドライブ装置の保守または交換に係る判定をおこなう。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２２４４５０号公報
【特許文献２】特開２００６−１６４４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、これらの技術では、複数のドライブ又は複数のメディアが保持するエラー情報に基づくエラーに関する判断を行うために、ドライブ外部の専用のソフトウェアや、ライブラリのエラー情報を収集する仕組みが必要となり、ドライブ自身でそのような判断を行えなかった。
【００１１】
本発明の目的は、複数のドライブ又は複数のメディアが保持するエラー情報に基づくエラーに関する判断を、ドライブで行えるようにすることにある。
【課題を解決するための手段】
【００１２】
かかる目的のもと、本発明は、リムーバブルメディアを駆動するドライブにおける、リムーバブルメディアに関する処理を行う装置であって、リムーバブルメディアを駆動する他のドライブから、過去に発生したエラーに関するエラー情報を受信する受信部と、受信部により受信されたエラー情報を用いて、自ドライブが駆動している特定のリムーバブルメディアに発生するエラーに関する判定を行う判定部と、判定部による判定の結果に基づいて、特定のリムーバブルメディアに関する処理を行う処理部とを含む、装置を提供する。
【００１３】
ここで、この装置は、自ドライブで過去に発生したエラーの量を示す第１のエラー情報と、特定のリムーバブルメディアに過去に発生したエラーの量を示す第２のエラー情報とを取得する取得部を更に備え、受信部は、他のドライブで過去に発生したエラーの量を示す第３のエラー情報と、他のドライブが駆動している他のリムーバブルメディアに過去に発生したエラーの量を示す第４のエラー情報とを、エラー情報として受信し、判定部は、第１のエラー情報と第３のエラー情報とから得られるエラーの発生状況と、第２のエラー情報と第４のエラー情報とから得られるエラーの発生状況とを比較することにより、特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを判定する、ものであってよい。
その場合、処理部は、特定のリムーバブルメディアにエラーが発生した旨を上位装置に報告するメッセージに、エラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを示す情報を付加する処理を行う、ものであってよい。
【００１４】
また、この装置において、受信部は、特定のリムーバブルメディア上の過去にエラーが発生した領域を示す複数の領域情報を、エラー情報として受信し、判定部は、複数の領域情報のうちの予め定めた基準を満たす数の領域情報が特定の領域を示す場合に、特定の領域が不具合を有する可能性がある領域であると判定する、ものであってよい。
その場合、処理部は、特定のリムーバブルメディアにエラーが発生した際に特定の領域へのアクセスを試みる処理、及び、特定のリムーバブルメディアにエラーが発生するのに先立って特定の領域の存在を加味した情報を上位装置に報告する処理の少なくとも何れか一方を行う、ものであってよい。
【００１５】
更に、この装置において、受信部は、特定のリムーバブルメディア上の過去にエラーが発生した領域とエラーを復旧できたときに用いられた復旧手順とを対応付けた複数の対応情報を、エラー情報として受信し、判定部は、複数の対応情報のうちの予め定めた基準を満たす数の対応情報が特定の領域と特定の復旧手順とを対応付けたものである場合に、特定の復旧手順が特定の領域に発生するエラーを復旧するのに有効であると判定する、ものであってよい。
その場合、処理部は、特定のリムーバブルメディア上の特定の領域にエラーが発生した場合に、特定の復旧手順でエラーを復旧する処理を行う、ものであってよい。
【００１６】
また、本発明は、リムーバブルメディアを駆動するドライブにおける、リムーバブルメディアに発生したエラーを報告する装置であって、自ドライブが駆動している特定のリムーバブルメディアにエラーが発生した際に、エラーを復旧する復旧部と、復旧部によりエラーが復旧されなかった場合に、エラーが発生した旨を報告するメッセージを生成する生成部と、復旧部によりエラーが復旧されなかった場合に、自ドライブで過去に発生したエラーの量を示す第１のエラー情報と、特定のリムーバブルメディアに過去に発生したエラーの量を示す第２のエラー情報とを取得する取得部と、復旧部によりエラーが復旧されなかった場合に、リムーバブルメディアを駆動する他のドライブから、他のドライブで過去に発生したエラーの量を示す第３のエラー情報と、他のドライブが駆動している他のリムーバブルメディアに過去に発生したエラーの量を示す第４のエラー情報とを受信する受信部と、第１のエラー情報と第３のエラー情報とから得られるエラーの発生状況と、第２のエラー情報と第４のエラー情報とから得られるエラーの発生状況とを比較することにより、特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを判定する判定部と、生成部により生成されたメッセージに、判定部による判定の結果である、エラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを示す情報を付加する付加部と、付加部により情報が付加されたメッセージを上位装置に送信する送信部とを含む、装置も提供する。
【００１７】
また、本発明は、リムーバブルメディアを駆動する第１のドライブ及び第２のドライブを含むシステムであって、第１のドライブと、第２のドライブとは、通信回線を介して接続されており、第１のドライブは、自ドライブで過去に発生したエラー又はリムーバブルメディアに過去に発生したエラーに関するエラー情報を取得する取得部と、取得部により取得されたエラー情報を、通信回線を介して送信する送信部とを含み、第２のドライブは、送信部により送信されたエラー情報を、通信回線を介して受信する受信部と、受信部により受信されたエラー情報を用いて、自ドライブが駆動している特定のリムーバブルメディアに発生するエラーに関する判定を行う判定部と、判定部による判定の結果に基づいて、特定のリムーバブルメディアに関する処理を行う処理部とを含む、システムも提供する。
【００１８】
また、本発明は、リムーバブルメディアを駆動する複数のドライブを含むシステムであって、複数のドライブは、互いに通信回線を介して接続されており、複数のドライブの各々は、自ドライブで過去に発生したエラー又はリムーバブルメディアに過去に発生したエラーに関するエラー情報を取得する取得部と、取得部により取得されたエラー情報を、通信回線を介して他のドライブに送信する送信部と、他のドライブから送信されたエラー情報を、通信回線を介して受信する受信部と、受信部により受信されたエラー情報を用いて、自ドライブが駆動している特定のリムーバブルメディアに発生するエラーに関する判定を行う判定部と、判定部による判定の結果に基づいて、特定のリムーバブルメディアに関する処理を行う処理部とを含む、システムも提供する。
【００１９】
更に、本発明は、リムーバブルメディアを駆動するドライブにおける、リムーバブルメディアに関する処理を行う方法であって、リムーバブルメディアを駆動する他のドライブから、過去に発生したエラーに関するエラー情報を受信するステップと、受信されたエラー情報を用いて、自ドライブが駆動している特定のリムーバブルメディアに発生するエラーに関する判定を行うステップと、判定の結果に基づいて、特定のリムーバブルメディアに関する処理を行うステップとを含む、方法も提供する。
【００２０】
更にまた、本発明は、リムーバブルメディアを駆動するドライブにおける、リムーバブルメディアに関する処理を行う装置として、コンピュータを機能させるプログラムであって、コンピュータを、リムーバブルメディアを駆動する他のドライブから、過去に発生したエラーに関するエラー情報を受信する受信部と、受信部により受信されたエラー情報を用いて、自ドライブが駆動している特定のリムーバブルメディアに発生するエラーに関する判定を行う判定部と、判定部による判定の結果に基づいて、特定のリムーバブルメディアに関する処理を行う処理部として機能させる、プログラムも提供する。
【発明の効果】
【００２１】
本発明によれば、複数のドライブ又は複数のメディアが保持するエラー情報に基づくエラーに関する判断を、ドライブで行えるようになる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態におけるエラー原因の判定方法について説明するための図である。
【図２】本発明の実施の形態におけるエラー原因の判定方法について説明するための図である。
【図３】本発明の実施の形態におけるライブラリシステムの構成例を示したブロック図である。
【図４】本発明の実施の形態におけるテープドライブの構成例を示したブロック図である。
【図５】本発明の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図６】本発明の実施の形態におけるコントローラの動作例を示したフローチャートである。
【図７】本発明の実施の形態におけるコントローラが実行するエラー原因判定処理の内容を示したフローチャートである。
【発明を実施するための形態】
【００２３】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態では、ドライブエラー情報及びカートリッジエラー情報が１００個の履歴を保持しており、それぞれの履歴には３０種類以上のカウンタの値が記録されているものとする。
これらのカウンタを利用してエラー原因を推定する方法としては、様々なものが考えられる。
ここでは、１台のドライブが保持するドライブエラー情報及びカートリッジエラー情報のみを利用してエラー原因を推定する場合と、複数のドライブが保持するドライブエラー情報及びカートリッジエラー情報を利用してエラー原因を推定する場合との違いを、最も簡便な手法の１つである平均値を用いた手法を例にとって説明する。
【００２４】
尚、以下の説明では、考え方を示すための簡略化として、ドライブエラー情報及びカートリッジエラー情報はそれぞれ１０個の履歴を保持しているものとする。
また、ドライブエラー情報及びカートリッジエラー情報に記録されているカウンタも簡略化して、読み出しエラーの個数（読み出しエラー数）、書き込みエラーの個数（書き込みエラー数）、読み出したデータセットの個数（読み出しデータセット数）、書き込んだデータセットの個数（書き込みデータセット数）の４つのカウンタのみとしている。ここで、データセットとは、データをテープに記録する際の論理的な最小単位で、その大きさは約１．６ＭＢで固定である。
【００２５】
まず、１台のドライブが持つドライブエラー情報及びカートリッジエラー情報を用いる場合について説明する。
ここでは、３台のドライブＤａ，Ｄｂ，Ｄｃと、１５本のカートリッジＣａ，Ｃｂ，Ｃｃ，・・・，Ｃｏとを含む小規模なライブラリを想定する。
今、ドライブＤａにカートリッジＣａがロードされており、ドライブＤａがカートリッジＣａにデータを書き込んでいる際にエラーが起こったとして、その原因がドライブにあるかメディアにあるかを判断することを考える。
【００２６】
例えば、ドライブＤａの現状が図１（ａ）に示したようなものであり、ドライブＤａのドライブエラー情報が図１（ｂ）に示したようなものであり、カートリッジＣａのカートリッジエラー情報が、図１（ｃ）に示したようなものであるとする。
尚、図１において、太線で囲んだセルは、現在のエラーカウント、ドライブＤａのドライブエラー情報のカウンタ、カートリッジＣａのカートリッジエラー情報のカウンタから計算された値について示している。
また、「エラー数」欄のうち、「Ｒｅａｄ」欄に示した値が読み出しエラー数であり、「Ｗｒｉｔｅ」欄に示した値が書き込みエラー数であり、「データセット数」欄のうち、「Ｒｅａｄ」欄に示した値が読み出しデータセット数であり、「Ｗｒｉｔｅ」欄に示した値が書き込みデータセット数である。更に、「エラー間データセット数」欄のうち、「Ｒｅａｄ」欄に示した値をエラー間読み出しデータセット数と呼び、「Ｗｒｉｔｅ」欄に示した値をエラー間書き込みデータセット数と呼ぶ。ここで、「エラー間読み出しデータセット数」とは、「エラー１個あたりの読み出しデータセット数」を意味しており、「エラー間書き込みデータセット数」とは、「エラー１個あたりの書き込みデータセット数」を意味している。
【００２７】
ここで図１を参照すると、（ａ）のエラー間書き込みデータセット数は、（ｂ），（ｃ）のエラー間書き込みデータセット数の平均値（最下段に示す）に比べて小さいので、ドライブＤａの現在の状況が悪いことは分かる。しかし、ここで用いているのはドライブＤａ及びカートリッジＣａのデータだけであり、他のドライブ又はカートリッジのデータと比較することなく、ドライブＤａの品質が悪いとは言い切れない。
即ち、ドライブＤａでカートリッジＣａが使われているからエラーが起きたのか、それとも、他の要因で偶然エラーが複数回発生したのかを判断することは難しい。
【００２８】
次に、複数台のドライブが持つドライブエラー情報及びカートリッジエラー情報を用いる場合について説明する。
複数のドライブからドライブエラー情報及びカートリッジエラー情報を集めた場合、図１（ｂ）に示したドライブエラー情報の平均値を、他のドライブについても知ることができる。
仮に、ドライブＤａ，Ｄｂ，Ｄｃから集めた各ドライブのエラー間書き込みデータセット数の平均値が、図２（ａ）に示したようなものであったとする。
また、カートリッジＣａ，Ｃｂ，Ｃｃがそれぞれ、ドライブＤａ，Ｄｂ，Ｄｃで使用されており、ドライブＤａ，Ｄｂ，Ｄｃから集めた各カートリッジのエラー間書き込みデータセット数の平均値が、図２（ｂ）に示したようなものであったとする。
【００２９】
この場合、ドライブＤａのエラー間書き込みデータセット数が、ドライブＤｂ，Ｄｃより少ないのに対し、カートリッジＣａ，Ｃｂ，Ｃｃのエラー間書き込みデータセット数については大きな差が認められないので、ドライブＤａの品質が悪いことが原因でエラーが発生したと推定することができる。例えば、ドライブＤａのエラー間書き込みデータセット数と、ドライブＤａ，Ｄｂ，Ｄｃのエラー間書き込みデータセット数の平均値との差分が、予め定めた閾値を超えており、カートリッジＣａのエラー間書き込みデータセット数と、カートリッジＣａ，Ｃｂ，Ｃｃのエラー間書き込みデータセット数の平均値との差分が、予め定めた閾値を超えていなければ、ドライブＤａの品質が悪いと判断すればよい。これをより広く捉えると、ドライブＤａのエラー情報とドライブＤｂ，Ｄｃのエラー情報とから得られるエラーの発生状況と、カートリッジＣａのエラー情報とカートリッジＣｂ，Ｃｃのエラー情報とから得られるエラーの発生状況とを比較することにより、エラーの原因がドライブＤａにあるのかカートリッジＣａにあるのかを判定する、ということができる。
【００３０】
このように、複数のエラー情報を使用することによって、そのエラーの原因をより高い確度で推定することができる。
尚、この説明では、非常に簡単な例として、エラーレートの単純な平均値を用いる方法を示した。多くのカートリッジ及びドライブがほぼ均一な使用条件で長い間使用されている場合には、このような平均値を用いる方法も、十分有効な結果を導き出すことができる。しかしながら、実際には、各ドライブの使用時間や各ドライブで使用したカートリッジの偏り等も考慮した、より効果的な分析手法を採用することが望ましい。
【００３１】
また、本実施の形態は、複数のドライブエラー情報及びカートリッジエラー情報を使用することにより、ドライブ単体のドライブエラー情報及びカートリッジエラー情報のみを使用するよりも確度の高いエラー原因の推測を行う方法、に関するものではなく、そのことを前提とした、複数のドライブエラー情報及びカートリッジエラー情報を集める方法に関するものである。従って、複数のドライブエラー情報及びカートリッジエラー情報を使用することによる効果については、単純な一例をあげるに留めている。
【００３２】
ところで、複数のドライブからエラー情報を収集する方法としてこれまで考えられていたのは、ドライブを使用しているライブラリが各ドライブからエラー情報を収集する方法、及び、ホストに外付けされた外部サーバで実行されているプログラムが各ドライブからエラー情報を収集する方法である。
しかしながら、前者の方法は、ライブラリがエラー情報を収集する機能を備えていることを前提とするので、そのような機能を備えていない他社製のライブラリ、又は、ライブラリに搭載されていないドライブでは使用できない。また、後者の方法は、外部のリソース、例えば、ライブラリ経由でドライブのエラー情報等を集めて解析を行うツールを使用する必要がある。
【００３３】
更に、これらの方法における問題点としては、個々のドライブからのエラーレポートの詳細度が高くならない、という点もある。その結果、ドライブからエラーレポートがあった後に、エラーレポートを受けた側でエラー原因についての総合的判断を行う必要があり、エラーレポートに応じたアクションを迅速に行えなくなる。
【００３４】
そこで、本実施の形態では、ドライブが通信回線を通じて他のドライブからエラー情報を取得するようにする。これにより、ドライブ間が通信回線で接続されていれば、ライブラリも外部サーバも必要としない。また、エラー原因の報告方法は、既存のドライブにおけるエラーの報告方法（センスデータやテープアラート）と同じなので、ホストやライブラリのインターフェイスを追加したり変更したりする必要もない。
【００３５】
図３は、本実施の形態におけるライブラリシステムの構成例を示した図である。尚、本発明は如何なるリムーバルメディアに対しても適用可能であるが、ここでは、テープメディア（以下、単に「テープ」という）を例にとり説明する。
図示するように、ライブラリシステムは、ライブラリ装置４０と、ホスト５０と、ファイバチャネル（ＦＣ）スイッチ５１とを含む。
【００３６】
ライブラリ装置４０は、テープドライブ１０１，１０２，・・・，１０Ｎを含む。図示しない格納セルに格納されたカートリッジが、図示しないアクセッサによって取り出されて装填されると、テープドライブ１０１，１０２，・・・，１０Ｎは、そのカートリッジ内のテープへのデータの書き込み又はそのカートリッジ内のテープからのデータの読み出しを行う。また、テープドライブ１０１，１０２，・・・，１０Ｎは、それぞれ、通信回線６０１，６０２，・・・，６０Ｎを介してＦＣスイッチ５１に接続されており、ＦＣスイッチ５１は、通信回線６１を介してホスト５０に接続されている。そして、テープドライブ１０Ｋへは、コマンド及び書き込み対象のデータが、ホスト５０から通信回線６１、ＦＣスイッチ５１、通信回線６０Ｋを介して送られ、テープドライブ１０Ｋからは、読み出されたデータ及び処理結果が、通信回線６０Ｋ、ＦＣスイッチ５１、通信回線６１を介してホスト５０に送られる（Ｋ＝１，２，・・・，Ｎ）。ここで、通信回線６０１，６０２，・・・，６０Ｎ，６１としては、例えば、ファイバチャネルを用いるとよい。尚、本明細書では、テープドライブ１０１，１０２，・・・，１０Ｎを区別しないときはテープドライブ１０と表記し、通信回線６０１，６０２，・・・，６０Ｎを区別しないときは通信回線６０と表記するものとする。
【００３７】
更に、ライブラリ装置４０は、ライブラリコントローラ４１を含む。ライブラリコントローラ４１は、各テープドライブ１０を管理する処理、例えば、各テープドライブ１０で使用するファームウェアを更新する処理、各テープドライブ１０の時刻を設定する処理等を行う。また、ライブラリコントローラ４１は、通信回線６２を介してホスト５０に接続されている。そして、ライブラリコントローラ４１へは、例えば、各テープドライブ１０で使用するファームウェアの更新情報、各テープドライブ１０に設定する時刻の情報等が、ホスト５０から通信回線６２を介して送られてくる。ここで、通信回線６２としては、例えば、イーサネット（登録商標）を用いるとよい。
【００３８】
加えて、本実施の形態では、ライブラリコントローラ４１とテープドライブ１０１，１０２，・・・，１０Ｎとが通信回線７０を介して相互に接続されており、各テープドライブ１０は、他のテープドライブ１０からエラー情報を取得できるようになっている。ここで、通信回線７０としては、例えば、イーサネット（登録商標）を用いるとよい。
【００３９】
ホスト５０は、テープドライブ１０の動作を制御する各種コマンドやテープに書き込むデータをテープドライブ１０へ送信したり、テープから読み出されたデータやテープに対する処理の結果をテープドライブ１０から受信して処理したりするコンピュータ装置である。
ＦＣスイッチ５１は、ファイバチャネルインタフェースを持つ複数のドライブとホスト５０とを接続するスイッチであり、ホスト５０が指定するテープドライブ１０がホスト５０に接続されるように通信回線６０を切り替える。
【００４０】
図４は、図３に示したテープドライブ１０の構成例を示した図である。
図示するように、テープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、記録チャネル１３と、ヘッド１４と、モータ１５とを含む。また、コントローラ３０と、ヘッド位置制御システム１６と、モータドライバ１７と、ドライブインターフェイス（以下、「ドライブＩ／Ｆ」という）１８と、情報メモリ１９とを含む。更に、テープドライブ１０には、カートリッジ２０が挿入されることにより装填可能となっているので、ここでは、カートリッジ２０も図示している。このカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。尚、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープメディアでもよい。
【００４１】
ホストＩ／Ｆ１１は、通信回線６０、ＦＣスイッチ５１、通信回線６１を介して、上位装置の一例であるホスト５０との通信を行う。例えば、ホスト５０から、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンド、バッファ１２に蓄積されたデータのテープ２３への強制的な書込みを指示するコマンド（同期コマンド）を受け取る。尚、このホストＩ／Ｆ１１で用いる通信規格としては、ＳＣＳＩが例示される。ＳＣＳＩの場合、１つ目のコマンドは、Ｗｒｉｔｅコマンドに相当し、２つ目のコマンドは、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに相当し、３つ目のコマンドは、Ｒｅａｄコマンドに相当し、４つ目のコマンドは、ＷｒｉｔｅＦＭ ｎｏｎ−ｉｍｍｅｄｉａｔｅコマンドに相当する。また、ホストＩ／Ｆ１１は、ホスト５０に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【００４２】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
記録チャネル１３は、テープ２３に書き込むべきデータをヘッド１４に送ったり、テープ２３から読み出されたデータをヘッド１４から受け取ったりするために用いられる通信経路である。
ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読み出したりする。
モータ１５は、リール２１、２２を回転させる。尚、図では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００４３】
コントローラ３０は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１６やモータドライバ１７の制御も行う。更に、情報メモリ１９に格納されたエラー情報の他のテープドライブ１０への送信、他のテープドライブ１０からのエラー情報の受信、情報メモリ１９に格納されたエラー情報及び他のテープドライブ１０から受信したエラー情報に基づく処理の実行も制御する。
ヘッド位置制御システム１６は、所望の１つ又は複数のラップを追跡するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド１４を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１６で行う。
モータドライバ１７は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１７も２個設けられる。
【００４４】
ドライブＩ／Ｆ１８は、通信回線７０を介して他のテープドライブ１０との通信を行う。例えば、他のテープドライブ１０に要求することにより、他のテープドライブ１０で保管されたエラー情報を受信する。また、他のテープドライブ１０からの要求に応じて、情報メモリ１９に格納されたエラー情報を送信する。
情報メモリ１９は、このテープドライブ１０で保管するエラー情報を格納するメモリである。例えば、不揮発性メモリによって構成される。
【００４５】
図５は、図４に示したコントローラ３０の機能構成例を示した図である。
図示するように、コントローラ３０は、エラー検出部３１と、エラー復旧部３２と、エラーレポート生成部３３とを含む。また、エラー情報取得部３４と、エラー情報交換部３５と、エラー情報記憶部３６と、エラー原因判定部３７とを含む。更に、エラーレポート更新部３８と、エラーレポート出力部３９とを含む。
【００４６】
エラー検出部３１は、データのテープ２３への書き込み又はテープ２３からの読み出し等の際に発生するエラーを検出する。
エラー復旧部３２は、エラー検出部３１が検出したエラーに対してエラー復旧手順を実行し、エラーが復旧しなければ、エラーレポート生成部３３に制御を移す。本実施の形態では、エラーを復旧する復旧部の一例として、エラー復旧部３２を設けている。
【００４７】
エラーレポート生成部３３は、エラー復旧部３２がエラー復旧手順を実行してもエラーが復旧しなかった場合に、そのエラーの内容をホスト５０に報告するためのエラーレポートを生成する。本実施の形態では、エラーが発生した旨を報告するメッセージの一例として、エラーレポートを用いており、メッセージを生成する生成部の一例として、エラーレポート生成部３３を設けている。
【００４８】
エラー情報取得部３４は、情報メモリ１９からエラー情報を取得してエラー情報記憶部３６に記憶する。ここで、エラー情報取得部３４により取得されるエラー情報は、このテープドライブ１０で過去に発生したエラーに関するドライブエラー情報と、このテープドライブ１０に装填されているカートリッジ２０内のテープ２３に過去に発生したエラーに関するカートリッジエラー情報とを含む。本実施の形態では、第１のエラー情報の一例として、このテープドライブ１０に関するドライブエラー情報を用いており、第２のエラー情報の一例として、このテープドライブ１０に装填されているカートリッジ２０に関するカートリッジエラー情報を用いている。また、エラー情報を取得する取得部、第１のエラー情報と第２のエラー情報とを取得する取得部の一例として、エラー情報取得部３４を設けている。
【００４９】
エラー情報交換部３５は、予め定められたＩＰアドレスを持つ他のテープドライブ１０にエラー情報の取得要求が送信されるようにＩＰアドレス及び取得要求をドライブＩ／Ｆ１８に出力すると共に、ドライブＩ／Ｆ１８が他のテープドライブ１０から受信したエラー情報を取得してエラー情報記憶部３６に記憶する。ここで、エラー情報交換部３５により取得されるエラー情報は、他のテープドライブ１０で過去に発生したエラーに関するドライブエラー情報と、他のテープドライブ１０に装填されているカートリッジ２０内のテープ２３に過去に発生したエラーに関するカートリッジエラー情報とを含む。また、ドライブＩ／Ｆ１８が他のテープドライブ１０からエラー情報の取得要求を受信すると、情報メモリ１９に格納されたエラー情報がそのテープドライブ１０に送信されるようにエラー情報をドライブＩ／Ｆ１８に出力する。本実施の形態では、第３のエラー情報の一例として、他のテープドライブ１０に関するドライブエラー情報を用いており、第４のエラー情報の一例として、他のテープドライブ１０に装填されているカートリッジ２０に関するカートリッジエラー情報を用いている。また、エラー情報を受信する受信部、第３のエラー情報と第４のエラー情報とを受信する受信部、エラー情報を送信する送信部の一例として、エラー情報交換部３５を設けている。
【００５０】
エラー情報記憶部３６は、エラー情報取得部３４が情報メモリ１９から取得したドライブエラー情報及びカートリッジエラー情報と、エラー情報交換部３５が他のテープドライブ１０から取得したドライブエラー情報及びカートリッジエラー情報とを記憶する。
【００５１】
エラー原因判定部３７は、エラー情報記憶部３６に記憶された複数のドライブエラー情報及び複数のカートリッジエラー情報に基づいて、エラーの原因を判定する。具体的には、エラーの原因がこのテープドライブ１０にあるのかこのテープドライブ１０に装填されているカートリッジ２０内のテープ２３にあるのかを判定する。本実施の形態では、エラーに関する判定を行う判定部、特定のリムーバブルメディアに発生したエラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを判定する判定部の一例として、エラー原因判定部３７を設けている。
【００５２】
エラーレポート更新部３８は、エラーレポート生成部３３により生成されたエラーレポートを、エラー原因判定部３７により判定されたエラー原因を示す情報によって更新する。具体的には、エラーレポートに対して、エラーの原因がこのテープドライブ１０にあるのかこのテープドライブ１０に装填されているカートリッジ２０内のテープ２３にあるのかを示す情報を付加する。本実施の形態では、特定のリムーバブルメディアに関する処理を行う処理部、メッセージにエラーの原因が自ドライブにあるのか特定のリムーバブルメディアにあるのかを示す情報を付加する付加部の一例として、エラーレポート更新部３８を設けている。
【００５３】
エラーレポート出力部３９は、エラーレポート更新部３８により更新されたエラーレポートがホスト５０に送信されるようにエラーレポートをホストＩ／Ｆ１１に出力する。本実施の形態では、メッセージを上位装置に送信する送信部の一例として、エラーレポート出力部３９を設けている。
【００５４】
図６は、図５に示したコントローラ３０の動作例を示したフローチャートである。
図示するように、コントローラ３０では、まず、エラー検出部３１が、例えば記録チャネル１３から得られる情報に基づいて、データのテープ２３への書き込み又はテープ２３からの読み出し等の際にエラーを検出したかどうかを判定する（ステップ３０１）。ここで、エラーを検出しなかったと判定されれば、ステップ３０１の処理を繰り返し、エラーを検出したと判定されれば、エラー復旧部３２が、そのエラーを復旧するためのエラー復旧手順を実行する（ステップ３０２）。
【００５５】
そして、エラー復旧部３２は、エラーが復旧したかどうかを判定する（ステップ３０３）。
その結果、エラーが復旧したと判定されれば、ホスト５０にエラーレポートを送信する必要はないので、そのまま処理を終了する。
【００５６】
一方、エラーが復旧しなかったと判定されれば、ホスト５０にエラーレポートを送信するために、以下の処理を行う。
即ち、まず、エラーレポート生成部３３が、エラーの発生をホスト５０に報告するための従来のエラーレポートを生成する（ステップ３０４）。
次に、エラー情報取得部３４、エラー情報交換部３５、エラー原因判定部３７が、エラー原因判定処理を行う（ステップ３０５）。具体的には、エラー原因がテープドライブ１０にあるのかテープ２３にあるのかを判定する処理を行う。
【００５７】
そして、エラー原因判定処理が正常に行われると、エラーレポート更新部３８が、エラーレポート生成部３３により生成されたエラーレポートを、エラー原因判定処理の結果に基づいて更新する（ステップ３０６）。具体的には、エラーレポート生成部３３により生成されたエラーレポートに、エラー原因判定処理の結果を反映させる。例えば、センスデータ、テープアラート等の既存のエラーの内容を示すデータに、テープドライブ１０の品質が悪いことを示す情報又はテープ２３の品質が悪いことを示す情報を付加する。このように、報告するエラーの内容に総合的な分析結果を反映することにより、確度の高いエラー内容の報告が可能となっている。これは、他のテープドライブ１０のエラー情報を用いた分析を、エラーを報告しようとしているテープドライブ１０内で行うことにより、実現できる機能である。
【００５８】
その後、エラーレポート出力部３９は、エラーレポートをホストＩ／Ｆ１１に出力して、エラーレポートをホスト５０に送信するよう指示する（ステップ３０７）。これにより、エラーレポートはホスト５０へ送られ、ホスト５０又はユーザは、テープドライブ１０からのエラーレポートに基づいて、テープドライブ１０が悪いのかテープ２３が悪いのかを知ることになる。
【００５９】
図７は、図６のステップ３０５におけるエラー原因判定処理の動作例を示したフローチャートである。
このエラー原因判定処理では、図示するように、まず、エラー情報取得部３４が、情報メモリ１９に格納されているドライブエラー情報及びカートリッジエラー情報を取得してエラー情報記憶部３６に記憶する（ステップ３５１）。
【００６０】
次に、エラー情報交換部３５が、他のテープドライブ１０で保管されているドライブエラー情報及びカートリッジエラー情報を受信する処理を行う。
即ち、まず、エラー情報交換部３５は、エラー情報を交換する他のテープドライブ１０のＩＰアドレスを取得する（ステップ３５２）。ここで、エラー情報を交換する他のテープドライブ１０のＩＰアドレスは、このテープドライブ１０のセットアップ時に、図示しない不揮発性メモリに登録し保存しておくものとする。
【００６１】
次に、エラー情報交換部３５は、ドライブエラー情報及びカートリッジエラー情報の取得要求をドライブＩ／Ｆ１８に出力して、ステップ３５２で取得したＩＰアドレスを持つテープドライブ１０にこれらのエラー情報の取得要求を送信するよう指示する（ステップ３５３）。換言すると、テープドライブ１０は、ホスト５０にエラーレポートを送信する必要が生じた際、ホスト５０にエラーレポートを送信する前に、事前に登録されている他のテープドライブ１０にドライブエラー情報及びカートリッジエラー情報の送信を要求する。この要求を受けた他のテープドライブ１０では、エラー情報取得部３４が、そのテープドライブ１０が情報メモリ１９で保管するドライブエラー情報及びカートリッジエラー情報を取得し、エラー情報交換部３５が、これらのエラー情報をドライブＩ／Ｆ１８に出力して、これらのエラー情報を要求元のテープドライブ１０に送信するよう指示する。これにより、他のテープドライブ１０では、ドライブＩ／Ｆ１８が、ドライブエラー情報及びカートリッジエラー情報を要求元のテープドライブ１０に送信する。
【００６２】
一方で、要求元のテープドライブ１０では、エラー情報交換部３５が、ドライブＩ／Ｆ１８に対して、他のテープドライブ１０からドライブエラー情報及びカートリッジエラー情報を受信するように指示する（ステップ３５４）。
そして、エラー情報交換部３５は、ドライブＩ／Ｆ１８が他のテープドライブ１０からドライブエラー情報及びカートリッジエラー情報を受信したかどうかを判定する（ステップ３５５）。
その結果、これらのエラー情報を受信しなかったと判定されれば、エラー原因判定処理が正常に行われなかった旨の情報を戻り値として図６の処理に戻るが、これらのエラー情報を受信したと判定されれば、ドライブエラー情報及びカートリッジエラー情報をエラー情報記憶部３６に記憶する（ステップ３５６）。
【００６３】
尚、このようなエラー情報の交換は、専用のプロトコルを用いて行ってもよいが、ｔｆｔｐ（Trivial File Transfer Protocol）等の既存のプロトコルを用いて行ってもよい。
また、一般に、テープドライブ１０がエラーを報告する際には、十秒単位のエラー復旧手順が実行されるが、これに比べて、エラー情報を取得するために必要となる時間は十分に小さい。従って、エラー情報を取得することがパフォーマンスに与える影響は無視できる。
【００６４】
その後、エラー情報交換部３５は、図示しない不揮発性メモリに登録された最後のＩＰアドレスを持つテープドライブ１０からエラー情報を受信したかどうかを判定する（ステップ３５７）。最後のＩＰアドレスを持つテープドライブ１０からエラー情報を受信していないと判定されれば、ステップ３５２に戻るが、最後のＩＰアドレスを持つテープドライブ１０からエラー情報を受信したと判定されれば、エラー原因判定部３７が、エラー原因を判定するための計算を行う（ステップ３５８）。具体的には、テープドライブ１０が悪いかテープ２３が悪いかを判定するために、例えば図１及び図２を参照して説明したような計算を行う。つまり、このテープドライブ１０のエラー間データセット数の平均値を計算し、他のテープドライブ１０のエラー間データセット数の平均値よりも小さければ、このテープドライブ１０が悪いと判断する。また、このテープドライブ１０で使用しているテープ２３のエラー間データセット数の平均値を計算し、他のテープ２３のエラー間データセット数の平均値よりも小さければ、このテープドライブ１０で使用しているテープ２３が悪いと判断する。
【００６５】
このように、本実施の形態では、テープドライブ１０自身が、他のテープドライブ１０からドライブエラー情報及びカートリッジエラー情報を取得し、これらのエラー情報を使用してエラー原因を判断するようにした。即ち、エラー原因を判断するテープドライブ１０が、エラー原因の判断が必要になった時点で、接続されている複数のテープドライブ１０にドライブエラー情報及びカートリッジエラー情報を要求し、これらのテープドライブ１０にその時点で保持されているドライブエラー情報及びカートリッジエラー情報を取得するようにした。
これにより、テープドライブ１０の外部に専用のソフトウェアやライブラリの機能を準備することなく、テープドライブ１０の機能のみを用いて、複数のドライブエラー情報及び複数のカートリッジエラー情報を使用した、より確度の高いエラー原因の判断が可能となる。
【００６６】
また、従来は、テープドライブ１０が外部のサーバ等にエラーレポートを送信し、外部のサーバ等がエラーレポートの内容を収集、分析して総合的な判断を行っていた。これに対し、本実施の形態では、テープドライブ１０がエラーレポートを送信する時点で、他のテープドライブ１０からのエラー情報を使用してより正確なエラー内容を報告できるようになる。
更に、本実施の形態では、テープドライブ１０間で直接データをやりとりするため、既存のホスト５０やライブラリを含めたテープドライブ１０の外部とのインターフェイスには一切の変更を必要としない。
【００６７】
ところで、ここまでは、エラー情報交換部３５が、エラー情報として、ドライブエラー情報及びカートリッジエラー情報を交換したが、これには限らない。ドライブエラー情報及びカートリッジエラー情報に代えて、「テープマップ」と呼ばれるエラー情報を交換してもよい。
ここで、テープマップとは、テープ２３上の全域をラップ及びリジョンによって細かい区画に分割し、それぞれの区画においてどのようなエラーが発生したかを逐次記録したものである。テープマップは、テープドライブ１０が出力する「ダンプファイル」の構成要素の１つである。また、テープマップの情報は、テープドライブ１０内のメモリに蓄積され、テープ２３には記録されない。
【００６８】
尚、ラップとは、テープ２３上を何度も往復してデータを記録するリニア方式テープドライブにおいて、テープ２３の一端から他端まで走行する片道の経路である。例えば、４０往復してデータが記録されるテープは、８０のラップを有する。
また、リジョンとは、１つのラップを細かく分割して得られる一区画である。
先の例のテープにおいて１つのラップを１２８個のリジョンに分割した場合、テープ上には８０ｘ１２８の区画が定義できる。そして、ラップ番号とリジョン番号とから、それぞれの区画のテープ２３上の物理的な位置を算出することができる。
【００６９】
さて、テープマップの情報は、別のカートリッジ２０がロードされた時点でクリアすることも考えられるが、ここでは、カートリッジ番号と、テンポラリエラー又はパーマネントエラーが発生したラップ及びリジョンとの組をテープドライブ１０内のメモリに記録するものとする。この場合、記録するデータとしては、カートリッジ番号、エラー種別、ラップ番号、リジョン番号、復旧方法等が考えられる。このうち、エラー種別としては、例えば、テープドライブ１０内部のＦＳＣ（Failure Symptom Code）を用いるとよく、復旧方法としては、ＥＲＰ（Error Recovery Procedure）メソッド番号を用いるとよい。尚、復旧方法が“Unavailable”のときは、そのエラーが修正できなかった、つまり、パーマネントエラーが発生した、と解釈することとする。
【００７０】
また、このようなテープドライブ１０のメモリに記録するデータにおいて、エラー種別、ラップ番号、リジョン番号、復旧方法等を対応付けた情報は、１つのカートリッジ番号に対して、複数個記録することができる。
ここでは、この情報をＴＭＥＩ（Tape Map Error Information）と呼ぶことにする。あるテープドライブ１０で、あるカートリッジ２０を使用している際にエラーが発生すると、そのテープドライブ１０は、他のテープドライブ１０にそのカートリッジ２０のＴＭＥＩを保持しているかどうかを問い合わせる。そして、他のテープドライブ１０は、そのカートリッジ２０のＴＭＥＩを持っていれば、ＴＭＥＩを要求元のテープドライブ１０に届ける。これにより、要求元のテープドライブ１０は、他のテープドライブ１０から受信したＴＭＥＩを参照し、例えば、複数のＴＭＥＩが同じ区画でのエラーの発生を示唆していれば、このカートリッジ２０内のテープ２３のその区画には何らかの欠陥がある、と判断する。より一般的に言えば、図示しない判定部が、複数の領域情報（例えば、複数のＴＭＥＩにおけるラップ番号及びリジョン番号）のうちの予め定めた基準を満たす数（例えば、予め定めた割合を超える数）の領域情報が特定の領域を示す場合に、その特定の領域が不具合を有する可能性がある領域であると判定する。
【００７１】
１つのテープドライブ１０の情報しかなかった場合は、特定の区画でエラーが発生していたとしても、それがテープドライブ１０に起因するものである可能性を排除できない。これに対し、他のテープドライブ１０で使用された場合にも同じ場所でエラーが起きていたことを確認することにより、テープ２３に何らかの問題がある確証性が高くなる。
【００７２】
そして、このような場合は、その特定の区画で追試験を実行し、その結果を分析に取り込むことができる。例えば、データのテープ２３への書き込み又はテープ２３からの読み出しの際にエラーが発生し、テープ２３上のある領域に損傷が疑われるような分析結果が得られた場合、テープドライブ１０自身が再度、その領域へのアクセスを試みる。即ち、図示しない処理部が、その領域へのアクセスを試みる処理を行う。これにより、その分析結果の正確性をさらに向上させることが可能となる。
【００７３】
また、テープドライブ１０自身が他のテープドライブ１０のエラー情報を取得できることから、オペレーションを開始する前にエラー情報を収集することにより、予め問題が発生しそうな領域を予測することもできる。そして、テープドライブ１０では、図示しない処理部が、カートリッジ２０のロード時等のエラーが発生する以前のタイミングで、その問題が発生しそうな領域の存在を加味した情報をホスト５０に報告する処理を行うことができる。そのような処理としては、例えば、テープ２３上の空き容量としてその問題が発生しそうな領域の容量を除いた容量を報告する処理や、その問題が発生しそうな領域を特定する情報を報告する処理が考えられる。
【００７４】
更に、ＴＭＥＩを用いると、パーマネントエラーの情報だけでなく、テンポラリエラーの情報も交換できる。ここで、テンポラリエラーとは、一旦はエラーが発生したものの、テープドライブ１０のリカバリ機能によって修復できたエラーのことである。ＴＭＥＩにおけるラップ番号とリジョン番号と復旧方法との対応情報によってテンポラリエラーの情報は交換できる。これにより、問題のあった領域ではどのような復旧方法が有効だったのかを事前に判定し、複数のテープドライブ１０でこの判定結果を共有することができる。具体的には、図示しない判定部が、複数の対応情報（例えば、複数のＴＭＥＩにおけるラップ番号、リジョン番号、復旧方法の対応情報）のうちの予め定めた基準を満たす数（例えば、予め定めた割合を超える数）の対応情報が特定の領域と特定の復旧手順とを対応付けたものである場合に、その特定の復旧手順がその特定の領域に発生するエラーを復旧するのに有効であると判定する。そして、その特定の領域にエラーが発生した場合に、図示しない処理部が、その特定の復旧手順でエラーを復旧する処理を行う。
【００７５】
エラー復旧手順の中にはそれを実行するのに時間がかかるものもある。従って、事前にどのエラー復旧手順が有効であるかを知ることにより、問題が発生する可能性のある領域での動作パフォーマンスやテンポラリーエラーの発生率を改善することができる。
【００７６】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００７７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００７８】
１０…テープドライブ、２０…カートリッジ、２３…テープ、３０…コントローラ、３１…エラー検出部、３２…エラー復旧部、３３…エラーレポート生成部、３４…エラー情報取得部、３５…エラー情報交換部、３６…エラー情報記憶部、３７…エラー原因判定部、３８…エラーレポート更新部、３９…エラーレポート出力部、５０…ホスト、５１…ＦＣスイッチ、６０，６１，６２，７０…通信回線
【図１】
0005785455.tif 000002
【図２】
0005785455.tif 000003
【図３】
0005785455.tif 000004
【図４】
0005785455.tif 000005
【図５】
0005785455.tif 000006
【図６】
0005785455.tif 000007
【図７】
0005785455.tif 000008