(57)【要約】【課題】パケットロスを削減しつつ仮想マシンの移行にかかる時間を短縮すること。【解決手段】サーバ１０は、複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する。そして、サーバ１０は、移行処理を開始していない仮想マシン宛てのパケットを受信した際に、監視されたパケット数が所定の閾値を超えている場合には、仮想マシン宛てのパケットをパケットバッファに格納し、監視されたパケット数が第一の閾値以下である場合には、仮想マシンのパケットキューにパケットを入力する。また、サーバ１０は、監視されたパケット数が所定の閾値以下となり、かつ、パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを仮想マシンのパケットキューに入力する。【選択図】図１
2018028779.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン宛てのパケットを記憶するパケットバッファと、
移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御部と、
前記移行制御部によって決定された順番を基に、仮想マシンの移行を実行する移行部と、
前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視部と、
前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視部によって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットを前記パケットバッファに格納し、前記監視部によって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信部と、
前記監視部によって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力部と
を有することを特徴とする移行システム。
【請求項２】
前記移行処理を開始していない仮想マシンがリソースを使用する優先度を前記移行を開始している仮想マシンがリソースを使用する優先度よりも低くするように制御し、前記移行処理を開始していない仮想マシンの移行処理が開始となった場合には、該仮想マシンの前記優先度を高くするように制御するリソース制御部をさらに有することを特徴とする請求項１に記載の移行システム。
【請求項３】
前記監視部は、前記移行処理を開始していない仮想マシンの移行処理が開始となった際に、該仮想マシンのパケットキューに記憶されたパケット数が第二の閾値を下回った場合には、該仮想マシンのパケットキューに記憶されたパケット数を監視する処理を停止することを特徴とする請求項１に記載の移行システム。
【請求項４】
前記移行部は、前記移行処理を開始する仮想マシンのうち、該仮想マシンのパケットキューに記憶されたパケット数が第三の閾値を下回った場合に、移行処理を開始することを特徴とする請求項１に記載の移行システム。
【請求項５】
前記リソース制御部は、前記移行処理を開始していない仮想マシンのうち、該仮想マシンの前記パケットバッファおよび前記パケットキューに記憶されたパケット数の合計が第四の閾値を超えた場合に、前記優先度を高くし、該仮想マシンの前記パケットキューに記憶されたパケット数が第五の閾値を下回った場合に、前記優先度を低くするように戻すことを特徴とする請求項２に記載の移行システム。
【請求項６】
移行システムによって実行される移行方法であって、
前記移行システムは、仮想マシン宛てのパケットを記憶するパケットバッファを有し、
移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御工程と、
前記移行制御工程によって決定された順番を基に、仮想マシンの移行を実行する移行工程と、
前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視工程と、
前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視工程によって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットを前記パケットバッファに格納し、前記監視工程によって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信工程と、
前記監視工程によって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力工程と
を含んだことを特徴とする移行方法。
【請求項７】
移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御ステップと、
前記移行制御ステップによって決定された順番を基に、仮想マシンの移行を実行する移行ステップと、
前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視ステップと、
前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視ステップによって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットをパケットバッファに格納し、前記監視ステップによって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信ステップと、
前記監視ステップによって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力ステップと
をコンピュータに実行させるための移行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移行システム、移行方法および移行プログラムに関する。
【背景技術】
【０００２】
従来、物理サーバを用いることでしか実現できなかったアプリケーションの稼働をソフトウェアプラットフォーム上で行う仮想マシン技術が発達している。仮想マシンはソフトウェアであり、仮想マシンを稼働させる環境が存在する物理プラットフォーム上で稼働する。そして、稼働環境を持つサーバが複数存在する場合、仮想マシン内のソフトを稼働させた状態で、仮想マシンを稼働するサーバを別のサーバに変更することができる。この際、仮想マシン内で稼働するアプリケーションを止めることなく、それまで仮想マシンを稼働させていたサーバからバックアップ用のサーバに仮想マシンを移動させることができる。この動作はライブマイグレーションと呼ばれ、サーバの故障時やメンテナンス時にサービスを継続させる手段として用いられる。
【０００３】
また、サーバ内には複数の仮想マシンを収容することができる。これにより、１台のサーバを用いることで複数台のサーバと同等の処理を行うことが可能になる。このため、サーバのメンテナンスやデータセンタが災害に見舞われたとき、複数台の仮想マシンが一斉にバックアップ用のサーバやデータセンタに移動するという現象が発生する。複数台の仮想マシンをマイグレーションする場合、１つずつ逐次的にマイグレーションする場合と複数台並列して同時にマイグレーションする場合が考えられる。このとき、マイグレーションの対象となる仮想マシンを複数台並列して同時にマイグレーションする場合のほうが、全仮想マシンのマイグレーションが完了するまでの時間を短縮できる（例えば、非特許文献１参照）。
【０００４】
このようなマイグレーションを行う場合、もともと仮想マシンを稼働させていたサーバ、すなわちマイグレーションの移行元のサーバのＣＰＵ（Central  Processing  Unit）ならびにメモリリソースをマイグレーション用に割り当てた時の割合に応じて、全仮想マシンのマイグレーションが完了するまでの時間が変化する。つまり、割り当てたリソース割合が多くなるほど、マイグレーションに要する時間は短くなる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】K.  Ye,  et  al,  "Live  Migration  of  Multiple  Virtual  Machines  with  Resource  Reservation  in  Cloud  Computing  Environments",  IEEE  4th  International  Conference  on  Cloud  Computing,  pp.267-274,  2011
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、マイグレーションを行う際に、マイグレーション用のリソースを確保できない場合には、パケットロスが発生し、仮想マシンの移行にかかる時間を短縮することができなかった。
【０００７】
上記の仮想マシンを複数台並列して同時にマイグレーションする技術では、１つのサーバで稼働する仮想マシンの数が多くなる場合、全仮想マシンを同時にマイグレーションできるほど、マイグレーション用にリソースを確保できない場合が存在する。また、例えば、１つのサーバで稼働する仮想マシンの数が多くなる場合には、サーバのリソースを充実させるためには高性能なＣＰＵや大容量のメモリが必要となり、装置コスト、ならびに装置の消費電力が増加するという課題が生じる。
【０００８】
なお、マイグレーションのために、常時リソースに余裕を持たせる場合には、本来稼働できるはずの仮想マシンの数を減らすことになる。これにより、仮想マシンを利用するメリットである、稼働物理サーバ数を減らし、リソースを有効活用することによる、電力コストや装置コストの削減を実現できなくなる。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明の移行システムは、仮想マシン宛てのパケットを記憶するパケットバッファと、移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御部と、前記移行制御部によって決定された順番を基に、仮想マシンの移行を実行する移行部と、前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視部と、前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視部によって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットを前記パケットバッファに格納し、前記監視部によって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信部と、前記監視部によって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力部とを有することを特徴とする。
【００１０】
また、本発明の移行方法は、移行システムによって実行される移行方法であって、前記移行システムは、仮想マシン宛てのパケットを記憶するパケットバッファを有し、移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御工程と、前記移行制御工程によって決定された順番を基に、仮想マシンの移行を実行する移行工程と、前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視工程と、前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視工程によって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットを前記パケットバッファに格納し、前記監視工程によって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信工程と、前記監視工程によって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力工程とを含んだことを特徴とする。
【００１１】
また、本発明の移行プログラムは、移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する移行制御ステップと、前記移行制御ステップによって決定された順番を基に、仮想マシンの移行を実行する移行ステップと、前記複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する監視ステップと、前記移行処理を開始していない仮想マシン宛てのパケットを受信した際に、前記監視ステップによって監視されたパケット数が第一の閾値を超えている場合には、前記仮想マシン宛てのパケットをパケットバッファに格納し、前記監視ステップによって監視されたパケット数が第一の閾値以下である場合には、前記仮想マシンの前記パケットキューにパケットを入力する受信ステップと、前記監視ステップによって監視されたパケット数が第一の閾値以下となり、かつ、前記パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを前記仮想マシンの前記パケットキューに入力する入力ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、パケットロスを削減しつつ仮想マシンの移行にかかる時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第一の実施の形態に係る移行システムの概要を示す構成図である。
【図２】図２は、パケット入力制御部の処理の概要を示す図である。
【図３】図３は、仮想マシンの通常稼働時について説明する図である。
【図４】図４は、仮想マシンの移行処理を開始する際の処理例を説明する図である。
【図５】図５は、パケット入力処理の動作例を説明する図である。
【図６】図６は、仮想マシンの移行処理が進み、ある仮想マシンの移行が終了した際の処理例を説明する図である。
【図７】図７は、仮想マシンが処理するパケット量が一定量を下回ったときに移行処理を開始する動作例を説明する図である。
【図８】図８は、低優先の状態が続く仮想マシンの動作例を説明する図である。
【図９】図９は、第一の実施の形態に係る移行管理装置における移行制御処理の流れを示すフローチャートである。
【図１０】図１０は、第一の実施の形態に係るサーバにおける移行処理の流れを示すフローチャートである。
【図１１】図１１は、第一の実施の形態に係るサーバにおけるパケット入力処理の流れを示すフローチャートである。
【図１２】図１２は、移行プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願に係る移行システム、移行方法および移行プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係る移行システム、移行方法および移行プログラムが限定されるものではない。
【００１５】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係る移行システムの構成、移行システムの処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
【００１６】
［移行システムの構成］
まず、図１を用いて、移行システムの構成を説明する。図１は、第一の実施の形態に係る移行システムの概要を示す構成図である。図１に示すように、移行システムでは、複数のＶＭ（Virtual  Machine）１１ａ〜１１ｃを動作させているサーバ１０と、サーバ１０上で動作する各ＶＭ１１ａ〜１１ｃの移行（マイグレーション）を管理する移行管理装置２０とを有し、サーバ１０と移行管理装置２０とは互いに通信可能に接続されている。なお、ＶＭについては、適宜「仮想マシン」とも記載する。
【００１７】
サーバ１０は、データ処理を行うため、ＣＰＵ、メモリ、ネットワークリソースを有する処理装置である。サーバ１０上で動作する各ＶＭ１１ａ〜１１ｃは、サーバ１０が有するコンピュータリソースを利用して動作する。サーバ１０内には、仮想マシン宛てのパケットを管理するパケット入力制御部１２、仮想マシンの起動、停止、移行などの仮想マシンの管理に関する処理を行う処理機能管理部１３、ならびに複数のＶＭ１１ａ〜１１ｃが存在する。また、パケット入力制御部１２および処理機能管理部１３は、仮想マシンの生成など仮想マシンに関する各種制御を実行するハイパーバイザ１４等のソフトウェアにより実現される。なお、以下では、パケット入力制御部１２と処理機能管理部１３をあわせてハイパーバイザ１４と記載する。
【００１８】
パケット入力制御部１２は、監視部１２ａ、受信部１２ｂおよび入力部１２ｃを有する。また、図２を用いて後述するが、パケット入力制御部１２は、仮想マシン宛てのパケットを記憶するパケットバッファを有する。
【００１９】
監視部１２ａは、複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する。また、監視部１２ａは、移行処理を開始していない仮想マシンの移行処理が開始となった際に、該仮想マシンのパケットキューに記憶されたパケット数が後述するチェック終了パケット数を下回った場合には、該仮想マシンのパケットキューに記憶されたパケット数を監視する処理を停止する。
【００２０】
受信部１２ｂは、移行処理を開始していない仮想マシン宛てのパケットを受信した際に、監視部１２ａによって監視されたパケット数が上限パケット数を超えている場合には、仮想マシン宛てのパケットをパケットバッファに格納し、監視部１２ａによって監視されたパケット数が上限パケット数以下である場合には、仮想マシンのパケットキューにパケットを入力する。
【００２１】
入力部１２ｃは、監視部１２ａによって監視されたパケット数が上限パケット数以下となり、かつ、パケットバッファにパケットが記憶されている場合には、該パケットバッファに記憶されたパケットを仮想マシンのパケットキューに入力する。
【００２２】
また、処理機能管理部１３は、移行部１３ａおよびリソース制御部１３ｂを有する。移行部１３ａは、移行管理装置２０によって決定された順番を基に、仮想マシンの移行を実行する。リソース制御部１３ｂは、移行処理を開始していない仮想マシンがリソースを使用する優先度を移行を開始している仮想マシンがリソースを使用する優先度よりも低くするように制御し、移行処理を開始していない仮想マシンの移行処理が開始となった場合には、該仮想マシンの優先度を高くするように制御する。
【００２３】
また、移行管理装置２０は、仮想マシンの移行に関する処理、たとえば、仮想マシンの移行順や移行対象の指定を指示する等の仮想マシンの移行に関する処理を行う。移行管理装置２０は、サーバ１０とは別の装置であり、ネットワークなどのデータ通信経路を介してお互いに情報を交換する。なお、移行管理装置２０の移行管理機能をサーバ１０が有していてもよく、サーバ移行管理機能とハイパーバイザ１４とが、内部バス等を介してお互いに情報を交換していてもよい。
【００２４】
移行管理装置２０は、移行制御部２１を有する。移行制御部２１は、移行元のサーバ上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する。
【００２５】
例えば、移行制御部２１は、移行対象となる仮想マシンの情報を外部から受け付けると、この情報をもとに、移行対象の仮想マシンの移行順と、すぐに移行を開始する仮想マシンと、後程移行を行う仮想マシンとを決定し、結果をハイパーバイザ１４に通知する。また、移行制御部２１は、ハイパーバイザ１４から仮想マシンの移行に利用できるリソース量に関する情報を取得することにより、サーバ１０の利用可能リソース量を考慮して、仮想マシンの移行順を計算する。移行制御部２１は、移行対象となる仮想マシンの情報をハイパーバイザ１４に通知する際、すぐに移行を開始する仮想マシンのリソース優先度を高く、そのほかの仮想マシンのリソース優先度を低くすることもあわせて通知する。
【００２６】
この際、移行制御部２１は、後程移行処理を行うことになる、低優先状態の仮想マシンを特定するため、移行に関する仮想マシンの状態を管理する。なお、優先度は仮想マシンの処理能力に応じて決定することも可能である。これを実現するために、仮想マシンの処理能力を測定して管理する機能や、それに基づきリソース優先度を決定する機能が存在する場合が考えられるが、本実施形態ではこの場合の説明は省略し、優先度が２つ存在する場合について説明する。
【００２７】
仮想マシンの移行処理はハイパーバイザ１４により行われる。ハイパーバイザ１４は、移行管理装置２０から移行対象の仮想マシンに関する情報を受信すると、対象となる仮想マシンを移行する。同時にハイパーバイザ１４は、仮想マシンごとのリソース優先度をもとに、仮想マシンごとのリソースの使用可能量を調整する。移行処理が完了した仮想マシンが存在すれば、仮想マシンを停止し、仮想マシンに割り当てていたリソースを解放する。同時に移行完了を示す情報を移行管理機能に通知する。
【００２８】
移行管理装置２０の移行制御部２１は、通知を受けた後、次に移行を開始する仮想マシンを決定し、その結果をハイパーバイザ１４に通知する。なお、仮想マシンの移行順の決定手段や優先度の決定手段については本実施形態では限定しない。これらの手段としては、アルゴリズムやＡＩ（Artificial  Intelligence）を用いた方法やオペレータによる静的設定などの手段が考えられる。そのうちのいずれかの方法で移行順や優先度を決定する。外部から仮想マシン宛てにパケットが到着したとき、最初にハイパーバイザ１４が受信する。そのあと、宛先の仮想マシンへとパケットを入力する。入力方法は前述のパケット入力機能の動作に従うものとする。
【００２９】
次に、図２を用いて、パケット入力制御部１２の処理の概要について説明する。図２は、パケット入力制御部の処理の概要を示す図である。図１２に示すように、パケット入力制御部１２にはパケットバッファ１２ｄが存在する。パケットバッファ１２ｄは、ＶＭ１１ａ〜ＶＭ１１ｃ宛てのパケットを記憶する。
【００３０】
パケットを処理するＶＭ１１ａ〜ＶＭ１１ｃ宛てのパケットは一度パケットバッファ１２ｄ内のパケットキュー１２０ａ〜１２０ｃに記録される。パケットバッファ１２ｄには、ＶＭ１１ａ〜ＶＭ１１ｃごとに用意したパケットキュー１２０ａ〜１２０ｃが存在する。到着したパケットは、宛先となるＶＭ１１ａ〜ＶＭ１１ｃのパケットキュー１１０ａ〜１１０ｃへと入れられる。
【００３１】
ＶＭ１１ａ〜ＶＭ１１ｃはそれぞれ独自のパケットキュー１１０ａ〜１１０ｃを有する。パケットバッファ１２ｄに到着したパケットは、受信部１２ｂにより、仮想マシンに割り当てられたパケットキューへと入力される。入力方法としては、仮想マシンが扱うネットワークインタフェース用のメモリ領域にパケットを書き込み、仮想マシンに割り込み信号などで通知する方法などが存在する。
【００３２】
パケット入力制御部１２の監視部１２ａは、ＶＭ１１ａ〜ＶＭ１１ｃ内のパケットキュー１１０ａ〜１１０ｃ内のパケット数と、パケットバッファ１２ｄ内のパケットキュー１２０ａ〜１２０ｃ内のパケット数を監視する。観測されたパケット数は受信部１２ｂおよび入力部１２ｃに通知される。
【００３３】
パケット入力制御部１２の受信部１２ｂおよび入力部１２ｃは、パケット数に関する閾値を用いたパケット入力処理を行う。閾値は予め指定された方法で設定されるものとする。受信部１２ｂおよび入力部１２ｃは閾値の管理テーブルを保持する。図２には、閾値を２つ記載している様子を示す。それぞれ、上限パケット数とチェック終了パケット数と記載する。閾値の使用方法については後に詳述する。
【００３４】
次に、図３を用いて、仮想マシンの通常稼働時について説明する。図３は、仮想マシンの通常稼働時について説明する図である。図３の例では、４台の仮想マシン（ＶＭ１〜ＶＭ４）が稼働している様子を記載している。全ての仮想マシンのリソース優先度は同じ大きさであるものとする。これにより、仮想マシン内で稼働するソフトウェアはＣＰＵやネットワークリソースを同等に利用することができる。このときの優先度を、以降では「高優先」と呼ぶ。これに対し、利用できるリソース量がこの優先度より少ない時の優先度を「低優先」と呼ぶ。
【００３５】
次に、図４を用いて、仮想マシンの移行処理を開始する際の処理例を説明する。図４は、仮想マシンの移行処理を開始する際の処理例を説明する図である。図４に示すように、移行管理装置２０は、ハイパーバイザ１４に対し、ＶＭ１、２の移行を開始しＶＭ３、４を移行前待機状態にするよう指示を出す。ハイパーバイザ１４は指示を受けると、仮想マシンＶＭ１、２の移行処理を開始する。そして、待機状態に指定されたＶＭ３、４のリソース優先度を低下させ、ＣＰＵリソースの使用可能量を制限する。移行を開始する仮想マシンであるＶＭ１、２の移行処理に多くのリソースを割り当て、移行処理時間を短縮する。
【００３６】
ハイパーバイザ１４のパケット入力制御部１２は、仮想マシンごとにパケット数の閾値に関するテーブルを持つ。ハイパーバイザ１４は、優先度の低い仮想マシンＶＭ３、４に対するエントリをテーブルに作成し、閾値を入力する。ここで、閾値は２つ存在し、１つめの閾値は上限パケット数であり、仮想マシンへのパケット入力時に使用される。また、２つめの閾値は「チェック終了パケット数」である。パケット入力機能がパケット数の監視をやめる指示を受信した後、監視処理をストップするときの仮想マシン内のパケット数を表す。この閾値を用いた監視部１２ａの停止動作は後に詳述する。また、ハイパーバイザ１４は、指示を受けると、移行待機状態にある仮想マシンであるＶＭ３、４内のパケットキュー１１０ｃ、１１０ｄに存在するパケット数の監視を開始する。
【００３７】
次に、図５を用いて、パケット入力処理の動作例を説明する。図５は、パケット入力処理の動作例を説明する図である。ハイパーバイザ１４は、移行待機状態にある仮想マシンであるＶＭ３、４内のパケットキュー１１０ｃ、１１０ｄに存在するパケット数の監視を行う。なお、図５の例では、ＶＭ３のみ記載し、ＶＭ３の例を用いて説明する。
【００３８】
そして、仮想マシン（ＶＭ３）のパケットキュー１１０ｃ内のパケット数が、上限パケット数を上回ると、新たに該仮想マシン宛てのパケットが到着したとしても、仮想マシンに到着したことを通知しない。このとき、パケットはハイパーバイザ１４のパケットバッファ１２ｄ内のパケットキュー１２０ｃに保管される。
【００３９】
その後、仮想マシン内でパケット処理が進み、仮想マシンのパケットキュー１１０ｃ内のパケット数が上限パケット数を下回るとき、パケットキュー１２０ｃにおいて保管していたパケットを宛先仮想マシンのパケットキューに入力する。
【００４０】
次に、図６を用いて、仮想マシンの移行が進み、ある仮想マシンの移行が終了したときの動作について説明する。図６は、仮想マシンの移行処理が進み、ある仮想マシンの移行が終了した際の処理例を説明する図である。
【００４１】
図６では、ＶＭ１の移行が終了したときの状況を記載している。ＶＭ１の移行が終了すると、ハイパーバイザ１４は移行管理機能に対し、ＶＭ１の移行が終了したことを通知する。通知をうけて、移行管理機能はサーバ内のリソース利用状況を取得する。それをもとに、次に移行する仮想マシンを選択する。利用できる選択方法として、アルゴリズムを用いる方法やオペレータによる静的設定に従う方法などが存在する。そのような方法を使用した結果、次の移行仮想マシンとして、ＶＭ３を選んだ状況をここでは説明する。
【００４２】
移行管理装置２０は、次に移行する仮想マシンとして、ＶＭ３を選択したことをハイパーバイザ１４に通知する。ハイパーバイザ１４は、それを受けて、ＶＭ３の優先度をＶＭ２と同じ高さに変更する。同時に、ＶＭ３におけるパケット数の監視処理の停止をパケット入力制御部１２に指示する。優先度を高くすることにより、ＶＭ３宛てのパケット処理速度は速くなり、パケットキュー１１０ｃ内のパケット数は少なくなる。パケットキュー１１０ｃ内のパケット数が前述のチェック終了パケット数を下回るまで減少したとき、パケットキュー１１０ｃ内のパケット数の監視処理を停止し、以降、パケットバッファ１２ｄに到着したＶＭ３宛てのパケットをＶＭ３のパケットキュー１１０ｃに逐次入力する。
【００４３】
また、ハイパーバイザ１４は、次に移行する仮想マシンとしてＶＭ３を選ぶことを示す通知を受けた後、ＶＭ３の移行処理を開始する。移行開始タイミングについては、通知が来た瞬間から開始する方法や後述するような仕組みを使用してタイミングを見つける方法が存在する。この一連の動作を移行対象となった仮想マシンＶＭ１〜ＶＭ４に対する移行処理がすべて完了するまで繰り返す。
【００４４】
ここで、ＶＭ３が移行するタイミングに関する課題について説明する。ある仮想マシンの移行が終了し、次に移行する仮想マシンを通知される段階で、選択された仮想マシン宛てのパケットが実パケットキューにたまっているとき、これらをすべて処理したうえで移行を完了する必要がある。
【００４５】
これは、移行中の仮想マシンのデータを移行元と移行先とで同じにする必要があるためである。パケットの処理を行う際、メモリ内の情報を更新する処理が存在すると、それまでに送ったデータと異なるデータが移行元のサーバに存在することになる。この状態を放置すると、移行完了後に移行先のサーバで稼働する仮想マシンで処理を行うと、移行元で更新された内容が反映されず、誤動作を生じる。これまで説明した仮想マシン移行方法を使用すると、未処理パケットを処理しながら移行処理を行うことになる。
【００４６】
それまでのリソース優先度が低かったため、仮想マシン内、ならびにパケットバッファ内におけるパケットキューに多くのパケットが存在する。これらのパケット処理に伴い、仮想マシン内のメモリ情報は多く更新される。その結果、送信すべき更新データ量が多くなり、同時に移行する仮想マシンの移行用帯域を圧迫するという課題が生じる。この問題を防止するため、処理するパケット量が一定量を下回ったときに移行処理を開始する方法を利用する。具体的には、移行部１３ａは、移行処理を開始する仮想マシンのうち、該仮想マシンのパケットキューに記憶されたパケット数が所定の閾値を下回った場合に、移行処理を開始する。図７を用いて具体的な動作を説明する。図７は、仮想マシンが処理するパケット量が一定量を下回ったときに移行処理を開始する動作例を説明する図である。
【００４７】
図７の例では、ハイパーバイザ１４が、次に移行を行う仮想マシンであるＶＭ３のパケットキュー１１０ｃ内のパケット数を監視する。そして、その値が予め与えられた閾値を下回った場合に移行処理を開始する。この閾値を図７中では「移行開始閾値」と記載する。ある仮想マシンの移行が終了した後、移行を開始する仮想マシンとしてＶＭ３が指示されると、ハイパーバイザ１４は、ＶＭ３の優先度を高くする。リソース優先度が高くなったことにより、パケットの処理速度はそれまでと比べて向上する。移行を開始するための閾値はあらかじめオペレータにより設定されているとする。パケットの処理が進み、ＶＭ３のパケットキュー１１０ｃ内のパケット数が移行開始閾値を下回るとハイパーバイザ１４は仮想マシンＶＭ３の移行処理を開始する。
【００４８】
この方法を用いることにより、パケットキュー１１０ｃ内に存在するパケットを処理することによるデータ更新内容を反映させたデータを移行先に送信することになる。よって、送信すべき更新データを削減することが可能になる。以上の方法を用いて、仮想マシンの移行を行うことにより、移行処理に多くのリソースを割り当てることができ、移行処理時間を短縮することが可能になる。
【００４９】
ここで、仮想マシンのリソース優先度を低下させたとき、さらに次のような問題が生じる。仮想マシンの優先度を変更する方法を用いた場合、低優先度の仮想マシンのデータ処理速度が低下する。このとき、低優先度の仮想マシンの処理時間が遅くなる。結果、ＳＬＡ（Service  Level  Agreement）で決められたレスポンスタイムを守れなくなる場合が生じる、という問題が生じる。そこで、リソース制御部１３ｂは、移行処理を開始していない仮想マシンのうち、該仮想マシンのパケットバッファおよびパケットキューに記憶されたパケット数の合計が所定の閾値を超えた場合に、優先度を高くし、該仮想マシンのパケットキューに記憶されたパケット数が所定の閾値を下回った場合に優先度を低くするように戻す。図８を用いて、具体的な動作について説明する。図８では、低優先の状態が続く仮想マシンであるＶＭ４の動作を記載する。図８は、低優先の状態が続く仮想マシンの動作例を説明する図である。
【００５０】
ハイパーバイザ１４は、仮想マシンの実パケットキュー内、もしくは仮想パケットキュー内のパケット数が予め設定された閾値を超えると、仮想マシンのリソース優先度を高くする。そして、両キュー内のパケット数が別途与えられた閾値を下回ると優先度を低くする。図８において、前者の閾値を「高優先変更時の閾値パケット数」、後者を「低優先変更時の閾値パケット数」と記載する。
【００５１】
図８の例では、前者の閾値を仮想マシン内のパケットキュー１１０ｄとパケットバッファ１２ｄ内のパケットキュー１２０ｄ内に存在するパケット数の合計が「７」のとき、後者の閾値をパケットキュー１１０ｄ内のパケット数が「２」のときの例を示す。
【００５２】
優先度を低くしたため仮想マシンＶＭ４宛てのパケットの処理速度が遅くなると、ＶＭ４用のパケットキュー１１０ｄとパケットバッファ１２ｄ内のパケットキュー１２０ｄのパケット数が増加する。そして、パケットの個数が７個を超えると、ハイパーバイザ１４は、ＶＭ４のリソース優先度を高くする。リソース優先度が高くなるため、ＶＭ４のパケット処理速度はそれまでより早くなる。そして、パケットを順調に処理し、仮想パケットキュー内のパケット数が減少した結果、パケットキュー１１０ｄ内のパケット数が２になったところで、リソース優先度を低優先に戻す。
【００５３】
この方法を用いることで、パケット処理を完了するまでの時間を制御し、ＳＬＡで決められたレスポンスタイムを守ることが可能になる。本実施形態では、閾値となるパケット数を固定的に設定するものとした。しかし、例によっては、仮想マシンと顧客情報を管理するデータベースを用意し、顧客と結ぶＳＬＡに関する情報から閾値を計算する機能を利用して閾値を決定する方法も考えられる。また、リソース量とマイグレーション時間の相関関係を考慮して閾値を計算する機能を用いて決定する方法も存在する。さらには、パケット処理速度を観測する機能を用意し、リソース優先度とパケット処理速度の関係を測定したうえで閾値を算出する機能を用いて決定する方法も存在する。このように、閾値の決定手段は様々な方法が存在する。
【００５４】
［移行システムの処理の一例］
次に、図９〜図１１を用いて、移行システムにおけるサーバ１０および移行管理装置２０における処理の流れを説明する。図９は、第一の実施の形態に係る移行管理装置における移行制御処理の流れを示すフローチャートである。図１０は、第一の実施の形態に係るサーバにおける移行処理の流れを示すフローチャートである。図１１は、第一の実施の形態に係るサーバにおけるパケット入力処理の流れを示すフローチャートである。
【００５５】
まず、図９を用いて、移行管理装置２０における移行制御処理の流れを説明する。図９に示すように、移行管理装置２０は、ライブマイグレーションを実行する旨の指示を受け付けると（ステップＳ１０１肯定）。ＶＭを移行する順番を決定する（ステップＳ１０２）。そして、移行管理装置２０は、移行処理を開始するＶＭと後程移行処理を行うＶＭをサーバ１０に通知する（ステップＳ１０３）。
【００５６】
そして、移行管理装置２０は、後程移行処理を行うＶＭのリソース優先度を低くするようにサーバ１０に指示する（ステップＳ１０４）。その後、移行管理装置２０は、移行が完了したＶＭに関する通知をサーバ１０から受信すると（ステップＳ１０５肯定）、全てのＶＭの移行が完了したか否かを判定する（ステップＳ１０６）。
【００５７】
この結果、移行管理装置２０は、サーバ１０で稼働する全てのＶＭの移行が完了していないと判定した場合には（ステップＳ１０６否定）、次に移行するＶＭをサーバ１０に通知する（ステップＳ１０７）。そして、移行管理装置２０は、次に移行するＶＭのリソース優先度を高くするようにサーバ１０に指示し（ステップＳ１０８）、ステップＳ１０５の処理に戻る。また、移行管理装置２０は、サーバ１０で稼働する全てのＶＭの移行が完了したと判定した場合には（ステップＳ１０６肯定）、移行制御処理を終了する。
【００５８】
次に、図１０を用いて、サーバ１０における移行処理の流れを説明する。図１０に示すように、サーバ１０は、移行管理装置２０から移行処理を開始するＶＭと後程移行処理を行うＶＭを受信すると（ステップＳ２０１肯定）、リソース優先度の指示を受信し（ステップＳ２０２）、受信した指示に従ってリソース優先度の設定を行う（ステップＳ２０３）。具体的には、サーバ１０は、後程移行処理を行うＶＭのリソース優先度を低くする指示を受信し、後程移行処理を行うＶＭのリソース優先度を低くする設定を行う。
【００５９】
続いて、サーバ１０は、後程移行処理を行うＶＭ内のパケットキューのパケット数を監視し（ステップＳ２０４）、監視結果に応じて図１１を用いて詳述するパケット入力処理を行う（ステップＳ２０５）。
【００６０】
そして、サーバ１０は、移行処理を開始するＶＭのライブマイグレーションを実行する（ステップＳ２０６）。その後、サーバ１０は、いずれかのＶＭの移行が完了すると（ステップＳ２０７肯定）、移行が完了したＶＭに関する通知を移行管理装置２０に送信する（ステップＳ２０８）。例えば、サーバ１０は、移行が完了したＶＭを識別するＩＤを移行管理装置２０に通知する。
【００６１】
そして、サーバ１０は、全てのＶＭの移行が完了したかを判定する（ステップＳ２０９）。この結果、サーバ１０は、全てのＶＭの移行が完了していないと判定した場合には（ステップＳ２０９否定）、次に移行処理を開始するＶＭを移行管理装置２０から受信すると（ステップＳ２１０肯定）、移行処理を開始するＶＭ内のパケットキューのパケット数を監視する処理を停止し（ステップＳ２１１）、ステップＳ２０６の処理に戻る。具体的には、サーバ１０は、次に移行処理を開始するＶＭを移行管理装置２０から受信した後、ＶＭ内のパケットキューのパケット数がチェック終了パケット数を下回るまで減少したとき、ＶＭ内のパケットキューのパケット数の監視処理を停止する。また、サーバ１０は、全てのＶＭの移行が完了したと判定した場合には（ステップＳ２０９肯定）、移行処理を終了する。
【００６２】
次に、図１１を用いて、サーバ１０におけるパケット入力処理の流れを説明する。図１１に示すように、サーバ１０は、後程移行処理を行うと移行管理装置２０により決定されたＶＭ宛てのパケットが到着すると（ステップＳ３０１肯定）、ＶＭ内のパケットキューのパケット数が上限パケット数以下であるか否かを判定する（ステップＳ３０２）。
【００６３】
この結果、サーバ１０は、ＶＭ内のパケットキューのパケット数が上限パケット数以下である場合には（ステップＳ３０２肯定）、到着したパケットをＶＭ内のパケットキューに入力する（ステップＳ３０３）。また、ＶＭ内のパケットキューのパケット数が上限パケット数を上回っている場合には（ステップＳ３０２否定）、到着したパケットをＶＭ内のパケットキューに入力せずに、パケットバッファ１２ｄに保存する（ステップＳ３０４）。なお、サーバ１０は、パケットバッファ１２ｄにパケットを保存した後、ＶＭ内のパケットキューのパケット数が上限パケット数以下になると、パケットバッファ１２ｄに保存されたパケットをＶＭ内のパケットキューに入力する。
【００６４】
［第一の実施の形態の効果］
このように、第一の実施の形態に係る移行システムの移行管理装置２０は、移行元のサーバ１０上で稼働する複数の仮想マシンの移行する順番を決定し、各仮想マシンを順次移行先のサーバへ移行するように制御する。そして、サーバ１０は、移行管理装置２０によって決定された順番を基に、仮想マシンの移行を実行する。また、サーバ１０は、複数の仮想マシンのうち、移行処理を開始していない仮想マシンのパケットキューに記憶されたパケット数を監視する。そして、サーバ１０は、移行処理を開始していない仮想マシン宛てのパケットを受信した際に、監視されたパケット数が所定の閾値を超えている場合には、仮想マシン宛てのパケットをパケットバッファ１２ｄに格納し、監視されたパケット数が所定の閾値以下である場合には、仮想マシンのパケットキューにパケットを入力する。また、サーバ１０は、監視されたパケット数が所定の閾値以下となり、かつ、パケットバッファにパケットが記憶されている場合には、該パケットバッファ１２ｄに記憶されたパケットを仮想マシンのパケットキューに入力する。これにより、パケットロスを削減しつつ仮想マシンの移行にかかる時間を短縮することが可能である。つまり、所定数以上のパケットが仮想マシンのパケットキューに存在する場合には、パケットを仮想マシンのパケットキューに入力せずにパケットバッファ１２ｄに格納しておくことで、新たに到着したパケットをドロップさせることなく迅速に移行処理を行うことが可能となる。
【００６５】
また、第一の実施の形態に係る移行システムでは、移行処理を開始していない仮想マシンがリソースを使用する優先度を移行を開始している仮想マシンがリソースを使用する優先度よりも低くするように制御し、移行処理を開始していない仮想マシンの移行処理が開始となった場合には、該仮想マシンの優先度を高くするように制御する。これにより、移行処理を行う仮想マシンのリソース使用を優先させることで、移行処理を高速化することが可能となり、仮想マシンの移行にかかる時間を短縮することが可能である。つまり、移行処理を開始していない仮想マシンのリソース使用の優先度を低くすることで、移行処理を開始する仮想マシンによる移行処理を行うためのリソースの使用を優先させる結果、仮想マシンの移行処理を高速に行うことが可能となる。また、移行処理を開始していない仮想マシンのリソース優先度が低く割り当てられ、仮想マシンのパケット処理速度が遅くなるが、所定数以上のパケットが仮想マシンのパケットキューに存在する場合には、パケットをパケットキューに入力せずにパケットバッファ１２ｄに格納しておくことで、仮想マシンにより新たに到着したパケットをドロップされるという問題を防ぐことが可能になる。
【００６６】
また、第一の実施の形態に係る移行システムでは、移行処理を開始していない仮想マシンの移行処理が開始となった際に、該仮想マシンのパケットキューに記憶されたパケット数が所定の閾値を下回った場合には、該仮想マシンのパケットキューに記憶されたパケット数を監視する処理を停止する。このように、パケット数の監視処理を止めることにより、監視処理に伴う負荷を軽減することが可能である。
【００６７】
また、第一の実施の形態に係る移行システムでは、移行処理を開始する仮想マシンのうち、該仮想マシンのパケットキューに記憶されたパケット数が所定の閾値を下回った場合に、移行処理を開始する。これにより、仮想マシンの移行を開始するときに処理すべきパケット数を削減することができ、送信すべき更新情報量を削減することで、移行処理時間を短縮し、送信すべき更新データ数を削減することが可能になる。
【００６８】
また、第一の実施の形態に係る移行システムでは、移行処理を開始していない仮想マシンのうち、該仮想マシンのパケットバッファ１２ｄおよびパケットキューに記憶されたパケット数の合計が所定の閾値を超えた場合に、優先度を高くし、該仮想マシンのパケットキューに記憶されたパケット数が所定の閾値を下回った場合に、優先度を低くするように戻す。これにより、低優先度状態にある仮想マシンによるパケット処理時間が大きくなり、例えば、仮想マシンを利用するカスタマと契約した時間を超えそうになったとき、パケット処理を高速化することができ、かつパケットキューに存在するパケット数を減らすことができるため、パケット処理時間をカスタマと契約した時間以内にすることができる。
【００６９】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７０】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７１】
［プログラム］
また、上記実施形態において説明したサーバ１０および移行管理装置２０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るサーバ１０および移行管理装置２０が実行する処理をコンピュータが実行可能な言語で記述した移行プログラムを作成することもできる。この場合、コンピュータが移行プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる移行プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された移行プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【００７２】
図１２は、移行プログラムを実行するコンピュータ１０００を示す図である。図１２に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７３】
メモリ１０１０は、図１２に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１２に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１２に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１２に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１２に例示するように、例えばディスプレイ１１３０に接続される。
【００７４】
ここで、図１２に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の移行プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７５】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００７６】
なお、移行プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、移行プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７７】
１０  サーバ
１１ａ〜１１ｃ  ＶＭ
１２  パケット入力制御部
１２ａ  監視部
１２ｂ  受信部
１２ｃ  入力部
１３  処理機能管理部
１３ａ  移行部
１３ｂ  リソース制御部
１４  ハイパーバイザ
２０  移行管理装置
２１  移行制御部
【図１】
2018028779.tif 000003
【図２】
2018028779.tif 000004
【図３】
2018028779.tif 000005
【図４】
2018028779.tif 000006
【図５】
2018028779.tif 000007
【図６】
2018028779.tif 000008
【図７】
2018028779.tif 000009
【図８】
2018028779.tif 000010
【図９】
2018028779.tif 000011
【図１０】
2018028779.tif 000012
【図１１】
2018028779.tif 000013
【図１２】
2018028779.tif 000014