[1.実施形態の概要]
近年、情報処理装置の物理資源を仮想化し、ネットワークを介してユーザに提供するサービスが普及してきている。かかるサービスを提供する情報処理システムでは、情報処理装置においてハイパーバイザ(VMM:Virtual Machine Monitor)が動作し、仮想化された物理資源が割当てられたゲストVMが稼働する。ゲストVMでは、ユーザの情報処理業務を実現するアプリケーションプログラム等が実行される。
ここで、例えば、このような仮想化環境を構築するための技術を開発する側の環境に着目すると、実際の仮想化環境と同様のシステム構成で動作確認をすることが望ましい。なお、仮想化技術を適用した情報処理システムにおける通常の運用機能等の開発においては、例えばVMMシミュレータ等を用い、VMを実際に構築せずに動作確認を行うことも可能ではある。かかる開発作業においては、少なくとも、VMM側からVMが存在するように見えていれば十分なこともあるからである。
しかし、近年、仮想化技術を適用した情報処理システムにおいて、例えば、サービス品質維持の観点から、各VMに十分な物理資源が割当てられ正常に動作しているかを監視する性能管理等が重要視されてきている。かかるVMの性能管理を行うエージェントを開発する際には、特に、単に情報処理装置全体の物理資源の使用状態を把握するのみならず、エージェントが実際のVM上で正常に動作し、VM上でそれぞれのVMの性能情報を収集できること等を動作検証することが求められる。かかる動作検証を行うためには、開発段階において実際にVMを稼働させることを要する。
また、性能管理を行うエージェントの開発段階の動作検証においては、実際の情報処理システムと同様のシステム構成において、VMの性能管理がシステム全体として正常に行われるかを検証することが望ましい。しかし、実際にユーザにサービスを提供する情報処理システムは、多数の情報処理装置において多数のVMが動作する大規模環境であることもある。このような場合、開発環境において、実際の情報処理システムと同様の大規模なシステムを構築することは困難であった。
このため、本実施形態では、一例として、仮想化技術を適用した情報処理システムにおける性能管理技術の開発等を行うための環境として、仮想化技術を適用した情報処理システムを1つの情報処理装置上において模擬的に構築することが可能な技術について説明する。
具体的には、本実施形態では、1つの情報処理装置において、ゲストVMをVMM上に階層的に構築する。しかし、いわゆるVMonVMのように、構造上、ゲストVMの上でさらにゲストVMを稼働させるのではなく、複数のゲストVMをVMM上の同一階層に並列に構築し、仮想ネットワークの接続態様によって、1つのゲストVMを他のゲストVMに従属させ、あたかもゲストVMが階層的に構築されているように模擬する。なお、本明細書において、「あるゲストVMが他のゲストVMに従属する」とは、「あるゲストVMが他のゲストVMの制御下で動作する」ことを意味する。以下、他のゲストVMに従属するゲストVMを「子ゲストVM」と表現する。
このとき、ゲストVM同士の仮想ネットワークの接続形態に着目した一側面として、本実施形態では、第1ゲストVMとそのゲストVMに従属する子ゲストVMが仮想ネットワークによって接続され、他の第2ゲストVMから子ゲストVMに対するデータ通信は、第1ゲストVMの仮想スイッチ並びに第1ゲストVM及び子ゲストVM間の仮想ネットワークを経由するようにする。すなわち、通常、ある情報処理装置が、仮想化環境が構築された他の情報処理装置のゲストVMにアクセスするときに、まず当該仮想化環境が構築された情報処理装置にアクセスし、その後、情報処理装置内の仮想スイッチによってゲストVMにデータ通信が行われるのと同様に、第2ゲストVMからは、第1ゲストVMに対してデータ通信を行うのみであり、当該データ通信は、第1ゲストVMの仮想スイッチを介して、子ゲストVMに転送される。
また、ゲストVMの制御に着目した一側面として、本実施形態では、情報処理装置においてVMM上で稼働するゲストVMに、自ゲストVMに従属する子ゲストVMの管理を行う管理エージェント(管理部)及び擬似VMM(擬似ハイパーバイザ)を実装させる。なお、これは、仮想化環境が構築された通常の情報処理装置が、自装置内で稼働するゲストVMを管理する管理エージェント及びVMMを実装するのと同様である。そして、ゲストVMが子ゲストVMの制御を行うときには、管理エージェントが擬似VMMに子ゲストVMの制御指示を送信する。しかし、擬似VMMは実際のVMMと異なり、自ら子ゲストVMの制御を行うのではなく、VMMのコントローラに対し、子ゲストVMの制御指示を依頼する。VMMコントローラは、擬似VMMからの制御指示に応じ、VMMを制御する。この場合、管理エージェント側から見ると、通常の仮想化環境が構築された情報処理等値における管理エージェントがゲストVMの制御指示をVMMに出すのと同様に、子ゲストVMの制御指示を擬似VMMに出すことができる。
かかる技術を前述のような情報処理システムの開発環境に適用すれば、例えば、情報処理システムの構成要素である情報処理装置自体及び情報処理装置上で動作するゲストVMを、1つの情報処理装置上で模擬的に構築することができる。この場合、ゲストVMが実際の情報処理システムの情報処理装置に相当し、子ゲストVMが、情報処理装置上で動作するゲストVMに相当することとなる。
[2.システム構成]
<模擬していない実際の情報処理システムの説明>
初めに、仮想化技術を適用した通常の情報処理システム(すなわち、模擬していない実際の情報処理システム)について簡単に説明する。図1は、かかる情報処理システムの一例の説明図である。なお、本明細書で以下に説明する実施形態は、原則としてXen(登録商標)のVMMを用いた仮想化環境を前提とするが、例えばVMWare(登録商標)等、他のVMMを用いた仮想化環境においても、構成の一部を適宜変更することによって同様の技術を適用することは可能である。
本情報処理システムは、情報処理装置の一例としてのサーバ500及び管理サーバ600を有する。サーバ500及び管理サーバ600は、物理スイッチ700を介してネットワーク接続されている。
サーバ500は、仮想化環境が構築されており、VMM510及びVM管理ブロック520を備える。また、VMM510上ではゲストVM530が起動されている。なお、説明の簡略化のため、仮想化環境が構築されたサーバ500が1つであるものとして説明を行うが、かかる仮想化環境が構築されたサーバは1つとは限らない。
管理サーバ600では、VM管理マネージャ610が稼働している。VM管理マネージャ610は、サーバ500で動作するゲストVMの管理を行う。例えば、仮想化環境が構築されたサーバ500と同様のサーバが複数存在する場合には、VM管理マネージャ610は、どのサーバにどのようにゲストVMを配備するかを管理する。そして、VM管理マネージャ210は、必要に応じて、物理NIC620からネットワークを介して、サーバ500に対し、ゲストVMの配備、移動又は削除の指示を送信する。
次に、サーバ500に構築された仮想化環境についてさらに説明する。
VMM510は、ゲストVM530の配置、移動、削除等の制御を直接行うとともに、ゲストVM間のデータ通信等を可能にする仮想ネットワークを提供する。なお、説明の簡略化のため、ゲストVM530が1つであるものとして説明を行うが、かかるゲストVM530は1つとは限らない。
VM管理ブロック520は、サーバ500内で動作するゲストVM530の配置、移動、削除等の管理を行うVM管理エージェント521、VMM510を制御するための制御IF522、並びに、ゲストVM間の仮想ネットワークやサーバ500の物理NIC540との間のネットワークのスイッチングを行うスイッチ523を備える。(なお、本明細書及び図面において、単にスイッチと表記する場合は、仮想スイッチを指すものとする。)ゲストVM間のデータ通信は、VM管理ブロック520のスイッチ523を介して行われる。
ゲストVM130は、VMM510上で稼働し、ユーザの情報処理業務を実現する様々なアプリケーションを実行する。
ここで、図1に示すゲストVM530は、VM管理ブロック520との間のデータ通信に用いる仮想ネットワーク532に接続するためのNIC531を備える。(なお、本明細書及び図面において、単にNICと表記する場合は、仮想NICを指すものとする。)この仮想ネットワーク532は、ゲストVM530側のNIC531及びVM管理ブロック520側のNIC524を介し、ゲストVM530とVM管理ブロック520とを接続している。VM管理ブロック520側は、さらに、サーバ500の物理NIC540を介して他の物理サーバである管理サーバ600と通信を行うためのNIC525を備える。そして、スイッチ523が、ゲストVM530及び管理サーバ600との間のデータ通信が行われるようにスイッチングを行う。すなわち、管理サーバ600は、ゲストVM530にアクセスするときには、まず、サーバ500の物理NIC540に対してアクセスし、スイッチ523及び仮想ネットワーク532を介して、ゲストVM530との通信が可能となる。
なお、図1において図示を省略しているが、当該情報処理システムは、仮想化技術により仮想化された物理資源の提供先となるユーザのシステムとも通信可能に接続されている。
<情報処理システムを模擬した情報処理装置の説明>
次に、かかる図1に示した情報処理システムを、仮想化環境が構築された1つの情報処理装置において模擬的に構築したシステム構成の一例について、図2を参照しながら説明する。
情報処理装置の一例であるサーバ10は、VMM20、VM管理ブロック30を備える。さらに、VMM20上において、ゲストVM40、子ゲストVM50及び管理ゲストVM60が稼働している。ここで、前述の図1で示した情報処理システムと対比すると、ゲストVM40がサーバ500に対応し、管理ゲストVM60がサーバ200に対応する。さらに、子ゲストVM60が、サーバ500上で動作するゲストVM530に対応する。すなわち、図2では、図1の情報処理システムにおける物理サーバであるサーバ500及びサーバ600が、サーバ10のVMM20上で動作するゲストVM40及びゲストVM60として模擬的に構築されている。そして、サーバ500上で動作するゲストVM530も同じく、VMM20上で動作するゲストVM50として模擬的に構築されている。このように、各ゲストVM、すなわち、ゲストVM40、子ゲストVM50及び管理ゲストVM60は、いずれもVMM20上において同一階層で並列に稼働している。
VMM20は、図1のVMM110と同様に、各ゲストVMの配置、移動、削除等の制御を直接行うとともに、ゲストVM間の通信や、あるゲストVMと他の物理サーバとの通信を可能にする仮想ネットワークを提供する。なお、本実施形態では、サーバ10内で情報処理システム全体を模擬しているため、他の物理サーバとの通信を行う仮想ネットワークについては説明を省略する。
VM管理ブロック30は、VMMコントローラ31を備える。VMMコントローラ31は、後述する擬似VMM41から受信する制御指示に基づき、VMM20に対し、サーバ10で動作する子ゲストVM50の配置、移動、削除等の指示を出したり、仮想ネットワークの構築を指示したりすることによって、VMM20を制御する。ここで、VMMコントローラ31は、サーバ10が備える記憶装置に格納されたテーブル32を参照する。このテーブル32の内訳については後述する。さらに、VM管理ブロック30は、VMM20を制御するための制御IF34、並びに、ゲストVM間の仮想ネットワークにおけるデータ通信のスイッチングを行うスイッチ33を備える。
図1のサーバ500に相当するゲストVM40は、擬似VMM41及び擬似VMM41の制御を行う子VM管理ブロック42を備える。擬似VMM41は、図1のVMM510に対応し、子VM管理ブロック42は、図1のVM管理ブロック520に対応する。
擬似VMM41は、ゲストVM40において、VMMの機能を模擬したものである。ただし、実際のVMMと異なり、擬似VMM41は、ゲストVM40に従属する子ゲストVMの配置、移動、削除等の制御を直接行わず、これらの制御指示を、実際のVMMであるVMM20の制御を行うVM管理ブロック30のVMMコントローラ31に送信する。かかる処理の際、擬似VMM41は、サーバ10が備える記憶装置に格納されたテーブル43を参照する。このテーブル43の内訳については後述する。
子VM管理ブロック42は、VM管理エージェント44(管理部)を備える。VM管理エージェント44は、ゲストVM40に従属する子ゲストVM50の配置、移動、削除等の管理を行う。さらに、子VM管理ブロック42は、擬似VMM41を制御するための制御IF44、並びに、ゲストVM40及びVM管理ブロック30間のデータ通信のスイッチングを行うスイッチ45を備える。また、子VM管理ブロック42は、VM管理ブロック40との間の仮想ネットワーク21に接続するためのNIC46及び仮想ネットワーク22に接続するためのNIC47を備える。
子ゲストVM50では、ユーザの情報処理業務を実現する様々なアプリケーションが実行される。また、子ゲストVM50は、VM管理ブロック30との間の仮想ネットワーク23に接続するためのNIC51を備える。
管理ゲストVM60では、VM管理マネージャ61が稼働している。VM管理マネージャ61は、図1におけるVM管理マネージャ610に対応し、サーバ10で動作するゲストVM40(複数存在すれば全て)に従属する子ゲストVM50の管理を行う。また、管理ゲストVM60は、VM管理ブロック30との間の仮想ネットワーク24に接続するためのNIC62を備える。
[3.各構成要素間におけるデータの流れ]
次に、図2に示したサーバ10におけるVMM20及びVM管理ブロック30、ゲストVM40、子ゲストVM50並びに管理ゲストVM60におけるデータの流れについて、図3〜図4を参照しながら説明する。
図3は、ゲストVM40に従属する子ゲストVM50の制御指示(例えば、子ゲストVM50の配置、削除、移動等)の流れについて示している。
管理ゲストVM60のVM管理マネージャ61は、NIC62から仮想ネットワーク24を経由して、VM管理ブロック30に子ゲストVM50の制御指示を送信する(1,2)。この制御指示は、VM管理ブロック30において、仮想ネットワーク24に接続されたNIC34から受信される(3)。この制御指示は、ゲストVM40が送信先となっているため、制御指示は、スイッチ33においてスイッチングされ(4)、ゲストVM40との間の仮想ネットワーク21に接続されたNIC35から、仮想ネットワーク21を経由してゲストVM40に送信される(5)。ゲストVM40では、NIC46を介して制御指示を受信すると(6)、VM管理エージェント44が、制御指示に応じた処理を行う(7)。
当該(7)の処理の内容として、具体的には、VM管理エージェント44は、擬似VMM41に対し、子ゲストVM50の制御指示を送信する(21)。しかし、擬似VMM41では、自ら子ゲストVM50の制御を行うことができないため、実際には、さらに、VM管理ブロック30にVMの制御指示を送信する。具体的には、擬似VMM41は、制御指示を、VM管理ブロック30との間の仮想ネットワーク21に接続するNIC46から、VM管理ブロック30に送信する(21,22)。VM管理ブロック30は、仮想ネットワーク21に接続されたNIC35から、制御指示を受信する(23)。そして、VM管理ブロック30のVMMコントローラ31がVMMを制御し(24)、VMM20が、子ゲストVM50の制御(配備、削除、移動等)を行う(31)。VMMコントローラ31は、VMM20における子ゲストVM50の制御が完了すると、完了応答を、仮想ネットワーク21に接続されたNIC35から、仮想ネットワーク21を経由して、ゲストVM40に送信する(25)。ゲストVM40では、NIC46を介して完了応答を受信すると(26)、擬似VMM41が、VM管理エージェント44に完了応答を返信する(27)。
VM管理エージェント44は、完了応答を受信すると、管理ゲストVM60に対し、完了応答を送信する。このとき、この完了応答は、再びVM管理ブロック30を経由して管理ゲストVM60に送信される。具体的には、VM管理エージェント44は、完了応答を、NIC46から仮想ネットワーク21を経由してVM管理ブロック30に送信する(8)。この完了応答は、VM管理ブロック30においてNIC35から受信される(9)。この完了応答は、管理ゲストVM60が送信先となっているため、スイッチ33が、完了応答をスイッチングし(10)、管理ゲストVM60との間の仮想ネットワーク24に接続されたNIC34から、管理ゲストVM60に送信する(11)。管理ゲストVM60では、VM管理ブロック30との仮想ネットワーク24に接続されたNIC62から、完了応答を受信する(12,13)。
図4は、サーバ10で稼働するゲストVM間で仮想ネットワークを用いてデータ通信を行う様々な例のうち、VM制御指示を伴わない通常のデータ(例えばゲストVMにおけるアプリケーションの処理データや、ゲストVMの性能管理情報等)の流れについて示している。
図4の上段は、管理ゲストVM60からゲストVM40にデータを送信する場合のシーケンスを示す。
管理ゲストVM60のVM管理マネージャ61は、NIC62から仮想ネットワーク24を経由して、VM管理ブロック30に対し、ゲストVM40を送信先としたデータを送信する(1,2)。このデータは、VM管理ブロック30において、仮想ネットワーク24に接続されたNIC34から受信される(3)。VM管理ブロック30のスイッチ33は、受信したデータをスイッチングし(4)、ゲストVM40との仮想ネットワーク21に接続されたNIC35から、ゲストVM40に送信する(5)。ゲストVM40では、仮想ネットワーク21に接続されたNIC46からデータを受信し(6)、VM管理エージェント44がデータを処理する(7)。
図4の中段は、管理ゲストVM60から子ゲストVM50にデータを送信する場合のシーケンスを示す。この場合、子ゲストVM50は、図1の実環境でいえばサーバ500上で稼働するゲストVM130なので、図2のサーバ10の模擬環境においても、データは、サーバ500に対応するゲストVM40を経由することとなる。
管理ゲストVM60のVM管理マネージャ61は、NIC62から仮想ネットワーク24を経由して、VM管理ブロック30に対し、ゲストVM40を送信先とし、さらにその送信先の内訳として子ゲストVM50を最終送信先としたデータを送信する(1,2)。このデータは、VM管理ブロック30において、仮想ネットワーク24に接続されたNIC34から受信される(3)。VM管理ブロック30のスイッチ33は、受信したデータをスイッチングし(4)、ゲストVM40との仮想ネットワーク21に接続されたNIC35から、ゲストVM40に送信する(5)。ゲストVM40では、仮想ネットワーク21に接続されたNIC46からデータを受信する(6)。
ここで、ゲストVM40では、NIC46を介してデータを受信すると、データの最終送信先が子ゲストVM50となっているため、スイッチ45においてスイッチングを行う(7)。すなわち、ゲストVM40のスイッチ45は、受信したデータをスイッチングし、仮想ネットワーク22に接続された仮想NIC47を介してVM管理ブロック30に送信する(8)。このデータは、VM管理ブロック30においてNIC36を介して受信される(9)。VM管理ブロック30のスイッチ33は、受信したデータをスイッチングし(10)、子ゲストVM50との仮想ネットワーク23に接続されたNIC37から、子ゲストVM50に送信する(11)。子ゲストVM50では、仮想ネットワーク23に接続されたNIC51からデータを受信し(12)、子ゲストVMで実行されるアプリケーションが受信データを処理する(13)。
図4の下段は、ゲストVM40から子ゲストVM50にデータを送信する場合のシーケンスを示す。
ゲストVM40のVM管理エージェント44が子ゲストVM50を送信先としたデータを送信すると、このデータは、子ゲストVM50に接続するための仮想ネットワーク22に接続するNIC47を介して、VM管理ブロック30に送信される(1,2)。このデータは、VM管理ブロック30において、仮想ネットワーク22に接続されたNIC36から受信される(3)。VM管理ブロック30のスイッチ33は、受信したデータをスイッチングし(4)、子ゲストVM50との仮想ネットワーク23に接続されたNIC37から、子ゲストVM50に送信する(5)。子ゲストVM50では、仮想ネットワーク23に接続されたNIC51からデータを受信し(6)、子ゲストVMで実行されるアプリケーションが受信データを処理する(7)。
[4.仮想ネットワークの接続形態の具体例]
次に、前述のようなサーバ10において、複数のゲストVM40及び子ゲストVM50が起動された状態の仮想ネットワークの接続形態につき、図5に具体例を示して詳細に説明する。なお、図5においては、原則として仮想ネットワークの接続形態の説明に直接関連する構成要素以外については表記を省略している。
本具体例では、管理ゲストVM60、第1ゲストVM40A及び第2ゲストVM40B、第1ゲストVM40Aの子ゲストVMである第1子ゲストVM50A及び第2子ゲストVM50B、並びに、第1ゲストVM40A及び第2ゲストVM40Bの両方が共有する子ゲストVMである多重子ゲストVM50Cが稼働している。なお、多重子ゲストVMの内容については後述する。
図5に示す仮想ネットワークの接続形態について説明する。例えば、図5の管理ゲストVM60は、NIC[eth0]を介し、仮想ネットワーク101によって、VM管理ブロック30のNIC[vif9.0]と接続されている。仮想ネットワークを介して通信されるデータは、少なくとも、送信先のゲストVM40又は子ゲストVM50のNICを特定するIPアドレスを有している。例えば、仮想ネットワーク101を経由してVM管理ブロック30が受信したデータは、スイッチ33において、送信先のゲストVM40又は子ゲストVM50に応じて異なる仮想ネットワークにスイッチングされる。
例えば、送信先が第1ゲストVM40Aのときには、NIC[vif1.0]にスイッチングされ、仮想ネットワーク102を経由し、第1ゲストVM40AのNIC[eth0]へとデータ通信が行われる。また、送信先が第2ゲストVM40Bのときには、NIC[vif5.0]にスイッチングされ、仮想ネットワーク103を経由し、第2ゲストVM40BのNIC[eth0]へと接続される。
一方、送信先が第1ゲストVM40Aであって最終送信先が第1子ゲストVM50Aのときには、まず第1ゲストVM40Aを介してデータ通信が行われる。具体的には、管理ゲストVM60がNIC[eth0]を介してデータを送信した場合、このデータ通信は、まず、NIC[vif1.0]にスイッチングされ、仮想ネットワーク102を経由し、第1ゲストVM40AのNIC[eth0]へと接続される。そして、第1ゲストVM40Aのスイッチ451にて、NIC[vif1.1]へとスイッチングされ、仮想ネットワーク104を経由し、VM管理ブロック30のNIC[vif1.2]へとデータ通信が行われる。さらに、スイッチ33において、NIC[vif2.1]にスイッチングされ、仮想ネットワーク105を経由し、第1子ゲストVM50AのNIC[eth0]へとデータ通信が行われる。また、送信先が第2子ゲストVM50Bのときも同様に、NIC[vif1.0]から仮想ネットワーク102を経由して第1ゲストVM40AのNIC[eth0]へと接続された後、第1ゲストVM40Aのスイッチ451にて、NIC[vif2.0]へとスイッチングされる。そして、仮想ネットワーク106を経由し、VM管理ブロック30のNIC[vif1.3]へとデータ通信が行われ、NIC[vif3.0]にスイッチングされる。そして、仮想ネットワーク107を経由し、第2子ゲストVM50BのNIC[eth0]へとデータ通信が行われる。
なお、図5の第1ゲストVM40A等において、例えば、NIC[vif1.0]と[eth1]が対応させて表記されている。これは、VMM20によってNICが生成されて[eth0]以外の実IF名が割当てられると、VM内部で認識する内部IF名が生成(変換)されるからであり、図5ではその両方について示している。他のNICについても同様である。なお、かかる変換処理は、仮想化環境の種別(Xen等)に依存するものであり、必ず行われるものでもない。
ここで、前述のデータの送信元と送信先が逆の場合には、前述の通信ルートと逆のルートを辿ることとなる(以下同様)。
第1ゲストVM40Aと第1子ゲストVM50Aとの通信ルートは、例えば次のようになる。すなわち、第1ゲストVM40Aは、第1子ゲストVM50Aが送信先であるデータを送信するときには、NIC[vif1.0]から仮想ネットワーク108を介してVM管理ブロックのNIC[vif1.1]に送信する。このデータ通信は、スイッチ33でNIC[vif2.0]にスイッチングされ、仮想ネットワーク109を介して第1子ゲストVM50AのNIC[eth0]にて受信される。一方で、第1ゲストVM40Aと第2子ゲストVM50Bとの通信ルートは次のようになる。すなわち、第1ゲストVM40Aは、第2子ゲストVM50Bが送信先であるデータを送信するときには、NIC[vif2.0]から仮想ネットワーク106を介してVM管理ブロックのNIC[vif1.2]に送信する。このデータ通信は、スイッチ33でNIC[vif2.1]にスイッチングされ、仮想ネットワーク107を介して第2子ゲストVM50BのNIC[eth0]にて受信される。
次に、多重子ゲストVM50Cと他のゲストVMとの接続形態について説明する。ここで、「多重子ゲストVM」とは、サーバ10に構築しているようなシステムの模擬環境において、複数のゲストVM40の子ゲストVMとして多重的に従属させるように設定をした子ゲストVMである。換言すれば、多重子ゲストVMは、複数のゲストVMによって共有(共用)される子ゲストVMである。このように多重子ゲストVMを用いることによって、実際のVMの稼働数を少なくし、使用する物理資源を制限した状態で、大規模環境を模擬することができる。図5の例の多重子ゲストVM50Cは、第1ゲストVM40Aに従属する子ゲストVMであると同時に、第2ゲストVM40Bに従属する子ゲストVMでもある。
第1ゲストVM40Aと多重子ゲストVM50Cとの通信ルートは次のようになる。すなわち、第1ゲストVM40Aは、多重ゲストVM50Cが送信先であるデータを送信するときには、NIC[vif6.0]から仮想ネットワーク109を介してVM管理ブロック30のNIC[vif1.4]に送信する。このデータ通信は、スイッチ33でNIC[vif4.0]にスイッチングされ、仮想ネットワーク110を介して多重ゲストVM50CのNIC[eth0]に接続される。
一方で、第2ゲストVM40Bと多重ゲストVM50Cとの通信ルートは次のようになる。すなわち、第2ゲストVM40Bは、多重ゲストVM50Cが送信先であるデータを送信するときには、NIC[vif7.0]から仮想ネットワーク111を介してVM管理ブロック30のNIC[vif5.1]に送信する。このデータ通信は、スイッチでNIC[vif4.1]にスイッチングされ、仮想ネットワーク112を介して多重ゲストVM50CのNIC[eth1]に接続される。
なお、多重ゲストVM50C側では、どのゲストVM40の子ゲストVMとして動作するかによって、送信するデータの通信ルートを適宜変更する。また、ゲストVM40からアクセスがなされたとき、例えば、どのNICを介してアクセスがなされたか等によって、どのゲストVMの子ゲストVMとしてアクセスがなされたかを特定することができる。具体的には、例えば、多重ゲストVM50Cは、従属先である複数のゲストVM40のそれぞれとの通信に用いるNICのIPアドレスと、複数のゲストVM40のそれぞれのIPアドレスが対応付けられたリストを有している。なお、新たなゲストVM40との接続が生成された場合には、このリストの情報が追加されることとなる。そして、多重ゲストVM50Cは、例えば、いずれかのゲストVM40からVM管理ブロック30を介して問合せを受信すると、どのIPアドレス宛に問合せがあったかを判定する。そして、リストを参照し、問合せがあったIPアドレスに応じて、どの子ゲストVMとして処理をするかを切り分ける。そして、問合せを受信したNICから、特定したゲストVM40の子ゲストVMとして、特定したゲストVM40のIPアドレス宛てに応答を送信する。また、同様にして、多重子ゲストVM50Cに対する問合せに含められる、ゲストVM40ごとに定められた多重子ゲストVM50Cの呼出名等を用いて、通信先のゲストVM40を特定することも可能である。このような処理により、多重子ゲストVM50C側においても、従属先の複数のゲストVM40とのデータ通信を区別して行うことが実現できる。
なお、このようなシステムの模擬環境において、多重子ゲストVMを用いることは当然ながら必須ではない。図5の例では、第1ゲストVM40A及び第2ゲストVM40Bのそれぞれに対して別個の子ゲストVM50を稼働させてもよい。
[5.テーブルの構造及びデータの具体例]
次に、VM管理ブロック30のVMMコントローラ31が用いるテーブル32及びゲストVM40の擬似VMM41が用いるテーブル43につき、図5に示した具体例に対応するデータが格納された状態を図6〜図8に示して説明する。
VMMコントローラ31は、VMプール管理表、稼働中VM管理表、稼働中子VM管理表及び稼働中多重VM管理表を用いて、サーバ10で稼働するゲストVM40及び子ゲストVM50(多重子ゲストVMを含む)を管理している。これらの各テーブルの情報は、VMMコントローラ31が後述するVM制御処理を行うときに、適宜参照又は更新する。
VMMコントローラ31のVMプール管理表は、模擬環境であるサーバ10において稼働させる(すなわち模擬する)可能性がある全ての子ゲストVM50に関する情報が全て格納されるテーブルである。換言すれば、サーバ10で稼働される子ゲストVM50は、このVMプール管理表に登録されていることを前提とする。VMプール管理表のデータは、予めシステム管理者等が設定しておく。VMプール管理表は、図6(A)に示すように、実VM名、NIC数、多重VMフラグ及び多重VM用呼出名の項目を含む。実VM名とは、VMM20が認識する子ゲストVMの名称である。NIC数は、各子ゲストVMが備えるNICの数である。多重VMフラグは、VMが多重子ゲストVMであるか否かを示すフラグである。多重VM用呼出名は、VMが多重子ゲストVMである場合において、従属先のゲストVMごとに定められる呼出名である。例えば、多重子ゲストVM50Cは、実VM名が「MUL_VM_X」という1つの子ゲストVMであるが、第1ゲストVM40Aからの多重VM用呼出名が「SV_A_VM_X」である一方、第2ゲストVM40Bからの多重VM用呼出名は「SV_B_VM_X」である。
VMMコントローラ31の稼働中VM管理表は、サーバ10において現在稼働しているゲストVM40に関する情報が格納されるテーブルである。稼働中VM管理表は、図6(B)に示すように、実VM名、実VMID、NICの項目を含む。実VMIDは、ゲストVMごとに振られる番号である。NICは、ゲストVM40への仮想ネットワークに接続された、VM管理ブロック30のNICを示す。
VMMコントローラ31の稼働中子VM管理表は、サーバ10において現在稼働している子ゲストVM50に関する情報が格納されるテーブルである。稼働中子VM管理表は、図6(C)に示すように、実VM名、実VMID、擬似VMM稼働VM、並びに、NICとして、VM側IF名及び擬似VMM側IF名の項目を含む。擬似VMM稼働VMは、子ゲストVMを制御する擬似VMM41が稼働しているゲストVM40、すなわち、子ゲストVMの従属先のゲストVM40の実VM名を示す。また、NICのVM側IF名は、子ゲストVM50との仮想ネットワークに接続された、VM管理ブロックにおけるNICを示す。一方、擬似VMM側IF名は、子ゲストVM50を制御する擬似VMM41が稼働するゲストVM40との仮想ネットワークに接続された、VM管理ブロックにおけるNICを示す(括弧の中は、ゲストVM40側で初期設定されたNICを示す)。
VMMコントローラ31の稼働中多重VM管理表は、サーバ10において現在稼働している子ゲストVM50のうち、多重子ゲストVM50に関する情報が格納されるテーブルである。稼働中多重VM管理表は、図6(D)に示すように、実VM名、実VMID、多重VM用呼出名、擬似VMM稼働VM、並びに、NICとして、VM側IF名及び擬似VMM側IF名の項目を含む。
一方、各ゲストVM40の擬似VMM41は、従属VMプール管理表及び稼働中従属子VM管理表を用いて、自ゲストVM40に従属する子ゲストVM50を管理する。図7に示すのが、第1ゲストVM40Aの擬似VMM41Aが管理する表であり、図8に示すのが、第2ゲストVM40Bの擬似VMM41Bが管理する表である。第1ゲストVM40A及び第2ゲストVM40Bのいずれも、管理するテーブルの構造自体は同じである。これらの各テーブルの情報は、擬似VMM41が後述するVM制御処理を行うときに、適宜参照又は更新する。
擬似VMM41の従属VMプール管理表は、模擬環境であるサーバ10において稼働させる可能性がある子ゲストVMのうち、自ゲストVM40に従属する全ての子ゲストVMに関する情報が格納されるテーブルである。このテーブルのデータは、予めシステム管理者等が設定しておく。内部VM管理表は、図6(A)及び図7(A)に示すように、内部VM名、実VM名、NIC数の項目を含む。内部VM名は、擬似VMM41が稼働するゲストVM40内部で認識する子ゲストVM名である一方、実VM名は、VMM20側で認識するVM名である。NIC数は、子ゲストVM50が備えるNICの数である。
擬似VMM41の稼働中従属VM管理表は、サーバ10において現在稼働している、自ゲストVM40に従属する子ゲストVMに関する情報が格納されるテーブルである。稼働中対象VM管理表は、図6(B)及び図7(B)に示すように、内部VM名、内部VMID、実VM名、NIC数、及び、当該VMに接続するためのNICとして、内部IF名及び実IF名の項目を含む。内部VMIDは、擬似VMM41が認識する子ゲストVMの番号である。NICの内部IF名(eth)は、子ゲストVM50への仮想ネットワークに接続されたNICを示す。一方、実IF名(vif)は、ゲストVM40が配備されたときにVMM20によって初期設定されたNICを示す。擬似VMM41では、前述したように、VMM20によってNICが生成されて実IF名が割当てられると、VM内部で認識する内部IF名に変換するため、稼働中従属VM管理表ではその対応関係を保持している。
[6.擬似VMM及びVMMコントローラによる子ゲストVMの制御処理]
次に、実環境におけるゲストVMの制御処理に相当する処理、すなわち、ゲストVM40に従属する子ゲストVM50の制御を行う際に、擬似VMM41及びVMMコントローラ31で実行される処理について、図9〜図11を参照しながら説明する。
図9は、擬似VMM41による子ゲストVM50の制御処理を示す。
S1にて、擬似VMM41が、ゲストVM40のVM管理エージェント44からVM制御指示のコマンドを受信する。この制御指示では、内部VM名が指定されている。なお、前提として、VM管理エージェント44は、管理ゲストVM60のVM管理マネージャ61からVM制御指示を受信したことを契機として、制御指示のコマンドを擬似VMM41に送信する。
S2にて、擬似VMM41は、制御指示の対象の子ゲストVM50が、従属VMプール管理表に登録されているか否かを判定する。登録されていればS3に進み(Yes)、登録されていなければS19に進む(No)。
S3にて、擬似VMM41は、従属VMプール管理表を参照し、制御指示の対象の子ゲストVM50の内部VM名を、VMM20が認識可能な実VM名に変換する。
S4にて、擬似VMM41は、制御指示が、VM配備に係るものであるか否かを判定する。VM配備に係るものであればS6に進み(Yes)、VM配備に係るものでなければS5に進む(No)。
S5にて、擬似VMM41は、制御指示が、VM移動の制御指示であって移動先のゲストVM40における指示(以下、VM移動(移動先)の制御指示、と表記する)に係るものであるか否かを判定する。VM移動(移動先)に係るものであればS6に進み(Yes)、VM移動に係るものでなければS7に進む(No)。
S6にて、擬似VMM41は、制御指示の対象の子ゲストVM50が、稼働中従属VM管理表にすでに登録されているか否かを判定する。登録されていなければS8に進み(Yes)、登録されていればS19に進む(No)。
S7にて、擬似VMM41は、制御指示の対象の子ゲストVM50が、稼働中従属VM管理表に登録されていないか否かを判定する。なお、このS7の判定は、VM配備又はVM移動(移動先)に係るもの以外のVM制御指示、例えば、VM削除や、VM移動の制御指示であって移動元のゲストVM40における指示(以下、VM移動(移動元)の制御指示、と表記する)に係るものに対して適用されることとなる。登録されていなければS19に進み(Yes)、登録されていればS8に進む(No)。
S8にて、擬似VMM41は、VM管理ブロック30にVM制御指示を送信し、VM制御の処理を依頼する。この制御指示では、制御対象の子ゲストVM50の実VM名が指定されている。
S9にて、擬似VMM41は、制御指示に基づくVM制御が正常に終了したか否か、換言すれば、VM管理ブロック30から正常終了の応答があったか否かを判定する。正常終了の応答があった場合にはS10に進み(Yes)、エラー応答があった場合にはS19に進む(No)。
S10にて、擬似VMM41は、従属VMプール管理表を参照し、VMM20から正常応答のあった、制御指示の対象の子ゲストVMの実VM名を、内部VM名に変換する。
S11にて、擬似VMM41は、制御指示が、VM配備に係るものであるか否かを判定する。VM配備に係るものであればS13に進み(Yes)、VM配備に係るものでなければS12に進む(No)。
S12にて、擬似VMM41は、制御指示が、VM移動(移動先)に係るものであるか否かを判定する。VM移動(移動先)に係るものであればS13に進み(Yes)、VM移動(移動先)に係るものでなければS15に進む(No)。
S13にて、擬似VMM41は、VMM20によって生成されたNICの実IF名(eth)を、内部IF名(vif)に変更する。
S14にて、擬似VMM41は、稼働中従属VM管理表に、制御指示の対象の子ゲストVMの情報を登録する。具体的には、擬似VMM41は、子ゲストVM50の内部VMIDを割り振り、内部VM名、内部VMID、実VM名、NICの内部IF名及び実IF名を登録する。
S15にて、擬似VMM41は、制御指示が、VM削除に係るものであるか否かを判定する。VM削除に係るものであればS17に進み(Yes)、VM削除に係るものでなければS16に進む(No)。
S16にて、擬似VMM41は、制御指示が、VM移動(移動元)に係るものであるか否かを判定する。VM移動(移動元)に係るものであればS17に進み(Yes)、VM移動(移動元)に係るものでなければS18に進む(No)。
S17にて、擬似VMM41は、制御指示の対象の子ゲストVMの情報を、稼働中従属VM管理表から削除する。
S18にて、擬似VMM41は、VM管理エージェント44に対し、制御指示に係るVM制御が完了した旨の正常応答を送信する。
S19にて、擬似VMM41は、VM管理エージェント44に対し、制御指示に係るVM制御が異常終了した旨のエラー応答を送信する。
次に、ゲストVM40の子ゲストVM50の制御を行う際に、VMMコントローラ31で実行される処理のうち、多重子ゲストVM50でない通常の子ゲストVM50を対象としたVM制御指示に基づく制御処理について、図10を参照しながら説明する。
S21にて、VMMコントローラ31は、ゲストVM40の擬似VMM41から制御指示のコマンドを受信する。このVM制御指示では、制御対象の子ゲストVM50につき、前述の擬似VMM41内の処理によって内部VM名から変換された実VM名が指定されており、また、当該VMが多重子ゲストVMでないことを示す識別子が含まれている。
S22にて、VMMコントローラ31は、制御指示の対象の子ゲストVM50が、VMプール管理表に登録されているか否かを判定する。登録されていればS23に進み(Yes)、登録されていなければS48に進む(No)。
S23にて、VMMコントローラ31は、制御指示が、VM配備に係るものであるか否かを判定する。VM配備に係るものであればS24に進み(Yes)、VM配備に係るものでなければS30に進む(No)。
S24にて、VMMコントローラ31は、配備指示の対象の子ゲストVM50が、稼働中子VM管理表にすでに登録されているか否かを判定する。対象子ゲストVMが登録されている場合にはS48に進み(Yes)、登録されていない場合にはS25に進む(No)。
S25にて、VMMコントローラ31は、VMM20に対し、配備指示の対象の子ゲストVM50の配備指示のコマンドを発行する。VMM20では、当該コマンドに応じて、子ゲストVM50を配備する処理を行う。
S26にて、VMMコントローラ31は、VM配備が正常に終了したか否か、換言すれば、VMM20から正常終了の応答があったか否かを判定する。正常終了の応答があった場合にはS27に進み(Yes)、エラー応答があった場合にはS48に進む(No)。
S27にて、VMMコントローラ31は、VM管理ブロック30側において、配備した子ゲストVMに接続するためのNICを追加する。一方で、VMMコントローラ31は、VMM20を介し、配備指示の送信元のゲストVM40に新たなNICを追加する。そして、当該追加したNICと接続するためのNICをVM管理ブロック30側にも追加する。
S28にて、VMMコントローラ31は、VMM20を介し、配備した子ゲストVM50のNICと配備指示の送信元のゲストVM40のNICとを、仮想ネットワークによって接続する。このとき、スイッチ33にて、配備した子ゲストVM50との間の仮想ネットワークと配備指示の送信元のゲストVM40との間の仮想ネットワークとを接続するようにスイッチングの設定を行う。
S29にて、VMMコントローラ31は、稼働中子VM管理表に、配備した子ゲストVMの情報を登録する。具体的には、VMMコントローラ31は、配備した子ゲストVMの実VMIDを割り振り、実VM名、実VMID、擬似VMM稼働VM(すなわち、配備指示の送信元のゲストVM40)、NICのVM側IF名(子ゲストVM50側に接続するNICのIF名)及び擬似VMM側IF名(擬似VMM41側に接続するNICのIF名)を登録する。
S30にて、VMMコントローラ31は、制御指示が、VM削除に係るものであるか否かを判定する。VM削除に係るものであればS31に進み(Yes)、VM削除に係るものでなければS37に進む(No)。
S31にて、VMMコントローラ31は、削除指示の対象の子ゲストVM50が、稼働中VM管理表に登録されているか否かを判定する。登録されていればS32に進み(Yes)、登録されていなければS48に進む(No)。
S32にて、VMMコントローラ31は、VMM20を介し、削除指示の対象の子ゲストVM50とVM削除指示の送信元のゲストVM40との接続を切断する。
S33にて、VMMコントローラ31は、VMM20を介し、削除指示の送信元のゲストVM40から、削除指示の対象の子ゲストVM50に接続されたNICを削除する。さらに、VMMコントローラ31は、VM管理ブロック30から、削除指示の対象の子ゲストVM50に接続されたNICを削除する。
S34にて、VMMコントローラ31は、VMM20に対し、削除指示の対象の子ゲストVM50の削除指示のコマンドを発行する。VMM20では、当該コマンドに応じて、子ゲストVM50を削除する処理を行う。
S35にて、VMMコントローラ31は、VM削除が正常に終了したか否か、換言すれば、VMM20から正常終了の応答があったか否かを判定する。正常終了の応答があった場合にはS36に進み(Yes)、エラー応答があった場合にはS48に進む(No)。
S36にて、VMMコントローラ31は、稼働中VM管理表から、削除した子ゲストVM50の情報を削除する。
S37にて、VMMコントローラ31は、VM制御指示が、VM移動(移動元)に係るものであるか否かを判定する。VM移動(移動元)に係るものであればS38に進み(Yes)、VM移動(移動元)に係るものでなければS42に進む(No)。
S38にて、VMMコントローラ31は、VM移動指示の対象の子ゲストVMが、稼働中子VM管理表に登録されているか否かを判定する。登録されていればS39に進み(Yes)、登録されていなければS48に進む(No)。
S39にて、VMMコントローラ31は、移動指示の対象の子ゲストVM50と移動指示の送信元のゲストVM40(すなわち、移動対象の子ゲストVM50の移動前における従属先のゲストVM40)との仮想ネットワークの接続を切断する。
S40にて、VMMコントローラ31は、移動指示の送信元のゲストVM40から、移動指示の対象の子ゲストVM50に接続されたNICを削除する。
S41にて、VMMコントローラ31は、稼働中VM管理表に、移動指示の対象子ゲストVM50の情報を反映させる。なお、この段階では、移動制御の途中段階であるため、具体的には、VMMコントローラ31は、例えば、移動対象の子ゲストVM50の擬似VMM稼働VM及びNICの擬似VMM側IF名を一時的にブランクにする等の変更を行う。
S42にて、VMMコントローラ31は、制御指示が、VM移動(移動先)に係るものであるか否かを判定する。VM移動(移動先)に係るものであればS43に進み(Yes)、VM移動(移動先)に係るものでなければS47に進む(No)。なお、ここでS47に進む場合とは、例えば、制御指示の一種として、子ゲストVM50の状態取得の指示等の場合が考えられる。本説明では、かかる状態取得の処理等の説明は省略する。
S43にて、VMMコントローラ31は、移動指示の対象の子ゲストVMが、稼働中子VM管理表に登録されているか否かを判定する。登録されていればS44に進み(Yes)、登録されていなければS48に進む(No)。
S44にて、VMMコントローラ31は、移動指示の送信元のゲストVM(すなわち、移動対象の子ゲストVM50の移動後の従属先のゲストVM)に、移動指示の対象の子ゲストVM50に接続するためのNICを追加する。
S45にて、VMMコントローラ31は、移動指示の対象の子ゲストVM50のNICと移動指示の送信元のゲストVM40のNICとを、仮想ネットワークによって接続する。このとき、スイッチ33にて、移動した子ゲストVM50との間の仮想ネットワークと移動指示の送信元のゲストVM40との間の仮想ネットワークとを接続するようにスイッチングの設定を行う。
S46にて、VMMコントローラ31は、稼働中子VM管理表に、移動した子ゲストVM50の情報を反映させる。具体的には、VMMコントローラ31は、稼働中子VM管理表につき、移動した子ゲストVM50の擬似VMM稼働VMを、VM移動指示の送信元のゲストVMに変更するとともに、NICの擬似VMM側IF名を変更する。
S47にて、VMMコントローラ31は、擬似VMM41に対し、VM制御指示に係るVM制御が完了した旨の正常応答を送信する。
S48にて、VMMコントローラ31は、擬似VMM41に対し、VM制御指示に係るVM制御が異常終了した旨のエラー応答を送信する。
次に、ゲストVM40の子ゲストVM50の制御を行う際に、VMMコントローラ31で実行される処理のうち、多重子ゲストVM50を対象としたVM制御指示に基づくVM制御処理について、図11を参照しながら説明する。
S51にて、VMMコントローラ31は、ゲストVM40の擬似VMM41から制御指示のコマンドを受信する。このVM制御指示では、制御対象の多重子ゲストVM50につき、前述の擬似VMM41内の処理によって内部VM名から変換された実VM名(すなわち、VMMコントローラ31がVMプール管理表等で保持している多重VM用呼出名)が指定されており、また、当該VMが多重子ゲストVMであることを示す識別子が含まれている。
S52にて、VMMコントローラ31は、制御指示の対象の多重子ゲストVM50が、VMプール管理表に登録されているか否かを判定する。登録されていればS53に進み(Yes)、登録されていなければS80に進む(No)。
S53にて、VMMコントローラ31は、制御指示が、VM配備に係るものであるか否かを判定する。VM配備に係るものであればS54に進み(Yes)、VM配備に係るものでなければS61に進む(No)。
S54にて、VMMコントローラ31は、配備指示の対象の多重子ゲストVM50が、稼働中多重VM管理表にすでに登録されているか否かを判定する。登録されていればS55に進み(Yes)、登録されていなければS56に進む(No)。
S55にて、VMMコントローラ31は、配備指示の対象の多重子ゲストVM50に、配備指示の送信元のゲストVM40とのデータ通信を行うためのNICを追加する。
S56にて、VMMコントローラ31は、VMM20に対し、配備指示の対象の多重子ゲストVM50の配備指示のコマンドを発行する。VMM20では、当該コマンドに応じて、多重子ゲストVM50を配備する処理を行う。
S57にて、VMMコントローラ31は、VM配備が正常に終了したか否か、換言すれば、VMM20から正常終了の応答があったか否かを判定する。正常終了の応答があった場合にはS58に進み(Yes)、エラー応答があった場合にはS80に進む(No)。
S58にて、VMMコントローラ31は、VM管理ブロック30側において、NICの追加を行った又は新たに配備した多重子ゲストVM50のNICに接続するためのNICを追加する。一方で、VMMコントローラ31は、VMM20を介し、配備指示の送信元のゲストVM40に新たにNICを追加する。そして、当該追加したNICと接続するためのNICをVM管理ブロック30側にも追加する。
S59にて、VMMコントローラ31は、VMM20を介し、NICの追加を行った又は新たに配備した多重子ゲストVMのNICと配備指示の送信元のゲストVMのNICとを、仮想ネットワークによって接続する。このとき、スイッチ33にて、配備した子ゲストVMとの間の仮想ネットワークとVM制御指示の送信元のゲストVM40との間の仮想ネットワークとを接続するようにスイッチングの設定を行う。
S60にて、VMMコントローラ31は、稼働中多重VM管理表に、配備した多重子ゲストVM50の情報を登録する。具体的には、VMMコントローラ31は、多重子ゲストVM50を新たに配備した場合には、配備した多重子ゲストVMの実VMIDを割り振り、実VM名、実VMID、多重VM呼出名、擬似VMM稼働VM(すなわち、配備指示の送信元のゲストVM)、NICのVM側IF名(多重子ゲストVM50側に接続するNICのIF名)及び擬似VMM側IF名(擬似VMM41側に接続するNICのIF名)を登録する。また、既に配備済みの多重子ゲストVM50に新たに擬似VMM稼働VMを接続した場合には、配備指示の送信元のゲストVM40からの多重VM呼出名、擬似VMM稼働VM、NICのVM側IF名及び擬似VMM側IF名を追加する。
S61にて、VMMコントローラ31は、VM制御指示が、VM削除に係るものであるか否かを判定する。VM削除に係るものであればS62に進み(Yes)、VM削除に係るものでなければS69に進む(No)。
S62にて、VMMコントローラ31は、削除指示の対象の子ゲストVM50が、稼働中VM管理表に登録されているか否かを判定する。登録されていればS63に進み(Yes)、登録されていなければS69に進む(No)。
S63にて、VMMコントローラ31は、削除指示の対象の多重子ゲストVM50とVM削除指示の送信元のゲストVM40との接続を切断する。
S64にて、VMMコントローラ31は、削除指示の送信元のゲストVM40から、削除対象の多重子ゲストVM50との通信に用いるNICを削除する。さらに、VMMコントローラ31は、VM管理ブロック30から、削除指示の対象の多重子ゲストVM50のNICに接続されたNICを削除する。
S65にて、VMMコントローラ31は、削除指示の対象の多重子ゲストVM50に接続するゲストVM40が存在するか否かを判定する。存在すればS68に進み(Yes)、存在しない場合にはS66に進む(No)。
S66にて、VMMコントローラ31は、VMM20に対し、削除指示の対象の多重子ゲストVM50の削除指示のコマンドを発行する。VMM20では、当該コマンドに応じて、多重子ゲストVM50を削除する処理を行う。
S67にて、VMMコントローラ31は、VM削除が正常に終了したか否か、換言すれば、VMM20から正常終了の応答があったか否かを判定する。正常終了の応答があった場合にはS68に進み(Yes)、エラー応答があった場合にはS80に進む(No)。
S68にて、VMMコントローラ31は、稼働中多重VM管理表から、削除した多重子ゲストVM50の情報を削除する。このとき、多重子ゲストVM50に接続する一部のゲストVM40との仮想ネットワークの接続のみ削除した場合(多重子ゲストVM50自体の削除を行っていない場合)には、削除指示の送信元のゲストVM40が擬似VMM稼働VMとなっている情報のみを削除する。
S69にて、VMMコントローラ31は、制御指示が、VM移動(移動元)に係るものであるか否かを判定する。VM移動(移動元)に係るものであればS70に進み(Yes)、VM移動(移動元)に係るものでなければS74に進む(No)。
S70にて、VMMコントローラ31は、移動指示の対象の多重子ゲストVM50が、稼働中多重VM管理表に登録されているか否かを判定する。登録されていればS71に進み(Yes)、登録されていなければS80に進む(No)。
S71にて、VMMコントローラ31は、移動指示の対象の多重子ゲストVM50のNICと制御指示の送信元のVM(すなわち、移動対象の多重子ゲストVM50の移動前における従属先のゲストVM40)との仮想ネットワークの接続を切断する。
S72にて、VMMコントローラ31は、移動指示の送信元のゲストVM40から、移動指示の対象の多重子ゲストVM50に接続されたNICを削除する。
S73にて、VMMコントローラ31は、稼働中多重VM管理表に、VM移動指示の対象の多重子ゲストVM50の情報を反映させる。なお、この段階では、VM移動制御の途中段階であるため、具体的には、VMMコントローラ31は、例えば、対象の多重子ゲストVM50の情報のうち、擬似VMM稼働VMがVM移動指示の送信元のゲストVM40である情報における、擬似VMM稼働VM及びNICの擬似VMM側IF名を一時的にブランクにする等の変更を行う。
S74にて、VMMコントローラ31は、制御指示が、VM移動(移動先)に係るものであるか否かを判定する。VM移動(移動先)に係るものであればS75に進み(Yes)、VM移動(移動先)に係るものでなければS79に進む(No)。
S75にて、VMMコントローラ31は、移動指示の対象の多重子ゲストVM50が、稼働中多重VM管理表に登録されているか否かを判定する。登録されていればS76に進み(Yes)、登録されていなければS80に進む(No)。
S76にて、VMMコントローラ31は、制御指示の送信元のVM(すなわち、移動対象の子ゲストVM50の移動後の従属先のゲストVM)に、移動対象の多重子ゲストVM50に接続するためのNICを追加する。
S77にて、VMMコントローラ31は、移動指示の対象の多重子ゲストVM50のNICとVM移動指示の送信元のゲストVM40のNICとを、仮想ネットワークによって接続する。このとき、スイッチ33にて、移動した多重子ゲストVM50との間の仮想ネットワークとVM移動指示の送信元のゲストVM40との間の仮想ネットワークとを接続するようにスイッチングの設定を行う。
S78にて、VMMコントローラ31は、稼働中多重VM管理表に、移動した多重子ゲストVM50の情報を反映させる。具体的には、VMMコントローラ31は、稼働中多重VM管理表につき、移動したVMの多重VM呼出名を変更し、移動したVMの擬似VMM稼働VMを、VM移動指示の送信元のゲストVMに変更するとともに、NICの擬似VMM側IF名を変更する。
S79にて、VMMコントローラ31は、擬似VMM41に対し、VM制御指示に係る多重VM制御が完了した旨の正常応答を送信する。
S80にて、VMMコントローラ31は、擬似VMM41に対し、VM制御指示に係る多重VM制御が異常終了した旨のエラー応答を送信する。
[7.VM制御処理による仮想ネットワークの変化の具体例]
ここで、前述した処理のうち、新たに子ゲストVM50を配備する処理、子ゲストVM50を移動させる処理及び多重子ゲストVM50を新たに配備する処理によって仮想ネットワークがどのように変化するかにつき、図12〜図18を参照しながら具体例を示して説明する。なお、図12〜図18においては、原則として仮想ネットワークの接続形態の説明に直接関連する構成要素以外については表記を省略している。
<子ゲストVMを配備する処理>
子ゲストVM50を新たに配備する処理における仮想ネットワークの変化について、図12〜図13を参照しながら説明する。
(1)この処理の開始時において、図12に示すようなゲストVM40及び仮想ネットワークの設定状態であることを前提とする。すなわち、管理ゲストVM60のNIC[eth0]及びVM管理ブロック30のNIC[vif1.0]が仮想ネットワーク121で接続され、第1ゲストVM40AのNIC[eth0]及びVM管理ブロック30のNIC[vif2.0]が仮想ネットワーク122で接続されている。そして、仮想ネットワーク121及び122は、スイッチ33を介してスイッチング可能に接続されている。
(2)この状態において、管理ゲストVM60からゲストVM40Aに対し、子ゲストVM50Aの配備指示を送信すると、第1ゲストVM40Aの擬似VMM41Aからの制御指示により、VMMコントローラ31が、VMM20に子ゲストVM50Aの配備指示を送信する。そして、VMM20が、図13に示すように、子ゲストVM50Aを配備する。この配備した子ゲストVM50Aには、配備と同時に、初期状態としてNIC[eth0]が設定される。VMMコントローラ31は、さらに、VMM20を介し、第1ゲストVM40Aに新たにNIC[vif1.0](初期設定は[eth1])を追加する一方で、VM管理ブロック30にNIC[vif2.1]を追加し、仮想ネットワーク123で接続する。一方、VMMコントローラ31は、VM管理ブロック30側に、配備した子ゲストVM50AのNICに接続するNIC[vif4.0]を追加し、子ゲストVM50AのNIC[eth0]と仮想ネットワーク124で接続する。このとき、VMMコントローラ31は、スイッチ33にて、仮想ネットワーク123及び124を接続するようにスイッチングの設定を行う。
このように、本模擬環境では、ゲストVM40と同一階層に並列して子ゲストVM50を配備し、子ゲストVM50に対するデータ通信が従属先のゲストVM40を介してのみ可能になるように接続をすることで、ゲストVM40及び子ゲストVM50の階層構造(従属関係)を実現している。
<子ゲストVMを移動する処理>
次に、子ゲストVM50を移動する処理における仮想ネットワークの変化について、図14〜図16を参照しながら説明する。
(1)この処理の開始時において、図14に示すようなゲストVM及び仮想ネットワークの設定状態であることを前提とする。すなわち、管理ゲストVM60のNIC[eth0]及びVM管理ブロック30のNIC[vif1.0]が仮想ネットワーク131で接続されている。さらに、第1ゲストVM40AのNIC[eth0]及びVM管理ブロック30のNIC[vif2.0]が仮想ネットワーク132で接続され、第2ゲストVM40BのNIC[eth0]及びVM管理ブロック30のNIC[vif3.0]が仮想ネットワーク133で接続されている。そして、仮想ネットワーク131、132及び133は、スイッチ33を介してスイッチング可能に接続されている。さらに、第1ゲストVM40AのNIC[vif1.0](初期設定は[eth1])及びVM管理ブロック30のNIC[vif2.1]が仮想ネットワーク134で接続される一方、子ゲストVM50AのNIC[eth0]及びVM管理ブロック30のNIC[vif4.0]が仮想ネットワーク135で接続されている。そして、仮想ネットワーク134及び135は、スイッチ33を介してスイッチング可能に接続されている。
(2)この状態において、管理ゲストVM60から第1ゲストVM40Aに対し、子ゲストVM50Aを第2ゲストVM40Bに移動させる指示を送信すると、移動元であるゲストVM40Aの擬似VMM41Aからの制御指示により、VMMコントローラ31が、VMM20に子ゲストVM50Aの移動指示を送信する。なお、このとき、第1ゲストVM40Aは、移動先となる第2ゲストVM40Bに対し、VM移動を行うことを通知する。
(3)VMMコントローラ31は、VMM20を介し、図15に示すように、仮想ネットワーク134を削除する(破線部分)。さらに、VMMコントローラ31は、第1ゲストVM40AのNIC[eth1]を削除する一方、VM管理ブロック30側において、第1ゲストVM40Aとの通信を行うNIC[vif2.1]を削除する。そして、VMMコントローラ31は、移動元の第1ゲストVM40A及び移動先の第2ゲストVM40Bに対し、当該削除処理が完了したことを通知する。
(4)通知を受けた移動先の第2ゲストVM40Bの擬似VMM41Bは、VMMコントローラ31に対し、子ゲストVM50Aの移動指示を送信する。VMMコントローラ31は、VMMを介し、図16に示すように、第2ゲストVM40BのNIC[vif1.0](初期設定は[eth1])を追加する一方で、VM管理ブロック30において、第2ゲストVM40Bとの通信を行うNIC[vif3.1]を追加する。そして、VMMコントローラ31は、VMM20を介し、第2ゲストVM40BのNIC[vif1.0]及びVM管理ブロック30のNIC[vif3.1]を仮想ネットワーク136で接続し、スイッチ33にて、仮想ネットワーク135及び136をスイッチングする設定を行う。
このように、本模擬環境では、実際にサーバ間においてゲストVMの移動を行う代わりに、仮想ネットワークの接続を切り替えることによって子ゲストVMの移動を実現している。
<多重子ゲストVMを追加する処理>
次に、多重子ゲストVM50を配備する処理であって、すでに配備されている多重子ゲストVM50に、新たにゲストVM40を接続する処理における仮想ネットワークの変化について、図17〜図18を参照しながら説明する。
(1)この処理の開始時において、図17に示すようなゲストVM及び仮想ネットワークの設定状態であることを前提とする。すなわち、管理ゲストVM60のNIC[eth0]及びVM管理ブロック30のNIC[vif1.0]が仮想ネットワーク141で接続されている。さらに、第1ゲストVM40AのNIC[eth0]及びVM管理ブロック30のNIC[vif2.0]が仮想ネットワーク142で接続され、第2ゲストVM40BのNIC[eth0]及びVM管理ブロック30のNIC[vif3.0]が仮想ネットワーク143で接続されている。そして、仮想ネットワーク141、142及び143は、スイッチ33を介してスイッチング可能に接続されている。さらに、第1ゲストVM40AのNIC[vif1.0](初期設定は[eth1])及びVM管理ブロック30のNIC[vif2.1]が仮想ネットワーク144で接続される一方、多重子ゲストVM50のNIC[eth0]及びVM管理ブロック30のNIC[vif4.0]が仮想ネットワーク145で接続されている。そして、仮想ネットワーク144及び145は、スイッチ33を介してスイッチング可能に接続されている。
(2)この状態において、管理ゲストVM60から第1ゲストVM40Aに対し、多重子ゲストVM50を配備する指示を第2ゲストVM40Bに送信すると、第2ゲストVM40Bの擬似VMM41Bからの制御指示により、VMMコントローラ31が、VMM20に多重子ゲストVM50の配備指示を送信する。
(3)ここで、この配備対象の多重子ゲストVM50はすでに配備済みであるため、VMMコントローラ31は、VMM20を介し、図18に示すように、多重子ゲストVM50に、NIC[eth1]を追加する。さらに、VMMコントローラ31は、VM管理ブロック30において、多重子ゲストVM50のNIC[eth1]と通信を行うためのNIC[vif4.1]を追加し、多重子ゲストVM50のNIC[eth1]と仮想ネットワーク146で接続する。さらに、第2ゲストVM40Bに新たにNIC[vif1.0](初期設定は[eth0])を追加する一方、VM管理ブロック30において、第2ゲストVM40Bと通信を行うためのNIC[vif3.1]を追加し、仮想ネットワーク147で接続する。このとき、VMMコントローラ31は、スイッチ33にて、仮想ネットワーク146及び147を接続するようにスイッチングの設定を行う。
このように、本模擬環境では、すでに稼働している多重子ゲストVM50に対し、新たに従属先となるゲストVM40との接続をすることで、子ゲストVM50の数を増やすことなく、実質的に子ゲストVM50を新たに配備することを実現している。
[8.本システムによる作用効果等]
前述した実施形態で具現化した技術によれば、1つの情報処理装置であるサーバ10において、ゲストVM40と子ゲストVM50の階層関係(従属関係)を構築することができる。このため、情報処理システムの構成要素であるサーバ及びサーバ上で動作するゲストVMを模擬的に構築することができる。これにより、例えば、仮想化技術を適用したシステムの開発環境において、実際の情報処理システムの構成と同様の構成を限られた物理資源で実現し、動作検証を行うことが可能となる。特に、例えば、ゲストVM上で動作する性能管理エージェントの開発等においては、実際にゲストVMを起動してVMMと連係した状態において、個別のゲストVMの動作状態の情報を収集する動作等につき、動作検証をすることができる。
ここで、上記実施形態において、実環境において仮想化環境が構築されるサーバで稼働するゲストVMに相当する子ゲストVM50(又は多重ゲストVM60)が、VMM20上において、仮想化環境が構築されるサーバに相当するゲストVM40と同じ階層で並列に稼働する。そして、子ゲストVM50へのデータの流れが必ず従属先のゲストVM40のスイッチ45を通るように仮想ネットワークを接続し、子ゲストVM50が最終送信先となっているデータについては、ゲストVM40でさらにスイッチングして子ゲストVM50にデータを送信している。このように、上記実施形態では、子ゲストVM50がゲストVM40にあたかも従属しているように各ゲストVMを構築している。このため、いわゆるVMonVMの技術等を適用する必要なく、階層化されたVMを構築することができる。そして、かかる構成においては、例えば管理ゲストVM60等、実環境においてサーバに相当する他のゲストVMから子ゲストVM50にアクセスするときには、実環境と同じく、ゲストVMが稼働するサーバに相当するゲストVM40にアクセスすればよい。
なお、ゲストVM40及び子ゲストVM50を接続しているのと同様にして、子ゲストVM50に従属する孫ゲストVMを構築することも可能である。このように、前述した実施形態によれば、VMの階層の深さに制限を設けることなく模擬環境を実現することができる。
また、実環境において仮想化環境が構築されるサーバに相当するゲストVM40には擬似VMM41を設けている。そして、模擬環境を構築したサーバ10のVMMコントローラ31に、擬似VMM41からの要求に応じたVM制御処理を実行させている。このように擬似VMMを設けることにより、模擬環境においても、ゲストVM40で動作するVM管理エージェント42側からみたときに、実際のサーバでVM制御処理を行う場合の処理の流れと同様の処理の流れでVM制御を実現することができている。
さらに、前述したように、多重ゲストVM60を設け、複数のゲストVM40が1つの多重ゲストVM60を共有することによって、実際のVMの稼働数を少なくし、使用する物理資源を少なくした状態で、大規模環境を模擬することができる。
なお、本実施形態では、管理ゲストVM60が各ゲストVM40に従属する子ゲストVM50の制御指示を送信する構成で説明を行ったが、管理ゲストVM60は必ずしも必要ではない。
さらに、前述したサーバ10の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
[9.ハードウェア構成]
図19は、前述した実施形態のサーバ10に相当する情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ901、メモリ902、ストレージ903、可搬記憶媒体駆動装置904、入出力装置905及び通信インタフェース906を備える。
プロセッサ901は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ901は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ2等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすTLBを備える。なお、プロセッサ901は、CPU(Central Processing Unit)コアが複数設けられている構成でもよい。
メモリ902は、例えばRAM(Random Access Memory)等の記憶装置であり、プロセッサ901で実行されるプログラムがロードされるとともに、プロセッサ901の処理に用いるデータが格納されるメインメモリである。また、ストレージ903は、例えばHDD(Hard Disk Drive)やフラッシュメモリ等の記憶装置であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置904は、可搬記憶媒体907に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体907は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、プロセッサ901は、メモリ902やストレージ903と協働しつつ、ストレージ903や可搬記憶媒体907に格納されたプログラムを実行する。なお、プロセッサ901が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
入出力装置905は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース906は例えばLAN(Local Area Network)カード等であり、外部とのデータ通信を可能にする。前述した情報処理装置の各構成要素は、バス908で接続されている。
なお、上述した各実施形態において、記憶装置に格納されたデータは、当該情報処理装置とは異なる他の装置に含まれる記憶装置に含まれていてもよい。この場合、当該情報処理装置と当該他の装置とが通信可能にネットワーク接続され、当該情報処理装置は、ネットワークを介して当該他の装置の記憶装置にアクセスすることとなる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)仮想マシンの制御を行うとともに仮想マシン同士でデータ通信を行う仮想ネットワークを提供するハイパーバイザと、
少なくとも、前記ハイパーバイザ上において同一階層で並列に稼働する、仮想スイッチを備えた第1仮想マシン及び該第1仮想マシンに従属する子仮想マシン並びに第2仮想マシンと
を備え、
前記子仮想マシンは前記第1仮想マシンと仮想ネットワークにより接続され、前記第2仮想マシンと前記子仮想マシンとのデータ通信が、少なくとも、前記第1仮想マシンの仮想スイッチ並びに前記第1仮想マシン及び前記子仮想マシン間の仮想ネットワークを経由して行われる情報処理装置。
(付記2)前記子仮想マシンの従属先が前記第1仮想マシンから前記第2仮想マシンへと移動するときに、前記第1仮想マシン及び前記子仮想マシン間の仮想ネットワークが切断される一方で、前記第2仮想マシン及び前記子仮想マシン間の仮想ネットワークが接続される付記1に記載の情報処理装置。
(付記3)前記子仮想マシンは、前記第1仮想マシン及び前記第2仮想マシンの両方に従属し、前記第1仮想マシンと仮想ネットワーク接続される一方で、さらに前記第2仮想マシンと仮想ネットワーク接続され、
前記子仮想マシンに対するデータ通信が、少なくとも、前記第1仮想マシンの仮想スイッチ並びに前記第1仮想マシン及び前記子仮想マシン間の仮想ネットワーク又は前記第2仮想マシンの仮想スイッチ並びに前記第2仮想マシン及び前記子仮想マシン間の仮想ネットワークを経由して行われる付記1又は2に記載の情報処理装置。
(付記4)仮想マシンの制御を行うとともに仮想マシン同士でデータ通信を行う仮想ネットワークを提供するハイパーバイザ、及び該ハイパーバイザの制御を行うコントローラと、
前記ハイパーバイザの制御下において稼働する仮想マシンであって、自仮想マシンに従属する子仮想マシンの管理を行う管理部及び擬似ハイパーバイザを備えた第1仮想マシンと
を備え、
前記第1仮想マシンの擬似ハイパーバイザは、該第1仮想マシンに従属する子仮想マシンの制御指示を該第1仮想マシンの管理部から受信したときに、該制御指示を前記コントローラに送信し、
前記コントローラは、前記制御指示を受信したときに、該制御指示に基づいて前記子仮想マシンの制御を行うように前記ハイパーバイザを制御する情報処理装置。
(付記5)前記子仮想マシンは前記第1仮想マシンと仮想ネットワークにより接続され、前記第1仮想マシン以外の他の仮想マシンと前記子仮想マシンとのデータ通信が、少なくとも、前記第1仮想マシンの仮想スイッチ並びに前記第1仮想マシン及び前記子仮想マシン間の仮想ネットワークを経由して行われる付記4記載の情報処理装置。
(付記6)前記情報処理装置は、自仮想マシンに従属する仮想マシンの管理を行う管理部及び擬似ハイパーバイザを備えた第2仮想マシンを備え、
前記コントローラは、前記子仮想マシンの制御指示が、前記子仮想マシンの従属先を前記第1仮想マシンから前記第2仮想マシンへと移動させる指示であるときに、前記第1仮想マシン及び前記子仮想マシン間の仮想ネットワークを切断し、前記第2仮想マシン及び前記子仮想マシン間の仮想ネットワークを接続するようにハイパーバイザを制御する付記5に記載の情報処理装置。
(付記7)前記情報処理装置は、自仮想マシンに従属する仮想マシンの管理を行う管理部及び擬似ハイパーバイザを備えた第2仮想マシンを備え、
前記子仮想マシンは、前記第1仮想マシン及び前記第2仮想マシンの両方に従属し、前記第1仮想マシン及び前記第2仮想マシンのそれぞれの擬似ハイパーバイザが、それぞれの管理部から受信した前記子仮想マシンの制御指示を前記コントローラに送信する付記4〜6に記載の情報処理装置。
(付記8)前記子仮想マシンは、前記第1仮想マシンと仮想ネットワーク接続される一方で、前記第2仮想マシンと仮想ネットワーク接続されており、
前記コントローラは、前記子仮想マシンの制御指示が、前記子仮想マシンの削除指示であるときに、該制御指示の送信元の仮想マシン及び前記子仮想マシン間の仮想ネットワークの接続を切断し、該切断後に前記子仮想マシンに接続する他の仮想マシンが存在しないときにのみ、該子仮想マシン自体を削除するように前記ハイパーバイザを制御する付記7記載の情報処理装置。
(付記9)前記コントローラは、前記第1仮想マシンの擬似ハイパーバイザから受信した前記子仮想マシンの制御指示が該子仮想マシンの配備指示であるときに、該子仮想マシンを配備するとともに、前記第1仮想マシン及び該子仮想マシン間の仮想ネットワークを接続するように前記ハイパーバイザを制御する付記4〜8に記載の情報処理装置。
(付記10)仮想マシンの制御を行うとともに仮想マシン同士でデータ通信を行う仮想ネットワークを提供するハイパーバイザ、及び該ハイパーバイザの制御を行うコントローラと、
前記ハイパーバイザの制御下において稼働する仮想マシンであって、自仮想マシンに従属する子仮想マシンの管理を行う管理部及び擬似ハイパーバイザを備えた第1仮想マシンと
を備えた情報処理装置において、
前記第1仮想マシンの擬似ハイパーバイザが、該第1仮想マシンに従属する子仮想マシンの制御指示を該第1仮想マシンの管理部から受信したときに、該制御指示を前記コントローラに送信し、
前記コントローラが、前記制御指示を受信したときに、該制御指示に基づいて前記子仮想マシンの制御を行うように前記ハイパーバイザを制御する情報処理方法。
(付記11)仮想マシンの制御を行うとともに仮想マシン同士でデータ通信を行う仮想ネットワークを提供するハイパーバイザ、及び該ハイパーバイザの制御を行うコントローラと、
前記ハイパーバイザの制御下において稼働する仮想マシンであって、自仮想マシンに従属する子仮想マシンの管理を行う管理部及び擬似ハイパーバイザを備えた第1仮想マシンと
を備えた情報処理装置に、
前記第1仮想マシンの擬似ハイパーバイザが、該第1仮想マシンに従属する子仮想マシンの制御指示を該第1仮想マシンの管理部から受信したときに、該制御指示を前記コントローラに送信する手順と、
前記コントローラが、前記制御指示を受信したときに、該制御指示に基づいて前記子仮想マシンの制御を行うように前記ハイパーバイザを制御する手順と
を実行させるための情報処理プログラム。