(57)【要約】【課題】専用のシステムを用いることなく、ハードウェア故障に対する可用性やメンテナンスに対する可用性を実現する。【解決手段】第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、を備え、第２ホストコンピュータは、冗長化動作モードにおいて、第２仮想マシンの実行を停止させた状態で、第１仮想マシンの実行イメージを第２仮想マシンの実行イメージに反映し、マルチ動作モードにおいて、第２仮想マシンを第１仮想マシンと並列に実行させた状態で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映する、システムを提供する。【選択図】図４
2020035374.tif 000002
【特許請求の範囲】
【請求項１】
第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、
第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、
を備え、
前記第２ホストコンピュータは、
冗長化動作モードにおいて、前記第２仮想マシンの実行を停止させた状態で、前記第１仮想マシンの実行イメージを前記第２仮想マシンの実行イメージに反映し、
マルチ動作モードにおいて、前記第２仮想マシンを前記第１仮想マシンと並列に実行させた状態で、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映する、システム。
【請求項２】
前記第２ホストコンピュータは、前記冗長化動作モードにおいて、前記第１仮想マシンの実行イメージを複製して、前記第２仮想マシンの実行イメージに反映する、請求項１に記載のシステム。
【請求項３】
前記第１ホストコンピュータは、前記第１仮想マシンを実行する仮想化環境を備えた第１プラットフォームを実行し、
前記第２ホストコンピュータは、前記第２仮想マシンを実行する仮想化環境を備えた第２プラットフォームを実行し、
前記第２ホストコンピュータは、前記冗長化動作モードにおいて、前記第２プラットフォーム上で、前記第１仮想マシンの実行イメージを前記第２仮想マシンの実行イメージに反映する、請求項１または２に記載のシステム。
【請求項４】
前記第２ホストコンピュータは、前記マルチ動作モードにおいて、前記第２アプリケーション上で、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映する、請求項１から３のいずれか一項に記載のシステム。
【請求項５】
前記第２ホストコンピュータは、前記マルチ動作モードにおいて、前記第２プラットフォーム上で、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映する、請求項３に記載のシステム。
【請求項６】
前記第１ホストコンピュータは、前記第１アプリケーションのコンテキストを前記第１アプリケーションから前記第１プラットフォームへセーブし、前記第１アプリケーションのコンテキストを前記第１プラットフォームから前記第２プラットフォームへ転送し、
前記第２ホストコンピュータは、転送された前記第１アプリケーションのコンテキストを前記第２プラットフォームから前記第２アプリケーションへリストアする、請求項５に記載のシステム。
【請求項７】
前記第２ホストコンピュータは、前記冗長化動作モードにおいて、前記第２アプリケーションを前記第１アプリケーションのスタンバイとして待機させている場合に、前記第１アプリケーションの実行に異常が生じると、反映させた前記第１仮想マシンの実行イメージを用いて前記第２仮想マシンの実行を開始する、請求項１から６のいずれか一項に記載のシステム。
【請求項８】
前記第２ホストコンピュータは、
前記冗長化動作モードにおいて、前記第２アプリケーションを前記第１アプリケーションのスタンバイとして待機させている場合に、前記第１仮想マシンおよび前記第２仮想マシンの少なくともいずれか一方の上で動作するソフトウェアの更新が指示されると、前記第２仮想マシンの上で動作するソフトウェアを更新し、
前記ソフトウェアを更新した後に、前記マルチ動作モードに遷移し、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映する、請求項１から７のいずれか一項に記載のシステム。
【請求項９】
前記第１ホストコンピュータは、
前記第２ホストコンピュータが前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映した後に、前記冗長化動作モードにおいて、前記第１アプリケーションを前記第２アプリケーションのスタンバイとして待機させ、前記第２仮想マシンの実行イメージを前記第１仮想マシンの実行イメージに反映する、請求項８に記載のシステム。
【請求項１０】
前記冗長化動作モードにおいて、前記第１仮想マシン上で前記第１アプリケーションを実行するオペレーティングシステムおよび前記第２仮想マシン上で前記第２アプリケーションを実行するオペレーティングシステムのうちのいずれか一方のみに対して、外部からアクセス可能なネットワーク設定を割り当て、
前記マルチ動作モードにおいて、前記第１仮想マシン上で前記第１アプリケーションを実行するオペレーティングシステムおよび前記第２仮想マシン上で前記第２アプリケーションを実行するオペレーティングシステムのそれぞれに対して、外部からアクセス可能な異なるネットワーク設定を割り当てる、請求項１から９のいずれか一項に記載のシステム。
【請求項１１】
第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、を備えたシステムにおける、前記第２ホストコンピュータが、
冗長化動作モードにおいて、前記第２仮想マシンの実行を停止させた状態で、前記第１仮想マシンの実行イメージを前記第２仮想マシンの実行イメージに反映することと、
マルチ動作モードにおいて、前記第２仮想マシンを前記第１仮想マシンと並列に実行させた状態で、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映することと、を含む方法。
【請求項１２】
第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、を備えたシステムにおける、前記第２ホストコンピュータに実行されて、前記第２ホストコンピュータに、
冗長化動作モードにおいて、前記第２仮想マシンの実行を停止させた状態で、前記第１仮想マシンの実行イメージを前記第２仮想マシンの実行イメージに反映させ、
マルチ動作モードにおいて、前記第２仮想マシンを前記第１仮想マシンと並列に実行させた状態で、前記第１アプリケーションの内部状態を前記第２アプリケーションの内部状態に反映させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可用性のシステム、方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、継続して稼働できる能力（可用性）が求められるシステムにおいて、ハードウェア故障による非計画的なサービス停止のリスクに対応するため、冗長化システムやマルチサーバ構成のシステムが用いられてきた。また、制御対象に影響を与えることなくシステムプログラムを変更できる二重化制御用計算機システムも知られている。（例えば、特許文献１参照）。
特許文献１  特開平１１−００３２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来の技術によれば、高度にカスタマイズされた専用のハードウェアと専用のオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を用いることによって、ソフトウェアの更新作業等の計画的なメンテナンス作業中も、システムを止めることなく連続したサービスを実現している。しかしながら、専用のシステムを用いることなく、ハードウェア故障に対する可用性やメンテナンスに対する可用性を実現することが望まれている。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明の第１の態様においては、システムを提供する。システムは、第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータを備えてよい。システムは、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータを備えてよい。第２ホストコンピュータは、冗長化動作モードにおいて、第２仮想マシンの実行を停止させた状態で、第１仮想マシンの実行イメージを第２仮想マシンの実行イメージに反映してよい。第２ホストコンピュータは、マルチ動作モードにおいて、第２仮想マシンを第１仮想マシンと並列に実行させた状態で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映してよい。
【０００５】
第２ホストコンピュータは、冗長化動作モードにおいて、第１仮想マシンの実行イメージを複製して、第２仮想マシンの実行イメージに反映してよい。
【０００６】
第１ホストコンピュータは、第１仮想マシンを実行する仮想化環境を備えた第１プラットフォームを実行してよい。第２ホストコンピュータは、第２仮想マシンを実行する仮想化環境を備えた第２プラットフォームを実行してよい。第２ホストコンピュータは、冗長化動作モードにおいて、第２プラットフォーム上で、第１仮想マシンの実行イメージを第２仮想マシンの実行イメージに反映してよい。
【０００７】
第２ホストコンピュータは、マルチ動作モードにおいて、第２アプリケーション上で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映してよい。
【０００８】
第２ホストコンピュータは、マルチ動作モードにおいて、第２プラットフォーム上で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映してよい。
【０００９】
第１ホストコンピュータは、第１アプリケーションのコンテキストを第１アプリケーションから第１プラットフォームへセーブし、第１アプリケーションのコンテキストを第１プラットフォームから第２プラットフォームへ転送してよい。第２ホストコンピュータは、転送された第１アプリケーションのコンテキストを第２プラットフォームから第２アプリケーションへリストアしてよい。
【００１０】
第２ホストコンピュータは、冗長化動作モードにおいて、第２アプリケーションを第１アプリケーションのスタンバイとして待機させている場合に、第１アプリケーションの実行に異常が生じると、反映させた第１仮想マシンの実行イメージを用いて第２仮想マシンの実行を開始してよい。
【００１１】
第２ホストコンピュータは、冗長化動作モードにおいて、第２アプリケーションを第１アプリケーションのスタンバイとして待機させている場合に、第１仮想マシンおよび第２仮想マシンの少なくともいずれか一方の上で動作するソフトウェアの更新が指示されると、第２仮想マシンの上で動作するソフトウェアを更新してよい。第２ホストコンピュータは、ソフトウェアを更新した後に、マルチ動作モードに遷移し、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映してよい。
【００１２】
第１ホストコンピュータは、第２ホストコンピュータが第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映した後に、冗長化動作モードにおいて、第１アプリケーションを第２アプリケーションのスタンバイとして待機させ、第２仮想マシンの実行イメージを第１仮想マシンの実行イメージに反映してよい。
【００１３】
冗長化動作モードにおいて、第１仮想マシン上で第１アプリケーションを実行するオペレーティングシステムおよび第２仮想マシン上で第２アプリケーションを実行するオペレーティングシステムのうちのいずれか一方のみに対して、外部からアクセス可能なネットワーク設定を割り当て、マルチ動作モードにおいて、第１仮想マシン上で第１アプリケーションを実行するオペレーティングシステムおよび第２仮想マシン上で第２アプリケーションを実行するオペレーティングシステムのそれぞれに対して、外部からアクセス可能な異なるネットワーク設定を割り当ててよい。
【００１４】
本発明の第２の態様においては、方法を提供する。方法は、第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、を備えたシステムにおける、第２ホストコンピュータが、冗長化動作モードにおいて、第２仮想マシンの実行を停止させた状態で、第１仮想マシンの実行イメージを第２仮想マシンの実行イメージに反映することを含んでよい。方法は、第２ホストコンピュータが、マルチ動作モードにおいて、第２仮想マシンを第１仮想マシンと並列に実行させた状態で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映することを含んでよい。
【００１５】
本発明の第３の態様においては、プログラムを提供する。プログラムは、第１アプリケーションを動作させるための第１仮想マシンを実行する第１ホストコンピュータと、第２アプリケーションを動作させるための第２仮想マシンを実行する第２ホストコンピュータと、を備えたシステムにおける、第２ホストコンピュータにより実行されてよい。プログラムは、第２ホストコンピュータに、冗長化動作モードにおいて、第２仮想マシンの実行を停止させた状態で、第１仮想マシンの実行イメージを第２仮想マシンの実行イメージに反映させてよい。プログラムは、第２ホストコンピュータに、マルチ動作モードにおいて、第２仮想マシンを第１仮想マシンと並列に実行させた状態で、第１アプリケーションの内部状態を第２アプリケーションの内部状態に反映させてよい。
【００１６】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係るシステム１０を示す。
【図２】本実施形態に係る第１ホストコンピュータ１１０および第２ホストコンピュータ１３０の動作状態の遷移を示す。
【図３】本実施形態に係るシステム１０におけるハードウェア故障に対する可用性を示すフローである。
【図４】本実施形態に係るシステム１０におけるメンテナンスに対する可用性を示すフローである。
【図５】本実施形態の変形例に係るシステム１０を示す。
【図６】本発明の複数の態様が全体的または部分的に具現化されてよいコンピュータ２２００の例を示す。
【発明を実施するための形態】
【００１８】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１９】
図１は、本実施形態に係るシステム１０を示す。本実施形態に係るシステム１０は、管理ツール１５０による制御のもと、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０を用いて、ハードウェア故障やメンテナンス作業に対してもシステムを止めることなく継続したサービスをクライアント１６０に提供する。本実施形態に係るシステム１０は、例えば、プロセス制御システムにおけるＳｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ（ＳＣＡＤＡ）システム、プラント情報管理システム、Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ（ＤＣＳ）、通信ゲートウェイシステム（ＯＬＥ  ｆｏｒ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ（ＯＰＣ）サーバ等）、および運転効率向上支援システム等、様々なシステムへ適用可能である。一例として、本実施形態に係るシステム１０を、プロセス制御システムに適用する場合、プロセス上の各種データを収集してプロセスに対してコマンドを送信する監視制御ステーション等を、本実施形態に係るシステム１０の第１ホストコンピュータ１１０および第２ホストコンピュータ１３０により構築して可用性を持たせることによって、連続的なプロセスの制御や監視を実現することができる。これによって、例えば、監視制御ステーションは、クライアント１６０に対して、サーバ故障時やメンテナンス時においてもシステムを止めることなく各種サービスを提供することが可能となる。システム１０は、第１ホストコンピュータ１１０、第２ホストコンピュータ１３０、管理ツール１５０、クライアント１６０、制御網１７０、およびネットワーク１８０を備える。なお、本図においては、ホストコンピュータが２台である場合を一例として示す。しかしながら、ホストコンピュータは２台に限定されず、３台以上であってもよい。また、本図においては、制御網１７０とネットワーク１８０とが独立して設けられている場合を一例として示す。しかしながら、制御網１７０とネットワーク１８０とは一体化されていてもよい。
【００２０】
第１ホストコンピュータ１１０は、ＰＣ（パーソナルコンピュータ）、タブレット型コンピュータ、スマートフォン、ワークステーション、サーバコンピュータ、または汎用コンピュータ等のコンピュータであってよく、複数のコンピュータが接続されたコンピュータシステムであってもよい。第１ホストコンピュータ１１０は、第１ホストコンピュータ１１０上にインストールされた第１ホストオペレーティングシステム１１２を実行し、第１ホストオペレーティングシステム１１２上で第１プラットフォーム１１４を実行する。そして、第１ホストコンピュータ１１０は、第１プラットフォーム１１４の仮想化機能により第１仮想マシン１２０を実行し、第１仮想マシン１２０上で、第１ゲストオペレーティングシステム１２２および第１アプリケーション１２４を実行する。
【００２１】
第１ホストオペレーティングシステム１１２は、第１ホストコンピュータ１１０上にインストールされたオペレーティングシステムであり、仮想化環境を動作させる基盤となるオペレーティングシステムである。
【００２２】
第１プラットフォーム１１４は、第１ホストコンピュータ１１０において、第１ホストオペレーティングシステム１１２上で実行され、仮想マシンを実行する仮想化環境を備える。第１プラットフォーム１１４は、第１ゲストオペレーティングシステム１２２や第１アプリケーション１２４に非依存の汎用のプラットフォームソフトウェアにより実現される。本実施形態において、第１プラットフォーム１１４は、仮想化管理機能および冗長化管理機能を有する。
【００２３】
第１プラットフォーム１１４は、仮想化管理機能として、第１ゲストオペレーティングシステム１２２に仮想ハードウェア環境を提供する仮想化機能を有する。
【００２４】
第１プラットフォーム１１４は、冗長化管理機能として、ホストコンピュータ間のゲストオペレーティングシステムの仮想化環境を同一に保つ等値化機能を有する。また、第１プラットフォーム１１４は、冗長化管理機能として、第１ホストコンピュータ１１０の動作状態を管理する状態管理機能を有する。また、第１プラットフォーム１１４は、冗長化管理機能として、第１ホストコンピュータ１１０の動作状態を切替える状態切替機能を有する。また、第１プラットフォーム１１４は、冗長化管理機能として、管理ツール１５０からのコンフィギュレーション要求に従い、第１ゲストオペレーティングシステム１２２のネットワーク設定（ＩＰアドレス設定やルーティング設定等）を行って第１ゲストオペレーティングシステム１２２の動作環境を設定するコンフィギュレーション機能を有する。また、第１プラットフォーム１１４は、冗長化管理機能として、第１アプリケーション１２４との連携を行うアプリケーションＩ／Ｆ機能を有する。なお、第１プラットフォーム１１４は、第１ゲストオペレーティングシステム１２２の動作環境を設定する手段の一例として、Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＤＨＣＰ）機能を用いてもよい。例えば、第１プラットフォーム１１４は、第１ホストオペレーティングシステム１１２側のＤＨＣＰサーバ機能に、第１ゲストオペレーティングシステム１２２環境のネットワーク設定を行い、第１ゲストオペレーティングシステム１２２環境のＤＨＣＰクライアント機能により設定値を取得させて第１ゲストオペレーティングシステム１２２の動作環境を設定することができる。
【００２５】
第１仮想マシン１２０は、第１ホストコンピュータ１１０上で第１プラットフォーム１１４の仮想化機能により実行される仮想的なマシンであり、その上で第１ゲストオペレーティングシステム１２２および第１アプリケーション１２４を動作させる。
【００２６】
第１ゲストオペレーティングシステム１２２は、第１仮想マシン１２０上で実行されるオペレーティングシステムである。第１アプリケーション１２４は、第１ゲストオペレーティングシステム上で実行されるプログラムである。第１アプリケーション１２４は、クライアント１６０からのリクエストに応じて、様々なシステムに対応する各種サービスをクライアント１６０へ提供する。
【００２７】
第２ホストコンピュータ１３０は、第１ホストコンピュータ１１０と同様の態様であり、第２ホストコンピュータ１３０上にインストールされた第２ホストオペレーティングシステム１３２を実行し、第２ホストオペレーティングシステム１３２上で第２プラットフォーム１３４を実行する。そして、第２ホストコンピュータ１３０は、第２プラットフォーム１３４の仮想化機能により第２仮想マシン１４０を実行し、第２仮想マシン１４０上で、第２ゲストオペレーティングシステム１４２および第２アプリケーション１４４を実行する。
【００２８】
ここで、第２ホストオペレーティングシステム１３２は第１ホストオペレーティングシステム１１２、第２プラットフォーム１３４は第１プラットフォーム１１４、第２仮想マシン１４０は第１仮想マシン１２０、第２ゲストオペレーティングシステム１４２は第１ゲストオペレーティングシステム１２２、第２アプリケーション１４４は第１アプリケーション１２４とそれぞれ同様であるため、説明を省略する。
【００２９】
管理ツール１５０は、ネットワーク１８０を介して、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０に接続されている。管理ツール１５０は、第１ホストオペレーティングシステム１１２、第２ホストオペレーティングシステム１３２、第１ゲストオペレーティングシステム１２２、および第２ゲストオペレーティングシステム１４２のコンフィギュレーションを行うコンフィギュレーション機能と、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０の動作状態を指示する指示機能を有する。また、管理ツール１５０は、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０の動作状態を表示して監視する状態監視機能を有する。
【００３０】
クライアント１６０は、例えば、ヒューマンマシンインタフェースを有するヒューマンインタフェースステーション（ＨＩＳ）等であってよい。クライアント１６０は、ネットワーク１８０を介して第１ホストコンピュータ１１０および第２ホストコンピュータ１３０に接続されている。クライアント１６０は、後述するアクティブ状態にあるホストコンピュータ上で実行されるゲストオペレーティングシステムにアサインされた仮想ＩＰアドレスに対してアクセスし、アクティブ状態にあるホストコンピュータ上で実行されるゲストオペレーティングシステムとの間で通信を行って、各種サービスの提供を受ける。
【００３１】
制御網１７０は、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０を接続し、ホストコンピュータ間での制御情報を伝達する。
【００３２】
ネットワーク１８０は、第１ホストコンピュータ１１０、第２ホストコンピュータ１３０、管理ツール１５０、およびクライアント１６０を接続する。ネットワーク１８０は、例えば、イーサネット（登録商標）等であってよい。
【００３３】
図２は、本実施形態に係る第１ホストコンピュータ１１０および第２ホストコンピュータ１３０の動作状態の遷移を示す。第１ホストコンピュータ１１０および第２ホストコンピュータ１３０は、動作状態の遷移が同様であるため、本図においては、一例として一方の第１ホストコンピュータ１１０のみを例に挙げて動作状態の遷移を説明する。第１ホストコンピュータ１１０は、初期化状態２００、アクティブ状態２１０、スタンバイ移行状態２２０、スタンバイ状態２３０、セカンダリ移行状態２４０、セカンダリ状態２５０、メンテナンス状態２６０、およびシャットダウン状態２７０の間で動作状態を遷移する。
【００３４】
第１ホストコンピュータ１１０は、電源が投入されると初期化状態２００で起動する。初期化状態２００において、第１ホストコンピュータ１１０は、自身のネットワーク設定を初期化する。
【００３５】
初期化状態２００においてアクティブ起動指示を受けると、第１ホストコンピュータ１１０は、アクティブ状態２１０に遷移する。アクティブ状態２１０に遷移した第１ホストコンピュータ１１０は、自身の上で実行される第１アプリケーション１２４により、クライアント１６０に各種サービスを提供する。
【００３６】
初期化状態２００においてスタンバイ起動指示を受けると、第１ホストコンピュータ１１０は、スタンバイ移行状態２２０に遷移する。スタンバイ移行状態２２０に遷移した第１ホストコンピュータ１１０は、アクティブ状態２１０にある他のホストコンピュータとの間で仮想マシンの実行イメージの等値化を行う。これについては後述する。
【００３７】
スタンバイ移行状態２２０において仮想マシンの実行イメージの等値化が完了すると、第１ホストコンピュータ１１０は、スタンバイ状態２３０に遷移する。スタンバイ状態２３０に遷移した第１ホストコンピュータ１１０は、アクティブ状態２１０にある他のホストコンピュータとの間で仮想マシンの実行イメージの等値化のみを継続し、それ以外の他の仮想環境の動作を停止させる。そして、第１ホストコンピュータ１１０は、自身の上で実行される第１アプリケーション１２４を、アクティブ状態２１０にある他のホストコンピュータ上で実行されるアプリケーションのスタンバイとして待機させる。また、第１ホストコンピュータ１１０は、スタンバイ状態２３０にある間、アクティブ状態２１０にある他のホストコンピュータの健全性を診断する。なお、スタンバイ状態２３０にあるホストコンピュータはクライアント１６０からは認識されない。
【００３８】
ここで、一方のホストコンピュータがアクティブ状態２１０で動作し、他方のホストコンピュータがスタンバイ移行状態２２０またはスタンバイ状態２３０で動作するモードを、冗長化動作モードと定義する。本実施形態に係るシステム１０は、通常運転時には、一方のホストコンピュータがアクティブ状態２１０で動作し、他方のホストコンピュータがスタンバイ状態２３０で動作する冗長化動作モードで、クライアント１６０に各種サービスを提供する。すなわち、例えば、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がスタンバイ状態２３０で動作する場合、システム１０は、第２アプリケーション１４４を第１アプリケーション１２４のスタンバイとして待機させた状態で、第１アプリケーション１２４からクライアント１６０に各種サービスを提供する。これに代えて、第２ホストコンピュータ１３０がアクティブ状態２１０、第１ホストコンピュータ１１０がスタンバイ状態２３０で動作してもよい。この場合、システム１０は、第１アプリケーション１２４を第２アプリケーション１４４のスタンバイとして待機させた状態で、第２アプリケーション１４４からクライアント１６０に各種サービスを提供する。冗長化動作モードにおいて、第１仮想マシン１２０上で第１アプリケーション１２４を実行する第１ゲストオペレーティングシステム１２２および第２仮想マシン１４０上で第２アプリケーション１４４を実行する第２ゲストオペレーティングシステム１４２のうちのいずれか一方のみに対して、外部からアクセス可能なネットワーク設定を割り当ててよい。すなわち、冗長化動作モードにおいては、ホストコンピュータが複数のハードウェアによって構成されているものの、クライアント１６０からは、スタンバイ状態にあるホストコンピュータは認識されておらず、ホストコンピュータが１台の装置（アドレスやホスト名等が１つ）であるものとして認識されてよい。なお、冗長化動作モードにおいてアクティブ状態２１０およびスタンバイ状態２３０のホストコンピュータの両者の再起動が行われた場合には、再起動後に両者間でネゴシエーションを行い、起動モードを決定する。この場合、例えば、前回アクティブ状態２１０にあった一方をアクティブ状態２１０、他方をスタンバイ状態２３０としてもよい。
【００３９】
初期化状態２００においてセカンダリ起動指示を受けると、第１ホストコンピュータ１１０は、セカンダリ移行状態２４０に遷移する。セカンダリ移行状態２４０に遷移した第１ホストコンピュータ１１０は、アクティブ状態２１０にある他のホストコンピュータとの間でアプリケーションの内部状態の等値化を行う。
【００４０】
セカンダリ移行状態２４０においてアプリケーションの内部状態の等値化が完了すると、第１ホストコンピュータ１１０は、アプリケーションの内部状態の等値化が完了した旨を第１プラットフォーム１１４に通知し、セカンダリ状態２５０に遷移する。セカンダリ状態２５０に遷移した第１ホストコンピュータ１１０は、アクティブ状態２１０にある他のホストコンピュータのゲストオペレーティングシステムとは異なる仮想ＩＰアドレスが第１ゲストオペレーティングシステム１２２にアサインされ、アクティブ状態２１０にある他のホストコンピュータとは独立した２台目のシステムとして第１ゲストオペレーティングシステム１２２および第１アプリケーション１２４を実行する。また、第１ホストコンピュータ１１０は、セカンダリ状態２５０にある間においても、スタンバイ状態２３０にある間と同様、アクティブ状態２１０にある他のホストコンピュータの健全性を診断する。
【００４１】
ここで、一方のホストコンピュータがアクティブ状態２１０で動作し、他方のホストコンピュータがセカンダリ移行状態２４０またはセカンダリ状態２５０で動作するモードを、マルチ動作モードと定義する。本実施形態に係るシステム１０は、ソフトウェアの更新に伴って、一方のホストコンピュータがアクティブ状態２１０で動作し、他方のホストコンピュータがセカンダリ状態２５０で動作するマルチ動作モードで、クライアント１６０に各種サービスを提供する。すなわち、例えば、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がセカンダリ状態２５０で動作する場合、システム１０は、第１アプリケーション１２４および第２アプリケーション１４４をそれぞれ独立して実行させた状態で、第１アプリケーション１２４からクライアント１６０に各種サービスを提供する。これに代えて、第２ホストコンピュータ１３０がアクティブ状態２１０、第１ホストコンピュータ１１０がセカンダリ状態２５０で動作してもよい。この場合、システム１０は、第１アプリケーション１２４および第２アプリケーション１４４をそれぞれ独立して実行させた状態で、第２アプリケーション１４４からクライアント１６０に各種サービスを提供する。マルチ動作モードにおいて、第１仮想マシン１２０上で第１アプリケーション１２４を実行する第１ゲストオペレーティングシステム１２２および第２仮想マシン１４０上で第２アプリケーション１４４を実行する第２ゲストオペレーティングシステム１４２のそれぞれに対して、外部からアクセス可能な異なるネットワーク設定を割り当ててよい。すなわち、マルチ動作モードにおいては、クライアント１６０からは、ホストコンピュータを構成する複数のハードウェアが、独立した属性（異なるアドレスやホスト名）を持つものとして認識されてよい。また、マルチ動作モードにおいては、アクティブ状態２１０にあるホストコンピュータとセカンダリ状態２５０にあるホストコンピュータとが独立して動作するため、それぞれの上で動作するゲストオペレーションシステムおよびアプリケーションのレビジョンが異なっていてもよい。
【００４２】
第１ホストコンピュータ１１０は、スタンバイ状態２３０またはセカンダリ状態２５０において、スイッチオーバ指示を受ける、または、アクティブ状態２１０にある他のホストコンピュータがダウンしたことを検知すると、アクティブ状態２１０に遷移する。なお、ここで、スイッチオーバとは、アクティブ状態２１０のホストコンピュータを再起動させ、スタンバイ状態２３０またはセカンダリ状態２５０のホストコンピュータをアクティブ状態２１０に切替える処理をいう。
【００４３】
初期化状態２００においてメンテナンス起動指示を受けると、第１ホストコンピュータ１１０は、メンテナンス状態２６０に遷移する。メンテナンス状態２６０に遷移した第１ホストコンピュータ１１０は、第１ゲストオペレーティングシステム１２２や第１アプリケーション１２４等の第１仮想マシン１２０上で動作するソフトウェアの更新を行う。なお、通常は、ホストコンピュータの状態に関わらず、ゲストオペレーティングシステムを起動するとアプリケーションも起動する。そうすると、一方がアクティブ状態２１０にあり他方がメンテナンス状態２６０にある場合、２つのアプリケーションが同時に動作することとなり、処理が重複してしまう。したがって、このメンテナンス状態２６０においては、ゲストオペレーティングシステムをネットワーク１８０に接続しない等することにより、メンテナンス状態２６０にあるホストコンピュータ上で動作するアプリケーションがクライアント１６０に影響を与えないようにするとよい。
【００４４】
アクティブ状態２１０、スタンバイ状態２３０、セカンダリ状態２５０、およびメンテナンス状態２６０においてシャットダウン指示を受けると、第１ホストコンピュータ１１０は、シャットダウン状態２７０に遷移する。また、アクティブ状態２１０、スタンバイ状態２３０、セカンダリ状態２５０、およびメンテナンス状態２６０において再起動指示を受けると、第１ホストコンピュータ１１０は、シャットダウン状態２７０を経て、初期化状態２００に遷移する。
【００４５】
図３は、本実施形態に係るシステム１０におけるハードウェア故障に対する可用性を示すフローである。本図においては、最初に第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がスタンバイ状態２３０となる場合を一例として示す。しかしながら、最初に第２ホストコンピュータ１３０がアクティブ状態２１０、第１ホストコンピュータ１１０がスタンバイ状態２３０となるようにシステム１０を動作させてもよい。ステップ３１０において、管理ツール１５０は、第１ホストコンピュータ１１０および第２ホストコンピュータ１３０の初期設定を行う。管理ツール１５０は、第１ホストコンピュータ１１０に対してアクティブ起動指示を出力する。また、管理ツール１５０は、第２ホストコンピュータ１３０に対してスタンバイ起動指示を出力する。
【００４６】
アクティブ起動指示を受けた第１ホストコンピュータ１１０の第１プラットフォーム１１４は、第１ゲストオペレーティングシステム１２２に対してＮｅｔＡｄｄｒ−Ａをアサインする。ここで、ＮｅｔＡｄｄｒ−Ａとは、アクティブ状態２１０にあるホストコンピュータ上で実行されるゲストオペレーティングシステムにアサインされる仮想ＩＰアドレスであり、あらかじめ管理ツール１５０で設定され、プラットフォーム上に保存されたものである。クライアント１６０はこの仮想ＩＰアドレスに対してアクセスを行い、各種サービスの提供を受ける。これにより、第１プラットフォーム１１４は、第１ホストコンピュータ１１０をアクティブ状態２１０に遷移させる。
【００４７】
また、スタンバイ起動指示を受けた第２ホストコンピュータ１３０の第２プラットフォーム１３４は、第２仮想マシン１４０の実行を停止させて第２ホストコンピュータ１３０をスタンバイ移行状態２２０に遷移させる。これにより、システム１０は、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がスタンバイ移行状態２２０である冗長化動作モードで動作する。
【００４８】
そして、ステップ３２０において、第２ホストコンピュータ１３０は、冗長化動作モードにおいて、第２仮想マシン１４０の実行を停止させた状態で、第１仮想マシン１２０の実行イメージを第２仮想マシン１４０の実行イメージに反映する。第２ホストコンピュータ１３０は、冗長化動作モードにおいて、第１仮想マシン１２０の実行イメージを複製して、第２仮想マシン１４０の実行イメージに反映してよい。より具体的には、第２ホストコンピュータ１３０は、冗長化動作モードにおいて、第２プラットフォーム１３４上で（第２プラットフォーム１３４の等値化機能を実行することにより）第１プラットフォーム１１４との間でライブマイグレーションを行って、第１仮想マシン１２０の実行イメージを第２仮想マシン１４０の実行イメージに反映してよい。以下、これについて詳細に述べる。
【００４９】
ライブマイグレーションを行うにあたって、第１プラットフォーム１１４は、最初に、動作中のアプリケーションが利用するメモリの内容や第１仮想マシン１２０が利用する仮想ディスクの情報等を示す第１仮想マシン１２０の実行イメージの全体を第２プラットフォーム１３４へ転送する。次に、第１プラットフォーム１１４は、転送中に変更された第１仮想マシン１２０の実行イメージの変更分のみを第２プラットフォーム１３４へ転送する。その後、第１プラットフォーム１１４は、第１仮想マシン１２０を一時的に停止させて第１仮想マシン１２０の実行イメージの変更を一時的に禁止する。そして、第１プラットフォーム１１４は、第１仮想マシン１２０が停止している間に、残りの変更された第１仮想マシン１２０の実行イメージの変更分全てを第２プラットフォーム１３４へ転送する。これにより、第２プラットフォーム１３４は、第１仮想マシン１２０の実行イメージを複製して、これを第２仮想マシン１４０の実行イメージに反映することができる。そして、第１プラットフォーム１１４は、第１仮想マシン１２０の動作を再開させる。
【００５０】
第２プラットフォーム１３４は、仮想マシンの実行イメージの等値化が完了すると、第２ホストコンピュータ１３０をスタンバイ状態２３０に遷移させる。そして、システム１０は、通常運転時に第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がスタンバイ状態２３０である冗長化動作モードにおいて、第１アプリケーション１２４からクライアント１６０に各種サービスを提供する。その間、第２ホストコンピュータ１３０は、第２アプリケーション１４４を第１アプリケーション１２４のスタンバイとして待機させる。
【００５１】
ステップ３３０において、第２ホストコンピュータ１３０の第２プラットフォーム１３４は、通常運転時に第２アプリケーション１４４が第１アプリケーション１２４のスタンバイとして動作している間においても、第１仮想マシン１２０の実行イメージを第２仮想マシン１４０の実行イメージに反映し続ける。
【００５２】
ここで、ステップ３４０において、アクティブ状態２１０で動作していた第１ホストコンピュータ１１０にハードウェア故障が生じたとする。
【００５３】
第２ホストコンピュータ１３０は、第２アプリケーション１４４を第１アプリケーション１２４のスタンバイとして待機させている間、常にアクティブ状態２１０にある第１ホストコンピュータ１１０の健全性を診断している。そして、ステップ３５０において、第２ホストコンピュータ１３０は、第２アプリケーション１４４を第１アプリケーション１２４のスタンバイとして待機させている場合に、第１アプリケーション１２４の実行に異常が生じると、アクティブ状態２１０に遷移し、反映させた第１仮想マシン１２０の実行イメージを用いて第２仮想マシン１４０の実行を開始する。そして、第２ホストコンピュータ１３０は、第２アプリケーション１４４により、クライアント１６０への各種サービスの提供を継続する。この際、第１ホストコンピュータ１１０の仮想環境の状態（仮想マシンおよびゲストオペレーティングシステム環境）が全て第２ホストコンピュータ１３０に引き継がれる。そのため、このような場合においても、クライアント１６０は、ホストコンピュータの切替えを意識する必要がなく、サービスの提供を継続して受けることができる。そして、システム１０は、第２ホストコンピュータ１３０、１台によるシングル動作モードで動作する。
【００５４】
ステップ３６０において、第１ホストコンピュータが修理や自己回復等により復旧すると、第１プラットフォーム１１４は、第１ホストコンピュータ１１０を初期化状態２００に遷移させる。
【００５５】
そして、ステップ３７０において、第１ホストコンピュータ１１０は、アクティブ状態２１０にある第２ホストコンピュータ１３０との間でネゴシエーションを行い、起動モードを決定する。具体的には、初期化状態２００に遷移した第１ホストコンピュータ１１０が、アクティブ状態２１０にある第２ホストコンピュータ１３０に対してネゴシエーション要求を行い、ネゴシエーション要求を受けた第２ホストコンピュータ１３０が、第１ホストコンピュータ１１０に対して、スタンバイ起動指示を出力する。スタンバイ起動指示を受けた第１ホストコンピュータ１１０の第１プラットフォーム１１４は、第１ホストコンピュータ１１０をスタンバイ移行状態２２０に遷移させ、ステップ３８０において、ステップ３２０と同様の手法により、第２仮想マシン１４０の実行イメージを第１仮想マシン１２０の実行イメージに反映する。
【００５６】
第１ホストコンピュータ１１０の第１プラットフォーム１１４は、仮想マシンの実行イメージの等値化が完了すると、第１ホストコンピュータ１１０をスタンバイ状態２３０に遷移させる。そして、システム１０は、第２ホストコンピュータ１３０がアクティブ状態２１０、第１ホストコンピュータ１１０がスタンバイ状態２３０である冗長化動作モードにおいて、第２アプリケーション１４４からクライアント１６０に各種サービスを提供する。その間、第１ホストコンピュータ１１０は、第１アプリケーション１２４を第２アプリケーション１４４のスタンバイとして待機させる。
【００５７】
このように、本実施形態に係るシステム１０によれば、アクティブ状態２１０のホストコンピュータにハードウェア故障等が発生した場合であっても、スタンバイ状態２３０のホストコンピュータがアクティブ状態２１０の仮想環境を引継いでアクティブ状態２１０に遷移するので、クライアント１６０へのサービスの提供を継続することができる。また、ハードウェア故障に対する可用性を、専用のシステムを用いることなく、オペレーティングシステムやアプリケーションに非依存のプラットフォームで実現することができる。
【００５８】
図４は、本実施形態に係るシステム１０におけるメンテナンスに対する可用性を示すフローである。本図においては、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がスタンバイ状態２３０である冗長化動作モードにおいて、第２仮想マシン１４０上で動作するソフトウェア（第２ゲストオペレーティングシステム１４２や第２アプリケーション１４４）を更新する場合を一例として説明する。なお、ここで、ソフトウェアの更新とは、ソフトウェアのレビジョンアップやセキュリティパッチの適用等を含む。
【００５９】
ステップ４１０において、管理ツール１５０は、第１仮想マシン１２０および第２仮想マシン１４０の少なくともいずれか一方の上で動作するソフトウェアを更新する必要がある場合に、スタンバイ状態２３０にある第２ホストコンピュータ１３０に対して、再起動指示およびメンテナンス起動指示を出力する。
【００６０】
再起動指示およびメンテナンス起動指示を受けた第２ホストコンピュータ１３０の第２プラットフォーム１３４は、ステップ４２０において、第２ホストコンピュータ１３０を再起動させ、メンテナンス状態２６０に遷移させる。
【００６１】
そして、ステップ４３０において、第２ホストコンピュータ１３０は、第２仮想マシン１４０上で動作するソフトウェアを更新する。
【００６２】
第２ホストコンピュータ１３０におけるソフトウェアの更新が終了すると、ステップ４４０において、管理ツール１５０は、第２ホストコンピュータ１３０に対して、再起動指示およびセカンダリ起動指示を出力する。
【００６３】
再起動指示およびセカンダリ起動指示を受けた第２ホストコンピュータ１３０の第２プラットフォーム１３４は、ステップ４５０において、第２ホストコンピュータ１３０を再起動させる。また、第２プラットフォーム１３４は、第２ゲストオペレーティングシステム１４２に対してＮｅｔＡｄｄｒ−ＡおよびＮｅｔＡｄｄｒ−Ｓの両方をアサインするとともに、ＮｅｔＡｄｄｒ−Ａをディスエイブルにし、第２ホストコンピュータ１３０をセカンダリ移行状態２４０に遷移させる。ここで、ＮｅｔＡｄｄｒ−Ｓとは、セカンダリ状態２５０にあるホストコンピュータ上で実行されるゲストオペレーティングシステムにアサインされる仮想ＩＰアドレスであり、アクティブ状態２１０にあるホストコンピュータ上で実行されるゲストオペレーティングシステムにアサインされる仮想ＩＰアドレスとは異なるアドレスである。このＮｅｔＡｄｄｒ−ＳもＮｅｔＡｄｄｒ−Ａと同様に、あらかじめ管理ツール１５０で設定され、プラットフォーム上に保存されたものである。これにより、システム１０は、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がセカンダリ移行状態２４０であるマルチ動作モードで動作する。この状態において、第２仮想マシン１４０は、第１仮想マシン１２０と並列に実行される。
【００６４】
そして、ステップ４６０において、第２ホストコンピュータ１３０は、マルチ動作モードにおいて、第２仮想マシン１４０を第１仮想マシンと並列に実行させた状態で、第１アプリケーション１２４の内部状態を第２アプリケーション１４４の内部状態に反映する。第１アプリケーション１２４および第２アプリケーション１４４は、アプリケーションの等値化機能を有する。アプリケーションの等値化機能とは、アプリケーションプログラムの制御データを引き継いで、それまで動作していたアプリケーションの動作状態を他のアプリケーションに反映する機能である。第２ホストコンピュータ１３０は、マルチ動作モードにおいて、第２アプリケーション１４４上で（第２アプリケーション１４４の等値化機能を実行することにより）、第１アプリケーション１２４の内部状態を第２アプリケーション１４４の内部状態に反映してよい。また、後述するように、第２ホストコンピュータ１３０は、マルチ動作モードにおいて、第２プラットフォーム１３４上で（第２プラットフォーム１３４の等値化機能を実行することにより）、第１アプリケーション１２４の内部状態を第２アプリケーション１４４の内部状態に反映してもよい。
【００６５】
アプリケーションの内部状態の等値化が完了すると、第２アプリケーション１４４は、内部状態の等値化が完了した旨を第２プラットフォーム１３４に通知する。そして、第２プラットフォーム１３４は、第２ホストコンピュータ１３０をセカンダリ状態２５０に遷移させる。
【００６６】
次に、ステップ４７０において、管理ツール１５０は、スイッチオーバ操作を行い、第２ホストコンピュータ１３０に対して、スイッチオーバ指示を出力し、第１ホストコンピュータ１１０に対して、再起動指示およびスタンバイ起動指示を出力する。
【００６７】
スイッチオーバ指示を受けた第２ホストコンピュータ１３０の第２プラットフォーム１３４は、第２ゲストオペレーティングシステムのネットワーク設定からＮｅｔＡｄｄｒ−Ｓを削除するとともに、ＮｅｔＡｄｄｒ−Ａをイネーブル（Ｅｎａｂｌｅ）にし、第２ホストコンピュータ１３０をアクティブ状態２１０に遷移させる。この場合、クライアント１６０は、スイッチオーバ操作により、アクティブ状態２１０にあった第１ホストコンピュータ１１０との通信が一時的に切れることになるが、セカンダリ状態２５０にあった第２ホストコンピュータ１３０がアクティブ状態２１０に切替わり、通信接続が復帰するため、システム１０から継続したサービスを受けることができる。
【００６８】
また、再起動指示およびスタンバイ起動指示を受けた第１ホストコンピュータ１１０の第１プラットフォーム１１４は、第１ホストコンピュータ１１０を再起動させ、スタンバイ移行状態２２０に遷移させる。
【００６９】
そして、ステップ４９０において、第１プラットフォーム１１４は、ステップ３２０やステップ３８０と同様の手法により、第２仮想マシン１４０の実行イメージを第１仮想マシン１２０の実行イメージに反映する。
【００７０】
第１ホストコンピュータ１１０の第１プラットフォーム１１４は、仮想マシンの実行イメージの等値化が完了すると、第１ホストコンピュータ１１０をスタンバイ状態２３０に遷移させる。そして、システム１０は、第２ホストコンピュータ１３０がアクティブ状態２１０、第１ホストコンピュータ１１０がスタンバイ状態２３０である冗長化動作モードにおいて、第２アプリケーション１４４からクライアント１６０に各種サービスを提供する。その間、第１ホストコンピュータ１１０は、第１アプリケーション１２４を第２アプリケーション１４４のスタンバイとして待機させる。この際、先に第２ホストコンピュータ１３０側で更新を行ったソフトウェアが第１ホストコンピュータ１１０側に複製されるため、第１ホストコンピュータ１１０側に対するソフトウェアの更新作業は不要となる。
【００７１】
このように、本実施形態に係るシステム１０によれば、冗長化動作モードにおいて、第２アプリケーション１４４が第１アプリケーション１２４のスタンバイとして動作している場合に、第１仮想マシン１２０および第２仮想マシン１４０の少なくともいずれか一方の上で動作するソフトウェアの更新が指示されると、第２仮想マシン１４０の上で動作するソフトウェアを更新し、ソフトウェアを更新した後に、マルチ動作モードに遷移し、第１アプリケーション１２４の内部状態を第２アプリケーション１４４の内部状態に反映する。そして、第１ホストコンピュータ１１０は、第２ホストコンピュータ１３０が第１アプリケーション１２４の内部状態を第２アプリケーション１４４の内部状態に反映した後に、冗長化動作モードにおいて、第１アプリケーション１２４を第２アプリケーション１４４のスタンバイとして待機させ、第２仮想マシン１４０の実行イメージを第１仮想マシン１２０の実行イメージに反映する。これにより、本実施形態に係るシステム１０によれば、ソフトウェアの更新が必要な場合であっても、クライアント１６０へのサービスの提供を継続することができる。また、本実施形態に係るシステム１０によれば、ソフトウェア更新に対する可用性を、専用のシステムを用いることなく、オペレーティングシステムやアプリケーションに非依存のプラットフォームで実現することができる。さらに、本実施形態に係るシステム１０によれば、１台のホストコンピュータに対してのみソフトウェアの更新作業を行えばよいため、保守作業の時間が短縮でき、保守性を大幅に向上させることができる。
【００７２】
図５は、本実施形態の変形例に係るシステム１０を示す。図５においては、図１と同じ機能および構成を有する部材に対して同じ符号を付すとともに、以下相違点を除き説明を省略する。本図において図１と異なる点は、第１アプリケーション１２４が第１コンテナ５１０上で動作し、第２アプリケーション１４４が第２コンテナ５３０上で動作する点である。
【００７３】
コンテナは、アプリケーションの分離された空間を提供する。コンテナによりアプリケーションの分離された空間を実現することで、１つのオペレーティングシステム環境でありながら、プロセスを分離することができる。そして、このコンテナの内容は、パッケージング、保存、および移動させることができる。本変形例において、第１コンテナ５１０は、第１アプリケーション１２４のコンテキスト全体をセーブおよびリストアする機能を持つ。また、第２コンテナ５３０は、第２アプリケーション１４４のコンテキスト全体をセーブおよびリストアする機能を持つ。そして、システム１０は、アクティブ状態２１０で動作するホストコンピュータのアプリケーションのコンテキストをセーブした後、コンテキストイメージをセカンダリ状態２５０で動作するホストコンピュータのアプリケーションにリストアする。
【００７４】
一例として、第１ホストコンピュータ１１０がアクティブ状態２１０、第２ホストコンピュータ１３０がセカンダリ状態２５０であるマルチ動作モードにおいて、アプリケーションの内部状態を等値化する際（例えば、図４のステップ４６０）に、本変形例を用いた場合について説明する。
【００７５】
このように、本変形例に係るシステム１０によれば、第１ホストコンピュータ１１０は、第１アプリケーション１２４のコンテキストを第１アプリケーション１２４から第１プラットフォーム１１４へセーブする。次に、第１アプリケーション１２４のコンテキストを第１プラットフォーム１１４から第２プラットフォーム１３４へ転送する。そして、第２ホストコンピュータ１３０は、転送された第１アプリケーション１２４のコンテキストを第２プラットフォーム１３４から第２アプリケーション１４４へリストアする。これにより、本変形例に係るシステム１０によれば、第１アプリケーション１２４および第２アプリケーション１４４に自身の内部状態を等値化する機能を設ける必要がない。また、アプリケーションの内部状態をアクティブ状態２１０のホストコンピュータからセカンダリ状態２５０のホストコンピュータへ矛盾なくコピーすることが容易となる。よって、本変形例に係るシステム１０によれば、完全にアプリケーションに非依存のプラットフォームにより、ハードウェア故障に対する可用性およびメンテナンスに対する可用性を実現することができる。
【００７６】
本発明の様々な実施形態は、フローチャートおよびブロック図を参照して記載されてよく、ここにおいてブロックは、（１）操作が実行されるプロセスの段階または（２）操作を実行する役割を持つ装置のセクションを表わしてよい。特定の段階およびセクションが、専用回路、コンピュータ可読媒体上に格納されるコンピュータ可読命令と共に供給されるプログラマブル回路、および／またはコンピュータ可読媒体上に格納されるコンピュータ可読命令と共に供給されるプロセッサによって実装されてよい。専用回路は、デジタルおよび／またはアナログハードウェア回路を含んでよく、集積回路（ＩＣ）および／またはディスクリート回路を含んでよい。プログラマブル回路は、論理ＡＮＤ、論理ＯＲ、論理ＸＯＲ、論理ＮＡＮＤ、論理ＮＯＲ、および他の論理操作、フリップフロップ、レジスタ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）等のようなメモリ要素等を含む、再構成可能なハードウェア回路を含んでよい。
【００７７】
コンピュータ可読媒体は、適切なデバイスによって実行される命令を格納可能な任意の有形なデバイスを含んでよく、その結果、そこに格納される命令を有するコンピュータ可読媒体は、フローチャートまたはブロック図で指定された操作を実行するための手段を作成すべく実行され得る命令を含む、製品を備えることになる。コンピュータ可読媒体の例としては、電子記憶媒体、磁気記憶媒体、光記憶媒体、電磁記憶媒体、半導体記憶媒体等が含まれてよい。コンピュータ可読媒体のより具体的な例としては、フロッピー（登録商標）ディスク、ディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、コンパクトディスクリードオンリメモリ（ＣＤ-ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（ＲＴＭ）ディスク、メモリスティック、集積回路カード等が含まれてよい。
【００７８】
コンピュータ可読命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ、ＪＡＶＡ（登録商標）、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語のような従来の手続型プログラミング言語を含む、１または複数のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかを含んでよい。
【００７９】
コンピュータ可読命令は、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサまたはプログラマブル回路に対し、ローカルにまたはローカルエリアネットワーク（ＬＡＮ）、インターネット等のようなワイドエリアネットワーク（ＷＡＮ）を介して提供され、フローチャートまたはブロック図で指定された操作を実行するための手段を作成すべく、コンピュータ可読命令を実行してよい。プロセッサの例としては、コンピュータプロセッサ、処理ユニット、マイクロプロセッサ、デジタル信号プロセッサ、コントローラ、マイクロコントローラ等を含む。
【００８０】
図６は、本発明の複数の態様が全体的または部分的に具現化されてよいコンピュータ２２００の例を示す。コンピュータ２２００にインストールされたプログラムは、コンピュータ２２００に、本発明の実施形態に係る装置に関連付けられる操作または当該装置の１または複数のセクションとして機能させることができ、または当該操作または当該１または複数のセクションを実行させることができ、および／またはコンピュータ２２００に、本発明の実施形態に係るプロセスまたは当該プロセスの段階を実行させることができる。そのようなプログラムは、コンピュータ２２００に、本明細書に記載のフローチャートおよびブロック図のブロックのうちのいくつかまたはすべてに関連付けられた特定の操作を実行させるべく、ＣＰＵ２２１２によって実行されてよい。
【００８１】
本実施形態によるコンピュータ２２００は、ＣＰＵ２２１２、ＲＡＭ２２１４、グラフィックコントローラ２２１６、およびディスプレイデバイス２２１８を含み、それらはホストコントローラ２２１０によって相互に接続されている。コンピュータ２２００はまた、通信インターフェイス２２２２、ハードディスクドライブ２２２４、ＤＶＤ−ＲＯＭドライブ２２２６、およびＩＣカードドライブのような入／出力ユニットを含み、それらは入／出力コントローラ２２２０を介してホストコントローラ２２１０に接続されている。コンピュータはまた、ＲＯＭ２２３０およびキーボード２２４２のようなレガシの入／出力ユニットを含み、それらは入／出力チップ２２４０を介して入／出力コントローラ２２２０に接続されている。
【００８２】
ＣＰＵ２２１２は、ＲＯＭ２２３０およびＲＡＭ２２１４内に格納されたプログラムに従い動作し、それにより各ユニットを制御する。グラフィックコントローラ２２１６は、ＲＡＭ２２１４内に提供されるフレームバッファ等またはそれ自体の中にＣＰＵ２２１２によって生成されたイメージデータを取得し、イメージデータがディスプレイデバイス２２１８上に表示されるようにする。
【００８３】
通信インターフェイス２２２２は、ネットワークを介して他の電子デバイスと通信する。ハードディスクドライブ２２２４は、コンピュータ２２００内のＣＰＵ２２１２によって使用されるプログラムおよびデータを格納する。ＤＶＤ−ＲＯＭドライブ２２２６は、プログラムまたはデータをＤＶＤ−ＲＯＭ２２０１から読み取り、ハードディスクドライブ２２２４にＲＡＭ２２１４を介してプログラムまたはデータを提供する。ＩＣカードドライブは、プログラムおよびデータをＩＣカードから読み取り、および／またはプログラムおよびデータをＩＣカードに書き込む。
【００８４】
ＲＯＭ２２３０はその中に、アクティブ化時にコンピュータ２２００によって実行されるブートプログラム等、および／またはコンピュータ２２００のハードウェアに依存するプログラムを格納する。入／出力チップ２２４０はまた、様々な入／出力ユニットをパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して、入／出力コントローラ２２２０に接続してよい。
【００８５】
プログラムが、ＤＶＤ−ＲＯＭ２２０１またはＩＣカードのようなコンピュータ可読媒体によって提供される。プログラムは、コンピュータ可読媒体から読み取られ、コンピュータ可読媒体の例でもあるハードディスクドライブ２２２４、ＲＡＭ２２１４、またはＲＯＭ２２３０にインストールされ、ＣＰＵ２２１２によって実行される。これらのプログラム内に記述される情報処理は、コンピュータ２２００に読み取られ、プログラムと、上記様々なタイプのハードウェアリソースとの間の連携をもたらす。装置または方法が、コンピュータ２２００の使用に従い情報の操作または処理を実現することによって構成されてよい。
【００８６】
例えば、通信がコンピュータ２２００および外部デバイス間で実行される場合、ＣＰＵ２２１２は、ＲＡＭ２２１４にロードされた通信プログラムを実行し、通信プログラムに記述された処理に基づいて、通信インターフェイス２２２２に対し、通信処理を命令してよい。通信インターフェイス２２２２は、ＣＰＵ２２１２の制御下、ＲＡＭ２２１４、ハードディスクドライブ２２２４、ＤＶＤ−ＲＯＭ２２０１、またはＩＣカードのような記録媒体内に提供される送信バッファ処理領域に格納された送信データを読み取り、読み取られた送信データをネットワークに送信し、またはネットワークから受信された受信データを記録媒体上に提供される受信バッファ処理領域等に書き込む。
【００８７】
また、ＣＰＵ２２１２は、ハードディスクドライブ２２２４、ＤＶＤ−ＲＯＭドライブ２２２６（ＤＶＤ−ＲＯＭ２２０１）、ＩＣカード等のような外部記録媒体に格納されたファイルまたはデータベースの全部または必要な部分がＲＡＭ２２１４に読み取られるようにし、ＲＡＭ２２１４上のデータに対し様々なタイプの処理を実行してよい。ＣＰＵ２２１２は次に、処理されたデータを外部記録媒体にライトバックする。
【００８８】
様々なタイプのプログラム、データ、テーブル、およびデータベースのような様々なタイプの情報が記録媒体に格納され、情報処理を受けてよい。ＣＰＵ２２１２は、ＲＡＭ２２１４から読み取られたデータに対し、本開示の随所に記載され、プログラムの命令シーケンスによって指定される様々なタイプの操作、情報処理、条件判断、条件分岐、無条件分岐、情報の検索／置換等を含む、様々なタイプの処理を実行してよく、結果をＲＡＭ２２１４に対しライトバックする。また、ＣＰＵ２２１２は、記録媒体内のファイル、データベース等における情報を検索してよい。例えば、各々が第２の属性の属性値に関連付けられた第１の属性の属性値を有する複数のエントリが記録媒体内に格納される場合、ＣＰＵ２２１２は、第１の属性の属性値が指定される、条件に一致するエントリを当該複数のエントリの中から検索し、当該エントリ内に格納された第２の属性の属性値を読み取り、それにより予め定められた条件を満たす第１の属性に関連付けられた第２の属性の属性値を取得してよい。
【００８９】
上で説明したプログラムまたはソフトウェアモジュールは、コンピュータ２２００上またはコンピュータ２２００近傍のコンピュータ可読媒体に格納されてよい。また、専用通信ネットワークまたはインターネットに接続されたサーバーシステム内に提供されるハードディスクまたはＲＡＭのような記録媒体が、コンピュータ可読媒体として使用可能であり、それによりプログラムを、ネットワークを介してコンピュータ２２００に提供する。
【００９０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００９１】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００９２】
１０  システム
１１０  第１ホストコンピュータ
１１２  第１ホストオペレーティングシステム
１１４  第１プラットフォーム
１２０  第１仮想マシン
１２２  第１ゲストオペレーティングシステム
１２４  第１アプリケーション
１３０  第２ホストコンピュータ
１３２  第２ホストオペレーティングシステム
１３４  第２プラットフォーム
１４０  第２仮想マシン
１４２  第２ゲストオペレーティングシステム
１４４  第２アプリケーション
１５０  管理ツール
１６０  クライアント
１７０  制御網
１８０  ネットワーク
５１０  第１コンテナ
５３０  第２コンテナ
２２００  コンピュータ
２２０１  ＤＶＤ−ＲＯＭ
２２１０  ホストコントローラ
２２１２  ＣＰＵ
２２１４  ＲＡＭ
２２１６  グラフィックコントローラ
２２１８  ディスプレイデバイス
２２２０  入／出力コントローラ
２２２２  通信インターフェイス
２２２４  ハードディスクドライブ
２２２６  ＤＶＤ−ＲＯＭドライブ
２２３０  ＲＯＭ
２２４０  入／出力チップ
２２４２  キーボード
【図１】
2020035374.tif 000003
【図２】
2020035374.tif 000004
【図３】
2020035374.tif 000005
【図４】
2020035374.tif 000006
【図５】
2020035374.tif 000007
【図６】
2020035374.tif 000008