JP5742410B2 - フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム - Google Patents

フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム Download PDF

Info

Publication number
JP5742410B2
JP5742410B2 JP2011087745A JP2011087745A JP5742410B2 JP 5742410 B2 JP5742410 B2 JP 5742410B2 JP 2011087745 A JP2011087745 A JP 2011087745A JP 2011087745 A JP2011087745 A JP 2011087745A JP 5742410 B2 JP5742410 B2 JP 5742410B2
Authority
JP
Japan
Prior art keywords
computer
snapshot
memory
transfer unit
guest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011087745A
Other languages
English (en)
Other versions
JP2012221321A (ja
Inventor
幸宏 田中
幸宏 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011087745A priority Critical patent/JP5742410B2/ja
Priority to US13/443,813 priority patent/US8990617B2/en
Publication of JP2012221321A publication Critical patent/JP2012221321A/ja
Application granted granted Critical
Publication of JP5742410B2 publication Critical patent/JP5742410B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラムに関する。
近年は、物理計算機上で複数のOS(Operating System)を動作させることを可能とした仮想化技術が広く使われている。計算機の仮想化によって利用率の低い複数の仮想計算機を1つのサーバ(物理計算機)上にまとめることで、サーバ1台あたりの利用効率を高めるとともに、物理サーバの台数を減らして消費電力を抑えることが可能となる。仮想計算機には、例えば一般の物理計算機上で稼動するOS(ホストOS)上に仮想計算機を動作させる層をつくり、その上で別のOS(ゲストOS)を動作させる方式や、ホストOSを介さず、ハードウェア上に仮想計算機を動作させる層(ハイパーバイザー)を作り、その上でゲストOSを動作させる方式などがある。どちらの方式も一長一短があるが、ゲストOSを用いた計算機の有効利用という点では目的は同じで、現在は両者のどちらも広く用いられている。
フォールトトレラント計算機システムは、専用のハードウェアを介してロックステップ動作している多重化(多くは二重化)された主要なハードウェアを障害発生時に瞬時に切り換えて動作し続ける従来からのハードウェア方式のフォールトトレラント計算機システムのほかに、近年は、前記のような仮想計算機において、その稼働している仮想計算機が属する物理計算機でハードウェア上の故障等による障害が発生した場合に、その仮想計算機が行っている処理を他の物理計算機上の待機している仮想計算機で継続して実行するフォールトトレラント計算機システムが知られている。
ハードウェア方式のフォールトトレラント計算機システムでは、主要なハードウェアを1システム毎に多重化し、高価な専用のハードウェアを使用する必要があるために、システムコストがかさむ。これに対して、ソフトウェアによるフォールトトレラント計算機の切り換えでは専用ハードウェアが不要となり、システム毎のハードウェアを二重化する必要はないためシステムコストが小さくなる。
ソフトウェアによる切り換えの例としては、専用のハードウェアを用いたフォールトトレラント計算機システムで行われているロックステップ動作をソフトウェアにより行い、障害発生時には瞬時に処理を切り換えるという方法がある。
特許文献1は、収集部により、第1の仮想計算機について発生した、第1の仮想計算機に対する入力を伴うイベントに関する同期情報を収集し、この同期情報に従って第2の仮想計算機の入力に係る実行状態を、前記第1の仮想計算機の入力に係る実行状態と同一になるように制御している。
特許文献2では、仮想マシンが動作しているサーバ計算機に障害が発生した場合、障害発生時刻に最も近い時点でディスク装置に採取されたスナップショットに基づき仮想マシンを他のサーバ計算機に再生成する。スナップショットとは、稼働中の計算機のCPUのコンテキストとCPUの動作中に使用する処理用メモリ内のデータ、及びディスク装置内のデータを、所定のタイミング(チェックポイント)で、抜き出したものである。これにより複雑な制御が必要となる同期制御が不要となり、稼働中の仮想マシンが1つであるので消費電力も低減する。
特許文献3は、障害発生時には、第1の計算機のディスク上のコピーイメージに含まれるファイルのリストと計算機の実行コンテキストとを第2の計算機にコピーし、ファイルのリストを参照して、コピーイメージを第1の計算機のディスクから第2の計算機のディスクにコピーする。これにより計算機の切り換え時間の短縮化を図っている。
特許第4468426号公報 特開2009−080692号公報 特開2008−033483号公報
特許文献1の方式では、二重化されたハードウェアを常に同期させて動作しているため障害発生時の計算機切り換えによる動作復帰は高速であるが、動作中の2台の仮想計算機を同期情報に従って同期させるために複雑な制御が必要である。さらに、常に2つの仮想計算機を動作させるため、仮想計算機2台分の電力を消費する。また、1システムあたりの物理計算機が2台必要となるためシステムコストがかさむ。
特許文献2の方式では、動作中の仮想マシンのスナップショットを共有ディスク装置にコピーし、計算機の切り換え処理のためにこの共有ディスク装置上からスナップショットを読み出すため、系の切り換え時間が長くなってしまう。
仮想計算機が稼働するフォールトトレラント計算機システムにおいて、システムコストを抑えるために特別なハードウェアを使用せずに、ソフトウェアによる系の切り換えを行う場合、切り換え時間の短縮と消費電力の低減を両立させることがポイントとなる。
特許文献3に記載の例は、そのための一つの方法を提示しているが、切り換え直後の計算機にはファイルのリストしかないため、すぐに処理を開始しようとしても参照するデータを含むファイルが使用できる状態になっていない。そのため、処理に必要なファイルをオンデマンドでコピー要求するという手間と時間がかかってしまう。そのためシステムユーザにとっては実質的な系の切り換え時間が十分に短縮されたとは言い難い。
本発明は、上記の事情に鑑みてなされたものであり、特別なハードウェアを使用せずに、簡便且つ高速に系の切り換えが可能な低消費電力のフォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラムを提供することを目的とする。
上記の目的を達成するために、本願発明の第1の観点に係るフォールトトレラント計算機システムは、
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムであって、
前記第1の計算機は、
前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存し、保存された前記スナップショットを、前記第2のメモリに転送する指示を前記第1の転送部に出すと共に、前記第1のメモリに、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存し、その都度、前記第1の転送部に、前記第1の転送部及び前記第2の転送部を介して前記第1のメモリに保存された前記差分情報を前記第2のメモリに転送する指示を出す第1のスナップショットマネージャと、
前記第1の計算機のエラー情報を取得し、前記第1の転送部に対して、前記エラー情報を前記第2の計算機に転送する指示を出す第1のエラーハンドラと、を備え、
前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングであり、
前記第2の計算機は、
前記第1の転送部及び前記第2の転送部を介して転送された前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する第2のエラーハンドラと、
前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送され保存されている前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存されている前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するとともに、前記第2のエラーハンドラが出力した前記計算機切り換え通知を受信したとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動する第2のスナップショットマネージャと、
を備える、
ことを特徴とする。
本願発明の第2の観点に係るフォールトトレラント計算機システムの制御方法は、
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムの制御方法であって、
前記第1の計算機が実行する、
前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存する第1のスナップショット保存ステップと、
前記スナップショットを、前記第1の転送部を介して、前記第2の計算機に転送するスナップショット転送ステップと、
前記第1のメモリに、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存する第1の差分情報保存ステップと、
前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、
前記第1の計算機のエラー情報を取得し、前記第1の転送部を介して、前記エラー情報を前記第2の計算機に転送する指示を出すエラー情報取得ステップと、
前記エラー情報取得ステップでの前記転送する指示により、前記エラー情報を前記第1の転送部を介して前記第2の計算機に転送するエラー情報転送ステップと、
を備え、
前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングであり、
前記第2の計算機が実行する、
前記第1の計算機から転送された前記スナップショットを、前記第2の転送部を介して受信し、受信した前記スナップショットを前記第2のメモリに保存する第2のスナップショット保存ステップと、
前記第2の計算機に転送された前記差分情報を、前記第2の転送部を介して受信し、受信した前記差分情報を前記第2のメモリに保存する第2の差分情報保存ステップと、
前記第1の計算機から転送され、前記第2のメモリに保存された前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存された前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
前記第2の計算機に転送された前記エラー情報を前記第2の転送部を介して受信し、受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する計算機切り換え通知ステップと、
前記計算機切り換え通知がなされたとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、
を備えることを特徴とする。
本願発明の第3の観点に係るフォールトトレラント計算機システムの制御プログラムは、
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって
前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存するスナップショット保存ステップと、
前記スナップショットを、前記第1の転送部を介して、前記第2の計算機に転送するスナップショット転送ステップと、
前記第1のメモリに、前記予め設定された時点を起点として設定される複数前記第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存する差分情報保存ステップと、
前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、
前記第1の計算機のエラー情報を取得し、前記第1の転送部を介して、前記エラー情報を前記第2の計算機に転送する指示を出すエラー情報取得ステップと、
前記エラー情報取得ステップでの前記転送する指示により、前記エラー情報を前記第1の転送部を介して前記第2の計算機に転送するエラー情報転送ステップと、
を前記第1の計算機に実行させ、
前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングである、
ことを特徴とする。
本願発明の第4の観点に係るフォールトトレラント計算機システムの制御プログラムは、
ゲストOSを備える仮想計算機が稼働する第1の計算機と、該第1の計算機から転送されるデータを受信する第2の転送部及び第2のメモリを備える第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって、
前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に予め設定された時点における前記ゲストOSの処理内容全体のスナップショットであり、前記第1の計算機から転送された前記スナップショットを、前記第2の転送部を介して受信し、受信した前記スナップショットを前記第2のメモリに保存するスナップショット保存ステップと、
前記第1の計算機から転送される差分情報であり、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの前記差分情報を、前記第2の転送部を介して受信し、受信した前記差分情報を前記第2のメモリに保存する差分情報受信・保存ステップと、
前記第1の計算機から転送され、前記第2のメモリに保存された前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存された前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
前記第1の計算機から転送される、前記第1の計算機のエラー情報を、前記第2の転送部を介して受信するエラー情報受信ステップと、
受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する計算機切り換え通知ステップと、
前記計算機切り換え通知がなされたとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、
を前記第2の計算機に実行させ、
前記第1のタイミングは、前記第1の計算機で設定されたタイミングであり、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングである、
ことを特徴とする。
本発明によれば、特別なハードウェアを使用せずに、簡便且つ高速に系の切り換えを行うことが可能な低消費電力のフォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラムを提供することができる。
本発明の実施形態に係るフォールトトレラント計算機システムの最小構成例を示すブロック図である。 実施形態に係るフォールトトレラント計算機システムの構成例を示すブロック図である。 (a)実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理のうちアクティブ系の処理Aを示すフローチャート、(b)実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理のうちアクティブ系の処理Bを示すフローチャートである。 (a)実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理のうちスタンバイ系の処理Cを示すフローチャート、(b)実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理のうちスタンバイ系の処理Dを示すフローチャートである。 実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理チェックポイントの設定例を示す図である。 実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理チェックポイントの他の設定例を示す図である。 実施形態に係るフォールトトレラント計算機システムの計算機切り換え処理チェックポイントの更に他の設定例を示す図である。 実施形態に係るフォールトトレラント計算機システムの変形構成例を示すブロック図である。
(実施形態)
本発明の実施形態に係るフォールトトレラント計算機システムは、少なくとも2台の物理的計算機を有し、各物理的計算機上で仮想計算機が稼働するように構成されている。以下では2台の物理的計算機を有する場合を例に説明する。ここで物理的計算機とは、仮想計算機と区別するために用いるもので、実際の計算機という意味である。図1及び図2は、フォールトトレラント計算機システムの構成例を示す。図1及び図2に示すように、フォールトトレラント計算機システムを構成する2台の物理的計算機の一方をアクティブ系1a、他方をスタンバイ系1bと呼ぶ。アクティブ系1aはユーザにサービスを提供している稼働中の仮想計算機を有する計算機、スタンバイ系1bは、障害発生時に切り替わって稼動を開始するために待機中の仮想計算機を有する計算機である。それぞれの系の仮想計算機に関する構成要素は基本的には同じである。
まず図1について説明する。図1は本発明の実施形態に係るフォールトトレラント計算機システムの最小の構成例を示す。構成要素の番号は図2と対応して付されているため図1では連続番号となっていない。
アクティブ系1aは、ホストOS(図示省略)と、ゲストOS3aと、メモリ4aと、スナップショットマネージャ8aと、転送部11aとを備え、ゲストOS3aの動作により仮想計算機として動作する。
スタンバイ系1bはホストOS(図示省略)と、メモリ4bと、スナップショットマネージャ8bと、転送部11bとを備え、実際の計算機として動作する。ゲストOS3bは、最初は動作していないので破線で示されている。
メモリ4aは、ホストOS及びゲストOS3aの双方からアクセス可能で、メモリ4bはスタンバイ系1bのホストOSからアクセス可能である。なお、メモリ4bは、スタンバイ系1bでゲストOS3bが起動した後は、ゲストOS3bからもアクセス可能である。
スナップショットマネージャ8aは、ホストOS及びゲストOS3a上で動作し、後述するゲストOS3aのスナップショットの差分情報を所定のタイミングでゲストOSスナップショット10aとしてメモリ4aに保存する。
転送部11aは、メモリ4aに保存されたゲストOSスナップショット10aをスタンバイ系1bに転送する。
転送部11bは、転送部11aから転送されてきたゲストOSスナップショット10aを受信し、ゲストOSスナップショット10bとしてメモリ4bに保存する。
スナップショットマネージャ8bは、ホストOS上で動作し、メモリ4bに保存されたゲストOSスナップショット10bに基づき、差分情報と一体化して完全なゲストOSスナップショット10bを生成し、メモリ4bに保存するとともに、後述する所定のタイミングで、例えばアクティブ系1aが停止したと判定された場合に、所定のプログラムを起動し、この完全なゲストOSスナップショット10bに基づきゲストOS3bを起動する。ゲストOS3bの起動によりスタンバイ系1bは仮想計算機が機能するアクティブ系1aとして動作するようになる。
図2は、図1をより詳細に示したものである。図2ではホストOS2a、2bを明示している。本実施形態を図2に従ってより詳細に説明する。
アクティブ系1aは、アクティブ系1aの動作を管理するホストOS2aと、仮想計算機のOSであるゲストOS3aと、ホストOS2a及びゲストOS3aの両方からアクセス可能なメモリ4aと、FT(Fault Tolerant)モジュール5aと、RDMA(Remote Direct Memory Access)ドライバ6aと、データ転送部7aと、を備える。ゲストOS3aと、ホストOS2aとはアクティブ系1aのハードウェアを構成するCPU(Central Processing Unit;図示を省略)が、RAM(Random Access Memory)、ROM(Read Only Memory)等(いずれも図示を省略)を利用してそれぞれ所定のプログラムを動作させることにより機能する。FTモジュール5a及びRDMA(Remote Direct Memory Access)ドライバ6aについても同様である。RDMAドライバ6a及びデータ転送部7aは転送部11aを構成する。なお、ホストOS2aとゲストOS3aとは、例えばハイパーバイザを通して接続される。仮想計算機の方式によるが、ハイパーバイザで接続する代わりにゲストOS3aがホストOS2a上で動作してもよい。
スタンバイ系1bは、スタンバイ系1bの動作を管理するホストOS2bと、ホストOS2b及び起動後のゲストOS3bの両方からアクセス可能なメモリ4bと、FTモジュール5bと、RDMAドライバ6bと、データ転送部7bと、を備える。ゲストOS3b及びホストOS2bはスタンバイ系1bのハードウェアを構成するCPUが、RAM、ROM等(いずれも図示を省略)を利用してそれぞれ所定のプログラムを動作させることにより機能する。FTモジュール5b及びRDMAドライバ6bについても同様である。ゲストOS3bは未だ起動していない。そのため図1ではゲストOS3bを破線で示した。RDMAドライバ6b及びデータ転送部7bは転送部11bを構成する。
アクティブ系1aとスタンバイ系1bとは、転送部11aと転送部11bとで構成される通信手段を介して互いに接続されている。具体的にはデータ転送部7aと7bとが通信回線で接続されており、この回線を通してデータや各種情報の授受が可能である。
メモリ4a、4bは、物理計算機の記憶装置で、現在よく使用されているディスク装置等の外部記憶装置に比べて高速に情報の記録・保存、読み出しができる、例えば主記憶装置である。実行中のプログラム、データ、及び後述するゲストスナップショットなどを記憶・保存する。
FTモジュール5aは、フォールトトレラント計算機システムを実現するための機能を有するモジュールであり、スナップショットマネージャ8aとエラーハンドラ9aとを備え、ホストOS2a上で動作する。すなわち、FTモジュール5a、従ってスナップショットマネージャ8aとエラーハンドラ9aとは、アクティブ系1aの備えるCPUがそれぞれに関連するプログラムを実行することによりホストOS2a上で機能する。
スナップショットマネージャ8aは、チェックポイントの管理、ゲストOS3aが利用・管理するメモリの保存内容の変更(書き換え)情報の取得、管理、ゲストOSスナップショット10a(後述)を転送する間隔の決定、決定された転送間隔に対応して、メモリ4aに保存するゲストOSスナップショット10aの内容の決定と、メモリ4aへの保存、及びRDMAドライバ6aに対してのメモリ4aに保存されているゲストOSスナップショット10aの転送指示を行う。ゲストOS3aが利用・管理するメモリの保存内容の変更情報をCPUが管理するメモリ4aのダーティページフラグから取得する方法は一般的に知られており具体的な取得方法の詳細な説明は省略する。ゲストOSスナップショット10aとは、ゲストOS上で稼働している計算機のスナップショットを意味する。また、ダーティページフラグとはデータが変更されたが保存されていないことを意味するフラグである。
エラーハンドラ9aは、アクティブ系1aの障害をできるだけ早くスタンバイ系1bに伝えて系を切り換えるためのエラー情報を、RDMAドライバ6a、データ転送部7aを介してスタンバイ系1bに送信する。スタンバイ系1bがアクティブ系1aの障害を検出するために、例えばハートビート信号を用いることがある。この場合は、エラーハンドラ9aは一定周期のハートビート信号をデータ転送部7aを介してスタンバイ系1bに送る。スタンバイ系1bのデータ転送部7bは、ハートビート信号が一定時間こなかった場合に、障害が発生した、すなわちアクティブ系1aが動作を停止したと判断する。
RDMAドライバ6aは、ホストOS2a上で動作し、FTモジュール5aからの指示を受け、データ転送部7aがエラー情報又はメモリ4aに保存されているゲストOSスナップショット10aをスタンバイ系1bに転送するように、データ転送部7aを制御する。FTモジュール5aからの指示とは、スナップショットマネージャ8aからのゲストOSスナップショット10aの転送指示や、エラーハンドラ9aからのエラー情報転送の指示である。
データ転送部7aは、ハードウェアで構成されており、RDMAドライバ6aの制御によりゲストOSスナップショット10a又はエラー情報をスタンバイ系1bに転送する。具体的にはデータ転送部7aは、RDAMドライバ6aからメモリ保存内容のコピーに必要な情報であるアドレスやレングス、及びエラー情報を受け取り、その情報に応じてデータ転送を行う。ゲストOSスナップショット10aの転送はゲストOS3aのバックグラウンド処理により実行される。
データ転送部7bは、データ転送部7aから転送されてきたゲストOSスナップショット10aをメモリ4b内にゲストOSスナップショット10bとして保存し、転送終了をRDMAドライバ6bに通知する。また、同様に転送されてきたエラー情報や自ら検出したエラー情報をRDMAドライバ6bに送る。
データ転送部7a、7bとその間の接続は、そのデータ転送速度により、設定可能なチェックポイント間隔に影響する。チェックポイントとは、ゲストOSスナップショット10aをメモリ4aに保存するタイミングのことであり、ここではゲストOSスナップショット10aをスタンバイ系1bに転送するタイミングをも意味する。一方、計算機の切り換えの際に計算機で稼働中の処理を過去のどの時点まで戻すかを表す時間であるロールバック時間はチェックポイント間隔に影響される。そのため、ロールバック時間を可能な限り短縮するためにはチェックポイント間隔を小さくする必要がある。従って、この接続には、データ転送速度の速い高速のハードウェアを採用することが望ましい。この接続は一般のネットワーク(現在の技術ではギガビットや10ギガビットのネットワーク)を介しても可能であるが、PCI ExpressなどのIOスロットでDMA(Direct Memory Access)転送を高速に処理する専用のハードウェアを設けてもよい。あるいは、I/O(Input/Output)スロットを通さず、最近のCPUで実現されているようなCPU間を直接接続する方法であってもよい。
RDMAドライバ6bは、データ転送部7bからの通知をFTモジュール5bに送る。
FTモジュール5bは、アクティブ系1a同様、フォールトトレラント計算機システムを実現するための機能を有するモジュールであり、スナップショットマネージャ8bとエラーハンドラ9bとを備え、ホストOS2b上で動作する。
FTモジュール5bに含まれるスナップショットマネージャ8b及びエラーハンドラ9bは、ゲストOSスナップショット10aをゲストOSスナップショット10bとしてメモリ4bに保存したという転送終了通知又はエラー情報を受け取り、以下の処理を行う。
エラーハンドラ9bは、エラー情報を受け、障害発生、すなわちアクティブ系1aの動作停止の有無を判定し、判定結果が「停止」の場合、スナップショットマネージャ8bに対して系の切り換え信号を出してゲストOS3bの起動をトリガする。例えば、ハートビート信号を利用する場合は、エラーハンドラ9bは、アクティブ系1aから一定時間以上ハートビート信号がこなかった場合にはRDMAドライバ6bを通してアクティブ系1aに障害が発生したことを知りエラー処理を実行する。
スナップショットマネージャ8bは、ゲストOSスナップショット10aをゲストOSスナップショット10bとしてメモリ4bに保存したという通知を受けて、メモリ4bにこれまで保存してあったゲストOSスナップショット10bと合わせて一つの最新で完全なゲストOSスナップショット10bにしてメモリ4bに保存するという処理を行う。また、スナップショットマネージャ8bは、エラーハンドラ9bからのゲストOS3bの起動トリガを受け、ゲストOS3b起動用のプログラムを起動することにより、メモリ4bに保存されているゲストOSスナップショット10bに基づき、ゲストOS3bを起動する。ゲストOS3bの起動後はスタンバイ系はアクティブ系に変わるため、アクティブ系1aでスナップショットマネージャ8aが実行している内容を実行する。なお、ホストOS2bとゲストOS3bとは、アクティブ系1aと同様に、例えばハイパーバイザを通して接続されるか、又は、ハイパーバイザで接続する代わりにゲストOS3bがホストOS2b上で動作してもよい。
次に、図3及び図4に示すフローチャートに従って本システムの計算機切り換え動作について説明する。図3(a)はアクティブ系1aの処理A内容を、図3(b)はアクテイブ系1aの処理Bの内容を示す。図4(a)はスタンバイ系1bの処理Cの内容を、図4(b)はスタンバイ系1bの処理Dの内容を示す。処理A、処理CはゲストOSスナップショット10aをアクティブ系1aからスタンバイ系1bにコピーする際のそれぞれの計算機における処理を、処理B、処理Dはアクティブ系1aでのエラー情報の取得、転送と、スタンバイ系1bでのエラー情報の処理を示す。
前提条件として、フォールトトレラント計算機システム、すなわち、アクティブ系1a、スタンバイ系1bは起動しているとする。アクティブ系1aの起動とは、ホストOS2aとゲストOS3aの双方が動作状態になることを含む。具体的には、アクティブ系1aでは、電源投入により、まず、ホストOS2aが動作状態となる。ゲストOS3aは、ホストOS2aが動作状態となった後、動作状態となる。なお、ユーザーからの指示により、ゲストOS3aを動作状態にしてもよい。一方、スタンバイ系1bでは、電源投入により、ホストOS2bが動作状態となるが、ゲストOS3bは起動していない。両系は通信回線で接続されている。
始めに、アクティブ系1aでの処理Aについて図3(a)に基づき説明する。データ転送部7aにより、両系のハードウェアが通信回線で接続されていることが確認されると、アクティブ系1aのスナップショットマネージャ8aは、ゲストOS3aの処理内容全体のスナップショットを作成し、メモリ4aにゲストOSスナップショット10aとして保存し、転送部11a、すなわちRDMAドライバ6aとデータ転送部7aとを介してこれをスタンバイ系1bに転送する(ステップS10)。ゲストOS3aの処理内容全体のスナップショットとは、ゲストOS3aで使用する全てのファイルと所定の時点での処理用メモリの内容及びCPUのコンテキストを言う。ゲストOS3aの処理内容全体を他系にコピーする方法は仮想化環境のマイグレーションの処理などで利用され、特開2010-039685号公報などに掲載されておりよく知られているので説明を省略する。
次に、アクティブ系1aのスナップショットマネージャ8aは、所定時間、ゲストOSスナップショット10aの内容に関する変更情報を取得し蓄積する(ステップS11)。この所定時間が経過した時点をチェックポイントと呼ぶ(詳細は後述)。最初のチェックポイントの始点は、ゲストOS3aの処理内容全体のスナップショットを作成した時点である。すなわち、スナップショットマネージャ8aは、チェックポイント毎に、始点又は前回のチェックポイントから、そのチェックポイントまでの間のゲストOSスナップショット10a の変更分を取得し蓄積する。
次に、アクティブ系1aでは、例えばスナップショットマネージャ8aが、チェックポイントの判定(ステップS12)を行う。チェックポイントの判定とは、チェックポイントの始点又は前回のチェックポイントからの経過時間が、所定時間に達したかどうか、すなわち次のチェックポイントに達したかどうかを判定することを言う。チェックポイント設定の詳細は後述する。
チェックポイントに達していなければ(ステップS12;NO)、ステップS11の処理に戻り、チェックポイントに達していれば(ステップS12;YES)、スナップショットマネージャ8aは、蓄積した変更情報に、そのチェックポイントでの処理用メモリ内容とCPUのコンテキスト情報を加えたものを差分情報としてメモリ4aに保存し、RDMAドライバ6aに対して、この差分情報をスタンバイ系1bに転送する指示を出す。この指示を受けて、RDMAドライバ6aはデータ転送部7aを介してメモリ4aに保存されている差分情報をスタンバイ系1bに転送する制御を行う(ステップS13)。
アクティブ系1aでは、その後、運転を停止する旨の操作がなされていないかどうかを判定し(ステップS14)、運転停止の操作がなされていれば(ステップS14;YES)、処理を終了する。運転停止の操作がなされていなければ(ステップS14;NO)、ステップS11に戻り処理を続行する。なお、ここで言う運転停止は通常の操作による運転停止であり、異常発生による運転停止ではない。
次に、アクティブ系1aでの処理Bについて図3(b)に基づき説明する。アクティブ系1aでは、エラーハンドラ9aがエラー情報を取得し、これをデータ転送部7aを介してスタンバイ系1bに転送する(ステップS20)。この処理Bは上述の処理Aと並行して行われる。
次に、スタンバイ系1bでの処理Cの内容について図4(a)に基づき説明する。スタンバイ系1bでは、図3(a)のステップS11でアクティブ系1a から転送されたゲストOSスナップショット10aの全体情報を、転送部11b、すなわちデータ転送部7bが受信し(ステップS30)、RDMA6bの制御により、メモリ4bにゲストOSスナップショット10bとして保存する(ステップS31)。これでゲストOSスナップショット10aの全体情報について、アクティブ系1aからスタンバイ系1bへのコピーが完了する。
その後、スタンバイ系1bでは、図3(a)のステップS13で、アクティブ系1aから転送された差分情報を、転送部11b、すなわちデータ転送部7bが受信し(ステップS32)、RDMA6bの制御により、メモリ4bに保存する。データ転送部7bは、メモリ4bへの差分情報の保存が完了すると保存完了の通知をRDMAドライバ6bを介してスナップショットマネージャ8bに送る。これを受けたスナップショットマネージャ8bは、これまでに保存されていたゲストOSスナップショット10bに、今回保存された差分情報を加えて、あるいは上書きして、一つの完全なゲストOSスナップショット10bにして、これをメモリ4bに保存する(ステップS33)。
その後、スタンバイ系1bでは、系の運転を停止する旨の操作がなされていないかどうかを判定する(ステップS34)。運転停止の操作がなされていれば(ステップS34;YES)、スタンバイ系1bは図4(a)に示す処理を終了し、運転停止の操作がなされていなければ(ステップS34;NO)、ステップS32に戻り処理を続行する。アクティブ系1aの説明と同様に、ここで言う運転停止は通常の操作による運転停止であり、異常発生による運転停止ではない。
次に、スタンバイ系1bでの処理Dについて図4(b)に基づき説明する。スタンバイ系1bでは、データ転送部7bが、図3(b)のステップS20でアクティブ系1aから転送されるエラー情報を受信し(ステップS40)、エラーハンドラ9bは、このエラー情報に基づき、アクティブ系1aでの障害発生を検知し、計算機切り換えの要否を判定する(ステップS41)。
エラー情報としてハートビート信号を利用する場合は、データ転送部7aがハートビート信号をスタンバイ系1bに送信する(図3(b)のステップS20)。この場合は、ステップS41は、エラーハンドラ9bが、一定時間以上ハートビート信号がこなかったかどうかを検出するという処理になる。エラーハンドラ9bは、この検出結果によりアクティブ系1aでの障害発生の有無を判定し、計算機切り換えの要否を判定する(ステップS41)。
計算機の切り換えは不要と判定されたときは(ステップS41;NO)、スタンバイ系1bでは、系の運転を停止する旨の操作がなされていないかどうかを判定する(ステップS42)。運転停止の操作がなされていれば(ステップS42;YES)、スタンバイ系1bは図4(b)に示す処理を終了し、運転停止の操作がなされていなければ(ステップS42;NO)、ステップS40に戻り処理を続行する。
スタンバイ系1bにおいて、エラーハンドラ9bは、計算機の切り換えが必要と判定した場合(ステップS41;YES)、スナップショットマネージャ8bに計算機切り換えを指示する。スナップショットマネージャ8bはこの指示により、メモリ4bに保存されているゲストOSスナップショット10bに基づき、ゲストOS3bを起動して(ステップS43)図4(b)に示す処理を終了する。このゲストOS3bはアクティブ系1aから前回コピーされた時点のゲストOS3aと同じものである。ゲストOSスナップショット10aのコピーが途中の場合や、ゲストOS3bの復元が不十分な場合も想定されるため、スナップショットマネージャ8aが管理するゲストOS3aのコピーを複数作成し、1つのゲストOSスナップショット10bは完全な状態を保持して、常に完全で新しいゲストOSスナップショット10bを用いてゲストOS3bを起動することが望ましい。ゲストOS3bの起動により、スタンバイ系1bは仮想計算機として動作を開始し、ゲストOS3bの起動に使用されるゲストOSスナップショット3bに対応するゲストOSスナップショット3aが、アクティブ系1aで作成された時点の処理内容を引き継いで実行する。この際、物理計算機の画面やキーボードの接続なども適宜行われる。図4(b)の処理Dは図4(a)の処理Cと並行して行われる。
アクティブ系1aが異常により運転を停止し、スタンバイ系1bがアクティブ系として機能するようになった後は、スタンバイ系1bは、図3(a)、(b)に示す処理内容を含め、アクティブ系1aと同様の処理を実行する。一方、アクティブ系1aは、異常により運転が停止した後、異常が修復され再起動されたときは、スタンバイ系となり、図4(a)、(b)に示す処理を実行する。
次に、チェックポイントについて説明する。チェックポイントの決定は、計算機の処理を引き継ぐときのロールバック時間に大きく関わってくる。ロールバック時間が長いと、スタンバイ系に処理を引き継いだときにロールバックに相当する時間、同じ処理が2回繰り返されることになる。例えば、ユーザが動画を観ているときに障害が発生すると、映像が過去に巻き戻って再生されて見える。したがって、ロールバック時間を極力短くすることが重要である。ロールバックはチェックポイントを対象に決定される。
本発明では、最初はゲストOS3aの処理内容全体のスナップショットをスタンバイ系1bに転送するのである程度の転送時間がかかる。しかし、その後はチェックポイント毎に差分情報をスタンバイ系1bに転送するので、転送時間は短くて済む。そのためチェックポイント間隔を狭めることができ、その分、ロールバック時間を短くすることができる。また、差分情報を障害発生時に一括して転送するのではなく所定のチェックポイント毎に転送するので、計算機の切り換え時間の短縮化が促進される。
3ケースのチェックポイントの設定について説明する。
ケース1では、例えば、初回のゲストOSの処理内容全体のスナップショットを作成した時点でチェックポイントを設定し、その後一定時間毎にチェックポイントを設定する。図5はケース1を説明するための図である。図の横軸は時間軸である。Ti-1、Ti 、Ti+1 等がチェックポイントに該当する。チェックポイント間の間隔は一定時間tである。チェックポイントTi-1からTiまでに内容変更のあった分としてメモリ4aに保存された差分量Qi(変更情報)、すなわちダーテイーページとなったメモリの差分に対応するゲストOSスナップショット10aを含む差分情報がスタンバイ系1bに転送され、メモリ4bにコピーされる。このコピー時間はほぼ転送時間で決まり、転送対象となる差分量に依存する。差分量はそれぞれの時間tc間で蓄積された量であるため、各チェックポイントによって変化する。従って、チェックポイント間の間隔tcは想定される最大の転送時間よりも長く設定される。
ケース1では差分情報のみを転送するため、ゲストOSの処理内容の全体をその都度転送する場合に比べて転送情報量が小さくなり転送時間も短くなる。そのため、チェックポイントの間隔を小さくすることができ、ロールバック時間を短縮することができる。しかし、次のような問題点がある。
例えば、図5で「障害発生」として矢印で示すところでアクティブ系1aに障害が発生したことが検知され、その時点で計算機の切り換え処理、すなわち系の復帰処理が開始されたとする。このとき、メモリ4bに保存されている最新のゲストOSスナップショット10bはチェックポイントTiで取得されたスナップショット、すなわち差分量Qiの分であるから、復帰処理に当たり必要なロールバックは図5の矢印で「ロールバック」として示すTi時点である。このとき差分量Qiが小さい場合は、そのコピーに要する時間tiはチェックポイント間の時間tCよりもずっと小さくなる場合がある。この場合、tC−tiは顕著な空き時間となり本来不要なロールバック時間となる。
このような問題を解決するためには差分量が所定量蓄積されたことを基準にしてチェックポイントを設定すればよい。これがケース2である。図6にその例を示す。ケース2では差分量は一定なのでコピー時間はチェックポイントによらず一定時間になるが、差分量を所定量蓄積するために要する時間が時期により異なるためにチェックポイント間隔に長短が発生する。
この場合は差分量に応じてチェックポイントが設定されるのでケース1で問題になったような空き時間は生じない。しかし、障害発生の前の差分量が少なく、所定量蓄積するのに長時間(tCi+2)かかったとすると、ロールバック時間は障害発生時の直近のチェクポイントTi+3より一つ前のチェックポイントTi+2に溯ることになり、一定時間毎にチェックポイントを設定した場合よりもロールバック時間が大きくなる場合もありうることになる。
図7はこれを解決するためのチェックポイントの設定方法ケース3を示す。基本的な考え方はケース2の場合と同じであるが、チェックポイント間の時間の最大値をtmに設定し、これを超える場合は、前回のチェックポイントからtm経過した時点でチェクポイントを設定する。図7の最上段が図6のケース2に対応する場合で、その下の段に示すのがチェックポイント間の時間を最大tmに設定したケース3の場合である。このときのロールバック時間は障害発生時の直近のチェックポイントTi+3’からtmだけ溯ることになり、ケース2と比較するとTci+2−tmがロールバック短縮時間となる。
なお、エラーハンドラ7a、7bによる障害発生検知としてハートビート信号を利用する例を示したが、この方法だけでは、サービスの停止時間は最悪の場合、チェックポイントのロールバック時間にハートビート信号間隔の時間が足されたものになってしまう。本願発明のように障害発生時にスタンバイ系1bでアクティブ系1aの処理を短時間で引き継ぐ必要がある場合には、将来計算機の停止につながるような異常を検知し、この情報を含めてエラー情報としてスタンバイ系1bに通知してもよい。これによりスタンバイ系1bのエラーハンドラ9bはアクティブ系1aで近い将来システムダウンが発生することを認識し、ゲストOS3bを立ち上げることができる。これにより、フォールトトレラント計算機システムはシステムが停止する前に系の切り換えを行うことができる。
このような障害発生検知のために、メモリ4aのコレクタブルエラーの傾向を収集するという例が考えられる。このコレクタブルエラーの傾向に合致するエラー情報が検知された場合には、あるメモリ故障が考えられ、近い将来システムダウンが発生する可能性があると判断できる。エラーハンドラ9a、9bが取り扱うエラーの種類については種々のものが考えられる。
なお、以上の説明ではエラーハンドラ9a、9bはそれぞれFTモジュール5a、5bに含まれているとしたが必ずしもこれに限る必要はない。例えば図8に例示するようにエラーハンドラ9a、9bをデータ転送部7a、7bに含めてもよい。
図8に示す構成により、データ転送部7a、7bを介して転送するデータに設けられたエラー情報ビット中に、エラーハンドラ9aで検出したエラー情報を動的に埋め込むことができる。これによりエラー情報をいち早くスタンバイ系1bに伝えることができる。
本発明のフォールトトレラント計算機システムは以上のように構成されているため、特別なハードウェアを使用していない。そのため簡便、安価にシステムを構築することができる。
また、チェックポイント毎に、差分情報の形でゲストOSスナップショット10aをスタンバイ系1bのメモリ4bにゲストOSスナップショット10bとしてコピーし、これまでのコピー分と一体にして保存している。そのため、アクティブ系1aに障害が発生したときは、ゲストOS3aに割り当てたメモリ領域のサイズによらず、スタンバイ系1bで高速にゲストOS3bを立ち上げ、系の切り換えを行うことができる。従って、ソフトウェア制御方式のフォールトトレラント計算機システムにおいて、フェイルオーバ時間を従来例よりも短くすることができ、障害発生後の復帰を高速に行うことができる。
差分情報の形でゲストOSスナップショット10aを例えば主記憶装置であるメモリ4aからメモリ4bに直接コピーするので、ディスク装置等の外部記憶装置を介してコピーする場合と比べてより高速にコピーすることができる。
更に、系の切り換えが行われるまではゲストOS3bは稼働しておらず、1台分の仮想マシンだけが動作状態となるので、ロックステップ方式のフォールトトレラント計算機システムに比べ、少ない消費電力でフォールトトレラント計算機システムを実現できる。
また、ゲストOSスナップショット10aを差分情報としたため、チェックポイントを一定時間ごととした場合、チェックポイントの時間間隔を短くすることができ、系の切り換え時のロールバック時間を短縮することができる。ロールバック時間はユーザにとっては系の切り換え時間に含まれると考えてよいのでこれを短縮できるということは、系の切り換えを実質的に高速化することになる。
チェックポイントを一定時間毎の設定でなく、差分情報であるゲストOSスナップショット10aのデータ量が所定値になった時点に設定することにより、一定時間毎のチェックポイント設定の際に、差分情報量が少ない場合に余分なロールバック時間が含まれてしまうという問題を改善し、ロールバック時間の短縮を図ることができる。これにより系の切り換え時間を実質的により高速化できる。
更に、チェックポイントを、差分情報であるゲストOSスナップショット10aのデータ量が所定値になるまでの時間と所定の最大時間間隔とのいずれか小さい方の時間で設定することにより、一定時間毎のチェックポイント設定時、及び差分情報の量が所定量になった時点でのチェックポイント設定時に発生する可能性のある余分なロールバック時間、及び所定時間より長いロールバック時間を共に短縮することができる。これにより系の切り換え時間を実質的により一層高速化できる。
なお、ケース1〜3に示したチェックポイントの設定については、仮想計算機を採用していないフォールトトレラント計算機システムに適用してもよく、その場合も上記と同様の効果を奏することができる。
また、このフォールトトレラント計算機システムでは、スタンバイ系の計算機がアクティブ系の仮想計算機上で動作するゲストOS3aの処理を引き継ぐため、ベースとなる物理計算機は何でも良く、ゲストOS3aが動作する要件を満たしているシステムであれば、最低限FTモジュール5a、5b、RDMAドライバ6a、6bをホストOS2a、2bにインストールすれば、フォールトトレラント計算機システムを実現できる。
更には、アクティブ系の物理計算機が複数台に対して、スタンバイ系の物理計算機が1台という構成も可能で、システムの利用効率を高めることができ、コスト、消費電力の低減を図ることができる。つまり、システムを二重化して動作するロックステップ方式のフォールトトレラント計算機システムでは、1つのシステムで実質2台分の物理計算機が必要となり、例えば10システムのフォールトトレラント計算機システムでは20台分のハードウェアが動作している。本願発明のフォールトトレラント計算機システムでは、アクティブ系に対して切り換え先のスタンバイ系の計算機は物理的に対である必要はない。そのため、1台の物理計算機上にスタンバイ系を集中させれば10システムのフォールトトレラント計算機システムを11台の物理計算機(10アクティブ系+1スタンバイ系)で構成することが可能となる。また、1台の物理計算機をアクティブ系として使用すると共に、別の計算機のスタンバイ系としても使用するという構成にすれば、10システムのフォールトトレラント計算機システムを最低10台の物理計算機で構成することができる。このように、空いている物理計算機を使って自由にシステム構成をすることが可能となる。
図3及び図4に示すフローチャートは本発明に係るフォールトトレラント計算機システムの動作内容を示すと共に、フォールトトレラント計算機システムの制御方法及び制御プログラムの内容をも示す。
図3及び図4に示すフォールトトレラント計算機システムの制御方法及び制御プログラムにおいても、これまで述べた効果と同様の効果を奏することができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムであって、
前記第1の計算機は、
前記第1のメモリに、所定の第1のタイミングにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存させ、前記第1の転送部に、前記第1の転送部及び前記第2の転送部を介して前記第1のメモリに保存された前記差分情報を前記第2のメモリに転送する指示を出す第1のスナップショットマネージャを備え、
前記第2の計算機は、
前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送された前記差分情報に基づき前記スナップショットを生成し、前記第2のメモリに保存するとともに、所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動する第2のスナップショットマネージャを備える、
ことを特徴とするフォールトトレラント計算機システム。
(付記2)
前記第1のメモリ及び前記第2のメモリは、それぞれ、前記第1の計算機の主記憶装置及び前記第2の計算機の主記憶装置である、
ことを特徴とする付記1に記載のフォールトトレラント計算機システム。
(付記3)
前記第1の転送部は、
前記第1の計算機のデータの送信を行う第1のデータ転送部と、
該第1のデータ転送部を制御する第1のRDMAドライバと、を備え、
前記第2の転送部は、
前記第1のデータ転送部を介してデータの受信を行う第2のデータ転送部と、
該第2のデータ転送部を制御する第2のRDMAドライバと、を備え、
前記差分情報は、前記第1のRDMAドライバ及び前記第2のRDMAドライバの制御により前記第1のデータ転送部及び前記第2のデータ転送部を介して、前記第1のメモリから前記第2のメモリに直接転送される、
ことを特徴とする付記1又は2に記載のフォールトトレラント計算機システム。
(付記4)
前記第1の計算機は、
該第1の計算機のエラー情報を取得し、前記第1の転送部に対して、前記エラー情報を前記第2の計算機に転送する指示を出す、第1のエラーハンドラを備え、
前記第2の計算機は、
前記第1の転送部を介して送信され、前記第2の転送部を介して受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断した時は計算機切り換え通知を前記第2のスナップショットマネージャに出力する第2のエラーハンドラを備え、
前記第2のタイミングは、前記第2のスナップショットマネージャが前記計算機切り換え通知を受信したときである、
ことを特徴とする付記1乃至3のいずれか1項に記載のフォールトトレラント計算機システム。
(付記5)
前記第1のエラーハンドラ及び前記第2のエラーハンドラはそれぞれ前記第1のデータ転送部及び前記第2のデータ転送部に組み込まれている、
ことを特徴とする付記4に記載のフォールトトレラント計算機システム。
(付記6)
前記エラー情報は、前記第1の計算機が停止したことを判断できる情報である、
ことを特徴とする付記4又は5に記載のフォールトトレラント計算機システム。
(付記7)
前記エラー情報は、前記第1の計算機の停止につながる恐れのある情報を含む、
ことを特徴とする付記4乃至6のいずれか1項に記載のフォールトトレラント計算機システム。
(付記8)
前記差分情報は、前記第1のタイミングにおける、一つ前の前記第1のタイミングからの、前記ゲストOSが利用する前記第1のメモリの保存データの変更内容と、前記ゲストOSの動作を担うCPUのコンテキスト情報とを含む、
ことを特徴とする付記1乃至7のいずれか1項に記載のフォールトトレラント計算機システム。
(付記9)
前記第1のタイミングは、一定時間毎に設定されたものである、
ことを特徴とする付記1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。
(付記10)
前記第1のタイミングは、前記差分情報の量が所定量に到達した時点に設定されたものである、
ことを特徴とする付記1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。
(付記11)
前記第1のタイミングは、前記差分情報の量が所定量に到達した時点及び前回の第1のタイミングからの経過時間が所定の最大時間に達した時点のいずれか早い方の時間に設定されたものである、
ことを特徴とする付記1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。
(付記12)
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムの制御方法であって、
前記第1のメモリに、所定の第1のタイミングにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、
前記第1のメモリに保存された前記差分情報を、前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送する転送ステップと、
前記第2のメモリに転送された前記差分情報に基づき前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、を備える、
ことを特徴とするフォールトトレラント計算機システムの制御方法。
(付記13)
ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって
前記第1のメモリに、所定の第1のタイミングにおける、一つ前の第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、
前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、
を前記第1の計算機に実行させる、
ことを特徴とするフォールトトレラント計算機システムの制御プログラム。
(付記14)
ゲストOSを備える仮想計算機が稼働する第1の計算機と、該第1の計算機から転送されるデータを受信する第2の転送部及び前記転送されたデータを保存する第2のメモリを備える第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって、
前記転送されるデータは前記仮想計算機のスナップショットの差分情報であり、
前記第2のメモリに保存された前記差分情報に基づきスナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、ゲストOSを起動するゲストOS起動ステップと、
を前記第2の計算機に実行させる、
ことを特徴とするフォールトトレラント計算機システムの制御プログラム。
1a 稼働中の仮想計算機を有する計算機(アクティブ系)
1b 待機中の仮想計算機を有する計算機(スタンバイ系)
2a、2b ホストOS
3a、3b ゲストOS
4a、4b メモリ
5a、5b FTモジュール
6a、6b RDMAドライバ
7a、7b データ転送部
8a、8b スナップショットマネージャ
9a、9b エラーハンドラ
10a、10b ゲストOSスナップショット
11a、11b 転送部

Claims (10)

  1. ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムであって、
    前記第1の計算機は、
    前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存し、保存された前記スナップショットを、前記第2のメモリに転送する指示を前記第1の転送部に出すと共に、前記第1のメモリに、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存し、その都度、前記第1の転送部に、前記第1の転送部及び前記第2の転送部を介して前記第1のメモリに保存された前記差分情報を前記第2のメモリに転送する指示を出す第1のスナップショットマネージャと、
    前記第1の計算機のエラー情報を取得し、前記第1の転送部に対して、前記エラー情報を前記第2の計算機に転送する指示を出す第1のエラーハンドラと、を備え、
    前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングであり、
    前記第2の計算機は、
    前記第1の転送部及び前記第2の転送部を介して転送された前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する第2のエラーハンドラと、
    前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送され保存されている前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存されている前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するとともに、前記第2のエラーハンドラが出力した前記計算機切り換え通知を受信したとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動する第2のスナップショットマネージャと、
    を備える、
    ことを特徴とするフォールトトレラント計算機システム。
  2. 前記第1のメモリ及び前記第2のメモリは、それぞれ、前記第1の計算機の主記憶装置及び前記第2の計算機の主記憶装置である、
    ことを特徴とする請求項1に記載のフォールトトレラント計算機システム。
  3. 前記第1の転送部は、
    前記第1の計算機のデータの送信を行う第1のデータ転送部と、
    該第1のデータ転送部を制御する第1のRDMAドライバと、を備え、
    前記第2の転送部は、
    前記第1のデータ転送部を介してデータの受信を行う第2のデータ転送部と、
    該第2のデータ転送部を制御する第2のRDMAドライバと、を備え、
    前記差分情報は、前記第1のRDMAドライバ及び前記第2のRDMAドライバの制御により前記第1のデータ転送部及び前記第2のデータ転送部を介して、前記第1のメモリから前記第2のメモリに直接転送される、
    ことを特徴とする請求項1又は2に記載のフォールトトレラント計算機システム。
  4. 前記第1のエラーハンドラ及び前記第2のエラーハンドラはそれぞれ前記第1のデータ転送部及び前記第2のデータ転送部に組み込まれている、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のフォールトトレラント計算機システム。
  5. 前記エラー情報は、前記第1の計算機が停止したことを判断できる情報である、
    ことを特徴とする請求項1乃至4のいずれか1項に記載のフォールトトレラント計算機システム。
  6. 前記エラー情報は、前記第1の計算機の停止につながる恐れのある情報を含む、
    ことを特徴とする請求項乃至のいずれか1項に記載のフォールトトレラント計算機システム。
  7. 前記差分情報は、前記第1のタイミングにおける、一つ前の前記第1のタイミングからの、前記ゲストOSが利用する前記第1のメモリの保存データの変更内容と、前記ゲストOSの動作を担うCPUのコンテキスト情報とを含む、
    ことを特徴とする請求項1乃至のいずれか1項に記載のフォールトトレラント計算機システム。
  8. ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムの制御方法であって、
    前記第1の計算機が実行する、
    前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存する第1のスナップショット保存ステップと、
    前記スナップショットを、前記第1の転送部を介して、前記第2の計算機に転送するスナップショット転送ステップと、
    前記第1のメモリに、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存する第1の差分情報保存ステップと、
    前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、
    前記第1の計算機のエラー情報を取得し、前記第1の転送部を介して、前記エラー情報を前記第2の計算機に転送する指示を出すエラー情報取得ステップと、
    前記エラー情報取得ステップでの前記転送する指示により、前記エラー情報を前記第1の転送部を介して前記第2の計算機に転送するエラー情報転送ステップと、
    を備え、
    前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングであり、
    前記第2の計算機が実行する、
    前記第1の計算機から転送された前記スナップショットを、前記第2の転送部を介して受信し、受信した前記スナップショットを前記第2のメモリに保存する第2のスナップショット保存ステップと、
    前記第2の計算機に転送された前記差分情報を、前記第2の転送部を介して受信し、受信した前記差分情報を前記第2のメモリに保存する第2の差分情報保存ステップと、
    前記第1の計算機から転送され、前記第2のメモリに保存された前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存された前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
    前記第2の計算機に転送された前記エラー情報を前記第2の転送部を介して受信し、受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する計算機切り換え通知ステップと、
    前記計算機切り換え通知がなされたとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、
    を備える、
    ことを特徴とするフォールトトレラント計算機システムの制御方法。
  9. ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって
    前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に、予め設定された時点における前記ゲストOSの処理内容全体のスナップショットを作成し、前記第1のメモリに保存するスナップショット保存ステップと、
    前記スナップショットを、前記第1の転送部を介して、前記第2の計算機に転送するスナップショット転送ステップと、
    前記第1のメモリに、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存する差分情報保存ステップと、
    前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、
    前記第1の計算機のエラー情報を取得し、前記第1の転送部を介して、前記エラー情報を前記第2の計算機に転送する指示を出すエラー情報取得ステップと、
    前記エラー情報取得ステップでの前記転送する指示により、前記エラー情報を前記第1の転送部を介して前記第2の計算機に転送するエラー情報転送ステップと、
    を前記第1の計算機に実行させ、
    前記第1のタイミングは、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングである、
    ことを特徴とするフォールトトレラント計算機システムの制御プログラム。
  10. ゲストOSを備える仮想計算機が稼働する第1の計算機と、該第1の計算機から転送されるデータを受信する第2の転送部及び第2のメモリを備える第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって、
    前記第2の計算機での前記ゲストOSの起動のタイミングとは独立に予め設定された時点における前記ゲストOSの処理内容全体のスナップショットであり、前記第1の計算機から転送された前記スナップショットを、前記第2の転送部を介して受信し、受信した前記スナップショットを前記第2のメモリに保存するスナップショット保存ステップと、
    前記第1の計算機から転送される差分情報であり、前記予め設定された時点を起点として設定される複数の第1のタイミングのそれぞれにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの前記差分情報を、前記第2の転送部を介して受信し、受信した前記差分情報を前記第2のメモリに保存する差分情報受信・保存ステップと、
    前記第1の計算機から転送され、前記第2のメモリに保存された前記スナップショットと最初の前記差分情報に基づき新たな前記スナップショットを生成し、前記第2のメモリに保存し、2回目以降に転送された前記差分情報の受信の都度、該差分情報と前記第2のメモリに保存された前記スナップショットとに基づき、更に新たな前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成・保存ステップと、
    前記第1の計算機から転送される、前記第1の計算機のエラー情報を、前記第2の転送部を介して受信するエラー情報受信ステップと、
    受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断したとき、計算機切り換え通知を出力する計算機切り換え通知ステップと、
    前記計算機切り換え通知がなされたとき、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、
    を前記第2の計算機に実行させ、
    前記第1のタイミングは、前記第1の計算機で設定されたタイミングであり、前記起点から一定時間毎、前記差分情報の量が所定量に到達した時点毎、及び前記差分情報の量が所定量に到達した時点と前回の前記第1のタイミングからの経過時間が所定の最大時間に達した時点とのいずれか早い方の時間毎のいずれかのタイミングである、
    ことを特徴とするフォールトトレラント計算機システムの制御プログラム。
JP2011087745A 2011-04-11 2011-04-11 フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム Expired - Fee Related JP5742410B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011087745A JP5742410B2 (ja) 2011-04-11 2011-04-11 フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム
US13/443,813 US8990617B2 (en) 2011-04-11 2012-04-10 Fault-tolerant computer system, fault-tolerant computer system control method and recording medium storing control program for fault-tolerant computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011087745A JP5742410B2 (ja) 2011-04-11 2011-04-11 フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム

Publications (2)

Publication Number Publication Date
JP2012221321A JP2012221321A (ja) 2012-11-12
JP5742410B2 true JP5742410B2 (ja) 2015-07-01

Family

ID=47007309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011087745A Expired - Fee Related JP5742410B2 (ja) 2011-04-11 2011-04-11 フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム

Country Status (2)

Country Link
US (1) US8990617B2 (ja)
JP (1) JP5742410B2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
JP5514794B2 (ja) * 2011-12-05 2014-06-04 パナソニック株式会社 情報処理システム
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
JP6291711B2 (ja) * 2013-01-21 2018-03-14 日本電気株式会社 フォールトトレラントシステム
US10452580B2 (en) * 2013-03-26 2019-10-22 Vmware, Inc. Method and system for providing remote direct memory access to virtual machines
US9146819B2 (en) * 2013-07-02 2015-09-29 International Business Machines Corporation Using RDMA for fast system recovery in virtualized environments
US9280372B2 (en) * 2013-08-12 2016-03-08 Amazon Technologies, Inc. Request processing techniques
US9634965B2 (en) 2013-09-20 2017-04-25 Oracle International Corporation System and method for providing a job manager for use with a cloud platform environment
CN103473142B (zh) * 2013-10-08 2016-01-20 浪潮(北京)电子信息产业有限公司 一种云计算操作系统下的虚拟机迁移方法及装置
JP6237230B2 (ja) * 2013-12-27 2017-11-29 富士通株式会社 メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置
EP3090345B1 (en) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
US20150205688A1 (en) * 2013-12-30 2015-07-23 Stratus Technologies Bermuda Ltd. Method for Migrating Memory and Checkpoints in a Fault Tolerant System
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
EP3090344B1 (en) 2013-12-30 2018-07-18 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
JP6421470B2 (ja) * 2014-06-17 2018-11-14 富士通株式会社 仮想マシンマイグレーションプログラム、仮想マシンマイグレーションシステムおよび仮想マシンマイグレーション方法
US9542108B2 (en) * 2014-06-30 2017-01-10 Scale Computing, Inc. Efficient migration of virtual storage devices to a remote node using snapshots
KR101750673B1 (ko) * 2015-04-02 2017-06-23 미쓰비시덴키 가부시키가이샤 리던던트 시스템 및 통신 유닛
US9924001B2 (en) * 2015-06-19 2018-03-20 Stratus Technologies, Inc. Method of selective network buffering in checkpoint systems
KR102513961B1 (ko) * 2015-11-11 2023-03-27 삼성전자주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
JP6773533B2 (ja) * 2016-11-22 2020-10-21 Necプラットフォームズ株式会社 動作環境同期装置、動作環境同期システム、動作環境同期方法、及び、動作環境同期プログラム
JP6882662B2 (ja) * 2016-11-29 2021-06-02 富士通株式会社 マイグレーションプログラム、情報処理装置およびマイグレーション方法
US10540200B2 (en) * 2017-11-10 2020-01-21 Advanced Micro Devices, Inc. High performance context switching for virtualized FPGA accelerators
JP7065686B2 (ja) * 2018-05-08 2022-05-12 三菱電機株式会社 情報処理システム、情報処理装置及びプログラム
JP7332280B2 (ja) * 2018-09-10 2023-08-23 横河電機株式会社 冗長化システム、冗長化プログラム、及び情報処理装置
US10447273B1 (en) 2018-09-11 2019-10-15 Advanced Micro Devices, Inc. Dynamic virtualized field-programmable gate array resource control for performance and reliability
JP7128419B2 (ja) * 2019-02-14 2022-08-31 日本電信電話株式会社 二重化運転システム及びその方法
CN110209468A (zh) * 2019-05-24 2019-09-06 北京百度网讯科技有限公司 用于启动虚拟机的方法、装置、设备和介质
JP6773345B1 (ja) * 2019-05-29 2020-10-21 Necプラットフォームズ株式会社 フォールトトレラントシステム、サーバ、及びそれらの運用方法
TWI763331B (zh) 2021-02-25 2022-05-01 威聯通科技股份有限公司 虛擬機器的備用方法與備用系統

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09223079A (ja) * 1996-02-16 1997-08-26 Nec Eng Ltd データ転送システム
JPH10320223A (ja) * 1997-05-16 1998-12-04 Toshiba Corp チェックポイント通信処理システム、チェックポイント通信処理方法及びこの方法を記録した記憶媒体
JP2000020490A (ja) * 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
GB0112781D0 (en) * 2001-05-25 2001-07-18 Global Continuity Plc Method for rapid recovery from a network file server failure
US7590683B2 (en) * 2003-04-18 2009-09-15 Sap Ag Restarting processes in distributed applications on blade servers
JP2006277690A (ja) * 2005-03-30 2006-10-12 Nec Corp クラスタシステム、クラスタ切り替え方法、クラスタ切り替え制御プログラム
US20070094659A1 (en) * 2005-07-18 2007-04-26 Dell Products L.P. System and method for recovering from a failure of a virtual machine
JP2008033483A (ja) * 2006-07-27 2008-02-14 Nec Corp 計算機システム、計算機および計算機動作環境の移動方法
EP1962192A1 (en) * 2007-02-21 2008-08-27 Deutsche Telekom AG Method and system for the transparent migration of virtual machine storage
JP2009080692A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 仮想計算機システム及び同システムにおけるサービス引き継ぎ制御方法
JP4468426B2 (ja) * 2007-09-26 2010-05-26 株式会社東芝 高可用システム及び実行状態制御方法
JP5094460B2 (ja) * 2008-02-20 2012-12-12 株式会社日立製作所 計算機システム、データ一致化方法およびデータ一致化処理プログラム
US8117410B2 (en) * 2008-08-25 2012-02-14 Vmware, Inc. Tracking block-level changes using snapshots
US20100082922A1 (en) * 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
JP5148441B2 (ja) * 2008-09-30 2013-02-20 日本電信電話株式会社 計算機間相互結合網における通信経路の冗長化と切り替え方法、この方法を実現するサーバ装置、そのサーバモジュール、および、そのプログラム
US8499297B2 (en) * 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
JP5124430B2 (ja) * 2008-12-04 2013-01-23 株式会社エヌ・ティ・ティ・データ 仮想マシンの移行方法、サーバ、及び、プログラム
US8639984B2 (en) * 2011-08-09 2014-01-28 International Business Machines Corporation Checkpoint debugging using mirrored virtual machines
US8484161B2 (en) * 2011-08-29 2013-07-09 Oracle International Corporation Live file system migration

Also Published As

Publication number Publication date
JP2012221321A (ja) 2012-11-12
US20120266018A1 (en) 2012-10-18
US8990617B2 (en) 2015-03-24

Similar Documents

Publication Publication Date Title
JP5742410B2 (ja) フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム
US11016857B2 (en) Microcheckpointing with service processor
US10579485B2 (en) Virtual machine fault tolerance
EP3211532B1 (en) Warm swapping of hardware components with compatibility verification
US8020041B2 (en) Method and computer system for making a computer have high availability
US8307363B2 (en) Virtual machine system, restarting method of virtual machine and system
US9335998B2 (en) Multi-core processor system, monitoring control method, and computer product
US7574627B2 (en) Memory dump method, memory dump program and computer system
US20110231698A1 (en) Block based vss technology in workload migration and disaster recovery in computing system environment
CN101876926B (zh) 一种非对称结构的软件三机热备容错方法
JP5392594B2 (ja) 仮想計算機冗長化システム、コンピュータシステム、仮想計算機冗長化方法、及びプログラム
US11947429B2 (en) Data disaster recovery method and site
WO2014199230A2 (en) Virtual machine backup from storage snapshot
US9195553B2 (en) Redundant system control method
US9152491B2 (en) Job continuation management apparatus, job continuation management method and job continuation management program
US10402264B2 (en) Packet-aware fault-tolerance method and system of virtual machines applied to cloud service, computer readable record medium and computer program product
JP2008052407A (ja) クラスタシステム
JP5561334B2 (ja) データ転送装置
CN111400086B (zh) 虚拟机容错的实现方法和系统
JP2007080012A (ja) 再起動方法、システム及びプログラム
CN106775846B (zh) 用于物理服务器的在线迁移的方法及装置
JP6954693B2 (ja) フォールトトレラントシステム、サーバ、それらの運用方法、及びプログラム
JP5335150B2 (ja) 計算機装置及びプログラム
JP2011086316A (ja) 引継方法、計算機システム及び管理サーバ
TWI763331B (zh) 虛擬機器的備用方法與備用系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150316

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150420

R150 Certificate of patent or registration of utility model

Ref document number: 5742410

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees