(57)【要約】冗長通信リンクを用いるシステムにおいてエラー回復を行うためのシステムおよび方法である。一実施形態において、ホスト装置（１１）は、テープドライブなどのシーケンシャル装置（１５）にファイバチャネルリンク（１２，１３）の対によって結合される。ホストは、識別子を各コマンドに関連付けるように構成される。第１のリンクを介したコマンド送信の障害が検出されると、ホストはコマンドを第２のリンクを介して再送信する。リンク障害が検出されると、障害前に送信された最後のコマンドのステータスが要求される。コマンドのステータスを受信後、（できればステータス情報によって示された点における）回復開始の要求がシーケンシャル装置へ送信される。回復要求が受理されると、コマンドの実行は完了する。
2005533314.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
シーケンシャル装置に対応するリンクを介して結合されるように構成された２つ以上のポートを有するホスト装置を備え、ホスト装置は、コマンド識別子をコマンドに関連付け、コマンドをポートのうちの第１のポートを介して送信し、ポートのうちの第１のポートを介するコマンド送信に関連した障害を検出し、コマンドをポートのうちの第２のポートを介して送信するように構成される、システム。
【請求項２】
ホスト装置は、ホスト装置からシーケンシャル装置へ送信されたコマンドをカウントして、カウント値を対応コマンドに関連付けることによって、コマンド識別子を対応するコマンドに関連付け、システムは、ホスト装置およびシーケンシャル装置間に結合されるルータをさらに備え、ルータは、ホスト装置からシーケンシャル装置へ送信されたコマンドをカウントして、カウント値を対応するコマンドに関連付ける、請求項１に記載のシステム。
【請求項３】
ホスト装置は、第１のコマンドを発行してコマンドストリームを確立することによって、シーケンシャル装置へのコマンドの組の送信を開始するように構成され、ホスト装置およびルータは、第１のコマンドを受信後、コマンドのカウントを開始するように構成される、請求項２に記載のシステム。
【請求項４】
ホストは、コマンド識別子をコマンド内において明示的にするように構成される、請求項１に記載のシステム。
【請求項５】
ホスト装置は、後続のコマンドおよび対応するコマンド識別子をポートのうちの第２のポートを介して送信するようにさらに構成される、請求項４に記載のシステム。
【請求項６】
２つ以上のポートに対応する２つ以上の通信リンクをさらに備える、請求項４に記載のシステム。
【請求項７】
通信リンクは、ファイバチャネルリンクを備える、請求項６に記載のシステム。
【請求項８】
通信リンクは、クラス３サービスを提供するように構成される、請求項７に記載のシステム。
【請求項９】
通信リンクに結合されて、コマンドとコマンド識別子とをホスト装置から受信するルータをさらに備え、ルータは、シーケンシャル装置に結合されるように構成される、請求項４に記載のシステム。
【請求項１０】
ルータは、ポートのうちの第２のポートを介して送信されたコマンド識別子を、ポートのうちの第１のポートを介して送信されたコマンド識別子と同一であると識別し、コマンドの一部をシーケンシャル装置に転送するように構成され、コマンドの転送された部分は、ポートのうちの第１のポートを介してシーケンシャル装置によって受信されていないコマンドの部分を備える、請求項９に記載のシステム。
【請求項１１】
ホストは、コマンドのステータスをポートのうちの第２のポートを介して要求するように構成される、請求項９に記載のシステム。
【請求項１２】
ホストは、コマンドのステータスの要求に応答してルータによって受信されたデータバイト数の指示を受信するように構成される、請求項１１に記載のシステム。
【請求項１３】
ホストは、最後に受信されたデータバイトに続く次のデータバイトでのエラー回復の開始を要求するように構成される、請求項１２に記載のシステム。
【請求項１４】
ホストは、エラー回復の開始の受理の指示を受信するように構成される、請求項１３に記載のシステム。
【請求項１５】
ルータに結合されて、コマンドを受信するシーケンシャル装置をさらに備える、請求項９に記載のシステム。
【請求項１６】
シーケンシャル装置は、テープドライブを備える、請求項１５に記載のシステム。
【請求項１７】
シーケンシャル装置は、ＳＣＳＩ装置を備える、請求項１５に記載のシステム。
【請求項１８】
通信リンクに結合されて、コマンドおよびコマンド識別子をホスト装置から受信するシーケンシャル装置をさらに備える、請求項４に記載のシステム。
【請求項１９】
ホスト装置は、コマンドのステータスをポートのうちの第２のポートを介して要求するように構成される、請求項４に記載のシステム。
【請求項２０】
ホスト装置は、コマンドのステータスの要求に応答して受信されたデータバイト数を受信するように構成される、請求項１９に記載のシステム。
【請求項２１】
ホスト装置は、最後に受信されたデータバイトに続く次のデータバイトでのエラー回復の開始を要求するように構成される、請求項２０に記載のシステム。
【請求項２２】
ホスト装置は、エラー回復の開始の受理の指示を受信するように構成される、請求項２１に記載のシステム。
【請求項２３】
方法であって、
第１のコマンド識別子を第１のコマンドに関連付けることと、
第１のコマンドを第１のリンクを介して送信することと、
第１のリンクの障害を検出することと、
第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信することとを含む、方法。
【請求項２４】
方法は、ホストと、ホストおよびシーケンシャル装置間に結合されたルータにおいて実施され、第１のコマンド識別子を第１のコマンドに関連付けることは、ホストおよびルータが、ホスト装置からシーケンシャル装置へ送信されたコマンドをカウントし、カウント値を対応するコマンドに関連付けることを含み、第１のコマンドを第１のリンクを介して送信することと、第１のリンクの障害を検出することと、第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信することとは、ホストによって行われる、請求項２３に記載の方法。
【請求項２５】
第１のコマンドを発行してコマンドストリームを確立することによって、シーケンシャル装置へコマンドの組を送信することを開始することをさらに含み、ホスト装置およびルータは、第１のコマンドを受信後にコマンドのカウントを開始するように構成される、請求項２４に記載の方法。
【請求項２６】
第１のコマンド識別子を第１のコマンドに関連付けることは、第１のコマンド識別子を第１のコマンド内で明示的にすることを含む、請求項２３に記載の方法。
【請求項２７】
第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信する前に、第１のコマンドの実行ステータスを要求することと、第１のコマンドの実行ステータスを受信することと、以前に受信した最後のバイトに続く次のバイトで開始する回復を要求することと、回復要求の受理の受領確認を受信することとをさらに含む、請求項２６に記載の方法。
【請求項２８】
ステータスは、ルータによって実際に受信された第１のコマンドのバイト数を示す、請求項２７に記載の方法。
【請求項２９】
第１のコマンドおよび第１のコマンド識別子を第２のリンクを介してルータで受信することと、第１のコマンドの未実行部分を実行することとをさらに含む、請求項２６に記載の方法。
【請求項３０】
第２のリンクを介して受信された第１のコマンドおよび第１のコマンド識別子を識別することと、第２のリンクを介して受信された第２のコマンドの重複部分を識別することと、第１のコマンドの重複部分を廃棄することとをさらに含む、請求項２６に記載の方法。
【請求項３１】
ソフトウェア製品であって、ソフトウェア製品によってプログラムされた装置に、
第１のコマンド識別子を第１のコマンドに関連付けることと、
第１のコマンドを第１のリンクを介して送信することと、
第１のリンクの障害を検出することと、
第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信することとを含む方法を行わせるように構成される、ソフトウェア製品。
【請求項３２】
方法は、ホストと、ホストおよびシーケンシャル装置間に結合されたルータにおいて実施され、第１のコマンド識別子を第１のコマンドに関連付けることは、ホストおよびルータが、ホスト装置からシーケンシャル装置へ送信されたコマンドをカウントし、カウント値を対応するコマンドに関連付けることを含み、第１のコマンドを第１のリンクを介して送信することと、第１のリンクの障害を検出することと、第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信することとは、ホストによって行われる、請求項３１に記載の方法。
【請求項３３】
第１のコマンドを発行してコマンドストリームを確立することによって、シーケンシャル装置へコマンドの組を送信することを開始することをさらに含み、ホスト装置およびルータは、第１のコマンドを受信後にコマンドのカウントを開始するように構成される、請求項３２に記載の方法。
【請求項３４】
第１のコマンド識別子を第１のコマンドに関連付けることは、第１のコマンド識別子を第１のコマンド内で明示的にすることを含む、請求項３１に記載の方法。
【請求項３５】
方法は、第１のコマンドおよび第１のコマンド識別子の少なくとも一部分を第２のリンクを介して送信する前に、第１のコマンドの実行ステータスを要求することと、第１のコマンドの実行ステータスを受信することと、以前に受信した最後のバイトに続く次のバイトで開始する回復を要求することと、回復要求の受理の受領確認を受信することとをさらに含む、請求項３１に記載のソフトウェア製品。
【請求項３６】
ステータスは、実際に受信された第１のコマンドのバイト数を示す、請求項３５に記載のソフトウェア製品。
【請求項３７】
ソフトウェア製品は、デバイスドライバ内で実施される、請求項２５に記載のソフトウェア製品。
【請求項３８】
ソフトウェア製品は、デバイスドライバおよびコマンドドライバ間のシムドライバ内で実施される、請求項２５に記載のソフトウェア製品。
【請求項３９】
コマンドドライバは、ＳＣＳＩドライバを備える、請求項２５に記載のソフトウェア製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（本発明の背景）
発明の分野。本発明は、一般的にコンピュータシステムに関し、より特定的には、シーケンシャル装置をホストに接続する冗長リンクの障害後のエラー回復を行うためのシステムおよび方法に関する。
【背景技術】
【０００２】
発明の背景。独立型のコンピュータにおいては、データはハードディスクドライブなどの装置に格納される。この装置は、通常、コンピュータの内部にあり、内部（例えば、ＰＣＩ）バスによって、ＣＰＵに接続されている。内部バスにおけるデータ配信は、おおむね、誤りの発生がない。
【０００３】
しかしながら、ネットワーク環境においては、ワークステーションによって生成されたデータは、遠隔地の装置に記憶されることもある。言い換えれば、データ記憶装置は、ワークステーションの外部にあるネットワークによってワークステーションに結合されており、典型的には、ワークステーションおよび記憶装置以外の多くの装置に結合および用いられている。
【０００４】
ネットワークは、通常、内部バスよりもエラーが生じやすい。なぜならば、ネットワークは、ネットワークの利用を取り合う互いに遠くに離間した複数の装置を扱っているからである。単一のワークステーションおよび単一の記憶装置だけがあったとしても、内部バスにおけるよりも高い誤り率が予想される。なぜならば、ネットワークは他の装置と共に動作するように設計されているからである。
【０００５】
典型的なシステムは、記憶域ネットワーク（ＳＡＮ）内の記憶装置に結合されたワークステーション（ホスト）を備えてもよい。この例では、ワークステーションおよび記憶装置は、それぞれファイバチャネル切り替え構造に結合される。この切り替え構造は「クラス３」サービスと称されるものを提供するように設計されており、これは、ファイバチャネルプロトコルにおいて典型的に用いられるサービスのクラスである。ネットワークが提供するクラス３サービスにおいて、データは、ネットワークにおける複数のスイッチ間のフレーム（パケット）の境界で多重化される。クラス３サービスは、フレームの受信確認またはビジーな宛先装置の通知を提供するものではない。フレームが抜け落ちても、抜け落ちたフレームの通知がその送信者に提供されるわけではない。このようなことはホストまたはシーケンシャル装置によって明らかにされると単に推定される。
【０００６】
このことは、ハードディスクドライブなどのランダムアクセス装置にデータが記憶される場合には問題にならないかもしれない。書き込みコマンド中にデータが抜け落ちた場合は、典型的にはシーケンス全体が廃棄される。しかしながら、シーケンスは、不良となったＳＣＳＩコマンドを再発行することによって再送可能であり、記憶装置は、受信された部分が以前に記憶されていた場所に単に上書きする。以前に記憶されていた部分は、同じデータによって上書きされ、以前に抜け落ちた部分は、一回目の送信で受信されていれば記憶されていたであろう場所に書き込まれる。
【０００７】
しかしながら、テープドライブなどのシーケンシャル記憶装置では、エラーはより問題となる場合がある。同じシナリオにおいて、一回目の試みで受信されたデータの部分はテープに記憶され、テープは継続して進む。シーケンス全体が再送される場合には、テープドライブは、データが以前に記憶されたテープの完全に同じ場所へ再位置決めされなければならない。一回目の試みで受信されなかったデータの部分だけが再送されるのが望ましい。その後、テープドライブは、中断した展からテープへの書き込みを単に継続すればよい。
【０００８】
しかしながら、先行技術のシステムでは、データのどの部分が一回目の試みで受信されなかったを決定することが非常に難しい。ホスト装置は、データが最初に送信されたときに通ったポートから情報を抽出しなければならないであろう。その後、ホストは情報を解釈して、第２のポートを介しての伝送に適したシーケンスに変換しなければならないであろう。したがって、第１のポートからこの情報を抽出する必要なく、一回目に受信したデータの部分がどこであるかを決定する手段および／または方法を提供することが望ましいであろう。その後、ホストは、データの欠落した部分のみをシーケンシャル装置へ送付し、その後、シーケンシャル装置は、以前に受信した情報の後にそれを記憶すればよい。
【０００９】
先行技術におけるテープエラー回復は、バックアップアプリケーションのレベルまでエラーを伝播させることを含む。その結果、バックアップアプリケーションは、回復動作を行うのに膨大な量の時間を要することとなろう。代わりに、ＦＣ−ＴＡＰＥおよびＦＣ−ＤＡ技術報告書に規定されたファイバチャネルテープエラー回復は、データの損失から生じるエラーをバックアップアプリケーションから隠すための手段を提供している。
【発明の開示】
【課題を解決するための手段】
【００１０】
（本発明の概要）
上記で概説した問題のうちの１つ以上が、本発明の様々な実施形態によって解決するであろう。一般的に、本発明は、冗長通信リンクを用いるシステムにおけるエラー回復を行うためのシステムおよび方法を備える。一実施形態において、ホスト装置が、テープドライブなどのシーケンシャル装置にファイバチャネルリンクの対によって結合されている。ファイバチャネルリンクは既知のビット誤り率を有しているので、パケットが場合によっては破損する場合がある。パケットが破損した場合、何らかのエラー回復手順が行われて、データのすべて（書き込みコマンドおよび関連書き込みデータ）がシーケンシャル装置へ送信されることを保証しなければならない。したがって、一次ファイバチャネルリンク上のデータ送信におけるエラーを検出すると、ホストは、後続の送信のために二次リンクに切り替える。ホストは、シーケンシャル装置と協働して動作し、リンク障害のために部分的にしか受信されなかったコマンド／データを再送信する。これにより、シーケンシャル装置は完全なコマンド／データを有し、一回目の送信が失敗しなかったかのようにそれを処理することができることが保証される。
【００１１】
本発明の多くの異なる実施形態があるであろう。一実施形態において、方法は、ホストが識別子をコマンドに関連付けることと、第１のリンクを介してコマンドをシーケンシャル装置へ送信することと、第１のリンクを介したコマンド送信の障害を検出することと、第２のリンクを介してコマンドを再送信することとを含む。リンク障害を検出した後、障害前に送信された最後のコマンドのステータスが要求される。コマンドのステータスを受信後、（できればステータス情報によって示された点における）回復開始の要求がシーケンシャル装置へ送信される。回復要求が受け付けられると、コマンドの実行は完了する。代替実施形態においては、リンク障害が検出された後、最後のコマンドがホストによって再送信されてもよく、再送信されたコマンドの全部または一部が重複しているかどうかを決定するための責任は、シーケンシャル装置が担う。その後、シーケンシャル装置は、重複していない情報を用いて、コマンドの実行を完了させる。
【００１２】
本発明の他の実施形態は、複数の通信リンクによってシーケンシャル装置に結合されるように構成されたホスト装置を有するシステムを備える。ホストは、障害が検出されるまでは、コマンド（および／またはデータ）をリンクのうちの一次的な１つを介してシーケンシャル装置へ送信し、その後、中断された可能性のあるコマンドおよびそれ以降のコマンドをリンクのうちの二次的な１つを介して再送信するように構成されている。システムは、ホストに対して中断された可能性のあるコマンドを再送信させ、シーケンシャル装置に対して以前に受信した情報と重複する情報を識別して廃棄または無視するようさせることによって、障害後にエラー回復を行うように構成されてもよい。代わりに、システムは、回復動作を行う責任をホストおよびシーケンシャル装置間で分散させるように構成されてもよい。実施形態によっては、ルータがホストおよびシーケンシャル装置間に結合されてもよく、そうでなければシーケンシャル装置が行うであろうエラー回復動作を行ってもよい。
【００１３】
他の実施形態において、イニシエータ装置がルータに接続されて、イニシエータからルータへ送信されるコマンドをイニシエータおよびルータが並行してカウントするようにさせるベンダー固有のコマンドを送信してもよい。ｎ番目のコマンドが実行されている間にイニシエータおよびルータ間の一次通信リンクが破損した場合には、イニシエータは、コマンドｎで回復を開始すべきことを示すコマンドを二次リンクを通じて送信することができる。その後、イニシエータはコマンドｎを再送信し、ルータはコマンドｎの全部または一部を再実行して実行を完了させる。その後、動作（およびコマンドのカウント）が第２のリンク上で継続される。
【００１４】
本発明の実施形態によっては、エラー回復機構はソフトウェアで実施されてもよい。ソフトウェアアプリケーションは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＲＡＭ、ＲＯＭなどのようなコンピュータが読み取り可能な媒体で具体化される。コンピュータが読み取り可能な媒体は、コンピュータまたは他のデータ処理システムが上記に概略したような方法を実行するように構成されている命令を包含する。コンピュータが読み取り可能な媒体は、ＲＡＭまたはデータ処理システムの部分を形成する他のメモリを備えてもよいことに注意すべきである。これにより、コンピュータシステムは、本開示に従った方法を行うことができるようにあり、添付の請求項の範囲内にあると考えられる。
【００１５】
また、数多くの代替実施形態が可能である。
【００１６】
本発明の他の目的および利点は、以下の詳細な説明を読みかつ添付の図面を参照すれば明らかになるであろう。
【００１７】
本発明は、様々に修正されたり代替の形式を取ったりするものの、本発明の特定の実施形態を一例として、図面および添付の詳細な説明において示す。しかしながら、図面および詳細な説明は、説明する特定の実施形態に本発明を限定する意図ではないことが理解されるべきである。むしろ、この開示は、添付の請求項によって規定された本発明の範囲内のすべての修正、均等物、および代替物を包含することが意図されている。
【００１８】
（詳細な説明）
本発明の一実施形態を以下に説明する。以下に説明する本実施形態および他の実施形態は一例であり、本発明を限定するものではなく例証することが意図されていることに注意すべきである。
【００１９】
一般的に、本発明は、シーケンシャル装置をホストに接続する冗長リンクの障害の後のエラー回復を行うためのシステムおよび方法を含む。コマンド識別子が、一次リンクを通ってホストからシーケンシャル装置へ送信された各コマンドに関連付けられる。識別子のコマンドへの関連付けは、明示的であっても黙示的であってもよい。コマンド送信にエラーがある場合、コマンドは二次リンクを通って再送信される。コマンドが受信されると、その識別子が１つ以上の以前に受信された識別子と比較され、コマンドがホストによってシーケンシャル装置へ以前に送信されたかどうかを決定する。コマンドが以前に送信されていなかった場合には、シーケンシャル装置に転送される。コマンドが以前に送信されていた場合には、コマンドの重複部分は廃棄され、（重複データのない）コマンドがシーケンシャル装置へ転送される。
【００２０】
本システムおよび方法の利点の一つは、どのくらいのデータがシーケンシャル装置へうまくそう狆されたかを決定するために、一次リンクおよび／または当該リンクのあらゆるドライバから情報を抽出する必要がないであろうことである。代わりに、本システムおよび方法により、送信障害の検出および二次リンクを通じたデータの再送信が提供される。本システムおよび方法の他の利点と思われることは、市場において要求が増している利用可能性の高い環境における冗長リンクを利用することである。
【００２１】
図１を参照して、本システムの一実施形態を示す。本実施形態において、ホスト１１はテープドライブ１５に冗長ファイバチャネルリンク１２および１３の対によって結合されている。リンク１２は、ホスト１１のポート２１およびテープドライブ１５のポート２５に結合されている。リンク１３はホスト１１のポート２２およびテープドライブ１５のポート２６間に結合されている。ホスト１１は、ＳＣＳＩコマンドを生成して、これらのコマンドをファイバチャネルリンク１２および１３を通じてテープドライブ１５へ送信するように構成されている。
【００２２】
ホスト１１は、各コマンドに対応する固有のコマンド識別子を生成して、識別子を対応するコマンドに関連付ける。本実施形態においては、識別子は明示的なものであるが、他の実施形態においては、黙示的なものであってもよい。コマンド識別子は、一次ファイバチャネルリンク１２を通じてコマンドと共に送信される。コマンドがテープドライブ１５によって受信されると、テープドライブ１５は一次リンク１２を通じてホストに対して受領確認を送信して、コマンドが受信されたことをホスト１１に通知する。解く手のコマンドが受信されたことの受領確認をホスト１１が受信しない場合には、そのコマンドおよび関連識別子がテープドライブ１５へ二次ファイバチャネルリンク１３を通じて再送信される。テープドライブ１５は、各コマンドと共に受信されたコマンド識別子を調べて、当該コマンドが既に受信されていることを識別子が示す場合には、コマンドの重複していない部分のみを用いる。よって、ファイバチャネルリンクを通じて送信された情報のある部分は重複していても、重複している部分は、情報がテープドライブ１５によって用いられる前に除去される。
【００２３】
本明細書で用いられる「コマンド（ｃｏｍｍａｎｄ）」は、コマンドおよびあらゆる関連データをさすことに注意すべきである。例えば、書き込みコマンドおよび書き込まれるべきデータは、ホストおよびシーケンシャル装置間の送信エラーを説明する目的で、両方とも「コマンド（ｃｏｍｍａｎｄ）」という用語に含まれる。図２を参照して、ホストおよびテープドライブ間のデータ交換を示す。初めに、ホストは、実際のコマンド（例えば、「書き込み」）を送信する。テープドライブは、転送可能（ＸＦＲ＿ＲＤＹ）メッセージと共に応答する。その後、コマンドに関連するデータ（例えば、テープに書き込むべきデータ）がホストからテープドライブへ送信される。ホストからテープドライブへのデータ送信が完了すると、テープドライブはステータスメッセージをホストに返信する。この交換の終わりにステータスメッセージがホストによって受信されない場合には、コマンド（関連データを含む）の送信は失敗であったと考えられる。
【００２４】
図３を参照して、バックアップアプリケーション３０の構成を説明する図を示す。バックアップアプリケーション３０は、ホスト装置に常駐する。バックアップアプリケーション３０は、テープドライブを制御するように設計されたテープドライバ３１に結合されている。テープドライバ３１は、ＳＣＳＩドライバ３２に結合され、ＳＣＳＩドライバ３２は、続いて、ポートドライバ３３および３５（それぞれ、ポート３４および３６を駆動するために用いられる）に結合されている。ＳＣＳＩドライバ３２は、テープドライバ３１によって生成されたテープドライブコマンドに対応するＳＣＳＩコマンドを生成する。ポートドライバ３３および３５は、ポート３４および３６を介して各ファイバチャネルリンクへ送信されるファイバチャネル形式のデータ（ＳＣＳＩコマンドに対応）を生成する。
【００２５】
本実施形態は、ＳＣＳＩレベルのコマンドを用いて、複数の冗長ファイバチャネルリンクに渡って動作するエラー回復機構を実施する。論理レベルにおいて、この機構は、ＦＣ−ＴＡＰＥおよびＦＣ−ＤＡ技術報告書において規定されているようなファイバチャネルテープエラー回復と実質上同一の機能を実行する。しかしながら、これらのＦＣ−ＴＡＰＥおよびＦＣ−ＤＡエラー回復機構は、単一のファイバチャネルリンクを用いる環境において動作するように設計されている。ＦＣ−ＴＡＰＥおよびＦＣ−ＤＡ機構は、複数の冗長ファイバチャネルリンクを利用するように設計されておらず、これらの機構の拡張について、ＦＣ−ＴＡＰＥおよびＦＣ−ＤＡ技術報告書は規定していない。
【００２６】
機能レベルにおいて、これらの２つの機構は大幅に異なる。ＦＣ−ＴＡＰＥおよびＦＣ−ＤＡ機構は、充分な情報をドライバおよび／または対応リンクから抽出して、データのどのくらいがテープドライブへ送信されたかを決定する必要がある。この情報は、ポートドライバのレベルまで伝播され、ポートドライバは、その後、これを処理して、どのデータが次に送信されるべきかを決定する。本機構は、この情報の抽出は必要としないが、代わりに、重複するであろうデータを送信する。重複データを送信すると、ルータ、テープドライブ、または他の受信装置が、関連コマンドが以前に実行された程度を決定してコマンドの実行が有効に完了するようにデータを用いる任務が与えられる。
【００２７】
本機構の本実施形態は、ＳＣＳＩレベルのコマンドを用いて、ファイバチャネルテープエラー回復と同等のエラー回復を実施する。本実施形態は、いくつかの特徴によって特徴付けられる。各ＳＣＳＩコマンドは、関連識別番号（新たなＳＣＳＩコマンドの導入を必要としてもよいし、必要としなくてもよい）有する；関連識別暗号を用いる特定のＳＣＳＩコマンドのステータスを依頼および返すように新たなＳＣＳＩコマンドおよび応答が導入される；以前のコマンド内の特定のバイトから回復が開始するように要求するように、新たなＳＣＳＩコマンドが導入される；および、要求された回復動作を受理または否認するように、関連応答が導入される。新たなＳＣＳＩコマンドは、ベンダー固有のコマンドとして当初実施されてもよいが、機構が普及した後は標準化する必要があるであろう。
【００２８】
エラー回復機構の本実施形態の動作は、以下のシナリオによって例証される。このシナリオでは、ホストおよびテープドライブは、図１に示すようであると仮定する。ホスト１１は２つのＦＣポート２１および２２を有し、テープドライブに２つのポート２５および２６で接続している。よって、システムは、ホストおよびテープドライブ間で一次リンク１２および冗長二次リンク１３を有する。リンク１２は、故障するまではすべての動作のために用いられ、故障のときには、リンク１３がすべての動作を引き受ける。ホスト内のソフトウェアドライバが、冗長リンクの存在を認識している。このドライバは、テープドライバであってもよいし、テープドライバおよびＳＣＳＩ装置ドライバ間にはめ込まれるシムドライバであってもよい。上述したように、本実施形態におけるホストおよびテープドライブ間の情報交換は、図２に示すようであってもよい。
【００２９】
このシナリオにおけるイベントのシーケンスは、図４に示されており、以下のようになる（ホスト、テープドライブ、およびリンクの参照番号は、図１に示すシステムを指す）：ホスト１１は、リンク１２を用いてテープドライブ１５に対してバックアップ処理を行っている（テープドライブへのすべてのＳＣＳＩコマンドには、識別番号が与えられており、ＳＣＳＩ  ＬＵＮは、使用中のテープドライブを識別する）；リンク１２が、識別番号ｘのテープ書き込み動作中に破損する；リンク１２が破損したことをホストドライバが認識して、リンク１３を代わりに用い始める；ホストドライバは、リンク１３を通じて出された新たなＳＣＳＩコマンドを用いて、識別番号ｘの適切なＬＵＮに対して書き込み動作のステータスを要求する；テープドライブは、特に、実際に受信されたデータバイト数を示すステータスと共に応答する；ホストドライバは、新たなＳＣＳＩコマンドを送って、テープドライブが最後に受信した後の次のデータで回復を開始するように要求する；テープドライバは、回復開始要求の受理を示して応答する；ホストドライバは、元の失敗したテープ書き込み動作から残りのデータを書き込むという、識別番号ｘ＋１を用いたテープ書き込み動作を行う。
【００３０】
第１のステップの前に、すべてのコマンドはホストからテープドライブへ一次リンク（１２）を通じて送信されることに注意すべきである。一次リンクが破損すると、後続のすべてのコマンドは二次リンク（１３）を通じて送信される。バックアップアプリケーションは、一次リンクの障害を認識しないことにも注意すべきである。
【００３１】
上述の実施形態において、ホストはリンク障害を検出して、その後、（二次リンクを介して）テープドライブに最後のコマンドのステータスを要求する。その後、テープドライブは、送信のステータスと共に応答する。その後、ホストは（ステータス応答内でテープドライブが示したポイントで）回復開始を要求し、回復要求が受理されることをテープドライブがホストに対して示した後、ホストはコマンド動作を完了する。ホストおよびテープドライブは相互に作用して、エラー回復動作についての最初のパラメータ（例えば、どのバイト回復を開始すべきか）を決定および同意する。代替実施形態においては、ホストおよびテープドライブは、コマンド送信以外にはほとんどまたは全く相互に作用しない。この実施形態では、ホストは、一次リンクの障害を検知して、障害時に送信されていたコマンドを再び送る責任を担う。テープドライブは、同一のコマンドの再送信を検出して、コマンド情報の重複している部分を除去する責任を担う。このシーケンスを以下に説明し、図５に示す。
【００３２】
ホスト１１は、リンク１２を用いてテープドライブ１５に対してバックアップ処理を行っている（テープドライブへのすべてのＳＣＳＩコマンドには、識別番号が与えられており、ＳＣＳＩ  ＬＵＮは、使用中のテープドライブを識別する）；リンク１２が、識別番号ｘのテープ書き込み動作中に破損する；リンク１２が破損したことをホストドライバが認識して、リンク１３を代わりに用い始める；ホストドライバは、識別番号ｘのテープ書き込み動作を繰り返す；テープドライブは、コマンドの受領を示して応答して、テープ書き込み動作を行う；テープドライブは、識別番号ｘのテープ書き込み動作は以前に受信されていたことを決定する；テープドライブは、重複するテープ書き込み動作の部分を識別して、廃棄する；テープドライブは、コマンドの実行を完了する（例えば、失敗した元のテープ書き込み動作からの残りのデータを書き込む）；上述のシナリオにおけるホストによって用いられる方法のより基本的な記述は、以下のとおりである：ホストは、識別子をコマンドに関連付ける；ホストは、コマンドを第１のリンクを介して送信する；ホストは、第１のリンクを介するコマンド送信の障害を検出する；ホストは、コマンドを第２のリンクを介して再送信する。
【００３３】
上記したように、障害に続くエラー回復は、主にシーケンシャル装置が関与する（シーケンシャル装置は、再送信を識別して、完全なコマンドを一度だけ実行するように構成されてもよい）か、または（ステータス情報の要求および返信ならびにエラー回復要求の要求および受理において上記に示すように）シーケンシャル装置およびホストの両方が関与してもよい。
【００３４】
一実施形態において、コマンド識別子は、連続コマンドに明示的に関連付けられる増加する一連の番号を備える。例えば、ある特定のコマンドに対するコマンド識別子は、１０１０であってもよい。次のコマンドに対するコマンド識別子は、１０１１であろう。しかしながら、識別子の特定の形式は、他の実施形態においては異なっていてもよい。識別子の主な目的は、ホストおよびシーケンシャル装置が同じコマンドを扱っていることを確認できるようにするためのもであるから、識別子は、コマンドが一意に識別できればどのような形式をとってもよい。例えば、識別子は、擬似乱数または英数字列などであってもよい。また、識別子は局所的に固有だけであってもよいことに注意すべきである。すなわち、識別子は、障害コマンドと順序が近いコマンドの識別子と比較されるだけでもよい。したがって、繰り返して用いられる識別子の比較的小さな組を用いれば充分であろう。さらに、識別子は、明示的でなく黙示的であってもよい。
【００３５】
上述の本実施形態において、コマンド識別子を生成して、それらを対応するコマンドに関連付け、他のホスト機能を行う責任は、ホスト装置とは異なる構成要素にあってもよい。これらの機能は好ましくはテープドライバ（図２の項目３１参照）またはテープドライバおよびＳＣＳＩドライバ間のインターフェイスを提供するシムドライバによって行われてもよいことが意図されている。シーケンシャル装置の機能も同様に、装置の様々な構成要素内にあってもよい。ホストおよびシーケンシャル装置の機能も、構成要素の間で様々なやり方で分配されていてもよい。実際、上述のシーケンシャル装置の機能は、好ましくは、ホストおよびシーケンシャル装置間のインターフェイスとなるルータ内にあってもよい。この場合、エラー回復機構は、シーケンシャル装置にとって存在を意識させないものとなる。
【００３６】
上記したように、他の実施形態は、識別子をコマンドに黙示的に関連付けてもよい。例えば、一実施形態において、イニシエータ装置がルータに接続して、イニシエータからルータへ送信されるコマンドをイニシエータおよびルータが並行してカウントするようにさせるベンダー固有のコマンドを送信するようにしてもよい。ｎ番目のコマンドが実行されている間にイニシエータおよびルータ間の一次通信リンクが故障した場合には、イニシエータは、コマンドｎで回復を開始すべきことを示すコマンドを二次リンクを通じて送信することができる。その後、イニシエータはコマンドｎを再送信し、ルータはコマンドｎの全部または一部を再実行して実行を完了させる。その後、動作（およびコマンドのカウント）が二次リンク上で継続する。この実施形態を図６に示す。
【００３７】
図６を参照して、一実施形態においてルータ４８に結合されたイニシエータ装置４１を説明する図を示す。イニシエータ装置４１は、ルータ４８に２つの別々の通信リンクを経て結合されている。第１のリンクは、ホストバスアダプタ４２を介して、スイッチ４４を経て、ＦＣポート４６に向けられている。第２のリンクは、ホストバスアダプタ４３を介して、スイッチ４５を経て、ＦＣポート４７に向けられている。イニシエータ４１からのコマンドは、テープバックアップ装置４９へ転送される。
【００３８】
先に説明した実施形態と同様に、本実施形態は、識別子（この場合、識別番号）を各コマンドに関連付けて、回復すべきコマンドが関連付けられた識別子によって識別されるようにすることに依存している。また、本実施形態は、所定のコマンドが生じるホストを識別するルータの機能にも依存している。このことは、例えば、機構の利用を一度に１つのホストに制限することによって達成することができる。
【００３９】
本実施形態は、いくつかの新規のＳＣＳＩコマンドの実施を必要とする。新規のコマンドの１つは、新規のコマンドストリームを確立する。このコマンドが発行されると、ストリームが確立されて、「イニシエータからＬＵＮ」（ＩＴＬ）の関係に関連付けられる。このコマンドに対するエラーでない応答が発行されると、新規のストリーム（ストリーム識別子を有する）が確立される。別の新規のＳＣＳＩコマンドは、紹介回復処理が開始されていることをルータに知らせるように設計されている。このコマンドは、（コマンドを扱う方法を決めることができるように）、回復されつつあるコマンドストリームを識別し、当該コマンドストリームを回復処理を開始するホストに関連付け、送られようとするストリームにある次のコマンドの数値を識別する。
【００４０】
次のコマンドが受信されると、４つの方法のうちの１つで取り扱われる：否定的な結果を伴わずにコマンドを繰り返すことができる場合は、コマンドは再発行される；コマンドが受信されたことがなかった場合は、コマンドは通常通り取り扱われる；コマンドが完了して応答がホストに帰ってこなかった場合は、ホストに応答を返す；コマンドが部分的に実行された場合は、ルータがコマンドの残りの完全な実行を試みる。
【００４１】
この手法により、テープ動作（例えば、バックアップ）の最中に、ホストのバックアップアプリケーションまで障害通知を伝播させる必要なく、一次通信リンクの障害からからホストが回復することが可能となる。ＳＣＳＩコマンドレベルにおける本機構の実施により、ホストバスアダプタドライバが障害回復処理に参加する必要性がなくなる。
【００４２】
本エラー回復機構の好ましい実施形態は、ホストおよびシーケンシャル装置間に１対のファイバチャネルリンクを有するシステムにおいて実施される。それにもかかわらず、この機構は、装置間のリンクの他の配置を用いるシステムに拡張できてもよい。例えば、装置を接続する２つ以上のリンク（１つの一次リンクおよび２つ以上の二次リンク）があってもよく、リンクは、ファイバチャネル以外のプロトコルに従って動作するように構成されてもよい。
【００４３】
また、本発明の好ましい実施形態の以上の説明はホストからルータへのデータの流れを中心としているが、本発明の様々な実施形態がデータの反対の流れ（例えば、ルータからホストへ）に適用可能なことに注意すべきである。この状況では、ルータからホストへのデータ送信においてエラーが生じる場合にデータをホストへ再送信できるように、ルータは、そのバッファにデータを保持する必要があってもよい。また、ルータは、（例えば、ホストからの受領確認を検出したり、またはタイムアウトすることによって）データがうまく送信されたときを決定するように構成される必要もあるだろう。
【００４４】
さらに、本発明の様々な実施形態は、データ読み出しおよびデータ書き込みコマンドに限定されないことに注意すべきである。実施形態は、他のコマンド（例えば、任意のＳＣＳＩコマンド）と共に動作するように構成されてもよい。リンク障害は、そのような任意のコマンド中にも生じうる。これらのコマンドの障害は、上述と同じ方法で回復され、ホストは代替リンクに切り替え、回復がコマンド「ｘ」で開始するであろうことをルータに通知し、コマンド「ｘ」を再発行して、動作が進む。その後、ルータは、応答が同一でかつ装置の状態が変わらないような適切な方法で、再発行されたコマンドを扱う。
【００４５】
本発明によって提供されるであろう便宜および利点を、特定の実施形態に関連して上述してきた。これらの便宜および利点、ならびにこれらを生じさせるかまたはより明白にするようなあらゆる要素または限定は、任意または全部の請求項の重要な、所要の、または必須の特徴であると解釈されるべきではない。本明細書において用いたように、「備える（ｃｏｍｐｒｉｓｅｓ）」、「備えている（ｃｏｍｐｒｉｓｉｎｇ）」という用語、またはその他の変化型は、これらの用語の後に来る要素または限定を非排他的に含むと解釈されることが意図されている。したがって、要素のリストを備える処理、方法、物、または装置は、これらの要素のみを含むのではなく、明示的には列挙されていない他の要素、またはクレームされた処理、方法、物、または装置に固有の他の要素を含んでもよい。
【００４６】
特定の実施形態を参照して本発明を説明してきたが、実施形態は例示的であり、本発明の範囲はこれらの実施形態に限定されるものではないことが理解されるべきである。多くの変更、修正、追加、および改良が、上述の実施形態に対して行いうる。これらの変更、修正、追加、および改良が、以下の請求項内に詳述したような本発明の範囲に該当することが意図されている。
【図面の簡単な説明】
【００４７】
【図１】図１は、一実施形態におけるシステムを示す図であって、ホストが通信リンクの対によってシーケンシャル装置に結合されており、通信リンクのうちの１つが重複している図である。
【図２】図２は、一実施形態におけるホストおよびシーケンシャル装置間のデータ交換を示す図である。
【図３】図３は、一実施形態におけるホストでのバックアップアプリケーションの例の構造を示す図である。
【図４】図４は、本発明の一実施形態に係る方法を示すフロー図である。
【図５】図５は、本発明の代替実施形態に係る方法を示すフロー図である。
【図６】図６は、識別子のコマンドとの関連付けが黙示的に行われるシステムの一実施形態を示す図である。
【図１】
2005533314.tif 000003
【図２】
2005533314.tif 000004
【図３】
2005533314.tif 000005
【図４】
2005533314.tif 000006
【図５】
2005533314.tif 000007
【図６】
2005533314.tif 000008
【国際調査報告】
2005533314.tif 000009