(57)【要約】【課題】複数のＶＭが連携して一つの機能を提供する仮想計算機システムにおいて、システム全体としての起動時間を長大させることなく、起動の順序性の保証する仮想計算機システムおよびＶＭ起動制御方法を提供する。【解決手段】本発明の複数のＶＭを起動する仮想計算機システムのＶＭ管理機能部が、前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムを、少なくとも一つ、ＶＭに追加する起動応答機能追加部と、前記プログラムが追加されたＶＭを配布するＶＭ配布部と、前記ＶＭからサービスの起動状況の応答通知を受信する起動応答受信部と、前記サービスの起動状況の応答通知を受信した際に、複数のＶＭのそれぞれの起動条件を定めたＶＭ起動順序表に基づいて、所定のＶＭを起動するＶＭ起動命令部と、を備えた。【選択図】  図１
2017142722.tif 000002
【特許請求の範囲】
【請求項１】
複数のＶＭを起動する仮想計算機システムのＶＭ管理機能部が、
前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムを、少なくともひとつ、ＶＭに追加する起動応答機能追加部と、
前記プログラムが追加されたＶＭを配布するＶＭ配布部と、
前記ＶＭからサービスの起動状況の応答通知を受信する起動応答受信部と、
前記サービスの起動状況の応答通知を受信した際に、複数のＶＭのそれぞれの起動条件を定めたＶＭ起動順序表に基づいて、所定のＶＭを起動するＶＭ起動命令部と、
を備えたことを特徴とする仮想計算機システム。
【請求項２】
請求項１に記載の仮想計算機システムにおいて、
前記ＶＭ起動順序表は、ＶＭ毎に、ＶＭの起動順序を示す情報と、当該ＶＭの起動条件である、サービスの起動終了の応答通知を行うプログラム名を示す情報と、を含み、
前記ＶＭ起動命令部は、前記サービスの起動終了の応答通知を行うプログラム名を示す情報を前記サービスの起動状況の応答通知として受信した際に所定のＶＭを起動する
ことを特徴とする仮想計算機システム。
【請求項３】
請求項１に記載の仮想計算機システムにおいて、さらに、
前記ＶＭからサービスの起動状況の通知を所定時間内に受信しなかった際に、ＶＭの起動障害と判定するＶＭ起動失敗判定部と、
を備えたことを特徴とする仮想計算機システム。
【請求項４】
請求項１に記載の仮想計算機システムにおいて、
前記ＶＭ配布部は、起動応答機能追加部によりＶＭ起動応答を行うプログラムと前記プログラムの起動スクリプトが追加された仮想ディスクの情報を配布する
ことを特徴とする仮想計算機システム。
【請求項５】
請求項１に記載の仮想計算機システムにおいて、
複数のＶＭと前記ＶＭ管理機能部のそれぞれは、仮想ネットワークのＩＰアドレスが割り当てられ、
前記起動応答受信部は、前記仮想ネットワークのＩＰアドレスを含む前記サービスの起動状況の応答通知を受信し、受信した前記ＩＰアドレスを基にＶＭを特定する
ことを特徴とする仮想計算機システム。
【請求項６】
請求項１に記載の仮想計算機システムにおいて、
前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムにはプログラム識別情報が割り当てられ、
前記起動応答受信部は、前記プログラム識別情報を含む前記サービスの起動状況の応答通知を受信し、受信したプログラム識別情報を基にＶＭを特定する
ことを特徴とする仮想計算機システム。
【請求項７】
複数のＶＭを起動する仮想計算機システムのＶＭ管理機能部のＶＭ起動制御方法であって、
前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムを、少なくともひとつ、ＶＭに追加するステップと、
前記プログラムが追加されたＶＭを配布するステップと、
前記プログラムが追加されたＶＭからサービスの起動状況の通知を受信するステップと、
前記サービスの起動状況の応答通知を受信した際に、複数のＶＭのそれぞれの起動条件を定めたＶＭ起動順序表に基づいて、前記プログラムが追加されたＶＭとは別のＶＭを起動するステップと、
を有することを特徴とする仮想計算機システムのＶＭ起動制御方法。
【請求項８】
請求項７に記載のＶＭ起動制御方法において、さらに、
前記ＶＭからサービスの起動状況の通知を所定時間内に受信しなかった際に、ＶＭの起動障害と判定するステップと、
を有することを特徴とする仮想計算機システムのＶＭ起動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンに配置されたプログラムが連携して一つの機能を提供する仮想計算機システムに関する。
【背景技術】
【０００２】
コンピュータ管理の容易化、自動化の有効な手段として、コンピュータ仮想化技術が用いられることがある。仮想化技術を用いると、コンピュータをＶＭ(Virtual Machine)もしくは仮想マシンと呼ぶ仮想的なリソースとして扱い、管理機構から一元的にそれらの起動、停止を制御することが可能である。管理機構に持たせる機能によっては、定められたタイミングに自動でＶＭを起動することも可能である。本技術は、コンピュータを用いるさまざまなシステムに適用されている。
【０００３】
ところで、システムには異なるコンピュータ上で実行される複数のアプリケーションを相互に連携して動作させ、一つの機能を提供するものも存在し、なかには、アプリケーションプロセスを定められた順序で起動することが求められるものが存在する。
例えば、複数のハードウェアをグループとして扱うクラスタリングソフトウェアのなかには、クラスタ管理機能を持つコンピュータおよびアプリケーションを先に起動しておいた上で、クラスタへ参加するコンピュータとアプリケーションを起動しなければ動作しないものがある。
【０００４】
このため、複数アプリケーションプロセスの起動順序の同期制御の技術が、特許文献１に開示されている。詳しくは、特許文献１には、起動の順序制御が必要な各アプリケーションプロセス（ＡＰ）について予め起動順序レベルを設定し、起動プロセス管理ファイルに登録する。また、各サーバの各起動順序レベルに、当該起動順序レベルのＡＰが他サーバで起動完了されることを、自分サーバにおける次の起動順序レベルのＡＰの起動条件とするかどうかを起動連携管理ファイルに登録する。そして、各サーバにおいて、起動プロセス管理ファイルと、起動連携管理ファイルを参照し、各起動順序レベルに、ＡＰの起動制御することが開示されている。
【０００５】
複数のＶＭの起動順序の制御については、非特許文献１に、ＶＭの起動順序とＶＭの起動遅延時間をあらかじめ設定することで、管理機能部は1つのＶＭを起動した後に、一定時間待機した後、次の指定されているＶＭの起動処理を開始することが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−０４３９６２号公報
【非特許文献】
【０００７】
【非特許文献１】「HP UPS Management Moduleインストレーション/コンフィギュレーション ガイドライン、ＶＭware用」507000-192、2010年3月、インターネット＜ＵＲＬ：http://h50146.www5.hp.com/lib/products/servers/proliant/manuals/507000-192-j.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記の非特許文献１に記載の先行技術では、ＶＭの起動順序に配慮してはいるものの、ＶＭの起動完了を確認していない。したがって、ＶＭ起動処理の開始順序を規定したとしても、あるＶＭが全て起動し終わる前に、次のＶＭの起動処理が開始され、結果としてＶＭ上で起動するプログラムが順番を追い越して起動してしまう可能性がある。このような状況を防止するには、ＶＭの起動遅延時間を十分な長さに設定することが必要となる。
【０００９】
ここで、一つのコンピュータハードウェア上で複数ＶＭを同時に実行することは、ＶＭの使用形態としては一般的であり、そのような環境においては、各ＶＭの起動に要する時間はその時々で変動する。したがって、アプリケーションの起動順序を遵守するためには、待機時間は最悪の場合を想定して、実際の起動時間よりも非常に長く設定しておく必要がある。
【００１０】
これにより、クラスタリングソフトウェアやクライアントサーバ等のシステムの起動を確実に行うことができるが、システムの起動時間が長くなる問題がある。
【００１１】
本発明の目的は、複数のＶＭが連携して一つの機能を提供する仮想計算機システムにおいて、システム全体としての起動時間を長大させることなく、起動の順序性の保証する仮想計算機システムおよびＶＭ起動制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
前記課題を解決するため、請求項１に記載の発明は、複数のＶＭを起動する仮想計算機システムのＶＭ管理機能部が、前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムを、少なくともひとつ、ＶＭに追加する起動応答機能追加部と、前記プログラムが追加されたＶＭを配布するＶＭ配布部と、前記ＶＭからサービスの起動状況の応答通知を受信する起動応答受信部と、前記サービスの起動状況の応答通知を受信した際に、複数のＶＭのそれぞれの起動条件を定めたＶＭ起動順序表に基づいて、所定のＶＭを起動するＶＭ起動命令部と、を備えるようにした。
これにより、他のＶＭの起動状況に応じてＶＭを起動するので、ＶＭ起動の順序性を保証することができる。
【００１３】
請求項２に記載の発明は、請求項１に記載の仮想計算機システムにおいて、前記ＶＭ起動順序表は、ＶＭ毎に、ＶＭの起動順序を示す情報と、当該ＶＭの起動条件である、サービスの起動終了の応答通知を行うプログラム名を示す情報と、を含み、前記ＶＭ起動命令部は、前記サービスの起動終了の応答通知を行うプログラム名を示す情報を前記サービスの起動状況の応答通知として受信した際に所定のＶＭを起動するようにした。
これにより、他のＶＭの起動完了に応じてＶＭを起動するので、ＶＭ起動の追越しが生じることがない。
【００１４】
請求項３に記載の発明は、請求項１に記載の仮想計算機システムにおいて、さらに、前記ＶＭからサービスの起動状況の通知を所定時間内に受信しなかった際に、ＶＭの起動障害と判定するＶＭ起動失敗判定部と、を備えるようにした。
これにより、ＶＭの起動障害の検出を行うことができる。
【００１５】
請求項４に記載の発明は、請求項１に記載の仮想計算機システムにおいて、前記ＶＭ配布部は、起動応答機能追加部によりＶＭ起動応答を行うプログラムと前記プログラムの起動スクリプトが追加された仮想ディスクの情報を配布するようにした。
これにより、ＶＭの再構成を行うことなく起動応答機能をＶＭに追加することができ、ＶＭの可用性が向上する。
【００１６】
請求項５に記載の発明は、請求項１に記載の仮想計算機システムにおいて、複数のＶＭと前記ＶＭ管理機能部のそれぞれは、仮想ネットワークのＩＰアドレスが割り当てられ、前記起動応答受信部は、前記仮想ネットワークのＩＰアドレスを含む前記サービスの起動状況の応答通知を受信し、受信した前記ＩＰアドレスを基にＶＭを特定するようにした。
これにより、起動状況の応答通知を行ったＶＭを容易に特定できる。
【００１７】
請求項６に記載の発明は、請求項１に記載の仮想計算機システムにおいて、前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムにはプログラム識別情報が割り当てられ、前記起動応答受信部は、前記プログラム識別情報を含む前記サービスの起動状況の応答通知を受信し、受信したプログラム識別情報を基にＶＭを特定するようにした。
これにより、応答通知を行ったＶＭの特定と、応答通知の種別の特定が容易になる。
【００１８】
請求項７に記載の発明は、
複数のＶＭを起動する仮想計算機システムのＶＭ管理機能部のＶＭ起動制御方法であって、前記ＶＭの所定のサービスの起動状況を前記ＶＭ管理機能部に応答通知するプログラムを、少なくともひとつ、ＶＭに追加するステップと、前記プログラムが追加されたＶＭを配布するステップと、前記プログラムが追加されたＶＭからサービスの起動状況の通知を受信するステップと、前記サービスの起動状況の応答通知を受信した際に、複数のＶＭのそれぞれの起動条件を定めたＶＭ起動順序表に基づいて、前記プログラムが追加されたＶＭとは別のＶＭを起動するステップと、を有するようにした。
これにより、他のＶＭの起動状況に応じてＶＭを起動するので、ＶＭ起動の順序性を保証することができる。
【００１９】
請求項８に記載の発明は、請求項７に記載のＶＭ起動制御方法において、さらに、前記ＶＭからサービスの起動状況の通知を所定時間内に受信しなかった際に、ＶＭの起動障害と判定するステップと、を有するようにした。
これにより、ＶＭの起動障害の検出を行うことができる。
【発明の効果】
【００２０】
本発明によれば、複数のＶＭに配置されたアプリケーションが連携して一つの機能を提供する仮想計算機システムにおいて、システム全体としての起動時間を長大させることなく、アプリケーション起動の順序性の保証することが可能である。
【図面の簡単な説明】
【００２１】
【図１】仮想計算機システムの構成を示す図である。
【図２】従来のＶＭ起動の制御方法を適用した場合のシーケンス図である。
【図３】実施形態の仮想計算機システムのＶＭ起動シーケンスの一例を示す図である。
【図４】起動終了の応答通知を行うＶＭのリンクファイル構成を説明する図である。
【図５】複数の起動状態の応答通知を行うＶＭのリンクファイル構成を説明する図である。
【図６】複数の起動状態の応答通知を行う場合のＶＭ起動順序表の一例を示す図である。
【図７】複数の起動状態の応答通知を行う場合のシーケンス図である。
【図８】２つのＶＭ群を並列して起動する際の、シーケンス図である。
【図９】ＶＭ管理機能部の制御フロー図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、実施形態の仮想計算機システム１の構成を示す図である。
実施形態の仮想計算機システム１は、コンピュータをエミュレーションしているＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の３つのＶＭ（４）（ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）を総称してＶＭ（４）と称する）と、ＶＭ（４）の起動を制御するＶＭ管理機能部２と、記憶装置に記憶されＶＭ起動順序を示すＶＭ起動順序表３を有している。
ＶＭ（４）は、詳細を後述するが、ＶＭ管理機能部２へ起動終了したことを通知するＶＭ起動応答部（４１ａ、４１ｂ、４１ｃ）と、起動応答時の通知元を識別するために、起動応答のＩＰアドレス（４２ａ、４２ｂ、４２ｃ）を保持している。
ここで、ＶＭ管理機能部２は、仮想計算機システム１のホスト型仮想化ソフトウェアまたはハイパーバイザーの一部として構成される。なお、仮想計算機システム１は、サーバ装置等の情報処理装置のＣＰＵ（Central Processing Unit：中央処理装置）のプログラム処理により実現される。
【００２３】
ＶＭ管理機能部２は、起動応答機能追加部２１とＶＭ配布部２２と起動応答受信部２３とＶＭ起動命令部２４とＶＭ起動失敗判定部２５の処理部を有して構成されている。それぞれの処理部を以下に詳細に説明する。
【００２４】
図２は、仮想計算機システム１において、従来のＶＭ起動の制御方法を適用した場合のＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の起動状況を示すシーケンス図である。
ＶＭ管理機能部２は、まず、ＶＭ１（４ａ）にＶＭ１起動命令を通知する（Ｓ２１）。ＶＭ１（４ａ）は、これに応じて、起動処理５ａを開始する。
【００２５】
ＶＭ管理機能部２は、ＶＭ１起動命令を通知後、所定の起動間隔Ｓ２２が経過した後に、ＶＭ２（４ｂ）にＶＭ２起動命令を通知する（Ｓ２３）。ＶＭ２（４ｂ）は、これに応じて、起動処理５ｂを開始する。
つぎに、ＶＭ管理機能部２は、ＶＭ２起動命令を通知後、所定の起動間隔Ｓ２４が経過した後に、ＶＭ３（４ｃ）にＶＭ３起動命令を通知する（Ｓ２５）。ＶＭ３（４ｃ）は、これに応じて、起動処理５ｃを開始する。
【００２６】
図２の従来のＶＭ起動の制御方法では、ＶＭ（４）の起動順序に配慮してはいるものの、ＶＭ（４）の起動完了を確認していない。このため、図２に示すように、ＶＭ１（４ａ）の起動処理５ａが長大になると、破線に示すように起動遅延することがある（５ａ２）。このため、ＶＭ２（４ｂ）の起動処理が、ＶＭ１（４ａ）の起動処理を追越してしまう場合がある。ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の連係により機能するシステムでは、問題が生じることがある。このため、起動間隔Ｓ２２や起動間隔Ｓ２４を十分な長さに設定することが必要となる。
【００２７】
実施形態の仮想計算機システム１では、ＶＭ（４）のそれぞれがＶＭ起動の終了応答の通知（以下、起動応答と記す）を行い、ＶＭ管理機能部２が、この起動応答を受信した際に、ＶＭ（４）のそれぞれの起動条件を定めたＶＭ起動順序表３に基づいて、起動応答を行ったＶＭとは別のＶＭに起動命令を通知するようにした。これにより、一つのＶＭ（４）の起動終了後に、他のＶＭ（４）が起動するので、ＶＭ（４）の起動処理の追越しが生じることがない。
【００２８】
図３に、実施形態の仮想計算機システム１のＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の起動状況を示すシーケンス図の一例を示す。
図３では、ＶＭ管理機能部２が、図１のＶＭ起動順序表３に従い、ＶＭ（４）の起動管理を行っている。
【００２９】
まず、ＶＭ管理機能部２のＶＭ起動命令部２４（図１参照）は、ＶＭ起動順序表３（図１参照）の起動順序欄を参照して、最初（起動順序が“１”）に起動するＶＭを判別する。そして、ＶＭ１（４ａ）の起動命令を通知する（Ｓ３１）。ＶＭ１（４ａ）は、これに応じて、起動処理５ａを開始する。
ＶＭ管理機能部２の起動応答受信部２３（図１参照）は、ＶＭ１（４ａ）からの起動応答の入力待ち状態となる（Ｓ３２）。
【００３０】
ＶＭ１（４ａ）は、起動処理５ａの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ起動応答部４１ａからＶＭ管理機能部２の起動応答受信部２３にＶＭ１起動応答を通知する（Ｓ３３）。
ＶＭ管理機能部２のＶＭ起動命令部２４は、ステップＳ３２の入力待ち状態で、ＶＭ起動順序表３（図１参照）の起動順序欄を参照して、起動順序が“２”のＶＭを判別し、判別したＶＭ２（４ｂ）のＶＭ起動条件欄を参照して、ＶＭ２（４ｂ）の起動条件である“ＶＭ１起動応答”を得る。そして、起動応答受信部２３がＶＭ１起動応答を受信すると、ＶＭ起動命令部２４がＶＭ２（４ｂ）のＶＭ２起動命令を通知する（Ｓ３４）。ＶＭ管理機能部２の起動応答受信部２３は、その後、起動応答の入力待ち状態となる（Ｓ３５）。
【００３１】
ＶＭ２（４ｂ）は、ＶＭ２起動命令に応じて起動処理５ｂを開始する。そして、ＶＭ２（４ｂ）は、起動処理５ｂの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ起動応答部４１ｂからＶＭ管理機能部２の起動応答受信部２３にＶＭ２起動応答を通知する（Ｓ３６）する。
ＶＭ管理機能部２のＶＭ起動命令部２４は、ステップＳ３５の入力待ち状態で、ＶＭ起動順序表３（図１参照）の起動順序欄を参照して、起動順序が“３”のＶＭを判別し、判別したＶＭ３（４ｃ）のＶＭ起動条件欄を参照して、ＶＭ３（４ｃ）の起動条件である“ＶＭ２起動応答”を得る。そして、ＶＭ管理機能部２のＶＭ起動命令部２４は、起動応答受信部２３がＶＭ２起動応答を受信すると、ＶＭ３（４ｃ）のＶＭ３起動命令を通知する（Ｓ３７）。ＶＭ管理機能部２の起動応答受信部２３は、その後、起動応答の入力待ち状態となる（Ｓ３８）。
【００３２】
ＶＭ３（４ｃ）は、ＶＭ３起動命令に応じて起動処理５ｃを開始する。そして、ＶＭ３（４ｃ）は、起動処理５ｃの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ起動応答部４１ｃからＶＭ管理機能部２の起動応答受信部２３にＶＭ３起動応答を通知する（Ｓ３９）。
ＶＭ管理機能部２のＶＭ起動命令部２４は、ステップＳ３８の入力待ち状態で、ＶＭ３起動応答を受信すると、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の起動処理を終了する。
【００３３】
上記のとおり、実施形態のＶＭ管理機能部２は、ＶＭ起動応答を受信した際に、ＶＭ毎の起動順序と起動条件を記憶するＶＭ起動順序表３に基づいて、つぎのＶＭ起動を行うようにしているので、ＶＭ（４）の起動追越しが生じることがなく、順序性を確保できるとともに、余計な待機時間が生じることがない。
【００３４】
ところで、図３のステップＳ３２またはＳ３５またはＳ３８の起動応答の入力待機状態で、ＶＭ起動命令を通知した後の所定の起動判定時間以内に、起動応答が入力されたか否かを判定するようにしてもよい。
所定の起動判定時間を超えても、起動応答が入力されない場合には、何らかの障害によってＶＭが起動しなかったと判定して、仮想計算機システム１を復旧処理に移行させる
この処理は、図１のＶＭ起動失敗判定部２５で実施される。
この時の起動判定時間は、ＶＭ起動順序表３にＶＭ（４）毎に記憶するようにする。
【００３５】
つぎに、起動応答（起動終了の応答通知）を行うＶＭ（４）の構成を、図４により説明する。
ここでは、実施形態のＶＭ（４）が、Ｌｉｎｕｘ（登録商標）等のＯＳによるシステムとして説明するが、プログラム（サービス）の起動をスクリプト制御しているシステムであれば同様に実現可能である。
【００３６】
ＬｉｎｕｘＯＳでは、起動時に実行するプログラム（サービス）を起動する起動スクリプトプログラムが、／ｅｔｃ／ｉｎｉｔ．ｄディレクトリに格納され、マルチユーザモード等の実行レベルに応じて、／ｅｔｃ／ｒｃ．ｄ／ｒｃ？．ｄディレクトリ（？には実行レベルを示す数字が入る）に、起動スクリプトのリンクが記録されている。このｒｃ？．ｄディレクトリのリンクファイルを実行することで、起動処理を行っている。
図４は、ｒｃ？．ｄディレクトリの一例を示す図である。
【００３７】
詳細には、ｒｃ？．ｄディレクトリ（４０）には、“Ｓ”と“２けたの数字”で始まるリンクファイルが格納され、起動時に、“２けたの数字”の小さいリンクファイルから順に実行される。つまり、ｒｃ？．ｄディレクトリ（４０）にプログラム（サービス）のリンクファイルを格納し、リンクファイルの“２けたの数字”を設定することでプログラム（サービス）の実行順序を制御することができる。
【００３８】
ＶＭ管理機能部２の起動応答機能追加部２１は、それぞれのＶＭ（４）の仮想ディスクの／ｅｔｃ／ｉｎｉｔ．ｄディレクトリにＶＭ（４）の起動応答を行うプログラムnotificationAppを追加し、／ｅｔｃ／ｒｃ．ｄ／ｒｃ？．ｄディレクトリ（４０）にプログラムnotificationAppのリンクファイルであるS98notificationApp（４８）を追加する。そして、ＶＭ管理機能部２のＶＭ配布部２２により仮想計算機システム１内に配布される。
【００３９】
ＶＭ管理機能部２のＶＭ起動命令部２４によりＶＭ（４）が起動された際に、／ｅｔｃ／ｒｃ．ｄ／ｒｃ？．ｄディレクトリ（４０）のリンクファイルが順次実行されてＶＭ（４）が起動する。このとき、プログラムnotificationAppのリンクファイルであるS98notificationApp（４８）の“２ケタの数字”９８は、他のリンクファイル４５、４６、４７より大きいため、最後に実行される。つまり、プログラムnotificationAppは、ＶＭ（４）の起動の最後に実行され、ＶＭ（４）からＶＭ管理機能部２の起動応答受信部２３に起動応答を行うことができる。
【００４０】
ところで、図３に示したように、ＶＭ管理機能部２の起動応答受信部２３は、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）のそれぞれから、起動応答（ＶＭ起動の終了応答）を受信する。このため、起動応答受信部２３は、いずれのＶＭ（４）からの起動応答であるかを特定する必要がある。
実施形態のＶＭ管理機能部２は、つぎの２つの方法のどちらかにより、ＶＭ（４）の特定を行う。実装コスト等を考慮して、自由に選択可能とする。
【００４１】
ひとつめの方法は、仮想計算機システム１の内部のＶＭ管理機能部２と生成されたＶＭ（４）から構成される内部仮想ネットワークのＩＰアドレスにより特定する方法である。内部仮想ネットワークのＩＰアドレスの割り当てを、ＶＭ管理機能部２が取得し、ＶＭ起動順序表３にＶＭ（４）ごとにＶＭ名とＩＰアドレスを対応付けて管理し、受信した起動応答のＩＰアドレスから送信元のＶＭを特定する。
この場合、図１のＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）のそれぞれは、異なる値の起動応答のＩＰアドレス（４２ａ、４２ｂ、４２ｃ）が割り当てられるので（図１参照）、ＩＰアドレスから送信元のＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）のいずれかを特定することができる。
【００４２】
２つめの方法は、ＶＭ（４）の起動応答の通知内容に、ＶＭ（４）毎のプログラムnotificationAppを一意に特定する識別情報を含むようにする方法である。起動応答機能追加部２１が、ＶＭの起動応答を通知するプログラムnotificationAppに対応づけて識別情報を管理し、プログラムnotificationAppの実行内容を、当該プログラムを一意に特定する識別情報を含むＶＭの応答通知を行うように修正し、それぞれのＶＭ（４）の仮想ディスクに追記する。これにより、プログラムnotificationAppを実行したときの起動応答に識別情報が含まれるので、起動応答受信部２３は、識別情報から、プログラムnotificationAppを特定し、応答通知を行ったＶＭ（４）を識別する。
【００４３】
つぎに、一つのＶＭ（４）からＶＭ管理機能部２に、複数のＶＭ起動の状態応答を行う場合について、図５と図６と図７により説明する。
図５は、この場合のｒｃ？．ｄディレクトリ５０を示す図である。リンクファイルS00notificationApp1（５１）は、ＶＭ（４）の状態応答をおこなうプログラム（サービス）であるnotificationApp1のリンクファイルであり、リンクファイルS20notificationApp2（５４）はnotificationApp2のリンクファイルであり、リンクファイルS98notificationApp3（５６）はnotificationApp3のリンクファイルである。
【００４４】
リンクファイルS00notificationApp1（５１）の“２ケタの数字”は00であり、最も小さな値となっている。このため、notificationApp1プログラムは、ＶＭ（４）の起動の最初に実行される。つまり、notificationApp1プログラムは、ＶＭ（４）の開始時の起動応答を通知することができる。
リンクファイルS20notificationApp2（５４）の“２ケタの数字”は20であり、リンクファイルS10xxx（５２）とS11yyy（５３）の実行とリンクファイルS21zzz（５５）の実行の間で、実行される。つまり、notificationApp2プログラムはＶＭ（４）の途中の起動応答を通知することができる。
リンクファイルS98notificationApp3（５６）の“２ケタの数字”は98であり、最も大きな値となっている。このため、notificationApp3プログラムは、ＶＭ（４）の起動の最後に実行される。つまり、notificationApp3プログラムは、ＶＭ（４）の起動終了時の起動応答を通知することができる。
【００４５】
図６は、複数の起動状態の起動応答を行う場合のＶＭ起動順序表３の一例を示す図である。ＶＭ（４）のそれぞれに対応して、ＶＭ名６１と、対応する仮想ネットワークのＩＰアドレス６２と、起動順序６３と、ＶＭ起動条件６４と、ＶＭの起動判定時間６５を記録している。
【００４６】
図６のＶＭ起動順序表３では、ＶＭ２（４ｂ）のＶＭ起動条件６４を、ＶＭ１起動応答２に設定し、ＶＭ１（４ａ）の起動途中に通知される起動応答（notificationApp2プログラムの起動応答）により、ＶＭ２（４ｂ）を起動している。このとき、ＶＭ２（４ｂ）と、ＶＭ１（４ａ）のnotificationApp2プログラム以降に実行されるプログラム（図５のS21zzzで実行されるzzzプログラム）は、無関係なプログラムとする。
これにより、ＶＭ１（４ａ）とＶＭ２（４ｂ）の起動を並列に行うことができるので、起動の高速化を図れる。
【００４７】
ところで、図６や図１のＶＭ起動順序表３のＶＭ起動条件６４には、所定のＶＭ起動応答が設定されていて、ＶＭ（４）から設定されたＶＭ起動応答があった時に、他ＶＭ（４）を起動することを説明した。しかし、ＶＭ起動条件６４は、所定のＶＭ起動応答が設定されるだけでなく、複数のＶＭ起動応答の論理積や論理和を条件としてもよい。
【００４８】
図７は、一つのＶＭ（４）からＶＭ管理機能部２に、複数のＶＭ起動の起動応答を行う場合のシーケンス図の一例である。
まず、ＶＭ管理機能部２のＶＭ起動命令部２４は、ＶＭ起動順序表３（図６参照）の起動順序６３を参照して、最初（起動順序が“１”）に起動するＶＭを判別する。そして、ＶＭ１（４ａ）の起動命令を通知する（Ｓ７０１）。ＶＭ１（４ａ）は、これに応じて、起動処理５ａを開始する。
ＶＭ管理機能部２の起動応答受信部２３は、ＶＭ１（４ａ）からの起動応答の入力待ち状態となる（Ｓ７０２）。
【００４９】
ＶＭ１（４ａ）は、図５のリンクファイルに従い、まず、リンクファイルS00notificationApp1（５１）を実行し、起動応答受信部２３にＶＭ１起動応答１を通知する（Ｓ７０３）。
ＶＭ１起動応答１を受信したＶＭ管理機能部２のＶＭ起動命令部２４は、ＶＭ起動順序表３（図６参照）を参照して、ＶＭ１起動応答１が次に起動するＶＭ２（４ｂ）の起動条件であるか否かを判定する。この場合、ＶＭ１起動応答１はＶＭ２（４ｂ）の起動条件でないので、起動応答の入力待ち状態を継続する。
【００５０】
ＶＭ１（４ａ）は、リンクファイルS10xxx（５２）、リンクファイルS11yyy（５３）を順に実行する。そして、ＶＭ１（４ａ）がリンクファイルS20notificationApp2（５４）を実行すると、起動応答受信部２３にＶＭ１起動応答２を通知する（Ｓ７０４）。
ＶＭ１起動応答２を受信したＶＭ管理機能部２のＶＭ起動命令部２４は、ＶＭ起動順序表３（図６参照）を参照して、ＶＭ１起動応答２が次に起動するＶＭ２（４ｂ）の起動条件であるか否かを判定する。この場合、ＶＭ１起動応答２がＶＭ２（４ｂ）の起動条件となっているので、ＶＭ管理機能部２のＶＭ起動命令部２４はＶＭ２（４ｂ）のＶＭ２起動命令を通知する（Ｓ７０５）。
【００５１】
ＶＭ２（４ｂ）は、ＶＭ２起動命令に応じて起動処理５ｂを開始し、ＶＭ管理機能部２の起動応答受信部２３は、ＶＭ２（４ｂ）からの起動応答の入力待ち状態となる（Ｓ７０６）。
【００５２】
ところで、ＶＭ管理機能部２の起動応答受信部２３は、ＶＭ１（４ａ）からの起動応答の入力待ち状態を継続している。
ＶＭ１（４ａ）が、リンクファイルS21zzz（５５）を実行した後に、リンクファイルS98notificationApp3（５６）を実行すると、起動応答受信部２３にＶＭ１起動応答３を通知する（Ｓ７０７）
起動応答受信部２３によりＶＭ１起動応答３を受信したＶＭ管理機能部２は、ＶＭ１（４ａ）の起動制御を終了する。
【００５３】
ＶＭ２起動命令に応じて起動処理５ｂを開始したＶＭ２（４ｂ）は、起動処理５ｂの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ管理機能部２の起動応答受信部２３にＶＭ２起動応答を通知する（Ｓ７０８）する。
ＶＭ２起動応答を受信したＶＭ管理機能部２は、ＶＭ起動順序表３（図６参照）に基づいて、ＶＭ３（４ｃ）のＶＭ３起動命令を通知する（Ｓ７０９）。ＶＭ管理機能部２の起動応答受信部２３は、その後、起動応答の入力待ち状態となる（Ｓ７１０）。
【００５４】
ＶＭ３起動命令に応じて起動処理５ｃを開始したＶＭ３（４ｃ）は、起動処理５ｃの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ管理機能部２の起動応答受信部２３にＶＭ３起動応答を通知する（Ｓ７１１）する。
ＶＭ管理機能部２のＶＭ起動命令部２４は、ステップＳ７１１の入力待ち状態で、ＶＭ３起動応答を受信すると、ＶＭ３（４ｃ）の起動処理を終了する。
【００５５】
図７に示したように、ＶＭ１（４ａ）が、複数のＶＭ１起動応答を行うことにより、ＶＭ管理機能部２は、ＶＭ１（４ａ）の起動状況を細かい粒度で把握することができる。
また、ＶＭ１（４ａ）の起動途中で、ＶＭ２（４ｂ）を起動することで、ＶＭ１（４ａ）とＶＭ２（４ｂ）の並列起動を行うことができる。これにより、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）によって提供されるサービスの、システム起動時間を短縮することができる。
【００５６】
また、ＶＭ（４）の並列処理を容易に行うため、ＶＭ管理機能部２は、ＶＭ（４）毎に、起動応答と受信処理や起動時間管理等の制御を行う構成とすることが望ましい。
ＶＭ管理機能部２の制御フローの詳細は、後述する。
【００５７】
さらに、ＶＭ（４）の起動開始から起動終了の起動応答通知を受けるまでの処理時間が、所定の起動判定時間以内であるか否かを判定することにより、ＶＭ（４）の起動障害検出を行うだけでなく、複数の起動応答のそれぞれで、起動からの経過時間以内に起動応答の通知を受信したか否かによりＶＭ起動処理の障害状況を判定するようにしてもよい。
特に、ＶＭ起動処理の開始時の起動応答（ＶＭ１起動応答１）の起動判定時間を、カーネル起動に要すると想定される時間とすれば、カーネル起動障害の検出を行うこともできる。
【００５８】
上記の説明では、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）の起動順序を保証して起動する場合について説明したが、さらに、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）のＶＭ群とは別のＶＭ４（４ｄ）とＶＭ５（４ｅ）から成るＶＭ群を並列に起動する場合について説明する。この構成により、仮想計算機システム１で、ＶＭ１（４ａ）とＶＭ２（４ｂ）とＶＭ３（４ｃ）のＶＭ群により機能Ａが提供され、ＶＭ４（４ｄ）とＶＭ５（４ｅ）のＶＭ群により機能Ｂが提供される。
【００５９】
図８は、２つのＶＭ群を並列して起動する際の、起動シーケンスの一例を示す図である。図８では、それぞれのＶＭ群で、最初に起動するＶＭ１（４ａ）とＶＭ４（４ｄ）のシーケンスを示している。
【００６０】
ここで、特に図示しないが、２つのＶＭ群を並列して起動する場合にも、図１や図６に示したＶＭ起動順序表３に基づいて、ＶＭ（４）の起動順序の制御を行う。ただし、ＶＭ起動順序表３には、ＶＭ群を特定する情報が付加されている。また、ＶＭ群毎に、ＶＭ起動順序表３を設けてもよい。
【００６１】
まず、ＶＭ管理機能部２のＶＭ起動命令部２４は、ＶＭ起動順序表３を参照して、機能Ｂを提供するＶＭ群の中で起動順序が“1”のＶＭを特定（ＶＭ４）する。そして、ＶＭ４（４ｄ）の起動命令を通知する（Ｓ８１）。ＶＭ４（４ｄ）は、これに応じて、起動処理５ｄを開始する。
【００６２】
ＶＭ管理機能部２の起動応答受信部２３は、ＶＭ４（４ｄ）からの起動応答の入力待ち状態となるとともに、ＶＭ起動順序表３を参照して、機能Ａを提供するＶＭ群の中で起動順序が“1”のＶＭを特定（ＶＭ１）する。そして、ＶＭ１（４ａ）の起動命令を通知する（Ｓ８２）。ＶＭ１（４ａ）は、これに応じて、起動処理５ａを開始する。
【００６３】
ＶＭ４（４ｄ）は、起動処理５ｄの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ管理機能部２の起動応答受信部２３にＶＭ４起動応答を通知する（Ｓ８３）。
【００６４】
ＶＭ管理機能部２のＶＭ起動命令部２４は、入力待ち状態で、ＶＭ起動順序表３を参照して、機能Ｂを提供するＶＭ群の中でＶＭ４（４ｄ）の次に起動するＶＭを特定し、また、機能Ａを提供するＶＭ群の中でＶＭ１（４ａ）の次に起動するＶＭを特定しておく。
そして、起動応答受信部２３がＶＭ４起動応答を受信すると、ＶＭ起動命令部２４が、機能Ｂを提供するＶＭ群の次に起動するＶＭの起動命令を通知する（図示せず）。
【００６５】
ＶＭ１（４ａ）は、起動処理５ａの最後に、ＶＭ管理機能部２へ起動終了したことを通知する起動応答プログラムを実行し、ＶＭ管理機能部２の起動応答受信部２３にＶＭ１起動応答を通知する（Ｓ８４）。
そして、起動応答受信部２３がＶＭ１起動応答を受信すると、ＶＭ起動命令部２４が、機能Ａを提供するＶＭ群の次に起動するＶＭの起動命令を通知する（図示せず）。
【００６６】
上記のように、複数のＶＭ群を並列に起動する場合であっても、ＶＭ群を特定する情報を付加したＶＭ起動順序表３により、起動時間を長大させることなく、ＶＭ起動の順序性の保証することができる。
なお、ＶＭ（４）のそれぞれに内部仮想ネットワークのＩＰアドレスを割当てるか、または、起動応答の通知内容に、ＶＭ（４）毎のプログラムnotificationAppを一意に特定する識別情報を含むようにすることで、起動応答を通知したＶＭ（４）を特定することは、図３や図７のシーケンスと同様である。
【００６７】
つぎに、ＶＭ管理機能部２の制御フローを図９により説明する。
図９の制御フローは、一つのＶＭ（４）の起動を制御するフローチャートであり、起動するＶＭ（４）に対応して、プログラム生成され実行される。図８では、制御対象の一つのＶＭ（４）をＶＭｎと記す。
【００６８】
まず、ＶＭ管理機能部２は、ＶＭ起動応答を通知したＶＭｎを識別するために、ＶＭｎの内部仮想ネットワークのＩＰアドレスを取得する（Ｓ９０１）。そして、ＶＭ管理機能部２の起動応答受信部２３に送信元のＩＰアドレスを含む起動応答を行う起動応答プログラム（notificationApp）を、ＶＭｎに追加する（Ｓ９０２）。なお、ＶＭｎは仮想ディスクに記録されているものとする。
次に、図４や図５で説明したように、ＶＭｎの起動スクリプトに起動応答プログラムを登録する（Ｓ９０３）。
【００６９】
起動応答プログラムの登録と、起動スクリプトに起動応答プログラムを追加したＶＭｎの仮想ディスクを、仮想計算機システム１内に配布する（Ｓ９０４）。
そして、ＶＭ管理機能部２は、ＶＭ起動順序表３を参照して、制御対象のＶＭｎが、起動順序が“１”のＶＭｎであるか否かを判定する（Ｓ９０５）。
【００７０】
起動順序“１”のＶＭｎであれば（Ｓ９０５のＹｅｓ）、ＶＭ管理機能部２は、ＶＭｎに起動命令を通知する（Ｓ９０７）。
起動順序“１”でないＶＭｎであれば（Ｓ９０５のＮｏ）、ステップＳ９０６に進み、ＶＭ起動順序表３を参照して、ＶＭ起動条件に対応する他のＶＭｎの起動応答（起動指令）の通知の有無を判定する（Ｓ９０６）。
起動指令の通知がなければ（Ｓ９０６のＮｏ）、起動指令の通知を待つ。起動指令の通知があれば（Ｓ９０６のＹｅｓ）、ステップＳ９０７に進み、ＶＭ管理機能部２は、ＶＭｎに起動命令を通知する（Ｓ９０７）。
【００７１】
つぎに、ＶＭ管理機能部２は、ＶＭｎの起動時間判定を行うために、ＶＭｎ起動タイマを初期化する（Ｓ９０８）。そして、以下の処理をＶＭｎの起動終了まで繰り返す。
ステップＳ９０９で、ＶＭｎ起動タイマを更新する。
そして、ＶＭ管理機能部２は、ＶＭｎからの起動応答の受信の有無を判定する（Ｓ９１０）。
【００７２】
ＶＭｎから起動応答があれば（Ｓ９１０のＹｅｓ）、ステップＳ９１３に進む。
ＶＭｎから起動応答がなければ（Ｓ９１０のＮｏ）、ＶＭｎの起動障害を検出するために、ＶＭｎ起動タイマのタイムアップを判定する（Ｓ９１１）。
タイムアップしていなければ（Ｓ９１１のＮｏ）、ステップＳ９０９に進み、ＶＭｎの起動監視を継続する。
【００７３】
ＶＭｎから起動応答の通知がなく、ステップＳ９１１でＶＭｎ起動タイマがタイムアップしていれば（Ｓ９１１のＹｅｓ）、ＶＭｎの再起動等のＶＭｎ起動障害処理を行い（Ｓ９１２）、ＶＭ管理機能部２の一つのＶＭｎの起動処理を終了する。
【００７４】
ＶＭ管理機能部２は、ステップＳ９１３で、ＶＭ起動順序表３を参照して、受信した起動応答が他のＶＭｎの起動条件になっていないか判定する。他のＶＭｎの起動条件であれば（Ｓ９１３のＹｅｓ）、他のＶＭｎの起動指令を通知する他ＶＭｎの起動処理（Ｓ９１４）を行い、ステップＳ９１５に進む。
受信した起動応答が他のＶＭｎの起動条件でなければ（Ｓ９１３のＮｏ）、ステップＳ９１５に進む。
【００７５】
ステップＳ９１５では、受信した起動応答が、起動完了の起動応答であるか否かを判定する。起動完了の起動応答でなければ（Ｓ９１５のＮｏ）、ステップＳ９０９に進み、次の起動応答の受信処理を行う。
起動完了の応答通知であれば（Ｓ９１５のＹｅｓ）、ＶＭ管理機能部２の一つのＶＭｎの起動処理を終了する。
【００７６】
実施形態の仮想計算機１では、ＶＭｎ上で動作するサービスやアプリケーションプログラムに変更を加えないので、ＶＭｎを再構成することなく、起動応答プログラムの追加と起動スクリプトの修正でＶＭの起動制御を行える。これにより、仮想計算機システム１の可用性や保守性を容易に向上することができる。
【００７７】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記の実施例は本発明で分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。
【符号の説明】
【００７８】
１  仮想計算機システム
２  ＶＭ管理機能部
２１  起動応答機能追加部
２２  ＶＭ配布部
２３  起動応答受信部
２４  ＶＭ起動命令部
２５  ＶＭ起動失敗判定部
３  ＶＭ起動順序表
４ａ  ＶＭ１
４ｂ  ＶＭ２
４ｃ  ＶＭ３
４  ＶＭ
４１ａ，４１ｂ，４１ｃ  ＶＭ起動応答部
４２ａ，４２ｂ，４２ｃ  起動応答ＩＰアドレス
【図１】
2017142722.tif 000003
【図２】
2017142722.tif 000004
【図３】
2017142722.tif 000005
【図４】
2017142722.tif 000006
【図５】
2017142722.tif 000007
【図６】
2017142722.tif 000008
【図７】
2017142722.tif 000009
【図８】
2017142722.tif 000010
【図９】
2017142722.tif 000011