(57)【特許請求の範囲】
【請求項１】
管理サーバ、及び複数の仮想計算機が稼動する少なくとも一つの物理サーバを備える計算機システムであって、
前記管理サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記少なくとも一つの物理サーバは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記少なくとも一つの物理サーバは、当該物理サーバが有する計算機リソースを分割することによって、オペレーティングシステムを実行する仮想計算機を少なくとも一つ生成する仮想化管理部を有し、
前記オペレーティングシステムは、ユーザ空間を分割することによって生成されたアプリケーション環境であるコンテナを少なくとも一つ生成するコンテナ実行部を含み、
前記管理サーバは、前記計算機システムに新たに追加する前記コンテナの配置を制御するコンテナ制御部を有し、
前記コンテナ制御部は、
オペレーティングシステムの種別、及び新規コンテナに割り当てる計算機リソース量である第１の要求リソース量を含む新規コンテナの追加要求を受け付け、
前記新規コンテナの追加要求に含まれる前記オペレーティングシステムの種類と同一種類のオペレーティングシステムを実行する候補仮想計算機を特定し、
前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在するか否かを判定し、
前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在しない場合、当該候補仮想計算機が稼動する物理サーバである対象物理サーバを特定し、
前記対象物理サーバ上の前記複数の仮想計算機の各々に割り当てられる計算機リソース量を調整するリソース調整処理を実行することによって、前記候補仮想計算機に前記新規コンテナを追加し、
前記リソース調整処理では、
前記コンテナ制御部は、
前記対象物理サーバ上の前記複数の仮想計算機の各々について、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加するための調整をした場合の計算機リソースの割当量である新リソース量を算出し、
前記新リソース量に基づいて、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加し、
前記新リソース量に基づいて、前記対象物理サーバ上の前記候補仮想計算機以外の少なくとも一つの仮想計算機の計算機リソース量を削減することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記コンテナは、性能保証型のコンテナ及びベストエフォート型のコンテナを含み、
前記少なくとも一つの物理サーバが有する計算機リソース量を管理する物理サーバ管理情報と、
前記複数の仮想計算機の各々に割り当てられる計算機リソース量を管理する仮想計算機管理情報と、
前記コンテナが配置された仮想計算機、及び前記コンテナに要求される計算機リソース量である第２の要求リソース量を管理するコンテナ管理情報と、を管理し、
前記リソース調整処理では、
前記コンテナ制御部は、
前記新リソース量が算出される前に、前記物理サーバ管理情報から前記対象物理サーバの計算機リソース量を取得し、
前記仮想計算機管理情報及び前記コンテナ管理情報を参照して、前記対象物理サーバ上の全ての仮想計算機の前記性能保証型のコンテナの前記第２の要求リソース量の合計値を算出し、
前記第１の要求リソース量、前記対象物理サーバの計算機リソース量、及び前記合計値に基づいて、前記ベストエフォート型のコンテナに割り当てる計算機リソース量を算出し、
前記第１の要求リソース量、前記対象物理サーバ上の前記複数の仮想計算機の各々の前記性能保証型のコンテナの前記第２の要求リソース量、及び前記ベストエフォート型のコンテナに割り当てる計算機リソース量に基づいて、前記対象物理サーバ上の前記複数の仮想計算機の各々の前記新リソース量を算出することを特徴とする計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記管理サーバは、前記計算機システムに前記物理サーバを追加する物理サーバ追加部を有し、
前記コンテナ制御部は、
前記対象物理サーバを特定した場合、前記対象物理サーバの空きリソース量を算出し、
前記対象物理サーバの空きリソース量が前記第１の要求リソース量より大きいか否かを判定し、
前記対象物理サーバの空きリソース量が前記第１の要求リソース量より大きいと判定された場合、前記リソース調整処理を実行し、
前記対象物理サーバの空きリソース量が前記第１の要求リソース量以下であると判定された場合、前記物理サーバ追加部と連携して、前記計算機システムに新規物理サーバを追加する物理サーバの追加処理を実行し、
前記新規物理サーバ上に前記新規コンテナを追加することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記物理サーバの追加処理では、
前記コンテナ制御部は、
前記物理サーバ追加部に前記新規物理サーバの追加を指示し、
前記候補仮想計算機を前記新規物理サーバに移動させる必要があるか否かを判定し、
前記候補仮想計算機を前記新規物理サーバに移動させる必要があると判定された場合、前記候補仮想計算機を前記新規物理サーバに移動し、前記新規物理サーバに移動した前記候補仮想計算機に前記新規コンテナを追加し、
前記候補仮想計算機を前記新規物理サーバに移動させる必要がないと判定された場合、前記新規物理サーバに新規仮想計算機を追加し、前記新規仮想計算機に前記新規コンテナを追加することを特徴とする計算機システム。
【請求項５】
管理サーバ、及び複数の仮想計算機が稼動する少なくとも一つの物理サーバを備える計算機システムにおけるコンテナ管理方法であって、
前記管理サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記少なくとも一つの物理サーバは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記少なくとも一つの物理サーバは、当該物理サーバが有する計算機リソースを分割することによって、オペレーティングシステムを実行する仮想計算機を少なくとも一つ生成する仮想化管理部を有し、
前記オペレーティングシステムは、ユーザ空間を分割することによって生成されたアプリケーション環境であるコンテナを少なくとも一つ生成するコンテナ実行部を含み、
前記管理サーバは、前記計算機システムに新たに追加する前記コンテナの配置を制御するコンテナ制御部を有し、
前記コンテナ管理方法は、
前記コンテナ制御部が、オペレーティングシステムの種別、及び新規コンテナに割り当てる計算機リソース量である第１の要求リソース量を含む新規コンテナの追加要求を受け付ける第１のステップと、
前記コンテナ制御部が、前記新規コンテナの追加要求に含まれる前記オペレーティングシステムの種類と同一種類のオペレーティングシステムを実行する候補仮想計算機を特定する第２のステップと、
前記コンテナ制御部が、前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在するか否かを判定する第３のステップと、
前記コンテナ制御部が、前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在しない場合、当該候補仮想計算機が稼動する物理サーバである対象物理サーバを特定する第４のステップと、
前記コンテナ制御部が、前記対象物理サーバ上の前記複数の仮想計算機の各々に割り当てられる計算機リソース量を調整するリソース調整処理を実行することによって、前記候補仮想計算機に前記新規コンテナを追加する第５のステップと、を含み、
前記第５のステップは、
前記コンテナ制御部が、前記対象物理サーバ上の前記複数の仮想計算機の各々について、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加するための調整をした場合の計算機リソースの割当量である新リソース量を算出するステップと、
前記コンテナ制御部が、前記新リソース量に基づいて、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加するステップと、
前記コンテナ制御部が、前記新リソース量に基づいて、前記対象物理サーバ上の前記候補仮想計算機以外の少なくとも一つの仮想計算機の計算機リソース量を削減するステップと、を含むことを特徴とするコンテナ管理方法。
【請求項６】
請求項５に記載のコンテナ管理方法であって、
前記コンテナは、性能保証型のコンテナ及びベストエフォート型のコンテナを含み、
前記少なくとも一つの物理サーバが有する計算機リソース量を管理する物理サーバ管理情報と、
前記複数の仮想計算機の各々に割り当てられる計算機リソース量を管理する仮想計算機管理情報と、
前記コンテナが配置された仮想計算機、及び前記コンテナに要求される計算機リソース量である第２の要求リソース量を管理するコンテナ管理情報と、を管理し、
前記第５のステップは、
前記コンテナ制御部が、前記新リソース量が算出される前に、前記物理サーバ管理情報から前記対象物理サーバの計算機リソース量を取得するステップと、
前記コンテナ制御部が、前記仮想計算機管理情報及び前記コンテナ管理情報を参照して、前記対象物理サーバ上の全ての仮想計算機の前記性能保証型のコンテナの前記第２の要求リソース量の合計値を算出するステップと、
前記コンテナ制御部が、前記第１の要求リソース量、前記対象物理サーバの計算機リソース量、及び前記合計値に基づいて、前記ベストエフォート型のコンテナに割り当てる計算機リソース量を算出するステップと、
前記コンテナ制御部が、前記第１の要求リソース量、前記対象物理サーバ上の前記複数の仮想計算機の各々の前記性能保証型のコンテナの前記第２の要求リソース量、及び前記ベストエフォート型のコンテナに割り当てる計算機リソース量に基づいて、前記対象物理サーバ上の前記複数の仮想計算機の各々の前記新リソース量を算出するステップと、を含むことを特徴とするコンテナ管理方法。
【請求項７】
請求項５に記載のコンテナ管理方法であって、
前記管理サーバは、前記計算機システムに前記物理サーバを追加する物理サーバ追加部を有し、
前記第４のステップは、
前記コンテナ制御部が、前記対象物理サーバの空きリソース量を算出するステップと、
前記コンテナ制御部が、前記対象物理サーバの空きリソース量が前記第１の要求リソース量より大きいか否かを判定するステップと、を含み、
前記第５のステップは、前記対象物理サーバの空きリソース量が前記第１の要求リソース量より大きいと判定された場合、前記コンテナ制御部が、前記リソース調整処理を実行するステップを含み、
前記コンテナ管理方法は、
前記対象物理サーバの空きリソース量が前記第１の要求リソース量以下であると判定された場合、前記コンテナ制御部が、前記物理サーバ追加部と連携して、前記計算機システムに新規物理サーバを追加する物理サーバの追加処理を実行する第６のステップと、
前記コンテナ制御部が、前記新規物理サーバ上に前記新規コンテナを追加する第７のステップと、を含むことを特徴とするコンテナ管理方法。
【請求項８】
請求項７に記載のコンテナ管理方法であって、
前記第６のステップは、
前記コンテナ制御部が、前記物理サーバ追加部に前記新規物理サーバの追加を指示するステップと、
前記コンテナ制御部が、前記候補仮想計算機を前記新規物理サーバに移動させる必要があるか否かを判定するステップと、
前記コンテナ制御部が、前記候補仮想計算機を前記新規物理サーバに移動させる必要があると判定された場合、前記候補仮想計算機を前記新規物理サーバに移動し、前記新規物理サーバに移動した前記候補仮想計算機に前記新規コンテナを追加するステップと、
前記コンテナ制御部が、前記候補仮想計算機を前記新規物理サーバに移動させる必要がないと判定された場合、前記新規物理サーバに新規仮想計算機を追加し、前記新規仮想計算機に前記新規コンテナを追加するステップと、を含むことを特徴とするコンテナ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化環境において性能保証型のコンテナ及びベストエフォート型のコンテナを配置する計算機システムに関する。
【背景技術】
【０００２】
コンテナ技術は、コンテナ及びホストＯＳがカーネルを共有することによってオーバーヘッドを少ない軽量な仮想化環境を実現する。コンテナはホストＯＳとカーネルを共有するため、コンテナにはホストＯＳと同じＯＳ環境が提供される。その結果、ホストＯＳ上には同一のＯＳ種別の環境のみで構成される。
【０００３】
一般的には、ＯＳの種別の数だけ物理サーバが必要となる。そのため、コストが高く、また耐障害性についても問題がある。そのため、仮想化されたサーバ環境を適用して必要な物理サーバの数を削減する方法が考えられる（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１２８９６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のＯＳ種別のコンテナを配備するためには、一つの物理サーバ上に、ＯＳ種別ごとに仮想マシンを稼働させ、各仮想マシン上にコンテナを配備する。前述したシステム環境では、計算機リソースが各仮想マシンに分割して割り当てられるため、あるＯＳ種別の仮想マシンのリソース量が不足し、別のＯＳ種別の仮想マシンのリソース量に余剰が生じる場合がある。特に、性能を保証する性能保証型のコンテナを配備する場合に、前述したような計算機リソース量の問題が顕著になる。
【０００６】
性能保証型のコンテナ及びベストエフォート型のコンテナが混在するシステムにおいて、可能な限り少ない物理サーバを用いて多くのコンテナを配置する必要がある。すなわち、本発明は、異なるＯＳ上で稼働する複数のコンテナの高密度な配置を実現することを目的とする。
【課題を解決するための手段】
【０００７】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、管理サーバ、及び複数の仮想計算機が稼動する少なくとも一つの物理サーバを備える計算機システムであって、前記管理サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ、前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、前記少なくとも一つの物理サーバは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ、前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、前記少なくとも一つの物理サーバは、当該物理サーバが有する計算機リソースを分割することによって、オペレーティングシステムを実行する仮想計算機を少なくとも一つ生成する仮想化管理部を有し、前記オペレーティングシステムは、ユーザ空間を分割することによって生成されたアプリケーション環境であるコンテナを少なくとも一つ生成するコンテナ実行部を含み、前記管理サーバは、前記計算機システムに新たに追加する前記コンテナの配置を制御するコンテナ制御部を有し、前記コンテナ制御部は、オペレーティングシステムの種別、及び新規コンテナに割り当てる計算機リソース量である第１の要求リソース量を含む新規コンテナの追加要求を受け付け、前記新規コンテナの追加要求に含まれる前記オペレーティングシステムの種類と同一種類のオペレーティングシステムを実行する候補仮想計算機を特定し、前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在するか否かを判定し、前記候補仮想計算機に前記第１の要求リソース量分の空きリソースが存在しない場合、当該候補仮想計算機が稼動する物理サーバである対象物理サーバを特定し、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加するために、前記対象物理サーバ上の前記複数の仮想計算機の各々に割り当てられる計算機リソース量を調整するリソース調整処理を実行し、前記第１の要求リソース量分の計算機リソースを用いて前記候補仮想計算機に前記新規コンテナを追加し、前記リソース調整処理では、前記コンテナ制御部は、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加するために、前記対象物理サーバ上の前記複数の仮想計算機の各々について、調整した場合の計算機リソース量である新リソース量を算出し、前記新リソース量に基づいて、前記候補仮想計算機に前記第１の要求リソース量分の計算機リソースを追加し、前記新リソース量に基づいて、前記対象物理サーバ上の前記候補仮想計算機以外の少なくとも一つの仮想計算機の計算機リソース量を削減することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、新規コンテナを追加する場合、新たな物理サーバを追加することなく、既存の物理サーバ上に新規コンテナを追加できる。すなわち、異なるＯＳ上で稼働する複数のコンテナの高密度な配置を実現できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１のコンテナ管理システムの構成例を示す図である。
【図２】実施例１の物理サーバ管理テーブルの構成例を示す図である。
【図３】実施例１の仮想マシン管理テーブルの構成例を示す図である。
【図４】実施例１のコンテナ管理テーブルの構成例を示す図である。
【図５】実施例１のコンテナ制御部が実行する処理を説明するフローチャートである。
【図６】実施例１のコンテナ制御部が実行するリソース調整処理の一例を示すフローチャートである。
【図７】実施例１のコンテナ制御部が実行する物理サーバの追加処理の一例を示すフローチャートである。
【図８】実施例１のリソース調整処理を伴う新規コンテナの追加処理が実行された後の仮想マシン管理テーブルの一例を示す図である。
【図９】実施例１の物理サーバの追加処理を伴う新規コンテナの追加処理が実行された後の仮想マシン管理テーブルの一例を示す図である。
【発明を実施するための形態】
【００１０】
本発明の実施例を図面に基づいて説明する。
【実施例１】
【００１１】
図１は、実施例１のコンテナ管理システムの構成例を示す図である。
【００１２】
実施例１のコンテナ管理システムは、管理サーバ１０１、一つ以上の物理サーバ１０２、及びクライアント端末１０３から構成される。管理サーバ１０１及び一つ以上の物理サーバ１０２は、ネットワークを介して互いに接続され、また、管理サーバ１０１及びクライアント端末１０３は、ネットワークを介して互いに接続される。なお、物理サーバ１０２及びクライアント端末１０３は、直接管理サーバ１０１と接続されてもよい。
【００１３】
物理サーバ１０２上では、ハイパバイザ１４０によって管理される一つ以上の仮想マシン（ＶＭ）１５０が稼働し、さらに、一つのＶＭ１５０が実行するＯＳ１６０上に一つ以上のコンテナ１７０が稼働する。
【００１４】
管理サーバ１０１は、コンテナ１７０の配置を管理する。管理サーバ１０１は、ＣＰＵ１１０、メモリ１１１、記憶装置１１２、及びＮＩＣ１１３を備える。
【００１５】
ＣＰＵ１１０は、メモリ１１１に格納されるプログラムを実行する。ＣＰＵ１１０がプログラムを実行することによって、管理サーバ１０１の機能を実現できる。以下では、プログラムを主体に処理を説明する場合、当該プログラムがＣＰＵ１１０によって実行されていることを示す。
【００１６】
メモリ１１１は、ＣＰＵ１１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、メモリ１１１は、プログラムが実行する処理に使用するワークエリアを含む。本実施例のメモリ１１１は、コンテナ制御部１２０及び物理サーバ追加部１２１を実現するプログラムを格納する。また、メモリ１１１は、物理サーバ管理テーブル１２２、仮想マシン管理テーブル１２３、及びコンテナ管理テーブル１２４を格納する。
【００１７】
コンテナ制御部１２０は、新たに追加されるコンテナ１７０の配置を制御する。コンテナ制御部１２０が実行する処理の詳細は、図５、図６、及び図７を用いて説明する。物理サーバ追加部１２１は、新たなコンテナ１７０を配置する物理サーバ１０２の追加処理を制御する。
【００１８】
物理サーバ管理テーブル１２２は、物理サーバ１０２の計算機リソース量等を管理する情報である。物理サーバ管理テーブル１２２の詳細は図２を用いて説明する。仮想マシン管理テーブル１２３は、各物理サーバ１０２上のＶＭ１５０を管理する情報である。仮想マシン管理テーブル１２３の詳細は図３を用いて説明する。コンテナ管理テーブル１２４は、コンテナ１７０を管理する情報である。コンテナ管理テーブル１２４の詳細は図４を用いて説明する。
【００１９】
記憶装置１３２は、各種情報を格納する記憶媒体であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。なお、メモリ１１１に格納されるプログラム及び情報は、記憶装置１３２に格納されてもよい。この場合、ＣＰＵ１１０は、必要に応じて記憶装置１１２からプログラム及び情報を読み出し、メモリ１１１上にロードする。ＮＩＣ１１３は、ネットワークを介して他の装置と通信するためのインタフェースである。
【００２０】
物理サーバ１０２は、一つ以上のコンテナ１７０が稼働する計算機である。物理サーバ１０２は、計算機リソースとしてＣＰＵ１３０、メモリ１３１、記憶装置１３２、及びＮＩＣ１３３を備える。ＣＰＵ１３０、メモリ１３１、記憶装置１３２、及びＮＩＣ１３３は、ＣＰＵ１１０、メモリ１１１、記憶装置１１２、及びＮＩＣ１１３と同一のものである。
【００２１】
物理サーバ１０２のメモリ１３１には、ハイパバイザ１４０、ＯＳ１６０、及びコンテナ１７０を実現するプログラムが格納される。
【００２２】
ハイパバイザ１４０は、物理サーバ１０２の計算機リソースを論理的に分割することによって、一つ以上のＶＭ１５０を生成する。ハイパバイザ１４０は、図示しないＶＭ１５０の管理情報を保持する。当該情報は、ＶＭ１５０の識別子、ＶＭ１５０に割り当てられる計算機リソース量、及び稼働状態等の情報を含む。管理サーバ１０１は、周期的又は新規コンテナ１７０の追加時等、所定のタイミングでハイパバイザ１４０と通信することによって、仮想マシン管理テーブル１２３を更新する。
【００２３】
ＶＭ１５０は、仮想的な計算機であり、ハイパバイザ１４０によって起動が指示された場合、ＯＳ１６０を実行する。ＯＳ１６０上では一つ以上のコンテナ１７０が実行される。
【００２４】
コンテナ１７０は、アプリケーションを実行するユーザ空間を分割等することによって生成されたアプリケーション環境である。各コンテナ１７０には、プロセス管理情報、ファイルシステム、ネットワーク設定、計算機リソースが独立に与えられる。コンテナ１７０内では一つ以上のアプリケーションが実行される。一つのコンテナ１７０内で実行されるアプリケーションと、他のコンテナ１７０内で実行されるアプリケーションとは、互いに干渉しない。一方、各コンテナ１７０は、ＯＳ１６０のカーネル空間を共有する。
【００２５】
実施例１のＯＳ１６０は、コンテナ実行部１６１を含む。なお、ＯＳ１６０は、図示しない他の機能部を含んでもよいし、また、図示しない情報を保持してもよい。
【００２６】
コンテナ実行部１６１は、コンテナ１７０を管理する。コンテナ実行部１６１は、図示しないコンテナ１７０の管理情報を保持する。当該情報には、コンテナ１７０の識別子、コンテナ１７０の種別、及びコンテナ１７０の稼働状態等の情報を含む。管理サーバ１０１は、周期的に又は新規コンテナ１７０の追加時等、所定のタイミングでハイパバイザ１４０を介してコンテナ実行部１６１と通信することによって、コンテナ管理テーブル１２４を更新する。
【００２７】
本実施例では、性能保証型及びベストエフォート型の二つの種類のコンテナ１７０を設定することができる。
【００２８】
コンテナ実行部１６１は、要求される性能を維持できるように性能保証型のコンテナ１７０に対する計算機リソースの割り当てを制御する。すなわち、性能保証型のコンテナ１７０には常に一定以上の計算機リソースが割り当てられる。一方、コンテナ実行部１６１は、ベストエフォート型のコンテナ１７０に対しては性能を維持するための計算機リソースの割り当ての制御は行わない。コンテナ実行部１６１は、図示しない管理情報に基づいて、コンテナ１７０に対する計算機リソースの割り当てを制御する。
【００２９】
実施例１では、コンテナ１７０に割り当てる計算機リソースとしてＣＰＵ１３０のコア数を例に説明する。なお、ＣＰＵ１３０の周波数、メモリ１３１の容量、ＩＯ性能、及びネットワーク性能等の指標、並びに、これらを組み合わせた指標を用いても同様の効果を得ることができる。
【００３０】
図２は、実施例１の物理サーバ管理テーブル１２２の構成例を示す図である。
【００３１】
物理サーバ管理テーブル１２２は、物理サーバＩＤ２０１及びリソース２０２を含む。物理サーバＩＤ２０１は、コンテナ管理システムに配置された物理サーバ１０２を一意に識別するための識別子である。リソース２０２は、コンテナ１７０に割り当て可能な計算機リソースの総量である。
【００３２】
図３は、実施例１の仮想マシン管理テーブル１２３の構成例を示す図である。
【００３３】
仮想マシン管理テーブル１２３は、物理サーバＩＤ３０１、仮想マシンＩＤ３０２、ＯＳ種別３０３、仮想リソース３０４、最小リソース３０５、及び割当リソース３０６を含む。
【００３４】
物理サーバＩＤ３０１は物理サーバＩＤ２０１と同一のものである。仮想マシンＩＤ３０２は、一つの物理サーバ１０２上で稼働するＶＭ１５０を一意に識別するための識別子である。なお、異なる物理サーバ１０２上のＶＭ１５０の識別子は重複してもよい。ＯＳ種別３０３は、ＶＭ１５０上で実行されるＯＳ１６０の種別を示す。
【００３５】
仮想リソース３０４は、ＶＭ１５０に対して割り当てられる計算機リソース量を示す。最小リソース３０５は、ＶＭ１５０に対して割当が保証される計算機リソース量を示す。
【００３６】
本実施例では、ハイパバイザ１４０は、性能保証型のコンテナ１７０に追加する計算機リソース量を確保するために、計算機リソース量をＶＭ１５０に余剰に割り当てる。そのため、全てのＶＭ１５０の仮想リソース３０４の合計値は、物理サーバ１０２が有する計算機リソース量より大きくなる。したがって、仮想リソース３０４に設定された計算機リソース量を必ずしも確保できない場合がある。前述したような場合であっても、最大限確保できる計算機リソース量が最小リソース３０５に設定される。
【００３７】
例えば、図３に示す例では、物理サーバＩＤ３０１が「１」の物理サーバ１０２上では二つのＶＭ１５０が稼働し、仮想マシンＩＤ３０２が「１」のＶＭ１５０には「１６」のコアが割り当てられ、仮想マシンＩＤ３０２が「２」のＶＭ１５０には「２０」のコアが割り当てられる。すなわち、それぞれのＶＭ１５０に計算機リソースがオーバーコミットされる。このとき、仮想リソース３０４の合計値は「３６」となる。そのため、仮想マシンＩＤ３０２が「２」のＶＭ１５０が全てのコアを使用している場合に確保可能なコアの数は「１２」となり、また、仮想マシンＩＤ３０２が「１」のＶＭ１５０が全てのコアを使用している場合に確保可能なコアの数は「１８」となる。すなわち、最小リソース３０５に設定される値は下式（１）に基づいて算出される。
【００３８】
【数１】
0006374845.tif 000002
【００３９】
ここで、ｖＲｉｍｉｎは、仮想マシンＩＤ３０２が「ｉ」であるＶＭ１５０の最小リソース３０５を示す。また、ｖＲｊは、仮想マシンＩＤ３０２が「ｊ」であるＶＭ１５０の仮想リソース３０４を示す。また、Ｒは、仮想マシンＩＤ３０２が「ｉ」であるＶＭ１５０が稼働する物理サーバ１０２のリソース２０２を示す。
【００４０】
割当リソース３０６は、一つのＶＭ１５０上で稼働する各コンテナ１７０に割り当てられる計算機リソース量の合計値を示す。本実施例では、下式（２）に基づいて算出された値が割当リソース３０６に設定される。
【００４１】
【数２】
0006374845.tif 000003
【００４２】
ここで、ｖＲａｌは、割当リソース３０６の値である。ｒｐ（ｉ）は、仮想マシンＩＤ３０２が「ｉ」であるＶＭ１５０の性能保証型のコンテナ１７０の要求リソース量であり、後述する性能保証４０３に設定される数値に対応する。Ｎは、ベストエフォート型のコンテナ１７０の総数である。αは、ベストエフォート型のコンテナ１７０の最小性能値である。αは、システム運用者によって設定される。本実施例ではαは０．１であるものとする。
【００４３】
図４は、実施例１のコンテナ管理テーブル１２４の構成例を示す図である。
【００４４】
コンテナ管理テーブル１２４は、仮想マシンＩＤ４０１、コンテナＩＤ４０２、及び性能保証４０３を含む。
【００４５】
仮想マシンＩＤ４０１は、仮想マシンＩＤ３０２と同一のものである。コンテナＩＤ４０２は、物理サーバ１０２内のコンテナ１７０を一意に識別するための識別子である。なお、異なるＯＳ１６０上のコンテナ１７０の識別子は重複してもよい。性能保証４０３は、コンテナ１７０の性能保証に関する情報である。性能保証４０３には、保証すべきリソース量を示す数値、又は文字情報「ベストエフォート」のいずれかが設定される。
【００４６】
図４に示す例では、仮想マシンＩＤ４０１が「１」のＶＭ１５０の割当リソース３０６は、式（２）を用いて下式（３）のように算出される。また、仮想マシンＩＤ４０１が「２」のＶＭ１５０の割当リソース３０６は、式（２）を用いて下式（４）のように算出される。
【００４７】
【数３】
0006374845.tif 000004
【００４８】
【数４】
0006374845.tif 000005
【００４９】
図５は、実施例１のコンテナ制御部１２０が実行する処理を説明するフローチャートである。
【００５０】
管理サーバ１０１は、クライアント端末１０３から新たなコンテナ１７０の追加要求を受信した場合、コンテナ制御部１２０を呼び出す。コンテナ１７０の追加要求には、コンテナ１７０を制御するＯＳ１６０の種別、及びコンテナ１７０の性能保証に関する情報が含まれる。また、コンテナ１７０が性能保証型のコンテナ１７０である場合、追加要求にはコンテナ１７０に割り当てる計算機リソース量が含まれる。以下の説明では、コンテナ１７０の追加要求に基づいてコンテナ管理システムに追加されるコンテナ１７０を新規コンテナ１７０とも記載する。また、新規コンテナ１７０の追加に必要な計算機リソース量を要求リソース量とも記載する。
【００５１】
コンテナ制御部１２０は、ＶＭ１５０の最小リソース３０５が割当リソース３０６を上回るように計算機リソース量の割り当てを制御する。具体的には、コンテナ制御部１２０は、四つのステップにしたがって、コンテナ１７０を配置する。
【００５２】
第１のステップでは、コンテナ制御部１２０が、物理サーバ１０２にＶＭ１５０を追加することなくコンテナ１７０を配置できるか否かを判定する。前述の条件を満たす場合、コンテナ制御部１２０は、所定のＶＭ１５０にコンテナ１７０を追加する。前述した条件を満たさない場合、コンテナ制御部１２０は、第２のステップに移行する。
【００５３】
第２のステップでは、コンテナ制御部１２０が、コンテナ１７０を追加する予定のＶＭ１５０とは異なる他のＶＭ１５０の計算機リソースの割当量を変更することによって、コンテナ１７０を配置できるか否かを判定する。前述した条件を満たす場合、コンテナ制御部１２０は、他のＶＭ１５０の計算機リソースの割当量を調整し、所定のＶＭ１５０にコンテナ１７０を追加する。前述した条件を満たさない場合、コンテナ制御部１２０は、第３のステップに移行する。
【００５４】
第３のステップでは、コンテナ制御部１２０が、コンテナ１７０の追加に必要な計算機リソースを有する物理サーバ１０２が存在するか否かを判定する。前述した条件を満たす場合、コンテナ制御部１２０は、条件を満たす物理サーバ１０２にＶＭ１５０を追加し、さらに、当該ＶＭ１５０にコンテナ１７０を追加する。前述した条件を満たさない場合、コンテナ制御部１２０は、第４のステップに移行する。
【００５５】
第４のステップでは、コンテナ制御部１２０は、コンテナ管理システムに新たに物理サーバ１０２を追加し、当該物理サーバ１０２にＶＭ１５０を追加する。さらに、コンテナ制御部１２０は、追加されたＶＭ１５０にコンテナ１７０を追加する。
【００５６】
以下、各ステップの詳細な内容について説明する。まず、コンテナ制御部１２０は、ＶＭのループ処理を開始する（ステップＳ５０１）。
【００５７】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照して、対象のエントリ（ＶＭ１５０）を一つ選択する。本実施例では、上のエントリから順に選択されるものとする。なお、本発明は選択する順番に依存しない。
【００５８】
コンテナ制御部１２０は、選択されたＶＭ１５０が新規コンテナ１７０を追加可能なＶＭ１５０であるか否かを判定する（ステップＳ５０２）。以下の説明では、新規コンテナ１７０を追加可能なＶＭ１５０を候補ＶＭ１５０とも記載する。
【００５９】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照して、選択されたＶＭ１５０に対応するエントリのＯＳ種別３０３が追加要求に含まれるＯＳ１６０の種別と一致するか否かを判定する。ＯＳ種別３０３が追加要求に含まれるＯＳ１６０の種別と一致する場合、コンテナ制御部１２０は、選択されたＶＭ１５０が候補ＶＭ１５０であると判定する。
【００６０】
選択されたＶＭ１５０が候補ＶＭ１５０でないと判定された場合、コンテナ制御部１２０はステップＳ５０６に進む。
【００６１】
選択されたＶＭ１５０が候補ＶＭ１５０であると判定された場合、コンテナ制御部１２０は、候補ＶＭ１５０に要求リソース量分の空きリソースが存在するか否かを判定する（ステップＳ５０３）。具体的には、以下のような処理が実行される。
【００６２】
コンテナ制御部１２０は、追加要求に含まれる情報に基づいて、新規コンテナ１７０が性能保証型のコンテナ１７０であるか否かを判定する。新規コンテナ１７０がベストエフォート型のコンテナ１７０であると判定された場合、コンテナ制御部１２０は、候補ＶＭ１５０に要求リソース量分の空きリソースが存在すると判定する。
【００６３】
新規コンテナ１７０が性能保証型のコンテナ１７０であると判定された場合、コンテナ制御部１２０は、候補ＶＭ１５０に対応するエントリの仮想リソース３０４から割当リソース３０６を減算して、候補ＶＭ１５０の空きリソース量を算出する。さらに、コンテナ制御部１２０は、候補ＶＭ１５０の空きリソース量が要求リソース量以上であるか否かを判定する。
【００６４】
候補ＶＭ１５０の空きリソース量が要求リソース量以上である場合、コンテナ制御部１２０は、候補ＶＭ１５０に要求リソース量分の空きリソースが存在すると判定する。以上がステップＳ５０３の処理の説明である。
【００６５】
候補ＶＭ１５０に要求リソース量分の空きリソースが存在すると判定された場合、コンテナ制御部１２０は、候補ＶＭ１５０に新規コンテナ１７０を追加する（ステップＳ５１１）。コンテナ制御部１２０は、仮想マシン管理テーブル１２３及びコンテナ管理テーブル１２４を更新する（ステップＳ５１２）。その後、コンテナ制御部１２０は、処理を終了する。
【００６６】
具体的には、コンテナ制御部１２０は、ハイパバイザ１４０を介してコンテナ実行部１６１に新規コンテナ１７０の追加を指示する。コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、候補ＶＭ１５０に対応するエントリの割当リソース３０６に要求リソース量を加算する。また、コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを追加し、追加されたエントリの仮想マシンＩＤ４０１に候補ＶＭ１５０の識別子を設定し、また、当該エントリの性能保証４０３に要求リソース量を設定する。さらに、コンテナ制御部１２０は、追加されたエントリのコンテナＩＤ４０２に新規コンテナ１７０の識別子を設定する。なお、新規コンテナ１７０がベストエフォート型のコンテナの場合、性能保証４０３には「ベストエフォート」が設定される。
【００６７】
ステップＳ５０３において、候補ＶＭ１５０に要求リソース量分の空きリソースが存在しないと判定された場合、コンテナ制御部１２０は、候補ＶＭ１５０が稼働する物理サーバ１０２に要求リソース量分の空きリソースが存在するか否かを判定する（ステップＳ５０４）。以下の説明では候補ＶＭ１５０が稼働する物理サーバ１０２を対象物理サーバ１０２とも記載する。具体的には、以下のような処理が実行される。
【００６８】
コンテナ制御部１２０は、候補ＶＭ１５０に対応するエントリの物理サーバＩＤ３０１から対象物理サーバ１０２の識別子を取得する。コンテナ制御部１２０は、対象物理サーバ１０２の識別子に基づいて物理サーバ管理テーブル１２２を参照して、対象物理サーバ１０２に一致するエントリを検索する。コンテナ制御部１２０は、検索されたエントリのリソース２０２の値を取得する。
【００６９】
コンテナ制御部１２０は、対象物理サーバ１０２の識別子に基づいて仮想マシン管理テーブル１２３を参照して、対象物理サーバ上で稼働する全てのＶＭ１５０のエントリを検索する。コンテナ制御部１２０は、検索された各エントリの割当リソース３０６の合計値を算出する。コンテナ制御部１２０は、算出された合計値に要求リソース量を加算して、予測リソース量を算出する。コンテナ制御部１２０は、リソース２０２の値から予測リソース量を減算して、対象物理サーバ１０２の空きリソース量を算出する。
【００７０】
コンテナ制御部１２０は、対象物理サーバ１０２の空きリソース量が要求リソース量以上であるか否かを判定する。対象物理サーバ１０２の空きリソース量が要求リソース量以上である場合、コンテナ制御部１２０は、対象物理サーバ１０２に要求リソース量分の空きリソースが存在すると判定する。以上がステップＳ５０４の処理の説明である。
【００７１】
対象物理サーバ１０２に要求リソース量分の空きリソースが存在すると判定された場合、コンテナ制御部１２０は、リソース調整処理を実行する（ステップＳ５０５）、リソース調整処理の詳細は図６を用いて説明する。
【００７２】
コンテナ制御部１２０は、リソース調整処理が終了した後、候補ＶＭ１５０に新規コンテナ１７０を追加する（ステップＳ５１１）。コンテナ制御部１２０は、仮想マシン管理テーブル１２３及びコンテナ管理テーブル１２４を更新する（ステップＳ５１２）。その後、コンテナ制御部１２０は、処理を終了する。
【００７３】
具体的には、コンテナ制御部１２０は、ハイパバイザ１４０を介してコンテナ実行部１６１に新規コンテナ１７０の追加を指示する。コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、候補ＶＭ１５０に対応するエントリの割当リソース３０６に要求リソース量を加算する。また、コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを追加し、追加されたエントリの仮想マシンＩＤ４０１に候補ＶＭ１５０の識別子を設定し、また、当該エントリの性能保証４０３に要求リソース量を設定する。さらに、コンテナ制御部１２０は、追加されたエントリのコンテナＩＤ４０２に新規コンテナ１７０の識別子を設定する。
【００７４】
ステップＳ５０４において、対象物理サーバ１０２に要求リソース量分の空きリソースが存在しないと判定された場合、コンテナ制御部１２０は、ステップＳ５０６に進む。
【００７５】
ステップＳ５０２又はステップＳ５０４の判定結果がＮＯである場合、コンテナ制御部１２０は、全てのＶＭ１５０について処理が完了したか否かを判定する（ステップＳ５０６）。
【００７６】
全てのＶＭ１５０について処理が完了していないと判定された場合、コンテナ制御部１２０は、ステップＳ５０１に戻り、新たにＶＭ１５０を選択する。
【００７７】
全てのＶＭ１５０について処理が完了していると判定された場合、コンテナ制御部１２０は、物理サーバ１０２のループ処理を開始する（ステップＳ５０７）。
【００７８】
具体的には、コンテナ制御部１２０は、物理サーバ管理テーブル１２２を参照して、対象のエントリ（物理サーバ１０２）を一つ選択する。
【００７９】
コンテナ制御部１２０は、選択された物理サーバ１０２に要求リソース量分の空きリソースが存在するか否かを判定する（ステップＳ５０８）。具体的には、以下のような処理が実行される。
【００８０】
コンテナ制御部１２０は、物理サーバ管理テーブル１２２を参照して、物理サーバＩＤ２０１が選択された物理サーバ１０２の識別子に一致するエントリを検索する。コンテナ制御部１２０は、検索されたエントリのリソース２０２の値を取得する。
【００８１】
コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、物理サーバＩＤ３０１が選択された物理サーバ１０２の識別子に一致するエントリを抽出する。コンテナ制御部１２０は、抽出されたエントリの最小リソース３０５の合計値を算出する。
【００８２】
コンテナ制御部１２０は、リソース２０２から最小リソース３０５の合計値を減算し、算出された値が要求リソース量以上であるか否かを判定する。算出された値が要求リソース量以上である場合、コンテナ制御部１２０は、選択された物理サーバ１０２に要求リソース量分の空きリソースが存在すると判定する。以上がステップＳ５０８の処理の説明である。
【００８３】
選択された物理サーバ１０２に要求リソース量分の空きリソースが存在しないと判定された場合、コンテナ制御部１２０は、全ての物理サーバ１０２について処理が完了したか否かを判定する（ステップＳ５１３）。
【００８４】
全ての物理サーバ１０２について処理が完了していないと判定された場合、コンテナ制御部１２０は、ステップＳ５０７に戻り、新たな物理サーバ１０２を選択する。
【００８５】
全ての物理サーバ１０２について処理が完了したと判定された場合、コンテナ制御部１２０は、物理サーバ１０２の追加処理を実行し（ステップＳ５１４）、その後、処理を終了する。物理サーバ１０２に追加処理（デプロイ処理）の詳細は図７を用いて説明する。
【００８６】
ステップＳ５０８において、選択された物理サーバ１０２に要求リソース量分の空きリソースが存在すると判定された場合、コンテナ制御部１２０は、追加要求に含まれるＯＳ１６０の種別に基づいて、要求された種類のＯＳ１６０を稼働させるＶＭ１５０を追加する（ステップＳ５０９）。ＶＭ１５０の追加方法は公知であるため詳細な説明は省略する。コンテナ制御部１２０は、仮想マシン管理テーブル１２３を更新する（ステップＳ５１０）。
【００８７】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３に追加されたＶＭ１５０のエントリを追加する。また、コンテナ制御部１２０は、仮想マシンＩＤ３０２に所定の識別子を設定し、物理サーバＩＤ３０１に選択された物理サーバ１０２の識別子を設定し、また、ＯＳ種別３０３に追加要求に含まれるＯＳ１６０の種別を設定する。仮想リソース３０４及び割当リソース３０６には、物理サーバ１０２のリソースの空きに応じて、全ての空きリソース、又は、一定の割合のリソースが設定される。
【００８８】
次に、コンテナ制御部１２０は、追加されたＶＭ１５０に新規コンテナ１７０を追加する（ステップＳ５１１）。コンテナ制御部１２０は、仮想マシン管理テーブル１２３及びコンテナ管理テーブル１２４を更新する（ステップＳ５１２）。その後、コンテナ制御部１２０は、処理を終了する。
【００８９】
具体的には、コンテナ制御部１２０は、ハイパバイザ１４０を介して、コンテナ実行部１６１に新規コンテナ１７０の追加を指示する。コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、追加されたＶＭ１５０に対応するエントリの仮想リソース３０４、及び最小リソース３０５に初期値を設定し、また、割当リソース３０６に要求リソース量を設定する。また、コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを追加し、追加されたエントリの仮想マシンＩＤ４０１に追加されたＶＭ１５０の識別子を設定し、また、当該エントリの性能保証４０３に要求リソース量を設定する。さらに、コンテナ制御部１２０は、追加されたエントリのコンテナＩＤ４０２に新規コンテナ１７０の識別子を設定する。
【００９０】
なお、仮想リソース３０４及び最小リソース３０５に設定する初期値は、予め設定された計算機式に基づいて算出された値を設定してもよいし、管理者によって入力された値を設定してもよい。
【００９１】
図６は、実施例１のコンテナ制御部１２０が実行するリソース調整処理の一例を示すフローチャートである。リソース調整処理には入力としてステップＳ５０４において選択された物理サーバ１０２の識別子が入力される。
【００９２】
コンテナ制御部１２０は、対象物理サーバ１０２上のベストエフォート型のコンテナ１７０に割り当てるリソース量を算出する（ステップＳ６０１）。
【００９３】
本実施例では、対象物理サーバ１０２のリソース量から性能保証型のコンテナ１７０に割り当てられたリソース量の合計値を減算することによって算出されるリソース量がベストエフォート型のコンテナ１７０にオーバーコミットされるものとする。この場合、下式（５）を用いてベストエフォート型のコンテナ１７０に割り当てるリソース量が算出される。なお、Ｔｋは下式（６）で与えられる。なお、添え字ｋは、対象物理サーバ１０２上で稼働するＶＭ１５０の識別子に対応する。
【００９４】
【数５】
0006374845.tif 000006
【００９５】
【数６】
0006374845.tif 000007
【００９６】
ここで、ｒｂはベストエフォート型のコンテナ１７０に割り当てるリソース量である。Ｔｋは、識別子が「ｋ」であるＶＭ１５０上の性能保証型のコンテナ１７０に割り当てられたリソース量の合計値である。ｒｐｎｅｗは、要求リソース量である。
【００９７】
次に、コンテナ制御部１２０は、対象物理サーバ１０２上の各ＶＭ１５０に割り当てるリソース量を調整するために、対象物理サーバ１０２上のＶＭ１５０のループ処理を開始する（ステップＳ６０２）。
【００９８】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照して、物理サーバＩＤ３０１が対象物理サーバ１０２の識別子と一致するエントリを検索する。コンテナ制御部１２０は、検索されたエントリの中から対象のエントリ（ＶＭ１５０）を選択する。本実施例では、仮想マシンＩＤ３０２が小さい順にエントリが選択されるものとする。なお、本発明は選択するエントリの順番に依存しない。
【００９９】
次に、コンテナ制御部１２０は、選択されたＶＭ１５０に新たに割り当てる新リソース量を算出する（ステップＳ６０３）。本実施例では、コンテナ制御部１２０は、下式（７）を用いて選択されたＶＭ１５０の新リソース量を算出する。
【０１００】
【数７】
0006374845.tif 000008
【０１０１】
ここで、ｖＲｊｎｅｗは識別子が「ｊ」である対象物理サーバ１０２の新リソース量である。
【０１０２】
次に、コンテナ制御部１２０は、新リソース量が選択されたＶＭ１５０に現在割り当てられるリソース量より大きいか否かを判定する（ステップＳ６０４）。
【０１０３】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、選択されたＶＭ１５０に対応するエントリの仮想リソース３０４の値を取得する。コンテナ制御部１２０は、新リソース量が仮想リソース３０４の値より大きいか否か判定する。
【０１０４】
新リソース量が選択されたＶＭ１５０に現在割り当てられるリソース量より大きいと判定された場合、コンテナ制御部１２０は、当該ＶＭ１５０に割り当てるリソース量を追加し（ステップＳ６０５）、その後、ステップＳ６０７に進む。
【０１０５】
具体的には、コンテナ制御部１２０は、新リソース量と現在のリソース量との差を算出し、算出された差の分だけ計算機リソース量を追加する。また、コンテナ制御部１２０は、選択されたＶＭ１５０に対応するエントリの仮想リソース３０４に新リソース量を設定する。
【０１０６】
新リソース量が選択されたＶＭ１５０に現在割り当てられるリソース量以下であると判定された場合、コンテナ制御部１２０は、当該ＶＭ１５０に割り当てるリソース量を削減し（ステップＳ６０６）、その後、ステップＳ６０７に進む。
【０１０７】
具体的には、コンテナ制御部１２０は、新リソース量と現在のリソース量との差を算出し、算出された差の分だけ計算機リソース量を削減する。また、コンテナ制御部１２０は、選択されたＶＭ１５０に対応するエントリの仮想リソース３０４に新リソース量を設定する。
【０１０８】
ステップＳ６０５又はステップＳ６０６の処理が完了した後、コンテナ制御部１２０は、対象物理サーバ１０２上で稼働する全てのＶＭ１５０について処理が完了したか否かを判定する（ステップＳ６０７）。
【０１０９】
対象物理サーバ１０２上で稼働する全てのＶＭ１５０について処理が完了していないと判定された場合、コンテナ制御部１２０は、ステップＳ６０２に戻り、新たにＶＭ１５０を選択する。対象物理サーバ１０２上で稼働する全てのＶＭ１５０について処理が完了したと判定された場合、コンテナ制御部１２０は、処理を終了する。
【０１１０】
以上の処理によって、対象ＶＭ１５０以外のＶＭ１５０のうち、少なくとも一つのＶＭ１５０の計算機リソース量が削減される。一方、対象ＶＭ１５０の計算機リソース量は追加される。
【０１１１】
図７は、実施例１のコンテナ制御部１２０が実行する物理サーバ１０２の追加処理の一例を示すフローチャートである。
【０１１２】
コンテナ制御部１２０は、物理サーバ追加部１２１に新規物理サーバ１０２の追加を指示し（ステップＳ７０１）、物理サーバ管理テーブル１２２を更新する（ステップＳ７０２）。
【０１１３】
具体的には、コンテナ制御部１２０は、物理サーバ管理テーブル１２２に新たなエントリを追加し、物理サーバＩＤ２０１に新規物理サーバ１０２の識別子を設定し、また、リソース２０２に新規物理サーバ１０２のリソース量を設定する。
【０１１４】
次に、コンテナ制御部１２０は、新規物理サーバ１０２に新規コンテナ１７０を追加するためのＶＭ１５０を生成するか否かを判定する（ステップＳ７０３）。
【０１１５】
例えば、コンテナ制御部１２０は、新規物理サーバ１０２にＶＭ１５０を生成するか否かを選択する画面を表示し、管理者からの操作を受け付ける方法が考えられる。また、コンテナ制御部１２０がオートスケール等の自動制御を行っている場合には、自動制御の種類に応じたポリシを設定し、当該制御ポリシに基づいて判定する方法も考えられる。なお、オートスケールとは、コンテナ１７０の数を自動的に増加又は削減する処理を示す。
【０１１６】
新規物理サーバ１０２にＶＭ１５０を生成しない場合、コンテナ制御部１２０は、既存のＶＭ１５０を新規物理サーバ１０２に移動し、当該ＶＭ１５０上に新規コンテナ１７０を追加する。
【０１１７】
新規物理サーバ１０２にＶＭ１５０を生成しないと判定された場合、コンテナ制御部１２０は、移動させるＶＭ１５０を選択し（ステップＳ７０４）、選択されたＶＭ１５０を新規物理サーバ１０２に移動する（ステップＳ７０５）。
【０１１８】
本実施例では、コンテナ制御部１２０は、各物理サーバ１０２についてステップＳ５０３と同一の処理を実行することによって新規コンテナ１７０に要求されるＯＳ１６０の種別と同一の種別のＯＳ１６０が稼働するＶＭ１５０を検索する。コンテナ制御部１２０は、検索されたＶＭ１５０のうち、移動コストが最も小さいＶＭ１５０を選択する。
【０１１９】
移動コストは、ＶＭ１５０が使用するリソース量、及び稼働状況に基づいて算出される。例えば、メモリ使用量が少ない場合、ＣＰＵ使用率が低い場合、メモリへの書込頻度が低い場合、又はＩＯトラフィック量が低い場合には、移動コストは小さい。
【０１２０】
なお、移動させるＶＭ１５０の選択方法は、既存のマイグレーション処理等で用いられる方法を用いてもよい。
【０１２１】
次に、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を更新する（ステップＳ７０６）。
【０１２２】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、移動したＶＭ１５０に対応するエントリの物理サーバＩＤ３０１に新規物理サーバ１０２の識別子を設定する。
【０１２３】
コンテナ制御部１２０は、新規物理サーバ１０２に移動したＶＭ１５０にコンテナ１７０を追加する（ステップＳ７０７）。
【０１２４】
具体的には、コンテナ制御部１２０は、ハイパバイザ１４０を介して、新規コンテナ１７０の追加をコンテナ実行部１６１に指示する。
【０１２５】
次に、コンテナ制御部１２０は、仮想マシン管理テーブル１２３及びコンテナ管理テーブル１２４を更新し（ステップＳ７０８）、処理を終了する。具体的には、以下のような処理が実行される。
【０１２６】
コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、新規コンテナ１７０が追加されたＶＭ１５０に対応するエントリの仮想リソース３０４、最小リソース３０５、及び割当リソース３０６を更新する。例えば、コンテナ制御部１２０は、仮想リソース３０４、最小リソース３０５、及び割当リソース３０６のそれぞれに要求リソース量を加算する。
【０１２７】
なお、仮想リソース３０４、最小リソース３０５、及び割当リソース３０６の更新方法は前述した方法に限定されない。例えば、物理サーバ１０２の全リソース量を予め割り当てる方法、一定量を割り当てる方法などが考えられる。
【０１２８】
また、コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを追加し、追加されたエントリの仮想マシンＩＤ４０１に移動したＶＭ１５０の識別子を設定し、また、当該エントリの性能保証４０３に要求リソース量を設定する。さらに、コンテナ制御部１２０は、追加されたエントリのコンテナＩＤ４０２に新規コンテナ１７０の識別子を設定する。以上がステップＳ７０８の処理の説明である。
【０１２９】
ステップＳ７０３において、新規物理サーバ１０２にＶＭ１５０を生成すると判定された場合、コンテナ制御部１２０は、新規物理サーバ１０２に新規ＶＭ１５０を追加し（ステップＳ７０９）、仮想マシン管理テーブル１２３を更新する（ステップＳ７１０）。ＶＭ１５０の追加方法は公知であるため詳細な説明を省略する。
【０１３０】
具体的には、コンテナ制御部１２０は、仮想マシン管理テーブル１２３にエントリを追加し、追加されたエントリの物理サーバＩＤ３０１に新規物理サーバ１０２の識別子、仮想マシンＩＤ３０２に新規ＶＭ１５０の識別子、ＯＳ種別３０３に追加要求に含まれるＯＳ１６０の識別子を設定する。
【０１３１】
コンテナ制御部１２０は、新規物理サーバ１０２に追加された新規ＶＭ１５０にコンテナ１７０を追加する（ステップＳ７０７）。コンテナ制御部１２０は、仮想マシン管理テーブル１２３及びコンテナ管理テーブル１２４を更新し（ステップＳ７０８）、処理を終了する。具体的には、以下のような処理が実行される。
【０１３２】
コンテナ制御部１２０は、ハイパバイザ１４０を介して、コンテナ実行部１６１に新規コンテナ１７０の追加を指示する。コンテナ制御部１２０は、仮想マシン管理テーブル１２３を参照し、新規ＶＭ１５０に対応するエントリの仮想リソース３０４、及び最小リソース３０５に初期値を設定し、また、割当リソース３０６に要求リソース量を設定する。また、コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを追加し、追加されたエントリの仮想マシンＩＤ４０１に新規ＶＭ１５０の識別子を設定し、また、当該エントリの性能保証４０３に要求リソース量を設定する。さらに、コンテナ制御部１２０は、追加されたエントリのコンテナＩＤ４０２に新規コンテナ１７０の識別子を設定する。
【０１３３】
なお、仮想リソース３０４及び最小リソース３０５に設定する初期値は、予め設定された計算機式に基づいて算出された値を設定してもよいし、管理者によって入力された値を設定してもよい。
【０１３４】
ここで、図８及び図９を用いてコンテナ制御部１２０が実行する処理の具体例について説明する。なお、以下の説明では、物理サーバ管理テーブル１２２、仮想マシン管理テーブル１２３、及びコンテナ管理テーブル１２４は、図２、図３、及び図４に示すような状態であるものとする。
【０１３５】
まず、リソース調整処理を伴う新規コンテナ１７０の追加処理の一例を説明する。図８は、実施例１のリソース調整処理を伴う新規コンテナ１７０の追加処理が実行された後の仮想マシン管理テーブル１２３の一例を示す図である。ここでは、コンテナ制御部１２０は、ＯＳ１６０の種別が「ＯＳ２」、要求リソース量が「２」の新規コンテナ１７０の生成が指示されてものとする。
【０１３６】
ステップＳ５０２において、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「２」であるＶＭ１５０を、候補ＶＭ１５０として特定する。候補ＶＭ１５０の仮想リソース３０４は「２０」、割当リソース３０６は「１８．２」である。この場合、候補ＶＭ１５０の空きリソース量は「１．８」であり、要求リソース量より小さい。したがって、ステップＳ５０３の判定結果はＮＯとなる。
【０１３７】
ステップＳ５０４では、コンテナ制御部１２０は、物理サーバ管理テーブル１２２の物理サーバＩＤ２０１が「１」のエントリを参照し、リソース２０２の値「３２」を取得する。識別子が「１」である物理サーバ１０２上で稼働するコンテナ１７０の割当リソース３０６の合計値「２８．４」であり、当該物理サーバ１０２の空きリソース量は「３．６」となる。したがって、ステップＳ５０４の判定結果はＹＥＳとなり、リソース調整処理が実行される。
【０１３８】
ステップＳ６０１において、識別子が「１」のＶＭ１５０のＴｋは「１０」、識別子が「２」のＶＭ１５０のＴｋは「１８」と算出される。要求リソース量は「２」であるため、式（５）からベストエフォート型のコンテナ１７０に割り当てるリソース量は「２」となる。
【０１３９】
識別子が「１」のＶＭ１５０については、ステップＳ６０３において、新リソース量は式（７）より「１４」と算出される。また、当該ＶＭ１５０の仮想リソース３０４は「１６」である。したがって、ステップＳ６０４の判定結果はＮＯとなる。そのため、ステップＳ６０６において、コンテナ制御部１２０は、識別子が「１」のＶＭ１５０のリソース量を「１６」から「１４」まで削減する。
【０１４０】
識別子が「２」のＶＭ１５０については、ステップＳ６０３において、新リソース量は式（７）より「２２」と算出される。また、当該ＶＭ１５０の仮想リソース３０４は「２０」である。したがって、ステップＳ６０４の判定結果はＹＥＳとなる。そのため、ステップＳ６０５において、コンテナ制御部１２０は、識別子が「２」のＶＭ１５０のリソース量を「２０」から「２２」まで追加する。
【０１４１】
リソース調整処理が終了した後、ステップＳ５１１において、コンテナ制御部１２０は、候補ＶＭ１５０に新規コンテナ１７０を追加する。
【０１４２】
ステップＳ５１２において、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「１」であるエントリの仮想リソース３０４を「１４」に更新し、また、仮想マシンＩＤ３０２が「２」であるエントリの仮想リソース３０４を「２２」に更新する。また、コンテナ制御部１２０は、式（１）に基づいて各ＶＭ１５０のｖＲｉｍｉｎを算出し、それぞれのエントリの最小リソース３０５にｖＲｉｍｉｎを設定する。さらに、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「２」であるエントリの割当リソース３０６に要求リソース量「２」を追加する。
【０１４３】
以上の処理によって、図３に示す仮想マシン管理テーブル１２３は図８に示すように更新される。
【０１４４】
次に、物理サーバ１０２の追加処理を伴う新規コンテナ１７０の追加処理の一例を説明する。図９は、実施例１の物理サーバ１０２の追加処理を伴う新規コンテナ１７０の追加処理が実行された後の仮想マシン管理テーブル１２３の一例を示す図である。ここでは、コンテナ制御部１２０は、ＯＳ１６０の種別が「ＯＳ１」、要求リソース量が「６」の新規コンテナ１７０の生成が指示されてものとする。
【０１４５】
ステップＳ５０２において、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「１」であるＶＭ１５０を、候補ＶＭ１５０として特定する。候補ＶＭ１５０の仮想リソース３０４は「１６」、割当リソース３０６は「１０．２」である。この場合、候補ＶＭ１５０の空きリソース量は「５．８」であり、要求リソース量より小さい。したがって、ステップＳ５０３の判定結果はＮＯとなる。
【０１４６】
ステップＳ５０４では、コンテナ制御部１２０は、物理サーバ管理テーブル１２２の物理サーバＩＤ２０１が「１」のエントリを参照し、リソース２０２の値「３２」を取得する。識別子が「１」である物理サーバ１０２上で稼働するコンテナ１７０の割当リソース３０６の合計値「２８．４」であり、当該物理サーバ１０２の空きリソース量は「３．６」となる。したがって、ステップＳ５０４の判定結果はＮＯとなる。
【０１４７】
ステップＳ５０８では、識別子が「１」である物理サーバ１０２上のＶＭ１５０の最小リソース３０５の合計値は「２８」であり、リソース２０２との差は「４」となる。また、識別子が「２」である物理サーバ１０２上のＶＭ１５０の最小リソース３０５の合計値は「３０」であり、リソース２０２との差は「２」となる。したがって、ステップＳ５０８の判定結果はＮＯとなり、物理サーバ１０２の追加処理が実行される。ここでは、移動指示を受け付けているものとする。
【０１４８】
ステップＳ７０１では、コンテナ制御部１２０が、新規物理サーバ１０２を追加する。ここでは、新規物理サーバ１０２の識別子は「３」であるものとする。ステップＳ７０３の判定結果はＮＯであるため、コンテナ制御部１２０は、ステップＳ７０４において移動させるＶＭ１５０を選択する。本実施例では、識別子が「１」であるＶＭ１５０が選択される。
【０１４９】
ステップＳ７０５では、コンテナ制御部１２０は、新規物理サーバ１０２に識別子が「１」であるＶＭ１５０を移動する。ステップＳ７０６において、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「１」であるエントリの物理サーバＩＤ３０１に「３」を設定する。ステップ７０７において、コンテナ制御部１２０は、識別子が「１」であるＶＭ１５０に新規コンテナ１７０を追加する。
【０１５０】
ステップＳ７０８では、コンテナ制御部１２０は、仮想マシンＩＤ３０２が「１」であるエントリの仮想リソース３０４及び最小リソース３０５に「６」を加算し、割当リソース３０６に「６」を設定する。コンテナ制御部１２０は、コンテナ管理テーブル１２４にエントリを生成し、コンテナＩＤ４０２に所定の識別子を設定する。さらに、コンテナ制御部１２０は、生成されたエントリの仮想マシンＩＤ４０１に「１」を設定し、性能保証４０３に「６」を設定する。
【０１５１】
以上の処理によって、図３に示す仮想マシン管理テーブル１２３は図９に示すように更新される。
【０１５２】
本発明によれば、コンテナ制御部１２０は、既存の物理サーバ１０２におけるＶＭ１５０への計算機リソースの割当量を調整する。すなわち、コンテナ制御部１２０は、候補ＶＭ１５０とは異なるＶＭ１５０の計算機リソース量を削減し、候補ＶＭ１５０に計算機リソース量を追加する。これによって、可能な限りコンテナ管理システムに新たな物理サーバ１０２を追加することなく、新規コンテナ１７０を配置することができる。すなわち、少数の物理サーバ１０２上にＯＳ１６０の種別が異なる複数のコンテナ１７０を高密度に配置できる。
【０１５３】
また、本発明では、ステップＳ６０１に示すように、一つのＶＭ１５０上に性能保証型のコンテナ１７０及びベストエフォート型のコンテナ１７０が混在する場合、コンテナ制御部１２０は、ＶＭ１５０に計算機リソースをオーバーコミットする。これによって、性能保証型のコンテナ１７０及びベストエフォート型のコンテナ１７０が混在するシステムにも柔軟に対応することができる。
【０１５４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１５５】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１５６】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１５７】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１５８】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１５９】
１０１  管理サーバ
１０２  物理サーバ
１０３  クライアント端末
１２０  コンテナ制御部
１２１  物理サーバ追加部
１２２  物理サーバ管理テーブル
１２３  仮想マシン管理テーブル
１２４  コンテナ管理テーブル
１４０  ハイパバイザ
１５０  ＶＭ
１６０  ＯＳ
１６１  コンテナ実行部
１７０  コンテナ
【図１】
0006374845.tif 000009
【図２】
0006374845.tif 000010
【図３】
0006374845.tif 000011
【図４】
0006374845.tif 000012
【図５】
0006374845.tif 000013
【図６】
0006374845.tif 000014
【図７】
0006374845.tif 000015
【図８】
0006374845.tif 000016
【図９】
0006374845.tif 000017