ゲスト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のスナップショットマネージャを備える、ことを特徴とするフォールトトレラント計算機システム。前記第1のメモリ及び前記第2のメモリは、それぞれ、前記第1の計算機の主記憶装置及び前記第2の計算機の主記憶装置である、ことを特徴とする請求項1に記載のフォールトトレラント計算機システム。前記第1の転送部は、前記第1の計算機のデータの送信を行う第1のデータ転送部と、該第1のデータ転送部を制御する第1のRDMAドライバと、を備え、前記第2の転送部は、前記第1のデータ転送部を介してデータの受信を行う第2のデータ転送部と、該第2のデータ転送部を制御する第2のRDMAドライバと、を備え、前記差分情報は、前記第1のRDMAドライバ及び前記第2のRDMAドライバの制御により前記第1のデータ転送部及び前記第2のデータ転送部を介して、前記第1のメモリから前記第2のメモリに直接転送される、ことを特徴とする請求項1又は2に記載のフォールトトレラント計算機システム。前記第1の計算機は、該第1の計算機のエラー情報を取得し、前記第1の転送部に対して、前記エラー情報を前記第2の計算機に転送する指示を出す、第1のエラーハンドラを備え、前記第2の計算機は、前記第1の転送部を介して送信され、前記第2の転送部を介して受信した前記エラー情報に基づき、前記第1の計算機の障害発生の有無を判断し、障害発生有と判断した時は計算機切り換え通知を前記第2のスナップショットマネージャに出力する第2のエラーハンドラを備え、前記第2のタイミングは、前記第2のスナップショットマネージャが前記計算機切り換え通知を受信したときである、ことを特徴とする請求項1乃至3のいずれか1項に記載のフォールトトレラント計算機システム。前記第1のエラーハンドラ及び前記第2のエラーハンドラはそれぞれ前記第1のデータ転送部及び前記第2のデータ転送部に組み込まれている、ことを特徴とする請求項4に記載のフォールトトレラント計算機システム。前記エラー情報は、前記第1の計算機が停止したことを判断できる情報である、ことを特徴とする請求項4又は5に記載のフォールトトレラント計算機システム。前記エラー情報は、前記第1の計算機の停止につながる恐れのある情報を含む、ことを特徴とする請求項4乃至6のいずれか1項に記載のフォールトトレラント計算機システム。前記差分情報は、前記第1のタイミングにおける、一つ前の前記第1のタイミングからの、前記ゲストOSが利用する前記第1のメモリの保存データの変更内容と、前記ゲストOSの動作を担うCPUのコンテキスト情報とを含む、ことを特徴とする請求項1乃至7のいずれか1項に記載のフォールトトレラント計算機システム。前記第1のタイミングは、一定時間毎に設定されたものである、ことを特徴とする請求項1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。前記第1のタイミングは、前記差分情報の量が所定量に到達した時点に設定されたものである、ことを特徴とする請求項1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。前記第1のタイミングは、前記差分情報の量が所定量に到達した時点及び前回の第1のタイミングからの経過時間が所定の最大時間に達した時点のいずれか早い方の時間に設定されたものである、ことを特徴とする請求項1乃至8のいずれか1項に記載のフォールトトレラント計算機システム。ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムの制御方法であって、前記第1のメモリに、所定の第1のタイミングにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、前記第1のメモリに保存された前記差分情報を、前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送する転送ステップと、前記第2のメモリに転送された前記差分情報に基づき前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成保存ステップと、所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、を備える、ことを特徴とするフォールトトレラント計算機システムの制御方法。ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって前記第1のメモリに、所定の第1のタイミングにおける、一つ前の第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、を前記第1の計算機に実行させる、ことを特徴とするフォールトトレラント計算機システムの制御プログラム。ゲストOSを備える仮想計算機が稼働する第1の計算機と、該第1の計算機から転送されるデータを受信する第2の転送部及び前記転送されたデータを保存する第2のメモリを備える第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって、前記転送されるデータは前記仮想計算機のスナップショットの差分情報であり、前記第2のメモリに保存された前記差分情報に基づきスナップショットを生成し、前記第2のメモリに保存するスナップショット生成保存ステップと、所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、ゲストOSを起動するゲストOS起動ステップと、を前記第2の計算機に実行させる、ことを特徴とするフォールトトレラント計算機システムの制御プログラム。特許文献1の方式では、二重化されたハードウェアを常に同期させて動作しているため障害発生時の計算機切り換えによる動作復帰は高速であるが、動作中の2台の仮想計算機を同期情報に従って同期させるために複雑な制御が必要である。さらに、常に2つの仮想計算機を動作させるため、仮想計算機2台分の電力を消費する。また、1システムあたりの物理計算機が2台必要となるためシステムコストがかさむ。特許文献2の方式では、動作中の仮想マシンのスナップショットを共有ディスク装置にコピーし、計算機の切り換え処理のためにこの共有ディスク装置上からスナップショットを読み出すため、系の切り換え時間が長くなってしまう。仮想計算機が稼働するフォールトトレラント計算機システムにおいて、システムコストを抑えるために特別なハードウェアを使用せずに、ソフトウェアによる系の切り換えを行う場合、切り換え時間の短縮と消費電力の低減を両立させることがポイントとなる。特許文献3に記載の例は、そのための一つの方法を提示しているが、切り換え直後の計算機にはファイルのリストしかないため、すぐに処理を開始しようとしても参照するデータを含むファイルが使用できる状態になっていない。そのため、処理に必要なファイルをオンデマンドでコピー要求するという手間と時間がかかってしまう。そのためシステムユーザにとっては実質的な系の切り換え時間が十分に短縮されたとは言い難い。本発明は、上記の事情に鑑みてなされたものであり、特別なハードウェアを使用せずに、簡便且つ高速に系の切り換えが可能な低消費電力のフォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラムを提供することを目的とする。上記の目的を達成するために、本願発明の第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の観点に係るフォールトトレラント計算機システムの制御方法は、ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2のメモリ及び前記第1の転送部から転送されたデータを受信する第2の転送部を備える第2の計算機と、を含むフォールトトレラント計算機システムの制御方法であって、前記第1のメモリに、所定の第1のタイミングにおける、一つ前の前記第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、前記第1のメモリに保存された前記差分情報を、前記第1の転送部及び前記第2の転送部を介して前記第2のメモリに転送する転送ステップと、前記第2のメモリに転送された前記差分情報に基づき前記スナップショットを生成し、前記第2のメモリに保存するスナップショット生成保存ステップと、所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、前記第2の計算機でゲストOSを起動するゲストOS起動ステップと、を備える、ことを特徴とする。本願発明の第3の観点に係るフォールトトレラント計算機システムの制御プログラムは、ゲストOSを備える仮想計算機が稼働し、第1のメモリ及び第1の転送部を備える第1の計算機と、第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって前記第1のメモリに、所定の第1のタイミングにおける、一つ前の第1のタイミングからの前記仮想計算機のスナップショットの差分情報を保存するスナップショット保存ステップと、前記第1のメモリに保存された前記差分情報を、前記第1の転送部を介して前記第2の計算機に転送する転送ステップと、を前記第1の計算機に実行させる、ことを特徴とする。本願発明の第4の観点に係るフォールトトレラント計算機システムの制御プログラムは、ゲストOSを備える仮想計算機が稼働する第1の計算機と、該第1の計算機から転送されるデータを受信する第2の転送部及び前記転送されたデータを保存する第2のメモリを備える第2の計算機と、を含むフォールトトレラント計算機システムの制御プログラムであって、前記転送されるデータは前記仮想計算機のスナップショットの差分情報であり、前記第2のメモリに保存された前記差分情報に基づきスナップショットを生成し、前記第2のメモリに保存するスナップショット生成保存ステップと、所定の第2のタイミングにおいて、前記第2のメモリに保存された前記スナップショットに基づき、ゲストOSを起動するゲストOS起動ステップと、を前記第2の計算機に実行させる、ことを特徴とする。本発明によれば、特別なハードウェアを使用せずに、簡便且つ高速に系の切り換えを行うことが可能な低消費電力のフォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラムを提供することができる。実施形態本発明の実施形態に係るフォールトトレラント計算機システムは、少なくとも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と、FTFaultTolerantモジュール5aと、RDMARemoteDirectMemoryAccessドライバ6aと、データ転送部7aと、を備える。ゲストOS3aと、ホストOS2aとはアクティブ系1aのハードウェアを構成するCPUCentralProcessingUnit;図示を省略が、RAM、ROM等いずれも図示を省略を利用してそれぞれ所定のプログラムを動作させることにより機能する。FTモジュール5a及びRDMARemoteDirectMemoryAccessドライバ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に転送するタイミングをも意味する。一方、計算機の切り換えの際に計算機で稼働中の処理を過去のどの時点まで戻すかを表す時間であるロールバック時間はチェックポイント間隔に影響される。そのため、ロールバック時間を可能な限り短縮するためにはチェックポイント間隔を小さくする必要がある。従って、この接続には、データ転送速度の速い高速のハードウェアを採用することが望ましい。この接続は一般のネットワークを介しても可能であるが、PCIExpressなどのIOスロットでDMADirectMemoryAccess転送を高速に処理する専用のハードウェアを設けてもよい。あるいは、IOInputOutputスロットを通さず、最近の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に示すフローチャートに従って本システムの計算機切り換え動作について説明する。図3aはアクティブ系1aの処理A内容を、図3はアクテイブ系1aの処理Bの内容を示す。図4aはスタンバイ系1bの処理Cの内容を、図4bはスタンバイ系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について図3aに基づき説明する。データ転送部7aにより、両系のハードウェアが通信回線で接続されていることが確認されると、アクティブ系1aのスナップショットマネージャ8aは、ゲストOS3aの処理内容全体のスナップショットを作成し、メモリ4aにゲストOSスナップショット10aとして保存し、転送部11a、すなわちRDMAドライバ6aとデータ転送部7aとを介してこれをスタンバイ系1bに転送するステップS10。ゲストOS3aの処理内容全体のスナップショットとは、ゲストOS3aで使用する全てのファイルと所定の時点での処理用メモリの内容及びCPUのコンテキストを言う。ゲストOS3aの処理内容全体を他系にコピーする方法は仮想化環境のマイグレーションの処理などで利用され、特開2010039685号公報などに掲載されておりよく知られているので説明を省略する。次に、アクティブ系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について図3bに基づき説明する。アクティブ系1aでは、エラーハンドラ9aがエラー情報を取得し、これをデータ転送部7aを介してスタンバイ系1bに転送するステップS20。この処理Bは上述の処理Aと並行して行われる。次に、スタンバイ系1bでの処理Cの内容について図4aに基づき説明する。スタンバイ系1bでは、図3aのステップS11でアクティブ系1aから転送されたゲストOSスナップショット10aの全体情報を、転送部11b、すなわちデータ転送部7bが受信しステップS30、RDMA6bの制御により、メモリ4bにゲストOSスナップショット10bとして保存するステップS31。これでゲストOSスナップショット10aの全体情報について、アクティブ系1aからスタンバイ系1bへのコピーが完了する。その後、スタンバイ系1bでは、図3aのステップS13で、アクティブ系1aから転送された差分情報を、転送部11b、すなわちデータ転送部7bが受信しステップS32、RDMA6bの制御により、メモリ4bに保存する。データ転送部7bは、メモリ4bへの差分情報の保存が完了すると保存完了の通知をRDMAドライバ6bを介してスナップショットマネージャ8bに送る。これを受けたスナップショットマネージャ8bは、これまでに保存されていたゲストOSスナップショット10bに、今回保存された差分情報を加えて、あるいは上書きして、一つの完全なゲストOSスナップショット10bにして、これをメモリ4bに保存するステップS33。その後、スタンバイ系1bでは、系の運転を停止する旨の操作がなされていないかどうかを判定するステップS34。運転停止の操作がなされていればステップS34;YES、スタンバイ系1bは図4aに示す処理を終了し、運転停止の操作がなされていなければステップS34;NO、ステップS32に戻り処理を続行する。アクティブ系1aの説明と同様に、ここで言う運転停止は通常の操作による運転停止であり、異常発生による運転停止ではない。次に、スタンバイ系1bでの処理Dについて図4bに基づき説明する。スタンバイ系1bでは、データ転送部7bが、図3bのステップS20でアクティブ系1aから転送されるエラー情報を受信しステップS40、エラーハンドラ9bは、このエラー情報に基づき、アクティブ系1aでの障害発生を検知し、計算機切り換えの要否を判定するステップS41。エラー情報としてハートビート信号を利用する場合は、データ転送部7aがハートビート信号をスタンバイ系1bに送信する図3bのステップS20。この場合は、ステップS41は、エラーハンドラ9bが、一定時間以上ハートビート信号がこなかったかどうかを検出するという処理になる。エラーハンドラ9bは、この検出結果によりアクティブ系1aでの障害発生の有無を判定し、計算機切り換えの要否を判定するステップS41。計算機の切り換えは不要と判定されたときはステップS41;NO、スタンバイ系1bでは、系の運転を停止する旨の操作がなされていないかどうかを判定するステップS42。運転停止の操作がなされていればステップS42;YES、スタンバイ系1bは図4bに示す処理を終了し、運転停止の操作がなされていなければステップS42;NO、ステップS40に戻り処理を続行する。スタンバイ系1bにおいて、エラーハンドラ9bは、計算機の切り換えが必要と判定した場合ステップS41;YES、スナップショットマネージャ8bに計算機切り換えを指示する。スナップショットマネージャ8bはこの指示により、メモリ4bに保存されているゲストOSスナップショット10bに基づき、ゲストOS3bを起動してステップS43図4bに示す処理を終了する。このゲストOS3bはアクティブ系1aから前回コピーされた時点のゲストOS3aと同じものである。ゲストOSスナップショット10aのコピーが途中の場合や、ゲストOS3bの復元が不十分な場合も想定されるため、スナップショットマネージャ8aが管理するゲストOS3aのコピーを複数作成し、1つのゲストOSスナップショット10bは完全な状態を保持して、常に完全で新しいゲストOSスナップショット10bを用いてゲストOS3bを起動することが望ましい。ゲストOS3bの起動により、スタンバイ系1bは仮想計算機として動作を開始し、ゲストOS3bの起動に使用されるゲストOSスナップショット3bに対応するゲストOSスナップショット3aが、アクティブ系1aで作成された時点の処理内容を引き継いで実行する。この際、物理計算機の画面やキーボードの接続なども適宜行われる。図4bの処理Dは図4aの処理Cと並行して行われる。アクティブ系1aが異常により運転を停止し、スタンバイ系1bがアクティブ系として機能するようになった後は、スタンバイ系1bは、図3a、bに示す処理内容を含め、アクティブ系1aと同様の処理を実行する。一方、アクティブ系1aは、異常により運転が停止した後、異常が修復され再起動されたときは、スタンバイ系となり、図4a、bに示す処理を実行する。次に、チェックポイントについて説明する。チェックポイントの決定は、計算機の処理を引き継ぐときのロールバック時間に大きく関わってくる。ロールバック時間が長いと、スタンバイ系に処理を引き継いだときにロールバックに相当する時間、同じ処理が2回繰り返されることになる。例えば、ユーザが動画を観ているときに障害が発生すると、映像が過去に巻き戻って再生されて見える。したがって、ロールバック時間を極力短くすることが重要である。ロールバックはチェックポイントを対象に決定される。本発明では、最初はゲストOS3aの処理内容全体のスナップショットをスタンバイ系1bに転送するのである程度の転送時間がかかる。しかし、その後はチェックポイント毎に差分情報をスタンバイ系1bに転送するので、転送時間は短くて済む。そのためチェックポイント間隔を狭めることができ、その分、ロールバック時間を短くすることができる。また、差分情報を障害発生時に一括して転送するのではなく所定のチェックポイント毎に転送するので、計算機の切り換え時間の短縮化が促進される。3ケースのチェックポイントの設定について説明する。ケース1では、例えば、初回のゲストOSの処理内容全体のスナップショットを作成した時点でチェックポイントを設定し、その後一定時間毎にチェックポイントを設定する。図5はケース1を説明するための図である。図の横軸は時間軸である。Ti1、Ti、Ti1等がチェックポイントに該当する。チェックポイント間の間隔は一定時間tcである。チェックポイントTi1から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で問題になったような空き時間は生じない。しかし、障害発生の前の差分量が少なく、所定量蓄積するのに長時間tCi2かかったとすると、ロールバック時間は障害発生時の直近のチェクポイントTi3より一つ前のチェックポイントTi2に溯ることになり、一定時間毎にチェックポイントを設定した場合よりもロールバック時間が大きくなる場合もありうることになる。図7はこれを解決するためのチェックポイントの設定方法ケース3を示す。基本的な考え方はケース2の場合と同じであるが、チェックポイント間の時間の最大値をtmに設定し、これを超える場合は、前回のチェックポイントからtm経過した時点でチェクポイントを設定する。図7の最上段が図6のケース2に対応する場合で、その下の段に示すのがチェックポイント間の時間を最大tmに設定したケース3の場合である。このときのロールバック時間は障害発生時の直近のチェックポイントTi3’からtmだけ溯ることになり、ケース2と比較するとTci2-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の計算機に実行させる、ことを特徴とするフォールトトレラント計算機システムの制御プログラム。