(57)【要約】【課題】複数の仮想マシンを容易に管理する。【解決手段】仮想マシン管理システム１００は、ネットワークを介して仮想マシンの操作命令を取得し、仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する。そして、仮想マシンの状態を示す仮想マシンファイルを取得し、予め記憶されている所定の状態の仮想マシンファイルと、予め記憶されている差分情報に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する。その後仮想マシンファイルの内容同士を比較して新たな差分情報を生成し、仮想マシン識別情報に対応付けて記憶するとともに、共通する内容を仮想マシン識別情報と対応づけて記憶する。【選択図】図１
2014021754.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得手段と、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定手段と、
前記仮想マシン特定手段で特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得手段と、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成手段と、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成手段と、
前記差分情報生成手段で生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶手段と、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶手段と、
を備えることを特徴とする仮想マシン管理システム。
【請求項２】
前記仮想マシンファイル取得手段により取得した仮想マシンファイルを複製する仮想マシンファイル複製手段と、
前記仮想マシンファイル複製手段により複製した仮想マシンファイルを前記仮想マシン識別情報とは異なる複製仮想マシン識別情報と対応付けて記憶する複製ファイル記憶手段と、をさらに備え、
前記複製ファイル記憶手段は、前記複製仮想マシン識別情報を前記仮想マシン識別情報と対応付けて、前記複製ファイルを階層的に記憶する、
ことを特徴とする請求項１に記載の仮想マシン管理システム。
【請求項３】
前記仮想ファイル生成手段は、
前記予め記憶されている所定の状態の仮想マシンファイルに、前記差分情報により示される内容を繰り返し適用することで前記操作命令により指定された時期の仮想マシンの状態を示す仮想マシンファイルを生成する、
ことを特徴とする請求項１または２に記載の仮想マシン管理システム。
【請求項４】
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得ステップと、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定ステップと、
前記仮想マシン特定ステップで特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得ステップと、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成ステップと、
前記仮想マシンファイル取得ステップで取得した仮想マシンファイルの内容と前記仮想マシンファイル生成ステップで生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成ステップと、
前記差分情報生成ステップで生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶ステップと、
前記仮想マシンファイル取得ステップで取得した仮想マシンファイルの内容と前記仮想マシンファイル生成ステップで生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶ステップと、
を備えることを特徴とする仮想マシン管理方法。
【請求項５】
コンピュータを、
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得手段、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定手段、
前記仮想マシン特定手段で特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得手段、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成手段、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成手段、
前記差分情報生成手段で生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶手段、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン管理システム、仮想マシン管理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、開発環境を構築することが容易であることやコスト面におけるメリットがあることにより、仮想環境におけるシステム開発が行われている。ここで、仮想環境で動作する仮想マシンの実体は、動作するハードウェアの情報やソフトウェア等のデータから構成される設定ファイルである。この設定ファイルが仮想マシンサーバに読み込まれることにより、仮想マシンとして動作することになる。したがって、この設定ファイルを複数生成することにより、仮想マシンを容易に複数構築することができる。
【０００３】
開発環境を仮想マシンにより構築した場合には、様々な動作環境の検証等に仮想マシンが用いられるため、複数の類似仮想マシンが構築されることとなる。そこで、複数の仮想マシンの管理を容易にするための様々な技術が提案されている。
【０００４】
例えば、特許文献１には、複数構築された仮想マシンを、運用系システムを構築する仮想マシンとテスト系システムを構築する仮想マシンとに分け、テスト系システムを構築する仮想マシンを、運用系システムを構築する仮想マシンとの差分情報として定義することにより、各仮想マシンの管理を容易にする技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１０２４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載の技術では、仮想マシン単位で差分情報を管理するが、仮想マシンには、ソフトウェアやネットワーク設定の変更など、日常的に変更が加えられるため、実際には、変更が加えられる度に個々の仮想マシンの情報を各開発者が管理簿等により管理する必要がある。したがって、複数の仮想マシンを容易に管理するという観点からすると未だ十分ではない。
【０００７】
本発明は、上述のような事情に鑑みてなされたものであり、複数の仮想マシンを容易に管理することができる仮想マシン管理システム、仮想マシン管理方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の観点に係る仮想マシン管理システムは、
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得手段と、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定手段と、
前記仮想マシン特定手段で特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得手段と、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成手段と、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成手段と、
前記差分情報生成手段で生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶手段と、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶手段と、
を備えることを特徴とする。
【０００９】
前記仮想マシンファイル取得手段により取得した仮想マシンファイルを複製する仮想マシンファイル複製手段と、
前記仮想マシンファイル複製手段により複製した仮想マシンファイルを前記仮想マシン識別情報とは異なる複製仮想マシン識別情報と対応付けて記憶する複製ファイル記憶手段と、をさらに備え、
前記複製ファイル記憶手段は、前記複製仮想マシン識別情報を前記仮想マシン識別情報と対応付けて、前記複製ファイルを階層的に記憶する、
ようにしてもよい。
【００１０】
前記仮想ファイル生成手段は、
前記予め記憶されている所定の状態の仮想マシンファイルに、前記差分情報により示される内容を繰り返し適用することで前記操作命令により指定された時期の仮想マシンの状態を示す仮想マシンファイルを生成する、
ようにしてもよい。
【００１１】
上記目的を達成するため、本発明の第２の観点に係る仮想マシン管理方法は、
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得ステップと、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定ステップと、
前記仮想マシン特定ステップで特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得ステップと、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成ステップと、
前記仮想マシンファイル取得ステップで取得した仮想マシンファイルの内容と前記仮想マシンファイル生成ステップで生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成ステップと、
前記差分情報生成ステップで生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶ステップと、
前記仮想マシンファイル取得ステップで取得した仮想マシンファイルの内容と前記仮想マシンファイル生成ステップで生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶ステップと、
を備えることを特徴とする。
【００１２】
上記目的を達成するため、本発明の第３の観点に係るプログラムは、
ネットワークを介して仮想マシンの操作命令を取得する操作命令取得手段、
前記操作命令に含まれる仮想マシン識別情報に基づいて処理の対象となる仮想マシンを特定する仮想マシン特定手段、
前記仮想マシン特定手段で特定した仮想マシンの状態を示す仮想マシンファイルを取得する仮想マシンファイル取得手段、
予め記憶されている所定の状態の仮想マシンファイルと、予め仮想マシン識別情報と対応付けて記憶されている差分情報と、に基づいて過去の仮想マシンの状態を示す仮想マシンファイルを生成する仮想マシンファイル生成手段、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とを比較して、新たな差分情報を生成する差分情報生成手段、
前記差分情報生成手段で生成した新たな差分情報を、前記仮想マシン識別情報と対応付けて記憶する差分情報記憶手段、
前記仮想マシンファイル取得手段で取得した仮想マシンファイルの内容と前記仮想マシンファイル生成手段で生成した仮想マシンファイルの内容とにおいて共通する内容を、前記仮想マシン識別情報と対応づけて記憶する共通部分記憶手段、
として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数の仮想マシンを容易に管理することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係る仮想マシン管理システムの一例を示すブロック図である。
【図２】履歴ＤＢの構成例を示す図である。
【図３】コミット処理の一例を示すフローチャートである。
【図４】各種のバイナリデータの一例を示す図である。
【図５】コミット処理における処理工程の一例を示す図である。
【図６】復元処理の一例を示すフローチャートである。
【図７】復元処理における処理工程の一例を示す図である。
【図８】ブランチ作成処理の一例を示すフローチャートである。
【図９】ブランチ削除処理の一例を示すフローチャートである。
【図１０】マスタファイル登録処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
図１に示すように、仮想マシン管理システム１００は、サーバ等の一般的なコンピュータであり、記憶部１１０と、制御部１２０と、通信部１３０と、これらを相互に接続するシステムバス１４０と、を備えている。仮想マシン管理システム１００は、ネットワークを介して複数のクライアント端末２００に接続される。仮想マシン管理システム１００は、クライアント端末２００からの指示にしたがって、後述する登録、変更、削除といった各種操作に応じた処理を実行する。また、仮想マシン管理システム１００は、クライアント端末２００からの指示にしたがって、後述するブランチを作成し、仮想マシンを階層的に管理する。なお、クライアント端末２００は、一般的なコンピュータである。
【００１６】
記憶部１１０は、ハードディスクやメモリなどから構成され、プログラム１１１と、複数の履歴ＤＢ１１２と、差分情報テーブル１１３と、共通部分ＤＢ１１４と、が格納される。記憶部１１０には、仮想マシン起動領域が予め設定されている。
【００１７】
プログラム１１１は、仮想マシン管理システム１００上で実行される後述の処理を実施する機能を有するソフトウェアである。
【００１８】
履歴ＤＢ１１２は、図２に示すように、リビジョン情報と、操作日時情報と、差分識別情報と、コメント情報と、仮想マシン識別情報と、作業者名情報と、操作内容情報と、を対応付けたレコードを１レコードとするデータベースであり、仮想マシン単位で格納されている。履歴ＤＢ１１２には、仮想マシンに対して、後述する登録、変更、削除といった各種操作（操作）が加えられる度に、各種情報が格納される。ここで、例えば、登録は、後述するコミット処理やブランチ作成処理を示し、変更は、マスタファイル登録処理を示し、削除は、ブランチ削除処理を示す。なお、履歴ＤＢ１１２には、初期の仮想マシンの状態を示すバイナリデータ（初期バイナリデータ）が記憶されている。
【００１９】
リビジョン情報は、仮想マシンに対する操作が行われる度に割り当てられ、操作が行われた順に付与される通し番号である。操作日時情報は、仮想マシンに対する操作が行われた日時を示す情報である。差分識別情報は、後述する差分情報毎に付与される情報であり、当該差分情報を識別する識別情報である。コメント情報は、操作が行われた理由や仮想マシンの説明を示す情報である。仮想マシン識別情報は、複数構築された仮想マシンのうちのいずれの仮想マシンであるかを識別する情報である。作業者名情報は、操作を行った作業者を特定する情報である。操作内容情報は、登録、変更、削除などといった各種操作のうちのいずれの操作が行われたのかを示す情報である。
【００２０】
差分情報テーブル１１３は、仮想マシンに対する操作が行われた場合に、操作の前後における仮想マシンの状態の差分を示す情報（差分情報）が、差分識別情報と対応付けられて格納されているテーブルである。具体的に、差分情報は、記憶部１１０に設けられた仮想マシン起動領域に記憶されている仮想マシンバイナリデータの内容と、変更処理が行われる以前の仮想マシンバイナリデータの内容との差分を示す情報である。
【００２１】
共通部分ＤＢ１１４は、複数の仮想マシン間で共通する設定情報等が定義された共通情報を、仮想マシン識別情報とリビジョン情報とに応付けたレコードを１レコードとするデータベースである。共通情報には、共通するファイル名とそのパス情報が含まれている。
【００２２】
制御部１２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等から構成される。制御部１２０は、記憶部１１０に記憶されたプログラム１１１に従って動作し、プログラム１１１に従った処理を実行する。制御部１２０は、プログラム１１１により提供される主要な機能部として、コミット部１２１と、復元部１２２と、ブランチ作成部１２３と、ブランチ削除部１２４と、マスタファイル登録部１２５と、を備えている。
【００２３】
コミット部１２１は、後述する通信部１３０を介してクライアント端末２００からコミット命令を取得し、差分情報を生成して登録する機能を有している。復元部１２２は、通信部１３０を介してクライアント端末２００から復元命令を取得し、当該復元命令に基づいて記憶部１１０の記憶されている差分情報と共通情報を特定して、仮想マシンの状態を、復元命令により要求される仮想マシンの状態に復元する機能を有している。
【００２４】
ブランチ作成部１２３は、後述する通信部１３０を介してクライアント端末２００からブランチ作成命令を取得し、対象となる仮想マシンのクローン（ブランチ）を生成して、記憶部１１０の所定領域に登録する機能を有している。
【００２５】
ブランチ削除部１２４は、後述する通信部１３０を介してクライアント端末２００からブランチ削除命令を取得し、当該削除命令に対応するブランチを記憶部１１０の所定領域から削除する機能を有している。
【００２６】
マスタファイル登録部１２５は、マスタファイル（共通情報）を登録する機能を有している。具体的には、後述する通信部１３０を介してクライアント端末２００からマスタファイル登録命令を取得し、当該マスタファイル登録命令により示される仮想マシンの仮想マシン識別情報と共通情報を示すファイル名とファイルパス（共通部分）を記憶部１１０の共通部分ＤＢ１１４に登録することにより、当該マスタファイル登録命令により示される仮想マシンに対応する共通部分を定義する機能を有している。共通部分には、例えば、ネットワークの設定や、アプリケーションの設定等が含まれる。また、マスタファイル登録部１２５は、既に登録されている共通部分を再設定する機能を有している。具体的には、既に共通部分が登録されている場合、今回再設定すべき共通部分との差分を抽出し、差分情報を登録するとともに、共通部分の再設定（更新）を行う機能を有している。
【００２７】
通信部１３０は、シリアルインタフェース、或いはアナログ信号を受信するためのアナログインタフェースを有している。通信部１３０は、制御部１２０による制御により、仮想マシン管理システム１００と、クライアント端末２００と通信を行う。
【００２８】
以上が、本実施の形態に係る仮想マシン管理システム１００の構成である。続いて、仮想マシン管理システム１００の動作について、図３〜図７を参照して説明する。仮想マシン管理システム１００は、クライアント端末２００からのコミット命令、復元命令、ブランチ作成命令、ブランチ削除命令、マスタファイル登録命令、といった各種命令を、通信部１３０を介して受信することにより、コミット処理、復元処理、ブランチ作成処理、ブランチ削除処理、マスタファイル登録処理、といった各種動作を開始する。なお、コミット命令、復元命令、ブランチ作成命令、ブランチ削除命令、マスタファイル登録命令、といった各種命令を取得した日時を、各操作の操作日時情報とする。
【００２９】
まず、コミット処理について図３および図５を参照して説明する。コミット処理は、現在の仮想マシンの状態を登録する処理である。ここでは、理解の容易のため、模式的に現在の仮想マシンが図４に示す状態Ｂであるとして説明する。図４に示す初期バイナリデータは、予め記憶部１１０の履歴ＤＢ１１２に登録されている。また、状態Ａのバイナリデータは、初期バイナリデータとの差分が差分１であるバイナリデータであり、状態Ｂのバイナリデータは、状態Ａのバイナリデータとの差分が差分２であるバイナリデータであり、状態Ｃのバイナリデータは、状態Ｂのバイナリデータとの差分が差分３であるバイナリデータであることを示している。コミット処理において、制御部１２０は、まず、コミット部１２１の機能により通信部１３０を介して受信したコミット命令を取得する（ステップＳ１０１）。コミット命令には、仮想マシン識別情報と、操作内容情報と、作業者名情報と、が含まれている。
【００３０】
続いて制御部１２０は、ステップＳ１０１で取得したコミット命令により示される仮想マシン識別情報に基づいて仮想マシンを特定する（ステップＳ１０２）。そして、ステップＳ１０２で特定した仮想マシンの最新のバイナリデータ（状態Ｂのバイナリデータ）を記憶部１１０内の仮想マシン起動領域から取得する（ステップＳ１０３）（図５（Ａ））。なお、ステップＳ１０２の処理で特定した仮想マシンにブランチが生成されている場合があるので、ステップＳ１０３の処理では、ブランチが生成されている場合には、当該仮想マシンのブランチに属する全ての仮想マシンについての最新のバイナリデータを記憶部１１０内の仮想マシン起動領域から取得する。
【００３１】
ステップＳ１０３の処理を実行した後は、記憶部１１０に記憶されている履歴ＤＢ１１２を参照して、当該仮想マシン識別情報に対応する最新の差分識別情報を特定する（ステップＳ１０４）。ここで、最新の差分識別情報は、履歴ＤＢ１１２に記憶されている操作日時情報に基づいて特定すればよい。なお、ステップＳ１０４の処理では、ステップＳ１０２の処理で特定した仮想マシンにブランチが生成されている場合があるので、ブランチが生成されている場合には、当該仮想マシンのブランチに属する全ての仮想マシンについての差分識別情報を特定する。具体的には、ブランチに属する仮想マシンの仮想マシン識別情報は、例えば、基となる仮想マシン識別情報に枝番号を付加するなど、基となる仮想マシン識別情報から特定可能に設定されている。そのため、ステップＳ１０１で取得したコミット命令により示される仮想マシン識別情報に基づいてブランチに属する仮想マシンの仮想マシン識別情報を特定し、歴ＤＢ１１２を参照して、ブランチに属する各仮想マシン識別情報に対応する最新の差分識別情報を特定する。
【００３２】
ステップＳ１０４にて最新の差分識別情報を特定した後は、特定した差分識別情報に対応する差分情報（差分１の差分情報）を、差分情報テーブル１１３に基づいて特定し、記憶部１１０から取得する（ステップＳ１０５）（図５（Ｂ））。なお、ステップＳ１０４にてブランチに属する全ての仮想マシンに対する差分識別情報を特定した場合には、ステップＳ１０５の処理でも同様に、全ての差分識別情報に対応する差分情報を取得する。
【００３３】
ステップＳ１０５の処理を実行した後は、記憶部１１０内の履歴ＤＢ１１２に登録されている初期バイナリデータを取得する（ステップＳ１０６）（図５（Ｃ））。そして、ステップＳ１０６で取得した初期バイナリデータに、ステップＳ１０５で取得した差分情報を適用して（図５（Ｄ））、現在の仮想マシンの状態（設定）となる前の（例えば前回コミット処理を行ったときの）仮想マシンの状態（状態Ａ）に復元する（ステップＳ１０７）。なお、ステップＳ１０５にて、ブランチに属する全ての仮想マシンに対する差分情報を取得した場合には、ブランチに属する全ての仮想マシンに対してバイナリデータを復元する。復元する処理の詳細については後述する。
【００３４】
続いて、ステップＳ１０７の処理で復元したバイナリデータとステップＳ１０３の処理で取得した最新のバイナリデータ同士を比較して、最新の差分情報を生成する（ステップＳ１０８）（図５（Ｅ））。なお、ステップＳ１０６にて、ブランチに属する全ての仮想マシンに対してバイナリデータを復元した場合には、全てのバイナリデータに対して最新の差分情報を生成する。また、生成した差分情報には、差分識別情報を付加する。差分識別情報は、当該差分情報を生成した際における通し番号であればよい。
【００３５】
ステップＳ１０８の処理を実行した後は、生成した最新の差分情報が、同一のブランチ間で共通する共通部分に対する差分が含まれるか否かを判定する（ステップＳ１０９）。共通部分に対する差分が含まれるか否かは、記憶部１１０の仮想マシン起動領域に記憶されている共通部分と、共通部分ＤＢ１１４に記憶されている共通部分とを比較して判定すればよい。例えば、それぞれのタイムスタンプなどを比較したり、それぞれのバイナリデータの中身を比較してもよい。
【００３６】
ステップＳ１０９にて共通部分に対する差分が含まれる場合（ステップＳ１０９；Ｙｅｓ）、当該仮想マシンのブランチに属する全ての仮想マシンに対して、最新の差分情報のうちの共通部分を上書きすることで、当該差分情報を適用（当該差分情報で共通部分を更新）する（ステップＳ１１０）。
【００３７】
ステップＳ１１０の処理を実行した後、または、ステップＳ１０９の処理にて共通部分に対する差分が含まれていないと判定した場合（ステップＳ１０９；Ｎｏ）、ステップＳ１０８にて生成した差分情報を、差分識別情報と対応付けて差分情報テーブル１１３に格納する（ステップＳ１１１）（図５（Ｆ））。続いて、ステップＳ１０１で取得したコミット命令に含まれる情報と、ステップＳ１１０にて格納した差分識別情報とを記憶部１１０の履歴ＤＢ１１２に登録して（ステップＳ１１２）、コミット処理を終了する。
【００３８】
次に、復元処理について、図６および図７を参照して説明する。復元処理は、現在の仮想マシンの状態（現在のバイナリデータ）を、過去にコミット処理を行ったときの状態（過去のバイナリデータ）に戻す処理である。復元処理は、上記コミット処理にて差分情報を生成するときに実行される場合と、クライアント端末２００からの復元命令に基づいて実行される場合とがあるが、ここでは、クライアント端末２００からの復元命令に基づいて実行される場合を中心に説明する。なお、具体的には、現在の仮想マシンが図４に示す状態Ｃであり、状態Ｂの仮想マシンに復元する処理を例として説明する。復元処理において、制御部１２０は、まず、復元部１２２の機能により通信部１３０を介して受信した復元命令を取得する（ステップＳ２０１）。復元命令には、仮想マシン識別情報と、操作内容情報と、作業者名情報と、リビジョン情報と、が含まれている。
【００３９】
続いて制御部１２０は、ステップＳ２０１で取得した復元命令に含まれる仮想マシン識別情報に基づいて、復元対象となる仮想マシンを特定する（ステップＳ２０２）。そして、ステップＳ２０２で特定した仮想マシンに対応する初期バイナリデータを、記憶部１１０に格納されている履歴ＤＢ１１２を参照して取得する（ステップＳ２０３）。
【００４０】
ステップＳ２０３の処理を実行した後は、ステップＳ２０１で取得した復元命令に含まれるリビジョン情報に基づいて復元すべきリビジョンを特定する（ステップＳ２０４）。続いてステップＳ２０４で特定したリビジョンを、復元に必要な差分情報の数（履歴ＤＢ１１２を参照する回数）として記憶部１１０に格納する（ステップＳ２０５）。例えば、状態Ｂの仮想マシンに復元する場合には、状態Ｂの仮想マシンに対応するリビジョンは「２」であるため、復元に必要な差分情報の数を「２」として記憶部１１０に格納する。
【００４１】
ステップＳ２０５の処理を実行した後は、記憶部１１０の履歴ＤＢ１１２を参照して、最初の（最も古い）リビジョン（リビジョン１）に対応する差分識別情報を特定し、差分情報テーブル１１３を参照して差分情報を取得する（ステップＳ２０７）（図７（Ｂ））。そして、ステップＳ２０３の処理にて取得した初期バイナリデータに適用する（ステップＳ２０８）（図７（Ｃ））。これにより、バイナリデータは、過去（過去にコミット処理を行ったとき）の状態（状態Ａ）に復元されることとなる。なお、ステップＳ２０７で取得した差分情報内に共通部分に対する差分が含まれている場合には、ブランチに属する全ての仮想マシンを、特定した差分情報で上書きすることで、仮想マシンの状態を更新する。
【００４２】
ステップＳ２０８の処理を実行した後は、ステップＳ２０５にて記憶部１１０へ記憶した、復元に必要な差分情報の数を「１」減算することで、記憶部１１０に記憶されている復元に必要な差分情報の数を更新する（ステップＳ２０９）。例えば、状態Ｂの仮想マシンに復元する場合には、ステップＳ２０９の処理にて、復元に必要な差分情報の数を「２」から「１」へと「１」減算する。続いて、復元に必要な差分情報の数が「０」であるか否かを判定し（ステップＳ２１０）、「０」でない場合には（ステップＳ２１０；Ｎｏ）、ステップＳ２０７の処理に戻る。例えば、上記の例のように、状態Ｂの仮想マシンに復元する場合には、一度ステップＳ２０９の処理を行った段階では、復元に必要な差分情報の数が「１」になっており、「０」ではないため、ステップＳ２０７の処理に戻ることとなる。この場合には、ステップＳ２０７の処理にて、前回取得した差分情報の次の差分情報（差分２）を取得するようにすればよい。具体的には、初期値として適用すべき差分情報を「１」と設定しておき、ステップＳ２０７の処理を実行する度に、適用すべき差分情報を「１」インクリメントし、ステップＳ２０７にて取得すべき差分情報を特定すればよい。
【００４３】
ステップＳ２１０の処理にて復元に必要な差分情報の数が「０」であると判定した場合、復元すべきリビジョン情報の仮想マシンの状態（状態Ｃ）となったと判定し、当該バイナリデータを記憶部１１０の仮想マシン起動領域に登録するとともに（ステップＳ２１１）、ステップＳ２０１で取得した復元命令に含まれる情報等を記憶部１１０の履歴ＤＢ１１２に登録して、復元処理を終了する。例えば、状態Ｂの仮想マシンに復元する場合には、ステップＳ２０７の処理に戻り、ステップＳ２０７にて差分２の差分情報が取得される（図７（Ｄ））。そして、ステップＳ２０８にて、前回差分１が適用されたバイナリデータ（状態Ａのバイナリデータ）に、差分２が適用され（図７（Ｅ））、状態Ｂのバイナリデータとなる。その後、ステップＳ２０９にて復元に必要な差分情報の数が「０」に更新され、ステップＳ２１１の処理にて、当該バイナリデータ（状態Ｂのバイナリデータ）が記憶部１１０の仮想マシン起動領域に登録される（図７（Ｆ））。
【００４４】
次に、ブランチ作成処理について、図８を参照して説明する。ブランチ作成処理は、現在の仮想マシンのクローンの仮想マシンを作成する処理であり、現在の仮想マシンに対して階層的に管理可能とするための処理である。システム開発環境においては、開発対象のシステムを構成する仮想マシンが複数存在し、また、各仮想マシンには複数のソフトウェアが含まれている。そして、各ソフトウェアも日々更新され、様々なバージョンのものが混在することとなる。また、それぞれのソフトウェアのアップデートを行う場合などに、開発中のシステムへの影響の有無を確認する必要がある。そのため、アップデート後の環境で不具合が発生して原因の切り分けを行う際に、別途過去の環境で動作を検証したりする必要がある。したがって、当該仮想マシンの状態を階層的に管理しておき、不具合が発生した場合においても当該仮想マシンを継続して使用することを可能とし、不具合発生前の状態に容易に復元できるようにするため、各仮想マシンを階層的に管理するブランチ作成処理を実行する。
【００４５】
ブランチ作成処理において、制御部１２０は、ブランチ作成部１２３の機能により通信部１３０を介して受信したブランチ作成命令を取得する（ステップＳ３０１）。ブランチ作成命令には、仮想マシン識別情報と、操作内容情報と、作業者名情報と、が含まれている。
【００４６】
続いて制御部１２０は、ステップＳ３０１で取得したブランチ作成命令に含まれる仮想マシン識別情報に基づいて、ブランチを作成する対象となる仮想マシンを特定する（ステップＳ３０２）。そして、記憶部１１０内の仮想マシン起動領域から、特定した仮想マシンの最新のバイナリデータを取得する（ステップＳ３０３）。ステップＳ３０３の処理を実行した後は、記憶部１１０内の仮想マシン起動領域に、ステップＳ３０３にて取得したバイナリデータをコピーすることで、当該仮想マシンのクローンを作成する（ステップＳ３０４）。
【００４７】
ステップＳ３０４の処理を実行した後は、ステップＳ３０４の処理で作成したクローンに対して、共通部分の設定をし（ステップＳ３０５）、クローンの情報を履歴ＤＢ１１２へ登録して（ステップＳ３０６）、ブランチ作成処理を終了する。具体的には、ステップＳ３０５における共通部分の設定については、後述するマスタファイル登録処理が実行されていることを前提に説明すると、ステップＳ３０４で作成されたクローンには、後述するマスタファイル登録処理を実行することで定義される共通部分が含まれており、当該共通部分を仮想マシン識別情報と対応付けて記憶部１１０の共通部分ＤＢ１１４に格納する。また、ステップＳ３０６における履歴ＤＢ１１２への登録は、ステップＳ３０４で作成したクローンの仮想マシンを識別する仮想マシン識別情報を、当該ブランチ作成対象となった仮想マシンの仮想マシン識別情報に基づいて生成し、ブランチ作成命令に含まれる各種情報と対応付けて履歴ＤＢ１１２へ格納する。
【００４８】
次に、ブランチ削除処理について、図９を参照して説明する。ブランチ削除処理は、ブランチ作成処理で作成されたクローンの仮想マシンを削除する処理である。ブランチ削除処理において、制御部１２０は、ブランチ削除部１２４の機能により通信部１３０を介して受信したブランチ削除命令を取得する（ステップＳ４０１）。ブランチ削除命令には、仮想マシン識別情報と、操作内容情報と、作業者名情報と、が含まれている。
【００４９】
続いて制御部１２０は、ステップＳ４０１で取得したブランチ削除命令に含まれる仮想マシン識別情報に基づいて、削除する対象となるクローンの仮想マシンを特定する（ステップＳ４０２）。そして、記憶部１１０内の仮想マシン起動領域から、特定したクローンの仮想マシンに対応するバイナリデータを削除する（ステップＳ４０３）。ステップＳ４０３の処理を実行した後は、記憶部１１０内の共通部分ＤＢ１１４から、当該削除対象となった仮想マシンに対応する情報を削除し（ステップＳ４０４）、削除情報をブランチ削除命令に含まれる各種情報と対応付けて履歴ＤＢ１１２へ格納し（ステップＳ４０５）、ブランチ削除命令を終了する。
【００５０】
次に、マスタファイル登録処理について、図１０を参照して説明する。マスタファイル登録処理は、記憶部１１０の仮想マシン起動領域に格納されているバイナリデータのうち、ブランチ間で共通する共通部分を定義する処理である。なお、当該マスタファイル登録処理には、設定された共通部分の定義を再設定する処理も含まれる。
【００５１】
マスタファイル登録処理において、制御部１２０は、マスタファイル登録部１２５の機能により、通信部１３０を介して受信したマスタファイル登録命令を取得する（ステップＳ５０１）。マスタファイル登録命令には、仮想マシン識別情報と、操作内容情報と、作業者名情報と、共通部分指定情報と、が含まれている。共通部分指定情報は、マスタファイル登録命令に含まれる仮想マシン識別情報により特定される仮想マシンに対応するバイナリデータの、ブランチ間で共通する共通部分を指定する情報である。
【００５２】
続いて制御部１２０は、ステップＳ５０１で取得したマスタファイル登録命令に含まれる仮想マシン識別情報に基づいて、記憶部１１０の共通部分ＤＢ１１４を参照して、既に共通部分が登録されているか否かを判定する（ステップＳ５０２）。既に共通部分が登録されている場合（ステップＳ５０２；Ｙｅｓ）には、共通部分の再設定を行うために、記憶部１１０に設けられた再設定フラグをオン状態にセットする（ステップＳ５０３）。
【００５３】
ステップＳ５０３の処理を実行した後、またはステップＳ５０２にて共通部分が登録されていないと判定した場合（ステップＳ５０２；Ｎｏ）、ステップＳ５０１で取得したマスタファイル登録命令に含まれる仮想マシン識別情報に基づいて対象となる仮想マシンを特定する（ステップＳ５０４）。そして、記憶部１１０内の仮想マシン起動領域から、特定した仮想マシンの最新のバイナリデータを取得する（ステップＳ５０５）。ステップＳ５０３の処理を実行した後は、ステップＳ５０１で取得した共通部分指定情報に基づいて、取得したバイナリデータから共通部分を特定する（ステップＳ５０６）。続いて記憶部１１０に設けられた再設定フラグがオンであるか否かを判定する（ステップＳ５０７）。再設定フラグがオフである場合（ステップＳ５０７；Ｎｏ）、共通部分ＤＢ１１４に、仮想マシン識別情報と対応付けて格納する（ステップＳ５０８）。一方、再設定フラグがオンである場合（ステップＳ５０７；Ｙｅｓ）、共通部分ＤＢ１１４に格納されている共通部分とステップＳ５０６で特定した共通部分との差分を抽出する（ステップＳ５０９）。そして、差分識別情報を付加して差分情報テーブル１１３に格納するとともに（ステップＳ５１０）、共通部分ＤＢ１１４を更新する（ステップＳ５１１）。
【００５４】
ステップＳ５０８の処理を実行した後、またはステップＳ５１１の処理を実行した後は、記憶部１１０の履歴ＤＢ１１２に、履歴情報として、マスタファイル登録命令に含まれる各種情報や、ステップＳ５１０で格納した差分識別情報を登録して（ステップＳ５１２）、マスタファイル登録処理を終了する。
【００５５】
このように、本実施の形態に係る仮想マシン管理システム１００によれば、仮想マシンの状態に変更が加えられた場合に前回との差分を抽出し、必要となる設定ファイルを共通部分として別途登録する。また、ブランチを生成することにより複数の仮想マシンを階層的に管理する。したがって、システム開発における複数の工程において大量に発生する複数の類似仮想マシンを容易に管理することが可能となる。また、ある時点での仮想マシンの状態を復元する場合においても、仮想マシンを継続的に使用しつつ、不具合発生前の状態に容易に復元することができる。
【００５６】
（変形例）
この発明は、上記の実施の形態に限定されず、種々の変形及び応用が可能である。上記実施の形態では、図３に示すコミット処理において、前回コミット処理を実行したとき（前回）に登録されている差分情報（差分１）に基づいて、過去の仮想マシンのバイナリデータ（前回のバイナリデータ）（状態Ａのバイナリデータ）を生成し、最新のバイナリデータと比較することで差分情報を生成する例を示したが、これは一例である。生成する差分情報は、前回との差分に限られず、過去の任意の仮想マシンの状態との差分を抽出することで生成するようにしてもよい。例えば、クライアント端末２００にていずれの時期の仮想マシンの状態との差分情報を生成するかを選択可能としてもよい。この場合には、上記復元処理で示される処理と同様にして仮想マシンの状態を繰り返し復元していくようにすればよい。このようにして復元した仮想マシンのバイナリファイルと最新の仮想マシンのバイナリファイルとを比較して差分情報を生成すればよい。
【００５７】
また、上記実施の形態では、図３に示すコミット処理や図６に示す復元処理において、過去の仮想マシンの状態を示すバイナリデータを生成する際に（差分情報を適用する際に）、基となるバイナリデータ（最初に差分情報を適用するバイナリデータ）が初期バイナリデータである例を示したが、これは一例である。基となるバイナリデータは、任意の時期のバイナリデータであってもよい。例えば、所定の時期（例えば半年など）毎に、基となるバイナリデータ（基データ）をリビジョン情報に対応付けて記憶部１１０の履歴ＤＢ１１２にそれぞれ登録しておき、コミット処理では、直近の基データを取得するようにすればよい。直近の基データか否かは、基データのタイムスタンプに基づいて判定すればよい。また、復元処理では、復元命令に含まれるリビジョン情報を、当該基データに対応付けられているリビジョン情報と順に比較して、最も近いリビジョン情報に対応する基データを取得するようにすればよい。これによれば、複数の差分情報が登録されている場合、初期バイナリデータから何度も繰り返し差分情報を適用して過去のバイナリデータを生成することなく、容易な処理により過去のバイナリデータを生成することができる。
【００５８】
また、上記実施の形態では、履歴ＤＢ１１２が仮想マシン毎に記憶部１１０に格納されている例を示したが、これは一例である。履歴ＤＢ１１２は、仮想マシンに寄らず共通であってもよい。この場合には、履歴ＤＢ１１２に格納されるリビジョン情報を、複数の仮想マシン間における通し番号とせず、仮想マシン毎の通し番号とすればよい。これによれば、復元処理において容易に任意の仮想マシンの状態に復元することが可能となる。
【００５９】
また、上記実施の形態では、図１０に示すマスタファイル登録処理により、マスタファイルの更新や新規登録をする処理について説明したが、マスタファイルの更新や新規登録をする処理とは別に、登録したマスタファイルを削除する処理を含んでいてもよい。この場合には、クライアント端末２００からマスタファイル削除命令を取得し、対象となる仮想マシンにおける共通部分を特定して共通部分ＤＢ１１４から対象となる共通部分を削除すればよい。そして、履歴ＤＢ１１２に、マスタファイル削除命令に含まれる情報と削除情報とを対応付けて登録すればよい。
【００６０】
また、上記実施の形態では、仮想マシンに対して各種操作（各種処理）を行う場合について説明したが、これは一例である。仮想マシン管理システム１００は、各種処理の他にも、仮想マシンの状態や操作ログ、ブランチの階層等を参照する処理が実行可能である。具体的には、マスタファイル参照処理、ログ参照処理、ブランチ階層参照処理、差分情報参照処理、等が実行可能である。
【００６１】
マスタファイル参照処理は、クライアント端末２００からマスタファイル参照命令を取得し、マスタファイル参照命令に基づいて仮想マシンを特定し、記憶部１１０の共通部分ＤＢ１１４から共通部分情報を取得して、取得結果をクライアント端末２００に送信する処理である。
【００６２】
ログ参照処理は、クライアント端末２００からログ参照命令を取得し、記憶部１１０の履歴ＤＢ１１２を参照してログ参照命令に含まれる条件に合致する情報を検索し、検索結果をクライアント端末２００に送信する処理である。
【００６３】
ブランチ階層参照処理は、対象となる仮想マシンと当該仮想マシンのクローンとを、階層的にイメージとして表示するための処理である。ブランチ階層参照処理では、クライアント端末２００からブランチ階層参照命令を取得し、記憶部１１０の履歴ＤＢ１１２を参照して対象となる仮想マシンと当該仮想マシンに紐付いている（枝番号が付与されている）クローンの仮想マシンを特定する。そして、特定した結果をツリー状に表示するためのイメージファイルを生成し、クライアント端末２００に送信する。
【００６４】
差分情報参照処理は、クライアント端末２００から指定されたリビジョン間の差分情報を抽出して、差分情報間の相違点を表示するための処理である。差分情報参照処理では、クライアント端末２００から差分情報参照命令を取得する。差分情報参照命令には、比較すべき２つのリビジョン情報が含まれており、それぞれのリビジョン情報に対応する差分情報を、記憶部１１０の履歴ＤＢ１１２と差分情報テーブル１１３とを参照して特定する。そして、特定した差分情報同士を比較して、相違点を抽出し、クライアント端末２００に送信する。
【００６５】
また、上記実施の形態では、クライアント端末２００から受信した各種命令に基づいて処理を行う例を示したが、これは一例である。例えば、図示は省略するが、仮想マシン管理システム１００に設けられた入力部から入力された命令に基づいて処理を行うようにしてもよい。
【００６６】
本発明を実現するためのプログラムの提供方法は任意であり、コンピュータ装置などに対して着脱自在の記録媒体により配布・提供される形態であってもよい。また、上述の機能を、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）とアプリケーションとの分担、またはＯＳとアプリケーションとの協同により実現する場合等には、ＯＳ以外の部分のみを媒体に格納してもよい。
【００６７】
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板（ＢＢＳ、Ｂｕｌｌｅｔｉｎ  Ｂｏａｒｄ  Ｓｙｓｔｅｍ）に当該プログラムを掲示し、ネットワークを介して当該プログラムを配信してもよい。そして、これらのプログラムを起動し、オペレーティングシステムの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成してもよい。
【符号の説明】
【００６８】
１００  仮想マシン管理システム
１１０  記憶部
１１１  プログラム
１１２  履歴ＤＢ
１１３  差分情報テーブル
１１４  共通部分ＤＢ
１２０  制御部
１２１  コミット部
１２２  復元部
１２３  ブランチ作成部
１２４  ブランチ削除部
１２５  マスタファイル登録部
１３０  通信部
１４０  システムバス
【図１】
2014021754.tif 000003
【図２】
2014021754.tif 000004
【図３】
2014021754.tif 000005
【図４】
2014021754.tif 000006
【図５】
2014021754.tif 000007
【図６】
2014021754.tif 000008
【図７】
2014021754.tif 000009
【図８】
2014021754.tif 000010
【図９】
2014021754.tif 000011
【図１０】
2014021754.tif 000012