(57)【特許請求の範囲】
【請求項１】
仮想マシン及び当該仮想マシン上の実行環境に関するデータである仮想マシンイメージを管理する仮想マシンイメージ管理サーバであって、
演算処理を実行する演算部と、データを格納する記憶部と、を備え、
前記記憶部は、
仮想マシンイメージの基礎となるマスタイメージと、
一のマスタイメージと、それぞれが前記一のマスタイメージに適用され得る１又は２以上の追加処理と、の組み合わせを含む仮想マシンイメージ管理情報と
を格納し、
前記演算部は、
前記仮想マシンイメージ管理情報に基づいて、仮想マシンイメージを構築する途中までの追加処理をマスタイメージに適用した中間マスタイメージを構築するか否かを判定する判定処理と、
前記判定処理での判定結果が中間マスタイメージを構築するという真の判定結果の場合、前記中間マスタイメージを構築して前記記憶部に格納し、前記仮想マシンイメージ管理情報中のマスタイメージを、前記中間マスタイメージに置換する中間マスタイメージ構築処理と、
前記仮想マシンイメージ管理情報に基づいて、前記記憶部に格納されているマスタイメージ又は中間マスタイメージに残りの追加処理を適用して前記仮想マシンイメージを構築する仮想マシンイメージ構築処理と
を実行する
仮想マシンイメージ管理サーバ。
【請求項２】
前記演算部は、
前記判定処理において、前記中間マスタイメージのコピーに要する時間が、前記マスタイメージをコピーして前記仮想マシンイメージを構築する途中までの追加処理を適用した場合に要する時間よりも短いならば、前記中間マスタイメージを構築するという前記真の判定をし、
前記仮想マシンイメージ構築処理において、前記記憶部に格納されているマスタイメージ又は中間マスタイメージをコピーし、そのコピーしたマスタイメージ又は中間マスタイメージに残りの追加処理を適用して前記仮想マシンイメージを構築する
請求項１に記載の仮想マシンイメージ管理サーバ。
【請求項３】
前記仮想マシンイメージ管理情報は、仮想マシンイメージのデータサイズが固定的又は可変的の何れであるかを示す情報をさらに含み、
前記演算部は、
前記判定処理において、仮想マシンイメージのデータサイズが、可変的な場合に前記真の判定をし、固定的な場合には前記真の判定をしない
請求項２に記載の仮想マシンイメージ管理サーバ。
【請求項４】
前記演算部は、
前記判定処理において、異なる仮想マシンイメージに共通して含まれる、マスタイメージ及び追加処理が存在するならば、その共通するマスタイメージに、その共通する追加処理を適用した中間マスタイメージを構築すると判定し、
前記中間マスタイメージ構築処理において、前記異なる仮想マシンイメージに係る前記仮想マシンイメージ管理情報中の共通するマスタイメージを、その共通する追加処理を適用した中間マスタイメージに置換する
請求項３に記載の仮想マシンイメージ管理サーバ。
【請求項５】
前記演算部は、
前記判定処理において、２以上の異なる中間マスタイメージを構築すると判定した場合、中間マスタイメージを構築する順番を決定し、
前記中間マスタイメージ構築処理において、前記判定処理の決定した順番に中間マスタイメージを構築する
請求項４に記載の仮想マシンイメージ管理サーバ。
【請求項６】
前記演算部は、
前記中間マスタイメージ構築処理において、前記記憶部の空き容量が所定未満とならない範囲で、前記判定処理の決定した順番に中間マスタイメージを構築して前記記憶部に格納する
請求項５に記載の仮想マシンイメージ管理サーバ。
【請求項７】
前記仮想マシンイメージ管理情報は、仮想マシンイメージの構築の頻度に関する情報をさらに含み、
前記演算部は、
前記判定処理において、前記構築の頻度のより高い仮想マシンイメージに利用できる中間マスタイメージの構築を、先の順番とする
請求項６に記載の仮想マシンイメージ管理サーバ。
【請求項８】
前記演算部は、
前記判定処理において、より多くの異なる仮想マシンイメージに共通して利用できる中間マスタイメージの構築を、先の順番とする
請求項６に記載の仮想マシンイメージ管理サーバ。
【請求項９】
前記仮想マシンイメージ管理情報は、同様の追加処理間における新しさを示すバージョン情報をさらに含み、
前記演算部は、
前記判定処理において、異なる中間マスタイメージの各々が、同じマスタイメージに前記バージョンの異なる前記同様の追加処理を適用したものであるならば、バージョンのより新しい同様の追加処理を適用する中間マスタイメージの構築を、先の順番とする
請求項６に記載の仮想マシンイメージ管理サーバ。
【請求項１０】
ユーザからの仮想マシンイメージの構築の要求を受け付ける受付部をさらに有し、
前記演算部は、
前記判定処理において、前記受付部を介してユーザから構築を要求された仮想マシンイメージについて、前記中間マスタイメージを構築するか否かの判定をする
請求項２に記載の仮想マシンイメージ管理サーバ。
【請求項１１】
前記演算部は、
前記判定処理において、異なる仮想マシンイメージに共通して含まれる、マスタイメージ及び追加処理が存在するならば、その共通するマスタイメージに、その共通する追加処理を適用した中間マスタイメージを構築すると判定し、
前記中間マスタイメージ構築処理において、前記異なる仮想マシンイメージに係る前記仮想マシンイメージ管理情報中の共通するマスタイメージを、その共通する追加処理を適用した中間マスタイメージに置換する
請求項１に記載の仮想マシンイメージ管理サーバ。
【請求項１２】
前記演算部は、
前記判定処理において、中間マスタイメージを構築するという前記真の判定をした２以上の異なる中間マスタイメージが存在する場合、さらに、中間マスタイメージを構築する順番を決定し、
前記中間マスタイメージ構築処理において、前記判定処理の決定した順番に中間マスタイメージを構築する
請求項１１に記載の仮想マシンイメージ管理サーバ。
【請求項１３】
前記演算部は、
前記中間マスタイメージ構築処理において、前記記憶部の空き容量が所定未満とならない範囲で、前記判定処理の決定した順番に中間マスタイメージを構築して前記記憶部に格納する
請求項１２に記載の仮想マシンイメージ管理サーバ。
【請求項１４】
仮想マシン及び当該仮想マシン上の実行環境に関するデータである仮想マシンイメージを管理する仮想マシンイメージ管理方法であって、
データを格納する記憶部に、
仮想マシンイメージの基礎となるマスタイメージと、
一のマスタイメージと、それぞれが前記一のマスタイメージに適用され得る１又は２以上の追加処理と、の組み合わせを含む仮想マシンイメージ管理情報と、
を格納させておき、
前記仮想マシンイメージ管理情報に基づいて、仮想マシンイメージを構築する途中までの追加処理をマスタイメージに適用した中間マスタイメージを構築するか否か判定し、
その判定結果が中間マスタイメージを構築するという真の判定結果の場合、前記中間マスタイメージを構築して前記記憶部に格納し、前記仮想マシンイメージ管理情報中のマスタイメージを、前記中間マスタイメージに置換し、
前記仮想マシンイメージ管理情報に基づいて、前記記憶部に格納されているマスタイメージ又は中間マスタイメージに残りの追加処理を適用して前記仮想マシンイメージを構築する
仮想マシンイメージ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンイメージ管理サーバ及び仮想マシンイメージ管理方法の技術に関する。
【背景技術】
【０００２】
大規模なデータセンタを有するサーバで仮想的な計算機である仮想マシンを稼働させ、ユーザに、通信ネットワークを介して、その仮想マシンを利用させるサービスが実現されている。【０００３】
このようなサービスは、予めＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）及びソフトウェア等（以下「仮想環境」という）がインストールされた複数の仮想マシンの一覧を、カタログとしてユーザに提示する。ユーザは、そのカタログから所望の実行環境がインストールされた仮想マシンを選択することによって、その実行環境を含む仮想マシンを利用することができる。【０００４】
サーバは、仮想マシン上で実行される実行環境をファイル等のイメージデータ（つまり、仮想マシンイメージ）として扱うことができる。従って、サーバは、カタログから或る実行環境を含む仮想マシンが選択された場合、その実行環境に対応する仮想マシンイメージを複製するだけで、ユーザにその実行環境を含む仮想マシンを提供することができる（例えば、特許文献１、２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＵＳ２０１２／００８１３９５
【特許文献２】特開２００７−１１４９８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サーバから提供されたカタログに所望の実行環境を含む仮想マシンが存在する場合、ユーザは、その仮想マシンを選択するだけで良い。しかし、カタログに所望の実行環境を含む仮想マシンが存在しない場合、ユーザは、ベースとなる実行環境を含む仮想マシンをカスタマイズして、所望の実行環境を含む仮想マシンを構築する必要がある。【０００７】
ベースとなる実行環境を含む仮想マシンにユーザの所望するソフトウェア等をインストールする処理は、仮想マシンイメージをコピーする処理と比較して、サーバの処理負荷が大きい。この場合ユーザは、所望の実行環境を含む仮想マシンが利用できるようになるまで、長い時間待たされてしまう虞がある。【０００８】
この問題は、サーバで、ＯＳ及びソフトウェア等を様々に組み合わせた複数の仮想マシンイメージを予め構築しておくという解決手段が考えられる。しかし、この解決手段は、仮想マシンイメージの数が増えるほど、サーバのストレージの消費量が増加してしまうという問題を含む。【０００９】
そこで、本発明の目的は、ユーザの所望する実行環境を含む仮想マシンの提供時間の短縮と、サーバにおけるストレージの消費量と、のバランスを考慮する仮想マシンイメージ管理サーバを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一実施例に係る仮想マシンイメージ管理サーバは、仮想マシン及び当該仮想マシン上の実行環境に関するデータである仮想マシンイメージを管理する。
仮想マシンイメージ管理サーバは、演算処理を実行する演算部と、データを格納する記憶部と、を備える。
記憶部は、
仮想マシンイメージの基礎となるマスタイメージと、
一のマスタイメージと、それぞれが一のマスタイメージに適用され得る１又は２以上の追加処理と、の組み合わせを含む仮想マシンイメージ管理情報と、を格納する。
演算部は、
仮想マシンイメージ管理情報に基づいて、仮想マシンイメージを生成する途中までの追加処理をマスタイメージに適用した中間マスタイメージを構築するか否かを判定する判定処理と、
判定処理での判定結果が中間マスタイメージを構築するという真の判定結果の場合、中間マスタイメージを構築して記憶部に格納し、仮想マシンイメージ管理情報中のマスタイメージを、中間マスタイメージに置換する中間マスタイメージ構築処理と、
仮想マシンイメージ管理情報に基づいて、記憶部に格納されているマスタイメージ又は中間マスタイメージに残りの追加処理を適用して仮想マシンイメージを構築する仮想マシンイメージ構築処理と、を実行する。
【発明の効果】
【００１１】
本発明によれば、ユーザの所望する実行環境を含む仮想マシンの提供時間の短縮と、サーバにおけるストレージの消費量と、のバランスを取ることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、カタログ管理システムの全体構成の例を示す。
【図２】図２は、カタログ管理サーバのハードウェア構成の例を示す。
【図３】図３は、カタログ管理テーブルの例を示す。
【図４】図４は、スクリプト管理テーブルの例を示す。
【図５】図５は、実行時間管理テーブルの例を示す。
【図６】図６は、マスタイメージ管理テーブルの例を示す。
【図７】図７は、ストレージ容量管理テーブルの例を示す。
【図８】図８は、ポリシ管理テーブルの例を示す。
【図９】図９は、実施例１に係る処理の概要を説明するための図である。
【図１０】図１０は、カタログ管理システムにおける処理のシーケンスチャートの例を示す。
【図１１】図１１は、第１カタログ管理部における処理のフローチャートの例を示す。
【図１２】図１２は、第１のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１３】図１３は、第１のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１４】図１４は、第２のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１５】図１５は、第３のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１６】図１６は、第４のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１７】図１７は、第５のポリシに係る第１カタログ構築部の処理のフローチャートの例を示す。
【図１８】図１８は、マスタイメージ監視部の処理のフローチャートの例を示す。
【図１９】図１９は、カタログ管理サーバに係るＧＵＩの画面の例を示す。
【図２０】図２０は、実施例３に係る処理の概要を説明するための図である。
【図２１】図２１は、実施例３に係るカタログ管理サーバの構成の例を示す。
【図２２】図２２は、カタログ構築処理テーブルの例を示す。
【図２３】図２３は、中間マスタイメージ管理テーブルの例を示す。
【図２４】図２４は、第２カタログ管理部の処理のフローチャートの例を示す。
【図２５】図２５は、実施例３に係るＧＵＩの画面の例を示す。
【図２６】図２６は、第２カタログ構築部の処理のフローチャートの例を示す。
【図２７】図２７は、実施例４に係るカタログ管理サーバの構成の例を示す。
【図２８】図２８は、第３カタログ管理部の処理のフローチャートの例を示す。
【図２９】図２９は、実施例５に係るカタログ管理サーバの構成の例を示す。
【図３０】図３０は、実施例５に係るカタログ管理サーバの処理のフローチャートの例を示す。
【発明を実施するための形態】
【００１３】
仮想マシンイメージを管理するカタログ管理サーバの幾つかの実施例を、図面を参照しながら、以下に述べる。
【実施例１】
【００１４】
図１は、カタログ管理システムの全体構成の例を示す。【００１５】
カタログ管理システム１０は、仮想マシンにＯＳ及びソフトウェア等がインストールされている（つまり、実行環境を含む）１又は２以上の仮想マシンイメージを、カタログとして管理する。ユーザは、カタログ管理システム１０の提供するカタログを通じて、所望の実行環境を含む仮想マシンを容易に利用することができる。【００１６】
カタログ管理システム１０は、カタログを管理する仮想マシン管理サーバ１１と、実行環境を含む仮想マシンイメージを管理する仮想マシンイメージ管理サーバ１２と、仮想マシンを動作させる物理的な計算機である物理サーバ１３と、様々なデータを格納するストレージ装置１５と、これらのサーバ１１、１２、１３等を管理するための端末である管理端末１４と、を有する。これらのサーバ１１、１２、１３、ストレージ装置１５及び管理端末１４は、通信ネットワーク１８を介して、相互にデータの送受信を行うことができる。【００１７】
通信ネットワーク１８は、各装置間で送受信される様々なデータを伝送する。通信ネットワーク１８は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はこれらの組み合わせ等によって構成される。通信ネットワーク１８は、更に外部の通信ネットワーク（不図示）と接続されても良い。【００１８】
物理サーバ１３は、ハイパーバイザ５１を有する。ハイパーバイザ５１は、物理サーバ１３の有する物理リソース（例えば、ＣＰＵ及びメモリ等のリソース）を、論理的に分割して、仮想マシン５３から利用可能とするハードウェア又はソフトウェアである。つまり、仮想マシン５３は、このハイパーバイザ５１上に実現される。例えば、ＶＭｗａｒｅ（登録商標）におけるＥＳＸ等は、ハイパーバイザ５１の一例である。【００１９】
ハイパーバイザ５１は、仮想マシンイメージ４６（ファイル）を用いて仮想マシン５３を実現する。つまり、ハイパーバイザ５１は、ＯＳ及びソフトウェア等を含む仮想マシンイメージ４６を用いて、そのＯＳ及びソフトウェア等のインストールされた仮想マシン５３を実現する。仮想マシンイメージ４６は、ストレージ装置１５に格納されても良いし、物理サーバ１３の有する所定の記憶部（不図示）に格納されても良い。【００２０】
ストレージ装置１５は、データのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を制御する制御部４１と、データを記憶するボリューム４２とを有する。【００２１】
ボリューム４２は、仮想マシンイメージ管理サーバ１２及び物理サーバ１３上のハイパーバイザ５３が、共に認識可能なファイルシステム４５を有する。仮想マシンイメージ４６及びマスタイメージ８１等は、このファイルシステム４５に格納される。ボリューム４２及びファイルシステム４５は、何れも複数であっても良い。例えば、ＶＭｗａｒｅ（登録商標）のｖＳｐｈｅｒｅの場合、拡張子が「ＶＭＦＳ」のファイルが、ファイルシステム４５に該当する。ファイルシステム４５は、データストアと呼ばれることもある。ストレージ装置１５は、ＳＡＮに適応しても良いし、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）に適応しても良い。【００２２】
ファイルシステム４５には、仮想マシンイメージ４６と、マスタイメージ８１と、中間マスタイメージ８２と、スクリプト８３と、が格納される。【００２３】
仮想マシンイメージ４６は、ＯＳ等のデータを含むディスクイメージ４８と、物理リソースから仮想マシンに割り当てられるリソースに関する情報を定義した定義情報４９と、を含む。例えば、ＶＭｗａｒｅ（登録商標）におけるｖＳｐｈｅｒｅの場合、拡張子が「ＶＭＤＫ」のファイルがディスクイメージ４８に該当し、拡張子が「ＶＭＸ」のファイルが定義情報４９に該当する。【００２４】
マスタイメージ８１は、仮想マシンイメージ４６の構築に用いられる。通常、仮想マシンイメージ４６は、複製したマスタイメージ８１を用いて構築される。マスタイメージ８１は、仮想マシンイメージ４６と同じデータ構成であっても良いし、所定のフォーマットで記載されたデータ構成であっても良い。例えば、ＶＭｗａｒｅ（登録商標）における拡張子が「ＯＶＦ（Ｏｐｅｎ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｆｏｒｍａｔ）」のファイル等は、所定のフォーマットに該当する。マスタイメージ８１は、ストレージ装置１５のボリューム４２と異なるボリュームやファイルシステム４５と異なるファイルシステムに格納されても良いし、他の装置に格納されても良い。マスタイメージ８１は、仮想マシンイメージ管理サーバ１２からアクセス可能であり、仮想マシンイメージ管理サーバ１２を経由して、各物理サーバ１３へ転送可能な他の装置に格納されても良い。【００２５】
スクリプト８３は、Ｗｉｎｄｏｗｓ（登録商標）におけるバッチファイル、又はＬｉｎｕｘ（登録商標）におけるシェルスクリプト等であっても良い。スクリプト８３は、独自のフォーマットによってシステムのあるべき状態が記述されていても良い。スクリプト８３は、自動的に実行されるものであっても良いし、ユーザの指示を受けたオペレータから手動で実行されるものであっても良い。スクリプト８３は、ストレージ装置１５に格納されても良いし、カタログ管理サーバ１１の記憶部２４に記憶されても良い。スクリプト８３の詳細については、後述する。【００２６】
中間マスタイメージ８３は、マスタイメージ８１にスクリプト８３を適用して生成される。中間マスタイメージ８３の詳細については、後述する。【００２７】
仮想マシンイメージ管理サーバ１２は、実行環境を含む仮想マシンイメージを管理する。仮想マシンイメージ管理サーバ１２は、実行環境を含む仮想マシンイメージを管理する仮想マシンイメージ管理部３１と、様々なデータを記憶する記憶部３３と、外部に対して機能を公開するＡＰＩ３２と、を有する。【００２８】
仮想マシンイメージ管理部３１は、ハイパーバイザ５１、仮想マシン５３及びファイルシステム４５等を管理する。【００２９】
記憶部３３は、ハイパーバイザ５１等を管理するための情報を含む構成情報３６を記憶する。記憶部３３は、揮発性記憶媒体で構成されても良いし、不揮発性記憶媒体で構成されても良い。構成情報３２０は、所定のＤＢ（ＤａｔａＢａｓｅ）として構成されても良い。【００３０】
ＡＰＩ３２は、仮想マシンイメージ管理サーバ１２の有する機能を外部に公開する。仮想マシンイメージ管理サーバ１２は、このＡＰＩ３２を介して受けた要求に基づいて、構成情報３６に関する情報を提供したり、所定の設定を行ったりする。ＡＰＩ３２は、ＨＴＴＰプロトコルによる情報の取得及び設定を可能とするＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）に関する機能を公開しても良い。ＡＰＩ３２は、独自のプロトコルに基づく機能を公開しても良い。【００３１】
一般的に、仮想環境が異なると、仮想マシンイメージ管理部３１、構成情報３６及びＡＰＩ３２も異なり得る。例えば、ＶＭｗａｒｅ（登録商標）のｖＳｐｈｅｒｅの場合、ｖＣｅｎｔｅｒと呼ばれるソフトウェアが、これらに該当する機能を提供する。例えば、ｖＳｐｈｅｒｅの仮想環境とＨｙｐｅｒ−Ｖの仮想環境とが混在する場合、カタログ管理システム１０は、仮想環境毎に異なる仮想マシンイメージ管理サーバ１２を有しても良い。若しくは、カタログ管理システム１０は、１つの仮想マシンイメージ管理サーバ１２を有し、この仮想マシンイメージ管理サーバ１２上で、異なる仮想環境を統合して管理できるソフトウェア（例えば、ＣｌｏｕｄＳｔａｃｋ等）を実行しても良い。【００３２】
カタログ管理サーバ１１は、カタログに対応する仮想マシンイメージ４６を構築する。ユーザは、仮想マシンイメージ管理サーバ１２の有するＡＰＩ３２を介して、カタログ管理サーバ１１に対して、所望の仮想マシンイメージを指定しても良い。カタログ管理サーバ１１は、第１カタログ管理部２１と、第１カタログ構築部２２と、マスタイメージ監視部２３と、記憶部２４とを有する。記憶部２４は、カタログ管理テーブル１００と、スクリプト管理テーブル２００と、実行時間管理テーブル４００と、マスタイメージ管理テーブル４００と、ストレージ容量管理テーブル５００と、ポリシ管理テーブル６００と、を記憶する。これらの要素の詳細については、後述する。【００３３】
仮想マシンイメージ管理サーバ１２及びカタログ管理サーバ１１は、管理端末１４及び通信ネットワーク１８を介して制御されても良いし、所定の入出力Ｉ／Ｆ（不図示）を介して直接制御されても良い。カタログ管理サーバ１１と仮想マシンイメージ管理サーバ１２とは、一つの装置であっても良い。カタログ管理サーバ１１、仮想マシンイメージ管理サーバ１２及び管理端末１４は、物理的な計算機であっても良いし、或る物理的な計算機上で動作する仮想計算機であっても良い。【００３４】
仮想マシンイメージ管理サーバ１２は、２台以上であっても良い。この場合、カタログ管理サーバ１１は、テーブル及び処理の各々に、仮想マシンイメージ管理サーバ１２を識別するための情報（例えば、ＩＰアドレス等）を付与しても良い。【００３５】
図２は、カタログ管理サーバ１１のハードウェア構成の例を示す。なお、仮想マシンイメージ管理サーバ１２及び物理サーバ１３のハードウェア構成は、図２に示すハードウェア構成とほぼ同様であるので、説明を省略する。【００３６】
カタログ管理サーバ１１は、コンピュータプログラム（以下「プログラム」という）に基づき演算処理を実行するＣＰＵ１００１と、プログラム及びデータを一時的に格納するメモリ１００２と、通信ネットワーク１８に接続するためのネットワークＩ／Ｆ１００３と、マウス、キーボード及びディスプレイ等のユーザインタフェースに係る装置を接続するための入出力Ｉ／Ｆ１００４と、ディスク（記憶媒体）にアクセスするためのディスクＩ／Ｆ１００５と、を有する。これらの要素１００１〜１００５は、双方向にデータの送受信が可能な内部バス１００８で接続されている。【００３７】
ネットワークＩ／Ｆ１００３は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等によって構成される。ＣＰＵ１００１は、ディスクＩ／Ｆ１００５を介して、自装置の内部に有する内部ディスク１００６（例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ））にアクセスしても良いし、外部ディスクＩ／Ｆ１００７を介して、自装置の外部のストレージ装置１５にアクセスしても良い。外部ディスクＩ／Ｆ１００７は、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）等によって構成されても良いし、ネットワークＩＦ１００８として構成されても良い。【００３８】
図３は、カタログ管理テーブル１００の構成例を示す。【００３９】
カタログ管理テーブル１００は、ユーザに提供するカタログ要素と、カタログ要素に対応する仮想マシンを構築するために使用するマスタイメージ及びそのマスタイメージに対する設定と、を有する。ここで、カタログは複数のカタログ要素を含み、カタログ要素は実行環境を含む仮想マシンイメージに対応する。【００４０】
カタログ管理テーブル１００は、データ項目として、カタログ要素を識別するカタログ要素名１１１と、カタログ要素に係る仮想マシンイメージの構築に用いるマスタイメージを識別するマスタイメージ名１１２と、カタログ要素に係る仮想マシンイメージの構築に許容される最大時間を示す許容時間１１３と、カタログ要素に係る仮想マシンイメージの構築の頻度を示す構築頻度１１４と、カタログ要素に係る仮想マシンイメージの構築の優先度を示す優先度１１５と、カタログ要素の属するグループを示すグループ１１６と、マスタイメージに対する追加の設定及び処理を含むスクリプトのリストを管理する適用スクリプトリスト１１７と、を有する。【００４１】
適用スクリプトリスト１１７には、コピーされたマスタイメージに対して適用される設定及び処理を含むスクリプトが格納される。マスタイメージに２以上のスクリプトが適用されることもあるので、適用スクリプトリスト１１７には、２以上のスクリプトが格納されても良い。【００４２】
また、適用スクリプトリスト１１７は、スクリプトを適用する順番を有しても良い。例えば、カタログ管理テーブル１００のレコード１０１ａは、「第１マスタイメージ」に、「第１スクリプト」、「第２スクリプト」及び「第３スクリプト」の順番にスクリプトを適用して「第１カタログ要素」が構築されることを示す。例えば、カタログ管理テーブル１００のレコード１０１ｂは、「第１マスタイメージ」に、「第１スクリプト」及び「第２スクリプト」を適用して、「第２カタログ要素」が構築されることを示す。マスタデータに適用すべきスクリプトが存在しない場合、適用スクリプトリスト１１７は、空欄であっても良い。適用スクリプトリスト１１７に記載されたスクリプトは、自動的に適用されても良いし、ユーザの指示を受けたオペレータによって手動で適用されても良い。【００４３】
マスタイメージ名１１２には、マスタイメージに適用スクリプトリスト１１７の一部のスクリプトを適用して構築された中間マスタイメージが格納されても良い。中間マスタイメージの詳細については後述する。【００４４】
許容時間１１３には、ユーザがカタログ要素の構築にかかる時間として許容できる最大時間が格納される。この許容時間１１３は、ユーザからカタログ要素の構築の要求を受けてから、そのカタログ要素の構築が完了するまでの時間であっても良い。許容時間１１３の詳細については、後述する。【００４５】
構築頻度１１４には、カタログ要素が構築された頻度（回数）が格納される。構築頻度１１４には、所定のシステム定義時からカタログ要素が構築された回数の累積が格納されても良い。又は、構築頻度１１４には、ポリシで設定された或る期間にカタログが構築された回数の平均が格納されても良い。構築頻度１１４の詳細については、後述する。【００４６】
優先度１１５には、カタログ要素の優先度の高さが格納される。カタログ管理サーバ１１は、優先度１１５の高いカタログ要素から先に構築してストレージに格納することで、カタログ要素の構築処理に要する時間の短縮と、ストレージの消費量とのバランスを取ることができる。優先度１１５は、予め決められていても良いし、所定の条件に基づいて適宜更新されても良い。優先度１１５の詳細については、後述する。【００４７】
グループ１１６には、カタログ要素が属しているグループの識別情報が格納される。例えば、図３に示すカタログ管理テーブル１００において、第１カタログと第２カタログは、同じ「グループＡ」に属している。グループ１１６の詳細については、後述する。【００４８】
本実施例では、１つのカタログ要素に、１つのマスタイメージが対応するとする。しかし、１つのカタログ要素に、２以上のマスタイメージ及びそれらに関連する設定が対応するとしても良い。【００４９】
図４は、スクリプト管理テーブル２００の構成例を示す。【００５０】
スクリプト管理テーブル２００は、各スクリプトの詳細を有する。スクリプト管理テーブル２００は、データ項目として、スクリプトを識別するスクリプト名２１１と、スクリプトの実行の種別を示す実行種別２１２と、スクリプトで設定されるソフトウェアに関する情報を示すソフトウェア情報２１３と、スクリプトの格納場所（アドレス）を示すアドレス２１４と、を有する。【００５１】
スクリプト名２１１には、各スクリプトの識別情報が格納される。スクリプト管理テーブル２１０のスクリプト名２１１に格納されているスクリプト名と、カタログ管理テーブル１００の適用スクリプトリスト１１７に格納されているスクリプト名と、が同一の場合、それらのスクリプトは、同一のスクリプトとしても良い。【００５２】
実行種別２１２には、スクリプトの実行に関する種別が格納される。実行種別２１２には、マスタイメージによって実現される仮想マシンにソフトウェアをインストールすることを示す「インストール」、マスタイメージに含まれるＯＳ及びソフトウェア等に対するパラメータを変更することを示す「変更」、及びマスタイメージによって実現される仮想マシンからソフトウェアをアンインストールすることを示す「アンインストール」等の種別が格納される。【００５３】
ソフトウェア情報２１３は、データ項目として、ソフトウェア名２２１ａと、そのソフトウェアのバージョン２２１ｂと、を有する。スクリプトがソフトウェアに関する処理を含まない場合、ソフトウェア情報２１３は、空欄であっても良い。【００５４】
アドレス２１４には、スクリプトの実体データ（ファイル）の格納場所（アドレス）が格納される。格納場所は、ファイルパスとして表記されても良いし、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）として表記されても良い。【００５５】
例えば、スクリプト管理テーブル２１４のレコード２０１ａは、「第１スクリプト」は、「バージョン７」の「Ｔｏｍｃａｔ」というソフトウェアを「インストール」する処理であり、「￥￥ｘｘｘ￥ｙｙｙ￥ｔｏｍｃａｔ．ｂａｔ」のファイルパスに格納されていることを示す。スクリプトは、ＯＳの各種パラメータの設定（例えば、ＩＰアドレスの設定等）に関する処理であってもよい。【００５６】
スクリプトは、Ｗｉｎｄｏｗｓ（登録商標）におけるバッチファイル、又はＬｉｎｕｘ（登録商標）におけるシェルスクリプトであっても良い。スクリプトには、独自のフォーマット（ルール）によって、システムのあるべき状態が記述されており、第１カタログ管理部２１が、そのスクリプトを、所定の命令に変換してマスタイメージによって実現される仮想マシンに適用するとしてもよい。【００５７】
スクリプトは、カタログ管理サーバ１１の内部の記憶部２４に格納されても良いし、カタログ管理サーバ１１の外部のストレージ装置１５に格納されても良い。【００５８】
スクリプトは、自動的に実行されるものであって良い。又は、スクリプトは、オペレータから手動で実行されるものであっても良い。この場合、スクリプト管理テーブル２００は、そのスクリプトが手動で実行されるものであることを示す情報を更に有し、アドレス２１４が、そのスクリプトの実行手順書（Ｒｕｎｂｏｏｋ）の格納場所を有するとしても良い。【００５９】
図５は、実行時間管理テーブル３００の構成例を示す。【００６０】
実行時間管理テーブル３００は、カタログ要素の構築に必要な各処理の実行時間を有する。実行時間管理テーブル３００は、データ項目として、処理の種別を示す処理種別３１１と、処理の対象を示す処理対象３１２と、処理の実行に要する時間を示す実行時間３１３とを有する。【００６１】
例えば、実行時間管理テーブル３００のレコード３０１ａは、「第１マスタイメージ」の「コピー」に、「３０分」を要することを示す。例えば、実行時間管理テーブル３００のレコード３０１ｃは、「第１スクリプト」を「適用」するのに、「１５分」を要することを示す。【００６２】
実行時間３１３には、予め測定された時間が格納されても良い。又は、実行時間３１３には、最初に所定のデフォルト時間が格納されており、その後の測定に基づいてそのデフォルト時間が適宜更新されても良い。【００６３】
オペレータよる手動の処理を含む場合は、処理種別３１１を「手動処理」とし、実行時間３１３を手動の処理に要する「平均時間」又は「最長時間」若しくは「作業時間及び確認時間の合計時間」としても良い。【００６４】
図６は、マスタイメージ管理テーブル４００の構成例を示す。【００６５】
マスタイメージ管理テーブル４００は、カタログ要素の構築に用いられるマスタイメージ及び中間マスタイメージを管理する。マスタイメージ管理テーブル４００は、マスタイメージを識別するマスタイメージ名４１１と、マスタイメージのデータ（ファイル）のサイズを示すイメージサイズ４１２と、マスタイメージのファイルとしての属性を示す属性４１３と、基礎としたマスタイメージの情報を示す基礎マスタイメージ情報４１４と、適用済みのスクリプトの情報を示す適用済スクリプトリスト４１５と、を有する。【００６６】
マスタイメージ名４１１には、各マスタイメージの識別情報が格納される。マスタイメージ管理テーブル４００のマスタイメージ名４１１に格納されているマスタイメージ名と、カタログ管理テーブル１００のマスタイメージ名１１２に格納されているマスタイメージ名とが同一の場合、それらのマスタイメージは、同一のマスタイメージとしても良い。【００６７】
イメージサイズ４１２には、マスタイメージのデータ（ファイル）のサイズが格納される。イメージサイズ４１２には、マスタイメージの記憶領域を消費する量が格納されても良い。イメージサイズ４１２は、ハイパーバイザ５１が認識するマスタイメージのデータ（ファイル）のサイズを示すものであり、仮想マシン５３の内部で動作するＯＳ（ゲストＯＳ）が認識する仮想的な記憶デバイスのサイズを示すものではない。【００６８】
属性４１３には、マスタイメージのデータ（ファイル）としての属性が格納される。属性４１３には、「Ｔｈｉｃｋ」又は「Ｔｈｉｎ」の何れかが格納される。【００６９】
属性４１３が「Ｔｈｉｃｋ」の場合、ハイパーバイザ５０の認識するマスタイメージのイメージサイズ４１２と、仮想マシンの内部で動作するゲストＯＳの認識する記憶デバイスの容量とは、ほぼ同じになる。したがって、仮にゲストＯＳにソフトウェアをインストールしたり、ゲストＯＳからソフトウェアをアンインストールしたりしても、イメージサイズ４１２は変化しない。【００７０】
属性４１３が「Ｔｈｉｎ」の場合、イメージサイズ４１２は、仮想マシンの内部で動作するゲストＯＳの認識する記憶デバイスの容量以下となる。したがって、仮にゲストＯＳにソフトウェアをインストールしたり、ゲストＯＳからソフトウェアをアンインストールしたりした場合、イメージサイズ４１２は変化し得る。【００７１】
基礎マスタイメージ情報４１４は、マスタイメージ名４１１の示すマスタイメージの基礎となったマスタイメージ（以下「基礎マスタイメージ」という）の名称を示す基礎マスタイメージ名４２１ａと、その基礎マスタイメージによって実現されるゲストＯＳの名称を示すゲストＯＳ名４２１ｂと、を有する。ゲストＯＳ名４２１ｂは、第１カタログ構築部２１の所定の処理において使用され得る。また、基礎マスタイメージ情報４１４は、ゲストＯＳの詳細情報を更に有しても良い。ゲストＯＳの詳細情報は、例えば、ゲストＯＳがＷｉｎｄｏｗｓ（登録商標）の場合におけるＳｅｒｖｉｃｅＰａｃｋ等の情報である。【００７２】
適用済スクリプトリスト４１５は、基礎マスタイメージに対して適用されたスクリプトをリストとして有する。中間マスタイメージは、基礎マスタイメージに、適用済みスクリプトリストに示される順番にスクリプトを適用したものである。【００７３】
例えば、マスタイメージ管理テーブル４００のレコード４０１ａは、基礎マスタイメージである「第１マスタイメージ」のゲストＯＳが「Ｗｉｎｄｏｗｓ（登録商標）」であることを示す。そして、レコード４０１ａは、マスタイメージ名４１１の示す「第１マスタイメージ」が、基礎マスタイメージである「第１マスタイメージ」そのものであり、何のスクリプトも適用されていないことを示す。そして、レコード４０１ａは、「第１マスタイメージ」のイメージサイズ４１２が「３０ＧＢ」であり、その属性４１３が「Ｔｈｉｃｋ」であることを示す。【００７４】
例えば、マスタイメージ管理テーブル４００のレコード４０１ｂは、基礎マスタイメージである「第２マスタイメージ」のゲストＯＳが「Ｌｉｎｕｘ（登録商標）」であることを示す。そして、レコード４０１ｂは、マスタイメージ名４１１の示す「第２中間マスタイメージ」は、基礎マスタイメージである「第２マスタイメージ」にカラム４２３ａの「第１スクリプト」を適用したものであることを示す。そして、レコード４０１ｂは、「第２中間マスタイメージ」のイメージサイズ４１２が「１０ＧＢ」であり、その属性４１３が「Ｔｈｉｎ」であることを示す。【００７５】
図７は、ストレージ容量テーブル５００の構成例を示す。【００７６】
ストレージ容量テーブル５００は、ストレージ装置１５の有するファイルシステム４５における未使用の容量を有する。【００７７】
ストレージ容量テーブル５００は、データ項目として、ファイルシステム４５を識別するファイルシステム名５１１と、ファイルシステム４５における未使用の容量を示す未使用容量５１２と、を有する。【００７８】
例えば、ストレージ容量テーブル５００のレコード５０１ａは、「第１データストア」には、「１０ＴＢ（Ｔｅｒａ  Ｂｙｔｅｓ）」の未使用容量があることを示す。【００７９】
ストレージ容量テーブル５００には、ファイルシステム４５の全容量と、ファイルシステム４５における使用済みの容量とが格納され、未使用容量５１２には、ファイルシステム４５における全容量と使用済みの容量との差分が格納されても良い。【００８０】
ストレージ容量テーブル５００におけるファイルシステム名５１１は、複数のファイルシステムから構成されても良い。この場合、ファイルシステム名５１１の未使用容量５１２には、各ファイルシステムの未使用容量の合計値又は最大値が格納されても良い。【００８１】
図８は、ポリシ管理テーブル６００の構成例を示す。【００８２】
ポリシ管理テーブル６００は、中間マスタイメージを構築するためのポリシを有する。【００８３】
ポリシ管理テーブル６００は、ポリシを識別するポリシ名６１１と、カタログ管理サーバ１１が何れのポリシを選択しているのかを示す状態６１２と、ポリシの内容を示すポリシ内容６１３と、を有する。選択中のポリシに対応する状態６１２には、「選択中」という値が格納される。【００８４】
カタログ管理サーバ１１は、選択中のポリシに適合するように、中間マスタイメージを構築する。これにより、カタログ管理サーバ１１は、選択中のポリシに適合するカタログを構築することができる。ポリシ内容６１３には、図８に示した以外のポリシが格納されても良い。各ポリシの詳細及び各ポリシが選択された場合における中間マスタイメージの構築処理については、後述する。【００８５】
図９は、実施例１に係る処理の概要を説明するための概念図である。【００８６】
第１の方法において、第１カタログ要素８００１ａは、第１マスタイメージ８００１に、第１スクリプト８０２１と第２スクリプト８０２２とを適用して構築される。第２カタログ要素８００２ａは、第１マスタイメージ８０１１に、第１スクリプト８０２１と第３スクリプト８０２３とを適用して構築される。ストレージ装置２５の有するファイルシステム４２には、第１マスタイメージ８０１１と、第１スクリプト８０２１と、第２スクリプト８０２２と、第３スクリプト８０２３と、が格納されている。【００８７】
以下、第１の方法によって、第１カタログ要素８００１ａ及び第２カタログ要素８００２ａを構築する場合の処理を説明する。【００８８】
まず、カタログ管理サーバ１１は、第１マスタイメージ８０１１をコピーし、そのコピーした第１マスタイメージ８０１１に、第１スクリプト８０２１及び第２スクリプト８０２２を順番に適用して第１カタログ８００１ａを構築する。【００８９】
次に、カタログ管理サーバ１１は、第１マスタイメージ８０１１をコピーし、そのコピーした第１マスタイメージ８０１１に、第１スクリプト８０２１及び第３スクリプト９０２３を順番に適用して第２カタログ８００２ａを構築する。【００９０】
つまり、第１の方法の場合、第１スクリプト８０２１は、２回適用（実行）される。仮に、この第１スクリプト８０２１の適用にあたって手動の作業が必要となる場合、そこには、オペレータによる手動の作業コスト及び検証（テスト）コスト等も発生し得る。【００９１】
以下、第２の方法によって、第１カタログ８００１ｂ及び第２カタログ８００２ｂを構築する場合の処理を説明する。【００９２】
まず、カタログ管理サーバ１１は、第１マスタイメージ８０１１をコピーし、そのコピーした第１マスタイメージ８０１１に、第１カタログ８００１ｂ及び第２カタログ８００２ｂに共通する第１スクリプト８０２１を適用して第２中間マスタイメージ８０１２を構築する。この第２中間マスタイメージ８０１２は、ファイルシステム４５に格納される。【００９３】
次に、カタログ管理サーバ１１は、第２中間マスタイメージ８０１２をコピーし、そのコピーした第２中間マスタイメージ８０１２に、第２スクリプト８０２２を適用して第１カタログ８００１ｂを構築する。【００９４】
次に、カタログ管理サーバ１１は、第２中間マスタイメージ８０１２をコピーし、そのコピーした第２中間マスタイメージ８０１２に、第３スクリプト８０１２を適用して第２カタログ８００２ｂを構築する。【００９５】
第２の方法は、第１の方法と比べて、第１スクリプト８０２１を適用する回数が１回少ない。したがって、第２の方法は、第１の方法と比べて、より短時間で第１カタログ８００１ｂ及び第２カタログ８００２ｂを構築でき得る。しかしながら、第２の方法は、ファイルシステム４５に第２中間マスタイメージ８０１２が格納される分、第１の方法と比べて、ファイルシステム４５の未使用容量が減少する。【００９６】
このように、中間マスタイメージを構築することによって、全てのカタログを構築するまでに要する時間が短縮され得るものの、ファイルシステム４５の未使用容量が減少する虞も高くなる。そこで、カタログ管理サーバ１１は、選択されたポリシに適合するように、カタログ要素の構築に要する時間とファイルシステム４５の未使用容量とのバランスを考慮し、中間マスタイメージを構築する。【００９７】
図１０は、カタログ管理システム１０における処理のシーケンスチャートの例を示す。【００９８】
このシーケンスチャートは、カタログ管理サーバ１１を利用するユーザ３と、カタログ管理サーバ１１と、仮想マシンイメージ管理サーバ１２と、ハイパーバイザ５３と、の間の処理を示す。カタログ管理サーバ１１における処理は、第１カタログ管理部２１及び／又は第１カタログ構築部２２によって実行される。【００９９】
以下、「ポリシ選択要求」に関する処理を述べる。【０１００】
ユーザ３は、所定のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を介して、ポリシ管理テーブル６００に示すポリシの中から何れかのポリシを選択し、その選択結果をカタログ管理サーバ１１に伝える（Ｓ１１）。【０１０１】
カタログ管理サーバ１１は、ユーザの選択したポリシに基づいて、カタログ再構築処理を実行する（Ｓ１２）。この処理において、カタログ管理サーバ１１は、必要に応じて仮想マシンイメージ管理サーバ１２のＡＰＩ３２に、情報要求、マスタイメージのコピー要求、スクリプト適用要求及び各種設定要求等を行う（Ｓ１３）。【０１０２】
仮想マシンイメージ管理サーバ１２の仮想マシンイメージ管理部３１は、ＡＰＩ３２を介して受けた要求に基づいて、ハイパーバイザ５１にマスタイメージのコピーを実行させたり、仮想マシン５３にスクリプト適用を実行させたりする（Ｓ１４）。【０１０３】
カタログ管理サーバ１１は、仮想マシンイメージ管理サーバ１２を介さずに、直接、ハイパーバイザ５１にマスタイメージのコピーを実行させたり、仮想マシン５３等にスクリプト適用を実行させたりしても良い（Ｓ１５）【０１０４】
以下、「カタログ追加／削除要求」に関する処理を述べる。【０１０５】
ユーザ３は、所定のＧＵＩを介して、追加又は削除するカタログを選択し、その選択結果をカタログ管理サーバ１１に伝える（Ｓ２１）。以降のステップＳ２２〜Ｓ２５の処理は、上述のステップＳ１２〜Ｓ１５の処理とほぼ同様であるので、ここでは、説明を省略する。【０１０６】
以下、「カタログ要素構築要求」に関する処理を述べる。【０１０７】
ユーザ３は、所定のＧＵＩを介して、構築するカタログ要素を選択し、その選択結果をカタログ管理サーバ１１に伝える（Ｓ３１）。カタログ管理サーバ１１は、カタログ要素の構築処理を実行する（Ｓ３２）。そして、カタログ管理サーバ１１は、仮想マシンイメージ管理サーバ１２のＡＰＩ３２に、適宜、情報の要求及び各種設定の要求等（例えば、マスタイメージのコピー及びスクリプト適用等）を行う（Ｓ３３）。以降のステップＳ３４〜Ｓ３５の処理は、上述のステップＳ１２〜Ｓ１５の処理とほぼ同様であるので、ここでは、説明を省略する。【０１０８】
なお、カタログ管理サーバ１１は、ＡＰＩ３２を介さずに、仮想マシンイメージ管理サーバ１２に要求を行っても良い。【０１０９】
図１１は、カタログ管理サーバ１１の有する第１カタログ管理部２１における処理のフローチャート例を示す。【０１１０】
以下、カタログ管理サーバ１１が、ユーザ３から図１０に係る「ポリシ選択要求」を受けた場合の処理について述べる。【０１１１】
第１カタログ管理部２１は、ユーザ３から「ポリシ選択要求」を受けた場合、ポリシ選択のＧＵＩ画面を表示し、ユーザ３からポリシの選択等を受け付ける（Ｓ１０１）。このポリシ選択のＧＵＩ画面には、ポリシ管理テーブル６００の有するポリシ内容６１３が表示される。【０１１２】
そして、第１カタログ管理部２１は、ユーザ３に選択されたポリシとそのポリシに関する情報等とを含む「ポリシ選択情報」に基づいて、ポリシ選択処理を実行し（Ｓ１０２）、当該処理を終了する（ＥＮＤ）。ポリシ選択処理の詳細については、後述する。【０１１３】
図８における第１のポリシが選択された場合、ポリシ選択情報に、各カタログ要素の許容する許容時間１１３（図３参照）が含まれても良い。図８における第３のポリシが選択された場合、ポリシ選択情報に、各カタログの構築頻度１１４（図３参照）が含まれても良い。【０１１４】
以下、カタログ管理サーバ１１が、ユーザ３から図１０に係る「カタログ要素追加要求」を受けた場合の処理について述べる。【０１１５】
第１カタログ管理部２１は、ユーザ３から「カタログ要素追加要求」を受けた場合、カタログ要素追加のＧＵＩ画面を表示し、ユーザ３から追加するカタログ要素の選択を受け付ける（Ｓ１１１）。【０１１６】
そして、第１カタログ管理部２１は、ユーザ３に選択された追加するカタログ要素とその追加するカタログ要素に関する情報等を含む「カタログ要素追加情報」に基づいて、カタログ要素追加処理を実行し（Ｓ１１２）、当該処理を終了する（ＥＮＤ）。カタログ要素追加処理の詳細については、後述する。【０１１７】
以下、カタログ管理サーバ１１が、ユーザ３から図１０に係る「カタログ要素削除要求」を受けた場合の処理について述べる。【０１１８】
第１カタログ管理部２１は、ユーザ３から「カタログ要素削除要求」を受けた場合、カタログ要素削除のＧＵＩ画面を表示し、ユーザ３から削除するカタログ要素の選択を受け付ける（Ｓ１２１）。【０１１９】
そして、第１カタログ管理部２１は、ユーザ３に選択された削除するカタログ要素とその削除するカタログ要素に関する情報等を含む「カタログ要素削除情報」に基づいて、カタログ要素削除処理を実行し（Ｓ１２２）、当該処理を終了する（ＥＮＤ）。カタログ要素削除処理の詳細については、後述する。【０１２０】
以下、カタログ管理サーバ１１が、ユーザ３から図１０に係る「カタログ要素構築要求」を受けた場合の処理について述べる。【０１２１】
第１カタログ管理部２１は、ユーザ３から「カタログ要素構築要求」を受けた場合、カタログ要素構築のＧＵＩ画面を表示し、ユーザ３から構築するカタログ要素の選択を受け付ける（Ｓ１３１）。【０１２２】
第１カタログ管理部２１は、カタログ管理テーブル１００から、ユーザ３に選択されたカタログ要素を構築するために必要なマスタイメージ及びスクリプト等に関する情報を取得する（Ｓ１３２）。そして、第１カタログ管理部２１は、その取得した情報に基づいて、カタログ要素構築処理を実行し（Ｓ１３３）、当該処理を終了する（ＥＮＤ）。なお、第１カタログ管理部２１は、選択中のポリシに基づいてカタログ要素を構築するとしても良い。【０１２３】
第１カタログ管理部２１は、マスタイメージのコピーに要した時間、及び／又はスクリプトの適用に要した時間等を計測し、その計測結果を実行時間管理テーブル３００に格納しても良い。第１カタログ管理部２１は、カタログ管理テーブル１００において、この構築を要求されたカタログ要素に対応する構築頻度１１４を更新（例えば、カウントアップ）しても良い。【０１２４】
カタログ要素構築要求に対する処理の途中に、オペレータが手動で実施する処理が介在しても良い。例えば、第１カタログ管理部２１は、ユーザから構築要求されたカタログ要素の構築手順（例えば、マスタデータ及びスクリプトの適用の順番等）を、オペレータに通知しても良い。そして、オペレータが、その構築手順に従って、手動でカタログ要素を構築しても良い。そして、第１カタログ管理部２１は、オペレータからカタログ要素の構築を完了した旨の応答を受けて、処理を終了しても良い。このとき、第１カタログ管理部２１は、オペレータが手動でカタログ要素を構築するのに要した時間及び構築したカタログ要素の検証に要した時間等を計測し、その計測結果を実行時間管理テーブル１００に格納しても良い。【０１２５】
図１２は、図１１において「ポリシ選択要求」が選択され、「第１のポリシ」が選択された場合における第１カタログ構築部２２の処理のフローチャート例を示す。【０１２６】
第１のポリシは、図８のポリシ管理テーブル６００に示すように、「カタログ要素の構築時間が許容時間内となるように、中間マスタイメージを構築しておく」というものである。つまり、第１のポリシが選択中の場合、カタログ管理サーバ１１は、ユーザ３から要求されたカタログ要素の構築を、そのカタログに対して設定されている許容時間内に完了することが求められる。以下、その場合の処理について述べる。【０１２７】
第１カタログ構築部２２は、第１カタログ管理部２１から「ポリシ選択情報」によって第１のポリシに基づく処理を要求された場合、ステップＳ２００以降の処理を実行する。なお、選択中のポリシは、ポリシ管理テーブル６００の状態６１２を参照することによって判断できる。【０１２８】
第１カタログ構築部２２は、カタログ管理テーブル１００の有する各カタログ要素に対して、ステップＳ２００〜Ｓ２２２のループ処理を実行する。以下、ループ処理の内容について説明する。【０１２９】
第１カタログ構築部２２は、カタログ管理テーブル１００を参照し、当該ループ処理の対象であるカタログ要素に係るマスタイメージ名１１２と、適用スクリプトリスト１１７とを抽出する（Ｓ２０１）。【０１３０】
第１カタログ構築部２２は、実行時間管理テーブル３００を参照し、上記のマスタイメージ名１１２に対応するマスタイメージのコピーに要する実行時間３１３（以下「コピー時間」という）と、上記適用スクリプトリスト１１７に含まれる各スクリプトの適用に要する実行時間３１３（以下「スクリプト適用時間」という）とを取得する。【０１３１】
そして、第１カタログ構築部２２は、コピー時間とスクリプト適用時間とを合計し、カタログ要素の構築に要する時間（以下「カタログ要素構築時間」という）を見積もる。例えば、図３に示したカタログ管理テーブル１００の第２カタログのカタログ要素構築時間は、実行時間管理テーブル３００を参照すると、第２マスタイメージのコピー時間である「２０分」と、第１スクリプトのスクリプト適用時間である「１５分」と、第２スクリプトのスクリプト適用時間である「１０分」とを合計した「４５分」と見積られる。【０１３２】
第１カタログ構築部２２は、このカタログ要素構築時間と、処理対象のカタログ要素の許容時間１１３とを比較し、「カタログ要素構築時間≦許容時間」であるか否かを判定する（Ｓ２０２）。第１カタログ構築部２２は、「カタログ要素構築時間≦許容時間」の場合（Ｓ２０２：ＹＥＳ）、当該処理対象のカタログ要素は第１のポリシを満たしているので、次のループ処理に進む（Ｓ２２２）。なお、第１カタログ構築部２２は、ステップＳ２０２において、「カタログ要素構築時間≦許容時間−所定のマージン時間」であるか否かを判定しても良い。【０１３３】
第１カタログ構築部２２は、「カタログ要素構築時間＞許容時間」の場合（Ｓ２０２：ＮＯ）、次の処理を実行する。【０１３４】
第１カタログ構築部２２は、ストレージ容量テーブル５００を参照して、ファイルシステム４５が、中間マスタイメージを格納するのに十分な未使用容量を有しているか否かを判定する（Ｓ２０３）。【０１３５】
第１カタログ構築部２２は、「マスタイメージのイメージサイズ＞未使用容量」の場合（Ｓ２０３：ＮＯ）、中間マスタイメージの格納が不可能であると判定し、当該処理を異常終了する（ＥＮＤ）。このとき、第１カタログ構築部２２は、当該処理が異常終了した旨及びその理由等を、ＧＵＩ画面に表示しても良い。【０１３６】
第１カタログ構築部２２０は、「マスタイメージのイメージサイズ≦未使用容量」の場合（Ｓ２０３：ＹＥＳ）、中間マスタイメージの格納が可能であると判定し、次の処理に進む。なお、ファイルシステム４５が複数の未使用容量５１２を有している場合、第１カタログ構築部２２は、中間マスタイメージのイメージサイズと、最大の未使用容量とを比較しても良い。また、マスタイメージの属性４１３が「Ｔｈｉｎ」の場合、第１カタログ構築部２２は、スクリプト適用後の中間マスタイメージのイメージサイズが、元のマスタイメージのイメージサイズよりも増加する場合を考慮し、ステップＳ２０３において、「マスタイメージのイメージサイズ≦未使用容量−所定のマージン容量」を判定しても良い。また、マスタイメージのイメージサイズ４１２に代えて、ゲストＯＳの認識するストレージ容量を用いて比較しても良い。【０１３７】
次に、第１カタログ構築部２２は、マスタイメージのコピー処理を実行する（Ｓ２０４）。このとき、第１カタログ構築部２２は、このコピー処理時間を計測し、その計測結果を、実行時間管理テーブル３００に格納しても良い。【０１３８】
第１カタログ構築部２２は、マスタイメージの属性４１３が「Ｔｈｉｃｋ」であるか「Ｔｈｉｎ」であるかを判定する（Ｓ２０５）。なぜなら、マスタイメージの属性４１３が「Ｔｈｉｃｋ」の場合は、スクリプトを適用してもマスタイメージのイメージサイズは変化しないが、マスタイメージの属性４１３が「Ｔｈｉｎ」の場合は、スクリプトを適用するとマスタイメージのイメージサイズが変化し、それによってコピー処理時間が変化し得るからである。【０１３９】
以下、ステップＳ２０５において、マスタイメージの属性４１３が「Ｔｈｉｃｋ」の場合（Ｓ２０５：Ｔｈｉｃｋ）について述べる。【０１４０】
第１カタログ構築部２２は、「カタログ要素構築時間≦許容時間」となるように、マスタイメージに適用すべきスクリプトを特定する。ここで、属性４１３は「Ｔｈｉｃｋ」であるため、スクリプトの適用後であってもマスタイメージのコピー処理時間は変化しない。したがって、カタログ要素構築時間は、スクリプトが適用済みである分、短縮される。例えば、実行時間管理テーブル３００を参照すると、第１マスタイメージに第１スクリプトを適用した場合のカタログ要素構築時間は、「３０分（第１マスタイメージのコピー処理時間）＋１５分（第１スクリプト適用時間）＝４５分」であることがわかる。これに対して、第１マスタイメージに第１スクリプトを適用した中間イメージマスタを予め生成しておくことによって、カタログ要素構築時間は、「３０分（中間マスタイメージのコピー処理時間）」に短縮される。このように、第１カタログ構築部２２は、「カタログ要素構築時間≦許容時間」となるように適用すべきスクリプトを特定する。【０１４１】
上述のとおり、属性４１３が「Ｔｈｉｃｋ」の場合、幾つスクリプトを適用しても、その後のコピー処理時間は変化しない。よって、第１カタログ構築部２２は、（１）カタログ管理テーブル１００の適用スクリプトリスト１１７に格納されている全てのスクリプトを適用した中間マスタイメージを生成しても良い。【０１４２】
若しくは、（２）第１カタログ構築部２２は、カタログ管理テーブル１００の適用スクリプトリスト１１７に格納されているスクリプトを、許容時間以下となるまで順番に適用して中間マスタイメージを生成しても良い。【０１４３】
上記（１）の場合、対象カタログ要素のカタログ要素構築時間は短くなるが、そこで生成した中間マスタイメージが他のカタログ要素の構築に再利用される可能性は低くなる。上記（２）の場合、対象カタログ要素のカタログ要素構築時間は上記（１）と比較して長くなるが、そこで生成した中間マスタイメージが他のカタログ要素の構築に再利用される可能性は高くなる。第１カタログ構築部２２は、上記（１）及び（２）の何れの処理を採用しても良いし、状況に合わせて上記（１）及び（２）の処理を切り換えても良い。【０１４４】
また、ステップＳ２０２において、第１カタログ構築部２２は、「許容時間＜マスタイメージのコピー処理時間」の場合を異常終了としても良い。なぜなら、この場合、中間マスタイメージを生成したとしても、そのコピー処理時間は、マスタイメージのコピー処理時間よりも短くならないからである。【０１４５】
ステップＳ２０７として、第１カタログ構築部２２は、ステップＳ２０６で特定したスクリプトをステップＳ２０４でコピーしたマスタイメージに適用して中間マスタイメージを構築し（Ｓ２０７）、ステップＳ２２０に進む。【０１４６】
以下、ステップＳ２０５において、マスタイメージの属性４１３が「Ｔｈｉｎ」の場合（Ｓ２０５：Ｔｈｉｎ）について述べる。【０１４７】
マスタイメージの属性４１３が「Ｔｈｉｎ」の場合、スクリプトが適用されると、元のマスタイメージのファイルサイズは変化し得る。したがって、属性４１３が「Ｔｈｉｃｋ」の場合と異なり、マスタイメージと、スクリプトを適用した中間マスタイメージとのコピー処理時間は、同じであるとは限らない。よって、第１カタログ構築部２２は、１つずつ順番にスクリプトを適用して中間マスタイメージを構築し、その中間マスタイメージを用いた場合のカタログ要素構築時間を見積る必要がある。そして、第１カタログ構築部２２は、「カタログ要素構築時間≦許容時間」となる中間マスタイメージを求める。以下、この処理について述べる。【０１４８】
第１カタログ構築部２２は、カタログ管理テーブル１００の適用スクリプトリスト１１７を参照し、最初に（又は、次に）適用するスクリプトを特定する。そして、第１カタログ構築部２２は、この特定したスクリプトを、マスタイメージに（又は、中間マスタイメージに）適用し、新たな中間マスタイメージを構築する（Ｓ２１１）。このとき、ファイルシステム４５が、この新たな中間マスタイメージを格納できる未使用容量を有していない場合、第１カタログ構築部２２は、当該処理を異常終了としても良い。【０１４９】
次に、第１カタログ構築部２２は、新たな中間マスタイメージのファイルサイズを取得する。そして、第１カタログ構築部２２は、このファイルサイズに基づいて、コピー処理時間を見積る。第１カタログ構築部２２は、ファイルサイズの比率に基づいて、コピー処理時間を見積もっても良い。例えば、スクリプト適用前のマスタイメージのファイルサイズが「２０ＧＢ」であって、コピー処理時間が「３０分」であり、新たな中間マスタイメージのファイルサイズが「３０ＧＢ」であったとする。この場合、第１カタログ構築部２２は、新たな中間マスタイメージのコピー処理時間を、「３０分×（３０ＧＢ／２０ＧＢ）＝４５分」と見積もっても良い。【０１５０】
そして、第１カタログ構築部２２は、「新たな中間マスタイメージを用いた場合のカタログ要素構築時間≦許容時間」であるか否かを判定する（Ｓ２１３）。新たな中間マスタイメージを用いた場合のカタログ要素構築時間は、「新たな中間マスタイメージのコピー処理時間＋残りのスクリプト適用時間」として算出しても良い。【０１５１】
第１カタログ構築部２２は、「新たな中間マスタイメージを用いた場合のカタログ要素構成時間≦許容時間」である場合（Ｓ２１３：ＹＥＳ）、ステップＳ２２０に進む。【０１５２】
第１カタログ構築部２２は、「新たな中間マスタイメージを用いた場合のカタログ要素構成時間＞許容時間」である場合（Ｓ２１３：ＮＯ）、当該「新たな中間マスタイメージ」を「中間マスタイメージ」としてステップＳ２１１に戻り、次の順番のスクリプトの適用を試みる。なお、「全てのスクリプトを適用した中間マスタイメージのコピー処理時間＞許容時間」であった場合、第１カタログ構築部２２は、当該処理を異常終了しても良い。【０１５３】
次に、ステップＳ２２０以降の処理を述べる。第１カタログ構築部２２は、ステップＳ２０７又はステップＳ２１１で構築した中間マスタイメージを利用するように、当該処理対象のカタログ要素に係るマスタイメージ名１１２及び適用スクリプトリスト１１７を更新する（Ｓ２２０）。そして、第１カタログ構築部２２は、マスタイメージ管理テーブル４００のマスタイメージ名４１１に、当該中間マスタイメージを新規登録する。【０１５４】
例えば、カタログ管理テーブル１００において、第２カタログ要素が処理対象であり、第２中間マスタイメージが第２マスタイメージに第１スクリプトを適用したものである場合、第１カタログ構築部２２は、次の処理を行う。即ち、第１カタログ構築部２２は、第２カタログ要素に対応するマスタイメージ名１１２を、「第２中間マスタイメージ」に更新し、適用スクリプトリスト１１７の一番目１１９ａの「第１スクリプト」を削除し、二番目以降のスクリプトの順番を上げる。そして、第１カタログ構築部２２は、マスタイメージ管理テーブル４００のマスタイメージ名４１１に「第２中間マスタイメージ」を新規登録すると共に、第２中間マスタイメージのイメージサイズ４１２、属性４１３、及び基礎マスタイメージ情報４１４に適切な情報を格納する。【０１５５】
例えば、第１カタログ構築部２２は、イメージサイズ４１２に、第２中間マスタイメージのファイルサイズである「１０ＧＢ」を格納する。例えば、第１カタログ構築部２２は、基礎マスタイメージ名４２１ａに、「第２マスタイメージ」を格納する。例えば、第１カタログ構築部２２は、適用済スクリプトリスト４１５の一番目４１２ａに、「第１スクリプト」を格納する。【０１５６】
なお、第１カタログ構築部２２は、ステップＳ２２０の前又は後で、ストレージ容量テーブル５００、及び／又は実行時間管理テーブル３００を更新しても良い。例えば、第１カタログ構築部２２は、その構築した中間マスタイメージのコピー処理時間を、実行時間管理テーブル３００に登録しても良い。【０１５７】
次に、第１カタログ構築部２２は、カタログ管理テーブル１００から、その構築した中間マスタイメージを再利用可能な他のカタログ要素を検索し、その検索に該当する他のカタログ要素のデータ項目を更新しても良い（Ｓ２２１）。例えば、カタログ管理テーブル１００を参照すると、第１マスタイメージに第１スクリプトを適用した第１中間マスタイメージは、「第１カタログ要素」に限らず、「第４カタログ要素」でも再利用可能である。よって、カタログ管理テーブル１００において、「第４カタログ要素」のマスタイメージ名１１２を、「第１中間マスタイメージ」に更新し、適用スクリプトリスト１１７の一番目１１９ａの「第１スクリプト」を削除しても良い。【０１５８】
第１カタログ構築部２２は、上述のＳ２００〜Ｓ２２２のループ処理を、カタログ管理テーブル１００の全てのカタログ要素に対して完了した場合、当該処理を終了する（ＥＮＤ）。【０１５９】
図１３は、「第１のポリシ」の選択中に、図１１において「カタログ追加」又は「カタログ削除」が選択された場合における第１カタログ構築部２２の処理のフローチャート例を示す。【０１６０】
図１３に示す処理は、ポリシとして「第１のポリシ」が選択されている状態で、第１カタログ管理部２１から「カタログ要素追加」又は「カタログ要素削除」の指示を受けた場合に実行される。【０１６１】
以下、第１カタログ構築部２２が「カタログ要素追加」の指示を受けた場合について述べる。第１カタログ構築部２２は、カタログ要素をカタログ管理テーブル１００に追加する（Ｓ２４１）。そして、第１カタログ構築部２２は、その追加したカタログ要素に対して、図１２に示したステップＳ２０１〜Ｓ２２１の中間マスタイメージを構築する処理を実行し（Ｓ２４２）、当該処理を終了する（ＥＮＤ）。【０１６２】
以下、第１カタログ構築部２２が「カタログ要素削除」の指示を受けた場合について述べる。第１カタログ構築部２２は、カタログ管理テーブル１００を参照し、削除対象のカタログ要素が中間マスタイメージを利用しているか否かを判定する（Ｓ２５１）。この判定は、カタログ管理テーブル１００のマスタイメージ名１１２が、中間マスタイメージの名称であるか否かに基づいて行っても良い。若しくは、この判定は、マスタイメージ管理テーブル４００のマスタイメージ名４１１と、基礎マスタイメージ名４２１ａとが異なるか否かに基づいて行っても良い。【０１６３】
削除対象のカタログ要素が中間マスタイメージを使用していない場合（Ｓ２５１：ＮＯ）、第１カタログ構築部２２は、カタログ管理テーブル１００から削除対象のカタログ要素を削除し（Ｓ２５４）、当該処理を終了する（ＥＮＤ）。【０１６４】
削除対象のカタログ要素が中間マスタイメージを使用している場合（Ｓ２５１：ＹＥＳ）、第１カタログ構築部２２は、当該中間マスタイメージが他のカタログ要素でも利用されているか否かを判定する（Ｓ２５２）。この判定は、カタログ管理テーブル１００のマスタイメージ名１１２を参照し、削除対象のカタログ要素以外に、当該中間マスタイメージを含むカタログが存在するか否かに基づいて行っても良い。【０１６５】
中間マスタイメージが他のカタログ要素でも利用されている場合（Ｓ２５２：ＹＥＳ）、第１カタログ構築部２２は、カタログ管理テーブル１００から削除対象のカタログ要素を削除し（Ｓ２５４）、当該処理を終了する（ＥＮＤ）。【０１６６】
中間マスタイメージが他のカタログ要素で使用されていない場合（Ｓ２５２：ＮＯ）、第１カタログ構築部２２は、ファイルシステム４５から、当該中間マスタイメージに係るファイルを削除する（Ｓ２５３）。そして、第１カタログ構築部２２は、カタログ管理テーブル１００から削除対象のカタログ要素を削除し（Ｓ２５４）、当該処理を終了する（ＥＮＤ）。【０１６７】
図１４は、「第２のポリシ」に係る第１カタログ構築部２２の処理のフローチャート例を示す。【０１６８】
第２のポリシは、図８に示したポリシ管理テーブル６００のレコード６０１ｂに該当する。即ち、第２のポリシは、「優先度の高いカタログ要素の構築時間が許容時間内となるように、中間マスタイメージを構築しておく」というポリシである。【０１６９】
以下、「第２のポリシ」の「ポリシ選択要求」を受けた場合のポリシ選択処理について述べる。第１カタログ構築部２２は、カタログ数を上限として、以降のステップＳ３０１〜Ｓ３０４のループ処理を実行する（Ｓ３０１）。【０１７０】
第１カタログ構築部２２は、カタログ管理テーブル１００の優先度１１５を参照して、未処理のカタログの中で優先度の高いカタログを処理対象のカタログに選択する（Ｓ３０２）。そして、第１カタログ構築部２２は、この選択した処理対象のカタログ要素に対して、図１２に示したステップＳ２０１〜Ｓ２２１の処理を実行する（Ｓ３０３）。【０１７１】
ステップＳ３０４において、第１カタログ構築部２２は、ループ回数がカタログ要素数に達した場合、又は、図１２に示したステップＳ２０３にて未使用容量が十分で無い場合、ループを抜けて当該処理を終了する（ＥＮＤ）。【０１７２】
本処理は、基本的に第１のポリシ選択時の処理に類似する。しかし、第１のポリシ選択時は、処理対象のカタログ要素を選択する順番に特に決まりが無かったのに対し、本処理は、優先度の高い順番に処理対象のカタログ要素を選択する点において相違する。これにより、図１２に示したステップＳ２０３にて未使用容量が十分で無い場合等、全てのカタログ要素に対してステップＳ３０１〜Ｓ３０４の処理ができなかった場合であっても、本処理は、優先度の高いカタログ要素に関する中間マスタイメージを構築しておくことができる。【０１７３】
以下、第２のポリシの選択中に「カタログ要素追加要求」を受けた場合のカタログ要素追加処理について述べる。第１カタログ構築部２２は、マスタイメージ管理テーブル４００を参照し、ファイルシステムに格納されている全ての中間マスタイメージを削除する（Ｓ３１）。そして、第１カタログ構築部２２は、カタログ要素追加要求がなされたカタログ要求を、カタログ管理テーブル１００に追加する（Ｓ３１２）。そして、第１カタログ構築部２２は、第２のポリシのポリシ選択処理と同様に、ステップＳ３０１〜Ｓ３０４の処理を実行して中間マスタイメージを再構築し（Ｓ３１３）、当該処理を終了する（ＥＮＤ）。【０１７４】
ステップＳ３１１において全ての中間マスタイメージを削除する理由は、第１カタログ構築部２２が、ステップＳ３１３において未使用容量が十分で無い場合等の理由によって、新たに追加された優先度の高いカタログ要素の中間マスタイメージを構築及び格納できないという可能性を回避するためである。【０１７５】
なお、第２のポリシ選択中のカタログ要素追加処理は、以下の処理であっても良い。
（第１ステップ）第１カタログ構築部２２は、カタログ要素追加要求がなされたカタログ要素をカタログ管理テーブル１００に追加する。
（第２ステップ）第１カタログ構築部２２は、何れのマスタイメージ及びスクリプトの組み合わせの中間マスタイメージを構築すべきかを判断する。このとき、第１カタログ構築部２２は、中間マスタイメージの実体は構築しない。
（第３ステップ）第１カタログ構築部２２は、新たに構築すべきと判断した中間マスタイメージの優先度と、既存の中間マスタイメージの優先度とを比較する。ここで、新たに構築すべきと判断した中間マスタイメージの優先度が高い場合は、優先度の低い既存の中間マスタイメージをファイルシステム４５から削除し、新たに構築すべきと判断した中間マスタイメージを構築し、ストレージに格納する。【０１７６】
以下、第２のポリシ選択中に「カタログ要素削除要求」を受けた場合のカタログ要素削除処理について述べる。【０１７７】
第１カタログ構築部２２は、図１３に示したステップＳ２５１〜Ｓ２５４を実行し、ファイルシステム４５から中間マスタイメージを削除する。そして、第１カタログ構築部２２は、ファイルシステム４５の未使用容量が十分であるか否かを判定する（Ｓ３２２）。【０１７８】
ファイルシステム４５の未使用容量が十分で無い場合（Ｓ３２２：ＮＯ）、第１カタログ構築部２２は、当該処理を終了する（ＥＮＤ）。【０１７９】
ファイルシステム４５の未使用容量が十分である場合（Ｓ３２２：ＹＥＳ）、第１カタログ構築部２２は、中間マスタイメージが構築されておらず、且つ、優先度の最も高いカタログ要素の中間マスタイメージを構築する（Ｓ３２３）。そして、第１カタログ管理部２２は、その中間マスタイメージをファイルシステム４５に格納して、当該処理を終了する（ＥＮＤ）。【０１８０】
図１５は、「第３のポリシ」に係る第１カタログ構築部２２の処理のフローチャート例を示す。【０１８１】
第３のポリシは、図８に示したポリシ管理テーブル６００のレコード６０１ｃに該当する。即ち、第３のポリシは、「構築頻度の高いカタログ要素の構築時間が許容時間内となるように、中間マスタイメージを構築しておく」というポリシである。【０１８２】
以下、「第３のポリシ」への「ポリシ選択要求」を受けた場合のポリシ選択処理について述べる。第１カタログ構築部２２は、マスタイメージ管理テーブル４００に基づいて、ファイルシステム４５から全ての中間マスタイメージを削除する（Ｓ４０１）。【０１８３】
そして、第１カタログ構築部２２は、カタログ要素数を上限として、以降のステップＳ４０２〜Ｓ４０５のループ処理を実行する（Ｓ４０２）。【０１８４】
第１カタログ構築部２２は、カタログ管理テーブル１００の構築頻度１１４を参照して、未処理のカタログ要素の中で、構築頻度の高いカタログ要素を処理対象のカタログ要素に選択する（Ｓ４０３）。そして、第１カタログ構築部２２は、この選択した処理対象のカタログ要素に対して、図１２に示したステップＳ２０１〜Ｓ２２１の処理を実行する（Ｓ４０４）。【０１８５】
ステップＳ４０５において第１カタログ構築部２２は、ループ回数がカタログ要素数に達した場合、又は、図１２に示したステップＳ２０３にて未使用容量が十分で無い場合、ループを抜けて当該処理を終了する（ＥＮＤ）。【０１８６】
第３のポリシのポリシ選択処理は、図１４に示した第２のポリシのポリシ選択処理に類似する。しかし、第２のポリシ選択時は、優先度の高い順番に処理対象のカタログ要素を選択していたのに対し、本処理は、構築頻度の高い順番に処理対象のカタログ要素を選択する点において相違する。【０１８７】
なお、第３のポリシのポリシ選択処理は、以下の処理であっても良い。
（第１ステップ）第１カタログ構築部２２は、ステップＳ４０２〜Ｓ４０５の処理において、実際に中間マスタイメージを構築するのではなく、構築すべき中間マスタイメージの一覧を作成する。
（第２ステップ）第１カタログ構築部２２は、その構築すべき中間マスタイメージの一覧と、既存の中間マスタイメージとを比較し、差分の中間マスタイメージを構築又は削除する。【０１８８】
以下、第３のポリシ選択中に「カタログ要素追加要求」を受けた場合のカタログ要素追加処理について述べる。第１カタログ構築部２２は、「カタログ要素追加要求」を受けた新たなカタログ要素を、カタログ管理テーブル１００に追加する（Ｓ４１１）。そして、第１カタログ構築部２２は、可能であれば、追加したカタログ要素に既存の中間マスタイメージを利用し（Ｓ４１２）、当該処理を終了する（ＥＮＤ）。【０１８９】
なお、追加したカタログ要素の構築頻度は基本的に「０」なので、この追加したカタログ要素の中間マスタイメージが構築される可能性は低い。ただし、第１カタログ構築部２２は、ストレージの未使用容量が十分な場合に、図１３のステップＳ２４２と同様の処理を実行して、追加したカタログ要素の中間マスタイメージの構築を試みても良い。【０１９０】
以下、第３のポリシ選択中に「カタログ要素削除要求」を受けた場合のカタログ要素削除処理について述べる。第１カタログ構築部２２は、図１３のステップＳ２５１〜Ｓ２５４と同様の処理を実行し（Ｓ４２１）、当該処理を終了する（ＥＮＤ）。【０１９１】
以下、第３のポリシ選択中に「カタログ要素構築要求」を受けた場合のカタログ要素構築後の処理について述べる。なぜなら、第３のポリシの場合、カタログ要素が構築された後に、各カタログ要素の構築頻度が変化し得るためである。例えば、カタログ要素構築前は更新頻度の低かったカタログ要素が、カタログ要素構築後に更新頻度が高くなったり、又はその逆となったりする。【０１９２】
当該Ｓ４３１〜Ｓ４３５の処理は、上記のＳ４０１〜Ｓ４０５の処理とほぼ同じなので、当該処理の説明を省略する。なお、カタログ要素を構築する度に当該処理を実行すると、カタログ管理サーバ１１の処理負荷が高くなってしまうので、当該処理は、定期的に実行されるとしても良い。【０１９３】
図１６は、「第４のポリシ」に係る第１カタログ構築部２２の処理のフローチャート例を示す。【０１９４】
第４のポリシは、図８に示したポリシ管理テーブル６００のレコード６０１ｄのポリシに該当する。即ち、第４のポリシは、「全てのカタログ要素の構築時間の合計ができるだけ短くなるように、中間マスタイメージを構築しておく」というポリシである。【０１９５】
以下、「第４のポリシ」の「ポリシ選択要求」を受けた場合のポリシ選択処理について述べる。第１カタログ構築部２２は、全てのカタログ要素において、マスタイメージとスクリプトの組み合わせである中間マスタイメージ候補を抽出する（Ｓ５０１）。例えば、カタログ管理テーブル１００において、第１カタログから順番に、そのカタログで使用するマスタイメージに、１番目までのスクリプト（第１スクリプト）を適用したものを第１中間マスタイメージ候補とし、２番目までのスクリプト（第１スクリプト及び第２スクリプト）を適用したものを第２中間マスタイメージ候補とする。【０１９６】
次に、第１カタログ構築部２２は、カタログ要素間で共有可能な中間マスタイメージ候補が存在するか否かを判定する（Ｓ５０２）。【０１９７】
カタログ要素間で共有可能な中間マスタイメージ候補が存在しない場合（Ｓ５０２：ＮＯ）、第１カタログ構築部２２は、当該処理を終了する（ＥＮＤ）。【０１９８】
カタログ要素間で共有可能な中間マスタイメージ候補が存在する場合（Ｓ５０２：ＹＥＳ）、第１カタログ構築部２２は、最も多く共有されている中間マスタイメージ候補を特定する（Ｓ５０３）。例えば、第１カタログ構築部２２は、中間マスタイメージ候補の各々が、幾つのカタログ要素で利用可能であるかを示す利用可能数を調べる。例えば、第１中間マスタイメージ候補が、「第１カタログ要素」、「第２カタログ要素」及び「第４カタログ要素」で利用可能な場合、第１中間マスタイメージ候補の利用可能数は「３」となる。このように、中間マスタイメージ候補の各々の利用可能数を調べ、利用可能数が最大の中間マスタイメージ候補を特定する。【０１９９】
次に、第１カタログ構築部２２は、ファイルシステム４５の未使用容量が、最も多く共有されている中間マスタイメージ候補を格納するのに十分であるか否かを判定する（Ｓ５０４）。【０２００】
未使用容量が十分で無い場合（Ｓ５０４：ＮＯ）、第１カタログ構築部２２は、当該処理を終了する（ＥＮＤ）。【０２０１】
未使用容量が十分である場合（Ｓ５０４：ＹＥＳ）、第１カタログ構築部２２は、この最も多く共有されている中間マスタイメージ候補に係る中間マスタイメージを構築し、ファイルシステム４５に格納する（Ｓ５０５）。そして、第１カタログ構築部２２は、この中間マスタイメージを他のカタログ要素でも利用できるように、カタログ管理テーブル１００及びマスタイメージ管理テーブル４００等を更新する（Ｓ５０６）。そして、第１カタログ構築部２２は、ステップＳ５０２に戻り、他にもカタログ要素間で共有可能な中間マスタイメージ候補（例えば、利用可能数が２以上のもの）が存在するか否かを判定するという処理を繰り返す。【０２０２】
以下、第４のポリシ選択中に「カタログ要素追加要求」を受けた場合のカタログ要素追加処理について述べる。第１カタログ構築部２２は、ファイルシステム４５から全ての中間マスタイメージを削除する（Ｓ５１１）。そして、第１カタログ構築部２２は、「カタログ要素追加要求」を受けた新たなカタログ要素をカタログ管理テーブル１００に追加する（Ｓ５１２）。そして、第１カタログ構築部２２は、追加したカタログ要素を含めてステップＳ５０１〜Ｓ５０６の処理を実行し、中間マスタイメージを再生成する（Ｓ５１３）。【０２０３】
なお、上記のステップＳ５１３は、以下の処理であっても良い。
（第１ステップ）第１カタログ構築部２２は、ステップＳ５０１〜Ｓ５０６の処理において、実際に中間マスタイメージを構築するのではなく、構築すべき中間マスタイメージの一覧を作成する。
（第２ステップ）第１カタログ構築部２２は、その構築すべき中間マスタイメージの一覧と、既存の中間マスタイメージとを比較し、差分の中間マスタイメージを構築又は削除する。【０２０４】
以下、第４のポリシ選択中に「カタログ要素削除要求」を受けた場合のカタログ要素削除処理について述べる。第１カタログ構築部２２は、ファイルシステム４５から全ての中間マスタイメージを削除する（Ｓ５２１）。そして、第１カタログ構築部２２は、「カタログ要素削除要求」を受けたカタログ要素を除いて、ステップＳ５０１〜Ｓ５０６の処理を実行し、中間マスタイメージを再構築する（Ｓ５２２）。【０２０５】
図１７は、「第５のポリシ」に係る第１カタログ構築部２２の処理のフローチャートの例を示す。【０２０６】
第５のポリシは、図８に示したポリシ管理テーブル６００のレコード６０１ｅに該当する。即ち、第５のポリシは、「新しいバージョンのソフトウェアを含むカタログ要素の構築時間ができるだけ短くなるように、中間マスタイメージを構築しておく」というポリシである。ここで、「バージョン」は、本実施例で示すようにソフトウェアのバージョンに着目しても良いし、ＯＳのバージョンに着目しても良い。つまり、第５のポリシのポイントは、マスタイメージに係るＯＳ又はスクリプトの内容が新しいものであるか否かに基づいて、適切な中間マスタイメージを構築することにある。【０２０７】
以下、「第５のポリシ」の「ポリシ選択要求」を受けた場合のポリシ選択処理について述べる。【０２０８】
第１カタログ構築部２２は、カタログ管理テーブル１００を参照して、同じＯＳ及びソフトウェアを含むカタログ要素を、同じソフトウェア構成のグループに分類する。ここで、第１カタログ構築部２２は、カタログ管理テーブル１００のグループ１１６を参照して、何れのカタログ要素が同じグループに属しているのかを判定しても良い。【０２０９】
例えば、ＯＳが「Ｗｉｎｄｏｗｓ（登録商標）」であり、バージョンが「１」の「Ａｐａｃｈｅ」を含むカタログ要素と、ＯＳが「Ｗｉｎｄｏｗｓ（登録商標）」であり、バージョンが「２」の「Ａｐａｃｈｅ」を含むカタログ要素とは、同じグループに分類される。しかし、ＯＳが「Ｌｉｎｕｘ（登録商標）」であり、バージョンが「１」の「Ａｐａｃｈｅ」を含むカタログ要素は、このグループに分類されない。同じく、ＯＳが「Ｗｉｎｄｏｗｓ（登録商標）」であり、「Ａｐａｃｈｅ」及び「Ｔｏｍｃａｔ」の両方を含むカタログ要素も、このグループに分類されない。【０２１０】
例えば、ＯＳの情報、ソフトウェア及びそのバージョンの情報は、それぞれマスタイメージ管理テーブル４００のゲストＯＳ名４２１ｂ、スクリプト管理テーブル２００のソフトウェア名２２１ａ及びバージョン２２１ｂから知ることができる。【０２１１】
図１７の説明に戻り、第１カタログ構築部２２は、各々のグループにおいて、グループ内に属するカタログ要素の中で、バージョン２２１ｂが最新のカタログを選択する（Ｓ６０２）。なお、１つのカタログ要素に２つ以上のソフトウェアが含まれる場合、第１カタログ構築部２２は、何れかのソフトウェアのバージョンが最新であるカタログ要素を全て（複数）選択しても良い。【０２１２】
そして、第１カタログ構築部２２は、各々のグループにおいて、ステップＳ６０２で選択したカタログ要素に関する中間マスタイメージを構築する。第１カタログ構築部２２は、図１２に示したステップＳ２０１〜Ｓ２２１、又は図１６に示したＳ５０１〜Ｓ５０６と同様の処理によって、中間マスタイメージを構築する。そして、第１カタログ構築部２２は、その構築した中間マスタイメージを用いて各テーブルを更新する（Ｓ６０４）。そして、第１カタログ構築部２２は、可能であれば、その構築した中間マスタイメージを他のカタログ要素でも利用できるようにし（Ｓ６０５）、当該処理を終了する（ＥＮＤ）。【０２１３】
以下、第５のポリシ選択中に「カタログ要素追加要求」を受けた場合のカタログ要素追加処理について述べる。カタログ要素追加処理では、第１カタログ要素構築部２２は、追加対象のカタログ要素を適切なグループに分類した後、そのグループの中で、追加対象のカタログ要素に含まれるソフトウェアは最新であるか否かを判定し、必要に応じて中間マスタイメージを再構築する。以下、当該処理を詳細に説明する。【０２１４】
第１カタログ構築部２２は、追加対象のカタログ要素をカタログ管理テーブル１００に追加する（Ｓ６１１）。そして、第１カタログ構築部２２は、その追加したカタログ要素の属するべきグループが既に存在するか否かを判定する（Ｓ６１２）。【０２１５】
追加したカタログ要素が属するべきグループが存在しない場合（Ｓ６１２：ＮＯ）、第１カタログ構築部２２は、新たにグループを作成し、当該追加したカタログ要素をそのグループに分類して当該処理を終了する（ＥＮＤ）。又は、第１カタログ構築部２２は、追加したカタログ要素に対して、中間マスタイメージ構築処理（例えば、Ｓ２４２）を実行しても良い。【０２１６】
追加したカタログ要素が属するべきグループが既に存在する場合（Ｓ６１２：ＹＥＳ）、第１カタログ構築部２２は、そのグループの中で、追加したカタログ要素に含まれるソフトウェアのバージョンが、他のカタログ要素に含まれるソフトウェアのバージョンよりも新しいか否かを判定する（Ｓ６１３）。【０２１７】
他のカタログ要素に含まれるソフトウェアのバージョンの方が新しい場合（Ｓ６１３：ＮＯ）、第１カタログ構築部２２は、当該処理を終了する（ＥＮＤ）。【０２１８】
追加したカタログ要素に含まれるソフトウェアのバージョンの方が新しい場合（Ｓ６１３：ＹＥＳ）、第１カタログ構築部２２は、そのグループにおいて最新でなくなったソフトウェアのバージョンを含むカタログ要素の中間マスタイメージが削除可能であるか否かを判定する（Ｓ６１４）。例えば、第１カタログ構築部２２は、追加したカタログ要素が分類される以前において、最新バージョンのソフトウェアを含んでいたカタログ要素に関する中間マスタイメージが、そのグループの中で他のカタログ要素に利用されているか否かを判定する。この中間マスタイメージは、他のカタログ要素に利用されていない場合に削除可能であり、他のカタログ要素に利用されている場合に削除不可能となる。なぜなら、或るグループにおいて、新たなカタログ要素が追加される以前に最新バージョンのソフトウェアを含んでいたカタログ要素の中間マスタイメージは、新たなカタログ要素が追加されることによって最新ではなくなり、不要となるためである。【０２１９】
最新でなくなった中間マスタイメージが削除不可能な場合（Ｓ６１４：ＮＯ）、第１カタログ構築部２２は、ステップＳ６１６へ進む。【０２２０】
最新でなくなった中間マスタイメージが削除可能な場合（Ｓ６１４：ＹＥＳ）、第１カタログ構築部２２は、その最新でなくなった中間マスタイメージを削除する。さらに、第１カタログ構築部２２は、その最新でなくなった中間マスタイメージを利用していたカタログ要素が、その最新でなくなった中間マスタイメージを利用せずに構築できるように、各テーブルの状態を戻し（Ｓ６１５）、ステップＳ６１６へ進む。第１カタログ構築部２２は、マスタイメージ管理テーブル４００の基礎マスタイメージ情報４１４及び適用済みスクリプト４１５を参照することにより、その最新でなくなった中間マスタイメージを利用しない状態に戻すことができる。【０２２１】
ステップＳ６１６において、第１カタログ構築部２２は、Ｓ２４２と同様の処理によって、追加したカタログ要素の中間マスタイメージを構築する（Ｓ６１６）。そして、第１カタログ構築部２２は、その構築した中間マスタイメージを用いて各テーブルを更新する（Ｓ６１７）。そして、第１カタログ構築部２２は、可能であれば、その構築した中間マスタイメージを他のカタログ要素でも利用できるようにし（Ｓ６１８）、当該処理を終了する（ＥＮＤ）。【０２２２】
以下、第５のポリシ選択中に「カタログ要素削除要求」を受けた場合のカタログ要素削除処理について述べる。第１カタログ構築部２２は、Ｓ２５１〜Ｓ２５４と同様の処理によって、削除対象のカタログ要素を削除する（Ｓ６２１）。そして、第１カタログ構築部２２は、削除したカタログ要素が自己の属するグループで最新バージョンのソフトウェアを含んでいたか否かを判定する（Ｓ６２２）。【０２２３】
例えば、第１カタログ構築部２２は、削除したカタログ要素が中間マスタイメージを含むか否かによって、ステップＳ６２２の判定を行っても良い。この場合、第１カタログ構築部２２は、ステップＳ６２２の判定を、削除したカタログ要素に中間マスタイメージが含まれていた場合に肯定的（ＹＥＳ）とし、削除したカタログ要素に中間マスタイメージが含まれていない場合に否定的（ＮＯ）としても良い。【０２２４】
例えば、第１カタログ構築部２２は、そのグループにおいて、削除したカタログ要素以外に中間マスタイメージを含むカタログ要素が存在するか否かによって、ステップＳ６２２の判定を行っても良い。この場合、第１カタログ構築部２２は、ステップＳ６２２の判定を、削除したカタログ要素以外に中間マスタイメージを含むカタログ要素が存在する場合に否定的（ＮＯ）とし、削除したカタログ要素以外に中間マスタイメージを含むカタログ要素が存在しない場合に肯定的（ＹＥＳ）としても良い。【０２２５】
削除したカタログ要素が、自己の属するグループで最新バージョンのソフトウェアを含んでいない場合（Ｓ６２２：ＮＯ）、又はそのグループに削除したカタログ要素以外のカタログが存在しない場合、第１カタログ構築部２２は、当該処理を終了する（ＥＮＤ）。【０２２６】
削除したカタログ要素が、自己の属するソフトウェア構成グループで最新バージョンのソフトウェアを含んでいる場合（Ｓ６２２：ＹＥＳ）、第１カタログ構築部２２は、次の処理を行う。つまり、第１カタログ構築部２２は、そのグループにおいて、削除したカタログ要素以外で最新バージョンのソフトウェアを含むカタログ要素を特定し、Ｓ２４２と同様の処理によって、その特定したカタログ要素に関する中間マスタイメージを構築する（Ｓ６２３）。【０２２７】
そして、第１カタログ構築部２２は、その構築した中間マスタイメージを用いて各テーブルを更新する（Ｓ６２４）。そして、第１カタログ構築部２２は、可能であれば、その構築した中間マスタイメージを他のカタログ要素でも利用できるようにし（Ｓ６２５）、当該処理を終了する（ＥＮＤ）。なお、第１カタログ構築部２２は、ステップＳ６２５の後に、ファイルシステム４５の未使用容量が十分にある場合、更に中間マスタイメージを構築する処理を実行しても良い。【０２２８】
図１８は、マスタイメージ監視部２３の処理のフローチャート例を示す。【０２２９】
マスタイメージ監視部２３は、マスタイメージに対して変更があった場合、そのマスタイメージから派生し得る中間マスタイメージを再構築する。これにより、マスタイメージ監視部２３は、マスタイメージの一貫性を保つ。以下、当該処理を詳細に説明する。【０２３０】
マスタイメージ監視部２３は、ＡＰＩ３２を利用してマスタイメージに対する更新を監視する（Ｓ７０１）、そして、マスタイメージ監視部２３は、マスタイメージに対する更新を検知した場合、更新されたマスタイメージから派生している１又は２以上の中間マスタイメージを、マスタイメージ管理テーブル４００から抽出する。【０２３１】
例えば、マスタイメージ監視部２３は、第２マスタイメージの更新を検知した場合、マスタ管理テーブル１４００の基礎マスタイメージ名１１４１ａを参照し、更新されたマスタイメージを含む中間マスタイメージを抽出する。【０２３２】
そして、マスタイメージ監視部２３は、その抽出した中間マスタイメージの各々を順次処理対象として、以下のループ処理（Ｓ７０３〜Ｓ７０７）を実行する。【０２３３】
マスタイメージ監視部２３は、当該ループの処理対象の中間マスタイメージを再構成する（Ｓ７０４）。図６のマスタイメージ管理テーブル４００において、第２マスタイメージが更新された場合、第２中間マスタイメージは再構築される必要がある。マスタイメージ監視部２３は、第２マスタイメージをコピーし、そのコピーした第２マスタイメージに、適用済スクリプトリスト１４５０の示す第１スクリプトを適用して、第２中間マスタイメージを再構築しても良い。【０２３４】
そして、マスタイメージ監視部２３は、この中間マスタイメージの再構築に成功したか否かを判定する（Ｓ７０５）。マスタイメージ監視部２３は、何らかのエラーが発生した場合、中間マスタイメージの再構築を失敗と判定しても良い。マスタイメージ監視部２３は、属性１４３０が「Ｔｈｉｎ」の場合であって、スクリプトを提供した場合に、ファイルシステム４５の未使用容量が不十分であったならば、中間マスタイメージの再構築を失敗と判定しても良い。【０２３５】
この中間マスタイメージの再構築に失敗した場合（Ｓ７０５：ＮＯ）、マスタイメージ監視部２３は、当該処理を終了する（ＥＮＤ）。マスタイメージ監視部２３は、この終了を異常終了としても良い。このとき、マスタイメージ監視部２３は、失敗の理由及び／又は再駆逐の処理の結果等をＧＵＩに表示しても良い。【０２３６】
また、中間マスタイメージの再構築に失敗した場合、マスタイメージ監視部２３は、その中間マスタイメージを利用していたカタログ要素を、その中間マスタイメージを再構築する以前の状態に戻し、引き続き、残りの抽出した中間マスタイメージに対して処理を継続しても良い。つまり、マスタイメージ監視部２３は、ステップＳ６１５と同様の処理によって、再構築に失敗した中間マスタイメージを、元のマスタイメージとスクリプトの組み合わせに戻しても良い。【０２３７】
この中間マスタイメージの再構築に成功した場合（Ｓ７０５：ＹＥＳ）、マスタイメージ監視部２３は、この再構築した中間マスタイメージを用いて、各テーブルを更新すると共に、再構築する以前の中間マスタイメージを削除する（Ｓ７０６）。なお、マスタイメージ監視部２３は、再構築する以前の中間マスタイメージの削除を、ステップＳ７０４より以前で実行しても良い。この場合、カタログ管理テーブル１００は、ステップＳ６１５と同様の処理によって、一度中間マスタイメージを利用する以前の状態に戻されても良い。ファイルシステム４５の容量を有効に活用するためである。【０２３８】
次に、ステップＳ７０７において、マスタイメージ監視部２３は、ループ処理を完了した場合、当該処理を終了し（ＥＮＤ）、ループ処理が残っている場合、ステップＳ７０３に戻り、次の処理対象に対して同様の処理を行う。【０２３９】
図１９は、ＧＵＩの画面の例を示す。【０２４０】
ＧＵＩ９３００は、カタログ管理サーバ１１で生成され、通信ネットワーク１８を介して、管理端末１４に表示されても良い。ユーザ（管理者）は、管理端末１４に表示されたＧＵＩ９３００を介して、ポリシを指定しても良い。このＧＵＩ９３００は、図１８とは異なるレイアウト及び／又は表示態様であっても良い。【０２４１】
ＧＵＩ９３００は、ユーザからポリシ及びそのポリシの関連情報等の入力を受け付ける入力ペイン９３１０と、ユーザからポリシに基づく処理の実行指示等を受け付けるボタン９３９１、９３９２と、ポリシに基づく処理の実行結果等を表示する表示ペイン９３５０とを有する。【０２４２】
入力ペイン９３１０は、ポリシ管理テーブル６００に基づく選択肢を提示するコンポーネント（ラベル９３２１及び選択肢を提示するコンボボックス９３２２）を有する。【０２４３】
入力ペイン９３１０は、ストレージ（ファイルシステム４５）の容量の上限値を設定するためのコンポーネント（チェックボックス９３３１、ラベル９３３２、テキストボックス９３３３、及びテキスト９３３４）を有する。ユーザがチェックボックス９３３１をチェックし、テキストボックス９３３３に所定の数値を入力すると、カタログ管理サーバ１１は、中間マスタイメージの構築に使用するストレージ容量の上限値を、その入力された値としても良い。カタログ管理サーバ１１は、上限値が指定された場合、「ストレージ容量テーブル５００の未使用容量＝テキストボックス９３３３に入力された数値−ストレージの使用済み容量」としても良い。ユーザがチェックボックス９３３１をチェックしなかった場合、カタログ管理サーバ１１は、ストレージ（ファイルシステム４５）の未使用容量の全てを中間マスタイメージの構築及び格納に用いるとしても良い。【０２４４】
入力ペイン９３１０は、選択されたポリシに基づいて、カタログ要素に要件を設定するため入力領域を含む対象カタログ一覧９３４０を有する。【０２４５】
ポリシ選択９３２１のコンボボックス９３２２にて「許容時間指定」が選択された場合、対象カタログ一覧９３４０には、許容時間９３４２の入力領域が表示されても良い。更に、対象カタログ一覧９３４０には、カタログ管理テーブル１００の構築頻度１１４及び／又は優先度１１５に対応する入力領域（不図示）が表示されても良い。更に、対象カタログ一覧９３４０には、カタログ管理テーブル１００の項目に対応するカタログ要素名９３４１（カタログ要素名１１１に対応）、マスタイメージ名９３４３（マスタイメージ名１１２に対応）、及び適用スクリプトリスト９３４４（適用スクリプトリスト１１７に対応）が表示されても良い。【０２４６】
入力ペイン９３１０は、選択されたポリシに関連するパラメータの指定を受け付けるオプション領域９３１１等を有しても良い。【０２４７】
表示ペイン９３５０は、入力ペイン９３１０から入力された情報に基づいて生成された（又は生成される）中間マスタイメージの一覧を表示する中間マスタイメージ一覧９３６０と、中間マスタイメージを利用して再構築されたカタログの一覧を示す再構築後カタログ一覧９３７０を有する。【０２４８】
中間マスタイメージ一覧９３６０には、マスタイメージ管理テーブル４００に対応する中間マスタイメージ名９３６１（マスタイメージ名４１１に対応）、基礎マスタイメージ名９３６２（基礎マスタイメージ名４２１ａに対応）、及び適応済みスクリプトリスト９３６３（適用済みスクリプトリスト４１５に対応）が表示されても良い。【０２４９】
再構築後カタログ一覧９３７０には、第１カタログ管理部２１及び第１カタログ構築部２２の処理が実行された後のカタログ管理テーブル１００に対応するカタログ要素名９３７１（カタログ要素名１１１に対応）、マスタイメージ名９３７２（マスタイメージ名１１２に対応）、及び適用スクリプトリスト９３７３（適用スクリプトリスト１１７に対応）が表示されても良い。【０２５０】
カタログ管理サーバ１１は、再構築確認ボタン９３９１が押下されると、実際にカタログ要素の再構築を実行する前に、入力ペイン９３１０に入力された情報に基づくカタログ管理部２１及びカタログ構築部２２の処理をシミュレーションし、その結果を表示しても良い。【０２５１】
カタログ管理サーバ１１は、再構築実行ボタン９３９２が押下されると、入力ペイン９３１０に入力された情報に基づいて、実際のカタログ要素の再構築を実行しても良い。
【実施例２】
【０２５２】
実施例１は、上述のとおり、中間マスタイメージを構築することによって、カタログ要素構築に要する時間を削減することができる。しかし、中間マスタイメージを多く構築すると、その分、ファイルシステム４５の容量を消費してしまう。【０２５３】
そこで、実施例２では、中間マスタイメージを構築することによる効果と、ファイルシステム４５の容量を消費することのコストと、の間のトレードオフを最適化問題に帰着する方法について述べる。なお、以降の処理は、カタログ管理サーバ１１で実行されても良いし、他の装置で実行されても良い。【０２５４】
集合Ｘは、カタログ管理テーブル１００から構築され得る中間マスタイメージの組み合せを網羅する集合である。変数ｘは、集合Ｘに属する中間マスタイメージの組み合わせの各々（つまりｘ∈Ｘ）である。すなわち、変数ｘは、｛第１中間マスタイメージ｝又は｛第１中間マスタイメージ，第２中間マスタイメージ｝等のような、或る１つの組み合わせであり、変数ｘの取り得る全ての中間マスタイメージの組み合わせを含むものが、集合Ｘである。【０２５５】
カタログ管理サーバ１１は、例えば、制約関数の「ｇ（ｘ）≦（使用可能なストレージ容量の上限値）」を満たし、且つ、目的関数の「Ｃ１×ｆ（ｘ）−Ｃ２×ｇ（ｘ）」の値を最大化する変数ｘを求める。【０２５６】
ここで、ｆ（ｘ）は、変数ｘの示す中間マスタイメージの組み合わせによって得られる、カタログ要素構築に要する時間から削減された時間（以下「カタログ要素構築削減時間」という）である。ｇ（ｘ）は、変数ｘの示す中間マスタイメージの組み合わせによって消費されるストレージ容量（以下「ストレージ消費量」という）である。【０２５７】
ｆ（ｘ）は、変数ｘの示す中間マスタイメージを各カタログ要素に適用した場合における、各カタログ要素のカタログ要素構築削減時間の総和であっても良い。また、ｆ（ｘ）は、実施例１に示した各ポリシであっても良い。ｇ（ｘ）は、生成した中間マスタイメージのサイズの総和であっても良い。【０２５８】
定数Ｃ１及びＣ２は、ユーザによって指定された所定の定数であっても良い。定数Ｃ１は、中間マスタイメージのカタログ要素構築削減時間による効果であっても良い。定数Ｃ１の単位は、「料金／時間」あっても良い。【０２５９】
定数Ｃ２は、中間マスタイメージのストレージ消費量によるコストであっても良い。定数Ｃ２の単位は、「料金／ストレージの単位容量」であっても良い。【０２６０】
つまり、カタログ管理サーバ１１は、少なくとも、Ｃ１及びＣ２と、使用可能なストレージ容量の上限とを指定し、有限である集合Ｘの各要素ｘ∈Ｘにおいて、目的関数を最大化する変数ｘを求めることにより、この最適化問題を解くことができる。カタログ管理サーバ１１は、この最適化問題を高速に解くために、離散最適化問題等の各種計算手法を用いても良い。
【実施例３】
【０２６１】
実施例１においてカタログ管理サーバ１１は、事前に全てのカタログ要素について中間マスタイメージの構築可否を判断してから、予め中間マスタイメージを構築し、ストレージ（ファイルシステム４５）に格納していた。これにより、実施例１におけるカタログ管理サーバ１１は、ユーザ（管理者等）からのカタログ要素構築要求に対する応答性能を高めている。【０２６２】
実施例３では、ユーザからのカタログ要素構築要求を受けてから、中間マスタイメージを構築するカタログ管理サーバについて述べる。【０２６３】
実施例１に係るカタログ管理サーバ１１は、最後に中間マスタイメージを格納しておくために十分な未使用容量を必要としていた。これに対し、実施例３に係るカタログ管理サーバは、構築した中間マスタイメージを、最後のカタログ要素の構築に利用してしまうため、最後に中間マスタイメージを格納しておくための未使用容量を必要としない。【０２６４】
図２０は、実施例３の概要を説明するための概念図である。【０２６５】
第１の方法は、ユーザから第１カタログ要素と第２カタログ要素の構築要求を受けてから、それらのカタログ要素を順番に構築する方法である。第２の方法は、ユーザから第１カタログ要素と第２カタログ要素の構築要求を受けてから、中間マスタイメージを構築及び利用して、それらのカタログ要素を構築する方法である。ここで、第１カタログ要素は、第１マスタイメージに、第１スクリプトと第２スクリプトを適用したものとする。第２カタログ要素は、第１マスタイメージに、第１スクリプトと第２スクリプトを適用したものとする。なお、第１マスタイメージの属性は「Ｔｈｉｃｋ」とする。【０２６６】
図２０の上段は、第１の方法による第１カタログ要素及び第２カタログ要素の構築に要する時間を示す。第１の方法の場合、第１カタログ要素及び第２カタログ要素の構築に要する時間は、第１カタログ要素構築処理９４１０の時間と、第２カタログ要素構築処理９４２０の時間との合計（図２０における（ｔ２−ｔ０）の時間）である。【０２６７】
第１カタログ要素構築処理９４１０の時間は、第１マスタイメージのコピーに要する時間と、そのコピーした第１マスタイメージに第１スクリプト及び第２スクリプトを適用するのに要する時間との合計である。【０２６８】
第２カタログ要素構築処理９４２０の時間は、第１マスタイメージのコピーに要する時間と、そのコピーした第１マスタイメージに第１スクリプト及び第２スクリプトを適用するのに要する時間との合計である。【０２６９】
図２０の下段は、第２の方法による第１カタログ要素及び第２カタログ要素の構築に要する時間を示す。第２の方法の場合、第１カタログ要素及び第２カタログ要素の構築に要する時間は、第２中間マスタイメージ構築処理９４３０の時間と、第１カタログ要素構築処理９４４０の時間と、第２カタログ要素構築処理９４５０の時間との合計（図２０における（ｔ１−ｔ０）の時間）である。第２中間マスタイメージ構築処理５４３０の時間は、第１マスタイメージのコピーに要する時間と、そのコピーした第１マスタイメージに第１スクリプトを適用するのに要する時間との合計である。【０２７０】
第１カタログ要素構築処理９４４０の時間は、第２中間マスタイメージ構築処理９４３０で構築した第２中間マスタイメージのコピーに要する時間と、そのコピーした第２中間マスタイメージに第２スクリプトを適用するのに要する時間との合計である。【０２７１】
第２カタログ要素構築処理９４５０の時間は、第２中間マスタイメージ構築処理９４３０で構築した第２中間マスタイメージそのものに、第３スクリプトを適用するのに要する時間である。【０２７２】
つまり、第２の方法の第２カタログ要素構築処理９４５０は、第１の方法の第２カタログ要素構築処理９４２０と比較して、第１マスタイメージをコピーする処理、及び第１マスタイメージに第１スクリプトを適用する処理を実行する必要がない。したがって、その分、全てのカタログ要素の構築に要する時間を時間Δｔ（図２０における時間９４６０）の分、削減することができる。なお、厳密には、第２カタログ要素構築処理９４５０において削減される時間は、第１マスタイメージのコピーに要する時間ではなく、第２中間マスタイメージのコピーに要する時間であるが、通常、時間Δｔが削減されることに変わりはない。【０２７３】
図２１は、実施例３に係るカタログ管理サーバの構成の例を示す。【０２７４】
ここでは、図１に示したカタログ管理サーバ１１と同じ要素については、同一の符号を付して説明を省略する。カタログ管理サーバ１１−２は、第２カタログ管理部２１−２と、第２カタログ構築部２２−２と、マスタイメージ監視部２３と、記憶部２４とを有する。カタログ管理サーバ１１−２は、記憶部２４に、カタログ管理テーブル１００と、スクリプト管理テーブル２００と、実行時間管理テーブル３００と、カタログ構築処理テーブル７００と、中間マスタイメージ管理テーブル８００とを有する。【０２７５】
図２２は、カタログ構築処理テーブル７００の例を示す。【０２７６】
カタログ構築処理テーブル７００は、ユーザ（管理者等）からカタログ要素構築要求のあったカタログ要素の一覧を管理する。カタログ管理サーバ１１−２は、このカタログ構築処理テーブル７００上から順番にカタログ要素構築処理を実行する。カタログ構築処理テーブル７００には、複数の同じカタログ要素が存在しても良い。【０２７７】
カタログ構築処理テーブル７００は、データ項目として、カタログ要素の名称等が格納される構築名７１１と、マスタイメージの名称等が格納される対象マスタイメージ７１２と、スクリプトの名称等が格納される適用スクリプトリスト７１３とを有する。【０２７８】
構築名７１０には、カタログ要素又は中間マスタイメージを識別するための名称が格納される。【０２７９】
対象マスタイメージ７１２は、マスタイメージの名称等を格納する処理対象７２１と、マスタイメージに対する処理内容等を格納する処理内容７２２とを有する。処理対象７２１には、カタログ要素又は中間マスタイメージを構築するための基礎となるマスタイメージの名称等が格納される。処理内容７２２には、処理対象７２１の示すマスタイメージに対して実行される処理の内容が格納される。例えば、処理内容７２２が「コピー」の場合、処理対象７２１の示すマスタイメージは、コピーされて利用される。例えば、処理内容７２２が「使用」の場合、対象７２１の示すマスタイメージは、コピーされずにそのまま使用される。【０２８０】
対象マスタイメージ７１２は、更なるデータ項目として、「スナップショット」を有しても良い。スナップショットを用いる場合、カタログ管理サーバ１１−２は、マスタイメージに対する差分イメージを別に管理する。そして、カタログ管理サーバ１１−２は、差分イメージを有する場合はその差分イメージを、差分イメージを有さない場合はマスタイメージを参照する。マスタイメージ又は中間マスタイメージのスナップショットは、ストレージの未使用容量を消費しない。その結果、コピーに要する時間は、通常発生しない（構成の変更に基づく時間は発生する可能性がある）。そして、スクリプトを適用して差分が発生した場合は、その分だけストレージの未使用容量を消費する。なお、スナップショットは、実施例３に限らず、上述の実施例１及び実施例２、並びに後述の実施例４に適用しても良い。【０２８１】
適用スクリプトリスト７１３には、処理対象７２１の示すマスタイメージ又は中間マスタイメージに対して適用するスクリプトの名称及びその順番が格納される。なお、適用スクリプトリスト７１３には、実施例１の場合と同様、オペレータの手動の処理が格納されても良い。【０２８２】
図２２に示すカタログ構築テーブル７００のレコード７０１ａは、「第１マスタイメージ」を「コピー」して、「第１スクリプト」と「第２スクリプト」を適用することによって、「第１カタログ要素」が構築されることを示す。【０２８３】
図２３は、中間マスタイメージ管理テーブル８００の例を示す。【０２８４】
中間マスタイメージ管理テーブル８００は、カタログ要素構築処理の途中で構築される中間マスタイメージを管理する。中間マスタイメージ管理テーブル８００は、データ項目として、中間マスタイメージの名称等を格納する中間マスタイメージ名８１１と、中間マスタイメージの基礎となるマスタイメージの情報等を格納する基礎マスタイメージ情報８１２と、スクリプトの名称等を格納する適用済みスクリプトリスト８１３とを有する。【０２８５】
中間マスタイメージ名８００には、カタログ管理サーバ１１−２において構築された中間マスタイメージを識別可能な名称等が格納される。【０２８６】
基礎マスタイメージ情報８１２は、基礎となったマスタイメージの名称等を格納する基礎マスタイメージ名８２１と、ゲストＯＳの名称等を格納するゲストＯＳ名８２２とを有する。【０２８７】
適用済みスクリプト８１３には、基礎マスタイメージ名８２１の示すマスタイメージに適用されたスクリプトの名称及びその順番が格納される。【０２８８】
例えば、図２３に示す中間マスタイメージ管理テーブル８００のレコード７０１ａは、「第２中間マスタイメージ」が、「第２マスタイメージ」に「第３スクリプト」を適用して構築されたものであり、この第２中間マスタイメージが、ゲストＯＳとして「Ｌｉｎｕｘ（登録商標）」を提供することを示す。【０２８９】
図２４は、実施例３に係る第２カタログ管理部の処理のフローチャートの例を示す。【０２９０】
第２カタログ管理部は、ユーザからカタログ要素構築要求を受けると、カタログ構築処理テーブル７００を生成する（Ｓ８０１）。この時点において、カタログ構築処理テーブル７００には、ユーザから要求されたカタログ要素が含まれ、中間マスタイメージは含まれない。例えば、第２カタログ管理部は、ユーザから第１カタログ要素及び第２カタログ要素を各々１つずつ構築する要求を受けたとする。この場合、第２カタログ管理部２１−２は、カタログ構築処理テーブル７００に、第１カタログ要素及び第２カタログ要素を各々１つずつ含むテーブルを生成する。【０２９１】
そして、第２カタログ構築部２２−２が、カタログ構築処理テーブル７００を更新する（Ｓ８０２）。この処理の詳細については後述するが、当該処理の結果、更新後のカタログ構築処理テーブル７００には、カタログ要素を構築する順番及び構築すべき中間マスタイメージ等の情報が格納される。ここで、第２カタログ構築部２２−２は、後の処理で用いるために、更新される前のカタログ構築処理テーブル７００をコピーしておく。【０２９２】
そして、第２カタログ管理部２１−２は、第２カタログ構築部２２−２によって更新されたカタログ構築処理テーブル７００の結果を、ＧＵＩを介して、ユーザ（管理者等）に表示しても良い。このＧＵＩの例については後に図２６に示すが、ユーザは、この結果を参照して、中間マスタイメージを利用してカタログ要素を構築すべきか否かを判断しても良い（Ｓ８０３）。【０２９３】
ユーザから中間マスタイメージを利用しないとの判断を受けた場合（Ｓ８０３：ＮＯ）、第２カタログ管理部２１−２は、更新する前のカタログ構築処理テーブル７００に基づいて、上述の第１の方法でカタログ要素を構築し（Ｓ８０４）、当該処理を終了する（ＥＮＤ）。【０２９４】
ユーザから中間マスタイメージを利用するとの判断を受けた場合（Ｓ８０３：ＹＥＳ）、第２カタログ管理部２１−２は、更新後のカタログ構築処理テーブル７００に基づいて、上述の第２の方法によって、次のようにカタログ要素を構築する。【０２９５】
つまり、第２カタログ管理部は、カタログ構築処理テーブル７００に格納されているレコードの数だけ、以降のループ処理Ｓ８０５〜Ｓ８１２を繰り返す。【０２９６】
まず、第２カタログ管理部２１−２は、カタログ構築処理テーブル７００における未処理のレコードの内、先頭のレコードを処理対象とする（Ｓ８０６）。【０２９７】
そして、第２カタログ管理部２１−２は、処理対象のレコードのカタログ要素構築処理を実行する（Ｓ８０７）。第２カタログ管理部２１−２は、処理対象のレコードの内容に基づいて、マスタイメージを準備しても良い。対象マスタイメージ７１２の処理内容７２２が「コピー」ならば、処理対象７２１のマスタイメージ又は中間マスタイメージをコピーしても良い。処理内容７２２が「使用」ならば、処理対象７２１のマスタイメージ又は中間マスタイメージをそのまま使用しても良い。【０２９８】
そして、第２カタログ管理部２１−２は、上記のステップＳ８０７に要した時間（実行時間）を計測し、実行時間管理テーブル３００を更新する（Ｓ８０８）。なお、第２カタログ管理部２１−２は、ＧＵＩ画面等に、カタログ要素構築処理の進捗及び終了予定時間等を表示しても良い。【０２９９】
そして、第２カタログ管理部２１−２は、処理対象のレコードにおいて、処理対象７２１が「中間マスタイメージ」であり、且つ処理内容７２２が「コピー」であるか否かを判定する（Ｓ８０９）。処理対象７２１が「中間にマスタイメージ」でない、又は処理内容７２２が「コピー」でない場合（Ｓ８０９：ＮＯ）、第２カタログ管理部２１−２は、ステップＳ８１２に進む。【０３００】
処理対象７２１が「中間マスタイメージ」であり、且つ処理内容７２２が「コピー」である場合（Ｓ８０９：ＹＥＳ）、第２カタログ管理部２１−２は、実行時間管理テーブル３００を参照し、次の判定を行う。つまり、第２カタログ管理部２１−２は、「中間マスタイメージ」をコピーした方がカタログ要素の構築に要する時間が短くなるのか、或いは、「中間マスタイメージ」をコピーせずに「元のマスタイメージ」に「スクリプト」を適用した方がカタログ要素の構築に要する時間が短くなるのか、を判定する（Ｓ８１０）。【０３０１】
このような判定は、属性４１３が「Ｔｈｉｎ」の場合に有効である。属性４１３が「Ｔｈｉｃｋ」のマスタイメージは、サイズは変わらないため、コピーに要する時間も変わらない。しかし、属性４１３が「Ｔｈｉｎ」のマスタデータは、通常、スクリプトを適用することによってサイズが大きくなるため、コピーに要する時間も長くなる。よって、属性４１３が「Ｔｈｉｎ」のマスタイメージは、中間マスタイメージに置き換える前の元のマスタイメージをコピーしてスクリプトを適用した方が、カタログ要素の構築に要する時間が短くなる場合がある。【０３０２】
中間マスタイメージのコピーに要する時間は、「以前に計測した元のマスタイメージ等のコピーに要した時間×（構築後の中間マスタイメージのサイズ／元のマスタイメージ等のサイズ）」によって求められても良い。また、上述のＳ８１０の判定において、第２カタログ管理部２１−２は、オペレータ等による手動処理に要する時間、及び／又は設定の確認に要する時間等を含めても良い。【０３０３】
図２４の説明に戻る。「中間マスタイメージ」をコピーした方がカタログ要素の構築に要する時間が短くなる（又は同一の）場合（Ｓ８１０：ＮＯ）、第２カタログ管理部２１−２は、ステップＳ８１２に進む。【０３０４】
「中間マスタイメージ」をコピーした方がカタログ要素の構築に要する時間が長くなる場合（Ｓ８１０：ＹＥＳ）、第２カタログ管理部２１−２は、カタログ構築処理テーブル７００の処理対象のレコードにおける「中間マスタイメージ」を「コピー」又は「使用」する処理を、「元のマスタイメージ」に「スクリプト」を適用する処理に戻し（Ｓ８１１）、ステップＳ８２１に進む。【０３０５】
ステップＳ８１２において第２カタログ管理部２１−２は、未処理のレコードが存在する場合、ループ処理の先頭に戻り、未処理のレコードが存在しない場合、当該処理を終了する（ＥＮＤ）。【０３０６】
例えば、図２２のレコード７０１ｄにおいて、「第１中間マスタイメージ」のコピーに要する時間が、第３マスタイメージのコピーに要する時間と、その第３マスタイメージに第３スクリプトを適用するのに要する時間との合計よりも遅いとする。この場合、第２カタログ管理部２１−２は、「第１中間マスタイメージ」を利用しているレコード７０１ｅにおいて、処理対象７２１を「第３マスタイメージ」に、処理内容７２２を「コピー」に置き換える。更に、第２カタログ管理部２１−２は、適用スクリプトリスト７１３の１番目７２３ａに「第３スクリプト」を挿入する。なお、第２カタログ管理部２１−２は、処理内容７２２が「使用」の場合は、中間マスタイメージのコピーに要する時間が発生せず、中間マスタイメージを有効に活用できるため、そのレコードを元の構成に戻さなくても良い。【０３０７】
なお、ステップＳ８０３において、第２の方法に基づいて実行するか（ステップＳ８０５に進むか）、或いは、第１の方法に基づいて実行するか（ステップＳ８０４に進むか）を、ユーザに選択させても良い。【０３０８】
また、上述のようにカタログ要素構築処理の順番を先に全て決めておき、その順番にカタログ要素を構築しても良いし、以下のようにカタログ要素を構築しても良い。【０３０９】
（第１ステップ）第２カタログ構築部２１−２は、カタログ構築処理テーブル７００を更新する。そして、第２カタログ管理部は、以下の第２ステップから第３ステップのループ処理を実行する。
（第２ステップ）第２カタログ管理部２１−２は、カタログ構築処理テーブル７００における未処理のレコードの内、先頭のレコードを処理対象とし、レコードのカタログ要素構築処理を実行すると共に、その構築処理に要した時間（実行時間）を計測する。
（第３ステップ）第２カタログ構築部２１−２は、この計測された実行時間に基づいて、カタログ構築処理テーブル７００における、構築済みのカタログ要素及び中間マスタイメージを除く他のレコードを更新し、第２ステップに戻る。【０３１０】
この処理は、図２４に示した処理と比較し、より正確な実行時間に基づいて、カタログ構築処理テーブル７００を更新することができる。また、最初の実行時間管理テーブル３００には、デフォルト値が設定されても良い。【０３１１】
図２５は、ユーザに表示されるＧＵＩの画面の例を示す。【０３１２】
ＧＵＩ９５００は、図２４のステップＳ８０３において表示されても良い。ＧＵＩ９５００は、第１の方法に基づくカタログ要素構築処理の予定一覧９５１０と、第２の方法に基づくカタログ要素構築処理の予定一覧９５２０とを有する。第１の方法とは、上述のとおり、中間マスタイメージを利用せずにカタログ要素を構築する方法である。第２の方法とは、上述のとおり、中間マスタイメージを利用してカタログ要素を構築する方法である。【０３１３】
ＧＵＩ９５００は、第１の方法によるカタログ要素構築処理の実行を受け付ける「第１の方法で構築」ボタン９５４１と、第２の方法によるカタログ要素構築処理の実行を受け付ける「第２の方法で構築」ボタン９５４２とを有する。ＧＵＩ９５１０は、カタログ要素構築処理の実行中に、その進捗状況を示すグラフ９５３２を有しても良い。【０３１４】
第１の方法に基づくカタログ要素構築処理の予定一覧（以下「第１方法の予定一覧」という）９５１０は、データ項目として、カタログ要素名９５１１と、マスタイメージ名９５１２と、適用スクリプトリスト９５１３と、構築完了時刻９５１４とを有する。カタログ要素名９５１１、マスタイメージ名９５１２及び適用スクリプトリスト９５１３の説明は、上記と同様となるため省略する。【０３１５】
第１方法の予定一覧９５１０は、第２カタログ構築部２２−２が更新する前のカタログ構築処理テーブル７００に基づいて生成される。【０３１６】
第１方法の予定一覧９５１０の構築完了時刻９５１４には、中間マスタイメージを利用せずにカタログ要素を構築した場合に、その構築が完了すると予想される時刻が格納される。この構築完了時刻９５１４は、実行時間管理テーブル３００におけるマスタイメージのコピーに要する時間、及び／又はスクリプトの適用に要する時間等を用いて算出されても良い。【０３１７】
第２の方法に基づくカタログ構築処理の予定一覧（以下「第２方法の予定一覧」という）９５２０は、データ項目として、カタログ要素名９５２０と、マスタイメージ名９５２２と、適用スクリプトリスト９５２３と、構築完了時刻９５２４とを有する。カタログ要素名９５２１、マスタイメージ名９５２２及び適用スクリプトリスト９５２３の説明は、上記と同様となるため省略する。【０３１８】
第２方法の予定一覧９５２０は、第２カタログ構築部２２−２が更新した後のカタログ構築処理テーブル７００に基づいて生成される。【０３１９】
第２の方法に係る構築完了時刻９５２４には、中間マスタイメージを利用してカタログ要素を構築した場合に、その構築が完了すると予想される時刻が格納される。この構築完了時刻９５２４は、実行時間管理テーブル３００におけるマスタイメージのコピーに要する時間、中間マスタイメージのコピーに要する時間、及び／又はスクリプトの適用に要する時間等を用いて算出されても良い。【０３２０】
「第１方法で構築」ボタン９５４１が押下されると、カタログ管理サーバ１１−２は、第１方法の予定一覧９５１０に表示されている先頭から順番に、カタログ要素構築処理を実行する。【０３２１】
「第２方法で構築」ボタン９５４２が押下されると、カタログ管理サーバ１１−２は、第２方法の予定一覧９５２０に表示されている先頭から順番に、カタログ要素構築処理を実行する。【０３２２】
グラフ９５３２は、「第１方法で構築」ボタン９５４１又は「第２方法で構築」ボタン９５４２が押下された後に、何れの段階まで構築が完了したか（つまり、進捗状況）を表示する。グラフ９５３２は、構築の開始時刻９５３１と終了予定時刻９５３３とを表示しても良い。【０３２３】
図２６は、第２カタログ構築部２２−２の処理のフローチャートの例を示す。【０３２４】
当該処理は、図２４に示したステップＳ８０２の処理に該当する。第２カタログ構築部２２−２は、第２カタログ管理部２１−２から呼び出されると、カタログ構築処理テーブル７００に格納されている構築対象のグループを作成する（Ｓ９０１）。このグループを、仮にグループＡとする。【０３２５】
そして、第２カタログ構築部２２−２は、グループＡにおける共通な要素（２つ以上のカタログに共通するマスタイメージ及びスクリプト）を抽出する（Ｓ９０２）。この共通するマスタイメージ及びスクリプトから構築される中間マスタイメージを、仮に中間マスタイメージＡとする。この処理は、図１８のステップＳ７０４〜７０６と同様の処理である。【０３２６】
以降、共通な要素が１つの場合の処理について説明する。しかし、グループＡの全体に共通な要素は存在しないものの、グループＡを更に２つのグループに分ければ各々のグループに共通な要素が存在する場合は、各々のグループに対して以降の処理を適用しても良い。【０３２７】
第２カタログ構築部２２−２は、ステップＳ９０２で構築した中間マスタイメージＡを、中間マスタイメージ管理テーブル８００に格納する。そして、第２カタログ構築部２２−２は、グループＡにおいて、可能な場合、構築対象（カタログ要素又は中間マスタイメージ）を、中間マスタイメージＡで置換する（Ｓ９０３）。例えば、コピーされた第１マスタイメージに第１スクリプトを適用して中間マスタイメージＡが構築される場合、第２カタログ構築部２２−２は、カタログ構築処理テーブル７００において、第１カタログの処理対象７２１を「中間マスタイメージＡ」とし、処理内容７２２を「コピー」とし、適用スクリプトリスト７１３の「第１スクリプト」を削除する。【０３２８】
次に、第２カタログ構築部２２−２は、中間マスタイメージＡに置換したグループＡを、グループＢとグループＣの２つに分割する（Ｓ９０４）。ここで、グループＣは、中間マスタイメージＡを処理対象７２１に含むカタログ要素等のグループであり、グループＢは、中間マスタイメージＡを処理対象７２１に含まないカタログ要素等のグループである。【０３２９】
そして、第２カタログ構築部２２−２は、カタログ構築処理テーブル７００の内、グループＡに該当していた範囲を、グループＢ、中間マスタイメージＡ、グループＣの順番に置換する（Ｓ９０５）。これにより、カタログ構築処理テーブル７００のその範囲におけるカタログ要素構築の順番が、グループＢ、中間マスタイメージＡ、グループＣの順番となり、中間マスタイメージＡが新たに追加される。そして、第２カタログ構築部２２−２は、グループＣにおいて共通な要素の抽出を試みる（Ｓ９０６）。【０３３０】
グループＣにおいて共通な要素を抽出できた場合（Ｓ９０６：ＹＥＳ）、第２カタログ構築部２２−２は、このグルーブＣをグループＡと見なして、ステップＳ９０２の処理に戻る（Ｓ９０７）。【０３３１】
グループＣにおいて共通な要素を抽出できなかった場合（Ｓ９０６：ＮＯ）、第２カタログ構築部２２−２は、カタログ構築処理テーブル７００において、処理対象７２１に中間マスタイメージを含むレコードの内、最終のレコードの処理内容７２２を「使用」に変更し（Ｓ９０８）、当該処理を終了する（ＥＮＤ）。
【実施例４】
【０３３２】
実施例４に示すカタログ管理サーバ１１−３は、全てのカタログ要素に対して事前に中間マスタイメージ構築処理を実行する場合と、カタログ要素構築要求を受けてから中間マスタイメージ構築処理を実行する場合とを、適切に使い分ける。【０３３３】
図２７は、実施例４に係るカタログ管理サーバ１１−３の構成の例を示す。【０３３４】
ここでは、図１に示したカタログ管理サーバ１１又は図２１に示したカタログ管理サーバ１１−２と同じ要素については、同一の符号を付して説明を省略する。【０３３５】
カタログ管理サーバ１１−３は、第１カタログ管理部２１と、第２カタログ管理部２１−２と、第３カタログ管理部２１−３と、第１カタログ構築部２２と、第２カタログ構築部２２−２と、記憶部２４とを有する。記憶部２４に格納される要素については、図２１と同様のため、説明を省略する。【０３３６】
第３カタログ管理部２１−３は、ユーザからの要求の内容に基づいて、全てのカタログ要素に対して事前に中間マスタイメージ構築処理を実行するか、それとも、カタログ要素構築要求を受けてから中間マスタイメージ構築処理を実行するか、を判断する。次に、第３カタログ管理部２１−３の処理の例を述べる。【０３３７】
図２８は、第３カタログ管理部２１−３の処理のフローチャートの例を示す。【０３３８】
第３カタログ管理部２１−３は、図１１に示したユーザからの要求を受けると、その要求が「ポリシ選択要求」、「カタログ要素追加要求」及び「カタログ要素削除要求」の何れかであるか、それとも、「カタログ要素構築要求」であるかを判定する（Ｓ１００１）。【０３３９】
ユーザからの要求が「ポリシ選択要求」、「カタログ追加要求」及び「カタログ削除要求」の何れかである場合（Ｓ１００１：Ａ）、第３カタログ管理部２１−３は、第１カタログ管理部２１及び第１カタログ構築部２２に処理を実行させる（Ｓ１００２）。つまり、第３カタログ管理部２１−３は、全てのカタログに対して事前に中間マスタイメージ構築処理を実行する方を選択する。【０３４０】
ユーザからの要求が「カタログ構築要求」である場合（Ｓ１００１：Ｂ）、第３カタログ管理部２１−３は、第２カタログ管理部２１−２及び第２カタログ構築部２２−２に処理を実行させる（Ｓ１００３）。つまり、第３カタログ管理部２１−３は、カタログ構築要求を受けてから中間マスタイメージ構築処理を実行する方を選択する。【０３４１】
なお、第１カタログ管理部２１及び第１カタログ構築部２２で構築された中間マスタイメージに対しても、図２４のステップＳ８１０及びＳ８１１と同様の処理によって、必要に応じて、中間マスタイメージから、元のマスタイメージとスクリプトに戻しても良い。
【実施例５】
【０３４２】
実施例５では、上述の実施例１乃至４において示した各処理を異なる態様で組み合わせた場合におけるカタログ管理サーバ１１−４の処理について述べる。【０３４３】
図２９は、実施例５に係るカタログ管理サーバ１１−４の構成の例を示す。【０３４４】
ここでは、図１に示したカタログ管理サーバ１１又は図２１に示したカタログ管理サーバ１１−２と同じ要素については、同一の符号を付して説明を省略する。【０３４５】
カタログ管理サーバ１１−４は、第４カタログ管理部２１−４と、第４カタログ構築部２２−４と、マスタイメージ監視部２３と、記憶部２４とを有する。記憶部２４に格納される要素については、図２１と同様のため説明を省略する。【０３４６】
第４カタログ管理部２１−４は、カタログ管理テーブル１００に基づいて、カタログ要素を構築する途中までのスクリプトをマスタイメージに適用した中間マスタイメージを構築するか否か判定する。中間マスタイメージを構築すると判定した場合、第４カタログ管理部２１−４は、当該中間マスタイメージを構築してストレージ（ファイルシステム４５）に格納し、カタログ管理テーブル１００のマスタイメージを、当該中間マスタイメージに置換する。そして、第４カタログ構築部２２−４は、カタログ管理テーブル１００に基づいて、ストレージに格納されているマスタイメージ又は中間マスタイメージに、残りのスクリプトを適用してカタログ要素（仮想マシンイメージ）を構築する。【０３４７】
第４カタログ管理部２１−４は、中間マスタイメージのコピーに要する時間が、マスタイメージをコピーしてカタログ要素を構築する途中までのスクリプトを適用した場合に要する時間よりも短いならば、中間マスタイメージを構築すると判定しても良い。第４カタログ構築部２２−４は、ストレージに格納されているマスタイメージ又は中間マスタイメージをコピーし、そのコピーしたマスタイメージ又は中間マスタイメージに残りのスクリプトを適用してカタログ要素を構築しても良い。【０３４８】
第４カタログ管理部２１−４は、カタログ要素の属性４１３が、「Ｔｈｉｎ」の場合に、中間マスタイメージを構築すると判定し、「Ｔｈｉｃｋ」の場合に、中間マスタイメージを構築しないと判定しても良い。【０３４９】
第４カタログ管理部２１−４は、異なるカタログ要素に共通して含まれる、マスタイメージ及びスクリプトが存在するならば、その共通するマスタイメージに、その共通するスクリプトを適用した中間マスタイメージを構築すると判定しても良い。第４カタログ構築部２２−４は、その異なるカタログ要素に係るカタログ管理テーブル１００中の共通するマスタイメージを、その共通するスクリプトを適用した中間マスタイメージに置換しても良い。【０３５０】
第４カタログ管理部２１−４は、２以上の異なる中間マスタイメージを構築すると判定した場合、中間マスタイメージを構築する順番を決定して、中間マスタイメージ管理テーブル８００に格納しても良い。第４カタログ構築部２２−４は、中間マスタイメージ管理テーブル８００の示す順番に中間マスタイメージを構築しても良い。【０３５１】
第４カタログ構築部２２−４は、ストレージ容量テーブル５００を参照して、ストレージの空き容量（未使用容量）が所定未満とならない範囲で、中間マスタイメージ管理テーブル８００に示されている上位から順番に中間マスタイメージを構築してストレージに格納しても良い。なお、第４カタログ管理部２１−４は、中間マスタイメージ管理テーブル８００の上位から順番に中間マスタイメージのデータサイズを合計していき、ストレージの空き容量とその合計との差分が所定未満となったら、その順番以降のレコードを中間マスタイメージ管理テーブル８００から削除しても良い。【０３５２】
第４カタログ管理部２１−４は、中間マスタイメージを構築する順番を決定するにあたって、カタログ管理テーブル１００を参照し、構築頻度１１４のより高いカタログ要素に利用できる中間マスタイメージが先に構築されるように、中間マスタイメージ管理テーブル８００を更新しても良い。【０３５３】
第４カタログ管理部２１−４は、中間マスタイメージを構築する順番を決定するにあたって、より多くの異なるカタログ要素に共通して利用できる中間マスタイメージが先に構築されるように、中間マスタイメージ管理テーブル８００を更新しても良い。【０３５４】
第４カタログ管理部２１−４は、中間マスタイメージを構築する順番を決定するにあたって、スクリプト管理テーブル２００を参照し、異なる中間マスタイメージの各々が同じマスタイメージにバージョンの異なる同様のスクリプトを適用したものであるならば、バージョンのより新しい同様のスクリプトを適用した中間マスタイメージが先に構築されるように、中間マスタイメージ管理テーブル８００を更新しても良い。【０３５５】
第４カタログ管理部２１−４は、通信ネットワーク１８を介して、ユーザからカタログ要素の構築要求を受けると、その要求を受けたカタログ要素について、中間マスタイメージを構築するか否かの判定を実行しても良い。【０３５６】
図３０は、実施例５に係るカタログ管理サーバ１１−４の処理のフローチャートの例を示す。【０３５７】
第４カタログ管理部２１−４は、カタログ管理テーブル１００及びマスタイメージ管理テーブル４００を参照して、属性４１３が「Ｔｈｉｎ」のカタログ要素群を抽出する（Ｓ１１０１）。そして、第４カタログ管理部２１−４は、前のステップで抽出したカタログ要素群から、異なるカタログ要素に共通するマスタイメージ及びスクリプトの組み合わせを抽出する（Ｓ１１０２）。そして、第４カタログ管理部２１−４は、その抽出した組み合わせの数だけ、以降のステップＳ１１０３〜Ｓ１１０７のループ処理を実行する（Ｓ１１０３）。【０３５８】
第４カタログ管理部２１−４は、ステップＳ１１０２で抽出した組み合わせの内、未処理の組み合わせを、当該ループ処理の処理対象とする（Ｓ１１０４）。【０３５９】
第４カタログ管理部２１−４は、「処理対象の組み合わせから構築される中間マスタイメージのコピーに要する時間＜処理対象のマスタイメージのコピーに要する時間＋そのマスタイメージに処理対象のスクリプトを適用する時間」であるか否かを判定する（Ｓ１１０５）。【０３６０】
「処理対象の組み合わせから構築される中間マスタイメージのコピーに要する時間＜処理対象のマスタイメージのコピーに要する時間＋そのマスタイメージに処理対象のスクリプトを適用する時間」でない場合（Ｓ１１０５：ＮＯ）、第４カタログ管理部２１−４は、ステップＳ１１０７に進む。【０３６１】
「処理対象の組み合わせから構築される中間マスタイメージのコピーに要する時間＜処理対象のマスタイメージのコピーに要する時間＋そのマスタイメージに処理対象のスクリプトを適用する時間」である場合（Ｓ１１０５：ＹＥＳ）、第４カタログ管理部２１−４は、この処理対象の組み合わせを、中間マスタイメージ管理テーブル８００に格納し（Ｓ１１０６）、ステップＳ１１０７に進む。【０３６２】
ステップＳ１１０７において第４カタログ管理部２１−４は，ループ処理が残っている場合はステップＳ１１０３に戻り、ループ処理が残っていない場合は次のステップＳ１１０８に進む（Ｓ１１０７）。【０３６３】
第４カタログ管理部２１−４は、中間マスタイメージ管理テーブル８００を、条件に基づいて、中間マスタイメージを構築する順番に入れ替える（Ｓ１１０８）。条件は、ポリシ管理テーブル６００において選択された条件であっても良い。【０３６４】
次に、第４カタログ構築部２２−４は、中間マスタイメージ管理テーブル８００のレコードの数だけ、以降のステップＳ１１０９〜Ｓ１１１３のループ処理を実行する（Ｓ１１０９）。【０３６５】
第４カタログ構築部２２−４は、中間マスタイメージ管理テーブル８００の未処理の中間マスタイメージの内、上位の中間マスタイメージを処理対象に決定する（Ｓ１１１０）。そして、第４カタログ構築部２２−４は、「中間マスタイメージを格納するストレージの未使用容量−処理対象の中間マスタイメージのデータサイズ＞所定値」であるか否かを判定する（Ｓ１１１１）。つまり、第４カタログ構築部２２−４は、処理対象の中間マスタイメージをストレージに格納したとしても、ストレージに所定値よりも大きい未使用容量が残るか否かを判定する。【０３６６】
「中間マスタイメージを格納するストレージの未使用容量−処理対象の中間マスタイメージのデータサイズ＞所定値」でない場合（Ｓ１１１１：ＮＯ）、第４カタログ構築部２１−４は、これ以上中間マスタイメージをストレージに格納できないと判断し、ループを抜けて当該処理を終了する（ＥＮＤ）。【０３６７】
「中間マスタイメージを格納するストレージの未使用容量−処理対象の中間マスタイメージのデータサイズ＞所定値」である場合（Ｓ１１１１：ＹＥＳ）、第４カタログ管理部２１−４は、処理対象の中間マスタイメージを構築してストレージに格納し（Ｓ１１１２）、次のステップＳ１１１３に進む。【０３６８】
ステップＳ１１１３において第４カタログ構築部２２−４は、ループ処理が残っている場合はステップＳ１１０９に戻り、ループ処理が残っていない場合は当該処理を終了する（ＥＮＤ）。【０３６９】
上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【０３７０】
１１、１１−２、１１−３、１１−４…カタログ管理サーバ  １２…仮想環境管理サーバ  １３…物理サーバ  １５…ストレージ装置、５１…ハイパーバイザ  ５３…仮想計算機
【図１】
0005996094.tif 000002
【図２】
0005996094.tif 000003
【図３】
0005996094.tif 000004
【図４】
0005996094.tif 000005
【図５】
0005996094.tif 000006
【図６】
0005996094.tif 000007
【図７】
0005996094.tif 000008
【図８】
0005996094.tif 000009
【図９】
0005996094.tif 000010
【図１０】
0005996094.tif 000011
【図１１】
0005996094.tif 000012
【図１２】
0005996094.tif 000013
【図１３】
0005996094.tif 000014
【図１４】
0005996094.tif 000015
【図１５】
0005996094.tif 000016
【図１６】
0005996094.tif 000017
【図１７】
0005996094.tif 000018
【図１８】
0005996094.tif 000019
【図１９】
0005996094.tif 000020
【図２０】
0005996094.tif 000021
【図２１】
0005996094.tif 000022
【図２２】
0005996094.tif 000023
【図２３】
0005996094.tif 000024
【図２４】
0005996094.tif 000025
【図２５】
0005996094.tif 000026
【図２６】
0005996094.tif 000027
【図２７】
0005996094.tif 000028
【図２８】
0005996094.tif 000029
【図２９】
0005996094.tif 000030
【図３０】
0005996094.tif 000031