(57)【特許請求の範囲】
【請求項１】
仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定部と、
前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除部と、
前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成部と
を備えたことを特徴とする仮想機器管理装置。
【請求項２】
前記判定部は、前記仮想マシンの障害に起因する実施中の復旧処理が存在するときに前記仮想マシンを稼働させる物理機器の障害が新たに検出された場合、前記実施中の復旧処理を中止させ、新たに検出された障害に起因する前記第１の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第２の復旧処理を前記再作成部に実行させることを特徴とする請求項１に記載の仮想機器管理装置。
【請求項３】
前記判定部は、前記仮想マシンを稼働させる物理機器の障害に起因する前記第２の復旧処理が実施中であるときに前記物理機器の障害が新たに検出された場合、実施中の前記第２の復旧処理を中止させ、新たに検出された障害に起因する前記第１の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第２の復旧処理を前記再作成部に実行させることを特徴とする請求項１に記載の仮想機器管理装置。
【請求項４】
前記判定部は、前記仮想マシンを稼働させる物理機器の障害に起因する前記第１の復旧処理が実施中であるときに前記物理機器の障害が新たに検出された場合、新たに検出された障害に起因する前記第１の復旧処理を前記削除部に実行させず、新たに検出された障害に起因する前記第２の復旧処理を前記再作成部に実行させないことを特徴とする請求項１に記載の仮想機器管理装置。
【請求項５】
前記判定部は、前記第２の復旧処理が実施中であるときに前記仮想マシンの障害が新たに検出された場合、実施中である前記第２の復旧処理を中止させ、新たに検出された障害に起因する前記第１の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第２の復旧処理を前記再作成部に実行させ、
前記削除部は、前記第１の復旧処理として、前記対応付けを削除することに加えて、前記仮想マシンのインスタンスを削除し、
前記再作成部は、前記対応付けと前記仮想マシンインタンスとを削除後に、前記第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる
ことを特徴とする請求項１に記載の仮想機器管理装置。
【請求項６】
前記判定部は、前記第１の復旧処理が実施中であるときに前記仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する前記第１の復旧処理を前記削除部に実行させず、新たに検出された障害に起因する前記第２の復旧処理を前記再作成部に実行させないことを特徴とする請求項１に記載の仮想機器管理装置。
【請求項７】
仮想機器管理装置で実行する仮想機器管理方法であって、
前記仮想機器管理装置が、
仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定工程と、
前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除工程と、
前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成工程と
を含んだことを特徴とする仮想機器管理方法。
【請求項８】
仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定手順と、
前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除手順と、
前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成手順と
をコンピュータに実行させることを特徴とする仮想機器管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想機器管理装置、仮想機器管理方法及び仮想機器管理プログラムに関する。
【背景技術】
【０００２】
ＩａａＳ（Infrastructure  as  a  Service）型クラウドサービスの実施例として、Ａｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｃｏｍｐｕｔｅ  Ｃｌｏｕｄ（web  site,  http://aws.amazon.com/ec2）、Ｒａｃｋｓｐａｃｅ  Ｃｌｏｕｄ  Ｓｅｒｖｅｒ（web  site,  http://www.rackspacecloud.com/cloud-hosting-products/servers/）がある。
【０００３】
ＩａａＳ型クラウドサービスの基盤として、Ａｍａｚｏｎはプロプライエタリなプラットフォームを用いているが、ＲａｃｋｓｐａｃｅはＯｐｅｎ  ＳｏｕｒｃｅのＯｐｅｎＳｔａｃｋ（web  site,  http://www.openstack.org/）を用いている。
【０００４】
しかし、ＯｐｅｎＳｔａｃｋ等のＩａａＳ基盤は、仮想機器の管理を行うプリミティブなＡＰＩ（Application  Programming  Interface）提供がターゲットの中心であり、物理機器の管理はスコープ外であるため、サービス事業者がクラウドサービスを提供する際は考慮が必要である。
【０００５】
具体的には、仮想機器が動作する物理機器が故障した際の復旧は、ＯｐｅｎＳｔａｃｋは特にサポートしていなく、サービス事業者にて対策が必要である。市中で採用されている方法として、Ｈｉｇｈ  ＡｖａｉｌａｂｉｌｉｔｙクラスタソフトウェアのＰａｃｅｍａｋｅｒ等を用いてＨＡ構成を構築し、物理機器故障時はフェールオーバーする方法がある。
【０００６】
また、仮想マシンを稼働させる物理機器では、Ｐｉｎｇを用いたりＬｉｂｖｉｒｔ等の仮想マシン制御ライブラリを監視したりすることで、仮想マシンのダウンを検知する方法がある。このような物理機器は、仮想マシンのダウンを検出した場合に、仮想マシンを再作成する復旧処理を実行する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Pacemaker  web  site、［平成26年8月27日検索］、インターネット（ＵＲＬ：http://www.linux-ha.org/wiki/Pacemaker/）
【非特許文献２】Libvirt  web  site、［平成26年8月27日検索］、インターネット（ＵＲＬ：http://libvirt.org/）
【非特許文献３】D.  Mane,  "Building  A  High  Availability  -  Openstack,"  International  Journal  of  Engineering  Research  and  Applications,  Vol.3,  Issue  4,  pp.269-277,  July  2013.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術では、仮想マシンを安全に復旧できない場合があるという問題がある。
【０００９】
具体的には、物理機器故障時の復旧と、仮想マシンダウン時の復旧とは独立である。また、物理機器の故障と仮想マシンの故障とが重複した際の復旧手段が統一的でない。このため、例えば、仮想マシンダウンによる仮想マシン復旧が、物理機器故障によるフェールオーバー時の故障ノードの強制終了前に行われた場合には、仮想マシンが２重に起動し、ボリュームを破壊する可能性がある。
【００１０】
開示の技術は、上述に鑑みてなされたものであって、仮想マシンを安全に復旧することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する仮想機器管理装置は、判定部と、削除部と、再作成部とを有する。判定部は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除部は、前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成部は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。
【００１２】
また、本願の開示する仮想機器管理方法は、仮想機器管理装置が、判定工程と、削除工程と、再作成工程とを含む。判定工程は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除工程は、前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成工程は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。
【００１３】
また、本願の開示する仮想機器管理プログラムは、判定手順と、削除手順と、再作成手順とをコンピュータに実行させる。判定手順は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除手順は、前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成手順は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。
【発明の効果】
【００１４】
開示する仮想機器管理装置の一つの態様によれば、仮想マシンを安全に復旧することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１の実施形態に係る仮想機器管理システムの構成の一例を示す図である。
【図２】図２は、仮想機器配置スケジューラ機能部による仮想機器の作成処理を説明するための図である。
【図３】図３は、仮想機器配置スケジューラ機能部による仮想機器の再配置処理を説明するための図である。
【図４】図４は、仮想機器配置スケジューラ機能部による仮想機器の再配置処理を説明するための図である。
【図５】図５は、仮想機器管理システムにおける仮想機器を作成する処理動作を説明するための図である。
【図６】図６は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。
【図７】図７は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。
【図８】図８は、仮想機器管理装置が実現する仮想機器配置スケジューラＤＢ及び仮想機器配置スケジューラ機能部を説明するための図である。
【図９】図９は、仮想機器配置情報テーブルのデータ構造の一例を示す図である。
【図１０】図１０は、物理資源情報テーブルのデータ構造の一例を示す図である。
【図１１】図１１は、配置先選択部による処理動作を説明するための図である。
【図１２】図１２は、障害判定部による物理機器の障害を検出する処理動作を説明するための図である。
【図１３】図１３は、再作成部による処理動作を説明するための図である。
【図１４】図１４は、物理機器障害通知を受信した場合の仮想機器配置スケジューラ機能部による処理手順を示すフローチャートである。
【図１５】図１５は、仮想マシンダウン通知を受信した場合の仮想機器配置スケジューラ機能部による処理手順を示すフローチャートである。
【図１６】図１６は、仮想機器管理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１６】
以下に、開示する仮想機器管理装置、仮想機器管理方法及び仮想機器管理プログラムの実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。
【００１７】
（第１の実施形態）
図１は、第１の実施形態に係る仮想機器管理システムの構成の一例を示す図である。図１に示すように、仮想機器管理システムは、ユーザ端末１０１、物理機器１０３ａ、物理機器１０３ｂ、物理機器１０３ｃ、クラウドコントローラ１０８、及び仮想機器管理装置１０９を有する。なお、物理機器１０３ａ、物理機器１０３ｂ及び物理機器１０３ｃを区別しない場合には、物理機器１０３と記載する。また、ここで言う「物理機器」とは、仮想機器を作成可能な物理サーバ、ストレージ装置、及びネットワーク機器等であるが、以下では説明の便宜上、物理機器１０３が仮想マシンを稼働可能な物理サーバである場合について説明する。また、仮想機器管理システムが有する物理機器１０３の数は図１に示す数に限定されるものではなく、任意に変更可能である。
【００１８】
ユーザ端末１０１は、ユーザが利用する端末であり、ユーザの指示に応じて仮想機器の作成を仮想機器管理装置１０９に要求する。
【００１９】
物理機器１０３は、クラウドコントローラ１０８から仮想機器の作成や削除依頼を受け、実際の仮想機器を作成したり削除したりする。例えば、物理機器１０３は、仮想機器を作成する指示をクラウドコントローラ１０８から受付け、仮想機器を作成する。
【００２０】
例えば、物理機器１０３ａは、図示しない仮想マシン制御部を有し、仮想マシン１０４ａと、仮想マシン１０５ａとを作成する。また、例えば、物理機器１０３ｂは、図示しない仮想マシン制御部を有し、仮想マシン１０４ｂと、仮想マシン１０５ｂとを作成する。同様に、物理機器１０３ｃは、図示しない仮想マシン制御部を有し、仮想マシン１０４ｃと、仮想マシン１０５ｃとを作成する。なお、物理機器１０３ａ〜物理機器１０３ｃにおいて、仮想マシン制御部は、例えば、ＯｐｅｎＳｔａｃｋであれば、「Ｎｏｖａ」機能によって実現される。
【００２１】
なお、物理機器１０３がストレージ装置である場合、例えば、物理機器１０３は、仮想ボリューム制御部を有し、仮想ボリュームを作成する。また、物理機器１０３がネットワーク機器である場合、物理機器１０３は、仮想ネットワーク制御部を有し、仮想Ｌ２ネットワーク、仮想ルータ、及び仮想ロードバランサなどを作成する。なお、仮想ネットワーク制御部は、例えば、ＯｐｅｎＳｔａｃｋであれば、「Ｎｅｕｔｒｏｎ」機能によって実現される。
【００２２】
このような、物理機器１０３の稼働状態には、「稼働中」、「予備」、「故障中（メンテナンス中）」及び「故障中（復旧処理中）」４つの状態がある。「稼働中」は、物理機器が稼働中であることを示す。「予備」は、物理機器が予備系として設けられ稼働中ではないことを示す。「故障中（メンテナンス中）」は、障害が発生した物理機器の復旧処理が開始されていないことを示す。この「故障中（メンテナンス中）」である状態は、障害が発生した物理機器の完全停止が保障されている状態ではない。「故障中（復旧処理中）」は、障害が発生した物理機器の復旧処理が開始されていることを示す。この「故障中（復旧処理中）」である状態は、障害が発生した物理機器の完全停止が保障されている状態である。なお、仮想機器管理システムにおいて、「予備」の物理機器が設けられなくてもよい。
【００２３】
また、物理機器１０３には、物理資源の容量に応じて、仮想機器を配置するために利用可能な物理資源の容量が定義される。ここで、物理資源には、例えば、物理メモリ、ＣＰＵ（Central  Processing  Unit）、ネットワークポートなどが含まれる。なお、仮想マシンは、フレーバー（仮想マシンのスペック指定）に応じてメモリサイズが異なるため、作成する仮想マシンに応じて利用される物理資源の容量は異なる。しかしながら説明の便宜上、以下では、全ての仮想機器１つにつき、使用される物理資源の容量が同じであるものと仮定する。そして、１つの仮想機器を配置するために使用される物理資源の容量を１単位とし、「１スペース」と呼ぶ。言い換えると、１スペースには、１つの仮想機器を配置可能であり、１つの仮想機器を作成する場合には、いずれかの物理機器のスペースが１つ消費される。
【００２４】
また、物理機器内のスペースの状態は、「空き」、「使用中」、及び「障害用バッファ」の３種類で管理されるものとする。ここで、「空き」は、仮想機器が配置されていないスペースであることを示す。「使用中」は、仮想機器が配置されているスペースであることを示す。「障害用バッファ」は、障害復旧用に確保されたスペースであることを示す。
【００２５】
また、物理機器１０３ａは、仮想マシン監視モジュール１０６ａを備えている。同様に、物理機器１０３ｂは、仮想マシン監視モジュール１０６ｂを備えており、物理機器１０３ｃは、仮想マシン監視モジュール１０６ｃを備えている。なお、仮想マシン監視モジュール１０６ａ〜１０６ｃを区別しない場合には仮想マシン監視モジュール１０６と記載する。この仮想マシン監視モジュール１０６は、物理機器１０３上で動作する。例えば、仮想マシン監視モジュール１０６は、Ｌｉｂｖｉｒｔ等のイベントを監視するモジュールによって、仮想マシンの障害を検知した場合、後述する仮想機器配置スケジューラ機能部１１１に仮想マシンの障害を通知する。
【００２６】
また、物理機器１０３ａは、高可用ソフトウェア１０７ａを備えている。同様に、物理機器１０３ｂは、高可用ソフトウェア１０７ｂを備えており、物理機器１０３ｃは、高可用ソフトウェア１０７ｃを備えている。なお、高可用ソフトウェア１０７ａ〜１０７ｃを区別しない場合には高可用ソフトウェア１０７と記載する。この高可用ソフトウェア１０７には、例えば「Ｐａｃｅｍａｋｅｒ」等が利用できる。高可用ソフトウェア１０７は、物理機器１０３の障害を検知し、仮想機器管理装置１０９に物理機器の障害を通知する。かかる場合、物理機器１０３は、仮想機器を再配置させる指示をクラウドコントローラ１０８から受付け、障害の生じた物理機器１０３に配置された仮想機器を再配置する。
【００２７】
なお、「Ｐａｃｅｍａｋｅｒ」は、信頼性の高い故障検出メカニズムを備えており、スプリットブレイン対策が確立している。「Ｐａｃｅｍａｋｅｒ」は、スプリットブレイン状態（孤立状態）を、Ｑｕｏｒｕｍモジュール等による多数決原理で検出する。
【００２８】
クラウドコントローラ１０８は、物理機器１０３と仮想機器管理装置１０９とに接続されている。このクラウドコントローラ１０８は、ＣＰＵ（Central  Processing  Unit）、メモリ、データ保持領域、及びネットワーク通信機能を有する装置である。クラウドコントローラ１０８は、仮想機器管理装置１０９からＡＰＩ（Application  Programming  Interface）経由で仮想機器の作成依頼や削除依頼を受付け、受付けた作成依頼や削除依頼に基づいて、仮想機器の作成や削除を物理機器１０３に指示する。例えば、クラウドコントローラ１０８は、ＯｐｅｎＳｔａｃｋ等である。
【００２９】
仮想機器管理装置１０９は、図示しないネットワークを介して、ユーザ端末１０１と物理機器１０３とクラウドコントローラ１０８とに接続されている。仮想機器管理装置１０９は、ＣＰＵ、メモリ、データ保持領域、及びネットワーク通信機能を有する装置であり、例えば、図１に示すように、仮想機器管理装置１０９は、仮想機器配置スケジューラＤＢ（Data  Base）１１０及び仮想機器配置スケジューラ機能部１１１を有する。仮想機器管理装置１０９は、ユーザ端末から仮想機器の作成依頼を受付けた場合、仮想機器配置先を決定してクラウドコントローラへの仮想マシン作成を依頼する。また、仮想機器管理装置１０９は、高可用ソフトウェア１０７からの物理機器の故障通知、仮想マシン監視モジュール１０６からの仮想マシンダウン通知を受付けた場合、仮想機器配置スケジューラＤＢ１１０の情報を用いて、復旧処理の種類を決定する。そして、仮想機器管理装置１０９は、仮想機器配置先を決定し、クラウドコントローラへの仮想マシン作成依頼等の復旧処理を行う。
【００３０】
仮想機器配置スケジューラＤＢ１１０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。仮想機器配置スケジューラＤＢ１１０は、仮想機器配置情報及び物理資源情報を記憶する。仮想機器配置情報は、各仮想マシンがどの物理機器上に配置されているかと、各仮想マシンの処理の進捗状態とを示す情報である。物理資源情報は、各物理機器の稼働状態と物理機器が有する物理資源の空き容量とを示す情報である。物理機器の稼働状態を示す情報には、例えば、稼働中、予備、故障中（メンテナンス中）、故障中（復旧処理中）があり、物理資源の空き容量を示す情報には、例えば、空き、使用中、障害用バッファがある。なお、仮想機器配置情報の詳細については、図９を用いて後述し、物理資源情報の詳細については、図１０を用いて後述する。
【００３１】
仮想機器配置スケジューラ機能部１１１は、物理機器の稼働状態と物理機器が有する物理資源の使用状態とを参照して、ビジネス要件に応じた仮想機器を配置する。例えば、仮想機器配置スケジューラ機能部１１１は、ユーザ端末１０１から、仮想機器の作成を要求された場合、仮想機器の作成要求と仮想機器配置スケジューラＤＢ１１０の情報とを用いて、仮想機器の作成を仲介する。ここで、仮想機器配置スケジューラ機能部１１１は、仮想マシンや仮想ルータ等の仮想機器を新規に作成する通常のオペレーション時に、仮想機器を配置する物理機器を決め、クラウドコントローラ１０８に物理機器を指定して仮想機器の作成を依頼する。
【００３２】
このように構成される仮想機器管理システムにおいて、仮想機器管理装置１０９は、仮想マシン監視モジュール１０６及び高可用ソフトウェア１０７と連携して動作する。図２から図４を用いて、仮想機器管理システムにおける処理について説明する。
【００３３】
図２は、仮想機器配置スケジューラ機能部１１１による仮想機器の作成処理を説明するための図である。図２では、３台の物理機器１０３ａ〜１０３ｃに、仮想マシンＶＭ＃１１〜ＶＭ＃１６、ＶＭ＃２１〜ＶＭ＃２６、及びＶＭ＃３１〜ＶＭ＃３６を仮想機器として作成する場合を示す。なお、３台の物理機器１０３ａ〜１０３ｃはいずれも稼働中であるものとする。また、図２の例では、仮想機器が仮想マシンである場合を示すが、仮想機器は、仮想ルータ等のその他の仮想機器であってもよい。
【００３４】
図２に示すように、仮想機器配置スケジューラ機能部１１１は、仮想マシンＶＭ＃１１〜ＶＭ＃１６の配置先として物理機器１０３ａを選択し、仮想マシンＶＭ＃２１〜ＶＭ＃２６の配置先として物理機器１０３ｂを選択し、仮想マシンＶＭ＃３１〜ＶＭ＃３６の配置先として物理機器１０３ｃを選択する。そして、仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に配置を依頼する。すなわち、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ａに仮想マシンＶＭ＃１１〜ＶＭ＃１６を作成するようにクラウドコントローラ１０８に依頼する。また、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂに仮想マシンＶＭ＃２１〜ＶＭ＃２６を作成するようにクラウドコントローラ１０８に依頼し、物理機器１０３ｃに仮想マシンＶＭ＃３１〜ＶＭ＃３６を作成するようにクラウドコントローラ１０８に依頼する。なお、この配置ロジックは、ビジネス要件に応じて各事業者がロジックを設定すればよく、できるだけ分散するようにしても、できるだけ集中するようにしても良い。出来るだけ分散する場合は、ユーザの仮想機器の性能には都合が良く、できるだけ集中する場合は実際に使われる物理機器を減らすことができ事業者の運用コスト低減に都合が良い。
【００３５】
また、仮想機器配置スケジューラ機能部１１１は、例えば、いずれかの物理機器１０３に障害が生じた場合に、仮想機器配置スケジューラＤＢ１１０の情報を用いて、仮想機器の再配置を仲介する。ここで、仮想機器配置スケジューラ機能部１１１は、高可用ソフトウェア１０７及びクラウドコントローラ１０８と連携することで障害復旧時に仮想機器を再配置する。図３は、仮想機器配置スケジューラ機能部１１１による仮想機器の再配置処理を説明するための図である。図３では、稼働中である３台の物理機器１０３ａ〜１０３ｃのうち、仮想機器としてＶＭ＃２１〜ＶＭ＃２６を配置する物理機器１０３ｂに障害が生じた場合を示す。
【００３６】
図３に示すように、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂに障害が生じたことを検出する。かかる場合、仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に仮想マシンのクリアを依頼する。そして、クラウドコントローラ１０８は、仮想マシンをクリアする。なお、ここで言う仮想マシンのクリアとは、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除することを示す。言い換えると、仮想マシンのクリアとは、仮想マシンとストレージとの紐付けを削除することを示す。
【００３７】
続いて、仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０の情報を用いて、仮想マシンＶＭ＃２１〜ＶＭ＃２６の再配置先を決定する。図３に示す例では、仮想機器配置スケジューラ機能部１１１は、ＶＭ＃２１、ＶＭ＃２３、及びＶＭ＃２５の再配置先として物理機器１０３ａを選択し、ＶＭ＃２２、ＶＭ＃２４、及びＶＭ＃２６の再配置先として物理機器１０３ｃを選択する。
【００３８】
そして、仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に再配置を依頼する。すなわち、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ａに仮想マシンＶＭ＃２１、ＶＭ＃２３、及びＶＭ＃２５を作成するようにクラウドコントローラ１０８に依頼する。また、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｃに仮想マシンＶＭ＃２２、ＶＭ＃２４、及びＶＭ＃２６を作成するようにクラウドコントローラ１０８に依頼する。
【００３９】
この結果、物理機器１０３ａは、仮想マシンＶＭ＃２１、ＶＭ＃２３、及びＶＭ＃２５を再構築し、仮想マシンＶＭ＃１１〜ＶＭ＃１６に加えて、仮想マシンＶＭ＃２１、ＶＭ＃２３、及びＶＭ＃２５を配置する。また、物理機器１０３ｃは、仮想マシンＶＭ＃２２、ＶＭ＃２４、及びＶＭ＃２６を再構築し、仮想マシンＶＭ＃３１〜ＶＭ＃３６に加えて、仮想マシンＶＭ＃２２、ＶＭ＃２４、及びＶＭ＃２６を配置する。
【００４０】
このように、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂに障害が生じた場合、物理機器１０３ｂに配置されていた仮想マシンＶＭ＃２１〜ＶＭ＃２６を、物理機器１０３ａと物理機器１０３ｃとに再配置する。すなわち、仮想機器配置スケジューラ機能部１１１は、複数台の物理機器を仮想機器の復旧先として利用するので、物理機器故障時の仮想機器復旧時間を短縮できる。なお、障害時もできるだけ少ない数の物理機器に仮想マシンを配置するロジックを事業者が設定することもでき、その場合は、最も空きが少ないノードから埋めていくようなロジックを設定してもよく、或いは、最も空きが多いノードから埋めていくようなロジックを設定してもよい。
【００４１】
また、仮想機器配置スケジューラ機能部１１１は、例えば、いずれかの仮想マシン１０４に障害が生じた場合に、仮想機器配置スケジューラＤＢ１１０の情報を用いて、仮想マシンの再配置を仲介する。ここで、仮想機器配置スケジューラ機能部１１１は、仮想マシン監視モジュール１０６及びクラウドコントローラ１０８と連携することで障害復旧時に仮想マシンを再配置する。図４は、仮想機器配置スケジューラ機能部１１１による仮想マシンの再配置処理を説明するための図である。図４では、物理機器１０３ｂが稼働させている仮想マシンＶＭ＃２１がダウンした場合を示す。なお、３台の物理機器１０３ａ〜１０３ｃはいずれも稼働中であるものとする。
【００４２】
図４に示すように、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂが稼働させている仮想マシンＶＭ＃２１に障害が生じたことを検出する。かかる場合、仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に仮想マシンインスタンスの削除を依頼する。そして、クラウドコントローラ１０８は、仮想マシンのインスタンスを削除する。なお、ＯｐｅｎＳｔａｃｋ等のクラウドコントローラでは、仮想マシンインスタンス削除のＡＰＩ実行で、仮想マシンとストレージの紐付も解除されるため、仮想機器配置スケジューラ機能部１１１は、仮想マシンインスタンスの削除のＡＰＩを実行すれば、仮想マシンインスタンス削除と仮想マシンとストレージの紐付解除がクラウドコントローラ１０８に依頼される。
【００４３】
続いて、仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０の情報を用いて、仮想マシンＶＭ＃２１の再配置先を決定する。図４に示す例では、仮想機器配置スケジューラ機能部１１１は、ＶＭ＃２１の再配置先として物理機器１０３ｂを選択する。そして、仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に再配置を依頼する。すなわち、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂに仮想マシンＶＭ＃２１を作成するようにクラウドコントローラ１０８に依頼する。この結果、物理機器１０３ｂは、仮想マシンＶＭ＃２１を再構築する。
【００４４】
このように、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂが稼働させている仮想マシンＶＭ＃２１に障害が生じた場合、仮想マシンインスタンスを削除した後に、物理機器１０３ｂに仮想マシンＶＭ＃２１を再配置する。
【００４５】
このように、仮想機器管理システムでは、物理機器障害時の仮想マシン復旧だけでなく、仮想マシンダウン時の仮想マシン復旧も行えるようにする。また、仮想機器管理システムでは、物理機器故障や仮想マシンダウンの故障通知が複数重複した際に、仮想マシンを安全に復旧することを行うため、クラウドコントローラ１０８が有するＤＢ上の仮想マシン情報や物理機器上の仮想マシンインスタンスのクリーンアップステップを実施したのち、仮想マシンを新たに配置する。
【００４６】
続いて、このような仮想機器管理システムにおける処理動作について、図５から図７を用いて説明する。図５は、仮想機器管理システムにおける仮想機器を作成する処理動作を説明するための図である。
【００４７】
図５に示すように、ユーザ端末１０１は、仮想機器作成依頼を、仮想機器配置スケジューラ機能部１１１に送信する（ステップＳ１）。仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０を参照し（ステップＳ２）、物理資源情報を確認する（ステップＳ３）。すなわち、仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０を参照して物理機器空き情報を取得する。これにより仮想機器配置スケジューラ機能部１１１は、ビジネス要件に基づいて、仮想機器を作成する配置先の物理機器１０３を決定し、ＡＰＩパラメータを準備する（ステップＳ４）。
【００４８】
次に、仮想機器配置スケジューラ機能部１１１は、決定した物理機器１０３に仮想機器を作成させるようにクラウドコントローラ１０８に依頼する（ステップＳ５）。例えば、仮想機器配置スケジューラ機能部１１１は、決めた配置先を指定してクラウドコントローラＡＰＩを呼び出す。続いて、クラウドコントローラ１０８は、指定された物理機器１０３に仮想機器の作成を依頼する（ステップＳ６）。
【００４９】
そして、物理機器１０３は、仮想機器を作成し（ステップＳ７）、仮想機器の作成が完了したことをクラウドコントローラ１０８に通知する（ステップＳ８）。続いて、クラウドコントローラ１０８は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ９）。そして、仮想機器配置スケジューラ機能部１１１は、仮想機器の作成が完了したことをユーザ端末１０１に通知する（ステップＳ１０）。
【００５０】
図６は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。図６では、いずれかの物理機器１０３に障害が生じた場合に、仮想機器配置スケジューラ機能部１１１が仮想機器の再配置を仲介する動作を説明する。図６に示すように、仮想機器管理システムでは、物理機器１０３ａ、物理機器１０３ｂ及び物理機器１０３ｃが相互に機器状態を監視している（ステップＳ２１、ステップＳ２２）。例えば、物理機器１０３ａ、物理機器１０３ｂ及び物理機器１０３ｃの高可用ソフトウェア１７は、Ｈｅａｒｔｂｅａｔでお互いの機器状態を交換している。以下では、物理機器１０３ａに障害が生じた場合について説明する。
【００５１】
ここで、物理機器１０３ａで障害が起きた際は、物理機器１０３ａ上の高可用ソフトウェア１０７ａは物理機器１０３ａ上のプロセスを停止し、仮想機器配置スケジューラ機能部１１１に障害を通知する。物理機器１０３ｂ及び物理機器１０３ｃも同様に物理機器１０３ａの障害を仮想機器配置スケジューラ機能部１１１に通知する。ここで、物理機器１０３ａが完全に故障している場合は、物理機器１０３ａから仮想機器配置スケジューラ機能部１１１に障害の発生を通知はできないが、物理機器１０３ｂ及び物理機器１０３ｃは、物理機器１０３ａの故障を仮想機器配置スケジューラ機能部１１１に通知できる。このため、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ａの故障を知ることができる。なお図５に示す例では、物理機器１０３ａが完全に故障し、物理機器１０３ａから障害の発生を仮想機器配置スケジューラ機能部１１１に通知できない場合を示す。
【００５２】
なお、障害が発生した物理機器が自ら仮想機器配置スケジューラ機能部１１１に障害を通知することを「自ノード故障通知」と記載し、障害が発生した物理機器とは異なる他の物理機器が仮想機器配置スケジューラ機能部１１１に障害を通知することを「他ノード故障通知」と記載する。また、自ノード故障通知は信頼性が低いので、仮想機器配置スケジューラ機能部１１１は、自ノード故障通知を受信した場合、障害が発生した物理機器の「稼働状態」が「稼働中」や「予備」の場合は、「故障中（メンテナンス中）」に変更し、その他の状態の場合は「稼働状態」を変更しない。また、仮想機器配置スケジューラ機能部１１１は、自ノード故障通知を受信した場合、障害が発生した物理機器の完全停止が保障されているわけではなく、仮想マシンの２重起動の可能性があるので、復旧処理を開始しない。ただし、仮想機器配置スケジューラ機能部１１１は、「稼働状態」を「故障中（メンテナンス中）」に変更することで、新たに仮想マシンが配置されることを防ぐようにする。一方、仮想機器配置スケジューラ機能部１１１は、他ノード故障通知を受信した場合、障害が発生した物理機器の「稼働状態」が「稼働中」、「予備」及び「故障中（メンテナンス中）」の場合は、「故障中（復旧処理中）」に変更する。ここで、他ノード故障通知は、後述のＳＴＯＮＩＴＨ等により、故障ノードの停止を保証している。このため、仮想機器配置スケジューラ機能部１１１は、他ノード故障通知を受信した場合、復旧処理に入る。
【００５３】
図６に示すように、物理機器１０３ｂは、物理機器１０３ａに障害が生じたことを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ２３）。そして、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂからの他ノード故障通知を受ける。ここで、仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０を参照して通知物理機器１０３ａの稼働状態を確認し、通知物理機器１０３ａの稼働状態が「稼働中」であるため、通知物理機器１０３ａの稼働状態「稼働中」を「故障中（復旧処理中）」に変更する（ステップＳ２４）。そして、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂにＡＣＫ（ACKnowledgement）を応答する（ステップＳ２５）。そして、仮想機器配置スケジューラ機能部１１１は、復旧処理を開始する。同様に、物理機器１０３ｃは、物理機器１０３ａに障害が生じたことを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ２６）。そして、仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０を参照して通知物理機器１０３ａの稼働状態を確認し、通知物理機器１０３ａの稼働状態が「故障中（復旧処理中）」であるため、再送として判断する（ステップＳ２７）。そして、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｃにＡＣＫを応答する（ステップＳ２８）。このように仮想機器配置スケジューラ機能部１１１は、最初に受信した通知に従って仮想機器の復旧処理を始めるが、２番目以降に受信した通知に対してもＡＣＫを応答する。
【００５４】
そして、仮想機器配置スケジューラ機能部１１１は、故障復旧処理では、まず、物理機器１０３ａで稼働する全ての仮想マシンのクリアをクラウドコントローラ１０８に依頼する（ステップＳ２９）。続いて、クラウドコントローラ１０８は、クラウドコントローラ１０８が有するＤＢ上において、仮想マシンとストレージとの紐付けを削除し（ステップＳ３０）、仮想マシンクリア完了を仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ３１）。
【００５５】
仮想機器配置スケジューラ機能部１１１は、仮想機器配置スケジューラＤＢ１１０を参照し（ステップＳ３２）、物理資源情報を確認する（ステップＳ３３）。これにより仮想機器配置スケジューラ機能部１１１は、物理機器１０３ｂ及び物理機器１０３ｃの物理資源の空き容量を取得して、仮想機器を再配置する物理機器１０３を決定し、ＡＰＩパラメータを準備する（ステップＳ３４）。ここで、仮想機器配置スケジューラ機能部１１１は、複数台の物理機器１０３を仮想機器の復旧先として選択することで、高速の復旧を可能とする。
【００５６】
次に、仮想機器配置スケジューラ機能部１１１は、再配置する仮想機器を物理機器１０３ｂに作成させるようにクラウドコントローラ１０８に依頼する（ステップＳ３５）。続いて、クラウドコントローラ１０８は、物理機器１０３ｂに仮想機器の作成を依頼する（ステップＳ３６）。同様に、仮想機器配置スケジューラ機能部１１１は、再配置する仮想機器を物理機器１０３ｃに作成させるようにクラウドコントローラ１０８に依頼する（ステップＳ３７）。例えば、仮想機器配置スケジューラ機能部１１１は、決めた配置先を指定してクラウドコントローラＡＰＩを呼び出す。続いて、クラウドコントローラ１０８は、物理機器１０３ｃに仮想機器の作成を依頼する（ステップＳ３８）。ここで、仮想機器配置スケジューラ機能部１１１は、選択した配置先を指定してクラウドコントローラ１０８のＡＰＩを呼び出す。これにより、クラウドコントローラ１０８は、指定された物理機器１０３に対して仮想機器作成を依頼する。
【００５７】
そして、物理機器１０３ｂは、仮想機器を作成し（ステップＳ３９）、仮想機器の作成が完了したことをクラウドコントローラ１０８に通知する（ステップＳ４０）。続いて、クラウドコントローラ１０８は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ４１）。同様に、物理機器１０３ｃは、仮想機器を作成し（ステップＳ４２）、仮想機器の作成が完了したことをクラウドコントローラ１０８に通知する（ステップＳ４３）。続いて、クラウドコントローラ１０８は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ４４）。なお、図６に示す例では、仮想機器配置スケジューラ機能部１１１が、物理機器１０３ｂと物理機器１０３ｃとに再配置する例について説明したが、物理機器１０３ｂ又物理機器１０３ｃのいずれか一方に再配置してもよい。
【００５８】
図７は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。図７では、物理機器１０３ａが稼働させている仮想マシンがダウンした場合に、仮想機器配置スケジューラ機能部１１１が仮想マシンの再配置を仲介する動作を説明する。
【００５９】
図７に示すように、物理機器１０３ａは、物理機器１０３ａ上の仮想マシン監視モジュール１０６によって、物理機器１０３ａ上の仮想マシンダウンを検出する（ステップＳ５１）。そして、物理機器１０３ａは、仮想マシンダウンを仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ５２）。
【００６０】
仮想機器配置スケジューラ機能部１１１は、仮想マシンインスタンス削除をクラウドコントローラ１０８に依頼する（ステップＳ５３）。クラウドコントローラ１０８は、物理機器１０３ａに仮想マシンインスタンスの削除を依頼する（ステップＳ５４）。物理機器１０３ａは、仮想マシンインスタンスを削除し（ステップＳ５５）、クラウドコントローラ１０８に仮想マシンインスタンス削除完了を通知する（ステップＳ５６）。続いて、クラウドコントローラ１０８は、仮想マシンインスタンス削除完了を仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ５７）。
【００６１】
仮想マシンインスタンス削除完了の通知を受けた仮想機器配置スケジューラ機能部１１１は、仮想マシン再配置のため、仮想機器配置スケジューラＤＢ１１０を参照し（ステップＳ５８）、物理資源情報を確認する（ステップＳ５９）。これにより仮想機器配置スケジューラ機能部１１１は、物理機器１０３ａ、物理機器１０３ｂ及び物理機器１０３ｃの物理資源の空き容量を取得して、仮想マシンを再配置する物理機器１０３を決定し、ＡＰＩパラメータを準備する（ステップＳ６０）。なお、図７では、仮想機器配置スケジューラ機能部１１１は、物理機器１０３ａに仮想マシンを再作成する場合を示す。
【００６２】
仮想機器配置スケジューラ機能部１１１は、クラウドコントローラ１０８に仮想マシン作成を依頼する（ステップＳ６１）。続いて、クラウドコントローラ１０８は、物理機器１０３ａに仮想マシン作成を依頼する（ステップＳ６２）。そして、物理機器１０３ａは、仮想マシンを作成し（ステップＳ６３）、仮想マシン作成完了をクラウドコントローラ１０８に通知する（ステップＳ６４）。続いて、クラウドコントローラ１０８は、仮想マシン作成完了を仮想機器配置スケジューラ機能部１１１に通知する（ステップＳ６５）。
【００６３】
続いて、図８を用いて、仮想機器管理装置１０９が実現する仮想機器配置スケジューラＤＢ１１０及び仮想機器配置スケジューラ機能部１１１について説明する。図８は、仮想機器管理装置１０９が実現する仮想機器配置スケジューラＤＢ１１０及び仮想機器配置スケジューラ機能部１１１を説明するための図である。
【００６４】
図８に示すように、仮想機器配置スケジューラＤＢ１１０は、仮想機器配置情報テーブル１１０ａ及び物理資源情報テーブル１１０ｂを記憶する。仮想機器配置情報テーブル１１０ａは、各仮想機器がどの物理機器上に配置されているかを示す仮想機器配置情報を記憶する。
【００６５】
図９は、仮想機器配置情報テーブル１１０ａのデータ構造の一例を示す図である。図９に示すように、仮想機器配置情報テーブル１１０ａは、「仮想マシンＩＤ」と、「物理機器ＩＤ」と、「進捗状態」とを対応付けた仮想機器配置情報を記憶する。ここで、仮想機器配置情報テーブル１１０ａが記憶する「仮想マシンＩＤ」は、物理機器１０３に作成された仮想マシンを一意に識別する識別子を示す。例えば、「仮想マシンＩＤ」には、「仮想マシン＃１１」、「仮想マシン＃２１」等のデータ値が格納される。
【００６６】
また、仮想機器配置情報テーブル１１０ａが記憶する「物理機器ＩＤ」は、物理機器１０３を一意に識別する識別子を示す。例えば、「物理機器ＩＤ」には、「物理機器＃１」、「物理機器＃２」等のデータ値が格納される。
【００６７】
また、仮想機器配置情報テーブル１１０ａが記憶する「進捗状態」は、仮想マシンの復旧処理の進捗状態を示す情報を示す。この「進捗状態」は、後述する仮想マシン削除部１１１ｄや再作成部１１１ｅにより更新される。ここで、「進捗状態」には、仮想マシンの復旧処理の進捗を示す情報として、「稼働中」、「削除中（仮想マシンダウン）」、「削除中（物理機器障害）」、「作成中（仮想マシンダウン）」及び「作成中（物理機器障害）」等が格納される。ここで、「稼働中」は、仮想マシンが稼働中であることを示す。すなわち、「稼働中」は、仮想マシンの復旧処理が開始していないことを示す。
【００６８】
また、「削除中（仮想マシンダウン）」は、仮想マシンの障害に起因する仮想マシンの復旧処理が実施中であることを示す。「削除中（物理機器障害）」は、物理機器の障害に起因する仮想マシンの復旧処理が実施中であることを示す。ここで、進捗状態が削除中である場合の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する処理や仮想マシンのインスタンスを削除する処理が実施される。なお、削除中である場合の復旧処理のことを「第１の復旧処理」とも言う。
【００６９】
「作成中（仮想マシンダウン）」は、仮想マシンの障害に起因する仮想マシンの復旧処理が実施中であることを示す。「作成中（物理機器障害）」は、物理機器の障害に起因する仮想マシンの復旧処理が実施中であることを示す。ここで、進捗状態が作成中である場合の復旧処理として、仮想マシンを稼働させる物理機器を選択し、選択した物理機器に仮想マシンを再作成させる処理が実施される。なお、作成中である場合の復旧処理のことを「第２の復旧処理」とも言う。第２の復旧処理は、第１の復旧処理の終了後に実施される。
【００７０】
一例をあげると、図９に示す仮想機器配置情報テーブル１１０ａは、識別子が「物理機器＃１」である物理機器１０３には、仮想機器「仮想マシン＃１１」及び「仮想マシン＃１２」が配置されており、仮想マシン＃１１及び仮想マシン＃１２が仮想マシンのダウンによる復旧処理中であることを示す。ここで、仮想マシン＃１１は、削除中であり、仮想マシン＃１２は、作成中である。また、図９に示す仮想機器配置情報テーブル１１０ａは、識別子が「物理機器＃２」である物理機器１０３には、仮想機器「仮想マシン＃２１」及び「仮想マシン＃２２」が配置されており、仮想マシン＃２１及び仮想マシン＃２２が物理機器＃２の障害による復旧処理中であることを示す。ここで、仮想マシン＃２１及び仮想マシン＃２２は、削除中である。また、図９に示す仮想機器配置情報テーブル１１０ａは、識別子が「物理機器＃３」である物理機器１０３には、仮想機器「仮想マシン＃２３」、「仮想マシン＃３１」及び「仮想マシン＃３２」が配置されており、仮想マシン＃３１及び仮想マシン＃３２が稼働中であり、仮想マシン＃２３が物理機器＃３以外の他の物理機器の障害による復旧処理中であることを示す。なお、図９に示す例では、元々、物理機器＃２では、仮想マシン＃２１、＃２２、及び＃２３が動作しており、物理機器＃２が故障した場合を示す。このため、仮想マシン＃２１、＃２２、及び＃２３のクリーンアップ処理を行うが、仮想マシン＃２１、及び＃２２はまだクリーンアップ中のため物理機器＃２に紐付いており削除中と表示される。仮想マシン＃２３は、クリーンアップが既に終わり、仮想マシン作成を物理機器＃３上で既に始めているため、物理機器＃３に紐付いて作成中と表示されている。
【００７１】
図８に戻る。物理資源情報テーブル１１０ｂは、各物理機器の稼働状態と物理機器が有する物理資源の空き容量とを示す物理資源情報を記憶する。図１０は、物理資源情報テーブル１１０ｂのデータ構造の一例を示す図である。図１０に示すように、物理資源情報テーブル１１０ｂは、「物理機器ＩＤ」と「稼働状態」と「空き」と「使用中」と「障害用」とを対応付けた物理資源情報を記憶する。
【００７２】
ここで、物理資源情報テーブル１１０ｂが記憶する「物理機器ＩＤ」は、物理機器１０３を一意に識別する識別子を示す。例えば、「物理機器ＩＤ」には、「物理機器＃１」、「物理機器＃２」等のデータ値が格納される。
【００７３】
また、物理資源情報テーブル１１０ｂが記憶する「稼働状態」は、物理機器が稼働中であるか否かを示す。この「稼働状態」は、後述する障害判定部１１１ｃにより更新される。例えば、物理機器が稼働中である場合、「稼働状態」には「稼働中」が格納される。なお、図８では図示していないが、物理機器が予備系として設けられ稼働中ではない場合、「稼働状態」には「予備」が格納される。また、障害が発生した物理機器の復旧処理が開始されていない場合、「稼働状態」には「故障中（メンテナンス中）」が格納される。また、障害が発生した物理機器の復旧処理が開始されている場合、「稼働状態」には「故障中（復旧処理中）」が格納される。
【００７４】
また、「空き」は、物理機器が有する物理資源の容量のうち空き容量を示す。例えば、「空き」には、「３」、「５」、「４」等の値が格納される。また、「使用中」は、物理機器が有する物理資源の容量のうち使用中の容量を示す。例えば、「使用中」には、「１」、「３」、「２」等の値が格納される。また、「障害用」は、物理機器が有する物理資源の容量のうち復旧用に確保された容量を示す。例えば、「障害用」には、「２」等の値が格納される。
【００７５】
一例をあげると、図１０に示す物理資源情報テーブル１１０ｂは、物理機器＃１は、稼働中であり、物理資源の空き容量が「３」であり、使用中の容量が「１」であり、復旧用に確保された容量が「２」であることを示す。また、図１０に示す物理資源情報テーブル１１０ｂは、物理機器＃２は、稼働中であり、物理資源の空き容量が「５」であり、使用中の容量が「３」であり、復旧用に確保された容量が「２」であることを示す。同様に、図１０に示す物理資源情報テーブル１１０ｂは、物理機器＃３は、稼働中であり、物理資源の空き容量が「４」であり、使用中の容量が「２」であり、復旧用に確保された容量が「２」であることを示す。
【００７６】
図８に戻る。仮想機器配置スケジューラ機能部１１１は、作成依頼受付部１１１ａと、配置先選択部１１１ｂと、障害判定部１１１ｃと、仮想マシン削除部１１１ｄと、再作成部１１１ｅとを有する。
【００７７】
作成依頼受付部１１１ａは、仮想機器の作成要求をユーザ端末１０１から受付ける。作成依頼受付部１１１ａは、受付けた仮想機器の作成要求を配置先選択部１１１ｂに受け渡す。
【００７８】
配置先選択部１１１ｂは、仮想機器を新規に作成する際に、仮想機器を配置する物理機器を選択する。ここで、配置先選択部１１１ｂは、仮想機器を出来るだけ分散して配置するように物理機器１０３を選択する。言い換えると、配置先選択部１１１ｂは、「稼働中」の「空き」スペースの数が平準化するように仮想機器を配置する。
【００７９】
図１１は、配置先選択部１１１ｂによる処理動作を説明するための図である。図１１では、物理機器＃１〜物理機器＃６の６台の物理機器を有する仮想機器管理システムにおいて、仮想機器を新規に作成する場合について説明する。ここで、物理機器＃１〜物理機器＃５の稼働状態は「稼働中」であり、物理機器＃６の稼働状態は「予備」である。また、物理機器＃１のスペースの状態は、「空き」２、「使用中」１、「障害用バッファ」２であり、物理機器＃２のスペースの状態は、「空き」０、「使用中」３、「障害用バッファ」２であり、物理機器＃３のスペースの状態は、「空き」４、「使用中」０、「障害用バッファ」２である。また、物理機器＃４のスペースの状態は、「空き」０、「使用中」５、「障害用バッファ」２であり、物理機器＃５のスペースの状態は、「空き」２、「使用中」０、「障害用バッファ」２であり、物理機器＃６のスペースの状態は、「空き」３、「使用中」０、「障害用バッファ」２である。
【００８０】
例えば、配置先選択部１１１ｂは、配置先選択時に、稼働状態が「稼働中」である物理機器の空きスペースの量をチェックし、最も空きスペースが多い稼働中の物理機器を特定する。より具体的には、配置先選択部１１１ｂは、作成する仮想機器のうち１つの仮想機器（例えば、仮想機器＃１）を選択する。そして、図１１に示すスペースの状態である場合には、「空き」が４である物理機器＃３を、最も空きスペースが多い稼働中の物理機器に特定する。なお、配置先選択部１１１ｂは、「障害用バッファ」を通常オペレーション時には利用しない。そして、配置先選択部１１１ｂは、特定した物理機器＃３を選択した仮想機器＃１の配置先として選択する。
【００８１】
続いて、配置先選択部１１１ｂは、配置先として選択する処理を、作成を依頼された全ての仮想機器の配置先を選択するまで繰り返す。一例をあげると、配置先選択部１１１ｂは、図１１に示す数字順に仮想機器を配置するように物理機器を選択する。このように、配置先選択部１１１ｂは、最も空きスペースが多い稼働中の物理機器のスペースの一部を選択することで「空き」スペースの数を平準化する。
【００８２】
また、配置先選択部１１１ｂは、稼働状態が「稼働中」である物理機器のスペースが全て埋まった場合に、稼働状態が「予備」である物理機器に仮想機器を配置する。このため、配置先選択部１１１ｂは、図１１に示す８番のスペースまで仮想機器を配置したら、予備の物理機器に仮想機器を配置する。すなわち、配置先選択部１１１ｂは、図１１に示す例において、仮想機器を９台以上作成する場合には、稼働状態が「予備」である物理機器に仮想機器を配置する。
【００８３】
そして、配置先選択部１１１ｂは、選択した物理機器１０３に、仮想機器を作成するようにクラウドコントローラ１０８に依頼する。
【００８４】
図８に戻る。障害判定部１１１ｃは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害を検出する。例えば、障害判定部１１１ｃは、各物理機器１０３が有する仮想マシン監視モジュール１０６及び高可用ソフトウェア１０７と連携することで、ダウンした仮想マシン１０４や障害の生じた物理機器１０３を検出する。そして、障害判定部１１１ｃは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害を検出した場合に、仮想マシンに対して先行して実施されている復旧処理が存在するか否かを判定する。
【００８５】
ここではまず、障害判定部１１１ｃによる仮想マシンを稼働させる物理機器の障害を検出する処理について説明する。図１２は、障害判定部１１１ｃによる物理機器の障害を検出する処理動作を説明するための図である。
【００８６】
図１２では、物理機器１０３ａ〜１０３ｃを図示しており、物理機器１０３ａに障害が発生した場合について説明する。また、図１２では、物理機器１０３が有する機能のうち、物理機器１０３ａには、自装置の障害発生時に機能する構成部を示し、物理機器１０３ｂ及び物理機器１０３ｃには、他装置の障害を検出した場合に機能する構成部を示す。
【００８７】
図１２に示すように、物理機器１０３の障害の検出には、高可用ソフトウェア１０７ａ〜１０７ｃが用いられる。全ての物理機器１０３は、ＣＩＢ（Cluster  Information  Base）に、クラスタ内の全物理機器１０３の状態を保持する。高可用ソフトウェア１０７は、ＲＡ（Resource  Agent）を用いて自物理機器の状態を確認する。なお、ＲＡとは、例えば、仮想ボリューム制御部や仮想マシン制御部に相当する。
【００８８】
また、高可用ソフトウェア１０７は、Ｈｅａｒｔｂｅａｔにより、クラスタ内のどの物理機器も他の物理機器の状態を知り得る。このため、高可用ソフトウェア１０７は、ｈｅａｒｔｂｅａｔパケットを使ってクラスタ内に状態を通知する。この仕組みにより、各物理機器は他の物理機器の状態を知る。高可用ソフトウェア１０７は、ある物理機器からのＨｅａｒｔｂｅａｔパケットが継続的にロストすると、他の物理機器は当該物理機器がダウンしたとみなす。
【００８９】
物理機器１０３は、仮想機器配置スケジューラ機能部１１１に物理機器に生じた障害を通知するため、通知ＲＡと通知プロセスとを備える。例えば、Ｐａｃｅｍａｋｅｒが自物理機器の故障を検出した場合、通知ＲＡを使用して仮想機器配置スケジューラ機能部１１１に自物理機器の故障を通知する。一方、通知プロセスは、常駐プロセスとして設定され、ＣＩＢの状態を定期的に確認する。そして、通知プロセスは、他物理機器の故障を検出すると、後述のＳＴＯＮＩＴＨにより確実に故障ノードが落ちていることを確認した後、他物理機器に障害が生じたことを仮想機器配置スケジューラ機能部１１１に通知する。通知ＲＡによる通知及び通知プロセスによる通知は、ＡＣＫが仮想機器配置スケジューラ機能部１１１から返るまで一定回数繰り返される。
【００９０】
続いて、仮想機器配置スケジューラ機能部１１１において、障害判定部１１１ｃは、通知を受信したらＡＣＫを応答し、仮想マシン削除部１１１ｄ及び再作成部１１１ｅに仮想機器の復旧処理を実行させる。なお、障害判定部１１１ｃは、同内容の通知に関しては２通目以降の通知を無視してＡＣＫを応答する。ただし、自ノード故障通知と他ノード故障通知は別物として扱う。これにより、複数の物理機器から通知を受けることで冗長化対策をとることができるとともに、復旧処理を繰り返さないようにする。
【００９１】
なお、高可用ソフトウェア１０７は、自物理機器の停止に失敗する場合がある。仮想マシンの場合、復旧により、複数の仮想マシンが同時に存在してしまい、データ領域への同時アクセスによりデータ破壊の可能性が出てしまう。そこで、高可用ソフトウェア１０７が「Ｐａｃｅｍａｋｅｒ」である場合、ＳＴＯＮＩＴＨモジュールを用いて、確実に故障物理機器を落とす。ＳＴＯＮＩＴＨは、ＩＰＭＩ（Intelligent  Platform  Management  Interface）経由で、故障物理機器を停止することで、故障物理機器が動作し続けないことを保証する。Ｑｕｏｒｕｍで過半数を形成した多数派の物理機器が、ＳＴＯＮＩＴＨを起動することで、誤発動を防止する。なお、Ｑｕｏｒｕｍは過半数で判断するため、クラスタの物理機器数が少ない場合に、ある物理機器が故障したら、正常な物理機器が過半数を確保できなくなる。このため、クラスタから故障物理機器を切り離す減設作業が必要である。また、図１２では、高可用ソフトウェア１０７が、Ｐａｃｅｍａｋｅｒである場合を示しているが、他の高可用ソフトウェアでも同様のメカニズムで障害の発生を検知したり、障害の発生を通知したりすることが可能である。なお、障害判定部１１１ｃは、障害の生じた物理機器自ら物理機器の障害の発生を通知された場合、物理資源情報テーブル１１０ｂにおいて障害の生じた物理機器に対応する「稼働状態」を「故障中（メンテナンス中）」に更新する。一方、障害判定部１１１ｃは、例えば、他の物理機器に生じた障害を物理機器１０３ｂから通知された場合、物理資源情報テーブル１１０ｂにおいて障害の生じた物理機器に対応する「稼働状態」を「故障中（復旧処理中）」に更新して、仮想マシン削除部１１１ｄ及び再作成部１１１ｅに仮想機器の復旧処理を実行させる。かかる場合、障害判定部１１１ｃは、復旧処理が仮想マシンを稼働させる物理機器の障害に起因することを仮想マシン削除部１１１ｄ及び再作成部１１１ｅに通知する。なお、障害判定部１１１ｃは、物理機器１０３ｂからの通知に続いて他の物理機器に生じた障害を物理機器１０３ｃから通知された場合、既に復旧処理を開始しているので無視する。
【００９２】
次に、障害判定部１１１ｃによる仮想マシンの障害を検出する処理について説明する。物理機器障害で、その上で動作する仮想機器が全て障害になる場合以外に、仮想機器がプロセス障害などでダウンする場合がある。特に仮想マシン障害は、即サービス断につながるため、仮想マシンのユーザにとって影響が大きい。そこで、仮想機器管理システムでは、Ｐａｃｅｍａｋｅｒ等の高可用ソフトウェアによる物理機器監視だけでなく、Ｌｉｂｖｉｒｔ等の仮想マシン制御ライブラリによって仮想マシンを監視する。そして、仮想機器配置スケジューラ機能部１１１は、仮想マシン障害時に、仮想マシンの復旧処理を実施する。
【００９３】
例えば、ＯｐｅｎＳｔａｃｋコミュニティでは、Ｑｅｍｕ−ＫＶＭが数多く利用されているハイパーバイザ―であり、仮想マシンの制御ライブラリとしてＬｉｂｖｉｒｔが数多く利用されている。そこで、仮想マシン監視モジュール１０６は、Ｌｉｂｖｉｒｔ等の仮想マシン制御ライブラリからイベントを取得することで仮想マシンがダウンしたことを検知する。そして、仮想マシン監視モジュール１０６は、仮想マシンがダウンしたことを検知した場合、仮想機器配置スケジューラ機能部１１１に障害を通知する。Ｌｉｂｖｉｒｔは、仮想マシン障害だけでなく、仮想マシンゲストＯＳのシャットダウン、ホストＯＳのシャットダウン等のイベントも取得可能である。このため、仮想マシン監視モジュール１０６は、仮想機器配置スケジューラ機能部１１１に、仮想マシンゲストＯＳのシャットダウンやホストＯＳのシャットダウン等のイベントを通知する。また、障害判定部１１１ｃは、仮想マシン削除部１１１ｄ及び再作成部１１１ｅに仮想機器の復旧処理を実行させる。かかる場合、障害判定部１１１ｃは、復旧処理が仮想マシンのダウンに起因することを仮想マシン削除部１１１ｄ及び再作成部１１１ｅに通知する。
【００９４】
続いて、障害判定部１１１ｃによる、仮想マシンに対して先行して実施されている復旧処理が存在するか否かを判定する処理について説明する。障害判定部１１１ｃは、複数の故障通知を受信する可能性がある。言い換えると、故障通知が競合する場合がある。例えば、仮想マシンでは、復旧タイミングを誤り仮想マシンが２重起動されてしまうと、同じデータ領域への２つの仮想マシンからのアクセスによりデータ破壊の可能性が有る。このため、現在の復旧処理の進捗状態に応じて適切な復旧処理を行う必要がある。そこで、障害判定部１１１ｃは、Ｐａｃｅｍａｋｅｒ等の高可用ソフトウェア１０７とＬｉｂｖｉｒｔ監視モジュール等の仮想マシン監視モジュール１０６からの故障通知とを統一的に管理し、通知受信時の復旧処理の進捗状況に応じて、実施する復旧処理を判定する。
【００９５】
例えば、障害判定部１１１ｃは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害が検出された場合に、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。例えば、障害判定部１１１ｃは、図９に示した仮想機器配置情報テーブル１１０ａを参照して、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中であるか否かを判定する。そして、障害判定部１１１ｃは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中である場合、仮想マシンに対して実施中の復旧処理が存在すると判定する。一方、障害判定部１１１ｃは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中でない場合、仮想マシンに対して実施中の復旧処理が存在しないと判定する。以下では、故障通知が競合する場合をパターン１からパターン４の４つの状況にわけて説明する。
【００９６】
パターン１として、仮想マシンを稼働させる物理機器の障害に起因する復旧処理が実施中であるときに物理機器の障害が新たに検出された場合について説明する。言い換えると、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中（物理機器障害）」や「作成中（物理機器障害）」である場合を示す。
【００９７】
障害判定部１１１ｃは、物理機器上の仮想マシンの削除が終わる前であれば、受信した通知を再送として破棄する。より具体的には、障害判定部１１１ｃは、仮想機器配置情報テーブル１１０ａにおいて、障害が生じた物理機器で稼働する仮想マシンの「進捗状態」が「削除中（物理機器障害）」である場合、通知が再送であると判定する。すなわち、障害判定部１１１ｃは、仮想マシンを稼働させる物理機器の障害に起因する第１の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させず、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させない。
【００９８】
また、障害判定部１１１ｃは、既に仮想マシンを他の物理機器で仮想マシンインスタンス作成中の場合は、新たに受信した通知を新たなイベントとして物理機器の復旧処理を行う。より具体的には、障害判定部１１１ｃは、仮想機器配置情報テーブル１１０ａにおいて、障害が生じた物理機器で稼働する仮想マシンの「進捗状態」が「作成中（物理機器障害）」である場合、新たなイベントとして物理機器の復旧処理を行う。すなわち、障害判定部１１１ｃは、仮想マシンを稼働させる物理機器の障害に起因する第２の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、実施中の第２の復旧処理を中止させる。そして、障害判定部１１１ｃは、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させ、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させる。なお、同じ物理機器に対する通知であり、仮想マシンの削除が既に実施されている場合、仮想マシンを新たに削除する処理を省略可能である。
【００９９】
パターン２として、仮想マシンを稼働させる物理機器の障害に起因する復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合について説明する。言い換えると、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中（物理機器障害）」や「作成中（物理機器障害）」である場合を示す。
【０１００】
障害判定部１１１ｃは、第１の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させず、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させない。例えば、物理機器上の仮想マシンクリーンアップはＳＴＯＮＩＴＨで停止後に行われるため基本的には仮想マシンダウン通知が来ることはない。しかしながら、通知が遅延した場合等では、仮想マシンの削除中に仮想マシンダウン通知を受信する場合がある。この場合、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中（物理機器障害）」である。かかる場合、障害判定部１１１ｃは、実施中である仮想マシンの削除処理を継続すると判定する。
【０１０１】
また、障害判定部１１１ｃは、第２の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第２の復旧処理を再作成部１１１ｅに中止させる。そして、障害判定部１１１ｃは、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させ、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させる。例えば、障害判定部１１１ｃは、既に仮想マシンを他の物理機器で仮想マシンインスタンス作成中の場合は、新たに受信した通知を新たな故障通知として扱う。この場合、ダウンが新たに検出された仮想マシンの「進捗状態」が「作成中（物理機器障害）」である。これにより、仮想マシン削除部１１１ｄは、第１の復旧処理として、対応付けを削除することに加えて、仮想マシンのインスタンスを削除させる。そして、再作成部１１１ｅは、対応付けの削除及び仮想マシンのインタンスの削除後に、第２の復旧処理として、選択した物理機器に仮想マシンを再作成させる。
【０１０２】
パターン３として、仮想マシンの障害に起因する復旧処理が実施中であるときに物理機器の障害が新たに検出された場合について説明する。言い換えると、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中（仮想マシンダウン）」や「作成中（仮想マシンダウン）」である場合を示す。かかる場合、障害判定部１１１ｃは、仮想マシンの障害に起因する実施中の復旧処理が存在するときに仮想マシンを稼働させる物理機器の障害が新たに検出された場合、実施中の復旧処理を中止させる。そして、障害判定部１１１ｃは、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させ、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させる。
【０１０３】
例えば、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中（仮想マシンダウン）」である場合、物理機器障害により仮想マシンインスタンスの削除が終了しない可能性がある。このため、障害判定部１１１ｃは、実施中である仮想マシンインスタンス削除を中断するように仮想マシン削除部１１１ｄに指示する。そして、障害判定部１１１ｃは、新たに通知された物理機器の復旧処理を仮想マシン削除部１１１ｄ及び再作成部１１１ｅに実行させる。
【０１０４】
また、例えば、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「作成中（仮想マシンダウン）」である場合も、物理機器障害により仮想マシンインスタンスの削除が終了しない可能性がある。このため、障害判定部１１１ｃは、実施中である仮想マシンインスタンス削除を中断するように仮想マシン削除部１１１ｄに指示する。そして、障害判定部１１１ｃは、新たに通知された物理機器の復旧処理を仮想マシン削除部１１１ｄ及び再作成部１１１ｅに実行させる。
【０１０５】
パターン４として、仮想マシンの障害に起因する復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合について説明する。言い換えると、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中（仮想マシンダウン）」や「作成中（仮想マシンダウン）」である場合を示す。
【０１０６】
障害判定部１１１ｃは、第１の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させず、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させない。例えば、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中（仮想マシンダウン）」である場合は、障害判定部１１１ｃは、新たに受信した通知が再送であるとして破棄し、実施中である仮想マシンインスタンスの削除処理を継続する。
【０１０７】
また、障害判定部１１１ｃは、第２の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第２の復旧処理を再作成部１１１ｅに中止させる。そして、障害判定部１１１ｃは、新たに検出された障害に起因する第１の復旧処理を仮想マシン削除部１１１ｄに実行させ、新たに検出された障害に起因する第２の復旧処理を再作成部１１１ｅに実行させる。これにより、仮想マシン削除部１１１ｄは、第１の復旧処理として、対応付けを削除することに加えて、仮想マシンのインスタンスを削除させる。例えば、ダウンが新たに検出された仮想マシンの「進捗状態」が「作成中（仮想マシンダウン）」である場合、障害判定部１１１ｃは、実施中である仮想マシンインスタンス作成処理を中断するように再作成部１１１ｅに指示する。そして、再作成部１１１ｅは、対応付けの削除及び仮想マシンのインタンスの削除後に、第２の復旧処理として、選択した物理機器に仮想マシンを再作成させる。
【０１０８】
このように、障害判定部１１１ｃは、従来は独立に行われていた物理機器の障害に起因する復旧処理とダウンした仮想マシンの復旧処理とを、統一的に管理することで、仮想マシンの２重起動を防いだ信頼性のある復旧処理を実施することを可能とする。
【０１０９】
図８に戻る。仮想マシン削除部１１１ｄは、障害判定部１１１ｃの指示に応じて、第１の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する。ここで、仮想マシン削除部１１１ｄは、仮想マシンの障害に起因する第１の復旧処理である場合、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除することに加えて、仮想マシンのインスタンスを削除する。
【０１１０】
例えば、仮想マシン削除部１１１ｄは、実施中の復旧処理が存在しない場合に、第１の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する。また、仮想マシン削除部１１１ｄは、障害判定部１１１ｃの指示に応じて、実施中である第１の復旧処理を中止する。実施中である第１の復旧処理を中止した場合、仮想マシン削除部１１１ｄは、障害判定部１１１ｃの指示に応じて、新たに第１の復旧処理を実施する。
【０１１１】
また、仮想マシン削除部１１１ｄは、第１の復旧処理を開始する場合、仮想機器配置情報テーブル１１０ａにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「削除中（仮想マシンダウン）」或いは「削除中（物理機器障害）」に更新する。
【０１１２】
第１の復旧処理が終了後、仮想マシン削除部１１１ｄは、再作成部１１１ｅに第１の復旧処理が終了したことを通知する。
【０１１３】
再作成部１１１ｅは、障害判定部１１１ｃの指示を受信した後、仮想マシン削除部１１１ｄから第１の復旧処理が終了したことを通知された場合に、第２の復旧処理として、仮想マシンを稼働させる物理機器を選択し、選択した物理機器に仮想マシンを再作成させる。
【０１１４】
例えば、再作成部１１１ｅは、物理機器に生じた障害を通知された場合に、仮想機器を再作成する物理機器を選択する。また、再作成部１１１ｅは、仮想マシンのダウンを通知された場合に、ダウンした仮想マシンを再作成する物理機器を選択する。ここで、再作成部１１１ｅは、物理機器に生じた障害を通知された場合に、対応付けの削除後に、第２の復旧処理として、選択した物理機器に仮想マシンを再作成させる。また、再作成部１１１ｅは、仮想マシンのダウンを通知された場合に、対応付けの削除及び仮想マシンのインタンスの削除後に、第２の復旧処理として、選択した物理機器に仮想マシンを再作成させる。
【０１１５】
以下では、物理機器に生じた障害を通知された場合の再作成部１１１ｅの処理について説明する。ここで、再作成部１１１ｅは、障害の生じた物理機器以外の物理機器にできるだけ順番に割り振られるように物理機器を選択する。例えば、再作成部１１１ｅは、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。そして、再作成部１１１ｅは、特定した複数の物理機器の物理資源を、障害の生じた物理機器に配置された仮想機器の再配置先として選択する。
【０１１６】
図１３は、再作成部１１１ｅによる処理動作を説明するための図である。図１３では、物理機器＃１〜物理機器＃６の６台の物理機器を有する仮想機器管理システムにおいて、物理機器＃４が故障した際の復旧について説明する。ここで、物理機器＃１〜物理機器＃５の稼働状態は「稼働中」であり、物理機器＃６の稼働状態は「予備」である。また、物理機器＃１のスペースの状態は、「空き」２、「使用中」１、「障害用バッファ」２であり、物理機器＃２のスペースの状態は、「空き」０、「使用中」３、「障害用バッファ」２であり、物理機器＃３のスペースの状態は、「空き」４、「使用中」０、「障害用バッファ」２である。また、物理機器＃４のスペースの状態は、「空き」０、「使用中」１０、「障害用バッファ」２であり、物理機器＃５のスペースの状態は、「空き」２、「使用中」０、「障害用バッファ」２であり、物理機器＃６のスペースの状態は、「空き」３、「使用中」０、「障害用バッファ」２である。
【０１１７】
例えば、再作成部１１１ｅは、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。ここで、再作成部１１１ｅは、物理機器の障害発生時には、「空き」のスペースに加えて、「障害用バッファ」のスペースも使用する。これにより、再作成部１１１ｅは、「空き」が０の物理機器も含めて、より多くの物理機器が復旧処理を分担できるようにする。図１３に示す例では、再作成部１１１ｅが、稼働中である物理機器＃１〜物理機器＃３及び物理機器＃５を特定した場合を示す。
【０１１８】
そして、再作成部１１１ｅは、特定した複数の物理機器の物理資源を、障害の生じた物理機器＃４に配置された仮想機器の再配置先として選択する。例えば、再作成部１１１ｅは、特定した複数の物理機器に順序付けを行う。ここで、再作成部１１１ｅは、特定した複数の物理機器の物理資源の空き容量が多い順に、特定した複数の物理機器に順序付けを行う。例えば、再作成部１１１ｅは、「空き」のスペースと「障害用バッファ」のスペースとの合計スペースを物理資源の空き容量とし、合計スペースが多い順に物理機器に順序付けを行う。図１３の例では、再作成部１１１ｅが、合計スペースが６である物理機器＃３、合計スペースが４である物理機器＃１、合計スペースが４である物理機器＃５、そして、合計スペースが２である物理機器＃２の順で順序付けした場合を示す。
【０１１９】
続いて、再作成部１１１ｅは、障害の生じた物理機器に配置された仮想機器それぞれの再配置先として、順序に基づいて選択した物理機器の物理資源を選択する処理を繰り返す。一例をあげると、再作成部１１１ｅは、図１３に示す数字順に仮想機器を再配置するように物理機器を選択する。ここで、再配置時は、空き容量が多い順に入れていくことも出来れば、空き容量がなくなるまで出来るだけ順々に別物理機器に入れていくこともできる。前者の場合は再配置後の空き容量が均等になるようにすることが目的で、後者の場合は出来るだけ多くの物理機器に再配置し速く復旧するが目的である。図１３では、後者のロジックを想定した例である。より具体的には、再作成部１１１ｅは、物理機器＃３、物理機器＃１、物理機器＃５、そして、物理機器＃２の順で選択した物理機器の物理資源を仮想機器の再配置先として選択する処理を繰り返す。ここで、再作成部１１１ｅは、「空き」のスペースや「障害用バッファ」のスペースが無くなるまでは、各物理機器に仮想機器を順番に配置する。また、再作成部１１１ｅは、スペースが無くなった物理機器は飛ばすようにする。
【０１２０】
なお、再作成部１１１ｅは、稼働状態が「稼働中」である全ての物理機器の「空き」のスペース及び「障害用バッファ」のスペースが満たされるまで、稼働状態が「予備」である物理機器を選択しない。このように、仮想機器配置スケジューラ機能部１１１は、「空き」のスペースに加えて、仮想機器の作成時には利用されない「障害用バッファ」のスペースを予め準備しておき、障害時に多くの物理機器に仮想機器を再配置することで、高速の復旧を可能とする。また、再作成部１１１ｅは、障害が発生した物理機器に配置された仮想機器の全てを再配置可能ではない場合には、特定した物理機器の「空き」のスペースと「障害用バッファ」のスペースとに再配置可能な範囲で、仮想機器ごとに再配置先を選択する。
【０１２１】
また、Ｐａｃｅｍａｋｅｒのクラスタ構成は、最大８台程度で組み、障害の検知を行う。また、仮想機器配置スケジューラ機能部１１１は、クラスタを跨いで別物理機器に仮想機器を作成してもよいため、再作成が依頼される物理機器はクラスタのサイズ以上でも良い。また、全てが埋まった際に利用される予備機は存在してもしなくてもよい。クラスタ構成上はＮ−Ａｃｔ、０−Ｓｂｙで、Ｓｔａｎｄｂｙ機を準備する必要はないため、物理機器の利用効率を高めることも出来る。
【０１２２】
そして、再作成部１１１ｅは、選択した物理機器１０３に、仮想機器を作成するようにクラウドコントローラ１０８に依頼する。
【０１２３】
まお、再作成部１１１ｅは、仮想マシンがダウンした場合には、物理機器に生じた障害を通知された場合と同様に仮想マシンを再作成させる物理機器を選択してもよく、或いは、ダウンした仮想マシンが稼働していた物理機器にダウンした仮想マシンを再作成させてもよい。
【０１２４】
また、再作成部１１１ｅは、障害判定部１１１ｃの指示に応じて、実施中である第２の復旧処理を中止する。実施中である第２の復旧処理を中止した場合、再作成部１１１ｅは、障害判定部１１１ｃの指示に応じて、新たに第２の復旧処理を実施する。かかる場合も、再作成部１１１ｅは、障害判定部１１１ｃの指示を受信した後、仮想マシン削除部１１１ｄから第１の復旧処理が終了したことを通知された場合に、第２の復旧処理を実施する。
【０１２５】
また、再作成部１１１ｅは、第２の復旧処理を開始する場合、仮想機器配置情報テーブル１１０ａにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「作成中（仮想マシンダウン）」或いは「作成中（物理機器障害）」に更新する。また、再作成部１１１ｅは、第２の復旧処理が終了した場合、仮想機器配置情報テーブル１１０ａにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「稼働中」に更新する。
【０１２６】
なお、図１３に示す例では、再作成部１１１ｅが、特定した複数の物理機器の物理資源の空き容量が多い順に、特定した複数の物理機器に順序付けを行う場合について説明したが、実施形態はこれに限定されるものではない。例えば、再作成部１１１ｅは、物理資源の空き容量とは関係なく、特定した複数の物理機器に任意に順序付けを行うようにしてもよい。
【０１２７】
図１４は、物理機器障害通知を受信した場合の仮想機器配置スケジューラ機能部１１１による処理手順を示すフローチャートである。図１４に示すように、障害判定部１１１ｃは、物理機器障害通知を受信したか否かを判定する（ステップＳ１０１）。ここで、障害判定部１１１ｃは、物理機器障害通知を受信したと判定した場合（ステップＳ１０１、Ｙｅｓ）、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する（ステップＳ１０２）。なお、障害判定部１１１ｃは、物理機器障害通知を受信しなかったと判定した場合（ステップＳ１０１、Ｎｏ）、物理機器障害通知を受信したか否かを判定する。
【０１２８】
障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が存在すると判定しなかった場合（ステップＳ１０２、Ｎｏ）、ステップＳ１０７に移行する。一方、障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が存在すると判定した場合（ステップＳ１０２、Ｙｅｓ）、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因するか否かを判定する（ステップＳ１０３）。ここで、障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因すると判定しなかった場合（ステップＳ１０３、Ｎｏ）、ステップＳ１０６に移行する。
【０１２９】
障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因すると判定した場合（ステップＳ１０３、Ｙｅｓ）、物理機器障害通知が再送か否かを判定する（ステップＳ１０４）。例えば、障害判定部１１１ｃは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中である場合、物理機器障害通知が再送であると判定する。一方、障害判定部１１１ｃは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中でない場合、物理機器障害通知が再送ではないと判定する。すなわち、障害判定部１１１ｃは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が稼働中又は作成中である場合、物理機器障害通知が再送ではないと判定する。
【０１３０】
障害判定部１１１ｃは、物理機器障害通知が再送であると判定した場合（ステップＳ１０４、Ｙｅｓ）、通知を破棄して（ステップＳ１０５）、処理を終了する。一方、障害判定部１１１ｃは、物理機器障害通知が再送であると判定しなかった場合（ステップＳ１０４、Ｎｏ）、実施中の処理を中止させる（ステップＳ１０６）。そして、障害判定部１１１ｃは、仮想マシン削除部１１１ｄ及び再作成部１１１ｅに復旧処理を実施させる（ステップＳ１０７）。
【０１３１】
図１５は、仮想マシンダウン通知を受信した場合の仮想機器配置スケジューラ機能部１１１による処理手順を示すフローチャートである。図１５に示すように、障害判定部１１１ｃは、仮想マシンダウン通知を受信したか否かを判定する（ステップＳ２０１）。ここで、障害判定部１１１ｃは、仮想マシンダウン通知を受信したと判定した場合（ステップＳ２０１、Ｙｅｓ）、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する（ステップＳ２０２）。なお、障害判定部１１１ｃは、仮想マシンダウン通知を受信しなかったと判定した場合（ステップＳ２０１、Ｎｏ）、仮想マシンダウン通知を受信したか否かを判定する。
【０１３２】
障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が存在すると判定しなかった場合（ステップＳ２０２、Ｎｏ）、ステップＳ２０６に移行する。一方、障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が存在すると判定した場合（ステップＳ２０２、Ｙｅｓ）、仮想マシンに対して実施中の復旧処理が第１の復旧処理であるか否かを判定する（ステップＳ２０３）。ここで、障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が第１の復旧処理であると判定しなかった場合（ステップＳ２０３、Ｎｏ）、実施中の処理を中止させる（ステップＳ２０４）。そして、障害判定部１１１ｃは、仮想マシン削除部１１１ｄ及び再作成部１１１ｅに復旧処理を実施させる（ステップＳ２０６）。
【０１３３】
一方、障害判定部１１１ｃは、仮想マシンに対して実施中の復旧処理が第１の復旧処理であると判定した場合（ステップＳ２０３、Ｙｅｓ）、通知を破棄して（ステップＳ２０５）、処理を終了する。
【０１３４】
上述したように、第１の実施形態に係る仮想機器管理装置１０９は、物理機器故障時と仮想マシンダウン時の復旧方法として統一的手段で行い、物理機器故障と仮想マシンダウンが重複しても、仮想マシンのステータスを管理し、仮想マシンが２重起動しないように復旧を行う。
【０１３５】
例えば、第１の実施形態に係る仮想機器管理装置１０９は、仮想マシンを稼働させる物理機器の障害に起因する第１の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、通知が再送であると判定し、新たに検出された障害に起因する第１の復旧処理及び第２の復旧処理を実施しない。
【０１３６】
また、第１の実施形態に係る仮想機器管理装置１０９は、仮想マシンを稼働させる物理機器の障害に起因する第２の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、実施中の第２の復旧処理を中止させる。そして、第１の実施形態に係る仮想機器管理装置１０９は、新たなイベントとして物理機器の復旧処理を実施する。
【０１３７】
また、第１の実施形態に係る仮想機器管理装置１０９は、仮想マシンの障害に起因する実施中の復旧処理が存在するときに仮想マシンを稼働させる物理機器の障害が新たに検出された場合、実施中の復旧処理を中止させる。そして、第１の実施形態に係る仮想機器管理装置１０９は、新たに検出された障害に起因する第１の復旧処理と第２の復旧処理とを実施する。
【０１３８】
また、第１の実施形態に係る仮想機器管理装置１０９は、第１の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第１の復旧処理と第２の復旧処理とを実行しない。
【０１３９】
また、第１の実施形態に係る仮想機器管理装置１０９は、第２の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第２の復旧処理を中止させ、新たに検出された障害に起因する第１の復旧処理と第２の復旧処理とを実施する。
【０１４０】
このように、第１の実施形態に係る仮想機器管理装置１０９は、物理機器故障と仮想マシンダウンが重複しても、仮想マシンのステータスを管理することで、仮想マシンが２重起動しないように復旧を実施する。この結果、第１の実施形態に係る仮想機器管理装置１０９は、仮想マシンを安全に復旧することができる。
【０１４１】
また、第１の実施形態に係る仮想機器管理装置１０９は、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。そして、第１の実施形態に係る仮想機器管理装置１０９は、特定した複数の物理機器の物理資源を、障害の生じた物理機器に配置された仮想機器の再配置先として選択する。すなわち、第１の実施形態に係る仮想機器管理装置１０９は、複数台の物理機器を仮想機器の復旧先として利用する。これにより、第１の実施形態に係る仮想機器管理装置１０９は、仮想機器を復旧するまでの時間を短縮することができる。
【０１４２】
より具体的には、従来方式では、Ｎ−Ａｃｔ、Ｍ−Ｓｂｙでクラスタを組み物理機器に障害が起きた際に、Ｐａｃｅｍａｋｅｒ等の高可用ソフトウェアの機能によりＳｔａｎｄｂｙ機にフェールオーバーし、ＯｐｅｎＳｔａｃｋ等のクラウドコントローラのＤＢを元に仮想機器を再構築していた。ここで、従来方式では、ＨＡクラスタソフトウェアを用いたフェールオーバーは、１台のＳｔａｎｄｂｙ機に仮想機器を新たに再構築するため、全仮想機器の復旧に時間がかかるという問題がある。
【０１４３】
一方、第１の実施形態に係る仮想機器管理装置１０９では、Ｎ−Ａｃｔ、０−Ｓｂｙでクラスタを組み、物理機器に障害が起きた際は、高可用ソフトウェアの機能により障害を検知するが、フェールオーバーせずに物理機器の障害を仮想機器管理装置１０９に通知する。仮想機器管理装置１０９は、各仮想機器に対して、再配置する複数の物理機器を決定し、配置する物理機器を指定してクラウドコントローラ１０８に再作成依頼を行う。そして、クラウドコントローラ１０８は、指定された物理機器に仮想機器を作成する。
【０１４４】
このように、第１の実施形態に係る仮想機器管理装置１０９は、故障した物理機器上で動作していた仮想機器を、複数台の物理機器に再作成することで高速に復旧する。言い換えると、仮想機器管理装置１０９は、複数台の物理機器を復旧先として利用するため、物理機器故障時の仮想機器復旧時間が短縮される。例えば、移行先物理機器が３台の場合は、復旧処理時間が１/３に短縮できる。
【０１４５】
また、第１の実施形態に係る仮想機器管理装置１０９は、Ｐａｃｅｍａｋｅｒ等の高可用ソフトウェアでＮ−Ａｃｔ、０−Ｓｂｙでクラスタを組み障害検知を行う。ここで、第１の実施形態に係る仮想機器管理装置１０９は、クラスタの枠を超えて故障復旧を行うことが出来るため、移行先物理機器の台数をクラスタサイズ以上にとることもできる。これにより、復旧時間をより短縮できる。
【０１４６】
更に、仮想機器管理システムでは、障害検知のためのクラスタはＮ−Ａｃｔ、０−Ｓｂｙであるため、Ｓｔａｎｄｂｙ用の物理機器を準備する必要がなく、物理機器数の増大を抑えることができる。
【０１４７】
なお、上述した実施形態では、配置先選択部１１１ｂは、仮想機器を新規に作成する通常のオペレーション時に、仮想機器を出来るだけ分散して配置するように物理機器１０３を選択するものとして説明したが実施形態はこれに限定されるものではない。例えば、配置先選択部１１１ｂは、仮想機器を新規に作成する通常のオペレーション時には、仮想機器を分散させることなく配置するように物理機器１０３を選択するようにしてもよい。
【０１４８】
（第２の実施形態）
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。
【０１４９】
（システム構成）
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述の文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１５０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１５１】
（プログラム）
また、上記の実施形態に係る仮想機器管理装置１０９が実行する処理をコンピュータが実行可能な言語で記述した仮想機器管理プログラムを生成することもできる。この場合、コンピュータが仮想機器管理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる仮想機器管理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された仮想機器管理プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図１等に示した仮想機器管理装置１０９と同様の機能を実現する仮想機器管理プログラムを実行するコンピュータの一例を説明する。
【０１５２】
図１６は、仮想機器管理プログラムを実行するコンピュータ１０００を示す図である。図１６に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１５３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１０５１およびキーボード１０５２が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１０６１が接続される。
【０１５４】
ここで、図１６に示すように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した仮想機器管理プログラムは、例えばハードディスクドライブ１０３１やメモリ１０１０に記憶される。
【０１５５】
また、仮想機器管理プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。具体的には、上記実施形態で説明した障害判定部１１１ｃと同様の情報処理を実行する判定手順と、仮想マシン削除部１１１ｄと同様の情報処理を実行する削除手順と、再作成部１１１ｅと同様の情報処理を実行する再作成手順とが記述されたプログラムモジュール１０９３が、ハードディスクドライブ１０３１に記憶される。
【０１５６】
また、仮想機器管理プログラムによる情報処理に用いられるデータは、プログラムデータ１０９４として、例えば、ハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【０１５７】
なお、仮想機器管理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、仮想機器管理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１５８】
（その他）
なお、本実施形態で説明した仮想機器管理プログラムは、インターネットなどのネットワークを介して配布することができる。また、特定プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１５９】
１０９    仮想機器管理装置
１１０    仮想機器配置スケジューラＤＢ
１１０ａ  仮想機器配置情報テーブル
１１０ｂ  物理資源情報テーブル
１１１    仮想機器配置スケジューラ機能部
１１１ａ  作成依頼受付部
１１１ｂ  配置先選択部
１１１ｃ  障害判定部
１１１ｄ  仮想マシン削除部
１１１ｅ  再作成部
１０００  コンピュータ
１０１０  メモリ
１０１１  ＲＯＭ
１０１２  ＲＡＭ
１０２０  ＣＰＵ
１０３０  ハードディスクドライブインタフェース
１０３１  ハードディスクドライブ
１０４０  ディスクドライブインタフェース
１０４１  ディスクドライブ
１０５０  シリアルポートインタフェース
１０５１  マウス
１０５２  キーボード
１０６０  ビデオアダプタ
１０６１  ディスプレイ
１０７０  ネットワークインタフェース
１０８０  バス
１０９１  ＯＳ
１０９２  アプリケーションプログラム
１０９３  プログラムモジュール
１０９４  プログラムデータ
【要約】
【課題】仮想マシンを安全に復旧すること。
【解決手段】仮想機器管理装置は、判定部と、削除部と、再作成部とを有する。判定部は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除部は、前記実施中の復旧処理が存在しない場合に、第１の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成部は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第２の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。
【選択図】図１【図１】
0005855724.tif 000002
【図２】
0005855724.tif 000003
【図３】
0005855724.tif 000004
【図４】
0005855724.tif 000005
【図５】
0005855724.tif 000006
【図６】
0005855724.tif 000007
【図７】
0005855724.tif 000008
【図８】
0005855724.tif 000009
【図９】
0005855724.tif 000010
【図１０】
0005855724.tif 000011
【図１１】
0005855724.tif 000012
【図１２】
0005855724.tif 000013
【図１３】
0005855724.tif 000014
【図１４】
0005855724.tif 000015
【図１５】
0005855724.tif 000016
【図１６】
0005855724.tif 000017