(57)【要約】  耐障害性コンピュータ・システムは、それぞれが第１セットの動作を実行するように構成された少なくとも２台のサーバを含む。２台のサーバの各々は、第１セットの動作を実行しないコンピュータと通信する。システムのコンポーネントの障害が発生した場合に、サーバのどちらが第１セットの動作の実行を継続することになるかは、コンピュータとの通信に基づいて決定される。
2008542858.tif 000002
【特許請求の範囲】
【請求項１】
耐障害性コンピュータ・システムを動作させる方法であって、
各々が第１セットの動作を実行するように構成される少なくとも二つのサーバを含む耐障害性コンピュータ・システムの各々のサーバに、前記第１セットの動作を実行しないコンピュータと通信させ、
前記システムのコンポーネントの障害が発生した場合に、前記サーバの少なくとも一つと前記コンピュータの間の通信に基づいて、前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを決定する
ステップを含むことを特徴とする方法。
【請求項２】
前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを決定するステップは、前記システムの前記コンポーネントの前記障害後に前記コンピュータと通信できるサーバに、前記第１セットの動作の実行を継続させるステップを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを決定するステップは、前記システムの前記コンポーネントの前記障害後に前記コンピュータと通信できないサーバに、前記第１セットの動作の実行を終了させるステップを含むことを特徴とする、請求項１に記載の方法。
【請求項４】
前記システムの前記コンポーネントの前記障害が発生した場合に、前記サーバのどちらが前記第１セットの動作の実行を終了することになるかを決定するステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記サーバのどちらが前記第１セットの動作の実行を終了することになるかを決定するステップは、前記システムの前記コンポーネントの前記障害の後、前記コンピュータと通信できないサーバに、前記第１セットの動作の実行を終了させるステップを含むことを特徴とする、請求項４に記載の方法。
【請求項６】
前記システムのコンポーネントは、第１サーバ、該第１サーバとネットワークの間の第１リンク、第２サーバ、及び該第２サーバと前記ネットワークの間の第２リンクを含み、
前記システムの前記コンポーネントの障害は、前記第１サーバ、前記第２サーバ、前記第１リンク、又は前記第２リンクの障害を含む
ことを特徴とする、請求項１に記載の方法。
【請求項７】
前記第２リンクの障害が発生した場合に、前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを前記コンピュータとの通信に基づいて決定するステップは、前記第１サーバに前記第１セットの動作の実行を継続させ、前記第２サーバに前記第１セットの動作の実行を終了させることによって、分離脳動作を避けるステップをさらに含むことを特徴とする、請求項６に記載の方法。
【請求項８】
前記コンピュータは前記ネットワークに第３リンクにより接続されることを特徴とする、請求項６に記載の方法。
【請求項９】
前記サーバに、前記第１セットの動作を実行しない複数のコンピュータから、前記第１セットの動作を実行しない前記コンピュータを選出させるステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項１０】
前記第１セットの動作を実行しない前記コンピュータは、独自の識別名を有することを特徴とする、請求項９に記載の方法。
【請求項１１】
前記第１セットの動作を実行しない前記コンピュータは、複数の耐障害性コンピュータ・システムと通信するように構成されることを特徴とする、請求項９に記載の方法。
【請求項１２】
前記複数の耐障害性コンピュータ・システムの各々は、独自の識別名を有することを特徴とする、請求項１１に記載の方法。
【請求項１３】
前記サーバが前記第１セットの動作を実行しない前記コンピュータを選出した後で、第１サーバに、該第１サーバが前記コンピュータ及び第２サーバと独立に動作することを許可するトークンを与えるステップをさらに含むことを特徴とする、請求項９に記載の方法。
【請求項１４】
前記第１サーバに前記トークンを与えるステップは、前記第１サーバ及び前記第２サーバが互いに通信できるときにだけそれを実行するステップを含むことを特徴とする、請求項１３に記載の方法。
【請求項１５】
前記サーバに、前記第１セットの動作を実行しない前記コンピュータを選出させるステップは、前記第１サーバ及び前記第２サーバが互いに通信できるときにだけそれを実行するステップを含むことを特徴とする、請求項９に記載の方法。
【請求項１６】
前記コンピュータに、前記第１サーバに前記トークンを与えさせるステップをさらに含むことを特徴とする、請求項１３に記載の方法。
【請求項１７】
前記コンピュータに、前記第１サーバ及び前記第２サーバのどちらがより高レベルの機能を有するかを判断させ、前記第１サーバが前記より高レベルの機能を有するとき、前記第１サーバに前記トークンを与える、ステップをさらに含むことを特徴とする、請求項１６に記載の方法。
【請求項１８】
前記コンピュータに、前記第１サーバ及び前記第２サーバが前記コンピュータとのネットワーク接続を有するかどうかを判断させ、前記第１サーバが前記コンピュータとのネットワーク接続を有し、前記第２サーバが前記コンピュータとのネットワーク接続を有しないとき、前記第１サーバに前記トークンを与えるステップをさらに含むことを特徴とする、請求項１６に記載の方法。
【請求項１９】
第１セットの動作を実行するように構成され、前記第１セットの動作を実行しないコンピュータとのネットワーク接続を有する第１サーバと、
前記第１セットの動作を実行するように構成され、前記第１サーバ及び前記コンピュータとのネットワーク接続を有する第２サーバと、
を備える耐障害性コンピュータ・システムであって、
前記システムは、該システムのコンポーネントの障害が発生した場合に、前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを、前記サーバの少なくとも一つと前記コンピュータとの通信に基づいて決定するように構成されることを特徴とする、コンピュータ・システム。
【請求項２０】
コンピュータ可読媒体に格納されたコンピュータ・ソフトウェアであって、耐障害性コンピュータ・システムに、
それぞれが第１セットの動作を実行するように構成された少なくとも２台のサーバを含む前記耐障害性コンピュータ・システムの各々のサーバに、前記第１セットの動作を実行しないコンピュータと通信させ、
前記システムのコンポーネントの障害が発生した場合に、前記サーバのどちらが前記第１セットの動作の実行を継続することになるかを、前記サーバの少なくとも一つと前記コンピュータとの間の通信に基づいて決定すること、
を行わせる命令を含むことを特徴とするコンピュータ・ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムに関し、より具体的には、それぞれが同じセットの動作を実行するように構成された少なくとも二つのサーバを含む耐障害性コンピュータ・システムに関する。
【背景技術】
【０００２】
コンピュータ産業には、共有アイテムへのアクセスを調整する多くの方法がある。
例えば、一度に一つのコンピュータだけがデータをマルチ・ドロップ通信ライン上で送信することができる。通信ラインの保全性を保護するためには、単一のマスター又は所有者を一義的に選択するためにある形式のアクセス所有権プロトコルを動作させる必要がある。調整すべきアイテムに応じて、制御方法は、例えば衝突検出、クォーラム、トークン、ロック・マネージャ、分散ロック・マネージャ、中央アービタ、バック・オフ・タイマ、ラウンド・ロビン・スケジューリング又は固定アービトレーションを含むことができる。
【０００３】
同様の方法は、耐障害性システムにおけるシステム保全性を保護するために用いられる。耐障害性とは結果を生成するシステム内に障害があっても所望の結果に達するシステムの能力である。耐障害性を達成するには、レプリケーション・イン・タイム（replication in time）又はレプリケーション・イン・スペース（replication in space）機能を実装する必要がる。レプリケーション・イン・タイムとは、結果を生成するシステム内の障害により原の試行が成功しなかったので比較的最近の結果を再生する機能を言う。レプリケーション・イン・スペースとは、障害発生時に利用できる複製リソースを有することを言い、それらの複製リソースは、障害にもかかわらず目的の動作を続けて所望の結果を生成することができる。
【０００４】
レプリケーション・イン・スペース法を用いた耐障害性システムを取り扱うときは、それらの複製リソースが偶発的に独立に動作しないことを保証するように注意しなければならない。例えば、耐障害性システムは、単一の障害発生が全システムを無能にしないように重複コンポーネントを地理的に引き離すことによって耐災害性とすることができる。隣り合ったコンピュータ・ラック内の適切に接続された２台のコンピュータは、一つのラックの転倒又は電力障害に対して耐災害性をもつと考えることができるが、その室内における火災に対しては耐災害性をもたないと考えられる。機械を互いに遠く離せば離す程、それらはより広域の災害に対してより大きな耐性をもつ。
【０００５】
機械を引き離すと、それらの間の通信が失われた場合にどちらの機械が動作を継続するべきかを決定する問題が生じる。両方の機械が協調せずに動作を継続していることは、分離脳として知られる状態である。同じ前提条件で同じ問題について動作しているが非協調環境で動作する２台のコンピュータは、異なるがしかし妥当な結果を生じる可能性がある。一例は航空会社の座席スケジューリングである。割当座席の同じマップが与えられるが、予約要求がコンピュータの地理的な隔たりにより異なる順序で到着する場合、今後の座席割当の選択はコンピュータ間で異なる可能性がある。各々のコンピュータの結果はその問題空間の見地からは妥当である。その結果、コンピュータは妥当ではあるが異なる、コンピュータ間の通信が回復したときに調整不能となる、ローカル・データベースを作成する可能性がある。この理由により、分離脳動作は避けるべきである。
【発明の開示】
【０００６】
一つの一般的な態様において、各々が第１セットの動作を実行するように設定された少なくとも２台のサーバを含む耐障害性コンピュータ・システムを動作させるステップは、耐障害性コンピュータ・システムの各々のサーバに、第１セットの動作を実行しないコンピュータと通信させ、システムのコンポーネントに障害が発生した場合に、どのサーバが第１セットの動作の実行を継続するかを、少なくとも一つのサーバとコンピュータの間の通信に基づいて決定させるステップを含む。
【０００７】
実施は、以下の特徴の一つ又はそれ以上を含むことができる。例えば、どのサーバが第１セットの動作を継続するかを決定するステップは、システムのコンポーネントの障害発生後にコンピュータと通信できるサーバに第１セットの動作の実行を継続させるステップを含むことができる。
【０００８】
システムはまた、システムのコンポーネントに障害が発生した場合に、どのサーバが第１セットの動作の実行を終了するかを決定することができる。例えば、システムのコンポーネントの障害発生後にコンピュータと通信できないサーバが第１セットの動作を終了することができる。
【０００９】
システムのコンポーネントは、第１サーバ、第１サーバとネットワークの間の第１リンク、第２サーバ、及び第２サーバとネットワークの間の第２リンクを含むことができ、システムのコンポーネントの障害は、第１サーバ、第２サーバ、第１リンク又は第２リンクの障害を含むことができる。どのサーバが第１セットの動作の実行を継続するかをコンピュータとの通信に基づいて決定するステップは、第２リンクの障害が発生した場合に、第１サーバに第１セットの動作の実行を継続させ、第２サーバに第１セットの動作の実行を終了させることによって、分離脳動作を避けるステップを含むことができる。
【００１０】
コンピュータは第３リンクによりネットワークに接続され、第１セットの動作を実行しない複数のコンピュータからサーバによって選択されることができる。コンピュータは独自の識別名をもつことができ、各々が独自の識別名をもつ複数の耐障害性コンピュータ・システムと通信するように設定することができる。
【００１１】
サーバが、第１セットの動作を実行しないコンピュータを選択した後、第１サーバがコンピュータ及び第２サーバとは独立に動作することを許可するトークンを第１サーバに与えることができる。トークンの付与は、コンピュータの選択のように、第１サーバ及び第２サーバが互いに通信できる状態で行うことができる。
【００１２】
コンピュータは第１サーバにトークンを与えることができる。例えば、コンピュータは第１サーバと第２サーバのどちらがより高レベルの機能を有するかを判断し、第１サーバがより高レベルの機能を有するときに第１サーバにトークンを与えることができる。或いは、コンピュータは第１サーバ及び第２サーバがコンピュータとのネットワーク接続を有するかどうかを判断し、第１サーバがコンピュータとのネットワーク接続を有し、そして第２サーバがコンピュータとのネットワーク接続を有しないときに、第１サーバにトークンを与えることができる。
【００１３】
一つ又はそれ以上の実施の詳細は、添付の図面と以下の記述で説明される。その他の特徴は、記述、図面及び特許請求の範囲から明白となる。
【発明を実施するための最良の形態】
【００１４】
図１を参照すると、２台のネットワーク接続されたコンピュータから構築された耐障害性コンピュータ・システム１００は、コンピュータ・システムの二つの半部分を分離する障害状態を起し易い。サーバ１１０及びサーバ１２０は完全複製型耐障害性システム１００の二つの半部分である。サーバ１１０及び１２０はそれぞれリンク１１１及び１２１を介してネットワーク１５０に接続される。リンク１１１及び１２１の各々は、ネットワーク１５０への二つ又はそれ以上のイーサネット（登録商標）接続をもつような複式接続リンクを表すことができる。サーバ１１０をサーバ１２０から分離する可能性のある単一障害状態の一例は、サーバ１１０及び１２０を収容する構築物の間の配線トレンチに食い込むバックホー・トラクタである。これは分離脳として知られる状態の可能性をもたらす。サーバ１１０及び１２０の各々は、動作を妨げるローカルな障害状態をもたない完全なコンピュータ・システムである。サーバ１１０及び１２０の両方が動作を続ける場合には、調和不可能となる相互に異なるデータベースを生成することになる。分離脳動作を防ぐためには、システム１００は両方のサーバ１１０及び１２０をオフラインとするか、又は一つのサーバ（例えばサーバ１１０）を予め選択して継続させ、他のサーバ（サーバ１２０）をオフラインにする必要がある。両方のサーバをオフラインにすることはシステムの可用性を減少させる。一つのサーバを予め選択することは、予め選択されたサーバが障害発生後もなお動作することを想定している。しかし、サーバ１１０は、バックホー・トラクタが配線を切断するときにサーバ１１０を収容する構築物への電源を切断する場合には動作不能となる可能性がある。
【００１５】
一実施例において、サーバはネットワーク（ローカル・エリア・ネットワーク、広域ネットワーク又はインターネットなど）を介してアクセス可能なコンピュータである。より特定的な実施例においては、サーバは、サーバにネットワークを介して遠隔で接続されたクライアント・コンピュータ・システムにサービスを提供するように設計されたコンピュータとすることができる。幾つかのサーバは特定機能専用であり、例えば、プリント・サーバ、電子メール（ｅ−ｍａｉｌ）サーバ、ファイル・サーバ、データ・ベース・サーバ、アプリケーション・サーバなどである。その場合、サーバはメモリ、ディスク・スペース、一つ又はそれ以上のアプリケーション・プログラム、及び／又は特定機能を実施するためのデータベースで構成される。機能を実行することを望むコンピュータのユーザは、クライアント・コンピュータ（例えば、ラップトップ、デスクトップ、又は別のサーバ）からサーバに接続してその機能を実行することができる。サーバの別の実施例においては、コンピュータ・プログラマが、クライアント・プログラムと呼ぶことのできる別のプログラムに関するサービスを実行する。サーバ・プログラムとクライアント・プログラムは非同時又は同時のネットワーク接続を介して通信することができる。
【００１６】
マサチューセッツ州リトルトンのＭａｒａｔｈｏｎ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社は、レプリケーション・イン・スペース法を用いた、図２に示され、以下に説明される耐障害性システム２００の実施に使用できる、Ｅｎｄｕｒａｎｃｅ（登録商標）ＦＴ  Ｖｉｒｔｕａｌ  Ｓｅｒｖｅｒと呼ばれるクォーラム・サービスを製作している。
【００１７】
図２はクォーラム・コンピュータ２３０を加えた耐障害性システム２００を示す。サーバ２１０及び２２０は、リンク２１１、２２１、及びネットワーク２５０により相互接続された耐障害性コンピュータ・システムを構成する。クォーラム・コンピュータ２３０はリンク２３１を介してネットワーク２５０に接続する。システム２００内に障害が存在しないときは、クォーラム・コンピュータ２３０はサーバ２１０及び２２０の両方と通信することができる。ネットワーク２５０が、単一の障害発生がリンク２１１、２２１及び２３１のうちのどの二つをも切断しないように構築されている場合、クォーラム・コンピュータ２３０は分離脳動作を避けるための障害に関する第３の見地を与える。何れかのリンク（２１１、２２１、２３１）又はコンピュータ（２１０、２２０、２３０）が故障したときは、残りの接続されたコンポーネントがネットワークをどのように分断するかを決定することができる。
【００１８】
例えば、リンク２１１の障害は、サーバ２１０を、リンク２２１、ネットワーク２５０、及びリンク２３１を介して通信しているサーバ２２０及びクォーラム・コンピュータ２３０から切り離す。サーバ２１０は、サーバ２２０もクォーラム・コンピュータ２３０をも検出できないので、切り離されたことを認識する。サーバ２２０はクォーラム・コンピュータ２３０を検出できるので切り離されていないことを認識する。
【００１９】
別の実施例として、サーバ２１０の障害はサーバ２２０及びクォーラム・コンピュータ２３０には影響を及ぼさず、それらは依然としてリンク２２１、ネットワーク２５０、及びリンク２３１を介して通信することができる。サーバ２２０はクォーラム・コンピュータ２３０を検出できるので切り離されていないことを認識する。
リンク２２１及びサーバ２２０の障害に対しては逆の場合が起り、結果としてサーバ２１０とクォーラム・コンピュータ２３０がリンク２１１、ネットワーク２５０、及びリンク２３１を介して通信する。
【００２０】
リンク２３１又はクォーラム・コンピュータ２３０の障害は、結果としてサーバ２１０及び２２０がリンク２１１、ネットワーク２５０及びリンク２２１を介して通信する。系の動作部分を何も失われない。しかし、クォーラム・コンピュータ２３０との通信の欠如により、システム２００は別の障害が発生した場合に、再び分離脳動作を起し易くなる。サーバ２１０とサーバ２２０の何れもクォーラム・コンピュータ２３０を検出しないとき、ソフトウェア・ポリシーは、分離脳動作を避けるために、クォーラム・コンピュータ２３０への通信が回復するまで、耐障害性システムの格下げ（サーバ２２０又はサーバ２３０の何れかを系から取り外す）を選択することができる。
【００２１】
クォーラム・コンピュータは、クォーラム・プロトコルを実行する任意のコンピュータとすることができる。クォーラム・コンピュータの機能は、耐障害性システムの付加的な機能を与えることであるので、クォーラム・コンピュータはネットワーク２５０に恒久的に接続されることが望ましい。毎晩ネットワークから取り外されるラップトップ・コンピュータ、又は毎晩電源を落とされるデスクトップ・コンピュータは、クォーラム・コンピュータとして選択することは望ましくない。
【００２２】
図３は、複数のクォーラム・コンピュータ（３３０、３４０）を有する耐障害性コンピュータ・システム３００を示す。ネットワーク３５０は、リンク３１１を介してサーバ３１０に、リンク３２１を介してサーバ３２０に、リンク３３１を介してクォーラム・コンピュータ３３０に、及び、リンク３４１を介してクォーラム・コンピュータ３４０に接続する。単一のクォーラム・コンピュータ（３３０）が分離脳動作を避けるためにサーバ３１０及び３２０と共に動作するように選出される。クォーラム・コンピュータ３３０がもはやアクセス不能となった場合には、クォーラム・コンピュータ３４０が、分離脳動作を避けるため又はシステム３００の格下げの必要を避けるために、サーバ３１０及び３２０と共に動作するように選出される。複数のクォーラム・コンピュータが許容されるので、標準的なデスクトップ・コンピュータが、耐障害性クォーラム・コンピュータを必要とせずに連続的なクォーラム・サービスを提供することができる。
【００２３】
図４は、二つのクォーラム・コンピュータ（４３０及び４４０）を有する二つの耐障害性コンピュータ・システム（４０１及び４０２）を示す。耐障害性システム４０１は、サーバ４１０、リンク４１１、ネットワーク４５０、リンク４２１、及びサーバ４２０を含む。耐障害性システム４０２は、サーバ４６０、リンク４６１、ネットワーク４５０、リンク４７１、及びサーバ４７０を含む。システム４０１と４０２の何れか一方又は両方は、クォーラム・コンピュータ（４３０又は４４０）を用いて分離脳動作を避けることができる。システム４０１は、システム４０２がどのクォーラム・コンピュータ（４３０、４４０）を使用しているかに関らず、何れかのクォーラム・コンピュータ（４３０、４４０）を使用することができる。
クォーラムの詳細な動作。
【００２４】
本考察に関して、サーバは３つの主状態、オフライン、オンライン、及びアクティブ状態を有する。オフラインは現在耐障害性システムの動作に関っていないことを意味する。オンラインは、サーバがその耐障害性システム内の他のサーバと通信し、アクティブになることを試行していることを意味する。アクティブはサーバがその耐障害性システムの動作しているコンポーネントであることを意味する。
【００２５】
各々の耐障害性コンピュータ・システムは、ソフトウェアで生成されたグローバル一意ＩＤ（ＧＵＩＤ）を有する。従って、図４において、システム４０１のＧＵＩＤはシステム４０２のＧＵＩＤとは異なる独自のものである。単一のクォーラム・コンピュータは、複数の耐障害性システムが使用することができ、それらのシステムにより選出されると言う。システムのＧＵＩＤは対にされ、クォーラム・コンピュータが、対処中の又は選出された耐障害性システムを識別するのに用いる。各々のクォーラム・コンピュータはまた、ＧＵＩＤをもち、クォーラム・コンピュータ４３０にはクォーラム・コンピュータ４４０のＧＵＩＤとは異なる独自のＧＵＩＤが与えられる。クォーラム・コンピュータのＧＵＩＤは、耐障害性システムが、それがどのクォーラム・コンピュータを選出したかを識別するために用いる。
【００２６】
許可又はトークンが生成され、耐障害性システムのサーバ（例えば、システム４０１のサーバ４１０及び４２０）と現在選出されているクォーラム・コンピュータ４３０との間で交換される。トークンの生成に関るコンピュータの各々はそのトークンの複製を保持する。トークンは、どのサーバ（４１０又は４２０）が他のサーバ（４２０又は４１０）の存在なしに動作することを許可されているか示す。これは、サーバに、停電後又はサーバのリスタート後に再起動する機能を与える。目的は、分離脳動作を引き起こさずに可用性を最大にすることである。動作ルールは以下のことを含む。
１）両方のサーバが互いに通信できるが、クォーラム・コンピュータとは通信できないときに、「トークン」が生成される。
２）一つサーバが選出されたクォーラム・コンピュータと通信できるが他のサーバとは通信できないとき、「トークン」が生成される可能性がある。
３）クォーラム・コンピュータは、両方のサーバが互いに通信でき、クォーラム・コンピュータと通信できるときにだけ、選出することができる。
４）「トークン」を有するサーバは独立に動作することができる。
【００２７】
システム４０１には二つの定常状態構成がある。一つの定常状態構成は、サーバ４１０、サーバ４２０及び選出されたクォーラム・コンピュータ４３０が相互に接続されるときに生ずる。もう一つの定常状態構成は、サーバ４１０又はサーバ４２０の何れか一方がトークンを有して独立に動作するときに生じる。系は第１の定常状態において耐障害性システムとして動作するが、第２の定常状態においてはそのようには動作しない。
【００２８】
以下に説明される図５は、図４のクォーラム・コンピュータ４３０若しくは４４０、又は図２のクォーラム・コンピュータ２３０に関する状態遷移図を表す。
図６は、ローカル・サーバの状態遷移図を表し耐障害性システム内のサーバの見地から描かれている。一つのサーバ（４１０又は４２０）はそれ自体を「ローカル」と見なし、耐障害性システム４０１内の他のサーバ（４２０又は４１０）を「リモート」と見なす。サーバ４１０の見地から図６を見るとき、「ローカル」はサーバ４１０を指し、「リモート」はサーバ４２０を指す。サーバ４２０の見地から図６を見るときは、「ローカル」はサーバ４２０を指し、「リモート」はサーバ４１０を指す。
【００２９】
以下の考察は、クォーラム・コンピュータに関する図５の状態遷移図、及びサーバに関する図６の状態遷移図を説明する。図５及び図６の状態図の間の相互作用もまた考察される。単一のクォーラム・コンピュータ（例えば、４３０）が同時に複数の耐障害性システム（例えば、４０１および４０２）に対して機能できることに注意されたい。この場合、クォーラム・コンピュータが機能するシステムの各々に対して、異なる図５の状態遷移図が存在することになる。さらに、単一の耐障害性システム（例えば、４０１）は複数のクォーラム・コンピュータ（例えば、４３０及び４４０）と相互作用することができる。
【００３０】
各々の、クォーラム・コンピュータ４３０及び４４０、並びに耐障害性システム４０１及び４０２は、グローバル一意識別子（ＧＵＩＤ）が割り当てられる。考察を簡単にするために、ＧＵＩＤは、クォーラム・コンピュータ４３０に対してＱ４３０、クォーラム・コンピュータ４４０に対してＱ４４０、耐障害性システム４０１に対してＳ４０１、耐障害性システム４０２に対してＳ４０２と仮定する。
【００３１】
図５を参照し、耐障害性システム４０１とクォーラム・コンピュータ４３０の間には事前の接続がなかったと仮定すると、クォーラム・コンピュータ４３０は遷移「開始」５０１において立ち上がり「初期化」状態５１０に入る。「開始」５０１遷移は、クォーラム・コンピュータがクォーラム・サービスを開始するときはいつでも起る。「開始」５０１遷移は、クォーラム・コンピュータが再起動する場合に起る、図５のあらゆる状態からの遷移を意味する。
【００３２】
「初期化」５１０の後にクォーラム・コンピュータが耐障害性システム４０１の現在の「システム」ＧＵＩＤ（即ち、Ｓ４０１）の情報をもたない場合、遷移５１１により「非アクティブ」５２０となる。クォーラム・コンピュータが「システム」ＧＵＩＤ  Ｓ４０１を保管しているときは、遷移５１２により状態「セグメント化」５５０に移動する。以下に考察するように、これは、「システム」ＧＵＩＤに関する「トークン」がシステム４０１の一つのサーバに与えられ、そのサーバが独立に動作する許可を有することを意味する。
【００３３】
状態「非アクティブ」５２０は、クォーラム・コンピュータがシステム４０１のアクティビティの事前情報を有しない状態を表す。デフォルト遷移、「開始」５０１はクォーラム・コンピュータを状態「初期化」５１０に戻す。「非アクティブ」５２０から状態「接続」５３０への遷移５２１は、システム４０１の両方のサーバがこのクォーラム・コンピュータに接続する（選出する）ときに起る。「トークン」が生成され、クォーラム・コンピュータにより保持される。システム４０１のサーバが保持していた全ての以前の「トークン」は破棄される。「トークン」は耐障害性システム４００及び現在の「システム」ＧＵＩＤに独自のものである。クォーラム・コンピュータが保持している「トークン」は、「システム」ＧＵＩＤの何れのサーバも現在「トークン」を保持せず、従って何れのサーバも独立に動作する許可をもたないことを示す。
【００３４】
「接続」５３０から４つの可能な遷移がある。暗黙の「開始」５０１から状態「初期化」５１０への遷移は、クォーラム・コンピュータが「トークン」を保持しながらクォーラム・サービスをリスタートすることを表す。クォーラム・コンピュータは「システム」ＧＵＩＤに関する「トークン」の全情報を失う。耐障害性システム４０１のサーバはこのクォーラム・コンピュータを再選出するか又は任意の他のクォーラム・コンピュータを選出することが許可される。
【００３５】
「接続」５３０から状態「非アクティブ」５２０に戻る遷移５３１は、クォーラム・コンピュータ４３０が耐障害性システム４０１の両方のサーバとの通信を失ったときに起る。これは暗黙の非選出化の機能である。この遷移は、クォーラム・コンピュータへのネットワーク接続の喪失により起った可能性があり、或いは、耐障害性システム４０１のサーバは別のクォーラム・コンピュータを選出した可能性がある。耐障害性システム４０１に関する「トークン」及び「システム」ＧＵＩＤの全情報は適切なタイムアウト時間の後に破棄される。このクォーラム・コンピュータ４３０はもはや耐障害性システム４０１に固有の情報を維持していない。
【００３６】
「接続」５３０からの第３の遷移は、「セーブ」ＧＵＩＤ５４０への遷移５３３であり、その場合、耐障害性システム４０１の両方のサーバはもはや互いに接続されていないが、クォーラム・コンピュータには依然としてアクセスできる。システム４０１の各々のサーバは、クォーラム・コンピュータからの「トークン」を要求する。これは分離脳接続である。要求の一部分として各々のサーバはそのサーバの現在の機能を表すスカラー値を供給する。耐障害性システム４０１のサーバの内の一つだけが動作の継続を許可されるべきである。現在の機能（例えば、ネットワーク接続装置、利用可能なディスク・ドライブ、メモリ、又は最少の故障）の最良の選択を表す最高のスカラー値を有するサーバがクォーラム・コンピュータにより「トークン」を発行されることになる。「トークン」を有するサーバは独立な動作を継続することを許可される。
【００３７】
「接続」５３０からの第４の遷移はまた「セーブ」ＧＵＩＤ５４０への遷移である。耐障害性システム４０１のサーバの内の一つが依然としてクォーラム・コンピュータに接続しており「トークン」を要求する。そのサーバはクォーラム・コンピュータにより「トークン」を与えられる。「トークン」を有するサーバは独立な動作を継続することを許可される。
【００３８】
状態５３０「接続」からの遷移では包含されない「トークン」分配の二つの場合がある。システム４０１の二つのサーバは、クォーラム・コンピュータを使用せずにそれらの間で「トークン」を生成して分配することが許可される。これは、サーバ４１０及び４２０の一方又は両方がクォーラム・コンピュータ４３０への接続を失い、しかし依然としてそれらの間で通信できる場合に起ることになる。サーバ４１０及び４２０は、互いにそれらの機能値を直接に交換して、サービスを提供することになるサーバを識別する「トークン」を生成することになる。図５において、この場合は状態５２０「非アクティブ」への遷移５３０により表される。このクォーラム・コンピュータは非選出化された。
【００３９】
状態「セーブ」ＧＵＩＤ５４０はシステムＧＵＩＤ  Ｓ４０１及び「トークン」の情報をセーブする。この情報は、状態「接続」５３０が再び到達されるまで存続する。「セーブ」ＧＵＩＤ５４０からの３つの遷移が存在する。暗黙の遷移５０１「開始」は、「セグメント化」５５０への遷移５１２及び遷移５５１を介して状態「セーブ」ＧＵＩＤ５４０に戻る。「セーブ」ＧＵＩＤ５４０からの第２の遷移は遷移５４１であり、これは耐障害性システム４０１のサーバの間に通信が再確立したときに起る。「トークン」がクォーラム・コンピュータに返され、状態「接続」５３０に入る。状態「セーブ」ＧＵＩＤ５４０から状態「セグメント化」５５０に至る第３の遷移５４２は、耐障害性システム４０１内のサーバの一つ又は両方への通信が失われたときに起る。
【００４０】
状態「セグメント化」５５０は、クォーラム・コンピュータがそのトークンをシステム４０１のサーバに与えて、そのサーバがシステム４０１内の別のサーバと独立に起動及び／又は動作する権限を有するものとして指名することを表す。「セグメント化」５５０からの二つの遷移がある。暗黙の遷移「開始」５０１は、状態「初期化」５１０及び遷移５１２を介して「セグメント化」５５０に戻る。状態「セグメント化」５５０への遷移５１２は、クォーラム・コンピュータが耐障害性システム４０１のＧＵＩＤ（Ｓ４０１）を保存しているときに起る。これは、Ｓ４０１に関する「トークン」が未決着であることを意味する。
状態「セグメント化」５５０からの第２の遷移は、状態「セーブ」ＧＵＩＤ５４０への遷移５５１である。この遷移は、耐障害性システム４０１の両方のサーバがクォーラム・コンピュータに再接続されたときに起る。
【００４１】
未だ説明していない一つの遷移がある。状態「非アクティブ」５２０から状態「セーブ」ＧＵＩＤ５４０への遷移５２２は、このクォーラム・コンピュータに接続する一つのサーバが「トークン」を要求するときに起る。タイムアウト時間が終了してシステム４０１のもう一つのサーバが接続しなくなった後、「トークン」が生成されその単一のサーバに与えられ、それが独立に動作することが許可される。この遷移は、このクォーラム・コンピュータが依然としてシステム４０１に対する選出されたクォーラム・コンピュータである場合にだけ起る。言い換えれば、そのクォーラム・コンピュータは状態「接続」５３０にあり、電源障害又はシステム再起動により遷移５０１が起るか、又はクォーラム・コンピュータとシステム４０１の間のネットワーク接続の喪失により遷移５３１が起る。状態「非アクティブ」５２０においては、一つのサーバがクォーラム・コンピュータに接続するときに、ここでそのクォーラム・コンピュータは選出されたクォーラムであることを認識し、タイマーを開始する。タイマーが終了するとき、クォーラム・コンピュータは「トークン」を生成して接続したサーバに与える。システム４０１のもう一つのサーバがタイムアウト時間の終了前に接続する場合には、前述のように、状態「接続」５３０への遷移５２１が起ることになる。
【００４２】
明白な非選出化の機能が存在しないことに注意されたい。クォーラム・コンピュータが非選出化されるとき、耐障害性システム４０１のサーバは、そのクォーラム・コンピュータと交信することを停止する。クォーラム状態遷移図の如何なる状態からも、「０サーバ」遷移は可能的な非選出化を表す。これは、クォーラム・コンピュータを状態「非アクティブ」５２０又は状態「セグメント化」５５０の何れかにしておく。状態「非アクティブ」５２０においては、クォーラム・コンピュータはシステムＧＵＩＤ  Ｓ４０１の情報をもたない。状態「セグメント化」５５０においては、クォーラム・コンピュータはシステムＧＵＩＤと、どのサーバが最後に「トークン」をもっていたかに関する情報とを保持している。耐障害性システム４０１がいつかこのクォーラム・コンピュータを再選出する場合には、遷移５５１及び５４１により状態「接続」５３０に戻り、そこで古い「トークン」情報が一掃される。耐障害性システム４０１のサーバは、現在のクォーラム・コンピュータのクォーラムＧＵＩＤを追跡し、あらゆる他のクォーラム・コンピュータが保持していたあらゆる「トークン」情報を無視する。従って、クォーラム・コンピュータ内の古い「トークン」情報は不都合な影響を及ぼさない。
【００４３】
図６を参照すると、サーバに関する状態遷移が記述されている。暗黙の遷移は「開始」６０１であり、これは状態「オフライン／不明」６１０に導く。殆どの場合、選択された状態名はローカル・サーバの状態（オフライン）及び次にリモート・サーバの状態（不明）を与える。初めにサーバがアクティブにされるときには、クォーラム・コンピュータは選出されていないので、クォーラムＧＵＩＤは検出されない。また、「トークン」も存在しない。状態「オフライン／不明」６１０からは、リモート・サーバが検出されたときの状態「オンライン／オンライン」６３０への遷移６１３だけが用いられる。
【００４４】
状態「オンライン／オンライン」６３０からの遷移「開始」６０１はローカル・サーバの再起動を表す。遷移６３１はリモート・サーバの再起動を表す。いずれの場合にも、状態「オフライン／不明」６１０に入る。状態「アクティブ／アクティブ」６４０への遷移６３２は、ローカル及びリモート・サーバがクォーラムＧＵＩＤを有するクォーラム・コンピュータを選出するときに起る。そのクォーラム・コンピュータはこのシステムＧＵＩＤの「トークン」を追跡する。ローカル及びリモート・サーバの両方もまた、クォーラムＧＵＩＤに基づいて「トークン」を追跡する。遷移６３４及び遷移６３５は、ローカル及びリモート・サーバの両方が、タイムアウト時間終了前に同じクォーラム・コンピュータに接続できないときに起る。状態「アクティブ／オンライン」６６０への遷移６３４は、ローカル・サーバがリモート・サーバとのアービトレーションを獲得するときに起る。ローカル・サーバがアクティブとなるように選択された。「トークン」が生成され、ローカル・サーバを識別するために両方のサーバにより保持される。状態「オンライン／アクティブ」６２０への遷移６３５は、ローカル・サーバがリモート・サーバとのアービトレーションを失うときに起る。リモート・サーバがアクティブとなるように選択された。「トークン」が生成され、リモート・サーバを識別するために両方のサーバにより保持される。
状態「オンライン／オンライン」６３０を通過した後のパスについて以下に説明する。
【００４５】
状態６４０「アクティブ／アクティブ」は、システムの正常動作状態である。ローカル及びリモート・サーバの両方が動作中であり、クォーラム・コンピュータが接続されている。この状態からは、３つのコンポーネントの各々に対して一つずつ、３つの遷移がある。状態「オフライン／不明」６１０への遷移「開始」６０１は、ローカル・サーバが、リモート・サーバ及びクォーラム・コンピュータの両方との通信の障害又は喪失により、システムから外されていることを表す。状態「アクティブ／不明」６５０への遷移６４１は、ローカル・サーバがリモート・サーバとの接続を失い、選出されたクォーラム・コンピュータが「トークン」をローカル・サーバに与えるときに起る。状態「オフライン／不明」６１０への遷移６４２は、ローカル・サーバがリモート・サーバとの接続を失い、選出されたクォーラム・コンピュータが「トークン」をリモート・サーバに与えるときに起る。状態「格下げ未決定」６７０への遷移６４３は、クォーラム・コンピュータとの通信が失われたときに起る。ローカル及びリモート・サーバの間のアービトレーションは、クォーラム・コンピュータとの通信が再確立できない場合に用いられる、ローカル又はリモートの「トークン」を生成する。「クォーラム・トークン」は依然として存在するが、アクセス不可能なクォーラム・コンピュータ上に隔離されている。この２重トークンの解決法は以下に説明する。状態「アクティブ／アクティブ」６４０へ戻る遷移６４４は、サーバが、サーバの動作モードに影響せずに異なるクォーラム・コンピュータを選出することを可能にする
【００４６】
状態「格下げ未決定」６７０は、一時的なアクティブ／アクティブ状態である。この状態に入るとタイムアウト時間が開始する。タイムアウトの時間中に、選出されたクォーラム・コンピュータとの通信を再確立するか、又は新しいクォーラム・コンピュータを選出することが、コンピュータ・システムの格下げの必要性を避けることになる。状態「アクティブ／アクティブ」６４０への遷移６７３は、選出されたクォーラム・コンピュータとの通信が再確立されるときに起る。状態「格下げ未決定」６７０に入ることで生成されたローカル又はリモート「トークン」は、クォーラム・コンピュータ上のクォーラム「トークン」を優先させて破棄される。状態「アクティブ／アクティブ」６４０への遷移６７４は、新しいクォーラム・コンピュータが選出されるときに起る。ローカル又はリモート「トークン」は破棄され、新しい値のクォーラムＧＵＩＤにより識別される新しいクォーラム・コンピュータ上に新しいクォーラム「トークン」が生成される。古いクォーラムＧＵＩＤのクォーラム・コンピュータ上には依然として未決着のクォーラム「トークン」があることに注意されたい。状態「オフライン／不明」への遷移６７１は、状態「アクティブ／アクティブ」６４０からの遷移で生成された「トークン」がリモートであり、クォーラムを検出するタイムアウトが終了したか又はリモート・サーバが通信を停止するかの何れかのときに起る。状態「アクティブ／不明」６５０への遷移６７２は、状態「アクティブ／アクティブ」６４０からの遷移で生成されたサーバ「トークン」がローカルであり、クォーラムを検出するタイムアウトが終了したか又はリモート・サーバが通信を停止するかの何れかのときに起る。
【００４７】
状態「オフライン／不明」６１０に戻ると、その状態から４つの遷移がある。遷移６１３は、新しいシステムの初めの移動を説明した際に前述した。状態「オンライン／アクティブ」６２０への遷移６１１は、リモート・サーバが存在し、リモート・サーバが「トークン」を有するときに起る。状態「アクティブ／不明」６５０への遷移６１２は、ローカル・サーバが「トークン」を有するときに起る。状態「アクティブ／不明」６５０への遷移６１４は、クォーラムＧＵＩＤで識別される選出されたクォーラム・コンピュータが存在し、この選出されたクォーラム・コンピュータがクォーラム「トークン」を有し、リモート・サーバが利用できず、タイムアウト時間が終了したときに起る。次に、ローカル「トークン」が、クォーラム・コンピュータによりローカル・サーバに与えられ、このローカル・サーバはアクティブになることを許可される。
【００４８】
状態「オンライン／アクティブ」６２０は、システムに接続するように試行するローカル・サーバと共に動作可能なリモート・サーバを有する。状態「オフライン／不明」６１０への遷移６２１は、リモート・サーバとの通信が失われたときに起る。状態「アクティブ／アクティブ」６４０への遷移６２２は、ローカル及びリモート・サーバが新しいクォーラム・コンピュータを選出するときに起る。リモート「トークン」は破棄され、新しいクォーラム「トークン」が新しいクォーラム・コンピュータ上に生成される。状態「アクティブ／アクティブ」６４０への遷移６２３は、現在選出されているクォーラム・コンピュータがローカル及びリモート・サーバの両方に接続するときに起る。リモート「トークン」はクォーラム・コンピュータに戻される。
【００４９】
状態「アクティブ／不明」６５０は、不明のリモート・サーバと共に動作可能なローカル・サーバを有する。リモート・サーバへの接続が確立されるとき、状態「アクティブ／オンライン」６６０への遷移６５１が起る。
【００５０】
状態「アクティブ／オンライン」６６０は３つの遷移を有する。状態「アクティブ／不明」６５０への遷移６６１は、リモート・サーバとの通信が失われたときに起る。状態「アクティブ／アクティブ」６４０への遷移６６２は、ローカル及びリモート・サーバが新しいクォーラム・コンピュータを選出するときに起る。ローカル「トークン」は破棄され、新しいクォーラム「トークン」が新しいクォーラム・コンピュータ上に生成される。状態「アクティブ／アクティブ」６４０への遷移６６３は、現在の選出されたクォーラム・コンピュータがローカル及びリモート・サーバの両方に接続するときに起る。ローカル「トークン」はクォーラム・コンピュータに戻される。
【００５１】
状態「アクティブ／アクティブ」６４０が一度訪問された後は、クォーラムＧＵＩＤにより識別される現在の選出されたクォーラム・コンピュータが常に存在する。状態「オンライン／オンライン」６３０から、状態「アクティブ／アクティブ」６４０への遷移６３３は、クォーラムＧＵＩＤを有するクォーラム・コンピュータへの通信が再確立したときに起る可能性がある。遷移６３４及び遷移６３５は、ローカル・サーバもリモート・サーバも、タイムアウト時間終了前に、同じクォーラム・コンピュータに接続できないときに起る。状態「アクティブ／オンライン」６６０への遷移６３４は、ローカル・サーバがリモート・サーバとのアービトレーションを獲得するときに起る。ローカル・サーバはアクティブとなるように選択される。トークンが生成され、ローカル・サーバを識別するために両方のサーバにより保持される。状態「オンライン／アクティブ」６２０への遷移６３５は、ローカル・サーバがリモート・サーバとのアービトレーションを失うときに起る。リモート・サーバがアクティブとなるように選択される。「トークン」が生成され、リモート・サーバを識別するために両方のサーバにより保持される。
２重トークンの解決
【００５２】
所与のシステムＧＵＩＤに対して、任意の所与の時刻に複数のトークンが存在する可能性がある。所与の「システム」ＧＵＩＤに対して複数のトークンの存在が容認される理由は以下の通りである。
１）  任意のシステムＧＵＩＤに対して選出されたクォーラム・コンピュータが一つだけ存在することができる。システムＧＵＩＤに対応するシステム内のサーバは選出されたクォーラム・コンピュータのクォーラムＧＵＩＤを追跡する。クォーラムＧＵＩＤは、システムＧＵＩＤ内の両方のサーバが新しいクォーラム選出に同意するときにだけ変わることができる。
２）  サーバは、「トークン」を、選出されたクォーラム・コンピュータから又は他のサーバからだけ取得することができる。
３）  クォーラム・コンピュータは、「トークン」を、システムＧＵＩＤに対応するシステムの両方のサーバと通信しているときにだけ取得することができる。
４）  ローカル又はリモート「トークン」が未決着であるとき、システムＧＵＩＤに対応するシステムのサーバは、選出されたクォーラム・コンピュータのクォーラムＧＵＩＤのトークンの状態を無視する。
【００５３】
従って、クォーラム・コンピュータが非選出化されたとき、非選出化されたクォーラム・コンピュータはシステムＧＵＩＤに対応するシステムのサーバによって無視される。クォーラム・コンピュータの見地からのトークンの現在の状態は重要でなく、他のクォーラム・コンピュータと衝突するように見える可能性がある。それらが特定のシステムＧＵＩＤの選出されたクォーラム・コンピュータであると認識している幾つかのクォーラム・コンピュータが存在する可能性がある。システムＧＵＩＤに対応するシステムのサーバだけが、どのクォーラム・コンピュータが選出されたクォーラム・コンピュータであるかを認識する。システムＧＵＩＤがクォーラムＧＵＩＤに対応するクォーラム・コンピュータを再選出するとき、それらの対に関する見かけの衝突は解決される。クォーラム・コンピュータにはクォーラム「トークン」が与えられ、全てのローカル及びリモート・トークンは除去されることになる。
クォーラム・コンピュータとサーバの間の相互作用
【００５４】
サーバ３１０及びサーバ３２０（両方ともシステムＧＵＩＤ３００に対応するシステムのメンバ）と、クォーラム・コンピュータ３３０及びクォーラム・コンピュータ３４０との間の相互作用の順序を、システムの動作を示すために説明する。コンフィギュレーションの変化は図７に示す。
ステップ１  サーバ３１０及びサーバ３２０を起動する。両方のサーバは、「トークン」がなく利用できるクォーラム・コンピュータがないので、状態「オンライン／オンライン」６３０になる。
ステップ２  サーバがアービトレーションを行なう。クォーラム・コンピュータを待つタイムアウト時間の後、サーバはサーバ３２０への「トークン」のアービトレーションを行う。サーバ３１０は、トークンをもたないので状態「オンライン／アクティブ」６２０になる。サーバ３２０は、トークンをもつので状態「アクティブ／オンライン」６６０になる。
ステップ３  クォーラムが起動する。クォーラム・コンピュータ３３０が起動する。「システム」ＧＵＩＤの情報がないので、最終状態は「インアクティブ」５２０である。
ステップ４  クォーラム・コンピュータ３３０を選出する。サーバ３１０及びサーバ３２０の両方は選出クォーラム・コンピュータ３３０を発見する。サーバ３１０及びサーバ３２０の両方は状態「アクティブ／アクティブ」６４０になり、一方クォーラム・コンピュータ３３０は状態「接続」５３０になる。「クォーラム」ＧＵＩＤは３３０であり、「システム」ＧＵＩＤは３００（サーバ３１０及び３２０に関する「システム」ＧＵＩＤ）であり、「トークン」はクォーラム・コンピュータ３３０に付属する。
ステップ５  クォーラム・コンピュータを再起動する。これは、両方のサーバ３１０及びサーバ３２０を状態「格下げ未決定」６７０にさせる。それらは、サーバ３２０への「トークン」のアービトレーションを行う。
ステップ６  分離脳を避ける。クォーラム・コンピュータを取得する試行のタイムアウト時間が終了した。「トークン」を使用して、サーバ３１０は状態「オンライン／アクティブ」６２０になり、一方サーバ３２０は状態「アクティブ／オンライン」６５０となる。クォーラム・コンピュータ３３０は、「システム」ＧＵＩＤ３００に関する事前情報をなにももたずに、再初期化して状態「インアクティブ」５２０になった。
ステップ７  クォーラムを再取得する。両方のサーバ３１０及び３２０は、クォーラム・コンピュータ３３０に接続して「トークン」を戻す。これは両方のサーバを状態「アクティブ／アクティブ」にする。クォーラム・コンピュータ３３０に対しては、これは状態「接続」５３０に至る選出である。
ステップ８  サーバ３２０を失う。サーバ３２０は通信を停止する。クォーラム・コンピュータ３３０は状態「セグメント化」５５０に遷移し、「トークン」をサーバ３１０に与える。サーバ３１０は、状態「アクティブ／不明」６５０に遷移する。
ステップ９  クォーラム・コンピュータ３３０を失う。サーバ３１０は既にトークンを有し、独立に動作する許可を有するので、サーバ３１０には変化がない。
ステップ１０  サーバ３１０を再起動する。サーバ３１０が再起動するとき、それは依然としてトークンを有するので、状態「オフライン／不明」６１０から状態「アクティブ／不明」６５０へ遷移する。
ステップ１１  クォーラムを再起動する。クォーラム・コンピュータ３３０は、サーバ３１０の「システム」ＧＵＩＤが起動中にセーブされ、利用できるサーバは一つだけ存在するので状態「セグメント化」５５０になる。サーバ３１０には変化が起きない。
ステップ１２  サーバ３２０が起動する。サーバ３２０は、サーバ３１０又はクォーラム・コンピュータ３３０の何れかへの接続が確立されるまでは状態「オフライン／不明」６１０状態に留まる。サーバ３１０は「トークン」を有し、サーバ３２０は「トークン」の記録を有しないことに注意されたい。サーバ３２０は、クォーラム・コンピュータ３３０に接続してトークンのアービトレーションを行う（これはステップ１７に示される）か、又はサーバ３１０に接続してトークンのアービトレーションを行う必要がある。
ステップ１３  サーバ３２０が接続する。サーバ３１０とサーバ３２０は通信できる。これはサーバ３１０を状態「アクティブ／オンライン」６６０とし、サーバ３２０を状態「オンライン／アクティブ」６２０にする。両方のサーバはトークン所有権について同意する。クォーラム・コンピュータ３４０は起動して、次のステップにおいて新しい選出を示す。
ステップ１４  クォーラム・コンピュータ３４０を選出する。両方のサーバ３１０及びサーバ３２０は、新しいクォーラム・コンピュータ３４０を選出することに同意する。これは、両方のサーバ３１０及び３２０を、「クォーラム」ＧＵＩＤが３４０に設定された状態「アクティブ／アクティブ」６４０にする。クォーラム・コンピュータ３３０は依然として状態「セグメント化」５５０にあって、依然として「システム」ＧＵＩＤ３００により選出されていることを確信している。クォーラム・コンピュータ３２０は、３００の「システム」ＧＵＩＤ及び「トークン」を有する状態「接続」５３０になる。
ステップ１５  両方のサーバを再起動する。両方のサーバは再起動され、どちらのサーバも「トークン」をもたず、両方のサーバがタイムアウト時間前に存在するので、状態「オフライン／不明」６１０から「オンライン／オンライン」６３０への経路をたどる（遷移６１４）。クォーラム・コンピュータ３４０は、「システム」ＧＵＩＤ３００への接続をタイムアウトし、「システム」ＧＵＩＤ３００の全ての情報を失い、状態「インアクティブ」５２０になる。
ステップ１６  サーバ３２０を失う。サーバ３１０は、「トークン」をもたないので、状態「オフライン／不明」６１０になる。クォーラム・コンピュータ３４０は依然としてシステム３００に対する選出されたクォーラム・コンピュータである。
ステップ１７  クォーラム及びタイムアウト。サーバ３２０が出現するのを待つタイムアウト時間の後、サーバ３１０は「トークン」に関してクォーラム・コンピュータの「クォーラム」ＧＵＩＤ（３４０）とアービトレーションを行う。クォーラム・コンピュータ３４０は、「システム」ＧＵＩＤ３００の事前情報をもたないが、「トークン」を生成してサーバ３１０に与える。これは、サーバ３１０を状態「アクティブ／不明」６５０に、及びクォーラム・コンピュータ３４０を状態「セグメント化」５５０に残す。両者はサーバ３１０が「トークン」をもつことに同意する。
ステップ１８  サーバ３２０が再起動する。サーバ３２０は、サーバ３１０が存在して「トークン」をもつので、状態「オンライン／アクティブ」６２０になる。サーバ３１０は状態「アクティブ／オンライン」６６０になる。クォーラム・コンピュータ３４０は、サーバ３２０が未だそれに接続していないので、状態「セグメント化」５５０に留まる。
ステップ１９  サーバ３２０が復帰する。両方のサーバは、サーバ３２０がクォーラム・コンピュータ３４０に接続するときに状態「アクティブ／アクティブ」に遷移する。クォーラム・コンピュータ３４０は状態「接続」５３０になる。
ステップ２０  分離脳を避ける。サーバ３１０とサーバ３２０はもはや通信できない。クォーラム・コンピュータ３４０は、状態「セーブ」ＧＵＩＤ５４０に遷移して、「トークン」をサーバ３２０に与える。サーバ３２０はトークンを有する状態「アクティブ／不明６５０」になる。サーバ３１０は、「トークン」をもたず、クォーラム・コンピュータ３４０からそれを取得できないので、状態「オフライン／不明」６１０になる。
ステップ２１  再接続。サーバ３１０及び３２０が再接続する。これは、両方のサーバを状態「アクティブ／アクティブ」６４０に遷移させる。クォーラム・コンピュータ３４０は、状態「接続」５３０に遷移して「トークン」を取り戻す。
ステップ２２  クォーラム３３０を選出する。両方のサーバ３１０及び３２０は、状態「アクティブ／アクティブ」６４０状態に留まって、如何なる状態変化も起さずに、クォーラム・サーバ３３０を選出する。クォーラム・コンピュータ３３０は、状態「セグメント化」５５０から「セーブ」ＧＵＩＤ５４０を経て状態「接続」５３０へ遷移する。クォーラム・コンピュータ３４０は、「システム」ＧＵＩＤ３００の事前情報のない状態「インアクティブ」５２０になる。サーバ３１０、３２０、及びクォーラム・コンピュータ３３０に関する「システム」ＧＵＩＤ及び「クォーラム」ＧＵＩＤはここで調和している。
【００５５】
複製システムが分離脳モードで動作する可能性のないことを保証する方法を説明した。浮動の（利用可能なコンピュータのダイナミック・プールから選択可能な）クォーラム・コンピュータを、複製コンポーネントの間で直接の通信が失われたときに、それらの間でアービトレーションを行うために使用することができる。障害が存在するときに、システムを再起動し、しかし分離脳動作を避ける機能が、トークンの付加によって与えられる。システムの障害、再起動、及びクォーラム・コンピュータの変更のあらゆる場合にトークンの調整が維持される。
【００５６】
本方法の実施は、方法又はプロセス、システム又は装置、或いはコンピュータがアクセス可能な媒体上のコンピュータ・ソフトウェアを含むことができる。他の実施も添付の特許請求の範囲内にある。
【図面の簡単な説明】
【００５７】
【図１】簡単な耐障害性コンピュータ・システムのブロック図である。
【図２】１台のクォーラム・コンピュータと、２台のサーバを含むネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。
【図３】２台のクォーラム・コンピュータと、２台のサーバを含むネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。
【図４】２台のクォーラム・コンピュータと、各々が２台のサーバを含む二つのネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。
【図５】クォーラム・コンピュータに関する状態遷移図である。
【図６】サーバに関する状態遷移図である。
【図７】図３のシステムに関する相互相関された状態遷移情報を与える。
【図１】
2008542858.tif 000003
【図２】
2008542858.tif 000004
【図３】
2008542858.tif 000005
【図４】
2008542858.tif 000006
【図５】
2008542858.tif 000007
【図６】
2008542858.tif 000008
【図７】
2008542858.tif 000009