図面 (/)

技術 フォールトトレラントシステム

出願人 日本電気株式会社
発明者 田中幸宏
出願日 2013年1月21日 (8年9ヶ月経過) 出願番号 2013-007967
公開日 2014年7月31日 (7年2ヶ月経過) 公開番号 2014-139706
状態 特許登録済
技術分野 エラー時の再試行 ハードウェアの冗長性 マルチプログラミング
主要キーワード 事業報告 ハードウェア方式 ソフトウェア方式 省エネ型 仮想計算機環境 アクティブスタンバイ ロックステップ方式 一般サーバ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2014年7月31日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (14)

課題

現用系仮想計算機(VM)と待機系のVMとの同期を開始するためには、全メモリ内容を含む初回スナップショットコピーが必要になること。

解決手段

現用系のVMが稼働する第1の計算機と、待機系のVMが稼働する第2の計算機とを有する。第1の計算機は、現用系のVMの全メモリを含む初回スナップショットを第2の計算機に送信して新たな待機系のVMを生成する。第1の計算機は、自計算機上のVMを待機系に切り換えて第2の計算機に対して待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、上記初回スナップショットを第2の計算機上の現用系のVMの初回のスナップショットとして認識し、以後、第2の計算機から受信するスナップショットに基づいて自計算機の待機系のVMの状態を更新する。

概要

背景

可用性を高めた計算機システムとして、ホットスタンバイ構成のHAクラスタ(High availability cluster)、FTサーバ(Fault Tolerant server)が知られている。

HAクラスタは、複数台のサーバを相互接続し、システム冗長化を図る。現在稼動している(現用系)サーバに障害が発生した場合、待機系として用意されていた別のサーバが処理を引き継ぐため、クラスタ全体としては異常なく稼動し続けているように見える。主な方式として、アクティブスタンバイ方式とレプリケーション方式とがある。

アクティブスタンバイ方式のHAクラスタでは、現用系と待機系でストレージ共有する。現用系は、待機系を同期させるのに必要な、アプリケーションに依存した情報を共有ストレージに書き、待機系はフェイルオーバー時にこの情報を用いてリカバリ処理を行うため、アプリケーションやOSから見て、透過的に可用性を得ることができない。また、フェイルオーバーには時間を要し、その間はサービスが提供できなくなる。

レプリケーション方式のHAクラスタでは、現用系と待機系が個別にストレージを持ち、現用系のアプリケーションに到着したリクエストを待機系にも転送することで、待機系に現用系と同じ状態遷移をさせる。一般に、複数の系の状態を一致させることを、同期をとると言う。現用系に障害が発生して停止した場合、待機系のアプリケーションの状態は現用系と同期しているため、現用系を切り離して処理を待機系に切り換えてサービスを継続することができる。しかし、クラスタリングするアプリケーション毎にレプリケーションの仕組みを追加しなければならないため、アプリケーションやOSから見て、透過的に可用性を得ることができない。

このようにHAクラスタでは、アプリケーションやOSに可用性を意識した仕組みを追加しなければならない。これに対して、FTサーバでは、アプリケーションやOSが特別な処理を必要としないで、透過的にサービスを継続することができる。FTサーバを実現する方式は、ハードウェア方式ソフトウェア方式とに大別される。

ハードウェア方式のFTサーバは、CPU、メモリ、ストレージなどの主要なハードウェアコンポーネントを冗長化し、あるコンポーネントに障害が発生した場合は、そのコンポーネントを切り離して動作を継続する。CPUやメモリ、チップセットを含むモジュールCPUサブシステム、各種IOデバイスを含むモジュールをIOサブシステムと定義すると、コンポーネントを二重化する一般的なFTサーバではCPUサブシステムとIOサブシステムとで二重化の方式が異なる。CPUサブシステムは、クロック単位ハードウェアの動作を完全に一致させる。これをロックステップと呼ぶ。二重化されたCPUサブシステムは両方とも完全に同じ動作をしているので、障害発生時はその障害が発生したCPUサブシステムを論理的に切り離し、正常なCPUサブシステムに瞬時に処理を切り換えて動作を継続させる。IOサブシステムは、ロックステップこそしていないが、障害が発生した場合、直ちに他方のIOサブシステムに切り換える。ハードウェア方式のFTサーバは、極めて高い可用性を実現することができる。しかし、特殊なハードウェアで構成されるため、同程度の性能を持つ一般サーバと比較して導入コストがかかる。

一方、ソフトウェア方式のFTサーバは、物理計算機上で1つまたは複数のOSを動作させることを可能とした仮想化技術を使用する。物理計算機上に仮想的に構築される計算機を、仮想計算機あるいは仮想マシンと呼ぶ。ソフトウェア方式のFTサーバでは、物理計算機を冗長化し、現用系の仮想計算機と待機系の仮想計算機とをそれぞれ異なる物理計算機上に配置する。現用系の仮想計算機が属する物理計算機でハードウェアの故障等の障害が発生した場合、その仮想計算機が行っている処理を他の物理計算機上の待機系の仮想計算機で継続して実行する。アプリケーションやOSから見て、透過的にサービスを継続するために、ソフトウェア方式のFTサーバでは、現用系と待機系の仮想計算機の状態を一致させる処理、すなわち同期を行う。

現用系と待機系の仮想計算機を同期させる方式には、主に仮想ロックステップ方式チェックポイント方式の2つの方式がある。仮想ロックステップ方式は、現用系の仮想計算機に対する入力を、待機系の仮想計算機に対しても与えることにより、待機系の仮想計算機の状態を現用系の仮想計算機と同じように遷移させる。仮想計算機間の同期に必要なデータ量が少なくて済む利点がある反面、現用系と待機系とでCPUの種類が異なると動作しないといった課題がある。

他方、チェックポイント方式は、定期的に、現用系の仮想計算機のイメージ(CPU、メモリ、ストレージなど)を待機系に送り、待機系の仮想計算機の状態を現用系の仮想計算機の状態に一致させる。チェックポイント方式は、仮想ロックステップ方式と比較して実装が容易であり、CPUの特定の機能に依存しないため、幅広製品に実装できる利点がある。その反面、仮想計算機のイメージはデータ量が多いため、仮想ロックステップ方式よりも1回の同期にかかるオーバーヘッドが大きいという課題がある。

この課題を解決するために、前回のチェックポイント以降に更新された現用系の仮想計算機のイメージのみを待機系に送ることが本発明に関連する第1の関連技術として提案されている(例えば非特許文献1参照)。この第1の関連技術では、チェックポイントが到来すると、現用系の仮想計算機を一旦停止させることでメインメモリへの更新を遮断し、前回のチェックポイント以降に更新のあったメインメモリのページであるダーティページの全てを、メインメモリに設けたバッファローカルコピーする。そして、ローカルコピーを完了すると、停止させていた現用系の仮想計算機を再起動し、並行して、上記コピーされたダーティページを上記バッファから待機系へと転送する。

また、複数の現用系の物理計算機と複数の待機系の物理計算機とをスイッチを介して共通のディスクアレイ装置に接続し、複数の現用系の物理計算機上で動作している現用系の仮想計算機のスナップショットを、上記スイッチを介して上記ディスクアレイ装置に定期的に保存することが、本発明に関連する第2の関連技術として提案されている(例えば特許文献1参照)。そして、この第2の関連技術では、或る現用系の物理計算機の障害時、複数の待機系の物理計算機の何れかを上記スイッチを介して上記ディスクアレイ装置に接続し、上記ディスクアレイ装置に保存されている現用系の仮想計算機の直近のスナップショットを使用して、待機系の物理計算機に新たに仮想計算機を生成し、この生成した仮想計算機によって上記障害に遭遇した現用系の仮想計算機の処理を引継ぐようにしている。

また、複数の現用系の物理計算機に対して1台の待機系の物理計算機と1台以上の他の物理計算機とを有するソフトウェア方式のFTサーバが、本発明に関連する第3の関連技術として提案されている(例えば非特許文献2参照、特に図3.2-1、図3.2-30)。この第3の関連技術では、複数の現用系の物理計算機上の複数の現用系の仮想計算機の状態と、上記1台の待機系の物理計算機上に存在する対応する待機系の仮想計算機の状態とを、現用系でイベントが発生したことを契機に一致させるという方法で同期させる。そして、何れかの現用系の物理計算機の障害時、まず、待機系の物理計算機上の対応する待機系の仮想計算機を使ってフェイルオーバする。次いで、待機系の物理計算機から他の物理計算機(非特許文献2では予備系と称している)に高速マイグレーションという手法を用いて、現用系の仮想計算機を移動する。

本発明に関連する第2の関連技術によれば、現用系の物理計算機に対して待機系の物理計算機を1対1に備えておく必要はない。しかしながら、複数の現用系の物理計算機上で稼働する仮想計算機のスナップショットを共有記憶装置に定期的に保存し、何れかの現用系の物理計算機の障害時に共有記憶装置に保存されたスナップショットを使用して待機系の物理計算機に仮想計算機を生成し、この生成した仮想計算機によって上記障害に遭遇した物理計算機上の仮想計算機が行っていた処理を引継ぐ方法では、サービス中断時間が長くなる。その理由は、スナップショットを使用して待機系の物理計算機に新たに仮想計算機を生成するためには全メモリのコピーを行う必要があり、一般に長い時間を必要とするためである。

これに対して本発明に関連する第3の関連技術によれば、何れかの現用系の物理計算機に障害が発生した場合、待機系の物理計算機上の対応する待機系の仮想計算機を用いてフェイルオーバするため、サービス中断時間を短縮することができる。また本発明に関連する第3の関連技術によれば、上記フェイルオーバ後、直ちに待機系の物理計算機から他の物理計算機に現用系の仮想計算機を移動させることによって、待機系の物理計算機の負荷を軽減している。

概要

現用系の仮想計算機(VM)と待機系のVMとの同期を開始するためには、全メモリ内容を含む初回スナップショットのコピーが必要になること。現用系のVMが稼働する第1の計算機と、待機系のVMが稼働する第2の計算機とを有する。第1の計算機は、現用系のVMの全メモリを含む初回スナップショットを第2の計算機に送信して新たな待機系のVMを生成する。第1の計算機は、自計算機上のVMを待機系に切り換えて第2の計算機に対して待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、上記初回スナップショットを第2の計算機上の現用系のVMの初回のスナップショットとして認識し、以後、第2の計算機から受信するスナップショットに基づいて自計算機の待機系のVMの状態を更新する。

目的

本発明の目的は、上述した課題、すなわち、現用系の仮想計算機と待機系の仮想計算機との同期を開始するためには現用系の仮想計算機のCPUのコンテキストや全メモリ内容を含む初回スナップショットの転送が必要になる、という課題を解決するフォールトトレラントシステムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

現用系仮想計算機稼働する第1の計算機と、待機系の仮想計算機が稼働する第2の計算機とを有し、前記第1の計算機は、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな前記待機系の仮想計算機を生成し、自計算機上の前記仮想計算機を待機系に切り換えて前記第2の計算機に対して前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の前記待機系の仮想計算機の状態を前記第2の計算機上の前記現用系の仮想計算機の初回のスナップショットとして認識し、以後、前記第2の計算機から受信するスナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を更新する、フォールトトレラントシステム

請求項2

前記第1の計算機は、前記現用系の仮想計算機の初回スナップショットを取得して前記第2の計算機へ送信し、以後、第1のチェックポイント到来する毎に、前記現用系の前記仮想計算機のスナップショットを取得して前記第2の計算機へ送信する第1のスナップショット管理手段を有し、前記第2の計算機は、前記第1の計算機から受信した前記現用系の仮想計算機の初回スナップショットに基づいて、自計算機上に待機系の仮想計算機を新たに生成し、生成完了通知を前記第1の計算機へ送信する第2のスナップショット管理手段を有し、前記第1のスナップショット管理手段は、前記生成完了の通知を前記第2の計算機から受信すると、前記第1のチェックポイントで取得された前記スナップショットがあれば当該スナップショットを前記第2の計算機へ送信した後、切り換え準備完了の通知を前記第2の計算機から受信するのを検出し、前記第2のスナップショット管理手段は、前記生成完了の通知の前記送信後、前記第1のチェックポイントで取得された前記スナップショットを受信していれば当該スナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を前記現用系の仮想計算機の状態に一致させた後に前記切り換え準備完了の通知を前記第1の計算機へ通知し、現用系への切り換え指示を前記第1の計算機から受信するのを検出し、前記第1のスナップショット管理手段は、前記切り換え準備完了の通知を前記第2の計算機から受信すると、前記現用系の仮想計算機を待機系に切り換えて前記第2の計算機に対して前記現用系への切り換え指示を送信し、前記第2のスナップショット管理手段は、前記現用系への切り換え指示を前記第1の計算機から受信すると、前記待機系の仮想計算機を現用系に切り換え、以後、第2のチェックポイントが到来する毎に、前記現用系の仮想計算機のスナップショットを取得して前記第1の計算機へ送信し、前記第1のスナップショット管理手段は、前記第1の計算機の前記待機系の仮想計算機の状態を前記第2の計算機の前記現用系の仮想計算機の初回スナップショットとして認識し、以後、前記第2の計算機から受信した前記現用系の仮想計算機のスナップショットに基づいて、前記第1の計算機の前記待機系の仮想計算機の状態を前記現用系の仮想計算機の状態に一致させる請求項1に記載のフォールトトレラントシステム。

請求項3

前記第2の計算機が複数存在する場合、前記第1の計算機の前記第1のスナップショット管理手段は、前記第2の計算機の負荷率を選択の基準として、前記複数の第2の計算機の中から一の前記第2の計算機を選択する請求項2に記載のフォールトトレラントシステム。

請求項4

前記第1のスナップショット管理手段は、前記複数の第2の計算機の中から負荷率が最小の一の前記第2の計算機を選択する請求項3に記載のフォールトトレラントシステム。

請求項5

前記第1のスナップショット管理手段は、前記複数の第2の計算機の中から負荷率が閾値以下の一の前記第2の計算機を選択する請求項3に記載のフォールトトレラントシステム。

請求項6

それぞれ現用系の仮想計算機が稼働する複数の第3の計算機を有し、前記第1の計算機は、前記複数の第3の計算機の前記現用系の仮想計算機に対応する複数の待機系の仮想計算機を有し、前記第3の計算機の障害時、前記稼働系の仮想計算機を現用系に切り換え、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな待機系の仮想計算機を生成する前記処理では、該切り換え後の現用系の仮想計算機を対象として、全メモリを含む初回スナップショットの前記第2の計算機への送信による新たな待機系の仮想計算機の生成を行う請求項1乃至5の何れかに記載のフォールトトレラントシステム。

請求項7

1つ以上の待機系の仮想計算機が稼働する第2の計算機に接続され、現用系の仮想計算機と、スナップショット管理手段とを有し、前記スナップショット管理手段は、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな前記待機系の仮想計算機を生成し、自計算機上の前記仮想計算機を待機系に切り換えて前記第2の計算機に対して前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の前記待機系の仮想計算機の状態を前記第2の計算機上の前記現用系の仮想計算機の初回のスナップショットとして認識し、以後、前記第2の計算機から受信するスナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を更新する、計算機。

請求項8

前記スナップショット管理手段は、前記現用系の仮想計算機の初回スナップショットを取得して前記第2の計算機へ送信し、以後、第1のチェックポイントが到来する毎に、前記現用系の前記仮想計算機のスナップショットを取得して前記第2の計算機へ送信し、前記生成完了の通知を前記第2の計算機から受信すると、前記第1のチェックポイントで取得された前記スナップショットがあれば当該スナップショットを前記第2の計算機へ送信した後、切り換え準備完了の通知を前記第2の計算機から受信するのを検出し、前記切り換え準備完了の通知を前記第2の計算機から受信すると、前記現用系の仮想計算機を待機系に切り換えて前記第2の計算機に対して前記現用系への切り換え指示を送信し、前記第1の計算機の前記待機系の仮想計算機の状態を前記第2の計算機の前記現用系の仮想計算機の初回スナップショットとして認識し、以後、前記第2の計算機から受信した前記現用系の仮想計算機のスナップショットに基づいて、前記第1の計算機の前記待機系の仮想計算機の状態を前記現用系の仮想計算機の状態に一致させる請求項7に記載の計算機。

請求項9

前記第2の計算機が複数存在する場合、前記スナップショット管理手段は、前記第2の計算機の負荷率を選択の基準として、前記複数の第2の計算機の中から一の前記第2の計算機を選択する請求項7または8に記載の計算機。

請求項10

前記スナップショット管理手段は、前記複数の第2の計算機の中から負荷率が最小の一の前記第2の計算機を選択する請求項9に記載の計算機。

請求項11

前記スナップショット管理手段は、前記複数の第2の計算機の中から負荷率が閾値以下の一の前記第2の計算機を選択する請求項9に記載の計算機。

請求項12

前記第1の計算機は、それぞれ現用系の仮想計算機が稼働する複数の第3の計算機における前記現用系の仮想計算機に対応する複数の待機系の仮想計算機を有し、前記スナップショット管理手段は、前記第3の計算機の障害時、前記稼働系の仮想計算機を現用系に切り換え、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな待機系の仮想計算機を生成する前記処理では、該切り換え後の現用系の仮想計算機を対象として、全メモリを含む初回スナップショットの前記第2の計算機への送信による新たな待機系の仮想計算機の生成を行う請求項7乃至11の何れかに記載の計算機。

請求項13

現用系の仮想計算機が稼働する第1の計算機に接続され、待機系の仮想計算機と、スナップショット管理手段とを有し、前記スナップショット管理手段は、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第1の計算機から受信して新たな前記待機系の仮想計算機を生成し、前記第1の計算機上の前記仮想計算機が待機系に切り換えられた後に前記第1の計算機から送信される、前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を受信すると、前記待機系の仮想計算機を前記現用系の仮想計算機へ切り換え、該切り換え後の前記現用系の仮想計算機の初回のスナップショットを前記第1の計算機へ送信する処理を省略し、以後、第2のチェックポイントが到来する毎に、前記現用系の前記仮想計算機のスナップショットを取得して前記第1の計算機へ送信する計算機。

請求項14

前記チェックポイント管理手段は、前記第1の計算機から受信した前記現用系の仮想計算機の初回スナップショットに基づいて、自計算機上に待機系の仮想計算機を新たに生成し、生成完了の通知を前記第1の計算機へ送信し、前記生成完了の通知の前記送信後、前記第1の計算機から第1のチェックポイントで取得されたスナップショットを受信していれば当該スナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を前記現用系の仮想計算機の状態に一致させた後に切り換え準備完了の通知を前記第1の計算機へ通知し、現用系への切り換え指示を前記第1の計算機から受信するのを検出し、前記現用系への切り換え指示を前記第1の計算機から受信すると、前記待機系の仮想計算機を現用系に切り換え、該切り換え後の前記現用系の仮想計算機の初回のスナップショットを前記第1の計算機へ送信する処理を省略し、以後、前記第2のチェックポイントが到来する毎に、前記現用系の仮想計算機のスナップショットを取得して前記第1の計算機へ送信する請求項13に記載の計算機。

請求項15

現用系の仮想計算機が稼働する第1の計算機と、待機系の仮想計算機が稼働する第2の計算機とを有するフォールトトレラントシステムの制御方法であって、前記第1の計算機が、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな前記待機系の仮想計算機を生成し、自計算機上の前記仮想計算機を待機系に切り換えて前記第2の計算機に対して前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の前記待機系の仮想計算機の状態を前記第2の計算機上の前記現用系の仮想計算機の初回のスナップショットとして認識し、以後、前記第2の計算機から受信するスナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を更新する、フォールトトレラントシステム制御方法。

請求項16

1つ以上の待機系の仮想計算機が稼働する第2の計算機に接続された計算機を、現用系の仮想計算機と、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第2の計算機に送信して新たな待機系の仮想計算機を生成し、自計算機上の前記仮想計算機を待機系に切り換えて前記第2の計算機に対して前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の前記待機系の仮想計算機の状態を前記第2の計算機上の前記現用系の仮想計算機の初回のスナップショットとして認識し、以後、前記第2の計算機から受信するスナップショットに基づいて自計算機の前記待機系の仮想計算機の状態を更新するスナップショット管理手段として機能させるためのプログラム

請求項17

現用系の仮想計算機が稼働する第1の計算機に接続された計算機を、待機系の仮想計算機と、前記現用系の仮想計算機の全メモリを含む初回スナップショットを前記第1の計算機から受信して新たな前記待機系の仮想計算機を生成し、前記第1の計算機上の前記仮想計算機が待機系に切り換えられた後に前記第1の計算機から送信される、前記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を受信すると、前記待機系の仮想計算機を前記現用系の仮想計算機へ切り換え、該切り換え後の前記現用系の仮想計算機の初回のスナップショットを前記第1の計算機へ送信する処理を省略し、以後、第2のチェックポイントが到来する毎に、前記現用系の前記仮想計算機のスナップショットを取得して前記第1の計算機へ送信するスナップショット管理手段として機能させるためのプログラム。

技術分野

0001

本発明は、フォールトトレラントシステム、その制御方法計算機、およびプログラムに関する。

背景技術

0002

可用性を高めた計算機システムとして、ホットスタンバイ構成のHAクラスタ(High availability cluster)、FTサーバ(Fault Tolerant server)が知られている。

0003

HAクラスタは、複数台のサーバを相互接続し、システム冗長化を図る。現在稼動している(現用系)サーバに障害が発生した場合、待機系として用意されていた別のサーバが処理を引き継ぐため、クラスタ全体としては異常なく稼動し続けているように見える。主な方式として、アクティブスタンバイ方式とレプリケーション方式とがある。

0004

アクティブスタンバイ方式のHAクラスタでは、現用系と待機系でストレージ共有する。現用系は、待機系を同期させるのに必要な、アプリケーションに依存した情報を共有ストレージに書き、待機系はフェイルオーバー時にこの情報を用いてリカバリ処理を行うため、アプリケーションやOSから見て、透過的に可用性を得ることができない。また、フェイルオーバーには時間を要し、その間はサービスが提供できなくなる。

0005

レプリケーション方式のHAクラスタでは、現用系と待機系が個別にストレージを持ち、現用系のアプリケーションに到着したリクエストを待機系にも転送することで、待機系に現用系と同じ状態遷移をさせる。一般に、複数の系の状態を一致させることを、同期をとると言う。現用系に障害が発生して停止した場合、待機系のアプリケーションの状態は現用系と同期しているため、現用系を切り離して処理を待機系に切り換えてサービスを継続することができる。しかし、クラスタリングするアプリケーション毎にレプリケーションの仕組みを追加しなければならないため、アプリケーションやOSから見て、透過的に可用性を得ることができない。

0006

このようにHAクラスタでは、アプリケーションやOSに可用性を意識した仕組みを追加しなければならない。これに対して、FTサーバでは、アプリケーションやOSが特別な処理を必要としないで、透過的にサービスを継続することができる。FTサーバを実現する方式は、ハードウェア方式ソフトウェア方式とに大別される。

0007

ハードウェア方式のFTサーバは、CPU、メモリ、ストレージなどの主要なハードウェアコンポーネントを冗長化し、あるコンポーネントに障害が発生した場合は、そのコンポーネントを切り離して動作を継続する。CPUやメモリ、チップセットを含むモジュールCPUサブシステム、各種IOデバイスを含むモジュールをIOサブシステムと定義すると、コンポーネントを二重化する一般的なFTサーバではCPUサブシステムとIOサブシステムとで二重化の方式が異なる。CPUサブシステムは、クロック単位ハードウェアの動作を完全に一致させる。これをロックステップと呼ぶ。二重化されたCPUサブシステムは両方とも完全に同じ動作をしているので、障害発生時はその障害が発生したCPUサブシステムを論理的に切り離し、正常なCPUサブシステムに瞬時に処理を切り換えて動作を継続させる。IOサブシステムは、ロックステップこそしていないが、障害が発生した場合、直ちに他方のIOサブシステムに切り換える。ハードウェア方式のFTサーバは、極めて高い可用性を実現することができる。しかし、特殊なハードウェアで構成されるため、同程度の性能を持つ一般サーバと比較して導入コストがかかる。

0008

一方、ソフトウェア方式のFTサーバは、物理計算機上で1つまたは複数のOSを動作させることを可能とした仮想化技術を使用する。物理計算機上に仮想的に構築される計算機を、仮想計算機あるいは仮想マシンと呼ぶ。ソフトウェア方式のFTサーバでは、物理計算機を冗長化し、現用系の仮想計算機と待機系の仮想計算機とをそれぞれ異なる物理計算機上に配置する。現用系の仮想計算機が属する物理計算機でハードウェアの故障等の障害が発生した場合、その仮想計算機が行っている処理を他の物理計算機上の待機系の仮想計算機で継続して実行する。アプリケーションやOSから見て、透過的にサービスを継続するために、ソフトウェア方式のFTサーバでは、現用系と待機系の仮想計算機の状態を一致させる処理、すなわち同期を行う。

0009

現用系と待機系の仮想計算機を同期させる方式には、主に仮想ロックステップ方式チェックポイント方式の2つの方式がある。仮想ロックステップ方式は、現用系の仮想計算機に対する入力を、待機系の仮想計算機に対しても与えることにより、待機系の仮想計算機の状態を現用系の仮想計算機と同じように遷移させる。仮想計算機間の同期に必要なデータ量が少なくて済む利点がある反面、現用系と待機系とでCPUの種類が異なると動作しないといった課題がある。

0010

他方、チェックポイント方式は、定期的に、現用系の仮想計算機のイメージ(CPU、メモリ、ストレージなど)を待機系に送り、待機系の仮想計算機の状態を現用系の仮想計算機の状態に一致させる。チェックポイント方式は、仮想ロックステップ方式と比較して実装が容易であり、CPUの特定の機能に依存しないため、幅広製品に実装できる利点がある。その反面、仮想計算機のイメージはデータ量が多いため、仮想ロックステップ方式よりも1回の同期にかかるオーバーヘッドが大きいという課題がある。

0011

この課題を解決するために、前回のチェックポイント以降に更新された現用系の仮想計算機のイメージのみを待機系に送ることが本発明に関連する第1の関連技術として提案されている(例えば非特許文献1参照)。この第1の関連技術では、チェックポイントが到来すると、現用系の仮想計算機を一旦停止させることでメインメモリへの更新を遮断し、前回のチェックポイント以降に更新のあったメインメモリのページであるダーティページの全てを、メインメモリに設けたバッファローカルコピーする。そして、ローカルコピーを完了すると、停止させていた現用系の仮想計算機を再起動し、並行して、上記コピーされたダーティページを上記バッファから待機系へと転送する。

0012

また、複数の現用系の物理計算機と複数の待機系の物理計算機とをスイッチを介して共通のディスクアレイ装置に接続し、複数の現用系の物理計算機上で動作している現用系の仮想計算機のスナップショットを、上記スイッチを介して上記ディスクアレイ装置に定期的に保存することが、本発明に関連する第2の関連技術として提案されている(例えば特許文献1参照)。そして、この第2の関連技術では、或る現用系の物理計算機の障害時、複数の待機系の物理計算機の何れかを上記スイッチを介して上記ディスクアレイ装置に接続し、上記ディスクアレイ装置に保存されている現用系の仮想計算機の直近のスナップショットを使用して、待機系の物理計算機に新たに仮想計算機を生成し、この生成した仮想計算機によって上記障害に遭遇した現用系の仮想計算機の処理を引継ぐようにしている。

0013

また、複数の現用系の物理計算機に対して1台の待機系の物理計算機と1台以上の他の物理計算機とを有するソフトウェア方式のFTサーバが、本発明に関連する第3の関連技術として提案されている(例えば非特許文献2参照、特に図3.2-1、図3.2-30)。この第3の関連技術では、複数の現用系の物理計算機上の複数の現用系の仮想計算機の状態と、上記1台の待機系の物理計算機上に存在する対応する待機系の仮想計算機の状態とを、現用系でイベントが発生したことを契機に一致させるという方法で同期させる。そして、何れかの現用系の物理計算機の障害時、まず、待機系の物理計算機上の対応する待機系の仮想計算機を使ってフェイルオーバする。次いで、待機系の物理計算機から他の物理計算機(非特許文献2では予備系と称している)に高速マイグレーションという手法を用いて、現用系の仮想計算機を移動する。

0014

本発明に関連する第2の関連技術によれば、現用系の物理計算機に対して待機系の物理計算機を1対1に備えておく必要はない。しかしながら、複数の現用系の物理計算機上で稼働する仮想計算機のスナップショットを共有記憶装置に定期的に保存し、何れかの現用系の物理計算機の障害時に共有記憶装置に保存されたスナップショットを使用して待機系の物理計算機に仮想計算機を生成し、この生成した仮想計算機によって上記障害に遭遇した物理計算機上の仮想計算機が行っていた処理を引継ぐ方法では、サービス中断時間が長くなる。その理由は、スナップショットを使用して待機系の物理計算機に新たに仮想計算機を生成するためには全メモリのコピーを行う必要があり、一般に長い時間を必要とするためである。

0015

これに対して本発明に関連する第3の関連技術によれば、何れかの現用系の物理計算機に障害が発生した場合、待機系の物理計算機上の対応する待機系の仮想計算機を用いてフェイルオーバするため、サービス中断時間を短縮することができる。また本発明に関連する第3の関連技術によれば、上記フェイルオーバ後、直ちに待機系の物理計算機から他の物理計算機に現用系の仮想計算機を移動させることによって、待機系の物理計算機の負荷を軽減している。

0016

Brendan Cully、外5名、“Remus: HighAvailability via Asynchronous Virtual Machine Replication”、[online]、[平成24年9月5日検索]、インターネット〈URL:http://www.cs.ubc.ca/~andy/papers/remus-nsdi-final.pdf〉
経済産業省 平成22年度産業技術研究開発委託費(次世代高信頼省エネ型IT基盤技術開発事業クラウドコンピューティングアカウンタビリティを向上させる研究・開発事業事業報告書」、平成23年3月31日、エヌ・ティ・ティ・コミュニケーションズ株式会社。

先行技術

0017

特開2007−183701号公報

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

0018

ところで、可用性を維持するためには、他の物理計算機に移動させた現用系の仮想計算機に対して新たに同期先となる待機系の仮想計算機を設定し、現用系の仮想計算機と待機系の仮想計算機との同期を開始しなければならない。例えば、現用系の仮想計算機が稼働する第1の計算機と、待機系の仮想計算機が稼働する第2の計算機とを有するフォールトトレラントシステムにおいて、第1の計算機上の現用系の仮想計算機を第2の計算機に移動させた場合、第2の計算機上に移動した現用系の仮想計算機に対して新たに同期先となる待機系の仮想計算機を設定し、現用系の仮想計算機と待機系の仮想計算機との同期を開始しなければならない。一般に同期を開始する際には、現用系の仮想計算機の全メモリ内容を含む初回スナップショットを取得して、新たに同期先となる物理計算機へ送信する必要がある。

0019

本発明の目的は、上述した課題、すなわち、現用系の仮想計算機と待機系の仮想計算機との同期を開始するためには現用系の仮想計算機のCPUのコンテキストや全メモリ内容を含む初回スナップショットの転送が必要になる、という課題を解決するフォールトトレラントシステムを提供することにある。

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

0020

本発明の第1の観点に係るフォールトトレラントシステムは、
現用系の仮想計算機が稼働する第1の計算機と、
待機系の仮想計算機が稼働する第2の計算機と
を有し、
上記第1の計算機は、上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第2の計算機に送信して新たな待機系の仮想計算機を生成し、自計算機上の上記仮想計算機を待機系に切り換えて上記第2の計算機に対して上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の上記待機系の仮想計算機の状態を上記第2の計算機上の上記現用系の仮想計算機の初回のスナップショットとして認識し、以後、上記第2の計算機から受信するスナップショットに基づいて自計算機の上記待機系の仮想計算機の状態を更新する、
といった構成を採用する。

0021

また、本発明の第2の観点に係る計算機は、
1つ以上の待機系の仮想計算機が稼働する第2の計算機に接続され、
現用系の仮想計算機と、
スナップショット管理手段と
を有し、
上記スナップショット管理手段は、上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第2の計算機に送信して新たな待機系の仮想計算機を生成し、自計算機上の上記仮想計算機を待機系に切り換えて上記第2の計算機に対して上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の上記待機系の仮想計算機の状態を上記第2の計算機上の上記現用系の仮想計算機の初回のスナップショットとして認識し、以後、上記第2の計算機から受信するスナップショットに基づいて自計算機の上記待機系の仮想計算機の状態を更新する、
といった構成を採用する。

0022

また、本発明の第3の観点に係る計算機は、
現用系の仮想計算機が稼働する第1の計算機に接続され、
待機系の仮想計算機と、
スナップショット管理手段と
を有し、
上記スナップショット管理手段は、上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第1の計算機から受信して新たな上記待機系の仮想計算機を生成し、上記第1の計算機上の上記仮想計算機が待機系に切り換えられた後に上記第1の計算機から送信される、上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を受信すると、上記待機系の仮想計算機を上記現用系の仮想計算機へ切り換え、該切り換え後の上記現用系の仮想計算機の初回のスナップショットを上記第1の計算機へ送信する処理を省略し、以後、第2のチェックポイントが到来する毎に、上記現用系の上記仮想計算機のスナップショットを取得して上記第1の計算機へ送信する、
といった構成を採用する。

0023

また本発明の第4の観点に係るフォールトトレラントシステム制御方法は、
現用系の仮想計算機が稼働する第1の計算機と、待機系の仮想計算機が稼働する第2の計算機とを有するフォールトトレラントシステムの制御方法であって、
上記第1の計算機が、上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第2の計算機に送信して新たな待機系の仮想計算機を生成し、自計算機上の上記仮想計算機を待機系に切り換え自計算機上の上記仮想計算機を待機系に切り換えて上記第2の計算機に対して上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の上記待機系の仮想計算機の状態を上記第2の計算機上の上記現用系の仮想計算機の初回のスナップショットとして認識し、以後、上記第2の計算機から受信するスナップショットに基づいて自計算機の上記待機系の仮想計算機の状態を更新する、
といった構成を採用する。

0024

また本発明の第5の観点に係るプログラムは、
1つ以上の待機系の仮想計算機が稼働する第2の計算機に接続された計算機を、
現用系の仮想計算機と、
上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第2の計算機に送信して新たな待機系の仮想計算機を生成し、自計算機上の上記仮想計算機を待機系に切り換えて上記第2の計算機に対して上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の上記待機系の仮想計算機の状態を上記第2の計算機上の上記現用系の仮想計算機の初回のスナップショットとして認識し、以後、上記第2の計算機から受信するスナップショットに基づいて自計算機の上記待機系の仮想計算機の状態を更新するスナップショット管理手段と
して機能させる。

0025

また本発明の第6の観点に係るプログラムは、
現用系の仮想計算機が稼働する第1の計算機に接続された計算機を、
待機系の仮想計算機と、
上記現用系の仮想計算機の全メモリを含む初回スナップショットを上記第1の計算機から受信して新たな上記待機系の仮想計算機を生成し、上記第1の計算機上の上記仮想計算機が待機系に切り換えられた後に上記第1の計算機から送信される、上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を受信すると、上記待機系の仮想計算機を上記現用系の仮想計算機へ切り換え、該切り換え後の上記現用系の仮想計算機の初回のスナップショットを上記第1の計算機へ送信する処理を省略し、以後、第2のチェックポイントが到来する毎に、上記現用系の上記仮想計算機のスナップショットを取得して上記第1の計算機へ送信するスナップショット管理手段と
して機能させる。

発明の効果

0026

本発明は上述した構成を有するため、現用系の仮想計算機に対して新たに同期先となる待機系の仮想計算機を設定して現用系の仮想計算機と待機系の仮想計算機との同期を開始する際、現用系の仮想計算機の初回スナップショットの転送を省くことができ、少ない負荷で可用性を維持することができる。

図面の簡単な説明

0027

本発明の第1の実施形態にかかるフォールトトレラントシステムのブロック図である。
本発明の第1の実施形態における物理計算機(第3の物理計算機)のチェックポイント管理部が実行する処理の一例を示すフローチャートである。
本発明の第1の実施形態における物理計算機(第1の物理計算機)のチェックポイント管理部が実行する処理の一例を示すフローチャートである。
本発明の第1の実施形態における物理計算機(第2の物理計算機)のチェックポイント管理部が実行する処理の一例を示すフローチャートである。
本発明の第1の実施形態にかかるフォールトトレラントシステムで物理計算機(第3の物理計算機)に障害が発生した際に行われるフェイルオーバの説明図である。
本発明の第1の実施形態にかかるフォールトトレラントシステムにおいて、障害発生によるフェイルオーバ直後に物理計算機(第2の物理計算機)上に待機系の仮想計算機が新規に生成される様子を示す図である。
本発明の第1の実施形態にかかるフォールトトレラントシステムにおいて、物理計算機(第2の物理計算機)上の待機系の仮想計算機が現用系に切り換わり、物理計算機(第1の物理計算機)上の現用系の仮想計算機が待機系に切り換わった状態を示す図である。
本発明の第2の実施形態にかかるフォールトトレラントシステムのブロック図である。
本発明の第2の実施形態における物理計算機(第1の物理計算機)のチェックポイント管理部が実行する処理の一例を示すフローチャートである。
本発明の第2の実施形態にかかるフォールトトレラントシステムで物理計算機(第3の物理計算機)に障害が発生した際に行われるフェイルオーバの説明図である。
本発明の第2の実施形態にかかるフォールトトレラントシステムにおいて、障害発生によるフェイルオーバ直後に物理計算機(第2の物理計算機)の1つが待機系に選択され、その上に待機系の仮想計算機が新規に生成される様子を示す図である。
本発明の第2の実施形態にかかるフォールトトレラントシステムにおいて、物理計算機(第2の物理計算機)上の待機系の仮想計算機が現用系に切り換わり、物理計算機(第1の物理計算機)上の現用系の仮想計算機が待機系に切り換わった状態を示す図である。
本発明の第3の実施形態にかかるフォールトトレラントシステムのブロック図である。

実施例

0028

次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態にかかるフォールトトレラントシステム100は、ハードウェアとしてn台(nは2以上の整数)の物理計算機110と、これらn台の物理計算機110に共通な1台の物理計算機120と、何れかの物理計算機110に障害が発生した場合にそれに代えて使用する1台の他の物理計算機130とを有する。また、n台の物理計算機110と1台の物理計算機120と1台の物理計算機130とはネットワーク140を通じて相互に通信可能に接続されている。

0029

各々の物理計算機110は、サーバ装置などで構成され、ハードウェアとして、1以上のプロセッサ、メインメモリ、通信カード等(何れも図示せず)を有する。また、各々の物理計算機110は、ソフトウェアとして、仮想計算機環境を提供するハイパーバイザ(Hypervisor)111と、このハイパーバイザ111が提供する仮想計算機環境の下で動作する仮想計算機112とを有する。

0030

また、物理計算機120は、サーバ装置などで構成され、ハードウェアとして、1以上のプロセッサ、メインメモリ、通信カード等(何れも図示せず)を有する。また、物理計算機120は、ソフトウェアとして、仮想計算機環境を提供するハイパーバイザ121と、このハイパーバイザ121が提供する仮想計算機環境の下で動作するn個の仮想計算機122とを有する。

0031

さらに、物理計算機130は、サーバ装置などで構成され、ハードウェアとして、1以上のプロセッサ、メインメモリ、通信カード等(何れも図示せず)を有する。また、物理計算機130は、ソフトウェアとして、仮想計算機環境を提供するハイパーバイザ131を有する。

0032

物理計算機120のn個の仮想計算機122は、n台の物理計算機110のn個の仮想計算機112と1対1に対応している。即ち、仮想計算機122−1は仮想計算機112−1に対応し、…、仮想計算機122−nは仮想計算機112−nに対応する。このように物理計算機120上では、n個の仮想計算機122が存在するため、物理計算機120のメインメモリの容量は、物理計算機110のメインメモリに比べて大きくなっている。以下、特定の仮想計算機を意味する場合、参照番号に−i(iは1〜nの何れか)を付加する。

0033

ここで、初期状態においては、各々の物理計算機110の仮想計算機112は現用系として動作し、物理計算機120の仮想計算機122は待機系として動作する。また物理計算機130には、物理計算機110、120と同じフォールトトレラントグループを構成する現用系および待機系の仮想計算機は存在しない。但し、物理計算機130には、他のフォールトトレラントグループに属する待機系の仮想計算機や、仮想計算機以外のアプリケーションプログラムが存在していても構わない。そして、何れかの現用系の仮想計算機112−iが動作する物理計算機110−iにハードウェア障害等の障害が発生すると、物理計算機120上の対応する仮想計算機122−iが待機系から現用系に切り換わり、障害に遭遇した仮想計算機112−iが行っている処理を現用系となった仮想計算機122−iで継続して実行する。さらに、現用系となった仮想計算機122−iに対して待機系となる新規な仮想計算機を物理計算機130に生成し、そして、物理計算機120の負荷を軽減するために、物理計算機120の現用系の仮想計算機122−iを待機系に、物理計算機130上に生成した待機系の仮想計算機を現用系に切り換えるようにしている。

0034

物理計算機110のハイパーバイザ111は、スナップショット管理部113を有する。また、物理計算機120のハイパーバイザ121は、スナップショット管理部123を有する。さらに、物理計算機130のハイパーバイザ131は、スナップショット管理部133を有する。スナップショット管理部113とスナップショット管理部123とスナップショット管理部133とは、物理計算機110と物理計算機120と物理計算機130とをFTサーバとして機能させるためのソフトウェアである。

0035

物理計算機110側のスナップショット管理部113は、チェックポイントが到来する毎に、自物理計算機110上の現用系の仮想計算機112のスナップショットを取得してネットワーク140経由で物理計算機120へ送信するスナップショット取得機能を有する。このスナップショット取得機能では、チェックポイントにおける仮想計算機112の状態をスナップショットとして取得する。スナップショットして取得する仮想計算機112の状態は、仮想計算機112の状態を当該スナップショット時点に復元するのに必要なデータ、例えば仮想計算機112に割り当てられているCPUの状態(プログラムカウンタレジスタの状態)やメモリの状態を含む。本発明に関連する第1の関連技術に記載されるように、転送するデータ量を削減するために、仮想計算機112のメモリ状態は前回のスナップショット以降に更新されたメモリページ(ダーティページ)のみを含むようにして良い。

0036

物理計算機120側のスナップショット管理部123は、物理計算機110から受信した現用系の仮想計算機112のスナップショットに基づいて、自物理計算機120上の対応する待機系の仮想計算機122の状態を現用系の仮想計算機112の状態に一致させる同期機能を有する。この同期機能では、物理計算機110から受信した現用系の仮想計算機112の時刻t時点のスナップショットに基づいて、対応する待機系の仮想計算機122の状態を上記時刻t時点の現用系の仮想計算機112の状態に一致させる。

0037

またスナップショット管理部123は、さらに、何れかの物理計算機110で障害が発生した場合、当該障害の発生した物理計算機110の現用系の仮想計算機112に対応する自物理計算機120上の待機系の仮想計算機122を、待機系から現用系に切り換えるフェールオーバ機能を有する。

0038

またスナップショット管理部123は、さらに、物理計算機130に対して自物理計算機120上の現用系の仮想計算機の全メモリ内容を含む初回スナップショットを送信して待機系の仮想計算機を新規に生成するように要求し、その後にチェックポイントが到来する毎に、現用系の仮想計算機のスナップショットを取得して物理計算機130に送信する機能を有する。またスナップショット管理部123は、物理計算機130から仮想計算機の生成完了通知を受信すると、物理計算機130から切り換え準備完了の通知を受信するのを待ち合わせる機能を有する。このとき、上記初回スナップショット以降に上記現用系の仮想計算機のチェックポイントで取得されたスナップショットがあれば、スナップショット管理部123は、当該スナップショットを物理計算機130へ転送した後に、物理計算機130から切り換え準備完了の通知を受信するのを待ち合わせる。さらにスナップショット管理部123は、物理計算機130のスナップショット管理部133から、切り換え準備完了の通知を受信すると、自物理計算機120上の現用系の仮想計算機122を待機系に切り換え、物理計算機130に対して現用系への切り換えを指示する機能を有する。またさらに、スナップショット管理部123は、待機系に切り換えた仮想計算機122の状態を物理計算機130の現用系の仮想計算機の初回スナップショットとして認識し、以後、物理計算機130から受信した上記現用系の仮想計算機のスナップショットに基づいて、自物理計算機130の上記待機系の仮想計算機の状態を上記現用系の仮想計算機の状態に一致させる機能を有する。

0039

物理計算機130側のスナップショット管理部133は、物理計算機120からの仮想計算機の新規生成要求に従って、自物理計算機130に待機系の仮想計算機を新規に生成し、生成完了を物理計算機120へ通知する機能を有する。また、スナップショット管理部133は、仮想計算機の生成完了を通知した後、切り換え準備完了を物理計算機120へ通知する機能を有する。なお、スナップショット管理部133は、物理計算機120から初回スナップショットを受信した後、チェックポイントで取得されたスナップショットを物理計算機120から受信していれば、この受信したスナップショットを用いて待機系の仮想計算機の状態を現用系の仮想計算機の状態に一致させる同期化を行った後、切り換え準備完了を物理計算機120に対して通知する。また、スナップショット管理部133は、切り換え準備完了を通知した後、物理計算機120から現用系への切り換え指示を受信すると、仮想計算機を待機系から現用系に切り換える機能を有する。さらにスナップショット管理部133は、チェックポイントが到来する毎に、現用系となった仮想計算機のスナップショットを取得し、物理計算機120へ転送するスナップショット取得機能を有する。

0040

次に本実施形態にかかるフォールトトレラントシステム100の動作を図1乃至図4を参照して説明する。図2は各々の物理計算機110のスナップショット管理部113の処理の一例を示すフローチャート、図3は物理計算機120のスナップショット管理部123の処理の一例を示すフローチャート、図4は物理計算機130のスナップショット管理部133の処理の一例を示すフローチャートである。

0041

初期の状態においては、各々の物理計算機110の仮想計算機112は現用系として動作し、物理計算機120の仮想計算機122は待機系として動作している。各々の物理計算機110のハイパーバイザ111が有するスナップショット管理部113は、自物理計算機110上の現用系の仮想計算機112の全メモリ内容を含む初回スナップショットを生成し、待機系の物理計算機120へ転送する(図2のステップS101)。待機系の物理計算機120のハイパーバイザ121が有するスナップショット管理部121は、上記初回スナップショットを受信し、自物理計算機120上に待機系の仮想計算機122を新規に生成する。その後、各々の物理計算機110のハイパーバイザ111が有するスナップショット管理部113は、チェックポイントが到来したか否かを検出する(図2のS102)。チェックポイントとは、現用系の仮想計算機112と待機系の仮想計算機122との同期を採るタイミングである。チェックポイントの検出方法は任意である。例えば、予め設定された時間周期T1毎にチェックポイントが到来したものと検出して良い。以下、物理計算機110−iが時刻tで検出したチェックポイントをCTitと記す。

0042

スナップショット管理部113は、チェックポイントCTitを検出すると、自物理計算機110−iの仮想計算機(現用系)112のスナップショットを取得し、ネットワーク140経由で物理計算機120へ送信する(S103)。送信されるスナップショットには、他の仮想計算機112のスナップショットと区別できるように、フォールトトレラントシステム100で一意識別情報が付加される。

0043

スナップショット管理部113は、スナップショットの送信が完了すると、ステップS102に戻り、次のチェックポイントの到来を検出する。

0044

物理計算機120のハイパーバイザ121が有するスナップショット管理部123は、物理計算機110−iからスナップショットを受信すると(図3のS111)、この受信したスナップショットを用いて、仮想計算機(待機系)122−iの状態を仮想計算機(現用系)112−iの状態に一致させる(S112)。具体的には、スナップショット管理部123は、仮想計算機122−iに割り当てられている物理計算機120のメインメモリを、受信したスナップショットに含まれるページで上書きする。

0045

またスナップショット管理部123は、複数の現用系の物理計算機110における障害の有無を検出する(S113)。障害の検出方法は任意である。例えば、スナップショット管理部123は、各々の物理計算機110からネットワーク140経由で物理計算機120に対して一定周期で送信される特定の信号(例えばハートビート信号)の受信の有無を検出することによって障害の有無を検出して良い。

0046

スナップショット管理部123は、何れかの物理計算機110−iの障害を検出すると、自物理計算機120の対応する仮想計算機122−iを待機系から現用系へ切り換える(S114)。

0047

次にスナップショット管理部123は、物理計算機130に対して、上記現用系となった仮想計算機122−iに対して待機系となる仮想計算機の生成を要求する(S115)。具体的には、スナップショット管理部123は、現用系の仮想計算機122−iを一時的に停止してその全メモリのコピーを含むスナップショットを取得し、この取得したスナップショットを初回のスナップショットとして添えて仮想計算機の新規生成を物理計算機130に対して要求する。そして、スナップショット管理部123は、要求先の物理計算機130から仮想計算機の生成完了の通知を受信するのを待ち合わせる(S116)。スナップショット管理部123は、仮想計算機の生成完了の通知を物理計算機130から受信すると(S116でYES)、上記初回スナップショット以降に上記現用系の仮想計算機122−iのチェックポイントで取得されたスナップショットがあるか否かを判定する(S117)。若し、あれば当該スナップショットを物理計算機130へ転送し(S118)、物理計算機130から切り換え準備完了の通知を受信するのを待ち合わせる(S119)。また、スナップショットがなければ(S117でNO)、ステップS118をスキップし、物理計算機130から切り換え準備完了の通知を受信するのを待ち合わせる(S119)。スナップショット管理部123は、要求先の物理計算機130から切り換え準備完了の通知を受信すると(S119でYES)、仮想計算機122−iのステータスを現用系から待機系に切り換え(S120)、物理計算機130に対して仮想計算機を待機系から現用系へ切り換えるように指示する(S121)。このとき、スナップショット管理部123は、待機系に切り換えた仮想計算機122−iの状態を、物理計算機130の後述する現用系の仮想計算機の初回のスナップショットとして認識する。これは、物理計算機120から物理計算機130への仮想計算機122−iの初回スナップショットのコピー直後には、物理計算機120の仮想計算機122−iと物理計算機130に生成される仮想計算機のメモリ状態が完全に一致しているためである。また、その後にチェックポイントによって仮想計算機122−iのスナップショットが取得されていても、それらが物理計算機120から物理計算機130へ送信されて、後述するように物理計算機130上に生成された仮想計算機のメモリ状態に反映される、すなわち同期化されるためである。

0048

以後、スナップショット管理部123は、ステップS111に戻る。このため、物理計算機130から後述する現用系の仮想計算機の2回目以降のスナップショットを受信すると、この受信したスナップショットにより、待機系となった仮想計算機122−iの状態を更新することになる。

0049

他方、物理計算機130側のスナップショット管理部133は、物理計算機120から初回のスナップショットを含む仮想計算機の新規生成要求を受信すると(図4のS131)、自物理計算機130に待機系の仮想計算機を新たに生成する(S132)。仮想計算機の生成は、具体的には、自物理計算機130のメインメモリに新たな仮想計算機のメモリ領域を確保し、この確保したメモリ領域に受信した初回スナップショットを書き込むことで行われる。

0050

次に、スナップショット管理部133は、現用系が動作中の物理計算機120に対し仮想計算機の生成完了を通知する(S133)。次に、スナップショット管理部133は、現用系が動作中の物理計算機120からスナップショットを受信したか否かを判定し(S134でYES)、受信したならば、受信したスナップショットを用いて待機系の仮想計算機の状態を現用系の仮想計算機の状態に一致させる同期化を行い(S135)、切り換え準備完了を物理計算機120に対して通知して(S136)、現用系への切り換え指示を受信するのを待ち合わせる(S137)。一方、スナップショットを受信していない場合には、スナップショット管理部133は、ステップS135の処理をスキップし、切り換え準備完了を物理計算機120に対して通知して(S136)、現用系への切り換え指示を受信するのを待ち合わせる(S137)。次に、スナップショット管理部133は、物理計算機120から現用系への切り換え指示を受信すると、仮想計算機のステータスを待機系から稼働系に切り換える(S138)。

0051

その後、スナップショット管理部133は、チェックポイントが到来する毎に(S139)、現用系の仮想計算機のスナップショットを取得し、2回目以降のスナップショットとして物理計算機120へ転送する(S140)。

0052

図5乃至図7は、現用系の物理計算機110−1に障害が発生した際、その物理計算機110−1上の現用系の仮想計算機112−1が実行していた業務処理を、物理計算機130の後述する仮想計算機132が実行するように至るまでの推移を模式的に示している。

0053

まず図5に示すように、物理計算機110−1に障害が発生すると、物理計算機120の仮想計算機122−1が待機系から現用系へ切り換えられ、仮想計算機122−1が、仮想計算機112−1で実行されていた業務処理を実行する。続いて、図6に示すように、物理計算機120の現用系の仮想計算機122−1に対して待機系となる仮想計算機132が物理計算機130に新たに生成される。この仮想計算機132の新規生成時には、仮想計算機122−1の全メインメモリの記憶データを含む初回スナップショットが物理計算機120から物理計算機130へネットワーク140経由で送信される。そして、物理計算機130に待機系の仮想計算機132が生成され、物理計算機120から物理計算機130へ現用系の切り換え指示があると、図7に示すように、仮想計算機132が待機系から現用系に切り換えられると同時に、物理計算機120の稼働計算機122−1が現用系から待機系に切り換えられる。

0054

以上は、物理計算機110−1に障害が発生した場合の動作であるが、他の物理計算機110−2〜210−nに障害が発生した場合にも同様の動作が行われる。

0055

また、以上は、物理計算機110に障害が発生した場合の動作であるが、物理計算機110の交換等を行うために物理計算機110をシステムから切り離す際にも、同様の手順で、物理計算機110が実行している業務処理を他の物理計算機130で実行させるようにすることが可能である。

0056

以上説明したように本実施形態によれば、以下のような効果が得られる。

0057

経済的な運用が可能である。その理由は、複数の現用系の物理計算機110に対して共通な1つの物理計算機120を備えていればよく、待機系の物理計算機を1対1に備えておく必要がないためである。

0058

サービス中断時間を短縮することができる。その理由は、物理計算機120上に既に生成されている仮想計算機122を待機系から現用系へ切り換えるのに要する時間は、物理計算機に新たな仮想計算機を生成するのに要する時間に比べて短いためである。

0059

現用系の物理計算機110の障害後も高可用性を維持することができる。その理由は、物理計算機120の現用系となった仮想計算機122に対して待機系となる仮想計算機132を、他の物理計算機130に生成し、仮想計算機の冗長性を維持するためである。

0060

物理計算機120の負荷を軽減することができる。その理由は、新たに待機系となった仮想計算機132を現用系に切り換えると同時に、物理計算機120の現用系の仮想計算機122を待機系に切り換えることによって、物理計算機120に現用系の仮想計算機が長く存在しないようにしているためである。

0061

現用系となった仮想計算機132の初回スナップショットを、フェイルオーバ先の物理計算機130から待機系の物理計算機120へ転送してコピーする処理を省略することができ、初回スナップショットの送受信に伴う物理計算機120、130の負荷を軽減することができる。その理由は、物理計算機120のスナップショット管理部123は、待機系に切り換えた仮想計算機122の状態を、現用系に切り換わった仮想計算機132の初回スナップショットとして認識するためである。

0062

[第2の実施形態]
図8を参照すると、本発明の第2の実施形態にかかるフォールトトレラントシステム200は、図1に示した本発明の第1の実施形態にかかるフォールトトレラントシステム100と比較して、他の物理計算機130がm台(mは2以上の整数)存在する点と、物理計算機120のスナップショット管理部123が選択手段124を有する点で、相違する。

0063

スナップショット管理部123の選択手段124は、m台の物理計算機130の中から新たに仮想計算機を生成する一の物理計算機を選択する機能を有する。選択の方法は任意である。例えば、選択手段124は、物理計算機の負荷率に基づいて選択して良い。物理計算機の負荷率は、当該物理計算機のCPUの負荷率、メモリの負荷率、入出力の負荷率の何れか1つ、または2つ、または全てを考慮して決定される値であって良い。例えば、選択手段124は、m台の物理計算機130の各々に対して、直近の負荷率(平均値あるいは最大値等)を問い合わせ、負荷率が最も低い物理計算機130を選択して良い。あるいは、負荷率が予め定められた閾値以下の物理計算機130を選択して良い。m台の物理計算機130の直近の負荷率が、図示しない他の計算機で測定されている場合、当該計算機から物理計算機130の負荷率を取得するようにしても良い。

0064

ここで、初期状態においては、各々の物理計算機110の仮想計算機112は現用系として動作し、物理計算機120の仮想計算機122は待機系として動作する。また物理計算機130には、物理計算機110、120と同じフォールトトレラントグループを構成する現用系および待機系の仮想計算機は存在しない。但し、物理計算機130には、他のフォールトトレラントグループに属する待機系の仮想計算機や、仮想計算機以外のアプリケーションプログラムが存在していても構わない。そして、何れかの現用系の仮想計算機112−iが動作する物理計算機110−iにハードウェア障害等の障害が発生すると、物理計算機120上の対応する仮想計算機122−iが待機系から現用系に切り換わり、障害に遭遇した仮想計算機112−iが行っている処理を現用系となった仮想計算機122−iで継続して実行する。さらに、現用系となった仮想計算機122−iに対して待機系となる新規な仮想計算機を何れかの物理計算機130に生成し、そして、物理計算機120の負荷を軽減するために、物理計算機120の現用系の仮想計算機122−iを待機系に、物理計算機130上に生成した待機系の仮想計算機を現用系に切り換えるようにしている。

0065

図9は物理計算機120のスナップショット管理部123の処理の一例を示すフローチャートである。なお、物理計算機110、130のスナップショット管理部113、133の処理の流れは、図2図4と同じである。以下、本実施形態にかかるフォールトトレラントシステム200の動作を、第1の実施形態との相違点を中心に説明する。

0066

初期の状態において、各々の物理計算機110のハイパーバイザ111が有するスナップショット管理部113は、第1の実施形態と同様の動作を行う。具体的には、チェックポイントが到来したか否かを検出し(図2のS102)、或るチェックポイントCTitを検出すると、自物理計算機110−iの仮想計算機(現用系)112のスナップショットを取得し、ネットワーク140経由で物理計算機120へ送信する(S103)。そして、スナップショット管理部113は、ステップS102に戻り、次のチェックポイントの到来を検出する。

0067

物理計算機120のハイパーバイザ121が有するスナップショット管理部123は、物理計算機110−iからスナップショットを受信すると(図9のS211)、この受信したスナップショットを用いて、仮想計算機(待機系)122−iの状態を仮想計算機(現用系)112−iの状態に一致させる(S212)。具体的には、スナップショット管理部123は、仮想計算機122−iに割り当てられている物理計算機120のメインメモリのメモリ領域を、受信したスナップショットに含まれるページで上書きする。またスナップショット管理部123は、複数の現用系の物理計算機110における障害の有無を検出する(S213)。そして、何れかの物理計算機110−iの障害を検出すると、自物理計算機120の対応する仮想計算機122−iを待機系から現用系へ切り換える(S214)。これにより、新たに現用系となった仮想計算機122−iが、仮想計算機112−iに代わって、サービスを提供する。すなわち、フェイルオーバが行われる。

0068

ここまでの動作は、第1の実施形態と同じである。

0069

次にスナップショット管理部123は、新たに待機系として使用する1台の物理計算機をm台の物理計算機130の中から選択する(S215)。選択の方法は任意であるが、ここでは、物理計算機の負荷率に基づいて選択するものとする。この場合、スナップショット管理部123の選択手段124は、例えば、m台の物理計算機130の各々に対して、ネットワーク140経由で直近の負荷率(平均値あるいは最大値等)を問い合わせ、負荷率が最も低い物理計算機130、あるいは、負荷率が予め定められた閾値以下の物理計算機130を選択する。ここで、選択した物理計算機を物理計算機130−j(jは1〜mの何れか)と記す。

0070

次に、スナップショット管理部123は、選択した物理計算機130−jに対して、上記現用系となった仮想計算機122−iの待機系となる仮想計算機の生成を要求する(S216)。具体的には、スナップショット管理部123は、現用系の仮想計算機122−iを一時的に停止してその初回スナップショットを取得し、この取得した初回スナップショットを添えて仮想計算機の新規生成を物理計算機130−jに対して要求する。

0071

以降のスナップショット管理部123のステップS217〜S222の動作は、第1の実施形態における図3のステップS116〜S121の動作と同じである。

0072

他方、選択された物理計算機130−j側のスナップショット管理部133−jは、物理計算機120から初回のスナップショットを含む仮想計算機の生成要求を受信すると(図4のS131)、自物理計算機130−jに待機系の仮想計算機を新たに生成する(S132)。仮想計算機の生成は、具体的には、自物理計算機130−iのメインメモリに新たな仮想計算機のメモリ領域を確保し、この確保したメモリ領域に受信したスナップショットを書き込むことで行われる。以降のスナップショット管理部133−jの動作は、第1の実施形態における動作と同じである。

0073

図10乃至図12は、現用系の物理計算機110−1に障害が発生した際、その物理計算機110−1上の現用系の仮想計算機112−1が実行していた業務処理を、物理計算機130−1の仮想計算機132−1が実行するように至るまでの推移を模式的に示している。

0074

まず図10に示すように、物理計算機110−1に障害が発生すると、物理計算機120の仮想計算機122−1が待機系から現用系へ切り換えられ、仮想計算機122−1が、仮想計算機112−1で実行されていた業務処理を実行する。続いて、図11に示すように、例えば負荷率の最も小さな物理計算機130−1が新たな待機系に選択され、現用系の仮想計算機122−1の待機系となる仮想計算機132−1が物理計算機130−1に新たに生成される。この仮想計算機132−1の新規生成時には、仮想計算機122−1の全メインメモリの記憶データを含む初回スナップショットが物理計算機120から物理計算機130−1へネットワーク140経由で送信される。そして、物理計算機130−1に待機系の仮想計算機132−1が生成され、物理計算機120から物理計算機130へ現用系の切り換え指示があると、図12に示すように、仮想計算機132−1が待機系から現用系に切り換えられると同時に、物理計算機120の稼働計算機122−1が現用系から待機系に切り換えられる。

0075

以上は、物理計算機110−1に障害が発生した場合の動作であるが、他の物理計算機110−2〜110−nや新たに待機系となった物理計算機130−1に障害が発生した場合にも同様の動作が行われる。

0076

また、以上は、物理計算機110に障害が発生した場合の動作であるが、物理計算機110の交換等を行うために物理計算機110をシステムから切り離す際にも、同様の手順で、物理計算機110が実行している業務処理を他の物理計算機130で実行させるようにすることが可能である。

0077

以上説明したように本実施形態によれば、第1の実施形態と同様の効果が得られると共に、以下のような効果が得られる。

0078

新たな仮想計算機を生成する他の物理計算機を複数台の物理計算機130の中から負荷率を基準に選択する構成によれば、負荷率が閾値以上の物理計算機を選択してしまったり、或いは閾値以下であっても他の物理計算機130に比べて負荷率の相対的に大きな物理計算機を選択してしまうことがなくなる。このため、選択した物理計算機上に仮想計算機を生成して現用系として稼働させた場合に、負荷が閾値より遥かに高まって動作が不安定になったり、負荷分散が図れないといった問題を解消することができる。

0079

[第3の実施形態]
図13を参照すると、本発明の第3の実施形態にかかるフォールトトレラントシステム300は、第1の計算機310と、第2の計算機320とを有する。第1の計算機310は、現用系の仮想計算機311を有する。

0080

初期の状態において、第1の計算機310では現用系の仮想計算機311が稼働している。冗長性を維持する際、以下のような動作が行われる。

0081

第1の計算機321は、現用系の仮想計算機311の全メモリを含む初回スナップショットを第2の計算機320に送信して新たな待機系の仮想計算機321を生成する。次に、第1の計算機310は、自計算機上の仮想計算機311を待機系に切り換えて、第2の計算機320に対して上記待機系の仮想計算機を現用系の仮想計算機へ切り換える指示を送信し、自計算機上の上記待機系の仮想計算機の状態を第2の計算機320上の現用系の仮想計算機322の初回のスナップショットとして認識する。そして、第1の計算機310は、以後、第2の計算機320から受信するスナップショットに基づいて自計算機の待機系の仮想計算機312の状態を更新する。

0082

このように本実施形態によれば、第2の計算機320上の現用系の仮想計算機322に対して新たに同期先となる待機系の仮想計算機312を設定して現用系の仮想計算機322と待機系の仮想計算機312との同期を開始する際、現用系の仮想計算機322の初回スナップショットのコピーを省くことができ、少ない負荷で可用性を維持することができる。その理由は、第1の計算機310は、待機系に切り換えた仮想計算機312の状態を、仮想計算機322の初回スナップショットとして認識するためである。

0083

100…フォールトトレラントシステム
110…物理計算機(第3の物理計算機)
111…ハイパーバイザ
112…仮想計算機
113…スナップショット管理部
120…物理計算機(第1の物理計算機)
121…ハイパーバイザ
122…仮想計算機
123…スナップショット管理部
124…選択手段
130…物理計算機(第2の物理計算機)
131…ハイパーバイザ
133…スナップショット管理部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ