(57)【要約】【課題】現用系の仮想マシンの性能保証を可能にすると共に、待機系の仮想マシンを含むシステム全体についてのリソース利用効率を改善すること。【解決手段】システムが稼働している状態において、現用系ＡＣＴの仮想マシンの仮想ＣＰＵコア１２に占有の物理ＣＰＵコア１１を割り当て、待機系ＳＢＹの仮想マシンの仮想ＣＰＵコア１２には共有の物理ＣＰＵコア１１を割り当てて物理リソースの利用効率を改善する。各仮想マシンを起動する際には、専用の起動用コア、共有コア、占有コアのいずれかを割り当て、各仮想マシンが起動した後で、リソース割り当てを変更し、共有コア及び占有コアを現用系ＡＣＴ及び待機系ＳＢＹに適切に振り分ける。現用系ＡＣＴの仮想マシンに障害が発生した場合には、ペアの他方の仮想マシンに割り当てられた共有コアの割り当てを占有状態に変更して性能の低下を避ける。【選択図】図１Ａ
2019144717.tif 000002
【特許請求の範囲】
【請求項１】
所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するサービス提供システムであって、
前記第１仮想マシン及び前記第２仮想マシンに割り当て可能な複数のハードウェア計算機資源と、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って前記複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当てる初期リソース割り当て部と、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定めるリソース割り当て変更部と、
を備えたサービス提供システム。
【請求項２】
前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から事前に定めた起動用コアを選択し、前記起動用コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシン及び前記第２仮想マシンに対して計算機資源の割り当てを変更する、
請求項１に記載のサービス提供システム。
【請求項３】
前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から複数の仮想マシンが共通に利用可能な共有コアを選択し、前記共有コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシン及び前記第２仮想マシンに対して計算機資源の割り当てを変更する、
請求項１に記載のサービス提供システム。
【請求項４】
前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から単一の仮想マシンの占有又は実行優先度が高い占有コアを選択し、前記占有コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシンに対して計算機資源の割り当てを変更せず、且つ前記第２仮想マシンに対して計算機資源の割り当てを変更する、
請求項１に記載のサービス提供システム。
【請求項５】
アクティブ状態の前記第１仮想マシンにおける障害発生を検知し、前記第２仮想マシンに割り当てられている前記ハードウェア計算機資源が複数の仮想マシンで共有可能な共有コアである場合には、前記第２仮想マシン以外の他の仮想マシンを前記共有コアの割り当て先から排除する障害時制御部、
を備えた請求項１乃至請求項４のいずれか１項に記載のサービス提供システム。
【請求項６】
アクティブ状態の前記第１仮想マシンにおける障害発生を検知し、前記第２仮想マシンに割り当てられている前記ハードウェア計算機資源が複数の仮想マシンで共有可能な共有コアである場合には、前記複数のハードウェア計算機資源の中から占有又は優先利用可能な新たな占有コアを確保して前記第２仮想マシンに割り当てる障害時制御部、
を備えた請求項１乃至請求項４のいずれか１項に記載のサービス提供システム。
【請求項７】
所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するシステムを制御するための資源割り当て方法であって、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って予め用意された複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当て、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定める、
資源割り当て方法。
【請求項８】
所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するシステムを制御する計算機が実行可能な資源割り当てプログラムであって、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って予め用意された複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当てる初期リソース割り当て手順と、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定めるリソース割り当て変更手順と、
を有する資源割り当てプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス提供システム、資源割り当て方法、及び資源割り当てプログラムに関する。
【背景技術】
【０００２】
通信サービスを提供するキャリア網などにおいては、以前は、必要とされる様々な通信機能、例えば、ファイアウォール、パケット交換機、音声交換機などをそれぞれ独立した専用のネットワーク装置、すなわち個別のハードウェアで実現し、これらのハードウェア装置を接続してネットワークを構成していた。
【０００３】
一方、近年では仮想化技術を適用したネットワーク機能の仮想化（ＮＦＶ：Network Functions Virtualization）の採用が進展している。ネットワークの仮想化は、従来専用のハードウェアを用いて実現されていたネットワーク機能をソフトウェア化して汎用サーバ上で動作させるように構成する。仮想化技術をキャリア網に適用することで、経済的にスケーラビリティと信頼性を両立させることや、迅速なサービス提供、サービス毎の需要に応じた柔軟なリソース割り当てと、ハードウェアの寿命に縛られないサービス展開が実現できると期待されている。
【０００４】
また、システムを２４時間、３６５日休みなく稼動させるためには、まずそのシステムの可用性（Availability）を向上させることが重要になる。そこで、ＨＡ（High Availability）クラスタと呼ばれるシステムの構成が採用される。ＨＡクラスタは、サーバマシンを冗長化してシステムダウンタイムを最小化するものである。
【０００５】
上記のようなネットワーク機能の仮想化を実現するためには、各サーバのハードウェア上に仮想マシン（ＶＭ：Virtual Machine）を構築し、必要とされるそれぞれの通信機能のアプリケーションを、構築された各仮想マシン上で実行されるソフトウェアとして実現する。つまり、仮想ネットワーク機能（ＶＮＦ：Virtual Network Function）として各アプリケーションを構成する。
【０００６】
また、ＨＡクラスタのような冗長構成を採用する場合において、例えばアクティブ/スタンバイ構成であれば、同じ機能を実現する仮想ネットワーク機能のペアを予め用意して、ペアの一方をアクティブ側、すなわち現用系とし、ペアの他方をスタンバイ側、すなわち待機系とする。そして、アクティブ側の仮想ネットワーク機能に何らかの障害が発生した場合には、それとペアになっている他方の仮想ネットワーク機能をスタンバイ状態からアクティブ状態に切り替えることにより瞬時のフェイルオーバを可能にする。
【０００７】
一方、各サーバのハードウェア上に各仮想マシンや上記の仮想ネットワーク機能を構成するためには、実際に存在しているハードウェア、すなわち物理リソース、特に演算機能を、仮想マシンが必要とする仮想リソースに割り当てる必要がある。具体的には、サーバ内の各プロセッサ（ＣＰＵ）がチップ毎に複数の中核回路、すなわちＣＰＵコアを内蔵しているので、コア単位で、物理ＣＰＵコアを仮想ＣＰＵコアに割り当てることが必要になる。
【０００８】
性能要件が高い通信ソフトウェアへネットワーク仮想化技術を適用することを考えると、リアルタイム性を追求するとともに性能のゆらぎを抑えることが求められる。このような仮想化において、高い性能要件を満たすために仮想ＣＰＵを物理的なＣＰＵ（ＣＰＵコア）に固定的に対応付ける割り付け方法が用いられる。これがＣＰＵピニング（Pinning）技術である。
【０００９】
例えば、非特許文献１は、オープンソースで開発されているクラウド環境構築用のソフトウェア群である「OpenStack」において、ＣＰＵピニングを設定することを示している。具体的には、「OpenStack」においてフレーバー（flavor）と呼ばれる仮想ハードウェアのテンプレートの「Extra Specs」の項目に「hw_cpu_policy=dedicated」という形式でＣＰＵの固定割り付けポリシーを記述できることを示している。ＣＰＵの固定割り付けポリシーが設定されたフレーバーを用いることで、ＣＰＵの固定割り付けが実現できる。ただし、フレーバーは仮想マシン毎の指定である。
【００１０】
また、非特許文献２はリナックス（Linux（登録商標））カーネル仮想化基盤（ＫＶＭ：Kernel-based Virtual Machine）におけるＣＰＵピニング設定を示している。具体的には、仮想マシンの設定ファイル（ＸＭＬファイル）内の「vcpupin」の設定項目にて、仮想ＣＰＵに割り当てる物理的なＣＰＵを指定できることを示している。
【００１１】
また、例えば非特許文献３は、ＨＡ技術を示している。すなわち、通信ソフトウェアの多くはアクティブ/スタンバイ（ACT/SBY）構成や「Ｎ＋Ｍ構成」のようなＨＡ構成を採用することで可用性を高めることを示している。アクティブ/スタンバイ構成は、同じシステムを複数用意して耐障害性を高めたシステムで、幾つか(2系統の場合は片方)を待機状態にして、障害時に切り替えて処理を引き継ぐ方式である。一方、「Ｎ＋Ｍ構成」では、エラー発生時に現用ブレードの代わりに予備ブレードが稼働されるように、多数の現用ブレード（Ｎ）に対して複数の予備ブレード（Ｍ）を電源オフの状態で用意しておく。
【００１２】
例えばアクティブ/スタンバイ構成では、動作中(Active)コンポーネントと、待機中(Standby)コンポーネントが存在し、Activeコンポーネントに障害が発生した場合には、Standbyコンポーネントが処理を引き継ぐことで、サービスの停止を防ぐ、あるいは停止時間を極めて短い時間にすることが可能である。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】“Ｆｌａｖｏｒｓ”、[online]、OpenStack Docs、[２０１８年１月２２日検索]、インターネット<URL:https://docs.openstack.org/nova/pike/admin/flavors.html>
【非特許文献２】“ｌｉｂｖｉｒｔ”、[online]、Domain XML format、[２０１８年１月２２日検索]、インターネット<URL:https://libvirt.org/formatdomain.html#elementsCPUTuning/>
【非特許文献３】“Service Availability(TM) Forum, Application Interface Specification”, [online]、 Availability Management Framework, SAI-AIS-AMF-B.04.01、[２０１８年１月２２日検索]、インターネット<URL:http://devel.opensaf.org/SAI-AIS-AMF-B.04.01.AL.pdf>
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記のＨＡ構成を採用する場合、ハードウェアの障害発生を考慮すると、ＨＡ構成をとる複数のコンポーネントをそれぞれ異なるハードウェア上で動作させる必要がある。また、通信ソフトウェアに仮想化技術を適用してアクティブ/スタンバイ構成を採用する場合には、アクティブ側の仮想ネットワーク機能を実現するアクティブ側の仮想マシンと、スタンバイ側の仮想ネットワーク機能を実現するスタンバイ側の仮想マシンとをそれぞれ準備して、これらを別々のハードウェア上に配置することになる。
【００１５】
また、上記のような構成において適用する通信ソフトウェアの性能要件が高いと、例えば上記のＣＰＵピニングのような手法を採用し、ハードウェアのリソースを占有する状態でアクティブ側の仮想マシンを構築することが必要になる。また、スタンバイ側の仮想マシンについても、アクティブ側と同じ性能を確保するために同じだけのリソースを準備する必要が生じる。
【００１６】
しかしながら、障害が発生していない時にはスタンバイ側の仮想マシンは稼働していないので、スタンバイ側の仮想マシンに大きな性能を有するハードウェアリソースを固定的に割り当てておくと無駄が多くなる。つまり、アクティブ側およびスタンバイ側に同じハードウェアリソースを準備することにより、リソースの利用効率が上がらなくなり、仮想化技術のメリットが阻害される。
【００１７】
本発明は、上記の状況に鑑みてなされたものであり、現用系の仮想マシンの性能保証を可能にすると共に、待機系の仮想マシンを含むシステム全体についてのリソース利用効率を改善することが可能なサービス提供システム、資源割り当て方法、及び資源割り当てプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
（１）所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するサービス提供システムであって、
前記第１仮想マシン及び前記第２仮想マシンに割り当て可能な複数のハードウェア計算機資源と、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って前記複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当てる初期リソース割り当て部と、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定めるリソース割り当て変更部と、
を備えたサービス提供システム。
【００１９】
このサービス提供システムによれば、前記リソース割り当て変更部が前記第１仮想マシンに例えば占有の計算機資源を割り当てることにより、前記第１仮想マシンが要求される性能を満たすように十分な計算機資源を割り当てることができる。また、前記リソース割り当て変更部が前記第２仮想マシンに共有の計算機資源を割り当てることにより、システム全体について計算機資源の利用効率を改善できる。しかも、初期状態では事前に定めた初期条件に従って、前記初期リソース割り当て部が計算機資源を割り当てるので、各仮想マシンの起動時にシステム全体の動作を安定化したり、計算機資源の利用効率を高めることが可能になる。
【００２０】
（２）前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から事前に定めた起動用コアを選択し、前記起動用コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシン及び前記第２仮想マシンに対して計算機資源の割り当てを変更する、
上記（１）に記載のサービス提供システム。
【００２１】
このサービス提供システムによれば、前記第１仮想マシン及び前記第２仮想マシンに初期状態で割り当てる計算機資源が特定の起動用コアのみに限定されるので、各仮想マシンの起動時にシステム全体の動作を安定化することができる。すなわち、仮想マシンを起動する際にはＣＰＵなどの計算機資源に非常に大きな負荷がかかる可能性がある。しかし、既に稼働している他の仮想マシンに割り当てた計算機資源から独立した起動用コアで新たな仮想マシンを起動することで、起動時の負荷変動が他の仮想マシンに影響するのを避けることができる。更に前記第１仮想マシン及び前記第２仮想マシンについては、前記リソース割り当て変更部が計算機資源の割り当てを変更する。これにより、システム全体について計算機資源の利用効率を改善できる。
【００２２】
（３）前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から複数の仮想マシンが共通に利用可能な共有コアを選択し、前記共有コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシン及び前記第２仮想マシンに対して計算機資源の割り当てを変更する、
上記（１）に記載のサービス提供システム。
【００２３】
このサービス提供システムによれば、前記第１仮想マシン及び前記第２仮想マシンのいずれを起動する場合であっても、複数の仮想マシンが共有可能な共有コアを使用するので、計算機資源の利用効率を高めることが可能になる。また、起動時の負荷変動が、既に稼働しているアクティブ状態の他の仮想マシンに与える影響を抑制できる。更に前記第１仮想マシン及び前記第２仮想マシンについては、前記リソース割り当て変更部が計算機資源の割り当てを変更する。これにより、システム全体について計算機資源の利用効率を改善できる。
【００２４】
（４）前記初期リソース割り当て部は、前記複数のハードウェア計算機資源の中から単一の仮想マシンの占有又は実行優先度が高い占有コアを選択し、前記占有コアを初期状態の前記第１仮想マシン及び前記第２仮想マシンに割り当て、
前記リソース割り当て変更部は、前記第１仮想マシンに対して計算機資源の割り当てを変更せず、且つ前記第２仮想マシンに対して計算機資源の割り当てを変更する、
上記（１）に記載のサービス提供システム。
【００２５】
このサービス提供システムによれば、前記第１仮想マシンについては、前記リソース割り当て変更部が計算機資源の割り当てを変更することなく、割り当て動作を完了しそのままサービス提供を開始できる。したがって、サービスを要求してからサービスを開始するまでの遅延時間を短縮できる。また、前記第２仮想マシンに対しては前記リソース割り当て変更部が計算機資源の割り当てを変更するが、前記第２仮想マシンはスタンバイ状態なので、この割り当て変更の所要時間は、サービス開始までの遅延時間には影響しない。
【００２６】
（５）アクティブ状態の前記第１仮想マシンにおける障害発生を検知し、前記第２仮想マシンに割り当てられている前記ハードウェア計算機資源が複数の仮想マシンで共有可能な共有コアである場合には、前記第２仮想マシン以外の他の仮想マシンを前記共有コアの割り当て先から排除する障害時制御部、
を備えた上記（１）乃至（４）のいずれかに記載のサービス提供システム。
【００２７】
このサービス提供システムによれば、前記第１仮想マシンに障害が発生した場合に、前記第２仮想マシンがスタンバイ状態からアクティブ状態に切り替わるだけであり、前記第２仮想マシンに対する計算機資源の割り当てを変更する必要がない。しかも、前記第２仮想マシンに割り当てた共有コアからこれを利用する他の仮想マシンが排除されるので、アクティブ状態の前記第２仮想マシンに必要な性能を満たす計算機資源が結果的に割り当てられる。したがって、障害時のフェイルオーバに伴うサービスの中断や遅延を最小化できる。
【００２８】
（６）アクティブ状態の前記第１仮想マシンにおける障害発生を検知し、前記第２仮想マシンに割り当てられている前記ハードウェア計算機資源が複数の仮想マシンで共有可能な共有コアである場合には、前記複数のハードウェア計算機資源の中から占有又は優先利用可能な新たな占有コアを確保して前記第２仮想マシンに割り当てる障害時制御部、
を備えた上記（１）乃至（４）のいずれかに記載のサービス提供システム。
【００２９】
このサービス提供システムによれば、障害発生直後に前記第２仮想マシンに割り当てられている計算機資源を、他の多数の仮想マシンが共有した状態で使用している場合であっても、前記第２仮想マシンに対する新たな占有コアの再割り当てを短時間で完了できる。したがって、同じ計算機資源の共有により生じる前記第２仮想マシンの性能低下を短時間で回復できる。
【００３０】
（７）所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するシステムを制御するための資源割り当て方法であって、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って予め用意された複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当て、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定める、
資源割り当て方法。
【００３１】
この資源割り当て方法によれば、前記第１仮想マシンに占有の計算機資源を割り当てることにより、前記第１仮想マシンが要求される性能を満たすように十分な計算機資源を割り当てることができる。また、前記第２仮想マシンに共有の計算機資源を割り当てることにより、システム全体について計算機資源の利用効率を改善できる。しかも、初期状態では事前に定めた初期条件に従って計算機資源を割り当てるので、各仮想マシンの起動時にシステム全体の動作を安定化したり、計算機資源の利用効率を高めることが可能になる。
【００３２】
（８）所望のサービスを提供可能なアプリケーション機能を、互いにペアをなす第１仮想マシン及び第２仮想マシンにより構成し、少なくとも初期状態では前記第１仮想マシンをアクティブ状態、前記第２仮想マシンをスタンバイ状態に定め、アクティブ状態の前記第１仮想マシン又は前記第２仮想マシンを利用してサービスを提供するシステムを制御する計算機が実行可能な資源割り当てプログラムであって、
前記第１仮想マシン及び前記第２仮想マシンを起動する際に、事前に定めた初期条件に従って予め用意された複数のハードウェア計算機資源のいずれかを前記第１仮想マシン及び前記第２仮想マシンに割り当てる初期リソース割り当て手順と、
少なくともサービスを開始する前に、前記第１仮想マシンに割り当てるハードウェア計算機資源は、前記第１仮想マシンの占有又は実行優先度が高い状態に定め、前記第２仮想マシンに割り当てるハードウェア計算機資源は、前記第２仮想マシンと他の仮想マシンとの共有が可能な状態に定めるリソース割り当て変更手順と、
を有する資源割り当てプログラム。
【００３３】
この資源割り当てプログラムを所定のコンピュータで実行して前記システムを制御する場合には、例えば前記第１仮想マシンに占有の計算機資源を割り当てるので、前記第１仮想マシンが要求される性能を満たすように十分な計算機資源を割り当てることができる。また、前記第２仮想マシンに共有の計算機資源を割り当てることにより、システム全体について計算機資源の利用効率を改善できる。しかも、初期状態では事前に定めた初期条件に従って計算機資源を割り当てるので、各仮想マシンの起動時にシステム全体の動作を安定化したり、計算機資源の利用効率を高めることが可能になる。
【発明の効果】
【００３４】
本発明のサービス提供システム、資源割り当て方法、及び資源割り当てプログラムによれば、現用系の仮想マシンの性能保証を可能にすると共に、待機系の仮想マシンを含むシステム全体についてのリソース利用効率を改善することが可能である。
【図面の簡単な説明】
【００３５】
【図１Ａ】本実施形態における通信サービスを提供するシステムの構成例を示すブロック図である。
【図１Ｂ】比較例における通信サービスを提供するシステムの構成例を示すブロック図である。
【図２】本発明を実施するために必要な構成要素を備えたサービス提供システムの構成例を示すブロック図である。
【図３Ａ】仮想マシン起動時において、各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を示すブロック図である。
【図３Ｂ】割り当て変更後において、各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を示すブロック図である。
【図４】リソース割り当てを実現するための動作例を示すフローチャートである。
【図５Ａ】仮想マシン起動時において、各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を示すブロック図である。
【図５Ｂ】割り当て変更後において、各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を示すブロック図である。
【図６】リソース割り当てを実現するための動作例を示すフローチャートである。
【図７】仮想マシン起動時の各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を示すブロック図である。
【図８】図７及び図５Ｂに示したようなリソース割り当てを実現するための動作例を示すフローチャートである。
【図９Ａ】仮想マシン起動時における仮想マシン設定ファイルの内容の記述例を表す模式図である。
【図９Ｂ】仮想マシン起動時における仮想マシン設定ファイルの内容の記述例を表す模式図である。
【図９Ｃ】仮想マシン起動時における仮想マシン設定ファイルの内容の記述例を表す模式図である。
【図１０Ａ】割り当てを変更した後のアクティブ側仮想マシン設定ファイルの内容の記述例を表す模式図である。
【図１０Ｂ】割り当てを変更した後のスタンバイ側仮想マシン設定ファイルの内容の記述例を表す模式図である。
【図１１】リソース管理テーブルに従って各仮想マシンにリソースを割り当てる場合の動作例を示すフローチャートである。
【図１２Ａ】障害発生直後におけるシステムの構成及びリソース割り当て状態の例を表すブロック図である。
【図１２Ｂ】フェイルオーバの途中におけるシステムの構成及びリソース割り当て状態の例を表すブロック図である。
【図１２Ｃ】フェイルオーバ後におけるシステムの構成及びリソース割り当て状態の例を表すブロック図である。
【図１３】障害発生時のフェイルオーバのための動作例−１を示すフローチャートである。
【図１４】障害発生時のフェイルオーバのための動作例−２を示すフローチャートである。
【図１５】冗長構成管理テーブルの構成例を示す模式図である。
【図１６】リソース管理テーブルの構成例を示す模式図である。
【発明を実施するための形態】
【００３６】
本発明の実施形態について各図を参照しながら以下に説明する。
＜通信システムの基本的な構成例＞
通信サービスを提供するシステムの定常状態における基本的な構成例を図１Ａ及び図１Ｂにそれぞれ示す。なお、このシステムを管理する装置は図１Ａ及び図１Ｂにおいては省略されている。
【００３７】
図１Ｂに示す構成が一般的に想定される構成であり、図１Ａは図１Ｂの構成を改良した場合に想定される構成を表している。理解を容易にするために、まず図１Ｂに示す構成について説明する。
【００３８】
図１Ｂに示す比較例のサービス提供システム１００Ａは複数台のサーバ３１、３２、３３、及び３４を備えている。サーバ３１〜３４は、物理リソース１０−１、１０−２、１０−３、及び１０−４、すなわち計算機の動作に必要な電子回路のハードウェアをそれぞれ内蔵している。
【００３９】
また、各物理リソース１０−１〜１０−４は、独立した複数の物理ＣＰＵコア１１をそれぞれ内蔵している。実際のプロセッサ（ＣＰＵ）のハードウェアは、１つ又は複数の回路基板上に搭載された１つ又は複数の半導体集積回路のチップとして存在している。また、各チップのパッケージの中には互いに独立して動作可能な複数の中核回路、すなわち複数の物理ＣＰＵコアを含む場合が多い。したがって、このような計算機資源を管理する場合には、ＣＰＵコア毎に独立した状態で管理する必要がある。
【００４０】
図１Ｂに示した例では、サーバ３１上に仮想ネットワーク機能２１及び２２が配置され、サーバ３２上に仮想ネットワーク機能２３及び２４が配置され、サーバ３３上に仮想ネットワーク機能２１Ｂ及び２２Ｂが配置され、サーバ３４上に仮想ネットワーク機能２３Ｂ及び２４Ｂが配置されている。
【００４１】
これらの仮想ネットワーク機能２１〜２４及び２１Ｂ〜２４Ｂの各々は、通信サービスを提供するキャリア網などが必要とする様々な通信機能、例えばファイアウォール、パケット交換機、音声交換機などに対応する。但し、ここではネットワーク機能の仮想化技術ＮＦＶを採用しているので、各仮想ネットワーク機能２１〜２４及び２１Ｂ〜２４Ｂは、仮想ネットワーク機能ＶＮＦとして存在している。
【００４２】
すなわち、汎用サーバのハードウェア上で稼働する仮想マシン（ＶＭ：Virtual Machine）がそれに組み込まれたアプリケーションソフトウェアを実行することにより、各仮想ネットワーク機能ＶＮＦが実現する。例えば、図１Ｂに示した仮想ネットワーク機能２１〜２４は、互いに異なる機能を実現する仮想ネットワーク機能ＶＮＦ１、ＶＮＦ２、ＶＮＦ３、およびＶＮＦ４として利用される。
【００４３】
一方、システムを休みなく稼働させる必要があるので、図１Ｂに示したサービス提供システム１００Ａは、ＨＡクラスタのような冗長構成を採用した場合を想定している。つまり、同じ機能を実現する仮想ネットワーク機能のペアを予め用意して、ペアの一方をアクティブ側、すなわち現用系ＡＣＴとし、ペアの他方をスタンバイ側、すなわち待機系ＳＢＹとする。そして、アクティブ側の仮想ネットワーク機能に何らかの障害が発生した場合には、それとペアになっている他方の仮想ネットワーク機能をスタンバイ状態からアクティブ状態に切り替えることにより瞬時のフェイルオーバを可能にする。
【００４４】
図１Ｂの例では、仮想ネットワーク機能２１〜２４のそれぞれが現用系ＡＣＴとして稼働し、仮想ネットワーク機能２１Ｂ〜２４Ｂが待機系ＳＢＹになっている状態を想定している。したがって、例えば現用系ＡＣＴの仮想ネットワーク機能ＶＮＦ１に何らかの障害が発生した場合には、これとペアの待機系ＳＢＹの想化ネットワーク機能ＶＮＦ１、すなわち仮想ネットワーク機能２１Ｂが待機系ＳＢＹから現用系ＡＣＴに切り替わり、仮想ネットワーク機能２１の代わりに同じ通信サービスの提供を継続することができる。
【００４５】
一方、仮想ネットワーク機能２１〜２４及び２１Ｂ〜２４Ｂを実際に構成するためには、各々のアプリケーションソフトウェアを実行可能な仮想マシンを各サーバ３１〜３４上に構築する必要がある。図１Ｂの例では、仮想ネットワーク機能２１〜２４及び２１Ｂ〜２４Ｂはそれぞれ独立した仮想マシン上で実現されている。
【００４６】
また、各仮想マシンを実現するためには、それぞれが利用可能なハードウェアの機能を確保する必要がある。したがって、各仮想マシンに含まれる１つ又は複数の仮想ＣＰＵコア１２のそれぞれに対して、物理ＣＰＵコア１１を割り当てる。図１Ｂに示した構成においては、物理ＣＰＵコア１１と仮想ＣＰＵコア１２とが１対１で個別に対応付けられ、リンク１３により関連付けられている。
【００４７】
したがって、図１Ｂに示した構成においては、仮想ネットワーク機能２１〜２４及び２１Ｂ〜２４Ｂのいずれの仮想マシンにおいても、それぞれ独立した物理ＣＰＵコア１１をそれ自身の占有状態で使用することができる。つまり、各々の物理ＣＰＵコア１１の性能は変化しないので、それを仮想ＣＰＵコア１２として使用する各仮想マシンの性能も、他の仮想マシンの影響を受けることがなく変化しない。そのため、仮想ネットワーク機能２１〜２４に要求される性能を容易に保証できる。
【００４８】
また、図１Ｂの例では現用系ＡＣＴだけでなく、待機系ＳＢＹの仮想ネットワーク機能２１Ｂ〜２４Ｂに対しても、それぞれ占有状態で仮想ＣＰＵコア１２に物理ＣＰＵコア１１を割り当てている。そのため、各仮想ネットワーク機能２１Ｂ〜２４Ｂが待機系ＳＢＹから現用系ＡＣＴに切り替わった場合においても、これらに要求される性能を容易に保証できる。
【００４９】
しかし、障害が全く発生しない場合を想定すると、待機系ＳＢＹの各仮想ネットワーク機能２１Ｂ〜２４Ｂが現用系ＡＣＴに切り替わることはないので、各仮想ネットワーク機能２１Ｂ〜２４Ｂに割り当てられた全ての物理ＣＰＵコア１１は不使用状態になる。そのため、システム全体としてリソース、すなわち計算機ハードウェアの利用効率が著しく低下する。但し、実際には障害が発生した時の性能を保証する必要があるので、待機系ＳＢＹの各仮想ネットワーク機能２１Ｂ〜２４Ｂに対しても、現用系ＡＣＴと同様に十分なリソースを割り当てておく必要がある。
【００５０】
そこで、リソースの利用効率を改善するために、図１Ｂの構成の代わりに、図１Ａに示したサービス提供システム１００Ｂのような構成を採用することが想定される。図１Ａの構成について以下に説明する。
【００５１】
図１Ａに示す本実施形態のサービス提供システム１００Ｂは、図１Ｂの構成と同様に、複数台のサーバ３１、３２、３３、及び３４を備えている。サーバ３１〜３４は、物理リソース１０−１、１０−２、１０−３、及び１０−４、すなわち計算機の動作に必要な電子回路のハードウェアをそれぞれ内蔵している。また、各物理リソース１０−１〜１０−４は、独立した複数の物理ＣＰＵコア１１をそれぞれ内蔵している。
【００５２】
図１Ａに示した例では、サーバ３１上に仮想ネットワーク機能２１及び２２が配置され、サーバ３２上に仮想ネットワーク機能２３及び２４が配置され、サーバ３３上に仮想ネットワーク機能２５及び２６が配置されている。また、サーバ３４上に仮想ネットワーク機能２１Ｂ、２２Ｂ、２３Ｂ、２４Ｂ、２５Ｂ、及び２６Ｂが配置されている。
【００５３】
図１Ａの構成ではネットワーク機能の仮想化技術ＮＦＶを採用しているので、各仮想ネットワーク機能２１〜２６及び２１Ｂ〜２６Ｂは、仮想ネットワーク機能ＶＮＦとして存在している。また、現用系ＡＣＴの仮想ネットワーク機能２１と待機系ＳＢＹの仮想ネットワーク機能２１Ｂとがペアになり冗長化した仮想ネットワーク機能ＶＮＦ１を形成している。
【００５４】
同様に、仮想ネットワーク機能２２及び２２Ｂがペアになり冗長化した仮想ネットワーク機能ＶＮＦ２を形成している。また、仮想ネットワーク機能２３及び２３Ｂがペアになり冗長化した仮想ネットワーク機能ＶＮＦ３を形成している。また、仮想ネットワーク機能２４及び２４Ｂがペアになり冗長化した仮想ネットワーク機能ＶＮＦ４を形成している。また、仮想ネットワーク機能２５及び２５Ｂがペアになり冗長化した仮想ネットワーク機能ＶＮＦ５を形成している。また、仮想ネットワーク機能２６及び２６Ｂがペアになり冗長化した仮想ネットワーク機能ＶＮＦ６を形成している。
【００５５】
汎用サーバのハードウェア上で稼働する仮想マシンが、それに組み込まれたアプリケーションソフトウェアを実行することにより、図１Ａに示した各仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６が実現する。
【００５６】
図１Ａに示した構成では、仮想ネットワーク機能２１の各仮想ＣＰＵコア１２に、物理リソース１０−１の物理ＣＰＵコア１１が１対１で割り当てられている。また、仮想ネットワーク機能２２の各仮想ＣＰＵコア１２に、物理リソース１０−１の物理ＣＰＵコア１１が１対１で割り当てられている。つまり、仮想ネットワーク機能２１及び２２の各仮想マシンは、物理リソース１０−１の物理ＣＰＵコア１１を占有した状態で使用できる。
【００５７】
同様に、仮想ネットワーク機能２３の各仮想ＣＰＵコア１２に、物理リソース１０−２の物理ＣＰＵコア１１が１対１で割り当てられ、仮想ネットワーク機能２４の各仮想ＣＰＵコア１２に、物理リソース１０−２の物理ＣＰＵコア１１が１対１で割り当てられている。また、仮想ネットワーク機能２５の各仮想ＣＰＵコア１２に、物理リソース１０−３の物理ＣＰＵコア１１が１対１で割り当てられ、仮想ネットワーク機能２６の各仮想ＣＰＵコア１２に、物理リソース１０−３の物理ＣＰＵコア１１が１対１で割り当てられている。
【００５８】
一方、仮想ネットワーク機能２１Ｂ、２２Ｂ、２３Ｂ、２４Ｂ、２５Ｂ、及び２６Ｂの仮想マシンの仮想ＣＰＵコア１２は、物理リソース１０−４上の共通の物理ＣＰＵコア１１に割り当てられ、それぞれ個別にリンク１３で関連付けられている。つまり、現用系ＡＣＴの仮想ネットワーク機能２１〜２６については、いずれも物理ＣＰＵコア１１が単一の仮想マシンの占有状態で割り当てられている。また、待機系ＳＢＹの仮想ネットワーク機能２１Ｂ〜２６Ｂについては、共有の物理ＣＰＵコア１１を複数の仮想マシンが共有する状態で割り当てられている。なお、共有の物理コアとは、実際に複数の仮想マシンによって共有されているものだけではなく、アイドル状態であり複数の仮想マシンによって共有可能なものを含む。
【００５９】
つまり、待機系ＳＢＹの仮想ネットワーク機能２１Ｂ〜２６Ｂが待機系のままである状況においては、これらは能力の高いハードウェアの計算機資源を必要としない。したがって図１Ａに示すように共通の物理ＣＰＵコア１１を複数の仮想マシンで共有するように、待機系ＳＢＹの仮想ネットワーク機能２１Ｂ〜２６Ｂにリソース割り当てを行うことができる。
【００６０】
図１Ａの構成ではシステム全体のリソース利用効率が改善されているので、図１Ｂと同じハードウェアを用いて、仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の数を４から６に増やすことができる。
【００６１】
しかし、実際のシステムにおいては、状況の変化に伴い、仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の数が増減する。また、障害の発生に伴って現用系ＡＣＴと待機系ＳＢＹとが切り替わったり、新たな現用系ＡＣＴや待機系ＳＢＹを用意する必要が生じる。つまり、図１Ａに示した構成のように最初から固定的にリソースを割り当てておくことはできない。また、各仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の待機系ＳＢＹが現用系ＡＣＴに切り替わった場合には、共有リソースの割り当てにより必要な性能が得られなくなる可能性がある。
【００６２】
＜サービス提供システムの構成例＞
本発明を実施するために必要な構成要素を備えたサービス提供システムの構成例を図２に示す。つまり、図２に示したサービス提供システムは、例えば図１Ａに示したようなシステム構成を実現するために必要なハードウェアの他に、各仮想マシンや仮想ネットワーク機能ＶＮＦを実現し、これらにリソースを割り当てるための管理機能を含んでいる。
【００６３】
図２に示したリソース割当システム４０は、リソース要求部５０からの要求に従い、制御対象の物理リソース１０−１〜１０−４から各仮想マシンに割り当てる。また、リソース割当システム４０は、状況の変化に応じて物理リソース１０−１〜１０−４の割り当てを自動的に変更する。
【００６４】
物理リソース１０−１〜１０−４は、互いに独立して動作する複数の物理ＣＰＵコア１１を内蔵している。また、図２の構成では、仮想マシン起動時のために予め用意された起動用コア１１Ｂも物理リソース１０−１〜１０−４に含まれている。各物理ＣＰＵコア１１及び起動用コア１１Ｂは、例えば図１Ａに示したサーバ３１〜３４の内部にハードウェアとして実在している。
【００６５】
また、図２の構成では、仮想マシン設定ファイル１４が物理リソース１０−１〜１０−４に含まれている。この仮想マシン設定ファイル１４は、構築した各仮想マシンの設定状態を表す情報を保持するために利用される。リソース割当システム４０が各仮想マシンに物理リソースを割り当てると、その結果が仮想マシン設定ファイル１４の内容に反映される。
【００６６】
図２に示したリソース割当システム４０は、リソース要求受付部４１、ＶＭ管理部４２、リソース払出し制御部４３、監視機能部４４、及び記憶部４５を備えている。リソース要求受付部４１は、リソース要求部５０からの要求を受け付けて、該当する仮想マシンの管理や物理リソースの割り当ての動作を開始する。
【００６７】
ＶＭ管理部４２は、ＶＭ情報取得部４２ａ及びリソース操作指示部４２ｂを含む。ＶＭ管理部４２のＶＭ情報取得部４２ａは、現用系ＡＣＴ及び待機系ＳＢＹのそれぞれの仮想マシン（ＶＭ）の稼働状態の情報を取得する。また、リソース操作指示部４２ｂは、リソース払出し制御部４３に対してＣＰＵピニング設定の指示を出す。すなわち、例えば図１Ａに示した状態や、図１Ｂに示した状態のように各物理ＣＰＵコア１１を各仮想ＣＰＵコア１２に事前に定めた状態に固定的に割り当てるための指示をＶＭ管理部４２が出す。
【００６８】
リソース払出し制御部４３は、リソース管理部４３ａ、リソース抽出・選定部４３ｂ、及び仮想マシン制御部４３ｃを含んでいる。リソース管理部４３ａは利用可能な各物理リソースを管理する。リソース抽出・選定部４３ｂは、割り当て可能な物理リソースの抽出及び選定を実施する。このリソース払出し制御部４３は、リソース要求部５０からの払い出し要求と、ＶＭ管理部４２からのＣＰＵピニング設定の指示に基づき、リソース払い出し制御を行う。また、リソース払出し制御部４３は各仮想マシンの起動、終了等の制御を行う。
【００６９】
監視機能部４４は、ＶＭ監視機能部４４ａ及びリソース監視機能部４４ｂを含んでいる。この監視機能部４４は、各仮想マシン及び物理リソースの監視を行う。例えば、現用系ＡＣＴの仮想マシンと待機系ＳＢＹの仮想マシンとの間で、ハートビート（heart beat）と呼ばれる稼働情報を定期的に送受信している。この稼働情報をＶＭ監視機能部４４ａが確認することにより、各仮想マシンが正常に稼働しているか否かを識別できる。リソース監視機能部４４ｂは、物理リソース１０−１〜１０−４における各物理ＣＰＵコア１１及び１１Ｂの割り当て状態や故障の有無などを監視する。
【００７０】
記憶部４５は、リソース情報リポジトリ４５ａ及び仮想マシンイメージリポジトリ４５ｂを含んでいる。この記憶部４５は、物理リソース１０−１〜１０−４のリソース利用状況、及び各仮想マシンイメージを一元的に管理するためのデータベースである。
【００７１】
＜リソース割り当ての動作例−１＞
各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を図３Ａ及び図３Ｂに示す。図３Ａは仮想マシン起動時の割り当て状態を表し、図３Ｂは割り当て変更後の状態を表す。この動作例において、リソース払出し制御部４３は、複数のハードウェア計算機資源の中から事前に定めた起動用コアを選択する初期リソース割り当て部として機能する。リソース割り当て変更部は更に、現用系ＡＣＴの仮想マシン及び待機系ＳＢＹの仮想マシンに対して計算機資源の割り当てを変更するリソース割り当て変更部として機能する。
【００７２】
図３Ａに示した構成においては、物理リソース１０−１〜１０−４の上の物理ＣＰＵコア１１の中で、予め用意された起動用コア１１Ｂが、仮想ネットワーク機能２０及び２０Ｂに割り当てられている。つまり、同じ機能を果たす現用系ＡＣＴの仮想ネットワーク機能２０、及び待機系ＳＢＹの仮想ネットワーク機能２０Ｂの全ての仮想ＣＰＵコア１２が共通の起動用コア１１Ｂのみを共有するようにリソースを割り当ててある。したがって、起動用コア１１Ｂと、仮想ネットワーク機能２０、２０Ｂの各仮想ＣＰＵコア１２とがリンク１３で互いに関連付けられている。
【００７３】
仮想マシンを起動する際には、物理ＣＰＵコア１１などのリソースに一時的に非常に大きな負荷がかかる可能性が高い。したがって、例えば既に稼働している他の仮想マシンが同じ物理ＣＰＵコア１１を共有している場合には、新たに起動する仮想マシンが既に稼働している他の仮想マシンの性能を低下させる可能性がある。しかし、図３Ａのように起動時に使用するリソースを起動用コア１１Ｂのみに限定することにより、既に稼働している他の仮想マシンに影響を及ぼすことはなくなり、安定した状態でサービス提供を継続することが可能になる。
【００７４】
一方、図３Ｂに示した構成では、物理リソース１０−１〜１０−４上の複数の占有コア１１−Ｘが、仮想ネットワーク機能２０の仮想ＣＰＵコア１２に割り当てられ、これらがリンク１３で互いに関連付けられている。また、物理リソース１０−１〜１０−４上の複数の共有コア１１−Ｙが、仮想ネットワーク機能２０Ｂの仮想ＣＰＵコア１２に割り当てられ、これらがリンク１３で互いに関連付けられている。
【００７５】
占有コア１１−Ｘは、割り当てた物理ＣＰＵコア１１と仮想ＣＰＵコア１２とを１対１の状態のみで利用できるように、ＣＰＵピニングの手法により条件付けられたものである。したがって、既に１つの仮想ＣＰＵコア１２に割り当てられた占有コア１１−Ｘは、他の仮想ＣＰＵコア１２に割り当てることはできない。
【００７６】
共有コア１１−Ｙは、複数の仮想マシンの仮想ＣＰＵコア１２が共有できるように条件付けられている。したがって、リソース割り当てを行う際に、既に他の仮想ＣＰＵコア１２に割り当てられた共有コア１１−Ｙを、更に他の仮想ＣＰＵコア１２にも同時に割り当てることができる。
【００７７】
なお、上記各占有コア１１−Ｘ及び共有コア１１−Ｙは、事前に固定的に割り当てる必要はない。すなわち、状況に応じて各物理ＣＰＵコア１１に対する条件付けを行うことで、必要に応じて占有コア１１−Ｘ及び共有コア１１−Ｙを確保できる。例えば、占有コア１１−Ｘでも共有コア１１−Ｙでもない空の物理ＣＰＵコア１１があり、そこに仮想マシンを配置することで占有コア１１−Ｘや共有コア１１−Ｙとなるようにしてもよい。
また、ＣＰＵピニング以外の手法を用いて占有コア１１−Ｘと同じようなリソース割り当てを行うことも可能である。例えば、各物理ＣＰＵコア１１の実行優先度が、現用系ＡＣＴと待機系ＳＢＹとの間で異なる状態になるように調整すれば、占有コア１１−Ｘ及び共有コア１１−Ｙと同等の性能を有するリソースを実現できる。具体的には、カーネル仮想化基盤（ＫＶＭ）の環境であれば、仮想マシンの設定ファイル、すなわちＸＭＬファイル内の＜cputune＞項目配下の「share」の値を調整することで実現できる。
【００７８】
図３Ｂに示した構成は、図１Ａに示した構成と同等である。つまり、図３Ｂの構成において、現用系ＡＣＴの仮想ネットワーク機能２０の仮想マシンはその仮想ＣＰＵコア１２に割り当てられた占有コア１１−Ｘを占有できるので、必要とされる性能を保証するために十分なリソースを確保できる。また、待機系ＳＢＹの仮想ネットワーク機能２０Ｂの仮想マシンの仮想ＣＰＵコア１２に割り当てられた共有コア１１−Ｙは、同時に他の仮想マシンに割り当てて共有することもできるため、物理リソースの利用効率を上げることができる。
【００７９】
しかし、実際のシステムにおいては、状況の変化に伴い、例えば図１Ａに示した仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の数が増減する。また、障害の発生に伴って現用系ＡＣＴと待機系ＳＢＹとが切り替わったり、新たな現用系ＡＣＴや待機系ＳＢＹを用意する必要が生じる。したがって、図３Ｂに示した構成のように最初から固定的にリソースを割り当てておくことはできない。また、仮想ネットワーク機能ＶＮＦの待機系ＳＢＹが現用系ＡＣＴに切り替わった場合には、共有リソースの割り当てにより必要な性能が得られなくなる可能性がある。
【００８０】
そこで、本実施形態においては、各仮想マシンを起動する際に、図３Ａに示したような構成になるようにリソースを割り当てる。そして、図３Ａに示した状態から、リソースの割り当てを変更して図３Ｂに示した状態に切り替える。つまり、以下に示すように制御する。
【００８１】
図３Ａ及び図３Ｂに示したようなリソース割り当てを実現するための動作例を図４に示す。すなわち、図２に示したリソース割当システム４０が図４に示した手順に従って動作を実行することにより、図３Ａに示した状態のようにリソースを割り当て、更に図３Ｂに示した状態のようにリソースを割り当てることができる。図４に示した動作について以下に説明する。
【００８２】
リソース割当システム４０内のリソース要求受付部４１は、リソース要求部５０からのリソース割り当て要求をステップＳ１１で受け付けて、ＶＭ管理部４２及びリソース払出し制御部４３に指示を与える。
【００８３】
リソース払出し制御部４３は、今回のリソース割り当て要求に対して割り当て可能なリソースを、ステップＳ１２で物理リソース１０−１〜１０−４上から抽出する。
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ１３で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。また、本実施形態では各仮想マシンの起動時は常に起動用コア１１Ｂを選定する。
【００８４】
リソース払出し制御部４３は、ステップＳ１１〜Ｓ１３の内容を反映するように、ステップＳ１４で管理テーブルを更新する。この管理テーブルには、例えば後述する冗長構成管理テーブルＴＢ１及びリソース管理テーブルＴＢ２が含まれる。
【００８５】
ＶＭ管理部４２は、管理テーブルの内容に従い、ステップＳ１５で現用系ＡＣＴ及び待機系ＳＢＹのそれぞれについて新たな仮想マシンを起動する。ここで起動する各仮想マシンの仮想ＣＰＵコア１２には上記管理テーブル上で起動用コア１１Ｂが割り当てられている。したがって、例えば図３Ａに示すようなリソース割り当て状態で、仮想ネットワーク機能２０及び２０Ｂの各仮想マシンがステップＳ１５で起動する。
【００８６】
ＶＭ管理部４２のＶＭ情報取得部４２ａは、ステップＳ１５で起動した各仮想マシンの起動状態をステップＳ１６でそれぞれ確認する。すなわち、現用系ＡＣＴとして起動した仮想マシンと、待機系ＳＢＹとして起動した仮想マシンとを区別する。また、その結果を反映して各仮想マシンに対するリソース割り当てを変更するように、ステップＳ１６でリソース操作指示部４２ｂがリソース払出し制御部４３に指示を与える。
【００８７】
リソース払出し制御部４３は、リソース操作指示部４２ｂの指示に従い、該当する仮想マシンに割り当て可能なリソースを、ステップＳ１７で物理リソース１０−１〜１０−４上から抽出する。
【００８８】
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ１８で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。
【００８９】
また、本実施形態では現用系ＡＣＴの仮想ＣＰＵコア１２に対しては占有コア１１−Ｘを割り当て、待機系ＳＢＹの仮想ＣＰＵコア１２に対しては共有コア１１−Ｙを割り当てるように選定する。占有コア１１−Ｘを割り当てる場合は、例えばＣＰＵピニングの手法を用いて１対１で、占有コア１１−Ｘと仮想ＣＰＵコア１２とを対応付ける。なお、例えば実際に物理ＣＰＵコア１１のリソース割り当てを行った後で、これを占有コア１１−Ｘ、又は共有コア１１−Ｙとして機能するように条件付けを変更してもよい。
【００９０】
リソース払出し制御部４３は、ステップＳ１５〜Ｓ１８の内容を反映するように、ステップＳ１９で管理テーブルを更新する。また、Ｓ１９で更新した管理テーブルの内容に従い、ＶＭ管理部４２がステップＳ２０で仮想マシン設定ファイル１４内の該当する仮想マシンの記述内容を更新する。更に、ＶＭ管理部４２の指示に従い、リソース払出し制御部４３内の仮想マシン制御部４３ｃが該当する仮想マシン（ＶＭ）をステップＳ２１で再起動する。なお、例えばカーネル仮想化基盤（ＫＶＭ）を利用している環境であれば、「virsh edit」コマンドを利用することにより、仮想マシン設定ファイル１４の内容を編集できる。
【００９１】
リソース割当システム４０内のリソース要求受付部４１は、ステップＳ１１で受け付けたリソース割り当て要求に対するリソース払い出し応答を、ステップＳ２２でリソース要求部５０に通知する。
【００９２】
したがって、図３Ａに示したようなリソース割り当て状態を経由して、図３Ｂに示したようなリソース割り当て状態で、サービス提供システムを構成するように、リソース割当システム４０が制御することができる。
【００９３】
＜リソース割り当ての動作例−２＞
各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を図５Ａ及び図５Ｂに示す。図５Ａは仮想マシン起動時の割り当て状態を表し、図５Ｂは割り当て変更後の状態を表す。この動作例において、リソース払出し制御部４３は、ハードウェア計算機資源の中から複数の仮想マシンが共通に利用可能な共有コアを選択する初期リソース割り当て部として機能する。リソース割り当て変更部は更に、現用系ＡＣＴの仮想マシン及び待機系ＳＢＹの仮想マシンに対して計算機資源の割り当てを変更するリソース割り当て変更部として機能する。
【００９４】
図５Ａに示した構成においては、物理リソース１０−１〜１０−４の上の物理ＣＰＵコア１１の中で、共有コア１１−Ｙのみが同じ機能を果たす仮想ネットワーク機能２０及び２０Ｂの各仮想ＣＰＵコア１２に割り当てられている。共有コア１１−Ｙは複数の仮想マシンが共有するように割り当てることができるので、図５Ａの構成では各共有コア１１−Ｙは、リンク１３により同時に複数の仮想ＣＰＵコア１２と関連付けられている。
【００９５】
なお、同じ機能を果たす現用系ＡＣＴの仮想ＣＰＵコア１２と待機系ＳＢＹの仮想ＣＰＵコア１２に同じ共有コア１１−Ｙを同時に割り当ててもよいし、互いに異なる共有コア１１−Ｙを現用系ＡＣＴ及び待機系ＳＢＹの仮想ＣＰＵコア１２に割り当ててもよい。
【００９６】
新たな仮想マシンの起動時に図５Ａに示した構成を採用する場合には、各仮想マシンが使用するリソースとして共有コア１１−Ｙのみが割り当てられるので、限られた物理リソースを有効に活用して仮想マシンを起動できる。したがって、物理リソースの利用効率が上がり、物理リソースを増設しなくても、より多くの仮想マシンを同時に起動することが可能になる。
【００９７】
一方、図５Ｂに示した構成では、物理リソース１０−１〜１０−４上の複数の占有コア１１−Ｘが、仮想ネットワーク機能２０の仮想ＣＰＵコア１２に割り当てられ、これらがリンク１３で互いに関連付けられている。また、物理リソース１０−１〜１０−４上の複数の共有コア１１−Ｙが、仮想ネットワーク機能２０Ｂの仮想ＣＰＵコア１２に割り当てられ、これらがリンク１３で互いに関連付けられている。
【００９８】
図５Ｂに示した構成は、図１Ａに示した構成と同等である。つまり、図５Ｂの構成において、現用系ＡＣＴの仮想ネットワーク機能２０の仮想マシンはその仮想ＣＰＵコア１２に割り当てられた占有コア１１−Ｘを占有できるので、必要とされる性能を保証するために十分なリソースを確保できる。また、待機系ＳＢＹの仮想ネットワーク機能２０Ｂの仮想マシンの仮想ＣＰＵコア１２に割り当てられた共有コア１１−Ｙは、同時に他の仮想マシンに割り当てて共有することもできるため、物理リソースの利用効率を上げることができる。
【００９９】
しかし、実際のシステムにおいては、状況の変化に伴い、例えば図１Ａに示した仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の数が増減する。また、障害の発生に伴って現用系ＡＣＴと待機系ＳＢＹとが切り替わったり、新たな現用系ＡＣＴや待機系ＳＢＹを用意する必要が生じる。したがって、図５Ｂに示した構成のように最初から固定的にリソースを割り当てておくことはできない。また、仮想ネットワーク機能ＶＮＦの待機系ＳＢＹが現用系ＡＣＴに切り替わった場合には、共有リソースの割り当てにより必要な性能が得られなくなる可能性がある。
【０１００】
そこで、本実施形態においては、各仮想マシンを起動する際に、図５Ａに示したような構成になるようにリソースを割り当てる。そして、図５Ａに示した状態から、リソースの割り当てを変更して図５Ｂに示した状態に切り替える。つまり、以下に示すように制御する。
【０１０１】
図５Ａ及び図５Ｂに示したようなリソース割り当てを実現するための動作例を図６に示す。すなわち、図２に示したリソース割当システム４０が図６に示した手順に従って動作を実行することにより、図５Ａに示した状態のようにリソースを割り当て、更に図５Ｂに示した状態のようにリソースを割り当てることができる。図６に示した動作について以下に説明する。
【０１０２】
リソース割当システム４０内のリソース要求受付部４１は、リソース要求部５０からのリソース割り当て要求をステップＳ３１で受け付けて、ＶＭ管理部４２及びリソース払出し制御部４３に指示を与える。
【０１０３】
リソース払出し制御部４３は、今回のリソース割り当て要求に対して割り当て可能なリソースを、ステップＳ３２で物理リソース１０−１〜１０−４上から抽出する。
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ３３で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。また、図６の動作を行う場合は、各仮想マシンの起動時に現用系ＡＣＴ及び待機系ＳＢＹのいずれについても常に共有コア１１−Ｙを選定する。
【０１０４】
リソース払出し制御部４３は、ステップＳ３１〜Ｓ３３の内容を反映するように、ステップＳ３４で管理テーブルを更新する。この管理テーブルには、例えば後述する冗長構成管理テーブルＴＢ１及びリソース管理テーブルＴＢ２が含まれる。
【０１０５】
ＶＭ管理部４２は、管理テーブルの内容に従い、ステップＳ３５で現用系ＡＣＴ及び待機系ＳＢＹのそれぞれについて新たな仮想マシンを起動する。ここで起動する各仮想マシンの仮想ＣＰＵコア１２には上記管理テーブル上で共有コア１１−Ｙが割り当てられている。したがって、例えば図５Ａに示すようなリソース割り当て状態で、仮想ネットワーク機能２０及び２０Ｂの各仮想マシンがステップＳ３５で起動する。
【０１０６】
ＶＭ管理部４２のＶＭ情報取得部４２ａは、ステップＳ３５で起動した各仮想マシンの起動状態をステップＳ３６でそれぞれ確認する。すなわち、現用系ＡＣＴとして起動した仮想マシンと、待機系ＳＢＹとして起動した仮想マシンとを区別する。また、その結果を反映して各仮想マシンに対するリソース割り当てを変更するように、ステップＳ３６でリソース操作指示部４２ｂがリソース払出し制御部４３に指示を与える。
【０１０７】
リソース払出し制御部４３は、リソース操作指示部４２ｂの指示に従い、該当する仮想マシンに割り当て可能なリソースを、ステップＳ３７で物理リソース１０−１〜１０−４上から抽出する。
【０１０８】
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ３８で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。
【０１０９】
また、図６の動作を行う場合には、現用系ＡＣＴの仮想ＣＰＵコア１２に対しては占有コア１１−Ｘを割り当て、待機系ＳＢＹの仮想ＣＰＵコア１２に対しては共有コア１１−Ｙを割り当てるように選定する。占有コア１１−Ｘを割り当てる場合は、例えばＣＰＵピニングの手法を用いて１対１で、占有コア１１−Ｘと仮想ＣＰＵコア１２とを対応付ける。なお、例えば実際に物理ＣＰＵコア１１のリソース割り当てを行った後で、これを占有コア１１−Ｘ、又は共有コア１１−Ｙとして機能するように条件付けを変更してもよい。
【０１１０】
リソース払出し制御部４３は、ステップＳ３５〜Ｓ３８の内容を反映するように、ステップＳ３９で管理テーブルを更新する。また、Ｓ３９で更新した管理テーブルの内容に従い、ＶＭ管理部４２がステップＳ４０で仮想マシン設定ファイル１４内の該当する仮想マシンの記述内容を更新する。更に、ＶＭ管理部４２の指示に従い、リソース払出し制御部４３内の仮想マシン制御部４３ｃが該当する仮想マシン（ＶＭ）をステップＳ４１で再起動する。
【０１１１】
リソース割当システム４０内のリソース要求受付部４１は、ステップＳ３１で受け付けたリソース割り当て要求に対するリソース払い出し応答を、ステップＳ４２でリソース要求部５０に通知する。
【０１１２】
したがって、図５Ａに示したようなリソース割り当て状態を経由して、図５Ｂに示したようなリソース割り当て状態で、サービス提供システムを構成するように、リソース割当システム４０が制御することができる。
【０１１３】
＜リソース割り当ての動作例−３＞
各仮想マシンを構成する仮想コアと物理コアとの割り当て状態の例を図７に示す。図７は仮想マシン起動時における割り当て状態を表す。なお、割り当て変更後の状態は、既に説明した図５Ｂの内容と同様である。この動作例において、リソース払出し制御部４３は、複数のハードウェア計算機資源の中から単一の仮想マシンの占有又は実行優先度が高い占有コアを選択し、この占有コアを初期状態の仮想マシンに割り当てる初期リソース割り当て部として機能する。更にリソース払出し制御部４３は、現用系ＡＣＴの仮想マシンについては、計算機資源の割り当てを変更することなく割り当て動作を完了するリソース割り当て変更部として機能する。リソース払出し制御部４３は、待機系ＳＢＹの仮想マシンについては、計算機資源の割り当てを変更するリソース割り当て変更部として機能する。
【０１１４】
図７に示した構成においては、物理リソース１０−１〜１０−４の上の物理ＣＰＵコア１１の中で、占有コア１１−Ｘのみが同じ機能を果たす仮想ネットワーク機能２０及び２０Ｂの各仮想ＣＰＵコア１２に割り当てられている。占有コア１１−Ｘは単一の仮想マシンのみが利用できるように割り当てられるので、図７の構成では独立した複数の占有コア１１−Ｘが、リンク１３により複数の仮想ＣＰＵコア１２とそれぞれ１対１で関連付けられている。
【０１１５】
なお、障害の発生を考慮すると、同じ機能を果たす現用系ＡＣＴの仮想ＣＰＵコア１２と待機系ＳＢＹの仮想ＣＰＵコア１２のそれぞれに対しては、互いに独立した別のハードウェア、例えば互いに異なるサーバの中から占有コア１１−Ｘを選定して割り当てることが望ましい。
【０１１６】
新たな仮想マシンの起動時に図７に示した構成を採用する場合には、各仮想マシンが使用するリソースとして占有コア１１−Ｘのみが割り当てられるので、最終的なリソース割り当てを完了するまでの所要時間を短縮できる。すなわち、現用系ＡＣＴの仮想マシンについては、図７に示す状態からリソース割り当てを変更しなくてもそのままサービスを開始できるので、リソース割り当ての変更に伴う処理の遅延を抑制できる。
【０１１７】
実際のシステムにおいては、状況の変化に伴い、例えば図１Ａに示した仮想ネットワーク機能ＶＮＦ１〜ＶＮＦ６の数が増減する。また、障害の発生に伴って現用系ＡＣＴと待機系ＳＢＹとが切り替わったり、新たな現用系ＡＣＴや待機系ＳＢＹを用意する必要が生じる。したがって、図７に示した構成のように最初から固定的にリソースを割り当てておくことはできない。また、図７に示した構成のままだと、待機系ＳＢＹの仮想マシンも現用系ＡＣＴと同様に占有コア１１−Ｘのリソースを占有してしまうので、物理リソースの利用効率が上がらなくなる。
【０１１８】
そこで、本実施形態においては、各仮想マシンを起動する際に、図７に示したような構成になるようにリソースを割り当てる。そして、図７に示した状態から、リソースの割り当てを変更して図５Ｂに示した状態に切り替える。つまり、以下に示すように制御する。
【０１１９】
図７及び図５Ｂに示したようなリソース割り当てを実現するための動作例を図８に示す。すなわち、図２に示したリソース割当システム４０が図８に示した手順に従って動作を実行することにより、図７に示した状態のようにリソースを割り当て、更に例えば図５Ｂに示した状態のようにリソース割り当てを変更できる。図８に示した動作について以下に説明する。
【０１２０】
リソース割当システム４０内のリソース要求受付部４１は、リソース要求部５０からのリソース割り当て要求をステップＳ５１で受け付けて、ＶＭ管理部４２及びリソース払出し制御部４３に指示を与える。
【０１２１】
リソース払出し制御部４３は、今回のリソース割り当て要求に対して割り当て可能なリソースを、ステップＳ５２で物理リソース１０−１〜１０−４上から抽出する。
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ５３で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。また、図８の動作を行う場合は、各仮想マシンの起動時に現用系ＡＣＴ及び待機系ＳＢＹのいずれについても常に占有コア１１−Ｘを選定する。
【０１２２】
リソース払出し制御部４３は、ステップＳ５１〜Ｓ５３の内容を反映するように、ステップＳ５４で管理テーブルを更新する。この管理テーブルには、例えば後述する冗長構成管理テーブルＴＢ１及びリソース管理テーブルＴＢ２が含まれる。
【０１２３】
ＶＭ管理部４２は、管理テーブルの内容に従い、ステップＳ５５で現用系ＡＣＴ及び待機系ＳＢＹのそれぞれについて新たな仮想マシンを起動する。ここで起動する各仮想マシンの仮想ＣＰＵコア１２には上記管理テーブル上で占有コア１１−Ｘが割り当てられている。したがって、例えば図７に示すようなリソース割り当て状態で、仮想ネットワーク機能２０及び２０Ｂの各仮想マシンがステップＳ５５で起動する。
【０１２４】
ＶＭ管理部４２のＶＭ情報取得部４２ａは、ステップＳ５５で起動した各仮想マシンの起動状態をステップＳ５６でそれぞれ確認する。すなわち、現用系ＡＣＴとして起動した仮想マシンと、待機系ＳＢＹとして起動した仮想マシンとを区別する。また、その結果を反映して各仮想マシンに対するリソース割り当てを変更するように、ステップＳ５６でリソース操作指示部４２ｂがリソース払出し制御部４３に指示を与える。
【０１２５】
リソース払出し制御部４３は、リソース操作指示部４２ｂの指示に従い、該当する仮想マシンに割り当て可能なリソースを、ステップＳ５７で物理リソース１０−１〜１０−４上から抽出する。
【０１２６】
また、リソース払出し制御部４３は割り当て可能なリソースの中から、より適切なリソースをステップＳ５８で選定する。例えば、障害の発生を考慮する場合は現用系ＡＣＴと待機系ＳＢＹとを別々のハードウェア上に搭載することが望ましい。したがって、例えば現用系ＡＣＴの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１をサーバ３１上で選定した場合は、待機系ＳＢＹの仮想ＣＰＵコア１２に割り当てる物理ＣＰＵコア１１は別のサーバ３２〜３４上などから選定する。
【０１２７】
また、図８の動作を行う場合には、現用系ＡＣＴの仮想ＣＰＵコア１２に対しては占有コア１１−Ｘを割り当て、待機系ＳＢＹの仮想ＣＰＵコア１２に対しては共有コア１１−Ｙを割り当てるように選定する。占有コア１１−Ｘを割り当てる場合は、例えばＣＰＵピニングの手法を用いて１対１で、占有コア１１−Ｘと仮想ＣＰＵコア１２とを対応付ける。なお、例えば実際に物理ＣＰＵコア１１のリソース割り当てを行った後で、これを占有コア１１−Ｘ、又は共有コア１１−Ｙとして機能するように条件付けを変更してもよい。
【０１２８】
実際には、最初に仮想マシンを起動した状態、例えば図７に示した状態で、現用系ＡＣＴの仮想マシンには占有コア１１−Ｘが割り当てられているのでこれを変更する必要はない。つまり、起動時の状態で占有コア１１−Ｘが割り当てられている待機系ＳＢＹのみについて、リソース割り当て変更のための選定をステップＳ５８で実施する。
【０１２９】
リソース払出し制御部４３は、ステップＳ５５〜Ｓ５８の内容を反映するように、ステップＳ５９で管理テーブルを更新する。また、Ｓ５９で更新した管理テーブルの内容に従い、ＶＭ管理部４２がステップＳ６０で仮想マシン設定ファイル１４内の該当する仮想マシンの記述内容を更新する。更に、ＶＭ管理部４２の指示に従い、リソース払出し制御部４３内の仮想マシン制御部４３ｃが該当する仮想マシン（ＶＭ）をステップＳ６１で再起動する。
【０１３０】
リソース割当システム４０内のリソース要求受付部４１は、ステップＳ５１で受け付けたリソース割り当て要求に対するリソース払い出し応答を、ステップＳ６２でリソース要求部５０に通知する。
【０１３１】
したがって、図７に示したようなリソース割り当て状態を経由して、図５Ｂに示したようなリソース割り当て状態で、サービス提供システムを構成するように、リソース割当システム４０が制御することができる。
【０１３２】
＜仮想マシン設定ファイル１４の記述例＞
仮想マシンの初期起動時における仮想マシン設定ファイル１４の内容の記述例を図９Ａ、図９Ｂ、及び図９Ｃにそれぞれ示す。
【０１３３】
図９Ａに示した仮想マシン設定ファイル１４Ａの内容は、例えば図３Ａに示したようなリソース割り当てを実現するための記述例である。すなわち、図９Ａの記述例は、仮想マシン設定ファイル１４Ａ中の＜cputune＞項目において、０番、１番、２番の「vcpu」で示された各仮想マシンの仮想ＣＰＵコア１２に対して、起動用コア１１Ｂとして用意された０番の物理ＣＰＵコア１１を割り当てることを意味している。
【０１３４】
また、図９Ｂに示した仮想マシン設定ファイル１４Ｂの内容は、例えば図５Ａに示したようなリソース割り当てを実現するための記述例である。すなわち、図９Ｂの記述例は、仮想マシン設定ファイル１４Ｂ中の＜cputune＞項目において、０番、１番、２番の「vcpu」で示された各仮想マシンの仮想ＣＰＵコア１２に対して、共有コア１１−Ｙに相当する７番の物理ＣＰＵコア１１を割り当てることを意味している。
【０１３５】
また、図９Ｃに示した仮想マシン設定ファイル１４Ｃの内容は、例えば図７に示したようなリソース割り当てを実現するための記述例である。すなわち、図９Ｃの記述例は、仮想マシン設定ファイル１４Ｃ中の＜cputune＞項目において、０番、１番、２番の「vcpu」で示された各仮想マシンの仮想ＣＰＵコア１２に対して、占有コア１１−Ｘに相当する１番、２番、３番の各物理ＣＰＵコア１１を割り当てることを意味している。
【０１３６】
一方、割り当てを変更した後の仮想マシン設定ファイル１４の内容の記述例を図１０Ａ及び図１０Ｂにそれぞれ示す。
図１０Ａに示した仮想マシン設定ファイル１４Ｄの記述例は、例えば図３Ｂに示す割り当て状態のように、リソース割り当てを変更した後の、現用系ＡＣＴの仮想マシンに対するリソース割り当ての内容を表している。
【０１３７】
すなわち、図１０Ａの記述例では、仮想マシン設定ファイル１４Ｄ中の＜cputune＞項目において、０番、１番、２番の「vcpu」で示された各仮想マシンの仮想ＣＰＵコア１２に対して、占有コア１１−Ｘに相当する１番、２番、３番の独立した物理ＣＰＵコア１１を個別に割り当てることを意味している。
【０１３８】
図１０Ｂに示した仮想マシン設定ファイル１４Ｅの記述例は、例えば図３Ｂに示す割り当て状態のように、リソース割り当てを変更した後の、待機系ＳＢＹの仮想マシンに対するリソース割り当ての内容を表している。
【０１３９】
すなわち、図１０Ｂの記述例では、仮想マシン設定ファイル１４Ｅ中の＜cputune＞項目において、０番、１番、２番の「vcpu」で示された各仮想マシンの仮想ＣＰＵコア１２に対して、共有コア１１−Ｙに相当する７番、８番、９番の各物理ＣＰＵコア１１を割り当てることを意味している。なお、同じ１つの共有コア１１−Ｙを待機系ＳＢＹの複数又は全ての仮想ＣＰＵコア１２に割り当ててもよい。つまり、実際の物理リソースのキャパシティを超える仮想リソースを仮想マシンに割り当てること、すなわちオーバーコミットを実施することができる。
【０１４０】
＜詳細なリソース割り当て動作の具体例＞
リソース管理テーブルに従って各仮想マシンにリソースを割り当てる場合の動作例を図１１に示す。すなわち、図４中のステップＳ１６〜Ｓ１８、図６中のステップＳ３６〜Ｓ３８、図８中のステップＳ５６〜Ｓ５８に相当する処理の詳細が図１１に示されている。したがって、リソース割当システム４０が図１１に示した動作を実行することにより、例えば図３Ｂ、図５Ｂに示すような望ましい状態にリソースの割り当てを変更することができる。図１１の動作について以下に説明する。
【０１４１】
リソース払出し制御部４３は、ステップＳ７１でリソース選定テーブルを作成し、ステップＳ７２で変数Ｘを１に初期化した後、ステップＳ７３以降の処理をループ状に繰り返し実行する。
【０１４２】
リソース払出し制御部４３は、ステップＳ７３で図１６に示したようなリソース管理テーブルＴＢ２から変数Ｘの値で特定される行のリソースを選択する。なお、リソース管理テーブルＴＢ２については後で説明する。
【０１４３】
リソース払出し制御部４３は、ステップＳ７４〜Ｓ８４の間の処理を、処理対象の仮想ＣＰＵコア１２の数に相当する回数だけ繰り返し実行する。
ステップＳ７５では、リソース払出し制御部４３は割当先の仮想マシンが現用系ＡＣＴの仮想マシン「Active VM」か否かを識別する。割当先が現用系ＡＣＴであればステップＳ７６に進み、待機系ＳＢＹであればステップＳ８０に進む。
【０１４４】
ステップＳ７６では、リソース払出し制御部４３は割り当てる物理ＣＰＵコア１１が「占有」状態か否かを識別し、「占有」状態であればステップＳ７７に進み、「占有」状態でなければステップＳ７９に進む。
ステップＳ７７では、リソース払出し制御部４３は「多重率」から「使用率」を減算した結果が「要求使用率」以上か否かを識別し、この条件を満たす場合はステップＳ７８に進み、条件を満たさない場合はステップＳ７９に進む。
【０１４５】
ステップＳ７８では、リソース払出し制御部４３は、ステップＳ７１で作成したリソース選定テーブルの該当行の位置に、「割り当て可」を表す情報を書き込む。またステップＳ７９では、リソース払出し制御部４３はリソース選定テーブルの該当行の位置に「割り当て不可」を表す情報を書き込む。
【０１４６】
ステップＳ８０では、リソース払出し制御部４３は割り当てる物理ＣＰＵコア１１が「共有」状態か否かを識別し、「共有」状態であればステップＳ８１に進み、「共有」状態でなければステップＳ８３に進む。
【０１４７】
ステップＳ８１では、リソース払出し制御部４３は「多重率」から「使用率」を減算した結果が「要求使用率」以上か否かを識別し、この条件を満たす場合はステップＳ８２に進み、条件を満たさない場合はステップＳ８３に進む。
【０１４８】
ステップＳ８２では、リソース払出し制御部４３は、リソース選定テーブルの該当行の位置に、「割り当て可」を表す情報を書き込む。またステップＳ８３では、リソース払出し制御部４３はリソース選定テーブルの該当行の位置に「割り当て不可」を表す情報を書き込む。
【０１４９】
ステップＳ８５では、リソース払出し制御部４３がリソース管理テーブルＴＢ２の最後の行まで処理が完了したか否かを識別し、完了した場合はステップＳ８７に進む。完了してなければステップＳ８６に進み、変数Ｘの値をインクリメントしてからステップＳ７３に戻って上記の処理を繰り返す。
【０１５０】
ステップＳ８７では、リソース払出し制御部４３は、上記の処理の結果がハードウェア（ＨＷ）の条件を満たすか否かを識別し、条件を満たす場合はそのまま図１１の処理を終了する。ハードウェアの条件を満たさない場合は、リソース払出し制御部４３はステップＳ８８に進み、リソース選定テーブルに「割り当て不可」の情報を書き込む。ここでハードウェア条件を満たすとは、「anti-affinity」属性等のＨＷ割当条件を満足することを意味する。anti-affinity属性は、特定の仮想マシンが常に違う物理サーバで実行される必要があることを指定するものである。
【０１５１】
＜障害発生時のフェイルオーバ（failover）動作＞
システムの構成及びリソース割り当て状態の例を図１２Ａ〜図１２Ｃに示す。図１２Ａは現用系ＡＣＴの仮想ネットワーク機能２１に障害が発生した直後の状態を表し、図１２Ｂはフェイルオーバの途中の状態を表し、図１２Ｃはフェイルオーバした後の状態を表す。
【０１５２】
例えば図１Ａに示した構成のように、仮想ネットワーク機能２１および２２が稼働している状況において、図１２Ａのように現用系ＡＣＴの仮想ネットワーク機能２１に障害１９が発生する場合がある。このシステムにおいては、冗長構成として、現用系ＡＣＴの仮想ネットワーク機能２１とペアになる待機系ＳＢＹの仮想ネットワーク機能２１Ｂが存在しているので、障害発生時でも現用系ＡＣＴから待機系ＳＢＹに切り替えて、すなわちフェイルオーバしてサービスの提供をそのまま継続することが可能である。
【０１５３】
但し、図１２Ａの構成において、仮想ネットワーク機能２１Ｂの仮想ＣＰＵコア１２には共有コア１１−Ｙが割り当てられているので、このままでは使用可能なリソースの能力が不足し、フェイルオーバした後で必要な性能が得られない。したがって、フェイルオーバの際にリソースの割り当てを変更する必要がある。
【０１５４】
図１２Ａの状態から、フェイルオーバおよびリソースの割り当ての変更を実施すると、例えば図１２Ｂの状態を経て図１２Ｃに示すような状態になる。すなわち、図１２Ｂの構成では、機能を停止した仮想ネットワーク機能２１の代わりになる、新たな現用系ＡＣＴの仮想ネットワーク機能２１Ｃが用意されている。また、仮想ネットワーク機能２１Ｃは現用系ＡＣＴなのでその仮想ＣＰＵコア１２にはハードウェアリソースとして占有コア１１−Ｘが割り当てられる。また、図１２Ｂの状態では別の仮想ネットワーク機能２２Ｂがまだ同じ占有コア１１−Ｘを共有している。そこで、例えば図１２Ｃに示すように仮想ネットワーク機能２２Ｂが他の共有コア１１−Ｙを使用するようにリソース割り当てを変更する。
【０１５５】
実際には、図１２Ａの状態から図１２Ｃの状態に切り替えるために、以下に示す各ステップＳｆ１〜Ｓｆ４のような動作が実行される。
Ｓｆ１：障害１９の検出動作
監視機能部４４が障害の発生を検出するか、又は該当する仮想ネットワーク機能ＶＮＦ１のアプリケーションソフトウェアが障害の発生を検出し、それをＶＭ管理部４２に通知する。
【０１５６】
Ｓｆ２：フェイルオーバ動作
待機系ＳＢＹの仮想ネットワーク機能ＶＮＦ１のアプリケーションソフトウェアの機能により、待機系ＳＢＹから現用系ＡＣＴの仮想マシンに切り替わる。この動作は、上記のステップＳｆ１の障害検出動作より先に発生する可能性もある。
【０１５７】
Ｓｆ３：仮想マシンの起動状態確認およびＣＰＵリソース再割り当て動作
＿Ｓｆ３１：ＶＭ管理部４２が障害１９の発生した仮想マシンと冗長構成のペアを組んでいる他方の仮想マシンを冗長構成管理テーブルＴＢ１（図１５に示す）から特定してその起動状態を確認し、更にＣＰＵリソースの共有状況をリソース管理テーブルＴＢ２により確認する。例えば、リソース管理テーブルＴＢ２において「状態」が「共有」の場合には、図１２Ａのように現用系ＡＣＴで障害が発生したことをＶＭ管理部４２が確認できる。例えば図１２Ａの場合は、障害が発生した仮想ネットワーク機能２１とペアの仮想ネットワーク機能２１Ｂの仮想ＣＰＵコア１２に共有コア１１−Ｙが割り当てられているので、これを占有コア１１−Ｘに変更する必要がある。したがって、以下のステップＳｆ３１Ａ、Ｓｆ３１Ｂのいずれかを実行する。
＿＿Ｓｆ３１Ａ：現用系ＡＣＴに切り替えた仮想ネットワーク機能２１Ｂの仮想マシンに割り当てた共有コア１１−Ｙを共有している他の待機系ＳＢＹの仮想マシンを、この共有コア１１−Ｙの割当先から追い出して排除する。これにより、該当する共有コア１１−Ｙを新たな占有コア１１−Ｘとして仮想ネットワーク機能２１Ｂの仮想マシンがそのまま利用できる。
＿＿Ｓｆ３１Ｂ：新たにＣＰＵリソースを払い出し、物理ＣＰＵコア１１と仮想ＣＰＵコア１２とを１対１の関係でＣＰＵピニングにより固定的に占有するように、該当する仮想マシンの定義ファイルの内容を更新する。
＿Ｓｆ３２：上記ステップＳｆ３１Ａを実行した場合には、共有コア１１−Ｙから追い出した他の仮想マシンを使用可能な所定の状態に戻す必要がある。したがって、以下のステップＳｆ３２Ａ、Ｓｆ３２Ｂのいずれかを実行する。
＿＿Ｓｆ３２Ａ：該当する他の仮想マシンをサスペンドおよびシャットオフして、新たに待機系ＳＢＹの仮想マシンのためにＣＰＵリソースを払い出し、この仮想マシンの定義ファイルの内容を更新する。
＿＿Ｓｆ３２Ｂ：該当する他の仮想マシンを一度削除した後、再度該当する待機系ＳＢＹの仮想マシンを起動する。
【０１５８】
Ｓｆ４：新たな待機系ＳＢＹの仮想マシンの起動および組み込み動作
ＶＭ管理部４２がリソース払出し制御部４３に新たな待機系ＳＢＹの仮想マシンの起動を指示する。
【０１５９】
一方、待機系ＳＢＹの仮想マシンに障害が発生した場合には、フェイルオーバは不要なので、上記ステップＳｆ１、Ｓｆ３、及びＳｆ４のみを実行する。また、その場合のステップＳｆ３では次のように処理する。
【０１６０】
ＶＭ管理部４２が障害１９の発生した仮想マシンと冗長構成のペアを組んでいる他方の仮想マシンを冗長構成管理テーブルＴＢ１から特定してその起動状態を確認し、更にＣＰＵリソースの共有状況をリソース管理テーブルＴＢ２により確認する。例えば、リソース管理テーブルＴＢ２において「状態」が「占有」の場合には、待機系ＳＢＹで障害が発生したことをＶＭ管理部４２が確認できる。その場合は、リソースの再割り当ては行わない。
【０１６１】
＜フェイルオーバの具体的な動作例−１＞
障害発生時のフェイルオーバのための動作例−１を図１３に示す。すなわち、上記のステップＳｆ３１Ａをリソース割当システム４０が実行する場合の動作例が図１３に示されている。図１３の動作について以下に説明する。
【０１６２】
ステップＳ１０１で、監視機能部４４が障害１９の発生を検出する。例えば、正常時は現用系ＡＣＴと待機系ＳＢＹとの間で互いに通知されるハートビートの稼働情報を監視することで障害１９を検出できる。
【０１６３】
ステップＳ１０２で、ＶＭ管理部４２が、冗長構成管理テーブルＴＢ１を参照して、障害１９が発生した仮想マシンと冗長構成のペアになる正常な方の仮想マシンを特定する情報を抽出する。また、ステップＳ１０２で抽出した正常な仮想マシンの起動状態をＶＭ管理部４２がステップＳ１０３、Ｓ１０４で確認する。すなわち、該当する正常な仮想マシンの稼働状態がアクティブ状態（Active VM）か否かをステップＳ１０４で識別する。
【０１６４】
該当する正常な仮想マシンの稼働状態がアクティブ状態でない場合は、ステップＳ１０４からＳ１０５に進み、一定時間（Ｘ秒）のスリープ（Ｓｌｅｅｐ）により待機し、アクティブ状態になるまで待つ。
【０１６５】
該当する正常な仮想マシンの稼働状態がアクティブ状態になった場合には、ステップＳ１０６でリソース払出し制御部４３がリソース管理テーブルＴＢ２の内容を参照し、該当するリソースの「状態」が「共有」か否かを識別する。つまり、該当する仮想マシンの仮想ＣＰＵコア１２に割り当てられた物理ＣＰＵコア１１が共有コア１１−Ｙか否かを識別する。該当するリソースの「状態」が「共有」の場合はステップＳ１０７に進み、「共有」でない場合はステップＳ１１３に進む。
【０１６６】
ステップＳ１０７では、同じ物理ＣＰＵコア１１を共有している他の仮想マシンを、ＶＭ管理部４２がリソース管理テーブルＴＢ２上の「割当先」の情報により特定し、他の仮想マシンをサスペンドおよびシャットオフする。これにより、フェイルオーバにより新たな現用系ＡＣＴとして動作する仮想マシンに割り当てられた共有コア１１−Ｙの割当先から他の仮想マシンを追い出すことができ、この共有コア１１−Ｙを占有コア１１−Ｘとして使用できる。
【０１６７】
一方、ステップＳ１０７の処理により共有コア１１−Ｙの割当先から追い出した他の仮想マシンを使用可能な通常の状態に戻すために、リソース払出し制御部４３が各ステップＳ１０８〜Ｓ１１２を実行する。
【０１６８】
ステップＳ１０８では、リソース抽出・選定部４３ｂが該当する仮想マシンに割り当て可能な物理ＣＰＵコア１１をリソースとして抽出する。また、ステップＳ１０９ではリソース抽出・選定部４３ｂが該当する仮想マシンに割り当てる適切な物理ＣＰＵコア１１を選定する。
【０１６９】
また、ステップＳ１０９の選定結果を反映するように、ステップＳ１１０でリソース払出し制御部４３が冗長構成管理テーブルＴＢ１およびリソース管理テーブルＴＢ２の内容を更新する。更に、ステップＳ１１１でリソース払出し制御部４３が仮想マシン設定ファイル１４の内容を更新する。
【０１７０】
また、ステップＳ１１１で更新された仮想マシン設定ファイル１４の内容を反映した状態で該当する仮想マシンが動作するように、ステップＳ１１２でリソース払出し制御部４３が該当する仮想マシンを再起動する。
【０１７１】
一方、障害１９が発生した仮想マシンが待機系ＳＢＹであった場合には、それとペアの現用系ＡＣＴの仮想マシンは現状のまま継続して利用できるので、フェイルオーバは不要である。但し、障害１９が発生した待機系ＳＢＹの仮想マシンの代わりを、これ以降の障害発生に備えて準備しておく必要がある。
【０１７２】
したがって、ステップＳ１１３で、ＶＭ管理部４２が待機系ＳＢＹとして動作可能な新規仮想マシン（Standby VM）を起動するための指示をリソース払出し制御部４３に与える。リソース払出し制御部４３は、ステップＳ１１４でＶＭ管理部４２からの指示に従い、待機系ＳＢＹとして動作可能な新規仮想マシンについて、所定の起動シーケンスを実行する。例えば、図４、図６、および図８のいずれかに示した動作を実行する。
【０１７３】
＜フェイルオーバの具体的な動作例−２＞
障害発生時のフェイルオーバのための動作例−２を図１４に示す。すなわち、上記のステップＳｆ３１Ｂをリソース割当システム４０が実行する場合の動作例が図１４に示されている。図１４の動作について以下に説明する。
【０１７４】
ステップＳ１２１で、監視機能部４４が障害１９の発生を検出する。例えば、正常時は現用系ＡＣＴと待機系ＳＢＹとの間で互いに通知されるハートビートの稼働情報を監視することで障害１９を検出できる。
【０１７５】
ステップＳ１２２で、ＶＭ管理部４２が、冗長構成管理テーブルＴＢ１を参照して、障害１９が発生した仮想マシンと冗長構成のペアになる正常な方の仮想マシンを特定する情報を抽出する。また、ステップＳ１２２で抽出した正常な仮想マシンの起動状態をＶＭ管理部４２がステップＳ１２３、Ｓ１２４で確認する。すなわち、該当する正常な仮想マシンの稼働状態がアクティブ状態（Active VM）か否かをステップＳ１２４で識別する。
【０１７６】
該当する正常な仮想マシンの稼働状態がアクティブ状態でない場合は、ステップＳ１２４からＳ１２５に進み、一定時間（Ｘ秒）のスリープ（Ｓｌｅｅｐ）により待機し、アクティブ状態になるまで待つ。
【０１７７】
該当する正常な仮想マシンの稼働状態がアクティブ状態になった場合には、ステップＳ１２６でリソース払出し制御部４３がリソース管理テーブルＴＢ２の内容を参照し、該当するリソースの「状態」が「共有」か否かを識別する。つまり、該当する仮想マシンの仮想ＣＰＵコア１２に割り当てられた物理ＣＰＵコア１１が共有コア１１−Ｙか否かを識別する。該当するリソースの「状態」が「共有」の場合はステップＳ１２７に進み、「共有」でない場合はステップＳ１３１に進む。
【０１７８】
ステップＳ１２７〜Ｓ１３０では、フェイルオーバにより新たな現用系ＡＣＴとして稼働させる仮想マシンに対して、共有コア１１−Ｙの代わりに適切な占有コア１１−Ｘを割り当てるためのリソース割り当てをリソース払出し制御部４３が実行する。
【０１７９】
ステップＳ１２７では、リソース抽出・選定部４３ｂが該当する仮想マシンに割り当て可能な物理ＣＰＵコア１１をリソースとして抽出する。また、ステップＳ１２８ではリソース抽出・選定部４３ｂが該当する仮想マシンに割り当てる適切な物理ＣＰＵコア１１として占有コア１１−Ｘを選定する。
【０１８０】
また、ステップＳ１２８の選定結果を反映するように、ステップＳ１２９でリソース払出し制御部４３が冗長構成管理テーブルＴＢ１およびリソース管理テーブルＴＢ２の内容を更新する。更に、ステップＳ１３０でリソース払出し制御部４３が仮想マシン設定ファイル１４の内容を更新する。
【０１８１】
一方、障害１９が発生した仮想マシンが待機系ＳＢＹであった場合には、それとペアの現用系ＡＣＴの仮想マシンは現状のまま継続して利用できるので、フェイルオーバは不要である。但し、障害１９が発生した待機系ＳＢＹの仮想マシンの代わりを、これ以降の障害発生に備えて準備しておく必要がある。
【０１８２】
したがって、ステップＳ１３１で、ＶＭ管理部４２が待機系ＳＢＹとして動作可能な新規仮想マシン（Standby VM）を起動するための指示をリソース払出し制御部４３に与える。リソース払出し制御部４３は、ステップＳ１３２でＶＭ管理部４２からの指示に従い、待機系ＳＢＹとして動作可能な新規仮想マシンについて、所定の起動シーケンスを実行する。例えば、図４、図６、および図８のいずれかに示した動作を実行する。
【０１８３】
＜管理テーブルの構成例＞
冗長構成管理テーブルＴＢ１の構成例を図１５に示す。この冗長構成管理テーブルＴＢ１は、障害発生時に、障害の発生した仮想マシンと冗長構成のペアになるもう一方の仮想マシンを特定するために利用される。
【０１８４】
図１５に示した冗長構成管理テーブルＴＢ１は、仮想ネットワーク機能ＶＮＦのアプリケーションソフトウェア（Ａｐｐ）毎に、アプリケーションの識別子（Ａｐｐ ＩＤ）、仮想マシン番号（ＶＭ  Ｎｕｍｂｅｒ）、仮想マシン識別子（ＶＭ ＩＤ）、および仮想ＩＰアドレス（Ｖｉｒｔｕａｌ  ＩＰ）の情報を保持する領域を有している。
【０１８５】
なお、図１５の冗長構成管理テーブルＴＢ１において、仮想ＩＰアドレスの情報はなくてもよい。また、例えば仮想ＩＰアドレスの代わりに、所属する全ての仮想マシンのＩＰアドレスを管理することにより、冗長構成のペアになるもう一方の仮想マシンを把握可能である。
【０１８６】
図１５に示した例では、例えば１番目の仮想ネットワーク機能ＶＮＦ１については、仮想マシン識別子の項目に含まれている２つの情報「＃０１」、「＃０２」から、１番目の仮想マシンと２番目の仮想マシンとが冗長構成のペアとして割り当てられていることを把握できる。つまり、この場合は１番目の仮想マシンと２番目の仮想マシンの一方が現用系ＡＣＴになり、他方が待機系ＳＢＹになる。
【０１８７】
リソース管理テーブルＴＢ２の構成例を図１６に示す。このリソース管理テーブルＴＢ２は、各仮想マシンの仮想ＣＰＵコア１２に対する物理ＣＰＵコア１１の割り当て状況を管理するために利用される。
【０１８８】
図１６に示したリソース管理テーブルＴＢ２は、各物理リソース１０を示すハードウェア識別子（ＨＷ  Ｉｄ）、物理ＣＰＵコア１１のコア番号、多重率、使用率、状態、および割当先の各情報を保持する領域を有している。
【０１８９】
多重率とは、或る物理リソース１０が備える物理ＣＰＵコア１１の性能を基準として、各物理ＣＰＵコア１１の演算能力を示す指標である。ここでは、ハードウェア識別子が#0、コア番号が0の物理ＣＰＵコア１１が基準として選択されている。
使用率とは、多重率で示される物理ＣＰＵコア１１の性能のうち、どれだけが使用されているかを示す指標である。
状態とは、各物理ＣＰＵコア１１が、いずれかの仮想マシンによって占有されているか否かと、起動用として割り当てられているか否かを示すものである。図１６の例では、各物理リソース１０の物理ＣＰＵコア１１のうち１つが、起動用の専用CPUコアとして選択されている。
割当先とは、各物理ＣＰＵコア１１が、いずれかの仮想マシンに割り当てられているかを示すものである。ここでは、割り当てられていないことを示す“−”と、“Host OS”と、各仮想マシンの各仮想ＣＰＵとが記載されている。
なお、多重率、および使用率の情報は必要不可欠ではない。しかし、多重率および使用率の情報を利用することにより、待機系ＳＢＹの仮想マシンの多重度、すなわち、同一の物理ＣＰＵコア１１に何個の仮想ＣＰＵコア１２を割り当てるかを制御することが容易になる。また、多重度により、性能の異なるハードウェア間の性能の違いを吸収することが可能になる。
【０１９０】
図１６に示したリソース管理テーブルＴＢ２の例では、ハードウェア識別子が「＃０」、コア番号が「０」の物理ＣＰＵコア１１は、「起動用」の専用コア、すなわち起動用コア１１Ｂとして割り当てられている。また、ハードウェア識別子が「＃０」、コア番号が「１〜３」の各物理ＣＰＵコア１１は、「占有」状態のコア、すなわち占有コア１１−Ｘとして割り当てられている。また、例えばハードウェア識別子が「＃０」、コア番号が「２」の物理ＣＰＵコア１１は、仮想マシン識別子が「＃０１」の０番の仮想ＣＰＵコア１２（ｖＣＰＵ０）に割り当てられている。
【０１９１】
また、ハードウェア識別子が「＃１」、コア番号が「１」の各物理ＣＰＵコア１１は、「共有」状態のコア、すなわち共有コア１１−Ｙとして割り当てられている。また、例えばハードウェア識別子が「＃１」、コア番号が「１」の物理ＣＰＵコア１１は、仮想マシン識別子が「＃０２」の０番の仮想ＣＰＵコア１２（ｖＣＰＵ０）、および仮想マシン識別子が「＃０４」の０番の仮想ＣＰＵコア１２（ｖＣＰＵ０）に、これらが共有する状態で割り当てられている。
【０１９２】
また、例えばハードウェア識別子が「＃１」、コア番号が「１」の物理ＣＰＵコア１１は、多重率が「１５０％」であるので、ハードウェア識別子が「＃０」の物理ＣＰＵコア１１と比べて１．５倍の性能比であることが分かる。また、例えばハードウェア識別子が「＃１」、コア番号が「１」の物理ＣＰＵコア１１は、使用率が「２０％」であるので、残りの１３０％の性能分のリソースを更に他の仮想マシンに割り当て可能な状態であることが分かる。
【０１９３】
＜サービス提供システムの利点＞
上述のサービス提供システムにおいては、稼働状態で例えば図１Ａに示したように待機系ＳＢＹの仮想ネットワーク機能２１Ｂ〜２６Ｂの各仮想マシンの仮想ＣＰＵコア１２に対して、複数の仮想マシンで共有可能な物理ＣＰＵコア１１を割り当てることができる。したがって、通常は使用されない待機系ＳＢＹの仮想マシンに割り当てる物理リソースを減らし、システム全体のリソース利用効率を上げることができる。しかも、例えば図３Ａ、図３Ｂに示したように各仮想マシンを起動した後で物理リソースの割り当てを変更するので、状況の変化に対応して各物理リソースを効率よく割り当てることができる。
【０１９４】
また、例えば図３Ａに示したように、起動用コア１１Ｂを用いて各仮想マシンを起動し、その後で図３Ｂに示したように現用系ＡＣＴおよび待機系ＳＢＹの各仮想マシンのリソース割り当てを変更する場合には、システムの性能を安定化することができる。すなわち、仮想マシンの起動時には非常に大きな負荷がかかる可能性があり、既に稼働している他の仮想マシンの動作に影響を及ぼす可能性がある。しかし、仮想マシンの起動時に起動用コア１１Ｂのみを使用することにより、既に稼働している他の仮想マシンの物理ＣＰＵコア１１がこの負荷変動の影響を受けなくなる。
【０１９５】
また、例えば図５Ａに示したように共有コア１１−Ｙを用いて各仮想マシンを起動した後で、図５Ｂに示したように現用系ＡＣＴおよび待機系ＳＢＹの各仮想マシンのリソース割り当てを変更する場合には、システム全体のリソース利用効率を更に上げることができる。
【０１９６】
また、例えば図７に示したように占有コア１１−Ｘを用いて各仮想マシンを起動した後で、図５Ｂに示したように現用系ＡＣＴおよび待機系ＳＢＹの各仮想マシンのリソース割り当てを変更する場合には、最終的にリソース割り当てを完了するまでの所要時間を短縮できる。例えば図７に示した仮想ネットワーク機能２０の仮想マシンについては、リソース割り当てを変更しなくてもそのままサービスを開始できるので、リソース割り当ての変更に伴う遅延時間を削減できる。
【０１９７】
また、例えば図１２に示した障害１９の発生に伴いフェイルオーバを実施する際に、待機系ＳＢＹの仮想ネットワーク機能２１Ｂに割り当てられている共有コア１１−Ｙを「占有」に切り替えるようにリソース割り当てを変更することにより、フェイルオーバ後の性能保証が容易になる。
【０１９８】
更に、リソース割り当てを変更する際に、図１３に示した動作を実施して共有コア１１−Ｙから他の仮想マシンを追い出す場合には、フェイルオーバにより新たな現用系ＡＣＴになった仮想マシンに対してリソース割り当てを変更する必要がない。したがって、リソース割り当ての変更に伴う遅延時間を削減できる。
【０１９９】
また、リソース割り当てを変更する際に、図１４に示した動作を実施する場合には、共有コア１１−Ｙに多数の仮想マシンが割り当てられている場合であっても、リソース割り当ての変更を比較的少ない処理量で実現できる。
【０２００】
なお、図２に示したリソース割当システム４０の各機能については、専用のハードウェアで実現することも可能であるし、システムを管理する汎用のコンピュータが実行するプログラムとして実現することもできる。
【符号の説明】
【０２０１】
１０，１０−１〜１０−４  物理リソース（ハードウェア計算機資源）
１１  物理ＣＰＵコア
１１Ｂ  起動用コア
１１−Ｘ  占有コア
１１−Ｙ  共有コア
１２  仮想ＣＰＵコア
１３  リンク
１４，１４Ａ，１４Ｂ，１４Ｃ，１４Ｄ，１４Ｅ  仮想マシン設定ファイル
１９  障害
２０，２１，２２，２３，２４，２５，２６  仮想ネットワーク機能
２０Ｂ，２１Ｂ，２２Ｂ，２３Ｂ，２４Ｂ，２５Ｂ，２６Ｂ  仮想ネットワーク機能
３１，３２，３３，３４  サーバ
４０  リソース割当システム
４１  リソース要求受付部
４２  ＶＭ管理部（障害時制御部）
４２ａ  ＶＭ情報取得部
４２ｂ  リソース操作指示部
４３  リソース払出し制御部（初期リソース割り当て部、リソース割り当て変更部）
４３ａ  リソース管理部
４３ｂ  リソース抽出・選定部
４３ｃ  仮想マシン制御部
４４  監視機能部
４４ａ  ＶＭ監視機能部
４４ｂ  リソース監視機能部
４５  記憶部
４５ａ  リソース情報リポジトリ
４５ｂ  仮想マシンイメージリポジトリ
５０  リソース要求部
１００Ａ，１００Ｂ  サービス提供システム
ＴＢ１  冗長構成管理テーブル
ＴＢ２  リソース管理テーブル
【図１Ａ】
2019144717.tif 000003
【図１Ｂ】
2019144717.tif 000004
【図２】
2019144717.tif 000005
【図３Ａ】
2019144717.tif 000006
【図３Ｂ】
2019144717.tif 000007
【図４】
2019144717.tif 000008
【図５Ａ】
2019144717.tif 000009
【図５Ｂ】
2019144717.tif 000010
【図６】
2019144717.tif 000011
【図７】
2019144717.tif 000012
【図８】
2019144717.tif 000013
【図９Ａ】
2019144717.tif 000014
【図９Ｂ】
2019144717.tif 000015
【図９Ｃ】
2019144717.tif 000016
【図１０Ａ】
2019144717.tif 000017
【図１０Ｂ】
2019144717.tif 000018
【図１１】
2019144717.tif 000019
【図１２Ａ】
2019144717.tif 000020
【図１２Ｂ】
2019144717.tif 000021
【図１２Ｃ】
2019144717.tif 000022
【図１３】
2019144717.tif 000023
【図１４】
2019144717.tif 000024
【図１５】
2019144717.tif 000025
【図１６】
2019144717.tif 000026