説明

フェールオーバにおける引き継ぎ先を自律的に変更する計算機システム及び方法

【課題】NASにおける最適なフェールオーバを実現する。
【解決手段】第1計算機と、第2計算機と、第3計算機と、ネットワークを介して前記複数の計算機に接続される記憶装置と、を備える計算機システムであって、前記第1計算機は、前記複数の計算機に接続されたクライアント計算機から前記記憶装置へのアクセス要求を受信すると、前記要求されたアクセスを実行し、前記アクセス要求に対する応答を前記クライアント計算機に送信し、前記第2計算機は、前記第1計算機に障害が発生したか否かを判定し、前記第2計算機の負荷情報を取得し、前記第3計算機から前記第3計算機の負荷情報を取得し、前記取得した負荷情報が所定の条件を満たす場合、前記第3計算機に変更要求を送信し、前記第3計算機は、前記第2計算機から前記変更要求を受信した場合、前記第1計算機に障害が発生したか否かを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本願明細書で開示される技術は、ストレージ装置の管理方法に関し、特に、いわゆるNASにおけるフェールオーバの管理方法に関する。
【背景技術】
【0002】
ネットワークに接続されたストレージシステムを、そのネットワークに接続された複数のクライアント計算機の共有ディスクとして使用する、ネットワーク接続ストレージ(Network Attached Storage、NAS)が知られている。NASは、ネットワークインターフェース等を含むサーバと、データを格納するディスク装置とによって構成される。NASを構成するサーバは、NASサーバ又はNASノードとも呼ばれる(以下の説明では、単にノードと記載する)。
【0003】
NASを構成するハードウェア又はソフトウェアに障害が発生してもサービスを継続的に提供するため、一般的に、二つのノードがクラスタを構成する。クラスタを構成する一方のノードに障害が発生した場合、もう一方のノードが、障害が発生したノードが提供していたサービスを引き継ぐ。その結果、サービス提供が中断せず、顧客への影響が最小限に抑えられる。このような技術は、フェールオーバと呼ばれる。
【0004】
さらに、三つ以上のノードがクラスタを構成する技術も知られている。この場合、一つの管理サーバが一括してクラスタを管理する。このため、管理サーバに障害が発生すると、クラスタが機能しなくなる。この問題は、Single Point Failureと呼ばれる。Single Point Failureを回避するために、クラスタ内の管理サーバ以外のノードが管理サーバを監視し、管理サーバに障害が発生すると、別のノードが管理サーバとして動作する技術が開示されている(特許文献1参照)。
【特許文献1】特開2006−323526号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記特許文献1によれば、管理サーバに障害が発生すると、各ノードの負荷に基づいて、新たに管理サーバとして動作するノードが選択される。このため、ノードの負荷を均衡させるために最適なノードを新たな管理サーバとして選択することができる。しかし、この場合、管理サーバに障害が発生してから新たな管理サーバが処理を引き継ぐまでの間に、新たな管理サーバの選択を実行し、さらに、管理サーバとして動作するために必要な管理情報を取得する必要がある。一方、新たな管理サーバとなるべきノードをあらかじめ決定しておけば、現在の管理サーバに障害が発生したときに新たな管理サーバが速やかに処理を引き継ぐことができる。しかし、ノードの負荷は刻々変化するものであるため、あらかじめ選択された管理サーバは、新たな管理サーバとして動作を開始する時点では、ノードの負荷を均衡させるために最適なものでない場合がある。
【課題を解決するための手段】
【0006】
本願で開示する代表的な発明は、複数の計算機と、ネットワークを介して前記複数の計算機に接続される記憶装置と、を備える計算機システムであって、前記複数の計算機は、第1計算機、第2計算機及び第3計算機を含み、前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、前記第3計算機は、前記ネットワークに接続される第3インターフェースと、前記第3インターフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、前記第1計算機は、前記複数の計算機に接続されたクライアント計算機から前記記憶装置内の記憶領域へのアクセス要求を受信すると、前記要求されたアクセスを実行し、前記アクセス要求に対する応答を前記クライアント計算機に送信し、前記第2計算機は、前記第1計算機に障害が発生したか否かを判定し、前記第2計算機の負荷情報を取得し、前記第3計算機から前記第3計算機の負荷情報を取得し、前記取得した負荷情報が所定の条件を満たす場合、前記第3計算機に変更要求を送信し、前記第2計算機から前記変更要求を受信した場合、前記第1計算機に障害が発生したか否かを判定することを特徴とする。
【発明の効果】
【0007】
本発明の一実施形態によれば、サービスを提供するノードに障害が発生したときに、そのサービスの提供を引き継ぐ引き継ぎ手ノードがあらかじめ決定されている。このため、障害発生時の速やかな引き継ぎが実現される。さらに、障害が発生する前にノードの負荷が変動した場合、最適なノードが引き継ぎ手ノードとなるように引き継ぎ手ノードが変更される。このため、負荷の均衡による安定した動作が実現される。これらの処理はノードによって自動的に実行されるため、運用管理コストを低減することができる。
【発明を実施するための最良の形態】
【0008】
以下、本発明の実施形態を、図面を参照して説明する。
【0009】
図1は、本発明の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【0010】
本実施形態の計算機システムは、一つ以上のNAS(Network Attached Storage)クライアント160、ノード110A〜110E及びディスク装置120を備える。
【0011】
NASクライアント160及びノード110A〜110Eは、LAN(Local Area Network)180によって接続される。
【0012】
ノード110A〜110E及びディスク装置120は、ストレージネットワーク130によって接続される。
【0013】
ノード110A〜110Eは、ディスク装置120をLAN180に接続するための計算機(いわゆるNASサーバ又はNASノード)である。ノード110A等の構成については、後で詳細に説明する(図2参照)。図1のノード110A〜110Eに表示された「NAS−00」〜「NAS−04」は、それぞれ、ノード110A〜110Eの識別子である。
【0014】
ディスク装置120は、NASクライアント160によって書き込まれたデータを格納する装置である。本実施形態のディスク装置120は、ディスクコントローラ121及び一つ以上のディスクドライブ128を備える。
【0015】
ディスクドライブ128は、データの記憶領域を提供する記憶装置である。ディスクドライブ128は、例えば、ハードディスクドライブ(HDD)であってもよいが、他の種類の装置(例えば、フラッシュメモリ等の半導体記憶装置)であってもよい。ディスク装置120は、複数のディスクドライブ128を備えてもよい。複数のディスクドライブ128は、RAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。NASクライアント160によって書き込まれたデータは、最終的に、ディスクドライブ128が提供する記憶領域に格納される。
【0016】
ディスクコントローラ121は、ディスク装置120を制御する制御装置である。本実施形態のディスクコントローラ121は、相互に接続されたインターフェース(I/F)122、CPU123、I/F124及びメモリ125を備える。
【0017】
I/F122は、ディスクコントローラ121をストレージネットワーク130に接続するインターフェースである。ディスクコントローラ121は、I/F122を介して、ストレージネットワーク130に接続されたノード110A等と通信する。
【0018】
CPU123は、メモリ125に格納されたプログラムを実行するプロセッサである。
【0019】
I/F124は、ディスクコントローラ121をディスクドライブ128に接続するインターフェースである。ディスクコントローラ121は、I/F124を介して、ディスクドライブ128へのデータの書き込み及び読み出しを実行する。
【0020】
メモリ125は、例えば半導体メモリであり、CPU123によって実行されるプログラム及びCPU123によって参照されるデータを格納する。本実施形態のメモリ125は、少なくとも、I/O処理部127を格納する。I/O処理部127は、ディスクドライブ128へのデータの書き込み及び読み出しを制御するプログラムモジュールである。
【0021】
ディスクコントローラ121は、さらに、データを一時的に格納するキャッシュメモリ(図示省略)を備えてもよい。
【0022】
なお、図1には、ディスク装置120が複数のディスクドライブ128を備える例を示すが、ディスク装置120は、一つのディスクドライブ128のみを備えてもよい。あるいは、ディスク装置120が、ストレージネットワーク130に接続可能なインターフェースを備える一つのディスクドライブ128であってもよい。
【0023】
ストレージネットワーク130は、ノード110A〜110E及びディスク装置120Aの間の通信を媒介するネットワークである。ストレージネットワーク130は、任意の種類のネットワークであってよい。例えば、ストレージネットワーク130は、PCIバス又はFC(ファイバーチャネル)ネットワークであってもよい。
【0024】
なお、以下の説明において、ノード110Aからノード110Eまでを特に区別する必要がない場合、これらを総称してノード110と記載する。
【0025】
図1には、五つのノード110及び一つのディスク装置120を備える計算機システムを示す。しかし、三つ以上の任意の数のノード110及び一つ以上の任意の数のディスク装置120を備える計算機システムによって本実施形態を実現することができる。
【0026】
NASクライアント160は、各種アプリケーションを実行する計算機である。本実施形態のNASクライアント160は、CPU161、I/F162及びメモリ163を備える。
【0027】
CPU161は、メモリ163に格納されたプログラムを実行するプロセッサである。
【0028】
I/F162は、NASクライアント160をLAN180に接続するインターフェースである。NASクライアント160は、LAN180に接続された装置(例えばノード110)と、I/F162を介して通信する。
【0029】
メモリ163は、例えば半導体メモリであり、CPU161によって実行されるプログラム及びCPU161によって参照されるデータを格納する。本実施形態のメモリ163は、少なくとも、I/O要求処理部164を格納する。
【0030】
I/O要求処理部164は、NASクライアント160で稼動するオペレーティングシステム(OS)(図示省略)の一部として提供される。NASクライアント160のOSは、任意のもの(例えば、Windows(登録商標)又はSolaris(登録商標))であってよい。
【0031】
メモリ163は、さらに、OS上で実行される各種のアプリケーションプログラム(図示省略)を格納する。アプリケーションプログラムが発行した書き込み要求及び読み出し要求は、I/O要求処理部164によって処理される。
【0032】
本実施形態の計算機システムは、任意の数のNASクライアント160を備えてもよい。
【0033】
図2は、本発明の実施形態のノード110のハードウェア構成を示すブロック図である。
【0034】
図2には、例として、ノード110Aのハードウェア構成を示す。ノード110B〜110Eのハードウェア構成は、ノード110Aのそれと同様であるため、図示及び説明を省略する。
【0035】
ノード110は、相互に接続されたI/F201、CPU202、I/F203及びメモリ204を備える。
【0036】
I/F201は、ノード110をLAN180に接続するインターフェースである。ノード110は、LAN180に接続された装置(例えばNASクライアント160)と、I/F201を介して通信する。I/F201は、例えば、いわゆるネットワークインターフェースカード(NIC)である。
【0037】
CPU202は、メモリ204に格納されたプログラムを実行するプロセッサである。したがって、以下の説明においてメモリ204に格納されたプログラム(例えば、後述する各ランクのフェールオーバプログラム210及びFP管理プログラム211)が実行する処理は、実際には、CPU202によって実行される。
【0038】
I/F203は、ノード110をストレージネットワーク130に接続するインターフェースである。ノード110は、I/F203を介してディスク装置120と通信する。I/F203は、例えば、いわゆるホストバスアダプタ(HBA)である。
【0039】
メモリ204は、例えば半導体メモリであり、CPU202によって実行されるプログラム及びCPU202によって参照されるデータ等を格納する。本実施形態のメモリ204は、CPU202によって実行されるプログラムモジュールとして、少なくとも、フェールオーバプログラム(FP)210、ファイル共有プログラム220、ファイルシステム処理プログラム230及びデバイスドライバ240を格納する。ファイルシステム処理プログラム230及びデバイスドライバ240は、ノード110において稼動するOS(図示省略)の一部として提供される。
【0040】
フェールオーバプログラム210は、ノード110のフェールオーバを管理するためにCPU202によって実行されるプログラムモジュールである。FP1(212)、FP2(213)及びFP3(214)は、稼動しているフェールオーバプログラム210がとり得るランク(状態)である。フェールオーバプログラム210の各ランクは、各ランクに対応するプロセスを生成することによって実現される。FP管理プログラム211は、それらのプロセスの生成及び消滅を管理するプログラムモジュールである。さらに、フェールオーバプログラム210は、制御情報215を管理する。
【0041】
以下の説明において、ランクFP1(212)のフェールオーバプログラム210が稼動することを単にFP1(212)が稼動すると記載する。FP2(213)及びFP3(214)の稼動についても同様に表現する。
【0042】
一つのノード110において、複数のフェールオーバプログラム210が稼動してもよい(後述する図17等参照)。その場合、それらの複数のフェールオーバプログラム210のランクは異なっていてもよい。
【0043】
各ランクから別のランクへの遷移、FP管理プログラム211が実行する処理、各ランクのフェールオーバプログラム210が実行する処理、及び、制御情報215については、後で詳細に説明する。
【0044】
ファイル共有プログラム220は、LAN180に接続されるNASクライアント160にファイル共有プロトコルを提供することによって、NASクライアント160間のファイル共有機能を提供する。ファイル共有プロトコルは、例えば、NFS(Network File System)又はCIFS(Common Internet File System)であってもよい。ファイル共有プログラム220は、NASクライアント160からファイル単位のI/O(すなわち読み出し又は書き込み)要求を受けると、その要求に対応したファイル単位のI/Oをファイルシステム(後述)に対して実行する。
【0045】
ファイルシステム処理プログラム230は、上位層に対して階層構造化された論理ビュー(ディレクトリ、ファイル等)を提供するとともに、これらのビューを物理的なデータ構造(ブロックデータ、ブロックアドレス)に変換して下位層に対するI/O処理を実行する。
【0046】
デバイスドライバ240は、ファイルシステム処理プログラム230から要求されたブロックI/Oを実行する。
【0047】
図3は、本発明の実施形態のフェールオーバプログラム210の状態遷移の説明図である。
【0048】
ここで、フェールオーバについて説明する。
【0049】
複数のノード110のうち少なくとも一つは、NASクライアント160に対してファイル共有サービスを提供する。サービスを提供しているノード110が、例えば障害の発生のためにサービスを提供できなくなった場合、そのノード110が提供していたサービスを、他のノード110が引き継いで提供する。その結果、NASクライアント160は、いずれかのノード110に障害が発生した場合にも、引き続きディスク装置120内のデータにアクセスすることができる。このようなサービス提供の引き継ぎを、フェールオーバと呼ぶ。フェールオーバプログラム210は、このようなフェールオーバを実現するプログラムである。フェールオーバの例については、後でより詳細に説明する(図10等参照)。
【0050】
次に、フェールオーバプログラム210の状態遷移について説明する。
【0051】
フェールオーバプログラム210は、FP1(212)からFP3(214)までの各ランクのフェールオーバプログラム210が稼動している状態(すなわち、それぞれ、状態301から状態303)、及び、フェールオーバプログラム210が稼動していない状態(すなわち状態304)の、いずれかの状態をとり得る。
【0052】
図3についての以下の説明は、図1に示すように三つ以上のノード110を備える計算機システムにおいて、一つのノード110においてFP1(212)が稼動し、別の一つのノード110においてFP2(213)が稼動し、残りのノード110のうち少なくとも一つにおいてFP3(214)が稼動していることを前提としている。
【0053】
FP1(212)が稼動するノード110は、NASクライアント160に対してサービスを提供する。FP1(212)は、FP2(213)が稼動するノード110から障害監視要求を受信すると、それに対する応答を送信する。FP1(212)が稼動するノード110に障害が発生した場合、そのノード110のフェールオーバプログラム210の稼動は停止する。すなわち、FP1(212)が稼動するノード110に障害が発生すると、そのノード110で稼動するフェールオーバプログラム210の状態は、状態301から状態304に遷移する。
【0054】
FP2(213)が稼動するノード110は、FP1(212)が稼動するノード110が提供していたサービスの引き継ぎ手である。すなわち、FP2(213)が稼動するノード110は、FP1(212)が稼動するノード110を監視し、そのノード110に障害が発生した場合に、その障害が発生したノード110が提供していたサービスを引き継ぐ。そして、サービスを引き継いだノード110で稼動するフェールオーバプログラム210のランクは、FP2(213)からFP1(212)に遷移する。すなわち、FP1(212)が稼動するノード110に障害が発生すると、そのノード110を監視するフェールオーバプログラム210の状態は、状態302から状態301に遷移する。以下、FP2(213)が稼動するノード110は、引き継ぎ手ノードとも記載される。
【0055】
さらに、FP2(213)は、FP3(214)が稼動するノード110の負荷情報を取得する。具体的には、FP2(213)は、所定のタイミングで、FP3(214)に負荷情報取得要求を送信する。負荷情報が所定の条件を満たす場合、現在FP2(213)が稼動するノード110より、現在FP3(214)が稼動するノード110の方が引き継ぎ手ノードとして適している。このため、負荷情報が所定の条件を満たす場合、FP2(213)は、FP3(214)に、引き継ぎ手ノードを変更する要求(以下、変更要求と記載する)を送信する。変更要求を送信したFP2(213)は、FP3(214)に遷移する。すなわち、変更要求を送信したフェールオーバプログラム210の状態は、状態302から状態303に遷移する。
【0056】
FP2(213)が稼動するノード110に障害が発生した場合、そのノード110のフェールオーバプログラム210の稼動は停止する。すなわち、FP2(213)が稼動するノード110に障害が発生すると、そのノード110で稼動するフェールオーバプログラム210の状態は、状態302から状態304に遷移する。
【0057】
FP3(214)は、FP2(213)から負荷情報取得要求を受信すると、そのFP3(214)が稼動しているノード110の負荷情報をFP2(213)に送信する。
【0058】
FP3(214)は、FP2(213)から変更要求を受信すると、FP2(213)に遷移する。すなわち、変更要求を受信したフェールオーバプログラム210の状態は、状態303から状態302に遷移する。
【0059】
FP3(214)は、所定のタイミングで負荷情報取得要求を受信しなかった場合、FP2(213)が稼動するノード110に障害が発生したと判定する。この場合、FP3(214)は、FP2(213)に遷移する。すなわち、FP2(213)が稼動するノード110の障害を検出したフェールオーバプログラム210の状態は、状態303から状態302に遷移する。ただし、後述するように、複数のノード110においてFP3(214)が稼動している場合、それらのうち一つのノード110のFP3(214)がFP2(213)に遷移する。
【0060】
FP3(214)が稼動するノード110に障害が発生した場合、そのノード110のフェールオーバプログラム210の稼動は停止する。すなわち、FP3(214)が稼動するノード110に障害が発生すると、そのノード110で稼動するフェールオーバプログラム210の状態は、状態303から状態304に遷移する。以下、FP3(214)が稼動するノードは、待機ノードとも記載される。
【0061】
ノード110が障害から回復した場合、そのノード110では、最初に、FP3(214)が稼動する。すなわち、障害から回復したノード110で稼動するフェールオーバプログラム210の状態は、状態304から状態303に遷移する。
【0062】
なお、上記のような状態遷移は、プロセスの生成及び消滅によって実行される。例えば、FP2(213)からFP3(214)への遷移は、FP管理プログラム211が、FP2(213)に対応するプロセスを終了し、その後、FP3(214)に対応するプロセスを生成することによって実行される。
【0063】
次に、図3において説明した状態遷移の具体例を説明する。
【0064】
図4は、本発明の実施形態において実行される処理の前提となる計算機システムの構成を示す説明図である。
【0065】
ノード110A〜110D及び一つ以上のNASクライアント160は、LAN180を介して相互に接続されている。各ノード110では、フェールオーバプログラム210が稼動している。ノード110A〜110Dは、さらに、SAN130を介してディスク装置120と接続されている。図4に示す各ノード110、NASクライアント160及びストレージ装置120は、図1及び図2に示したものと同様であるが、図4では詳細な構成の図示を省略する。
【0066】
ディスク装置120の記憶領域に格納されたデータは、ファイルシステム処理プログラム230によって、一つ以上のファイルシステム(図4の例では、ファイルシステム401A及び401B)としてNASクライアント160に提供される。ファイルシステム401A及び401Bの識別子は、それぞれ、「FS1」及び「FS2」である。
【0067】
以下の説明は、主にノード110が実行する処理についてのものである。このため、以下の図において、特に必要がない場合、ディスク装置120及びSAN130の図示を省略する。
【0068】
図5は、本発明の実施形態の計算機システムが定常状態である場合に実行される処理の説明図である。
【0069】
図5の例では、ノード110AにおいてFP1(212)が稼動し、ノード110BにおいてFP2(213)が稼動し、ノード110C及びノード110DにおいてFP3(214)が稼動している。
【0070】
この場合、ノード110Aは、NASクライアント160に対してサービスを提供する。すなわち、ノード110Aは、NASクライアント160からのファイルアクセス要求を処理し、処理結果(例えば、読み出されたユーザデータ)をNASクライアント160に応答する。
【0071】
ノード110Bにおいて稼動するFP2(213)は、ノード110Aを監視する。具体的には、FP2(213)は、所定のタイミングで(例えば定期的に)障害監視要求をFP1(212)に送信する。障害監視要求を受信したFP1(212)は、その要求に対する応答を、要求の送信元であるFP2(213)送信する。この応答には、例えば、障害情報及び負荷情報が含まれる。障害情報とは、FP1(212)が稼動するノード110Aに障害が発生しているか否かを示す情報である。負荷情報とは、ノード110(この例では、ノード110A)の負荷を示す情報である。負荷情報は、ノード110の負荷を示す情報である限り、どのようなものであってもよい。例えば、負荷情報は、ノード110のCPU202の使用率であってもよい。負荷情報の他の例については後述する。
【0072】
さらに、ノード110Aが提供するサービスに関する情報(以下、サービス情報と記載する)に変更がある場合、その変更の内容を示すサービス変更情報が応答に含まれる。ここで、サービス情報とは、例えば、サービスを受けるユーザの識別子、及び、そのサービスによって提供されるファイルシステムの識別子等を含む(図10参照)。
【0073】
なお、FP1(212)は、障害監視要求に対して応答する代わりに、自発的に、上記の応答と同等の情報を所定のタイミングで(例えば定期的に)送信してもよい。
【0074】
さらに、FP2(213)は、FP3(214)が稼動するノード110C及び110Dの負荷情報を取得する。具体的には、FP2(213)は、所定のタイミングで(例えば定期的に)負荷情報取得要求をノード110C及び110Dで稼動するFP3(214)に送信する。負荷情報取得要求を受信したFP3(214)は、その要求に対する応答を、要求の送信元であるFP2(213)に送信する。ノード110Cで稼動するFP3(214)からの応答には、ノード110Cの負荷情報が含まれる。ノード110Dで稼動するFP3(214)からの応答には、ノード110Dの負荷情報が含まれる。
【0075】
FP2(213)は、FP3(214)から取得した各ノード110の負荷情報を比較し、最も負荷が低いノード110を判定する。例えば、図5に示すように、ノード110Cの負荷が10%、ノード110Dの負荷が90%である場合、FP3(214)が稼動するノード110の中で、ノード110Cの負荷が最も低いと判定される。この場合、FP2は、次回の負荷情報取得要求に優先番号「NAS−02」を含めて、ノード110C及びノード110Dで稼動する各FP3(214)に送信する。「NAS−02」は、ノード110Cの識別子である。優先番号は、負荷が最も低いと判定されたノード110の識別子、又は、その識別子に対応する番号等であってもよい。
【0076】
仮にノード110Bに障害が発生した場合、Single Point Failureを避けるためには、ノード110C及び110Dで稼動するFP3(214)のいずれかがFP2(213)に遷移する必要がある。FP2(213)が稼動するノード110は、現在サービスを提供しているノード110に障害が発生した場合に、サービスの提供を引き継ぐことになる。したがって、ノード110の負荷を均衡させるためには、より負荷が低いノード110のFP3(214)をFP2(213)に遷移させることが望ましい。すなわち、優先番号は、現在引き継ぎ手ノードとなっているノード110に障害が発生した場合の新たな引き継ぎ手ノードとして最も適したノード110の識別子である。優先番号の具体的な使用方法については後述する(図13参照)。
【0077】
なお、FP2(213)がFP1(212)からサービス変更情報を取得した場合、FP2(213)は、取得したサービス変更情報を負荷情報取得要求に含めて送信する。負荷情報取得要求を受信したFP3(214)は、その要求に含まれるサービス変更情報を保持する。
【0078】
さらに、FP2(213)は、FP2(213)が稼動するノード110Bの負荷情報を取得する。
【0079】
FP2(213)は、取得した負荷情報が所定の条件を満足する場合、引き継ぎ手ノード変更処理を実行する。引き継ぎ手ノード変更処理とは、サービスの引き継ぎ手となるノード110を変更する処理である。所定の条件とは、例えば、FP2(213)が稼動するノード110の負荷が、FP3(214)が稼動するノード110の負荷より高いことである。
【0080】
例えば、FP2(213)が取得したノード110B、110C及び110Dの負荷情報(例えばCPU使用率)が、それぞれ、30%、10%及び90%である場合、FP2(213)が稼動するノード110Bの負荷が、FP3(214)が稼動するノード110Cの負荷より高い。このような状況において、ノード110Aに障害が発生した場合、ノード110の負荷を均衡させるためには、ノード110Bよりも、ノード110Cがサービスを引き継ぐことが望ましい。このように、例えば現在の引き継ぎ手ノードであるノード110Bより、その他のノード110Cの方が引き継ぎ手ノードに適していると判定された場合、まだサービスを提供しているノード110Aに障害が発生していなくても、引き継ぎ手ノード変更処理が実行される。
【0081】
図6は、本発明の実施形態の計算機システムにおいて実行される引き継ぎ手ノード変更処理の説明図である。
【0082】
具体的には、図6は、図5において説明したように、ノード110Bよりノード110Cの方が引き継ぎ手ノードに適していると判定された場合に実行される処理を示す。
【0083】
この場合、ノード110Bで稼動するFP2(213)は、ノード110Cで稼動するFP3(214)に引き継ぎ手ノード変更要求を送信する。その後、ノード110Bで稼動するFP2(213)は、FP3(214)に遷移する。一方、引き継ぎ手ノード変更要求を受信したノード110Cで稼動するFP3(214)は、FP2(213)に遷移する。
【0084】
図7は、本発明の実施形態において引き継ぎ手ノード変更処理が実行された後の計算機システムの説明図である。
【0085】
図6に示す引き継ぎ手ノード変更処理が実行された結果、ノード110Aでは引き続きFP1(212)が、ノード110Bでは新たにFP3(214)が、ノード110Cでは新たにFP2(213)が、ノード110Dでは引き続きFP3(214)が稼動する。すなわち、ノード110Cで稼動するFP2(213)が、ノード110Aを監視する。さらに、ノード110Cで稼動するFP2(213)が、ノード110B及び110Dの負荷情報を取得する。ノード110Aに障害が発生した場合、ノード110Cがノード110Aからサービスを引き継ぐことになる。
【0086】
図8は、本発明の実施形態の計算機システムにおいて実行されるサービスの引き継ぎ処理の説明図である。
【0087】
具体的には、図8は、NASクライアント160にサービスを提供しているノード110に障害が発生した場合に実行されるサービスの引き継ぎ処理を示す。
【0088】
図5に示すように、ノード110AにおいてFP1(212)が稼動し、ノード110BにおいてFP2(213)が稼動し、ノード110C及びノード110DにおいてFP3(214)が稼動しているときに、サービスを提供しているノード110Aに障害が発生した場合、FP2(213)がその障害を検出する。
【0089】
例えば、FP2(213)がFP1(212)から受信した応答に含まれる障害情報が、ノード110Aにおいて障害が発生したことを示す場合、FP2(213)は、ノード110Aにおいて障害が発生したと判定する。
【0090】
あるいは、ノード110Aが障害のため停止した場合、FP1(212)は、停止状態(状態304)に遷移するため、障害監視要求に応答できなくなる。このため、FP2(213)は、所定のタイミングで障害監視要求に対する応答を受信できない場合、ノード110Aに障害が発生したと判定してもよい。例えば、FP2(213)は、障害監視要求を送信した後、所定の時間が経過しても応答を受信できない場合、ノード110Aに障害が発生したと判定してもよいし、前回の障害監視要求に対する応答を受信した後、所定の時間が経過しても応答を受信できない場合、ノード110Aに障害が発生したと判定してもよい。
【0091】
この場合、FP2(213)は、現在FP3(214)が稼動しているノード110のうち、引き継ぎ手ノードに最も適したノード110で稼動するFP3(214)に、引き継ぎ手ノード変更要求を送信する。この引き継ぎ手ノード変更要求は、図6において説明したものと同様のものであってもよい。例えば、図8に示すように、ノード110Cの負荷が20%、ノード110Dの負荷が90%である場合、負荷均衡のためには、ノード110Dよりノード110Cが引き継ぎ手ノードとなることが望ましい。したがってこの場合、FP2(213)は、引き継ぎ手ノードに最も適したノード110Cに引き継ぎ手ノード変更要求を送信する。
【0092】
引き継ぎ手ノード変更要求を送信した後、FP2(213)は、FP1(212)に遷移する。新たにFP1(212)が稼動するノード110Bは、障害が発生したノード110Aに代わって、NASクライアント160にサービスを提供する。
【0093】
引き継ぎ手ノード変更要求を受信したノード110Cで稼動するFP3(214)は、図6において説明したように、FP2(213)に遷移する。
【0094】
図9は、本発明の実施形態においてサービスの引き継ぎ処理が実行された後の計算機システムの説明図である。
【0095】
図8に示すサービスの引き継ぎ処理が実行された結果、ノード110Bでは新たにFP1(212)が、ノード110Cでは新たにFP2(213)が、ノード110Dでは引き続きFP3(214)が稼動する。すなわち、FP1(212)が稼動するノード110Bは、NASクライアント160にサービスを提供する。ノード110Cで稼動するFP2(213)は、サービスを提供するノード110Bを監視する。さらに、ノード110Cで稼動するFP2(213)は、FP3(214)が稼動するノード110Dの負荷情報を取得する。ノード110Bで障害が発生した場合、ノード110Cがノード110Bからサービスを引き継ぐことになる。
【0096】
図10は、本発明の実施形態の計算機システムにおいて提供されるファイル共有サービスの具体例の説明図である。
【0097】
最初に、NASが提供するファイル共有サービス、及び、そのサービスを提供するために必要な情報であるサービス情報について説明する。
【0098】
NASは、クライアントに対してファイル共有サービスを提供する。すなわち、あるクライアントがNAS上のファイルシステムに任意にファイルを格納し、そのファイルを他のクライアントと共有する。
【0099】
図10において、NASクライアント160A〜160Cの各々は、複数のNASクライアント160のうちの一つである。図10に表示された「経理部:日立一郎」、「経理部:日立二郎」及び「総務部:日立花子」は、それぞれ、NASクライアント160A、160B及び160Cのユーザの識別子である。この例では、各ユーザの識別子は、各ユーザの所属部署名及び氏名からなる。
【0100】
NAS110は、ファイルシステム1001及びファイルシステム1002をNASクライアント160に提供する。図10に表示された「fs−keiri」及び「fs−soumu」は、それぞれ、ファイルシステム1001及びファイルシステム1002の識別子である。この例において、ファイルシステム1001は経理部に所属するユーザに提供されるデータ格納領域、ファイルシステム1002は総務部に所属するユーザに提供されるデータ格納領域である。
【0101】
例えば、ユーザ「経理部:日立一郎」が作成したファイル「貸借対照表.xls」は、ファイルシステム「fs−keiri」に格納される。このファイルを、ユーザ「経理部:日立二郎」も参照することができる。一方、ユーザ「総務部:日立花子」が作成したファイルは、ファイルシステム「fs−soumu」に格納される。
【0102】
したがって、NASは、ファイル共有サービスを提供するために、少なくとも、ユーザに提供されるデータ格納領域の識別子、及び、各データ格納領域へのアクセスを許されたユーザの識別子の一覧を示す情報を、サービス情報として保持する必要がある。
【0103】
NASにおいて、ディスク装置120の任意の領域にファイルシステムが構築され、それをノード110のOSが認識する。そして、OSは、ファイルシステム上にユーザのファイルを格納する。OSは、複数のファイルシステムを認識することができる。このため、OSはファイルシステムの識別子(すなわちファイルシステムID)を用いてファイルシステムを識別し、ユーザは、ファイルを共有する際にファイルシステムIDを使用する。
【0104】
また、NASクライアント160がサービスにアクセスするために、LAN180を使用する。したがって、サービスを提供するためには、サービスを提供するノード110のIPアドレスが必要となる。
【0105】
以上から、サービス情報は、少なくとも、ユーザ情報(すなわちアクセスが許されるユーザの識別子の一覧)、ファイルシステムID、及び、ノード110のIPアドレスを含む必要がある。図10の例では、ノード110は、ファイルシステム1001及び1002の識別子、ユーザ情報1003及びIPアドレス1004(「192.168.10.1」)をサービス情報として保持する。
【0106】
ノード110は、NASクライアント160を使用するユーザからいずれかのファイルシステムへのアクセス要求(すなわち書き込み要求又は読み出し要求)を受信すると、そのユーザの識別子及び要求されたファイルシステムIDをサービス情報と照合することによって、そのユーザが要求されたファイルシステムへのアクセスを許可されているか否かを判定する。そのアクセスが許可されていると判定された場合、ノード110は、アクセス要求に応じて、データの書き込み又は読み出しを実行し、その結果をNASクライアント160に応答する。
【0107】
図11及び図12は、本発明の実施形態の計算機システムにおいて実行されるサービスの引き継ぎ処理の詳細な説明図である。
【0108】
具体的には、図11は、サービスが引き継がれる前の状態を示し、図12は、障害が発生したノード110が提供していたサービスを他のノードが引き継いだ状態を示す。
【0109】
図11に示すように、当初、ノード110AがNASクライアント160にファイル共有サービスを提供する。すなわち、ノード110AのIPアドレスとして例えば図10に示す「192.168.10.1」が設定される。さらに、ノード110Aは、サービス情報として、例えば図10に示すファイルシステム1001及び1002の識別子、及び、ユーザ情報1003を保持する。この場合、ユーザ情報1003に登録されたNASクライアント160のユーザは、IPアドレス「192.168.10.1」に接続することによって、ファイルシステム内のユーザデータにアクセスすることができる。すなわち、IPアドレス「192.168.10.1」は、NASクライアント160のユーザがファイルシステム1001及び1002にアクセスするときに、アクセス要求の宛先として使用される。
【0110】
この時点では、ノード110AにおいてFP1(212)が稼動し、ノード110BにおいてFP2(213)が稼動し、ノード110C及びノード110DにおいてFP3(214)が稼動している。
【0111】
図5において説明したように、ノード110Aで稼動するFP1(212)は、サービス情報に変更があった場合、その変更の内容を、障害監視要求に対する応答に含めて、ノード110Bで稼動するFP2(213)に送信する。このため、ノード110Bは、ノード110Aが保持するものと同一のサービス情報を保持することができる。
【0112】
その後、サービスを提供しているノード110Aに障害が発生すると、FP2(213)が稼動していたノード110Bがノード110Aからサービスの提供を引き継ぐ。
【0113】
具体的には、ノード110BのIPアドレスとして新たに「192.168.10.1」(すなわち、サービスを提供していたノード110Aに設定されていたアドレス)が設定される。さらに、ノード110Bは、ノード110Aが保持していたものと同一のサービス情報を保持している。このため、ユーザ情報1003に登録されているユーザは、ノード110Aに障害が発生した後も、障害が発生する前と同じIPアドレス「192.168.10.1」に接続することによって、ファイルシステム内のユーザデータにアクセスすることができる。
【0114】
図13は、本発明の実施形態の計算機システムにおいて引き継ぎ手ノードであるノード110に障害が発生した場合に実行される処理の説明図である。
【0115】
具体的には、図13は、図5に示すノード110Bに障害が発生した場合に実行される処理を示す。
【0116】
ノード110Bに障害が発生すると、ノード110Bにおいて稼動していたFP2(213)が停止する(図3参照)。この状態を放置すると、その後さらにノード110Aに障害が発生した場合、ノード110Aからサービスを引き継ぐノード110が存在しないため、サービスの提供が停止する。すなわち、ノード110AがSingle Point Failureとなる。これを防ぐため、FP2(213)が停止した場合、稼動しているFP3(214)のうちいずれかがFP2(213)に遷移することによって、新たな引き継ぎ手ノードとなる必要がある。図13は、そのための処理を示す。
【0117】
ノード110BにおいてFP2(213)が停止すると、ノード110C及びノード110Dにおいて稼動するFP3(214)は、負荷情報取得要求を所定のタイミングで受信できなくなる。このことから、FP3(214)は、ノード110Bの障害を検出する。例えば、FP3(214)は、前回負荷情報取得要求を受信してから所定の時間が経過しても次回の負荷情報取得要求を受信しない場合、FP2(213)が稼動するノード110に障害が発生したと判定してもよい。
【0118】
図5の例では、障害が発生する前、ノード110C及びノード110Dにおいて稼動するFP3(214)は、FP2(213)から優先番号「NAS−02」を受信している。この例において、ノード110Bに障害が発生した場合、各FP3(214)は、自FP3(214)が稼動する自ノード110の識別子と受信した優先番号とを比較する。
【0119】
ノード110Cで稼動するFP3(214)は、優先番号「NAS−02」が自ノード110Cの識別子と同一であるため、FP2(213)に遷移する必要があると判定する。一方、ノード110Dで稼動するFP3(214)は、優先番号「NAS−02」が自ノード110Dの識別子「NAS−03」と異なるため、FP2(213)に遷移する必要がないと判定する。
【0120】
この場合、ノード110Cで稼動するFP3(214)のみが、FP2(213)に遷移する。
【0121】
図14は、本発明の実施形態において引き継ぎ手ノードが変更された後の計算機システムの説明図である。
【0122】
具体的には、図14は、図13に示すようにノード110Cで稼動するFP3(214)がFP2(213)に遷移した後の状態を示す。
【0123】
ノード110Cで新たに稼動するFP2(213)は、障害監視要求を送信することによって、ノード110Aを監視する。さらに、FP2(213)は、負荷情報取得要求を送信することによって、ノード110Dの負荷情報を取得する。その後、ノード110Aに障害が発生した場合、ノード110Cがノード110Aからサービスを引き継ぐことになる。
【0124】
図15は、本発明の実施形態の計算機システムにおいて待機ノード110に障害が発生した場合に実行される処理の説明図である。
【0125】
具体的には、図15は、図5に示す計算機システムにおいて、待機ノード110(すなわち、FP3(214)が稼動するノード110)の一つであるノード110Dに障害が発生した場合の処理を示す。
【0126】
ノード110Dに障害が発生すると、ノード110Dにおいて稼動するFP3(214)が停止する(図3参照)。このため、ノード110Dは、ノード110BのFP2(213)から送信された負荷情報取得要求に応答できなくなる。このことに基づいて、FP2(213)は、ノード110Dに障害が発生したと判定する。例えば、FP2(213)は、ノード110Dに負荷情報取得要求を送信した後、所定の時間が経過しても応答を受信しない場合、ノード110Dに障害が発生したと判定してもよい。
【0127】
この場合、障害が発生していないノード110で稼動するフェールオーバプログラム210において状態遷移は発生しない。したがって、ノード110Aは引き続きサービスを提供し、ノード110Bで稼動するFP2(213)は引き続きノード110Aの監視及びノード110Cの負荷情報の取得を実行する。
【0128】
図16は、本発明の実施形態の計算機システムにおいてノード110が障害から回復した場合に実行される処理の説明図である。
【0129】
具体的には、図16は、図9に示すように、ノード110Aに障害が発生し、ノード110Bがノード110Aからサービスを引き継いだ後に、ノード110Aが障害から回復した場合に実行される処理を示す。
【0130】
障害から回復したノード110Aでは、フェールオーバプログラム210が起動する。起動直後に稼動するランクは、FP3(214)である(図3参照)。ノード110Aで稼動するFP3(214)は、ノード110Cで稼動するFP2(213)からの負荷情報取得要求に応答する。その後、負荷情報が所定の条件を満たす場合には、図6及び図7等に示したものと同様の手順で、状態遷移が発生し、引き継ぎ手ノードが変更される。
【0131】
以上の説明は、NASが一つのサービスを提供する場合、すなわち、一つのノード110のみがサービスを提供する場合を例としていた。しかし、実際には、NASが複数のサービスを提供する場合、すなわち、複数のノード110がサービスを提供する場合にも本発明を適用することができる。
【0132】
図17及び図18は、本発明の実施形態の計算機システムにおいて提供されるサービスが追加された場合に実行される処理の説明図である。
【0133】
図17は、一つのサービスすなわちサービスAを提供しているNASに、別のサービスすなわちサービスBが追加された直後の計算機システムの状態を示す。
【0134】
当初、サービスAのみが提供されている。この時点で、ノード110AがNASクライアント160にサービスAを提供し、ノード110BがサービスAの引き継ぎ手ノードであり、ノード110C及び110DがサービスAのための待機ノードである。以下の説明において、「A」が付されたFP1〜FP3は、サービスAのフェールオーバを管理するために稼動するものである。例えば、ノード110AにおいてA−FP1(212A)が、ノード110BにおいてA−FP2(213A)が、ノード110C及び110DにおいてA−FP3(214A)が稼動する。A−FP1(212A)、A−FP2(213A)及びA−FP3(214A)は、それぞれ、サービスAのフェールオーバを管理するために生成されたFP1(212)、FP2(213)及びFP3(214)である。
【0135】
その後、サービスBの提供が追加される。例えば、ユーザがノード110BにサービスBを定義する。具体的には、サービスBを提供するために必要なサービス情報がユーザによってノード110Bに入力して、サービスBの提供を指示する。このとき、ノード110BのFP管理プログラム211は、B−FP2(213B)を生成する。以下の説明において、サービスBのフェールオーバを管理するために稼動するFP1〜FP3は、「B」を付して表示される。
【0136】
さらに、ノード110BのFP管理プログラム211は、ノード110A、110C及び110DのFP管理プログラム211に、サービスBに関するサービス情報を送信する。このサービス情報を受信した各ノード110のFP管理プログラム211は、各ノード110に、B−FP3(214B)を生成する。この時点で、B−FP1(212B)が稼動するノード110は存在しない。なお、B−FP1(212B)、B−FP2(213B)及びB−FP3(214B)は、それぞれ、サービスBのフェールオーバを管理するために生成されたFP1(212)、FP2(213)及びFP3(214)である。
【0137】
異なるサービスのフェールオーバを管理するFP1〜FP3は、それぞれ独立に稼動し、相互に通信することができない。例えば、B−FP2(213B)は、B−FP1(212B)及びB−FP3(214B)と通信することができるが、A−FP1(212A)及びA−FP3(214A)と通信することはできない。
【0138】
稼動を開始したB−FP2(213B)は、負荷情報取得要求を各ノード110で稼動するB−FP3(214B)に送信することによって、各ノード110の負荷情報を取得する。さらに、B−FP2(213B)は、障害監視要求を送信する。しかし、この時点でB−FP1(212B)がいずれのノード110でも稼動していないため、B−FP2(213B)は障害監視要求に対する応答を受信することができない。この場合、図8及び図9において説明したように、状態遷移が発生する。
【0139】
図18は、図17から状態遷移した後の計算機システムを示す。
【0140】
ノード110Bで稼動していたB−FP2(213B)は、B−FP1(212B)に遷移する。さらに、例えば、ノード110A、110C及び110Dの負荷が、それぞれ、「40%」、「20%」及び「90%」である場合、負荷が最も低いノード110Cで稼動していたB−FP3(214B)がB−FP2(213B)に遷移する。
【0141】
以後、A−FP1(212A)〜A−FP3(214A)の組、及び、B−FP1(212B)〜B−FP3(214B)の組は、それぞれ独立に、図16までに示した処理を実行する。
【0142】
図19は、本発明の実施の形態の計算機システムにおいて新たなノード110が追加された場合に実行される処理の説明図である。
【0143】
具体的には、図19は、図18に示す計算機システムに、識別子「NAS−04」によって識別されるノード110Eが追加される例を示す。
【0144】
この場合、ノード110EのFP管理プログラム211は、ノード110A〜110DのFP管理プログラムからサービス情報を取得する。図19の例では、ノード110AのFP管理プログラム211が、A−FP1(212A)が管理しているサービスAに関するサービス情報をノード110EのFP管理プログラム211に送信する。さらに、ノード110BのFP管理プログラム211が、B−FP1(212B)が管理しているサービスBに関するサービス情報をノード110EのFP管理プログラム211に送信する。
【0145】
これらのサービス情報を受信することによって、ノード110EのFP管理プログラム211は、現在2種類のサービスすなわちサービスA及びサービスBが提供されていることを知ることができる。そして、ノード110EのFP管理プログラム211は、ノード110EにA−FP3(214A)及びB−FP3(214B)を生成する。以後、各ノード110のフェールオーバプログラム210は、これまでに説明した処理を実行する。
【0146】
次に、フェールオーバプログラム210によって管理される制御情報215について説明する。
【0147】
図20は、本発明の実施形態のノード110が保持する制御情報215の一例を示す説明図である。
【0148】
具体的には、図20は、図18に示す計算機システムのノード110Bが保持する制御情報215を例として示す。
【0149】
制御情報215は、自ノードID2001、サービス2002、クライアント2003、自ノードランク2004、FP1_2005、FP2_2006、FP3_2007、優先番号2008及び引き継ぎ情報2009を含む。
【0150】
自ノードID2001は、自ノード110すなわちこの制御情報を保持しているノード110の識別子である。図20は、ノード110Bが保持する制御情報215を示すため、自ノードID2001としてノード110Bの識別子である「NAS−01」が保持される。
【0151】
自ノードID2001は、さらに、自ノード110の負荷を示す値を含む。図20には、括弧内に自ノード110の負荷を示す値が表示されている。自ノード110の負荷は、例えば、CPU202の使用率(%)であってもよい。図20の例では、自ノード110Bの負荷として「10」(%)が保持される。
【0152】
サービス2002は、自ノード110が関与するファイル共有サービスの識別子である。自ノード110が関与するファイル共有サービスとは、自ノード110で稼動しているFP1(212)〜FP3(214)に対応するサービスである。図18の例では、ノード110Bにおいて、サービスAに対応するA−FP2(213A)及びサービスBに対応するB−FP1(212B)が稼動している。このため、図20の例では、サービス2002としてサービスAの識別子「A」及びサービスBの識別子「B」が保持される。
【0153】
クライアント2003は、サービス2002として保持された各サービスの提供を受けるNASクライアント160の識別子である。図20の例では、サービスA及びサービスBに対応するクライアント2003として、それぞれ、「1」及び「2」が保持される。
【0154】
自ノードランク2004は、各サービスに対応して自ノード110において稼動しているフェールオーバプログラム210のランクである。図20の例では、自ノードランク2004として、サービスAに対応する「FP2」及びサービスBに対応する「FP1」が保持される。
【0155】
FP1_2005は、各サービスに対応するFP1(212)が稼動しているノード110の識別子である。図18の例では、サービスAに対応するA−FP1(212A)がノード110Aで稼動している。このため、図20の例では、サービスAに対応するFP1_2005として、ノード110Aの識別子「NAS−00」が保持される。一方、図18の例では、サービスBに対応するB−FP1(212B)は、自ノード110Bで稼動している。この場合、図20の例では、サービスBに対応するFP1_2005として有効な値が保持されなくてもよい。
【0156】
FP2_2006は、各サービスに対応するFP2(213)が稼動しているノード110の識別子である。図18の例では、サービスAに対応するA−FP2(213A)は、自ノード110Bで稼動している。この場合、図20の例では、サービスAに対応するFP2_2006として有効な値が保持されなくてもよい。一方、図18の例では、サービスBに対応するB−FP2(213B)がノード110Cで稼動している。このため、図20の例では、サービスBに対応するFP2_2006として、ノード110Cの識別子「NAS−02」が保持される。
【0157】
FP3_2007は、各サービスに対応するFP3(214)が稼動しているノード110の識別子である。図18の例では、サービスAに対応するA−FP3(214A)がノード110C及びノード110Dで稼動している。このため、図20の例では、サービスAに対応するFP3_2007として、ノード110C及びノード110Dの識別子「NAS−02」及び「NAS−03」が保持される。一方、図18の例では、サービスBに対応するB−FP3(214B)がノード110A及びノード110Dで稼動している。このため、図20の例では、サービスBに対応するFP3_2007として、ノード110A及びノード110Dの識別子「NAS−00」及び「NAS−03」が保持される。
【0158】
自ノード110のランクがFP2(213)である場合、FP3_2007には、さらに、FP2(213)が取得した各ノード110の負荷情報が保持される。図18の例では、サービスAに対応する自ノード110BのランクがFP2(213)である。このため、図20の例では、サービスAに対応するFP3_2007として、ノード110Cの負荷「20」及びノード110Dの負荷「90」がさらに保持される。図20では、これらの負荷が括弧内に表示されている。
【0159】
優先番号2008は、自ノード110で稼動するFP3(214)が他ノード110のFP2(213)から受信した優先番号である。図18の例では、自ノード110BにおいてFP3(214)が稼動していない。このため、図20の例では、優先番号2008として有効な値が保持されない。
【0160】
引き継ぎ情報2009は、各ノードがNASクライアント160にファイル共有サービスを提供するために必要なサービス情報である。このサービス情報は、障害監視要求に対する応答から取得される。サービス情報は、例えば、サービスの提供を受けることができるユーザを示すユーザ情報、そのサービスによって提供されるファイルシステムの識別子、及び、そのサービスの提供のために使用されるノード110のIPアドレスを含む。
【0161】
引き継ぎ手ノード(すなわちFP2(213)が稼動するノード)は、サービスを引き継ぐために、サービス情報を保持する必要がある。図18の例では、自ノード110Bは、サービスAについての引き継ぎノードであるため、サービスAに関するサービス情報を引き継ぎ情報2009として保持する。例えば、サービスAが、総務部に所属するユーザにファイルシステム「FS1」へのアクセスを提供するサービスであり、そのためにIPアドレス「192.168.10.1」が使用される場合、サービスAに対応する引き継ぎ情報2009として「総務部」、「FS1」及び「192.168.10.1」が保持される。
【0162】
さらに、自ノード110Bは、サービスBを提供しているため、サービスBに関するサービス情報を引き継ぎ情報2009として保持する。例えば、サービスBが、経理部に所属するユーザにファイルシステム「FS2」へのアクセスを提供するサービスであり、そのためにIPアドレス「192.168.10.2」が使用される場合、サービスBに対応する引き継ぎ情報2009として「経理部」、「FS2」及び「192.168.10.2」が保持される。
【0163】
図21は、本発明の実施形態のノード110が保持する制御情報215の別の例を示す説明図である。
【0164】
具体的には、図21は、図18に示す計算機システムのノード110Cが保持する制御情報215を例として示す。
【0165】
図21の制御情報215の各項目の説明は、図20のものと同様であるため省略する。以下、ノード110Cに制御情報215として保持される具体的な値の例について説明する。
【0166】
自ノードID2001として、ノード110Cの識別子である「NAS−02」が保持される。さらに、自ノード110Cの負荷として「20」(%)が保持される。
【0167】
サービス2002及びクライアント2003として保持される値は、図20に示すものと同様である。
【0168】
図18の例では、ノード110Cにおいて、サービスAに対応するA−FP3(214A)及びサービスBに対応するB−FP2(213B)が稼動している。このため、図21の例では、自ノードランク2004として、サービスAに対応する「FP3」及びサービスBに対応する「FP2」が保持される。
【0169】
図18の例では、サービスAに対応するA−FP1(212A)がノード110Aで稼動している。このため、図20の例では、サービスAに対応するFP1_2005として、ノード110Aの識別子「NAS−00」が保持される。一方、図18の例では、サービスBに対応するB−FP1(212B)がノード110Bで稼動している。このため、図20の例では、サービスBに対応するFP1_2005として、ノード110Bの識別子「NAS−01」が保持される。
【0170】
図18の例では、サービスAに対応するA−FP2(213A)がノード110Bで稼動している。このため、図20の例では、サービスAに対応するFP2_2006として、ノード110Bの識別子「NAS−01」が保持される。一方、図18の例では、サービスBに対応するB−FP2(213B)は、自ノード110Cで稼動している。この場合、図20の例では、サービスBに対応するFP2_2006として有効な値が保持されなくてもよい。
【0171】
図18の例では、サービスAに対応するA−FP3(214A)が自ノード110C及びノード110Dで稼動している。このため、図20の例では、サービスAに対応するFP3_2007として、少なくとも、ノード110Dの識別子「NAS−03」が保持される。一方、図18の例では、サービスBに対応するB−FP3(214B)がノード110A及びノード110Dで稼動している。このため、図20の例では、サービスBに対応するFP3_2007として、ノード110A及びノード110Dの識別子「NAS−00」及び「NAS−03」が保持される。
【0172】
図18の例では、サービスBに対応する自ノード110CのランクがFP2(213)である。このため、図20の例では、サービスBに対応するFP3_2007として、ノード110Aの負荷「40」及びノード110Dの負荷「90」がさらに保持される。
【0173】
図18の例では、自ノード110Cにおいて、サービスAに対応するA−FP3(214A)が稼動している。このため、ノード110Cは、ノード110Bで稼動するA−FP2(213A)から優先番号を受信する。図18に示すようにノード110Cの負荷がノード110Dの負荷より低い場合、優先番号としてノード110Cの識別子「NAS−02」が送信される。このため、図20の例では、サービスAに対応する優先番号2008として「NAS−02」が保持される。仮にノード110Dの負荷がノード110Cの負荷より低い場合、優先番号としてノード110Dの識別子「NAS−03」が送信されるため、優先番号2008として「NAS−03」が保持される。
【0174】
引き継ぎ情報2009については、図20と同様であるため、説明を省略する。なお、FP3(214)は、FP2(213)から受信した負荷情報取得要求から、サービス情報を取得することができる。
【0175】
次に、各ノード110のフェールオーバプログラム210が実行する処理について、フローチャートを参照して説明する。これらのフローチャートは、図3から図19を参照して説明した本実施形態の処理を詳細に説明するものである。
【0176】
図22は、本発明の実施形態のフェールオーバプログラム210が実行する処理の概要の説明図である。
【0177】
具体的には、図22は、図5に示すように、ノード110A(NAS−00)においてFP1(212)が、ノード110B(NAS−01)においてFP2(213)が、ノード110C及び110D(NAS−02及びNAS−03)においてFP3(214)が稼動している場合の各ランクのフェールオーバプログラム210の処理の概要を示す。
【0178】
FP1(212)は、自ノード110Aの障害を監視する。さらに、FP1(212)は、自ノード110Aの負荷情報を取得する。
【0179】
FP2(213)は、自ノード110Bの負荷情報を取得する。さらに、FP2(213)は、FP3(214)から、それらが稼動するノード110C及び110Dの負荷情報を取得する。さらに、FP2(213)は、ノード110Aの障害を監視する。
【0180】
そして、FP2(213)は、自ノード110Bの負荷が所定の条件を満たす場合、適切なFP3(214)に引き継ぎ手ノード変更要求を送信した後、FP3(214)に遷移する。例えば、自ノード110Bの負荷が待機ノードであるノード110C又は110Dの負荷より高い場合、所定の条件を満たすと判定されてもよい。あるいは、自ノード110Bの負荷が、現在サービスを提供しているノード110Aの負荷より高い場合、所定の条件を満たすと判定されてもよい。
【0181】
さらに、FP2(213)は、ノード110Aに障害が発生した場合、適切なFP3(214)に引き継ぎ手ノード変更要求を送信した後、FP1(212)に遷移する。
【0182】
FP3(214)は、自ノード110C又は110Dの負荷情報を取得する。FP3(214)は、FP2(213)から引き継ぎ手ノード変更要求を受信すると、FP2(213)に遷移する。FP3(214)は、FP2(213)が稼動するノード110Bに障害が発生すると、優先番号と自ノード110C又は110Dの識別子とを照合し、それらが一致する場合にはFP2(213)に遷移する。
【0183】
図23は、本発明の実施形態のFP1(212)が実行する処理のフローチャートである。
【0184】
処理が開始されると、FP1(212)は、自ノード110(すなわちそのFP1(212)が稼動するノード110)の障害情報を取得する(ステップ2301)。ここで、障害とは、CPU202、メモリ204、I/F201、I/F203等のハードウェア障害、又は、自ノード110上で稼動するプログラムの不正終了等のソフトウェア障害を意味する。障害情報は、少なくとも、上記のハードウェア障害又はソフトウェア障害が発生したか否かを示す情報を含むが、具体的な障害の内容を示す情報は含まなくてもよい。
【0185】
次に、FP1(212)は、自ノード110の負荷情報を取得する(ステップ2302)。負荷情報は、負荷指標値を含む。負荷指標値は、ノード110の負荷を示す値である。負荷指標値は、例えば、CPU202の使用率、メモリ204の使用率、ネットワークリソースの使用率、ディスク装置120のI/Oレート、稼動プロセス数、及び、自ノード110内で稼動するFP1(212)及びFP2(213)のプロセス数のうち少なくとも一つに基づいて算出される値である。
【0186】
次に、FP1(212)は、サービス変更情報を受け付ける(ステップ2303)。サービス変更情報とは、サービス情報の変更を示す情報である。サービス情報とは、図10において説明したように、ノード110がサービスを提供するために必要な情報である。サービス変更情報は、例えば、追加又は削除されたユーザアカウント、又は、変更されたアクセス権限等を示す情報である。
【0187】
次に、FP1(212)は、他のノード110で稼動するFP2(213)から障害監視要求を受信したか否かを判定する(ステップ2304)。
【0188】
ステップ2304において、障害監視要求を受信したと判定された場合、FP1(212)は、自ノード110の障害情報、自ノード110の負荷情報及びサービス変更情報を障害監視要求の送信元に送信する(ステップ2305)。その後、処理はステップ2301に戻る。
【0189】
一方、ステップ2304において、障害監視要求を受信したと判定された場合、FP1(212)は、ステップ2305を実行せずにステップ2301に戻る。
【0190】
図24は、本発明の実施形態のFP2(213)が実行する処理のフローチャートである。
【0191】
処理が開始されると、FP2(213)は、自ノード110の障害情報を取得する(ステップ2401)。
【0192】
次に、FP2(213)は、自ノード110の負荷情報を取得する(ステップ2402)。
【0193】
次に、FP2(213)は、他のノード110において稼動しているFP1(212)に障害監視要求を送信する(ステップ2403)。FP1(212)は、図23のステップ2304において、この障害監視要求を受信したか否かを判定する。
【0194】
次に、FP2(213)は、他のノード110において稼動しているFP3(214)に負荷情報取得要求を送信する(ステップ2404)。この負荷情報取得要求を受信したFP3(214)の処理については後述する(図27参照)。
【0195】
次に、FP2(213)は、障害監視処理を実行する(ステップ2405)。障害監視処理については、図25を参照して説明する。
【0196】
次に、FP2(213)は、負荷情報収集処理を実行する(ステップ2406)。負荷情報収集処理については、図26を参照して説明する。
【0197】
その後、処理はステップ2401に戻り、ステップ2401以降の処理が繰り返される。なお、その後ステップ2404が実行されるとき、負荷情報取得要求には、前回の負荷情報取得要求に対する応答に基づいて決定された優先番号が含まれる(図26参照)。さらに、後述する障害監視処理によってサービス変更情報を取得した場合、取得したサービス変更情報が、ステップ2403で送信される障害監視要求に含まれる。
【0198】
図25は、本発明の実施形態のFP2(213)が実行する障害監視処理のフローチャートである。
【0199】
図25に示す処理は、図24のステップ2405において実行される。
【0200】
最初に、FP2(213)は、ステップ2403において送信された障害監視要求に対する応答を受信したか否かを判定する(ステップ2501)。
【0201】
ステップ2501において、応答を受信していないと判定された場合、FP2(213)は、障害監視要求に対する応答を所定のタイミングで受信できたか否かを判定する。図25の例では、FP2(213)は、FP1(212)から障害監視要求に対する応答を最後に受信した後、所定の時間が経過したか否かを判定する(ステップ2503)。あるいは、FP2(213)は、障害監視要求を送信してから所定の時間が経過したか否かを判定してもよい。
【0202】
ステップ2503において、所定の時間が経過していないと判定された場合、FP1(212)が稼動するノード110に障害が発生したか否かをまだ判定することができない。このため、FP2(213)は通常処理に戻る(ステップ2507)。すなわち、FP2(213)は図24のステップ2405に戻り、ステップ2405より後の処理を実行する。
【0203】
一方、ステップ2503において、所定の時間が経過したと判定された場合、FP1(212)が稼動するノード110に障害が発生したと判定される。この場合、処理はステップ2504に進む。
【0204】
ステップ2501において、応答を受信したと判定された場合、FP2(213)は、応答の内容を参照して、その応答を送信したノード110に障害が発生したか否かを判定する(ステップ2502)。例えば、その応答が、ノード110に障害が発生したことを示す情報を含む場合、FP2(213)は、その応答を送信したノード110に障害が発生したと判定する。
【0205】
ステップ2502において、ノード110に障害が発生していないと判定された場合、FP2(213)は通常処理に戻る(ステップ2507)。
【0206】
一方、ステップ2502において、ノード110に障害が発生したと判定された場合、FP2(213)は、引き継ぎ手ノードに最も適したノード110で稼動するFP3(214)に引き継ぎ手ノード変更要求を送信する(ステップ2504)。引き継ぎ手ノードに最も適したノードとは、例えば、FP3(214)が稼動するノード110のうち、負荷が最も低いノード110である。
【0207】
次に、FP2(213)は、FP1(212)に遷移するため、FP管理プログラム211にFP1(212)の生成要求を送信する(ステップ2505)。
【0208】
ステップ2505が終了すると、FP2(213)の処理が終了する(2506)。
【0209】
図26は、本発明の実施形態のFP2(213)が実行する負荷情報収集処理のフローチャートである。
【0210】
最初に、FP2(213)は、他のノード110で稼動する全てのFP3(214)に障害情報取得要求を送信する(ステップ2601)。
【0211】
次に、FP2(213)は、所定の時間、障害情報取得要求に対する各FP3(214)からの応答を待つ(ステップ2602)。
【0212】
次に、FP2(213)は、各FP3(214)から受信した応答を参照して、最も負荷が低い待機ノードを探索する。この探索の結果発見された待機ノードを、以下、「X」と記載する。
【0213】
次に、FP2(213)は、Xの負荷が自ノード110の負荷より低いか否かを判定する(ステップ2604)。Xの負荷が自ノード110の負荷より低いと判定された場合、自ノード110よりXの方が引き継ぎ手ノードに適している。この場合、処理はステップ2605に進む。一方、Xの負荷が自ノード110の負荷より低いと判定された場合、処理はステップ2608に進む。
【0214】
なお、ステップ2604では、負荷として、各ノード110にアクセスするユーザ数が比較されてもよい。例えば、Xにアクセスするユーザ数が自ノード110にアクセスするユーザ数より少ない場合、自ノード110よりXの方が引き継ぎ手ノードに適していると判定される。あるいは、負荷として、各ノード110が管理するファイルシステム数が比較されてもよい。例えば、Xが管理するファイルシステム数が、自ノードが管理するファイルシステム数より少ない場合、自ノード110よりXの方が引き継ぎ手ノードに適していると判定される。
【0215】
あるいは、現在の負荷の代わりに、各ノード110の負荷の増加率が比較されてもよい。例えば、Xの負荷の増加率が自ノード110の負荷の増加率より低い場合、自ノード110よりXの方が引き継ぎ手ノードに適していると判定される。あるいは、各ノード110の負荷の増加率から、所定の時間経過後の負荷の値を予測し、その予測された負荷の値が比較されてもよい。
【0216】
ステップ2608において、FP2(213)は、Xに割り当てられている番号(例えば、Xの識別子)を優先番号として設定する。この優先番号は、次回のステップ2404において、全ての待機ノードに送信される。
【0217】
次に、FP2(213)は、通常処理に戻る(ステップ1609)。すなわち、FP2(213)は図24のステップ2406に戻り、ステップ2406より後の処理を実行する。
【0218】
ステップ2605において、FP2(213)は、Xにおいて稼動しているFP3(214)に対して、引き継ぎ手ノード変更要求を送信する。引き継ぎ手ノード変更要求には、サービスを引き継ぐために必要なサービス情報が含まれる。このサービス情報は、引き継ぎ情報2009としてFP3(214)によって保持される。
【0219】
次に、FP2(213)は、FP3(214)に遷移するため、FP管理プログラム211にFP3(214)の生成要求を送信する(ステップ2606)。
【0220】
ステップ2606が終了すると、FP2(213)の処理が終了する(2607)。
【0221】
図27は、本発明の実施形態のFP3(214)が実行する処理のフローチャートである。
【0222】
処理が開始されると、FP3(214)は、自ノード110の障害情報を取得する(ステップ2701)。
【0223】
次に、FP3(214)は、FP2(213)から負荷情報取得要求を受信したか否かを判定する(ステップ2702)。
【0224】
ステップ2702において、負荷情報取得要求を受信したと判定された場合、FP3(214)は、受信した要求に応答する(ステップ2703)。具体的には、FP3(214)は、ステップ2701において取得した自ノード110の障害情報を、負荷情報取得要求の送信元に送信する。
【0225】
次に、FP3(214)は、受信した負荷情報取得要求に含まれる優先番号を保存する(ステップ2704)。具体的には、FP3(214)は、受信した負荷情報取得要求に含まれる優先番号を、制御情報215の優先番号2008として保持する。
【0226】
次に、FP3(214)は、受信した負荷情報取得要求に含まれるサービス変更情報を保存する(ステップ2705)。具体的には、FP3(214)は、受信した負荷情報取得要求に含まれるサービス変更情報を、制御情報215の引き継ぎ情報2009に反映させる。
【0227】
次に、FP3(214)は、FP2(213)から引き継ぎ手ノード変更要求を受信したか否かを判定する(ステップ2706)。
【0228】
ステップ2706において、引き継ぎ手ノード変更要求を受信していないと判定された場合、処理はステップ2701に戻る。
【0229】
一方、ステップ2706において、引き継ぎ手ノード変更要求を受信したと判定された場合、FP3(214)は、FP2(213)に遷移するため、FP管理プログラム211にFP2(213)の生成要求を送信する(ステップ2707)。
【0230】
ステップ2702において、負荷情報取得要求を受信していないと判定された場合、FP3(214)は、最後に負荷情報取得要求を受信してから所定の時間が経過したか否かを判定する(ステップ2708)。
【0231】
ステップ2708において、所定の時間が経過していないと判定された場合、FP2(213)が稼動するノード110に障害が発生したか否かをまだ判定することができない。この場合、処理は2706に進む。
【0232】
一方、ステップ2708において、所定の時間が経過したと判定された場合、FP2(213)が稼動するノード110に障害が発生したと判定される。この場合、FP3(214)は、FP3(214)が保持している優先番号が自ノード110に割り当てられている番号(例えば、自ノード110の識別子)と同一であるか否かを判定する。
【0233】
ステップ2708において、優先番号が自ノード110に割り当てられている番号と同一でないと判定された場合、自ノード110は、引き継ぎ手ノードに最も適した待機ノードでない。この場合、処理はステップ2706に進む。
【0234】
一方、ステップ2708において、優先番号が自ノード110に割り当てられている番号と同一であると判定された場合、自ノード110は、引き継ぎ手ノードに最も適した待機ノードである。この場合、FP2(213)に遷移するため、処理はステップ2707に進む。
【0235】
ステップ2707が終了すると、FP3(214)の処理が終了する(2710)。
【0236】
図28は、本発明の実施形態のFP管理プログラム211が実行する処理のフローチャートである。
【0237】
既に説明したように、フェールオーバプログラム210の状態遷移は、FP1(212)、FP2(213)及びFP3(214)の消滅及び生成によって実現される。例えばFP2(213)がFP3(214)に遷移する場合、FP2(213)が終了し、その後、新たなプロセスとしてFP3(214)が生成される。FP管理プログラム211は、このようなフェールオーバプログラム210の状態遷移を管理する特別なプログラムである。
【0238】
具体的には、FP管理プログラム211は、各ランクのフェールオーバプログラム210の終了を検知すると、指定されたランクのフェールオーバプログラム210(すなわち、FP1(212)、FP2(213)又はFP3(214))を新たに子プロセスとして生成する。生成されるべきランク(すなわち、状態遷移後のランク)は、終了するランクのフェールオーバプログラム210(すなわち、状態遷移前のフェールオーバプログラム210)によって事前に指定されている。生成されるべきランクが事前に指定されていなかった場合(例えば、障害発生によってフェールオーバプログラム210が終了した場合等)、状態遷移前のプロセスが終了した後、FP管理プログラム211は、FP3(214)を生成する。
【0239】
さらに、FP管理プログラム211は、起動時に、他のノード110で稼動しているFP管理プログラム211に対してサービス状況取得要求を送信する。サービス状況取得要求を受信したFP管理プログラム211は、自ノード110で稼動しているFP1(212)の数、及び、それらが提供しているサービスに関するサービス情報を応答する。この応答に基づいて、起動したFP管理プログラム211は、計算機システム内で提供されているサービスの数を知ることができる。そして、起動したFP管理プログラム211は、提供されているサービスの数のFP3(214)を生成する。
【0240】
ユーザから新規のサービスを生成する要求を受けたFP管理プログラム211は、FP2(213)を生成する。さらに、FP管理プログラム211は、他のノード110のFP管理プログラム211に、サービスの新規生成を通知する。この通知を受けたFP管理プログラム211は、新たにFP3(214)を生成する。
【0241】
以下、FP管理プログラム211の具体的な処理を説明する。
【0242】
最初に、FP管理プログラム211は、他のノード110のFP管理プログラム211から、提供されているサービスの数及びサービス情報を取得する(ステップ2801)。
【0243】
次に、FP管理プログラム211は、提供されているサービスの数と同数のFP3(214)を生成する(ステップ2802)。
【0244】
次に、FP管理プログラム211は、FP生成要求を受信したか否かを判定する(ステップ2803)。FP生成要求とは、図25のステップ2505、図26のステップ2606又は図27のステップ2707において送信された要求である。
【0245】
ステップ2803において、FP生成要求を受信していないと判定された場合、処理はステップ2806に進む。
【0246】
一方、ステップ2803において、FP生成要求を受信したと判定された場合、FP管理プログラム211は、状態遷移前のプロセス、すなわち、FP1(212)、FP2(213)又はFP3(214)が終了したか否かを判定する(ステップ2804)。
【0247】
ステップ2804において、状態遷移前のプロセスが終了していないと判定された場合、プロセスの終了を待つため、処理はステップ2804に戻る。
【0248】
一方、ステップ2804において、状態遷移前のプロセスが終了したと判定された場合、FP管理プログラム211は、FP生成要求によって指定されたプロセスを生成する(ステップ2805)。
【0249】
次に、FP管理プログラム211は、他のノード110のFP管理プログラム211からサービス状況取得要求を受信したか否かを判定する(ステップ2806)。このサービス状況取得要求は、他のノード110のFP管理プログラム211がステップ2801において送信したものである。
【0250】
ステップ2806において、サービス状況取得要求を受信していないと判定された場合、処理はステップ2803に戻る。
【0251】
一方、ステップ2806において、サービス状況取得要求を受信したと判定された場合、FP管理プログラム211は、自ノード110内で稼動しているFP1(212)の数、及び、それらのFP1(212)が提供しているサービスに関するサービス情報を、要求の送信元に送信する(ステップ2807)。
【0252】
次に、FP管理プログラム211は、他のノード110のFP管理プログラム211からサービス新規追加通知を受信したか否かを判定する(ステップ2808)。
【0253】
ステップ2808において、サービス新規追加通知を受信していないと判定された場合、処理はステップ2803に戻る。
【0254】
一方、ステップ2808において、サービス新規追加通知を受信したと判定された場合、FP管理プログラム211は、FP3(214)を生成し(ステップ2809)、ステップ2803に戻る。
【0255】
以上、本発明の実施形態によれば、サービスを提供するノードに障害が発生したときに、そのサービスの提供を引き継ぐ引き継ぎ手ノードがあらかじめ選択される。このため、障害発生時の速やかな引き継ぎが実現される。さらに、障害が発生する前にノードの負荷が変動した場合、その時点で負荷が最も低いノードが引き継ぎ手ノードとなるように引き継ぎ手ノードが変更される。このため、負荷の均衡による安定した動作が実現される。これらの処理はノードによって自動的に実行されるため、運用管理コストを低減することができる。
【図面の簡単な説明】
【0256】
【図1】本発明の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【図2】本発明の実施形態のノードのハードウェア構成を示すブロック図である。
【図3】本発明の実施形態のフェールオーバプログラムの状態遷移の説明図である。
【図4】本発明の実施形態において実行される処理の前提となる計算機システムの構成を示す説明図である。
【図5】本発明の実施形態の計算機システムが定常状態である場合に実行される処理の説明図である。
【図6】本発明の実施形態の計算機システムにおいて実行される引き継ぎ手ノード変更処理の説明図である。
【図7】本発明の実施形態において引き継ぎ手ノード変更処理が実行された後の計算機システムの説明図である。
【図8】本発明の実施形態の計算機システムにおいて実行されるサービスの引き継ぎ処理の説明図である。
【図9】本発明の実施形態においてサービスの引き継ぎ処理が実行された後の計算機システムの説明図である。
【図10】本発明の実施形態の計算機システムにおいて提供されるファイル共有サービスの具体例の説明図である。
【図11】本発明の実施形態の計算機システムにおいて実行されるサービスの引き継ぎ処理の詳細な説明図である。
【図12】本発明の実施形態の計算機システムにおいて実行されるサービスの引き継ぎ処理の詳細な説明図である。
【図13】本発明の実施形態の計算機システムにおいて引き継ぎ手ノードに障害が発生した場合に実行される処理の説明図である。
【図14】本発明の実施形態において引き継ぎ手ノードが変更された後の計算機システムの説明図である。
【図15】本発明の実施形態の計算機システムにおいて待機ノードに障害が発生した場合に実行される処理の説明図である。
【図16】本発明の実施形態の計算機システムにおいてノードが障害から回復した場合に実行される処理の説明図である。
【図17】本発明の実施形態の計算機システムにおいて提供されるサービスが追加された場合に実行される処理の説明図である。
【図18】本発明の実施形態の計算機システムにおいて提供されるサービスが追加された場合に実行される処理の説明図である。
【図19】本発明の実施の形態の計算機システムにおいて新たなノードが追加された場合に実行される処理の説明図である。
【図20】本発明の実施形態のノードが保持する制御情報の一例を示す説明図である。
【図21】本発明の実施形態のノードが保持する制御情報の別の例を示す説明図である。
【図22】本発明の実施形態のフェールオーバプログラムが実行する処理の概要の説明図である。
【図23】本発明の実施形態の第1のランクのフェールオーバプログラムが実行する処理のフローチャートである。
【図24】本発明の実施形態の第2のランクのフェールオーバプログラムが実行する処理のフローチャートである。
【図25】本発明の実施形態の第2のランクのフェールオーバプログラムが実行する障害監視処理のフローチャートである。
【図26】本発明の実施形態の第2のランクのフェールオーバプログラムが実行する負荷情報収集処理のフローチャートである。
【図27】本発明の実施形態の第3のランクのフェールオーバプログラムが実行する処理のフローチャートである。
【図28】本発明の実施形態のFP管理プログラムが実行する処理のフローチャートである。
【符号の説明】
【0257】
110A〜110E ノード
120 ディスク装置
122、124、162、201、203 インターフェース
123、161、202 CPU
125、163、204 メモリ
130 ストレージネットワーク
160 NASクライアント
180 ローカルエリアネットワーク(LAN)
210 フェールオーバプログラム(FP)
211 FP管理プログラム
212 FP1
213 FP2
214 FP3
215 制御情報

【特許請求の範囲】
【請求項1】
複数の計算機と、ネットワークを介して前記複数の計算機に接続される記憶装置と、を備える計算機システムであって、
前記複数の計算機は、第1計算機、第2計算機及び第3計算機を含み、
前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、
前記第3計算機は、前記ネットワークに接続される第3インターフェースと、前記第3インターフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記第1計算機は、
前記複数の計算機に接続されたクライアント計算機から前記記憶装置内の記憶領域へのアクセス要求を受信すると、前記要求されたアクセスを実行し、
前記アクセス要求に対する応答を前記クライアント計算機に送信し、
前記第2計算機は、
前記第1計算機に障害が発生したか否かを判定し、
前記第2計算機の負荷情報を取得し、
前記第3計算機から前記第3計算機の負荷情報を取得し、
前記取得した負荷情報が所定の条件を満たす場合、前記第3計算機に変更要求を送信し、
前記第3計算機は、
前記第2計算機から前記変更要求を受信した場合、前記第1計算機に障害が発生したか否かを判定することを特徴とする計算機システム。
【請求項2】
前記第2計算機は、前記第1計算機に障害が発生した場合、
前記変更要求を前記第3計算機に送信し、
クライアント計算機から前記記憶装置内の記憶領域へのアクセス要求を受信すると、前記要求されたアクセスを実行し、
前記アクセス要求に対する応答を前記クライアント計算機に送信することを特徴とする請求項1に記載の計算機システム。
【請求項3】
前記第1計算機に障害が発生したと判定された場合、前記第2計算機は、前記クライアント計算機からの前記アクセス要求の宛先として前記第1計算機に設定されていたアドレスと同一のアドレスを前記第2計算機に設定することを特徴とする請求項2に記載の計算機システム。
【請求項4】
前記第3計算機は、
前記第2計算機に障害が発生したか否かを判定し、
前記第2計算機に障害が発生したと判定された場合、前記第1計算機に障害が発生したか否かを判定することを特徴とする請求項1に記載の計算機システム。
【請求項5】
前記第2計算機は、前記第3計算機の負荷情報と前記第2計算機の負荷情報とを比較し、前記第3計算機の負荷が前記第2計算機の負荷より低いと判定された場合、前記取得した負荷情報が前記所定の条件を満たすと判定することを特徴とする請求項1に記載の計算機システム。
【請求項6】
前記複数の計算機は、さらに第4計算機を含み、
前記第4計算機は、前記ネットワークに接続される第4インターフェースと、前記第4インターフェースに接続される第4プロセッサと、前記第4プロセッサに接続される第4メモリと、を備え、
前記第2計算機は、さらに、
前記第4計算機から前記第4計算機の負荷情報を取得し、
前記第4計算機の負荷情報と前記第3計算機の負荷情報とを比較し、
前記第3計算機の負荷が前記第4計算機の負荷より低く、かつ、前記第3計算機の負荷が前記第2計算機の負荷より低いと判定された場合、前記第3計算機に前記変更要求を送信し、
前記第4計算機は、
前記第2計算機から前記変更要求を受信すると、前記第1計算機に障害が発生したか否かを判定することを特徴とする請求項5に記載の計算機システム。
【請求項7】
前記第2計算機は、
前記第3計算機の負荷が前記第4計算機の負荷より低いと判定された場合、前記第3計算機を識別する情報を含む優先情報を前記第3計算機及び前記第4計算機に送信し、
前記第3計算機は、
前記第2計算機に障害が発生したか否かを判定し、
前記第2計算機に障害が発生したと判定され、かつ、前記第2計算機から最後に受信した前記優先情報が前記第3計算機を識別する情報を含む場合、前記第1計算機に障害が発生したか否かを判定することを特徴とする請求項6に記載の計算機システム。
【請求項8】
前記第1計算機は、所定のタイミングで所定の信号を送信し、
前記第2計算機は、所定のタイミングで前記所定の信号を受信できなかった場合、前記第1計算機に障害が発生したと判定し、
前記第2計算機は、所定のタイミングで前記第3計算機及び前記第4計算機に負荷情報取得要求を送信し、前記第3計算機及び前記第4計算機から前記負荷情報を含む応答を受信することによって、前記第3計算機及び前記第4計算機の負荷情報を取得し、
前記第3計算機は、所定のタイミングで前記負荷情報取得要求を受信できなかった場合、前記第2計算機に障害が発生したと判定することを特徴とする請求項7に記載の計算機システム。
【請求項9】
前記計算機システムに、前記複数の計算機の一つとして、前記ネットワークに接続される第4インターフェースと、前記第4インターフェースに接続される第4プロセッサと、前記第4プロセッサに接続される第4メモリと、を備える第4計算機が追加された場合、
前記第4計算機は、
前記第2計算機に前記第4計算機の負荷情報を送信し、
前記第2計算機から前記変更要求を受信すると、前記第1計算機に障害が発生したか否かを判定することを特徴とする請求項1に記載の計算機システム。
【請求項10】
前記第1計算機は、第1ユーザによる前記記憶装置内の第1記憶領域に対する前記アクセス要求に応答する第1サービスを提供し、
前記第2計算機は、
前記第1サービスを提供する前記第1計算機に対する第1障害監視要求を送信し、
前記第1計算機から前記第1障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記第1計算機に障害が発生したと判定し、
前記複数の計算機のうち一つは、第2ユーザによる前記記憶装置内の第2記憶領域に対するアクセス要求に応答する第2サービスを提供させる指示を受信した場合、
前記第2サービスを提供する前記複数の計算機の少なくとも一つに対する第2障害監視要求を送信し、
前記複数の計算機のうち一つ以上の前記計算機の負荷情報を取得し、
前記第2障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記一つ以上の計算機のうち負荷が最も低いものに前記変更要求を送信し、
前記第2サービスを提供することを特徴とする請求項1に記載の計算機システム。
【請求項11】
前記各計算機の負荷情報は、前記各計算機の負荷を示す値を含み、
前記各計算機の負荷を示す値は、前記各計算機が備えるプロセッサの使用率、前記各計算機が備えるメモリの使用率、前記各計算機による前記ネットワークの使用率、前記各計算機による前記記憶装置に対するアクセス回数、及び、前記各計算機において稼動するプロセスの数の少なくとも一つを含むことを特徴とする請求項1に記載の計算機システム。
【請求項12】
複数の計算機と、ネットワークを介して前記複数の計算機に接続される記憶装置と、を備える計算機システムの制御方法であって、
前記複数の計算機は、第1計算機、第2計算機及び第3計算機を含み、
前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、
前記第3計算機は、前記ネットワークに接続される第3インターフェースと、前記第3インターフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記方法は、
前記第1計算機が、前記複数の計算機に接続されたクライアント計算機から前記記憶装置内の記憶領域へのアクセス要求を受信すると、前記要求されたアクセスを実行する手順と、
前記第1計算機が前記アクセス要求に対する応答を前記クライアント計算機に送信する手順と、
前記第2計算機が前記第1計算機に障害が発生したか否かを判定する手順と、
前記第2計算機が前記第2計算機の負荷情報を取得する手順と、
前記第2計算機が前記第3計算機から前記第3計算機の負荷情報を取得する手順と、
前記取得した負荷情報が所定の条件を満たすか否かを判定する手順と
前記取得した負荷情報が所定の条件を満たす場合、前記第2計算機が前記第3計算機に変更要求を送信する手順と、
前記第3計算機が前記第2計算機から前記変更要求を受信した場合、前記第3計算機が前記第1計算機に障害が発生したか否かを判定する手順と、を含むことを特徴とする方法。
【請求項13】
前記方法は、さらに、
前記第1計算機に障害が発生した場合、前記第2計算機が前記変更要求を前記第3計算機に送信する手順と、
前記第1計算機に障害が発生した場合、前記第2計算機が、前記クライアント計算機からの前記アクセス要求の宛先として前記第1計算機に設定されていたアドレスと同一のアドレスを前記第2計算機に設定する手順と、
前記第2計算機が前記設定されたアドレスを宛先とするアクセス要求を受信すると、前記第2計算機が前記要求されたアクセスを実行する手順と、
前記第2計算機が前記アクセス要求に対する応答を前記クライアント計算機に送信する手順と、を含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記方法は、さらに、
前記第3計算機が前記第2計算機に障害が発生したか否かを判定する手順と、
前記第2計算機に障害が発生したと判定された場合、前記第3計算機が、前記第1計算機に障害が発生したか否かを判定する手順と、を含むことを特徴とする請求項12に記載の方法。
【請求項15】
前記取得した負荷情報が所定の条件を満たすか否かを判定する手順は、前記第2計算機が、前記第3計算機の負荷情報と前記第2計算機の負荷情報とを比較し、前記第3計算機の負荷が前記第2計算機の負荷より低いと判定された場合、前記取得した負荷情報が前記所定の条件を満たすと判定することによって実行されることを特徴とする請求項12に記載の方法。
【請求項16】
前記複数の計算機は、さらに第4計算機を含み、
前記第4計算機は、前記ネットワークに接続される第4インターフェースと、前記第4インターフェースに接続される第4プロセッサと、前記第4プロセッサに接続される第4メモリと、を備え、
前記方法は、さらに、
前記第2計算機が前記第4計算機から前記第4計算機の負荷情報を取得する手順と、
前記第2計算機が前記第4計算機の負荷情報と前記第3計算機の負荷情報とを比較する手順と、を含み、
前記第2計算機が前記第3計算機に前記変更要求を送信する手順は、前記第3計算機の負荷が前記第4計算機の負荷より低く、かつ、前記第3計算機の負荷が前記第2計算機の負荷より低いと判定された場合に実行されることを特徴とする請求項15に記載の方法。
【請求項17】
前記方法は、さらに、
前記第3計算機の負荷が前記第4計算機の負荷より低いと判定された場合、前記第2計算機が、前記第3計算機を識別する情報を含む優先情報を前記第3計算機及び前記第4計算機に送信する手順と、
前記第3計算機が前記第2計算機に障害が発生したか否かを判定する手順と、
前記第2計算機に障害が発生したと判定され、かつ、前記第2計算機から最後に受信した前記優先情報が前記第3計算機を識別する情報を含む場合、前記第3計算機が、前記第1計算機に障害が発生したか否かを判定する手順と、を含むことを特徴とする請求項16に記載の方法。
【請求項18】
前記計算機システムに、前記複数の計算機の一つとして、前記ネットワークに接続される第4インターフェースと、前記第4インターフェースに接続される第4プロセッサと、前記第4プロセッサに接続される第4メモリと、を備える第4計算機が追加された場合、
前記方法は、さらに、前記第4計算機が前記第2計算機に前記第4計算機の負荷情報を送信する手順を含むことを特徴とする請求項12に記載の方法。
【請求項19】
前記第1計算機は、第1ユーザによる前記記憶装置内の第1記憶領域に対する前記アクセス要求に応答する第1サービスを提供し、
前記方法は、
前記第2計算機が前記第1サービスを提供する前記第1計算機に対する第1障害監視要求を送信する手順と、
前記第2計算機が前記第1計算機から前記第1障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記第2計算機が、前記第1計算機に障害が発生したと判定する手順と、
前記複数の計算機のうち一つが、第2ユーザによる前記記憶装置内の第2記憶領域に対するアクセス要求に応答する第2サービスを提供させる指示を受信した場合、前記指示を受信した計算機が、前記第2サービスを提供する前記複数の計算機の少なくとも一つに対する第2障害監視要求を送信し、
前記指示を受信した計算機が、前記複数の計算機のうち一つ以上の前記計算機の負荷情報を取得する手順と、
前記指示を受信した計算機が前記第2障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記一つ以上の計算機のうち負荷が最も低いものに前記指示を受信した計算機が前記変更要求を送信する手順と、
前記指示を受信した計算機が前記第2サービスを提供する手順と、を含むことを特徴とする請求項12に記載の方法。
【請求項20】
複数の計算機と、ネットワークを介して前記複数の計算機に接続される記憶装置と、を備える計算機システムであって、
前記複数の計算機は、第1計算機、第2計算機、第3計算機及び第4計算機を含み、
前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、
前記第3計算機は、前記ネットワークに接続される第3インターフェースと、前記第3インターフェースに接続される第3プロセッサと、前記第3プロセッサに接続される第3メモリと、を備え、
前記第4計算機は、前記ネットワークに接続される第4インターフェースと、前記第4インターフェースに接続される第4プロセッサと、前記第4プロセッサに接続される第4メモリと、を備え、
前記第1計算機は、
前記複数の計算機に接続されたクライアント計算機から第1ユーザによる前記記憶装置内の記憶領域へのアクセス要求を受信すると、前記要求されたアクセスを実行し、前記アクセス要求に対する応答を前記クライアント計算機に送信する第1サービスを提供し、
前記第2計算機から、前記第1サービスを提供する前記第1計算機に対する第1障害監視要求を受信すると、前記第1障害監視要求に対する応答を前記第2計算機に送信し、
前記第2計算機は、
前記第1障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記第1計算機に障害が発生したと判定し、
前記第2計算機の負荷情報を取得し、
所定のタイミングで前記第3計算機及び前記第4計算機に負荷情報取得要求を送信し、前記第3計算機及び前記第4計算機から前記負荷情報を含む応答を受信することによって、前記第3計算機の負荷情報及び前記第4計算機の負荷情報を取得し、
前記第4計算機の負荷情報と前記第3計算機の負荷情報とを比較し、
前記第3計算機の負荷が前記第4計算機の負荷より低いと判定された場合、前記第3計算機の負荷情報と前記第2計算機の負荷情報とを比較し、
前記第3計算機の負荷が前記第2計算機の負荷より低いと判定された場合、前記第3計算機に変更要求を送信し、
前記第3計算機の負荷が前記第4計算機の負荷より低いと判定された場合、前記第3計算機を識別する情報を含む優先情報を前記第3計算機及び前記第4計算機に送信し、
記第1計算機に障害が発生したと判定された場合、前記クライアント計算機からの前記アクセス要求の宛先として設定されていたアドレスと同一のアドレスを前記第2計算機に設定し、
前記設定されたアドレスを宛先とするアクセス要求を受信すると、前記要求されたアクセスを実行し、
前記アクセス要求に対する応答を前記クライアント計算機に送信し、
前記第3計算機は、
前記第2計算機に前記第3計算機の負荷情報を送信し、
前記第2計算機から前記変更要求を受信した場合、前記第1計算機に障害が発生したか否かを判定し、
所定のタイミングで前記負荷情報取得要求を受信できなかった場合、前記第2計算機に障害が発生したと判定し、
前記第2計算機に障害が発生したと判定され、かつ、前記第2計算機から最後に受信した前記優先情報が前記第3計算機を識別する情報を含む場合、前記第1計算機に障害が発生したか否かを判定し、
前記第4計算機は、
前記第2計算機に前記第4計算機の負荷情報を送信し、
前記第2計算機から前記変更要求を受信すると、前記第1計算機に障害が発生したか否かを判定し、
前記計算機システムに、前記複数の計算機の一つとして、前記ネットワークに接続される第5インターフェースと、前記第5インターフェースに接続される第5プロセッサと、前記第5プロセッサに接続される第5メモリと、を備える第5計算機が追加された場合、前記第5計算機は、
前記第2計算機に前記第5計算機の負荷情報を送信し、
前記第2計算機から前記変更要求を受信すると、前記第1計算機に障害が発生したか否かを判定し、
前記複数の計算機のうち一つは、第2ユーザによる前記記憶装置内の第2記憶領域に対するアクセス要求に応答する第2サービスを提供させる指示を受信した場合、
前記第2サービスを提供する前記複数の計算機の少なくとも一つに対する第2障害監視要求を送信し、
前記複数の計算機のうち一つ以上の前記計算機の負荷情報を取得し、
前記第2障害監視要求に対する応答を所定のタイミングで受信できなかった場合、前記一つ以上の計算機のうち負荷が最も低いものに前記変更要求を送信し、
前記第2サービスを提供し、
前記各計算機の負荷情報は、前記各計算機の負荷の高さを示す値を含み、
前記各計算機の負荷の高さを示す値は、前記各計算機が備えるプロセッサの使用率、前記各計算機が備えるメモリの使用率、前記各計算機による前記ネットワークの使用率、前記各計算機による前記記憶装置に対するアクセス回数、及び、前記各計算機において稼動するプロセスの数の少なくとも一つを含むことを特徴とする計算機システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2009−25965(P2009−25965A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−186983(P2007−186983)
【出願日】平成19年7月18日(2007.7.18)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】