(57)【特許請求の範囲】
【請求項１】
仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供装置であって、
仮想マシンを起動してインスタンスを生成する際に参照される起動イメージを指定する起動指示を外部から受け付ける起動指示受付部と、
複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定部と、
計算機リソースを提供する物理マシンであって、前記起動イメージ特定部によって特定された前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択部と、
それぞれの物理マシンの識別情報に対応付けて、当該物理マシンで稼働中のインスタンスの生成時に参照された起動イメージの識別情報を格納する稼働テーブルを保持するテーブル保持部と、
前記選択部によって選択された前記物理マシンへ、前記起動イメージ特定部によって特定された起動イメージの識別情報を送信して、当該物理マシンに当該起動イメージを参照して仮想マシンを起動させると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を前記稼働テーブルに登録する起動指示部と
を備え、
前記選択部は、
前記稼働テーブルを参照して、前記起動イメージ特定部によって特定された起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択することを特徴とするリソース提供装置。
【請求項２】
前記稼働テーブルには、
前記物理マシンおよび前記起動イメージの識別情報に対応付けて、当該物理マシンにおいて、当該起動イメージを生成時に参照したインスタンスが稼働中か稼働終了かの別を示す稼働フラグがさらに対応付けられており、
前記選択部は、
前記起動イメージ特定部によって特定された起動イメージの識別情報と、稼働中を示す稼働フラグと、が対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在する場合に、当該物理マシンを選択し、
前記起動イメージ特定部によって特定された起動イメージの識別情報と、稼働中を示す稼働フラグと、が対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在しない場合に、当該起動イメージの識別情報に稼働終了を示す稼働フラグが対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在すれば、当該物理マシンを選択することを特徴とする請求項１に記載のリソース提供装置。
【請求項３】
前記稼働テーブルには、
前記物理マシンの識別情報、および、前記起動イメージの識別情報に対応付けて、当該物理マシンにおいて、当該起動イメージを参照して仮想マシンが起動した起動時刻がさらに対応付けられており、
前記選択部は、
前記稼働テーブル内に、前記起動イメージ特定部によって特定された起動イメージの識別情報が対応付けられている物理マシンの識別情報が複数存在する場合、その中で、対応付けられている前記起動時刻がより新しい物理マシンを選択することを特徴とする請求項１または２に記載のリソース提供装置。
【請求項４】
それぞれの前記起動イメージには、
複数の仮想マシンのインスタンスに共通のベースイメージと、それぞれのインスタンスで異なる差分イメージとが含まれており、
当該リソース提供装置は、
起動イメージ毎に当該起動イメージに含まれるベースイメージおよび差分イメージの情報を管理する起動イメージ管理テーブルを保持する起動イメージ管理テーブル保持部をさらに備え、
前記起動イメージ特定部は、
前記起動イメージ管理テーブルを参照して、前記起動指示で指定される起動イメージに含まれるベースイメージおよび差分イメージをそれぞれ特定し、
前記稼働テーブルには、
前記物理マシン、ならびに、前記起動イメージに含まれているベースイメージおよび差分イメージの識別情報に対応付けて、当該物理マシンにおいて、当該ベースイメージおよび差分イメージを生成時に参照したインスタンスが稼働中か稼働終了かの別を示す稼働フラグがさらに対応付けられており、
前記起動指示部は、
前記選択部によって選択された前記物理マシンへ、前記起動イメージ特定部によって特定されたベースイメージおよび差分イメージの識別情報をそれぞれ送信して、当該物理マシンに当該ベースイメージおよび差分イメージを参照して仮想マシンを起動させると共に、当該物理マシンの識別情報に対応付けて、当該ベースイメージおよび差分イメージの識別情報を前記稼働テーブルに登録し、
前記選択部は、
前記起動イメージ特定部によって特定されたベースイメージおよび差分イメージの識別情報と、稼働中を示す稼働フラグと、が対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在する場合に、当該物理マシンを選択し、
前記起動イメージ特定部によって特定されたベースイメージおよび差分イメージの識別情報と、稼働中を示す稼働フラグと、が対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在しない場合に、当該ベースイメージの識別情報と、稼働中を示す稼働フラグと、が対応付けられている物理マシンの識別情報が前記稼働テーブル内に存在すれば、当該物理マシンを選択することを特徴とする請求項１に記載のリソース提供装置。
【請求項５】
起動イメージ毎に、当該起動イメージの仕様を特定する複数の仕様項目が対応付けられた起動イメージ管理テーブルを保持する起動イメージ管理テーブル保持部をさらに備え、
前記起動指示には、
少なくとも１つ以上の前記仕様項目が含まれており、
前記起動イメージ特定部は、
前記起動イメージ管理テーブルを参照して、前記起動指示に含まれている前記仕様項目で特定される仕様を満たす起動イメージを１つ以上特定し、
前記選択部は、
前記起動イメージ特定部によって特定された１つ以上の起動イメージの中で、前記稼働テーブル内に格納されている起動イメージの識別情報を特定し、特定した識別情報に対応付けられている物理マシンを選択することを特徴とする請求項１に記載のリソース提供装置。
【請求項６】
仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供装置で実行されるリソース提供方法であって、
仮想マシンを起動してインスタンスを生成する際に参照される起動イメージを指定する起動指示を外部から受け付ける起動指示受付工程と、
複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定工程と、
計算機リソースを提供する物理マシンであって、前記起動イメージ特定工程において特定した前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択工程と、
前記選択工程において選択した前記物理マシンへ、前記起動イメージ特定工程において特定した起動イメージの識別情報を送信して、当該物理マシンに当該起動イメージを参照して仮想マシンを起動させると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を稼働テーブルに登録する起動指示工程と
を含み、
前記選択工程では、
前記稼働テーブルを参照して、前記起動イメージ特定工程において特定した起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択することを特徴とするリソース提供方法。
【請求項７】
仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供システムであって、
データベースと、
リソース提供装置と、
計算機リソースを提供する複数の物理マシンと
を備え、
前記データベースは、
仮想マシンを起動してインスタンスを生成する際に参照される起動イメージであって、複数の異なる起動イメージを格納し、
前記リソース提供装置は、
起動イメージを指定する起動指示を外部から受け付ける起動指示受付部と、
複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定部と、
特定された前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択部と、
それぞれの物理マシンの識別情報に対応付けて、当該物理マシンで稼働中のインスタンスの生成時に参照された起動イメージの識別情報を格納する稼働テーブルを保持するテーブル保持部と、
前記選択部によって選択された前記物理マシンへ、前記起動イメージ特定部によって特定された起動イメージの識別情報を送信すると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を前記稼働テーブルに登録する起動指示部と
を有し、
前記複数の物理マシンのそれぞれは、
前記リソース提供装置から受け取った識別情報に対応する起動イメージを、前記データベースから取得して、当該物理マシン内の一時メモリに格納する起動イメージ取得部と、
前記リソース提供装置から起動イメージの識別情報を受け取った場合に、当該識別情報に対応する起動イメージを前記一時メモリから読み出し、読み出した起動イメージに基づいて仮想マシンを起動してインスタンスを生成する起動処理部と
を有し、
前記選択部は、
前記稼働テーブルを参照して、前記起動イメージ特定部によって特定された起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択し、
前記起動処理部は、
前記リソース提供装置から起動イメージの識別情報を受け取った場合に、当該識別情報に対応する起動イメージが前記一時メモリ内に存在しなければ、当該起動イメージの取得を前記起動イメージ取得部に指示することを特徴とするリソース提供システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソース提供装置、リソース提供方法、およびリソース提供システムに関する。
【背景技術】
【０００２】
近年急速に普及が進んでいるＩａａＳ（Infrastructure as a Service）等のクラウドサービスにおいて、仮想マシンをインスタンス単位で貸し出し、利用した時間に応じて課金を行うサービスが知られている（例えば、下記非特許文献１参照）。このサービスでは、利用者は、必要なときに、必要な性能の仮想サーバを必要な数だけ利用することができる。
【０００３】
これにより、ユーザは、自社でサーバ等の設備を用意する形態（オンプレミス環境）とは比べものにならないほど柔軟にリソース量の増減を行うことができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】amazon web services、″Amazon EC2 料金表″、［online］、［平成25年3月21日検索］、インターネット〈URL：http://aws.amazon.com/jp/ec2/pricing/#on-demand〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、必要なときに必要な数の仮想サーバを利用可能であるとはいっても、仮想サーバの利用申請を行ってから、仮想サーバが実際に利用可能になるまでには一定の待ち時間（リードタイム）が存在する。
【０００６】
負荷変動が予測可能であれば、リードタイムを見越してサーバ数を予め増やしておくことが可能であるが、負荷変動を正確に予測することは容易ではない。そのため、突発的に負荷が上昇した場合には、リードタイムの間はサーバの数が不足し、過負荷状態に陥ることになる。過負荷状態では、サービスの提供に支障が生じるため、リードタイムが長いほど、機会損失のリスクが高まる。
【０００７】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、仮想サーバの起動に伴うリードタイムを短縮することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明の第一の態様は、例えば、仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供装置であって、仮想マシンを起動してインスタンスを生成する際に参照される起動イメージを指定する起動指示を外部から受け付ける起動指示受付部と、複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定部と、計算機リソースを提供する物理マシンであって、前記起動イメージ特定部によって特定された前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択部と、それぞれの物理マシンの識別情報に対応付けて、当該物理マシンで稼働中のインスタンスの生成時に参照された起動イメージの識別情報を格納する稼働テーブルを保持するテーブル保持部と、前記選択部によって選択された前記物理マシンへ、前記起動イメージ特定部によって特定された起動イメージの識別情報を送信して、当該物理マシンに当該起動イメージを参照して仮想マシンを起動させると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を前記稼働テーブルに登録する起動指示部とを備え、前記選択部は、前記稼働テーブルを参照して、前記起動イメージ特定部によって特定された起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択する。
【０００９】
また、本発明の第二の態様は、例えば、仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供装置で実行されるリソース提供方法であって、仮想マシンを起動してインスタンスを生成する際に参照される起動イメージを指定する起動指示を外部から受け付ける起動指示受付工程と、複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定工程と、計算機リソースを提供する物理マシンであって、前記起動イメージ特定工程において特定した前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択工程と、前記選択工程において選択した前記物理マシンへ、前記起動イメージ特定工程において特定した起動イメージの識別情報を送信して、当該物理マシンに当該起動イメージを参照して仮想マシンを起動させると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を稼働テーブルに登録する起動指示工程とを含み、前記選択工程では、前記稼働テーブルを参照して、前記起動イメージ特定工程において特定した起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択する。
【００１０】
また、本発明の第三の態様は、例えば、仮想マシンのインスタンス単位で計算機リソースを提供するリソース提供システムであって、データベースと、リソース提供装置と、計算機リソースを提供する複数の物理マシンとを備え、前記データベースは、仮想マシンを起動してインスタンスを生成する際に参照される起動イメージであって、複数の異なる起動イメージを格納し、前記リソース提供装置は、起動イメージを指定する起動指示を外部から受け付ける起動指示受付部と、複数の異なる起動イメージの中から、前記起動指示で指定される起動イメージを特定する起動イメージ特定部と、特定された前記起動イメージを参照して仮想マシンを起動させる物理マシンを選択する選択部と、それぞれの物理マシンの識別情報に対応付けて、当該物理マシンで稼働中のインスタンスの生成時に参照された起動イメージの識別情報を格納する稼働テーブルを保持するテーブル保持部と、前記選択部によって選択された前記物理マシンへ、前記起動イメージ特定部によって特定された起動イメージの識別情報を送信すると共に、当該物理マシンの識別情報に対応付けて、当該起動イメージの識別情報を前記稼働テーブルに登録する起動指示部とを有し、前記複数の物理マシンのそれぞれは、前記リソース提供装置から受け取った識別情報に対応する起動イメージを、前記データベースから取得して、当該物理マシン内の一時メモリに格納する起動イメージ取得部と、前記リソース提供装置から起動イメージの識別情報を受け取った場合に、当該識別情報に対応する起動イメージを前記一時メモリから読み出し、読み出した起動イメージに基づいて仮想マシンを起動してインスタンスを生成する起動処理部とを有し、前記選択部は、前記稼働テーブルを参照して、前記起動イメージ特定部によって特定された起動イメージの識別情報が対応付けられている物理マシンを、当該起動イメージで仮想マシンを起動させる物理マシンとして選択し、前記起動処理部は、前記リソース提供装置から起動イメージの識別情報を受け取った場合に、当該識別情報に対応する起動イメージが前記一時メモリ内に存在しなければ、当該起動イメージの取得を前記起動イメージ取得部に指示する。
【発明の効果】
【００１１】
本発明によれば、仮想サーバの起動に伴うリードタイムを短縮することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の一実施形態におけるリソース提供システムの構成の一例を示すシステム構成図である。
【図２】図２は、データベースサーバの機能構成の一例を示すブロック図である。
【図３】図３は、第１の実施形態において起動イメージ格納部に格納されるデータの構造の一例を示す図である。
【図４】図４は、リソース提供装置の機能構成の一例を示すブロック図である。
【図５】図５は、第１の実施形態において起動イメージ管理テーブル保持部に格納される起動イメージ管理テーブルのデータ構造の一例を示す図である。
【図６】図６は、第１の実施形態において稼働テーブル保持部に格納される稼働テーブルのデータ構造の一例を示す図である。
【図７】図７は、第１の実施形態における選択データの構造の一例を示す図である。
【図８】図８は、物理マシンの機能構成の一例を示すブロック図である。
【図９】図９は、第１の実施形態において一時メモリに格納される管理テーブルのデータ構造の一例を示す図である。
【図１０】図１０は、第１の実施形態におけるリソース提供装置の動作の一例を示すフローチャートである。
【図１１】図１１は、物理マシンＩＤの特定処理（Ｓ２００）の一例を示すフローチャートである。
【図１２】図１２は、第１の実施形態における物理マシンの動作の一例を示すフローチャートである。
【図１３】図１３は、第２の実施形態において起動イメージ格納部内に格納される差分イメージテーブルのデータ構造の一例を示す図である。
【図１４】図１４は、第２の実施形態において起動イメージ格納部内に格納されるベースイメージテーブルのデータ構造の一例を示す図である。
【図１５】図１５は、第２の実施形態において起動イメージ管理テーブル保持部内に格納される起動イメージ管理テーブルのデータ構造の一例を示す図である。
【図１６】図１６は、第２の実施形態において稼働テーブル保持部に格納される稼働テーブルのデータ構造の一例を示す図である。
【図１７】図１７は、第２の実施形態における選択データの構造の一例を示す図である。
【図１８】図１８は、第２の実施形態において一時メモリ内に格納される管理テーブルのデータ構造の一例を示す図である。
【図１９】図１９は、第２の実施形態において一時メモリ内に格納されるベースイメージテーブルのデータ構造の一例を示す図である。
【図２０】図２０は、第２の実施形態におけるリソース提供装置の動作の一例を示すフローチャートである。
【図２１】図２１は、物理マシンＩＤの特定処理（Ｓ５００）の一例を示すフローチャートである。
【図２２】図２２は、第２の実施形態における物理マシンの動作の一例を示すフローチャートである。
【図２３】図２３は、リソース提供装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１３】
まず、本発明の第１の実施形態について、図面を参照しながら説明する。
【００１４】
図１は、本発明の一実施形態におけるリソース提供システム１０の構成の一例を示すシステム構成図である。リソース提供システム１０は、リソース提供装置２０、データベースサーバ３０、および複数の物理マシン４０−１〜４０−ｎを備える。リソース提供装置２０、データベースサーバ３０、および複数の物理マシン４０は、それぞれ、通信回線１１に接続され、通信回線１１を介して通信データを送受信する。
【００１５】
リソース提供装置２０は、ユーザが操作するユーザ端末１２−１〜１２−ｎのいずれかから、仮想マシンのインスタンスの仕様を特定する情報を含む起動指示を受信した場合に、指定された仕様を満たす仮想マシンのインスタンスを生成する際に参照すべき起動イメージを特定する。そして、リソース提供装置２０は、特定した起動イメージの識別情報を、通信回線１１を介して、計算機リソースとしてのいずれかの物理マシン４０へ送信する。
【００１６】
データベースサーバ３０は、それぞれの起動イメージのデータを格納している。リソース提供装置２０から起動イメージの識別情報を受信した物理マシン４０は、当該識別情報で特定される起動イメージのデータを、通信回線１１を介してデータベースサーバ３０から取得する。そして、物理マシン４０は、取得した起動イメージ本体のデータを参照して、仮想マシンのインスタンスを生成し、生成したインスタンスを実行する。
【００１７】
ここで、本実施形態におけるリソース提供システム１０において、リソース提供装置２０は、起動イメージの識別情報と、その送信先の物理マシン４０の情報とを対応付けて履歴として保持する。そして、リソース提供装置２０は、起動イメージの識別情報を送信する際に、当該履歴を参照して、当該起動イメージの識別情報を過去に送ったことのある物理マシン４０を特定する。そして、リソース提供装置２０は、当該起動イメージの識別情報を、特定した物理マシン４０へ優先的に送信する。
【００１８】
起動イメージの識別情報を過去に送信したことのある物理マシン４０であれば、当該識別情報に対応する起動イメージのデータを、データベースサーバ３０から過去に少なくとも１度は取得したことがある。そのため、物理マシン４０のキャッシュ等のメモリ内には、当該起動イメージのデータが残っている可能性がある。
【００１９】
当該起動イメージのデータがメモリ内に残っていれば、物理マシン４０は、当該データをデータベースサーバ３０から取得しなくても、メモリ内の起動イメージを参照して、仮想マシンのインスタンスを生成することが可能である。そのため、起動イメージのデータの転送にかかる転送時間を省くことができ、仮想マシンのインスタンスの稼働開始までにかかるリードタイムを削減することが可能となる。
【００２０】
以下では、このような機能を実現するための各部の詳細な構成について、さらに詳しく説明する。
【００２１】
図２は、データベースサーバ３０の機能構成の一例を示すブロック図である。データベースサーバ３０は、起動イメージ格納部３１およびデータ送受信部３２を有する。
【００２２】
図３は、第１の実施形態において起動イメージ格納部３１に格納されるデータの構造の一例を示す。本実施形態における起動イメージ格納部３１には、例えば図３に示すように、それぞれの起動イメージを識別する起動ＩＤ３１０に対応づけて、当該起動イメージの起動イメージ本体３１１のデータが予め格納されている。図３に例示した起動イメージ格納部３１では、例えば、「Ａ００１」の起動ＩＤ３１０に対応付けて、「ａａａａ」の起動イメージ本体３１１のデータが格納されている。
【００２３】
データ送受信部３２は、通信回線１１を介して物理マシン４０から、起動ＩＤを含む起動イメージ取得要求を受信した場合に、当該起動ＩＤに対応付けられている起動イメージ本体のデータを起動イメージ格納部３１から抽出する。そして、データ送受信部３２は、抽出した起動イメージ本体のデータを、起動イメージ取得要求の送信元の物理マシン４０へ通信回線１１を介して送信する。
【００２４】
図４は、リソース提供装置２０の機能構成の一例を示すブロック図である。リソース提供装置２０は、起動イメージ管理テーブル保持部２１、稼働テーブル保持部２２、起動指示受付部２３、起動イメージ特定部２４、選択部２５、および起動指示部２６を有する。
【００２５】
起動イメージ管理テーブル保持部２１は、起動イメージ管理テーブルを保持する。図５は、起動イメージ管理テーブル保持部２１に格納される起動イメージ管理テーブル２１０のデータ構造の一例を示す。起動イメージ管理テーブル２１０には、例えば、図５に示すように、それぞれの起動イメージを識別する起動ＩＤ２１１に対応付けて、当該起動イメージの仕様を特定するための複数の仕様項目２１２が格納される。
【００２６】
仕様項目２１２としては、例えば、それぞれの機能を個別に特定する情報、処理能力、バージョン等の項目が考えられる。仕様項目２１２において、「１」が設定されている場合、対応する起動ＩＤの起動イメージがその仕様項目を満たしていることを示し、「０」が設定されている場合、対応する起動ＩＤの起動イメージがその仕様項目を満たしていないことを示している。
【００２７】
図５に例示した起動イメージ管理テーブル２１０では、例えば、「Ａ００１」の起動ＩＤ２１１に対応付けて、「仕様項目１」の欄に「１」が設定され、「仕様項目２」および「仕様項目３」の欄にそれぞれ「０」が設定されている。
【００２８】
稼働テーブル保持部２２は、稼働テーブルを保持する。図６は、第１の実施形態において稼働テーブル保持部２２に格納される稼働テーブル２２０のデータ構造の一例を示す。稼働テーブル２２０には、例えば、図６に示すように、それぞれの物理マシン４０を識別する物理マシンＩＤ２２１に対応付けて、個別テーブル２２２が格納される。
【００２９】
それぞれの個別テーブル２２２には、仮想マシンＩＤ２２３に対応付けて、起動ＩＤ２２４、稼働フラグ２２５、および起動時刻２２６が格納される。仮想マシンＩＤ２２３は、それぞれの仮想マシンのインスタンスを識別する情報である。起動ＩＤ２２４は、仮想マシンＩＤ２２３に対応するインスタンスの生成時に参照された起動イメージを識別する情報である。稼働フラグ２２５は、対応するインスタンスが稼働中か否かを示す情報であり、「１」は稼働中を示し、「０」は稼働終了を示す。起動時刻２２６は、対応するインスタンスが生成された時刻を示す情報である。
【００３０】
図６に例示した稼働テーブル２２０では、例えば、「Ｍ００１」の物理マシンＩＤ２２１に対応付けて、個別テーブル２２２が格納されており、当該個別テーブル２２２には、例えば、「Ｖ００１」の仮想マシンＩＤ２２３に対応付けて、「Ａ００１」の起動ＩＤ２２４と、「１」の稼働フラグ２２５と、「2013/5/20/17:30:20」の起動時刻２２６とが対応付けられている。
【００３１】
図４に戻って説明を続ける。起動指示受付部２３は、通信回線１１を介してユーザ端末１２から、仮想マシンのインスタンスの仕様を特定する仕様項目を１つ以上含む起動指示を受信した場合に、当該インスタンスに仮想マシンＩＤを割り当てる。そして、起動指示受付部２３は、受信した起動指示に含まれる仕様項目を、割り当てた仮想マシンＩＤと共に起動イメージ特定部２４へ送る。
【００３２】
起動イメージ特定部２４は、起動指示受付部２３から仮想マシンＩＤと共に仕様項目を受け取った場合に、起動イメージ管理テーブル保持部２１内の起動イメージ管理テーブル２１０を参照し、起動指示受付部２３から受け取った仕様項目に「１」が設定されている起動ＩＤを１つ以上特定する。そして、起動イメージ特定部２４は、特定した１つ以上の起動ＩＤを、起動指示受付部２３から受け取った仮想マシンＩＤと共に選択部２５へ送る。
【００３３】
ここで、ユーザ端末１２のユーザは、仮想マシンのインスタンスの仕様を特定する場合に、全ての項目について必ずしも詳細に指定する必要はなく、ユーザが必要とする項目（例えば、必要な機能や処理能力）についてのみ、対応する仕様項目を指定すればよい。ユーザによって指定されなかったその他の項目（例えば、メーカやバージョン等）については、リソース提供装置２０において、いずれであってもよいという旨の指定と解釈される。
【００３４】
そのため、起動イメージ特定部２４は、起動指示受付部２３から受け取った仕様項目に「１」が設定されている起動ＩＤであれば、それ以外の仕様項目については「０」または「１」のいずれが設定されていても、当該起動ＩＤを起動イメージ管理テーブル２１０内で特定する。
【００３５】
選択部２５は、起動イメージ特定部２４から仮想マシンＩＤと共に１つ以上の起動ＩＤを受け取った場合に稼働テーブル保持部２２内の稼働テーブル２２０を参照し、起動イメージ特定部２４から受け取ったそれぞれの起動ＩＤについて、当該起動ＩＤが含まれている個別テーブル２２２を検索する。
【００３６】
当該起動ＩＤが含まれている個別テーブル２２２が稼働テーブル２２０内に存在する場合、選択部２５は、当該個別テーブル２２２を参照して、当該起動ＩＤに対応付けられている稼働フラグおよび起動時刻を抽出する。そして、選択部２５は、当該個別テーブル２２２が対応付けられている物理マシンＩＤを、稼働テーブル２２０を参照して特定し、先に抽出した稼働フラグおよび起動時刻と共に、起動ＩＤに対応付けて選択データとして保持する。
【００３７】
図７は、本実施形態において選択部２５が保持する選択データ５０の構造の一例を示す。選択データ５０には、例えば図７に示すように、複数のレコード５５が格納される。各レコード５５には、起動ＩＤ５１、稼働フラグ５２、起動時刻５３、および物理マシンＩＤ５４が格納される。起動ＩＤ５１は、それぞれの起動イメージを識別する情報である。
【００３８】
稼働フラグ５２は、起動ＩＤ５１に対応する起動イメージに基づいて起動したインスタンスが稼働中か否かを示す情報であり、「１」は稼働中を示し、「０」は稼働終了を示す。起動時刻５３は、対応するインスタンスが生成された時刻を示す。物理マシンＩＤ５４は、対応するインスタンスが実行された、または、されている物理マシン４０の識別情報である。
【００３９】
図７に例示した選択データ５０内の１つのレコード５５では、例えば、「Ａ００１」の起動ＩＤ５１と、「１」の稼働フラグ５２と、「2013/5/20/17:30:20」の起動時刻５３と、「Ｍ００１」の物理マシンＩＤ５４とが格納されている。
【００４０】
次に、選択部２５は、選択データ５０内の各レコード５５を参照して、稼働フラグ５２に「１」が設定されているレコード５５を特定する。そして、選択部２５は、特定したレコードの中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【００４１】
一方、稼働フラグ５２に「１」が設定されているレコード５５が選択データ５０内に存在しない場合、選択部２５は、稼働フラグ５２に「０」が設定されているレコード５５の中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【００４２】
そして、選択部２５は、特定したレコードに含まれている起動ＩＤおよび物理マシンＩＤを、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、起動指示部２６へ送る。
【００４３】
なお、起動イメージ特定部２４から受け取った起動ＩＤが含まれている個別テーブル２２２が稼働テーブル２２０内に存在しない場合、選択部２５は、物理マシン４０を任意に１つ選択し、選択した物理マシン４０の物理マシンＩＤを特定し、起動イメージ特定部２４から受け取った起動ＩＤの中で起動ＩＤを任意に１つ特定する。
【００４４】
なお、物理マシン４０を任意に１つ選択する場合、選択部２５は、例えば、複数の物理マシン４０の負荷状況を監視して、負荷の低い物理マシン４０を優先的に選択するようにしてもよい。また、起動ＩＤを任意に１つ特定する場合、選択部２５は、起動イメージの参照回数を起動イメージ毎に記録し、起動イメージ特定部２４から受け取った起動ＩＤの中で、参照回数が多い起動イメージの起動ＩＤを優先的に特定するようにしてもよい。
【００４５】
起動指示部２６は、選択部２５から、起動ＩＤ、物理マシンＩＤ、および仮想マシンＩＤを受け取った場合に、当該物理マシンＩＤに対応する物理マシン４０へ、受け取った起動ＩＤおよび仮想マシンＩＤを含む起動指示を、通信回線１１を介して送信する。
【００４６】
そして、起動指示部２６は、稼働テーブル保持部２２内の稼働テーブル２２０を参照して、選択部２５から受け取った物理マシンＩＤに対応付けられている個別テーブル２２２を特定する。そして、起動指示部２６は、特定した個別テーブル２２２内に、選択部２５から受け取った仮想マシンＩＤに対応付けて、選択部２５から受け取った起動ＩＤを登録し、「１」の稼働フラグおよび起動時刻を登録する。
【００４７】
ここで、起動指示部２６は、起動指示を物理マシン４０へ送信した時刻を起動時刻として登録するが、送信した起動指示に含まれている起動ＩＤに基づく仮想マシンのインスタンスが実際に起動した時刻を、送信先の物理マシン４０から受け付けて、その時刻を起動時刻として登録するようにしてもよい。
【００４８】
また、通信回線１１を介して物理マシン４０から、物理マシンＩＤおよび仮想マシンＩＤを含む稼働終了通知を受信した場合、起動指示部２６は、当該稼働終了通知に含まれている物理マシンＩＤに対応付けられている個別テーブル２２２を稼働テーブル２２０内で特定する。そして、起動指示部２６は、特定した個別テーブル２２２において、当該稼働終了通知に含まれている仮想マシンＩＤに対応付けられている稼働フラグに「０」を設定する。
【００４９】
図８は、物理マシン４０の機能構成の一例を示すブロック図である。物理マシン４０は、起動イメージ取得部４１、一時メモリ４２、および起動処理部４３を有する。
【００５０】
一時メモリ４２には、管理テーブル４２０が格納される。図９は、第１の実施形態において一時メモリ４２内の管理テーブル４２０に格納されるデータ構造の一例を示す。管理テーブル４２０には、例えば図９に示すように、それぞれの起動イメージを識別する起動ＩＤ４２１に対応付けて、当該起動イメージの起動イメージ本体４２２と、当該起動イメージを最後に参照した参照時刻４２３とが格納される。管理テーブル４２０は、例えば、物理マシン４０のキャッシュメモリ内に構築される。
【００５１】
図９に例示した管理テーブル４２０では、例えば、「Ａ００２」の起動ＩＤ４２１に対応付けて、「ｂｂｂｂ」の起動イメージ本体４２２と、「2013/5/20/17:10:20」の参照時刻４２３とが格納されている。
【００５２】
ここで、物理マシン４０のメモリ使用量が多くなると、管理テーブル４２０内の参照時刻４２３の古い順に、起動ＩＤ４２１、起動イメージ本体４２２、および参照時刻４２３のデータが、管理テーブル４２０内から削除される。しかし、新しい参照時刻４２３に対応付けられている起動イメージ本体４２２のデータであれば、管理テーブル４２０内に残っている可能性が高い。
【００５３】
また、物理マシン４０のメモリ使用量があまり高くない状態で運用されていれば、古い参照時刻４２３に対応付けられている起動イメージ本体４２２のデータであっても、一時メモリ４２内に長期間残っている可能性もある。そのため、物理マシン４０内で、過去に起動イメージ本体のデータに基づいて仮想マシンを起動していれば、同じ物理マシン４０内の管理テーブル４２０内には、同一の起動イメージ本体のデータが残っている可能性がある。
【００５４】
起動イメージ取得部４１は、起動処理部４３から起動ＩＤを受け取った場合に、当該起動ＩＤを含む起動イメージ取得要求を通信回線１１を介してデータベースサーバ３０へ送信する。そして、データベースサーバ３０から起動イメージ本体のデータを受信した場合、起動イメージ取得部４１は、データベースサーバ３０から受信した起動イメージ本体のデータを、当該起動イメージの起動ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する。なお、この段階では、当該起動ＩＤに対応付けられている参照時刻の欄は空欄となっている。
【００５５】
起動処理部４３は、通信回線１１を介してリソース提供装置２０から起動指示を受信した場合に、当該起動指示に含まれている起動ＩＤに基づいて一時メモリ４２内の管理テーブル４２０を参照し、当該起動ＩＤに対応する起動イメージ本体のデータが管理テーブル４２０内に格納されているか否かを判定する。
【００５６】
当該起動ＩＤに対応する起動イメージ本体のデータが管理テーブル４２０内に格納されている場合、起動処理部４３は、当該起動イメージ本体のデータを管理テーブル４２０から取得する。そして、起動処理部４３は、当該起動ＩＤに対応付けられて管理テーブル４２０内に格納されている参照時刻４２３を、現在の時刻で書き換える。
【００５７】
一方、当該起動ＩＤに対応する起動イメージ本体のデータが管理テーブル４２０内に格納されていない場合、起動処理部４３は、当該起動ＩＤを起動イメージ取得部４１へ送る。そして、管理テーブル４２０内に、当該起動ＩＤと、当該起動ＩＤに対応する起動イメージ本体のデータとが新たに登録された場合、起動処理部４３は、新たに登録された起動イメージ本体のデータを管理テーブル４２０から取得する。そして、起動処理部４３は、管理テーブル４２０において、新たに登録された起動ＩＤに対応付けられている参照時刻４２３の欄に、現在の時刻を設定する。
【００５８】
次に、起動処理部４３は、取得した起動イメージ本体のデータに基づいて仮想マシンを起動し、インスタンスを生成する。そして、起動処理部４３は、生成したインスタンスを実行し、当該インスタンスの稼働状態を、リソース提供装置２０から受信した起動指示に含まれている仮想マシンＩＤに対応付けて管理する。
【００５９】
そして、当該インスタンスの実行が終了した場合、起動処理部４３は、当該インスタンスに対応する仮想マシンＩＤと、自装置の物理マシンＩＤとを含む稼働終了通知を作成し、作成した稼働終了通知を、通信回線１１を介してリソース提供装置２０へ送信する。
【００６０】
図１０は、第１の実施形態におけるリソース提供装置２０の動作の一例を示すフローチャートである。リソース提供装置２０は、例えば起動後に本フローチャートに示す動作を開始する。
【００６１】
まず、起動指示受付部２３は、通信回線１１を介して起動指示を受信したか否かを判定する（Ｓ１００）。起動指示を受信した場合（Ｓ１００：Ｙｅｓ）、起動指示受付部２３は、受信した起動指示に応じて生成されるべきインスタンスに仮想マシンＩＤを割り当てる。そして、起動指示受付部２３は、受信した起動指示に含まれている仕様項目を、割り当てた仮想マシンＩＤと共に、起動イメージ特定部２４へ送る。
【００６２】
起動イメージ特定部２４は、起動イメージ管理テーブル保持部２１内の起動イメージ管理テーブル２１０を参照して、起動指示受付部２３から受け取った仕様項目に「１」が設定されている起動ＩＤを１つ以上特定する（Ｓ１０１）。そして、起動イメージ特定部２４は、特定した１つ以上の起動ＩＤを、起動指示受付部２３から受け取った仮想マシンＩＤと共に選択部２５へ送る。
【００６３】
次に、選択部２５は、後述する物理マシンＩＤの特定処理を実行し、起動ＩＤおよび物理マシンＩＤを特定し、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、特定した起動ＩＤおよび物理マシンＩＤを起動指示部２６へ送る（Ｓ２００）。
【００６４】
次に、起動指示部２６は、選択部２５から受け取った起動ＩＤおよび仮想マシンＩＤを、選択部２５から受け取った物理マシンＩＤに対応する物理マシン４０へ、通信回線１１を介して送信する（Ｓ１０２）。そして、起動指示部２６は、稼働テーブル保持部２２内の稼働テーブル２２０を参照して、選択部２５から受け取った物理マシンＩＤに対応付けられている個別テーブル２２２を特定する。
【００６５】
そして、起動指示部２６は、特定した個別テーブル２２２内に、選択部２５から受け取った仮想マシンＩＤに対応付けて、選択部２５から受け取った起動ＩＤを登録し、稼働中を示す稼働フラグおよび起動時刻を登録する（Ｓ１０３）。そして、起動指示受付部２３は、再びステップＳ１００に示した処理を実行する。
【００６６】
一方、起動指示を受信していない場合（Ｓ１００：Ｎｏ）、起動指示部２６は、通信回線１１を介して物理マシン４０から、稼働終了通知を受信したか否かを判定する（Ｓ１０４）。稼働終了通知を受信していない場合（Ｓ１０４：Ｎｏ）、起動指示受付部２３は、再びステップＳ１００に示した処理を実行する。
【００６７】
稼働終了通知を受信した場合（Ｓ１０４：Ｙｅｓ）、起動指示部２６は、当該稼働終了通知に含まれている物理マシンＩＤに対応付けられている個別テーブル２２２を稼働テーブル２２０内で特定する。そして、起動指示部２６は、特定した個別テーブル２２２において、当該稼働終了通知に含まれている仮想マシンＩＤに対応付けられている稼働フラグを、稼働終了を示す値「０」に書き換える（Ｓ１０５）。そして、起動指示受付部２３は、再びステップＳ１００に示した処理を実行する。
【００６８】
図１１は、物理マシンＩＤの特定処理（Ｓ２００）の一例を示すフローチャートである。
【００６９】
まず、選択部２５は、起動イメージ特定部２４から受け取った１つ以上の起動ＩＤに基づいて、選択データ（図７参照）を作成する（Ｓ２０１）。より詳細には、選択部２５は、起動イメージ特定部２４から受け取ったそれぞれの起動ＩＤについて、稼働テーブル保持部２２内の稼働テーブル２２０を参照し、当該起動ＩＤが含まれている個別テーブル２２２を検索する。
【００７０】
起動イメージ特定部２４から受け取ったそれぞれの起動ＩＤについて、当該起動ＩＤが含まれている個別テーブル２２２が稼働テーブル２２０内に存在する場合、選択部２５は、当該個別テーブル２２２を参照して、当該起動ＩＤに対応付けられている稼働フラグおよび起動時刻を抽出する。そして、選択部２５は、当該個別テーブル２２２が対応付けられている物理マシンＩＤを稼働テーブル２２０を参照して特定し、先に抽出した稼働フラグおよび起動時刻と共に、起動ＩＤに対応付けて選択データを作成する（Ｓ２０１）。
【００７１】
なお、起動イメージ特定部２４から受け取ったいずれの起動ＩＤについても、当該起動ＩＤが含まれている個別テーブル２２２が稼働テーブル２２０内に存在しない場合、作成される選択データ、レコードが存在しない空のデータとなる。
【００７２】
次に、選択部２５は、作成した選択データを参照して、選択データ内にレコードが存在するか否かを判定する（Ｓ２０２）。選択データ内にレコードが存在しない場合（Ｓ２０２：Ｎｏ）、選択部２５は、起動イメージ特定部２４から受け取った起動ＩＤの中で起動ＩＤを任意に１つ特定する。また、選択部２５は、物理マシンＩＤを任意に１つ選択する（Ｓ２０３）。そして、選択部２５は、本フローチャートに示した処理を終了する。
【００７３】
一方、選択データ内にレコードが存在する場合（Ｓ２０２：Ｙｅｓ）、選択部２５は、選択データ内に、稼働中を示す稼働フラグを含むレコードが存在するか否かを判定する（Ｓ２０４）。稼働中を示す稼働フラグを含むレコードが選択データ内に存在する場合（Ｓ２０４：Ｙｅｓ）、選択部２５は、稼働中を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ２０５）。
【００７４】
一方、稼働中を示す稼働フラグを含むレコードが選択データ内に存在しない場合（Ｓ２０４：Ｎｏ）、選択部２５は、稼働終了を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ２０６）。
【００７５】
次に、選択部２５は、特定したレコードに含まれている起動ＩＤおよび物理マシンＩＤを、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、起動指示部２６へ送る（Ｓ２０７）。そして、選択部２５は、本フローチャートに示した処理を終了する。
【００７６】
図１２は、第１の実施形態における物理マシン４０の動作の一例を示すフローチャートである。物理マシン４０は、例えば起動後に本フローチャートに示す動作を開始する。
【００７７】
まず、起動処理部４３は、通信回線１１を介してリソース提供装置２０から、起動ＩＤおよび仮想マシンＩＤを含む起動指示を受信したか否かを判定する（Ｓ３００）。起動指示を受信した場合（Ｓ３００：Ｙｅｓ）、起動処理部４３は、一時メモリ４２内の管理テーブル４２０を参照して、当該起動指示に含まれている起動ＩＤに対応する起動イメージ本体のデータが、管理テーブル４２０内に残っているか否かを判定する（Ｓ３０１）。
【００７８】
起動指示に含まれている起動ＩＤに対応する起動イメージ本体のデータが、管理テーブル４２０内に残っていない場合（Ｓ３０１：Ｎｏ）、起動処理部４３は、当該起動ＩＤを起動イメージ取得部４１へ送る。起動イメージ取得部４１は、起動処理部４３から起動ＩＤを受け取った場合に、当該起動ＩＤを含む起動イメージ取得要求を通信回線１１を介してデータベースサーバ３０へ送信する。
【００７９】
そして、データベースサーバ３０から起動イメージ本体のデータを受信した場合、起動イメージ取得部４１は、データベースサーバ３０から受信した起動イメージ本体のデータを、当該起動イメージの起動ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する（Ｓ３０２）。そして、起動処理部４３は、ステップＳ３０３に示す処理を実行する。
【００８０】
一方、起動指示に含まれている起動ＩＤに対応する起動イメージ本体のデータが、管理テーブル４２０内に残っている場合（Ｓ３０１：Ｙｅｓ）、起動処理部４３は、当該起動ＩＤに対応付けられている起動イメージ本体のデータを管理テーブル４２０から取得する。そして、起動処理部４３は、当該起動ＩＤに対応付けられて管理テーブル４２０内に格納されている参照時刻４２３を、現在の時刻で書き換える。
【００８１】
次に、起動処理部４３は、取得した起動イメージ本体のデータに参照して仮想マシンを起動し、インスタンスを生成する（Ｓ３０３）。そして、起動処理部４３は、生成したインスタンスを実行し、当該インスタンスの稼働状態を、リソース提供装置２０から受信した起動指示に含まれている仮想マシンＩＤに対応付けて管理する。そして、起動処理部４３は、再びステップＳ３００に示した処理を実行する。
【００８２】
起動指示を受信していない場合（Ｓ３００：Ｎｏ）、起動処理部４３は、インスタンスの稼働が終了したか否かを判定する（Ｓ３０４）。インスタンスの稼働が終了していない場合（Ｓ３０４：Ｎｏ）、起動処理部４３は、再びステップＳ３００に示した処理を実行する。
【００８３】
一方、インスタンスの稼働が終了した場合（Ｓ３０４：Ｙｅｓ）、起動処理部４３は、当該インスタンスに対応する仮想マシンＩＤと、自装置の物理マシンＩＤとを含む稼働終了通知を作成する。そして、起動処理部４３は、作成した稼働終了通知を、通信回線１１を介してリソース提供装置２０へ送信する（Ｓ３０５）。そして、起動処理部４３は、再びステップＳ３００に示した処理を実行する。
【００８４】
以上、本発明の第１の実施形態について説明した。
【００８５】
上記説明から明らかなように、本実施形態のリソース提供システム１０によれば、全体として、仮想マシンの起動に必要な起動イメージの転送時間を削減することができるため、仮想サーバの起動に伴うリードタイムを短縮することができる。
【００８６】
次に、本発明の第２の実施形態について、図面を参照しながら説明する。
【００８７】
本実施形態におけるリソース提供システム１０のシステム構成は、図１に示した第１の実施形態におけるリソース提供システム１０のシステム構成と同様である。ただし、本実施形態では、各起動イメージが、複数の起動イメージに共通するデータで構成されるベースイメージと、複数の起動イメージ間で異なるデータで構成される差分イメージとを含む点が異なる。
【００８８】
第１の実施形態では、ユーザが指定する仕様を満たす起動イメージに基づいて過去に仮想マシンを起動したことのある物理マシン４０が存在しない場合、リソース提供装置２０は、任意に選択した物理マシン４０に、当該起動イメージをデータベースサーバ３０から取得させて仮想マシンを起動させることになる。これに対し、本実施形態のリソース提供装置２０では、そのような物理マシン４０が存在しない場合であっても、当該起動イメージに含まれるベースイメージを共通に含む起動イメージを実行した物理マシン４０が他に存在する場合には、当該物理マシン４０を、ユーザが指定する仕様を満たす起動イメージに基づいて仮想マシンを起動させる物理マシン４０として選択する。
【００８９】
例えば、ユーザが指定する仕様を満たす起動イメージに含まれるベースイメージが、物理マシン４０内に既に存在していれば、当該起動イメージを準備するには、通信回線１１を介してデータベースサーバ３０から差分イメージを取得すればよく、ベースイメージを含めた起動イメージ全体を取得する必要はない。そのため、起動イメージの取得にかかる転送時間を削減することができる。これにより、本実施形態では、ユーザが指定する仕様を満たす起動イメージに基づいて過去に仮想マシンを起動したことのある物理マシン４０が存在しない場合であっても、起動イメージの転送時間に起因する仮想マシンの起動の遅れを短く抑えることができる。
【００９０】
以下、このような機能を実現するための各部の詳細な構成について、さらに詳しく説明する。
【００９１】
本実施形態におけるデータベースサーバ３０の構成は、図２に示した第１の実施形態におけるデータベースサーバ３０と同様である。ただし、起動イメージ格納部３１内のデータの構造は第１の実施形態の起動イメージ格納部３１とは異なる。本実施形態における起動イメージ格納部３１内には、差分イメージテーブルとベースイメージテーブルとが予め格納されている。図１３は、第２の実施形態において起動イメージ格納部３１内に格納される差分イメージテーブル３１３のデータ構造の一例を示す。図１４は、第２の実施形態において起動イメージ格納部３１内に格納されるベースイメージテーブル３１６のデータ構造の一例を示す。
【００９２】
差分イメージテーブル３１３には、例えば図１３に示すように、それぞれの差分イメージを識別する差分ＩＤ３１４に対応付けて、当該差分イメージの差分イメージ本体３１５のデータが予め格納されている。図１３に例示した差分イメージテーブル３１３では、例えば、「Ｄ００１」の差分ＩＤ３１４に対応付けて、「ｇｇｇｇ」の差分イメージ本体３１５のデータが格納されている。
【００９３】
また、ベースイメージテーブル３１６には、例えば図１４に示すように、それぞれのベースイメージを識別するベースＩＤ３１７に対応付けて、当該ベースイメージのベースイメージ本体３１８のデータが予め格納されている。図１４に例示したベースイメージテーブル３１６では、例えば、「Ｂ００１」のベースＩＤ３１７に対応付けて、「ｗｗｗｗ」のベースイメージ本体３１８のデータが格納されている。
【００９４】
データ送受信部３２は、通信回線１１を介して物理マシン４０から、差分ＩＤを含む起動イメージ取得要求を受信した場合に、当該差分ＩＤに対応付けられている差分イメージ本体のデータを差分イメージテーブル３１３から抽出する。そして、データ送受信部３２は、抽出した差分イメージ本体のデータを、起動イメージ取得要求の送信元の物理マシン４０へ通信回線１１を介して送信する。
【００９５】
また、通信回線１１を介して差分ＩＤおよびベースＩＤを含む起動イメージ取得要求を受信した場合、データ送受信部３２は、当該差分ＩＤに対応付けられている差分イメージ本体のデータを差分イメージテーブル３１３から抽出し、当該ベースＩＤに対応付けられているベースイメージ本体のデータをベースイメージテーブル３１６から抽出する。そして、データ送受信部３２は、抽出した差分イメージ本体のデータと、抽出したベースイメージ本体のデータとを、起動イメージ取得要求の送信元の物理マシン４０へ通信回線１１を介して送信する。
【００９６】
次に、本実施形態におけるリソース提供装置２０の構成について説明する。本実施形態におけるリソース提供装置２０の構成は、以下に説明する点を除き、図４に示した第１の実施形態におけるリソース提供装置２０と同様であるため、重複する説明は省略する。
【００９７】
図１５は、第２の実施形態において起動イメージ管理テーブル保持部２１内に格納される起動イメージ管理テーブル２１０のデータ構造の一例を示す。本実施形態における起動イメージ管理テーブル２１０には、例えば図１５に示すように、同一の起動イメージに含まれる差分イメージおよびベースイメージをそれぞれ識別する差分ＩＤ２１３およびベースＩＤ２１４の組み合わせに対応付けて、複数の仕様項目２１５が格納されている。
【００９８】
図１６は、第２の実施形態において稼働テーブル保持部２２に格納される稼働テーブル２２０のデータ構造の一例を示す。本実施形態における稼働テーブル２２０には、例えば図１６に示すように、それぞれの物理マシン４０を識別する物理マシンＩＤ２２１に対応付けて、個別テーブル２２２が格納される。
【００９９】
それぞれの個別テーブル２２２には、仮想マシンＩＤ２２３に対応付けて、差分ＩＤ２２７、ベースＩＤ２２８、稼働フラグ２２５、および起動時刻２２６が格納される。差分ＩＤ２２７は、仮想マシンＩＤ２２３に対応するインスタンスの生成時に参照される起動イメージに含まれる差分イメージを識別する情報である。ベースＩＤ２２８は、仮想マシンＩＤ２２３に対応するインスタンスの生成時に参照される起動イメージに含まれるベースイメージを識別する情報である。仮想マシンＩＤ２２３、稼働フラグ２２５、および起動時刻２２６については、図６で説明したものと同様であるため、これらの説明は省略する。
【０１００】
起動イメージ特定部２４は、起動指示受付部２３から仮想マシンＩＤと共に仕様項目を受け取った場合に、起動イメージ管理テーブル保持部２１内の起動イメージ管理テーブル２１０を参照し、起動指示受付部２３から受け取った仕様項目に「１」が設定されている差分ＩＤおよびベースＩＤの組み合わせを１つ以上特定する。そして、起動イメージ特定部２４は、特定した１つ以上の差分ＩＤおよびベースＩＤの組み合わせを、起動指示受付部２３から受け取った仮想マシンＩＤと共に選択部２５へ送る。
【０１０１】
選択部２５は、起動イメージ特定部２４から仮想マシンＩＤと共に１つ以上の差分ＩＤおよびベースＩＤの組み合わせを受け取った場合に、稼働テーブル保持部２２内の稼働テーブル２２０を参照し、起動イメージ特定部２４から受け取ったベースＩＤを含む個別テーブル２２２を検索する。
【０１０２】
当該ベースＩＤを含む個別テーブル２２２が稼働テーブル２２０内に存在する場合、選択部２５は、当該個別テーブル２２２を参照して、当該ベースＩＤに対応付けられている差分ＩＤ、稼働フラグ、および起動時刻を抽出する。そして、選択部２５は、当該個別テーブル２２２が対応付けられている物理マシンＩＤを、稼働テーブル２２０を参照して特定し、先に抽出した差分ＩＤ、稼働フラグ、および起動時刻と共に、ベースＩＤに対応付けて選択データとして保持する。
【０１０３】
図１７は、第２の実施形態において選択部２５が保持する選択データ５０の構造の一例を示す。本実施形態における選択データ５０には、例えば図１７に示すように、複数のレコード５５が格納される。各レコード５５には、差分ＩＤ５６、ベースＩＤ５７、稼働フラグ５２、起動時刻５３、および物理マシンＩＤ５４が格納される。なお、以下に説明する点を除き、図１７において、図７と同一の符号を付した構成は、図７に示した構成と同様であるため説明を省略する。
【０１０４】
それぞれのレコードに含まれている差分ＩＤ５６およびベースＩＤ５７の組み合わせは、同一の起動イメージに含まれている差分イメージおよびベースイメージをそれぞれ識別する情報である。
【０１０５】
次に、選択部２５は、選択データ５０内の各レコード５５を参照して、起動イメージ特定部２４から受け取った差分ＩＤおよびベースＩＤの組み合わせを含むレコード５５を検索する。そのようなレコード５５が見つかった場合、選択部２５は、その中で、稼働フラグ５２に「１」が設定されているレコード５５を特定する。そして、選択部２５は、特定したレコードの中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【０１０６】
稼働フラグ５２に「１」が設定されているレコード５５が、検索したレコード５５の中に存在しない場合、すなわち、検索した全てのレコード５５内の稼働フラグ５２の値が「０」である場合、選択部２５は、検索したレコード５５の中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【０１０７】
また、選択データ５０内の各レコード５５の中に、起動イメージ特定部２４から受け取った差分ＩＤおよびベースＩＤの組み合わせを含むレコード５５が存在しない場合、選択部２５は、選択データ５０内のレコード５５の中で、稼働フラグ５２に「１」が設定されているレコード５５を特定する。そして、選択部２５は、特定したレコードの中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【０１０８】
稼働フラグ５２に「１」が設定されているレコード５５が選択データ５０内に存在しない場合、すなわち、選択データ５０内の全てのレコード５５内の稼働フラグ５２の値が「０」である場合、選択部２５は、選択データ５０内のレコード５５の中で、最新の起動時刻５３を含むレコード５５を１つ特定する。
【０１０９】
そして、選択部２５は、特定したレコードに含まれている差分ＩＤ、ベースＩＤ、および物理マシンＩＤを、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、起動指示部２６へ送る。
【０１１０】
起動指示部２６は、選択部２５から、差分ＩＤ、ベースＩＤ、物理マシンＩＤ、および仮想マシンＩＤを受け取った場合に、当該物理マシンＩＤに対応する物理マシン４０へ、受け取った差分ＩＤ、ベースＩＤ、および仮想マシンＩＤを含む起動指示を、通信回線１１を介して送信する。
【０１１１】
そして、起動指示部２６は、稼働テーブル保持部２２内の稼働テーブル２２０を参照して、選択部２５から受け取った物理マシンＩＤに対応付けられている個別テーブル２２２を特定する。そして、起動指示部２６は、特定した個別テーブル２２２内に、選択部２５から受け取った仮想マシンＩＤに対応付けて、選択部２５から受け取った差分ＩＤおよびベースＩＤを登録し、「１」の稼働フラグおよび起動時刻を登録する。
【０１１２】
次に、本実施形態における物理マシン４０の構成について説明する。本実施形態における物理マシン４０の構成は、以下に説明する点を除き、図８に示した第１の実施形態における物理マシン４０と同様であるため、重複する説明は省略する。
【０１１３】
本実施形態における一時メモリ４２には、管理テーブル４２０およびベースイメージテーブル４２７が格納される。図１８は、第２の実施形態において一時メモリ４２内に格納される管理テーブル４２０のデータ構造の一例を示す。図１９は、第２の実施形態において一時メモリ４２内に格納されるベースイメージテーブル４２７のデータ構造の一例を示す。
【０１１４】
本実施形態における管理テーブル４２０には、例えば図１８に示すように、それぞれの差分イメージを識別する差分ＩＤ４２４に対応付けて、当該差分イメージの差分イメージ本体４２５のデータ、当該差分イメージ本体４２５と共に起動イメージに含まれるベースイメージ本体のデータを識別するベースＩＤ４２６、および参照時刻４２３が格納される。
【０１１５】
図１８に例示した管理テーブル４２０では、例えば、「Ｄ００２」の差分ＩＤ４２４に対応付けて、「ｈｈｈｈ」の差分イメージ本体４２５と、「Ｂ００１」のベースＩＤ４２６と、「2013/5/20/17:29:12」の参照時刻４２３とが格納されている。
【０１１６】
また、ベースイメージテーブル４２７には、例えば図１９に示すように、それぞれのベースイメージを識別するベースＩＤ４２８に対応付けて、当該ベースイメージのベースイメージ本体４２９のデータが格納される。図１９に例示したベースイメージテーブル４２７では、例えば、「Ｂ００１」のベースＩＤ４２８に対応付けて、「ｗｗｗｗ」のベースイメージ本体４２９のデータが格納されている。
【０１１７】
なお、物理マシン４０のメモリ使用量が多くなると、管理テーブル４２０内の参照時刻４２３の古い順に、差分ＩＤ４２４、差分イメージ本体４２５、ベースＩＤ４２６、および参照時刻４２３のデータが、管理テーブル４２０内から削除される。そして、削除されたベースＩＤに対応付けられているベースイメージ本体４２９もベースイメージテーブル４２７から削除される。
【０１１８】
ただし、図１８に示すように、異なる起動イメージであっても、同一のベースイメージを含むものが、より新しい参照時刻４２３に対応付けられている場合がある。そのため、古い参照時刻４２３に対応付けられているベースＩＤ４２６であっても、それよりも新しい参照時刻４２３にも対応付けられているベースＩＤ４２６については、対応するベースイメージ本体のデータはベースイメージテーブル４２７から削除されない。
【０１１９】
起動イメージ取得部４１は、起動処理部４３から差分ＩＤを受け取った場合に、当該差分ＩＤを含む起動イメージ取得要求を通信回線１１を介してデータベースサーバ３０へ送信する。そして、データベースサーバ３０から差分イメージ本体のデータを受信した場合、起動イメージ取得部４１は、受信した差分イメージ本体のデータを、当該差分イメージの差分ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する。なお、この段階では、管理テーブル４２０において、当該差分ＩＤに対応付けられているベースＩＤおよび参照時刻の欄は空欄となっている。
【０１２０】
また、起動処理部４３から差分ＩＤおよびベースＩＤを受け取った場合に、当該差分ＩＤおよびベースＩＤを含む起動イメージ取得要求を通信回線１１を介してデータベースサーバ３０へ送信する。そして、データベースサーバ３０から差分イメージ本体およびベースイメージ本体のデータを受信した場合、起動イメージ取得部４１は、受信した差分イメージ本体のデータと、受信したベースイメージ本体のベースＩＤとを、当該差分イメージの差分ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する。なお、この段階では、管理テーブル４２０において、当該差分ＩＤに対応付けられている参照時刻４２３の欄は空欄となっている。
【０１２１】
そして、起動イメージ取得部４１は、受信したベースイメージ本体のデータを、ベースＩＤに対応付けて一時メモリ４２内のベースイメージテーブル４２７に格納する。
【０１２２】
起動処理部４３は、通信回線１１を介してリソース提供装置２０から起動指示を受信した場合に、当該起動指示に含まれている差分ＩＤに基づいて一時メモリ４２内の管理テーブル４２０を参照し、当該差分ＩＤに対応する差分イメージ本体のデータが管理テーブル４２０内に格納されているか否かを判定する。
【０１２３】
当該差分イメージ本体のデータが管理テーブル４２０内に格納されている場合、起動処理部４３は、当該差分イメージ本体のデータを管理テーブル４２０から取得する。そして、起動処理部４３は、当該差分イメージ本体に対応付けられて管理テーブル４２０に格納されているベースＩＤに基づいてベースイメージテーブル４２７を参照し、当該ベースＩＤに対応付けられているベースイメージ本体のデータを取得する。そして、起動処理部４３は、当該差分ＩＤに対応付けられて管理テーブル４２０内に格納されている参照時刻４２３を、現在の時刻で書き換える。
【０１２４】
当該差分イメージ本体のデータが管理テーブル４２０内に格納されていない場合、起動処理部４３は、リソース提供装置２０から受信した起動指示に含まれているベースＩＤに基づいて一時メモリ４２内のベースイメージテーブル４２７を参照し、当該ベースＩＤに対応するベースイメージ本体のデータがベースイメージテーブル４２７内に格納されているか否かを判定する。
【０１２５】
対応するベースイメージ本体のデータがベースイメージテーブル４２７内に格納されている場合、起動処理部４３は、リソース提供装置２０から受信した起動指示に含まれている差分ＩＤを起動イメージ取得部４１へ送る。そして、当該差分ＩＤに対応する差分イメージが管理テーブル４２０内に登録された場合、起動処理部４３は、当該差分イメージを管理テーブル４２０から取得し、リソース提供装置２０から受信した起動指示に含まれているベースＩＤに対応するベースイメージ本体のデータをベースイメージテーブル４２７から取得する。
【０１２６】
そして、起動処理部４３は、当該差分ＩＤに対応付けて、リソース提供装置２０から受信した起動指示に含まれているベースＩＤを、管理テーブル４２０内のベースＩＤ４２６の欄に登録し、参照時刻４２３の欄に現在時刻を登録する。
【０１２７】
一方、対応するベースイメージ本体のデータがベースイメージテーブル４２７内に格納されていない場合、起動処理部４３は、リソース提供装置２０から受信した起動指示に含まれている差分ＩＤおよびベースＩＤを起動イメージ取得部４１へ送る。そして、当該差分ＩＤに対応する差分イメージ本体のデータが管理テーブル４２０内に登録され、かつ、当該ベースＩＤに対応するベースイメージ本体のデータがベースイメージテーブル４２７内に登録された場合、起動処理部４３は、当該差分イメージ本体のデータを管理テーブル４２０から取得し、当該ベースイメージ本体のデータをベースイメージテーブル４２７から取得する。そして、起動処理部４３は、当該差分ＩＤに対応付けられている参照時刻４２３の欄に現在時刻を登録する。
【０１２８】
次に、起動処理部４３は、取得した差分イメージ本体のデータとベースイメージ本体のデータとに基づいて仮想マシンを起動し、インスタンスを生成する。そして、起動処理部４３は、生成したインスタンスを実行し、当該インスタンスの稼働状態を、リソース提供装置２０から受信した起動指示に含まれている仮想マシンＩＤに対応付けて管理する。
【０１２９】
図２０は、第２の実施形態におけるリソース提供装置２０の動作の一例を示すフローチャートである。リソース提供装置２０は、例えば起動後に本フローチャートに示す動作を開始する。
【０１３０】
まず、起動指示受付部２３は、通信回線１１を介して起動指示を受信したか否かを判定する（Ｓ４００）。起動指示を受信した場合（Ｓ４００：Ｙｅｓ）、起動指示受付部２３は、受信した起動指示に応じて生成されるインスタンスに仮想マシンＩＤを割り当てる。そして、起動指示受付部２３は、受信した起動指示に含まれている仕様項目を、割り当てた仮想マシンＩＤと共に、起動イメージ特定部２４へ送る。
【０１３１】
起動イメージ特定部２４は、起動イメージ管理テーブル保持部２１内の起動イメージ管理テーブル２１０を参照して、起動指示受付部２３から受け取った仕様項目に「１」が設定されている差分ＩＤおよびベースＩＤを１つ以上特定する（Ｓ４０１）。そして、起動イメージ特定部２４は、特定した１つ以上の差分ＩＤおよびベースＩＤの組み合わせを、起動指示受付部２３から受け取った仮想マシンＩＤと共に選択部２５へ送る。
【０１３２】
次に、選択部２５は、後述する物理マシンＩＤの特定処理を実行し、差分ＩＤ、ベースＩＤ、および物理マシンＩＤを特定し、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、特定した差分ＩＤ、ベースＩＤ、および物理マシンＩＤを起動指示部２６へ送る（Ｓ５００）。
【０１３３】
次に、起動指示部２６は、選択部２５から受け取った差分ＩＤ、ベースＩＤ、および仮想マシンＩＤを、選択部２５から受け取った物理マシンＩＤに対応する物理マシン４０へ、通信回線１１を介して送信する（Ｓ４０２）。そして、起動指示部２６は、稼働テーブル保持部２２内の稼働テーブル２２０を参照して、選択部２５から受け取った物理マシンＩＤに対応付けられている個別テーブル２２２を特定する。
【０１３４】
そして、起動指示部２６は、特定した個別テーブル２２２内に、選択部２５から受け取った仮想マシンＩＤに対応付けて、選択部２５から受け取った差分ＩＤおよびベースＩＤを登録し、稼働中を示す稼働フラグおよび起動時刻を登録する（Ｓ４０３）。そして、起動指示受付部２３は、再びステップＳ４００に示した処理を実行する。
【０１３５】
一方、起動指示を受信していない場合（Ｓ４００：Ｎｏ）、起動指示部２６は、通信回線１１を介して物理マシン４０から、稼働終了通知を受信したか否かを判定する（Ｓ４０４）。稼働終了通知を受信していない場合（Ｓ４０４：Ｎｏ）、起動指示受付部２３は、再びステップＳ４００に示した処理を実行する。
【０１３６】
稼働終了通知を受信した場合（Ｓ４０４：Ｙｅｓ）、起動指示部２６は、当該稼働終了通知に含まれている物理マシンＩＤに対応付けられている個別テーブル２２２を稼働テーブル２２０内で特定する。そして、起動指示部２６は、特定した個別テーブル２２２において、当該稼働終了通知に含まれている仮想マシンＩＤに対応付けられている稼働フラグを、稼働終了を示す値「０」に書き換る（Ｓ４０５）。そして、起動指示受付部２３は、再びステップＳ４００に示した処理を実行する。
【０１３７】
図２１は、物理マシンＩＤの特定処理（Ｓ５００）の一例を示すフローチャートである。
【０１３８】
まず、選択部２５は、起動イメージ特定部２４から受け取った１つ以上の差分ＩＤおよびベースＩＤの組み合わせに基づいて、選択データ（図１７参照）を作成する（Ｓ５０１）。より詳細には、選択部２５は、起動イメージ特定部２４から受け取ったそれぞれの差分ＩＤおよびベースＩＤの組み合わせについて、稼働テーブル保持部２２内の稼働テーブル２２０を参照し、当該ベースＩＤが含まれている個別テーブル２２２を検索する。
【０１３９】
当該ベースＩＤが含まれている個別テーブル２２２が稼働テーブル２２０内に存在する場合、選択部２５は、当該個別テーブル２２２を参照して、当該ベースＩＤに対応付けられている差分ＩＤ、稼働フラグ、および起動時刻を抽出する。そして、選択部２５は、当該個別テーブル２２２が対応付けられている物理マシンＩＤを、稼働テーブル２２０を参照して特定し、先に抽出した差分ＩＤ、稼働フラグ、および起動時刻と共に、ベースＩＤに対応付けて選択データを作成する（Ｓ５０１）。
【０１４０】
次に、選択部２５は、作成した選択データを参照して、選択データ内にレコードが存在するか否かを判定する（Ｓ５０２）。選択データ内にレコードが存在しない場合（Ｓ５０２：Ｎｏ）、選択部２５は、起動イメージ特定部２４から受け取った差分ＩＤおよびベースＩＤの組み合わせの中で、差分ＩＤおよびベースＩＤの組み合わせを任意に１つ特定する。また、選択部２５は、物理マシンＩＤを任意に１つ選択し（Ｓ５０３）、本フローチャートに示した処理を終了する。
【０１４１】
一方、選択データ内にレコードが存在する場合（Ｓ５０２：Ｙｅｓ）、選択部２５は、選択データ内に、起動イメージ特定部２４から受け取った差分ＩＤを含むレコードがあるか否かを判定する（Ｓ５０４）。選択データ内に、起動イメージ特定部２４から受け取った差分ＩＤを含むレコードが存在する場合（Ｓ５０４：Ｙｅｓ）、選択部２５は、当該差分ＩＤを含むレコードの中で、稼働中を示す稼働フラグを含むレコードが存在するか否かを判定する（Ｓ５０５）。
【０１４２】
稼働中を示す稼働フラグを含むレコードが選択データ内に存在する場合（Ｓ５０５：Ｙｅｓ）、選択部２５は、稼働中を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ５０６）。そして、選択部２５は、ステップＳ５１１に示す処理を実行する。
【０１４３】
一方、稼働中を示す稼働フラグを含むレコードが選択データ内に存在しない場合（Ｓ５０５：Ｎｏ）、選択部２５は、稼働終了を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ５０７）。そして、選択部２５は、ステップＳ５１１に示す処理を実行する。
【０１４４】
また、選択データ内に、起動イメージ特定部２４から受け取った差分ＩＤを含むレコードが存在しない場合（Ｓ５０４：Ｎｏ）、選択部２５は、選択データ内のレコードの中で、稼働中を示す稼働フラグを含むレコードが存在するか否かを判定する（Ｓ５０８）。
【０１４５】
稼働中を示す稼働フラグを含むレコードが選択データ内に存在する場合（Ｓ５０８：Ｙｅｓ）、選択部２５は、稼働中を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ５０９）。そして、選択部２５は、ステップＳ５１１に示す処理を実行する。
【０１４６】
一方、稼働中を示す稼働フラグを含むレコードが選択データ内に存在しない場合（Ｓ５０８：Ｎｏ）、選択部２５は、稼働終了を示す稼働フラグを含むレコードの中で、最新の起動時刻を含むレコードを１つ特定する（Ｓ５１０）。
【０１４７】
次に、選択部２５は、特定したレコードに含まれている差分ＩＤ、ベースＩＤ、および物理マシンＩＤを、起動イメージ特定部２４から受け取った仮想マシンＩＤと共に、起動指示部２６へ送る（Ｓ５１１）。そして、選択部２５は、本フローチャートに示した処理を終了する。
【０１４８】
図２２は、第２の実施形態における物理マシン４０の動作の一例を示すフローチャートである。物理マシン４０は、例えば起動後に本フローチャートに示す動作を開始する。
【０１４９】
まず、起動処理部４３は、通信回線１１を介してリソース提供装置２０から、差分ＩＤ、ベースＩＤ、および仮想マシンＩＤを含む起動指示を受信したか否かを判定する（Ｓ６００）。起動指示を受信した場合（Ｓ６００：Ｙｅｓ）、起動処理部４３は、一時メモリ４２内の管理テーブル４２０を参照して、当該起動指示に含まれている差分ＩＤに対応する差分イメージ本体が管理テーブル４２０内に残っているか否かを判定する（Ｓ６０１）。
【０１５０】
起動指示に含まれている差分ＩＤに対応する差分イメージ本体のデータが、管理テーブル４２０内に残っている場合（Ｓ６０１：Ｙｅｓ）、起動処理部４３は、当該差分イメージ本体のデータを管理テーブル４２０から取得する。
【０１５１】
そして、起動処理部４３は、当該差分イメージ本体に対応付けられて管理テーブル４２０に格納されているベースＩＤに基づいてベースイメージテーブル４２７を参照し、当該ベースＩＤに対応付けられているベースイメージ本体のデータを取得する。そして、起動処理部４３は、当該差分ＩＤに対応付けられて管理テーブル４２０内に格納されている参照時刻４２３を、現在の時刻で書き換え、ステップＳ６０５に示す処理を実行する。
【０１５２】
一方、起動指示に含まれている差分ＩＤに対応する差分イメージ本体のデータが、管理テーブル４２０内に残っていない場合（Ｓ６０１：Ｎｏ）、起動処理部４３は、起動指示に含まれているベースＩＤに基づいて一時メモリ４２内のベースイメージテーブル４２７を参照し、当該ベースＩＤに対応するベースイメージ本体のデータがベースイメージテーブル４２７内に残っているか否かを判定する（Ｓ６０２）。
【０１５３】
ベースイメージ本体のデータがベースイメージテーブル４２７内に残っている場合（Ｓ６０２：Ｙｅｓ）、起動処理部４３は、起動指示に含まれている差分ＩＤを起動イメージ取得部４１へ送る。起動イメージ取得部４１は、受け取った差分ＩＤを含む起動イメージ取得要求を通信回線１１を介してデータベースサーバ３０へ送信する。そして、データベースサーバ３０から差分イメージ本体のデータを受信した場合、起動イメージ取得部４１は、受信した差分イメージ本体のデータを、当該差分イメージの差分ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する（Ｓ６０３）。
【０１５４】
起動処理部４３は、差分イメージ本体のデータを管理テーブル４２０から取得し、リソース提供装置２０から受信した起動指示に含まれているベースＩＤに対応するベースイメージ本体のデータをベースイメージテーブル４２７から取得する。そして、起動処理部４３は、ステップＳ６０５に示す処理を実行する。
【０１５５】
一方、ベースイメージ本体のデータがベースイメージテーブル４２７内に残っていない場合（Ｓ６０２：Ｎｏ）、起動処理部４３は、起動指示に含まれている差分ＩＤおよびベースＩＤを起動イメージ取得部４１へ送る。起動イメージ取得部４１は、受け取った差分ＩＤおよびベースＩＤを含む起動イメージ取得要求を、通信回線１１を介してデータベースサーバ３０へ送信する。
【０１５６】
そして、データベースサーバ３０から差分イメージ本体およびベースイメージ本体のデータを受信した場合、起動イメージ取得部４１は、受信した差分イメージ本体のデータと、受信したベースイメージ本体のベースＩＤとを、当該差分イメージの差分ＩＤに対応付けて一時メモリ４２内の管理テーブル４２０に格納する。そして、起動イメージ取得部４１は、受信したベースイメージ本体のデータを、当該ベースイメージ本体のベースＩＤに対応付けて一時メモリ４２内のベースイメージテーブル４２７に格納する。
【０１５７】
次に、起動処理部４３は、差分イメージ本体のデータを管理テーブル４２０から取得し、ベースイメージ本体のデータをベースイメージテーブル４２７から取得する（Ｓ６０４）。そして、起動処理部４３は、管理テーブル４２０において、当該差分イメージ本体の差分ＩＤに対応付けられている参照時刻４２３の欄に現在時刻を登録する。
【０１５８】
次に、起動処理部４３は、取得した差分イメージ本体のデータとベースイメージ本体のデータとに基づいて仮想マシンを起動してインスタンスを生成し、生成したインスタンスを実行する（Ｓ６０５）。そして、起動処理部４３は、当該インスタンスの稼働状態を、起動指示に含まれている仮想マシンＩＤに対応付けて管理し、再びステップＳ６００に示した処理を実行する。
【０１５９】
起動指示を受信していない場合（Ｓ６００：Ｎｏ）、起動処理部４３は、インスタンスの稼働が終了したか否かを判定する（Ｓ６０６）。インスタンスの稼働が終了していない場合（Ｓ６０６：Ｎｏ）、起動処理部４３は、再びステップＳ６００に示した処理を実行する。
【０１６０】
一方、インスタンスの稼働が終了した場合（Ｓ６０６：Ｙｅｓ）、起動処理部４３は、当該インスタンスに対応する仮想マシンＩＤと、自装置の物理マシンＩＤとを含む稼働終了通知を作成する。そして、起動処理部４３は、作成した稼働終了通知を、通信回線１１を介してリソース提供装置２０へ送信し（Ｓ６０７）、再びステップＳ６００に示した処理を実行する。
【０１６１】
以上、本発明の第２の実施形態について説明した。
【０１６２】
なお、上記第１または第２の実施形態におけるリソース提供装置２０は、例えば図２３に示すような構成のコンピュータ６０によって実現される。図２３は、リソース提供装置２０の機能を実現するコンピュータ６０のハードウェア構成の一例を示すハードウェア構成図である。コンピュータ６０は、ＣＰＵ（Central Processing Unit）６１、ＲＡＭ（Random Access Memory）６２、ＲＯＭ（Read Only Memory）６３、ＨＤＤ（Hard Disk Drive）６４、通信インターフェイス（Ｉ／Ｆ）６５、入出力インターフェイス（Ｉ／Ｆ）６６、およびメディアインターフェイス（Ｉ／Ｆ）６７を備える。
【０１６３】
ＣＰＵ６１は、ＲＯＭ６３またはＨＤＤ６４に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ６３は、コンピュータ６０の起動時にＣＰＵ６１によって実行されるブートプログラムや、コンピュータ６０のハードウェアに依存するプログラム等を格納する。
【０１６４】
ＨＤＤ６４は、ＣＰＵ６１によって実行されるプログラムおよび当該プログラムによって使用されるデータ等を格納する。通信インターフェイス６５は、通信回線１１を介して他の機器からデータを受信してＣＰＵ６１へ送り、ＣＰＵ６１が生成したデータを、通信回線１１を介して他の機器へ送信する。
【０１６５】
ＣＰＵ６１は、入出力インターフェイス６６を介して、ディスプレイやプリンタ等の出力装置、および、キーボードやマウス等の入力装置を制御する。ＣＰＵ６１は、入出力インターフェイス６６を介して、入力装置からデータを取得する。また、ＣＰＵ６１は、生成したデータを、入出力インターフェイス６６を介して出力装置へ出力する。
【０１６６】
メディアインターフェイス６７は、記録媒体６８に格納されたプログラムまたはデータを読み取り、ＲＡＭ６２を介してＣＰＵ６１に提供する。ＣＰＵ６１は、当該プログラムを、メディアインターフェイス６７を介して記録媒体６８からＲＡＭ６２上にロードし、ロードしたプログラムを実行する。記録媒体６８は、例えばＤＶＤ（Digital Versatile Disc）、ＰＤ（Phase change rewritable Disk）等の光学記録媒体、ＭＯ（Magneto-Optical disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０１６７】
コンピュータ６０がリソース提供装置２０として機能する場合、コンピュータ６０のＣＰＵ６１は、ＲＡＭ６２上にロードされたプログラムを実行することにより、起動イメージ管理テーブル保持部２１、稼働テーブル保持部２２、起動指示受付部２３、起動イメージ特定部２４、選択部２５、および起動指示部２６の各機能を実現する。また、ＲＯＭ６３またはＨＤＤ６４には、起動イメージ管理テーブル保持部２１および稼働テーブル保持部２２内のデータが格納される。
【０１６８】
コンピュータ６０のＣＰＵ６１は、これらのプログラムを、記録媒体６８から読み取って実行するが、他の例として、他の装置から、通信回線１１を介してこれらのプログラムを取得してもよい。
【０１６９】
また、上記した第２の実施形態において、選択データ５０内の各レコード５５の中に、起動イメージ特定部２４から受け取った差分ＩＤおよびベースＩＤの組み合わせを含み、かつ、稼働フラグ５２に「１」が設定されているレコード５５が存在しない場合に、選択部２５は、当該差分ＩＤおよびベースＩＤの組み合わせを含むレコード５５の中で、最新の起動時刻５３を含むレコード５５を１つ特定する。しかし、本発明はこれに限られない。
【０１７０】
例えば、選択データ５０内の各レコード５５の中に、起動イメージ特定部２４から受け取った差分ＩＤおよびベースＩＤの組み合わせを含み、かつ、稼働フラグ５２に「１」が設定されているレコード５５が存在しない場合に、選択部２５は、選択データ５０内のレコード５５の中で、稼働フラグ５２に「１」が設定されているレコード５５を特定するようにしてもよい。
【０１７１】
このように、ユーザから指定された仕様を満たす差分イメージおよびベースイメージの組み合わせよりも、そのベースイメージを含む起動イメージを参照して生成されたインスタンスを稼働中の物理マシン４０を特定することにより、ベースイメージが残存している可能性が高い物理マシン４０を特定することができる場合がある。
【０１７２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【０１７３】
１０：リソース提供システム、１１：通信回線、１２：ユーザ端末、２０：リソース提供装置、２１：起動イメージ管理テーブル保持部、２１０：起動イメージ管理テーブル、２２：稼働テーブル保持部、２２０：稼働テーブル、２３：起動指示受付部、２４：起動イメージ特定部、２５：選択部、２６：起動指示部、３０：データベースサーバ、３１：起動イメージ格納部、３２：データ送受信部、４０：物理マシン、４１：起動イメージ取得部、４２：一時メモリ、４２０：管理テーブル、４３：起動処理部、５０：選択データ
【要約】
【課題】仮想サーバの起動に伴うリードタイムを短縮する。
【解決手段】リソース提供装置２０は、起動指示を受け付ける起動指示受付部２３と、当該起動指示で指定される起動イメージを特定する起動イメージ特定部２４と、特定された起動イメージに基づくインスタンスを生成させる物理マシンを選択する選択部２５と、物理マシンＩＤに対応付けて、物理マシンで稼働中のインスタンスが起動時に参照した起動イメージの起動ＩＤを格納する稼働テーブルを保持する稼働テーブル保持部２２と、選択された物理マシンに、特定された起動ＩＤに対応する起動イメージを参照して仮想マシンを起動させると共に、当該物理マシンＩＤに対応付けて、当該起動ＩＤを稼働テーブルに登録する起動指示部２６とを備え、選択部２５は、稼働テーブルを参照して、特定された起動ＩＤが対応付けられている物理マシンを選択する。
【選択図】図４【図１】
0005626937.tif 000002
【図２】
0005626937.tif 000003
【図３】
0005626937.tif 000004
【図４】
0005626937.tif 000005
【図５】
0005626937.tif 000006
【図６】
0005626937.tif 000007
【図７】
0005626937.tif 000008
【図８】
0005626937.tif 000009
【図９】
0005626937.tif 000010
【図１０】
0005626937.tif 000011
【図１１】
0005626937.tif 000012
【図１２】
0005626937.tif 000013
【図１３】
0005626937.tif 000014
【図１４】
0005626937.tif 000015
【図１５】
0005626937.tif 000016
【図１６】
0005626937.tif 000017
【図１７】
0005626937.tif 000018
【図１８】
0005626937.tif 000019
【図１９】
0005626937.tif 000020
【図２０】
0005626937.tif 000021
【図２１】
0005626937.tif 000022
【図２２】
0005626937.tif 000023
【図２３】
0005626937.tif 000024