(57)【要約】【課題】稼働系から待機系への切り替えを迅速に実行するシステムを提供する。【解決手段】システムは、第１の仮想マシンが稼働する、第１の物理マシンと、第２の仮想マシンが稼働する、第２の物理マシンと、を含む。当該システムでは、第１の仮想マシンを稼働系とし、第２の仮想マシンを待機系とする。第１の物理マシンは、第１の仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、第２の物理マシンに送信する。第２の物理マシンは、リソース差分情報を第２の仮想マシンのリソースに反映すると共に、系の切り替えが必要な場合に、リソース差分情報が反映された第２の仮想マシンを復帰させる。【選択図】図１
2019109735.tif 000002
【特許請求の範囲】
【請求項１】
第１の仮想マシンが稼働する、第１の物理マシンと、
第２の仮想マシンが稼働する、第２の物理マシンと、
を含み、
前記第１の仮想マシンを稼働系とし、前記第２の仮想マシンを待機系とする場合に、
前記第１の物理マシンは、前記第１の仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、前記第２の物理マシンに送信し、
前記第２の物理マシンは、前記リソース差分情報を前記第２の仮想マシンのリソースに反映すると共に、系の切り替えが必要な場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させる、システム。
【請求項２】
前記第１の物理マシンは、
前記稼働系として動作する第１の仮想マシンに生じる障害を検出する、仮想マシン障害検出部と、
前記仮想マシン障害検出部が障害を検出すると、前記第２の物理マシンに向けて系切り替え要求を送信する系切り替え処理部と、
を備える、請求項１のシステム。
【請求項３】
前記第１の物理マシンは、
自装置に生じる障害を検出する、物理マシン障害検出部をさらに備え、
前記系切り替え処理部は、前記仮想マシン障害検出部及び前記物理マシン障害検出部のすくなくとも一方が障害を検出すると、前記第２の物理マシンに向けて前記系切り替え要求を送信する、請求項２のシステム。
【請求項４】
前記第１の物理マシンは、
前記第１の仮想マシンを管理する、仮想マシン管理部をさらに備え、
前記系切り替え処理部は、前記系切り替え要求を前記第２の物理マシンに向けて送信する際に、前記仮想マシン管理部に対して前記稼働系として動作している第１の仮想マシンの停止を指示する、請求項２又は３のシステム。
【請求項５】
前記系切り替え処理部は、外部から系切り替えコマンドが投入されたことに応じて、前記第２の物理マシンに向けて前記系切り替え要求を送信する、請求項２乃至４のいずれか一項に記載のシステム。
【請求項６】
前記第２の物理マシンは、前記第１の物理マシンと自装置の間を接続する伝送路に障害が発生した場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させる、請求項１乃至５のいずれか一項に記載のシステム。
【請求項７】
稼働系の仮想マシンが稼働し、
前記仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、フォールトトレラントシステムを構成する他の計算機に送信する、計算機。
【請求項８】
フォールトトレラントシステムに含まれる、稼働系の計算機が送信する情報であって、前記稼働系の計算機にて稼働する仮想マシンが動作することにより生じるリソースの変化に関するリソース差分情報を取得し、
前記リソース差分情報を自装置の仮想マシンのリソースに反映すると共に、系の切り替えが必要な場合に、前記リソース差分情報が反映された仮想マシンを復帰させる、計算機。
【請求項９】
第１の仮想マシンが稼働する、第１の物理マシンと、
第２の仮想マシンが稼働する、第２の物理マシンと、
を含むシステムにおいて、
前記第１の仮想マシンを稼働系とし、前記第２の仮想マシンを待機系とする場合に、前記第１の仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、前記第２の物理マシンに送信するステップと、
前記リソース差分情報を前記第２の仮想マシンのリソースに反映するステップと、
系の切り替えが必要な場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させるステップと、
を含むシステム制御方法。
【請求項１０】
稼働系の仮想マシンを稼働する処理と、
前記仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、フォールトトレラントシステムを構成する他の計算機に送信する処理と、  をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、計算機、システム制御方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１乃至３において、物理マシン（ＰＭ；Physical Machine）上に構築された仮想マシン（ＶＭ；Virtual Machine）を用いるフォールトトレラントシステムが開示されている。
【０００３】
通常、フォールトトレラントシステムでは、計算機（所謂、コンピュータ；物理マシン）が冗長に構成される。また、特許文献１乃至３に開示されるように、サービスを提供する仮想マシンが冗長に構成されることもある。フォールトトレラントシステムにおける通常動作時には、稼働情報が稼働系から待機系に複製される。その際の複製は、非同期に運用されることが多い。従って、障害が発生した場合には稼働系から待機系に切り替えが行われた後、新たな稼働系（旧待機系）における再開動作（再起動、リブート）が必要となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１３９７０６号公報
【特許文献２】特開２０１４−１０２７２４号公報
【特許文献３】特開２０１１−０６００５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【０００６】
上述のように、フォールトトレラントシステムでは、系の切り替え時に稼働系の情報を待機系へ複製し、その後新たな稼働系を再起動する必要があり、当該複製や再起動に伴うサービス遅延が問題となる。
【０００７】
本発明は、稼働系から待機系への切り替えを迅速に実行することに寄与する、システム、計算機、システム制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明乃至開示の第１の視点によれば、第１の仮想マシンが稼働する、第１の物理マシンと、第２の仮想マシンが稼働する、第２の物理マシンと、を含み、前記第１の仮想マシンを稼働系とし、前記第２の仮想マシンを待機系とする場合に、前記第１の物理マシンは、前記第１の仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、前記第２の物理マシンに送信し、前記第２の物理マシンは、前記リソース差分情報を前記第２の仮想マシンのリソースに反映すると共に、系の切り替えが必要な場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させる、システムが提供される。
【０００９】
本発明乃至開示の第２の視点によれば、稼働系の仮想マシンが稼働し、前記仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、フォールトトレラントシステムを構成する他の計算機に送信する、計算機が提供される。
【００１０】
本発明乃至開示の第３の視点によれば、フォールトトレラントシステムに含まれる、稼働系の計算機が送信する情報であって、前記稼働系の計算機にて稼働する仮想マシンが動作することにより生じるリソースの変化に関するリソース差分情報を取得し、前記リソース差分情報を自装置の仮想マシンのリソースに反映すると共に、系の切り替えが必要な場合に、前記リソース差分情報が反映された仮想マシンを復帰させる、計算機が提供される。
【００１１】
本発明乃至開示の第４の視点によれば、第１の仮想マシンが稼働する、第１の物理マシンと、第２の仮想マシンが稼働する、第２の物理マシンと、を含むシステムにおいて、前記第１の仮想マシンを稼働系とし、前記第２の仮想マシンを待機系とする場合に、前記第１の仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、前記第２の物理マシンに送信するステップと、前記リソース差分情報を前記第２の仮想マシンのリソースに反映するステップと、系の切り替えが必要な場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させるステップと、を含むシステム制御方法が提供される。
【００１２】
本発明乃至開示の第５の視点によれば、稼働系の仮想マシンを稼働する処理と、前記仮想マシンが動作することにより生じるリソースの変化に関する情報をリソース差分情報として、フォールトトレラントシステムを構成する他の計算機に送信する処理と、をコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１３】
本発明乃至開示の各視点によれば、稼働系から待機系への切り替えを迅速に実行することに寄与する、システム、計算機、システム制御方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１４】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係るフォールトトレラントシステムの概略構成の一例を示す図である。
【図３】稼働系と待機系の状態を同期する動作を説明するための図である。
【図４】稼働系の仮想マシンに発生したソフトウェア障害による系の切り替えを説明するための図である。
【図５】稼働系の物理マシンに発生したソフトウェア障害による系の切り替えを説明するための図である。
【図６】稼働系の物理マシンに発生したハードウェア障害による系の切り替えを説明するための図である。
【図７】伝送経路障害等による系の切り替えを説明するための図である。
【図８】保守者が系切り替えコマンドを投入した場合の系の切り替えを説明するための図である。
【図９】第１の実施形態に係るフォールトトレラントシステムの同期動作の一例を示すシーケンス図である。
【図１０】第１の実施形態に係るフォールトトレラントシステムの系切り替え動作の一例を示すシーケンス図である。
【図１１】物理マシンのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。
【００１６】
一実施形態に係るシステムは、第１の仮想マシン１０１が稼働する、第１の物理マシン１０２と、第２の仮想マシン１１１が稼働する、第２の物理マシン１１２と、を含む（図１参照）。当該システムでは、第１の仮想マシン１０１を稼働系とし、第２の仮想マシン１１１を待機系とする。この場合、第１の物理マシン１０２は、第１の仮想マシン１０１が動作することにより生じるリソースの変化に関する情報をリソース差分情報として、第２の物理マシン１１２に送信する。第２の物理マシン１１２は、リソース差分情報を第２の仮想マシン１１１のリソースに反映すると共に、系の切り替えが必要な場合に、リソース差分情報が反映された第２の仮想マシン１１１を復帰させる。
【００１７】
図１に示すシステムは、第１の仮想マシン１０１、第２の仮想マシン１１１を使った計算機の同期運転方式を実現する。具体的には、物理的に異なる計算機（物理マシン）間で各々の計算機に搭載された第１の仮想マシン１０１、第２の仮想マシン１１１を使い、当該仮想マシンの各種リソースの情報を対となる物理マシンと同期を取る全二重化構成を採用する。図１のシステムでは、同期を取りつつ、稼働中の第１の物理マシン１０２に生じた事象（例えば、ソフトウェア障害等）を契機とし、第１の物理マシン１０２と対となる同期された第２の物理マシン１１２へ系の切り替えを行いシステムの継続運用を実現する。その結果、稼働系から待機系への切り替えが迅速に実行される。
【００１８】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【００１９】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２０】
図２は、第１の実施形態に係るフォールトトレラントシステムの概略構成の一例を示す図である。図２を参照すると、フォールトトレラントシステムには、複数の物理マシン（計算機、電算機）１０−１及び物理マシン１０−２が含まれる。物理マシン１０−１と物理マシン１０−２は異なる装置（ハードウェア）である。物理マシン１０−１及び物理マシン１０−２は、それぞれ仮想マシンの稼働が可能に構成された計算機である。
【００２１】
図２において、物理マシン１０−１は稼働系の計算機である。対して、物理マシン１０−２は待機系の計算機である。つまり、図２では、稼働系の物理マシン１０−１によりサービスの提供が行われている。
【００２２】
物理マシン１０−１に何らかの障害が発生すると、系の切り替えが発生し、物理マシン１０−２が稼働系の計算機となる。
【００２３】
なお、図２において、２台の物理マシンを開示しているが、フォールトトレラントシステムに含まれる物理マシンの数を限定する趣旨ではない。例えば、待機系の物理マシンは複数存在してもよい。その場合、稼働系の物理マシンから新たに稼働系となる物理マシンを指定してもよいし、複数の待機系の物理マシンによる協調動作の結果、稼働系の物理マシンが決定されても良い。
【００２４】
稼働系の物理マシン１０−１と待機系の物理マシン１０−２は、伝送路２０により接続され、通信路が設けられている。伝送路２０は、例えば、インターネット等のネットワーク回線でも良いし、専用回線であってもよい。このように、図２に示すフォールトトレラントシステムでは、稼働系と待機系は異なるサイトに設置されている。
【００２５】
稼働系の物理マシン１０−１と待機系の物理マシン１０−２は同じ機能を備えている。そのため、以下の説明において、稼働系の物理マシン１０−１と待機系の物理マシン１０−２を区別する特段の理由が無い場合には単に「物理マシン１０」と表記する。同様に、他の構成要素に関しても、ハイフン（−）より前に記載された数字にて当該構成要素を代表して表記する。
【００２６】
図２に示すように、物理マシン１０には各種の処理モジュールが実装される。具体的には、物理マシン１０−１は、通信部１１−１と、仮想マシン管理部１２−１と、系切り替え処理部１３−１と、物理マシン障害検出部１４−１と、を含んで構成される。
【００２７】
同様に、物理マシン１０−２は、通信部１１−２と、仮想マシン管理部１２−２と、系切り替え処理部１３−２と、物理マシン障害検出部１４−２と、を含んで構成される。上記処理モジュールの説明は後述する。
【００２８】
さらに、図２に示すように、物理マシン１０−１には仮想マシン１５−１が生成され、物理マシン１０−２には仮想マシン１５−２が生成される。仮想マシン１５−１及び仮想マシン１５−２のそれぞれにおいて、ＯＳ（Operating System）及びアプリケーション（ＡＰＰ；application）ソフトウェアが動作する。当該アプリケーションにより、所定のサービスが提供される。つまり、仮想マシンにてアプリケーションが動作することで、サービス提供に係るプロセス（タスク）の生成、実行、終了等が行われる。
【００２９】
また、仮想マシン１５−１は、仮想マシン障害検出部１６−１に係る処理モジュール（アプリケーション）を実現する。同様に、仮想マシン１５−２は、仮想マシン障害検出部１６−２を実現する。仮想マシン障害検出部１６−１及び仮想マシン障害検出部１６−２の詳細は後述する。
【００３０】
図２を参照して説明したように、第１の実施形態に係るフォールトトレラントシステムは、物理的な計算機による冗長構成を備えている。つまり、運用システムの構成は、極力、システム停止を避けるため、物理マシンのハードウェア障害を考慮して物理的に異なるハードウェア（物理マシン）上に同期対象の仮想マシンを、各物理マシンに実装する。さらに、津波や大地震等の激甚対応を目的とする場合には、稼働系が設置されるサイトと待機系が設置されるサイトは、所定の距離、離れた場所に設置される。
【００３１】
第１の実施形態に係るフォールトトレラントシステムの概略動作は以下のようになる。ここでは、仮想マシン１５−１を稼働系とし、仮想マシン１５−２を待機系とする場合の動作を説明する。物理マシン１０−１は、通常動作時には、仮想マシン１５−１が動作することにより生じるリソースの変化に関する情報をリソース差分情報として、物理マシン１０−２に送信する。物理マシン１０−２は、取得したリソース差分情報を仮想マシン１５−２のリソースに反映する。さらに、フォールトトレラントシステムにおいて、系の切り替えが必要な場合に、物理マシン１０−２は、リソース差分情報が反映された仮想マシン１５−２を復帰させる。
【００３２】
以下、物理マシン及び仮想マシンの処理構成（処理モジュール）の詳細について説明する。
【００３３】
通信部１１は、他の装置（他の物理マシン１０）との間の通信を制御する手段である。通信部１１は、処理モジュール（例えば、系切り替え処理部１３等）からデータを取得すると、他の物理マシンに向けて当該データ（パケット）を送信する。また、通信部１１は、他の物理マシン１０からデータを取得すると、当該データを処理モジュールに振り分ける。
【００３４】
仮想マシン管理部１２は、仮想マシン１５を管理する手段である。例えば、仮想マシン管理部１２は、仮想マシン１５にハードウェア資源（ＣＰＵ（Central Processing Unit）、メモリ、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）等）を割り当て、仮想マシン１５を生成する。また、仮想マシン管理部１２は、必要に応じて生成した仮想マシンを復帰させたり、停止したり（待機させたり）する。このように、仮想マシン管理部１２は、生成された仮想マシン１５に対する制御手段でもある。
【００３５】
さらに、稼働系の仮想マシン管理部１２（図２では、仮想マシン管理部１２−１）は、仮想マシン１５のリソースに関する情報の収集を行う。より具体的には、仮想マシン管理部１２−１は、仮想マシン１５−１のアプリケーション、ＯＳ等の動作に伴い変化する各種リソース情報を収集する。収集されたリソース情報は、通信部１１及び伝送路２０を経由して待機系の物理マシン（図２では物理マシン１０−２）に送信される。なお、仮想マシン管理部１２が収集するリソース情報には、レジスタに関する情報やメモリマップ等が含まれる。
【００３６】
仮想マシン管理部１２によるリソース情報の収集は、ＯＳに搭載された汎用機能であるハイパーバイザ機能のスナップショットを利用して行うことができる。なお、仮想マシン管理部１２がリソース情報を収集する契機（トリガ）は、仮想マシン１５−１が使用するリソースに変化をもたらすイベントである。具体的には、タスクの起動、中断、終了等が当該イベントに該当する。
【００３７】
物理マシン障害検出部１４は、自装置（物理マシン１０）に生じる障害を検出する手段である。具体的には、物理マシン障害検出部１４は、物理マシン１０上で稼働するＯＳを含むソフトウェアの障害及び物理マシン１０のハードウェア障害を検出する。
【００３８】
仮想マシン障害検出部１６は、稼働系として動作する仮想マシン１５に生じる障害を検出する手段である。具体的には、仮想マシン障害検出部１６は、稼働系の仮想マシン１５上で動作しているソフトウェア（ＯＳ、アプリケーション）の障害を検出する。なお、待機系の仮想マシン１５は待機状態となる。従って、待機系の仮想マシン１５は動作していない（停止中）ため、待機系の仮想マシン１５に含まれる仮想マシン障害検出部１６は稼働状態に切り替わるまで動作しない。図２の例では、稼働系の仮想マシン障害検出部１６−１は動作するが、待機系の仮想マシン障害検出部１６−２は非動作となる。
【００３９】
稼働系における２つの障害検出部（物理マシン障害検出部１４及び仮想マシン障害検出部１６）が検出した障害に関する情報は、系切り替え処理部１３に通知される。
【００４０】
系切り替え処理部１３は、仮想マシン障害検出部１６及び物理マシン障害検出部１４のすくなくとも一方が障害を検出すると、待機系の物理マシン１０に向けて「系切り替え要求」を送信する。具体的には、系切り替え処理部１３は、２つの障害検出部の少なくとも一方から障害を検出した旨の通知を受信すると、通信部１１等を介して、待機系の物理マシン１０に対して「系切り替え要求」を送信する。
【００４１】
また、系切り替え処理部１３は、仮想マシン管理部１２に対して、仮想マシン１５を停止するように指示する。つまり、系切り替え処理部１３は、系切り替え要求を待機系の物理マシン１０に向けて送信する際に、稼働系の仮想マシン管理部１２に対して稼働系として動作している仮想マシン１５の停止（待機）を指示する。
【００４２】
上記説明は、主に稼働系の物理マシン１０−１に関する説明である。続いて、待機系の物理マシン１０−２について説明する。ここでは、待機系の仮想マシン管理部１２−２、系切り替え処理部１３−２の動作について説明する。
【００４３】
上述のように、稼働系にて収集されたリソース情報は、待機系の物理マシン１０−２に送信される。待機系の仮想マシン管理部１２−２は、稼働系から送信されるリソース情報を待機中の仮想マシン１５−２のリソースに反映する。例えば、仮想マシン管理部１２−２が、仮想マシン１５−１のメモリマップに関する情報を「リソース情報」として取得した場合を考える。この場合、仮想マシン管理部１２−２は、仮想マシン１５−２が使用するメモリ領域が取得したメモリマップと同一となるように仮想マシン１５−２に割り当てられているメモリ領域を書き換える。
【００４４】
このようして、仮想マシン管理部１２−２は、稼働系の仮想マシン管理部１２−１から取得したリソース情報を仮想マシン１５−２のリソースに反映する。当該反映処理を行うことで、稼働系の仮想マシン１５−１と待機系の仮想マシン１５−２は同期状態となるよう管理される。
【００４５】
即ち、待機系の物理マシン１０−２及び仮想マシン１５−２において、稼働系の物理マシン１０−１より受信した各種リソースの差分情報は、待機系の仮想マシン１５−２の各種リソース差分情報として、仮想マシン１５−２に即座に反映される。その結果、稼働系と待機系のリソースの同期状態が保たれる。なお、稼働系の物理マシン１０−１から受信する各種リソースの差分情報は、少なくとも１回分の差分に関する情報を含むものである。
【００４６】
上述のように、稼働系の物理マシン１０−１において何らかの障害が発生すると、待機系の物理マシン１０−２に向けて「系切り替え要求」が送信される。上記系切り替え要求を受信した物理マシン１０−２の系切り替え処理部１３−２は、待機系から稼働系への切り替えを行う。具体的には、系切り替え処理部１３−２は、待機中（停止中）の仮想マシン１５−２のＩＰ（Internet protocol）アドレスの付け替えを行う。その後、系切り替え処理部１３−２は、待機中の仮想マシン１５−２を復帰（動作を再開；待機を解除）するように、仮想マシン管理部１２−２に指示する。
【００４７】
［状態同期に関する説明］
続いて、図３を参照しつつ、稼働系と待機系の状態を同期する動作について説明する。
【００４８】
図３において、稼働系の仮想マシン１５−１上にて複数のタスク（プロセス）３０−１〜３０−ｎ（ｎは正の整数、以下同じ）が実行されているものとする。各タスク３０では、タスク（プロセス）の終了、メモリの解放、ストレージへのデータ書き込み、タスク（プロセス）の中断等に係るイベントが生じる。これらのイベントでは、所定の関数が呼び出される。図３では、当該関数呼び出しイベントを中抜きの黒丸により図示している。
【００４９】
仮想マシン管理部１２−１は、イベントが発生すると（関数が呼び出されると）、当該イベント発生時の各種リソース（ＣＰＵのレジスタ情報、メモリ情報、Ｉ／Ｏ情報等）に関する情報を仮想マシン１５−１から取得する。仮想マシン管理部１２−１は、リソース情報を取得するたびに情報はメモリ上で保持した状態とする。
【００５０】
また、差分情報はハイパーバイザ機能のスナップショットを利用して取得される。  
【００５１】
仮想マシン管理部１２−１は、当該リソース差分情報をイベントの発生ごとに保持していく。仮想マシン管理部１２−１により保持されたリソース差分情報のサイズが所定量（一定量）に到達すると、仮想マシン管理部１２−１は、情報取得状態を「飽和」に設定する。
【００５２】
なお、情報取得状態とは仮想マシン管理部１２−１が管理するステータス情報であって、リソース差分情報に関する仮想マシン管理部１２−１の動作状態を示す。情報取得状態が「飽和」となると、仮想マシン管理部１２−１は、保持したリソース差分情報を待機系の物理マシン１０−２に送信する。図３では、時刻Ｔ１にて、リソース差分情報４０−１が稼働系から待機系に送信されている。
【００５３】
待機系の仮想マシン管理部１２−２は、当該リソース差分情報４０−１を仮想マシン１５−２のリソースに反映し、稼働系の仮想マシン１５−１と待機系の仮想マシン１５−２を同期させる。
【００５４】
情報取得状態が「飽和」となり、リソース差分情報を待機系に送信する準備をしている最中に（生成したリソース差分情報を待機系に送信する前に）、仮想マシン１５−１のリソースが変化するイベントが発生する場合がある。例えば、図３に示すように、イベント４１−１が発生し、リソース差分情報４０−２の生成段階（図３の時刻Ｔ２）にてイベント４１−２が発生する場合がある（時刻Ｔ３）。
【００５５】
このような場合、仮想マシン管理部１２−１は、リソース差分情報４０−２に反映されていないイベント４１−２を認識した段階で情報取得状態を「湧出」に設定する。その後、仮想マシン管理部１２−１は、リソース差分情報４０−２を待機系の物理マシン１０−２に送信する（時刻Ｔ４）。
【００５６】
待機系の仮想マシン１５−２は、当該リソース差分情報４０−２を取得し、当該リソース差分情報４０−２を仮想マシン１５−２に反映する。その結果、稼働系と待機系の仮想マシン１５が同期する。
【００５７】
イベント４１−２に起因するリソースの変化は、リソース差分情報４０−３として収集される。イベント４１−２の後に発生したイベント４１−３により、リソース差分情報が所定量保持されると、情報取得状態は「飽和」に設定される。その後、リソース差分情報４０−２に含まれなかったイベント４１−２に起因するリソースの変化情報を含むリソース差分情報は、リソース差分情報４０−３として生成される。その後、当該リソース差分情報４０−３は待機系の物理マシン１０−２に送信される（時刻Ｔ５）。
【００５８】
待機系の物理マシン１０−２に含まれる仮想マシン管理部１２−２は、リソース差分情報４０−３を取得し、仮想マシン１５−２のリソースに反映する。その結果、稼働系の仮想マシン１５−１と待機系の仮想マシン１５−２の同期が完了する。
【００５９】
所定の期間、イベントが発生しないこともある（例えば、図３の時刻Ｔ６〜Ｔ７の期間）。このようにイベントが発生しない場合、仮想マシン管理部１２−１は、リソース差分情報を待機系に通知する必要がない。イベントが発生せず、待機系に通知するリソース差分情報が存在しない場合の情報取得状態は「枯渇」に設定される。情報取得状態が「枯渇」の場合、稼働系と待機系の間で同期を取るための動作は行われない。
【００６０】
所定期間に、所定量のリソース差分情報が保持されてないことがある（例えば、図３の時刻Ｔ８〜Ｔ９の期間）。例えば、図３において、イベント４１−４が発生することで、仮想マシン管理部１２−１は、リソース差分情報４０−４の収集（生成）を開始する。当該収集中の最後に発生したイベント４１−５から一定時間経過し、仮想マシン管理部１２−１が設定したタイマのタイムアウトが発生する（時刻Ｔ９）。
【００６１】
この場合、情報取得状態は「不足」に設定され、仮想マシン管理部１２−１は、リソース差分情報４０−４を待機系の物理マシン１０−２に送信する。
【００６２】
待機系の仮想マシン管理部１２−２は、リソース差分情報４０−４を取得し、当該情報を仮想マシン１５−２のリソースに反映する。その結果、稼働系の仮想マシン１５−１と待機系の仮想マシン１５−２の同期が行われる。
【００６３】
このように、最後のイベントが発生してから所定の期間経過した後、リソース差分情報が所定量保持されていない場合には、当該所定期間経過時のリソース差分情報が待機系に送信される。
【００６４】
［系切り替えに関する説明］
続いて、図面を参照しつつ、系の切り替えに伴う動作を説明する。
【００６５】
第１の実施形態における稼働系と待機系の切り替えに関する契機は、例えば、以下の５つの場面が想定される。
（１）稼働系の物理マシン１０上の仮想マシン１５のソフトウェア障害。
（２）稼働系の物理マシン１０に実装されているソフトウェアの障害。
（３）物理マシン１０が構成されているハードウェアの障害。
（４）物理マシン１０間に敷設された伝送路２０の障害。
（５）保守者のコマンド操作による切り替え。
【００６６】
以下、各場面を説明する。なお、系の切り替えは、系切り替え処理部１３により行われ、待機系の仮想マシン１５に対するＩＰアドレスの付け替え後、各種リソースの差分情報は１回分前の情報（直前の情報）にて稼働復帰とする。その結果、旧稼働系で発生したソフトウェア障害等は引き継がれない仕組みで、サービスの継続稼働が行われる。
【００６７】
［（１）稼働系の仮想マシンに発生したソフトウェア障害による系の切り替え］
図４は、稼働系の仮想マシンに発生したソフトウェア障害による系の切り替えを説明するための図である。図４において、稼働系の仮想マシン１５−１上で走行しているタスクにおいてソフトウェア障害５１が発生した場合の動作を説明する。
【００６８】
この場合、稼働系の仮想マシン障害検出部１６−１は、ソフトウェア障害５１を検出し、切替処理を実行する（図４の切替検出処理２００）。仮想マシン障害検出部１６−１は当該事実（ソフトウェア障害５１の発生）を系切り替え処理部１３−１に通知する。系切り替え処理部１３−１は、稼働系側での系切り替え処理を実行する（系切り替え処理２０１）。具体的には、系切り替え処理部１３−１は、仮想マシン管理部１２−１に対して仮想マシン１５−１の停止を指示する。
【００６９】
また、系切り替え処理部１３−１は、「系切り替え要求」を待機系の物理マシン１０−２に送信する。待機系の物理マシン１０−２は、上記要求を系切り替え処理部１３−２にて取得する。系切り替え処理部１３−２が系切り替え要求を受信することで待機系側の切り替え処理が開始する（図４の切り替え処理開始２０２）。
【００７０】
系切り替え処理部１３−２は、待機系側の切り替え処理を実行する（系切り替え処理２０３）。具体的には、待機系の仮想マシン１５−２のＩＰアドレスの付け替えと直前に反映されたリソース差分情報（図４ではリソース差分情報４０−３）による仮想マシン１５−２の復帰（動作開始）を、仮想マシン管理部１２−２に指示する。その結果、仮想マシン１５−２は、障害発生前の同期状態からシステムの継続稼働を実現する（継続稼働２０４）。
【００７１】
［（２）稼働系の物理マシンに発生したソフトウェア障害による系の切り替え］
図５は、稼働系の物理マシンに発生したソフトウェア障害による系の切り替えを説明するための図である。図５において、稼働系の物理マシン１０−１上で走行しているソフトウェアにおいてソフトウェア障害５２が発生した場合の動作を説明する。
【００７２】
この場合、稼働系の物理マシン障害検出部１４−１は、ソフトウェア障害５２を検出し、切替処理を実行する（図５の切替検出処理３００）。物理マシン障害検出部１４−１は当該事実（ソフトウェア障害５２の発生）を系切り替え処理部１３−１に通知する。系切り替え処理部１３−１は、稼働系側での系切り替え処理を実行する（系切り替え処理３０１）。具体的には、系切り替え処理部１３−１は、仮想マシン管理部１２−１に対して仮想マシン１５−１の停止を指示する。
【００７３】
また、系切り替え処理部１３−１は、「系切り替え要求」を待機系の物理マシン１０−２に送信する。待機系の物理マシン１０−２は、上記要求を系切り替え処理部１３−２にて取得する。系切り替え処理部１３−２が系切り替え要求を受信することで待機系側の切り替え処理が開始する（図５の切り替え処理開始３０２）。
【００７４】
系切り替え処理部１３−２は、待機系側の切り替え処理を実行する（系切り替え処理３０３）。具体的には、待機系の仮想マシン１５−２のＩＰアドレスの付け替えと直前に反映されたリソース差分情報（図５ではリソース差分情報４０−３）による仮想マシン１５−２の動作開始を、仮想マシン管理部１２−２に指示する。その結果、仮想マシン１５−２は、障害発生前の同期状態からシステムの継続稼働を実現する（継続稼働３０４）。
【００７５】
［（３）稼働系の物理マシンに発生したハードウェア障害による系の切り替え］
図６は、稼働系の物理マシンに発生したハードウェア障害による系の切り替えを説明するための図である。図６において、稼働系の物理マシン１０−１のハードウェアにおいてハードウェア障害５３が発生した場合の動作を説明する。
【００７６】
この場合、稼働系の物理マシン障害検出部１４−１は、ハードウェア障害５３を検出し、切替処理を実行する（図６の切替検出処理４００）。物理マシン障害検出部１４−１は当該事実（ハードウェア障害５３の発生）を系切り替え処理部１３−１に通知する。系切り替え処理部１３−１は、稼働系側での系切り替え処理を実行する（系切り替え処理４０１）。具体的には、系切り替え処理部１３−１は、仮想マシン管理部１２−１に対して仮想マシン１５−１の停止を指示する。
【００７７】
仮想マシン管理部１２−１は、可能な限り仮想マシン１５−１の停止を試みる。即ち、ハードウェア障害５３に起因し、仮想マシン１５−１の停止が行えない場合も想定されるが、仮想マシン管理部１２−１は、可能な限り仮想マシン１５−１を停止するように動作する。
【００７８】
また、系切り替え処理部１３−１は、「系切り替え要求」を待機系の物理マシン１０−２に送信する。待機系の物理マシン１０−２は、上記要求を系切り替え処理部１３−２にて取得する。系切り替え処理部１３−２が系切り替え要求を受信することで待機系側の切り替え処理が開始する（図６の切り替え処理開始４０２）。
【００７９】
系切り替え処理部１３−２は、待機系側の切り替え処理を実行する（系切り替え処理４０３）。具体的には、待機系の仮想マシン１５−２のＩＰアドレスの付け替えと直前に反映されたリソース差分情報（図６ではリソース差分情報４０−３）による仮想マシン１５−２の動作開始を、仮想マシン管理部１２−２に指示する。その結果、仮想マシン１５−２は、障害発生前の同期状態からシステムの継続稼働を実現する（継続稼働４０４）。
【００８０】
なお、ハードウェア障害に起因して系の切り替えが発生した場合は、稼働系と待機系の間の同期処理は停止となる。より具体的には、稼働系の仮想マシン管理部１２はリソース差分情報を待機系に送信しない。
【００８１】
［（４）伝送経路障害（又は物理マシンのフリーズ）による系の切り替え］
図７は、伝送経路障害（又は物理マシンフリーズ）による系の切り替えを説明するための図である。
【００８２】
稼働系の物理マシン１０−１に生じた何らかの原因又は伝送路２０上での障害（図７参照）により、稼働系と待機系の同期運転が不可能となる場合がある。具体的には、所定の期間経過しても「リソース差分情報」が稼働系から待機系に送信されない場合が、上記同期運転が不可能な場合に相当する。この場合、待機系の通信部１１−２は、所定の期間に亘りリソース差分情報を取得していない旨を物理マシン障害検出部１４−２に通知する。
【００８３】
物理マシン障害検出部１４−２は、当該通知により、伝送路２０等における障害発生を認識し、系切り替え処理部１３−２に系切り替え処理の開始を指示する。
【００８４】
系切り替え処理部１３−２は、直前に取得済みのリソース差分情報に基づき仮想マシン１５−２を復帰させ、サービスの提供を継続する。
【００８５】
あるいは、物理マシン障害検出部１４は、他の物理マシン１０に向けて生死確認信号を送信し、他の物理マシン１０の障害（フリーズ）や伝送路２０の障害を検出してもよい。この場合、障害を検出した側の物理マシン１０は、自発的に系の切り替えを行うことができる。障害を検出した後の系切り替え処理に関しては、図４等を参照して説明した内容と同一とすることができるので説明を省略する。
【００８６】
また、伝送路２０等の障害もハードウェア障害の一種と捉えることが可能であるので、旧稼働系と新稼働系間での同期運転は停止となる。
【００８７】
このように、待機系の物理マシン１０−２は、稼働系の物理マシン１０−１と自装置の間を接続する伝送路２０等に障害が発生した場合に、リソース差分情報が反映された仮想マシン１５−２を復帰させる。
【００８８】
［（５）コマンドによる系の切り替え］
図８は、保守者（管理者）が系切り替えコマンドを投入した場合の系の切り替えを説明するための図である。この場合、稼働系の系切り替え処理部１３−１が、保守者による系切り替えコマンド５４の投入を認識する。その結果、系切替検出処理５００が開始する。
【００８９】
系切り替え処理部１３−１は、稼働系側での系切り替え処理を実行する（系切り替え処理５０１）。具体的には、系切り替え処理部１３−１は、仮想マシン管理部１２−１に対して仮想マシン１５−１の停止を指示する。
【００９０】
また、系切り替え処理部１３−１は、「系切り替え要求」を待機系の物理マシン１０−２に送信する。待機系の物理マシン１０−２は、上記要求を系切り替え処理部１３−２にて取得する。系切り替え処理部１３−２が系切り替え要求を受信することで待機系側の切り替え処理が開始する（図８の切り替え処理開始５０２）。
【００９１】
系切り替え処理部１３−２は、待機系側の切り替え処理を実行する（系切り替え処理５０３）。具体的には、待機系の仮想マシン１５−２のＩＰアドレスの付け替えと直前に反映されたリソース差分情報（図８ではリソース差分情報４０−３）による仮想マシン１５−２の動作開始を、仮想マシン管理部１２−２に指示する。その結果、仮想マシン１５−２は、障害発生前の同期状態からシステムの継続稼働を実現する（継続稼働５０４）。
【００９２】
このように、稼働系の系切り替え処理部１３−１は、外部から系切り替えコマンドが投入されたことに応じて、待機系の物理マシン１０−２に向けて系切り替え要求を送信してもよい。
【００９３】
［動作概略］
第１の実施形態に係るフォールトトレラントシステムの動作をまとめると図９、図１０に示すとおりとなる。初めに、図９を参照しつつ、フォールトトレラントシステムにおける同期動作を説明する。次に、図１０を参照しつつ、フォールトトレラントシステムにおける系切り替え動作を説明する。
【００９４】
稼働系の仮想マシン１５上のプロセスが動作等することで、リソースの変化を伴うイベントが発生する（図９のステップＳ０１）。
【００９５】
稼働系の物理マシン１０は、スナップショット情報を取りだす（図９のステップＳ０２）。
【００９６】
稼働系の物理マシン１０は、リソース差分情報に関する所定の条件が満たされているか否かを判定する（図９のステップＳ０３）。例えば、稼働系の物理マシン１０は、保持されたリソース差分情報が所定量に到達したか否か、あるいは、リソース差分情報の収集を開始して所定時間経過したか否か等を確認する。
【００９７】
所定の条件を満たせば（図９のステップＳ０３、Ｙｅｓ分岐）、リソース差分情報が待機系に送信される。
【００９８】
所定の条件を満たさなければ（図９のステップＳ０３、Ｎｏ分岐）、ステップＳ０１以降の処理が繰り返される。
【００９９】
リソース差分情報を取得した待機系の物理マシン１０は、当該情報を待機系の仮想マシン１５のリソースに反映する（図９のステップＳ１１）。
【０１００】
障害が発生すると、稼働系の物理マシン１０は、動作中の仮想マシン１５を停止する（図１０のステップＳ２１）。その際、稼働系の物理マシン１０は、待機系に対して「系切り替え要求」を送信する（図１０のステップＳ２２）。
【０１０１】
系切り替え要求を受信した待機系の物理マシン１０は、最新のリソース情報が反映された仮想マシン１５を復帰させ、サービスの提供を継続する（図１０のステップＳ３１）。
【０１０２】
［ハードウェア構成］
第１の実施形態に係る物理マシン１０のハードウェア構成について説明する。
【０１０３】
図１１は、物理マシン１０のハードウェア構成の一例を示す図である。物理マシン１０は、所謂、情報処理装置（コンピュータ）であり、図１１に例示する構成を備える。例えば、物理マシン１０は、内部バスにより相互に接続される、ＣＰＵ（Central Processing Unit）６１、メモリ６２、入出力インターフェイス６３及び通信手段であるＮＩＣ（Network Interface Card）６４等を備える。
【０１０４】
なお、図１１に示す構成は、物理マシン１０のハードウェア構成を限定する趣旨ではない。物理マシン１０は、図示しないハードウェアを含んでもよい。あるいは、物理マシン１０に含まれるＣＰＵ等の数も図１１の例示に限定する趣旨ではなく、例えば、複数のＣＰＵが物理マシン１０に含まれていてもよい。
【０１０５】
メモリ６２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）である。
【０１０６】
入出力インターフェイス６３は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
【０１０７】
物理マシン１０の機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ６２に格納されたプログラムをＣＰＵ６１が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェアにおいてソフトウェアが実行されることによって実現できればよい。
【０１０８】
以上のように、第１の実施形態に係るフォールトトレラントシステムは、稼働系と待機系の同期運転を実現する。さらに、システムに各種障害が発生した場合、瞬時に稼働系と待機系の切り替えが行われる。その結果、稼働系から待機系への切り替え時間が短縮される。このように、第１の実施形態では、稼働系と待機系の切り替え時間が短く、また、システムの再開（待機系の再起動）を伴わないため、運用中のサービスに与える影響は存在しない。
【０１０９】
また、通常のシステムでは、稼働系において各種リソース情報（例えば、メモリに関する情報）を一定周期等で収集しておく必要がある。そのため、当該情報収集動作に伴う負荷（通常動作から見た場合の無駄な負荷）によりリソース不足が発生する可能性がある。このようなリソース不足が発生し、且つ、不安定な状態で稼働系から待機系へ切り替えが行われると、システム管理者等にとって意図しない障害が発生し得る。即ち、各種リソース情報の収集動作が、迅速なサービス継続に影響を与え、最善な状態に復元できずサービス継続性が低下する問題がある。対して、第１の実施形態では、各種リソース情報はソフトウェアのプロセス、タスク、Ｉ／Ｏ状態等が安定状態で収集されるため、稼働系と待機系の切り替え後も安定した処理の継続運転が可能となる。つまり、第１の実施形態に係るフォールトトレラントシステムでは、稼働系と待機系の同期手法によりソフトウェアのプロセス、タスク等が安定状態（走行終了、中断状態等）の場合に、各種リソースの差分情報を待機系の物理マシン１０に送信する。
【０１１０】
さらに、通常のフォールトトレラントシステムでは、仮想マシンの実装は同一の物理マシン（ハードウェア）上の運用となることが多く、局地激甚な災害（例えば、火災等）発生時はシステム運用が不可となる場合がある。対して、第１の実施形態では、仮想マシン１５の実装は異なる物理マシン（ハードウェア）１０上に実装されることを前提とするため、局地激甚における災害発生時においても継続的なシステム運用が可能となる。
【０１１１】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、サービス稼働無停止システムの提供、高可用性が要求されるシステムの構築、障害発生時のサービス提供の継続、障害の原因調査、システムのバックアップ、災害等の激甚対応としてＢＣＰ（Business Continuity Plan）システム向け構成等に好適に適用可能である。
【０１１２】
例えば、障害の原因調査に関し、同期運転が行える利点を活用できる。具体的には、待機系の物理マシン上の仮想マシンを、解析用の物理マシンに複製し、当該複製した仮想マシンを解析することで、運用中サービスを停止させること無く、安全に障害解析が行える。
【０１１３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
［付記１］
上述の第１の視点に係るシステムのとおりである。
［付記２］
前記第１の物理マシンは、
前記稼働系として動作する第１の仮想マシンに生じる障害を検出する、仮想マシン障害検出部と、
前記仮想マシン障害検出部が障害を検出すると、前記第２の物理マシンに向けて系切り替え要求を送信する系切り替え処理部と、
を備える、好ましくは付記１のシステム。
［付記３］
前記第１の物理マシンは、
自装置に生じる障害を検出する、物理マシン障害検出部をさらに備え、
前記系切り替え処理部は、前記仮想マシン障害検出部及び前記物理マシン障害検出部のすくなくとも一方が障害を検出すると、前記第２の物理マシンに向けて前記系切り替え要求を送信する、好ましくは付記２のシステム。
［付記４］
前記第１の物理マシンは、
前記第１の仮想マシンを管理する、仮想マシン管理部をさらに備え、
前記系切り替え処理部は、前記系切り替え要求を前記第２の物理マシンに向けて送信する際に、前記仮想マシン管理部に対して前記稼働系として動作している第１の仮想マシンの停止を指示する、好ましくは付記２又は３のシステム。
［付記５］
前記系切り替え処理部は、外部から系切り替えコマンドが投入されたことに応じて、前記第２の物理マシンに向けて前記系切り替え要求を送信する、好ましくは付記２乃至４のいずれか一に記載のシステム。
［付記６］
前記第２の物理マシンは、前記第１の物理マシンと自装置の間を接続する伝送路に障害が発生した場合に、前記リソース差分情報が反映された第２の仮想マシンを復帰させる、好ましくは付記１乃至５のいずれか一に記載のシステム。
［付記７］
上述の第２の視点に係る計算機のとおりである。
［付記８］
上述の第３の視点に係る計算機のとおりである。
［付記９］
上述の第４の視点に係るシステム制御方法のとおりである。
［付記１０］
上述の第５の視点に係るプログラムのとおりである。
なお、付記７〜１０の形態は、付記１の形態と同様に、付記２の形態〜付記６の形態に展開することが可能である。
【０１１４】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１１５】
１０、１０−１、１０−２、１０２、１１２  物理マシン
１１、１１−１、１１−２  通信部
１２、１２−１、１２−２  仮想マシン管理部
１３、１３−１、１３−２  系切り替え処理部
１４、１４−１、１４−２  物理マシン障害検出部
１５、１５−１、１５−２、１０１、１１１  仮想マシン
１６、１６−１、１６−２  仮想マシン障害検出部
２０  伝送路
３０−１〜３０−ｎ  タスク
４０−１〜４０−４  リソース差分情報
４１−１〜４１−５  イベント
５１  ソフトウェア障害（仮想マシン）
５２  ソフトウェア障害（物理マシン）
５３  ハードウェア障害
５４  系切り替えコマンド
６１  ＣＰＵ
６２  メモリ
６３  入出力インターフェイス
６４  ＮＩＣ
２００、３００、４００、５００  切替検出処理
２０１、３０１、４０１、５０１  系切り替え処理（稼働系）
２０２、３０２、４０２、５０２  切り替え処理
２０３、３０３、４０３、５０３  系切り替え処理（待機系）
２０４、３０４、４０４、５０４  継続稼働処理
【図１】
2019109735.tif 000003
【図２】
2019109735.tif 000004
【図３】
2019109735.tif 000005
【図４】
2019109735.tif 000006
【図５】
2019109735.tif 000007
【図６】
2019109735.tif 000008
【図７】
2019109735.tif 000009
【図８】
2019109735.tif 000010
【図９】
2019109735.tif 000011
【図１０】
2019109735.tif 000012
【図１１】
2019109735.tif 000013