(57)【要約】【課題】ノード間通信用の新規で別個の独立したネットワーク経路を有効に提供するような形で共用ディスクを使用すること。【解決手段】複数ノード・データ処理システムにおける活性判定は、共用不揮発性メモリを、通常はディスクを使用することによって改善される。共用不揮発性メモリは、ノード活性情報の伝送用にもその他のより一般的なデータ転送用にも使用可能な独立した通信経路を提供するように定義された伝送プロトコルと共に利用される。この経路は他のネットワーク経路と同程度の重要性を有すると見なされ、同時に、共用メモリ経路からの活性指示も他の単一または複数の経路からの活性指示と同程度の重要性を有すると見なされる。【選択図】  図４
2004199682.tif 000002
【特許請求の範囲】
【請求項１】
データ処理ノードのクラスタにおける活性判定方法であって、
少なくとも２つの活性情報の通信経路を提供するステップを含み、前記経路の少なくとも１つが共用不揮発性データ記憶装置を含み、前記不揮発性データ記憶装置を備える前記経路が、実際上連続的にかつ他の活性判定経路と並行して用いられ、それによって、他の通信経路を介した活性障害の指示によってトリガされる２次通信経路の使用に頼る必要がなくノード活性を判定することができる方法。
【請求項２】
前記不揮発性データ記憶装置が磁気ディスクおよび光ディスクからなるグループから選択される、請求項１に記載の方法。
【請求項３】
少なくとも１つの不揮発性データ記憶装置を含む複数ノード・データ処理システムにおける通信方法であって、
第１のノードによる書込みアクセス用に予約された前記記憶装置の領域が使用可能であることを判定するステップと、
前記複数ノードのうちの前記第１のノードから前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に情報を転送するステップであって、前記情報が更新された連続番号を含むステップと、
前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に読取り専用でアクセスできる第２のノードが前記情報を取り込むステップと、
前記第２のノードから前記第２のノードによる書込みアクセス用に予約された前記記憶装置の領域に前記更新された連続番号を転送し、それによって、前記第１のノードが、それ自体の関連する書込みアクセス領域を情報伝送に使用できるのが何時かを判定することができるようにするステップとを含む方法。
【請求項４】
前記不揮発性データ記憶装置が磁気ディスクおよび光ディスクからなるグループから選択される、請求項３に記載の方法。
【請求項５】
第１のノードが生成するパケットに伴う連続番号に基づいて書込み連続番号を決定するステップと、
第２のノードによって読み取られるパケットに付随する最大または最小の連続番号に基づいて読取り連続番号を決定し、それによって第１のノードがそれ自体の書込み領域が使用可能であることを判定するステップと
前記書込み連続番号を単調に変化させ、それを新規の情報と共に前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に転送するステップと
をさらに含む、請求項３に記載の方法。
【請求項６】
前記第２のノードが再ブートされる度に、前記第２のノードの書込み領域内にあるパケットに基づいて前記第２のノードの書込み連続番号を決定するステップと、
前記第１のノードの書込み領域にあるパケットに基づいて読取り連続番号を決定するステップと、
前記第２のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に前記読取り連続番号を転送し、それによって、前記第１のノードがそれ自体の書込み領域が使用可能であることを判定できるようにするステップと
をさらに含む、請求項３に記載の方法。
【請求項７】
前記情報が前記第１のノードに関する活性情報である、請求項３に記載の方法。
【請求項８】
前記第１のノードによる書込みアクセス用に予約された前記領域が、制御情報とデータの両方が書き込まれるセクタを含む、請求項３に記載の方法。
【請求項９】
前記第１のノードによる書込みアクセス用に予約された前記領域が、転送されるデータのための少なくとも１つの追加セクタをも含む、請求項８に記載の方法。
【請求項１０】
転送用情報のサイズが前記セクタに収まるように制限され、それによって、ディスク・アクセス動作の回数が低減される、請求項８に記載の方法。
【請求項１１】
前記判定するステップが、前記第１のノード用の前記書込みアクセス領域において情報転送用スペースが使用可能か否かを判定することに限定され、それによって、そうした判定のための前記装置へのアクセスが回避される、請求項３に記載の方法。
【請求項１２】
前記不揮発性データ記憶装置へのアクセスが活性ネットワーク抽象化層によって処理される、請求項３に記載の方法。
【請求項１３】
複数ノード・データ処理システムにおいて少なくとも２つのノード間でその装置へのアクセスが共用される不揮発性記憶装置上の情報を初期設定する方法であって、
第１のノードによって、前記第１のノードおよび第２のノードに知られた場所のノード内にある前記装置上のセクタに情報を書き込むステップであって、前記情報が、前記第１のノードのノード識別子、前記第２のノードのノード識別子が知られているか否かを示すフラグ、および前記セクタ中の前記情報が特定のタイプのデータを含むことを示す番号を含むステップと、
任意の時間待機するステップと、
前記第１のノードが前記セクタから前記情報を読み取るステップと、
前記セクタからの一意のノード識別子が前記第１のノードの識別子と一致しなくなるまで前記各ステップを繰り返すステップと
前記第１のノードが次の通信に使用するために、前記識別子間の差異に基づいて前記装置上の領域を選択するステップと
を含む方法。
【請求項１４】
第１のノードが前記装置上の前記選択された領域に情報を書き込むステップであって、追加の情報が、前記第１のノードの前記ノード識別子、前記第２のノードのノード識別子が知られているか否かを示すフラグ、および前記セクタ中の前記情報が特定のタイプのデータを含むことを示す番号を含むステップと、
任意の時間待機するステップと、
前記第１のノードが前記セクタから前記情報を読み取るステップと、
前記セクタからのノード識別子が前記第１のノードの識別子と一致しなくなり、かつ前記第１のノードのノード識別子が前記第２のノードに知られていることを前記フラグが示すまで前記各ステップを繰り返し、それによって前記第１のノードが、それが次にどの領域を使用するか、および前記第２のノードもこれを知っていることを知るステップと、
をさらに含む、請求項１３に記載の方法。
【請求項１５】
請求項１〜１４の何れか１つに記載の方法における各ステップの処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
高可用性クラスタにおいては、障害が発生したリモート・ノードとネットワーク分割イベントを区別することが非常に重要である。というのはこれらのイベントが非常に異なるやり方で処理されるからである。遺憾ながらネットワーク分割は、リモート・ノードの障害が提示するものと同じ１組の症状をシステム監視ルーチンに提示する。特に、障害が発生したノードからリソースを引き継ぐことは安全だが、ネットワーク分割が原因で障害が発生したように見えるノードの場合にリソースを引き継ぐことは安全ではない。
【背景技術】
【０００２】
本発明によって解決される問題を論じる前に、本発明が最も有利に用いられる状況および環境について述べておくことは有益である。具体的には、本発明は複数ノード・データ処理システムで動作する。この種の例示的なシステムは、本発明の譲受人、インターナショナル・ビジネス・マシーンズ・コーポレーションが製造販売するデータ処理マシンであるpSeriesに見られる。例示的なシステムは複数の独立したデータ処理ノードを含み、それぞれが各自の独立したメモリと各自のオペレーティング・システム・ソフトウェアを備える（ただし、特定の問題に対して大量の処理を行う典型的なノード構成においては、たいていの場合、割り当てられたすべてのノード上で同じオペレーティング・システムを用いることに留意されたい）。これらのシステムは、明確なユーザ指定のデータ処理目標を達成するために、並列式と分散式の両方で動作する。この種の例示的マシンは通常、メッセージの交換を介して、おそらくＩＢＭのメッセージ・パッシング・インターフェース（ＭＰＩ）などの公的に定義されたプロトコルを介して通信を行う。特定の問題を解決するため、あるいはより高度の可用性を提供するために、それらのノードを選択ノードのクラスタに編成することができる。pSeriesのマシンではＨＡＣＭＰ（高可用性クラスタ多重処理）と呼ばれるプログラム製品によってこの編成を調整することができる。ＨＡＣＭＰは、ノード、ネットワークまたはアダプタの障害、あるいはそれらの組合せに障害が発生した場合でも、アプリケーションが稼動し続けることができるようにする。また、存在するノードのいくつかまたはすべてが、随時、様々なノード・グループに参加したりグループから離れたりできることにも留意されたい。ノード障害が発生した場合には、ＨＡＣＭＰは、障害が発生したノードの作業を他のノードが再開できる機構を提供する。しかし、特にユーザのアプリケーションがデータ処理に長い時間を要する場合、または再始動が実際的でない場合、あるいはその両方の場合は、ユーザのアプリケーション作業を続行できることが重要である。したがって、グループのメンバー構成は流動的である。この流動性によって、作業が行われている実際のノードとは無関係にデータ処理作業を続行できるようになる。したがって、分散および並列処理環境においては、グループ・メンバー構成の流動性が強力な効果をもたらすことがわかる。ただし前述のように、ネットワーク分割によって提供される流動性は、監視システム（たとえばＨＡＣＭＰ）には、ノード障害が発生したと見えることもある。したがって、ネットワーク障害またはノードのネットワーク・アダプタすべてにおける障害によって生じた可能性があるイベントと実際のノード障害とをいかに区別するかが問題となる。
【０００３】
これら２つの場合の区別を示すためにいくつかの技法を援用することができる。具体的には、主要通信ネットワークに障害が発生した場合にバックアップ通信経路を提供する、共用ディスク経路を使ってノード活性検査を実行することができる。主要通信経路は、予備のＩＰベース（インターネット・プロトコル）のネットワーク、およびＲＳ−２３２ポートおよび線などの非ＩＰネットワークの使用も含む。
【０００４】
本発明では活性判定媒体として共用ディスクを用いる。分散クラスタにおいて共用ディスクを活性判定サブシステムから見て通信ネットワークとして動作させる技法を導入する。他のクラスタ・サブシステムは共用ディスクを「クォーラム装置」としてまたはバックアップ通信基板として使用するが、このディスクを「ハートビート・ネットワーク」の一部として使用するサブシステムはない。このディスクをクォーラム装置として使用しても機能するが、その場合は「分割」の両側で強制的に回復手順が実施される。他方、「ディスク・ハートビート」では、分割されたそれぞれの側はもう一方の側が活動状態にあることを知っているので、分割の両側が以前と同様に作業を続けることができる。
【０００５】
本発明の一実施形態によれば、活性情報を伝えるための少なくとも２つの経路が存在し、その経路の少なくとも１つが共用ディスクを含み、前記共用ディスク経路が実際上連続的にかつ他の活性判定経路と並行して使用されるデータ処理ノードのクラスタにおいて、活性を判定する方法が提供される。これにより、その使用の際に始動オーバヘッドを必要とする２次通信経路に頼って活性を判定する必然性がなくなる。そうした２次通信経路の使用は通常、異なる通信経路を介した活性障害の表示によってトリガされる。これとは異なり、本発明が提供するディスク通信経路は、実質上連続的でかつ並列な方式で動作する。ノード活性を判定するに当たり、共用ディスク通信経路は、他のより典型的な経路を介して受信した活性判定信号と同等の資格で関与することができる。
【０００６】
共用ディスク（または他の不揮発性記憶媒体）を通る適切な通信経路を提供するために、共用ディスクは、クラスタにおけるそれ自体のノードと関連する制御セクタおよびデータ・セクタを含む。各制御セクタは読取り部分と書込み部分を含む。その書込み部分に書き込むことができるのはそれに関連するノードだけである。読取り部分は、それを所有するノード以外のノードが読み取るためのデータを含む。この構造が連続番号とあいまって、共用ディスクは活性（または他の）情報用の独立した通信経路として動作できるようになる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の一目的は、ノード間通信用の新規で別個の独立したネットワーク経路を有効に提供するような形で共用ディスクを使用することである。
【０００８】
本発明の他の目的は、複数ノード・データ処理システムにおける活性判定機構として共用ディスクを使用することである。
【０００９】
本発明の別の目的は、共用ディスク機構を使用することによって新規で独立した通信経路を提供し、その経路が活性判定に使用される他の経路と同等と見なされるようにすることである。
【００１０】
本発明の別の目的は、ディスクに基づく活性判定チャネルの随時の確立に伴うオーバヘッドを回避することである。
【００１１】
本発明の他の目的は、共用ディスク（または他の不揮発性記憶装置）を使用するためのプロトコルを提供して、そのディスクがネットワーク通信チャネルとしても機能できるようにすることである。
【００１２】
本発明の別の目的は、不必要なディスク・アクセス動作を回避することによって効率的に前述の共用ディスク通信経路を使用することである。
【００１３】
本発明の別の目的は、データだけを含むセクタを含むデータ構造を提供するのみならず、制御情報とデータ情報の両方を含む情報のセクタを転送することもできる不揮発性記憶システムのデータ構造を提供することである。
【００１４】
最後に、それだけに限らないが、本発明の目的は、特に既存の共用データ記憶リソースを利用しそれらを予想外のやり方で使用することによって、複数ノード・データ処理システムの信頼性と性能を向上させることである。
【課題を解決するための手段】
【００１５】
以上、本発明の様々な実施形態によって実現される望ましい目的を本明細書中に列挙したが、これは、本発明の最も一般的な実施形態においてまたはそのより具体的ないずれかの実施形態において、これらの目的のいずれかまたは全部が、個別にまたは総体的に不可欠な特徴として存在することを提示または示唆するものではない。
【００１６】
本発明と見なされる主題は、特許請求の範囲で具体的に指摘し明確に特許請求する。ただし、本発明の構成および実施方法、ならびにそのさらなる目的および利点については、添付の図面と関連して示す以下の詳細な説明を参照することによって最も適切に理解することができる。
【発明を実施するための最良の形態】
【００１７】
１−背景
前提として、「アダプタ」という用語は、本明細書中で使用する場合、ハードウェア・データ処理ノードを様々な形式の通信ネットワークまたは交換機に接続する通信装置を指すことに留意されたい。前述のpSeries製品では、あるノードから指定されたノードに、より詳細には、指定されたノードに接続されたアダプタの１つにメッセージを送信する役割を交換機またはネットワークが果たす。ノードが活性かどうか、および適切なアダプタが機能しているかどうかの判定は、特にそれが通信上の問題から発生するノード障害の現れ方に関連するため、高可用性分散クラスタ・データ処理システムの核心をなす。高可用性サービスを提供するには、システム中のどのノード、どのネットワーク、どのネットワーク・アダプタが機能しているかをクラスタ・システムが判定できなければならない。これらの構成要素のいずれかに障害が発生した場合には、それを検出し、その障害に関する情報をより高水準のソフトウェア・サブシステムに渡し、可能な場合は、クラスタ・ソフトウェアおよびアプリケーション・プログラムによって回復する必要がある。
【００１８】
ノード、ネットワーク、およびネットワーク・アダプタが活性かどうかの判定は、しばしば、分散システムの各ノードで実行中のデーモン・プロセスを使用することによって行われる。デーモンは分散プロトコルを実行し、データ処理システム中の異なるネットワーク経路を強制的に通過する活性メッセージを交換する。そうした活性メッセージを所定の時間内に受信しない場合は、送信側ノードまたはネットワーク・アダプタのいずれかが機能していないと想定される。すなわち、そのノードは、それ以外のノードからは「死んでいる」と見なされる。
【００１９】
高可用性データ処理クラスタにおいては、アダプタ、ネットワーク、およびノード・イベントの正確な判定は非常に重要である。というのは、クラスタ・マネージャ・サブシステムがそうしたイベントに反応して、エンド・ユーザにクラスタ・リソースが依然として利用可能であるように見せようとするからである。たとえば、クラスタ内のあるノードに障害が発生すると、クラスタ・マネージャは、障害が発生したノードによってホスティングされまたは制御されているリソースを、稼動中の別のノードに移動させる。（前述のpSeriesのデータ処理システムにおいては、クラスタ・マネージャのこの機能はＨＡＣＭＰと呼ばれるプログラム製品によって提供される。）そうした場合に、あるノードが故障している（「死んでいる」）ことが検出された場合、そのクラスタの正しい挙動は、検出された故障ノードが実際に故障していることに依存する。そうではなく、そのノードが実際には故障していない場合、クラスタ内に同じリソースを制御しようとするノードが２つ存在する可能性が極めて高い。そうしたリソースの同時並行は、特にそのリソースがディスクである場合は、クラスタに破壊的な影響を及ぼす可能性があり、その場合は、結果としてデータベースやファイル・システムが破壊される可能性がある。
【００２０】
図１に、本発明が用いられる複数ノードの共用記憶環境を示す。便宜上、ノードを４つだけ示す。具体的には、ノード１、ノード２、ノード３、ノード４（それぞれ参照番号１０１〜１０４）は不揮発性記憶装置１１０にアクセスすることができる。本発明の動作および利点をより容易に理解できるようにするには、この記憶装置が回転式磁気ディスク記憶装置を含むものであると考えると最適である。ノード１０１〜１０４はまた、ネットワーク１５０を介して、通常は、インターネット・プロトコル（ＩＰ）伝送を使用して通信を行う。本発明で防止し改善しようとする対象は、ノード活性情報伝送用の通常の媒体であるこの経路における障害である。ただし、本発明は単なるバックアップ経路以上のものとして動作することができ、また、ネットワーク１５０によって搬送されるものと同じ種類のデータを同様に伝送することができることに留意されたい。図１には具体的に、ネットワークに障害がないときにノード１０１〜１０４が通信を行うことができ共用ディスク１１０がノード１０４によって所有されている状況が示されている。大きな「Ｘ」で表す中断によって示すように、ネットワーク接続に障害が発生するとき、ノード１０１および１０２は、ノード１０３および１０４に障害が発生したと見なす。これによって、通常は、ノード１０２にディスクの所有権を引き受けさせることになり、その場合、ノード１０４がまだディスクに書込み中であるために、ディスク破壊をもたらす可能性がある。本発明は、この不測の事態を防止することができその他のサービスも提供する機構を提供する。
【００２１】
図１に示す状況に備えて正確なアダプタ／ノード・イベント通知を提供するために、活性サブシステムは一般に、以下の「偽のイベント」の２つの通常の原因に対処する。
（１）ＣＰＵまたはメモリ枯渇（あるいはその他の理由）のためにデーモンがブロックされて、活性メッセージが適時に送信されなくなる。
（２）活性メッセージがその宛先に到達することを妨げるネットワーク問題。
上記項目（２）のネットワーク問題が本発明の方法で扱う具体的な問題である。
【００２２】
対象となるネットワーク問題に対する典型的な解決策は、複数のネットワークを備える、あるいはすべて同じネットワークに接続された少なくとも複数のアダプタを各ノードに備える、クラスタを構成することである。１つのノード内に複数のアダプタを設けると、あるアダプタ内の障害が原因で、ホスティング・ノードに故障しているとフラグが立てられることが防止される。他方、複数のネットワークを設けると、複数のアダプタを設ける場合とは異なり、ネットワークの１つにおける障害が原因で、各ノードによってすべてのノードが故障しているものとして検出されることが防止される。
【００２３】
２−ディスク・ハートビート
複数ネットワークを使用すると、個々のネットワークおよびアダプタ内の障害の問題に対処がなされるように見えるが、ＩＰサブシステムが単一点障害（Single Point of Failure）になるという懸念が依然として残る。ＩＰ通信に障害が発生した場合、１つまたは複数のノードが「分離」され、それらが故障しているものとして誤って検出される可能性がある。なお、ＩＰサブシステムは、オペレーティング・システムのうちの、アプリケーション・プログラムとネットワークの間でＩＰ情報パケットの流れを管理する部分であることに留意されたい。この不正確な検出の可能性があるために、クラスタはしばしば、活性情報を送信する際にＩＰに依拠しない通信媒体を使用する「非ＩＰハートビート」に頼る。したがって「非ＩＰ」ネットワークを使用すると、クラスタ内のノード間で活性情報を伝達する際にＩＰ通信に依存することによって生じる単一点障害が回避される。
【００２４】
「非ＩＰ」ネットワークの１つのタイプが、１対のノードを接続するＲＳ−２３２シリアル線である。シリアル接続は比較的安価であり、ＲＳ−２３２シリアル接続を介してデータを送信するには、オペレーティング・システムのカーネル内にそうした接続用の基本的なサポートが通常すでに用意されている。この手法には以下の２つの欠点がある。
（１）クラスタ内のすべてのノードにおいて接続を必要とし、その必要最低限が、１つのノードがクラスタ内の他の２つのノードに接続される「デイジー・チェーン」トポロジである。
（２）システムによっては、アダプタ・カード・スロットが不足しがちであり、クラスタ活性のためだけに余分に２つのスロットを必要とすることが望ましくないと見なされることがある。
【００２５】
別の可能な「非ＩＰ」ネットワークは、共用ディスク経路すなわちＳＣＳＩバスを利用するものである。この手法は、追加のハードウェアを必要としないため、ＲＳ−２３２ネットワークの２つの欠点が解決される。しかし、これにも１つ欠点がある。それはこの手法が、各ノードがＳＣＳＩバスを使って通信できるようにするために、オペレーティング・システム内の（すべての装置の型には使用できない）専用のサポートに依存することである。
【００２６】
本発明が提供する代替の手法は、ディスク経路ではなく共用ディスク自体を活性情報の伝送に使用することである。一方のノードから他方のノードに送信されるデータはこの共用ディスクに書き込まれ、次いで、その宛先ノードによって取り込まれる。これが、ディスクがネットワークのように「振る舞う」ことを可能にする「基本構成単位」である。
【００２７】
本発明の一動作形態を図２に示す。分かりやすくするために、ノードが２つだけの場合の動作を考える。具体的には、図２は、本発明を使用すると２つの形式のデータ転送を同時に実施できるようになることを示している。図では、ネットワーク接続１５０は、ノード１０１からノード１０２およびその逆への「活性」情報パケットの転送専用に使用される。さらに、本発明は、共用ディスク１１０を介した追加の通信経路を、読取りおよび書込みプロトコルと制御情報によって提供する。
【００２８】
本明細書で提案する機構を、ＩＢＭのＲＳＣＴ（Reliable ScalableCluster Technology）インフラストラクチャの一部である、トポロジ・サービス・サブシステムにおけるその好ましい使用という状況において説明する。トポロジ・サービスはシステムの活性層であり、クラスタ内で稼動中の１組のノード、ネットワークおよびネットワーク・アダプタの判定を行う。ソフトウェアの階層としては、トポロジ・サービスはグループ・サービスの下で走る。グループ・サービスは、グループ通信と、（ＨＡＣＭＰを含む）クラスタ・マネージャや並列データベースなどより高水準のサービスによって使用されるプロトコルとを提供する。
【００２９】
図３に既存のサービスおよびその間の関係を示す。具体的には、ノード１０１はその最低層においてトポロジ・サービス２０１（ノード１０２の場合は２０２）を使用し、トポロジ・サービス２０１はグループ・サービス３０１（ノード１０２の場合は３０２）と通信する。グループ・サービスは、共用装置１１０を介してノード１０１とノード１０２の間でデータを転送することを必要とするプロトコルを実際に実行するＩＢＭ供給のユーティリティ層である。グループ・サービスは、図３に示すように、プロトコル・メッセージの実際の転送を実施する。グループ・サービス・プロトコルは、ノード１０１と１０２の間でネットワーク経路１５０を介したＩＰ通信が行われない場合でも続行される。この場合、グループ・サービス（３０２など）はローカル・トポロジ・サービス・デーモン（２０２など）にそのプロトコル・メッセージを引き渡し、そのデーモンがディスクを介して対等ノード１０２にメッセージを送信する。宛先ノードでは、そのトポロジ・サービス・デーモンがメッセージをローカルのグループ・サービス・デーモンに送信する。
【００３０】
３−ＲＳＣＴにおけるディスク・ハートビート
３．１−トポロジ・サービスおよびネットワーク・インターフェース・モジュール
トポロジ・サービスは、稼動中で到達可能な１組のアダプタおよびノードを判定するために使用されるそのより高水準のアダプタ・メンバー構成プロトコルと、その低水準アダプタ専用通信との間の明確に定義されたインターフェースを有する。このインターフェースは、すべてのアダプタの込み入った処理が低水準のネットワーク・インターフェース・モジュール（ＮＩＭ）によって取り扱われるように設計される。ＮＩＭは、活性判定ソフトウェア（たとえばトポロジ・サービス）と活性判定に使用される通信装置との間に介在するソフトウェア層である。この層が、分散システム・プロトコルを扱う活性判定ソフトウェアと共に実際のデータ転送を行う。そうした層が設けられている場合、トポロジ・サービスに新規のネットワーク・タイプのサポートを追加するには、そのアダプタ用の新規のＮＩＭを追加するだけでよい。
【００３１】
この新しい機能を実行するためにＮＩＭが実装するコマンドは、以下のタイプのものである。
−ローカル・アダプタへの接続（アダプタ専用を意味する）
−ローカル・アダプタとの切断
−メッセージの送信（所与の宛先にメッセージを送信する）
−活性メッセージの送信を開始する
−活性メッセージの送信を停止する
−活性メッセージの監視を開始する
−活性メッセージの監視を停止する
−ＮＩＭ活性検査
−終了処理
【００３２】
ＮＩＭからトポロジ・サービスへ返す応答は以下のタイプのものである。
−「connect」コマンドへの応答
−ローカル・アダプタの稼動／非稼動状態の提供
−リモート・アダプタの稼動／非稼動状態の提供
−着信メッセージ（リモート・ノードによって送信される）
−ＮＩＭ活性検査への応答
【００３３】
図４に見られるように、トポロジ・サービス・デーモン２０１ａ（ＲＳＣＴ（ReliableScalabable Cluster Technology）の一部）は補助プロセス「ＮＩＭ」（ネットワーク・インターフェース・モジュール）を用いて各専用ネットワーク・アダプタとの低水準通信を処理する。トポロジ・サービス・デーモン２０１ａによって生成されるプロトコル・パケットが各ＮＩＭに送信され、次いで各ＮＩＭがそのパケットを物理媒体に送信する。同じことが受信側でもこれとは逆向きに行われる。パケットがＮＩＭによって受信され、次いでトポロジ・サービス・デーモン２０１ａに転送される。ＩＰ  ＮＩＭ１４０は、標準ソケットＵＮＩＸ（Ｒ）プリミィティブを使用してデータ・パケットを送受信するが、ディスクＮＩＭ１２０はそれ自体のプロトコルを使用する。これは、宛先ノードがパケットを取り込めるようになるまで、ディスク上にそのパケットを格納することに基づくものである。
【００３４】
ディスクを活性通信媒体として使用できるようにするには、上記のようなコマンドおよび応答を実装するＮＩＭを作成するだけでよい。それが行われた後は、ディスクはトポロジ・サービスが使用する他の任意のネットワークと同様に「振る舞う」。その場合、そのディスクは、活性プロトコルの実行にも、ＲＳＣＴグループ・サービス・サブシステム用のメッセージのノード間伝送にも使用される。ＩＰネットワークのすべてで故障が発生した場合でも、クラスタはそのまま動作を続行し、リモート・ノードはそのまま稼動中であると見なされ、クラスタ・マネージャ・プロトコルはディスクＮＩＭを介して「経路指定」される。これは、トポロジ・サービスが、ＩＰネットワークを（それらに障害が発生した場合は）迂回して任意の使用可能なディスク経路を使用するノード間経路を計算することによって実現される。
【００３５】
３．２  ディスク・ネットワーク・インターフェース・モジュール
共用ディスクを通信媒体として使用できるようにするには、ディスクの一部分を新規のディスクＮＩＭ専用に割り振る。ディスクのこの部分はディスクＮＩＭ専用であり、その下にあるオペレーティング・システムによる書込みアクセス用ではない。これは通常、（１）１つのディスク区画全体をそのディスクＮＩＭだけのために割り振る、あるいは（２）特定のディスク・ブロックをオペレーティング・システムが使用しないようにしておくことを意味する。
【００３６】
手法（１）ではディスク・スペースが無駄になりやすく、また、データ処理システム管理者がその専用区画をセットアップする必要もあるため、クラスタを稼動させるための手作業が全体として増える。手法（２）では上記（１）の欠点はないが、新規のディスクＮＩＭが使用できるディスク領域が通常は非常にわずかしかない。
【００３７】
ＮＩＭディスク領域は、ディスクＮＩＭによって、パケットがリモート側に取り込まれる前の一時的なパケット記憶領域として使用される。ディスクは、個々のバイト・レベルではなくセクタ単位でしか読み書きすることができないため、複数のノードが同じセクタ上に書込みを行うことはできない。そうでないと、別のノードによって書き込まれたデータに上書きすることになる。したがって、セクタは各ノードによって「所有」される。すなわち、各セクタには、ＮＩＭプロトコルによってあるノードまたは別のノードへの排他的書込みアクセスを行うことができる。
【００３８】
図５に、本発明の目的を実行するために共用ディスク１１０上に提供することが可能なデータ構造を、より高水準で示す。具体的には、２つのノード、ノード１およびノード２についてのデータ構造の配置を示してある。各ノードには、制御用にもデータ用にも使用されるセクタ（ノード１には制御／データ・セクタ１１１、ノード２には制御／データ・セクタ１２１）が割り振られる。一群のセクタがノード１によって「所有」され、別の一群のセクタがノード２によって「所有」される。セクタに書き込むことができるのはそのセクタの所有者だけである。ノードが所有するそれ以外のセクタ（図に示すようにノード１の場合はデータ・セクタ１１２および１１３、ノード２の場合はデータ・セクタ１２２および１２３）はデータ送信だけに使用され、図６により詳細に示すようなポインタまたはリンクを介して制御／データ・セクタにリンクされる。少量のデータのみを送信するときは、制御／データ・セクタ１１１および１２１内の使用可能な記憶スペースが使用されるので、異なるセクタへの別のディスク・アクセス動作の必要がなくなる。したがって共有ディスク領域は、「伝送途中の」パケットの記憶に使用されるだけでなく、並行性および流れ制御情報の記憶にも使用される。
【００３９】
パケットを「送信する」ノードによって「所有」されるセクタもあれば、パケットを「受信する」ノードによって「所有」されるセクタもある。ディスクの「書込み側領域」は「送信中の」実際のパケットを含み、「読取り側領域」は所与のパケットがすでに読み取られたかどうかの情報を含む。
【００４０】
ディスク接続の両側でそれぞれパケットを送信し受信する必要があり、したがって、それぞれの側が「書込み側領域」および「読取り側領域」を所有することに留意されたい。
【００４１】
パケットを相互に区別するために、単調に増加するパケット連続番号を各パケットに関連付ける。書込み側ノードが新規のパケットを発信するとき、そのパケットには新規の連続番号も含まれ、そのため、読取り側は次のパケットを入手できることを知る。そのパケットを「消費」した後で、読取り側がそれ自体の領域内に直前に読み取ったパケットの連続番号を入れる。これによって書込み側は、パケットによって使用されたディスク領域を次のパケットに利用できることを知る。読取り側でパケットを受信するのが遅れたときにパケットが不必要に失われないようにするために、読取り側がそのパケットを読み込んだことを知らせるまで書込み側は以前に書き込んだパケットを上書きしない。
【００４２】
上記の機構は書込み側と読取り側ノードの間に流れ制御を確立する。読取り側がパケットの取り込みを停止すると、書込み側は、新規パケットのディスク上への書込みを強制的に停止する。次いで、書込み側がメモリへの新規パケットのバッファリングを開始するが、最終的にはそれらのパケットを廃棄しなければならない。ＮＩＭではそうした挙動でもそのまま受け入れられる。というのは、読取り側プロセスがパケットの消費を停止するときにオペレーティング・システムのパケット・バッファ・スペースを使い果たすＩＰ  ＮＩＭとこのＮＩＭがさほど異ならないからである。より高水準のトポロジ・サービス・プロトコルが任意の必要なメッセージ送信を再試行するものとする。
【００４３】
図６に、ノード１の制御／データ・セクタ１１１のより詳細な図を示す。他のノードの構造も同様である。制御／データ・セクタ１１１は読取り部分１１１ａと書込み部分１１１ｂとに分かれる。読取り部分１１１ａは、別のノード、たとえばノード２などによって書き込まれたデータ・パケットに伴う「最後に読み取られた連続番号」１１５の表示を含む。書込み部分１１１ｂは、別のノードによってデータが読み取られる前に、所有側ノード（この例ではノード１）がデータを記憶するために使用するセクタ１１１の部分を指す。この領域は、転送されるデータ、または、図６に示すように、共用ディスク１１０上の転送されるデータの様々なセクタへのポインタ、あるいはその両方を含む。書込み部分１１１ｂは、非所有側ノードが読み取るパケットを探す際に使用する。
【００４４】
３．３  ディスク・アクセス回数の最少化
本発明の方法を実行するに当たり、同じ共用ディスクを使用しているクラスタ・アプリケーションの性能を犠牲にしないようにするために、ディスク・アクセスの頻度を低減させるまたは最小限に抑える、あるいはその両方を行うことが望ましい。
【００４５】
読取り側ノードの通常の動作は、書込み側の制御セクタを周期的に読み取り、書込み側ノードによって新規パケットが追加されるのを待つことである。新規パケットが追加されると、読取り側がそのパケットを取り込み、次いで、読み取ったパケットの連続番号でそれ自体の制御セクタを更新する。
【００４６】
送信する新規パケットが書込み側に発生すると、書込み側はまず、読取り側の制御セクタを読み取って最後に読み取られた連続番号を取り込む。書込み側はその連続番号情報を使って、どのパケットが読取り済みであり、ディスク内のどの領域を新規パケットに使用できるか判定する。書込み側は、この判定を行った後で、まず新規のパケットをデータ・セクタ中の適当な位置にコピーし、最後に書込み側制御セクタを新規パケットの連続番号で更新する。
【００４７】
上記の手順は、誤りではないが、これでは書込み側があまりに多くディスクにアクセスしなければならない。この手順は以下の知見を利用することで改善される。
（１）定常状態においては、読取り側はパケットが書き込まれた直後にそれを取り込む。これは、書込み側がパケットを書き込むための「空き」スペースを見つけるのに、通常はほぼ問題がないことを示唆する。
（２）ディスクＮＩＭを介してリモート・ノードに送信する必要のあるパケットは通常小さい（数百バイト以下）。
【００４８】
これらの知見が与えられたものとして、本発明の好ましい実施形態では以下の最適化も実装される。
（１）書込み側のデータ領域に使用可能なスペースがない場合、書込み側は読取り側の制御セクタ（最後に読み取られたメッセージの連続番号）を取り込むだけでよい。
（２）小さいパケットは、データ・セクタ内ではなく、書込み側の制御セクタに書き込まれる。この手順によってディスク・アクセスが１回省かれる。
【００４９】
これらの最適化を使用すると、ディスク内のＮＩＭ領域がＸ個のパケットを収容できる場合、Ｘ回のパケット書込みのうちの約（Ｘ−１）回において、書込み側は、リモート・ノードにパケットを送信する際に１回のディスク・アクセス、すなわちそれ自体の制御セクタへの書込みを行うだけでよい。（Ｘ個のパケットのうちの）残りのパケットの書込みにおいては、書込み側は書込みスペースがないことを知り、そのため、読取り側の制御セクタを取り込み、次いで、そのパケットを書き込むのに必要なスペースを解放することができる。
【００５０】
最適化は読取り側でも可能である。「最後に読み取られた連続番号」フィールドは、１回のパケット読取りごとではなく、Ｙ回のパケット読取りごとにだけ更新することができる。これは、読取り側でのディスク・アクセス回数を省くのみならず、前述の書込み側の最適化とも両立する。というのは、書込み側はまばらな時間間隔で「最後に読み取られた連続番号」値を取り込むだけでよく、したがって、この値を頻繁に更新する必要がなくなるからである。
【００５１】
３．４  ＮＩＭ再始動および同期
また、書込み側から読取り側にパケットを伝達するために使用するプロトコルは、書込み側と読取り側の両方で（ＮＩＭにおける障害またはノード上でクラスタが停止されることが原因で）ＮＩＭプロセスが終了されないようにしなければならない。
【００５２】
書込み側プロセスは、それが再始動するときに、その前の「具体化（incarnation）」（呼出し）の際に書き込んだ最後の連続番号を判定する必要がある。読取り側ＮＩＭのプロセスが再始動しなかった場合、読取り側ＮＩＭは次のメッセージが次の連続番号と共に着信すると予想するので、連続番号を何らかの初期値に再設定してもうまく行かない。
【００５３】
どの連続番号を使用するか見つけるために、書込み側はそれ自体の制御セクタを取り込み、書込み側の以前の具体化によって書き込まれたパケットの連続番号を回復する。使用する連続番号は書込み側の制御セクタに記載される連続番号より１だけ大きい数である。
【００５４】
読取り側プロセスは、それが再始動するとき、通常どおり書込み側のセクタを検査してどのパケットが使用可能か判定する。しかし、パケットをトポロジ・サービス内の上層に戻してはならない。というのは、読取り側プロセスが長時間非アクティブ状態であった可能性があり、書込み側の領域内のパケットが「古くなっている」ことがあるからである。トポロジ・サービスの全体的な目標は活性判定を実施することなので、古いパケットを処理するとサブシステムの挙動に有害な影響を及ぼすことがある。したがって、読取り側の始動時に取り込まれたパケットは廃棄される。読取り側は、「最後に読み取られた連続番号」を書込み側の制御セクタ内で最大の連続番号に設定することによって、それらのパケットに「読取り済み」であるとマークする。
【００５５】
書込み側プロセスが開始するときに読取り側プロセスが非アクティブ状態である場合は、読取り側領域内の「最後に読み取られた連続番号」フィールドが更新されないため、書込み側プロセスがブロックされる可能性が高くなる。ＮＩＭの基本的目標はリモート・ノードとメッセージを交換することなので、ＮＩＭが有用な働きができるのはリモート・ノード（およびそのＮＩＭ）が起動してからであり、したがって、リモート・ノードが非アクティブ状態のときにメッセージを送信できなくても問題とは見なされない。
【００５６】
３．５−コールド・スタートおよびセクタ割当て
ＮＩＭの一番最初の始動時には、ＮＩＭメッセージ交換用に予約されたディスク領域は初期設定されない。その結果、その時点では送信されたパケットに関する有効な情報がない。これは、有効な情報が使用可能であることを示す制御セクタ内で「マジック・ナンバ」を使用することによって解決される。本明細書中で使用する場合、「マジック・ナンバ」という用語は、その番号を含むメモリ／ディスク領域全体が特定のタイプのデータを含むことを示すようにあるメモリ／ディスク位置に書き込まれる大きい数を指す。「マジック・ナンバ」のサイズおよび値は、同じ位置に書き込まれる他の種類のデータが所与の数と同じ値をもつ可能性が極めて低くなるように選択される。最初のマシン始動時にはマジック・ナンバが設定されていないので、ＮＩＭは、その領域が初期設定されていないことを「知り」、次いで、それ自体で初期設定を行う。
【００５７】
ディスクＮＩＭには上層からその他のＮＩＭに渡されるものと全く同じ情報しか供給されないと想定すると、ディスクＮＩＭは、制御セクタおよびデータ・セクタ用にディスクのどの領域を使用するか判定するという基本的な問題に直面する。ディスク・ハートビート用に予約された１組のブロックの位置をＮＩＭにハード・コーディングする（あるいは、ファイル・システムまたはディスク・タイプに基づいて決める）ことはできるが、ディスクＮＩＭ領域内の各部分はまだ割り当てられたままである。ノードのうちの１つはデータをある「領域１」に書き込むことができ、別のノードは「領域２」に書き込むことができるが、どのノードがどの領域に書き込むかを決定する必要がある。したがって、プロトコルを導入して各ノードにどの領域を使用するかを決定する。
【００５８】
このプロトコルでは、（既知の場所にある）ディスク・セクタを使用する。各ノードは自動的にそのセクタから読み取りまたはそこに書き込むことができるものとする。セクタは最小のディスク転送単位であるため、これが普通である。セクタは以下の各データを含む。
−node-unique-number
−other-side-known flag
−"magic" number
【００５９】
各ノードは一意の番号を生成することができる。この番号は（ＵＮＩＸ（Ｒ）「uname」システム呼出しで提供されるものなど）マシンまたはオペレーティング・システムの識別子、あるいはその両方とすることも、クラスタ・ノード番号とすることもできる。
【００６０】
プロトコル：
−ループ
＊｛ローカルの「node-unique-number」，「unknown」,「magicnumber」｝を書き込む
＊ランダムな時間待機する
＊セクタを読み取る
node-unique-number！＝ローカルのnode-unique-numberになるまで
（これはローカル・ノードが、それがディスクに書き込んだものを読み取らなかったことを意味する）
−リモートのnode-unique-numberを取り込む。ローカルのnode-unique-numberとリモートのnode-unique-numberとを比較する。
ローカルの数値がリモートの数値より小さい場合、ローカルが「領域１」を使用し、そうでない場合は「領域２」を使用する。
−ループ
＊｛ローカルの「node-unique-number」，「known」，「magicnumber」｝を書き込む
＊ランダムな時間待機する
＊セクタを読み取る
node-unique-number！＝ローカルのnode-unique-numberかつ
other-side-known＝knownになるまで
【００６１】
この時点でローカル・ノードは、それがどの領域を使用するか、およびリモート・ノードも同じ情報を持っていることを知っている。
【００６２】
しかし、ローカル・ノード「Ａ」は、リモート・ノード「Ｂ」が上記のループを終了できることを確認することができない。というのは、リモート・ノードは｛「Ａのnode-unique-number」，「known」，「magic number」｝のパターンを待っているが、ノード「Ｂ」はそのセクタを｛「Ｂのnode-unique-number，「known」，「magicnumber」で上書きしてしまった可能性があり、上記のループを出ると、ノード「Ａ」はそれ以上共用ディスクを更新しない。
【００６３】
そこで、終了処理段階を設ける。
−ループ
＊このループを通るのが２回目以降である場合
−任意の時間Ｙ（＞Ｘ）秒間待機する
＊｛ローカルの「node-unique-number」，「known」，「magicnumber」｝を書き込む（Ｉ）
＊セクタ（１）を読み取る（ＩＩ）
＊node-unique-number＝ローカルのnode-unique-numberである場合
−Ｘ秒間待機する
−セクタ（２）を読み取る
node-unique-number＝ローカルのnode-unique-numberになるまで
このアルゴリズムが適切かどうかは、各ノードが上記ステップ（Ｉ）とステップ（ＩＩ）の間にかかる時間がＸ秒未満であることにかかっている。
【００６４】
上記のプログラム・ループによって提供される主な機能は以下のように特徴付けることができる。すなわち、ローカル側がそのレコードを書き込んだ後でリモート側がＸ秒間レコードを書き込まなかった場合、ローカル・ノードによって書き込まれたものをリモート側で読み取ることができたと見なす。
【００６５】
さらに、リモート・ノードが依然として前述のループにあり、ローカル・ノードにループ終了処理を行わせるのに十分な時間「スリープ」している場合、これは、リモート・ノードが「書込み」を行った後、「読取り」を行う前にスリープしていることを意味する。リモート・ノードの次の読取り操作でローカル・ノードが書き込んだレコードが取り込まれ、これによってリモート・ノードはループから抜け出す。ローカル・ノードは次に、それ自体の「node-unique-number」の書込みを安全に停止し、両方のＮＩＭが通常のプロトコルを開始し、上位のソフトウェア層からの要求に応じられるようになる。
【００６６】
以上本発明を、不揮発性記憶装置が回転式磁気ディスクであると想定して述べてきた。しかし、光ディスク・ドライブを含めてどんな不揮発性記憶装置でも利用可能であることに留意されたい。そうした装置に関する唯一の要件は、その装置上の別個のアドレス可能な領域に情報を書き込み、またはそこから情報を読み取ることができることである。磁気ディスク・ドライブの場合、そうした領域をセクタと呼ぶ。
【００６７】
本明細書中では、本発明をその特定の好ましい実施形態に従って詳細に述べたが、当技術分野の技術者であれば、本発明における多くの改変形態および変更形態を実施することができる。したがって、添付の特許請求の範囲は、すべてのそうした改変形態および変更形態を本発明の真の精神および範囲内にあるものとして包含するものである。
【００６８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６９】
（１）データ処理ノードのクラスタにおける活性判定方法であって、
少なくとも２つの活性情報の通信経路を提供するステップを含み、前記経路の少なくとも１つが共用不揮発性データ記憶装置を含み、前記不揮発性データ記憶装置を備える前記経路が、実際上連続的にかつ他の活性判定経路と並行して用いられ、それによって、他の通信経路を介した活性障害の指示によってトリガされる２次通信経路の使用に頼る必要がなくノード活性を判定することができる方法。
（２）前記不揮発性データ記憶装置が磁気ディスクおよび光ディスクからなるグループから選択される、上記（１）に記載の方法。
（３）少なくとも１つの不揮発性データ記憶装置を含む複数ノード・データ処理システムにおける通信方法であって、
第１のノードによる書込みアクセス用に予約された前記記憶装置の領域が使用可能であることを判定するステップと、
前記複数ノードのうちの前記第１のノードから前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に情報を転送するステップであって、前記情報が更新された連続番号を含むステップと、
前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に読取り専用でアクセスできる第２のノードが前記情報を取り込むステップと、
前記第２のノードから前記第２のノードによる書込みアクセス用に予約された前記記憶装置の領域に前記更新された連続番号を転送し、それによって、前記第１のノードが、それ自体の関連する書込みアクセス領域を情報伝送に使用できるのが何時かを判定することができるようにするステップとを含む方法。
（４）前記不揮発性データ記憶装置が磁気ディスクおよび光ディスクからなるグループから選択される、上記（３）に記載の方法。
（５）第１のノードが生成するパケットに伴う連続番号に基づいて書込み連続番号を決定するステップと、
第２のノードによって読み取られるパケットに付随する最大または最小の連続番号に基づいて読取り連続番号を決定し、それによって第１のノードがそれ自体の書込み領域が使用可能であることを判定するステップと
前記書込み連続番号を単調に変化させ、それを新規の情報と共に前記第１のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に転送するステップと
をさらに含む、上記（３）に記載の方法。
（６）前記第２のノードが再ブートされる度に、前記第２のノードの書込み領域内にあるパケットに基づいて前記第２のノードの書込み連続番号を決定するステップと、
前記第１のノードの書込み領域にあるパケットに基づいて読取り連続番号を決定するステップと、
前記第２のノードによる書込みアクセス用に予約された前記記憶装置の前記領域に前記読取り連続番号を転送し、それによって、前記第１のノードがそれ自体の書込み領域が使用可能であることを判定できるようにするステップと
をさらに含む、上記（３）に記載の方法。
（７）前記情報が前記第１のノードに関する活性情報である、上記（３）に記載の方法。
（８）前記第１のノードによる書込みアクセス用に予約された前記領域が、制御情報とデータの両方が書き込まれるセクタを含む、上記（３）に記載の方法。
（９）前記第１のノードによる書込みアクセス用に予約された前記領域が、転送されるデータのための少なくとも１つの追加セクタをも含む、上記（８）に記載の方法。
（１０）転送用情報のサイズが前記セクタに収まるように制限され、それによって、ディスク・アクセス動作の回数が低減される、上記（８）に記載の方法。
（１１）前記判定するステップが、前記第１のノード用の前記書込みアクセス領域において情報転送用スペースが使用可能か否かを判定することに限定され、それによって、そうした判定のための前記装置へのアクセスが回避される、上記（３）に記載の方法。
（１２）前記不揮発性データ記憶装置へのアクセスが活性ネットワーク抽象化層によって処理される、上記（３）に記載の方法。
（１３）複数ノード・データ処理システムにおいて少なくとも２つのノード間でその装置へのアクセスが共用される不揮発性記憶装置上の情報を初期設定する方法であって、
第１のノードによって、前記第１のノードおよび第２のノードに知られた場所のノード内にある前記装置上のセクタに情報を書き込むステップであって、前記情報が、前記第１のノードのノード識別子、前記第２のノードのノード識別子が知られているか否かを示すフラグ、および前記セクタ中の前記情報が特定のタイプのデータを含むことを示す番号を含むステップと、
任意の時間待機するステップと、
前記第１のノードが前記セクタから前記情報を読み取るステップと、
前記セクタからの一意のノード識別子が前記第１のノードの識別子と一致しなくなるまで前記各ステップを繰り返すステップと
前記第１のノードが次の通信に使用するために、前記識別子間の差異に基づいて前記装置上の領域を選択するステップと
を含む方法。
（１４）第１のノードが前記装置上の前記選択された領域に情報を書き込むステップであって、追加の情報が、前記第１のノードの前記ノード識別子、前記第２のノードのノード識別子が知られているか否かを示すフラグ、および前記セクタ中の前記情報が特定のタイプのデータを含むことを示す番号を含むステップと、
任意の時間待機するステップと、
前記第１のノードが前記セクタから前記情報を読み取るステップと、
前記セクタからのノード識別子が前記第１のノードの識別子と一致しなくなり、かつ前記第１のノードのノード識別子が前記第２のノードに知られていることを前記フラグが示すまで前記各ステップを繰り返し、それによって前記第１のノードが、それが次にどの領域を使用するか、および前記第２のノードもこれを知っていることを知るステップと、
をさらに含む、上記（１３）に記載の方法。
（１５）少なくとも２つの活性情報の通信経路をコンピュータに提供させるためのコンピュータ実行可能命令を含むコンピュータ可読媒体であって、前記経路の少なくとも１つが共用不揮発性データ記憶装置を含み、かつ、前記不揮発性データ記憶装置を備える前記経路が、実際上連続的にかつ他の活性判定経路と並行して用いられ、それによって、前記不揮発性データ記憶装置への共用アクセスを有する複数ノード・データ処理システムにおける他の通信経路を介した活性障害の指示によってトリガされる２次通信経路の使用に頼る必要がなくノード活性を判定することができるコンピュータ可読媒体。
【図面の簡単な説明】
【００７０】
【図１】本発明が用いられる環境を示し、より詳細には解決される問題の性質を示す概略的構成図である。
【図２】通常の通信ネットワークを介するのみならず、本発明において「活性パケット」転送用の分離された経路としてそのディスクを使用できるように特別に定義されたプロトコルと共に使用される共用ディスクをも介する「活性パケット」の流れを示す概略的構成図である。
【図３】既存のクラスタ・サービスの階層が果たす役割をより詳細に示す、図２と同様の機能構成図である。
【図４】共用ディスク通信用に確立されたプロトコルを実行するコマンドを提供する機構としてのネットワーク・インターフェース・モジュールの使用、およびそれらと他の構成要素との対話をより詳細に示す、図２および図３と同様の機能構成図である。
【図５】一群のセクタがノード１によって「所有」され、別の一群のセクタがノード２によって「所有」され、セクタの所有者だけがそのセクタに書き込むことができるディスク・ハートビート用のディスクの配置図である
【図６】情報転送プロトコルを確立するために使用される記憶領域のデータ構造を示し、詳細には、別個の読取部分および書込み部分への分割を示す概略的構成図である。
【符号の説明】
【００７１】
１０１  ノード１
１０２  ノード２
１０３  ノード３
１０４  ノード４
１１０  共用ディスク（不揮発性記憶装置）
１１１  制御／データ・セクタ
１１１ａ  読取り部分
１１１ｂ  書込み部分
１２１  制御／データ・セクタ
１１２  データ・セクタ
１１３  データ・セクタ
１１５  最後に読み取られた連続番号
１２０  ディスクＮＩＭ
１２２  データ・セクタ
１２３  データ・セクタ
１４０  ＩＰ  ＮＩＭ
１５０  ネットワーク
２０１  トポロジ・サービス
２０１ａ  ＲＳＣＴトポロジ・サービス・デーモン
２０２  トポロジ・サービス
３０１  グループ・サービス
３０２  グループ・サービス
【図１】
2004199682.tif 000003
【図２】
2004199682.tif 000004
【図３】
2004199682.tif 000005
【図４】
2004199682.tif 000006
【図５】
2004199682.tif 000007
【図６】
2004199682.tif 000008