(57)【特許請求の範囲】
【請求項１】
仮想マシンが動作する複数の情報処理装置と、
前記複数の情報処理装置の間で転送されるデータを中継するデータ中継装置と、
を有し、
前記データ中継装置は、
前記複数の情報処理装置のうち１の情報処理装置に転送されるデータのうち、前記複数の情報処理装置のうち他の情報処理装置から前記１の情報処理装置への仮想マシンの移動処理において前記１の情報処理装置へ送信される、前記他の情報処理装置上で前記仮想マシンに対して割り当てられたメモリ領域のデータの送信状況に基づいて、前記移動処理の収束の有無を検出する検出部と、
前記情報処理装置に転送されるデータのうち、前記移動処理の非収束が検出された仮想マシン宛に送信される前記移動処理に係るデータ以外のデータ転送を保留する保留部と、
を有することを特徴とするデータ処理システム。
【請求項２】
前記検出部は、前記仮想マシンに対して割り当てられたメモリ領域のデータの現在の転送レートが過去所定世代の転送レートの値未満である場合に前記移動処理の収束を検出し、前記メモリ領域のデータの現在の転送レートが過去所定世代の転送レートの値以上である場合に前記移動処理の非収束を検出することを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記検出部は、前記仮想マシンに対して割り当てられたメモリ領域のデータの転送開始からの当該メモリ領域からの転送データ量が所定のデータ量以上である場合に前記移動処理の収束を検出し、前記転送データ量が前記所定のデータ量未満である場合に前記移動処理の非収束を検出することを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
仮想マシンが動作する複数の情報処理装置の間で転送されるデータを中継するデータ中継装置であって、
前記複数の情報処理装置のうち１の情報処理装置に転送されるデータのうち、前記複数の情報処理装置のうち他の情報処理装置から前記１の情報処理装置への仮想マシンの移動処理において前記１の情報処理装置へ送信される、前記他の情報処理装置上で前記仮想マシンに対して割り当てられたメモリ領域のデータの送信状況に基づいて、前記移動処理の収束の有無を検出する検出部と、
前記情報処理装置に転送されるデータのうち、前記移動処理の非収束が検出された仮想マシン宛に送信される前記移動処理に係るデータ以外のデータ転送を保留する保留部と、
を有することを特徴とするデータ中継装置。
【請求項５】
コンピュータが、
仮想マシンが動作する複数の情報処理装置の間で転送されるデータを中継する処理を実行するデータ中継方法であって、
前記複数の情報処理装置のうち１の情報処理装置に転送されるデータのうち、前記複数の情報処理装置のうち他の情報処理装置から前記１の情報処理装置への仮想マシンの移動処理において前記１の情報処理装置へ送信される、前記他の情報処理装置上で前記仮想マシンに対して割り当てられたメモリ領域のデータの送信状況に基づいて、前記移動処理の収束の有無を検出し、
前記情報処理装置に転送されるデータのうち、前記移動処理の非収束が検出された仮想マシン宛に送信される前記移動処理に係るデータ以外のデータ転送を保留する、
各処理を実行することを特徴とするデータ中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ中継装置およびライブマイグレーション方法に関する。
【背景技術】
【０００２】
クラウドサービス等の発展に伴い、物理サーバ上でソフトウェア化した複数の仮想的なサーバ（仮想マシン）を動作させるサーバ仮想化技術へのニーズがある。また、仮想化技術を利用した負荷分散または物理サーバの増設の方法としてライブマイグレーション（Ｌｉｖｅ  Ｍｉｇｒａｔｉｏｎ）という技術がある。ライブマイグレーションは、仮想マシンの動作を停止することなく、他の物理サーバに仮想マシンを移動させる技術である。
【０００３】
ライブマイグレーションでは、例えば、物理サーバＸ上で動作中の仮想マシンを物理サーバＹに移動させる場合、物理サーバＸ上の仮想マシンを構成している情報を、物理サーバＹに移動させる。そのため、物理サーバＸは、仮想マシンを構成している情報を含んだマイグレーション用データをデータ中継装置に送信する。データ中継装置は、受信したマイグレーション用データを移動先の物理サーバＹに転送する。ライブマイグレーション中に、クライアント等からライブマイグレーション中の仮想マシンにあててデータが送られた場合、データ中継装置はマイグレーション中の仮想マシン宛、すなわち、移動前の物理サーバＸ宛に当該データを転送する。したがって、ライブマイグレーション中も、仮想マシンの動作は継続し、物理サーバＸ上の仮想マシンのメモリ内容が変化する。メモリ内容の変化は差分情報として移動先の物理サーバＹに転送され、差分がなくなったときに仮想マシンの移動が完了する。
【０００４】
例えば、ライブマイグレーションを実現する一手法は以下のようになる。まず、ユーザがマイグレーションの指示を出す。すると、転送元の仮想計算機管理部は、転送先の仮想プロセッサを選択する。そして、転送元の仮想計算機管理部は、転送元の仮想プロセッサの動作は停止させずに、当該仮想プロセッサ、仮想メモリ領域および仮想デバイスの内容を転送先の仮想計算機管理部に転送する。転送元の仮想計算機管理部は、転送開始から終了までの間、転送開始時と現在との差分を取得し、取得した差分を転送先の仮想計算機管理部に転送する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１７６１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ライブマイグレーション中に仮想マシンが過負荷状態になると、差分の転送が収束しない。そのために、仮想マシンの移行に時間を要するという問題がある。また、移行が失敗するという問題もある。
【０００７】
開示の技術は、上記に鑑みてなされたものであって、仮想マシンの移行を速やかに実現するデータ処理システム、データ中継装置およびライブマイグレーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本願の開示するデータ処理システムは、仮想マシンが動作する複数のサーバ装置と、前記サーバ装置にデータを転送するデータ中継装置と、を有する。前記データ中継装置は、検出部と、保留部とを有する。検出部は、前記サーバ装置に転送されるデータのうち、ライブマイグレーション用のデータに基づいて、前記仮想マシンにおけるライブマイグレーションの収束の有無を検出する。保留部は、前記サーバ装置に転送されるデータのうち、前記ライブマイグレーションの非収束が検出された仮想マシン宛のデータ転送を保留する。
【発明の効果】
【０００９】
本願の開示するデータ処理システム、データ中継装置およびライブマイグレーション方法は、仮想マシンの移行を速やかに実現することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１のデータ処理システムを示す図である。
【図２】図２は、実施例１の転送部における処理の手順を示すフローチャートである。
【図３】図３は、実施例１のライブマイグレーション収束判定処理の手順を示すフローチャートである。
【図４】図４は、実施例１の保留判定処理の手順を示すフローチャートである。
【図５】図５は、実施例２のデータ処理システムを示す図である。
【図６】図６は、実施例２の監視テーブルの一例を示す図である。
【図７】図７は、実施例２の管理部における処理手順を示すフローチャートである。
【図８】図８は、ライブマイグレーション開始時のデータシーケンスの一例を示す図である。
【図９】図９は、ライブマイグレーション終了時のデータシーケンスの一例を示す図である。
【図１０】図１０は、実施例２の保留対象リストの一例を示す図である。
【図１１】図１１は、実施例２の保留キューの一例を示す図である。
【図１２】図１２は、実施例２の保留部の処理手順を示すフローチャートである。
【図１３】図１３は、実施例２のマイグレーション検知対象リストの一例を示す図である。
【図１４】図１４は、実施例２の保留検知対象リストの一例を示す図である。
【図１５】図１５は、実施例２のインターフェース検出部の処理手順を示すフローチャートである。
【図１６】図１６は、実施例３に係る監視テーブルの一例を示す図である。
【図１７】図１７は、実施例４に係る監視テーブルの一例を示す図である。
【図１８】図１８は、実施例１〜４に係るデータ中継プログラムを実行するコンピュータの一例について説明するための図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するデータ処理システム、データ中継装置およびライブマイグレーション方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
図１は、実施例１にかかるデータ処理システムを示す図である。実施例１にかかるデータ処理システムは、データ中継装置１と、ネットワーク等によりデータ中継装置１に接続された物理サーバ１０−１、１０−２と、を備える。また、データ中継装置１には、ネットワーク等を介してクライアント５が接続される。物理サーバ１０−１上で仮想マシン６が動作する。仮想マシンとは、実際のコンピュータやサーバの上にソフトウェアによって仮想的に作り出されるコンピュータのことである。ここでは、仮想化ソフトウェアの一つであるＸｅｎによって制御される仮想マシンを想定する。なお、仮想マシンの実現手法は、Ｘｅｎに限定されるものではない。また、仮想マシン６は、クライアント５に対してＷｅｂ等のサービスを提供しているものとする。なお、仮想マシンの処理内容は、Ｗｅｂ等のサービスに限定されるものではない。
【００１３】
実施例１のデータ処理システムにおいては、データ中継装置１を介して、仮想マシン６を物理サーバ１０−１から物理サーバ１０−２へ移動させることができる。ここで、「移動」とは、仮想マシン６の動作を停止せずに、物理サーバ１０−１から物理サーバ１０−２に移すことをいう。つまり、仮想マシン６で動作中のソフトウェア等を停止させないままで、別の物理サーバで動作する仮想マシンに移すことである。このように仮想マシンの動作を停止せずに移動させる技術をライブマイグレーションという。なお、図１は例示的に２つの物理サーバ１０−１、１０−２と１つのクライアント５とを示すが、物理サーバおよびクライアントの数はこれに限定されるものではない。
【００１４】
図１を参照し、実施例１のデータ中継装置１の構成を説明する。データ中継装置１は、転送部１１と、管理部１２と、保留部１３とを備える。管理部１２は、検出部の一例である。なお、データ中継装置１は、例えば、レイヤ２スイッチ装置やルータ装置などである。
【００１５】
転送部１１は、物理サーバ１０−１、１０−２およびクライアント５から送信されるデータを、ネットワークを介して受信し、受信したデータを、ネットワークを介して物理サーバ１０−１、１０−２およびクライアント５に転送する。転送するデータとしては、クライアント５から物理サーバ１０−１、１０−２の仮想マシン宛のデータが挙げられる。また、物理サーバ１０−１（１０−２）の仮想マシンから物理サーバ１０−２（１０−１）の仮想マシン宛のデータ、物理サーバ１０−１（１０−２）から物理サーバ１０−２（１０−１）宛のマイグレーション用データなどもある。以下、「マイグレーション用データ」というときは、物理サーバ１０−１（１０−２）から物理サーバ１０−２（１０−１）宛てに、仮想マシンのライブマイグレーションのために送られているデータを指す。例えば、仮想マシンを動作させるためのメモリ内容を物理サーバ１０−１から１０−２に移すために送られているデータがマイグレーション用データである。仮想マシンのメモリ内容が変化したことにより生じた差分情報を転送するためのデータもマイグレーション用データに該当する。なお、転送部１１は、管理部１２および保留部１３に接続されており、予め定められた条件にしたがい管理部１２および保留部１３にデータを転送する。
【００１６】
管理部１２は、ネットワークを介して転送されるマイグレーション用データを転送部１１から受信し、当該マイグレーション用データに基づいて、ライブマイグレーションの収束の有無を検出する。例えば、管理部１２は、物理サーバ１０−１（１０−２）から物理サーバ１０−２（１０−１）宛のマイグレーション用データに基づいて、物理サーバ１０−１（１０−２）の仮想マシンのマイグレーションの収束の有無を検出する。
【００１７】
保留部１３は、ネットワークを介して転送されるデータを転送部１１から受信し、管理部１２の検出結果に基づいて、ライブマイグレーション中の仮想マシン宛のデータの転送を一時的に保留する。例えば、保留部１３は、物理サーバ１０−１の仮想マシン６のマイグレーションの非収束を管理部１２が検出した場合、クライアント５や他の物理サーバ１０−２から仮想マシン６宛に送信されたデータなどを保留する。なお、このような保留中も、転送部１１は、物理サーバ１０−１から物理サーバ１０−２宛のマイグレーション用データについては、転送を継続する。
【００１８】
図１に示すデータ中継装置１の動作を、図２、３、４を用いて説明する。図２は、実施例１の転送部１１における処理の手順を示すフローチャートである。図３は、実施例１のライブマイグレーション収束判定処理の手順を示すフローチャートである。図４は、実施例１の保留部における保留判定処理の手順を示すフローチャートである。
【００１９】
まず、図２を参照し、転送部１１における処理を説明する。データ中継装置１がデータを受信する（ステップＳ１）。転送部１１は、受信したデータのうち、マイグレーション用データを検出する（ステップＳ２）。マイグレーション用データは、物理サーバ１０−１（１０−２）から物理サーバ１０−２（１０−１）の特定のポートを宛先とするデータである。例えば、仮想ソフトウェアＸｅｎにおいては、ポート番号８００２を宛先とするデータがマイグレーション用データである。転送部１１は、マイグレーション用データを検出すると（ステップＳ２、Ｙｅｓ）、管理部１２に転送する（ステップＳ３）。転送部１１は、マイグレーション用データ以外のデータを検出すると（ステップＳ２、Ｎｏ）、保留部１３に転送する（ステップＳ４）。
【００２０】
次に、図３を参照し、管理部１２における処理を説明する。管理部１２は、転送部１１からマイグレーション用データを受信する（ステップＳ５）。管理部１２は、受信したマイグレーション用データに基づいてマイグレーションの収束の有無を検出する（ステップＳ６）。管理部１２は、マイグレーションが収束していないと判定した場合（ステップＳ６、Ｎｏ）、当該マイグレーションの対象である仮想マシン宛のデータの保留を保留部１３に指示する（ステップＳ７）。そして、管理部１２は、当該マイグレーション用データの転送を転送部１１に指示する（ステップＳ８）。他方、管理部１２がマイグレーションは収束していると判定した場合は（ステップＳ６、Ｙｅｓ）、そのまま転送部１１に送って転送させる（ステップＳ８）。
【００２１】
次に、図４を参照し、保留部１３における処理を説明する。まず、保留部１３は、転送部１１からマイグレーション用データ以外のデータを受信する（ステップＳ１１）。そして、保留部１３は、受け取ったデータが、管理部１２から保留指示があった仮想マシン宛のデータであるか否か（保留指示対象データであるか否か）を判定する（ステップＳ１２）。保留部１３は、受け取ったデータが保留指示対象データであると判定した場合（ステップＳ１２、Ｙｅｓ）、当該データを転送せずに保留する（ステップＳ１３）。受け取ったデータが保留指示対象データではないと判定した場合（ステップＳ１２、Ｎｏ）、保留部１３は、当該データを転送部１１に送って転送させる（ステップＳ１４）。
【００２２】
上述してきたように、実施例１に係るデータ中継装置は、マイグレーション用データに基づいてライブマイグレーションが収束しているか否かを判定する。そして、実施例１に係るデータ中継装置は、判定結果に基づいて、ライブマイグレーションに直接関係しないデータの転送を保留する。したがって、ライブマイグレーション中の仮想マシンが過負荷状態に陥った場合でも、実施例１に係るデータ中継装置は、その状態を早期に検出できる。そして、実施例１に係るデータ中継装置は、ライブマイグレーションに直接関係しないデータの転送を保留するので、メモリの差分情報の増加を抑制することができる。したがって、実施例１に係るデータ中継装置は、差分情報の転送を早期に収束させることができる。その結果、実施例１に係るデータ中継装置は、ライブマイグレーションを迅速に完了させることができる。
【００２３】
また、上述してきたように、実施例１によれば、ライブマイグレーションを迅速に完了させることができるため、ライブマイグレーションの失敗を防止することができる。例えば、本実施例では、再度ライブマイグレーションを行ったり、仮想マシンを停止させて移行させる事態を防止できる。特に仮想マシンを停止させる場合は物理サーバへのアクセスを停止させることになり、ユーザへの影響があるため望ましくない。本実施例では、このような事態を防止することができる。
【実施例２】
【００２４】
上記実施例１の管理部は、様々なパラメータに基づいてライブマイグレーションが収束しているか否かの判定を行うことができる。実施例２として、マイグレーション用データの転送レートに基づいてライブマイグレーション収束判定を行う場合を以下に説明する。マイグレーション用データの一例としては、パケットが挙げられる。
【００２５】
図５は、実施例２のデータ処理システムを示す図である。実施例２のデータ処理システムは、実施例１のデータ処理システムと同様、物理サーバ１０−１、物理サーバ１０−２、クライアント５およびこれらとネットワークを介して接続されたデータ中継装置２を備える。実施例２のデータ中継装置２は、転送部２１、処理部２２および記憶部２３を有する。転送部２１には、複数のポートを有するスイッチング回路等が採用できる。
【００２６】
また、処理部２２には、各種の集積回路や電子回路を採用できる。また、処理部２２に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）が挙げられる。また、電子回路としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などが挙げられる。
【００２７】
さらに、記憶部２３には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【００２８】
転送部２１は、受信したデータ中に設定されたアドレス情報および予め定められた設定に従い、受信データを処理部２２または宛先に転送する。
【００２９】
処理部２２は、データ中継装置２におけるライブマイグレーション収束判定、保留判定等を実行する。処理部２２は、管理部２４、保留部２５およびインターフェース検出部２６を有する。記憶部２３は、ライブマイグレーション収束判定、保留判定等に使用するデータを記憶する。記憶部２３は、監視テーブル３０、保留対象リスト３１、保留キュー３２、マイグレーション検知対象リスト３３および保留検知対象リスト３４を有する。
【００３０】
管理部２４は、データ中継装置２がネットワークを介して受信したマイグレーション用データを転送部２１から受け取り、ライブマイグレーション収束判定を行う。管理部２４は、監視テーブル管理部２７と、開始・終了判定部２８と、収束判定部２９と、を備える。
【００３１】
監視テーブル管理部２７は、転送部２１から渡されたデータが、現在ライブマイグレーション中の仮想マシン宛のデータか否かを判定する。また、開始・終了判定部２８および収束判定部２９の判定結果に基づき、監視テーブル３０を更新する。監視テーブル３０については後述する。
【００３２】
開始・終了判定部２８は、監視テーブル管理部２７が現在ライブマイグレーション中の仮想マシン宛のデータではないと判定したデータが、マイグレーション開始データであるか否かを判定する。ここで、マイグレーション開始データとは、ライブマイグレーションを開始することを通知するデータである。また、開始・終了判定部２８は、監視テーブル管理部２７が現在ライブマイグレーション中の仮想マシン宛のデータであると判定したデータが、マイグレーション終了データであるか否かを判定する。ここでマイグレーション終了データとは、ライブマイグレーションが終了することを通知するデータである。
【００３３】
収束判定部２９は、開始・終了判定部２８がマイグレーション終了データではないと判定したデータにつき、当該ライブマイグレーションが収束しているか否かを判定する。そして、収束判定部２９は、収束判定結果に基づき保留部２５に保留指示をする。
【００３４】
［管理部の処理］
図６は、監視テーブル３０の一例を示す図である。図６に示すように、監視テーブル３０には、マイグレーション用データか否かの判定およびライブマイグレーション収束判定のための情報が格納されている。例えば、ライブマイグレーション中の仮想マシン宛のデータを特定するための情報や、データの受信物理インターフェースを特定する入力物理インターフェース番号が格納されている。他に、データを送るＶｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＶＬＡＮ、仮想ローカルエリアネットワーク）を特定するＶＬＡＮ  ＩＤも格納される。ＶＬＡＮ  ＩＤは、受信データのＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ（ＭＡＣ）ヘッダに記載されている。また、送信先Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＩＰ）アドレス、送信元ＩＰアドレス、プロトコル番号も監視テーブル３０に格納される。これらの情報は受信データのＩＰヘッダに記載されている。また、送信先ポート番号、送信元ポート番号も監視テーブル３０に格納される。これらの情報は、受信データのＴＣＰヘッダに記載されている。さらに、同一のライブマイグレーション処理にかかるマイグレーション用データについての統計情報を格納する。図６の例では、例えば、パケット受信サイズ、現在の転送レート、過去の転送レート、前回パケットを受信した時刻などの情報が統計情報として格納される。
【００３５】
図７は、管理部２４における処理手順の一例を示すフローチャートである。図７を参照し、管理部２４各部の処理につき説明する。この処理が実行されるタイミングの一例としては、データを受信した場合などが挙げられる。
【００３６】
まず、転送部２１がマイグレーション用データを検出して監視テーブル管理部２７に渡す。なお、ここで、転送部２１は全てのデータを管理部２４に渡し、管理部２４が処理対象としてマイグレーション用データのみを抽出するように構成してもよい。仮想化ソフトウェアＸｅｎでは、ライブマイグレーション用パケットは仮想マシンの移行元物理サーバから移行先物理サーバのポート番号８００２宛てに出力される。したがって、転送部２１は、ポート番号に基づいてマイグレーション用データであるか否かを判定することができる。
【００３７】
監視テーブル管理部２７は、受け取ったマイグレーション用データについて、当該データがライブマイグレーション中の仮想マシンにあてたものか否かを判定する（ステップＳ２１）。すなわち、当該データが有する送信元・送信先情報が監視テーブル３０内に格納されている情報に該当するか否かを判定する。例えば、受信したマイグレーション用データのＭＡＣヘッダ、ＩＰヘッダ、ＴＣＰヘッダ等を参照して、監視テーブル３０に格納されている情報と一致するか否かを判定する。
【００３８】
当該データがライブマイグレーション中の仮想マシン宛のデータではないと判定された場合（ステップＳ２１、Ｎｏ）、開始・終了判定部２８は、当該データがライブマイグレーションの開始を示すデータ（マイグレーション開始データ）であるか否かを判定する（ステップＳ２２）。開始・終了判定部２８が、当該データはマイグレーション開始データであると判定した場合（ステップＳ２２、Ｙｅｓ）、監視テーブル管理部２７は、当該データに関する情報を監視テーブル３０に追加する（ステップＳ２４）。そして、転送部２１が当該データを宛先に転送し（ステップＳ２５）、処理が終了する。
【００３９】
当該データがライブマイグレーション中の仮想マシン宛のデータであると判定された場合（ステップＳ２１、Ｙｅｓ）、開始・終了判定部２８は、当該データがライブマイグレーションの終了を示すデータであるか否かを判定する（ステップＳ２３）。開始・終了判定部２８が、当該データはライブマイグレーションの終了を示すデータであると判定した場合（ステップＳ２３、Ｙｅｓ）、監視テーブル管理部２７は、監視テーブル３０から当該ライブマイグレーションに関する情報を削除する（ステップＳ２６）。そして、転送部２１が当該データを送信先に転送する（ステップＳ２７）。また、保留部２５の保留キュー３２（後述）に保留されていたデータをライブマイグレーションが終了した仮想マシン宛に転送する（ステップＳ２８）。保留部２５の保留対象リスト３１（後述）中に保持されていた保留データの情報を削除して（ステップＳ２９）、処理を終了する。保留部２５の処理については後述する。
【００４０】
開始・終了判定部２８が、当該データはマイグレーション終了データではないと判定した場合（ステップＳ２３、Ｎｏ）、監視テーブル管理部２７は当該データに基づいて監視テーブル３０内の情報を更新する（ステップＳ３０）。更新された情報に基づき、収束判定部２９が、ライブマイグレーションは収束しているか否かを判定する（ステップＳ３１）。収束判定部２９が、ライブマイグレーションは収束していないと判定した場合（ステップＳ３１、Ｎｏ）、そのライブマイグレーションを実行中の仮想マシンに宛てたデータの転送を保留するため、関連するデータを保留対象リスト３１（後述）に記録する（ステップＳ３２）。収束判定部２９が、ライブマイグレーションが収束していると判定した場合（ステップＳ３１、Ｙｅｓ）、転送部２１は当該データを宛先に転送し（ステップＳ２５）、処理を終了する。
【００４１】
［ライブマイグレーションの開始・終了］
図８および図９に、ライブマイグレーションの開始および終了の際に、物理サーバ１０−１、物理サーバ１０−２、データ中継装置２の間で実行されるデータ送受信シーケンスの一例を示す。ここではＴＣＰスリーウェイハンドシェイクを例に示す。まず、図８を参照し、ライブマイグレーションの開始時のデータ送受信シーケンスを説明する。図８に示すように、物理サーバ１０−１がデータ中継装置２にパケット「ＴＣＰ  ＳＹＮ」を送信する（ステップＳ４０）。このパケット「ＴＣＰ  ＳＹＮ」の宛先ポート番号が、物理サーバ１０−２のポート番号「８００２」であるとする。この場合、データ中継装置２の開始・終了判定部２８は、受け取ったデータがライブマイグレーションの開始を示すもの（すなわち、マイグレーション開始データ）であると判定する。そして、該当する情報を監視テーブル３０に格納した後（図７のＳ２４参照）、このパケットを宛先である物理サーバ１０−２に転送する（図７のＳ２５参照；ステップＳ４１）。物理サーバ１０−２は、返答パケット「ＴＣＰ  ＳＹＮ／ＡＣＫ」を物理サーバ１０−１宛に送信する（ステップＳ４２）。返答パケットを受信したデータ中継装置２は、これを物理サーバ１０−１に転送する（ステップＳ４３）。物理サーバ１０−１はセッション確立を承認するパケット「ＴＣＰ  ＡＣＫ」を送信する（ステップＳ４４）。データ中継装置２がパケット「ＴＣＰ  ＡＣＫ」を物理サーバ１０−２に転送する（ステップＳ４５）。これによって、物理サーバ１０−１と１０−２の間にＴＣＰコネクションが確立する。ＴＣＰコネクションが確立すると、次に実際のデータ授受のための通信が開始する。ステップＳ４６で、物理サーバ１０−１が受信要求「ｒｅｃｅｉｖｅ」を出すと、データ中継装置２がこれを物理サーバ１０−２に転送する（ステップＳ４７）。物理サーバ１０−２は受信可能であれば「ｒｅｃｅｉｖｅ  ｒｅａｄｙ」を返す（ステップＳ４８）。データ中継装置２は、「ｒｅｃｅｉｖｅ  ｒｅａｄｙ」を物理サーバ１０−１に転送する（ステップＳ４９）。
【００４２】
次に、図９を参照し、ライブマイグレーションの終了時のデータ送受信シーケンスを説明する。まず、ライブマイグレーション用のデータを全て送信してしまうと、物理サーバ１０−１は、通信終了を示すパケット「ＴＣＰ  ＦＩＮ」を物理サーバ１０−２宛に送信する（ステップＳ５０）。このパケットの宛先ポート番号が「８００２」であると、データ中継装置２は、これをマイグレーション終了データであると判定する。そして、データ中継装置２は、これを物理サーバ１０−２に転送する（ステップＳ５１）。パケット「ＴＣＰ  ＦＩＮ」を受け取った物理サーバ１０−２は、承認を示すパケット「ＴＣＰ  ＡＣＫ」を返信する（ステップＳ５２）。データ中継装置２はこれを物理サーバ１０−１に転送する（ステップＳ５３）。さらに、物理サーバ１０−２側も所定のデータ受信が完了すると、通信終了を示す「ＴＣＰ  ＦＩＮ」を送信する（ステップＳ５４）。データ中継装置２はこれを物理サーバ１０−１に転送する（ステップＳ５５）。物理サーバ１０−１は、承認を示すパケット「ＴＣＰ  ＡＣＫ」を返送し（ステップＳ５６）、データ中継装置２がこれを転送する（ステップＳ５７）。これによって、物理サーバ１０−１と１０−２との間での双方向通信が終了したこととなる。
【００４３】
［統計情報の更新］
図７のステップＳ３０における監視テーブル３０の統計情報更新処理につきさらに詳しく説明する。図６に示すように監視テーブル３０内には、送信元および送信先の情報のほか、受信データの統計情報が格納されている。この統計情報は、データ中継装置２が受信したマイグレーション用データ（パケット）の統計値を示すものである。開始・終了判定部２８がマイグレーション終了データではないと判定したデータについては、監視テーブル管理部２７が、監視テーブル３０内の統計情報を更新する。図６に示す例の場合、まず「過去の転送レート［１］」から「過去の転送レート［ｎ］」までを一つずつシフトし、ｎ＋１回目となるデータを廃棄する。そして「現在の転送レート」を「過去の転送レート［１］」に移動する。次に、「パケット受信サイズ」に受信したパケットのサイズを加算する。次に現在時刻を取得し、「前回パケット受信時刻」との差分を計算する。時刻差分が一定以上であれば、「パケット受信サイズ」と時刻差分から「現在の転送レート」を計算し格納する。計算が終了すると、「前回パケット受信時刻」を現在時刻に更新し、「パケット受信サイズ」をゼロクリアする。時刻差分が一定未満の場合、現在の転送レートの計算は行わず、「前回パケット受信時刻」および「パケット受信サイズ」はそのままにして、処理を終了する。次にマイグレーション用データを受信した際に、再び時刻差分を計算し、一定以上であれば、上記の処理を行う。なお、ライブマイグレーションの開始を示すパケットと判定した場合に、監視テーブルを更新する際（図７のステップＳ２４）は、統計情報はゼロで初期化される。
【００４４】
なお、転送レートの計算に関しては、上記のように、マイグレーション用パケットを受信するごとに計算するものとしてもよいし、適当な時間を計算周期として設定し、パケットの受信の有無にかかわらず定期的に計算を行うものとしてもよい。
【００４５】
［収束判定］
図７のステップＳ３１におけるライブマイグレーション収束判定につきさらに詳しく説明する。図７のステップＳ３０において監視テーブル３０内の情報が更新されると、当該更新を契機に、収束判定部２９は、ライブマイグレーションの収束の有無を判定する。監視テーブル３０に格納された更新後の統計情報をもとに、収束判定部２９は、「現在の転送レート」および「過去の転送レート［１］」から「過去の転送レート［ｎ］」までを参照する。収束判定部２９は、現在の転送レートの値が、過去ｎ世代の転送レートの値よりも大きい場合、ライブマイグレーションが収束していないと判定する。現在の転送レートの値が過去ｎ世代分の転送レートの値未満である場合、収束判定部２９は、ライブマイグレーションが収束していると判定する。ここで、ｎの値は、データ中継装置２の管理者が適宜定義することができる。
【００４６】
［保留部の処理］
次に、保留部２５について説明する。保留部２５は、ライブマイグレーションが収束していないと判定された仮想マシン宛のデータを保留する。保留部２５は、保留対象リスト３１および保留キュー３２を管理する。
【００４７】
保留対象リスト３１は、ライブマイグレーションが収束していないと判定された仮想マシンを宛先とする保留中のデータを特定する情報および当該データの格納場所を特定する情報を保持する。図１０に、保留対象リスト３１の一例を示す。図１０に示すように、保留対象リスト３１には、リスト内のエントリを一意に特定するためのリストインデックスと、保留対象であるデータを識別するための「出力側物理インターフェース番号」と「ＶＬＡＮ  ＩＤ」とが格納されている。例えば、管理部２４が非収束と判定したライブマイグレーションに係るマイグレーション用データのＭＡＣヘッダに記載されている「ＶＬＡＮ  ＩＤ」と、「出力側物理インターフェース番号」が保留対象リスト３１に格納される。
【００４８】
保留キュー３２は、保留中のデータを保持する。図１１に、保留キュー３２の一例を示す。保留キュー３２は、保留対象リスト３１のエントリと同数作成される。保留キュー３２は、保留対象リスト３１に格納されたリストインデックスと同じ値を保持し、保留対象データをキューとして管理する。
【００４９】
図１２は、保留部２５の処理手順の一例を示すフローチャートである。保留部２５は、データを受け取る（ステップＳ６０）と、当該データに該当する情報が保留対象リスト３１に格納されているか否かを判定する（ステップＳ６１）。例えば、図１０の例では、データを転送する「出力側物理インターフェース番号」と「ＶＬＡＮ  ＩＤ」とが、保留対象リスト３１のいずれかのエントリに格納された「出力側物理インターフェース番号」および「ＶＬＡＮ  ＩＤ」と一致するか否かを判定する。保留部２５は、一致すると判定した場合（ステップＳ６１、Ｙｅｓ）、当該データを、一時的に保留する（ステップＳ６２）。例えば、一致した情報を格納したエントリのリストインデックスに対応する保留キュー３２にキューイングさせる。他方、保留部２５が、一致しないと判定した場合（ステップＳ６１、Ｎｏ）、当該データを宛先に転送する（ステップＳ６３）。
【００５０】
また、保留部２５は、管理部２４からの指示に従って、ライブマイグレーションが収束していないと判定された仮想マシンに関する情報を保留対象リスト３１に追加する（図７のステップＳ３２）。さらに、保留部２５は、管理部２４からの指示に従って、ライブマイグレーションが終了したと判定された仮想マシン宛の保留パケットを保留キュー３２から取り出し、転送部２１に宛先に転送させる（図７のステップＳ２８）。保留パケットの転送後、保留対象リスト３１内の該当するエントリから情報を削除する（図７のステップＳ２９）。実施例２では、保留対象リスト３１内の情報の追加・削除のタイミングはそれぞれ、管理部２４においてライブマイグレーションが収束していないと判定されたタイミングおよび管理部２４においてライブマイグレーションが終了したと判定されたタイミングとする。ただし、これ以外のタイミングで追加削除を行ってもよい。
【００５１】
なお、実施例２では、保留パケットの転送は、ライブマイグレーションが終了したと判定されたタイミングで行うものとしたが、これ以外に、管理部２４がライブマイグレーションは収束したと判定したタイミングで行うことも可能である。例えば、図７のステップＳ３１においてＹｅｓの場合に、その後ステップＳ２６に進んで保留パケットの転送を行ってもよい。この場合、上述したように過去ｎ世代分の転送レートに基づいて収束判定を行うことができる。ただし、収束の判定時には、非収束の判定時とは異なる閾値を採用してもよい。また、ライブマイグレーションが収束したと判定して保留パケットを転送する場合は、転送先は移動後の仮想マシンではなく、移動前の仮想マシンである。この場合は、ライブマイグレーションはまだ完了していないためである。このように構成することで、収束が遅れていたライブマイグレーションが収束し始めた場合に柔軟に対応することができる。
【００５２】
［インターフェース検出部の処理］
次に、インターフェース検出部２６につき説明する。インターフェース検出部２６は、予めデータ中継装置２が備える物理インターフェースのうち、所定の物理インターフェースの情報を保持している。インターフェース検出部２６は、保持する情報に合致する受信データを検出する。つまり、所定の物理インターフェースによって入力されたデータを検出する。インターフェース検出部２６は、検出したデータを管理部２４または保留部２５に送る。このようにして、管理部２４および保留部２５によるライブマイグレーション収束判定および保留判定を行う対象が絞り込まれる。データを入力する物理インターフェースによって判定対象データを絞りこむことにより、物理サーバから送信されたデータについて、またはクライアントから送信されたデータについてのみ判定を行うことができる。なお、物理インターフェースの情報は、データ中継装置２の管理者が入力してもよく、接続される物理サーバおよびクライアントの数、機能等に応じて設定されるものとしてもよい。
【００５３】
インターフェース検出部２６は、ライブマイグレーション収束判定の対象とする物理インターフェースに関する情報を保持するために、マイグレーション検知対象リスト３３を管理する。また、インターフェース検出部２６は、保留判定の対象とする物理インターフェースに関する情報を保持するために、保留検知対象リスト３４を管理する。
【００５４】
図１３に、マイグレーション検知対象リスト３３の一例を示す。図１３に示すように、マイグレーション検知対象リスト３３には、ライブマイグレーション収束判定の対象となる物理インターフェースのインターフェース番号が記憶されている。
【００５５】
図１４に、保留検知対象リスト３４の一例を示す。図１４に示すように、保留検知対象リスト３４には、保留判定の対象となる物理インターフェースのインターフェース番号が記憶されている。
【００５６】
インターフェース検出部２６の処理手順の一例を図１５に示す。ところで、ライブマイグレーション収束判定は、マイグレーション用データを対象として行うが、保留判定はマイグレーション用データ以外のデータを対象として行う。したがって、インターフェース検出部２６では、マイグレーション用データとそれ以外のデータの双方について判定を行うことになる。図１５に示す例では、マイグレーション用データおよびそれ以外のデータの双方をインターフェース検出部２６に入力して、マイグレーション収束処理および保留処理の対象か否かの判定を行うものとする。
【００５７】
まず、インターフェース検出部２６が、受信データを受け取る（ステップＳ７１）。インターフェース検出部２６はまず、受信データがマイグレーション用データであるか否かを判定する（ステップＳ７２）。受信データがマイグレーション用データであると判定した場合（ステップＳ７２、Ｙｅｓ）は以下のように処理が進む。まず、インターフェース検出部２６は、当該データを受信した物理インターフェースがマイグレーション検知対象リスト３３に記憶されているか否かを判定する（ステップＳ７３）。記憶されていると判定すると（ステップＳ７３、Ｙｅｓ）、インターフェース検出部２６は、当該データを管理部２４に送る（ステップＳ７５）。記憶されていないと判定すると（ステップＳ７３、Ｎｏ）、インターフェース検出部２６は、当該データをそのまま転送部２１に送り宛先に転送させる（ステップＳ７６）。
【００５８】
他方、インターフェース検出部２６が、ステップＳ７２において受信したデータはマイグレーション用データではない、と判定した場合（ステップＳ７２、Ｎｏ）は以下のように処理が進む。まず、インターフェース検出部２６は、当該物理インターフェースが保留検知対象リスト３４に記憶されているか否かを判定する（ステップＳ７４）。保留検知対象リスト３４に記憶されていると判定した場合（ステップＳ７４、Ｙｅｓ）、インターフェース検出部２６は、当該データを保留部２５に送る（ステップＳ７７）。他方、保留検知対象リスト３４に記憶されていないと判定した場合（ステップＳ７４、Ｎｏ）、インターフェース検出部２６は、当該データを転送部２１に送り宛先に転送させる（ステップＳ７８）。
【００５９】
図１５には、ライブマイグレーション収束判定を行うか否か、保留判定を行うか否かの判定を並列的に行う処理手順を示した。しかし、図１５中、ステップＳ７３、Ｓ７５、Ｓ７６と、ステップＳ７４、Ｓ７７、Ｓ７８とは独立して行うことができる。例えば、インターフェース検出部２６がマイグレーション検知対象リスト３３のみを備え、図１５のステップＳ７３、Ｓ７５、Ｓ７６のみを実行する構成としてもよい。この場合、マイグレーション用データではないと判定されたデータ（ステップＳ７２、Ｎｏ）は全て保留部２５に送られる。つまり、データ中継装置２が備える全ての物理インターフェースにおいて受信されたデータにつき保留判定が行われる。また、インターフェース検出部２６が保留検知対象リスト３４のみを備え、図１５のステップＳ７４、Ｓ７７、Ｓ７８のみを実行する構成としてもよい。この場合、マイグレーション用データであると判定されたデータ（ステップＳ７２、Ｙｅｓ）は全て管理部２４に送られる。つまり、データ中継装置２が備える全ての物理インターフェースにおいて受信されたデータにつきマイグレーション収束判定が行われる。
【００６０】
また、データ中継装置２が備える物理インターフェースの数が少なく、判定対象データを絞りこむ必要がない場合などは、インターフェース検出部２６は設けなくてもよい。この場合は、マイグレーション検知対象リスト３３および保留検知対象リスト３４も不要である。
【００６１】
上述してきたように、実施例２によれば、ライブマイグレーション用のデータの転送レートに基づいてライブマイグレーションが収束しているか否かを判定する。そして、本実施例では、判定結果に基づいて、ライブマイグレーションに直接関係しないデータの転送を保留する。したがって、本実施例では、ライブマイグレーション中の仮想マシンが過負荷状態に陥った場合でも、その状態を早期に検出できる。そして、本実施例では、ライブマイグレーションに直接関係しないデータ転送を保留するので、メモリの差分情報の増加を抑制することができる。したがって、本実施例では、差分情報の転送を早期に収束させることができる。その結果、本実施例では、ライブマイグレーションを迅速に完了させることができる。
【００６２】
また、上述してきたように、実施例２によれば、インターフェース検出部がライブマイグレーション収束判定の対象とするデータおよび保留判定の対象とするデータを、入力物理インターフェースに基づいて選択する。したがって、本実施例では、判定対象とする必要がないデータが最初から判定を行う機能部に送られることがなく、さらに迅速にライブマイグレーション収束判定を行うことができる。その結果、本実施例では、ライブマイグレーションを迅速に完了させることができる。
【実施例３】
【００６３】
実施例２においては、マイグレーション用データの転送レートに基づいてライブマイグレーションの収束を判定した。代わって実施例３においては、マイグレーション用データの転送開始からの経過時間に基づいてライブマイグレーションの収束を判定する。実施例３のデータ中継装置の構成は、図５に示した実施例２のデータ中継装置の構成と同様であるため、詳細な説明は省略する。
【００６４】
図１６に、実施例３に係る監視テーブル４０の一例を示す。実施例３に係るデータ中継装置が備える監視テーブル４０は、図６に示す実施例２に係る監視テーブル３０とは、統計情報として記憶するデータが異なる。図１６に示すように、監視テーブル４０は、ライブマイグレーション中の仮想マシン宛のパケットを識別するための情報を格納する。例えば、「入力物理インターフェース番号」、「ＶＬＡＮ  ＩＤ」、「送信先ＩＰアドレス」、「送信元ＩＰアドレス」、「プロトコル番号」、「送信先ポート番号」、「送信元ポート番号」である。さらに、ライブマイグレーション収束判定のための「統計情報」が格納される。実施例３に係る監視テーブル４０には、「統計情報」として、「開始判定時刻」が記憶されている。
【００６５】
実施例３の管理部は、ライブマイグレーションが開始すると（受信したデータがマイグレーション開始データであると判定すると）、開始するライブマイグレーションに関する情報を監視テーブル４０に格納させる。例えば、「入力物理インターフェース番号」、「ＶＬＡＮ  ＩＤ」、「送信先ＩＰアドレス」、「送信元ＩＰアドレス」、「プロトコル番号」、「送信先ポート番号」、「送信元ポート番号」などである。このほか、統計情報として現在時刻を監視テーブルに追加させる点が、実施例２の管理部とは異なる。現在時刻は、「開始判定時刻」として監視テーブル４０に追加される。
【００６６】
収束判定部は、開始判定時刻が監視テーブル４０に追加されたことを契機として、ライブマイグレーション収束判定を開始する。収束判定部は、監視テーブル４０に格納された開始判定時刻からの経過時間を検出し、経過時間が所定の時間を越えると、ライブマイグレーションが収束していないと判定する。なお、所定の時間については、データ中継装置の管理者が適宜設定することができる。
【００６７】
収束判定部は、ライブマイグレーションが収束していないと判定した場合、未収束のライブマイグレーションを実行中の仮想マシンに宛てたデータの出力側「物理インターフェース番号」とＭＡＣヘッダに記載されている「ＶＬＡＮ  ＩＤ」を保留対象リストに追加するよう保留部に要求する。
【００６８】
上述してきたように、実施例３では、マイグレーション用データの受信の有無と関わりなく、開始判定時刻からの経過時間に基づいてライブマイグレーション収束判定を行うことができる。したがって、本実施例では、マイグレーション用データの送受信が滞った場合でも、それに影響されることなくライブマイグレーションの非収束を検出することができる。
【００６９】
また、上述してきたように、実施例３によれば、ライブマイグレーションが開始してからの経過時間に基づいて、ライブマイグレーションが収束しているか否かを判定する。そして、本実施例では、判定結果に基づいて、ライブマイグレーションに直接関係しないデータの転送を保留する。したがって、本実施例では、ライブマイグレーション中の仮想マシンが過負荷状態に陥った場合でも、その状態を早期に検出できる。そして、本実施例では、ライブマイグレーションに直接関係しないデータ転送を保留するので、メモリの差分情報の増加を抑制することができる。したがって、本実施例では、差分情報の転送を早期に収束させることができる。その結果、本実施例では、ライブマイグレーションを迅速に完了させることができる。
【実施例４】
【００７０】
実施例３では、ライブマイグレーション開始（マイグレーション開始データの検出）からの経過時間に基づいてライブマイグレーションの収束を判定した。代わって実施例４では、ライブマイグレーションを実行中の仮想マシンに宛てて転送されたライブマイグレーション用データの量（パケット数）に基づいてライブマイグレーションの収束を判定する。実施例４のデータ中継装置の構成は、図５に示した実施例２のデータ中継装置の構成と同様であるため、詳細な説明は省略する。
【００７１】
図１７に、実施例４に係る監視テーブル５０の一例を示す。実施例４に係るデータ中継装置が備える監視テーブル５０は、図１６に示す実施例３に係る監視テーブル４０とは、統計情報として記憶するデータが異なる。図１７に示すように、監視テーブル５０には、ライブマイグレーション中の仮想マシンに宛てたデータを識別するための情報が格納される。例えば、「入力物理インターフェース番号」、「ＶＬＡＮ  ＩＤ」、「送信先ＩＰアドレス」、「送信元ＩＰアドレス」、「プロトコル番号」、「送信先ポート番号」、「送信元ポート番号」が格納される。さらに、ライブマイグレーション収束判定のための「統計情報」が格納されている。実施例４に係る監視テーブル５０には、データ中継装置が転送したマイグレーション用データのデータ量に基づいた判定のための情報が格納される。すなわち、「統計情報」として、「受信パケット数」と「前回計算時刻」が記憶されている。
【００７２】
実施例４に係る管理部は、ライブマイグレーションが開始すると（受信したデータがマイグレーション開始データであると判定すると）、当該ライブマイグレーションに関するデータを監視テーブル５０に記憶する。例えば、「入力物理インターフェース番号」、「ＶＬＡＮ  ＩＤ」、「送信先ＩＰアドレス」、「送信元ＩＰアドレス」、「プロトコル番号」、「送信先ポート番号」、「送信元ポート番号」を記憶する。このほか、統計情報として「受信パケット数」と「前回計算時刻」を監視テーブルに追加させる点が、実施例３の管理部とは異なる。
【００７３】
収束判定部は、マイグレーション開始データであると判定されたデータに係る情報が監視テーブル５０に格納されたことを契機として、ライブマイグレーション収束判定を開始する。
【００７４】
実施例４に係る収束判定部は、監視テーブル５０に記録されている「ＶＬＡＮ  ＩＤ」宛てのマイグレーション用パケットを受信するごとに、監視テーブル５０の「受信パケット数」に１を加算する。
【００７５】
実施例４に係る収束判定部はまた、現在時刻と、監視テーブル５０に格納された「前回計算時刻」に基づき、「前回計算時刻」からの経過時間を計算する。計算した経過時間が所定の期間未満の場合は、「受信パケット数」についての判定は行わず、データを転送する。計算した経過時間が所定の期間以上である場合、「受信パケット数」が所定の閾値を超えているか否かを判定する。「受信パケット数」が所定の閾値を超えている場合は、マイグレーションが収束していると判定し、所定の閾値以下の場合は、マイグレーションが収束していないと判定する。なお、ここで所定の期間および所定の閾値は、データ中継装置の管理者が任意に設定できる。
【００７６】
判定後、監視テーブル５０の「受信パケット数」をゼロにし、「前回計算時刻」を現在時刻に更新する。そして、収束判定部は、ライブマイグレーションが収束していないと判定した場合は、受信したマイグレーション用パケットの「出力側物理インターフェース番号」と、ＭＡＣヘッダに記載されている「ＶＬＡＮ  ＩＤ」とを、保留対象リストに追加するよう保留部に指示する。
【００７７】
上述してきたように、実施例４によれば、ライブマイグレーションが開始してから転送されたマイグレーション用データのデータ量（パケット数）に基づいて、ライブマイグレーションが収束しているか否かを判定する。そして、本実施例では、判定結果に基づいて、ライブマイグレーションに直接関係しないデータの転送を保留する。したがって、本実施例では、ライブマイグレーション中の仮想マシンが過負荷状態に陥った場合でも、その状態を早期に検出できる。そして、本実施例では、ライブマイグレーションに直接関係しないデータ転送を保留するので、メモリの差分情報の増加を抑制することができる。したがって、本実施例では、差分情報の転送を早期に収束させることができる。その結果、本実施例では、ライブマイグレーションを迅速に完了させることができる。
【００７８】
なお、実施例４では、データを受信するごとにライブマイグレーション収束判定を行うとして構成した。このほか変形例として、収束判定部は、データ受信とは無関係に前回データ受信からの経過時間を計測し、所定期間ごとにライブマイグレーション収束判定を行ってもよい。ライブマイグレーション収束判定を行う周期は、管理者が設定してもよく、システムの構成に基づき自動的に設定されるものとしてもよい。
【００７９】
上述した変形例によれば、マイグレーション用データの受信の有無と関わりなく、前回計算時刻からの経過時間に基づいてライブマイグレーション収束判定を行うことができる。したがって、本変形例では、マイグレーション用データの送受信が滞った場合でも、それに影響されることなくライブマイグレーションの非収束を検出することができる。したがって、本変形例では、ライブマイグレーションの非収束を早期に検出することができる。
【００８０】
なお、実施例４においても、実施例２と同様に、ライブマイグレーションが完了する前であっても、ライブマイグレーションが収束すれば、保留データを転送するように構成してもよい。ライブマイグレーション中に保留データ転送を再開する構成とする場合は、非収束の判定と収束の判定とにおいて異なる閾値を採用してもよい。すなわち、第１の閾値と第１の閾値よりも大きい第２の閾値とを設定する。そして、受信パケット数が第１の閾値を下回る場合には、マイグレーションは非収束であると判定する。他方、受信パケット数が第２の閾値を超えている場合には、ライブマイグレーションは収束していると判定する。このように設定することで、より正確にライブマイグレーションの収束・非収束を判定することができる。
【実施例５】
【００８１】
さて、これまで開示のシステムに関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００８２】
［分散および統合］
図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の付加や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図５に示した管理部２４と保留部２５とを一つの装置に構成し、インターフェース検出部２６は分離可能な構成としてもよい。また、記憶部２３についても、監視テーブル３０、保留対象リスト３１、保留キュー３２等を、複数のメモリ装置上に分散して格納することもできる。
【００８３】
［データ中継プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１８を用いて、上記の実施例と同様の機能を有するデータ中継プログラムを実行するコンピュータの一例について説明する。
【００８４】
図１８は、実施例１〜４に係るデータ中継プログラムを実行するコンピュータの一例について説明するための図である。図１８に示すように、コンピュータ１００は、操作部１１０と、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１４０と、ＲＯＭ１５０と、ＲＡＭ１６０と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１７０とを有する。これら１１０〜１７０の各部はバス１８０を介して接続される。
【００８５】
ＨＤＤ１７０には、図１８に示すように、上記の実施例１〜４で示した転送部１１（２１）、管理部１２（２４）、保留部１３（２５）およびインターフェース検出部２６と同様の機能を発揮するデータ中継プログラム１７０ａが予め記憶される。このデータ中継プログラム１７０ａについては、図１、図５に示した各々の各構成要素と同様、適宜統合または分離してもよい。すなわち、ＨＤＤ１７０に格納される各データは、常に全てのデータがＨＤＤ１７０に格納される必要はなく、処理に必要なデータのみがＨＤＤ１７０に格納されればよい。
【００８６】
そして、ＣＰＵ１４０が、データ中継プログラム１７０ａをＨＤＤ１７０から読み出してＲＡＭ１６０に展開する。これによって、図１８に示すように、データ中継プログラム１７０ａは、データ中継プロセス１６０ａとして機能する。このデータ中継プロセス１６０ａは、ＨＤＤ１７０から読み出した各種データを適宜ＲＡＭ１６０上の地震に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、データ中継プロセス１６０ａは、図１および図５に示した転送部１１、２１、管理部１２、２４、保留部１３、２５およびインターフェース検出部２６にて実行される処理、例えば、図２〜４、図７、１２、１３、１６に示す処理を含む。また、ＣＰＵ１６０条で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１６０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されればよい。
【００８７】
なお、上記のデータ中継プログラム１７０ａについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１５０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）ディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【００８８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８９】
（付記１）仮想マシンが動作する複数のサーバ装置と、
前記サーバ装置にデータを転送するデータ中継装置と、
を有し、
前記データ中継装置は、
前記サーバ装置に転送されるデータのうち、ライブマイグレーション用のデータに基づいて、前記仮想マシンにおけるライブマイグレーションの収束の有無を検出する検出部と、
前記サーバ装置に転送されるデータのうち、前記ライブマイグレーションの非収束が検出された仮想マシン宛のデータ転送を保留する保留部と、
を有することを特徴とするデータ処理システム。
【００９０】
（付記２）前記検出部は、前記ライブマイグレーション用のデータの転送レートが所定のレート以下であるかを検出することを特徴とする付記１に記載のデータ処理システム。
【００９１】
（付記３）前記検出部は、前記ライブマイグレーション用のデータの転送開始からの経過時間が所定の時間以上であるかを検出することを特徴とする付記１に記載のデータ処理システム。
【００９２】
（付記４）前記検出部は、前記ライブマイグレーション用のデータの転送開始からの転送データ量が所定のデータ量以上であるかを検出することを特徴とする付記１に記載のデータ処理システム。
【００９３】
（付記５）予め定められた物理インターフェースにおいて受信されたデータを検出するインターフェース検出部をさらに有し、
前記検出部は、前記予め定められた物理インターフェースにおいて受信され前記インターフェース検出部により検出されたライブマイグレーション用のデータに基づいて、前記仮想マシンにおけるライブマイグレーションの収束の有無を検出することを特徴とする付記１に記載のデータ処理システム。
【００９４】
（付記６）予め定められた物理インターフェースにおいて受信されたデータを検出するインターフェース検出部をさらに有し、
前記保留部は、前記予め定められた物理インターフェースにおいて受信され前記インターフェース検出部により検出されたデータの転送を保留することを特徴とする付記１に記載のデータ処理システム。
【００９５】
（付記７）前記保留部は、前記ライブマイグレーション用のデータの転送が完了した場合に、保留していた仮想マシン宛のデータ転送を実行することを特徴とする付記１に記載のデータ処理システム。
【００９６】
（付記８）前記保留部は、前記検出部がライブマイグレーションの収束を検出した場合に、保留していた仮想マシン宛のデータ転送を実行することを特徴とする付記１に記載のデータ処理システム。
【００９７】
（付記９）仮想マシンが動作するサーバ装置に転送されるデータのうち、ライブマイグレーション用のデータに基づいて、前記仮想マシンにおけるライブマイグレーションの非収束を検出する検出部と、
前記サーバ装置に転送されるデータのうち、前記ライブマイグレーションの非収束が検出された仮想マシン宛のデータ転送を保留する保留部と、
を有することを特徴とするデータ中継装置。
【００９８】
（付記１０）コンピュータが、
仮想マシンが動作するサーバ装置に転送されるデータのうち、ライブマイグレーション用のデータに基づいて、前記仮想マシンにおけるライブマイグレーションの非収束を検出し、
前記サーバ装置に転送されるデータのうち、前記ライブマイグレーションの非収束が検出された仮想マシン宛のデータ転送を保留する
各処理を実行することを特徴とするライブマイグレーション方法。
【符号の説明】
【００９９】
１、２  データ中継装置
５  クライアント
６  仮想マシン
１０−１、１０−２  物理サーバ
１１、２１  転送部
１２、２４  管理部
１３、２５  保留部
２２  処理部
２３  記憶部
２６  インターフェース検出部
２７  監視テーブル管理部
２８  開始・終了判定部
２９  収束判定部
３０、４０、５０  監視テーブル
３１  保留対象リスト
３２  保留キュー
３３  マイグレーション検知対象リスト
３４  保留検知対象リスト
【図１】
0005838661.tif 000002
【図２】
0005838661.tif 000003
【図３】
0005838661.tif 000004
【図４】
0005838661.tif 000005
【図５】
0005838661.tif 000006
【図６】
0005838661.tif 000007
【図７】
0005838661.tif 000008
【図８】
0005838661.tif 000009
【図９】
0005838661.tif 000010
【図１０】
0005838661.tif 000011
【図１１】
0005838661.tif 000012
【図１２】
0005838661.tif 000013
【図１３】
0005838661.tif 000014
【図１４】
0005838661.tif 000015
【図１５】
0005838661.tif 000016
【図１６】
0005838661.tif 000017
【図１７】
0005838661.tif 000018
【図１８】
0005838661.tif 000019