図1に、本実施の形態に係るシステム概要を示す。例えば地域IP(Internet Protocol)網であるIP網7には、呼制御サーバ1と、端末3A乃至3Cと、サーバ5A乃至5Cとが接続されている。呼制御サーバ1は、端末間、サーバ間、又は端末とサーバとの間において、通話の開始から終了までの手順を制御するSIP(Session Initiation Protocol)サーバである。サーバ5A乃至5Cには端末又はサーバがさらに接続される場合があるが、説明を簡単にするため図示していない。なお、図1において端末及びサーバの数は3であるが、数に限定は無い。
図2に、呼制御サーバ1において実行される仮想マシンに割り当てられるハードウェアを示す。呼制御サーバ1においては、仮想マシン1A及び1Bが実行される。仮想マシン1Aには、CPU(Central Processing Unit)11と、NIC(Network Interface Card)12と、メモリ13と、ディスク14とが割り当てられる。仮想マシン1Bには、CPU15と、NIC16と、メモリ17と、ディスク18とが割り当てられる。CPU11及び15は、CPUコアであってもよい。NIC12及び16は、例えばLAN(Local Area Network)カードである。メモリ13及び17は、例えばDRAM(Dynamic Random Access Memory)である。ディスク14及び18は、例えばハードディスクである。図2において、仮想マシンの数は2であるが、数に限定は無い。
図3に、呼制御サーバの機能ブロック構成を示す。呼制御サーバ1においては、仮想スイッチ102を含むホストOS101が実行される。ホストOS101上には、仮想マシン115及び125と、再開管理部104、リソース管理部105、順序制御部106、停止制御部107及び管理データ格納部108を含む監視部103とが実行される。メモリ等の記憶装置には、管理データ格納部108のための領域が確保される。仮想マシン115上には、ゲストOS114と、通知制御部113を含むミドルウェア112と、アプリケーションプログラム111とが実行される。仮想マシン125上には、ゲストOS124と、通知制御部123を含むミドルウェア122と、アプリケーションプログラム121とが実行される。また、呼制御サーバ1は、NIC130を有しており、NIC130を介して外部の装置と通信を行う。
仮想スイッチ102は、NIC130を介して受信したパケットを仮想マシン115及び125に中継する。また、仮想スイッチ102は、仮想マシン115及び125から受け取ったデータをNIC130に出力する。NIC130は、伝送路(図示せず)から受信したデータを仮想スイッチ102に出力する。また、NIC130は、仮想スイッチ102から受け取ったデータを伝送路に出力する。
仮想マシン115及び125は、交換機システムを実現するための仮想マシンであり、ホストOS101によって起動される。ゲストOS114は仮想マシン115のOSであり、ゲストOS124は仮想マシン125のOSである。ミドルウェア112はゲストOS114上で実行されるミドルウェアであり、ミドルウェア122はゲストOS124上で実行されるミドルウェアである。通知制御部113及び123は、仮想マシン115及び125の状態をホストOS101及び監視部103に通知する処理等を実行する。アプリケーションプログラム111及び121は、サービス(本実施の形態においては、通話)に関連する処理を実行する。
再開管理部104は、仮想マシンの生成をリソース管理部105に要求し、仮想マシンのサスペンド(ここでは、強制停止)を停止制御部107に要求する。リソース管理部105は、再開管理部104からの要求に応じ、仮想マシンの生成及び削除をホストOS101に要求する。順序制御部106は、現用ファイル用の仮想マシンをバックアップファイル用の仮想マシンより優先する順序でホストOS101に仮想マシンの起動を要求する。停止制御部107は、再開管理部104からの要求に応じ、仮想マシンのサスペンドをホストOS101に要求する。
本実施の形態においては、呼制御サーバ1における仮想マシンによって交換機システムが実現される。本交換機システムにおいては、運転ファイルのバックアップが所定のタイミングで収集される。運転ファイルには、システムファイル、局データ及び設定データ等が含まれる。収集されたバックアップファイルは、ディスク14又は18に格納される。
バックアップファイルは、例えば以下のようなタイミングで収集される。(1)システムの構築及び現在稼働中のシステムによって利用される運転ファイル(以下、現用ファイルと呼ぶ)の更新の際、起動実績があるファイルとして収集される。なお、局データは、例えば回線開通等の際に更新される。(2)定期的(例えば24時間毎)に収集される。
図4を用いて、バックアップファイルが収集されるタイミングについて説明する。図4の上段には時間軸が示されており、三角印が付された時点においてイベントが実行されている。図4の例においては、交換機システムの構築というイベントの実行時、時点501、局データの更新というイベントの実行時及び時点502にバックアップファイルが収集される。また、現用ファイルがバージョン1からバージョン2に更新される際、バックアップファイルが収集される。さらに、時点503、局データの更新というイベントの実行時及び時点504にバックアップファイルが収集される。
そして、システムに異常が発生した場合には、後述の再開エスカレーションの手順に従って、まず現用ファイルによるシステムの再開を試みる。現用ファイルによるシステムの再開に失敗した場合には、バックアップファイルによるシステムの再開を試みる。
図5を用いて、再開エスカレーションについて説明する。再開エスカレーションとは、サービスに与える影響を可能な限り小さくするため、サービスに与える影響が少ない部分から初期設定を行い、初期設定の範囲を徐々に拡大させることである。
現用系システムにおいて異常が発生した場合には、サービスに与える影響が最も少ない、アプリケーションプログラムの初期化を最初に行う(図5における(1))。(1)によって異常が取り除かれなかった場合には、アプリケーションプログラム及びミドルウェアの初期化を行う(図5における(2))。(2)によって異常が取り除かれなかった場合には、OS及びハードウェアの初期化を行う(図5における(3))。OS及びハードウェアの初期化においては再起動を行うため時間がかかるので、OS及びハードウェアの初期化が完了するまでの間、現用系のシステムを待機系のシステムに切り替えることにより復旧を試みる(図5における(4))。
待機系のシステムに切り替えても復旧することができない場合には、OS及びハードウェアの初期化が完了した現用系のシステムにおいて復旧を試みる。復旧に失敗した場合には、バックアップファイルによりシステムを再構築する(図5における(5))。
本実施の形態においては、図5における(5)に示した、バックアップファイルによるシステムの再構築が完了するまでの時間を短縮する方法について説明する。
図6に、現用ファイル用の仮想マシンについてOS及びハードウェアの初期化を行う際に呼制御サーバ1が実行する処理の処理フローを示す。まず、再開管理部104は、現用ファイル用の仮想マシンに資源(例えばCPU又はCPUコア)を割り当てることをリソース管理部105に要求する。リソース管理部105は、現用ファイル用の仮想マシンに資源を割り当てることをホストOS101に要求する。これに応じ、ホストOS101は、現用ファイル用の仮想マシンに資源を割り当てることにより、現用ファイル用の仮想マシンを生成する(図6:ステップS1)。
順序制御部106は、現用ファイル用の仮想マシンを起動する(ステップS3)。具体的には、順序制御部106は、現用ファイル用の仮想マシンをホストOS101に起動させる。また、現用ファイル用の仮想マシンは、現用ファイルのロードモジュールをメモリにロードする。
再開管理部104は、現用ファイルのロードモジュールについてメモリへのロードが完了したか判断する(ステップS5)。ステップS5において、再開管理部104は、起動された仮想マシンにおける通知制御部からロード完了並びにプロセスの生成及び起動の開始を示すメッセージを受け取ったか否かにより判断する。
現用ファイルのロードモジュールについてメモリへのロードが完了していない場合(ステップS5:Noルート)、再開管理部104は、ステップS5の処理を再度実行する。一方、現用ファイルのロードモジュールについてメモリへのロードが完了した場合(ステップS5:Yesルート)、再開管理部104は、バックアップファイル用の仮想マシンに資源(例えばCPU又はCPUコア)を割り当てることをリソース管理部105に要求する。リソース管理部105は、バックアップファイル用の仮想マシンに資源を割り当てることをホストOS101に要求する。これに応じ、ホストOS101は、現用ファイル用の仮想マシンに割り当てた資源と同じ資源をバックアップファイル用の仮想マシンに割り当てることにより、バックアップファイル用の仮想マシンを生成する(ステップS7)。
順序制御部106は、バックアップファイル用の仮想マシンを起動する(ステップS9)。具体的には、順序制御部106は、バックアップファイル用の仮想マシンをホストOS101に起動させる。また、バックアップファイル用の仮想マシンは、バックアップファイルのロードモジュールをメモリにロードする。
再開管理部104は、現用ファイル用の仮想マシンにおいて所定の処理が完了したか判断する(ステップS11)。ステップS11においては、再開管理部104は、現用ファイル用の仮想マシンから所定の処理が終了したことを示すメッセージを受け取ったか否かにより判断する。所定の処理とは、メモリ初期化並びにアプリケーションプログラムのプロセスの生成及び起動である。このメッセージは、実質的には、現用ファイル用の仮想マシンの立ち上げが完了したことを意味する。
現用ファイル用の仮想マシンにおいて所定の処理が完了した場合(ステップS11:Yesルート)、処理は端子Aを介して図7のステップS19に移行する。一方、現用ファイル用の仮想マシンにおいて所定の処理が完了していない場合(ステップS11:Noルート)、再開管理部104は、バックアップファイル用の仮想マシンをサスペンド済みであるか判断する(ステップS13)。ステップS13においては、再開管理部104は、管理データ格納部108においてバックアップファイル用の仮想マシンの状態がサスペンド中であるか否かにより判断する。管理データ格納部108については、後で説明する。
バックアップファイル用の仮想マシンをサスペンド済みである場合(ステップS13:Yesルート)、ステップS11の処理に戻る。一方、バックアップファイル用の仮想マシンをサスペンド済みではない場合(ステップS13:Noルート)、再開管理部104は、バックアップファイル用の仮想マシンにおいて所定の処理が完了したか判断する(ステップS15)。ステップS15においては、再開管理部104は、バックアップファイル用の仮想マシンから所定の処理が終了したことを示すメッセージを受け取ったか否かにより判断する。上で説明したように、所定の処理とは、メモリ初期化並びにアプリケーションプログラムのプロセスの生成及び起動である。このメッセージは、実質的には、バックアップファイル用の仮想マシンの立ち上げが完了したことを意味する。
バックアップファイル用の仮想マシンにおいて所定の処理が完了していない場合(ステップS15:Noルート)、ステップS11の処理に戻る。一方、バックアップファイル用の仮想マシンにおいて所定の処理が完了した場合(ステップS15:Yesルート)、再開管理部104は、バックアップファイル用の仮想マシンについてサスペンドを実行することを停止制御部107に要求する。これに応じ、停止制御部107は、バックアップファイル用の仮想マシンについてサスペンドを実行する(ステップS17)。そしてステップS11の処理に戻る。ステップS17においては、停止制御部107は、ホストOS101に、バックアップファイル用の仮想マシンをサスペンドさせる。なお、サスペンドされている間においては、バックアップファイル用の仮想マシンに割り当てられたメモリの内容はクリアされない。
図7の説明に移行し、現用ファイル用の仮想マシンにおける通知制御部は、現用ファイル用の仮想マシンについて再開後の監視を開始する(ステップS19)。再開後の監視とは、現用ファイル用の仮想マシンの再起動後に所定時間行う監視である。この監視により、OS及びハードウェアの初期化によって異常発生の原因が取り除かれたか否かがわかる。
再開管理部104は、再開後の監視が正常に終了したか判断する(ステップS21)。正常に終了するとは、監視期間中に異常が発生せず監視が無事に終了することである。再開後の監視が正常に終了した場合(ステップS21:Yesルート)、異常の原因が取り除かれたので、再開管理部104は、バックアップファイル用の仮想マシンを削除することをリソース管理部105に要求する。リソース管理部105は、バックアップファイル用の仮想マシンを削除することをホストOS101に要求する。これに応じ、ホストOS101は、バックアップファイル用の仮想マシンを削除する(ステップS23)。
再開後の監視が正常に終了していない場合(ステップS21:Noルート)、再開管理部104は、再開後の監視を継続中であるか判断する(ステップS25)。再開後の監視を継続中である場合(ステップS25:Yesルート)、再開管理部104は、バックアップファイル用の仮想マシンをサスペンド済みであるか判断する(ステップS27)。ステップS27においては、再開管理部104は、管理データ格納部108においてバックアップファイル用の仮想マシンの状態がサスペンド中であるか否かにより判断する。
バックアップファイル用の仮想マシンをサスペンド済みである場合(ステップS27:Yesルート)、ステップS21の処理に戻る。バックアップファイル用の仮想マシンをサスペンド済みではない場合(ステップS27:Noルート)、再開管理部104は、バックアップファイル用の仮想マシンにおいて所定の処理が完了したか判断する(ステップS29)。ステップS29においては、再開管理部104は、バックアップファイル用の仮想マシンから所定の処理が終了したことを示すメッセージを受け取ったか否かにより判断する。
バックアップファイル用の仮想マシンにおいて所定の処理が完了していない場合(ステップS29:Noルート)、ステップS21の処理に戻る。一方、バックアップファイル用の仮想マシンにおいて所定の処理が完了した場合(ステップS29:Yesルート)、再開管理部104は、バックアップファイル用の仮想マシンについてサスペンドを実行することを停止制御部107に要求する。これに応じ、停止制御部107は、バックアップファイル用の仮想マシンについてサスペンドを実行する(ステップS31)。そしてステップS21の処理に戻る。ステップS31においては、停止制御部107は、ホストOS101に、バックアップファイル用の仮想マシンをサスペンドさせる。
一方、監視を継続中ではない場合(ステップS25:Noルート)、再開管理部104は、バックアップファイル用の仮想マシンはサスペンド中であるか判断する(ステップS33)。ステップS33においては、再開管理部104は、管理データ格納部108においてバックアップファイル用の仮想マシンの状態がサスペンド中であるか否かにより判断する。
バックアップファイル用の仮想マシンがサスペンド中ではない場合(ステップS33:Noルート)、ステップS37の処理に移行する。一方、バックアップファイル用の仮想マシンがサスペンド中である場合(ステップS33:Yesルート)、再開管理部104は、バックアップファイル用の仮想マシンについてサスペンドを解除することを停止制御部107に要求する。停止制御部107は、バックアップファイル用の仮想マシンについてサスペンドを解除することをホストOS101に要求する。これに応じ、ホストOS101は、バックアップファイル用の仮想マシンについてサスペンドを解除する(ステップS35)。
再開管理部104は、現用ファイル用の仮想マシンを削除することをリソース管理部105に要求する。リソース管理部105は、現用ファイル用の仮想マシンを削除することをホストOS101に要求する。これに応じ、ホストOS101は、現用ファイル用の仮想マシンを削除する(ステップS37)。
バックアップファイル用の仮想マシンは、バックアップファイル用の仮想マシンについてネットワーク設定を行う(ステップS39)。具体的には、バックアップファイル用の仮想マシンは、仮想スイッチ102に対し、現用ファイル用の仮想マシンのMACアドレスをバックアップファイル用の仮想マシンのMACアドレスに上書きするように設定をする。これにより、バックアップファイル用の仮想マシンが通信を行うことができるようになる。そして処理を終了する。
以上のように、バックアップファイル用の仮想マシンの起動を、現用ファイル用の仮想マシンの再起動と並行して行うようにする。これにより、現用ファイル用の仮想マシンによる処理が正常に再開しないことを確認した後にバックアップファイル用の仮想マシンを起動する場合と比較して、バックアップへの切り替えに要する時間を短縮できるようになる。
また、呼制御サーバ1が1台であっても本実施の形態の処理を実行できるので、ユーザは複数台の呼制御サーバを用意しなくてもよい。バックアップ用に予備の呼制御サーバを設けることはユーザにとって負担になるが、本実施の形態の場合には呼制御サーバ1は1台でよいので、ユーザの負担が少なくて済む。
また、上で述べた処理においては、バックアップファイル用の仮想マシンをサスペンドすることにより、現用ファイル用の仮想マシンを優先的に利用している。これは、バックアップファイル用の仮想マシンを利用すると、システムの状態がバックアップファイルを取得した時点に戻ってしまうためである。
また、上で述べたように、現用ファイルのロードモジュールをメモリにロードするまでは、バックアップファイル用の仮想マシンの起動を行わない。これにより、バックアップファイル用の仮想マシンがディスクI/O(Input/Output)を占有することにより現用ファイル用の仮想マシンの立ち上げが遅れることを防止できるようになる。
また、現用ファイル用の仮想マシン又はバックアップファイル用の仮想マシンを削除するまでは、現用ファイル用の仮想マシンとバックアップファイル用の仮想マシンとでCPUコア等の資源を共有する。これは、サービス提供のためアプリケーションプログラムが処理を開始した後と比較して、資源の消費が少なくて済むからである。よって、上で述べたようにすれば、呼制御サーバ1の資源を有効に活用できるようになる。
次に、図8乃至図18を用いて、管理データ格納部108の内容の変化について説明する。図8及び図14は、本実施の形態の処理シーケンスを示す図である。図9に、管理データ格納部108の初期状態を示す。図9の例では、現用ファイル用の仮想マシンの状態を表すデータとして「未実装」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「未実装」が格納されている。
まず、再開管理部104は、現用ファイル用の仮想マシンに資源を割り当てることをリソース管理部105に要求する。これに応じ、リソース管理部105は、現用ファイル用の仮想マシンに資源を割り当てることをホストOS101に要求する(図8における(1))。ホストOS101は、現用ファイル用の仮想マシンを生成する。現用ファイル用の仮想マシンが生成されると、現用ファイル用の仮想マシンにおける通知制御部は、ホストOS101に応答を出力する。ホストOS101は、応答を受け取ると、リソース管理部105に応答を転送する。リソース管理部105は、応答を受け取ると、順序制御部106にその旨を通知する。
順序制御部106は、現用ファイル用の仮想マシンを起動することをホストOS101に要求する(図8における(2))。これに応じ、ホストOS101は、現用ファイル用の仮想マシンを起動する。現用ファイル用の仮想マシンが起動されると、現用ファイル用の仮想マシンにおける通知制御部は、ホストOS101に応答を出力する。ホストOS101は、応答を受け取ると、順序制御部106に応答を転送する。順序制御部106は、管理データ格納部108に格納されているデータを更新する。
図10に、(a)の時点において管理データ格納部108に格納されるデータの一例を示す。図10の例では、現用ファイル用の仮想マシンの状態を表すデータとして「ファイルロード中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「未実装」が格納されている。
一方、現用ファイル用の仮想マシンは、現用ファイルのロードモジュールをディスクから読み出し、メモリへのロードを開始する。そして、通知制御部は、メモリロード完了並びにプロセスの生成及び起動の開始を示すメッセージを再開管理部104に出力する(図8における(3))。再開管理部104は、管理データ格納部108に格納されているデータを更新する。また、現用ファイル用の仮想マシンは、アプリケーションプログラムのプロセスの生成及び起動を開始する。
図11に、(b)の時点において管理データ格納部108に格納されるデータの一例を示す。図11の例では、現用ファイル用の仮想マシンの状態を表すデータとして「プロセスの生成及び起動中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「未実装」が格納されている。
再開管理部104は、バックアップ用ファイル用の仮想マシンに資源を割り当てることをリソース管理部105に要求する。これに応じ、リソース管理部105は、バックアップファイル用の仮想マシンに資源を割り当てることをホストOS101に要求する(図8における(4))。ホストOS101は、バックアップファイル用の仮想マシンを生成する。バックアップファイル用の仮想マシンが生成されると、バックアップファイル用の仮想マシンにおける通知制御部は、ホストOS101に応答を出力する。ホストOS101は、応答を受け取ると、リソース管理部105に応答を転送する。リソース管理部105は、応答を受け取ると、順序制御部106にその旨を通知する。
順序制御部106は、バックアップファイル用の仮想マシンを起動することをホストOS101に要求する(図8における(5))。これに応じ、ホストOS101は、バックアップファイル用の仮想マシンを起動する。バックアップファイル用の仮想マシンが起動されると、バックアップファイル用の仮想マシンにおける通知制御部は、ホストOS101に応答を出力する。ホストOS101は、応答を受け取ると、順序制御部106に応答を転送する。順序制御部106は、管理データ格納部108に格納されているデータを更新する。
図12に、(c)の時点において管理データ格納部108に格納されるデータの一例を示す。図12の例では、現用ファイル用の仮想マシンの状態を表すデータとして「プロセスの生成及び起動中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「ファイルロード中」が格納されている。
一方、バックアップファイル用の仮想マシンは、バックアップファイルのロードモジュールをディスクから読み出し、メモリへのロードを開始する。そして、通知制御部は、メモリロード完了並びにプロセスの生成及び起動の開始を示すメッセージを再開管理部104に出力する(図8における(6))。再開管理部104は、管理データ格納部108に格納されているデータを更新する。また、バックアップファイル用の仮想マシンは、アプリケーションプログラムのプロセスの生成及び起動を開始する。
図13に、(d)の時点において管理データ格納部108に格納されるデータの一例を示す。図13の例では、現用ファイル用の仮想マシンの状態を表すデータとして「プロセスの生成及び起動中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「プロセスの生成及び起動中」が格納されている。そして図14の説明に移行する。
図14の説明に移行し、現用ファイル用の仮想マシンにおける通知制御部は、アプリケーションプログラムのプロセスの生成及び起動が終了したことを示すメッセージを再開管理部104に出力する(図14における(7))。
現用ファイル用の仮想マシンは、再起動後における所定期間の監視を開始する。また、現用ファイル用の仮想マシンにおける通知制御部は、再起動後における所定期間の監視を開始したことを示すメッセージを再開管理部104に出力する(図14における(8))。再開管理部104は、管理データ格納部108に格納されているデータを更新する。
図15に、(e)の時点において管理データ格納部108に格納されるデータの一例を示す。図15の例では、現用ファイル用の仮想マシンの状態を表すデータとして「監視中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「プロセスの生成及び起動中」が格納されている。
一方、バックアップファイル用の仮想マシンにおける通知制御部は、アプリケーションプログラムのプロセスの生成及び起動が終了したことを示すメッセージを再開管理部104に出力する(図14における(9))。
再開管理部104は、バックアップファイル用の仮想マシンについてサスペンドを実行することを停止制御部107に要求する。停止制御部107は、バックアップファイル用の仮想マシンについてサスペンドを実行することをホストOS101に要求する(図14における(10))。これに応じ、ホストOS101は、バックアップファイル用の仮想マシンについてサスペンドを実行する。
バックアップファイル用の仮想マシンにおいて、サスペンド状態が開始する。サスペンド状態が開始される際、バックアップファイル用の仮想マシンにおける通知制御部はホストOS101に応答を出力する。ホストOS101は、応答を受け取ると、停止制御部107に出力する。停止制御部107は、管理データ格納部108に格納されているデータを更新する。
図16に、(f)の時点において管理データ格納部108に格納されるデータの一例を示す。図16の例では、現用ファイル用の仮想マシンの状態を表すデータとして「監視中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「サスペンド中」が格納されている。
現用ファイル用の仮想マシンにおいて再起動後の監視が終了する。現用ファイル用の仮想マシンにおける通知制御部は、監視の終了を示すメッセージを再開管理部104に出力する(図14における(11))。再開管理部104は、管理データ格納部108に格納されているデータを更新する。
図17に、(g)の時点において管理データ格納部108に格納されるデータの一例を示す。図17の例では、現用ファイル用の仮想マシンの状態を表すデータとして「運用中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「サスペンド中」が格納されている。
再開管理部104は、バックアップファイル用の仮想マシンを削除することをリソース管理部105に要求する。リソース管理部105は、バックアップファイル用の仮想マシンを削除することをホストOS101に出力する(図14における(12))。ホストOS101は、バックアップファイル用の仮想マシンについて削除を実行する。ホストOS101は、応答をリソース管理部105に出力する。リソース管理部105は、管理データ格納部108に格納されているデータを更新する。
図18に、(h)の時点において管理データ格納部108に格納されるデータの一例を示す。図18の例では、現用ファイル用の仮想マシンの状態を表すデータとして「運用中」が格納されており、バックアップファイル用の仮想マシンの状態を表すデータとして「未実装」が格納されている。
以上のようにすれば、仮想マシンの状態に応じて管理データ格納部108の内容が適切に更新されるようになる。
次に、図19及び図20を用いて、本実施の形態の効果について説明する。図19に、本実施の形態を利用しない場合におけるバックアップファイルへの切り替えを示す。ここでは、CPUコアの数は4つであるとする。現用ファイル用の仮想マシンにおいて異常が発生した場合に、OS及びハードウェアの初期化を行うため、現用ファイル用の仮想マシンを再起動する。再起動の際には、現用ファイルのロードモジュールがメモリにロードされる。また、アプリケーションプログラムのプロセスの生成及び起動が行われ且つメモリが初期化される。さらに、ネットワークの設定が行われる。サービス提供までの処理の負荷はサービス提供後に比べて少ないため、現用ファイル用の仮想マシンにCPUコア♯1だけが割り当てられており、CPUコア♯2乃至♯4は使用されていない。サービス提供が開始すると、CPUコア♯2乃至♯4も現用ファイル用の仮想マシンに割り当てられる。
ここで、再開後の監視期間中に再び異常が発生したため、バックアップファイルへの切り替えを行うとする。この場合、バックアップファイル用の仮想マシンにCPUコア♯1だけが割り当てられる。そして、バックアップファイルのロードモジュールがメモリにロードされる。また、アプリケーションプログラムのプロセスの生成及び起動が行われ且つメモリが初期化される。さらに、ネットワークの設定が行われる。ここまではCPUコア♯1だけがバックアップ用の仮想マシンに割り当てられているが、サービス提供が開始すると、CPUコア♯2乃至♯4もバックアップファイル用の仮想マシンに割り当てられる。
このように、本実施の形態を利用しない場合には、サービス提供が開始されるまではCPUコア♯2乃至♯4は使用されていないため、CPUコアを効率的に使用していない。また、サービス提供が開始されるまでは、現用ファイルによる再開の失敗後バックアップファイルによる再開までに時間がかかるため、サービスの中断時間が長くなるという問題がある。
図20に、本実施の形態を利用する場合におけるバックアップファイルへの切り替えを示す。現用ファイル用の仮想マシンにおいて異常が発生した場合に、OS及びハードウェアの初期化を行うため、現用ファイル用の仮想マシンを再起動する。再起動の際には、現用ファイルのロードモジュールがメモリにロードされる。また、アプリケーションプログラムのプロセスの生成及び起動が行われ且つメモリが初期化される。さらに、ネットワークの設定が行われる。
また、現用ファイルのロードモジュールをメモリにロードした後、CPUコア♯4を用いて、バックアップファイル用の仮想マシンを起動する。バックアップファイル用の仮想マシンについて、バックアップファイルのロードモジュールをメモリにロードし、アプリケーションプログラムのプロセスの生成及び起動をし、並びにメモリの初期化を完了すると、バックアップファイル用の仮想マシンはサスペンドする。ネットワーク設定を行わないのは、現用ファイル用の仮想マシンが通信を行うことができなくなるためである。また、バックアップファイル用の仮想マシンがサスペンドしている間、CPUコア♯1乃至♯4のいずれも現用ファイル用の仮想マシンに割り当てられる。
ここで、再開後の監視期間中に再び異常が発生したため、バックアップファイルへの切り替えを行うとする。この場合、バックアップファイル用の仮想マシンについて途中まで設定が終わっているため、ネットワークの設定が完了すると、バックアップファイル用の仮想マシンによるサービス提供を開始できる。サービス提供が開始すると、CPUコア♯1乃至♯4のいずれもバックアップファイル用の仮想マシンに割り当てられる。
このように、本実施の形態においては、現用ファイル用の仮想マシンの再起動の際にバックアップファイル用の仮想マシンを並行して起動する。そのため、CPUコアが1つだけしか使われていない期間が図19の例と比較すると短く、CPUコアを効率的に使用していると言える。また、現用ファイルによる再開の失敗後バックアップファイルによる再開までの時間が短いため、サービスの中断時間が短く、ユーザの業務に与える影響が少ない。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した呼制御サーバ1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上では呼制御サーバ1を例にして説明したが、本実施の形態は、呼制御を行うコンピュータ以外にも適用可能である。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る仮想マシン管理装置は、(A)第1の仮想マシンに異常が発生した場合に、第1の仮想マシンを再起動すると共に、第1の仮想マシンのバックアップ用の仮想マシンである第2の仮想マシンを起動する第1処理部と、(B)第1の仮想マシンによる処理が正常に再開しない場合に、処理を実行する仮想マシンを第1の仮想マシンから第2の仮想マシンに切り替えるように設定を行う第2処理部とを有する。
このようにすれば、第1の仮想マシンによる処理が正常に再開しないことを確認した後に第2の仮想マシンを起動する場合と比較して、バックアップへの切り替えに要する時間を短縮できるようになる。
また、上で述べた第1処理部が、(a1)第1の仮想マシンの再起動及び第2の仮想マシンの起動を行う際に、第1の仮想マシンと第2の仮想マシンとが同じ資源を共有するように設定してもよい。そして、上で述べた仮想マシン管理装置が、(C)第1の仮想マシンによる処理が正常に再開した場合に、第2の仮想マシンを削除する第3処理部をさらに有してもよい。仮想マシンによる処理を開始するまでは、実際に仮想マシンによる処理が再開した後と比較して資源を多量に消費するわけではない。従って、上で述べたようにすれば、仮想マシンによる処理が開始されるまでの処理の性能が劣化することはなく、また仮想マシンによる処理の再開後は資源を有効に利用できるようになる。
また、上で述べた第1処理部が、(a2)第1の仮想マシンの再起動を完了した後に、第2の仮想マシンの起動を行ってもよい。このようにすれば、第2の仮想マシンが処理を開始できる状態になる前に第1の仮想マシンによる処理が再開するか否かを判断できる可能性が高くなるので、第1の仮想マシンを優先した制御を行えるようになる。
また、上で述べた第2処理部が、(b1)第1の仮想マシンによる処理が正常に再開するか否かを確認する前に第2の仮想マシンが処理を開始できる状態になった場合に、第2の仮想マシンをサスペンドしてもよい。このようにすれば、第1の仮想マシンによる処理が正常に再開しない場合に限りバックアップを利用できるようになる。
また、上で述べた第2の仮想マシンが、仮想マシン管理装置において実行されている仮想スイッチに対し、第1の仮想マシンに対する処理の要求を第2の仮想マシンに転送するように設定を行ってもよい。このようにすれば、切り替え後においても通信が問題なく行われるようになる。
また、上で述べた資源は、CPU又はCPUコアであってもよい。CPU又はCPUコアは処理性能に強く影響する資源である。
本実施の形態の第2の態様に係る仮想マシン管理方法は、(D)第1の仮想マシンに異常が発生した場合に、第1の仮想マシンを再起動すると共に、第1の仮想マシンのバックアップ用の仮想マシンである第2の仮想マシンを起動し、(E)第1の仮想マシンによる処理が正常に再開しない場合に、処理を実行する仮想マシンを第1の仮想マシンから第2の仮想マシンに切り替えるように設定を行う処理を含む。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1の仮想マシンに異常が発生した場合に、前記第1の仮想マシンを再起動すると共に、前記第1の仮想マシンのバックアップ用の仮想マシンである第2の仮想マシンを起動する第1処理部と、
前記第1の仮想マシンによる処理が正常に再開しない場合に、処理を実行する仮想マシンを前記第1の仮想マシンから前記第2の仮想マシンに切り替えるように設定を行う第2処理部と、
を有する仮想マシン管理装置。
(付記2)
前記第1処理部が、
前記第1の仮想マシンの再起動及び前記第2の仮想マシンの起動を行う際に、前記第1の仮想マシンと前記第2の仮想マシンとが同じ資源を共有するように設定し、
前記仮想マシン管理装置が、
前記第1の仮想マシンによる処理が正常に再開した場合に、前記第2の仮想マシンを削除する第3処理部
をさらに有する付記1記載の仮想マシン管理装置。
(付記3)
前記第1処理部が、
前記第1の仮想マシンの再起動を完了した後に、前記第2の仮想マシンの起動を行う
ことを特徴とする付記1記載の仮想マシン管理装置。
(付記4)
前記第2処理部が、
前記第1の仮想マシンによる処理が正常に再開するか否かを確認する前に前記第2の仮想マシンが処理を開始できる状態になった場合に、前記第2の仮想マシンをサスペンドする
ことを特徴とする付記1記載の仮想マシン管理装置。
(付記5)
前記第2の仮想マシンが、
前記仮想マシン管理装置において実行されている仮想スイッチに対し、前記第1の仮想マシンに対する処理の要求を前記第2の仮想マシンに転送するように設定を行う
ことを特徴とする付記1記載の仮想マシン管理装置。
(付記6)
前記資源は、CPU又はCPUコアである
ことを特徴とする付記2記載の仮想マシン管理装置。
(付記7)
第1の仮想マシンに異常が発生した場合に、前記第1の仮想マシンを再起動すると共に、前記第1の仮想マシンのバックアップ用の仮想マシンである第2の仮想マシンを起動し、
前記第1の仮想マシンによる処理が正常に再開しない場合に、処理を実行する仮想マシンを前記第1の仮想マシンから前記第2の仮想マシンに切り替えるように設定を行う
処理をコンピュータが実行する仮想マシン管理方法。
(付記8)
第1の仮想マシンに異常が発生した場合に、前記第1の仮想マシンを再起動すると共に、前記第1の仮想マシンのバックアップ用の仮想マシンである第2の仮想マシンを起動し、
前記第1の仮想マシンによる処理が正常に再開しない場合に、処理を実行する仮想マシンを前記第1の仮想マシンから前記第2の仮想マシンに切り替えるように設定を行う
処理をコンピュータに実行させるための仮想マシン管理プログラム。