Processing

Please wait...

Settings

Settings

Goto Application

1. WO2012063294 - COMPUTER SYSTEM

Document

明 細 書

発明の名称 計算機システム

技術分野

0001  

背景技術

0002   0003   0004  

先行技術文献

特許文献

0005  

発明の概要

発明が解決しようとする課題

0006   0007   0008  

課題を解決するための手段

0009  

発明の効果

0010  

図面の簡単な説明

0011  

発明を実施するための形態

0012  

実施例 1

0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151  

符号の説明

0152  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20  

明 細 書

発明の名称 : 計算機システム

技術分野

[0001]
 本発明は、サーバ仮想化環境において可用性を上げるために複数の計算機ノードを多重化して構成された計算機システムに関し、特に計算機ノード上のホストマシンおよび各仮想マシンの障害監視と計算機ノードの系切り替えを行う方法に関する。

背景技術

[0002]
 サーバ仮想化技術は、1台の物理計算機上で複数の仮想マシンを実行し、物理計算機の台数を削減することで、運用コスト、計算機の設置スペース及び消費電力等を削減できるメリットがあり、近年、注目を浴びている。ただし、物理計算機で運用していたシステムと同様な信頼性の確保のため、仮想化環境を提供する物理計算機の多重化とともに、各物理計算機で制御・運用される仮想マシンの多重系構成も要求されている。
[0003]
 特許文献1には、物理計算機上の各仮想マシン単位で、障害を検知し系を切替える方法が開示されている。特許文献1では、図20に示すように、物理計算機2001と2031が、LANを介して多重化されており、物理計算機A2001はホストマシン2002および仮想マシン2005と2015を備えたサーバ仮想化環境を備えており、物理計算機B2031も同様な構成を備えている。また、障害検知方法および系切替え方法として、物理計算機A2001上の仮想マシンA2005上にゲストクラスタプログラム2007、仮想マシンB2015上にゲストクラスタプログラム2017、および、ホストマシン2002上にホストクラスタプログラム2003を設けている。物理計算機B2031も同様な構成である。
[0004]
 ゲストクラスタプログラム2007と2017または2037と2047は、アプリケーションプログラム2006、2016、2036、2046の稼働状況を監視しつつ、ホストクラスタプログラム2003または2033に監視結果を通知する。また、ゲストクラスタプログラム2007、2017は、ホストクラスタプログラム2003から系切替え命令を受けた場合には、各々対応する仮想マシン2005、2015に対する主系/従系モードの系切替えを実施する。仮想マシンが主系モードの時には、 アプリケーションが入力されたデータに対して処理を行い処理結果を出力する。一方、仮想マシンが従系モードの時には、 アプリケーションが入力されたデータに対して処理を行うが処理結果の出力は行わない。また、ゲストクラスタプログラム2037、2047も同様に、ホストクラスタプログラム2033から系切替え命令を受けた場合には、各々対応する仮想マシン2035、2045に対する主系/従系モードの系切替えを実施する。一方、ホストクラスタプログラム2003または2033は、同じ物理計算機上で稼動している各仮想マシン(仮想マシン2005と2015または仮想マシン2035と2045)の稼働状況を監視し、例えば、主系モードの仮想マシンA2005が停止していることを検知した場合には、仮想マシンA2035を従系モードから主系モードへ切り替える。 

先行技術文献

特許文献

[0005]
特許文献1 : 特開2008-269332号公報

発明の概要

発明が解決しようとする課題

[0006]
 特許文献1では、物理計算機上の仮想マシン単位での障害を検知し障害発生時には主系と従系との間の系切り替えを実施する。例えば、図20において、物理計算機A2001上の各仮想マシン2005と2015が全て主系モードで、物理計算機B2031上の各仮想マシン2035と2045が全て従系モードの場合に、物理計算機A2001上の仮想マシンA2005が障害とする。この場合には、物理計算機B上の仮想マシンA2035が従系モードから主系モードに切り替わって稼働する。この場合物理計算機Aには主系モードの仮想マシンと従系モードの仮想マシンが混在した状態となる。物理計算機Bも同様に主系モードおよび従系モードの仮想マシンが混在した状態となる。
[0007]
 しかしながら、物理計算機に対してハードウェア保守を行いたい場合には、物理計算機上の全ての仮想マシンが従系モード(または停止モード)でなければ、物理計算機を一旦停止させることができない。なぜなら、主系モードの仮想マシンは実際の処理を行った結果を出力しているから、処理中の仮想マシンを停止することができない。つまり、物理計算機上に主系モードの仮想マシンおよび従系モードの仮想マシンが混在している状態では、ハードウェア保守を行うことができない問題がある。
[0008]
 そこで、仮想化計算機の多重系構成制御において、物理計算機上に搭載されている複数の仮想マシンがなるべく同じの動作モードとなるように、各仮想マシンの系切替えを実施する技術を提供する。

課題を解決するための手段

[0009]
 計算機システムは複数の計算機ノードを有し、各計算機ノードは複数の仮想計算機と仮想計算機を制御する制御基盤部とを有する。各仮想計算機は、自計算機ノードとは別の他の計算機ノード上で動作している他の仮想計算機と多重化グループを構成し、いずれか一方が主系仮想計算機として動作し他方が従系仮想計算機として動作している。制御基盤部は、各仮想計算機について、主系/従系仮想計算機のいずれとして動作しているのかを管理し、各仮想計算機各々の状態を監視している。制御基盤部は、自計算機ノード上で主系仮想計算機として動作する仮想計算機の障害を検知した場合に、予め定められた規則に従って、障害が生じた仮想計算機とともに自計算機ノード上で動作する他の仮想計算機も主系仮想計算機から従系仮想計算機へ切り替えるかどうか判定する。

発明の効果

[0010]
 仮想化計算機の多重系構成制御において、物理計算機上に搭載されている複数の仮想マシンがなるべく同じの動作モードとなるように、各仮想マシンの系切替えを実施することができる。

図面の簡単な説明

[0011]
[図1] 仮想化多重システムの構成例を示す図である。
[図2] 計算機ノードの構成例を示す図である。
[図3] 計算機ノード構成管理テーブルの構成例を示す図である。
[図4] VM状態管理テーブルの構成例を示す図である。
[図5] リソース管理テーブルの構成例を示す図である。
[図6] 系切替制御テーブルの構成例を示す図である。
[図7] VM1を対象とした系切替制御テーブルの例を示す図である。
[図8] 計算機ノード間通信フォーマットの一例を示す図である。
[図9] 多重系制御エージェントプログラムと多重系制御基盤プログラム間の通信フォーマットの一例を示す図である。
[図10] 仮想化多重系システムで実行される処理の一例を示すフローチャートである。
[図11] リソース監視処理の一例を示す図である。
[図12] リソース監視処理の一例を示すフローチャートである。
[図13] 系切替通知処理の一例を示すフローチャートである。
[図14] メッセージ送信処理の一例を示すフローチャートである。
[図15] ノード監視処理の一例を示すフローチャートである。
[図16] 生死監視処理の一例を示すフローチャートである。
[図17] 全VM切替処理の一例を示すフローチャートである。
[図18] 主系処理の一例を示すフローチャートである。
[図19] 従系処理の一例を示すフローチャートである。
[図20] 計算機システムの一例を示す図である。

発明を実施するための形態

[0012]
 以下、実施の形態を図面を用いて説明する。なお、本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明に該当する。
実施例 1
[0013]
<図1:全体構成例>
 図1は、仮想化多重システムの全体構成例である。
[0014]
 仮想化多重系システム1は一つまたは複数の端末2と外部ネットワーク3を介して接続される。仮想化多重系システム1は二台の計算機ノード100(図1では計算機ノードA 100-Aと計算機ノードB 100-B)と内部ネットワーク4より構成されている。
[0015]
 計算機ノード100はメモリ101、プロセッサ102、記憶装置103、外部通信インタフェース104(図中、インタフェースをI/Fと略記)、ノード間通信I/F105を備える。計算機ノードA 100-Aと計算機ノードB 100-Bは共に同様の構成を有する。
[0016]
 メモリ101内にはホストオペレーティングシステム400(図中、ホストOSと略記)、多重系制御基盤プログラム300と一つまたは複数の仮想マシン環境200(図中、VMと略記)が保持される。ホストOS400内には仮想化プログラム401とデバイス制御プログラム402が保持される。多重系制御基盤プログラム300は計算機ノード構成管理テーブル301、VM状態管理テーブル302、リソース管理テーブル303、系切替制御テーブル304と計算機ノード監視部305から構成される。VM200はアプリケーション211(図中、APと略記)、多重系制御エージェントプログラム212、ゲストオペレーティングシステム213(図中、ゲストOSと略記)から構成される。
[0017]
 尚、図1では端末2として三台の端末2-A、2-B、2-Cが仮想化多重系システム1に接続されており、また計算機ノードA 100-A内にはVM200としてVM1 200-A、VM2 200-B、VM3 200-Cが備えられている例を示したが、特に台数は限定されるものではない。
[0018]
 仮想化多重系システム1内の計算機ノードA 100-A、計算機ノードB 100-Bは内部ネットワーク4を介して接続される。計算機ノード100では、外部ネットワーク3は外部通信I/F104に接続し、内部ネットワーク4はノード間通信I/F105に接続する。
[0019]
 端末2は外部ネットワーク3を介して仮想化多重系システム1に要求を送信し、仮想化多重系システム1は要求を処理した結果を端末2に返信する。仮想化多重系システム1内の計算機ノードA 100-A、計算機ノードB 100-Bは、一方が「主系ノード」、他方が「従系ノード」として動作する。端末2からの要求は計算機ノードA 100-A、計算機ノードB 100-B両方で受取られ、処理されるが、正常な状態で動作する場合には、処理結果は「主系ノード」である計算機ノード100だけが端末2に返信する。外部通信I/F104などの故障で主系ノードの処理継続に支障が生じた時に、計算機ノード100間の主系ノード/従系ノードの関係は切替る。
[0020]
 計算機ノード100の記憶装置103はホストOS400、多重系制御基盤プログラム300(プログラムと各種テーブル情報)、VM200を構成するAP211、多重系制御エージェントプログラム212、ゲストOS213を格納する。プロセッサ102は記憶装置103からホストOS400、多重系制御基盤プログラム300、VM200構成物をメモリ101に展開、実行し、また外部通信I/F104やノード間通信I/F105からの割込みを処理する。外部通信I/F104は外部ネットワーク3を通じて端末2とのデータの送受信を行う。ノード間通信I/F105は内部ネットワーク4を通じて他の計算機ノード100との間でデータの送受信を行う。
[0021]
 仮想化プログラム401はVM200を作成、管理するためのプログラムであり、デバイス制御プログラム402は外部通信I/F104、ノード間通信I/F105や記憶装置103にアクセスするためのプログラムである。ホストOS400は仮想化プログラム401やデバイス制御プログラム402を用いて、多重系制御基盤プログラム300やVM200の実行を制御し、外部通信I/F104、ノード間通信I/F105や記憶装置103へのアクセス制御を行う。
[0022]
 VM200は固有のプログラムやオペレーティングシステムが動作することが可能な、仮想化プログラム401により作成された仮想的な実行環境である。複数のVM200が存在する場合に、異なるVM200内で動作するプログラムやオペレーティングシステムは同じでも良いし、異なっていても良い。また、異なるVM200内で動作するプログラムやオペレーティングシステムが互いに直接影響を与え合うことはない。VM200は仮想化多重系システム1内で一意の識別子を持ち、例えば、図1中のVM200は「VM1」、「VM2」、「VM3」の識別子を保有する。また異なる計算機ノード100内で動作する任意のVM200の対(ペア)は、「主系VM」/「従系VM」の関係を持つ。通常、主系ノードの計算機ノード100内のVM200は「主系VM」となり、従系ノードの計算機ノード100内のVM200は「従系VM」となる。「主系VM」/「従系VM」の関係を持つVM200の対は、二つの単体VM200間で構成される場合もあるし、一つの計算機ノード100内の複数のVMグループが協同してアプリケーションを実行してサービスを提供する場合には複数のVM200から構成されるVMグループ間で構成される場合もある。主系VMの動作に異常が生じた場合には、「主系VM」/「従系VM」の関係を入れ替える、系切替処理が行われる。
[0023]
 AP211は端末2からの要求を処理する。AP211は自身が動作するVM200が主系VM、従系VMのいずれであっても端末2からの要求を読取り、演算処理を行うが、端末2への応答動作は異なる。主系VMで動作するAP211は演算結果を端末2へ返答するが、従系VMで動作するAP211は演算結果を返答しない。AP211は「系切替」を行うことで端末2への返答動作を切替える。
[0024]
 多重系制御エージェントプログラム212は多重系制御基盤プログラム300との間で情報通信を行うプログラムであり、AP211の動作状態を監視して多重系制御基盤プログラム300に通知したり、多重系制御基盤プログラム300からの指示に従ってAP211の系切替を行ったりする。AP211の動作状態を監視する方法の詳細は図11、図12と共に後述する。
[0025]
 ゲストOS213はVM200の環境内でAP211や多重系制御エージェントプログラム212の動作を制御する。
[0026]
 多重系制御基盤プログラム300は、他の計算機ノード100内で動作する多重系制御基盤プログラム300との間で情報を交換することで仮想化多重系システム1内のVM200の状態を判断し、VM200の「主系VM」/「従系VM」の系切替を制御する。主系ノードである計算機ノード100内で動作する多重系制御基盤プログラム300はVM200の状態判断と系切替の実行を指示し、従系ノードの計算機ノード100内で動作する多重系制御基盤プログラム300は主系ノードの生死状態を監視する。計算機ノード100の監視は、主系ノード、従系ノードの双方から行う方式も有り得るが、本実施形態では従系ノードからのみ実行する。しかし、本発明の思想がこれに限定されるものでは無い。多重系制御基盤プログラム300のVM200の状態判断の詳細は図13と共に後述する。系切替や生死状態監視処理についての詳細は、計算機ノード監視部305の処理説明として、図14、図15、図16、図17、図18、図19と共に後述する。
[0027]
 計算機ノード構成管理テーブル301は多重系制御基盤プログラム300が計算機ノード100の主系ノード/従系ノードなどの状態を管理するためのテーブルである。詳細は図3と共に後述する。
[0028]
 VM状態管理テーブル302は多重系制御基盤プログラム300が計算機ノード100内のVM200の主系VM/従系VMなどの状態を管理するためのテーブルである。詳細は図4と共に後述する。
[0029]
 リソース管理テーブル303は多重系制御基盤プログラム300が、VM200が使用しているメモリ101や実行しているAP211、他のVM200との関係などの「リソース」を管理するためのテーブルである。詳細は図5と共に後述する。
[0030]
 系切替制御テーブル304は多重系制御基盤プログラム300が、VM200が使用するリソースに異常が発生した時などにおける、障害内容とこれに対する対応動作を記載したテーブルである。詳細は図6、図7と共に後述する。
[0031]
 計算機ノード監視部305は多重系制御基盤プログラム300が他の計算機ノード100内で動作する多重系制御基盤プログラム300との間で通信を行い、生死状態監視処理を行う処理である。計算機ノード監視部305は多重系制御基盤プログラム300を構成するプログラムではあるが、多重系制御基盤プログラム300の処理とは独立した契機で活動する。詳細は図14、図15、図16、図17、図18、図19と共に後述する。
<図2:仮想化環境構成例>
 図2は計算機ノードの構成の例を示す図である。アプリケーションやオペレーティングシステムの動作環境であるVM200は仮想的な計算機の実行環境であり、実際には、計算機ノード100内のメモリ101やプロセッサ102などの現存するリソースを割当てることで構築される。
[0032]
 図2は計算機ノード100のメモリ101、プロセッサ102、外部通信I/F104等のリソースを複数のVM200やホストOS400への割当てた例を示した図である。
[0033]
 図2中において、計算機ノードA 100-A内には複数のVM200(VM1 200-A、VM2 200-B、VM3 200-C)が作成されている。メモリ101は複数のメモリ領域に分割することが可能で、それぞれのメモリ領域が個別に各VM200やホストOS400に割り当てられたり、共有されたりする。プロセッサ102は「マルチコア」のプロセッサで、コア単位でVM200やホストOS400に割り当てられたり、共有されたりする。外部通信I/F104は計算機ノード100内には複数存在し、それぞれの外部通信I/F104がVM200やホストOS400に割り当てられたり、共有されたりする。
[0034]
 仮想環境VM1 200-Aは、プロセッサ102のVM1占有コア#1 102-A、VM1占有メモリ101-AとVM1とVM2間共有メモリ101-Bのメモリ領域、VM1とVM2共有外部通信I/F104-Aのリソースを使用して構築される。仮想環境VM1 200-Aは、プロセッサ102のVM2占有コア#2 102-B、VM2占有メモリ101-CとVM1とVM2共有メモリ101-Bのメモリ領域、VM1とVM2共有外部通信I/F104-Aのリソースを使用して構築される。
VM1 200-A、VM2 200-Bに割当てられていないリソースであるプロセッサ102のホストOS占有コア#0 102-Cは、ホストOS400のみが使用するプロセッサ・コアで、VM200から使用されることは無い。また外部通信I/F104-BはホストOS400と、VM1 200-AとVM2 200-B以外のVM200が使用する。
[0035]
 計算機ノードB 100-B内にも複数のVM201(VM4 201-A、VM5 201-B、VM6 201-C)が作成されており、各VM201やホストOS400には計算機ノードB 100-B内のリソースが割り当てられる。
<図3:計算機ノード構成管理テーブル>
 図3は計算機ノード構成管理テーブル301の構成例を示す図である。計算機ノード構成管理テーブル301は多重系制御基盤プログラム300内に保持され、仮想化多重系システム1内の計算機ノード100の状態情報を格納する。仮想化多重系システム1内の各計算機ノードA 100-A、計算機ノードB 100-Bは、同じ内容の計算機ノード構成管理テーブル301を保持する。
[0036]
 計算機ノード識別子311には仮想化多重系システム1内の計算機ノード100を識別する一意の情報を格納する。
[0037]
 主/従系状態フラグ312には各計算機ノード100が「主系ノード」、「従系ノード」のいずれの状態にあるかを識別する情報を格納する。対象の計算機ノード100が主系ノードの場合は「M」を格納し、従系ノードの場合は「S」を格納する。
[0038]
 マルチキャストアドレス313には計算機ノード100にアクセスするための、内部ネットワーク4のマルチキャストアドレスを格納する。
[0039]
 生死状態フラグ314には計算機ノード100の正常/異常状態を識別する情報を格納する。計算機ノード100が「正常状態」の場合には「0」値を格納し、「異常状態」の場合には「1」を格納する。本発明の実施の形態では正常/異常状態を「0/1」値で表すが、正常/異常状態の識別が可能な情報であれば格納情報は「0/1」値に限らない。
[0040]
 監視周期315は計算機ノード100の状態を監視する周期時間を格納する。従系ノードの多重系制御基盤プログラム300の計算機ノード監視部305は、監視周期315の時間周期で、主系ノードの計算機ノード100の状態を取得する。主系ノードは従系ノードの計算機ノード100の状態取得要求に応じて、状態情報を返信する。
[0041]
 生死確定カウンタ316は計算機ノード100の状態取得要求に対して応答が無かった場合に、相手計算機ノード100が異常状態にあることを判断するためのしきい値を格納する。生死確定カウンタ316の回数分、状態取得要求に対する相手計算機ノード100からの返信が連続して無かった場合は、相手計算機ノード100が異常状態にあると判断する。
<図4:VM状態管理テーブル>
 図4は本発明の実施の形態のVM状態管理テーブル302の構成を示す図である。VM状態管理テーブル302は多重系制御基盤プログラム300内に保持され、計算機ノード100内に作成されているVM200の状態情報を保持する。
[0042]
 VM状態管理テーブル302に格納される状態情報は計算機ノード100毎に異なる。計算機ノードA 100-AのVM状態管理テーブル302はVM1 200-A、VM2 200-B、VM3 200-Cの状態情報を保持する。計算機ノードB 100-BのVM状態管理テーブル302はVM4 201-A、VM5 201-B、VM6 201-Cの状態情報を保持する。
管理VM総数321には一台の計算機ノード100内に作成されているVM200の総数を格納する。
[0043]
 障害VM総数322には一台の計算機ノード100内に作成されているVM200内、異常状態にあるVM200の個数を格納する。障害VM総数322は「0」以上、管理VM総数321の値以下の値となる。
[0044]
 VM識別子323には仮想化多重系システム1内でVM200を一意に識別する情報を格納する。行328はVM1 200-Aの状態情報を格納した行であることを示す。
[0045]
 ホスト計算機ノード識別子324はVM200が作成されている計算機ノード100の識別情報を格納する。
[0046]
 主/従系状態フラグ325にはVM200の「主系VM」、「従系VM」を識別する情報を格納する。対象のVM200が主系VMの場合は「M」を格納し、従系VMの場合は「S」を格納する。
[0047]
 生死状態フラグ326にはVM200の正常/異常状態を識別する情報を格納する。VM200が「正常状態」の場合には「0」値を格納し、「異常状態」の場合には「1」を格納する。本発明の実施の形態では正常/異常状態を「0/1」値で表すが、正常/異常状態の識別が可能な情報であれば格納情報は「0/1」値に限らない。
[0048]
 主/従系構成VM情報327には、VM識別子323のVM200と主系VM/従系VMの関係に対応するVM200の情報を格納する。ホスト計算機ノード識別子327-Aには対応するVM200が作成されている計算機ノード100の識別情報を格納し、VM識別子327-Bには対応するVM200を一意に特定する識別情報を格納する。
<図5:リソース管理テーブル>
 図5はリソース管理テーブル303の構成例を示す図である。リソース管理テーブル303は多重系制御基盤プログラム300内に保持され、VM200が使用する個別リソースの状態情報を格納する。リソース管理テーブル303に格納される状態情報は計算機ノード100毎に異なる。計算機ノードA 100-Aのリソース管理テーブル303はVM1 200-A、VM2 200-B、VM3 200-Cが使用するリソースの状態情報を保持する。計算機ノードB 100-Bのリソース管理テーブル303はVM4 201-A、VM5 201-B、VM6 201-Cが使用するリソースの状態情報を保持する。
[0049]
 VM識別子331にはVM200を一意に識別する情報を格納し、リソース識別子332にはVM200が使用するリソースを一意に特定する情報を格納する。行336はVM1 200-AがAP1 211-Aをリソースとして使用していることを意味する。
[0050]
 監視周期333には使用リソースの正常/異常状態を監視するための周期時間を格納する。リソース状態の取得をイベントなどの契機で行い、周期的に監視しない場合は無効値である「0」を格納する。
[0051]
 リソース生死状態フラグ334には使用リソースの正常/異常状態を識別する情報を格納する。リソースの状態が「正常状態」の場合には「0」値を格納し、「異常状態」の場合には「1」を格納する。本発明の実施の形態では正常/異常状態を「0/1」値で表すが、正常/異常状態の識別が可能な情報であれば格納情報は「0/1」値に限らない。
[0052]
 リソース詳細情報335には所有状態335-Aと個別情報335-Bの項目が含まれる。所有状態335-AにはVM200のリソースを使用する形態を格納し、個別情報335-Bにはリソース状態の取得手段を示す情報を格納する。
[0053]
 例えば図5における所有状態335-Aの値、「占有」は使用リソースをVM1 200-Aのみで使用することを意味し(行336)、「共有」は使用リソースをVM1 200-Aと他VM200とで使用することを意味し(行338)、「論理/SERVER」はVM1 200-AがVM2 200-Bと論理的な繋がりのあるグループを形成して「サーバ」の関係になっていることを意味し(行339)、「論理/CLIENT」はVM2 200-BがはVM1 200-Aと論理的な繋がりのあるグループを形成して「クライアント」の関係になっていることを意味する(行340)。
[0054]
 例えば図5における個別情報335-Bの値、「212」は使用リソースAP1 211-Aの状態を多重系制御エージェントプログラム212が取得することを意味し(行336)、「EVT」は使用リソースVM1占有メモリ101-A状態の取得はハードウェア状態を検知する計算機ノード100のハードウェア機能などが送出するシグナル信号を検出することで行う事を意味する(行337)。図5の例では、多重系制御エージェントプログラム212は監視周期333に格納された値の周期で使用リソースAP1 211-Aの状態を取得するが(行336)、「EVT」の場合はハードウェア機能は使用リソースVM1占有メモリ101-Aの状態に変化が生じた時にだけシグナル信号を送出するので監視周期333の格納値は使用しない(行337)。
<図6:系切替制御テーブル>
 図6は系切替制御テーブル304の構成例を示す図である。系切替制御テーブル304は多重系制御基盤プログラム300内に保持され、障害発生時に多重系制御基盤プログラム300がVM200の主系VM/従系VMの系切替を行うための規則を格納する。仮想化多重系システム1内の各計算機ノード100は同じ内容の系切替制御テーブル304を保持している。
[0055]
 障害内容341には計算機ノード100やVM200の障害発生部位を指定する情報を格納する。図6における「計算機ノード障害」は計算機ノード100自体の動作継続に支障が生じる部位の指定情報であることを示す。VM200の障害発生部位は、全てのVM200を対象に、使用リソースの所有状態種別毎にリソース識別子を格納する。
[0056]
 系切替対象VM342には、障害内容341に障害発生時に系切替対象となるVM200のVM識別子を格納する。図6における「全VM」は障害が生じた計算機ノード100内に存在する全てのVM200を系切替対象とすることを意味する。「該当VMのみ」は障害が発生したリソースを使用するVM200だけが系切替対象となることを意味し、実際には当該VM200の識別子が格納される。「関連全VM」は障害が発生したリソースを共用する複数のVM200、または障害が発生したリソースを使用しているVM200及び当該VM200と論理的なグループ関係にある複数のVM200が一緒に系切替対象となることを意味し、実際には系切替対象となる複数のVM200の識別子が格納される。
[0057]
 過半数判断ロジック適用要否343にはVM200の系切替実行時に「過半数判断ロジック」の適用の有無を指定する情報を格納する。「要」は「過半数判断ロジック」を適用することを意味し、「否」は「過半数判断ロジック」を適用しないことを意味する。「過半数判断ロジック」は主系VM/従系VMの系切替対象となるVM200を再評価する処理であり、VM状態管理テーブル302の障害VM総数322と系切替対象VM342のVM200の合計数が、VM状態管理テーブル302の管理VM総数321の半数以上であるかを判断し、系切替対象のVM200を決定する。過半数であれば「過半数判断ロジック」は全VMを系切替対象と決定し、半数未満であれば系切替対象VM342に格納されたVM200のみを系切替対象とする。
[0058]
 Failback処理適用可否344には系切替を行ったVM200に「フェイルバック」処理の適用の可否を指定する情報を格納する。「可」は系切替を行ったVM200をフェイルバックしても良いことを意味し、「否」は系切替を行ったVM200をフェイルバックしてはいけないことを意味する。「フェイルバック」とはVM200の主系VM/従系VMの状態を系切替実行前に戻す処理のことである。主系VMのVM200に障害が発生すると多重系制御基盤プログラム300により系切替が実行され、VM200は従系VMに切替る。「フェイルバック」処理は、系切替後の従系VMのVM200を、後に障害回復した際に再度系切替を実行して、主系VMに戻す処理を行う。
<図7:VM1障害内容と系切替制御内容例>
 図7は計算機ノードA 100-Aに作成されたVM1 200-Aを対象とした系切替制御テーブル304の例を示した図である。VM1 200-Aは、占有リソースとしてAP1 211-AとVM1占有メモリ101-Aを、共有リソースとしてVM1とVM2共有メモリ101-BとVM1とVM2共有外部通信I/F104-Aを使用し、論理リソースとしてVM2 200-Bとグループ関係にある。障害内容341には「VM1占有リソース障害」としてAP1 211-AとVM1占有メモリ101-Aを格納し(行352)、「VM1共有リソース障害」としてVM1とVM2共有メモリ101-BとVM1とVM2共有外部通信I/F104-Aを格納し(行353)、「VM1論理リソース障害」としてVM2 200-Bを格納する。
[0059]
 行351はVM1 200-Aが存在する計算機ノードA 100-Aが障害により動作継続不可となった場合の系切替規則で、計算機ノードA 100-A内の全VM200が系切替対象となり、「過半数判断ロジック」と「フェイルバック」処理は適用しない。
[0060]
 行352は占有リソースのAP1 211-AとVM1占有メモリ101-Aが障害で使用不能となった場合の系切替規則で、VM1 200-Aのみが系切替対象となり、系切替実行時に「過半数判断ロジック」を適用し、占有リソースの障害回復時には「フェイルバック」処理を行う。
[0061]
 行353は共有リソースのVM1とVM2共有メモリ101-BとVM1とVM2共有外部通信I/F104-Aが障害で使用不能となった場合の系切替規則で、共に同じリソースを使用するVM1 200-AとVM2 200-Bが系切替対象となり、系切替実行時に「過半数判断ロジック」を適用し、共有リソースの障害回復時には「フェイルバック」処理を行う。
[0062]
 行354はグループ関係にあるVM2 200-Bが障害で動作不能となった場合の系切替規則で、同一グループ内のVM1 200-AとVM2 200-Bが系切替対象となり、系切替実行時に「過半数判断ロジック」を適用し、VM2 200-Bの障害回復時には「フェイルバック」処理を行う。
<図8:計算機ノード間通信フォーマット>
 図8は計算機ノード間通信フォーマット500を示す図である。計算機ノード間通信フォーマット500は異なる計算機ノード100の多重系制御基盤プログラム300の間で送受信される通信データのフォーマットで、計算機ノード100の動作状況を取得する「生死監視」、及び主系VM/従系VMの系切替要求である「フェイルバック」、「異常VM系切替」、「全VM系切替」の用途で用いられる。
[0063]
 計算機ノード識別子501には通信データを生成した計算機ノード100を特定する識別子を格納する。通信データ生成時には、送受信される当該通信データを識別する情報をシーケンス番号502に格納し、また当該通信データ生成時の時刻情報を送信タイムスタンプ503に格納する。
[0064]
 通信種類504は通信データの用途を識別する情報を格納する。通信用途を識別する情報として、生死504-A、FailBack504-B、異常VM504-C、全VM504-Dのうちの一つを使用する。従系ノードから主系ノードへ「生死監視」を行う場合には生死504-Aを使用し、主系ノードから従系ノードへ異常状態になった特定の主系VMの系切替を指示する「異常VM系切替」の場合には異常VM504-Cを使用し、全ての主系VMの系切替を指示する「全VM系切替」の場合には全VM504-Dを使用し、VM200の状態が回復した際に切替っていた主系VM/従系VMの状態を元に戻す「フェイルバック」を指示する場合にはFailBack504-Bを使用する。
[0065]
 計算機ノード100の間でデータ通信を行う際には、相手計算機ノード100に自計算機ノード100内のVM200の状態を通知するために、VM状態管理テーブル内容505にはVM状態管理テーブル302の内容を格納し、リソース管理テーブル内容506にはリソース管理テーブル303の内容を格納する。
「生死監視」などの用途での計算機ノード100間でデータ通信では、相手計算機ノード100状態の異常発生などにより、発信したデータ通信に対する応答が返ってこないなどの応答異常が発生する場合がある。応答異常カウント507には応答異常の発生回数を格納する。
<図9:多重系制御エージェントプログラムと多重系制御基盤プログラム間の通信フォーマット>
 図9は多重系制御エージェントプログラムと多重系制御基盤プログラム間の通信フォーマット600を示す図である(以降、プログラム間通信フォーマット600と称する)。プログラム間通信フォーマット600は計算機ノード100内の多重系制御基盤プログラム300と多重系制御エージェントプログラム212の間で送受信されるデータ通信のフォーマットである。
[0066]
 VM識別子601には通信元/先のVM200を特定する情報を格納し、シーケンス番号602には送受信される通信データを識別する情報を格納し、送信タイムスタンプ603には通信データ生成時の時刻情報を格納する。
[0067]
 多重系制御基盤プログラム300と多重系制御エージェントプログラム212の間でVM200が使用するリソース情報の通知を行う場合には、リソース管理テーブル内容604にリソース管理テーブル303の内容を格納する。
[0068]
 多重系制御基盤プログラム300と多重系制御エージェントプログラム212の間で主系VM/従系VMの系切替要求を通知したい場合には、系切替要求605に値を設定する。本発明の形態では、系切替要求がある場合には「1」を設定し、系切替要求が無い場合には「0」を設定するが、系切替要求の有無が識別可能であれば「0/1」値に限られるものではない。
<図10:仮想化多重系システムの全体フローチャート>
 図10は仮想化多重系システム1で実行される処理の全体フローチャートである。仮想化多重系システム1の全体処理は、多重系制御基盤プログラム300の起動処理及び系切替通知処理S116、多重系制御エージェントプログラム212の起動処理及びリソース監視処理S106と系切替処理、計算機ノード監視部305のメッセージ送信処理S112及びノード監視処理S123より成り立つ。
[0069]
 ホストOS400及びプロセッサ102は多重系制御基盤プログラム300及びVM200を計算機ノード100のメモリ101内に展開すると、多重系制御基盤プログラム300の処理を開始する。計算機ノード監視部305及びVM200は多重系制御基盤プログラム300の処理の中から処理を開始される。
[0070]
 多重系制御基盤プログラム300は処理が開始されると、初めに計算機ノード監視部305の起動を行う(S111)。
[0071]
 次に多重系制御基盤プログラム300は記憶装置103からVM状態管理テーブル302とリソース管理テーブル303をメモリ101内に読込み(S112)、系切替制御テーブル304もメモリ101内に読込む(S113)。
[0072]
 多重系制御基盤プログラム300は制御下にある各VM200のメモリ領域にリソース管理テーブル303をコピーし(S114)、VM200の処理を起動する(S115)。
[0073]
 多重系制御基盤プログラム300はS115の後、系切替通知処理S116を実行する。
[0074]
 計算機ノード監視部305は多重系制御基盤プログラム300によって立ち上げられ処理を開始すると、多重系制御基盤プログラム300からの「VM切替」または「フェイルバック」実行の送信要求の有無を判定する(S121)。
[0075]
 多重系制御基盤プログラム300からの送信要求が存在する場合(S121の結果が「Y」)はメッセージ送信処理S112を実行し、その後ノード監視処理S123を実行する。多重系制御基盤プログラム300からの送信要求が存在しない場合(S121の結果が「N」)はノード監視処理S123を実行する。
[0076]
 計算機ノード監視部305はノード監視処理S123の実行終了後は、再び多重系制御基盤プログラム300からの送信要求の有無判定S121から処理を実行する。
[0077]
 多重系制御エージェントプログラム212は処理を開始すると、自VM200のメモリ領域内のリソース管理テーブル303を読込む(S101)。
[0078]
 多重系制御エージェントプログラム212は読込んだリソース管理テーブル303から、VM識別子331の格納値が自VM200の識別子と一致し、かつ個別情報335-Bの格納値が「多重系制御エージェントプログラム212」である個別リソース管理情報を選別する。そして選別した個別リソース管理情報のリソース識別子332と監視周期333から状態監視対象のリソースと監視周期を取得する。(S102)
 次に多重系制御エージェントプログラム212は自VM200の状態を多重系制御基盤プログラム300に通知する。多重系制御エージェントプログラム212は状態監視対象リソースの状態を取得、自VM200のメモリ領域内のリソース管理テーブル303を更新し、プログラム間通信フォーマット600の通信データを作成して多重系制御基盤プログラム300に送信する。(S103)
 次に多重系制御エージェントプログラム212は多重系制御基盤プログラム300からの主系VM/従系VMの系切替要求の有無を確認する(S104)。
[0079]
 系切替要求が有る場合(S104の結果が「Y」)、多重系制御エージェントプログラム212は系切替処理S105を実行の後、再びS104を実行する。系切替処理S105は自VM200内で動作するAP211に対して系切替を要求する処理である。
[0080]
 系切替要求が無い場合(S104の結果が「N」)、多重系制御エージェントプログラム212はリソース監視処理S106を実行の後、再びS104を実行する。
<図11:リソース監視処理概要>
 図11はリソース監視処理S106の概要を示す図である。本実施形態では、多重系制御エージェントプログラム212のリソース状態は、AP211の実行状態を取得することで判断する。
[0081]
 AP211が動作する時には、VM200内の任意の場所(例えば/var/run)にAP211の実行状態やエラー情報を出力するAPdog700ファイルが確保される。APdog700ファイルはAP211以外のプログラムからも参照が可能なファイルである。AP211は自身の実行状態を定期的にAPdog700ファイルに出力し、多重系制御エージェントプログラム212はAPdog700ファイルを参照することでAP211の実行状態の監視を行う。
[0082]
 多重系制御エージェントプログラム212のリソース状態の監視は、例えばAP211リソースの稼動状態はAPdog700が定期的に更新されていることを確認することで認識し、外部通信I/F104リソースの異常はAP211がAPdog700に出力した端末2との外部通信異常情報を取得することで行い、論理グループ関係にある他のVM200リソースの異常はAP211がAPdog700に出力した他のAP211との内部通信異常情報を取得することで行う。
リソース状態の変化を検知した多重系制御エージェントプログラム212は、リソース状態を多重系制御基盤プログラム300に通知する。
<図12:リソース監視処理のフローチャート>
 図12はリソース監視処理S106の一例を示すフローチャートである。多重系制御エージェントプログラム212は監視対象リソースに異常を検出すると、異常状態を多重系制御基盤プログラム300に通知する。
[0083]
 多重系制御エージェントプログラム212は起動すると、初めにAPdog700を参照してリソース状態の監視を開始し(S201)、監視対象リソースの異常の有無を判断する(S202)。
[0084]
 監視対象リソースの内のいずれかに異常が認められた場合(S202の結果が「Y」)、VM200内に保持されているリソース管理テーブル303の該当リソースのリソース生死状態フラグ334に死状態である「1」を設定し(S203)、リソース管理テーブル303をプログラム間通信フォーマット600のリソース管理テーブル内容604に設定して通信データを作成して多重系制御基盤プログラム300に送信して(S204)、リソース監視処理S106を終了する(S205)。
[0085]
 監視対象リソースの内のいずれにも異常が認められない場合(S202の結果が「N」)は、リソース監視処理S106を終了する(S205)。
[0086]
 リソース監視処理S106を終了した後、多重系制御エージェントプログラム212は、多重系制御基盤プログラム300からの主系VM/従系VMの系切替要求の有無を確認するために図10に示したS104を起動する。
<図13:系切替通知処理のフローチャート>
 図13は本発明の実施の形態の系切替通知処理S116のフローチャートである。多重系制御基盤プログラム300は系切替通知処理S116で多重系制御エージェントプログラム212からのVM200状態の通知を取得し、計算機ノード監視部305に主系VM/従系VMの系切替要求を行う。
[0087]
 多重系制御基盤プログラム300は系切替通知処理S116を開始すると、初めに多重系制御エージェントプログラム212からのVM200状態の通知、及び計算機ノード100やホストOS400からのハードウェア状態検出の通知を待つ(S301)。
[0088]
 VM200状態やハードウェア状態の通知内容を解釈し、計算機ノード100内のあるVM200に新たに異常が認められた場合(S302の結果が「Y」)、VM状態管理テーブル302の該当VM200の主/従系状態フラグ325には従系VM状態を意味する「S」を設定して、生死状態フラグ326には死状態を意味する「1」を設定する(S311)。
[0089]
 そしてVM状態管理テーブル302の障害VM総数322の値を「1」増加させる(S312)。
[0090]
 次に多重系制御基盤プログラム300は計算機ノード構成管理テーブル301の自計算機ノード100に該当する主/従系状態フラグ312を参照し、自計算機ノード100の主系ノード/従系ノード状態を判別する(S313)。
[0091]
 主/従系状態フラグ312の値が「S」で自計算機ノード100が従系ノード状態である場合(S313の結果が「N」)、多重系制御基盤プログラム300は何も処理することなく、再びVM200状態やハードウェア状態の通知を待つためにS301を起動する。
[0092]
 主/従系状態フラグ312の値が「M」で自計算機ノード100が主系ノード状態である場合(S313の結果が「Y」)、多重系制御基盤プログラム300は異常VM200の主系VM/従系VMの系切替要求を行うために計算機ノード間通信フォーマット500の通信パケットを作成する(S331)。
[0093]
 多重系制御基盤プログラム300は、異常VM200のリソース障害内容が「過半数判断ロジック」の適用を要するものである場合には、VM状態管理テーブル302の障害VM総数322と異常VM200の数量の和が管理VM総数321の半数以上であるかの判断を行う(S332)。
[0094]
 障害VM200の総数が過半数となる場合には(S332の結果が「Y」)、正常なVM200も含めて全てのVM200を系切替対象とするために、計算機ノード間通信フォーマット500の通信パケットの通信種類504には全VM504-Dの識別値を設定する(S341)。
[0095]
 障害VM200の総数が過半数とならない場合には(S332の結果が「N」)、異常VM200のみを系切替対象とするために、計算機ノード間通信フォーマット500の通信パケットの通信種類504には異常VM504-Cの識別値を設定する(S351)。
[0096]
 計算機ノード間通信フォーマット500の通信パケットの作成が完了すると、多重系制御基盤プログラム300は計算機ノード監視部305に送信要求を行う(S342)。
[0097]
 次に異常VM200を停止させるためにリセットを行い(S343)、リソース管理テーブル303を参照して異常VM200が使用しているリソースに対してもリセットを行い(S344)、停止させた異常VM200を再起動させるためにS115を起動する。
[0098]
 VM200状態やハードウェア状態の通知内容から計算機ノード100内のあるVM200に異常が認められない場合(S302の結果が「N」)、当該VM200は「死状態」から回復したものであるかを確認するために、VM状態管理テーブル302に記録された当該VM200の生死状態フラグ326の値を参照する(S321)。
[0099]
 生死状態フラグ326の値が「0」で当該VM200が「正状態」であると判断されていた場合には(S321の結果が「N」)、当該VM200の状態に変化は起きていないため、多重系制御基盤プログラム300は再び多重系制御エージェントプログラム212からの通知や計算機ノード100/ホストOS400からのハードウェア状態検出の通知を待つために、S301を起動する。
[0100]
 生死状態フラグ326の値が「1」で当該VM200が「死状態」であると判断されていた場合には(S321の結果が「Y」)、当該VM200は状態が正常に回復したものと判断されるため、多重系制御エージェントプログラム212から受信したプログラム間通信フォーマット600の通信データのリソース管理テーブル内容604の該当VM200の状態を、多重系制御基盤プログラム300内のVM状態管理テーブル302に反映する(S322)。
[0101]
 次に当該VM200の主系VM/従系VMの状態のフェイルバック要求を行うために、計算機ノード構成管理テーブル301の主/従系状態フラグ312を参照して、自計算機ノード100の主系ノード/従系ノード状態を判別する(S323)。
[0102]
 主/従系状態フラグ312の値が「S」で自計算機ノード100が従系ノードであった場合には(S323の結果が「N」)、従系ノードが自らフェイルバック要求は行わないため、再び多重系制御エージェントプログラム212からの通知や計算機ノード100/ホストOS400からのハードウェア状態検出の通知を待つためにS301を起動する。
[0103]
 主/従系状態フラグ312の値が「M」で自計算機ノード100が主系ノードであった場合には(S323の結果が「Y」)、計算機ノード間通信フォーマット500の通信パケットを作成し(S324)、フェイルバック要求であるため通信種類504にはFailBack504-Bの識別値を設定し(S325)、計算機ノード監視部305に作成した通信パケットの送信要求を行い(S326)、再び多重系制御エージェントプログラム212からの通知や計算機ノード100/ホストOS400からのハードウェア状態検出の通知を待つためにS301を起動する。
<図14:メッセージ送信処理のフローチャート>
 図14はメッセージ送信処理S112のフローチャートである。計算機ノード監視部305は多重系制御基盤プログラム300から受けた他計算機ノード100への「フェイルバック」要求、「異常VM切替」要求、「全VM切替」要求を、メッセージ送信処理S112で発信する。
[0104]
 主系VM/従系VMの「全VM切替」が実行される場合、切替対象となるVM200の中には本来切替を必要としない正常状態のVM200が含まれることもある。「全VM切替」を実行するために、正常VM200の系切替を行うための事前処理はメッセージ送信処理S112内で実行する。
[0105]
 計算機ノード監視部305はメッセージ送信処理S112を開始すると、初めに通信要求の種類が「全VM切替」とその他を特定するために、計算機ノード間通信フォーマット500の通信要求パケットの通信種類504を確認する(S401)。
[0106]
 通信種類504の値が全VM504-Dの識別値ではなく通信要求が「全VM切替」以外の場合(S401の結果が「N」)、系切替対象は状態が異常に転じた、または状態が回復したVM200に限られるため、S411を起動して通信要求パケットを仮想化多重系システム1内の他の計算機ノード100にマルチキャスト送信する。
[0107]
 通信種類504の値が全VM504-Dの識別値であり通信要求が「全VM切替」の場合は(S401の結果が「Y」)、正常状態のVM200を系切替するための処理を起動する。
[0108]
 計算機ノード監視部305はVM状態管理テーブル302の主/従系状態フラグ325の値が「M」の主系VMのVM200を検索する(S402)。
[0109]
 検索された該当VM200に系切替を要求するために、プログラム間通信フォーマット600の系切替要求605に「1」を設定した通信データを作成し(S403)、該当VM200の多重系制御エージェントプログラム212に対して送信する(S404)。
[0110]
 次にVM状態管理テーブル302の全てのVM200の主/従系状態フラグ325に従系VMを意味する「S」を設定し、また生死状態フラグ326を死状態である「1」に変更する(S405)。
[0111]
 そしてVM状態管理テーブル302の障害VM総数322の値を「0」にリセットして(S406)、「全VM切替」の通信要求パケットを仮想化多重系システム1内の他の計算機ノード100にマルチキャスト送信する(S411)。
[0112]
 S411で通信要求パケットを送信し終えた後は、メッセージ送信処理S112を終了し(S421)、次のノード監視処理S123を起動する。
<図15:ノード監視処理のフローチャート>
 図15はノード監視処理S123のフローチャートである。主系ノード及び従系ノードの計算機ノード100内で動作する多重系制御基盤プログラム300の計算機ノード監視部305の間では、「生死監視」及び「フェイルバック」、「異常VM切替」、「全VM切替」要求の種別の計算機ノード間通信が行われる。計算機ノード監視部305は受信した計算機ノード間通信データの種別を判別し、種別に応じた処理の起動を行う。
[0113]
 計算機ノード監視部305はノード監視処理S123の処理を開始すると、初めに他の計算機ノード100からの計算機ノード間通信パケットを受信しているかを判別する。従系ノードの計算機ノード監視部305は、「生死監視」に対する応答、および「異常VM切替」、「全VM切替」、「フェイルバック」要求の計算機ノード間通信データを受信する。主系ノードの計算機ノード監視部305は、「生死監視」の計算機ノード100状態取得要求、および「異常VM切替」、「全VM切替」、「フェイルバック」に対する応答の計算機ノード間通信データを受信する。(S501)。
[0114]
 計算機ノード間通信パケットを受信している場合(S501の結果が「Y」)、計算機ノード監視部305は計算機ノード構成管理テーブル301の主/従系状態フラグ312を参照し、自計算機ノード100の主系ノード/従系ノード状態を判別する。主/従系状態フラグ312が「M」で自計算機ノード100が主系ノードの場合(S502の結果が「Y」)は主系処理S503を起動し、主/従系状態フラグ312が「S」で自計算機ノード100が従系ノードの場合(S502の結果が「N」)は従系処理S504を起動する。(S502)
 主系処理S503または従系処理S504が終了すると、計算機ノード監視部305はノード監視処理S123を終了する(S531)。
[0115]
 計算機ノード間通信データを受信していない場合(S501の結果が「N」)、計算機ノード監視部305は計算機ノード構成管理テーブル301の主/従系状態フラグ312を参照し、自計算機ノード100の主系ノード/従系ノード状態を判別する。
[0116]
 主/従系状態フラグ312が「M」で自計算機ノード100が主系ノードの場合(S511の結果が「N」)はノード監視処理S123を終了し、主/従系状態フラグ312が「S」で自計算機ノード100が従系ノードの場合(S511の結果が「Y」)は「生死監視」要求に対する応答が返ってこないことであるため次のS512を起動する。(S511)
 S512では、「生死監視」要求に対する応答の無い計算機ノード100の計算機ノード構成管理テーブル301の生死確定カウンタ316の値と、計算機ノード間通信フォーマット500の応答異常カウント507の値を比較し、当該計算機ノード100の生死状態の判別を行う。
[0117]
 応答異常カウント507の値が生死確定カウンタ316の値未満の場合(S512の結果が「N」)は当該計算機ノード100がまだ正常状態であると判断して生死監視処理S513を起動し、応答異常カウント507の値が生死確定カウンタ316の値以上の場合(S512の結果が「Y」)は当該計算機ノード100が異常状態にあると判断して全VM切替処理S521を起動する。
[0118]
 生死監視処理S513または全VM切替処理S521が終了すると、計算機ノード監視部305はノード監視処理S123を終了する(S531)。
[0119]
 ノード監視処理S123の終了後、計算機ノード監視部305は多重系制御基盤プログラム300からの送信要求の有無判定S121を起動する。
<図16:生死監視処理のフローチャート>
 図16は本発明の実施の形態の生死監視処理S513のフローチャートである。従系ノードである計算機ノード100の多重系制御基盤プログラム300の計算機ノード監視部305は生死監視処理S513で「生死監視」要求を実行する。
[0120]
 従系ノードの計算機ノード監視部305は生死監視処理S513を起動すると、計算機ノード構成管理テーブル301の主系ノードである計算機ノード100の監視周期315を参照する(S601)。
[0121]
 前回の「生死監視」要求からの経過時間が監視周期315を超えていない場合(S601の結果が「N」)は生死監視処理S513を終了する。
[0122]
 経過時間が監視周期315を超えている場合(S601の結果が「Y」)は「生死監視」要求を行うために次のS602を起動する。
[0123]
 主系ノードである計算機ノード100に送る計算機ノード間通信フォーマット500のパケットを作成するために、自計算機ノード100のVM状態管理テーブル302をVM状態管理テーブル内容505に、リソース管理テーブル303の内容をリソース管理テーブル内容506に設定する(S602)。そして通信種類504には生死504-Aの識別値を設定する(S603)。
[0124]
 次に作成したパケットを、仮想化多重系システム1内の主系ノードである計算機ノード100に対してマルチキャストで送信する(S604)。
[0125]
 「生死監視」要求のパケット送信が完了すると生死監視処理S513を終了する。
<図17:全VM切替処理のフローチャート>
 図17は全VM切替処理S521のフローチャートである。従系ノードである計算機ノード100で動作する多重系制御基盤プログラム300は、全VM切替処理S521を実行して、当該計算機ノード100内の全てのVM200を主系VM状態に、当該計算機ノード100を主系ノード状態に変更する。
[0126]
 多重系制御基盤プログラム300は全VM切替処理S521を起動すると、初めに計算機ノード構成管理テーブル301の自計算機ノード100に該当する主/従系状態フラグ312に「M」を設定し、主系ノード状態に変更する(S701)。
[0127]
 次に自計算機ノード100内の全てのVM200の系切替を行うために、プログラム間通信フォーマット600の系切替要求605に系切替の実行を指定する「1」を設定した、通信データを作成する(S702)。
[0128]
 次にS703で自計算機ノード100内の全てのVM200の多重系制御エージェントプログラム212に対して作成したプログラム間通信フォーマット600の通信データを送信した後、S704で全VM切替処理S521を終了する。
<図18:主系処理のフローチャート>
 図18は主系処理S503のフローチャートである。ノード監視処理S123のS502から起動された主系処理S503は、従系ノードである計算機ノード100からの「生死監視」要求、および「フェイルバック」、「異常VM切替」、「全VM切替」の応答に対する処理を行う。
[0129]
 処理を開始した主系処理S503は、初めに計算機ノード間通信フォーマット500の受信パケットの通信種類504を参照し(S801)、「生死監視」要求の受信パケットであるかを判別する。
[0130]
 受信パケットの通信種類504が生死504-Aの識別値である場合(S802の結果が「Y」)、S811を起動して自計算機ノード100の状態の返信処理を開始する。受信パケットの通信種類504が生死504-Aの識別値でなかった場合(S802の結果が「N」)、受信パケットの種別を更に特定するためにS821を起動する。(S802)
 S811では計算機ノード間通信フォーマット500の返信パケットに自計算機ノード100のVM状態管理テーブル302の内容をVM状態管理テーブル内容505に設定し、リソース管理テーブル303の内容をリソース管理テーブル内容506に設定する。
[0131]
 次に作成した「生死監視」要求に対する返信パケットを、S812で従系ノードである計算機ノード100にマルチキャストで送信した後、主系処理S503を終了する。
[0132]
 S821では受信パケットが「フェイルバック」の応答であるかを判別する。受信パケットの通信種類504がFailBack504-Bの識別値である場合(S821の結果が「Y」)、主系ノードである計算機ノード100での「フェイルバック」処理を行うためにS831を起動する。受信パケットの通信種類504がFailBack504-Bの識別値でない場合(S821の結果が「N」)、受信パケットの種別を更に特定するためにS822を起動する。
[0133]
 S831ではVM状態管理テーブル302の主/従系状態フラグ325を参照して、値が「S」である従系VMのVM200を探索し、これを主系VMへの系切替対象とする。
[0134]
 次にプログラム間通信フォーマット600の系切替要求605に系切替要求である「1」を設定した通信データを作成する(S832)。
[0135]
 次のS833において、S831で探索した系切替対象のVM200の多重系制御エージェントプログラム212にS832で作成した通信データを送信した後、主系処理S503を終了する。
[0136]
 S822では受信パケットが「全VM切替」の応答であるかを判別する。受信パケットの通信種類504が全VM504-Dの識別値である場合(S822の結果が「Y」)、S823を起動して計算機ノード構成管理テーブル301の自計算機ノード100に該当する主/従系状態フラグ312に「S」を設定することで自計算機ノード100を従系ノード状態に変更した後、主系処理S503を終了する。
[0137]
 受信パケットの通信種類504が全VM504-Dの識別値でない場合(S822の結果が「N」)は主系処理S503を終了する。
<図19:従系処理のフローチャート>
 図19は従系処理S504のフローチャートである。ノード監視処理S123のS502から起動された従系処理S504は、主系ノードである計算機ノード100からの「生死監視」への応答、及び「フェイルバック」、「異常VM切替」、「全VM切替」要求に対する処理を行う。
[0138]
 処理を開始した従系処理S504は、初めに計算機ノード間通信フォーマット500の受信パケットの通信種類504を参照し(S901)、「生死監視」への応答の受信パケットであるかを判別する。受信パケットの通信種類504が生死504-Aの識別値である場合(S902の結果が「Y」)はS911を起動して「生死監視」の処理を行い、通信種類504が生死504-Aの識別値で無い場合(S902の結果が「N」)は受信パケットの種別を更に特定するためにS921を起動する。(S902)
 S911において、「生死監視」要求に対する返答が合ったことから主系ノードの計算機ノード100は正常状態にあると判断できるため、計算機ノード間通信フォーマット500の通信パケットの応答異常カウント507の値を「0」にリセットした後、従系処理S504を終了する。
[0139]
 S921では受信パケットが「フェイルバック」要求であるかを判別する。受信パケットの通信種類504がFailBack504-Bの識別値である場合(S921の結果が「Y」)、従系ノードである計算機ノード100での「フェイルバック」処理を行うためにS941を起動する。受信パケットの通信種類504がFailBack504-Bの識別値で無い場合(S921の結果が「N」)、受信パケットの種別を更に特定するためにS922を起動する。
[0140]
 S941では計算機ノード間通信フォーマット500の受信パケットのVM状態管理テーブル内容505に格納されているVM状態管理テーブル302情報を参照して、主/従系状態フラグ325の値が「S」である従系VM状態にある主系ノードの計算機ノード100内のVM200を検索する。
[0141]
 次に、自計算機ノード100の識別子及び自計算機ノード100内のVM200の識別子を、S941で検索したVM200の主/従系構成VM情報327のホスト計算機ノード識別子327-A及びVM識別子327-Bと比較し、系切替に該当する自計算機ノード100内のVM200を検索する(S942)。
[0142]
 次に該当VM200に系切替要求を行うために、S943でプログラム間通信フォーマット600の系切替要求605に系切替要求である「1」を設定した通信データを作成し、S944で該当VM200の多重系制御エージェントプログラム212に作成した通信データを送信する。
[0143]
 次に主系ノードの計算機ノード100に「フェイルバック」の応答を行うために、S945で自計算機ノード100のVM状態管理テーブル302とリソース管理テーブル303の内容を計算機ノード間通信フォーマット500のVM状態管理テーブル内容505とリソース管理テーブル内容506に格納した通信パケットを作成し、次のS946では通信パケットの通信種類504にFailBack504-Bの識別値を設定する。
[0144]
 次のS947で、作成した通信パケットを仮想化多重系システム1内の主系ノードである計算機ノード100にマルチキャストで送信した後、従系処理S504を終了する。
[0145]
 S922では受信パケットが「全VM切替」要求であるかを判別する。受信パケットの通信種類504が全VM504-Dの識別値である場合(S922の結果が「Y」)、従系ノードである計算機ノード100での「全VM切替」処理を行うために全VM切替処理S521を起動する。受信パケットの通信種類504が全VM504-Dの識別値で無い場合(S922の結果が「N」)、従系ノードである計算機ノード100での「異常VM切替」処理を行うためにS923を起動する。
[0146]
 全VM切替処理S521の終了後、主系ノードの計算機ノード100に「全VM切替」の応答を行うために、S932で自計算機ノード100のVM状態管理テーブル302とリソース管理テーブル303の内容を計算機ノード間通信フォーマット500のVM状態管理テーブル内容505とリソース管理テーブル内容506に格納した通信パケットを作成し、次のS933では通信パケットの通信種類504に全VM504-Dの識別値を設定する。
[0147]
 次のS934で、作成した通信パケットを仮想化多重系システム1内の主系ノードである計算機ノード100にマルチキャストで送信した後、従系処理S504を終了する。
[0148]
 S923では、「異常VM切替」処理を行うために、計算機ノード間通信フォーマット500の受信パケットのVM状態管理テーブル内容505に格納されているVM状態管理テーブル302情報を参照して、主/従系状態フラグ325の値が「S」である従系VM状態にある主系ノードの計算機ノード100内のVM200を検索する。
[0149]
 次に、自計算機ノード100の識別子及び自計算機ノード100内のVM200の識別子を、S923で検索したVM200の主/従系構成VM情報327のホスト計算機ノード識別子327-A及びVM識別子327-Bと比較し、系切替に該当する自計算機ノード100内のVM200を検索する(S924)。
[0150]
 次に該当VM200に系切替要求を行うために、S925でプログラム間通信フォーマット600の系切替要求605に系切替要求である「1」を設定した通信データを作成し、次のS926で該当VM200の多重系制御エージェントプログラム212に作成した通信データを送信し、従系処理S504を終了する。
[0151]
 以上の実施形態によれば、物理計算機上で障害検知した主系モードの仮想マシンが搭載済みの仮想マシンよりも半数未満の場合には、仮想マシン毎に対して系切替え(フェイルオーバ)を行った後にフェイルバックする。一方、物理計算機上で障害検知した主系モードの仮想マシンが搭載済みの仮想マシンよりも半数以上の場合には、全ての仮想マシンに対して系切替えを行う。以上によって、単一の主系モードの仮想マシンが障害を起こしたとしても、複数の主系モードの仮想マシンが障害を起こしたとしても、つまり、いずれの場合にも、最終的には物理計算機の片方に全ての仮想マシンが主系モードで稼働するようになり、利用者にとって物理計算機の全体の動作モードが管理しやすくなる。その結果、物理計算機上の全ての仮想マシンを主系モードで稼働させながら、もう一方の物理計算機に対してハードウェアやソフトウェアの保守を行うことが可能となる。

符号の説明

[0152]
1…仮想化多重系システム
2…端末
3…外部ネットワーク
4…内部ネットワーク
100…計算機ノード
101…メモリ
102…プロセッサ
103…記憶装置、
104…外部通信I/F
105…ノード間通信I/F
200…VM
201…VM
211…AP
212…多重系制御エージェントプログラム
213…ゲストOS
300…多重系制御基盤プログラム
301…計算機ノード構成管理テーブル
302…VM状態管理テーブル
303…リソース管理テーブル
304…系切替制御テーブル
305…計算機ノード監視部
400…ホストOS
401…仮想化プログラム
402…デバイス制御プログラム
700…APdog

請求の範囲

[請求項1]
複数の計算機ノードを有する計算機システムであって、
 前記複数の計算機ノードは各々、複数の仮想計算機と、当該複数の仮想計算機を制御する制御基盤部とを有しており、
 各仮想計算機は、当該仮想計算機が動作している自計算機ノードとは別の他の計算機ノード上で動作している他の仮想計算機と多重化グループを構成し、当該仮想計算機若しくは当該他の仮想計算機のいずれか一方が主系仮想計算機として動作し他方が従系仮想計算機として動作しており、
 前記制御基盤部は、当該制御基盤部が備えられている自計算機ノードの複数の仮想計算機各々について、主系仮想計算機若しくは従系仮想計算機のいずれとして動作しているのかを管理し、当該複数の仮想計算機各々の状態を監視しており、
 前記制御基盤部は、自計算機ノード上で主系仮想計算機として動作する仮想計算機の障害を検知した場合に、予め定められた規則に従って、障害が生じた仮想計算機とともに自計算機ノード上で動作する他の仮想計算機も主系仮想計算機から従系仮想計算機へ切り替えるかどうか判定し、判定結果に従って切替の制御を行うことを特徴とする計算機システム。
[請求項2]
請求項1記載の計算機システムであって、
前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数と従系仮想計算機として動作している仮想計算機の数との比率に応じて、障害が生じた仮想計算機とともに自計算機ノード上で動作する他の仮想計算機も主系仮想計算機から従系仮想計算機へ切り替えるかどうか判定することを特徴とする計算機システム。
[請求項3]
 請求項2記載の計算機システムであって、
 前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数が、当該自計算機ノード上で動作している仮想計算機の総数の半数未満である場合に、障害が生じた仮想計算機とともに当該自計算機ノード上で主系仮想計算機として動作している他の仮想計算機も、主系仮想計算機から従系仮想計算機へ切り替えるよう制御を行うことを特徴とする計算機システム。
[請求項4]
 請求項2記載の計算機システムであって、
 前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数が、当該自計算機ノード上で動作している仮想計算機の総数の半数以上である場合には、障害が生じた仮想計算機を主系仮想計算機から従系仮想計算機へ切り替えるよう制御し、
 前記制御基盤部は、前記障害が回復した場合に、前記仮想計算機を従系仮想計算機から主系仮想計算機へ戻すよう制御することを特徴とする計算機システム。
[請求項5]
 請求項1記載の計算機システムであって、
 前記制御基盤部は、自計算機ノード上で動作する仮想計算機を主系仮想計算機から従系仮想計算機へ切り替える場合に、当該仮想計算機へ従系仮想計算機への切替要求を通知すると共に、当該仮想計算機と多重化グループを構成している他の仮想計算機を従系仮想計算機から主系仮想計算機へ切り替えるために、当該他の仮想計算機が動作する他の計算機ノードへ通知を送信することを特徴とする計算機システム。
[請求項6]
 請求項1記載の計算機システムであって、
 前記制御基盤部は、前記自計算機ノード上で動作する各仮想計算機が使用するハードウェアリソースを管理しており、主系仮想計算機として動作する複数の仮想計算機に共有されるハードウェアリソースの障害を検知した場合には、当該複数の仮想計算機を共に主系仮想計算機から従系仮想計算機へ切り替えるよう制御することを特徴とする計算機システム。
[請求項7]
 請求項1記載の計算機システムであって、
 前記制御基盤部は、前記自計算機ノード上で動作する複数の仮想計算機が論理的なグループを構成している場合に、当該複数の仮想計算機の一に障害が生じた場合は、当該論理的なグループを構成している他の仮想計算機も共に主系仮想計算機から従系仮想計算機へ切り替えるよう制御することを特徴とする計算機システム。
[請求項8]
複数の計算機ノードを有する計算機システムにおいて実行される方法であって、
 前記複数の計算機ノードは各々、複数の仮想計算機と、当該複数の仮想計算機を制御する制御基盤部とを有しており、
 各仮想計算機は、当該仮想計算機が動作している自計算機ノードとは別の他の計算機ノード上で動作している他の仮想計算機と多重化グループを構成し、当該仮想計算機若しくは当該他の仮想計算機のいずれか一方が主系仮想計算機として動作し他方が従系仮想計算機として動作しており、
 前記制御基盤部は、当該制御基盤部が備えられている自計算機ノードの複数の仮想計算機各々について、主系仮想計算機若しくは従系仮想計算機のいずれとして動作しているのかを管理し、当該複数の仮想計算機各々の状態を監視しており、
 前記制御基盤部は、自計算機ノード上で主系仮想計算機として動作する仮想計算機の障害を検知した場合に、予め定められた規則に従って、障害が生じた仮想計算機とともに自計算機ノード上で動作する他の仮想計算機も主系仮想計算機から従系仮想計算機へ切り替えるかどうか判定し、判定結果に従って切替の制御を行うことを特徴とする方法。
[請求項9]
請求項8記載の方法であって、
前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数と従系仮想計算機として動作している仮想計算機の数との比率に応じて、障害が生じた仮想計算機とともに自計算機ノード上で動作する他の仮想計算機も主系仮想計算機から従系仮想計算機へ切り替えるかどうか判定することを特徴とする方法。
[請求項10]
 請求項9記載の方法であって、
 前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数が、当該自計算機ノード上で動作している仮想計算機の総数の半数未満である場合に、障害が生じた仮想計算機とともに当該自計算機ノード上で主系仮想計算機として動作している他の仮想計算機も、主系仮想計算機から従系仮想計算機へ切り替えるよう制御を行うことを特徴とする計算機システム。
[請求項11]
 請求項9記載の方法であって、
 前記制御基盤部は、前記自計算機ノード上で主系仮想計算機として動作している仮想計算機の数が、当該自計算機ノード上で動作している仮想計算機の総数の半数以上である場合には、障害が生じた仮想計算機を主系仮想計算機から従系仮想計算機へ切り替えるよう制御し、
 前記制御基盤部は、前記障害が回復した場合に、前記仮想計算機を従系仮想計算機から主系仮想計算機へ戻すよう制御することを特徴とする方法。
[請求項12]
 請求項8記載の方法であって、
 前記制御基盤部は、自計算機ノード上で動作する仮想計算機を主系仮想計算機から従系仮想計算機へ切り替える場合に、当該仮想計算機へ従系仮想計算機への切替要求を通知すると共に、当該仮想計算機と多重化グループを構成している他の仮想計算機を従系仮想計算機から主系仮想計算機へ切り替えるために、当該他の仮想計算機が動作する他の計算機ノードへ通知を送信することを特徴とする方法。
[請求項13]
 請求項8記載の方法であって、
 前記制御基盤部は、前記自計算機ノード上で動作する各仮想計算機が使用するハードウェアリソースを管理しており、主系仮想計算機として動作する複数の仮想計算機に共有されるハードウェアリソースの障害を検知した場合には、当該複数の仮想計算機を共に主系仮想計算機から従系仮想計算機へ切り替えるよう制御することを特徴とする方法。
[請求項14]
 請求項8記載の計算機システムであって、
 前記制御基盤部は、前記自計算機ノード上で動作する複数の仮想計算機が論理的なグループを構成している場合に、当該複数の仮想計算機の一に障害が生じた場合は、当該論理的なグループを構成している他の仮想計算機も共に主系仮想計算機から従系仮想計算機へ切り替えるよう制御することを特徴とする方法。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]