JP4280919B2 - 複製管理システム、複製管理方法および複製管理プログラム - Google Patents

複製管理システム、複製管理方法および複製管理プログラム Download PDF

Info

Publication number
JP4280919B2
JP4280919B2 JP2003430572A JP2003430572A JP4280919B2 JP 4280919 B2 JP4280919 B2 JP 4280919B2 JP 2003430572 A JP2003430572 A JP 2003430572A JP 2003430572 A JP2003430572 A JP 2003430572A JP 4280919 B2 JP4280919 B2 JP 4280919B2
Authority
JP
Japan
Prior art keywords
replication
node
resource
computer
entity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003430572A
Other languages
English (en)
Other versions
JP2005190162A (ja
Inventor
智義 菅原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2003430572A priority Critical patent/JP4280919B2/ja
Publication of JP2005190162A publication Critical patent/JP2005190162A/ja
Application granted granted Critical
Publication of JP4280919B2 publication Critical patent/JP4280919B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、複製管理システム、複製管理方法および複製管理プログラムに関し、特にネットワークで結合された分散コンピュータにおけるプロセスの複製を管理する、複製管理システム、複製管理方法および複製管理プログラムに関する。
複数のコンピュータ(以下、ノードと呼ぶ)がネットワークで結合され一つのシステムとして利用されるようなシステムを分散コンピュータと呼ぶ。分散コンピュータでは、可用性を向上させるため、フェールオーバやレプリケーション、動的負荷分散などの手法が用いられてきた。フェールオーバは、あるサービスがノードの故障などの理由で停止した場合に、そのサービスを別のノードで実行させる技術である。動的負荷分散は、フラッシュピーク(一時的な過負荷状態)に対応するための技術であり、あるサービスに負荷が集中し、サービス不能状態に陥った場合に、待機系のノードでサービスを動作させることにより、サービスの負荷軽減を実現する。レプリケーションは、サービスを提供するプロセス(以下、実体プロセスと呼ぶ)の複製(以下、複製プロセスと呼ぶ)を別のノードに作成しておき、何らかの理由でサービスが停止したときには、複製プロセスが実体プロセスに替わってサービスを提供する技術である。なお、このレプリケーションは複製の方法により、(1)コールド、(2)ウォーム、(3)ホットの3つに分類される。コールドでは、複製プロセスは動作させない。ウォームでは、複製プロセスは動作させるが、同時にサービスを提供しない。ホットでは、複製プロセスも元のプロセスと同様にサービスを提供する。
従来のレプリケーション装置の一例として、特許文献1に記載されているものがある。このレプリケーション装置では、プログラム毎にレプリケーションの方法と複製数を登録し、常に一定数の複製プロセスがシステム内に存在するようにレプリケーションが行われる。複製プロセスが存在するノードの故障などが発生した場合には、別のノードに複製プロセスを作成することにより、複製プロセスの数を一定に保つ。ただし、このレプリケーション装置では、管理の対象は複製プロセスが存在するノードのみとされており、複製プロセスが存在しないノード(将来、複製プロセスが置かれるかもしれないノード)については管理の対象から外されている。
特開2000−105756号公報(第6−11頁、図1、図2)
複製プロセスを作成する場合、プロセスIDやソケットのポート番号などの資源が元のプロセスと同一でないと、作成した複製プロセスが正しく動作しないことがある。このため、新たに作成しようとしている複製プロセスのプロセスIDやポート番号などの資源が、すでに他のプロセスにより利用されている場合には、その複製プロセスの作成に失敗することとなる。このように、従来のレプリケーション装置には、新たに複製プロセスを作成しようとした際に失敗する可能性がある、という問題がある。
本発明の目的は、上記問題を解決し、他のプロセスの干渉を受けずに、新たな複製プロセスを作成することのできる、複製管理システム、複製管理方法および複製管理プログラムを提供することにある。
上記目的を達成するため、本発明の第1の複製管理システムは、ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のノードを有し、前記複数のノードのそれぞれは、前記複数のノード上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のノードの少なくとも1つに作成する複製管理部と、前記他のノードのうち、前記複製プロセスが作成されたノードを除くノードの少なくとも1つに、前記実体プロセスによって取得された資源を予約する資源予約部と、を有し、前記複製管理部が、前記資源予約部により資源の予約がなされたノードに、前記複製プロセスに代わる新たな複製プロセスを作成することを特徴とする。この構成によれば、新たな複製プロセスは予め資源が予約されているノードに作成されるので、その作製が失敗することはない。
上記の第1の複製管理システムにおいて、資源予約部が、他の複数のノードの資源予約部からの同一資源の予約を許可するとともに、該許可した資源が、前記他の複数のノードのいずれかによって自ノード上で作成された複製プロセスによって使用されると、前記許可した資源を共有する残りのノードの予約を取り消すように構成してもよい。このように構成することで、同一ノードにおける、資源の予約の競合が可能となり、より効率的な資源予約を行うことができる。
また、複製管理部が、同一ノード内に、同一資源を保有する、複数の異なるユーザプログラムの複製プロセスを作成するとともに、該複数の複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除するように構成してもよい。このように構成することにより、同一ノード内に資源の競合する複数の複製プロセスを作成することが可能となり、より効率的な複製プロセスの作成が可能となる。
さらに、複製管理部が、自ノードに存在する実体プロセスのメモリ領域の一部をネットワークに接続された外部記憶装置内に書き出すとともに、他のノード上の、対応する複製プロセスの状態を前記メモリ領域の一部を書き出された実体プロセスの状態に更新し、前記更新がなされた他のノード上の複製管理部が、自ノード内の前記対応する複製プロセスを実体プロセスに昇格させる場合は、該複製プロセスの対応する領域に、前記外部記憶装置に格納したメモリ領域の一部を書き込むように構成してもよい。この構成によれば、例えば、実体プロセスの使用するメモリ領域のうち、一定時間アクセスされなかったメモリ領域を外部記憶装置に書き出し、複製プロセスでは、その外部記憶装置に書き出されたメモリを開放する、といった動作が可能となる。これにより、システム全体で使用されるメモリの量を削減することが可能となる。
本発明の第2の複製管理システムは、ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のノードを有し、前記複数のノードのそれぞれは、前記複数のノード上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のノードの少なくとも1つに作成する複製管理部を有し、前記複製管理部が、同一ノード内に、同一資源を保有する、前記複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成するとともに、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除することを特徴とする。この構成によれば、同一ノード内に複数の異なるユーザプログラムの複製プロセスを作成することができるため、従来のように、資源の競合によって複製プロセスの作成が失敗することはない。
上記の場合も、ネットワークに接続された外部記憶装置をさらに有し、複製管理部は、自ノードに存在する実体プロセスのメモリ領域の一部を前記外部記憶装置内に書き出すとともに、他のノード上の、対応する複製プロセスの状態を前記実体プロセスの状態に更新する際に、前記書き出されたメモリ領域を除く状態で更新させ、前記更新がなされた他のノード上の複製管理部は、自ノード内の前記対応する複製プロセスを実体プロセスに昇格させる場合は、該複製プロセスの対応する領域に、前記外部記憶装置に格納したメモリ領域の一部を書き込むようにしてもよい。このように構成することで、上述したシステム全体で使用されるメモリの量の削減が可能となる。
本発明の第1の複製管理方法は、それぞれが1つ以上の資源を備える複数のコンピュータがネットワークを介して接続されたシステムにおいて行われる複製管理方法であって、前記複数のコンピュータ上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する第1のステップと、前記他のコンピュータのうち、前記複製プロセスが作成されたノードを除くノードの少なくとも1つに、前記実体プロセスによって取得された資源を予約する第2のステップと、前記資源の予約がなされたコンピュータに、前記複製プロセスに代わる新たな複製プロセスを作成する第3のステップと、を含むことを特徴とする。この方法も、上記第1の複製管理システムと同様な作用を有する。
本発明の第2の複製管理方法は、それぞれが1つ以上の資源を備える複数のコンピュータがネットワークを介して接続されたシステムにおいて行われる複製管理方法であって、前記複数のコンピュータ上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成するステップと、同一コンピュータ内に、同一資源を保有する、前記複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成した場合に、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除するステップと、を含むことを特徴とする。この方法も、上記第2の複製管理システムと同様な作用を有する。
本発明の第1のプログラムは、ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のコンピュータのそれぞれに、前記複数のコンピュータ上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する第1の処理と、前記他のコンピュータのうち、前記複製プロセスが作成されたノードを除くノードの少なくとも1つに、前記実体プロセスによって取得された資源を予約する第2の処理と、前記資源の予約がなされたコンピュータに、前記複製プロセスに代わる新たな複製プロセスを作成する第3の処理と、を実行させることを特徴とする。この方法も、上記第1の複製管理システムと同様な作用を有する。
本発明の第2のプログラムは、ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のコンピュータのそれぞれに、前記複数のコンピュータ上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する処理と、同一コンピュータ内に、同一資源を保有する、前記複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成した場合に、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除する処理と、を実行させることを特徴とする。この方法も、上記第2の複製管理システムと同様な作用を有する。
以上説明した本発明によれば、複製プロセスの作成に失敗することがないため、システムにおける信頼性が低くなる時間を短くできる。よって、従来にない、信頼性の高いシステムを提供することができる。
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
(実施形態1)
図1は、本発明の第1の実施形態である複製管理システムの主要部を示すブロック図である。図1を参照すると、本実施形態の複製管理システムは、プログラム制御により動作する複数のノード100−1〜100−4がそれぞれネットワーク200を介して相互に通信可能に接続されている。なお、説明を簡略化するため、図1には、複製管理システムを4台のノードにより構成する例を示してあるが、ノードの台数は4台に限定されるものではない。本実施形態の複製管理システムは、基本的には2台以上の任意台数のノードからなる構成に適用することができる。
ノード100−1〜100−4のそれぞれが複製管理部および資源予約部を有し、また、ノード100−1〜100−4の少なくとも1つのノードが故障検出部を有する。ここでは、ノード100−1、100−2、100−3、100−4上で動作する複製管理部をそれぞれ111−1、111−2、111−3、111−4という符号で示し、資源予約部をそれぞれ112−1、112−2、112−3、112−4という符号で示す。そして、ノード100−1のみが、故障検出部113を有するものとする。
また、各ノード100−1〜100−4は、ユーザプログラムの実行時形態であるユーザプロセス(以下、実体プロセス)と、当該複製管理システムにより作成されるユーザプロセスの複製(以下、複製プロセス)を有する。図1の例では、ユーザプログラムとして、A,B,Cの3種類が存在し、A1、B1、C1はそれぞれユーザプログラムA、B、Cの実体プロセスを示す。A2,B2、C2は、当該複製管理システムにより作成されたユーザプログラムの複製プロセスであって、A2はA1の複製プロセス、B2はB1の複製プロセス、C2はC1の複製プロセスをそれぞれ表す。
各ノード100−1〜100−4に設けられている複製管理部(111−1〜111−4)は、以下のような機能を有する。
複製管理部は、実体プロセスの複製プロセスを作成するとともに、その作成した複製プロセスの状態を定期的に更新する。ここで、複製プロセスを作成するとは、背景技術で示したウォーム・レプリケーションを作成することを意味する。すなわち、新規のプロセスを作成して休眠状態にしておき、実体プロセスのプロセス状態をその作成したプロセスに複製することである。複製プロセスの状態を定期的に更新するとは、実体プロセスのプロセス状態を、一定時間ごとに複製プロセスに複製することである。プロセス状態は、プロセスを構成する基本情報とプロセスが利用中の資源の情報を含む。例えば、Linux(Linus Torvalds氏、米国およびその他の国における登録商標あるいは商標)の場合、プロセス状態にはプロセス構造体、仮想アドレス管理情報、オープン済みファイル管理情報、シグナル設定情報、プロセス間通信管理情報が含まれる。なお、複製プロセスの更新の際には、実体プロセスと複製プロセスのプロセス状態の差分を取り、差分の部分だけを更新することで、更新処理を効率的に行うことができる。また、複製管理部は実体プロセスがノード故障やプログラムのエラーなどの理由で消滅した場合には、複製プロセスの一つを選択して、実行状態を休眠状態から実行可能状態へと移行させる(実体プロセスへ昇格させる)。
複製プロセスの数は、あらかじめ複製度として設定されており、複製管理部は、複製の数を複製度で指定された数に保つ。複製度は、自然数で与えられる値であって、当該複製管理システムの初期化時に全体で一つの数値が設定される。複製度は、例えば設定ファイルから読み込まれて、複製管理部に含まれるグローバル変数に保持される。複製管理部は、障害などにより複製プロセスの数が減少した時には、新たな複製先をシステム全体から探す。新たな複製先を探す際には、複製管理部は、自ノードに設けられている資源予約部に問い合わせて、複製プロセスを作成しても資源競合が起きないノードを取得し、そのノードに対して複製プロセスの作成を行う。
また、複製管理部は、自ノード上に存在する実体プロセスおよび複製プロセスに関する情報を格納した複製管理テーブルとして、例えば図2に示すような複製管理テーブル118を有する。複製管理テーブル118は、ユーザプログラム識別子、実体が存在するノードの識別子、実体プロセスの識別子、複製先ノードの識別子と複製プロセスの識別子の組みのリスト(複製先ノードリスト)を含む。例えば、Linuxの場合、ユーザプログラム識別子はパス名(文字列)、ノードの識別子はホスト名(文字列)、プロセスの識別子はプロセスID(自然数)で表される。複製管理テーブル118は、複製管理部が確保するメモリ中に配置されてもよく、また、ディスク装置や他の補助記憶装置に配置されてもよい。
各ノード100−1〜100−4に設けられている資源予約部(112−1〜112−4)は、以下のような機能を有する。
資源予約部は、自ノード上で動作するプロセス(実体プロセスおよび複製プロセスから昇格した実体プロセス)が取得した資源の、他のノードに対する予約を行う。この資源予約では、1つのプロセスに対して少なくとも1つの資源予約が他のノード上でなされるものとする。新規に予約先ノードを追加する場合は、資源予約部は、自ノード上で、指定されたプロセスが利用しているすべての資源を調べ、その調べた資源をすべて予約可能な他のノードをシステム内から探し出し、それを予約先ノードとして登録する。また、自ノード上で動作するユーザプログラム(実体プロセス)から資源取得要求が発行された場合は、資源予約部は、そのユーザプログラム(実体プロセス)によって取得された資源のうち予約が必要なものに関して、自動的に予約先ノードに予約する。資源予約の数は、あらかじめ予約数として設定されており、資源予約部は資源予約先ノードの数を予約数で指定された数に保つ。予約数は、自然数で与えられる値であって、当該複製管理システムの初期化時に全体で一つの数値が設定される。予約数は、例えば設定ファイルから読み込まれて、資源予約部に含まれるグローバル変数に保持される。
また、資源予約部は、図3に示すような予約管理テーブル119を用いた管理を行う。予約管理テーブル119は、実体プロセスが存在するノードの識別子、実体プロセスのプロセス識別子、実体プロセスが保有する資源のタイプと識別子のリスト、予約先のノードのリストを含む。資源は、例えばポート番号、セマフォなどであって、例えば、ポート番号にはPORT、セマフォにはSEMという定義値が割り当てられる。予約管理テーブル119は、資源予約部が確保するメモリ中に配置されてもよく、また、ディスク装置や他の補助記憶装置に配置されてもよい。
故障検出部113は、全ノードにおける故障やユーザプログラム(あるいは、アプリケーションプログラム)の障害を監視し、故障が起こった場合には、その故障に関する情報をシステム内のすべてのノードに通知する機能を有する。
ノード100−1〜100−4は、いずれもCPU、メモリ(主記憶装置)、ディスク装置、通信装置(モデムやネットワークインタフェースカードなど)などのハードウェアを有するコンピュータであって、上述した複製管理部、資源予約部および故障検出部における各処理機能は、基本的には、予め用意されたプログラムにしたがってCPUが必要な処理を実行することで実現される。また、CPUは、各処理機能の実行時に、主記憶装置または補助記憶装置から必要なデータ(複製管理テーブルや予約管理テーブルなどのデータを含む)を読み出して処理したり、必要なデータを主記憶装置また補助記憶装置に格納したりする。
次に、本実施形態の複製管理システムの基本動作について詳細に説明する。
(1)ノード故障発生時の動作:
まず、ノード故障が発生した場合の動作について説明する。ここで、ノード故障とはハードウェア的な故障と、OS故障の両方のことを指す。
故障検出部113は、全てのノードの状態を監視しており、いずれかのノードに故障が生じると、そのノード故障を検出してノード故障情報を全てのノード111−1〜111−4に通知する。ノード故障の検出としては、各ノードの状態を監視する方法の他に、いくつかの方法がある。例えば、ノードを構成するハードウェアにIPMI(Intelligent Platform Management Interface)のような故障検出機能が含まれる場合は、その故障検出機能により、ノード故障が故障検出部113に通知されてもよい。さらに、ノードを使用するユーザあるいはノードを管理する管理者により実行される、ノード故障通知コマンドにより、ノード故障が故障検出部113に通知されてもよい。ノード故障情報には、ノードの識別子が含まれる。ノードの識別子には、IPアドレス、ホスト名などが利用できる。
故障検出部113からノード故障情報を受け取ったノード上の複製管理部(故障したノード以外のノードの複製管理部)のそれぞれは、その受け取ったノード故障情報に基づいて、自身が管理する複製管理テーブル118を検索し、故障したノードにプロセス(実体プロセスまたは複製プロセス)が含まれているかを判断する。故障したノードにプロセスが含まれる場合は、以降、検索されたプロセスに関して以下の処理を繰り返す。故障したノードにいずれのプロセスも含まれない場合は、何も処理は行わない。
図4は、ノード故障情報を受け取った複製管理部の動作を説明するためのフローチャートである。以下、図4を参照して複製管理部の動作を説明する。
複製管理部は、自身が管理する複製管理テーブルを参照して故障ノードに含まれていたプロセスに対応する複製プロセス、または、実体プロセスが自ノード上に存在するか否かを調べ、存在する場合には、故障ノードでに含まれていたプロセスが実体プロセスであるかどうかを判断する(ステップS101)。この判断で、「Yes」となった場合は、続いて、自身が管理する複製管理テーブルで、その実体プロセスに対応するエントリを調べ、そのエントリの複製先ノードリスト(複製先ノードの識別子と複製プロセスの識別子の組みのリスト)のフィールドに含まれるノード(組み)の先頭の一つを選択する(ステップS102)。ノード(組み)の選択方法としては、この他に、複製先ノードリストのフィールドに含まれるノード(組み)の最後の一つを選ぶ方法や、ノードの負荷が最も軽いノード(組み)を一つ選ぶ方法などがある。
次に、複製管理部は、ステップS102で選択したノード(組み)に含まれている複製プロセスの識別子から複製プロセスを特定するとともに、自身が管理する複製管理テーブルを参照して、その特定した複製プロセスが自ノードにあるかどうかを判断する(ステップS103)。この判断で「No」となった場合は、処理を終了する。「Yes」となった場合は、自ノードの該当する複製プロセスを実体プロセスへと昇格させる(ステップS104)。ここで、「複製プロセスを実体プロセスに昇格させる」とは、例えば、Linuxの場合であれば、シグナルを発行して休眠状態にあるプロセスを実行可能状態に移すことを意味する。
次に、複製管理部は、ステップS104で昇格させた実体プロセスの複製(昇格前の複製プロセスの代わりとなる新たな複製プロセス)を作成するために、予約済みノードの一つを取得する。この予約済みノードの取得では、自ノード内の資源予約部に対してノード取得要求をし、ノード取得応答を受け取る、といった処理が行われる。ここでは、予約済みノードとして受け取ったノードを「ノードN」とする。さらに、複製管理部は、ノードNに対して昇格した実体プロセスに関する複製作成要求を送信し、ノードNから複製作成応答を受信する。そして、自身が管理する複製管理テーブルの、昇格した実体プロセスに対応するエントリの複製先ノードリストの最後に、ノードNに関する情報(組み)を追加する(ステップS105)。このノード(組み)の追加位置は、複製先ノードリストの最初や途中としてもよい。ノード取得要求には、実体プロセスが存在するノードの識別子と実体プロセスのプロセス識別子が含まれ、さらに、オプションとして、エントリの内容を置き換えるための実体プロセスが存在するノードの識別子と実体プロセスのプロセス識別子が含まれる。ノード取得応答には、予約済みノードの識別子が含まれる。複製作成要求には、複製対象のプログラムの識別子、実体プロセスの存在するノードの識別子と実体プロセスのプロセス識別子、実体プロセスのプロセス状態が含まれる。複製作成応答には、送信元のノードの識別子と実体プロセスのプロセス識別子、複製プロセスのプロセス識別子が含まれる。
ステップS105でノード取得要求を受けた資源予約部は、自身が管理する予約管理テーブルを検索し、指定された実体プロセスに対応するエントリのノードリストから最初の一つを選び、その選択したノードの識別子を含むノード取得応答を要求元の複製管理部に返す。このノードの選択方法としては、この他に、ノードリストの最後の一つを選ぶ方法や、ノードの負荷が最も軽いノードを一つ選ぶ方法などがある。この資源予約部の動作については、後で詳しく説明する。
また、ステップ105で送信された複製作成要求を受けたノードNの複製管理部は、自ノードに、複製作成要求により指定された複製プロセスを作成する。さらに、複製プロセスが追加されたことを、自身が管理する複製管理テーブルに反映させる。複製プロセスの作成方法は、従来技術と同様である。例えば、Linuxの場合は、新規にプロセスを作成し、さらに、複製作成要求に含まれる実体プロセスのプロセス状態を新規に作成したプロセスに反映させる。
上述したステップS105の処理の後、複製管理部は、自身が管理する複製管理テーブルにおいて、ステップS102で選択したノード(組み)を複製先ノードリストのフィールドから削除するとともに、ステップS104で昇格させた実体プロセスに対応するエントリの、実体が存在するノードの識別子および実体プロセスの識別子の各フィールドにその削除したノード(組み)の情報をコピーする。そして、元の実体プロセス(故障したノードに含まれる実体プロセス)に関する複製管理テーブルのエントリを保有する他の全てのノードに対して複製テーブル変更要求を送信する(ステップS106)。複製テーブル変更要求は、元の実体プロセスが存在するノードの識別子と元の実体プロセスの識別子、新たな実体プロセスが存在するノードの識別子と新たな実体プロセスの識別子、複製プロセスの存在するノードと複製プロセスのプロセス識別子を含む。複製追加情報を受信した別のノードの複製管理部はそれぞれ、自身が管理する複製管理テーブルのエントリの更新を行う。
上述したステップS101の判断で「No」となった場合は、複製管理部は、検索されたプロセスが複製プロセスであると判断し、その複製プロセスに対応するエントリを自身が管理する複製管理テーブルから削除する(ステップS108)。そして、その複製プロセスに関する実体プロセスが自ノードに存在するかどうかを判断する(ステップS109)。この判断で「Yes」となった場合は、上述したステップS105、S106の処理を行う。「No」となった場合(自ノードが実体プロセスの存在するノードでない場合)は、処理を終了する。
次に、ステップS105でノード取得要求を受けた資源予約部における動作について説明する。図5は、ノード取得要求を受けた資源予約部の動作を説明するためのフローチャートである。以下、図5を参照して資源予約部の動作を説明する。
資源予約部は、ノード取得要求を受けると、まず、自身が管理する予約管理テーブルを検索し、そのノード取得要求で指定された実体プロセスに対応するエントリの予約先ノードリスト(予約が存在するノードの識別子のリスト)から一つのノードを選択し、その選択したノードをノード取得応答として要求元の複製管理部に返す(ステップS201)。そして、選択したエントリの予約先ノードリストに含まれるノードと指定された実体の存在するノードを除いた、残りのノードからノードを一つ選択し、その選択したノードに、指定された実体プロセスに関する資源予約要求を送信する(ステップS202)。この資源予約要求には、送信元ノードの識別子、実体プロセスの識別子、予約したい資源のリストが含まれる。この場合は、予約したい資源のリストとして予約管理テーブルに記録されている、「資源タイプと資源識別子のリスト」が含まれる。
資源予約要求を送信した先のノードから資源予約応答を受け取ると(ステップS203)、資源予約部は、その資源予約応答の結果が成功であるか否かを確認する(ステップS204)。この確認で「No」となった場合は、ステップS202に戻って別のノードに対する処理を行う。「Yes」となった場合は、資源予約応答を返したノードを自身が管理する予約管理テーブルの対応するエントリの予約先ノードリストの最後に追加する(ステップS205)。このノードの追加位置は、ノードリストの最初や途中であってもよい。資源予約応答には、送信元ノードの識別子、資源予約要求に含まれていた実体プロセスの識別子、資源予約の結果(成功か失敗か)が含まれる。
最後に、資源予約部は、自身が管理する予約管理テーブルの予約先ノードリストからステップS201で選択したノードを削除し、ノード取得要求で指定された実体プロセスに対応するエントリの最新の情報を全てのノードに送信する(ステップS206)。最新の情報を受信した各ノードの資源予約部は、その情報に基づいて自身が管理する予約管理テーブルを更新する。
次に、ステップS202で資源予約要求を受けた他のノードの資源予約部の動作について説明する。図6は、資源予約要求を受けた他ノードの資源予約部の資源予約応答動作を説明するためのフローチャートである。以下、図6を参照して資源予約部の動作を説明する。
資源予約要求を受けた資源予約部は、自身が管理する予約管理テーブルを検索して、要求された資源が利用されているかどうかを調べ(ステップS301)、要求された資源のすべてが予約可能であるか否かを確認する(ステップS302)。この確認で「Yes」となった場合は、自ノードに資源を予約して、成功の資源予約応答を要求元の資源予約部に返す(ステップS303)。「No」となった場合(要求された資源の一つでも予約不可能な場合)は、資源の予約は行わずに、失敗の資源予約応答を要求元の資源予約部に返す(ステップS304)。
(2)ユーザプログラムの故障発生時の動作:
次に、ユーザプログラムの故障が発生した場合の動作について説明する。ここでは、あるユーザプログラムの実体プロセスあるいは複製プロセス(このプロセスをPと表す)が故障したと仮定して動作を説明する。
プロセスPの故障が発生した場合は、故障検出部113によりそのプロセスPの故障情報が各ノードの複製管理部に通知される。プロセス故障情報には、故障したプロセスに対応するユーザプログラムの識別子とそのプロセスが実行されていたノードの識別子とプロセスの識別子が含まれる。プロセス故障情報を受け取った複製管理部は、自身が管理する複製管理テーブルにプロセスPに対応するエントリがあるかどうかを調べる。エントリがなければ、なにもせずに処理を終了する。エントリがあった場合は、前述した図4のステップS101〜S106の手順で処理が行われる。以下に、各処理を簡単に説明する。
複製管理部は、プロセスPが実体プロセスであったか、複製プロセスであったかを判断する。プロセスPが実体プロセスであった場合は、プロセスPに対応する第2の複製管理テーブルのエントリを参照し、複製先ノードリストの先頭のノード(組み)を取得する。次に、選択したノード(組み)が自ノードに関するものか否かを判断する。この判断で「No」となった場合は、処理を終了する。「Yes」となった場合は、自ノードの該当する複製プロセスを実体プロセスへと昇格させる。続いて、昇格させた実体プロセスの複製を作成するために、自ノード内の資源予約部に問い合わせて予約済みノードの一つ(ここでは、「ノードN」とする)を取得する。続いて、ノードNに対して昇格した実体プロセスに関する複製作成要求を送信し、ノードNから複製作成応答を受信する。そして、自身が管理する複製管理テーブルの、昇格した実体プロセスに対応するエントリの複製先ノードリストの最後に、ノードNに関する情報(組み)を追加する。
さらに、複製管理部は、自身が管理する複製管理テーブルにおいて、先の処理で選択したノード(組み)を、先の処理で昇格させた実体プロセスに対応するエントリの複製先ノードリストのフィールドから削除するとともに、同エントリの実体が存在するノードの識別子および実体プロセスの識別子の各フィールドにその削除したノード(組み)の情報をコピーする。そして、元の実体プロセス(ユーザプログラムP)に関する複製管理テーブルのエントリを保有する他の全てのノードに対して複製テーブル変更要求を送信する。
一方、プロセスPが複製プロセスであった場合には、複製管理部は、その複製プロセスに対応するエントリを特定し、そのエントリの、複製先ノードリストから、プロセスPに対応するノード(組み)を削除する。次に、複製管理部は、プロセスPに対応する実体プロセスが自ノードに含まれるかどうか判断する。この判断で「No」となった場合は、処理を終了する。「Yes」となった場合は、自ノード内の資源予約部に問い合わせて予約済みノードの一つ(ここでは、「ノードN」とする)を取得する。続いて、ノードNに対して該実体プロセスに関する複製作成要求を送信し、ノードNから複製作成応答を受信する。そして、自身が管理する複製管理テーブルの、該実体プロセスに対応するエントリの複製先ノードリストの最後に、ノードNに関する情報(組み)を追加する。
複製管理部から予約済みノードの問合せを受けた時の資源予約部の動作は「(1)ノード故障発生時の動作」と同様である。
(3)複製管理部による定期的な更新動作:
次に、複製管理部111−1〜111−4において行われる複製プロセスの定期的な更新動作について説明する。
複製管理部は、定期的に複製プロセスの更新を行う。この複製管理部における定期的な更新処理の実行は、例えば、Linuxの場合であれば、インターバルタイマ(setitimerで指定する)を使用することで実現できる。
定期的な更新処理が起動された複製管理部は、自身の複製管理テーブル118を検索して、自ノードに実体プロセスが存在するかを調べる。そして、自ノードに実体プロセスが存在する場合、その実体プロセスの複製プロセスを保有する他のノードに対して複製更新要求を送信する。複製更新要求には、実体プロセスが存在するノードの識別子、実体プロセスのプロセス識別子、複製作成先のノードの識別子、実体プロセスのすべてのプロセス状態が含まれる。このプロセス状態として、実体プロセスと複製プロセスの差分だけを送るようにしてもよい。
複製更新要求を受け取った別のノードの複製管理部は、自身が管理する複製管理テーブル内の、複製更新要求により指定される実体プロセスに対応する複製プロセスに対して、送られてきたプロセス状態を上書きする。プロセス状態として差分だけが送られてくる場合には、必要な部分だけを上書きする。
(4)ユーザプログラム(実体プロセス)による資源取得時の動作:
次に、ユーザプログラムが動作中に資源取得要求を行った場合の、資源予約部の動作について説明する。
ユーザプログラムは起動されると、その実体プロセスによって資源が取得されると同時に資源取得要求が発行される。資源予約部は、通常、実体プロセスから発行される資源取得要求を監視しており、予約が必要な資源の取得要求が発行されたことを検出すると、以下のような処理を実行する。ここで、資源取得要求とは、プロセスを生成する、ファイルをオーブンする、セマフォを作成する、などの処理が含まれる。例えば、Linuxの場合、fork、open、semgetなどがこれに当たる。
図7は、ユーザプログラムからの資源取得要求を検出した資源予約部の動作を説明するためのフローチャートである。以下、図7を参照して資源予約部の動作を説明する。
資源予約部は、実体プロセスから発行される資源取得要求を検出すると、その実体プロセスの識別子に基づいて、自身が管理する予約管理テーブルを検索して対応するエントリを見つけ、このエントリの予約先ノードリストのフィールドに含まれる全てのノードに対して、資源取得要求を発行した実体プロセスが取得した資源の資源予約要求を送信する(ステップS401)。資源予約要求は、「(1)ノード故障発生時の動作」のものと同様であるが、予約したい資源のリストとして資源取得要求により取得される資源の資源タイプと資源識別子のリストが含まれる。
資源予約要求を受け取った他の資源予約部は、ローカルな資源(資源予約部が存在するのと同じノード(同一ノード)内に含まれる、通信チャネルやファイルなどの資源)の予約処理を行うとともに、その予約の成否に応じて、成功または失敗の資源予約応答を要求元の資源予約部に返す。ここで、資源を予約する、あるいは、予約を取り消す方法としては、OSの提供する資源取得・解放機能を利用して、ローカルな資源を取得・解放する方法がある。また、資源予約の機能を持ったOS(CMUのresource kernelなど)であれば、効率的にリソースIDなどの予約・予約取消だけを行うこともできる。
次に、要求元の資源予約部は、他の資源予約部から資源予約応答を順次受信する(ステップS402)。そして、受信した資源予約応答について以下のステップS403〜ステップS406の処理を繰り返す。資源予約応答には、送信元ノードの識別子、資源予約要求に含まれていた実体プロセスの識別子、資源予約の結果(成功か失敗か)が含まれる。
まず、ステップS403で、受け取った資源予約応答の結果が成功であるか否かが確認される。この確認で「Yes」となった場合は、なにも処理せずに、ステップS406ですべての処理が終了したかどうかが判断される。この判断で「No」となった場合はステップS402に戻り、「Yes」となった場合は処理を終了する。
ステップS403の確認で、「No」となった場合(資源予約応答の結果が失敗の場合)は、ステップS404で、送信元のノードに対して、同一実体プロセスに関するエントリに含まれるすべての資源の予約を取り消すために資源予約取消要求を出し、さらに自身の管理する予約管理テーブルからその資源に関する情報を削除する。このとき、資源予約取消要求を受け取った他方の資源予約部112は、ローカルな資源の予約取消を行い、要求元の資源予約部に資源予約取消応答を返す。資源予約取消要求には、送信元ノードの識別子、実体プロセスの識別子、上記資源解放要求により解放される資源の情報が含まれる。
さらに、ステップS405で、図5に示したステップS202〜S205と同様の処理を行って、新たな予約先ノードを追加する。すなわち、システムの全ノードの一つに対して、実体プロセスに関する資源予約要求を送信する。続いて、資源予約応答を受け取り、結果が成功の場合は、資源予約部は、資源予約応答を返したノードを予約管理テーブルの該当プログラムに対応するエントリの予約先ノードリストの最後に追加する。その後、ステップS406に移行する。
以上のステップS402〜S406の処理が、すべての資源予約応答を処理するまで繰り返し行われる。
(5)ユーザプログラムによる資源解放時の動作:
資源予約部は、通常、ユーザプログラムの実体プロセスから発行される資源解放要求を監視しており、予約が必要な資源の解放要求が発行されたことを検出した場合は、以下の処理を実行する。ここで、資源解放要求とは、プロセスを終了する、ファイルをクローズする、セマフォを削除するなどの処理である。例えば、Linuxの場合、exit、close、semctlなどがこれに当たる。
資源解放要求を検出した資源予約部は、まず、実体プロセスの識別子に基づいて自身が管理する予約管理テーブルを検索し、対応するエントリを見つけ、このエントリの予約先ノードリストのフィールドに含まれる全てのノードに対して、上述した資源取得要求の発行の際に取得された資源の資源予約取消要求を送信する。
資源予約取消要求を受け取った別のノードの資源予約部は、その予約を取り消して要求元の資源予約部に資源予約取消応答を返す。
要求元の資源予約部は、すべての資源予約取消応答を受け取り終えたら、自身が管理する予約管理テーブルから、解放した資源に関する情報を削除する。
(6)ユーザプログラムの開始終了時の動作:
次に、ユーザプログラムの開始時、終了時の複製管理部および予約管理部の動作について説明する。
(6a)ユーザプログラムの開始時の動作:
複製管理部は、自ノード内でのユーザプログラムの開始と終了を監視している。ユーザプログラムの開始を検出すると、複製管理部は、まず、自身が管理する複製管理テーブルに、その開始したプログラムの実体プロセスに対応する新たなエントリを作成する。続いて、システム全体から1つのノードを選択して、複製プロセスを作成するための複製作成要求をその選択したノードの複製管理部に送る。このノードの選択と複製作成要求の処理は、複製の数が複製度に達するまで繰り返される。複製作成要求を受け取った別ノードの複製管理部の動作は、前述した「(1)ノード故障発生時の動作」における、ノード故障が発生した場合の別ノードの複製管理部の動作と同様である。
また、複製管理部は、資源予約部に対して、開始したプログラムの実体プロセスに関する資源予約の開始を要求する。資源予約開始要求には、実体プロセスのプロセスIDが含まれる。
資源予約開始要求を受けた資源予約部は、次のような処理を行う。自身が管理する予約管理テーブルに、資源予約開始要求により指定された実体プロセスに関するエントリを追加する。続いて、システム全体から1つのノードを選択して、資源予約要求を送信する。そして、資源予約応答の成否に応じて、予約管理テーブルを更新する。この予約要求の処理は、規定の予約数に達するまで繰り返される。
(6b)ユーザプログラムの終了時の動作:
ユーザプログラムの実体プロセスの終了を検出すると、複製管理部は、まず、自身が管理する複製管理テーブルを検索して、その終了した実体プロセスに対応するエントリを見つける。続いて、そのエントリに含まれる複製ノードリストに含まれる全てのノードに対して、複製削除要求を送る。複製削除要求には、実体プロセスが存在するノードの識別子と実体プロセスのプロセス識別子が含まれる。さらに、複製管理部は、資源予約部に対して資源予約終了要求を送る。資源予約終了要求には、実体プロセスのプロセス識別子が含まれる。
複製削除要求を受け取った別ノードの複製管理部は、自身が管理する複製管理テーブルを検索し、複製削除要求に対応するエントリを見つけ出す。続いて、エントリに含まれる情報を参照して、複製プロセスを終了させる。最後に、そのエントリを自身が管理する複製管理テーブルから削除する。
資源予約終了要求を受けた資源予約部は、まず、自身の予約管理テーブルを検索して、資源予約終了要求に対応するエントリを見つけ出す。そのエントリを参照して、すべての予約済みノードに対して資源予約取消要求を送信する。そして、自身の予約管理テーブルからこのエントリを削除する。
以上説明した本実施形態の複製管理システムによれば、ノード故障やユーザプログラムの故障により、実体プロセスあるいは複製プロセスが失われて、複製の数を一定に保つために新規に複製プロセスを作成しようとした場合に、予め資源予約をしてあるノードに複製を作成するようになっているので、すでに存在するプロセスとの間で資源競合が起きることがない。よって、複製プロセスの作成を、失敗することなく、確実に行うことができる。
[実施例]
次に、本実施形態の複製管理システムの動作を、具体的な例を挙げて説明する。ここでは、複製管理テーブル118と予約管理テーブル119の更新を中心に説明する。
図8は、図1に示した管理システムの各ノード100−1〜100−4の、ノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ示す。この例では、ノード100-1に"Node01"、ノード100-2に"Node02"、ノード100-3に"Node03",ノード100-4に"Node04"というホスト名が与えられている。
図9は、ノード100-1の複製管理部111−1が保有する複製管理テーブル118−1のノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ示す。図10は、ノード100-4の複製管理部111−4が保有する複製管理テーブル118−4のノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ示す。図11は、各ノードの資源予約部が保有する予約管理テーブルのノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ示す。
以下、図8〜11を参照して、ノード故障が発生した場合の動作について説明する。
ノード故障発生前は、図8(a)に示すように、ノード100−1にはプログラムAの複製プロセスが存在する。また、ノード100−2にはプログラムAの実体とプログラムBの複製プロセスとプログラムCの複製プロセスが、ノード100−3にはプログラムBの実体プロセスが、ノード100−4にはプログラムCの実体プロセスがそれぞれ存在する。
今、ノード故障がノード100−2で発生したとする。ノード100−2には、IPMI対応のハードウェアが搭載されており、故障通知が、IPMIのアラートメッセージとして故障検出部113が存在するノード100−1に通知される。IPMIのアラートメッセージを受信した故障検出部113は、全ノードの複製管理部111−1〜111−4に対してTCP/IPのソケット通信でノード故障情報を送信する。
まず、故障通知メッセージを受け取ったノード100−1の複製管理部111−1の動作について説明する。この動作は、図4に示した手順で行われる。
複製管理部111−1は、複製管理テーブル118−4を検索する。ノード故障情報を受け取った時点では、複製管理部111−1は図8(a)の状態にある。このときの複製管理テーブル118−1には、図9(a)に示すように、ユーザプログラムAのエントリの欄の、ユーザプログラム識別子のフィールドには「”A”」が、実体が存在するノードの識別子のフィールドには「”Node02”」が、実体プロセスの識別子のフィールドには「134」が、複製先ノードの識別子と複製プロセスの識別子の組みリストのフィールドには「[”Node02”,211]」がそれぞれ格納されている。複製管理部111−1は、この複製管理テーブル118−1を調べて、ノード100−2に存在した実体プロセスとして、プログラムAのプロセス識別子「134」を得る(図4のS101の「Yes」)。
次に、複製管理部111−1は、プログラムAのプロセス識別子134に対応する複製先ノードリストに含まれるノードの先頭の一つ「[“Node01”,211]」を選択する(図4のステップS102)。この時点で、ノード100−1のプロセス識別子211を持つプロセスが実体プロセスになるので(図4のステップS103の「Yes」)、複製管理部118−1は同プロセスにシグナルを送り、実体プロセスへと昇格させる(図4のステップS104)。
次に、複製管理部111−1は、資源予約部112−1にノード取得要求を行う。このノード取得要求には、「[“Node02”,134、“Node01”,211]」という情報が含まれる。この時点では、資源予約部112−1が保有する予約管理テーブルには、図11(a)に示すように、実体が存在するノードの識別子のフィールドに「”Node02”」が含まれており、その予約が存在するノードの識別子のリストのフィールドには「”Node04”」が格納されている。したがって、予約管理部112−1からは、ノード取得応答「[“Node04”]」が返される。この資源予約部112−1の動作を後で詳細に説明する。
次に、複製管理部111−1は、受け取ったノード取得応答[“Node04”]に基づき、“Node04”すなわちノード100−4に対して複製作成要求を送信する。この複製作成要求には、「[“/a/bin/A”,“Node01”,211,(プロセス状態データ)]」という情報が含まれる。複製管理部111−4からは、「[“Node04”,211,782]」という情報を含む複製作成応答が返される。この複製管理部111−4の複製作成応答動作は、後で詳細に説明する。複製管理部111−4から複製作成応答を受け取った複製管理部111−1は、複製管理テーブル118−1のプログラムAに対応するエントリの欄の複製先ノードリストの最後に「[“Node04”,782]」という情報を追加する(図4のステップS105)。
次に、複製管理部111−1は、複製先ノードリストから選択した複製プロセスの情報[“Node01”,211]を、複製管理テーブル118−1の複製先ノードリストから削除するとともに、プログラムAのエントリの欄の、実体プロセスの存在するノードのフィールドと実体プロセスのプロセス識別子のフィールドへコピーする。この結果、複製管理テーブル118−1のプログラムAに対応するエントリの欄には、ユーザプログラム識別子のフィールドに「”A”」が、実体が存在するノードの識別子のフィールドに「”Node01”」が、実体プロセスの識別子のフィールドに「211」が、複製先ノードの識別子と複製プロセスの識別子の組みリストのフィールドに「[”Node02”,211]」がそれぞれ格納されることとなる。
最後に、複製管理部111−1は、複製更新要求をノード100-4に送信する(図4のステップ106)。
次に、ノード100-1から複製作成要求を受け取った複製管理部111−4の動作について説明する。
複製管理部111−4は、ノード100-1の複製管理部111−1から複製作成要求(「[“/a/bin/A”,“Node01”,211,(プロセス状態データ)]」という情報が含まれる)を受け取ると、複製プロセス(プロセス識別子=724)を作成し、自身が管理する複製管理テーブル118−4にプログラムAに対応するエントリを追加する。この結果、複製管理テーブル118−4は、図10(a)に示すような、プログラムCに対応するエントリのみを有する状態から、図10(b)に示すような、プログラムC、Aに対応するエントリを有する状態になる。このプログラムAに対応するエントリの欄の、ユーザプログラム識別子のフィールドには「”A”」が、実体が存在するノードの識別子のフィールドには「”Node01”」が、実体プロセスの識別子のフィールドには「211」が、複製先ノードの識別子と複製プロセスの識別子の組みリストのフィールドには「[”Node04”,782]」がそれぞれ格納されている。
上述した複製作成要求は、ノード100-1からノード100-4へ送信されるだけでなく、ノード100−3、100-4からノード100-1へも送信されている。この結果、ノード100-1の複製管理部111−1においても、上記の複製管理部111−4における処理と同様な処理が行われる。すなわち、複製管理部111−1は、複製プロセスを作成し、その結果を複製管理テーブル118-1に反映させる。最終的に、複製管理テーブル118−1は、図9(b)に示すように、プログラムA、B、Cに対応するエントリを有する状態になる。
次に、上記のステップS105で複製管理部111−1からノード取得要求「["Node02",134,"Node01",211]」を受けた資源予約部112−1の動作について説明する。この動作は、図5に示した手順で行われる。
資源予約部112−1は、複製管理部111−1からのノード取得要求を受け取ると、まず、自身が管理している予約管理テーブル119を検索して、実体プロセス「“Node02”,134」に対応するエントリから一つのノードを選択する。この時点では、予約管理テーブル119には、図11(a)に示すように、実体プロセス「“Node02”,134」に対応するエントリの予約先ノードリストには「“Node04”」が存在する。よって、資源予約部112−1は、「“Node04”」、すなわちノード100−4を選択して複製管理部111−1に返す(図5のステップS201)。
次に、資源予約部112−1は、実体プロセス「“Node02”,134」に対応するエントリの予約先ノードリストに含まれるノード「“Node04”」と実体の存在するノード「“Node02”」を除いた、残りのノード(ここでは、ノード100−2、100−3)から1つのノードを選択する。ここでは、ノード100−2は故障しているので、資源予約部112−1は、ノード100−3を選択し、そのノード100−3に対して実体プロセス「“Node02”,134」に関する資源予約要求を送信する(図5のステップS202)。資源予約要求には、「“Node02”,134,[PORT,80],[NULL],“Node01”,211」という情報が含まれる。
ノード100−3ではポート80が使われていないので、資源予約部112−3は、成功の資源予約応答を要求元の結果として資源予約部112−1に返す。資源予約部112−1は、成功の資源予約応答を受け取ると(図5のステップS203およびステップS204のY)。資源予約部112−1は、資源予約応答を返したノード100−3の識別子“Node03”を自身が管理する予約管理テーブルの対応するエントリの予約先ノードリストの最後に追加する(図5のステップS205)。
最後に、資源予約部112−1は、実体プロセスが存在するノードの識別子と実体プロセスのプロセス識別子のそれぞれのフィールドを「“Node01”,211」に書き換え、予約先ノードリストからノード100−4を削除する。そして、このエントリの最新状態をすべてのノードに送信する(図5のステップS206)。
ノード100-3、ノード100−4においても、上述の処理と同様な処理が行われる。この結果、各資源予約部が管理する予約管理テーブルの状態は、図11(a)に示す「“Node02”,134」に対応するエントリの部分が、図11(b)に示すような、「“Node01”,211」に対応するエントリに変更される。この変更後のエントリの予約先ノードリストのフィールドには「“Node01”」が格納されている。
以上の処理が行われた結果、各ノード100−1〜100−4の状態は、図8(b)に示すような状態となる。具体的には、ノード100−1にはプログラムAの実体プロセスとプログラムB、Cの各複製プロセスが存在する。ノード100−2は故障とされる。ノード100−3には、プログラムBの実体プロセスが存在する。ノード100−4にはプログラムCの実体プロセスおよびプログラムAの複製プロセスが存在する。
(実施形態2)
上述した第1の実施形態のシステムでは、同一ノード内に資源が競合する予約を行うことはできない。資源予約部の動作を一部変更することで、同一ノード内で競合しうる資源の予約が可能になる。ここでは、そのような資源予約が可能な構成について説明する。
第2の実施形態のシステムの構成は、図1に示したシステム構成と同じであるが、資源予約部の動作が一部異なる。他の動作については基本的には同じであるので、ここでは、動作の異なるところを中心に説明する。
図4に示したステップS105で複製管理部からノード取得要求を受けた資源予約部は、以下のような動作を実行する。この動作は、図5に示した処理のステップS205の後に新たなステップを含む。
まず、自身が管理する予約管理テーブルを検索して、ノード取得要求により指定された実体プロセスに対応するエントリの予約先ノードの識別子のリストから一つのノードを選択し、それを複製管理部に返す(図5のステップS201)。続いて、予約先ノードの識別子のリストに含まれるノードと実体の存在するノードを除いた、残りのノードからノードを一つを選択し、その選択したノードに、ノード取得要求により指定された実体プロセスに関する資源予約要求を送信する(図5のステップS202)。資源予約要求には、送信元ノードの識別子、実体プロセスの識別子、予約管理テーブルに記録されている予約済み資源のリストが含まれる。
資源予約要求を送信した先のノードから資源予約応答を受け取ると(図5のステップS203)、その結果が成功であるかどうかが確認される(図5のステップS204)。資源予約応答の結果が成功の場合は、資源予約応答を返したノードを自身が管理する予約管理テーブルの該当プログラムに対応するエントリの予約先ノードリストの最後に追加する(図5のステップS205)。このノードの追加位置は、ノードリストの最初や途中にすることも可能である。資源予約応答の結果が失敗の場合は、ステップS202からの処理を繰り返す。資源予約応答には、送信元ノードの識別子、資源予約要求に含まれていた実体プロセスの識別子、資源予約の結果(成功か失敗か)が含まれる。
次に、自身が管理する予約管理テーブルを検索し、ステップS201でノードが選択されたエントリの、資源タイプと資源識別子の組みのリストに含まれる資源を一つでも含むエントリが他にあれば、そのエントリの予約先ノードリストから自ノードを削除する。さらに、その予約先ノードリストから自ノードを削除したエントリに関して新たな予約先ノードを探すためにステップS202〜S205と同様な手順で資源予約処理を行う(新たなステップ)。資源予約要求には、送信元ノードの識別子、実体プロセスの識別子、予約したい資源のリストが含まれる。実体プロセスの識別子には、予約先ノードから自ノードを削除したエントリの実体プロセスの識別子が、予約したい資源のリストには、予約先ノードから自ノードを削除したエントリに格納されている資源タイプと資源識別子の組みのリストがそれぞれ指定される。
最後に、自身が管理している予約管理テーブルの予約先ノードリストからステップS201で選択したノードを削除し、変更されたエントリの最新の情報を全てのノードに送信する(図5のステップS206)。
また、資源予約要求を受け取った他の資源予約部は、以下のような動作を実行する。
まず、自身が管理する予約管理テーブルを参照し、ローカルな資源がすでに予約されていないか調べる。予約がされていない場合は、資源の予約を行う。予約が成功したら、成功の資源予約応答を要求元の資源管理部に返す。予約に失敗した場合は、失敗の資源予約応答を要求元の資源管理部に返す。すでに資源が予約されている場合には、何もしないで、成功の資源予約応答を要求元の資源管理部に返す。
以上の動作によれば、同一ノードに対して、他の複数のノードが同一資源を予約することが可能となる。前述した第1の実施形態の場合は、そのような競合資源の予約ができないため、予約が失敗することがあり、予約処理に時間を要する可能性があった。これに対して、本実施形態では、競合資源の予約を可能としたことで、予約の失敗を減らせ、予約処理時間が短縮される。
(実施形態3)
上述した第1および第2の実施形態では、同一ノード内に資源が競合する二つの複製プロセスを作成することはできないため、例えば、システムの複数のノード上でWebサーバを動かす場合には、それぞれの複製プロセスをWebサーバが動作する以外の別のノードでWebサーバの複製プロセスが含まれないノードに作成する必要があった。このため、少なくとも、Webサーバを動かすノードと同じ数のノードがWebサーバの複製プロセスを置くために必要であった。第3の実施形態の複製管理システムは、そのような複製プロセスのそれぞれ異なるノードへの作成を行う必要のない構成になっている。具体的には、図1に示した構成において、各ノードの複製管理部に代えて、同一ノード内での複製プロセス同士の資源競合を可能とする第2の複製管理部を具備する。これ以外の部分は、図1に示した構成と同じである。ここでは、説明を簡略化するために、第1の実施形態と異なる部分についてのみ説明する。
第2の複製管理部は、図1に示した複製管理部と同様な機能を持つ。ただし、新たな複製プロセスを作成する、または、複製プロセスの状態を更新する際に、すでに自ノード上の別の複製プロセスが必要な資源を保持していて資源の競合が生じる場合には、複製プロセスに資源を上書きする代わりに、第2の複製管理テーブルに情報を記録する。
第2の複製管理テーブルは、図2に示した複製管理テーブルの項目に加えて、自ノード上に存在する複数の複製プロセスによって保有される資源のうち、競合し得る資源(資源予約部が管理対象とする資源と同様)のリスト(競合リスト)の項目を含む。競合リストは、資源の種類、資源の識別子、資源を保持する複製プロセスのプロセス識別子を含む。この第2の複製管理テーブルは、第2の複製管理部が確保するメモリ中に配置されてもよく、また、ディスク装置や他の補助記憶装置に配置されてもよい。
図12に、第2の複製管理テーブルの一例を示す。この図12に示す第2の複製管理テーブル158は、「Node01」に置かれたもの想定している。「複製先ノードの識別子と複製プロセスの識別子の組みのリスト」のフィールドは、「Node01」には複製プロセスとしてプロセス識別子が「137」と「257」のプロセスが存在することを示している。また、「競合し得る資源と保持するプロセスの組みのリスト」のフィールドは、複製プロセスのうち、プロセス識別子が「137」のプロセスが、ポート番号「80」とセマフォID「364」という資源を利用しており、プロセス識別子が「257」のプロセスがポート番号「80」とポート番号「8080」という資源を利用していることを示している。さらに、資源を保持する識別子を参照することで、ポート番号「80」で表される資源については、保持しているのはプロセス識別子が「137」のプロセスであり、プロセス識別子が「257」のプロセスは参照しているだけであることがわかる。
次に、本実施形態の複製管理システムの動作について説明する。前述した第1の実施形態との相違は、第2の複製管理部が、別のノードの第2の複製管理部から複製作製要求および複製更新要求を受けた時と複製プロセスを実体プロセスに昇格させる時の動作にあるため、以下では、その動作を中心に説明する。
まず、第2の複製管理部が別のノードの第2の複製管理部から複製作成要求を受けたときの動作について説明する。
図4のステップS105で送信された複製作製要求を受けた第2の複製管理部は、自ノードに複製プロセスを作成する。さらに、自身が管理する第2の管理テーブル158に複製プロセスが追加されたことを反映させる。この際、複製作製要求にプロセス状態として含まれている資源のうち競合し得る資源に関して、「競合し得る資源と保持するプロセスの組みのリスト」のフィールドに登録する。さらに、第2に複製管理テーブル158を検索して、その登録した資源を他の複製プロセスがすでに保有していないかどうか調べる。登録した資源を他の複製プロセスがすでに保有していた場合は、「競合し得る資源と保持するプロセスの組みのリスト」のフィールドに登録された内容のうち、競合した資源のプロセス識別子の部分をその資源を保有するプロセスの識別子で置き換える。登録した資源を他の複製プロセスが保有していない場合は、自ノード内の該当する複製プロセスにその資源を上書きする。
次に、定期的な複製プロセスの更新処理における複製更新要求を受け取った場合の第2の複製管理部の動作について説明する。
別のノードからの複製更新要求を受けた第2の複製管理部は、自身が管理する第2の複製管理テーブル158を参照して、指定された実体プロセスに対応する複製プロセスを見つけ、その複製プロセスに対して、送られて来たプロセス状態を上書きする。この際、複製更新要求にプロセス状態として含まれている資源のうち競合し得るものに関して、「複製管理テーブル158を検索して、その登録した資源を他競合し得る資源と保持するプロセスの組みのリスト」のフィールドに登録する。さらに、第2の複製プロセスがすでに保有していないかどうか調べる。登録した資源を他の複製プロセスがすでに保有していた場合は、「競合し得る資源と保持するプロセスの組みのリスト」のフィールドに登録された内容のうち、競合した資源のプロセス識別子の部分をその資源を保有するプロセスの識別子で置き換える。登録した資源を他の複製プロセスが保有していない場合は、自ノード内の該当する複製プロセスにその資源を上書きする。
次に、複製プロセスを実体プロセスに昇格させる場合の第2の複製管理部の動作について説明する。
ノード故障発生時のおよびプロセス故障発生時に、複製プロセスを実体プロセスに昇格させる場合の第2の複製管理部の動作は、複製管理部(111−1〜111−4)と比べて、複製プロセスを実体プロセスに昇格させた後の動作が異なる。以下では、異なる部分を中心に説明する。
第2の複製管理部は、図4のステップS101〜S103と同様の処理を行う。図4のステップ103の判断で「No」となった場合は、処理を終了する。「Yes」となった場合は、自ノードの該当する複製プロセスを実体プロセスへと昇格させる(ステップS104)。この昇格したプロセスをPpとする。
ここでプロセスPpに関して、第2の複製管理テーブル158の該当するエントリから「競合し得る資源と保持するプロセスの組のリスト」を取得する。この「競合し得る資源と保持するプロセスの組のリスト」に含まれる資源のうち、プロセスPpが保持していない資源に関しては、それを保持しているプロセスから資源を移動させる。該資源を保持している複製プロセスは競合し得る資源と保持するプロセスの組のリスト」に「資源を保持するプロセス」として記録されている。ここで「資源を移動させる」とは、プロセス状態の一部をあるプロセスから別のプロセスに移すことである。実現方法としては、プロセスの複製を作成するときと同様の方法、すなわち、あるプロセスのプロセス情報を取得して、他のプロセスにそのプロセス状態を上書きする方法が使える。
さらに、この「競合し得る資源と保持するプロセスの組のリスト」に含まれる資源に関して、それらの資源を共有する他の複製プロセスがないかを第2の複製管理テーブル158から検索する。資源を共有する他のプロセスが存在する場合、それらの複製プロセスをすべて終了させる。複製プロセスの終了は、故障検出部により検出されるため、終了させられた複製プロセスの代わりとなる複製プロセスは、「実施形態1」の「(2)ユーザプログラムの故障発生時の動作」に従って、他のノードに作成されることになる。
以上の実施形態の複製管理システムによれば、同一ノード内に資源が競合する二つの複製プロセスを作成することが可能になる。これにより、システムに同種のサーバ、例えば、ポート番号80を利用するWebサーバを動かす場合でも、1つのノードにこれらすべてのサーバの複製プロセスを置くことが可能になる。
(実施形態4)
第1の実施形態では、複製プロセスが作成されたノードでは、そのメモリ内に、実体プロセスと同じだけのプロセスに関するメモリ領域が設定されるため、複数の複製プロセスを作成するためには、ノードのメモリ容量を大きくする必要がある。ここでは、そのようなメモリの大容量化を避ける構成について説明する。
図13は、本発明の第4の実施形態である複製管理システムの一構成例を示すブロック図である。この複製管理システムは、図1に示したシステムにおいて、各ノードの複製管理部111−1〜111−4に代えて複製管理部121−1〜121−4を具備するとともに、実体プロセスに関するメモリ領域の一部を格納するための外部記憶装置300を新たに設けたものである。これ以外の構成は、図1のものと同じである。
複製管理部(121−1〜121−4)は、第1の実施形態で述べた機能に加えて、自ノードの実体プロセスのメモリ領域の一部を外部記憶装置300に書き出す機能を備える。外部記憶装置300は、例えばディスク装置より構成されるものであって、ユーザプログラムA〜Cの実体プロセスのメモリ領域の一部を書き込むためのメモリ領域130a〜130cを有する。
次に、本実施形態の複製管理システムの動作を説明する。複製管理部(121−1〜121−4)における定期的な動作が、第1の実施形態のものと異なる。以下、動作の異なる点を中心に説明する。
複製管理部は、定期的に複製プロセスの更新を行う。定期的な処理が起動されたとき、複製管理部は、自身が管理する複製管理テーブルを検索して、自ノードに実体プロセスが存在するかを調べる。自ノードに実体プロセスが存在する場合、その実体プロセスに関して、まず、実体プロセスのメモリ領域のアクセス情報を調べて、一定時間アクセスされなかった部分を外部記憶装置130に書き出す。さらに、そのメモリ領域に関する情報を複製管理テーブルに記録する。
次に、複製管理部は、自ノードの実体プロセスに関する複製プロセスを保有するノードに対して、複製更新要求を送信する。この複製更新要求には、第1の実施形態で説明した複製更新要求に加えて上記の一定時間アクセスされなかったメモリ領域に関する情報が含まれる。なお、他にもプロセス状態として、実体プロセスと複製プロセスの差分だけを送る方法もある。
複製更新要求を受け取った別のノードの複製管理部は、自身が管理する複製管理テーブルを参照して、指定された実体プロセスに対応する複製プロセスを見つけ、その複製プロセスに対して、送られてきたプロセス状態を上書きする。プロセス状態として差分だけが送られてくる場合には、必要な部分だけを上書きする。さらに、上述した一定時間アクセスされなかったメモリ領域の情報に基づいて、複製プロセスの対応するメモリ領域を解放するとともに、そのことを複製管理テーブルに反映させる。
上記の動作の他、複製管理部は、複製プロセスを実体プロセスへ昇格させる場合に、自身が管理する複製管理テーブルを参照して、外部記憶装置130に書き出されたメモリ領域を複製プロセスの対応する領域に書き込む。
以上の本実施形態の複製管理システムによれば、複製プロセスが存在することによるメモリ消費を抑えることができる。これにより、メモリの有効利用が可能になる。
(実施形態5)
上述した第1〜4の実施形態のものは、資源予約を行うようになっているが、そのような資源予約なしでも、他のプロセスの干渉なし、複製プロセスを確実に作製することもできる。ここでは、そのような動作を実現する第5の実施形態の複製管理システムを説明する。
本第5の実施形態の複製管理システムは、第3の実施形態のシステムにおいて、各ノードが資源予約部を持たない構成になっており、各ノードの第3の複製管理部は、図4のステップS105を実行しない。また、ユーザプログラムが通常の動作を行っており、資源の取得や解放を行った場合の資源予約・予約取消処理も行われない。ユーザプログラムの開始終了時の資源予約・予約取消処理も行われない。これ以外は、第3の実施形態のものと同じである。
特徴となる動作を簡単に説明すると、第3の複製管理部は、ユーザプログラムのいずれかの実体プロセスによって自ノードの資源が取得されると、その資源を取得した実体プロセスの複製プロセスを他のノードの少なくとも1つに作成する。また、第3の複製管理部は、同一ノード内に、同一資源を保有する、複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成するとともに、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除する。この構成によれば、同一ノード内に複数の異なるユーザプログラムの複製プロセスを作成することができるため、資源の競合によって複製プロセスの作成が失敗することはない。
(実施形態6)
上述した第5の実施形態のシステムにおいても、第4の実施形態で説明した構成(図13参照)を適用することができる。すなわち、第3の複製管理部が、自ノードに存在する実体プロセスのメモリ領域の一部(一定時間アクセスされなかった部分)を、ネットワークに接続された外部記憶装置内に書き出すとともに、他のノード上の、対応する複製プロセスの状態を実体プロセスの状態に更新する際に、書き出されたメモリ領域を除く状態で更新させる。一方、更新がなされた他のノード上の第3の複製管理部は、自ノード内の対応する複製プロセスを実体プロセスに昇格させる場合に、該複製プロセスの対応する領域に、外部記憶装置に格納したメモリ領域の一部を書き込む。この場合も、複製プロセスが存在することによるメモリ消費を抑えることができ、メモリの有効利用が可能になる。
本発明によれば、サービスの停止が経済的、社会的に大きな損害を与える可能性があり、プロセスの複製により高信頼を実現する情報システムにおいて、さらなる高信頼を実現するといった用途に適用できる。また、複数の情報サービスが混在するデータセンタにおいて、予備の計算資源(コンピュータ、メモリなど)を必要最低限に抑えながら、プロセスの複製による高信頼を実現するといった用途にも適用可能である。
本発明の第1の実施形態である複製管理システムの主要部を示すブロック図である。 図1に示す複製管理システムにおいて用いられる複製管理テーブルの一例を示す図である。 図1に示す複製管理システムにおいて用いられる予約管理テーブルの一例を示す図である。 図1に示す複製管理システムにおける、ノード故障情報を受け取った複製管理部の動作を説明するためのフローチャートである。 図1に示す複製管理システムにおける、ノード取得要求を受けた資源予約部の動作を説明するためのフローチャートである。 図1に示す複製管理システムにおける、資源予約要求を受けた他ノードの資源予約部の資源予約応答動作を説明するためのフローチャートである。 図1に示す複製管理システムにおける、ユーザプログラムからの資源取得要求を検出した資源予約部の動作を説明するためのフローチャートである。 図1に示す複製管理システムの各ノードの、ノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ説明するための図である。 図1に示す複製管理システムの複製管理部111−1が保有する複製管理テーブル118−1のノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ説明するための図である。 図1に示す複製管理システムの複製管理部111−4が保有する複製管理テーブル118−4のノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ説明するための図である。 図1に示す複製管理システムの各ノードの資源予約部が保有する予約管理テーブルのノード故障発生に伴う状態の変化を説明するための図で、(a)はノード故障発生前の状態、(b)はノード故障処理後の状態をそれぞれ説明するための図である。 本発明の第2の実施形態である複製管理システムにおいて用いられる第2の複製管理テーブルの一例を示す図である。 本発明の第5の実施形態である複製管理システムの一構成例を示すブロック図である。
符号の説明
100-1〜100-4 ノード
200 ネットワーク
111−1〜111−4、121−1〜121−4 複製管理部
112−1〜112−4 資源予約部
118、158 複製管理テーブル
119 資源管理テーブル
130 外部記憶装置
130a〜130c メモリ領域

Claims (33)

  1. ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のノードを有し、
    前記複数のノードのそれぞれは、
    前記複数のノード上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のノードの少なくとも1つに作成する複製管理部と、
    前記他のノードのうち、前記複製プロセスが作成されたノードを除くノードの少なくとも1つに、前記実体プロセスによって取得された資源を予約する資源予約部と、を有し、
    前記複製管理部が、前記資源予約部により資源の予約がなされたノードに、前記複製プロセスに代わる新たな複製プロセスを作成することを特徴とする複製管理システム。
  2. 各資源予約部は、予約された資源に関する情報を格納した予約管理テーブルを有し、該管理テーブルを参照して、自ノード内の複製管理部に対して、複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされているノードの情報を送信する、請求項1に記載の複製管理システム。
  3. 複製管理部は、自ノード内に保有されている複製プロセスを実体プロセスに昇格させた場合は、昇格前の前記複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされているノードを自ノード内の資源予約部から取得する、請求項2に記載の複製管理システム。
  4. 複数のノードの少なくとも1つは、いずれかのノードに故障が生じると、該故障したノードの識別子を含むノード故障情報を全ノードに通知する故障検出部をさらに有し、
    複製管理部は、ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先ノードの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先ノードからなる複製先リストとを含む情報が格納された複製管理テーブルを有し、該複製管理テーブルと前記故障検出部からのノード故障情報とに基づいて、前記故障したノード内に前記実体プロセスおよび複製プロセスのいずれかのプロセスが保有されているか否かを判断する、請求項3に記載の複製管理システム。
  5. 複製管理部は、故障したノード内に実体プロセスが保有されていると判断した場合は、複製管理テーブルの複製先リストの所定の位置に格納されている複製プロセスが自ノード内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、該昇格させた実体プロセスの複製先となるノードの情報を自ノード内の資源予約部から取得する、請求項4に記載の複製管理システム。
  6. 複製管理部は、故障したノード内に複製プロセスが保有されていると判断した場合は、その複製プロセスを複製管理テーブルの複製先リストから削除するとともに、その複製プロセスの実体プロセスが自ノード内に保有されているか否かを判断し、保有されている場合にのみ、その実体プロセスの複製先となるノードの情報を自ノード内の資源予約部から取得する、請求項4に記載の複製管理システム。
  7. 複数のノードの少なくとも1つは、ユーザプログラムのプロセスに故障が生じると、該故障したプロセスの識別子を含むプログラム故障情報を全ノードに通知する故障検出部をさらに有し、
    複製管理部は、前記ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先ノードの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先ノードからなる複製先リストとを含む情報が格納された複製管理テーブルを有し、前記故障検出部からのプログラム故障情報に基づいて故障した前記プロセスが前記実体プロセスと前記複製プロセスのいずれであるかを判断し、前記実体プロセスと判断した場合は、前記ユーザプログラムに対応するエントリが前記複製管理テーブルに格納されているか否かを調べ、格納されている場合は、該当するエントリの複製先リストの所定の位置に格納されている複製プロセスが自ノード内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、前記複製プロセスと判断した場合は、前記複製管理テーブルから対応する複製プロセスの情報を削除する、請求項3に記載の複製管理システム。
  8. 資源予約部は、他の複数のノードの資源予約部からの同一資源の予約を許可するとともに、該許可した資源が、前記他の複数のノードのいずれかによって自ノード上に作成された複製プロセスによって使用されると、前記許可した資源を共有する残りのノードの予約を取り消す、請求項1から7のいずれか1項に記載の複製管理システム。
  9. 複製管理部は、同一ノード内に、同一資源を保有する、複数の異なるユーザプログラムの複製プロセスを作成するとともに、該複数の複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除する、請求項1から7のいずれか1項に記載の複製管理システム。
  10. ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のノードを有し、
    前記複数のノードのそれぞれは、
    前記複数のノード上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のノードの少なくとも1つに作成する複製管理部を有し、
    前記複製管理部が、同一ノード内に、同一資源を保有する、前記複数のユーザプログラムの複製プロセスを作成するとともに、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除することを特徴とする複製管理システム。
  11. ネットワークに接続された外部記憶装置をさらに有し、
    複製管理部は、自ノードに存在する実体プロセスのメモリ領域の一部を前記外部記憶装置内に書き出すとともに、他のノード上の、対応する複製プロセスの状態を前記実体プロセスの状態に更新する際に、前記書き出されたメモリ領域を除く状態で更新させ、
    前記更新がなされた他のノード上の複製管理部は、自ノード内の前記対応する複製プロセスを実体プロセスに昇格させる場合は、該複製プロセスの対応する領域に、前記外部記憶装置に格納したメモリ領域の一部を書き込む、請求項1から10のいずれか1項に記載の複製管理システム。
  12. それぞれが1つ以上の資源を備える複数のコンピュータがネットワークを介して接続されたシステムにおいて行われる複製管理方法であって、
    前記複数のコンピュータ上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する第1のステップと、
    前記他のコンピュータのうち、前記複製プロセスが作成されたコンピュータを除くコンピュータの少なくとも1つに、前記実体プロセスによって取得された資源を予約する第2のステップと、
    前記資源の予約がなされたコンピュータに、前記複製プロセスに代わる新たな複製プロセスを作成する第3のステップと、を含む複製管理方法。
  13. 第3のステップは、自コンピュータ内に格納されている、第2のステップで予約された資源に関する情報を格納した予約管理テーブルを参照して、複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされている他のコンピュータの情報を取得するステップを含む、請求項12に記載の複製管理方法。
  14. 第3のステップは、自コンピュータ内に保有されている複製プロセスを実体プロセスに昇格させた場合に、予約管理テーブルを参照して、昇格前の前記複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされている他のコンピュータの情報を取得するステップを含む、請求項13に記載の複製管理方法。
  15. いずれかのコンピュータに故障が生じると、該故障したコンピュータの識別子を含む故障情報を全コンピュータに通知するステップをさらに含み、
    第3のステップは、ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先コンピュータの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先コンピュータからなる複製先リストとを含む情報が格納された複製管理テーブルを参照し、前記故障情報に基づいて、前記故障したコンピュータ内に前記実体プロセスおよび複製プロセスのいずれかのプロセスが保有されているか否かを判断するステップを含む、請求項14に記載の複製管理方法。
  16. 第3のステップは、故障したコンピュータ内に実体プロセスが保有されていると判断した場合は、複製管理テーブルの複製先リストの所定の位置に格納されている複製プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、該昇格させた実体プロセスの複製先となるコンピュータの情報を予約管理テーブルから取得するステップを含む、請求項15に記載の複製管理方法。
  17. 第3のステップは、故障したコンピュータ内に複製プロセスが保有されていると判断した場合は、その複製プロセスを複製管理テーブルの複製先リストから削除するとともに、その複製プロセスの実体プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その実体プロセスの複製先となるコンピュータの情報を予約管理テーブルから取得する、請求項15に記載の複製管理方法。
  18. ユーザプログラムのプロセスに故障が生じると、該故障したプロセスの識別子を含むプログラム故障情報を全コンピュータに通知するステップをさらに含み、
    第3のステップは、前記ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先コンピュータの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先コンピュータからなる複製先リストとを含む情報が格納された複製管理テーブルを有し、前記故障検出部からのプログラム故障情報に基づいて故障した前記プロセスが前記実体プロセスと前記複製プロセスのいずれであるかを判断し、前記実体プロセスと判断した場合は、前記ユーザプログラムに対応するエントリが前記複製管理テーブルに格納されているか否かを調べ、格納されている場合は、該当するエントリの複製先リストの所定の位置に格納されている複製プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、前記複製プロセスと判断した場合は、前記複製管理テーブルから対応する複製プロセスの情報を削除するステップを含む、請求項14に記載の複製管理方法。
  19. 他の複数のコンピュータからの同一資源の予約を許可するとともに、該許可した資源が、前記他の複数のコンピュータのいずれかによって自コンピュータ上に作成された複製プロセスによって使用されると、前記許可した資源を共有する残りのコンピュータの予約を取り消すステップをさらに含む、請求項12から18のいずれか1項に記載の複製管理方法。
  20. 同一コンピュータ内に、同一資源を保有する、複数の異なるユーザプログラムの複製プロセスを作成するとともに、該複数の複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除するステップをさらに含む、請求項12から18のいずれか1項に記載の複製管理方法。
  21. それぞれが1つ以上の資源を備える複数のコンピュータがネットワークを介して接続されたシステムにおいて行われる複製管理方法であって、
    前記複数のコンピュータ上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成するステップと、
    同一コンピュータ内に、同一資源を保有する、前記複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成した場合に、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除するステップと、を含む複製管理方法。
  22. 自コンピュータに存在する実体プロセスのメモリ領域の一部をネットワークに接続された外部記憶装置内に書き出すとともに、他のコンピュータ上の、対応する複製プロセスの状態を前記実体プロセスの状態に更新する際に、前記書き出されたメモリ領域を除く状態で更新させるステップと、
    前記更新がなされた他のコンピュータ内の前記対応する複製プロセスを実体プロセスに昇格させる場合は、該複製プロセスの対応する領域に、前記外部記憶装置に格納したメモリ領域の一部を書き込むステップと、をさらに含む、請求項12から21のいずれか1項に記載の複製管理方法。
  23. ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のコンピュータのそれぞれに、
    前記複数のコンピュータ上で動作するユーザプログラムの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する第1の処理と、
    前記他のコンピュータのうち、前記複製プロセスが作成されたコンピュータを除くコンピュータの少なくとも1つに、前記実体プロセスによって取得された資源を予約する第2の処理と、
    前記資源の予約がなされたコンピュータに、前記複製プロセスに代わる新たな複製プロセスを作成する第3の処理と、を実行させるプログラム。
  24. 第3の処理は、自コンピュータ内に格納されている、第2の処理で予約された資源に関する情報を格納した予約管理テーブルを参照して、複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされている他のコンピュータの情報を取得する処理を含む、請求項23に記載のプログラム。
  25. 第3の処理は、自コンピュータ内に保有されている複製プロセスを実体プロセスに昇格させた場合に、予約管理テーブルを参照して、昇格前の前記複製プロセスに代わる新たな複製プロセスを作成するのに必要な資源の予約がなされている他のコンピュータの情報を取得する処理を含む、請求項24に記載のプログラム。
  26. いずれかのコンピュータに故障が生じると、該故障したコンピュータの識別子を含む故障情報を全コンピュータに通知する処理をさらに含み、
    第3の処理は、ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先コンピュータの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先コンピュータからなる複製先リストとを含む情報が格納された複製管理テーブルを参照し、前記故障情報に基づいて、前記故障したコンピュータ内に前記実体プロセスおよび複製プロセスのいずれかのプロセスが保有されているか否かを判断する処理を含む、請求項25に記載のプログラム。
  27. 第3の処理は、故障したコンピュータ内に実体プロセスが保有されていると判断した場合は、複製管理テーブルの複製先リストの所定の位置に格納されている複製プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、該昇格させた実体プロセスの複製先となるコンピュータの情報を予約管理テーブルから取得する処理を含む、請求項26に記載のプログラム。
  28. 第3の処理は、故障したコンピュータ内に複製プロセスが保有されていると判断した場合は、その複製プロセスを複製管理テーブルの複製先リストから削除するとともに、その複製プロセスの実体プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その実体プロセスの複製先となるコンピュータの情報を予約管理テーブルから取得する、請求項26に記載のプログラム。
  29. ユーザプログラムのプロセスに故障が生じると、該故障したプロセスの識別子を含むプログラム故障情報を全コンピュータに通知する処理をさらに含み、
    第3の処理は、前記ユーザプログラム別に、当該ユーザプログラムの実体プロセスの識別子およびその保有先コンピュータの識別子と、当該ユーザプログラムの複製プロセスの識別子およびその保有先コンピュータからなる複製先リストとを含む情報が格納された複製管理テーブルを有し、前記故障検出部からのプログラム故障情報に基づいて故障した前記プロセスが前記実体プロセスと前記複製プロセスのいずれであるかを判断し、前記実体プロセスと判断した場合は、前記ユーザプログラムに対応するエントリが前記複製管理テーブルに格納されているか否かを調べ、格納されている場合は、該当するエントリの複製先リストの所定の位置に格納されている複製プロセスが自コンピュータ内に保有されているか否かを判断し、保有されている場合にのみ、その複製プロセスを実体プロセスに昇格させ、前記複製プロセスと判断した場合は、前記複製管理テーブルから対応する複製プロセスの情報を削除する処理を含む、請求項25に記載のプログラム。
  30. 他の複数のコンピュータからの同一資源の予約を許可するとともに、該許可した資源が、前記他の複数のコンピュータのいずれかによって自コンピュータ上に作成された複製プロセスによって使用されると、前記許可した資源を共有する残りのコンピュータの予約を取り消す処理をさらに含む、請求項23から29のいずれか1項に記載のプログラム。
  31. 同一コンピュータ内に、同一資源を保有する、複数の異なるユーザプログラムの複製プロセスを作成するとともに、該複数の複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除する処理をさらに含む、請求項23から29のいずれか1項に記載のプログラム。
  32. ネットワークを介して接続された、それぞれが1つ以上の資源を備える複数のコンピュータのそれぞれに、
    前記複数のコンピュータ上で動作する複数のユーザプログラムのいずれかの実体プロセスの開始に応じて、該実体プロセスの複製プロセスを他のコンピュータの少なくとも1つに作成する処理と、
    同一コンピュータ内に、同一資源を保有する、前記複数のユーザプログラムのうちの少なくとも2つの複製プロセスを作成した場合に、該複製プロセスの一つが実体プロセスに昇格すると、他の複製プロセスを削除する処理と、を実行させるプログラム。
  33. 自コンピュータに存在する実体プロセスのメモリ領域の一部をネットワークに接続された外部記憶装置内に書き出すとともに、他のコンピュータ上の、対応する複製プロセスの状態を前記実体プロセスの状態に更新する際に、前記書き出されたメモリ領域を除く状態で更新させる処理と、
    前記更新がなされた他のコンピュータ内の前記対応する複製プロセスを実体プロセスに昇格させる場合は、該複製プロセスの対応する領域に、前記外部記憶装置に格納したメモリ領域の一部を書き込む処理と、をさらに含む、請求項23から32のいずれか1項に記載のプログラム。
JP2003430572A 2003-12-25 2003-12-25 複製管理システム、複製管理方法および複製管理プログラム Expired - Fee Related JP4280919B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003430572A JP4280919B2 (ja) 2003-12-25 2003-12-25 複製管理システム、複製管理方法および複製管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003430572A JP4280919B2 (ja) 2003-12-25 2003-12-25 複製管理システム、複製管理方法および複製管理プログラム

Publications (2)

Publication Number Publication Date
JP2005190162A JP2005190162A (ja) 2005-07-14
JP4280919B2 true JP4280919B2 (ja) 2009-06-17

Family

ID=34788907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003430572A Expired - Fee Related JP4280919B2 (ja) 2003-12-25 2003-12-25 複製管理システム、複製管理方法および複製管理プログラム

Country Status (1)

Country Link
JP (1) JP4280919B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788529B2 (en) 2005-12-08 2010-08-31 International Business Machines Corporation Method for safely interrupting blocked work in a server
JP2010198060A (ja) * 2009-02-23 2010-09-09 Nec Corp サーバシステム及びサーバシステムの制御方法

Also Published As

Publication number Publication date
JP2005190162A (ja) 2005-07-14

Similar Documents

Publication Publication Date Title
JP6628730B2 (ja) ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム
US9607001B2 (en) Automated failover of a metadata node in a distributed file system
EP3803618B1 (en) Distributed transactions in cloud storage with hierarchical namespace
US7107323B2 (en) System and method of file distribution for a computer system in which partial files are arranged according to various allocation rules
JP4796854B2 (ja) 差分リモートコピーにおける中間ボリュームのデータ溢れ対策
US6694413B1 (en) Computer system and snapshot data management method thereof
US9904689B2 (en) Processing a file system operation in a distributed file system
US7636868B2 (en) Data replication in a distributed system
US20060074925A1 (en) Pathname caching and protection of the root directory in a nested multilayer directory structure
CN106062717A (zh) 一种分布式存储复制系统和方法
CN110750507B (zh) 面向dfs的全局命名空间下的持久客户端缓存方法及系统
JPH07319748A (ja) データ処理システム内で複写データ一貫性を維持するためのシステムおよび方法
JP2007286860A (ja) データ転送方法及び情報処理装置
JPH04299748A (ja) ファイルの管理方法及び装置
KR100936238B1 (ko) 파일 입출력과 복제의 균형적 수행을 위한 지연복제 시스템및 방법
JP4201447B2 (ja) 分散処理システム
JP2004334434A (ja) 双方向コピー制御機能を有する記憶装置システム
CN114064414A (zh) 一种高可用的集群状态监控方法及系统
US11449241B2 (en) Customizable lock management for distributed resources
JP5504165B2 (ja) データファイルオブジェクトへのアクセス方法、クライアント装置、プログラム、およびシステム
JP2006293593A (ja) 計算機システム
JP2010231567A (ja) ストレージスイッチ、記憶領域サイズ変更方法
JP4280919B2 (ja) 複製管理システム、複製管理方法および複製管理プログラム
JP2685530B2 (ja) 共用データの管理方法
JP4286857B2 (ja) ノード間共用ファイル制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080723

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090218

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090303

R150 Certificate of patent or registration of utility model

Ref document number: 4280919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140327

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees