(57)【要約】【課題】同時に処理するジョブの数が現在のサーバで処理できるジョブの数を超えた場合には、新たに１台のサーバを用意すればよく、待機サーバを必要としないフォールトトレラントシステム等を提供する。【解決手段】サーバ１およびサーバ２は、それぞれハイパーバイザを起動し、複数のバーチャルマシンを構築する。各ハイパーバイザは、いずれのサーバも１以上のプライマリのバーチャルマシンと１以上のセカンダリのバーチャルマシンを有するようにプライマリおよびセカンダリを割り当て、同一サーバ内のバーチャルマシンには異なる処理を割り当てる。いずれかのサーバに障害が発生したと判定した場合、障害が発生したサーバのプライマリのバーチャルマシンとペアのセカンダリのバーチャルマシンを有するサーバは、該セカンダリのバーチャルマシンをプライマリに昇格させる。【選択図】図１
2012190175.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバを備え、
前記サーバは、いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とするフォールトトレラントシステム。
【請求項２】
前記サーバは、順序付けられ、
各前記サーバの次の前記サーバは、各前記サーバが有する前記プライマリの前記バーチャルマシンと同一の処理が割り当てられる前記セカンダリの前記バーチャルマシンを有し、
最初の前記サーバは、最後の前記サーバが有する前記プライマリの前記バーチャルマシンと同一の処理が割り当てられる前記セカンダリの前記バーチャルマシンを有することを特徴とする請求項１に記載のフォールトトレラントシステム。
【請求項３】
前記サーバは、
いずれも１以上の前記プライマリの前記バーチャルマシンと１以上の前記セカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当て手段を含むことを特徴とする請求項１または２に記載のフォールトトレラントシステム。
【請求項４】
前記サーバは、２個の前記バーチャルマシンを有することを特徴とする請求項１ないし３のいずれか１項に記載のフォールトトレラントシステム。
【請求項５】
前記サーバは、
前記バーチャルマシンが処理を実行するジョブを取得するジョブ取得手段と、
他の前記サーバと通信を行い、他の前記サーバに障害が発生したか否かを判定する死活監視手段と、
前記死活監視手段が障害が発生したと判定した他の前記サーバが有する前記プライマリの前記バーチャルマシンが処理していた前記ジョブの前記セカンダリの前記バーチャルマシンを備える場合、該ジョブの前記セカンダリの前記バーチャルマシンを前記プライマリに切り替える切り替え手段と、
を含むことを特徴とする請求項１ないし４のいずれか１項に記載のフォールトトレラントシステム。
【請求項６】
前記死活監視手段が障害が発生したと判定した他の前記サーバが復旧した場合、他の前記サーバの前記切り替え手段は、前記プライマリの前記バーチャルマシンを前記セカンダリに切り替えることを特徴とする請求項５に記載のフォールトトレラントシステム。
【請求項７】
２以上の前記サーバは、前記プライマリの前記バーチャルマシンに前記ジョブの処理を実行させるためのデータを格納するストレージをそれぞれ内部に備え、前記プライマリの前記バーチャルマシンの前記データを前記セカンダリの前記バーチャルマシンを有する前記サーバの前記ストレージにコピーすることを特徴とする請求項１ないし６のいずれか１項に記載のフォールトトレラントシステム。
【請求項８】
２以上の前記サーバは、前記バーチャルマシンに前記ジョブの処理を実行させるためのデータを格納するストレージを外部に備え、前記ストレージを共有することを特徴とする請求項１ないし７のいずれか１項に記載のフォールトトレラントシステム。
【請求項９】
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有し、１以上の他のサーバに接続する２以上のサーバであって、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とするサーバ。
【請求項１０】
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバが実行する
いずれの前記サーバも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当てステップを備えることを特徴とするフォールトトレラント化方法。
【請求項１１】
前記サーバが実行する
前記バーチャルマシンが処理を実行するジョブを取得するジョブ取得ステップと、
他の前記サーバと通信を行い、他の前記サーバに障害が発生したか否かを判定する死活監視ステップと、
前記死活監視ステップで障害が発生したと判定した他の前記サーバが有する前記プライマリの前記バーチャルマシンが処理していた前記ジョブの前記セカンダリの前記バーチャルマシンを備える場合、該ジョブの前記セカンダリの前記バーチャルマシンを前記プライマリに切り替える切り替えステップと、
をさらに備えることを特徴とする請求項１０に記載のフォールトトレラント化方法。
【請求項１２】
前記死活監視ステップで障害が発生したと判定した他の前記サーバが復旧した場合、他の前記サーバの前記切り替えステップでは、前記プライマリの前記バーチャルマシンを前記セカンダリに切り替えることを特徴とする請求項１１に記載のフォールトトレラント化方法。
【請求項１３】
１以上の他のコンピュータに接続するコンピュータを、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシン、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当て手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステム、サーバ、フォールトトレラント化方法およびプログラムに関する。
【背景技術】
【０００２】
データ処理を実行するシステムにおいて、システムの一部に障害が発生しても、停止することなく、連続稼働することを可能にしたフォールトトレラントシステムが知られている。フォールトトレラントシステムでは、たとえば、ロックステップ方式が採用される。ロックステップ方式のフォールトトレラントシステムでは、多重化されたシステムのコンポーネント同士で、互いに同期をとりながら同じ処理を実行する。たとえば、１つのジョブを処理するフォールトトレラントシステムは、２台のサーバで構成され、２台のうちどちらかがプライマリとして動作し、もう一方がセカンダリとして動作または待機する。
【０００３】
特許文献１には、サーバを複数台使用して冗長化することによりシステムの可用性を向上させるクラスタシステムが開示されている。特許文献１のクラスタシステムでは、複数台のサーバがストレージを共有している。
【０００４】
特許文献２には、独立した計算機上の仮想計算機を組み合わせて二重化し、プライマリとセカンダリとが独立して持つ両ストレージの状態を一致させながら、両仮想計算機の実行状態を同期させる高可用システムが開示されている。特許文献２の高可用システムでは、複数の計算機が独立して持つストレージを同期させている。
【０００５】
特許文献３には、複数の仮想サーバが稼働する複数の物理サーバと、単一の待機系サーバを具備し、物理サーバ障害時に仮想化機構の起動ディスクを待機系サーバに接続し直すとともに、障害発生時に起動していた仮想サーバを自動的に起動するサーバシステムの障害回復方法が開示されている。
【０００６】
特許文献４には、故障などが原因で主たるサーバとバックアップサーバの一方が利用不能となっても、冗長性のある共用メモリを用いて動作を継続する分散形計算機処理システムが開示されている。
【０００７】
特許文献５には、入出力サーバからデイジーチェーン接続方式により接続されるコンピュータ切替方法が記載されている。特許文献６には、デイジーチェーン構成とバス構成の両方をなすようにネットワーク・ケーブルに結合されている複数のゲートによって構成されているネットワークが記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８７０９０号公報
【特許文献２】特開２０１０−０２６９３２号公報
【特許文献３】特開２０１０−２１１８１９号公報
【特許文献４】特開２００３−５３１４３５号公報
【特許文献５】特開２００８−２９３５２１号公報
【特許文献６】特開平０６−１３１２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１および２のシステムでは、同時に処理するジョブの数が２台の物理サーバで処理できるジョブの数を超えた場合には、新たに２台の物理サーバを用意する必要がある。
【００１０】
特許文献３に記載の技術では、同時に処理するジョブの数が現用系サーバで処理できるジョブの数を超えた場合には、新たに１台の現用系サーバを用意すればよいが、待機系サーバが必要である。また、待機系サーバが処理するジョブの数が、待機系サーバで処理できるジョブの数を超えた場合に、待機系サーバを新たに用意する必要がある。さらに、物理サーバに障害が発生してから待機系サーバに仮想サーバを起動させるので、障害が発生した物理サーバと待機系サーバとの切り替えに時間がかかる。
【００１１】
特許文献４に記載の技術では、主たるサーバとバックアップサーバが固定しているので、同時に処理するジョブの数が２台のサーバが処理できるジョブの数を超えた場合には、新たに２台のサーバを用意する必要がある。
【００１２】
特許文献５および特許文献６に記載の技術は、フォールトトレラントシステムを構成するものではない。
【００１３】
本発明は、このような問題点に鑑みてなされたもので、同時に処理するジョブの数が現在のサーバで処理できるジョブの数を超えた場合には、新たに１台のサーバを用意すればよく、待機サーバを必要としないフォールトトレラントシステム、サーバ、フォールトトレラント化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の観点に係るフォールトトレラントシステムは、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバを備え、
前記サーバは、いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とする。
【００１５】
本発明の第２の観点に係るサーバは、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有し、１以上の他のサーバに接続する２以上のサーバであって、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とする。
【００１６】
本発明の第３の観点に係るフォールトトレラント化方法は、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバが実行する
いずれの前記サーバも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当てステップを備えることを特徴とする。
【００１７】
本発明の第４の観点に係るプログラムは、
１以上の他のコンピュータに接続するコンピュータを、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシン、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当て手段、
として機能させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、同時に処理するジョブの数が現在のサーバで処理できるジョブの数を超えた場合には、新たに１台のサーバを用意すればよく、待機サーバを必要としない。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態に係るフォールトトレラントシステムの構成例を示す図である。
【図２】実施の形態に係るサーバの機能構成例を示す図である。
【図３】実施の形態に係るフォールトトレラント処理の動作の一例を示すフローチャートを示す図である。
【図４】実施の形態に係るフォールトトレラント処理の動作の一例を示すフローチャートを示す図である。
【図５】２つのバーチャルマシンを有する２台のサーバが２つのジョブを処理する場合の模式図である。
【図６】２つのバーチャルマシンを有する３台のサーバが３つのジョブを処理する場合の模式図である。
【図７】４つのバーチャルマシンを有する２台のサーバが４つのジョブを処理する場合の模式図である。
【図８】４つのバーチャルマシンを有する３台のサーバが５つのジョブを処理する場合の模式図である。
【発明を実施するための形態】
【００２０】
本発明におけるバーチャルマシンとは、コンピュータのＣＰＵや記憶サーバなどのリソースを仮想化する技術によりサーバのメモリ上に実現された仮想のコンピュータを指す。フォールトトレラントシステムにおけるプライマリのバーチャルマシンとは、主としてジョブの処理を行うバーチャルマシンであり、セカンダリのバーチャルマシンとは、同一の処理が割り当てられた予備のバーチャルマシンである。プライマリのバーチャルマシンを有するサーバに障害が発生した場合、セカンダリのバーチャルマシンをプライマリに昇格することで、該ジョブの処理を続行することができる。
【００２１】
本発明のフォールトトレラントシステムは、２以上のバーチャルマシンを有する複数のサーバを備え、いずれのサーバも１以上のプライマリのバーチャルマシンと１以上のセカンダリのバーチャルマシンを有する。
【００２２】
また、本発明において、「処理を割り当てる」とは、バーチャルマシンにジョブの実行を指示することだけでなく、セカンダリのバーチャルマシンがプライマリに昇格した際にジョブの実行ができるように、プライマリのバーチャルマシンのデータをメモリコピーするよう設定することも含む。
【００２３】
以下、本発明を実施するための形態について図面を参照して詳細に説明する。なお図中、同一または相当部分には同じ符号を付す。
【００２４】
図１は、本発明の実施の形態に係るフォールトトレラントシステム１００の構成例を示す。フォールトトレラントシステム１００は、サーバ１と、サーバ２と、ネットワークスイッチ（以下ＬＡＮスイッチという）５とを備える。
【００２５】
ＬＡＮスイッチ５は、ネットワーク７と接続されている。ＬＡＮスイッチ５のポート５１はサーバ１に接続され、ポート５２はサーバ２に接続されている。
【００２６】
サーバ１およびサーバ２は、同一の構成を有する。ここでは、代表してサーバ１の構成について説明する。ハードウェア１１は、サーバ１に構築されるバーチャルマシン１１０およびバーチャルマシン１２０のＯＳ（Operating  System）のソフトウェアを格納しているストレージ１１２と、ストレージ１１２内に格納された各種プログラムを実行するプロセッサ１１１と、ＬＡＮスイッチ５のポート５１と接続するネットワークインタフェースカード（以下ＮＩＣという）１１３と、通信部１１４とを備える。ＮＩＣ１１３は、物理インタフェースである。ストレージ１１２は、複数のハードディスクを備えてもよい。サーバ１は、ストレージ１１２に格納されたＯＳのソフトウェアを実行させることによりバーチャルマシンを実現する。通信部１１４は、サーバ２の通信部２１４と、図示しないインターコネクトを介して通信を行う。
【００２７】
メモリ１０上では、ハイパーバイザ１５０とバーチャルマシン１１０およびバーチャルマシン１２０とが稼動している。サーバ１の起動時に、プロセッサ１１１が、ストレージ１１２に格納されているハイパーバイザ１５０の起動プログラムを読み出して実行することで、ハイパーバイザ１５０がメモリ１０上にロードされる。ハイパーバイザ１５０をメモリ１０上に配備して稼働させることで、これらのバーチャルマシンを構築することができる。バーチャルマシン１１０およびバーチャルマシン１２０は、それぞれ独立にＯＳを稼働させることができる。前述のように、バーチャルマシン１１０およびバーチャルマシン１２０のＯＳのソフトウェアは、ストレージ１１２に格納されている。
【００２８】
以下に、ハイパーバイザ１５０の機能構成を説明する。ハイパーバイザ１５０は、仮想インタフェースとして、バーチャルマシン１１０がＬＡＮ通信を行うための仮想ＮＩＣ１５２と、バーチャルマシン１２０がＬＡＮ通信を行うための仮想ＮＩＣ１５４とを備える。また、ハイパーバイザ１５０は、ＬＡＮスイッチ５を模擬した仮想ＬＡＮスイッチ１５６を備える。
【００２９】
仮想ＮＩＣ１５２は、仮想ＬＡＮスイッチ１５６を介してＮＩＣ１１３と接続し、ＬＡＮスイッチ５を介してネットワーク７と通信を行う。同様に、仮想ＮＩＣ１５４は、仮想ＬＡＮスイッチ１５６を介してＮＩＣ１１３と接続し、ＬＡＮスイッチ５を介してネットワーク７と通信を行う。
【００３０】
なお、ストレージ１１２は、バーチャルマシンのＯＳのソフトウェアを含むバーチャルマシンにジョブの処理を実行させるための各種データを格納する。ハイパーバイザ１５０は、ストレージ１１２を模擬した仮想ストレージを備え、各バーチャルマシンは、仮想ストレージとデータの送受信を行ってもよい。
【００３１】
このように、ハイパーバイザがプロセッサ上で動作し、バーチャルマシンがハイパーバイザ上で動作することによりバーチャルマシンが実現される。
【００３２】
サーバ２は、プロセッサ２１１と、ストレージ２１２と、ＮＩＣ２１３と通信部２１４とを有するハードウェア２１と、ハイパーバイザ２５０とバーチャルマシン２１０およびバーチャルマシン２２０とが稼動するメモリ２０とを備え、サーバ１と同じ構成である。ハイパーバイザ２５０は、仮想ＮＩＣ２５２、仮想ＮＩＣ２５４および仮想ＬＡＮスイッチ２５６を備える。なお、サーバは、処理するジョブ数に合わせて用意するが、ジョブ数は２以上、サーバが有するバーチャルマシン数は２以上、サーバ数は２台以上が好ましい。
【００３３】
本実施の形態では、サーバ１およびサーバ２の各ハイパーバイザは、あらかじめ各バーチャルマシンに処理を割り当て、プライマリまたはセカンダリの設定を行う。また、各ハイパーバイザは、これらの設定をＰ／Ｓ情報として共有している。Ｐ／Ｓ情報は、たとえば各通信部を介して同期させる。なお、同一サーバ内のバーチャルマシンには、異なるジョブが割り当てられる。すなわち、同一サーバ内に同じジョブのプライマリのバーチャルマシンとセカンダリのバーチャルマシンは存在しない。また、ハイパーバイザ１５０は、各バーチャルマシンに割り当てたリソースの監視を行う。具体的にはバーチャルマシンに割り当てたＣＰＵリソース、割当時間、Ｉ／Ｏ処理数などのリソースを監視する。
【００３４】
図２は、実施の形態に係るサーバの機能構成例を示す図である。サーバ１は、バーチャルマシン（図中、ＶＭと記載）１１０、バーチャルマシン（図中、ＶＭと記載）１２０、ジョブ取得部１４１、送受信部１４２、死活監視部１４３、切り替え部１４４、割り当て部１４５および記憶部１４６を備える。サーバ２も同じ機能構成である。
【００３５】
サーバ１のジョブ取得部１４１は、プライマリのバーチャルマシンが実行するジョブを取得する。ジョブ取得部１４１は、ストレージ１１２、ＮＩＣ１１３、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０によって実現される。
【００３６】
バーチャルマシン１１０は、ジョブ取得部１４１が取得したジョブのうち、あらかじめバーチャルマシン１１０にプライマリとして割り当てられたジョブの処理を実行する。セカンダリとして割り当てられたジョブの処理は実行しない。プライマリである場合、バーチャルマシン１１０は、割り当てられたジョブを処理した結果を示す結果データを記憶部１４６に記憶する。
【００３７】
バーチャルマシン１２０は、ジョブ取得部１４１が取得したジョブのうち、あらかじめバーチャルマシン１２０にプライマリとして割り当てられたジョブの処理を実行する。セカンダリとして割り当てられたジョブの処理は実行しない。プライマリである場合、バーチャルマシン１２０は、割り当てられたジョブを処理した結果を示す結果データを記憶部１４６に記憶する。
【００３８】
送受信部１４２は、Ｐ／Ｓ情報を参照して、記憶部１４６に記憶された結果データを含むプライマリのバーチャルマシンのデータのコピーをペアとなるセカンダリのバーチャルマシンを有するサーバに定期的に送信する。一方、送受信部１４２は、セカンダリのバーチャルマシンとペアとなるプライマリのバーチャルマシンを有するサーバから、結果データを含む該プライマリのバーチャルマシンのデータのコピーを受信し、記憶部１４６に記憶する。送受信部１４２は、ＮＩＣ１１３、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０によって実現される。
【００３９】
なお、送受信部１４２は、プライマリのバーチャルマシンのデータのコピーの送受信をインターコネクトを介して行ってもよい。つまり、送受信部１４２は、通信部２１４、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０によって実現してもよい。また、送受信部１４２が送受信するプライマリのバーチャルマシンのデータのコピーは、前回までのデータとの差分のデータのコピーであってもよい。
【００４０】
死活監視部１４３は、通信部１１４を用いて、他のサーバの死活監視を行う。死活監視部１４３は、サーバ２の通信部からの通信が途切れた場合は、サーバ２に障害が生じたと判断する。死活監視部１４３は、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０と、通信部１１４によって実現される。
【００４１】
切り替え部１４４は、Ｐ／Ｓ情報を参照して、死活監視部１４３が障害が生じたと判断したサーバのバーチャルマシンがプライマリとして処理を実行していたジョブのセカンダリのバーチャルマシンをサーバ１が有するか否かを判定する。たとえば、バーチャルマシン１２０が、該ジョブのセカンダリのバーチャルマシンであったとすると、切り替え部１４４は、バーチャルマシン１２０の設定をセカンダリからプライマリに切り替える。同時に、切り替え部１４４は、Ｐ／Ｓ情報のバーチャルマシン１２０の設定をセカンダリからプライマリに書き替える。これにより、バーチャルマシン１２０は、割り当てられた処理を実行を開始する。切り替え部１４４は、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０によって実現される。
【００４２】
割り当て部１４５は、あらかじめ、サーバ２と通信を行い、サーバ１およびサーバ２のいずれも１以上のプライマリのバーチャルマシンと１以上のセカンダリのバーチャルマシンを有するように、プライマリまたはセカンダリを割り当てる。たとえば、サーバ１の割り当て部１４５が、バーチャルマシン１１０をプライマリと設定し、そのペアのセカンダリをサーバ２の割り当て部がサーバ２のバーチャルマシン２１０に設定したとすると、サーバ１の割り当て部１４５がセカンダリと設定したバーチャルマシン１２０のペアのプライマリは、サーバ２の割り当て部がサーバ２のバーチャルマシン２２０に設定する。また、割り当て部１４５は、プライマリのバーチャルマシンとセカンダリのバーチャルマシンとには同一の処理を割り当てる。割り当て部１４５は、Ｐ／Ｓ情報にこれらの情報を書き込む。割り当て部１４５は、プロセッサ１１がメモリ１０上に稼働するハイパーバイザ１５０によって実現される。
【００４３】
記憶部１４６は、プライマリのバーチャルマシンがジョブを処理した結果を示す結果データを含むプライマリのバーチャルマシンのデータを記憶する。また、記憶部１４６は、セカンダリのバーチャルマシンとペアとなるプライマリのバーチャルマシンのデータのコピーを記憶する。記憶部１４６は、ストレージ１１２によって実現される。
【００４４】
以下に、バーチャルマシンのプライマリまたはセカンダリの設定について図１を参照して詳細に説明する。ハイパーバイザ１５０は、たとえばネットワーク７からＬＡＮスイッチ５を介して取得するジョブＡをバーチャルマシン１１０に割り当て、プライマリのバーチャルマシンとする。このとき、Ｐ／Ｓ情報には、「バーチャルマシン１１０」に「ジョブＡ」が「プライマリ」として割り当てられたことを示す情報が記憶される。サーバ２のハイパーバイザは、バーチャルマシン２１０をセカンダリのバーチャルマシンとする。この場合、Ｐ／Ｓ情報には、「バーチャルマシン２１０」に「ジョブＡ」が「セカンダリ」として割り当てられたことを示す情報が記憶される。ジョブＡに対してプライマリのバーチャルマシン１１０は、ジョブＡを実行し、ジョブＡに対してセカンダリのバーチャルマシン２１０は、待機する。
【００４５】
ＬＡＮスイッチ５において、ジョブＡのプライマリバーチャルマシンがあるサーバ１に接続されるポート（以下プライマリ側ポートという）は通常の通信を行い、ジョブＡのデータをサーバ１に送信する。ジョブＡのセカンダリバーチャルマシンがあるサーバ２に接続されるポート（以下セカンダリ側ポートという）は、ジョブＡのデータをサーバ２に送信しない。
【００４６】
バーチャルマシン１１０がプライマリであり、バーチャルマシン２１０がセカンダリであるため、ＬＡＮスイッチ５のプライマリ側ポートは、ポート５１であり、セカンダリ側ポートは、ポート５２である。たとえば、ネットワーク７から受信し、ポート５１からサーバ１のＮＩＣ１１３に向けてジョブＡのデータが送出されたとする。ポート５２は、このデータをサーバ２のＮＩＣ２１３に送出しない。
【００４７】
ＮＩＣ１１３は、受信したすべてのジョブＡのデータを、プロセッサ１１１がメモリ１０上で稼働させているハイパーバイザ１５０の仮想ＬＡＮスイッチ１５６に転送する。
【００４８】
ハイパーバイザ１５０がジョブＡをバーチャルマシン１１０に割り当てているので、仮想ＬＡＮスイッチ１５６は、受信したジョブＡのデータをバーチャルマシン１１０の仮想ＮＩＣ１５２に転送する。
【００４９】
バーチャルマシン１１０は、受信したジョブＡのデータに対して処理を行う。バーチャルマシン１１０は、ジョブＡのデータを処理した結果を示す結果データを仮想ＮＩＣ１５２から仮想ＬＡＮスイッチ１５６に転送する。
【００５０】
仮想ＬＡＮスイッチ１５６は、仮想ＮＩＣ１５２から受信したデータをストレージ１１２に転送する。
【００５１】
ハイパーバイザ１５０は、ストレージ１１２に記憶されたバーチャルマシン１１０のデータのコピーを、定期的に、ＮＩＣ１１３を介してＬＡＮスイッチ５に転送する。ＬＡＮスイッチ５は、ＮＩＣ１１３から受信したバーチャルマシン１１０のデータのコピーをＮＩＣ２１３に転送する。
【００５２】
ＮＩＣ２１３は、受信したバーチャルマシン１１０のデータのコピーを、プロセッサ２１１がメモリ２０上で稼働させているハイパーバイザ２５０の仮想ＬＡＮスイッチ２５６に転送する。仮想ＬＡＮスイッチ２５６は、受信したバーチャルマシン１１０のデータのコピーをストレージ２１２に転送する。
【００５３】
このように、プライマリのバーチャルマシン１１０のデータのコピーは、セカンダリのバーチャルマシン２１０を有するサーバ２のストレージ２１２に定期的に転送される。こうして、サーバ１のバーチャルマシン１１０はジョブＡのプライマリとして動作し、サーバ２のバーチャルマシン２１０はジョブＡのセカンダリとして動作する。
【００５４】
以下に、バーチャルマシンをセカンダリからプライマリに昇格させる動作およびプライマリからセカンダリに降格させる動作について詳細に説明する。たとえば、サーバ１に障害が発生した場合、サーバ２の死活監視部は、通信部１５８からの通信が途絶えたことにより、サーバ１に障害が発生したと判断する。サーバ２は、サーバ１のバーチャルマシン１１０がプライマリとして処理していたジョブＡのセカンダリのバーチャルマシン２１０を有するので、サーバ２の切り替え部は、バーチャルマシン２１０の設定をセカンダリからプライマリに切り替え、Ｐ／Ｓ情報のバーチャルマシン２１０の設定をセカンダリからプライマリに書き替える。これにより、バーチャルマシン２１０は、ジョブＡの処理を実行を開始し、ジョブＡを処理した結果を示す結果データを記憶部に記憶する。
【００５５】
具体的には、ジョブＡに対してバーチャルマシン２１０がプライマリに昇格するように下記の処理が実行される。以下、図１を参照して説明する。
【００５６】
ＬＡＮスイッチ５のポート５１は通常の通信を行い、ジョブＡのデータをサーバ１に送信し、ポート５２は、ジョブＡのデータをサーバ２に送信しないようになっていた。ＬＡＮスイッチ５は、受信したデータにあるＭＡＣアドレスを学習して保管するＦＤＢ（Forwarding Database）に基づいてデータを転送する。このため、ハイパーバイザ２５０は、ダミーのＡＲＰ（Address Resolution Protocol）を発行して、ジョブＡのデータの転送先をポート５２になるようにＦＤＢを変更する。そして、ポート５２からジョブＡのデータをサーバ２に送信し、ポート５１からジョブＡのデータをサーバ１に送信しないように変更する。
【００５７】
ＮＩＣ２１３は、受信したすべてのジョブＡのデータを、プロセッサ２１１がメモリ２０上で稼働させているハイパーバイザ２５０の仮想ＬＡＮスイッチ２５６に転送する。
【００５８】
仮想ＬＡＮスイッチ２５６は、受信したデータを仮想ＮＩＣに転送する。バーチャルマシン２１０がジョブＡのプライマリとして割り当てられているので、仮想ＬＡＮスイッチ１５６は、バーチャルマシン２１０の仮想ＮＩＣ２５２にジョブＡのデータを転送する。
【００５９】
バーチャルマシン２１０は、受信したジョブＡのデータに対して処理を行う。バーチャルマシン２１０は、ジョブＡのデータを処理した結果を示す結果データを仮想ＮＩＣ２５２から仮想ＬＡＮスイッチ２５６に転送する。
【００６０】
仮想ＬＡＮスイッチ２５６は、仮想ＮＩＣ２５２から受信したデータをストレージ２１２に転送する。
【００６１】
以上より、バーチャルマシン２１０はプライマリに昇格する。
【００６２】
その後、サーバ１が復旧すると、サーバ１の切り替え部１４４は、バーチャルマシン１１０の設定をプライマリからセカンダリに切り替え、Ｐ／Ｓ情報のバーチャルマシン１１０の設定をプライマリからセカンダリに書き替える。サーバ１が復旧すると、サーバ２の死活監視部は、通信部１５８からの通信が再開したことにより、サーバ１が復旧したと判断する。サーバ２の送受信部は、バーチャルマシン２１０がジョブＡを処理した結果を示す結果データを含むバーチャルマシン２１０のデータのコピーをバーチャルマシン２１０とペアとなるセカンダリのバーチャルマシン１１０を有するサーバ１に定期的に送信する。
【００６３】
具体的には、ジョブＡに対してバーチャルマシン１１０がセカンダリに降格するように下記の処理が実行される。以下、図１を参照して説明する。
【００６４】
サーバ１が復旧すると、通信部１１４は、通信部２１４との通信を再開する。通信部１１４と通信部２１４との通信が再開すると、サーバ２のハイパーバイザ２５０は、ストレージ２１２に記憶されたバーチャルマシン２１０のデータのコピーを、定期的に、ＮＩＣ２１３を介してＬＡＮスイッチ５に転送する。ＬＡＮスイッチ５は、ＮＩＣ２１３から受信したバーチャルマシン２１０のデータのコピーをＮＩＣ１１３に転送する。
【００６５】
ＮＩＣ１１３は、受信したバーチャルマシン２１０のデータのコピーを、プロセッサ１１１がメモリ１０上で稼働させているハイパーバイザ１５０の仮想ＬＡＮスイッチ１５６に転送する。仮想ＬＡＮスイッチ１５６は、受信したバーチャルマシン２１０のデータのコピーをストレージ１１２に転送する。
【００６６】
以上より、バーチャルマシン１１０はセカンダリに降格する。
【００６７】
図３は、実施の形態に係るフォールトトレラント処理の動作の一例を示すフローチャートである。図３は、他のサーバの障害の発生を検出した場合、サーバが行う処理の動作の一例である。各サーバの割り当て部は、あらかじめ、他の１台以上のサーバと通信を行い、いずれのサーバも１以上のプライマリのバーチャルマシンと１以上のセカンダリのバーチャルマシンを有するように、プライマリまたはセカンダリを割り当てておく。また、各サーバの割り当て部は、プライマリ／セカンダリの関係を有するペアのバーチャルマシンに同一の処理を割り当てる。ジョブ取得部１４１は、ネットワーク７、ストレージ１１２または仮想ストレージからジョブを取得する（ステップＳ１１）。該ジョブの処理を割り当てられたプライマリのバーチャルマシンは、ジョブ取得部１４１が取得したジョブの処理を実行する（ステップＳ１２）。
【００６８】
死活監視部１４３が他のサーバからの通信が途切れたことによって、障害が生じたと判断した場合（ステップＳ１３；ＹＥＳ）、切り替え部１４４は、障害が生じたサーバのバーチャルマシンがプライマリとして処理を実行していたジョブのセカンダリのバーチャルマシン（図中、ＶＭと記載）を有するか否かを判定する（ステップＳ１４）。一方、死活監視部１４３が障害が生じたと判断しない場合（ステップＳ１３；ＮＯ）、ステップＳ１１に戻り、ステップＳ１１〜ステップＳ１３を繰り返す。
【００６９】
障害が生じたサーバのバーチャルマシンがプライマリとして処理を実行していたジョブのセカンダリのバーチャルマシンを有する場合（ステップＳ１４；ＹＥＳ）、該バーチャルマシンの設定をセカンダリからプライマリに切り替え（ステップＳ１５）、処理を終了する。障害が生じたサーバのバーチャルマシンがプライマリとして処理を実行していたジョブのセカンダリのバーチャルマシンを有しない場合（ステップＳ１４；ＮＯ）、処理を終了する。
【００７０】
図４は、実施の形態に係るフォールトトレラント処理の動作の一例を示すフローチャートである。図４は、障害が発生した場合、サーバが行う処理の動作の一例である。各サーバの割り当て部は、あらかじめ、他の１台以上のサーバと通信を行い、いずれのサーバも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、処理を割り当て、プライマリまたはセカンダリを設定しておく。ジョブ取得部１４１は、ネットワーク７、ストレージ１１２または仮想ストレージからジョブを取得する（ステップＳ２１）。該ジョブの処理を割り当てられたプライマリのバーチャルマシンは、ジョブ取得部１４１が取得したジョブの処理を実行する（ステップＳ２２）。
【００７１】
サーバに障害が発生していない場合（ステップＳ２３；ＮＯ）、ステップＳ２１に戻り、ステップＳ２１〜ステップＳ２３を繰り返す。一方、サーバに障害が発生した場合（ステップＳ２３；ＹＥＳ）、サーバが復旧したか否かを判定する（ステップＳ２４）。サーバが復旧した場合（ステップＳ２４；ＹＥＳ）、プライマリとして処理を実行していたバーチャルマシン（図中、ＶＭと記載）を有するか否かを判定する（ステップＳ２５）。サーバが復旧しない場合（ステップＳ２４；ＮＯ）、ステップＳ２４を繰り返す。プライマリのバーチャルマシンを有する場合（ステップＳ２５；ＹＥＳ）、該バーチャルマシンの設定をプライマリからセカンダリに切り替え（ステップＳ２６）、処理を終了する。プライマリのバーチャルマシンを有しない場合（ステップＳ２５；ＮＯ）、処理を終了する。
【００７２】
以上、ジョブＡの処理をサーバ１のバーチャルマシン１１０と、サーバ２のバーチャルマシン２１０とのペアで実行する場合について述べた。以下に、２個のバーチャルマシンを備える３台以上のサーバが複数のジョブの処理を実行する場合ついて説明する。
【００７３】
図５は、２つのバーチャルマシンを有する２台のサーバが２つのジョブを処理する場合の模式図である。図５の例では、それぞれ２つのバーチャルマシンを有するサーバ１およびサーバ２が２つのジョブＡおよびジョブＢを処理する。図中の矢印は、矢印の元がプライマリのバーチャルマシンを示し、矢印の先がセカンダリのバーチャルマシンを示す。
【００７４】
サーバ１は、バーチャルマシン１１０およびバーチャルマシン１２０を備える。サーバ２は、バーチャルマシン２１０およびバーチャルマシン２２０を備える。
【００７５】
サーバ１の割り当て部１４５は、バーチャルマシン１１０にジョブＡの処理を割り当て、プライマリのバーチャルマシンとする。また、サーバ１の割り当て部１４５は、バーチャルマシン１２０にジョブＢの処理を割り当て、セカンダリのバーチャルマシンとする。サーバ２の割り当て部は、バーチャルマシン２１０にジョブＢの処理を割り当て、プライマリのバーチャルマシンとする。また、サーバ２の割り当て部は、バーチャルマシン２２０にジョブＡの処理を割り当て、セカンダリのバーチャルマシンとする。
【００７６】
これにより、サーバ１に障害が発生しても、サーバ２のバーチャルマシン２２０をジョブＡのプライマリに昇格させることで、処理を続行することができる。また、サーバ２に障害が発生しても、サーバ１のバーチャルマシン１２０をジョブＢのプライマリに昇格させることで、処理を続行することができる。
【００７７】
図５の状態で３番目のジョブＣが追加された場合、サーバ３を追加する。
【００７８】
図６は、２つのバーチャルマシンを有する３台のサーバが３つのジョブを処理する場合の模式図である。図６の例では、それぞれ２つのバーチャルマシンを有するサーバ１、サーバ２およびサーバ３がジョブＡ、ジョブＢおよびジョブＣを処理する。図５と同様に図中の矢印は、矢印の元がプライマリのバーチャルマシンを示し、矢印の先がセカンダリのバーチャルマシンを示す。
【００７９】
サーバ３は、バーチャルマシン３１０およびバーチャルマシン３２０を備える。サーバ３の割り当て部は、バーチャルマシン３１０にジョブＣの処理を割り当て、プライマリのバーチャルマシンとする。また、サーバ３の割り当て部は、バーチャルマシン３２０にジョブＢの処理を割り当て、セカンダリのバーチャルマシンとする。このとき、サーバ１の割り当て部１４５は、ジョブＢの処理を割り当てていたバーチャルマシン１２０にジョブＣの処理を割り当て、セカンダリのバーチャルマシンとする。
【００８０】
以上のように、本実施の形態のフォールトトレラントシステム１００によれば、１台のサーバが備えるバーチャルマシンの数が２個である場合、現在のサーバで処理できるジョブの数を超えた場合には、１台ずつサーバを追加すればよい。また、追加したサーバに空きのバーチャルマシンがないため無駄を省くことができ、好適である。
【００８１】
しかしながら、本発明では、１台のサーバが備えるバーチャルマシンの数は、２個に限らない。以下に、４個のバーチャルマシンを備える２台以上のサーバが複数のジョブの処理を実行する場合ついて説明する。
【００８２】
図７は、４つのバーチャルマシンを有する２台のサーバが４つのジョブを処理する場合の模式図である。図７の例では、それぞれ４つのバーチャルマシンを有するサーバ１およびサーバ２が４つのジョブＡ、ジョブＢ、ジョブＣおよびジョブＤを処理する。図５及び図６と同様に図中の矢印は、矢印の元がプライマリのバーチャルマシンを示し、矢印の先がセカンダリのバーチャルマシンを示す。
【００８３】
サーバ１は、バーチャルマシン１１０、バーチャルマシン１２０、バーチャルマシン１３０およびバーチャルマシン１４０を備える。サーバ２は、バーチャルマシン２１０、バーチャルマシン２２０、バーチャルマシン２３０およびバーチャルマシン２４０を備える。
【００８４】
サーバ１の割り当て部１４５は、バーチャルマシン１１０にジョブＡの処理を割り当て、プライマリのバーチャルマシンとし、バーチャルマシン１２０にジョブＢの処理を割り当て、セカンダリのバーチャルマシンとする。また、サーバ１の割り当て部１４５は、バーチャルマシン１３０にジョブＣの処理を割り当て、プライマリのバーチャルマシンとし、バーチャルマシン１４０にジョブＤの処理を割り当て、セカンダリのバーチャルマシンとする。
【００８５】
サーバ２の割り当て部は、バーチャルマシン２１０にジョブＢの処理を割り当て、プライマリのバーチャルマシンとし、バーチャルマシン２２０にジョブＡの処理を割り当て、セカンダリのバーチャルマシンとする。また、サーバ２の割り当て部は、バーチャルマシン２３０にジョブＤの処理を割り当て、プライマリのバーチャルマシンとし、バーチャルマシン２４０にジョブＣの処理を割り当て、セカンダリのバーチャルマシンとする。
【００８６】
これにより、サーバ１に障害が発生しても、サーバ２のバーチャルマシン２２０およびバーチャルマシン２４０をプライマリに昇格させることで、ジョブＡおよびジョブＣの処理を続行することができる。また、サーバ２に障害が発生しても、サーバ１のバーチャルマシン１２０およびバーチャルマシン１４０をプライマリに昇格させることで、ジョブＢおよびジョブＤの処理を続行することができる。
【００８７】
図７の状態で５番目のジョブＧが追加された場合、サーバ３を追加する。
【００８８】
図８は、４つのバーチャルマシンを有する３台のサーバが５つのジョブを処理する場合の模式図である。図８の例では、それぞれ４つのバーチャルマシンを有するサーバ１、サーバ２およびサーバ３が５つのジョブＡ、ジョブＢ、ジョブＣ、ジョブＤおよびジョブＥを処理する。図５〜図７と同様に図中の矢印は、矢印の元がプライマリのバーチャルマシンを示し、矢印の先がセカンダリのバーチャルマシンを示す。
【００８９】
サーバ３は、バーチャルマシン３１０、バーチャルマシン３２０、バーチャルマシン３３０およびバーチャルマシン３４０を備える。サーバ３の割り当て部は、バーチャルマシン３１０にジョブＥの処理を割り当て、プライマリのバーチャルマシンとする。また、サーバ３の割り当て部は、バーチャルマシン３２０にジョブＢの処理を割り当て、セカンダリのバーチャルマシンとする。このとき、サーバ１の割り当て部１４５は、ジョブＢの処理を割り当てていたバーチャルマシン１２０にジョブＥの処理を割り当て、セカンダリのバーチャルマシンとする。空きのバーチャルマシン３３０およびバーチャルマシン３４０は、さらにジョブが追加されたときに、処理を割り当てられる。
【００９０】
以上のように、１台のサーバが備えるバーチャルマシンの数が４個である場合も、現在のサーバで処理できるジョブの数を超えた場合には、１台ずつサーバを追加すればよい。１台のサーバが備えるバーチャルマシンの数が４個である場合、現在のサーバで処理できるジョブの数を超えるジョブが１つ追加されたとき、新たに追加したサーバは、２つのバーチャルマシンが空くことになるが、１台のサーバが備えるバーチャルマシンの数が２個である場合よりも、ジョブ数に対して少ないサーバ数で処理を実行できるので、コストの低減が期待できる。バーチャルマシンの数が３個以上の場合も同様である。
【００９１】
また、図６または図８では、３台以上のサーバをデイジーチェーン方式で接続して順序づけ、各サーバの次のサーバは、該サーバが有するプライマリのバーチャルマシンとペアのセカンダリのバーチャルマシンを有し、最初のサーバは、最後のサーバが有するプライマリのバーチャルマシンとペアのセカンダリのバーチャルマシンを有するようにプライマリ／セカンダリを割り当てている。このような構成により、図６または図８のように、現在のサーバで処理できるジョブの数を超えるジョブが１つ追加されたとき、既存のサーバが有するバーチャルマシンのうちジョブの割り当てを変更するバーチャルマシンは１つでよい。なお、「サーバを順序付ける」とは、２以上のサーバのプライマリ／セカンダリの関係における順序であり、サーバの他の動作等がこの順序に従う必要はない。
【００９２】
また、３台以上のサーバを接続する場合、１台のサーバが有するバーチャルマシンとプライマリとセカンダリの関係を有するペアのバーチャルマシンは、少なくとも他の２台のサーバがそれぞれ有するようにプライマリ／セカンダリを割り当てるとよい。
【００９３】
本実施の形態では、プライマリのバーチャルマシンのデータをセカンダリのバーチャルマシンを有するサーバのストレージにコピーするメモリコピー方式のフォールトトレラントシステムについて説明した。しかし、本発明はこれに限られない。たとえば、外部にストレージを備え、プライマリのバーチャルマシンを有するサーバとセカンダリのバーチャルマシンを有するサーバとがプライマリのバーチャルマシンのデータを共有してもよい。また、本実施の形態では、セカンダリのバーチャルマシンは、割り当てられたジョブの処理を実行しない。しかし、本発明はこれに限られず、プライマリのバーチャルマシンとセカンダリのバーチャルマシンとが、同一のジョブの処理を並行して行うロックステップ方式を採用してもよい。
【００９４】
また、本実施の形態では、１台のサーバが備えるバーチャルマシンの数が２個の場合と、４個の場合を説明した。しかし、本発明はこれに限られない。１台のサーバが備えるバーチャルマシンの数は、２台以上であれば奇数個でもよい。たとえば、１台のサーバが備えるバーチャルマシンの数が奇数個であってサーバの台数も奇数個であれば、常に少なくとも１つのバーチャルマシンが空く。しかし、この場合であっても現在のサーバで処理できるジョブの数を超えるジョブが１つ追加されたとき、既存のサーバが有するバーチャルマシンのうちジョブの割り当てを変更するバーチャルマシンは１つでよい。
【００９５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００９６】
（付記１）
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバを備え、
前記サーバは、いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とするフォールトトレラントシステム。
【００９７】
（付記２）
前記サーバは、順序付けられ、
各前記サーバの次の前記サーバは、各前記サーバが有する前記プライマリの前記バーチャルマシンと同一の処理が割り当てられる前記セカンダリの前記バーチャルマシンを有し、
最初の前記サーバは、最後の前記サーバが有する前記プライマリの前記バーチャルマシンと同一の処理が割り当てられる前記セカンダリの前記バーチャルマシンを有することを特徴とする付記１に記載のフォールトトレラントシステム。
【００９８】
（付記３）
任意の１台の前記サーバが有する各前記バーチャルマシンと前記プライマリ／セカンダリの関係を有するペアの前記バーチャルマシンは、他の２台以上の前記サーバがそれぞれ有することを特徴とする付記１または２に記載のフォールトトレラントシステム。
【００９９】
（付記４）
前記サーバは、
いずれも１以上の前記プライマリの前記バーチャルマシンと１以上の前記セカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当て手段を含むことを特徴とする付記１ないし３のいずれかに記載のフォールトトレラントシステム。
【０１００】
（付記５）
前記サーバは、２個の前記バーチャルマシンを有することを特徴とする付記１ないし４のいずれかに記載のフォールトトレラントシステム。
【０１０１】
（付記６）
前記サーバは、
前記バーチャルマシンが処理を実行するジョブを取得するジョブ取得手段と、
他の前記サーバと通信を行い、他の前記サーバに障害が発生したか否かを判定する死活監視手段と、
前記死活監視手段が障害が発生したと判定した他の前記サーバが有する前記プライマリの前記バーチャルマシンが処理していた前記ジョブの前記セカンダリの前記バーチャルマシンを備える場合、該ジョブの前記セカンダリの前記バーチャルマシンを前記プライマリに切り替える切り替え手段と、
を含むことを特徴とする付記１ないし５のいずれかに記載のフォールトトレラントシステム。
【０１０２】
（付記７）
前記死活監視手段が障害が発生したと判定した他の前記サーバが復旧した場合、他の前記サーバの前記切り替え手段は、前記プライマリの前記バーチャルマシンを前記セカンダリに切り替えることを特徴とする付記６に記載のフォールトトレラントシステム。
【０１０３】
（付記８）
２以上の前記サーバは、前記プライマリの前記バーチャルマシンに前記ジョブの処理を実行させるためのデータを格納するストレージをそれぞれ内部に備え、前記プライマリの前記バーチャルマシンの前記データを前記セカンダリの前記バーチャルマシンを有する前記サーバの前記ストレージにコピーすることを特徴とする付記１ないし７のいずれかに記載のフォールトトレラントシステム。
【０１０４】
（付記９）
２以上の前記サーバは、前記バーチャルマシンに前記ジョブの処理を実行させるためのデータを格納するストレージを外部に備え、前記ストレージを共有することを特徴とする付記１ないし８のいずれかに記載のフォールトトレラントシステム。
【０１０５】
（付記１０）
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有し、１以上の他のサーバに接続する２以上のサーバであって、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有することを特徴とするサーバ。
【０１０６】
（付記１１）
それぞれ異なる処理が割り当てられた２以上のバーチャルマシンを有する２以上のサーバが実行する
いずれの前記サーバも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当てステップを備えることを特徴とするフォールトトレラント化方法。
【０１０７】
（付記１２）
前記サーバが実行する
前記バーチャルマシンが処理を実行するジョブを取得するジョブ取得ステップと、
他の前記サーバと通信を行い、他の前記サーバに障害が発生したか否かを判定する死活監視ステップと、
前記死活監視ステップで障害が発生したと判定した他の前記サーバが有する前記プライマリの前記バーチャルマシンが処理していた前記ジョブの前記セカンダリの前記バーチャルマシンを備える場合、該ジョブの前記セカンダリの前記バーチャルマシンを前記プライマリに切り替える切り替えステップと、
をさらに備えることを特徴とする付記１１に記載のフォールトトレラント化方法。
【０１０８】
（付記１３）
前記死活監視ステップで障害が発生したと判定した他の前記サーバが復旧した場合、他の前記サーバの前記切り替えステップでは、前記プライマリの前記バーチャルマシンを前記セカンダリに切り替えることを特徴とする付記１２に記載のフォールトトレラント化方法。
【０１０９】
（付記１４）
１以上の他のコンピュータに接続するコンピュータを、
それぞれ異なる処理が割り当てられた２以上のバーチャルマシン、
いずれも１以上のプライマリの前記バーチャルマシンと１以上のセカンダリの前記バーチャルマシンを有するように、前記バーチャルマシンに前記プライマリまたは前記セカンダリを割り当てる割り当て手段、
として機能させることを特徴とするプログラム。
【符号の説明】
【０１１０】
１  サーバ
２  サーバ
３  サーバ
５  ＬＡＮスイッチ
７  ネットワーク
１０  メモリ
１１  ハードウェア
２０  メモリ
２１  ハードウェア
５１  ポート
５２  ポート
１００  フォールトトレラントシステム
１１０  バーチャルマシン
１１１  プロセッサ
１１２  ストレージ
１１３  ＮＩＣ
１１４  通信部
１２０  バーチャルマシン
１３０  バーチャルマシン
１４０  バーチャルマシン
１４１  ジョブ取得部
１４２  送受信部
１４３  死活監視部
１４４  切り替え部
１４５  割り当て部
１５０  ハイバーバイザ
１５２  仮想ＮＩＣ
１５４  仮想ＮＩＣ
１５６  仮想ＬＡＮスイッチ
２１０  バーチャルマシン
２１１  プロセッサ
２１２  ストレージ
２１３  ＮＩＣ
２１４  通信部
２２０  バーチャルマシン
２３０  バーチャルマシン
２４０  バーチャルマシン
２５０  ハイバーバイザ
２５２  仮想ＮＩＣ
２５４  仮想ＮＩＣ
２５６  仮想ＬＡＮスイッチ
３１０  バーチャルマシン
３２０  バーチャルマシン
３３０  バーチャルマシン
３４０  バーチャルマシン
【図１】
2012190175.tif 000003
【図２】
2012190175.tif 000004
【図３】
2012190175.tif 000005
【図４】
2012190175.tif 000006
【図５】
2012190175.tif 000007
【図６】
2012190175.tif 000008
【図７】
2012190175.tif 000009
【図８】
2012190175.tif 000010