(57)【特許請求の範囲】
【請求項１】
１以上のコンピュータ装置と、ストレージ装置とを含む情報処理システムであって、
クローン元仮想機械を稼働させるコンピュータ装置が含む保存制御部であって、前記クローン元仮想機械を仮想ネットワーク・インタフェースが切り離された状態で起動させて、該クローン元仮想機械の仮想メモリの内容を含み作業状態を表す作業状態情報を取得し、前記作業状態情報および仮想ディスク情報を含むイメージを前記ストレージ装置に保存する制御を行う保存制御部と、
クローン先となるコンピュータ装置が含む起動制御部であって、前記イメージを用いて、該イメージに含まれる前記作業状態情報から１以上のクローンの仮想機械各々を仮想ネットワーク・インタフェースが切り離された状態で再開させ、前記１以上のクローンの仮想機械各々に仮想ネットワーク・インタフェースを取り付ける制御を行う起動制御部と
を含む、情報処理システム。
【請求項２】
前記起動制御部は、前記ストレージ装置に保存された前記イメージを当該コンピュータ装置上に複製し、当該コンピュータ装置で起動させる前記クローンの仮想機械それぞれについて、順次、前記イメージの前記作業状態情報に含まれる固有情報を更新し、更新された前記作業状態情報から仮想機械の仮想メモリを復元して該仮想機械を再開させる制御を行う、請求項１に記載の情報処理システム。
【請求項３】
前記保存制御部は、前記作業状態情報を取得する前に、前記クローン元仮想機械の仮想メモリのサイズを縮小する処理を実施し、前記起動制御部は、前記クローンの仮想機械それぞれについて、再開後さらに、仮想メモリのリサイズを含むカスタマイズ処理を実施する、請求項２に記載の情報処理システム。
【請求項４】
前記仮想ディスク情報は、前記クローン元仮想機械の仮想ディスクのスナップショットを含み、前記クローン先となるコンピュータ装置は、それぞれ、前記クローン元仮想機械の前記仮想ディスクの前記スナップショットが表す差分の基礎となるディスクイメージを記憶する記憶部を備える、請求項３に記載の情報処理システム。
【請求項５】
前記固有情報は、仮想機械を固有に識別する固定長の識別子と、仮想機械固有に割り当てられる仮想ディスクの固定長のパスを含み、前記イメージの前記作業状態情報は、シーケンシャルであり、前記固有情報の更新は、前記イメージの前記作業状態情報のサイズを変更せずに、前記イメージの前記作業状態情報中の識別子およびパスを、起動させるクローンの仮想機械固有の識別子およびパスで置き換える処理を含む、請求項２に記載の情報処理システム。
【請求項６】
前記情報処理システムは、
仮想機械の準備申請または仮想機械を増加させる契機となる条件の設定を受け付ける受付部と、前記準備申請を受け付けたことまたは前記条件が満たされたことに応答して、コンピュータ装置が含む前記起動制御部それぞれに対し、必要数の仮想機械の準備指令を発する準備指令部とを含む管理サーバをさらに含む、請求項１に記載の情報処理システム。
【請求項７】
前記情報処理システムは、
前記ストレージ装置に保存される仮想機械のイメージを管理するリポジトリ・サーバをさらに含む、請求項１に記載の情報処理システム。
【請求項８】
前記イメージの前記作業状態情報は、固有情報と、仮想プロセッサのレジスタ値とをさらに含む、請求項１に記載の情報処理システム。
【請求項９】
ハードウェア・リソースを抽象化し、仮想機械の実行基盤を提供するシステム仮想化制御部と、
クローン元仮想機械の仮想メモリの内容を含み作業状態を表す作業状態情報および仮想ディスク情報を含むイメージであって、前記作業状態情報は、前記クローン元仮想機械を仮想ネットワーク・インタフェースが切り離された状態で起動させて取得されたものである、当該イメージを記憶する記憶部と、
前記システム仮想化制御部に対し、前記イメージを用いて、該イメージに含まれる前記作業状態情報から、要求数のクローンの仮想機械各々を仮想ネットワーク・インタフェースが切り離された状態で再開させる再開部と、
前記システム仮想化制御部に対し、前記クローンの仮想機械各々に仮想ネットワーク・インタフェースを取り付ける取付部と
を含む、情報処理装置。
【請求項１０】
前記情報処理装置は、外部のストレージ装置に保存されたイメージを前記記憶部に複製する複製部と、当該情報処理装置上で起動させる前記要求数のクローンの仮想機械それぞれについて、順次、前記記憶部に記憶されている前記イメージの前記作業状態情報に含まれる固有情報を更新する更新部とを含み、前記再開部は、順次、更新された前記作業状態情報から仮想機械の仮想メモリを復元して該仮想機械を再開させる、請求項９に記載の情報処理装置。
【請求項１１】
前記仮想ディスク情報は、前記クローン元仮想機械の仮想ディスクのスナップショットを含み、前記情報処理装置は、前記クローン元仮想機械の前記仮想ディスクの基礎となるディスクイメージを記憶する記憶部をさらに備える、請求項９に記載の情報処理装置。
【請求項１２】
前記情報処理装置は、前記システム仮想化制御部に対し、前記クローンの仮想機械それぞれについて、再開後さらに、仮想メモリのリサイズを含むカスタマイズ処理を施させるカスタマイズ部をさらに含む、請求項９に記載の情報処理装置。
【請求項１３】
１以上のコンピュータ装置と、ストレージ装置とを含む情報処理システムにおいて、前記１以上のコンピュータ装置に１以上の仮想機械を準備する準備方法であって、
クローン元の仮想機械が稼働するコンピュータ装置が、前記クローン元の仮想機械を仮想ネットワーク・インタフェースが切り離された状態で起動するステップと、
前記クローン元のコンピュータ装置が、前記クローン元の仮想機械の仮想メモリの内容を含み作業状態を表す作業状態情報を起動後の状態で取得し、前記作業状態情報および仮想ディスク情報を含むイメージを前記ストレージ装置に保存するステップと
を含み、前記準備方法は、さらに、
クローン先となるコンピュータ装置が、前記イメージを用いて、該イメージに含まれる前記作業状態情報からクローンの仮想機械を仮想ネットワーク・インタフェースが切り離された状態で再開するステップと、
前記クローン先のコンピュータ装置が、前記クローンの仮想機械に仮想ネットワーク・インタフェースを取り付けるステップと
を含む、準備方法。
【請求項１４】
前記準備方法は、前記再開するステップの前に、
前記クローン先のコンピュータ装置が、前記ストレージ装置に保存された前記イメージを当該コンピュータ装置上に複製するステップと、
前記クローン先のコンピュータ装置が、前記クローンの仮想機械について、複製されたイメージの前記作業状態情報に含まれる固有情報を更新するステップと
を含み、前記再開するステップは、更新された前記作業状態情報から仮想機械の仮想メモリを復元して該仮想機械を再開させるものであり、前記更新するステップおよび前記再開するステップは、当該コンピュータ装置で起動させる１以上のクローンの仮想機械それぞれについて順次繰り返して行われる、請求項１３に記載の準備方法。
【請求項１５】
前記起動するステップは、さらに、前記クローン元の仮想機械に割り当てる仮想メモリのサイズを縮小させるサブステップを含み、前記準備方法は、さらに、前記クローン先のコンピュータ装置が、前記再開するステップの後に、前記クローンの仮想機械に割り当てる仮想メモリのサイズを拡大するステップを含む、請求項１３に記載の準備方法。
【請求項１６】
前記クローンの仮想機械に仮想ネットワーク・インタフェースが取り付けられたことに応答して、前記クローンの仮想機械のオペレーティング・システムが、前記仮想ネットワーク・インタフェースの接続を検出し、ネットワーク・アドレスを割り当てるステップをさらに含む、請求項１３に記載の準備方法。
【請求項１７】
コンピュータ実行可能なプログラムであって、前記プログラムは、コンピュータを、
ハードウェア・リソースを抽象化し、仮想機械の実行基盤を提供するシステム仮想化制御部、
前記システム仮想化制御部に対し、仮想ネットワーク・インタフェースが切り離された状態で、前記仮想化制御部上で動作するクローン元仮想機械の仮想メモリの内容を含み作業状態を表す作業状態情報を取得する取得部、
前記システム仮想化制御部に対し、前記クローン元仮想機械の前記作業状態情報および仮想ディスク情報を含むイメージをストレージ装置に保存させる保存部、
前記システム仮想化制御部に対し、前記イメージを用いて、該イメージが含む前記作業状態情報から要求数のクローンの仮想機械各々を仮想ネットワーク・インタフェースが切り離された状態で再開させる再開部、および
前記システム仮想化制御部に対し、前記クローンの仮想機械各々に仮想ネットワーク・インタフェースを取り付けさせる取付部
として機能させるためのプログラム。
【請求項１８】
請求項１７に記載のコンピュータ実行可能なプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術に関し、より詳細には、仮想機械を迅速に準備するための情報処理システム、情報処理装置、仮想機械の準備方法、該情報処理装置を実現するためのプログラム、および該プログラムを記録する記録媒体に関する。
【背景技術】
【０００２】
近年、コンピュータのＣＰＵ（Central Processing Unit）、メモリ、ストレージなどのハードウェア・リソースを仮想化して、当該リソース上に仮想的なコンピュータ、すなわち仮想機械（Virtual Machine）を実現する、システム仮想化技術が発展している。また、上述したシステム仮想化技術の発展および近年のインターネット技術の進歩に伴い、上記仮想機械やネットワークなどのインフラストラクチャを、インターネット経由のサービスとして提供する、いわゆるＩａａＳ（Infrastructure as a Service）などのクラウド・サービスも普及している。
【０００３】
上述したＩａａＳによれば、サービス利用者は、アクセス数に対応させてウェブ・サーバのインスタンスを適時に増減させたり、バッチ処理のデータ規模に応じて分散バッチ処理システムのデータ・ノードのインスタンスを増減させたりすることが可能となる。ひいては、負荷の変化に合わせて素早く能力を拡張または縮小することが可能なシステムが提供される。
【０００４】
上述したシステムにおいては、オペレーティング・システム（以下、ＯＳと参照する。）やソフトウェアがインストールされたファイルシステム・イメージ（以下、ＯＳイメージと参照する。）をホストマシンに配布し（特許文献１，特許文献２）、各ホストマシン上でＯＳイメージから仮想機械をブートさせることによって、必要なサーバ・インスタンスが準備（プロビジョニング）される。そして、単一のＯＳイメージから複数の仮想機械がプロビジョニングされる場合、必要な数の仮想機械が起動するまで同一のブート・プロセスが繰り返されることになる。
【０００５】
一方、ブート・プロセスは、ランダムなディスク入出力（Ｉ／Ｏ；Input / Output）を発生させるため一般に遅いプロセスであり、多数のサーバ・インスタンスを起動させるためには時間が必要である。また、ブート・プロセスは、ディスクＩ／Ｏの帯域幅を消費し、同一リソース上で稼働する他の仮想機械に干渉する可能性もある。このような干渉は、他のサービス利用者のシステムに不都合を発生させる可能性があるため望ましくない。したがって、仮想機械の起動の高速化および効率化は、クラウド・サービスの差別化において重要なポイントとなる。
【０００６】
仮想機械の起動を高速化する試みとしては、稼働中の仮想機械のメモリやレジスタの値を含む仮想機械の作業状態情報を複製し、稼働中の仮想機械をクローンする手法が考えられる。この手法によれば、ブート・プロセスを省略することが可能となり、これによりディスクＩ／Ｏを低減することができると考えられる。しかしながら、長時間稼働している仮想機械は、ＩＰ（Internet Protocol）アドレスやアプリケーションの内部状態など、複製すべきではないステートフルな情報を保持しているため、上記仮想機械をそのままクローンしてしまうと、不具合があり妥当ではない。
【０００７】
その他、仮想機械の起動処理を高速化する技術として、プロセス仮想化の一種であるＪＶＭ（Java（登録商標） Virtual Machine）に関連して、特開２００７−２９３７３０号公報（特許文献３）に開示される技術が知られている。特許文献１は、仮想機械が動作する情報処理装置において、アプリケーションの実行と同時にアプリケーションのデータ入出力を監視し、入出力の回数や種別および入出力データ量を記録し、一定の入出力記録からメモリダンプの妥当性とメモリダンプ方法を判定し、アプリケーションを実行中の仮想マシンのメモリイメージを全部もしくは一部をダンプする構成を採用する、仮想マシン実行可能な情報端末を開示する。
【０００８】
特許文献３に開示される技術は、情報端末上のＪＶＭにおいて、アプリケーションのメモリダンプを取得して、アプリケーション起動時間を短縮するというプロセス仮想化に関する技術である。ブート・プロセス中、ファイルへの書き込み、画面出力装置への書き込み、キー入力などのいずれかのＩ／Ｏイベントが最初に発生した時点でＪＶＭをサスペンドし、メモリダンプを取得する構成を採用する。しかしながら、プロセス仮想化の場合と異なりシステム仮想化においては、最初のＩ／Ｏはブート・プロセスの極めて初期の段階で発生してしまう。このため、上記特許文献３の手法をシステム仮想化に応用してみても、起動処理の高速化の効果はほとんど得ることができない。
【０００９】
また、特許文献１および特許文献２は、ＯＳイメージのデプロイメントを効率化する技術を開示するものであるが、起動開始前の処理を対象とした技術であり、配布されたＯＳイメージからの起動処理を高速化することについては何ら開示するものではない。
【００１０】
また、上記ステートフルな情報に起因する不具合を念頭に、仮想機械起動後にネットワーク設定を書き換える手法も考え得る。しかしながら、ネットワーク設定がＯＳのカーネルやアプリケーションがアロケートされたメモリ内に書き込まれているため、そのようなソフトウェアの内部構造は外部から簡単に書き換えることができない。また、仮に書き換えられることができたとしてもＯＳ環境に強く依存する手法となる。その他、非特許文献１に開示されるような管理ツールを使用して、仮想機械のクローンを作成し、仮想ディスク内のネットワーク設定の構成ファイルを変更したとしても、稼働中の仮想機械のネットワークを変更することはできない。したがって、結局のところ、同一ブート・プロセスを繰り返す必要がある。また、設定ファイルがメモリ上にキャッシュされている場合、仮想機械が起動中に仮想ディスク上のファイルだけを書き換えてしまうと、キャッシュ不整合を生じさせてしまう可能性がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２９２９２２号公報
【特許文献２】特開２００９−２３０６５５号公報
【特許文献３】特開２００７−２９３７３０号公報
【非特許文献】
【００１２】
【非特許文献１】”ＲＨＥＬ５．４  ＫＶＭ  仮想マシンの自動複製”，［online］，［２０１０年１１月２５日検索］インターネット＜URL; http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-0004E0BB＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
したがって、上述したＩａａＳにおいて、サーバ・インスタンスを迅速にサービス利用者に提供するために、単一のＯＳイメージに基づく複数の仮想機械を、短時間に、かつ、同一ホストマシン上で稼働中の他の仮想機械を圧迫することなく、起動させることが可能な、システム仮想機械のプロビジョニング手法が望まれていた。
【００１４】
本発明は、上記従来からの問題点に鑑みてなされたものであり、本発明は、単一のＯＳイメージに基づく複数の仮想機械を、短時間に、かつ同一ホストマシン上で稼働中の他の仮想機械を圧迫することなく準備することが可能な、情報処理システム、情報処理装置、仮想機械の準備方法、該情報処理装置を実現するためのプログラム、および該プログラムを記録する記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、上記従来技術の問題を解決するために、以下の特徴を有する情報処理システムを提供する。本情報処理システムは、１以上のコンピュータ装置と、ストレージ装置とを含む。上記１以上のうちのクローン元仮想機械を稼働させるコンピュータ装置は、クローン元仮想機械を仮想ネットワーク・インタフェースが切り離された状態で起動させて、該クローン元仮想機械の作業状態を表す作業状態情報を取得し、該作業状態情報および仮想ディスク情報を含むイメージを上記ストレージ装置に保存する制御を行う。また、上記１以上のうちのクローン先となるコンピュータ装置は、上記イメージを用いて、１以上のクローンの仮想機械を、仮想ネットワーク・インタフェースが切り離された状態で再開させ、再開後に仮想ネットワーク・インタフェースを取り付ける制御を行う。
【００１６】
上記起動制御は、より具体的には、ストレージ装置に保存されたイメージを当該コンピュータ装置上に複製し、当該コンピュータ装置で起動させるクローンの仮想機械それぞれについて、順次、上記作業状態情報に含まれる固有情報（例えば仮想機械を固有に識別する固定長の識別子や仮想機械固有に割り当てられる仮想ディスクの固定長のパス）を更新し、更新されたイメージから仮想機械を再開させる制御とすることができる。
【００１７】
さらに本発明によれば、上記情報処理システムにおける仮想機械の準備方法、クローン元コンピュータ装置およびクローン先コンピュータ装置、またはこれらのいずれか一方として動作させることができる情報処理装置、該情報処理装置を実現するためのプログラム、および該プログラムを記録する記録媒体を提供することができる。なお、上記ストレージ装置は、上記１以上のコンピュータ装置とネットワークを介して接続されるリポジトリ・サーバが備えてもよいし、上記１以上のコンピュータ装置のいずれかが備えるストレージ装置であってもよい。
【発明の効果】
【００１８】
上記構成によれば、クローン元仮想機械から取り込まれたイメージから、１以上の仮想機械が、ランダムなディスクＩ／Ｏを発生させる通常のブート・プロセスを経ずに、クローン元仮想機械の複製が再開するという形で、コンピュータ装置上に準備される。したがって、通常のブート・プロセスを経る場合に比較して、短時間に起動することができ、また、ディスクＩ／Ｏによる負荷が低減されるため、同一コンピュータ装置上で稼働中の他の仮想機械への干渉も低減される。
【００１９】
上記イメージは、仮想ネットワーク・インタフェースが切り離された状態で起動した後にクローン元仮想機械から取り込まれたものであるため、ネットワーク設定などのステートフルな情報を保持せず、ステートフルな情報も同一のクローンが同時動作する不具合も発生させない。また、仮想ネットワーク・インタフェースが取り付けられると、仮想機械のゲストＯＳが自動的に認識し、ネットワーク・アドレスの割り当てなどを行うため、ＯＳ非依存の手法と言える。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態によるプロビジョニング・システムの概略図。
【図２】本実施形態におけるホストマシンのハードウェア構成およびソフトウェア構成を示すブロック図。
【図３】本発明の実施形態による仮想機械のプロビジョニング処理を説明する概念図。
【図４】本発明の実施形態によるプロビジョニング・システムにおいて実現される、取込処理に関連する機能ブロック図。
【図５】本発明の実施形態によるプロビジョニング・システムにおいて実現される、起動処理に関連する機能ブロック図。
【図６】本発明の実施形態によるプロビジョニング・システムにおいてクローン元ホストマシンが実行する取込処理を示すフローチャート。
【図７】本発明の実施形態によるプロビジョニング・システムにおいてクローン先ホストマシンが実行する起動処理を示すフローチャート。
【図８】ステートファイルの更新処理を説明する図。
【図９】キャプチャされたステートファイルを例示する図。
【図１０】仮想機械の起動数に対してプロビジョニング処理にかかる所要時間をプロットしたグラフ。
【発明を実施するための形態】
【００２１】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。以下説明する実施形態では、１以上のコンピュータ装置とストレージ装置とを含む情報処理システムの一例として、複数のホストマシンと、ストレージ装置を備えるリポジトリ・サーバとを含み、インターネット経由のサービスとして利用者に対しコンピューティング能力を提供するクラウド環境において、該コンピューティング能力を提供する仮想機械を準備するためのプロビジョニング・システムを一例として説明する。
【００２２】
図１は、本発明の実施形態によるプロビジョニング・システムの概略図を示す。本プロビジョニング・システム１００は、それぞれネットワーク１０２に接続されるホストマシン群１０４と、管理サーバ１０６と、リポジトリ・サーバ１０８とを含む。ホストマシン群１０４は、それぞれ、プロセッサやメモリなどのハードウェア・リソースを含み構成される１以上のホストマシン１１０ａ〜１１０ｄからなる。各ホストマシン１１０には、仮想化ソフトウェアがインストールされており、これによって、上記ホストマシン１１０により提供されるハードウェア・リソースが抽象化され、当該物理リソース上に、仮想化されたコンピュータ、すなわち仮想機械（Virtual Machine）が実現される。
【００２３】
リポジトリ・サーバ１０８は、オペレーティング・システム（以下、ＯＳと参照する。）やソフトウェアがインストールされたファイルシステム・イメージ（以下、ＯＳイメージと参照する。）を永続的に保存するための記憶領域を提供する。サービス利用者は、予め準備されている種々のＯＳイメージの中から、自らが使用するＯＳイメージを選択することができる。利用者は、さらに、テンプレートのＯＳイメージからカスタマイズしたカスタムＯＳイメージを作成し、上記リポジトリ・サーバ１０８へ保管することができる。通常のプロビジョニング方法では、ＯＳイメージから所定のブート・プロセスを経て各仮想機械が起動される。
【００２４】
さらに、本発明の実施形態によるリポジトリ・サーバ１０８は、詳細は後述するように、稼働中の仮想機械からキャプチャされた、仮想メモリ（なお、本明細書においては、仮想化されて各仮想機械にアサインされたハードウェアについては、物理的なハードウェアと区別するため「仮想」を付して参照する場合がある。）のデータ等を含むキャプチャ・イメージを永続的に保存するための記憶領域を提供する。本発明の実施形態によるプロビジョニング方法によれば、詳細は後述するが、予め用意されたキャプチャ・イメージから１以上の仮想機械が起動される。
【００２５】
上記ネットワーク１０２は、サービス提供者側の内部ネットワークであり、特に限定されるものではないが、例えば、ＴＣＰ／ＩＰおよびイーサネット（登録商標）によるＬＡＮ（Local Area Network）を含むことができる。また他の実施形態では、ネットワーク１０２は、専用線を介して、またはＶＰＮ（Virtual Private Network）を用いて公衆回線を介して、異なるロケーションのＬＡＮが結合されて構成された、広域ネットワークとして構成されていてもよい。
【００２６】
上記ネットワーク１０２は、図示しないルータや、ファイヤウォールなどのセキュリティ・レイヤを介して、インターネット１１２に接続されている。管理サーバ１０６は、サービス利用者側の管理者に対し、サービスを利用するための管理ポータル・サイトを提供する。また、管理サーバ１０６は、サービス利用者側の管理者が上記管理ポータル・サイトを介して行う各種要求を処理する管理アプリケーションを備え、ホストマシン群１０４上に構築される仮想化環境に関する情報を収集および管理し、上記管理者からの要求に対応して、各ホストマシン１１０上で動作する仮想化ソフトウェアのリモート管理を行う。サービス利用者は、クライアント端末１１４を用いてインターネット１１２を介して管理サーバ１０６にアクセスし、当該サービスの管理ポータル・サイトから、仮想機械のキャプチャ・イメージの作成申請、仮想機械のプロビジョニング申請、仮想機械を増減させる契機とするトリガ条件の設定などを行うことができる。
【００２７】
管理サーバ１０６およびリポジトリ・サーバ１０８は、概ね、ワークステーション、ラックマウント型サーバ、ブレード型サーバなどの汎用コンピュータ装置として構成される。管理サーバ１０６およびリポジトリ・サーバ１０８は、より具体的には、シングルコア・プロセッサまたはマルチコア・プロセッサなどのＣＰＵ、キャッシュ・メモリ、ＲＡＭ、ネットワーク・インタフェース・カード（ＮＩＣ）、ストレージ・デバイスなどのハードウェア・リソースを備え、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などの適切なＯＳの制御の下、それぞれ、仮想化環境の管理インタフェースおよびストレージ・サービスとしての機能を提供する。
【００２８】
クライアント端末１１４は、概ね、タワー型、デスクトップ型、ラップトップ型またはタブレット型のパーソナル・コンピュータ、ワークステーション、ネットブック、ＰＤＡ（Personal Data Assistance）などのコンピュータ装置として構成され、上記ＣＰＵなどのハードウェア・リソースを備えており、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、Ｍａｃ  ＯＳ（登録商標）、ＡＩＸ（登録商標）などの適切なＯＳの制御の下動作する。本実施形態では、クライアント端末１１４は、上記ＯＳ上で動作するウェブ・ブラウザを実装する。
【００２９】
以下、仮想機械が稼働するホストマシン１１０の構成について説明する。図２は、本実施形態によるプロビジョニング・システムにおけるホストマシンのハードウェア構成およびソフトウェア構成を示すブロック図である。ホストマシン１１０は、概ね、ワークステーション、ラックマウント型サーバ、ブレード型サーバ、ミッドレンジ、メインフレームなどの汎用コンピュータ装置として構成される。ホストマシン１１０は、ハードウェア・リソース１２０として、中央演算装置（ＣＰＵ）１２２と、メモリ１２４と、ハードディスク・ドライブ（ＨＤＤ）やソリッド・ステート・ドライブ（ＳＳＤ）などのストレージ１２６と、ＮＩＣ１２８とを含む。
【００３０】
ホストマシン１１０は、ハードウェア・リソース１２０上で動作する、Ｘｅｎ（登録商標）、ＶＭＷａｒｅ（登録商標）、Ｈｙｐｅｒ−Ｖ（登録商標）などの仮想化ソフトウェアのハイパーバイザ（仮想機械モニタとも呼ばれることがある。）１３０を備え、このハイパーバイザ１３０上で、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などの種々のＯＳをゲストＯＳとした仮想機械１３２，１３８が稼働する。
【００３１】
なお、上記仮想化ソフトウェアは、図２に示すようなベアメタル型のアーキテクチャを採用することができるが、特に限定されるものではなく、他の実施形態では、ホスト型など他のアーキテクチャを採用することもできる。また、ハイパーバイザ１３０は、ベアメタル型のアーキテクチャを採用する場合、完全仮想化または準仮想化のいずれの方式を採用してもよく、デバイス・ドライバの実装方式としても、モノリシックカーネル型またはマイクロカーネル型のいずれの方式を採用してもよい。
【００３２】
仮想機械１３２は、ドメイン０またはペアレント・パーティションなどの呼ばれる管理用の仮想機械であり、管理用仮想機械１３２は、管理用ＯＳ１３４と、管理用ＯＳ１３４上で動作する制御モジュール１３６とを含んで構成される。制御モジュール１３６は、管理サーバ１０６からの指令を受信して、当該制御モジュール１３６が動作しているホストマシン１１０上のハイパーバイザ１３０に対しコマンドを発行するモジュールである。制御モジュール１３６は、例えば、管理サーバ１０６からの指令に応答して、ハイパーバイザ１３０に対し、ドメインＵまたはチャイルド・パーティションなどと呼ばれるユーザドメインの仮想機械の作成やゲストＯＳの起動の命令を発行し、管理サーバ１０６による管理の下、仮想機械の動作を制御する。
【００３３】
仮想機械１３８ａ，１３８ｂは、サービス利用者に対しコンピューティング能力を提供するユーザドメインの仮想機械である。仮想機械１３８は、ゲストＯＳ１４０と、該ゲストＯＳ１４０上で動作する種々のアプリケーション１４２とを含む。仮想機械１３８に含まれるゲストＯＳ１４０およびアプリケーション１４２は、サービス利用者に依存するものであり、如何なる組み合わせを採用することができる。上記アプリケーション１４２としては、ウェブ・サーバ、分散バッチ処理、データベース管理、画像処理などを実行する種々のアプリケーションを採用することができるが、特に限定されるものではない。仮想機械１３８は、備えているアプリケーション１４２に応じて、ウェブ・サーバや分散バッチ処理システムにおけるデータ・ノードのインスタンスとして機能する。
【００３４】
上記仮想機械１３８は、サービス利用者からの仮想機械のプロビジョニング申請に応答して、またはサービス利用者が設定した仮想機械を増加させる契機とするトリガ条件が満たされたことに応答して、所定の方法によりプロビジョニングされる。プロビジョニングが完了した以降は、サービス利用者は、管理サーバ１０６を経由せずにインターネット１１２から仮想機械１３８に直接アクセスできるようになる。仮想機械１３８へのアクセス方法は、特に限定されるものではないが、ターミナル・エミュレータによりアクセスすることができる。また、仮想機械１３８がウェブ・アプリケーションを備える場合には、上記プロビジョニングによりウェブ・サイトが構築されるため、ブラウザを用いてサイトにログインすることでアクセスすることもできる。
【００３５】
本発明の実施形態によるプロビジョニング・システム１００においては、仮想機械のプロビジョニング方法として、予め用意されたＯＳイメージから所定のブート・プロセスを経て仮想機械１３８を起動させる通常の方法に加えて、通常のブート・プロセスを経ずに稼働中の仮想機械から取込まれたキャプチャ・イメージを用いて仮想機械１３８を起動させる方法が設けられている。以下、本発明の実施形態による仮想機械のプロビジョニング処理の詳細について、図３〜図９を参照しながら説明する。
【００３６】
図３は、キャプチャ・イメージを用いて複数の仮想機械をホストマシン群１０４上にプロビジョニングする、本発明の実施形態による仮想機械のプロビジョニング処理を説明する概念図である。本発明の実施形態によるのプロビジョニング処理によれば、指定された仮想機械から複製された１以上のクローンの仮想機械が、ホストマシン群１０４上に起動される。当該プロビジョニング処理は、前提となるキャプチャ・イメージを作成する取込処理と、キャプチャ・イメージから仮想機械を起動する起動処理とから構成される。
【００３７】
上記取込処理は、クローン元の仮想機械が動作するホストマシン１１０（例えばホストマシン１１０ａ）上で実行され、当該取込処理により、クローン元仮想機械のキャプチャ・イメージが作成される。本発明の実施形態による取込処理では、より具体的には、稼働中（Ｒｕｎｎｉｎｇ）のクローン元仮想機械を一旦シャットダウンし（Ｓｔｏｐ）、仮想ＮＩＣが切り離された状態で再び起動し（Ｂｏｏｔ）、起動直後の状態でクローン元仮想機械をサスペンド（Ｓｕｓｐｅｎｄ）し、キャプチャ・イメージを一旦ストレージ装置に記憶させる。作成されたキャプチャ・イメージは、リポジトリ・サーバ１０８へ保存されて（Ｃｏｐｙ）、クローン先のホストマシン１１０への配布の用に供される。
【００３８】
上記キャプチャ・イメージは、より具体的には、デバイス・コンフィギュレーション、仮想機械の仮想ＣＰＵのレジスタ値および仮想メモリのデータを含む作業状態情報と、仮想機械の仮想ルートディスクのデータを含む仮想ディスク情報とからなる。上記作業状態情報は、ホストマシン１１０上のハイパーバイザ１３０により、ＶＭステートファイル（以下、単にステートファイルとして参照する。）として取得される。なお、仮想ＮＩＣが切り離された状態で再起動した直後の仮想機械にはＩＰアドレスが割り当てられておらず、したがって、起動直後の状態で取り込まれたキャプチャ・イメージには、ステートフルな情報である仮想ＮＩＣのネットワーク設定に関する情報が含まれない。
【００３９】
仮想ディスク情報は、ＯＳ等がインストールされた仮想ルートディスクの内容そのものとしてもよいが、イメージの作成時間短縮およびサイズ削減の観点からは、ハイパーバイザ１３０が有するコピー・オン・ライト機能による仮想ルートディスクのディスク・スナップショット（以下、単にスナップショットと参照する。）を用いることができる。
【００４０】
上記起動処理は、クローン先の各ホストマシン１１０上で実行され、当該起動処理により、各ホストマシン１１０上に、単一のキャプチャ・イメージから１以上のクローンの仮想機械が起動される。本発明の実施形態による起動処理では、より具体的には、まず、各ホストマシン１１０が、リポジトリ・サーバ１０８から自己のストレージ１２６上へステートファイルおよびスナップショットを複製する（Ｃｏｐｙ）。なお、図３に示す例では、ホストマシン１１０ａ，１１０ｂがクローン先コンピュータ装置とされており、ホストマシン１１０ａ，１１０ｂにキャプチャ・イメージが複製されている。しかしながら、ホストマシンＡ１１０ａのようにクローン元およびクローン先の両方のコンピュータ装置として動作する場合には、リポジトリ・サーバ１０８を経由した複製処理は必ずしも必要ではない。
【００４１】
本発明の実施形態による起動処理では、続いて、全体として要求された数の仮想機械が起動するまで、各ホストマシン１１０が、各仮想機械用にステートファイルの更新および仮想ルートディスクのスナップショットの新規作成を行い（Ｃｌｏｎｅ）、上記更新されたステートファイルから仮想機械を再開し（Ｒｅｓｕｍｅ）、再開後の所定のカスタマイズ処理を施す処理を繰り返す。上記キャプチャ・イメージから再開された各クローンの仮想機械は、仮想ＮＩＣが切り離された状態であり、ＩＰアドレスが割り当てられていない。このため、各ホストマシン１１０は、上記カスタマイズ処理として、各クローンの仮想機械に仮想ＮＩＣを取り付ける処理を行う。これにより、各クローンの仮想機械のゲストＯＳは、それぞれ、プラグ・アンド・プレイで、取り付けられた仮想ＮＩＣを認識し、ＩＰアドレスの割り当てを行う。
【００４２】
以下、プロビジョニング・システム１００の機能ブロック図を参照しながら、本発明の実施形態による仮想機械のプロビジョニング処理について詳細を説明する。図４は、本発明の実施形態によるプロビジョニング・システムにおいて実現される、取込処理に関連する機能ブロックを示す図である。図４には、管理サーバ１０６と、リポジトリ・サーバ１０８と、クライアント端末１１４と、クローン元仮想機械１３８Ｓが動作するホストマシン１１０Ｓとが示されている。
【００４３】
管理サーバ１０６は、サービス管理用のインタフェースを提供する管理ポータル１７２と、サービス利用者により管理ポータル１７２を介して行われる各種要求を処理する管理アプリケーション１７４とを含む。本実施形態の管理ポータル１７２は、ウェブ・サーバとして実装され、サービス利用者側の管理者は、クライアント端末１１４のブラウザ１７０を用いてＨＴＴＰプロトコルにより、当該管理ポータル１７２にアクセスし、管理メニューから種々の要求を行うことができる。上述した要求としては、仮想機械に導入するＯＳイメージの選択、仮想機械のスペックの選択を始めとして、仮想機械のキャプチャ・イメージの作成申請、仮想機械のプロビジョニング申請、仮想機械を増減させる契機とするトリガ条件の設定などが含まれる。なお、管理ポータル１７２および管理アプリケーション１７４は、それぞれ、本発明の実施形態における受付部および準備指令部を構成する。
【００４４】
なお、説明の便宜上、ここでは、サービス利用者側管理者によりクローン元仮想機械のＯＳイメージおよびスペックが選択済みであり、クローン元仮想機械１３８Ｓがホストマシン１１０Ｓ上で既に稼働しているものとして説明する。サービス利用者側の管理者が、管理ポータル１７２を介してクローン元仮想機械１３８Ｓのキャプチャ・イメージの作成申請を行うと、リクエストが管理ポータル１７２から管理アプリケーション１７４に渡され、管理アプリケーション１７４は、クローン元ホストマシン１１０Ｓに対し、取込処理実行を指令する。
【００４５】
ホストマシン１１０上で動作する制御モジュール１３６は、管理サーバ１０６やリポジトリ・サーバ１０８との通信を管理する通信管理部１５０と、取込処理を行う取込制御部１５２とを含み構成される。なお、取込制御部１５２は、本発明の実施形態における保存制御部を構成する。通信管理部１５０が管理アプリケーション１７４から取込処理実行の指令を受信すると、取込制御部１５２に当該指令が渡される。上記取込処理実行の指令には、クローン先仮想機械１３８Ｓを特定する識別情報が含まれており、取込制御部１５２は、指定されたクローン元仮想機械１３８Ｓのキャプチャ・イメージを作成する処理を開始する。
【００４６】
取込制御部１５２は、より詳細には、クローン元仮想機械１３８Ｓの再起動を行う再起動部１５４と、クローン元仮想機械１３８Ｓの取り込みを行うイメージ取込部１５６と、キャプチャ・イメージをリポジトリ・サーバ１０８へ保存するイメージ保存部１５８とを含む。再起動部１５４は、ハイパーバイザ１３０に対し、稼働中のクローン元仮想機械１３８Ｓのシャットダウン命令（Ｓｔｏｐ）を発行し、キャプチャ・イメージの作成に備えて仮想ＮＩＣが切り離された状態で起動するよう仮想機械の定義ファイルを書き換えた上で、クローン元仮想機械１３８Ｓの再起動命令（ｂｏｏｔ）を発行する。
【００４７】
キャプチャ・イメージは、仮想メモリの内容を作業状態情報として含むものであるが、クローン元仮想機械１３８Ｓの仮想メモリが未使用の領域を多く含むと、その分だけキャプチャ・イメージが余分に肥大することになる。そこで、好適な実施形態では、クローン元仮想機械１３８Ｓの再起動命令を発行する前に、該仮想機械にアサインされた仮想メモリのサイズを縮小するよう上記仮想機械の定義ファイルをさらに書き換えることができる。
【００４８】
上記仮想メモリのサイズを事前に縮小しておくことにより、クローン元仮想機械にアサインされた記憶容量のうち、未使用の領域分が削減され、イメージの保存時間、複製時間が短縮され、起動処理におけるディスクＩ／Ｏを低減することができる。また、クローン元仮想機械１３８Ｓにデータ・ディスクが取り付けられている場合には、クローン元仮想機械１３８Ｓの再起動命令を発行する前に、データ・ディスクを切り離すよう仮想機械の定義ファイルを書き換えてもよい。
【００４９】
イメージ取込部１５６は、クローン元仮想機械１３８Ｓが、仮想ＮＩＣが切り離された状態で起動した直後に、ハイパーバイザ１３０に対し、サスペンド命令（Ｓｕｓｐｅｎｄ）ないしハイバネーション命令（Ｈｉｂｅｒｎａｔｅ）を発行する。なお、ここにいう起動直後の状態とは、クローン元仮想機械１３８Ｓが、仮想ＮＩＣが切り離され、適宜仮想メモリ１４６Ｓが縮小され、データ・ディスクが切り離されていることを除き、通常の稼働状態となった状態をいう。また、アプリケーション１４２が、追加されたＮＩＣを認識して動的に設定を行う機能を備える場合には、当該アプリケーション１４２が起動した状態をいう。例えば、仮想機械がウェブ・サーバのインスタンスとして動作する場合、ウェブ・サーバが追加ＮＩＣの動的な設定を行う機能を有する場合には、ウェブ・サーバが稼働した後の状態をいう。
【００５０】
サスペンド命令を受け取ると、ハイパーバイザ１３０は、クローン元仮想機械１３８Ｓの稼働を停止し、その仮想ＣＰＵ１４４Ｓのレジスタ値および仮想メモリ１４６Ｓのデータを、ステートファイル１６０としてストレージ１２６に書き出す。イメージ保存部１５８は、ストレージ１２６に記憶されたステートファイル１６０を読み出し、さらに仮想ルートディスク１４８Ｓのスナップショット１６２を取得し、通信管理部１５０を介して、リポジトリ・サーバ１０８へキャプチャ・イメージの保存依頼を行う。リポジトリ・サーバ１０８のリポジトリ管理部１８０は、保存依頼に応答して、ステートファイル１８４およびスナップショット１８６をリポジトリ１８２内に保存する。
【００５１】
なお、上記スナップショット１６２，１８６は、仮想ルートディスク１４８Ｓからコピー・オン・ライトで取得される差分データであるが、仮想ルートディスク１４８Ｓの基本となるベース仮想ディスクイメージは、例えばリポジトリ１８２内に予め保存され、クローン先ホストマシン１１０Ｔへの配布の用に供される。このように、仮想ルートディスク１４８Ｓの内容を、ホストマシン１１０間で事前に共有されるベース仮想ディスクイメージ１８８と、最新状態を反映するスナップショット１８６とに分離して管理することにより、キャプチャ・イメージの作成時間を短縮し、またイメージのサイズを削減することができる。
【００５２】
図５は、本発明の実施形態によるプロビジョニング・システムにおいて実現される、起動処理に関連する機能ブロックを示す図である。図５には、管理サーバ１０６と、リポジトリ・サーバ１０８と、クローン先となるホストマシン１１０Ｔとが示されている。
【００５３】
サービス利用者が、管理ポータル１７２を介してキャプチャ・イメージからの仮想機械のプロビジョニング申請を行うと、リクエストが管理ポータル１７２から管理アプリケーション１７４に渡される。管理アプリケーション１７４は、リクエストを受け取ると、ホストマシン群１０４の中からクローン先とするホストマシン１１０Ｔを決定し、該クローン先ホストマシン１１０Ｔに対し起動処理実行を指令する。
【００５４】
なお、クローン先ホストマシン１１０Ｔは、プロビジョニング申請の際に管理者が指定した仮想機械数や仮想機械を実行させるロケーション（地域や地域内の区画）などのユーザ指定情報と、各ホストマシン１１０の配備されるロケーションや負荷状況などの環境情報に応じて決定されるが、特に限定されるものではない。また、決定されるクローン先ホストマシン１１０Ｔは、１つに限定されるものではなく、全体として求められた数の仮想機械を準備するべく、任意の数のクローン先ホストマシン１１０Ｔが決定される。
【００５５】
クローン先ホストマシン１１０Ｔ上で動作する制御モジュール１３６は、通信管理部１５０と、起動処理を行う起動制御部１９０とを含む。通信管理部１５０が管理アプリケーション１７４から起動処理実行の指令を受信すると、起動制御部１９０に当該指令が渡される。上記起動処理実行の指令には、当該クローン先ホストマシン１１０Ｔ上に準備すべき仮想機械の数（以下、必要数と参照する。）と、キャプチャ・イメージを特定する情報が含まれており、起動制御部１９０は、指定されたキャプチャ・イメージから必要数のクローンの仮想機械を起動する処理を開始する。
【００５６】
起動制御部１９０は、より詳細には、ベースイメージ取得部１９２と、イメージ複製部１９４と、イメージ更新部１９６と、再開部１９８と、インタフェース取付部２００と、カスタマイズ部２０２とを含み構成される。ベースイメージ取得部１９２は、リポジトリ・サーバ１０８からベース仮想ディスクイメージ１８８を予め取得し、ストレージ１２６に記憶する。イメージ複製部１９４は、リポジトリ・サーバ１０８からリポジトリ１８２内のステートファイル１８４とスナップショット１８６を取得し、ストレージ１２６に記憶する。
【００５７】
イメージ更新部１９６は、準備すべきクローンの仮想機械毎に、ストレージ１２６に複製されたステートファイル２０４に含まれる仮想機械固有の情報（以下、固有情報と参照する）を更新し、取得したスナップショット２０６を複製して各クローンの仮想機械用にスナップショットを作成する。上記更新される固有情報としては、仮想機械を識別するＶＭＩＤ（Virtual Machine IDentifier）、仮想機械にアサインされる仮想ルートディスクのパスが挙げられる。また、上記ＶＭＩＤや仮想ルートディスクのパス以外にも、例えば仮想機械の名称など他の固有な情報がある場合には、それらも更新する。各クローン仮想機械の仮想ルートディスク１４８Ｓは、ベース仮想ディスクイメージ２０８と、クローン仮想機械毎に作成されたスナップショットとから復元される。
【００５８】
再開部１９８は、準備すべきクローン仮想機械毎に、ハイパーバイザ１３０に対し、更新されたステートファイル２０４からのレジューム命令（Ｒｅｓｕｍｅ）を発行する。ハイパーバイザ１３０は、レジューム命令に応答して、更新されたステートファイル２０４から、仮想ＣＰＵ１４４Ｔのレジスタ値を復元し、仮想メモリ１４６Ｔのデータを復元し、仮想機械１３８Ｔを復帰させる。
【００５９】
なお、仮想機械１３８Ｔは、クローン元仮想機械１３８Ｓからキャプチャ・イメージが作成された直前の状態、つまり仮想ＮＩＣの取り付け、適宜仮想メモリの拡大およびデータ・ディスクの取り付けを除いて、通常の稼働状態となった状態から再開される。仮想機械１３８Ｔのアプリケーション１４２が、追加されたＮＩＣを認識して動的に設定を行う機能を備える場合には、当該アプリケーション１４２が起動した状態から再開される。
【００６０】
インタフェース取付部２００は、クローン仮想機械１３８Ｔが、仮想ＮＩＣが切り離された状態で復帰した後、ハイパーバイザ１３０に対し、当該クローン仮想機械１３８Ｔへの仮想ＮＩＣの取り付け指令を発行する。当該仮想機械１３８Ｔへ仮想ＮＩＣが取り付けられると、そのゲストＯＳが仮想ＮＩＣを認識し、ＩＰアドレスの割り当てなどネットワーク設定を行う。また、仮想機械１３８Ｔがウェブ・サーバのインスタンスとして動作し、当該ウェブ・サーバが追加ＮＩＣの動的な設定を行う機能を有する場合には、当該ウェブ・サーバは、上記仮想ＮＩＣの取り付けに応答して、認識された仮想ＮＩＣに対しネットワーク設定を行い、サービスを開始する。
【００６１】
カスタマイズ部２０２は、準備すべき仮想機械毎に、仮想ＮＩＣ取り付けの以外のカスタマイズ処理を実施する。上記他のカスタマイズ処理としては、仮想メモリ１４６Ｔのリサイズや、データ・ディスクの取り付け、他のカスタム・スクリプトの実行を含むことができる。この場合、カスタマイズ部２０２は、適宜、仮想メモリ１４６Ｔの拡大やデータ・ディスクの取り付けなどの命令をハイパーバイザ１３０に発行する。当該クローン仮想機械１３８Ｔの仮想メモリ１４６Ｔのリサイズが行われると、当該仮想機械１３８ＴのゲストＯＳは、記憶領域が変更されたことを認識する。また、クローン仮想機械１３８Ｔにデータ・ディスクが取り付けられると、当該仮想機械１３８ＴのゲストＯＳは、当該データ・ディスクを認識し、コンフィグレーションする。
【００６２】
上記取込処理の際に仮想メモリ１４６Ｓのサイズを縮小した上でキャプチャ・イメージを作成しておき、上記起動処理の際に仮想メモリ１４６Ｔのサイズを元のサイズに拡大する構成によって、キャプチャ・イメージのサイズを削減し、ひいては、プロビジョニング時のディスクＩ／Ｏをより低減し、同一ホストマシン上の他の仮想機械への干渉をより低減することができる。
【００６３】
上記イメージ更新部１９６、再開部１９８、インタフェース取付部２００およびカスタマイズ部２０２による処理が、準備するべき仮想機械の数分繰り返されることにより、クローン先ホストマシン１１０Ｔ上に、必要数の仮想機械がプロビジョニングされる。なお、上記イメージ更新部１９６、再開部１９８、インタフェース取付部２００およびカスタマイズ部２０２が実行する処理は、各仮想機械毎に並列に行うこともできる。しかしながら、詳細は後述するが、ステートファイル２０４を効率的に再利用する観点からは、少なくとも上記イメージ更新部１９６および再開部１９８が行うステートファイルの更新およびクローン仮想機械の再開の処理については、各仮想機械毎に、異なるホストマシン間では、並列で実行し、同一ホストマシン上では、順番に行われることが望ましい。
【００６４】
以下、図６および図７を参照しながら、本発明の実施形態において行われるプロビジョニング処理の流れについて、より詳細に説明する。図６は、本発明の実施形態によるプロビジョニング・システムにおいて、クローン元ホストマシン１１０Ｓが実行する取込処理を示すフローチャートである。図６に示す処理は、サービス利用者側の管理者により管理サーバ１０６にキャプチャ・イメージ作成申請が行われ、管理サーバ１０６から取込処理実行の指令が発行されたことに応答して、ステップＳ１００から開始される。
【００６５】
ステップＳ１０１では、ホストマシン１１０Ｓは、管理サーバ１０６から、クローン元仮想機械１３８Ｓが指定される取込処理実行の指令を受信する。ステップＳ１０２では、ホストマシン１１０Ｓは、再起動部１５４により、指定されたクローン元仮想機械１３８Ｓをシャットダウンし、クローン元仮想機械１３８Ｓの定義ファイルの複製を作成し、ＮＩＣ未接続、データ・ディスク未接続およびメモリ最小の状態となるよう該定義ファイルの複製を改変する。ステップＳ１０３では、ホストマシン１１０Ｓは、再起動部１５４により、改変されたクローン元仮想機械１３８Ｓの定義ファイルを用いて、ＮＩＣおよびデータ・ディスクが切り離され、メモリ最小構成の状態で、クローン元仮想機械１３８Ｓをブートさせる。
【００６６】
ステップＳ１０４では、ホストマシン１１０Ｓは、イメージ取込部１５６により、起動した直後の状態でクローン元仮想機械１３８Ｓをキャプチャし、ステートファイル１６０およびスナップショット１６２をストレージ１２６に書き出す。ステップＳ１０５では、ホストマシン１１０Ｓは、イメージ保存部１５８により、クローン元仮想機械１３８Ｓのステートファイル１６０をリポジトリ・サーバ１０８へコピーし、ステップＳ１０６で、仮想ルートディスクのスナップショット（コピー・オン・ライト・データ）１６２をリポジトリ・サーバ１０８へコピーする。ステップＳ１０７では、ホストマシン１１０Ｓは、取込処理完了応答を管理サーバ１０６へ送信し、ステップＳ１０８で本取込処理を終了する。
【００６７】
図７は、本発明の実施形態によるプロビジョニング・システムにおいて、クローン先ホストマシン１１０Ｔが実行する起動処理を示すフローチャートである。図７に示す処理は、サービス利用者側から管理サーバ１０６にプロビジョニング申請が行われ、または予め設定された仮想機械を増加させる契機とするトリガ条件が満たされ、管理サーバ１０６から当該クローン先ホストマシン１１０Ｔに起動処理実行の指令が発行されたことに応答して、ステップＳ２００から開始される。
【００６８】
なお、上記トリガ条件は、特に限定されるものではないが、仮想マシンのＣＰＵ使用率、ネットワーク負荷やディスク使用量などの指標値に対する条件とすることができる。例えば、サービス利用者のシステムにおいて、ウェブ・サーバのインスタンスにかかる平均ネットワーク負荷をモニタし、平均負荷が一定以上となることを条件として、ウェブ・サーバのインスタンスを追加する条件を設けることができる。これにより、過渡的なアクセス量の増加に対応してシームレスにウェブ・システムの規模を拡大することが可能となる。
【００６９】
ステップＳ２０１では、クローン先ホストマシン１１０Ｔは、当該ホストマシン１１０Ｔ上に準備すべき仮想機械の必要数およびクローン元キャプチャ・イメージが指定された起動処理実行の指令を受信する。ステップＳ２０２では、ホストマシン１１０Ｔは、必要数分の新規ＶＭＩＤを生成し、ステップＳ２０３で、必要数分の新規ＶＭ名を生成し、ステップＳ２０４で、各新規ＶＭＩＤ用に仮想機械の仮想ルートディスクを格納するための各新規ディレクトリを作成する。
【００７０】
ステップＳ２０５では、ホストマシン１１０Ｔは、当該ホストマシン１１０Ｔのストレージ１２６にベース仮想ディスクイメージ２０８が存在するか否かを判定する。ステップＳ２０５で、ベース仮想ディスクイメージ２０８が存在しないと判定された場合（ＮＯ）には、ステップＳ２０６へ処理が進められる。ステップＳ２０６では、ホストマシン１１０Ｔは、ベースイメージ取得部１９２により、ベース仮想ディスクイメージ１８８をリポジトリ・サーバ１０８から取得し、ストレージ１２６に記憶し、ステップＳ２０７へ処理を進める。
【００７１】
一方、ステップＳ２０５で、ベース仮想ディスクイメージ２０８がキャッシュされており、存在すると判定された場合（ＹＥＳ）には、ステップＳ２０７へ直接処理が進められる。ステップＳ２０７では、ホストマシン１１０Ｔは、イメージ複製部１９４により、リポジトリ・サーバ１０８からステートファイル１８４およびスナップショット１８６を取得し、ストレージ１２６にコピーする。
【００７２】
ステップＳ２０８では、ホストマシン１１０Ｔは、イメージ更新部１９６により、ステートファイル２０４中のＶＭＩＤ、ＶＭ名および仮想ルートディスクのパスを、上記ステップＳ２０２〜Ｓ２０４で作成された各新規ＶＭＩＤ、各新規ＶＭ名および各新規ディレクトリのパスで更新する。
【００７３】
図８は、ステートファイルの更新処理を説明する図である。図９は、キャプチャされたステートファイルを例示する図である。図８および図９に示すように、ステートファイルは、メタデータ部（State File Metadata）と、ＣＰＵのレジスタ値（Register Values）を含むＣＰＵデータ部（CPU State）と、カーネル領域（Kernel Pages）およびユーザ領域（User pages）を含むメモリデータ部（Memory Page Contents）とから構成されるシーケンシャル・データである。
【００７４】
上記メタデータ部には、仮想機械を固有に識別する識別子（ＶＭＩＤ）が格納されるフィールド、仮想ルートディスクのパス（Virtual Root Disk Path）が格納されるフィールドおよびデバイス・コンフィギュレーションが記述される領域（Device Configuration）が含まれる。図９においては、ステートファイル中、太字で「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」と示されている部分が、クローン元仮想機械のＶＭＩＤ、ＶＭ名（図９では、ＶＭＩＤと同一とされている）および仮想ルートディスクのパス中に含まれるＶＭＩＤの文字列を表す。
【００７５】
ステートファイルが、メタデータ部、ＣＰＵデータ部およびメモリデータ部が連続して構成されるシーケンシャル・データであるため、ステートファイル中のＶＭＩＤおよび仮想ルートディスクのパスの更新によってこれらの長さが変化してしまうと、ステートファイル全体を書き換える必要が生じる。つまり、仮想機械毎にステートファイルを準備する必要が生じる。一方、ＶＭＩＤおよび仮想ルートディスクのパスを固定長とすることによって、更新によっても上記文字列の長さが変化せず、ひいては、クローンの仮想機械の再開が完了する毎に、単一のステートファイルを更新することで、次のクローンの再開に必要なステートファイルを得ることができるようになる。
【００７６】
そこで、好適な実施形態では、ＶＭＩＤとしては、固定長のＵＵＩＤ（Universally Unique IDentifier）文字列を用いることができ、ステップＳ２０２では、ｕｕｉｄｇｅｎプログラムその他のライブラリを用いることによって、仮想機械固有な、ランダムでかつ固定長の識別子を生成することができる。新規ＶＭ名についても同様に、ステップＳ２０３では、同様のライブラリを用いて仮想機械固有なランダムでかつ固定長の名称を生成することができる。
【００７７】
各新規ＶＭＩＤ用の仮想ルートディスクのパスについても同様に、ステップＳ２０４では、上記固定長のＶＭＩＤを一部に含ませてパスを生成することによって、仮想機械固有な固定長のパスを生成することができる。そして、ステップＳ２０８では、ステートファイル２０４中のＶＭＩＤ、ＶＭ名および仮想ルートディスクのパスを、作成された固定長の新規ＶＭＩＤ、新規ＶＭ名および新規ディレクトリのパスによってインプレイスで置き換えることにより、ファイルサイズを変更せずに、また仮想機械毎にステートファイルを複製することなく、必要な仮想機械毎のステートファイルを用意することができる。図９においては、ステートファイル中、太字で「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」と示されている部分が、新規生成されたＶＭＩＤ（ＶＭ名）で単に置き換えられるだけで、各仮想機械を起動するに必要なステートファイルが用意される。
【００７８】
ステップＳ２０９では、ホストマシン１１０Ｔは、再開部１９８により、更新されたステートファイル２０４から、仮想ＣＰＵ１４４Ｔおよび仮想メモリ１４６Ｔを復元し、クローン仮想機械を再開させる。ステップＳ２１０では、ホストマシン１１０Ｔは、インタフェース取付部２００により、稼働を再開した仮想機械に仮想ＮＩＣを取り付ける。ステップＳ２１０に応答して、ステップＳ２１１では、稼働を再開させた仮想機械のゲストＯＳ１４０は、取り付けられた仮想ＮＩＣを検出し、ＩＰアドレスを割り当てる。
【００７９】
ステップＳ２１２では、ホストマシン１１０Ｔは、カスタマイズ部２０２により、稼働を再開させた仮想機械にデータ・ディスクを取り付ける。ステップＳ２１２に応答して、ステップＳ２１３では、稼働を再開させた仮想機械のゲストＯＳ１４０は、取り付けられたデータ・ディスクを検出し、コンフィグレーションを行う。ステップＳ２１４では、ホストマシン１１０Ｔは、カスタマイズ部２０２により、稼働を再開させた仮想機械の仮想メモリ１４６Ｔをリサイズする。ステップＳ２１４に応答して、ステップＳ２１５では、稼働を再開させた仮想機械のゲストＯＳ１４０は、変更されたメモリサイズを認識する。
【００８０】
ステップＳ２１６では、ホストマシン１１０Ｔは、必要数のクローン仮想機械が起動したか否かを判定する。ステップＳ２１６で、必要数のクローンの仮想機械が未だ起動していないと判定された場合（ＮＯ）には、ステップＳ２０８へ処理をループさせ、必要数の仮想機械が起動するまで処理を繰り返させる。したがって、図８および図９に示すステートファイル中のＶＭＩＤ文字列（太字で「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」と示されている部分）が、各仮想機械用に作成された新規ＶＭＩＤで、順次、置き換えられ、更新されたステートファイルから、順次、各仮想機械の再開が行われる。
【００８１】
一方、ステップＳ２１６で、必要数のクローンの仮想機械が起動したと判定された場合（ＹＥＳ）には、ステップＳ２１７へ処理を進める。ステップＳ２１７では、ホストマシン１１０Ｔは、起動処理完了応答を管理サーバ１０６へ送信し、ステップＳ２１８で本起動処理を終了する。
【００８２】
以上説明した実施形態によれば、クローン元仮想機械１３８Ｓから取り込まれたキャプチャ・イメージから、１以上の仮想機械１３８Ｔが、ランダムなディスクＩ／Ｏを発生させる通常のブート・プロセスを経ずに、クローン元仮想機械の複製が再開するという形で、ホストマシン１１０上に準備される。したがって、通常のブート・プロセスを経る場合に比較して、短時間に起動することができ、また、ディスクＩ／Ｏによる負荷が低減されるため、同一ホストマシン１１０上で稼働中の他の仮想機械への干渉も低減される。
【００８３】
上記キャプチャ・イメージは、仮想ＮＩＣが切り離された状態で起動した後にクローン元仮想機械１３８Ｓから取り込まれたものであるため、ネットワーク設定などのステートフルな情報を保持せず、ステートフルな情報も同一のクローンが同時動作する不具合も発生させない。また、仮想ＮＩＣが取り付けられると、仮想機械のゲストＯＳが自動的に認識し、ＩＰアドレスの割り当てなどを行うため、ＯＳ非依存の手法と言える。
【００８４】
なお、上述した実施形態では、ステートファイル、スナップショット、ベース仮想ディスクイメージは、それぞれ、リポジトリ・サーバ１０８を介して各ホストマシン１１０に配布されるものとして説明してきが、必ずしも、リポジトリ・サーバ１０８を介して配布される必要はない。他の実施形態では、クローン元ホストマシン１１０Ｓおよび１以上のクローン先ホストマシン１１０Ｔ間で、ピア・ツー・ピアの通信方式により、上記ステートファイル、スナップショット、ベース仮想ディスクイメージを共有する構成を採用してもよい。
【００８５】
以下、本発明の実施形態によるプロビジョニング処理を具体的な実施例をもって説明するが、本発明は後述する実施例に限定されるものでもない。
【００８６】
（実施例）
上記実施形態によるプロビジョニング・システム１００を、複数のコンピュータ装置からなるコンピュータ・システム上に実現するためのプログラムを作成し、所定数の仮想機械がプロビジョニングされるまでの時間を計測し、従来の手法と比較して、本発明の実施形態によるプロビジョニング手法の評価を行った。
【００８７】
ホストマシン１１０としては、それぞれ８つのコア、２４ＧＢのＤＤＲ３（Double Data Rate 3）のＲＡＭ、５００ＧＢのＨＤＤの物理リソースからなるＩＢＭ社のＩＢＭ（登録商標）ＢｌａｄｅＣｅｎｔｅｒ（登録商標）ＨＳ２２を、合計４台使用して、ホストマシン群１０４を構成した。リポジトリ・サーバ１０８としては、ＩＢＭ社のＩＢＭ（登録商標）ＢｌａｄｅＣｅｎｔｅｒ（登録商標）ＨＳ２１を使用した。４台のホストマシン（ＨＳ２２）およびリポジトリ・サーバ（ＨＳ２１）は、ＣＦＦｈ高速拡張スロットに、１０ＧｂＥ（１０ギガビット・イーサネット（登録商標））のネットワーク拡張カードを挿入して相互に接続した。仮想化ソフトウェアは、Ｘｅｎ（登録商標）を使用した。仮想機械は、ゲストＯＳとして、Ｌｉｎｕｘ（登録商標）のカーネルイメージを用い、１コアの仮想ＣＰＵ、５１２ＭＢの仮想メモリ、１０ＧＢの仮想ストレージの構成とした。
【００８８】
ベース仮想ディスクイメージは、予め、各ホストマシン１１０に配布し、ＶＭステートファイルと、対応するコピー・オン・ライト・データ（スナップショット）をリポジトリ・サーバ１０８に保存した。プロビジョニング処理の際には、リポジトリ・サーバ１０８からホストマシン１１０それぞれに、ＶＭステートファイルと、コピー・オン・ライト・データ（スナップショット）とをコピーし、これを用いて、全体として１，２，４，８，１６，３２，６４個の仮想機械を順次起動させた。そして、それぞれの場合について、仮想機械すべての起動が完了するまでの所要時間を計測した。図１０は、本発明の実施形態によるプロビジョニング処理でかかった所要時間を、仮想機械の起動数に対してプロットしたグラフを示す。
【００８９】
（比較例）
物理リソース、仮想化ソフトウェアおよび仮想機械の構成は、上記実施例と同一構成とした。ＯＳイメージは、予めホストマシン１１０に配布し、ＯＳイメージから通常のブート・プロセスを経て、１，２，４，８，１６，３２，６４個の仮想機械を起動させ、それぞれの場合について、仮想機械すべての起動が完了するまでの所要時間を計測した。なお、各仮想機械のブート・プロセスは並列処理とした。図１０には、比較例のプロビジョニング処理による所要時間を、仮想機械の起動数に対してプロットした。
【００９０】
（考察）
図１０に示されるように、実施例によるプロビジョニング処理では、仮想機械数が６４までの範囲にわたって、全体として、比較例によるプロビジョニング手法の場合にかかる時間より短い時間で仮想機械の起動が完了することが実証された。また、多数側の領域において特に起動時間の短縮の効果が大きいことが顕著に示された。
【００９１】
以上説明したように、本発明の実施形態によれば、単一のＯＳイメージに基づく複数の仮想機械を、短時間に、かつ同一ホストマシン上で稼働中の他の仮想機械を圧迫することなく準備することが可能な情報処理システム、情報処理装置、仮想機械の準備方法、該情報処理装置を実現するためのプログラム、および該プログラムを記録する記録媒体を提供することができる。
【００９２】
本発明の実施形態によるプロビジョニング・システムは、コンピュータ実行可能なプログラムを、コンピュータ装置にロードして各機能部を実現することにより提供される。このようなプログラムとしては、例えば、ＦＯＲＴＲＡＮ、ＣＯＢＯＬ、ＰＬ／Ｉ、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙなどのレガシー・プログラミング言語や、オブジェクト指向プログラミング言語などで記述された、コンピュータ実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布することができる。
【００９３】
これまで本発明を図面に示した実施形態および実施例をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００９４】
１００…プロビジョニング・システム、１０２…ネットワーク、１０４…ホストマシン群、１０６…管理サーバ、１０８…リポジトリ・サーバ、１１０…ホストマシン、１１２…インターネット、１１４…クライアント端末、１２０…ハードウェア・リソース、１２２…ＣＰＵ、１２４…メモリ、１２６…ストレージ、１２８…ＮＩＣ、１３０…ハイパーバイザ、１３２…管理用仮想機械、１３４…管理用ＯＳ、１３６…制御モジュール、１３８…仮想機械、１４０…ゲストＯＳ、１４２…アプリケーション、１４４…仮想ＣＰＵ、１４６…仮想メモリ、１４８…仮想ルートディスク、１５０…通信管理部、１５２…取込制御部、１５４…再起動部、１５６…イメージ取込部、１５８…イメージ保存部、１６０，１８４，２０４…ステートファイル、１６２，１８６，２０６…スナップショット、１７０…ブラウザ、１７２…管理ポータル、１７４…管理アプリケーション、１８０…リポジトリ管理部、１８２…リポジトリ、１８８，２０８…ベース仮想ディスクイメージ、１９０…起動制御部、１９２…ベースイメージ取得部、１９４…イメージ複製部、１９６…イメージ更新部、１９８…再開部、２００…インタフェース取付部、２０２…カスタマイズ部
【図１】
0005681465.tif 000002
【図２】
0005681465.tif 000003
【図３】
0005681465.tif 000004
【図４】
0005681465.tif 000005
【図５】
0005681465.tif 000006
【図６】
0005681465.tif 000007
【図７】
0005681465.tif 000008
【図８】
0005681465.tif 000009
【図９】
0005681465.tif 000010
【図１０】
0005681465.tif 000011