(57)【要約】【課題】  多数のノードを有するクラスタシステムであっても、プロセス識別子の不足を起こすことなく、クラスタシステム内で一意のプロセス識別子を発行すること。【解決手段】  予約プロセス識別子をノードのそれぞれの記憶装置に格納し、ノードのひとつを各予約プロセス識別子の予約の有無を管理するサーバとする。ノードからサーバに対してプロセス識別子の割り当てを要求する。要求に応じてサーバが未予約のプロセス識別子を選択してノードに通知する。通知されたプロセス識別子をノードがプロセスに対して割り当てる。【選択図】  図２
2007265342.tif 000002
【特許請求の範囲】
【請求項１】
独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる方法において、
一乃至複数のプロセス識別子からなる予約プロセス識別子を定め、予約プロセス識別子情報として前記ノードのそれぞれの記憶装置に格納し、
前記複数のノードのひとつを、前記予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブルを管理する第１のノードとし、
前記クラスタシステムの前記第１のノード以外のノードを第２のノードとし、
前記第２のノードのひとつであるノードＡから前記第１のノードに対して、プロセス識別子の割り当てを要求する段階１と、
前記段階１の要求に応じて、前記第１のノードが、前記プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択して前記ノードＡに通知する段階２と、
前記段階２で通知されたプロセス識別子を前記ノードＡがプロセスに対して割り当てる段階３と
を含むことを特徴とするプロセス識別子の割当方法。
【請求項２】
請求項１に記載のプロセス識別子の割当方法において、前記段階１乃至３に代わって、
前記ノードＡの記憶装置に格納した前記予約プロセス識別子情報を参照して、前記予約プロセス識別子以外のプロセス識別子を選択する段階４と、
前記ノードＡが前記段階４で選択したプロセス識別子をプロセスに対して割り当てる段階５と
を含むことを特徴とするプロセス識別子の割当方法。
【請求項３】
独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステムにてチェックポイント／リスタート機能を実行する方法において、
請求項１に記載のプロセス識別子の割当方法にて割り当てられたプロセス識別子を含むプロセス再実行のために必要な情報を元に、前記ノードＡにてリスタートファイルを生成する段階と、
前記ノードＡから、前記ノードＡとは異なる前記第２のノードのひとつであるノードＢに対し、前記リスタートファイルを送信する段階と、
前記ノードＢにて送信された前記リスタートファイルに基づいてリスタートする段階と
を含むことを特徴とするチェックポイント／リスタート方法。
【請求項４】
独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる方法において、
一乃至複数のプロセス識別子からなる予約プロセス識別子を定め、予約プロセス識別子情報として前記ノードのそれぞれの記憶装置に格納し、
前記複数のノードのひとつを、前記予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブルを管理するサーバと定め、
前記ノードの一のノードＡがプロセスに対してプロセス識別子を割り当てる際、
（１）前記サーバが、前記プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択して前記ノードＡに通知し、当該プロセス識別子を前記ノードＡがプロセスに対して割り当てる、及び、
（２）前記ノードＡの記憶装置に格納した前記予約プロセス識別子情報を参照して、前記予約プロセス識別子以外のプロセス識別子を前記ノードＡがプロセスに対して割り当てる
の（１）（２）のいずれかによって割り当てることを特徴とするプロセス識別子の割当方法。
【請求項５】
独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる処理をノードに実行させるためのコンピュータプログラムにおいて、
前記クラスタシステムは少なくともひとつの第１のノードと複数の第２のノードからなり、
前記第１のノードは、一乃至複数のプロセス識別子からなる予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブルを格納し、
前記第２のノードは、前記予約プロセス識別子を示す情報を格納し、
前記第２のノードからプロセス識別子の割り当ての要求を受信する処理１Ａと、
前記処理１Ａの要求に応じて、前記プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択して。前記第２のノードに送信する処理２Ａと
を前記第１のノードに実行させることを特徴とするコンピュータプログラム。
【請求項６】
独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる処理をノードに実行させるためのコンピュータプログラムにおいて、
前記クラスタシステムは少なくともひとつの第１のノードと複数の第２のノードからなり、
前記第１のノードは、一乃至複数のプロセス識別子からなる予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブルを格納し、
前記第２のノードは、前記予約プロセス識別子を示す情報を格納し、
前記第１のノードに対してプロセス識別子の割り当てを要求する処理１Ｂと、
前記処理１の要求に応じて、前記第１のノードが前記プロセス識別子予約テーブルの中から選択した未予約のプロセス識別子を、前記第１のノードから受信する処理２Ｂと、
前記処理２で受信したプロセス識別子をプロセスに対して割り当てる処理３Ｂと
を前記第２のノードに実行させることを特徴とするコンピュータプログラム。
【請求項７】
独立した複数のコンピュータシステムをネットワークで接続してなるクラスタシステムにおいて、少なくともひとつの第１のノードと複数の第２のノードからなるクラスタシステムであって、
前記第１のノードは、予め定められた複数のプロセス識別子それぞれの割り当ての有無を管理するためのプロセス識別子予約テーブルを備え、
前記第２のノードは、
前記予め定められた複数のプロセス識別子の中からプロセス識別子の割り当てを前記第１のノードに対して要求し、当該要求に応じて送信されたプロセス識別子を前記第１のノードから受信してプロセスに割り当てる手段と、
前記予め定められた複数のプロセス識別子以外のプロセス識別子をプロセスに割り当てる手段とを備える
ことを特徴とするクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードを含むクラスタシステムにおけるプロセス識別子の管理方式に関し、特に、チェックポイント／リスタート機能を備えるクラスタシステムにおけるプロセス識別子の管理方式に関する。
【背景技術】
【０００２】
クラスタシステムでは、ノードと呼ばれる複数のコンピュータを連携させてひとつのシステムとして動作させるシステムである。各ノードは独立したコンピュータシステムでもあるので、通常、プロセス識別子の管理は各ノード毎に独立して行われる。従って、クラスタシステム内のノード間で同一のプロセス識別子を同時に使用する可能性がある。
【０００３】
このため、クラスタシステムでは、各ノード上で従来のチェックポイント/リスタート機能を用いた運用を行うことはできるが、あるノードが作成したリスタートファイルを他のノードへ移動した場合、プロセス識別子の重複でリスタート処理が不可となってしまう可能性がある。
【０００４】
この問題に対し、クラスタシステム内の各ノードに対してノード番号を一意に付与して、各ノードが発行したプロセス識別子の先頭に対して発行元のノードのノード番号を付加することにより、クラスタシステム内におけるプロセス識別子の重複を避ける技術がある（例えば特許文献１参照）。
【０００５】
【特許文献１】特開平１１−２４９９２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
プロセス識別子にノード番号を付加する場合、ノード数が増えるにつれ、各ノード内で使用できるプロセス識別子の数が少なくなってしまうという問題がある。また、あるノードから他のノードにリスタートファイルを移動し、リスタート処理を実行した後、再度チェックポイントを採取し、元のノードにリスタートファイルを移動した場合にプロセス識別子を保障するのが難しいという問題がある。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、本発明が解決しようとする課題は、多数のノードを有するクラスタシステムであっても、プロセス識別子の不足を起こすことなく、クラスタシステム内で一意のプロセス識別子を発行することが可能な技術を提供することである。
【課題を解決するための手段】
【０００８】
上述の課題を解決するため、本発明は以下のようなプロセス識別子の割当方法、コンピュータプログラム及びクラスタシステムを提供する。
【０００９】
即ち、本発明は、独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる方法において、一乃至複数のプロセス識別子からなる予約プロセス識別子を定め、予約プロセス識別子情報（プロセス識別子範囲１０３、プロセス識別子予約テーブル２０１）としてノードのそれぞれの記憶装置に格納し、複数のノードのひとつを、予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブル（２０１）を管理する第1のノード（サーバ２）とし、クラスタシステムの第1のノード以外のノードを第２のノード（ノード１）とし、第２のノードのひとつであるノードＡから第１のノードに対して、プロセス識別子の割り当てを要求する段階１と、段階１の要求に応じて、第１のノードが、プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択してノードＡに通知する段階２と、段階２で通知されたプロセス識別子をノードＡがプロセスに対して割り当てる段階３とを含むことを特徴とするプロセス識別子の割当方法を提供する。
【００１０】
段階１乃至３に代わって、ノードＡの記憶装置に格納した予約プロセス識別子情報を参照して、予約プロセス識別子以外のプロセス識別子を選択する段階４と、ノードＡが段階４で選択したプロセス識別子をプロセスに対して割り当てる段階５とを含むこととしてもよい。
【００１１】
また、本発明は、独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステムにてチェックポイント／リスタート機能を実行する方法において、上述のプロセス識別子の割当方法にて割り当てられたプロセス識別子を含むプロセス再実行のために必要な情報を元に、ノードＡにてリスタートファイルを生成する段階と、ノードＡから、ノードＡとは異なる第２のノードのひとつであるノードＢに対し、リスタートファイルを送信する段階と、ノードＢにて送信されたリスタートファイルに基づいてリスタートする段階とを含むことを特徴とするチェックポイント／リスタート方法を提供する。
【００１２】
また、本発明は、独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる方法において、一乃至複数のプロセス識別子からなる予約プロセス識別子を定め、予約プロセス識別子情報としてノードのそれぞれの記憶装置に格納し、複数のノードのひとつを、予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブルを管理するサーバと定め、ノードの一のノードＡがプロセスに対してプロセス識別子を割り当てる際、（１）サーバが、プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択してノードＡに通知し、当該プロセス識別子をノードＡがプロセスに対して割り当てる、及び、（２）ノードＡの記憶装置に格納した予約プロセス識別子情報を参照して、予約プロセス識別子以外のプロセス識別子をノードＡがプロセスに対して割り当てるの（１）（２）のいずれかによって割り当てることを特徴とするプロセス識別子の割当方法を提供する。
【００１３】
また、本発明は、独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる処理をノードに実行させるためのコンピュータプログラムにおいて、クラスタシステムは少なくともひとつの第１のノードと複数の第２のノードからなり、第１のノードは、一乃至複数のプロセス識別子からなる予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブル（２０１）を格納し、第２のノードは、予約プロセス識別子を示す情報（プロセス識別子範囲１０３）を格納し、第２のノードからプロセス識別子の割り当ての要求を受信する処理１Ａと、処理１Ａの要求に応じて、プロセス識別子予約テーブルの中から未予約のプロセス識別子を選択して。第２のノードに送信する処理２Ａとを第１のノードに実行させることを特徴とするコンピュータプログラムを提供する。
【００１４】
また、本発明は、独立したコンピュータシステムをノードとし、複数のノードをネットワークで相互に接続したクラスタシステム内でプロセスにプロセス識別子を割り当てる処理をノードに実行させるためのコンピュータプログラムにおいて、クラスタシステムは少なくともひとつの第１のノードと複数の第２のノードからなり、第１のノードは、一乃至複数のプロセス識別子からなる予約プロセス識別子のそれぞれの予約の有無を管理するプロセス識別子予約テーブル（２０１）を格納し、第２のノードは、予約プロセス識別子を示す情報（プロセス識別子範囲１０３）を格納し、第１のノードに対してプロセス識別子の割り当てを要求する処理１Ｂと、処理１の要求に応じて、第１のノードがプロセス識別子予約テーブルの中から選択した未予約のプロセス識別子を、第１のノードから受信する処理２Ｂと、処理２で受信したプロセス識別子をプロセスに対して割り当てる処理３Ｂとを第２のノードに実行させることを特徴とするコンピュータプログラムを提供する。
【００１５】
また、本発明は、独立した複数のコンピュータシステムをネットワークで接続してなるクラスタシステムにおいて、少なくともひとつの第１のノードと複数の第２のノードからなるクラスタシステムであって、第１のノードは、予め定められた複数のプロセス識別子それぞれの割り当ての有無を管理するためのプロセス識別子予約テーブルを備え、第２のノードは、予め定められた複数のプロセス識別子の中からプロセス識別子の割り当てを第１のノードに対して要求し、当該要求に応じて送信されたプロセス識別子を第１のノードから受信してプロセスに割り当てる手段（指定プロセス識別子付きプロセス生成手段１３）と、予め定められた複数のプロセス識別子以外のプロセス識別子をプロセスに割り当てる手段（プロセス識別子範囲１０３、プロセス生成手段１４）とを備えることを特徴とするクラスタシステムを提供する。
【発明の効果】
【００１６】
本発明によれば、多数のノードからなるクラスタシステムであっても、システム内で重複しないプロセス識別子を発行することが出来る。このため、特にチェックポイント/リスタート機能において、リスタートファイルを他ノードに移動した場合も、移動先でプロセス識別子が必ず使用できることができ、効率の良いシステム運用を図ることが可能となる。
【発明を実施するための最良の形態】
【００１７】
本発明の一実施の形態であるクラスタシステム１００について以下に説明する。図１を参照すると、クラスタシステム１００は、複数のノード１Ａ、１Ｂ、…、１Ｘと、サーバ２からなる。ノード１Ａ、１Ｂ、…、１Ｘの構成は同じなので、以下代表してノード１として呼ぶこともある。ノード１及びサーバ２はいずれも独立したコンピュータシステムであり、ネットワークを介して相互に接続されている。クラスタシステム１００は、ノードを跨ってリスタートファイルを移動したとき、そのリスタートの対象となったプロセスの識別子が割り当て可能であると保障してチェックポイント／リスタートするように構成されている。クラスタシステム１００内で保障するプロセス識別子をサーバ２で管理する。
【００１８】
図２に示すように、各ノード１は、複数ノードで保障されるプロセス識別子の範囲を指定したプロセス識別子範囲１０３と、プロセス識別子範囲１０３の値を設定するプロセス識別子範囲設定手段１１と、サーバ２のプロセス識別子取得手段２２の要求に答えるためのプロセス識別子範囲通知手段１２と、サーバ２から予約されたプロセス識別子を持ったコンピュータ資源を割り当てる対象となるプロセスを生成する指定プロセス識別子付きプロセス生成手段１３と、一般のコンピュータ資源を持つプロセスを生成するプロセス生成手段１４と、プロセス生成時に割り当てられるプロセス識別子１０２と、プロセス実行中にチェックポイント要求を受け付けたとき前記プロセスの状態を再度実行可能な状態にフリーズしリスタートファイル１０１に格納するチェックポイント実行手段１５と、前記リスタートファイルを他のノードに移動するノード間リスタートファイル移動手段１６と、リスタート要求に従って、リスタートファイルを参照して再度プロセスを実行状態に戻すリスタート実行手段１７とを備える。
【００１９】
また、サーバ２は、ノード１からプロセス識別子範囲を取得するプロセス識別子取得手段２２と、取得したプロセス識別子範囲を管理するテーブルであるプロセス識別子予約テーブル２０１と、そのプロセス識別子予約テーブル２０１から必要に応じてプロセス識別子を予約するプロセス識別子予約手段２１とを備える。
【００２０】
図３を参照して、プロセス識別子予約テーブル２０１を作成する際のクラスタシステム１００の動作について説明する。
【００２１】
ノード１においてプロセス識別子範囲設定手段１１により、プロセス識別子の１００から２００までの範囲が指定され、プロセス識別子範囲１０３に設定される。このプロセス識別子範囲１０３は、複数ノードで保障するプロセス識別子の範囲だけを決めているだけで、実際のプロセス識別子ではない。尚、この時、クラスタシステム１００の全てのノード１Ａ、１Ｂ、…、１Ｘにて同じプロセス識別子範囲を設定しておく必要がある。
【００２２】
サーバ２のプロセス識別子取得手段２２は、ノード１のプロセス識別子範囲通知手段１２を呼び出し、プロセス識別子範囲１０３のデータを取得し、プロセス識別子予約テーブル２０１を作成する。プロセス識別子予約テーブル２０１は、プロセス識別子範囲１０３で指定された値を元に、プロセス識別子の値と、予約済みかどうかのフラグにより構成される。
【００２３】
このようにして作成されたプロセス識別子予約テーブル２０１に基づいて、複数ノードでプロセス識別子が保障されるプロセスを生成するときのクラスタシステム１００の動作について、図４を参照して説明する。
【００２４】
複数ノードでプロセス識別子が保障されるプロセス生成要求があった場合、指定プロセス識別子付きプロセス生成手段１３は、サーバ２のプロセス識別子予約手段２１を呼び出す。プロセス識別子予約手段２１は、プロセス識別子予約テーブル２０１を参照し、既に予約済でないプロセス識別子を探し出す。図４の例では、プロセス識別子［１００］は予約済みなので、次のプロセス識別子［１０１］が選ばれる。この値をノード１の指定プロセス識別子付きプロセス生成手段１３に渡し、指定プロセス識別子付きプロセス生成手段１３は、プロセス識別子１０２の［１０１］を、新たなプロセスに割り当てる。
【００２５】
他方、複数ノードでプロセス識別子を保障する必要のない、通常のプロセスを生成するときのクラスタシステム１００の動作について、図５を参照して説明する。
【００２６】
まず、プロセス生成手段１４が呼ばれ、プロセス識別子を獲得する（ステップＳ５１）。最近獲得されたプロセス識別子は、プロセス識別子状態変数として保存されているため、この変数から次の割り当てとなる識別子を決定する。尚、プロセス識別子が最大プロセス識別子を超える場合には（ステップＳ５２のNO）、再度若いプロセス識別子から取り直す（ステップＳ５３）。また、プロセス識別子がプロセス識別子範囲１０３の値であった場合は（ステップＳ５４のNO）、このプロセス識別子は使用できないため、再度別のプロセス識別子を取る（ステップＳ５５）。プロセス識別子が最大プロセス識別子を超えず、かつ、プロセス識別子範囲１０３に含まれていない場合は、そのプロセス識別子をプロセスに割り当てる（ステップＳ５６）。以上の処理により、プロセス識別子をプロセスに対して割り当てたならば、プロセス生成処理は通常処理を継続して行う。
【００２７】
次にチェックポイント実行から他ノードでのリスタート実行までの処理について、図６を参照して説明する。ここで、参照符号の末尾のＡ、Ｂは、それぞれその機能ブロックがノード１Ａ、１Ｂのものであることを示す。例えば、リスタートファイル１０１Ａはノード１Ａのものであり、リスタートファイル１０１Ｂはノード１Ｂのものである。プロセス識別子範囲１０３は全ノード共通である。
【００２８】
複数ノードでプロセス識別子が保障されたプロセスがノード１Ａで実行されている。ノード１Ａにおいて、プロセスのチェックポイント要求があると、チェックポイント実行手段１５Ａにより、そのプロセスがフリーズされ、リスタートファイル１０１Ａにプロセス識別子を含むプロセス再実行のために必要な情報が格納される（ステップＳ６１）。このプロセスを他ノード１Ｂでリスタートするためには、ノード間リスタートファイル移動手段１６Ａによりリスタートファイル１０１ＡをノードＢのリスタートファイル１０１Ｂに移動する（ステップＳ６２）。
【００２９】
ノードＢにおいて、リスタート実行手段１７Ｂが呼ばれると、リスタートファイル１０１Ｂから、プロセスの再実行に必要な情報を読み出し、プロセスを再実行する（ステップＳ５３）。このときプロセス識別子１０２は、プロセス識別子範囲１０３により保護されているので、移動先のノードＢでプロセス識別子１０２が既に予約されているような事態は生じない。
【００３０】
以上、本発明を実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、当業者の通常の知識の範囲内でその変更や改良が可能であることは勿論である。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施の形態であるクラスタシステム１００のブロック図である。
【図２】クラスタシステム１００を構成するノード１及びサーバ２のブロック図である。
【図３】プロセス識別子予約テーブルを作成する際のクラスタシステム１００の動作を説明するための図である。
【図４】プロセス識別子が保証されたプロセスを生成する際のクラスタシステム１００の動作を説明するための図である。
【図５】通常のプロセスを生成する際のノード１の動作を説明するためのフローチャートである。
【図６】チェックポイント実行から他ノードでのリスタート実行までのクラスタシステム１００の動作を説明するためのフローチャートである。
【符号の説明】
【００３２】
１、１Ａ、１Ｂ、１Ｘ    ノード
１１    プロセス識別子範囲設定手段
１２    プロセス識別子範囲通知手段
１３    指定プロセス識別子付きプロセス生成手段
１４    プロセス生成手段
１５    チェックポイント実行手段
１６    ノード間リスタートファイル移動手段
１７    リスタート実行手段
１０１  リスタートファイル
１０２  プロセス識別子
１０３  プロセス識別子範囲
２      サーバ
２１    プロセス識別子予約手段
２２    プロセス識別子取得手段
２０１  プロセス識別子予約テーブル
１００  クラスタシステム
【図１】
2007265342.tif 000003
【図２】
2007265342.tif 000004
【図３】
2007265342.tif 000005
【図４】
2007265342.tif 000006
【図５】
2007265342.tif 000007
【図６】
2007265342.tif 000008