(57)【要約】【課題】移動した仮想マシンが実行するパケット処理の遅延を抑制することを課題とする。【解決手段】第１の情報処理装置は、仮想マシンが第２の情報処理装置に移動する場合、メモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、仮想マシンによるパケット送信を停止させるとともに、停止予告通知を第２の情報処理装置に送信する。第１の情報処理装置は、仮想マシンのアドレス情報を含む制御プロトコルを受信し、メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、仮想マシンを停止する。第２の情報処理装置は、停止予告通知を受信した場合、制御プロトコルを送信するとともに、生成した仮想ネットワークインタフェースで仮想マシン宛のパケットを受信する。第２の情報処理装置は、メモリ転送が完了した後、仮想マシンを起動してパケット送信を開始し、仮想ネットワークインタフェースが保持するパケットを仮想マシンに出力する。【選択図】図３
2015153409.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置と、スイッチ装置を介して前記第１の情報処理装置に接続される第２の情報処理装置とを有する情報処理システムにおいて、
前記第１の情報処理装置は、
前記第１の情報処理装置で稼動する仮想マシンが前記第２の情報処理装置に移動する場合、前記第１の情報処理装置からの前記第２の情報処理装置へのメモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、前記仮想マシンによるパケット送信を停止させるとともに、前記仮想マシンの停止を予告する停止予告通知を前記第２の情報処理装置に送信する予告送信部と、
前記仮想マシンのアドレス情報を含む制御プロトコルを受信し、前記メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、前記仮想マシンを停止する停止部と、を有し、
前記第２の情報処理装置は、
前記停止予告通知を受信した場合、前記制御プロトコルを前記スイッチ装置および前記第１の情報処理装置に送信するとともに、生成した仮想ネットワークインタフェースで前記仮想マシン宛のパケットを受信する受信部と、
前記メモリ転送が完了した後、前記仮想マシンを起動して前記パケット送信を開始するとともに、前記仮想ネットワークインタフェースが保持するパケットを前記仮想マシンに出力する起動制御部と
を有することを特徴とする情報処理システム。
【請求項２】
前記第１の情報処理装置は、
前記メモリ転送のデータ量が前記第１のメモリ転送量閾値を超える前、または、前記メモリ転送のデータ量が前記第１のメモリ転送量閾値を超え且つ前記停止予告通知の送信前に、前記メモリ転送でエラーが発生した場合、前記仮想マシンの移動を中止し、前記仮想マシンに前記パケット送信を開始させる中止制御部をさらに有することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１の情報処理装置は、
前記停止予告通知の送信後に前記メモリ転送でエラーが発生した場合、前記仮想マシンのアドレスを含む制御プロトコルを前記スイッチ装置に送信するとともに、前記第２の情報処理装置に対して、前記仮想ネットワークインタフェースが保持するパケットの転送要求を送信する中止制御部をさらに有することを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記第２の情報処理装置は、
前記仮想マシンの移動においてエラーを検出した場合、前記第１の情報処理装置に前記エラーを通知し、前記第１の情報処理装置から、前記仮想ネットワークインタフェースが保持するパケットの転送要求および前記仮想マシンのアドレス情報を含む制御プロトコルを受信すると、前記仮想ネットワークインタフェースが保持するパケットを前記第１の情報処理装置に送信する中止制御部をさらに有することを特徴とする請求項１に記載の情報処理システム。
【請求項５】
第１の情報処理装置と、スイッチ装置を介して前記第１の情報処理装置に接続される第２の情報処理装置とを有する情報処理システムに適した移動制御方法おいて、
前記第１の情報処理装置が、
前記第１の情報処理装置で稼動する仮想マシンが前記第２の情報処理装置に移動する場合、前記第１の情報処理装置からの前記第２の情報処理装置へのメモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、前記仮想マシンによるパケット送信を停止させるとともに、前記仮想マシンの停止を予告する停止予告通知を前記第２の情報処理装置に送信し、
前記仮想マシンのアドレス情報を含む制御プロトコルを受信し、前記メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、前記仮想マシンを停止し、
前記第２の情報処理装置が、
前記停止予告通知を受信した場合、前記制御プロトコルを前記スイッチ装置および前記第１の情報処理装置に送信するとともに、生成した仮想ネットワークインタフェースで前記仮想マシン宛のパケットを受信し、
前記メモリ転送が完了した後、前記仮想マシンを起動して前記パケット送信を開始するとともに、前記仮想ネットワークインタフェースが保持するパケットを前記仮想マシンに出力する
処理を含んだことを特徴とする移動制御方法。
【請求項６】
スイッチ装置を介して他の情報処理装置と接続される情報処理装置に、
前記情報処理装置で稼動する仮想マシンが前記他の情報処理装置に移動する場合、前記情報処理装置からの前記他の情報処理装置へのメモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、前記仮想マシンによるパケット送信を停止させるとともに、前記仮想マシンの停止を予告する停止予告通知を前記他の情報処理装置に送信し、
前記仮想マシンのアドレス情報を含む制御プロトコルを受信し、前記メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、前記仮想マシンを停止する
処理を実行させることを特徴とする移動制御プログラム。
【請求項７】
スイッチを介して他の情報処理装置と接続される情報処理装置に、
前記他の情報処理装置で稼動する仮想マシンが前記情報処理装置に移動する場合、前記仮想マシンの停止を予告する停止予告通知を受信した場合、制御プロトコルをスイッチ装置および前記他の情報処理装置に送信するとともに、生成した仮想ネットワークインタフェースで前記仮想マシン宛のパケットを受信し、
前記メモリ転送が完了した後、前記仮想マシンを起動して前記パケット送信を開始するとともに、前記仮想ネットワークインタフェースが保持するパケットを前記仮想マシンに出力する
処理を含んだことを特徴とする移動制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、移動制御方法および移動制御プログラムに関する。
【背景技術】
【０００２】
従来から、あるサーバ上で動作する仮想マシンを別のサーバに移動させるＶＭマイグレーション（Virual  Machine  migration）が知られている。具体的には、移動元サーバは、移動対象の仮想マシンが使用するメモリのデータを、移動先サーバに転送する。移動先サーバは、移動元サーバからのメモリ転送が完了すると、仮想マシンを起動させる。
【０００３】
また、データセンタは、大量のサーバを稼働させているので、膨大な電力を消費する。このため、データセンタでは、省電力化のために、運用中の仮想マシンを移動させて、仮想マシンが稼働していないサーバを作り、そのサーバを停止させることにより、データセンタの省電力化が行われる。
【０００４】
ＶＭマイグレーションにおいて、移動対象の仮想マシンは、数秒から数十秒間停止した後、別サーバで再稼働される。ところが、移動対象の仮想マシンが停止している数秒間に受信する予定のパケットは廃棄される。このため、パケット廃棄を許容しないサービスを実施している仮想マシンは、自由に移動することができない。したがって、このような仮想マシンを稼動させるサーバは、省電力化やメンテナンスが難しい。
【０００５】
近年では、パケット廃棄を抑制する技術として、移動用バッファを用いたＶＭマイグレーションが知られている。具体的には、移動元サーバは、ＶＭマイグレーション実行時に移動用バッファを使用し、移動対象の仮想マシンを宛先とするパケットを移動用バッファで受信する。そして、移動元サーバは、仮想マシンのメモリ転送が終了し、移動先サーバで仮想マシンが起動されると、移動用バッファに記憶されるパケットを移動先サーバに転送する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１０／１２３１４０号
【特許文献２】特開２０１２−８８８６３号公報
【特許文献３】特開２０１１−２１００３２号公報
【特許文献４】特開２０１０−２５７２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記技術では、移動用バッファに記憶されたパケットの量が多い場合やサーバ間の通信速度が遅い場合、パケットの転送時間が長くなる。このため、移動した仮想マシンは、パケットの転送が終了するまでパケットに関する処理の実行を開始できない。つまり、移動した仮想マシンのパケット処理が遅延する。
【０００８】
１つの側面では、移動した仮想マシンが実行するパケット処理の遅延を抑制できる情報処理システム、移動制御方法および移動制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、情報処理システムは、第１の情報処理装置と、スイッチ装置を介して前記第１の情報処理装置に接続される第２の情報処理装置とを有する。前記第１の情報処理装置は、前記第１の情報処理装置で稼動する仮想マシンが前記第２の情報処理装置に移動する場合、前記第１の情報処理装置からの前記第２の情報処理装置へのメモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、前記仮想マシンによるパケット送信を停止させるとともに、前記仮想マシンの停止を予告する停止予告通知を前記第２の情報処理装置に送信する予告送信部を有する。前記第１の情報処理装置は、前記仮想マシンのアドレス情報を含む制御プロトコルを受信し、前記メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、前記仮想マシンを停止する停止部を有する。前記第２の情報処理装置は、前記停止予告通知を受信した場合、前記制御プロトコルを前記スイッチ装置および前記第１の情報処理装置に送信するとともに、生成した仮想ネットワークインタフェースで前記仮想マシン宛のパケットを受信する受信部を有する。前記第２の情報処理装置は、前記メモリ転送が完了した後、前記仮想マシンを起動して前記パケット送信を開始するとともに、前記仮想ネットワークインタフェースが保持するパケットを前記仮想マシンに出力する起動制御部を有する。
【発明の効果】
【００１０】
１実施形態によれば、移動した仮想マシンが実行するパケット処理の遅延を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る情報処理システムの全体構成例を示す図である。
【図２】図２は、実施例１に係るサーバの階層構造例を示す図である。
【図３】図３は、実施例１に係る情報処理システムの機能構成例を示す機能ブロック図である。
【図４】図４は、ＶＭ管理テーブルに記憶される情報の例を示す図である。
【図５】図５は、ＦＤＢに記憶される情報の例を示す図である。
【図６】図６は、ＶＭの移動開始からＧＡＲＰ送信までの流れを説明する図である。
【図７】図７は、ＧＡＲＰ送信後からＶＭの移動完了までの流れを説明する図である。
【図８】図８は、移動元サーバが実行する処理の流れを示すフローチャートである。
【図９】図９は、移動先サーバが実行する処理の流れを示すフローチャートである。
【図１０】図１０は、移動前後のパケットの流れを説明する図である。
【図１１】図１１は、移動元サーバでＶＭ移動失敗を検出した場合の処理の流れを示すフローチャートである。
【図１２】図１２は、移動先サーバでＶＭ移動失敗を検出した場合の処理の流れを示すフローチャートである。
【図１３】図１３は、移動元サーバで複数のＶＭが通信している状況でＶＭを移動する場合の処理を説明する図である。
【図１４】図１４は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する情報処理システム、移動制御方法および移動制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１３】
［全体構成図］
図１は、実施例１に係る情報処理システムの全体構成例を示す図である。図１に示すように、この情報処理システムは、移動元サーバ１０、移動先サーバ３０、スイッチ５０を有する。また、移動元サーバ１０と移動先サーバ３０とは、スイッチ５０を介して接続される。本実施例では、移動元サーバ１０から移動先サーバ３０へ、仮想マシン（ＶＭ：Virtual  Machine）１を移動させる例を説明する。
【００１４】
移動元サーバ１０は、ＶＭ１を稼動する物理サーバである。なお、ＶＭ１は、物理サーバのリソースを用いて実行される仮想マシンである。移動先サーバ３０は、ＶＭ１の移動先となる物理サーバである。
【００１５】
スイッチ５０は、各サーバ間の通信、各サーバと外部との通信を中継する中継装置であり、例えばスイッチングハブなどである。例えば、スイッチ５０は、ＶＭ１から送信されたパケットを移動先サーバ３０に中継し、移動先サーバ３０から送信されたパケットをＶＭ１に中継する。また、スイッチ５０は、外部のサーバやＶＭから送信されたＶＭ１を宛先とするパケットをＶＭ１に中継する。
【００１６】
［階層構造］
図２は、実施例１に係るサーバの階層構造例を示す図である。図１に示した移動元サーバ１０と移動先サーバ３０とは同様の構造を有するので、ここでは、移動元サーバ１０を例にして説明する。
【００１７】
図２に示すように、移動元サーバ１０は、ハードウェア１０ａ、ハイパーバイザ１０ｂ、仮想スイッチ１０ｃ、コントロールドメイン１０ｄ、仮想マシン１０ｅ、仮想マシン１０ｆ、仮想マシン１０ｇで構成される。
【００１８】
仮想スイッチ１０ｃ、コントロールドメイン１０ｄ、仮想マシン１０ｅ、仮想マシン１０ｆ、仮想マシン１０ｇは、ハイパーバイザ１０ｂによって実行されるソフトウェアである。
【００１９】
ハードウェア１０ａは、ＣＰＵ（Central  Processing  Unit）、メモリ、ディスク、ネットワークインタフェースカードなどである。ハイパーバイザ１０ｂは、各ＶＭに仮想メモリや仮想プロセッサを割り与えて、ＶＭを制御するソフトウェアある。例えば、ハイパーバイザ１０ｂは、ＶＭの起動や停止、ＶＭの移動などを実行する。
【００２０】
仮想スイッチ１０ｃは、ハイパーバイザ１０ｂによって実行される仮想的なスイッチングハブなどであり、同一サーバ内のＶＭ間通信や異なるサーバのＶＭ間通信を制御する。コントロールドメイン１０ｄは、ＶＭからネットワークやディスクへのアクセスを制御する仮想マシンである。各ＶＭは、ハイパーバイザ１０ｂによって提供される仮想マシンである。
【００２１】
例えば、各ＶＭが送信したパケットは、仮想スイッチ１０ｃを経由してコントロールドメイン１０ｄに受信され、コントロールドメイン１０ｄが、仮想スイッチ１０ｃやネットワークインタフェースを介して宛先に送信する。また、各ＶＭを宛先とするパケットについても、ネットワークインタフェース等を介してコントロールドメイン１０ｄに受信され、コントロールドメイン１０ｄが仮想スイッチ１０ｃを介して宛先に送信する。
【００２２】
同様に、各ＶＭからのディスクアクセスは、仮想スイッチ１０ｃを経由してコントロールドメイン１０ｄに受信され、コントロールドメイン１０ｄが実行する。また、ディスクアクセスの応答は、コントロールドメイン１０ｄに受信され、コントロールドメイン１０ｄが仮想スイッチ１０ｃを介してアクセス元のＶＭに送信する。
【００２３】
なお、図２に示した仮想マシンの実行環境はあくまで一例であり、図示したものに限定されない。例えば、ハイパーバイザ以外のソフトウェアを用いてもよい。また、ＶＭの制御方式についても、ハイパーバイザ型やホスト型など様々な方式を用いることができる。
【００２４】
［機能構成］
図３は、実施例１に係る情報処理システムの機能構成例を示す機能ブロック図である。ここでは、移動元サーバ１０、移動先サーバ３０、スイッチ５０の各機能構成について説明する。なお、ここでは、説明上、移動元サーバ１０の機能構成と移動先サーバ３０の機能構成とを分けて説明するが、各サーバは両方の機能部を有している。
【００２５】
（移動元サーバの機能構成）
図３に示すように、移動元サーバ１０は、ネットワークＩＦ（インタフェース）１１、仮想ＳＷ（スイッチ）１２、ＶＭ管理テーブル１３、メモリ転送部１４、予告送信部１５、移動管理部１６、ＶＭ停止部１７を有する。移動元サーバ１０は、これらによってＶＭ１を稼動する。なお、メモリ転送部１４、予告送信部１５、移動管理部１６、ＶＭ停止部１７は、ハイパーバイザ１０ｂが実行する処理部である。
【００２６】
ネットワークＩＦ１１は、物理インタフェースであり、例えばＮＩＣ（ネットワークインタフェースカード）などである。このネットワークＩＦ１１には、ＩＰ（Internet  Protocol）アドレスが設定されており、このＩＰアドレスを用いて通信を実行する。
【００２７】
例えば、ネットワークＩＦ１１は、ＶＭ１宛のパケットを受信して仮想ＳＷ１２に出力する。このパケットは、仮想ＳＷ１２を介して、ＶＭ１に受信される。また、ネットワークＩＦ１１は、仮想ＳＷ１２を介して各処理部が送信したメモリ転送などのパケットを受信し、宛先に出力する。
【００２８】
仮想ＳＷ１２は、ハイパーバイザ１０ｂが実行する仮想スイッチである。仮想ＳＷ１２は、図２に示した仮想スイッチ１０ｃに対応する。この仮想ＳＷ１２は、ＶＭ間でやり取りされるパケットを中継する。
【００２９】
例えば、仮想ＳＷ１２は、各処理部やＶＭ１が送信したパケットをネットワークＩＦ１１に出力し、各処理部やＶＭ１を宛先とするパケットをネットワークＩＦ１１から受信して宛先に出力する。
【００３０】
ＶＭ管理テーブル１３は、ＶＭに関する情報を記憶するテーブルである。このＶＭ管理テーブル１３は、図２に示したハードウェア１０ａが有するメモリやディスクに記憶される。図４は、ＶＭ管理テーブルに記憶される情報の例を示す図である。
【００３１】
図４に示すように、ＶＭ管理テーブル１３は、「ＶＭ名、ＭＡＣアドレス、ＩＰアドレス、状態、第１のメモリ転送閾値フラグ、第２のメモリ転送閾値フラグ」を対応付けて記憶する。
【００３２】
ここで記憶される「ＶＭ名」は、ＶＭを識別する識別子であり、例えばゲスト名などが設定される。「ＭＡＣアドレス」は、ＶＭのＭＡＣ（Media  Access  Control）アドレスである。「ＩＰアドレス」は、ＶＭのＩＰアドレスである。「状態」は、ＶＭの状態を示す情報であり、ＶＭが起動している場合は「起動中」、ＶＭが停止している場合は「停止中」、ＶＭがマイグレーション中である場合は「移動中」が設定される。
【００３３】
「第１のメモリ転送閾値フラグ」は、移動中のＶＭのメモリ転送量が第１のメモリ転送閾値を超えたか否かを示す情報であり、閾値を超えた場合は「１」が設定され、閾値を超えていない場合は「０」が設定される。「第２のメモリ転送閾値フラグ」は、移動中のＶＭのメモリ転送量が第２のメモリ転送閾値を超えたか否かを示す情報であり、閾値を超えた場合は「１」が設定され、閾値を超えていない場合は「０」が設定される。なお、第１のメモリ転送閾値と第２のメモリ転送閾値については後述する。
【００３４】
図４の場合、ＶＭ１には、ＭＡＣアドレス「00：11：22：33：44：55」が設定されており、ＩＰアドレス「192.168.10.10」が設定されていることを示す。また、ＶＭ１は、移動中であり、メモリ転送量が第１のメモリ転送閾値を超えたが、第２のメモリ転送閾値は超えていない状態であることを示す。
【００３５】
メモリ転送部１４は、ＶＭの移動に伴ってメモリ転送を実行する処理部である。具体的には、メモリ転送部１４は、管理者等の指示や予め指定されたスケジュールにしたがって、ＶＭのマイグレーションを実行する。例えば、メモリ転送部１４は、移動対象のＶＭ１が使用しているメモリ領域に記憶されるデータのコピーを実行する。そして、メモリ転送部１４は、ＶＭ管理テーブル１３において、移動を開始するＶＭ１に対応する「状態」に「移動中」を設定する。
【００３６】
まず、メモリ転送部１４は、該当メモリ領域の全データを移動先サーバ３０に転送する。次にタイミングで、メモリ転送部１４は、前回からの更新分だけを移動先サーバ３０に転送する。さらに次のタイミングで、メモリ転送部１４は、前回からの更新分だけを移動先サーバ３０に転送する。このようにして、メモリ転送部１４は、移動対象のＶＭ１が停止するまで、更新分だけを移動先サーバ３０に転送する。
【００３７】
ここで、メモリ転送部１４が送信するメモリ転送のフォーマットには、移動元サーバのＩＰアドレス、移動先サーバのＩＰアドレス、移動対象のＶＭのＩＰアドレス、メッセージ種別、メッセージタイプ、転送対象のデータが含まれる。なお、メッセージ種別には、メモリ転送であることを示す識別子が設定される。メッセージタイプには、メモリ転送開始、メモリ転送中、メモリ転送完了、メモリ転送中止のいずれであるかを示す識別子が設定される。
【００３８】
予告送信部１５は、メモリ転送部１４によるメモリ転送のデータ量が第１のメモリ転送量閾値を超過すると、移動対象のＶＭ１によるパケット送信を停止させるとともに、ＶＭ１の停止を予告する停止予告通知を移動先サーバ３０に送信する処理部である。
【００３９】
具体的には、予告送信部１５は、メモリ転送の終了にどのくらい近づいているかを判断し、ある程度終了に近づいていると判断できる場合、ＶＭ１のパケット送信を停止して停止予告通知を送信する。そして、予告送信部１５は、ＶＭ管理テーブル１３においてＶＭ１に対応する「第１のメモリ転送閾値フラグ」に「１」を設定する。
【００４０】
ここで、第１のメモリ転送量とは、全メモリ転送量のうちどのくらいの転送を完了したかを示す情報である。したがって、全メモリ転送量を４ＧＢ、第１のメモリ転送量を８０％とした場合、第１のメモリ転送量閾値は、４ＧＢ×０．８＝３．２ＧＢとなる。この結果、予告送信部１５は、メモリ転送量が３．２ＧＢを超えた場合に、停止予告通知を移動先サーバ３０に送信する。
【００４１】
また、前回の転送からの更新量を基準にして第１のメモリ転送量閾値を設定することもできる。例えば、全メモリ転送量を４ＧＢ、第１のメモリ転送量を３０％とした場合、第１のメモリ転送量閾値は、４ＧＢ×０．３＝１．２ＧＢとなる。この結果、予告送信部１５は、メモリ転送量が１．２ＧＢを下回った場合、停止予告通知を移動先サーバ３０に送信する。
【００４２】
ここで、予告送信部１５が送信するＶＭ停止予告通知のフォーマットには、移動元サーバのＩＰアドレス、移動先サーバのＩＰアドレス、移動対象のＶＭのＩＰアドレス、メッセージ種別、メッセージタイプ、転送対象のデータが含まれる。なお、メッセージ種別には、メモリ転送であることを示す識別子が設定される。メッセージタイプには、ＶＭ停止予告であることを示す識別子が設定される。
【００４３】
移動管理部１６は、ＶＭの状態を管理する処理部である。具体的には、移動管理部１６は、ＶＭ１の移動状況やメモリ転送の状況を監視し、移動失敗や転送失敗を検出する。また、移動管理部１６は、スイッチ５０を介して、移動先サーバ３０が送信したＧＡＲＰ（Gratuitous  Address  Resolution  Protocol）メッセージを受信する。そして、移動管理部１６は、ＧＡＲＰメッセージを受信したことをＶＭ停止部１７に通知する。
【００４４】
ＶＭ停止部１７は、移動対象のＶＭ１のアドレス情報を含むＧＡＲＰメッセージが受信され、メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、ＶＭ１を停止する処理部である。具体的には、ＶＭ停止部１７は、移動先サーバ３０からＧＡＲＰメッセージを受信した後、メモリ転送が終了に近づいているかを判断できる場合、ＶＭ１を停止する。そして、ＶＭ停止部１７は、ＶＭ管理テーブル１３においてＶＭ１に対応する「第２のメモリ転送閾値フラグ」に「１」を設定する。
【００４５】
なお、第２のメモリ転送量閾値は、第１のメモリ転送量閾値と同様の観点から設定されるものであり、第１のメモリ転送量閾値と同じ値であってもよいが、第１のメモリ転送量閾値よりも大きい方が好ましい。
【００４６】
例えば、全メモリ転送量を４ＧＢ、第１のメモリ転送量を８０％、第２のメモリ転送量を９０％とした場合、第１のメモリ転送量閾値は、４ＧＢ×０．８＝３．２ＧＢとなり、第２のメモリ転送量閾値は、４ＧＢ×０．９＝３．６ＧＢとなる。この結果、ＶＭ停止部１７は、ＧＡＰＲメッセージ受信後、メモリ転送量が３．６ＧＢを超えた場合、ＶＭ１を停止する。
【００４７】
（移動先サーバの機能構成）
図３に示すように、移動先サーバ３０は、ネットワークＩＦ３１、仮想ＳＷ３２、メモリ受信部３３、移動管理部３４、ＴＡＰ生成部３５、ＶＭ起動部３７を有する。移動先サーバ３０は、これらによってＶＭ１を移動元サーバ１０から移動させて稼動する。なお、メモリ受信部３３、移動管理部３４、ＴＡＰ生成部３５、ＶＭ起動部３７は、ハイパーバイザ１０ｂが実行する処理部である。
【００４８】
ネットワークＩＦ３１は、ネットワークＩＦ１１と同様、物理インタフェースである。このネットワークＩＦ３１には、ＩＰアドレスが設定されており、このＩＰアドレスを用いて通信を実行する。仮想ＳＷ３２は、仮想ＳＷ１２と同様、ハイパーバイザ１０ｂが実行する仮想スイッチである。仮想ＳＷ３２は、ＶＭ間でやり取りされるパケットを中継する。
【００４９】
メモリ受信部３３は、移動元サーバ１０から、移動対象のＶＭ１のメモリデータを受信して、移動先サーバ３０内のメモリに格納する処理部である。具体的には、メモリ受信部３３は、移動先サーバ１０からメモリデータを受信するたびに移動先サーバ３０内のメモリに格納し、格納対象領域にすでにメモリデータが格納されている場合、新たに受信したメモリデータで更新する。
【００５０】
移動管理部３４は、停止予告通知を受信した場合、ＶＭ１のアドレス情報を含むＧＡＲＰメッセージをスイッチ５０および移動元サーバ１０に送信する処理部である。また、移動管理部３４は、ユーザプロセスと通信するための仮想ネットワークインタフェースであるＴＡＰ３６の生成をＴＡＰ生成部３５に要求する処理部である。例えば、移動管理部３４は、ＧＡＲＰメッセージをブロードキャスト等で送信する。
【００５１】
また、移動管理部３４は、ＴＡＰ３６が生成された後、ＶＭ１宛のパケットを受信した場合、当該パケットをＴＡＰ３６に保持させる処理部である。なお、移動管理部３４は、管理者からの設定や移動先サーバ１０からの通知によって、ＶＭ１のアドレス情報を取得することができる。
【００５２】
ここで送信されるＧＡＲＰメッセージは、ハード種別、プロトコル、ＨＬＥＮ（hardware  address  length）、ＰＬＥＮ（protocol  address  length）、動作情報、送信元ＭＡＣアドレス、送信元ＩＰアドレス、送信先ＭＡＣアドレス、送信先ＩＰアドレスを含んでいる。
【００５３】
ハード種別は、ネットワークによって一意に識別される固定値が設定され、例えばイーサネット（登録商標）の場合「０ｘ０００１」が設定される。プロトコルは、ＡＲＰプロトコルで取り扱う上位のプロトコルの種類を示す情報であり、ＩＰネットワークの場合は固定値「０ｘ０８００」が設定される。ＨＬＥＮは、ＭＡＣアドレスの長さを指定するフィールドであり、例えば固定値「６」が設定される。ＰＬＥＮは、上位のプロトコルで利用されるアドレス情報の長さを示す情報であり、例えば固定値「４」が設定される。
【００５４】
動作情報は、ＡＲＰ要求かＡＲＰ要求に対する応答かを指定する情報であり、例えばＡＲＰ要求の場合には固定値「１」が設定される。送信元ＭＡＣアドレスは、ＧＡＲＰ要求対象のＶＭ１のＭＡＣアドレスが設定される。送信元ＩＰアドレスには、ＧＡＲＰ要求対象のＶＭ１のＩＰアドレスが設定される。送信先ＭＡＣアドレスには、送信元ＭＡＣアドレスと同一の情報が設定される。送信先ＩＰアドレスには、送信元ＩＰアドレスと同一の情報が設定される。
【００５５】
ＴＡＰ生成部３５は、移動管理部３４からＴＡＰ生成指示を受信した場合に、ＴＡＰ３６を生成する処理部である。例えば、ＴＡＰ生成部３５は、仮想ＳＷ３２内または仮想ＳＷ３２と接続されるように、ＴＡＰ３６を生成する。別例としては、ＴＡＰ生成部３５は、予め確保しておいたバッファを開放するようにしてもよい。
【００５６】
そして、ＴＡＰ生成部３５は、ＴＡＰ３６を生成したことを移動管理部３４に通知する。この結果、移動管理部３４は、ＶＭ１を宛先とするパケットを受信した場合、ＴＡＰ３６に一時的に保持させることができる。
【００５７】
ＶＭ起動部３７は、メモリ転送が完了した後、ＶＭ１を起動してパケット送信を開始するとともに、ＴＡＰ３６が保持するパケットをＶＭ１に出力する処理部である。例えば、ＶＭ起動部３７は、メモリ受信部３３からメモリ転送の完了が通知されると、ハードウェアを用いて仮想プロセッサや仮想メモリをＶＭ１に割当ててＶＭ１を起動する。そして、ＶＭ１は、ＴＡＰ３６が保持するパケットを受信し、パケット送信の開始指示をＶＭ起動部３７から受信することで、パケット処理を開始する。
【００５８】
なお、メモリ受信部３３は、移動元サーバ１０からメモリ転送の完了通知を受信した場合や一定期間メモリ転送を受信しない場合、メモリ転送が完了したと判定し、メモリ転送の完了をＶＭ起動部３７に通知する。
【００５９】
（スイッチの機能構成）
図３に示すように、スイッチ５０は、ネットワークＩＦ５１、ＦＤＢ５２、データ転送部５３、更新部５４を有する。
【００６０】
ネットワークＩＦ５１は、例えばポートなどの物理インタフェースである。このネットワークＩＦ５１は、移動元サーバ１０からＶＭ停止予告通知やメモリ転送完了通知を受信する。また、ネットワークＩＦ５１は、移動先サーバ３０からＧＡＲＰメッセージを受信する。また、ネットワークＩＦ５１は、外部のサーバ等からＶＭ１宛のパケットを受信する。
【００６１】
ＦＤＢ５２は、パケットの転送先等を記憶するフォワーディングデータベースである。図５は、ＦＤＢに記憶される情報の例を示す図である。図５に示すように、ＦＤＢ５２は、「ＭＡＣアドレス、ポート、時刻」を対応付けて記憶する。
【００６２】
ここで記憶される「ＭＡＣアドレス」は、パケットの宛先となるＭＡＣアドレスである。「ポート」は、ＭＡＣアドレスで特定される宛先のパケットを出力するポート番号である。「時刻」は、エントリが更新された時刻である。
【００６３】
図５の先頭のエントリの場合、ＭＡＣアドレス「00：11：22：33：44：55」を宛先とするパケットをポート番号１０のポートから出力することを示す。また、このエントリは、２０１３年１０月１５日の９時１０分に更新されたことを示す。
【００６４】
データ転送部５３は、受信されたパケットをＦＤＢ５２に記憶される情報に基づいて転送する処理部である。例えば、データ転送部５３は、ＭＡＣアドレス「00：11：22：33：44：55」を宛先とするパケットを受信した場合、図５を参照して出力ポートを「ポート１０」と特定する。そして、データ転送部５３は、受信パケットをポート１０から出力する。
【００６５】
また、データ転送部５３は、ブロードキャストアドレスが指定されたＧＡＲＰメッセージなどを受信した場合、ネットワークＩＦ５１を介して、ＧＡＲＰメッセージをブロードキャストで転送する。この結果、移動先サーバ３０から送信されたＧＡＲＰメッセージは、移動元サーバ１０に受信される。
【００６６】
更新部５４は、ＦＤＢ５２を更新する処理部である。具体的には、更新部５４は、ＧＡＲＰメッセージを受信すると、ＧＡＲＰメッセージに含まれる送信元ＭＡＣアドレスおよびＧＡＲＰメッセージを受信したポート番号を特定する。その後、更新部５４は、送信元ＭＡＣアドレスとポート番号とを対応付けて、ＦＤＢ５２に格納する。
【００６７】
例えば、送信元ＭＡＣアドレス「00：11：22：33：44：55」を含むＧＡＲＰメッセージが、２０１３年１０月１５日の１２時３０分に、ポート１０で受信されたとする。この場合、更新部５４は、送信元ＭＡＣアドレス「00：11：22：33：44：55」に対応するＦＤＢ５２のエントリを参照し、特定したエントリのポート番号が１０であることを特定する。つまり、更新部５４は、送信元ＭＡＣアドレスとポート番号とが一致することから、今回受信した際の時刻「２０１３年１０月１５日の１２時３０分」でエントリを更新する。
【００６８】
また、送信元ＭＡＣアドレス「aa：bb：22：33：44：55」を含むＧＡＲＰメッセージが、２０１３年１０月１５日の１１時３０分に、ポート３０で受信されたとする。この場合、更新部５４は、送信元ＭＡＣアドレス「aa：bb：22：33：44：55」に対応するエントリがＦＤＢ５２に記憶されていないと判定する。この結果、更新部５４は、送信元ＭＡＣアドレス「aa：bb：22：33：44：55」と受信ポート番号「３０」と受信時刻「201310151130」とを対応付けたエントリをＦＤＢ５２に追加する。
【００６９】
［具体例］
次に、ＶＭを移動させる場合の具体例を説明する。図６は、ＶＭの移動開始からＧＡＲＰ送信までの流れを説明する図であり、図７は、ＧＡＲＰ送信後からＶＭの移動完了までの流れを説明する図である。
【００７０】
図６に示すように、移動前の段階では、移動元サーバ１０がＶＭ１を稼動させており、移動元サーバ１０と移動先サーバ３０とがスイッチ５０を介して接続される。この状態で、スイッチ５０は、外部からＶＭ１へのパケットを受信した場合、ＦＤＢ５２を参照して、受信パケットを移動元サーバ１０へ転送する。
【００７１】
次に、移動元サーバ１０は、ＶＭ１の移動を開始すると、メモリ転送を開始する。具体的には、移動元サーバ１０は、ＶＭ１に対応するメモリデータを移動先サーバ３０に転送する。なお、ここでは、スイッチ５０のＦＤＢ５２は更新されていないので、ＶＭ１へのパケットは、移動元サーバ１０に転送される。
【００７２】
その後、移動元サーバ１０は、メモリ転送のデータ量が第１のメモリ転送量閾値を超過した場合、ＶＭ停止予告通知を移動先サーバ３０に送信する。このとき、移動元サーバ１０は、ＶＭ１に対して、パケットの送信を停止させる。
【００７３】
このＶＭ停止予告通知を受信した移動先サーバ３０は、ＴＡＰ３６を生成するとともに、ＶＭ１のＭＡＣアドレスを含むＧＡＲＰメッセージをスイッチ５０と移動元サーバ１０に送信する。
【００７４】
そして、図７に示すように、スイッチ５０は、移動先サーバ３０から受信したＧＡＲＰメッセージを移動元サーバ１０に転送する。さらに、スイッチ５０は、ＧＡＲＰメッセージを受信したポート番号と、ＧＡＲＰメッセージに含まれるＶＭ１のＭＡＣアドレスとの組合せで、ＦＤＢ５２を更新する。この結果、スイッチ５０は、外部から受信したＶＭ１宛のパケットを、移動先サーバ３０へ転送する。移動先サーバ３０は、ＶＭ１宛のパケットを受信すると、ＴＡＰ３６で保持する。
【００７５】
その後、移動元サーバ１０は、ＧＡＲＰメッセージを受信し、メモリ転送のデータ量が第２のメモリ転送量閾値を超過した場合、ＶＭ１を停止させる。そして、移動元サーバ１０は、ＶＭ１停止後に、残りのメモリデータおよびメモリ転送の完了を示す情報を移動先サーバ３０に送信する。
【００７６】
そして、移動先サーバ３０は、メモリ転送が完了したことが移動元サーバ１０から通知されると、移動してきたＶＭ１を起動して、ＶＭ１のパケット送信を開始する。
【００７７】
さらに、移動先サーバ３０は、起動させたＶＭ１に対して、ＴＡＰ３６に保持されるパケットを出力する。この結果、移動先サーバ３０においてＶＭ１の移動が完了し、ＶＭ１は、移動後も遅滞なくパケット処理を開始することができる。
【００７８】
［処理の流れ］
次に、図８と図９を用いて、ＶＭ移動に関する処理の流れを説明する。ここでは、移動元サーバ１０が実行する処理と、移動先サーバ３０が実行する処理とについて説明する。
【００７９】
（移動元サーバの処理）
図８は、移動元サーバが実行する処理の流れを示すフローチャートである。図８に示すように、移動元サーバ１０のメモリ転送部１４は、ＶＭの移動要求が発生すると（Ｓ１０１：Ｙｅｓ）、メモリに記憶される移動対象のＶＭのデータを移動先サーバ３０に転送する（Ｓ１０２）。
【００８０】
続いて、移動元サーバ１０の予告送信部１５は、メモリ転送量が第１のメモリ転送量閾値を超過した場合（Ｓ１０３：Ｙｅｓ）、移動先サーバ３０にＶＭ停止予告通知を送信するとともに、移動対象のＶＭにパケット送信の停止を指示する（Ｓ１０４）。
【００８１】
その後、移動管理部１６がＶＭのＭＡＣアドレスが設定されたＧＡＲＰメッセージを受信し（Ｓ１０５：Ｙｅｓ）、メモリ転送量が第２のメモリ転送量閾値を超過した場合（Ｓ１０６：Ｙｅｓ）、ＶＭ停止部１７は、Ｓ１０７を実行する。すなわち、ＶＭ停止部１７は、ＶＭを停止して、前回のメモリ転送から更新された差分分のメモリデータを移動先サーバ３０に転送する。
【００８２】
そして、ＶＭ停止部１７は、全メモリデータの転送が完了すると（Ｓ１０８：Ｙｅｓ）、処理を終了する。このとき、ＶＭ停止部１７は、移動先サーバ３０に対して、メモリ転送の完了通知を送信してもよい。
【００８３】
（移動先サーバの処理）
図９は、移動先サーバが実行する処理の流れを示すフローチャートである。図９に示すように、移動先サーバ３０のメモリ受信部３３は、メモリデータの受信を開始すると（Ｓ２０１）、受信したメモリデータをメモリに格納する。
【００８４】
その後、移動管理部３４は、ＶＭ停止予告通知を受信すると（Ｓ２０２：Ｙｅｓ）、ＶＭのＭＡＣアドレスを含むＧＡＲＰメッセージをスイッチ５０および移動元サーバ１０に送信し、ＴＡＰ生成部３５は、ＴＡＰ３６を生成する（Ｓ２０３）。
【００８５】
そして、移動管理部３４は、ＴＡＰ３６でバッファリングを開始する（Ｓ２０４）。具体的には、移動管理部３４は、移動対象のＶＭ宛のパケットをスイッチ５０から受信すると、受信したパケットをＴＡＰ３６で保持する。
【００８６】
その後、ＶＭ起動部３７は、メモリデータの転送が終了すると（Ｓ２０５：Ｙｅｓ）、ＶＭを起動し、ＶＭに対してパケットの送信開始を指示する（Ｓ２０６）。具体的には、ＶＭ起動部３７は、移動元サーバ１０からメモリ転送の完了通知等を受信した場合、ＶＭを起動させる。
【００８７】
続いて、ＶＭ起動部３７は、起動させたＶＭに、ＴＡＰ３６で保持されるパケットを転送する（Ｓ２０７）。
【００８８】
［効果］
実施例１に係る情報処理システムは、ＶＭを移動させる際、メモリ転送量が第１閾値を超えると該ＶＭへのパケットを移動先で一時保持し、メモリ転送量が第２閾値を超えると移動先でＶＭを起動させる。この結果、実施例１に係る情報処理システムは、移動後のＶＭのパケット処理遅延を抑制することができる。
【００８９】
また、実施例１に係る情報処理システムは、ＶＭ移動時にＶＭ宛パケットのサーバ間転送を行わないので、ＶＭ宛のパケット落ちを軽減することができると共に、ＶＭから発信されるパケット落ちを軽減することができる。
【００９０】
図１０は、移動前後のパケットの流れを説明する図である。図１０に示すように、移動元サーバ１０は、時刻ｔのタイミングで、メモリ転送量が第１のメモリ転送量閾値を超過したことにより、ＶＭに対してパケット送信を停止する。その後、移動元サーバ１０は、ＶＭを停止する時刻ｔ＋１まで、メモリ転送を繰り返す。
【００９１】
一方で、移動先サーバ３０は、時刻ｔのタイミングでＶＭ停止予告通知を受信し、ＴＡＰ３６を生成する。このタイミングで、移動先サーバ３０は、スイッチ５０等に対してＧＡＲＰを送信する。そして、移動先サーバ３０は、ＶＭを起動する時刻ｔ＋２まで、ＴＡＰ３６でＶＭ宛のパケットを保持する。
【００９２】
つまり、時刻ｔ＋１から時刻ｔ＋２までの間ＶＭが停止することになるが、この間でも、ＶＭ宛のパケットは、ＴＡＰ３６で保持される。したがって、ＶＭが停止している間もパケットの廃棄を抑制することができる。
【実施例２】
【００９３】
ところで、移動元サーバ１０または移動先サーバ３０は、メモリ転送のエラーなどＶＭの移動が失敗した場合に、エラー処理を実行することができる。そこで、実施例２では、各サーバのエラー処理について説明する。
【００９４】
［移動元サーバのエラー処理］
図１１は、移動元サーバでＶＭ移動失敗を検出した場合の処理の流れを示すフローチャートである。図１１に示すように、移動元サーバ１０の移動管理部１６は、ＶＭの移動失敗を検出すると（Ｓ３０１：Ｙｅｓ）、メモリデータの転送中か否かを判定する（Ｓ３０２）。
【００９５】
例えば、移動管理部１６は、データ転送の送信エラーや受信エラー、移動先でのリソース不足などを検出した場合、ＶＭの移動失敗を検出する。
【００９６】
続いて、移動管理部１６は、メモリデータが転送中である場合（Ｓ３０２：Ｙｅｓ）、メモリデータの転送を中止してから（Ｓ３０３）、Ｓ３０４を実行する。一方、移動管理部１６は、メモリデータが転送中ではない場合（Ｓ３０２：Ｎｏ）、Ｓ３０３を実行することなく、Ｓ３０４を実行する。
【００９７】
そして、移動管理部１６は、ＶＭの移動失敗を検出したタイミングが第１のメモリ転送閾値の超過前である場合（Ｓ３０４：Ｎｏ）、ＶＭ移動を中止して、ＶＭにパケット送信を開始させる（Ｓ３０５）。なお、移動管理部１６は、ＶＭ管理テーブル１３を参照し、「第１のメモリ転送閾値フラグ」に「０」が設定されている場合、ＶＭの移動失敗を検出したタイミングが第１のメモリ転送閾値の超過前と判定する。
【００９８】
また、移動管理部１６は、ＶＭの移動失敗を検出したタイミングが第１のメモリ転送閾値の超過後であり（Ｓ３０４：Ｙｅｓ）、ＶＭ停止予告通知送信前である場合（Ｓ３０６：Ｎｏ）、ＶＭ移動を中止して、ＶＭにパケット送信を開始させる（Ｓ３０５）。
【００９９】
一方、移動管理部１６は、ＶＭの移動失敗を検出したタイミングが第１のメモリ転送閾値の超過後であり（Ｓ３０４：Ｙｅｓ）、ＶＭ停止予告通知送信後である場合（Ｓ３０６：Ｙｅｓ）、ＧＡＲＰメッセージが受信されるまで待機する（Ｓ３０７）。
【０１００】
そして、移動管理部１６は、移動先サーバ３０が送信したＧＡＲＰメッセージを受信すると（Ｓ３０７：Ｙｅｓ）、移動先サーバ３０に、パケットの返送要求を送信する（Ｓ３０８）。つまり、移動管理部１６は、ＴＡＰ３６に保持されるパケットの転送を要求する。
【０１０１】
続いて、移動管理部１６は、ＶＭのＭＡＣアドレスを含むＧＡＲＰメッセージをスイッチ５０および移動先サーバ３０に送信する（Ｓ３０９）。このＧＡＲＰメッセージによって、スイッチ５０は、ＶＭ宛のパケットを再度移動元サーバ１０に中継するように、ＦＤＢ５２を更新する。
【０１０２】
そして、移動管理部１６は、ＶＭが停止している場合（Ｓ３１０：Ｙｅｓ）、ＶＭを起動してから（Ｓ３１１）、Ｓ３１２を実行する。一方、移動管理部１６は、ＶＭが停止していない場合（Ｓ３１０：Ｎｏ）、Ｓ３１１を実行することなく、Ｓ３１２を実行する。
【０１０３】
その後、移動管理部１６は、移動先サーバ３０から、Ｓ３０８で返送を要求したパケットを受信する（Ｓ３１２）。そして、移動管理部１６は、ＶＭ移動を中止して、ＶＭにパケット送信を開始させる（Ｓ３０５）。
【０１０４】
［移動先サーバのエラー処理］
図１２は、移動先サーバでＶＭ移動失敗を検出した場合の処理の流れを示すフローチャートである。図１２に示すように、移動先サーバ３０の移動管理部３４は、ＶＭの移動失敗を検出すると（Ｓ４０１：Ｙｅｓ）、移動元サーバ１０に、ＶＭの移動失敗を通知する（Ｓ４０２）。
【０１０５】
そして、移動管理部３４は、ＶＭ停止予告通知を未受信の場合（Ｓ４０３：Ｎｏ）、処理を終了する。一方、移動管理部３４は、ＶＭ停止予告通知を受信済みである場合（Ｓ４０３：Ｙｅｓ）、ＧＡＲＰメッセージを送信済みか否か判定する（Ｓ４０４）。
【０１０６】
ここで、移動管理部３４は、ＧＡＲＰメッセージを送信済みではない場合（Ｓ４０４：Ｎｏ）、処理を終了する。一方、移動管理部３４は、ＧＡＲＰメッセージを送信済みである場合（Ｓ４０４：Ｙｅｓ）、ＴＡＰ３６によるパケットの受信が開始されているかを判定する（Ｓ４０５）。
【０１０７】
ここで、移動管理部３４は、ＴＡＰ３６によるパケットの受信が開始されていない場合（Ｓ４０５：Ｎｏ）、処理を終了する。一方、移動管理部３４は、ＴＡＰ３６によるパケットの受信が開始されている場合（Ｓ４０５：Ｙｅｓ）、移動元サーバ１０からの返送要求の受信待ちとなる（Ｓ４０６）。
【０１０８】
そして、移動管理部３４は、移動元サーバ１０から返送要求を受信し（Ｓ４０６：Ｙｅｓ）、ＶＭのＭＡＣアドレスを含むＧＡＲＰメッセージを移動元サーバ１０から受信した場合（Ｓ４０７：Ｙｅｓ）、Ｓ４０８を実行する。すなわち、移動管理部３４は、ＴＡＰ３６が保持するパケットを移動元サーバ１０に返送する。
【０１０９】
［効果］
上述したように、移動元サーバ１０および移動先サーバ３０は、エラーを検出したタイミングによって、エラー時に実行する処理を変更することができる。したがって、移動元サーバ１０および移動先サーバ３０は、ＶＭの移動が失敗した場合であっても、パケットの破棄を軽減しつつ、ＶＭをパケット通信ができる状態に復旧させることができる。また、ＶＭを復旧させることができるので、ＶＭによるサービスも停止時間を極力短くし、継続させることができる。
【実施例３】
【０１１０】
ところで、上記実施例では、移動元サーバでＶＭが１つ動作している例を説明したが、これに限定されるものではない。例えば、移動元サーバ１０で複数のＶＭが稼動している場合であっても同様に処理することができる。図１３は、移動元サーバで複数のＶＭが通信している状況でＶＭを移動する場合の処理を説明する図である。
【０１１１】
図１３に示すように、この例では、移動元サーバ１０では、ＶＭ１とＶＭ２が稼動しており、各ＶＭは、仮想ＳＷ経由で通信を実行する。また、スイッチ５０は、外部から受信したＶＭ１宛のパケットを仮想ＳＷ経由で、ＶＭ１に送信する。また、スイッチ５０および仮想ＳＷは、ＦＤＢを有する。このような状況で、ＶＭ１を移動先サーバ３０に移動させる例を説明する。
【０１１２】
移動元サーバ１０は、メモリ転送量が第１のメモリ転送量閾値を超過した場合、ＶＭ停止予告通知を移動先サーバ３０に送信する。移動先サーバ３０は、このＶＭ停止予告通知を受信すると、ＶＭ１用のＴＡＰ３６を生成し、ＶＭ１のＭＡＣアドレスを含むＧＡＲＰメッセージをスイッチ５０と移動元サーバ１０とに送信する。
【０１１３】
スイッチ５０は、移動先サーバ３０が送信したＧＡＲＰメッセージにしたがって、ＦＤＢ５２におけるＶＭ１宛のパケットの出力先を移動先サーバ３０に変更する。また、移動元サーバ１０内の仮想ＳＷも、移動先サーバ３０が送信したＧＡＲＰメッセージにしたがって、ＦＤＢにおけるＶＭ１宛のパケットの出力先を移動先サーバ３０に変更する。
【０１１４】
この結果、ＶＭ２からＶＭ１へ送信されたパケットは、移動元サーバ１０内の仮想ＳＷによってスイッチ５０へ中継され、スイッチ５０が、パケットを移動先サーバ３０へ中継する。また、スイッチ５０は、ＶＭ１宛のパケットを外部から受信した場合、受信パケットを移動先サーバ３０へ中継する。移動先サーバ３０は、スイッチ５０が中継したＶＭ１宛のパケットをＶＭ１用のＴＡＰ３６で保持する。なお、その後の処理は、実施例１等と同様なので、説明を省略する。
【０１１５】
このように、移動元サーバ１０内の仮想ＳＷは、ＧＡＲＰメッセージを受信した場合、受信したＧＡＲＰメッセージにしたがってＦＤＢを書換えることができる。したがって、仮想ＳＷは、移動対象のＶＭを同じサーバ内で稼動する他ＶＭから移動対象へのパケットを受信した場合、移動先サーバへ中継することができる。この結果、ＶＭの移動に伴うパケットの廃棄を抑制しつつ、ＶＭの移動を実行することができる。
【実施例４】
【０１１６】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【０１１７】
（閾値）
上述した第１のメモリ転送量閾値と第２のメモリ転送量閾値とは同じ値であってもよく、その場合でも閾値超過の判定は２回実行される。また、第１のメモリ転送量閾値は、小さい値を設定すると、移動先サーバ３０のバッファ量が非常に大きくなるので、転送対象のメモリ量等を考慮して決定することが好ましい。
【０１１８】
例えば、第１のメモリ転送量閾値は、移動先サーバ３０のメモリ量に余裕がある場合は、転送対象のメモリ容量の１０％などのように、第１のメモリ転送量閾値に小さい値を設定する。このようにすることで、移動対象のＶＭを宛先とするパケットを移動先サーバ３０へ転送することを早めることができるので、パケット廃棄をより抑制することができる。
【０１１９】
また、第１のメモリ転送量閾値は、移動先サーバ３０のメモリ量に余裕がない場合は、転送対象のメモリ容量の８０％などのように、第１のメモリ転送量閾値に大きい値を設定する。このようにすることで、移動先サーバ３０で確保するバッファ容量を抑制することができる。
【０１２０】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１２１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１２２】
（ハードウェア）
次に、各サーバのハードウェア構成例を説明する。なお、移動元サーバ１０、移動先サーバ３０、スイッチ５０は、同様のハードウェア構成を有するので、ここでは、サーバ１００として説明する。
【０１２３】
図１４は、ハードウェア構成例を説明する図である。図１４に示すように、サーバ１００は、ＣＰＵ１０１、メモリ１０２、ＨＤＤ（Hard  Disk  Drive）１０３、通信インタフェース１０４を有する。また、図１４に示した各部は、バス等で相互に接続される。
【０１２４】
通信インタフェース１０４は、ネットワークインタフェースカードなどである。ＨＤＤ１０３は、図３に示した機能を動作させるプログラム、テーブル、ＤＢを記憶する。
【０１２５】
ＣＰＵ１０１は、図３に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０３等から読み出してメモリ１０２に展開することで、図３等で説明した各機能を実行するプロセスを動作させる。
【０１２６】
一例を挙げると、このプロセスは、移動元サーバ１０が有する各処理部と同様の機能を実行する。具体的には、ＣＰＵ１０１は、メモリ転送部１４、予告送信部１５、移動管理部１６、ＶＭ停止部１７等と同様の機能を有するプログラムをＨＤＤ１０３等から読み出す。そして、ＣＰＵ１０１は、メモリ転送部１４、予告送信部１５、移動管理部１６、ＶＭ停止部１７と同様の処理を実行するプロセスを実行する。
【０１２７】
このようにサーバ１００は、プログラムを読み出して実行することでＶＭ移動方法を実行する情報処理装置として動作する。また、サーバ１００は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、サーバ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１２８】
１  ＶＭ
１０  移動元サーバ
１０ａ  ハードウェア
１０ｂ  ハイパーバイザ
１０ｃ  仮想スイッチ
１０ｄ  コントロールドメイン
１０ｅ、１０ｆ、１０ｇ  仮想マシン
１１  ネットワークＩＦ
１２  仮想ＳＷ
１３  ＶＭ管理テーブル
１４  メモリ転送部
１５  予告送信部
１６  移動管理部
１７  ＶＭ停止部
３０  移動先サーバ
３１  ネットワークＩＦ
３２  仮想ＳＷ
３３  メモリ受信部
３４  移動管理部
３５  ＴＡＰ生成部
３６  ＴＡＰ
３７  ＶＭ起動部
５０  スイッチ
５１  ネットワークＩＦ
５２  ＦＤＢ
５３  データ転送部
５４  更新部
【図１】
2015153409.tif 000003
【図２】
2015153409.tif 000004
【図３】
2015153409.tif 000005
【図４】
2015153409.tif 000006
【図５】
2015153409.tif 000007
【図６】
2015153409.tif 000008
【図７】
2015153409.tif 000009
【図８】
2015153409.tif 000010
【図９】
2015153409.tif 000011
【図１０】
2015153409.tif 000012
【図１１】
2015153409.tif 000013
【図１２】
2015153409.tif 000014
【図１３】
2015153409.tif 000015
【図１４】
2015153409.tif 000016