(57)【要約】【課題】種類が異なるハイパーバイザが管理する仮想マシン間においてライブマイグレーションを行う通知変換プログラム及び通知変換方法を提供する。【解決手段】仮想マシンが送信した第１の通知の取得に応答して，第１の通知と，第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，取得した第１の通知を実行可能な第１の管理ソフトウエアの種別を特定し，特定した第１の管理ソフトウエアの種別に基づき，取得した第１の通知を，第１の通知を取得した第２の管理ソフトウエアが実行可能な第２の通知に変換し，変換した第２の通知を実行する。【選択図】図９
2016018298.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンが送信した第１の通知の取得に応答して，前記第１の通知と，該第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，前記取得した第１の通知を実行可能な第１の管理ソフトウエアの種別を特定し，
前記特定した第１の管理ソフトウエアの種別に基づき，前記取得した第１の通知を，該第１の通知を取得した第２の管理ソフトウエアが実行可能な第２の通知に変換し，
前記変換した第２の通知を実行する
処理をコンピュータに実行させる通知変換プログラム。
【請求項２】
請求項１において，
前記第１の管理ソフトウエアの種別を特定する処理は，前記第１の通知の送信元の仮想マシンを識別する情報と，前記第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第２の情報を記憶した前記記憶部を参照し，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されていない場合，前記第１の情報を参照して前記管理ソフトウエアの種別を特定し，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されている場合，前記第２の情報を参照して前記管理ソフトウエアの種別を特定する通知変換プログラム。
【請求項３】
請求項２において，
前記第１の管理ソフトウエアの種別を特定する処理は，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されていない場合，該第２の情報を前記記憶部に記憶する通知変換プログラム。
【請求項４】
請求項２において，さらに，
前記第２の管理ソフトウエアと異なる管理ソフトウエアが送信した前記第２の情報を受信した場合であって，前記受信した第２の情報が前記記憶部に記憶されていない場合，前記受信した第２の情報を前記記憶部に記憶する通知変換プログラム。
【請求項５】
請求項１において，
前記第１及び第２の管理ソフトウエアは，仮想マシンの管理を行うハイパーバイザであり，
前記第１及び第２の通知は，仮想マシンが前記ハイパーバイザの機能を呼び出すハイパーバイザコールである通知変換プログラム。
【請求項６】
仮想マシンが送信した第１の通知の取得に応答して，前記第１の通知と，該第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，前記取得した第１の通知を実行可能な第１の管理ソフトウエアの種別を特定し，
前記特定した第１の管理ソフトウエアの種別に基づき，前記取得した第１の通知を，該第１の通知を取得した第２の管理ソフトウエアが実行可能な第２の通知に変換し，
前記変換した第２の通知を実行する
通知変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，通知変換プログラム及び通知変換方法に関する。
【背景技術】
【０００２】
近年，物理装置（以下，物理マシンとも呼ぶ）の性能向上に伴い，複数の仮想装置（以下，仮想マシンとも呼ぶ）を１つの物理マシンに集約する仮想化技術の研究が進められている。この仮想化技術は，例えば，仮想化ソフトウエア（ハイパーバイザ）が物理マシンを複数の仮想マシンに割り当てて，各仮想マシンにインストールされたアプリケーションプログラム（以下，アプリケーションとも呼ぶ）によるサービスの提供を可能にする。
【０００３】
運用中の仮想マシンにおいて，仮想マシンを構成する内容（以下，ディスクイメージと称する）を，別の物理マシンに作成された仮想マシンに移行するマイグレーションが行われる場合がある。仮想マシンによるサービスを提供する事業者（以下，単に事業者とも呼ぶ）は，このマイグレーションを行うことにより，例えば，ＣＰＵの使用率が１００％に近い物理マシンに作成された仮想マシンのディスクイメージを，余裕がある他の物理マシンに移動する。これにより，事業者は，各物理マシン間における処理負荷の平準化を図ることが可能になる。（例えば，特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−３９６８５号公報
【特許文献２】特開２０１１−１３４３２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなマイグレーションにおいて，仮想マシンが提供するサービスの内容によっては，サービスの提供を中断することなく実行する必要がある場合がある（以下，これをライブマイグレーションと呼ぶ）。このライブマイグレーションは，例えば，仮想マシンの再起動等を行わずにマイグレーションを実行することにより，マイグレーション実行中におけるサービスの提供の中断を避けるものである。
【０００６】
ここで，仮想マシンの管理を行うハイパーバイザは，その種類等によって仮想的なハードウエア構成が異なるため，管理する仮想マシンに読み込ませるドライバ等のソフトウエアの種類が異なる場合がある。そのため，例えば，種類の異なるハイパーバイザが動作する物理マシン間においてマイグレーションが行われた場合，移行した仮想マシンは，再起動を行う必要がある。そして，その仮想マシンは，移行後のハイパーバイザの管理下において動作するために必要なドライバ等の読み込みを行う。したがって，種類の異なるハイパーバイザが動作する物理マシン間においては，ライブマイグレーションを実行することができない場合がある。
【０００７】
そこで，一つの実施の形態の目的は，種類が異なるハイパーバイザが動作する物理マシン間においてライブマイグレーションを行う通知変換プログラム及び通知変換方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施の形態の一つの側面によれば，仮想マシンを管理する第１の管理ソフトウエアに向けた第１の通知の取得に応じて，前記第１の通知と，該第１の通知に対応する管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，前記取得した第１の通知に対応する管理ソフトウエアの種別を特定し，
前記管理ソフトウエアの種別に基づき，前記取得した第１の通知を前記第１の管理ソフトウエアが認識可能な第２の通知に変換し，
前記変換した第２の通知を実行する。
【発明の効果】
【０００９】
一つの側面によれば，種類が異なるハイパーバイザが動作する物理マシン間においてライブマイグレーションを行う。
【図面の簡単な説明】
【００１０】
【図１】情報処理システムの全体構成を示す図である。
【図２】ハイパーコールを説明する図である。
【図３】仮想マシンのドライバを説明する図である。
【図４】仮想マシンのマイグレーションを説明する図である。
【図５】仮想マシンのマイグレーションを説明する図である。
【図６】仮想マシンのマイグレーションを説明する図である。
【図７】物理マシンのハードウエア構成を示す図である。
【図８】図７の物理マシンの機能ブロック図である。
【図９】第１の実施の形態における通知変換処理の概略を示すフローチャート図である。
【図１０】第１の実施の形態における通知変換処理の概略を説明する図である。
【図１１】第１の実施の形態における通知変換処理の詳細を示すフローチャート図である。
【図１２】第１の実施の形態における通知変換処理の詳細を説明する図である。
【図１３】第１の実施の形態における通知変換処理の詳細を説明する図である。
【図１４】第１の実施の形態における通知変換処理の詳細を説明する図である。
【図１５】第１の実施の形態における通知変換処理を説明する図である。
【図１６】第１の実施の形態における通知変換処理を説明する図である。
【図１７】第２の実施の形態における通知変換処理を示すフローチャート図である。
【図１８】第２の実施の形態における通知変換処理を説明する図である。
【図１９】第２の実施の形態における通知変換処理を説明する図である。
【図２０】第３の実施の形態における通知変換処理を示すフローチャート図である。
【図２１】第３の実施の形態における通知変換処理を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１は，情報処理システムの全体構成を示す図である。図１に示す情報処理システム１０は，例えば，データセンタ内に，管理サーバ１と，仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を作成する物理マシン２とが設けられている。そして，データセンタには，インターネットやイントラネット等のネットワークを介して，利用者端末８からアクセス可能になっている。
【００１２】
物理マシン２は，図１の例では複数の物理マシンから構成されており，各物理マシンは，ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と，ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と，ハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の大容量メモリとネットワークとを有する。そして，物理マシン２のリソースは，複数の仮想マシン３に割り当てられる。
【００１３】
管理サーバ１は，例えば，物理マシン２とアクセス可能であり，物理マシン２内における仮想マシン３の作成指示や作成された仮想マシン３の管理を行う。
【００１４】
仮想マシン３は，例えば，サービス事業者がそのインフラ等をネットワーク経由で利用者に提供するもの（以下，クラウドサービスとも呼ぶ）である。クラウドサービスは，コンピュータシステムを構築し稼働させるための基盤，即ち，仮想マシン３やネットワーク等のインフラストラクチャそのものを，ネットワーク経由で提供するサービスである。また，利用者は，例えば，利用者端末８からクラウドサービスポータルサイトにアクセスして，仮想マシンに必要な仕様，例えばＣＰＵのクロック周波数，メモリの容量（ＧＢ），ハードディスクの容量（ＭＢ／ｓｅｃ，ＩＯＰＳ），及びネットワークの通信帯域幅（Ｇｂｐｓ）を選択し，それらについてクラウド利用契約を締結する。また，利用者端末８は，例えば，仮想マシン３の稼働状態を監視や，仮想マシンに対する操作等を可能にする。
【００１５】
仮想化ソフトウエア４は，管理サーバ１からの指示に応じて，物理マシン２のＣＰＵ，メモリ，ハードディスク，ネットワーク等のリソースを割り当てることにより，仮想マシン３を動作させる基盤ソフトウエアである。仮想化ソフトウエア４は，例えば，物理マシン２で動作する。
【００１６】
仮想マシン３は，物理マシン２のリソースが割り当てられることに加えて，例えば，ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ），ミドルウエア，アプリケーション，データベース等を有するイメージファイルをそのハードディスク内に有する。そして，仮想マシン３は，例えば，起動時にイメージファイルをハードディスクからメモリに書き込み，所望のサービスに対応する動作を行う。
【００１７】
［仮想マシンによるハイパーコール］
次に，仮想マシン３が仮想化ソフトウエア４の機能を呼び出すためのハイパーコールについて説明する。図２は，仮想マシンと仮想化ソフトウエアとの関係を説明する図である。
【００１８】
図２に示す仮想化ソフトウエア４Ａは，物理マシン２Ａのハードウエア２１Ａに直接インストールされているものであり，仮想マシン３Ａ，３Ｂ，３Ｃの管理を行う。そして，図２の例における仮想マシン３Ａは，仮想化ソフトウエア４と協働して他の仮想マシンの管理等を行うための仮想マシンである。また，図２の例における仮想マシン３Ａのドライバ３１Ａは，ハードウエア２１Ａのデバイス（例えば，物理ＮＩＣ等）を制御するためのデバイスドライバである。なお，図２の例におけるドライバ３２Ａ，３２Ｂ，３２Ｃは，仮想マシンを高速化するために，仮想マシンのカーネル内において動作するＰＶドライバ（Ｐａｒａ ｖｉｒｔｕａｌｉｚｅｄ ｄｒｉｖｅｒ）である。ＰＶドライバの動作については後述する。
【００１９】
図２の例において，例えば，仮想マシン３Ｃが物理マシン２Ａの外部にパケットを送信する場合，仮想マシン３Ｃは，ドライバ３２Ｃによって，仮想化ソフトウエア４Ａに割り込み通知を送信する（以下，この通知をハイパーバイザコール，またはハイパーコールと称する）。そして，仮想化ソフトウエア４Ａは，例えば，割り込み通知を受信するためのソフトウエアであるトラップハンドラ４１Ａにおいて，仮想マシン３Ｃから送信されたハイパーコールを受信する。すなわち，仮想化ソフトウエア４Ａは，各仮想マシンからハードウエア２１Ａへのアクセスを一旦受信し，仮想化ソフトウエア４Ａがハードウエア２１Ａへのアクセスを行う。これにより，仮想化ソフトウエア４Ａは，例えば，各仮想マシンからハードウエア２１Ａへのアクセスの要求を集約し，ハードウエア２１Ａへのアクセス回数を抑制する。そのため，仮想化ソフトウエア４Ａは，各仮想マシンからハードウエア２１Ａへのアクセスを効率的に行うことができる。  
【００２０】
次に，仮想化ソフトウエア４Ａは，例えば，ハイパーコールの内容に基づいて，仮想マシン３Ａのドライバ３２Ａに対し，ハードウエア２１Ａへのアクセスを指示する。そして，仮想マシン３Ａは，例えば，ドライバ３２Ａが仮想化ソフトウエア４Ａからの通知を受信したことに応答して，ドライバ３１Ａによって，ハードウエア２１Ａのデバイスに仮想マシン３Ｃのパケットを送信するように指示する。すなわち，図２に示す例において，仮想マシン３Ｃは，仮想マシン３Ａのドライバ３１Ａを利用してハードウエア２１Ａへのアクセスを行っている。そのため，仮想化ソフトウエア４Ａは，ハードウエア２１Ａのデバイスに直接アクセスするためのデバイスドライバをインストールする必要がない。これにより，仮想化ソフトウエア４Ａは，オーバーヘッドを小さくし，動作の安定性を向上させることが可能になる。
【００２１】
[ＰＶドライバの動作]
次に，ＰＶドライバについて説明する。図３は，図２に示す仮想マシンのドライバを説明する図である。なお，図３においては，図２に示すドライバのうち，仮想マシン３Ａのドライバ３２Ａと，仮想マシン３Ｂのドライバ３２Ｂとの関係を例にしてＰＶドライバの説明を行う。
【００２２】
ＰＶドライバは，ハードウエアにアクセス可能な仮想マシンにインストールされるバックエンドドライバと，バックエンドドライバがインストールされた仮想マシンとは異なる仮想マシンにインストールされるフロントエンドドライバとからなる。すなわち，図３の例において，ハードウエア２１Ａにアクセス可能な仮想マシン３Ａにインストールされたドライバ３２Ａがバックエンドドライバであり，仮想マシン３Ｂにインストールされたドライバ３２Ｂがフロントエンドドライバである。具体的に，フロントエンドドライバは，例えば，図３に示す例においては，仮想マシン３Ｂからハードウエア２１Ａに対するアクセス要求等をバックエンドドライバに送信する。そして，バックエンドドライバは，例えば，フロントエンドドライバから受信したハードウエア２１Ａへのアクセス要求を，デバイスドライバであるドライバ３１Ａに通知するものである。
【００２３】
また，図３の例において，仮想化ソフトウエア４Ａは，バッファ領域４２を有している。ドライバ３１Ａ及びドライバ３２Ｂは，このバッファ領域４２に対し，データやパラメータを書き込みや読み出しを行うことができる。以下，仮想マシン３Ｂが物理マシン２の外部にデータ（パケット）を送信する場合の処理の例について説明する。
【００２４】
初めに，仮想マシン３Ｂは，例えば，送信するデータが記憶されているハードウエア２１Ａのメモリ領域のアドレスをバッファ領域４２に書き込む。そして，仮想マシン３Ｂは，送信するデータが記憶されているアドレスをバッファ領域４２に書き込んだ旨のハイパーコールを，仮想化ソフトウエア４Ａに送信する。次に，仮想化ソフトウエア４Ｂは，ハイパーコールの受信後，受信したハイパーコールの内容に基づいて，バッファ領域４２に書き込まれたアドレスのデータを送信すべき旨の指示を，仮想マシン３Ａのドライバ３２Ａに対して行う。そして，仮想化ソフトウエア４から指示を受けた仮想マシン３Ａは，ドライバ３２Ａによって，バッファ領域４２に書き込まれたアドレスを取得する。さらに，仮想マシン３Ａは，ドライバ３１Ａによってハードウエア２１Ａにアクセスし，取得したアドレスに記憶されたデータの送信を行う。これにより，仮想マシン３Ｂは，ハードウエア２１Ａに直接アクセスすることなく，ハードウエア２１Ａに対する処理を行うことができる。なお，仮想マシン３Ｂ及び仮想マシン３Ａは，例えば，データの送信先に関する情報についても，バッファ領域４２を利用して受け渡しを行うものであってもよい。
【００２５】
[仮想マシンのマグレーション]
次に，仮想マシン３のマイグレーションについて説明する。図４から図６は，仮想マシンのマイグレーションを説明する図である。なお，図４の物理マシン２Ａは，図２において説明した物理マシン２Ａと同じ構成である。
【００２６】
図４は，物理マシン２Ａの仮想マシン３Ｃから物理マシン２Ｂの仮想マシン３Ｄに向けて，仮想マシン３Ｃ内のデータのマイグレーションを実行する場合の図である。図４において，物理マシン２Ｂのハードウエア２１Ｂには，仮想化ソフトウエア４Ｂが直接インストールされている。そして，図４の例において，仮想化ソフトウエア４Ｂは，仮想マシン３Ｄ，３Ｅ，３Ｆの管理を行う。また，仮想マシン３Ｆは，仮想マシン３Ａと同様に，図２の例における仮想マシン３Ａは，仮想化ソフトウエア４と協働して他の仮想マシンの管理等を行うための仮想マシンである。なお，図４に示すように，仮想マシン３Ｃに含まれるドライバ３２Ｃは，マイグレーションの実行によってそのまま仮想マシン３Ｄに移行される。また，図４及び図５の例において，仮想化ソフトウエア４Ａと仮想化ソフトウエア４Ｂとは，同じ種類の仮想化ソフトウエアであるものとする。
【００２７】
次に，図５は，マイグレーションの実行を完了したドライバ３２Ｃが，仮想化ソフトウエア４Ｂにハイパーコールを行った場合の図である。図５に示す例において，仮想化ソフトウエア４Ａと仮想化ソフトウエア４Ｂとは同じ種類の仮想化ソフトウエアであるため，ドライバ３２Ｃは，マイグレーション後における仮想化ソフトウエア４Ｂにも対応可能である。したがって，仮想化ソフトウエア４Ｂは，仮想マシン３Ｄがドライバ３２Ｃによって送信したハイパーコールを実行することが可能である。これは，図５に示すドライバ３２Ｃは，マイグレーションの実施に伴って移行後の仮想化ソフトウエアに対応するドライバをインストールする必要がないことを意味する。すなわち，同じ種類の仮想化ソフトウエアが動作する物理マシン間においては，ライブマイグレーションを実行することが可能である。
【００２８】
次に，図６は，仮想化ソフトウエア４Ａと仮想化ソフトウエア４Ｂの種類が異なる場合を説明する例である。図６に示すように，物理マシン２Ａの仮想マシン３Ｃから物理マシン２Ｂの仮想マシン３Ｄにマイグレーションを実行した場合において，移行したドライバ３２Ｃは，移行先の仮想化ソフトウエア４Ｂとは対応していない。すなわち，仮想化ソフトウエア４Ｂは，ドライバ３２Ｃが送信したハイパーコールの内容を認識することができないため，そのハイパーコールに基づく処理を行うことができない。そのため，図６に示す場合において，仮想マシン３Ｄは，マイグレーションの完了後において，再起動を行うことにより，仮想マシン３Ｄに仮想化ソフトウエア４Ｂに対応したＰＶドライバをインストールする必要がある。これにより，仮想化ソフトウエア４Ｂは，その後，仮想マシン３Ｄが送信したハイパーコールを実行することが可能になる。しかし，図６に示すように，種類が異なる仮想化ソフトウエアが動作する物理マシン間におけるマイグレーションの実行時には，再起動の実施が必須になるため，ライブマイグレーションを行うことはできなくなる。そのため，種類が異なる仮想化ソフトウエアが動作する物理マシン間におけるマイグレーションは，同じ種類の仮想化ソフトウエアが動作する物理マシン間におけるマイグレーションの場合と比較して，実行可能条件等の制約が大きくなる。
【００２９】
そこで，本実施の形態では，仮想化ソフトウエア４Ｂは，ハイパーコールの取得に応じて，ハイパーコールとハイパーコールに対応する仮想ソフトウエアの種別との対応情報に基づいて，ハイパーコールを実行可能な仮想ソフトウエアの種別を特定する。そして，仮想化ソフトウエア４Ｂは，ハイパーコールを仮想化ソフトウエア４Ｂが実行可能なハイパーコールに変換することにより，再起動を行うことなくマイグレーションを行う。
【００３０】
［物理マシンのハードウエア構成］
次に，物理マシン２Ｂの構成について説明する。図７は，物理マシンのハードウエア構成を示す図である。物理マシン２Ｂは，プロセッサであるＣＰＵ２０１と，メモリ２０２と，外部インターフェース（Ｉ／Ｏユニット）２０３と，記憶媒体２０４とを有する。各部は，バス２０５を介して互いに接続される。記憶媒体２０４は，例えば，記憶媒体２０４内のプログラム格納領域（図示しない）に，仮想化ソフトウエア４を起動する処理を行うためのプログラム（図示しない）を記憶する。また，記憶媒体２０４は，例えば，記憶媒体２０４内のプログラム格納領域に，仮想マシン３から受信したハイパーコールの変換を行うための処理（以下，通知変換処理とも呼ぶ）を行うためのプログラム２１０（以下，通知変換プログラムとも呼ぶ）を記憶する。ＣＰＵ２０１は，図７に示すように，プログラム２１０の実行時に，プログラム２１０を記憶媒体２０４からメモリ２０２にロードし，プログラム２１０と協働して通知変換処理を行う。また，記憶媒体２０４は，例えば，通知変換処理を行う際に用いられる情報を記憶する情報格納領域２３０（以下，記憶部２３０とも呼ぶ）を有する。
【００３１】
図８は，図７の物理マシンの機能ブロック図である。ＣＰＵ２０１は，プログラム２１０と協働することにより，例えば，通知受信部２１１と，種別判定部２１２と，種別変換部２１３と，処理実行部２１４として動作する（以下，通知受信部２１１と，種別判定部２１２と，種別変換部２１３と，処理実行部２１４とを合わせて通知変換部２１０とも呼ぶ）。また，ＣＰＵ２０１は，プログラム２１０と協働することにより，例えば，処理切換部２１５と，管理情報記憶部２１６と，通知送信部２１７として動作する。また，情報格納領域２３０には，例えば，種別管理情報２３１（以下，第１の情報とも呼ぶ）と，仮想マシン管理情報２３２（以下，第２の情報とも呼ぶ）と，通知変換情報２３３（以下，第３の情報とも呼ぶ）とが記憶されている。なお，上記の機能は，例えば，図６に示す仮想化ソフトウエア４Ｂの機能として動作するものである。
【００３２】
通知受信部２１１は，例えば，物理マシン２Ｂに作成された仮想マシンから通知されたハイパーコール（以下，第１の通知とも呼ぶ）を受信する。通知受信部２１１は，例えば，ハイパーコールをトラップするためのソフトウエアであるトラップハンドラからなるものであってよい。
【００３３】
種別判定部２１２は，例えば，通知受信部２１１が仮想マシンから送信されたハイパーコールを取得したことに応じて，種別管理情報２３１を参照して，取得したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定するものである。種別管理情報２３１は，例えば，ハイパーコールと，そのハイパーコールを実行可能な仮想化ソフトウエアの種別とを対応させた情報である。種別管理情報２３１の詳細については後述する。
【００３４】
種別変換部２１３は，例えば，種別判定部２１２が特定した仮想化ソフトウエアの種別に基づき，通知受信部２１１が取得したハイパーコールを，ハイパーコールを受信した仮想化ソフトウエア（図６の例では仮想化ソフトウエア４Ｂ）が実行可能なハイパーコール（以下，第２の通知とも呼ぶ）に変換する。種別変換部２１３は，例えば，各仮想化ソフトウエアが実行可能なハイパーコールを対応させた情報である通知変換情報２３３を参照して，ハイパーコールを変換するものであってよい。通知変換情報２３３の詳細については後述する。なお，種別変換部２１３は，通知受信部２１１が受信したハイパーコールを，後述する処理実行部２１４が変換することなく実行できる場合には，変換を行わないものであってよい。
【００３５】
処理実行部２１４は，例えば，処理切換部２１５が変換したハイパーコールの内容に基づいて各処理を行う。ハイパーコールの内容に基づく処理は，例えば，デバイスドライバを有する仮想マシンに対するハードウエアへのアクセス要求等が該当する。処理実行部２１４は，ハイパーコールの種類に応じて複数の処理を行うための複数の処理実行部からなるものであってよい。
【００３６】
処理切換部２１５は，例えば，通知受信部２１１が仮想マシンからのハイパーコールを取得したことに応じて，ハイパーコールの送信元の仮想マシンを特定する。そして，処理切換部２１５は，例えば，仮想マシン管理情報２３２を参照し，特定した仮想マシンに関する情報が記憶されていない場合，取得したハイパーコールを種別判定部２１２に送信する。また，処理切換部２１５は，仮想マシン管理情報２３２を参照し，特定した仮想マシンに関する情報が記憶されている場合，仮想マシン管理情報２３２に基づいて，取得したハイパーコールに対応する仮想化ソフトウエアの種別を特定する。仮想マシン管理情報２３２は，例えば，ハイパーコールの送信元の仮想マシンを識別する情報と，ハイパーコールに対応する仮想化ソフトウエアの種別とを対応させた情報である。仮想マシン管理情報２３２に詳細については後述する。
【００３７】
管理情報記憶部２１６は，例えば，処理切換部２１５が仮想マシン管理情報２３２を参照し，ハイパーコールの送信元の仮想マシンに関する情報が記憶されていないと判断した場合，種別判定部２１２が特定した仮想化ソフトウエアの種別に基づき，ハイパーコールの送信元の仮想マシンに関する仮想マシン管理情報２３２の記憶を行う。
【００３８】
通知送信部２１７は，例えば，処理切換部２１５が仮想マシン管理情報２３２を参照し，ハイパーコールの送信元の仮想マシンに関する情報が記憶されていないと判断した場合に，送信元の仮想マシンにその旨（以下，エラー通知とも呼ぶ）を通知する。
【００３９】
事前受信部２１８は，例えば，図６における仮想化ソフトウエア４Ｂとは異なる仮想化ソフトウエア（図６における仮想化ソフトウエア４Ａを含む）が送信した仮想マシン管理情報２３２を受信する。そして，事前受信部２１８は，受信した仮想マシン管理情報２３２が記憶されていない場合，受信した仮想マシン管理情報２３２を情報格納領域２３０に記憶する。
【００４０】
［第１の実施の形態］
次に，第１の実施の形態について説明する。図９は，第１の実施の形態における通知変換処理の概略を示すフローチャート図である。また，図１０は，第１の実施の形態における通知変換処理の概略を説明する図である。図１０を参照しながら図９の通知変換処理の概略について説明する。
【００４１】
初めに，図１０に示す仮想化ソフトウエア４Ｂ（以下，第２の管理ソフトウエアとも呼ぶ）は，仮想化ソフトウエア４Ｂが管理する仮想マシンのいずれかから，ハイパーコールを受信するまで待機する（Ｓ１）。そして，仮想化ソフトウエア４Ｂがハイパーコールを受信した場合（Ｓ１のＹＥＳ），仮想化ソフトウエア４Ｂは，記憶部２３０を参照して，受信したハイパーコールを実行可能な仮想化ソフトウエア（以下，第１の管理ソフトウエアとも呼ぶ）の種別を特定する（Ｓ２）。
【００４２】
すなわち，仮想マシンのマイグレーション等が実行されている場合，仮想化ソフトウエア４Ｂが管理する仮想マシンにインストールされているドライバは，移行前の仮想マシンを管理する仮想化ソフトウエアに対応するドライバである可能性がある。この場合，移行後の仮想マシンを管理する仮想化ソフトウエアである仮想化ソフトウエア４Ｂは，そのドライバから受信したハイパーコールをそのまま実行することができない場合がある。そこで，本実施の形態において，ハイパーコールを受信した仮想化ソフトウエア４Ｂは，ハイパーコールを受信した際に，そのハイパーコールを実行可能な仮想化ソフトウエアの種別を特定する。これにより，仮想化ソフトウエア４Ｂは，後述するように，受信したハイパーコールを仮想化ソフトウエア４Ｂが実行可能なハイパーコールに変換を行うことが可能になる。
【００４３】
そして，仮想化ソフトウエア４Ｂは，例えば，特定した仮想化ソフトウエアの種別に基づき，受信したハイパーコールを仮想化ソフトウエア４Ｂが実行可能な形式に変換する（Ｓ３）。さらに，仮想化ソフトウエア４Ｂは，変換したハイパーコールを実行する（Ｓ４）。具体的に，仮想化ソフトウエア４Ｂは，変換したハイパーコールの内容に基づいて処理の実行を行う。以下，通知変換処理の具体例について説明する。
【００４４】
図１０は，第１の実施の形態における通知変換処理の概略の具体例を説明する図である。図１０においては，図６と同様に，ドライバ３２Ｃは，仮想化ソフトウエア４Ａに対応するドライバであり，仮想化ソフトウエア４Ｂは，仮想マシン３Ｄがドライバ３２Ｃによって送信するハイパーコールを実行することができない場合について説明する。
【００４５】
図１０に示す例において，仮想化ソフトウエア４Ｂの通知変換部２１０は，例えば，仮想マシン３Ｄからハイパーコールを受信した際に（Ｓ１），受信したハイパーコールを実行可能な仮想化ソフトウエアの種別は，仮想化ソフトウエア４Ａを含む種別であると特定する（Ｓ２）。次に，通知変換部２１０は，受信したハイパーコールを，仮想化ソフトウエア４Ｂが実行可能なハイパーコールに変換する（Ｓ３）。そして，例えば，通知変換部２１０は，変換したハイパーコールの内容に基づく処理を行う（Ｓ４）。  
【００４６】
すなわち，仮想化ソフトウエア４Ｂは，管理する仮想マシンから受信したハイパーコールが，実行することができない種別のハイパーコールである場合であっても，ハイパーコールの変換を行うことによって，ハイパーコールに基づく処理を実行することができる。これは，仮想化ソフトウエア４Ｂが管理する仮想マシンは，自らが送信するハイパーコールと仮想化ソフトウエア４Ｂが実行可能なハイパーコールとの対応を考慮することなく，仮想化ソフトウエア４Ｂにハイパーコールを送信することができることを意味する。そのため，マイグレーションによって移行した仮想マシンは，再起動を行うことにより，移行後における仮想化ソフトウエアに対応するドライバ等をインストールする必要がない。したがって，本実施の形態の仮想化ソフトウエア４Ｂが管理する仮想マシンは，異なる仮想化ソフトウエアが管理する仮想マシンとの間においても，ライブマイグレーションを行うことが可能になる。
【００４７】
このように，第１の実施の形態によれば，仮想化ソフトウエア４Ｂは，仮想マシンが送信したハイパーコールの取得に応答して，ハイパーコールと，そのハイパーコールを実行可能な仮想化ソフトウエアの種別とを対応させた情報を記憶した記憶部２３０を参照し，取得したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定する。そして，仮想化ソフトウエア４Ｂは，特定した仮想化ソフトウエアの種別に基づき，取得したハイパーコールを，そのハイパーコールを取得した仮想化ソフトウエア４Ｂが実行可能な形式に変換し，変換したハイパーコールを実行する。これにより，仮想化ソフトウエア４Ｂにハイパーコールを送信する仮想マシンは，異なる仮想化ソフトウエアが動作する物理マシン間においても，ライブマイグレーションを行うことが可能になる。
【００４８】
[第１の実施の形態の詳細]
次に，第１の実施の形態の詳細について説明する。図１１は，第１の実施の形態における通知変換処理の詳細を説明するフローチャート図である。また，図１２から図１６は，第１の実施の形態における通知変換処理の詳細を説明する図である。図１２から図１６を参照しながら，図１１の通知変換処理の詳細を説明する。
【００４９】
初めに，図１１に示すように，仮想化ソフトウエア４Ｂの通知受信部２１１は，例えば，仮想化ソフトウエア４Ｂが管理する仮想マシン３のうち，いずれかの仮想マシンからのハイパーコールを受信するまで待機する（Ｓ１１）。そして，通知受信部２１１がハイパーコールを受信した場合（Ｓ１１のＹＥＳ），種別判定部２１２は，例えば，種別管理情報２３１を参照して，ハイパーコールに実行可能な仮想化ソフトウエアの種別を特定する（Ｓ１２）。
【００５０】
図１２は，第１の実施の形態における通知変換処理の詳細の具体例を示す図である。図１２に示す例は，図１０の場合と同様に，仮想マシン３Ｃが，仮想化ソフトウエア４Ｂに対応しないドライバ３２Ｃによって，ハードウエア２１Ｂにアクセスを行うためのハイパーコールを仮想化ソフトウエア４Ｂに送信する場合の例である。なお，図１２に示す例において，通知受信部２１１等の記載は省略している。
【００５１】
図１２に示すように，仮想マシン３Ｃは，ドライバ３２Ｃによってハイパーコールを仮想化ソフトウエア４Ｂに送信する。そして，通知受信部２１１が仮想マシン３Ｃによって送信されたハイパーコールを受信した後，種別判定部２１２は，受信したハイパーコールを実行可能な仮想化ソフトウエアの種別の特定を行う（Ｓ１１のＹＥＳ，Ｓ１２）。以下，種別判定部２１２における仮想化ソフトウエアの種別の判定について説明する。
【００５２】
図１３は，種別管理情報２３１の具体例を説明する図である。図１３における種別管理情報２３１は，「ハイパーコール」と，ハイパーコールを実行可能な仮想化ソフトを示す「種別」とを項目として有している。そして，図１３における種別管理情報２３１は，ＡＡＡ命令のハイパーコールと，種別がＨＶ−Ａである仮想化ソフトウエアとが対応して記憶されている。また，ＢＢＢ命令のハイパーコールと，種別がＨＶ−Ｂである仮想化ソフトウエアとが対応し，ＣＣＣ命令のハイパーコールと，種別がＨＶ−Ｃである仮想化ソフトウエアとが対応して記憶されている。
【００５３】
具体的に，例えば，通知受信部２１１がＢＢＢ命令の実行をトラップした場合，種別判定部２１２は，図１３に示す種別管理情報２３１を参照し，トラップしたＢＢＢ命令と対応して記憶されている仮想化ソフトウエアの種別であるＨＶ−Ｂを取得する。これにより，仮想化ソフトウエア４Ｂは，種別管理情報２３１を参照することにより，ＢＢＢ命令のハイパーコールを実行可能な仮想化ソフトウエアの種別としてＨＶ−Ｂの情報を取得することができる。
【００５４】
図１１に戻り，種別判定部２１２は，例えば，受信したハイパーコールが実行可能な仮想化ソフトウエアの種別を特定した後，特定した仮想化ソフトウエアの種別と，通知受信部２１１が受信したハイパーコールの内容とを，種別変換部２１３に送信する（Ｓ１３）。具体的に，図１３の例において，種別判定部２１２が特定した仮想化ソフトウエアの種別の情報がＨＶ−Ａである場合，種別判定部２１２は，ＨＶ−Ａの情報と，受信したハイパーコールの内容を種別変換部２１３に送信する。
【００５５】
次に，種別変換部２１３は，例えば，通知変換情報２３３を参照して，受信したハイパーコールを仮想化ソフトウエア４Ｂが実行可能なハイパーコールに変換する（Ｓ１４）。以下，種別変換部２１３におけるハイパーコールの変換について説明する。
【００５６】
図１４は，通知変換情報２３３の具体例を説明する図である。図１４における通知変換情報２３３は，仮想化ソフトウエアを示す「種別」と，ハイパーコールの内容を示す「ハイパーコール１」「ハイパーコール２」「ハイパーコール３」とを項目として有している。なお，図１４の例においては，ハイパーコールに関する項目は３つであるが，通知受信部２１１が受信する可能性があるハイパーコールの種類に応じて変更されるものであってもよい。図１４に示す通知変換情報２３３において，例えば，ＨＶ−Ａが実行可能なハイパーコールであるＡ１は，ＨＶ−Ｂが実行可能なハイパーコールであるＢ１と，ＨＶ−Ｃが実行可能なハイパーコールであるＣ１に対応している。具体的に，図１２の仮想化ソフトウエア４Ｂの種別がＨＶ−Ｃである場合であって，種別変換部２１３が仮想化ソフトウエアの種別であるＨＶ−Ｂの情報と，ハイパーコールの内容であるＢ３の情報とを受信した場合，種別変換部２１３は，受信したハイパーコールの内容をＣ３に変換する。
【００５７】
図１１に戻り，処理実行部２１４は，種別変換部２１３が変換したハイパーコールの内容に基づいて処理を行う（Ｓ１５）。図１２に示すように，処理実行部２１４は，例えば，複数の処理実行部から構成されるものであってよい。各処理実行部は，例えば，仮想マシンからの要求に応答してハードウエア２１Ｂのメモリ内に記憶された情報を取得する処理や，仮想マシンからの要求に応答してハードウエア２１Ｂの物理ＮＩＣから物理マシン２の外部にパケットを送信する処理等を行うものであってよい。なお，図１２の例においては，処理実行部２１４が受信するハイパーコールは，種別変換部２１３において仮想化ソフトウエア４Ｂが実行可能なハイパーコールの形式に変換されているものである。そのため，図１２の例における処理実行部２１４は，仮想化ソフトウエア４Ｂが実行可能な状態に変換されたハイパーコールの内容のみを認識することができるものであればよい。
【００５８】
［種別変換部が複数ある場合の処理］
次に，種別変換部２１３が複数ある場合の通知変換処理ついて説明する。図１５に示す仮想化ソフトウエア４Ｂは，複数の種別変換部（種別変換部２１３Ａ，２１３Ｂ，２１３Ｃ）を有している。この複数の種別変換部は，例えば，通知受信部２１１が受信する可能性があるハイパーコールの種別毎に設けられるものであってよい。そして，種別判定部２１２は，例えば，受信したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定した後，特定した仮想化ソフトウエアの種別に基づき，複数の種別変換部に仮想化ソフトウエアの種別に関する情報を振り分ける。これにより，種別判定部２１２は，特定した仮想化ソフトウエアの種別に関する情報を種別変換部２１３に送信する必要がなくなり，通知受信部２１１が受信したハイパーコールの内容をそのまま送信することが可能になる。
【００５９】
図１６は，種別変換部が複数ある場合における種別管理情報２３１の具体例である。図１６に示す種別管理情報２３１は，図１３に示す種別管理情報２３１とは異なり，「ハイパーコール」及び「種別」の項目と対応して，種別判定部２１２が特定した仮想化ソフトウエアの種別等を送信する「送信先」の項目を有している。例えば，ＡＡＡ命令であるハイパーコールには，仮想化ソフトウエアの種別であるＨＶ−Ａ，及び，種別判定部２１２が情報を送信すべき送信先である種別変換部２１３Ａが対応している。具体的に，例えば，種別判定部２１２が受信したハイパーコールを実行可能な仮想化ソフトウエアの種別としてＨＶ−Ｃを特定した場合，種別判定部２１２は，図１６に示す種別管理情報２３１を参照して，情報の送信先として種別変換部２１３Ｃの情報を取得する。そして，種別判定部２１２は，例えば，通知受信部２１１が受信したハイパーコールの内容を，そのまま種別変換部２１３Ｃに送信する。さらに，種別変換部２１３Ｃは，受信したハイパーコールを仮想化ソフトウエア４Ｂが実行可能な状態のハイパーコールに変換する。すなわち，各種別変換部は，図１６に示す種別管理情報２３１において対応付けられた仮想化ソフトウエアの種別に対応したハイパーコールのみを受信する。そして，各種別変換部は，種別管理情報２３１に対応付けられた種別のハイパーコールのみを，仮想化ソフトウエア４Ｂが実行可能なハイパーコールに変換する。なお，第２の実施の形態における種別変換部は，種別判定部２１２から送信されたハイパーコールを受信するために，トラップハンドラからなるものであってもよい。
【００６０】
［第２の実施の形態］
次に，第２の実施の形態について説明する。図１７は，第２の実施の形態における通知変換処理を示すスローチャートである。また，図１８及び図１９は，第２の実施の形態における通知変換処理を説明する図である。
【００６１】
第２の実施の形態における通知変換処理は，第１の実施の形態における通知変換処理とは異なり，種別判定部２１２による仮想化ソフトウエアの種別の判定を行う前に，処理切換部２１５が仮想マシン管理情報２３２を参照する。そして，処理切換部２１５は，受信したハイパーコールの送信元の仮想マシンに関する情報が仮想マシン管理情報２３２に記憶されている場合，種別判定部２１２を呼び出さずに，仮想マシン管理情報２３２の内容に基づく処理を行う。以下，第２の実施の形態における通知変換処理の詳細について説明する。  
【００６２】
初めに，図１７に示すように，通知受信部２１１は，第１の実施の形態と同様に，例えば，ハイパーコールを受信するまで待機する（Ｓ２１）。そして，通知受信部２１１がハイパーコールを受信した場合（Ｓ２１のＹＥＳ），仮想化ソフトウエア４Ｂの処理切換部２１５は，例えば，通知受信部２１１が受信したハイパーコールの送信元の仮想マシンを特定する（Ｓ２２）。処理切換部２１５は，例えば，通知受信部２１１が受信したハイパーコールに含まれる情報を取得することにより，ハイパーコールの送信元の仮想マシンを特定するものであってよい。
【００６３】
次に，処理切換部２１５は，仮想マシン管理情報２３２を参照し，処理切換部２１５が特定したハイパーコールの送信元の仮想マシンに関する情報が登録されているか否かを確認する（Ｓ２３）。そして，特定した送信元の仮想マシンに関する情報が登録されている場合（Ｓ２３のＹＥＳ），処理切換部２１５は，仮想マシン管理情報２３２を参照し，受信したハイパーコールを実行可能な仮想化ソフトウエア種別を特定する（Ｓ２６）。すなわち，仮想化ソフトウエア４Ｂは，ハイパーコールを受信した場合に，そのハイパーコールの送信元の仮想マシンに関する情報が仮想マシン管理情報２３２に登録されているか否かの確認を行う。そして，受信したハイパーコールの送信元の仮想マシンに関する情報が登録されている場合，処理切換部２１５は，種別判定部２１２を呼び出すことなく，仮想マシン管理情報２３２の内容に基づいて，受信したハイパーコールを実行可能な仮想化ソフトウエア種別を特定する。これにより，受信したハイパーコールの送信元の仮想マシンに関する情報が登録されている場合，毎回ハイパーコールの解析等を行う種別判定部２１２を実行する必要がなくなる。そのため，仮想化ソフトウエア４Ｂの処理負担を軽減させることができる。
【００６４】
一方，処理切換部２１５が特定したハイパーコールの送信元の仮想マシンに関する情報が仮想マシン管理情報２３２に登録されていない場合（Ｓ２３のＮＯ），処理切換部２１５は，種別判定部２１２に処理を引き継ぐ。具体的に，種別判定部２１２は，例えば，第１の実施の形態におけるＳ１２と同様に，種別管理情報２３１を参照して，通知受信部２１１が受信したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定する（Ｓ２４）。そして，この場合，仮想化ソフトウエア４Ｂの管理情報記憶部２１６は，例えば，処理切換部２１５が特定した送信元の仮想マシンと，種別判定部２１２が特定した仮想化ソフトウエアの種別とを対応付けて仮想マシン管理情報２３２に記憶する（Ｓ２５）。すなわち，再度同じ仮想マシンからハイパーコールが送信された場合に，種別判定部を呼び出すことなく処理を行うことを可能にするため，管理情報記憶部２１６は，受信したハイパーコールの送信元の仮想マシンに関する情報を記憶する。
【００６５】
なお，処理切換部２１５が特定したハイパーコールの送信元の仮想マシンに関する情報が仮想マシン管理情報２３２に登録されていない場合（Ｓ２３のＮＯ），通知送信部２１７は，ハイパーコールの送信元の仮想マシンにエラー通知を行うものであってもよい。
【００６６】
図１７に戻り，種別判定部２１２または処理切換部２１５は，受信したハイパーコールを実行可能な仮想化ソフトウエア種別を種別変換部に送信する（Ｓ２７）。そして，種別変換部２１３は，第１の実施の形態の場合と同様に，例えば，通知変換情報２３３を参照して，受信したハイパーコールを仮想化ソフトウエア４Ｂが実行可能なハイパーコールの形式に変換する（Ｓ２８）。さらに，処理実行部２１４は，第１の実施の形態と同様に，種別変換部２１３が変換したハイパーコールの内容に基づいて処理を行う（Ｓ２９）。
【００６７】
図１８は，第２の実施の形態における通知変換処理の具体例を示す図である。図１８に示すように，例えば，仮想マシン３Ｃが送信したハイパーコールを通知受信部２１１が受信した場合（Ｓ２１），初めに処理切換部２１５が処理を行う。具体例に，処理切換部２１５は，上記のように仮想マシン管理情報２３２を参照し，ハイパーコールの送信元の仮想マシンである仮想マシン３Ｃに関する情報が記憶されているか否かの判断を行う（Ｓ２２，Ｓ２３）。そして，仮想マシン３Ｃに関する情報が仮想マシン管理情報２３２に登録されている場合（Ｓ２３のＹＥＳ），処理切換部２１５は，種別判定部２１２を呼び出すことなく，仮想マシン管理情報２３２を参照して受信したハイパーコールを実行可能な仮想化ソフトウエアの種別を種別変換部２１３に送信する。一方，仮想マシン３Ｃに関する情報が仮想マシン管理情報２３２に登録されていない場合（Ｓ２３のＮＯ），処理切換部２１５は，第１の実施の形態と同様に，種別判定部２１２に仮想化ソフトウエアの種別を特定するための処理を実行させる（Ｓ２４）。以下，仮想マシン管理情報２３２の具体例について説明する。
【００６８】
図１９は，仮想マシン管理情報２３２の具体例である。図１９に示す仮想マシン管理情報２３２は，ハイパーコールを送信した送信元の仮想マシンを示す「ＩＤ」と，各仮想マシンに割り当てられた仮想的なＣＰＵの数を示す「ＣＰＵ数」と，各仮想マシンに割り当てられたメモリ容量を示す「メモリ容量（ＧＢ）」とを項目として有している。さらに，図１９に示す仮想マシン管理情報２３２は，各仮想マシンに割り当てられたディスク容量を示す「ディスク容量（ＧＢ）」と，各仮想マシンが送信するハイパーコールを実行可能な仮想化ソフトウエアの種別を示す「種別」とを項目として有している。図１９の例においては，「ＩＤ」が１である仮想マシンに対応する「種別」は，ＨＶ−Ｂであり，「ＩＤ」が３である仮想マシンに対応する「種別」は，ＨＶ−Ａである。一方，図１９の例において，「ＩＤ」が２である仮想マシンに対応する「種別」が，現在未登録の状態である。
【００６９】
具体的に，例えば，仮想化ソフトウエア４Ｂが受信したハイパーコールの送信元端末が「ＩＤ」が３の仮想マシンである場合，処理切換部２１５は，仮想マシン管理情報２３２の情報に基づいて，受信したハイパーコールを実行可能な仮想化ソフトウエアの種別であるＨＶ−Ａの情報を取得する。すなわち，この場合，処理切換部２１５は，種別判定部２１２を呼び出すことなく受信したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定することが可能である。一方，例えば，仮想化ソフトウエア４Ｂが受信したハイパーコールの送信元端末が「ＩＤ」が２の仮想マシンである場合，「種別」に登録がないため，処理切換部２１５は，種別判定部２１２を呼び出し，種別判定部２１２が受信したハイパーコールを実行可能な仮想化ソフトウエアの種別を特定する。そして，この場合，管理情報記憶部２１６は，ハイパーコールの送信元端末のＩＤである２と，その送信元端末が送信するハイパーコールを実行可能な仮想化ソフトウエアの種別（例えば，ＨＶ−Ｂ）とを対応させ，新たな仮想マシン管理情報２３２として記憶する。
【００７０】
なお，図１９の例における仮想マシン管理情報２３２は，「ＣＰＵ数」，「メモリ容量」，「ディスク容量」の項目（仮想マシンのスペックに関する情報）を有しているが，仮想マシン管理情報２３２がこれらの情報を有しないものであってもよい。また，図１９の例における仮想マシン管理情報２３２は，「種別」が未登録の場合であっても，その仮想マシンに関する情報が存在しているが，「種別」が登録される際に，初めてその仮想マシンに関する情報が記憶されるものであってもよい。
【００７１】
このように，第２の実施の形態によれば，仮想化ソフトウエア４Ｂは，第１の実施の形態の場合と異なり，処理切換部２１５を有している。そのため，受信したハイパーコールの送信元の仮想マシンの情報が仮想マシン管理情報２３２に記憶されていない場合には，種別判定部２１２を呼び出すことなく処理を行うことができる。これにより，種別判定部２１２を呼び出すことによる仮想化ソフトウエア４Ｂの処理負担を軽減させることが可能になる。
【００７２】
［第３の実施の形態］
次に第３の実施の形態について説明する。第３の実施の形態における通知変換処理を示すフローチャート図である。また，図２１は，第３の実施の形態における通知変換処理を説明する図である。
【００７３】
第３の実施の形態において，仮想化ソフトウエア４Ｂは，例えば，仮想マシンのマイグレーションを行う前に，移行元の仮想マシンを管理する仮想化ソフトウエア等から，マイグレーションが実行される仮想マシンに関する仮想マシン管理情報２３２を受信する。すなわち，第３の実施の形態における仮想化ソフトウエア４Ｂは，第２の実施の形態と異なり，通知受信部２１１がハイパーコールを受信した場合のみでなく，事前受信部２１８が他の仮想化ソフトウエア等から情報を受信した場合に，仮想マシン管理情報２３２を記憶する。これにより，第３の実施の形態における仮想化ソフトウエア４Ｂは，仮想化ソフトウエアの種別に関する情報が受信済であるハイパーコールを受信した場合においても，種別判定部２１２を呼び出すことなく処理を行うことができる。なお，以下，通知変換処理において仮想化ソフトウエアの種別に関する情報を受信する処理を事前受信処理とも呼ぶ。
【００７４】
図２０は，第３の実施の形態における事前受信処理を説明するフローチャートである。図２０に示すように，仮想化ソフトウエア４Ｂの事前受信部２１８は，例えば，仮想マシン管理情報２３２を受信するまで待機する（Ｓ３１）。そして，仮想化ソフトウエア４Ｂとは異なる仮想化ソフトウエアから仮想マシン管理情報２３２を受信した場合（Ｓ３１のＹＥＳ），事前受信部２１８は，例えば，受信した仮想マシン管理情報２３２が情報格納領域２３０に記憶されているか否かの確認を行う（Ｓ３２）。さらに，受信した仮想マシン管理情報２３２が記憶されていない場合（Ｓ３２のＮＯ），管理情報記憶部２１６は，例えば，事前受信部２１８からの指示に基づき，仮想マシン管理情報２３２に記憶する（Ｓ３３）。その後，仮想化ソフトウエア４Ｂは，通知受信部２１１がハイパーコールを受信するまで待機し（図１７のＳ２１），図１７で説明した第２の実施の形態における通知変換処理を行う。すなわち，管理情報記憶部２１６は，事前受信部２１８が仮想マシン管理情報２３２を受信した場合，受信した仮想マシン管理情報２３２に記憶する。これにより，例えば，仮想化ソフトウエア４Ｂは，仮想マシン管理情報２３２が記憶済である仮想マシンからハイパーコールを受信した場合に，種別判定部２１２を呼び出すことなく処理を行うことが可能になる。
【００７５】
図２１は，第３の実施の形態における通知変換処理を説明する図である。図２１における仮想化ソフトウエア４Ｂは，図１２に示す仮想化ソフトウエア４Ｂと異なり，事前受信部２１８を有している。
【００７６】
図２１に示す例において，事前受信部２１８は，例えば，仮想マシンのマイグレーションが実行される前に，仮想マシン管理情報２３２を受信する（Ｓ３１）。この仮想マシン管理情報２３２は，例えば，マイグレーションが予定されている仮想マシンに関する情報であり，その仮想マシンを管理する仮想化ソフトウエアによって送信されるものであってよい。さらに，図２０において説明したように，管理情報記憶部２１６は，受信した仮想マシン管理情報２３２が記憶されていない場合，情報格納領域２３０に仮想マシン管理情報２３２を記憶する（Ｓ３２，Ｓ３３）。そして，マイグレーションが実行され，通知受信部２１１がハイパーコールを受信した場合，仮想化ソフトウエア４Ｂは，第２の実施の形態において説明した通知変換処理を行う。すなわち，処理切換部２１５は，仮想マシン管理情報２３２を参照して処理を行うため，事前受信部２１８が受信した仮想マシン管理情報２３２に関する仮想マシンから受信したハイパーコールについても，種別判定部２１２を呼び出すことなく処理を行うことができる。
【００７７】
このように，第３の実施の形態によれば，仮想化ソフトウエア４Ｂは，第２の実施の形態の場合と異なり，事前受信部２１８を有している。そのため，仮想化ソフトウエア４Ｂは，例えば，マイグレーションが予定されている仮想マシンに関する仮想マシン管理情報２３２を，マイグレーションが実行される前に（その仮想マシンからハイパーコールが送信される前に）受信して記憶することができる。これにより，仮想化ソフトウエア４Ｂは，ハイパーコールを受信した場合のみでなく，事前受信部２１８が情報を受信した場合においても仮想マシン管理情報２３２を記憶することが可能になる。そのため，仮想化ソフトウエア４Ｂは，種別判定部２１２を呼び出すことによる仮想化ソフトウエア４Ｂの処理負担をさらに軽減させることが可能になる。
【００７８】
以上の実施の形態をまとめると，以下の付記のとおりである。
【００７９】
（付記１）
仮想マシンが送信した第１の通知の取得に応答して，前記第１の通知と，該第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，前記取得した第１の通知を実行可能な第１の管理ソフトウエアの種別を特定し，
前記特定した第１の管理ソフトウエアの種別に基づき，前記取得した第１の通知を，該第１の通知を取得した第２の管理ソフトウエアが実行可能な第２の通知に変換し，
前記変換した第２の通知を実行する
処理をコンピュータに実行させる通知変換プログラム。
【００８０】
（付記２）
付記１において，
前記第１の管理ソフトウエアの種別を特定する処理は，前記第１の通知の送信元の仮想マシンを識別する情報と，前記第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第２の情報を記憶した前記記憶部を参照し，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されていない場合，前記第１の情報を参照して前記管理ソフトウエアの種別を特定し，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されている場合，前記第２の情報を参照して前記管理ソフトウエアの種別を特定する通知変換プログラム。
【００８１】
（付記３）
付記２において，
前記第１の管理ソフトウエアの種別を特定する処理は，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されていない場合，該第２の情報を前記記憶部に記憶する通知変換プログラム。
【００８２】
（付記４）
付記２において，
前記第１の管理ソフトウエアの種別を特定する処理は，前記取得した第１の通知の送信元の仮想マシンに関する第２の情報が前記記憶部に記憶されていない場合，前記取得した第１の通知の送信元の仮想マシンにエラー通知を行い，処理を終了する通知変換プログラム。
【００８３】
（付記５）
付記２において，さらに，
前記第２の管理ソフトウエアと異なる管理ソフトウエアが送信した前記第２の情報を受信した場合であって，前記受信した第２の情報が前記記憶部に記憶されていない場合，前記受信した第２の情報を前記記憶部に記憶する通知変換プログラム。
【００８４】
（付記６）
付記１において，
前記第１の通知を変換する処理は，前記第１の通知と前記第２の通知との対応させた第３の情報を記憶した記憶部を参照して，前記変換を行う通知変換プログラム。
【００８５】
（付記７）
付記１において，
前記第１の通知を変換する処理は，前記第１の管理ソフトウエアが前記第１の通知を認識できない場合に，前記変換を行う通知変換プログラム。
【００８６】
（付記８）
付記１において，
前記第１及び第２の管理ソフトウエアは，仮想マシンの管理を行うハイパーバイザであり，
前記第１及び第２の通知は，仮想マシンが前記ハイパーバイザの機能を呼び出すハイパーバイザコールである通知変換プログラム。
【００８７】
（付記９）
仮想マシンが送信した第１の通知の取得に応答して，前記第１の通知と，該第１の通知を実行可能な管理ソフトウエアの種別とを対応させた第１の情報を記憶した記憶部を参照し，前記取得した第１の通知を実行可能な第１の管理ソフトウエアの種別を特定し，
前記特定した第１の管理ソフトウエアの種別に基づき，前記取得した第１の通知を，該第１の通知を取得した第２の管理ソフトウエアが実行可能な第２の通知に変換し，
前記変換した第２の通知を実行する
通知変換方法。
【符号の説明】
【００８８】
１：管理サーバ              ２：物理マシン
３：仮想マシン              ４：仮想化ソフトウエア
８：利用者端末
【図１】
2016018298.tif 000003
【図２】
2016018298.tif 000004
【図３】
2016018298.tif 000005
【図４】
2016018298.tif 000006
【図５】
2016018298.tif 000007
【図６】
2016018298.tif 000008
【図７】
2016018298.tif 000009
【図８】
2016018298.tif 000010
【図９】
2016018298.tif 000011
【図１０】
2016018298.tif 000012
【図１１】
2016018298.tif 000013
【図１２】
2016018298.tif 000014
【図１３】
2016018298.tif 000015
【図１４】
2016018298.tif 000016
【図１５】
2016018298.tif 000017
【図１６】
2016018298.tif 000018
【図１７】
2016018298.tif 000019
【図１８】
2016018298.tif 000020
【図１９】
2016018298.tif 000021
【図２０】
2016018298.tif 000022
【図２１】
2016018298.tif 000023