(57)【要約】【課題】  ストレージエリアネットワーク内のファイバチャネルスイッチのための高アベイラビリティを冗長性スーパバイザ群を用いて実現する。【解決手段】  アクティブスーパバイザは、メッセージに関連付けられた高アベイラビリティ特性を特定し、メッセージが冗長スーパバイザ上にミラーリングされ、ロギングされ、および／または持続性を維持されなければならないかを決定することができる。メッセージは、ペンディングトランザクションバッファ中にロギングされ、持続性ストレージサービスを用いて記憶されえる。ミラーリングは、メッセージが冗長スーパバイザに非同期的に渡されることを可能にする同期キューを用いて実行されえ、一方でスーパバイザ群間の完全な同期が維持され、アクティブスーパバイザの動作への遅延はわずかに生じるだけである。
2005539284.tif 000002
【特許請求の範囲】
【請求項１】
ストレージエリアネットワーク内のファイバチャネルスイッチにおいて高アベイラビリティを実現する方法であって、
ファイバチャネルスイッチ内のアクティブスーパバイザ上で走る第１アプリケーションにおいてメッセージを特定すること、
前記メッセージに関連付けられた高アベイラビリティ特性を決定することであって、高アベイラビリティ特性は、前記ファイバチャネルスイッチ内のスタンバイスーパバイザ上で走る第２アプリケーションを前記第１アプリケーションに同期させる情報を提供する、高アベイラビリティ特性を決定すること、
前記メッセージがミラーリングされるべきであることを高アベイラビリティ特性が示すとき、前記メッセージを前記スタンバイスーパバイザ上で走る前記第２アプリケーションに提供すること
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記メッセージに関連付けられたサブスクライバ特性を決定することをさらに含み、サブスクライバ特性は、前記アクティブスーパバイザ上で走るどのアプリケーションが前記メッセージを受信するようサブスクライブしたかを決定する情報を提供する方法。
【請求項３】
請求項２に記載の方法であって、前記アクティブスーパバイザ上で走る複数のサブスクライバに前記メッセージを提供することをさらに含む方法。
【請求項４】
請求項３に記載の方法であって、前記メッセージを前記複数のサブスクライバに提供することは、前記メッセージを第１スーパバイザ共有バッファにコピーすることを含む方法。
【請求項５】
請求項３〜４のいずれかに記載の方法であって、前記メッセージを前記複数のサブスクライバに提供することは、前記第１スーパバイザ共有バッファにおける前記メッセージへの参照を前記サブスクライバに提供することを含む方法。
【請求項６】
請求項３〜５のいずれかに記載の方法であって、前記メッセージを前記スタンバイスーパバイザ上で走る複数のサブスクライバに提供することをさらに含む方法。
【請求項７】
請求項３〜６のいずれかに記載の方法であって、前記メッセージを前記複数のサブスクライバに提供することは、前記メッセージを第２スーパバイザ共有バッファにコピーすることを含む方法。
【請求項８】
請求項７に記載の方法であって、前記メッセージは、前記第１スーパバイザから前記第２スーパバイザに非同期的にコピーされる方法。
【請求項９】
請求項８に記載の方法であって、前記メッセージが前記第２スーパバイザにコピーされる前に、前記メッセージへのアクノリッジが前記第１アプリケーションによって送られる方法。
【請求項１０】
請求項３〜９のいずれかに記載の方法であって、前記メッセージを前記スタンバイスーパバイザ上で走る前記複数のサブスクライバに提供することは、前記第２スーパバイザ共有バッファにおける前記メッセージへの参照を前記サブスクライバに提供することを含む方法。
【請求項１１】
請求項３〜１０のいずれかに記載の方法であって、高アベイラビリティ特性はミラーリング、持続性、およびロギングに関する方法。
【請求項１２】
請求項１１に記載の方法であって、もし前記メッセージがロギングされるべきであることを高アベイラビリティ特性が示すなら、第１スーパバイザトランザクションログを維持することをさらに含む方法。
【請求項１３】
外部ファイバチャネルネットワークエンティティに結合されたファイバチャネルラインカード、
前記ファイバチャネルラインカードにバックプレーンを通して結合された第１スーパバイザ、
前記第１スーパバイザに結合された第２スーパバイザ、
を備え、
前記第１スーパバイザは、前記第１スーパバイザの状態を変化させる前記外部ファイバチャネルネットワークエンティティからのメッセージを特定し、前記メッセージが前記第２スーパバイザに渡される前に前記外部ファイバチャネルネットワークエンティティにアクノリッジを送るよう構成されるファイバチャネルスイッチ。
【請求項１４】
請求項１３に記載のファイバチャネルスイッチであって、前記第１スーパバイザは、前記メッセージを前記第２スーパバイザに渡す前に、前記メッセージに関連付けられた予告を前記第２スーパバイザに送るようさらに構成されるファイバチャネルスイッチ。
【請求項１５】
請求項１３〜１４のいずれかに記載のファイバチャネルスイッチであって、前記予告は、前記メッセージに関連付けられたシーケンスナンバであるファイバチャネルスイッチ。
【請求項１６】
請求項１３〜１５のいずれかに記載のファイバチャネルスイッチであって、前記予告は、アクノリッジが前記外部ファイバチャネルネットワークエンティティに送られる前に同期して送信されるファイバチャネルスイッチ。
【請求項１７】
請求項１６に記載のファイバチャネルスイッチであって、前記メッセージは、前記メッセージがアクノリッジされた後に同期して送信されるファイバチャネルスイッチ。
【請求項１８】
請求項１３〜１７のいずれかに記載のファイバチャネルスイッチであって、前記第２スーパバイザは、前記予告を用いてその内部状態の整合性を確認するよう構成されるファイバチャネルスイッチ。
【請求項１９】
請求項１４に記載のファイバチャネルスイッチであって、前記第１スーパバイザは、第１ペンディングトランザクションバッファを備えるファイバチャネルスイッチ。
【請求項２０】
請求項１９に記載のファイバチャネルスイッチであって、前記メッセージは、前記第１ペンディングトランザクションバッファにコピーされ、前記メッセージへの参照が、前記第１スーパバイザ上で走る第１の複数のアプリケーションに提供されるファイバチャネルスイッチ。
【請求項２１】
請求項２０に記載のファイバチャネルスイッチであって、前記第１スーパバイザ上で走る前記第１の複数のアプリケーションは、前記メッセージへのサブスクライバであるファイバチャネルスイッチ。
【請求項２２】
請求項２０〜２１のいずれかに記載のファイバチャネルスイッチであって、前記第２スーパバイザは、第２ペンディングトランザクションバッファを備えるファイバチャネルスイッチ。
【請求項２３】
請求項２２に記載のファイバチャネルスイッチであって、前記メッセージは、前記第２ペンディングトランザクションバッファにコピーされ、前記メッセージへの参照が、前記第２スーパバイザ上で走る第２の複数のアプリケーションに提供されるファイバチャネルスイッチ。
【請求項２４】
請求項２３に記載のファイバチャネルスイッチであって、前記第２スーパバイザ上で走る前記第２の複数のアプリケーションは、前記メッセージへのサブスクライバであるファイバチャネルスイッチ。
【請求項２５】
請求項２３〜２４のいずれかに記載のファイバチャネルスイッチであって、前記第１スーパバイザはアクティブスーパバイザであって、前記第２スーパバイザはスタンバイスーパバイザであるファイバチャネルスイッチ。
【請求項２６】
請求項２３〜２５のいずれかに記載のファイバチャネルスイッチであって、前記メッセージがミラーリングされるべきであることをもし前記メッセージの高アベイラビリティ特性が示すなら、前記メッセージは前記第２ペンディングトランザクションバッファにコピーされるファイバチャネルスイッチ。
【請求項２７】
ストレージエリアネットワーク中のスイッチであって、
ファイバチャネルスイッチ内のアクティブスーパバイザ上で走る第１アプリケーションにおいてメッセージを特定する手段、
前記メッセージに関連付けられた高アベイラビリティ特性を決定する手段であって、高アベイラビリティ特性は、前記ファイバチャネルスイッチ内のスタンバイスーパバイザ上で走る第２アプリケーションを前記第１アプリケーションに同期させる情報を提供する、高アベイラビリティ特性を決定する手段、
前記メッセージがミラーリングされるべきであることを高アベイラビリティ特性が示すとき、前記メッセージを前記スタンバイスーパバイザ上で走る前記第２アプリケーションに提供する手段
を備えるスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイバチャネルネットワークスイッチに関する。より具体的には本発明は、ストレージエリアネットワーク内のファイバチャネルスイッチの高アベイラビリティを実現する方法および装置に関する。高アベイラビリティは、ミラーリング、ロギング、持続性、アプリケーション再初期化、およびスイッチオーバーのようなサービスを含む。
【背景技術】
【０００２】
非常に限定された高アベイラビリティサービスしかファイバチャネルネットワークには存在しない。ファイバチャネルストレージエリアネットワークのための高アベイラビリティの一形態は、ルートの冗長性である。サーバのような第１ストレージエリアネットワークエンティティが、ファイバチャネルファブリック内のディスクアレイのような第２ストレージエリアネットワークエンティティにメッセージを送ろうとするとき、このメッセージは、ファイバチャネルファブリック内のさまざまなスイッチを通過する。もし特定のスイッチが故障するなら、近接のスイッチがこの故障を認識して、メッセージを代替ルートに沿って通すことができる。代替ルートは、故障したスイッチをバイパスすることによってネットワーク動作を維持することができる。しかし故障したスイッチをいつもバイパスできるわけではない。ある例では、故障したスイッチは、直接にターゲットディスクアレイに接続しえ、宛先への代替ルートが存在しないかもしれない。故障したスイッチをバイパスすることは、ファイバチャネルネットワークの動作にとって中断的でもありえる。トラフィックは、いまや追加のトラフィックを運ばなければならないスイッチを通して、遅くされえる。ファブリックの全体的な帯域幅は低下しえる。
【０００３】
多くの他の高アベイラビリティサービスは、状態情報を保存するのに失敗し、遅いネットワーク動作またはアプリケーションの再初期化を引き起こす。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、ファイバチャネルスイッチ内において高アベイラビリティを提供し、上述の制限の一部または全てについて高アベイラビリティサービスを改善する方法および装置を提供することが望まれる。
【課題を解決するための手段】
【０００５】
ストレージエリアネットワーク内のファイバチャネルスイッチのための高アベイラビリティは、冗長性スーパバイザ群を用いて実現されえる。アクティブスーパバイザは、メッセージに関連付けられた高アベイラビリティ特性を特定し、メッセージが冗長スーパバイザ上にミラーリングされ、ロギングされ、および／または持続性を維持されなければならないかを決定することができる。メッセージは、ペンディングトランザクションバッファ中にロギングされ、持続性ストレージサービスを用いて記憶されえる。ミラーリングは、メッセージが冗長スーパバイザに非同期的に渡されることを可能にする同期キューを用いて実行されえ、一方でスーパバイザ群間の完全な同期が維持され、アクティブスーパバイザの動作への遅延はわずかに生じるだけである。
【０００６】
ある実施形態によれば、ストレージエリアネットワーク内のファイバチャネルスイッチにおいて高アベイラビリティを実現する方法が提供される。ファイバチャネルスイッチ内のアクティブスーパバイザ上で走る第１アプリケーションにおいてメッセージが特定される。前記メッセージに関連付けられた高アベイラビリティ特性が決定される。高アベイラビリティ特性は、前記ファイバチャネルスイッチ内のスタンバイスーパバイザ上で走る第２アプリケーションを前記第１アプリケーションに同期させる情報を提供する。前記メッセージがミラーリングされるべきであることを高アベイラビリティ特性が示すとき、前記メッセージは前記スタンバイスーパバイザ上で走る前記第２アプリケーションに提供される。
【０００７】
ある例では、前記メッセージに関連付けられたサブスクライバ特性が決定される。サブスクライバ特性は、前記アクティブスーパバイザ上で走るどのアプリケーションが前記メッセージを受信するようサブスクライブしたかを決定する情報を提供する。
【０００８】
他の実施形態においてはファイバチャネルスイッチが提供される。このファイバチャネルスイッチは、外部ファイバチャネルネットワークエンティティに結合されたファイバチャネルラインカード、前記ファイバチャネルラインカードにバックプレーンを通して結合された第１スーパバイザ、前記第１スーパバイザに結合された第２スーパバイザを備える。  前記第１スーパバイザは、前記第１スーパバイザの状態を変化させる前記外部ファイバチャネルネットワークエンティティからのメッセージを特定し、前記メッセージが前記第２スーパバイザに渡される前に前記外部ファイバチャネルネットワークエンティティにアクノリッジを送るよう構成される。
【０００９】
本発明のこれらや他の特徴および優位性は、本発明の以下の明細書および添付図面においてより詳細に示され、これらは本発明の原理を例示により示す。
【発明を実施するための最良の形態】
【００１０】
本発明は、以下の記載を添付図面と併せて参照することによって最もよく理解され、これらは本発明の具体的な実施形態を例示的に示す。
【００１１】
本発明は、ファイバチャネルファブリック内のセキュリティに関する。より具体的には本発明は、ファイバチャネルファブリック内において高アベイラビリティスイッチを提供する方法および装置に関する。
【００１２】
発明者によって本発明を実施するのに想定されたベストモードを含む本発明の具体的な実施形態のいくつかがここで参照される。これら具体的な実施形態の例は、添付図面において示される。本発明はこれら具体的な実施形態と併せて記載されるが、本発明を記載された実施形態に限定するようには意図されていないことが理解されよう。むしろ添付の特許請求の範囲によって規定される本発明の精神および範囲内に含まれえる代替物、改変物、および等価物をカバーするように意図される。
【００１３】
例えば、本発明の手法は、特定のファイバチャネルスイッチアーキテクチャのコンテキストで記載される。しかし本発明の手法は、多くの異なるコンポーネントおよびシステムを持つさまざまな異なるスイッチアーキテクチャに応用しえることに注意されたい。以下の記載において、多くの特定の詳細が述べられるが、これは本発明の理解を完全にするためである。本発明はこれら特定の詳細の一部または全てがなくても実施しえる。例えばよく知られたプロセス操作は、本発明の本質を不必要にぼかさないために記載されていない。
【００１４】
図１は、本発明の手法が使えるネットワークの概略図である。ファイバチャネルファブリック１３１は、スイッチ１１１および１１３と共に、さらに他のスイッチでありえる一般的なサービスプロバイダ１１５のような多くのネットワークエンティティを含みえる。スイッチ群は、ノード１０１、１０３、１０５、および１０７を相互接続するために用いられえる。ノード１０１、１０３、１０５、および１０７は、サーバ、テープライブラリ、ＲＡＩＤ、ディスクアレイ、または単にディスク群（ＪＢＯＤ）のようなエンティティでありえる。図１に示されるファイバチャネルアーキテクチャは、スイッチベースのアーキテクチャである。しかしファイバチャネルネットワークは、調停ループおよびポイントツーポイントのようなさまざまな異なるアーキテクチャを用いて実現できることに注意されたい。
【００１５】
ある実施形態において、ファイバチャネルネットワーク１３１は、ＩＰゲートウェイ１２１へのファイバチャネルのようなデバイスを通して従来のＩＰネットワーク１４１に接続されたストレージエリアネットワークである。ファイバチャネルストレージエリアネットワーク中の高アベイラビリティは、典型的には代替ルートを用いて提供される。特定のスイッチが故障するとき、故障スイッチを通るように構成されたトラフィックは、代替スイッチへとリルートされる。しかしトラフィックを代替スイッチにルーティングすることは中断的であり、ストレージエリアネットワークで利用可能な帯域幅を減少させる。さまざまな実施形態によれば、単一のファイバチャネルスイッチ内の高アベイラビリティを提供するためのさまざまな手法が提供される。スイッチを非常に利用可能な状態にする冗長性のようなメカニズムはここでは高アベイラビリティと呼ばれる。
【００１６】
図２は、本発明の手法を実現するのに用いられえるファイバチャネルスイッチの概略図である。ファイバチャネルスイッチ２０１は、１つ以上のスーパバイザ２１１および２１３を含みえる。ファイバチャネルファブリック内でメッセージを送るのに用いられえるプロセッサおよびその自身のアドレススペースを含むシステムはここではスーパバイザと呼ばれる。具体的な実現例において、スーパバイザ２１１は、アクティブまたはプライマリスーパバイザとして構成され、一方、スーパバイザ２１３は、ファイバチャネルスイッチの高アベイラビリティを提供するスタンバイまたはバックアップスーパバイザとして構成される。バックアップスーパバイザは、アクティブスーパバイザが故障するとき、ファイバチャネルスイッチ２０１の動作を想定するよう構成されえる。さまざまな実施形態によれば、それぞれのスーパバイザは、それ自身のプロセッサ、メモリ、およびストレージリソースを有する。
【００１７】
ある実施形態では、アクティブスーパバイザ２１１は、バックプレーン２１５から分離されたダイレクトリンクを通してスタンバイスーパバイザ２１３に接続されえ、またはスーパバイザは、ラインカード２０３、２０５、および２０７と共有されたコモンバックプレーンを通して接続されえる。アクティブスーパバイザ２１１は、バックプレーン２１５にバックプレーンインタフェースロジック２３１を通して接続されえ、スタンバイスーパバイザ２１３は、バックプレーン２１５にバックプレーンインタフェースロジック２３３を通して接続されえる。さまざまな実施形態によれば、バックプレーン２１５は、イーサネット（登録商標）タイプのネットワークである。ラインカード２０３、２０５、および２０７は、アクティブスーパバイザ２１１とインタフェース回路２２３、２２５、および２２７およびバックプレーン２１５を通して通信しえる。バックプレーン２１５は、ラインカードおよびスーパバイザの間のすべてのトラフィックについての通信チャネルを提供しえる。個々のラインカード２０３および２０７はまた、外部ファイバチャネルネットワークエンティティ２５１および２５３にファイバチャネルポート２４３および２４７を通して結合されえる。外部ファイバチャネルネットワークエンティティ２５１および２５３は、他のファイバチャネルスイッチ、ディスク、ＲＡＩＤ、テープライブラリ、またはサーバのようなノードでありえる。
【００１８】
スイッチは、任意の個数のラインカードおよびスーパバイザをサポートしえることに注意されたい。ある実施形態では、単一のスーパバイザだけがバックプレーン２１５に接続され、単一のスーパバイザが多くの異なるラインカードと通信する。
【００１９】
図３は、図２に示されるアクティブおよびスタンバイスーパバイザを示す概略図である。アクティブおよびスタンバイスーパバイザ２１１および２１３は同一である必要はないが、アクティブおよびスタンバイスーパバイザ２１１および２１３は、さまざまな同様のモジュールおよびコンポーネントを含みえる。混同を避けるために、アクティブスーパバイザに関連するさまざまなコンポーネントおよびモジュールがここでより詳細に記載され、この記載は、スタンバイスーパバイザ２１３の対応するコンポーネントおよびモジュールにも適用されえることが理解されよう。
【００２０】
具体的な実施形態によれば、アクティブスーパバイザ２１１は、ルーティング３２１、ドメインマネージャ３２５、システムマネージャ３２７、およびユーティリティ３２３のアプリケーションのような複数のアプリケーションを走らせるよう構成または設計されえる。ある実施形態によれば、ルーティングアプリケーション３２１は、メッセージを転送およびルーティングする機能を提供するよう構成される。ユーティリティアプリケーション３２３は、システムクロックおよびタイムスタンプ機能を提供するよう構成されえる。ドメインマネージャアプリケーション３２５は、ファイバチャネルストレージエリアネットワーク中のドメインをアサインするのに用いられえる。さまざまなスーパバイザアプリケーションはまた、さまざまなファイバチャネルプロトコルレイヤのためのサービス品質（ＱｏＳ）機能のような機能を提供するよう構成されえる。
【００２１】
システムマネージャは、さまざまなアプリケーションを起動し、モニタするよう構成されえる。さまざまな実施形態によれば、システムマネージャアプリケーションは、さまざまな他のアプリケーションをスーパバイザ内で起動するのに用いられる。システムマネージャはまた、アプリケーションがアクティブスーパバイザまたはスタンバイスーパバイザ内にあるかどうかを知っている唯一のアプリケーションでありえる。ある具体的な実現例では、システムマネージャは、さまざまなアプリケーションについて高アベイラビリティポリシーを実現する責任がある。システムマネージャは、プロセスを生成（spawn）し、プロセスヘルス（process health）をモニタし、アプリケーションが動作しなくなるときはさまざまなアプリケーションを再起動する。システムマネージャはまた、スタンバイスーパバイザへのスイッチオーバーが、アプリケーションの再起動よりも好ましいときを決定する責任を持ちえる。すなわち、システムマネージャは、アプリケーションを再起動すべきか、アクティブスーパバイザからスタンバイスーパバイザへ制御をシフトすべきかを決定するために、故障の重大度（severity）を決定しえる。ある例では、アプリケーションを起動したいと願う任意のコンポーネントはシステムマネージャを通してアプリケーションを起動する。
【００２２】
さまざまな実施形態によれば、システムマネージャを通してアプリケーションを起動するリクエストは、その特定のアプリケーションに適用される高アベイラビリティポリシーを含む。高アベイラビリティポリシーの一例は、プロセスまたはアプリケーションが終了するときに何もしないことである。アプリケーションが終了するとき、システムマネージャはその後、アプリケーションを再起動する必要はない。高アベイラビリティポリシーの他の例は、アプリケーションを再起動することである。もしアプリケーションの再起動が所定の秒数より長い時間、継続できないなら、再起動の試行は止まり、スイッチオーバーが試行されえる。システムマネージャは、その後、アクティビティをスタンバイスーパバイザにスイッチオーバーできる。アプリケーションは、ブートシーケンス中、または他のアプリケーションからの明示的なリクエストが受信されるときのようなさまざまなときにシステムマネージャによって起動されえることに注意されたい。
【００２３】
アクティブスーパバイザ２１１は、メモリ３１５に結合されたプロセッサ３１３も備える。コンポーネントは簡明さのために単数形で記載されていることに注意されたい。当業者なら、他のコンテキストと同様、このコンテキストでは複数のプロセッサおよびさまざまなメモリフォーマットが使用されえ、本発明の範囲に入ることが理解されよう。メモリ３１５は、コンポーネントによってアクセスされるソフトウェアプログラムおよびデータ構造を格納するためのプロセッサ３１３によってアドレス可能なシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）ストレージロケーションを備えてもよい。
【００２４】
スーパバイザはメモリを含むだけでなく、スーパバイザは、状態情報または他のアプリケーション特定のまたはシステムデータのようなアプリケーションまたはシステム情報を保持するための持続性（persistent）ストレージサービス３１７も含みえる。さまざまなアプリケーションのための持続性ストレージを提供するよう構成される任意のサービスは、ここでは持続性ストレージサービスと呼ばれる。さまざまな実施形態によれば、任意のアプリケーションは、持続性ストレージサービス３１７に関連付けられた持続性テーブル３１８にバインドされえる。ファイバチャネルスイッチ内に持続的にある状態情報のような情報を維持するためのデータ構造およびメカニズムは、ここでは持続性テーブルと呼ばれる。
【００２５】
それぞれの持続性テーブル３１８は、ユニークな識別子と関連付けられえる。アプリケーションの第１の起動（incarnation）が、アプリケーションに関連付けられた特定のテーブルへのバインドを試行するとき、テーブルはまだ存在せず、その結果、持続性ストレージサービス３１７によって作られる。それから特定のアプリケーションに関連付けられた持続性テーブル３１８は、アプリケーションの実行中に設定（populate）されえる。もしアプリケーションがクラッシュするか、または終了するなら、持続性テーブル３１８は保存されえる。アプリケーションの次の起動は、それからその同じテーブルにバインドすることを試みることができる。このバインドの結果は、アプリケーションの以前の起動によって既存の持続性テーブル３１８中に記憶されたデータに、新しく起動されたアプリケーションがアクセスできることである。
【００２６】
ある例では、持続性テーブルは、新しく起動されたアプリケーションが、アプリケーションの以前の起動によって記憶された状態情報にすぐにアクセスできるようにする。これにより、新しく起動されたアプリケーションが中断なく連続的に動作することが可能となる。持続性テーブルは、特定のテーブルフォーマットである必要はないことに注意されたい。持続性テーブルは、一例としてはテキストまたはローデータファイルでもよい。さらに持続性ストレージサービス３１７そのものは、持続性テーブル３１８に何が記憶されているかを知る必要はないことに注意されたい。持続性テーブルは、それぞれのアプリケーションのランタイムデータベースとは異なるように構成されえる。さまざまな実施形態によれば、持続性テーブルは、さまざまなランタイムデータベース中の情報を補う情報を提供できる。
【００２７】
アクティブスーパバイザ２１１は、冗長および高アベイラビリティマネージャ３１１に結合された冗長ドライバ３３５も含みえる。冗長ドライバ３３５は、スタンバイスーパバイザ内の冗長ドライバ３８５に結合されえる。さまざまなハードウェア信号は、それぞれのシステムのアベイラビリティを通信するのに用いられえる。
【００２８】
さまざまな実施形態によれば、アクティブスーパバイザは、ＭＴＳ  ３３１も含みえる。アクティブおよびスタンバイスーパバイザ間で持続的かつ共有してメッセージを伝えるのと共に、アクティブスーパバイザ内のアプリケーション間でメッセージを伝える任意のメカニズムは、ここではＭＴＳと呼ばれる。
【００２９】
当業者には理解されるように、アプリケーションは、ふつうソケットおよびメッセージキューと呼ばれる既存のメカニズムを用いて互いに通信できる。ソケットを用いる実現例では、バッファがカーネルメモリスペースに割り当てられる。他のアプリケーションにメッセージを送りたいアプリケーションは、メッセージをアプリケーションスペースからカーネルスペース内のバッファにコピーする。メッセージはそれから、カーネルバッファから、宛先に関連付けられたターゲットバッファにコピーされる。しかしソケットは、いくつかの欠点もある。アプリケーションスペースからカーネルスペースへのメッセージコピーおよびアプリケーションスペースへのコピーバックは、リソース集約的プロセスである。さらにソケットは、典型的には単一のアプリケーションが他の単一のアプリケーションと通信することだけを可能にするポイントツーポイントメカニズムである。ソケットはまた一時的である。すなわちもしソケットに問題があるなら、情報は失われる。ソケットアーキテクチャにおいては、さまざまなソケットの問題から起きた失われたメッセージを回復するのは困難である。
【００３０】
アプリケーションが互いに通信する他のメカニズムは、メッセージキューとふつう呼ばれる。グローバルバッファは、カーネルスペース内に割り当てられる。アプリケーションからのメッセージはグローバルバッファ内にコピーされる。もしアプリケーションが終了するなら、グローバルバッファが生き残る限り、メッセージは生き残る。しかしメッセージキューはやはり、単一のアプリケーションが他の単一のアプリケーションと通信することしか可能にしない。
【００３１】
さまざまな実施形態によれば、本発明の手法は、アプリケーションおよび１つ以上のターゲットアプリケーションの間の任意の通信についてのメッセージキュー３３９を割り当てるＭＴＳ  ３３１を提供する。ＭＴＳ  ３３１はまた、スーパバイザ間の通信も可能にする。メッセージキュー３３９は、複数のターゲットアプリケーションによるアクセスを可能にするグローバルキューでありえる。ある例では、メッセージキュー３３９は、ドメインマネージャ３２５への参照を提供し、ユーティリティアプリケーション３２３は２つのアプリケーションがメッセージキュー３３９内のメッセージにアクセスすることを可能にする。メッセージキュー３３９内のメッセージは、ターゲットアプリケーションにコピーされる必要はない。ＭＴＳ  ３３１はまた、メッセージキュー３３９内でアクセスされたが、アプリケーションに関連付けられた特定のスレッドによって処理されていないメッセージを保持するペンディングトランザクションバッファ３３７を提供する。
【００３２】
ある例では、ペンディングトランザクションバッファ３３７は、メッセージキュー３３９からデキューされたが、アプリケーションスペース内でそのメッセージにアクセスできる全てのアプリケーションによって処理されていないメッセージを保持する。ＭＴＳ  ３３１はまた、アクティブスーパバイザ２１１内で処理されるメッセージが非同期的にスタンバイスーパバイザ２１３と同期することを可能にする同期キュー３３３を含む。すなわち、メッセージは、アクティブスーパバイザ上での動作の遅延なく、スタンバイスーパバイザに同期される。典型的な実現例では、もしアクティブスーパバイザがメッセージを外部エンティティから受け取ったなら、アクティブシステムは、メッセージがスタンバイシステムに転送され、アクティブシステムがスタンバイシステムから応答を受け取るまで、外部エンティティには応答しないだろう。しかしこの純粋に同期的な手法は、スタンバイシステムからの応答を待つあいだ、アクティブシステムの動作を遅延させる。
【００３３】
本発明の手法によれば、アクティブスーパバイザは、スタンバイスーパバイザからの応答を待つ必要なしに、すぐに外部エンティティに応答でき、一方で、同期キューを用いてアクティブスーパバイザおよびスタンバイスーパバイザ間の同期も提供できる。ＭＴＳおよび同期キューについての詳細は、以下に述べられる。
【００３４】
上述のようにＭＴＳ  ３３１は、アプリケーションが、スーパバイザ内の複数のアプリケーションと通信でき、同時に、異なるスーパバイザが互いに通信できるように構成される。ＭＴＳ  ３３１はまた、高アベイラビリティサービスを提供できるよう構成されえる。高アベイラビリティサービスを提供するために、一例として、ＭＴＳ  ３３１は、それぞれのメッセージの高アベイラビリティ特性を特定する。図４は、メッセージ４０１が持ちえる高アベイラビリティ特性の概略図である。メッセージは、持続性あり４０３、ログされた４０５、およびミラーされた４０７でありえる。高アベイラビリティサービスを提供するために用いられる任意の特性は、ここでは高アベイラビリティ特性と呼ばれる。
【００３５】
持続性メッセージは、典型的には、状態の変化を引き起こすメッセージである。例えば、ドメイン無効化メッセージは、アクティブスーパバイザ上で走っているさまざまなアプリケーション内の状態の変化を引き起こしえる。もしメッセージがまだメッセージキュー内にあるのにアプリケーションがクラッシュするなら、メッセージは、アプリケーションのクラッシュおよび再起動を通して持続するのが望ましいだろう。もしメッセージが持続性がないなら、アプリケーションはクラッシュし、アプリケーションの次の起動は、その状態変化イベントを受け取ることが不可能であり、その結果、他のエンティティと異なる状態を持つことになるかもしれない。
【００３６】
ログメッセージは典型的には、持続性テーブルのアップデートを結果として生じるメッセージである。メッセージがメッセージキューからデキューした後、メッセージは即時に処理され、持続性テーブルにコミットされないかもしれない。メッセージがデキューされ、しかしアップデートが持続性テーブルになされる前にもしアプリケーションがクラッシュするなら、持続性テーブルは外のエンティティのそれと一致しなくなりえる。さまざまな実施形態によれば、持続性テーブルをアップデートするのに用いられえるメッセージは、ログとしてマークされる。アプリケーションが終了するとき、ログメッセージはそのまま残り、アプリケーションの将来の起動は、デキューされたメッセージにアクセスし、持続性テーブルをアップデートできる。
【００３７】
メッセージはまた、ミラーリングの高アベイラビリティ特性を持ちえる。もしメッセージがミラーされるべきなら、アクティブスーパバイザ上のＭＴＳコンポーネントは、メッセージをスタンバイスーパバイザのＭＴＳコンポーネントに転送するよう試みえる。ミラーリングの高アベイラビリティ特性を持つメッセージは典型的には、状態の変化または持続性テーブルへのアップデートを引き起こすメッセージである。メッセージの例は、持続性であるが、「ｇｅｔ」メッセージリクエストにおいてミラーされていないものがある。さまざまな実施形態によれば、アプリケーションがデータのための「ｇｅｔ」リクエストをサーバに送るとき、サーバは応答することによって、メッセージを持続性のあるものにしなければならないかもしれないが、サーバは情報をシンクロさせる必要はない。取り出されたデータは、テーブルをアップデートするためにクライアントによって用いられえる。ミラーされるが、ログされないメッセージは、サーバの状態を変えないメッセージを含みえる。持続性およびログのオプションは、サーバおよびクライアントのための同じメッセージについて独立に存在する。
【００３８】
ＭＴＳコンポーネントはまた、メッセージキュー中のメッセージを受信するよう設定されたアプリケーションを特定するよう構成されえる。上述のように、アプリケーションは特定の関心のあるメッセージをサブスクライブする。例えば、ユーティリティアプリケーションは、ドメインアップデートに関する任意のメッセージにサブスクライブしえる。ＭＴＳコンポーネントは、それぞれのメッセージまたはメッセージタイプに関連付けられた関係するサブスクライバ特性を記録・追跡する。どのサブスクライバがあるメッセージを受け取るよう構成されるかを特定するデータおよび情報は、ここではサブスクライバ特性と呼ばれる。受け取られた通信が特定のサブスクライバ特性を持つ、すなわち特定のメッセージタイプであるとき、ＭＴＳコンポーネントはメッセージを任意のサブスクライバに転送する。
【００３９】
図５Ａおよび５Ｂは、アクティブおよびスタンバイスーパバイザ間のトランザクションを示すプロセスフロー図である。図５Ａは、送信側のプロセスフローを示す。５０１において、メッセージは、メッセージ群の共有プール（shared pool）内に作られる。５０３において、グローバルおよびローカル送信元高アベイラビリティ特性が特定される。さまざまな実施形態によれば、メッセージは、上述のミラーリング、ロギング（logged）、および持続性（persistence）のような特性と関連付けられる。もし５０５においてメッセージがミラーリング特性を有すると決定されるなら、５２１においてメッセージは、スタンバイスーパバイザＭＴＳコンポーネントに非同期的に渡される。ある実施形態によれば、メッセージは、同期キューを用いて渡される。メッセージをスタンバイスーパバイザに同期キューを用いて渡すことについての詳細は以下に述べられる。
【００４０】
５０９において、メッセージがログ特性（logged characteristic）を有するかどうかが決定される。もしメッセージがログ特性を有すると決定されるなら、ログ情報（log information）は、メッセージがデキューされ、まだ持続性テーブルにコミットされていないときに、５２５においてペンディングトランザクションバッファに書き込まれる。メッセージは、サブスクライバキュー中でメッセージプール内のメッセージへの参照を作ることにより、さまざまなサブスクライバに５１１において渡されえる。
【００４１】
図５Ｂは、レシーバにおけるプロセスフローを示す。５５１において、サブスクライバキュー中の第１参照が抽出される。参照は、サブスクライバがメッセージの共有プール内のメッセージにアクセスできるようにする。５５３において、持続性およびログ特性のような高アベイラビリティ特性が特定される。もしメッセージが持続性特性を５５７において有するなら、参照はキュー内で５７３において保持される。もしメッセージがログ特性を５５９において有するなら、ログ情報は５７５において書き込まれ、サブスクライバは、アプリケーションに特定の処理をメッセージを用いて５６１において実行するよう処理を進めることができる。５６３においてメッセージは廃棄される。
【００４２】
図６は、ロックステップ（lockstep）においてアクティブおよびスタンバイスーパバイザ間で渡されるメッセージを示すトランザクション図である。６０１において、外部ファイバチャネルスイッチのような外部エンティティは、メッセージをアクティブスーパバイザに６１１において送る。同期動作を維持するために、アクティブスーパバイザはすぐには応答を外部エンティティに送らない。その代わり、アクティブスーパバイザは６１３のメッセージを６２１のスタンバイスーパバイザに転送し、スタンバイスーパバイザをアクティブスーパバイザと同期させる。６２３において、スタンバイスーパバイザは、メッセージへのアクノリッジまたは応答をアクティブスーパバイザに６１５において送る。アクノリッジまたは応答を受信すると、６１７のアクティブスーパバイザは、６０３の外部エンティティへアクノリッジまたは応答を送る。このトランザクションシーケンスは、アクティブおよびスタンバイスーパバイザを完全に同期した状態に維持するが、アクティブスーパバイザは外部エンティティへの応答を送る前にスタンバイスーパバイザからの応答を待つので、アクティブスーパバイザの応答時間は増す。外部エンティティにとっては、アクティブスーパバイザの応答時間は長く見えうる。
【００４３】
図７は、本発明の手法によってアクティブスーパバイザおよびスタンバイスーパバイザ間でやりとりされるメッセージを示すトランザクション図である。７０１において、外部エンティティはメッセージをアクティブスーパバイザに７１１において送る。アクティブスーパバイザはＭＴＳメッセージを７１３において生成し、それを同期キューに７２１において送る。アクティブスーパバイザはそれから、同期してシーケンスナンバを７１５において７３１のスタンバイスーパバイザへ送るよう処理を進めえる。
【００４４】
アクティブスーパバイザがＭＴＳメッセージを同期キューに送るとき、同期キューには他のメッセージが存在するかもしれないことに注意されたい。同期キューは、アクティブスーパバイザからのメッセージの順序を維持する。
【００４５】
７３３において、スタンバイスーパバイザは、シーケンスナンバへのアクノリッジを７１７でアクティブスーパバイザに送る。ＭＴＳメッセージの受信のアクノリッジを待つことなく、７１９のアクティブスーパバイザは、外部エンティティからのメッセージに７０３でアクノリッジしえる。ＭＴＳメッセージはそれから７２３の同期キューからスタンバイスーパバイザへ７３５において後で転送されえる。
【００４６】
これはアクティブスーパバイザの応答時間を低減するが、外部エンティティがメッセージのアクノリッジを受信する時とスタンバイスーパバイザがメッセージを受信する前の間でもし故障が発生すると、スキームは整合性のない結果につながりえる。
【００４７】
スタンバイスーパバイザがまだ実際には受信していないメッセージをスタンバイスーパバイザがすでに受信し、アクノリッジしたと外部エンティティが信じるかもしれないので、故障期間７４１は状態の不整合へとつながりえる。故障期間７４１の責任を取るため、７１３のアクティブスーパバイザは、スタンバイスーパバイザにメッセージが来る予定だと告げる予告（advance notification）を７３１のスタンバイスーパバイザに送る。ある実施形態において、アクティブスーパバイザは７１５において、スタンバイスーパバイザにメッセージが来る予定であると告げるシーケンスナンバをスタンバイスーパバイザ７３１に送る。もし７３５におけるメッセージが受信されないなら、スタンバイスーパバイザはそれからいくつかのメンテナンス動作を実行しえる。ある例としては、スタンバイスーパバイザは外部エンティティにシーケンスを再開するよう依頼できる。
【００４８】
図８は、アプリケーションの状態付き（stateful）再起動を示すフロープロセス図である。８０１において、持続性情報または持続性テーブルが特定のアプリケーションについて利用可能であるかが決定される。もし持続性テーブルが利用可能でないなら、アプリケーションは状態情報なしで８２１において初期化される。もし持続性テーブルが利用可能であるなら、アプリケーションは持続性テーブルに８０３においてバインドする。持続性テーブルはここでアプリケーションの前の起動によって作られたことに注意されたい。ペンディングトランザクションは、ペンディングトランザクションバッファから８０５において取り出される。持続性テーブル中の不一致は８０７において修正される。８０９において、ランタイムデータベースは、持続性テーブルからの情報を用いて構築され（populated）える。８１１において、ペンディングトランザクションはコミットされえる。８１３において、メッセージキュー中のメッセージはそれからデキューされえる。
【００４９】
図９は、スタンバイシステム上のアプリケーションの状態付き初期化を示すプロセスフロー図である。９０１において、持続性情報が利用可能かどうか決定される。もし持続性テーブル情報のような持続性情報が利用可能でないなら、アプリケーションは状態情報なしで９２１において初期化する。９０３において、アプリケーションに関連付けられたランタイムデータベースがアクティブシステム上の持続性データベースのスナップショットで構築される。９０５において、スタンバイシステム上のランタイムデータベースは、初期同期化で構築されえる。９０７において、アプリケーションは、メッセージまたはイベントのためのレジスタまたはサブスクライブをできる。ある例では、アプリケーションは、メッセージについてＭＴＳコンポーネントとレジスタまたはサブスクライブする。９３１において、スイッチオーバーが待たれる。スイッチオーバーとともに、アプリケーションは９０９においてペンディングトランザクションについての情報を受信しえ、９１１においてペンディングトランザクションを完了または中止できる。この時点でスタンバイシステム上のアプリケーションは、９１３においてアクティブステートに入りえる。図９は、スイッチオーバーが可能なアプリケーションについてのプロセスフローを示す。さまざまな実施形態によれば、アプリケーションは、スタンバイ、リカバリ待ち、およびアクティブのようないくつかの高アベイラビリティステートに入りえる。
【００５０】
図１０は、スイッチオーバーが可能なアプリケーションについての取りえる状態を示す概略図である。アプリケーションがスタンバイスーパバイザ上で走るとき、アプリケーションはスタンバイモード１００１で始まる。アプリケーションがスタンバイモード１００１にあるとき、アプリケーションはランタイムのコンテキストをアップデートすることによって、スイッチオーバーが起こるときにアプリケーションが利用可能であるようにする責任がある。さまざまな実施形態によれば、アップデートは、アプリケーションのアクティブな対応部分によって動かされる。
【００５１】
初期ランタイムデータベースは、アクティブ持続性データベースのスナップショットを用いて構築されえ、これは持続性ストレージサービスによってリクエストがあると同期される。スナップショットが整合しているためには、アクティブの対応部分（active counterpart）が関連していなければならない。アクティブな対応部分は、持続性ストレージサービスに対して、いつが初期同期化によい時かを告げる。スタンバイモードのアプリケーションは、イベントを利用して、ランタイムデータベースおよび持続性データベースの両方を初期スナップショットからアップデートしえる。ある実施形態においては、持続性データベースへの追加の同期化は許されない。
【００５２】
スイッチオーバーが起こるときに、リカバリを待つ状態１００３になる。リカバリを待つ状態１００３は、全てのスタンバイアプリケーションについての同期化点である。もしアクティブスーパバイザがクラッシュしたなら、それはいくらかの仕事がペンディングのまま残したかもしれない。メッセージトランザクションサービスコンポーネントは、それぞれのアプリケーションにどのオープントランザクションが関連付けられたアクティブな対応部分と共に残っているかを知らせる。スタンバイアプリケーションは、利用可能な情報が充分に前に繰り越せて、トランザクションを終了できるか、またはトランザクションが失敗したかを決定できる。完了したペンディングトランザクションはまたこのフェーズでコミットされえる。
【００５３】
リカバリが終了したイベントが全てのアプリケーションキュー中にキューされたとき、それぞれのスタンバイアプリケーションはほとんどアクティブな状態１００５に入りえる。この状態でアプリケーションは実質的にアクティブであり、しかし完全にはアクティブではないが、それはアプリケーションが、プロデューサがアクティブ状態に動いた前に生成されたイベントをいつか受け取るかもしれないからである。スイッチオーバー後のイベントのようなイベントの後、アプリケーションはアクティブ状態１００７に入る。
【００５４】
任意の時刻において、アプリケーションは、それが強制的に終了させられる故障条件を持ちえる。アプリケーションが終了するとき、システムマネージャは異なるアクションを取りえる。もしアプリケーションがスタンバイ状態１００１から終了するなら、スタンバイシステムマネージャはアプリケーションを再起動するよう試みえる。もし所定の回数の再起動の試行が失敗するなら、高アベイラビリティはディセーブルにされる。もしアプリケーションがリカバリ待ちの状態１００３から終了するなら、そのアプリケーションについてのリカバリフェーズは失敗し、アプリケーションは、それがインタラクトする他のアプリケーションを適切にクリーンアップできず、よって、全体のシステムの状態は整合しないかもしれない。システムは、全ての高アベイラビリティアプリケーションをキルし、全体を再起動または単一のアプリケーションを再起動しえる。もしアプリケーションがほとんどアクティブな１００５またはアクティブな１００７の状態から終了するなら、再起動可能なアプリケーションのための通常のふるまいが適用しえる。
【００５５】
このような情報およびプログラム命令は、ここで記載されたシステム／方法を実現するのに用いられえるので、本発明は、ここで記載されたさまざまな操作を実行するプログラム命令、状態情報などを含む機械で読み取り可能な媒体に関する。機械で読み取り可能な媒体の例は、以下に限定されないが、ハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭディスクのような光媒体、光ディスクのような磁気・光媒体、および読み出し専用メモリ（ＲＯＭ）およびＲＡＭのようなプログラム命令を記憶し実行するよう特別に構成されるハードウェアデバイスを含む。本発明は、空間波、光ライン、電気ラインなどの適切な媒体上を伝わる搬送波内で実現されえる。プログラム命令の例は、コンパイラによって生成されるような機械語、およびインタプリタを用いてコンピュータによって実行されえる高級コードを含むファイルの両方を含む。
【００５６】
本発明は、その特定の実施形態を参照して示され記述されてきたが、開示された実施形態の形態および詳細の変更が本発明の精神または範囲から逸脱することなくなされえることが当業者には理解されよう。したがって本発明は、本発明の精神および範囲に入る全ての改変物および等価物を含むように解釈されるよう意図される。
【図面の簡単な説明】
【００５７】
【図１】本発明の手法を用いることができるネットワークの概略図である。
【図２】本発明の手法を実現できるスイッチの概略図である。
【図３】ファイバチャネルスイッチ上でさまざまなアプリケーションを走らせるアクティブおよび冗長スーパバイザの概略図である。
【図４】ＭＴＳコンポーネントの概略図である。
【図５Ａ】アクティブおよびスタンバイスーパバイザ間のトランザクションを示すプロセスフロー図である。
【図５Ｂ】アクティブおよびスタンバイスーパバイザ間のトランザクションを示すプロセスフロー図である。
【図６】ロックステップにおけるアクティブおよびスタンバイスーパバイザ間でやりとりされるメッセージを示すトランザクション図である。
【図７】さまざまな実施形態によるアクティブおよびスタンバイスーパバイザ間でやりとりされるメッセージを示すトランザクション図である。
【図８】アクティブスーパバイザ上のアプリケーションの再初期化を示すプロセスフロー図である。
【図９】スタンバイスーパバイザ上のアプリケーションの再初期化を示すプロセスフロー図である。
【図１０】スーパバイザ上で走るアプリケーションについての取りうる状態群を示す概略図である。
【図１】
2005539284.tif 000003
【図２】
2005539284.tif 000004
【図３】
2005539284.tif 000005
【図４】
2005539284.tif 000006
【図５Ａ】
2005539284.tif 000007
【図５Ｂ】
2005539284.tif 000008
【図６】
2005539284.tif 000009
【図７】
2005539284.tif 000010
【図８】
2005539284.tif 000011
【図９】
2005539284.tif 000012
【図１０】
2005539284.tif 000013
【国際調査報告】
2005539284.tif 000014
2005539284.tif 000015