(57)【要約】【課題】仮想計算機のマイグレーション時において、仮想計算機の実行性能の低下を抑制し得る、仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラムを提供する。【解決手段】物理ノード１０１及び２０１を備え、物理ノードには仮想計算機１０３が構築されている仮想計算機システム１００を用いる。仮想計算機システム１００は、仮想計算機管理部１０２を備える。仮想計算機１０３は、仮想プロセッサ１０５及び１０６、仮想資源（１０７、１０８、１０９及び１１０）を備えている。仮想計算機管理部１０２は、仮想プロセッサ１０５及び１０６から仮想資源へのアクセスを検出し、アクセスの頻度に基づいて、仮想プロセッサと仮想資源との関連の度合いを求め、仮想計算機１０３を転送元の物理ノード１０１から転送先の物理ノード２０１に転送させる際、求めた関連度を利用する。【選択図】図１
2010176178.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには仮想計算機が構築されている、仮想計算機システムであって、
仮想計算機管理部を備え、
前記仮想計算機は、仮想プロセッサ及び仮想資源を少なくとも備え、
前記仮想計算機管理部は、
前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求め、前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用する、ことを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機管理部が、前記仮想計算機を前記転送元の物理ノードから前記転送先の物理ノードに転送させる際に、求めた前記度合いに基づいて、前記仮想計算機を分割し、分割した部分毎に転送を実行する、請求項１に記載の仮想計算機システム。
【請求項３】
前記仮想計算機管理部が、前記転送元の物理ノードと前記転送先の物理ノードとにそれぞれ設けられ、
前記転送元の物理ノードに設けられた前記仮想計算機管理部は、前記転送を実行し、
前記転送先の物理ノードに設けられた前記仮想計算機管理部は、前記転送先の物理ノードにおいて、前記転送の対象となった前記仮想計算機の前記仮想資源へのアクセスを検出した場合は、前記アクセスが検出された前記仮想資源が転送中でないことを条件として前記アクセスを許可する、請求項２に記載の仮想計算機システム。
【請求項４】
前記仮想計算機管理部が、前記転送元の物理ノードにおいて前記仮想計算機が動作している状態で、その転送を実行し、そして、
前記転送を実行しながら、前記仮想計算機における前記転送の開始時点からの変化を検出し、検出した前記変化が設定された状態となった場合に、前記転送元の物理ノードにおいて前記仮想計算機を停止させる、請求項２に記載の仮想計算機システム。
【請求項５】
複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには、仮想プロセッサ及び仮想資源を少なくとも備える仮想計算機が構築されている、仮想計算機システムにおいて、前記仮想計算機のマイグレーションを行うための方法であって、
（ａ）前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求めるステップと、
（ｂ）前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用するステップとを有する、ことを特徴とする仮想計算機のマイグレーション方法。
【請求項６】
前記（ｂ）のステップにおいて、前記仮想計算機を前記転送元の物理ノードから前記転送先の物理ノードに転送させる際に、求めた前記度合いに基づいて、前記仮想計算機を分割し、分割した部分毎に転送を実行する、請求項５に記載の仮想計算機のマイグレーション方法。
【請求項７】
（ｃ）前記転送先の物理ノードにおいて、前記転送の対象となった前記仮想計算機の前記仮想資源へのアクセスを検出した場合に、前記アクセスが検出された前記仮想資源が転送中でないことを条件として前記アクセスを許可する、ステップを更に有する、請求項６に記載の仮想計算機のマイグレーション方法。
【請求項８】
（ｄ）前記転送元の物理ノードにおいて前記仮想計算機が動作している状態で、その転送が実行されている場合に、前記転送を実行しながら、前記仮想計算機における前記転送の開始時点からの変化を検出し、検出した前記変化が設定された状態となった場合に、前記転送元の物理ノードにおいて前記仮想計算機を停止させる、ステップを更に有する、請求項６に記載の仮想計算機のマイグレーション方法。
【請求項９】
複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには、仮想プロセッサ及び仮想資源を少なくとも備える仮想計算機が構築されている、仮想計算機システムにおいて、前記仮想計算機システムを構成するコンピュータに、前記仮想計算機のマイグレーションを実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求めるステップと、
（ｂ）前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用するステップとを実行させる、ことを特徴とするプログラム。
【請求項１０】
前記（ｂ）のステップにおいて、前記仮想計算機を前記転送元の物理ノードから前記転送先の物理ノードに転送させる際に、求めた前記度合いに基づいて、前記仮想計算機を分割し、分割した部分毎に転送を実行する、請求項９に記載のプログラム。
【請求項１１】
（ｃ）前記転送先の物理ノードにおいて、前記転送の対象となった前記仮想計算機の前記仮想資源へのアクセスを検出した場合に、前記アクセスが検出された前記仮想資源が転送中でないことを条件として前記アクセスを許可する、ステップを、前記コンピュータに更に実行させる、請求項１０に記載のプログラム。
【請求項１２】
（ｄ）前記転送元の物理ノードにおいて前記仮想計算機が動作している状態で、その転送が実行されている場合に、前記転送を実行しながら、前記仮想計算機における前記転送の開始時点からの変化を検出し、検出した前記変化が設定された状態となった場合に、前記転送元の物理ノードにおいて前記仮想計算機を停止させる、ステップを、前記コンピュータに更に実行させる、請求項１０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理ノード上に構築された仮想計算機を備える仮想計算機システム、仮想計算機のマイグレーション方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータの性能向上に伴い、１台のコンピュータ上に複数の仮想マシン（ＶＭ：Virtual Machine）が構築される仮想マシン環境の利用が増加している（例えば、特許文献１〜特許文献３参照。）。仮想マシン（ＶＭ）は、ソフトウェアによる論理的なプラットフォームであり、ゲストオペレーティングシステムを動作させることができる。そして、仮想マシン環境下では、複数の仮想マシンは、同時に、それぞれ異なったオペレーティングシステム（ＯＳ）を実行することができるので、ハードウェアの利用効率の向上や、柔軟な運用が可能となる。
【０００３】
この仮想マシン環境の構築方法には幾つかあり、例えば、ホストＯＳ型と、仮想マシンモニタ型とが知られている。このうち、ホストＯＳ型は、ホストＯＳ上に、物理ハードウェアをエミュレートする環境を載せ、その上で別のゲストＯＳを動作させる方式である。ホストＯＳ型では、エミュレートはホストＯＳが有する機能によって実現される。
【０００４】
一方、仮想マシンモニタ型は、物理ハードウェア上で、直接、これをエミュレートする専用のプログラム（仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor））を動作させる方式である。この方式では、ホストＯＳ型に比べて小さなオーバーヘッドで、仮想マシン環境を実装できる。
【０００５】
また、仮想マシン環境においては、仮想マシンのライブマイグレーションが行われる。ライブマイグレーションは、実行中の仮想マシンを、ある物理ノードから別の物理ノードへと移動させる技術であり、これによれば、サービスの提供を中断することなく、仮想マシンを再配置できる。この結果、物理ハードウェアの故障時や保守作業時においてもサービスの提供の中断を回避できる。また、ライブマイグレーションを利用すれば、物理ノード間での負荷のバランシングを行うことも可能になる。
【０００６】
但し、仮想マシンのライブマイグレーションは、仮想マシンの有する仮想デバイス及び仮想メモリを全て移動先ノードにコピーし、移動元ノードで仮想プロセッサの実行を停止し、そして移動先ノードでの実行を再開することによって行われている。よって、仮想マシンのライブマイグレーションを開始してから完了するまでには一定の時間がかかる。
【０００７】
特に、多数のプロセッサや大容量のメモリ、多数のＩＯデバイスを搭載した物理ノードにおいては、その上で動作させる仮想マシンの仮想プロセッサ数やメモリ容量、仮想ＩＯデバイス数も大規模になると予想される。この場合、仮想マシンのライブマイグレーションに必要な時間は大きくなると考えられる。
【０００８】
更に、マイグレーションを実行している最中はシステムの負荷が増大し、仮想マシンが使用している資源もマイグレーションが終了するまでは解放されないため、移動元ノードにおいて空き資源が必要な場合に即座に利用することができない、という問題もある。
【０００９】
仮想マシンのライブマイグレーションに必要な時間を短縮する方法としては、仮想マシンに関連する全てのデータの転送を待たずに、移動先のノードで、仮想マシンの実行を開始する方法が挙げられる。具体的には、特許文献１に開示されている仮想計算機（仮想マシン）システムでは、仮想マシンの内容のうちメモリ以外のコンテクストが先に移動先ノードにコピーされ、即座に、移動先ノードでの仮想マシンの実行が開始される。そして、仮想マシンのメモリの移動先ノードへの転送は、デマンドコピーを用いて後から行われる。このため、特許文献１に開示されている仮想計算機システムでは、ライブマイグレーションに必要な時間の短縮が図られる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−１３３８９４号公報
【特許文献２】特開２００７−０６６２６５号公報
【特許文献３】国際公開第２００８／１１７４７０号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に開示されている仮想計算機システムでは、メモリの転送が終了していない場合、移動先ノードからメモリのアクセスを行うたびに、デマンドコピーのためにリモートノードへのアクセスが頻繁に発生する。このため、メモリの転送が終了するまでの間、仮想マシンの実行性能が低下するという問題が発生してしまう。
【００１２】
本発明の目的は、上記問題を解消し、仮想計算機のマイグレーション時において、仮想計算機の実行性能の低下を抑制し得る、仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明における仮想計算機システムは、複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには仮想計算機が構築されている、仮想計算機システムであって、
仮想計算機管理部を備え、
前記仮想計算機は、仮想プロセッサ及び仮想資源を少なくとも備え、
前記仮想計算機管理部は、
前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求め、前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用する、ことを特徴とする。
【００１４】
また、上記目的を達成するため、本発明における仮想計算機のマイグレーション方法は、複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには、仮想プロセッサ及び仮想資源を少なくとも備える仮想計算機が構築されている、仮想計算機システムにおいて、前記仮想計算機のマイグレーションを行うための方法であって、
（ａ）前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求めるステップと、
（ｂ）前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用するステップとを有することを特徴とする。
【００１５】
更に、上記目的を達成するため、本発明におけるプログラムは、複数の物理ノードを備え、前記複数の物理ノードの少なくとも一つには、仮想プロセッサ及び仮想資源を少なくとも備える仮想計算機が構築されている、仮想計算機システムにおいて、前記仮想計算機システムを構成するコンピュータに、前記仮想計算機のマイグレーションを実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記仮想プロセッサから仮想資源へのアクセスを検出し、検出した前記アクセスの頻度に基づいて、前記仮想プロセッサと前記仮想資源との関連の度合いを求めるステップと、
（ｂ）前記仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に、求めた前記関連度を利用するステップとを実行させる、ことを特徴とする。
【発明の効果】
【００１６】
以上の特徴により、本発明における仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラムによれば、仮想計算機のマイグレーション時において、仮想計算機の実行性能の低下が抑制される。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の実施の形態における計算機システムの通常時における構成を示すブロック図である。
【図２】図２は、本発明の実施の形態における計算機システムのマイグレーション時における構成を示すブロック図である。
【図３】図３は、図１に示した仮想計算機管理部の通常時における一連の主な動作を示すフロー図である。
【図４】図４は、図１に示した仮想資源アクセステーブルに格納されている情報の一例を示す図である。
【図５】図５は、図２に示した仮想計算機管理部のマイグレーション時における一連の主な動作を示すフロー図である。
【図６】図６（ａ）は、図２に示した転送元の仮想資源管理テーブルに格納されている情報の一例を示し、図６（ｂ）は、図２に示した転送先の仮想資源管理テーブルに格納されている情報の一例を示す図である。
【図７】図７は、図２に示した仮想計算機管理部が仮想資源管理テーブルの更新処理を行う際の一連の主な動作を示すフロー図である。
【図８】図８は、マイグレーション時に仮想資源へのアクセス要求があった場合における図２に示した仮想計算機管理部の一連の主な動作を示すフロー図である。
【図９】図９は、本実施の形態２における計算機システムでの仮想計算機管理部のマイグレーション時における一連の主な動作を示すフロー図である。
【発明を実施するための形態】
【００１８】
（実施の形態１）
以下、本発明の実施の形態１における仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラムについて、図１〜図８を参照しながら説明する。最初に、本実施の形態１における仮想計算機システムの概略構成について図１及び図２を用いて説明する。図１は、本発明の実施の形態における計算機システムの通常時における構成を示すブロック図である。図２は、本発明の実施の形態における計算機システムのマイグレーション時における構成を示すブロック図である。
【００１９】
図１に示すように、本実施の形態１における仮想計算機システム１００は、複数の物理ノードを備え、複数の物理ノードの少なくとも一つには、仮想計算機が構築されている。本実施の形態１では、物理ノードの個数は特に限定されないが、図１には物理ノード１０１と物理ノード２０１とが例示されている。物理ノード１０１及び２０１は、実際には、コンピュータであり、ネットワーク１１５によって互いに接続されている。
【００２０】
本実施の形態では、物理ノード１０１及び２０１の両方において、仮想計算機（以下「仮想マシン」とする。）が構築されている。そして、物理ノード１０１に構築されている仮想マシン１０３は、ゲストＯＳ１０４から指示に従って動作を行う。物理ノード２０１に構築されている仮想マシン１１３は、ゲストＯＳ１１４からの指示に従って動作を行う。
【００２１】
図１に示すように、仮想マシン１０３は、仮想プロセッサ１０５及び１０６と、仮想メモリ領域１０７及び１０８と、仮想デバイス１０９及び１１０とを備えている。仮想マシン１１３も、仮想マシン１０３と同様に、仮想プロセッサ、仮想メモリ領域及び仮想デバイスを備えている。図１においては、仮想マシン１１３の構成は簡略化して示されている。なお、各物理ノードに構築されている仮想マシンの数や、ゲストＯＳの数は、限定されない。本実施の形態１は、一つの物理ノードに、複数の仮想マシンが構築され、且つ、複数のゲストＯＳがインストールされている態様であっても良い。
【００２２】
また、図１に示すように、仮想計算機システム１００は、物理ノード毎に、仮想計算機管理部１０２及び２０２を備えている。仮想計算機管理部１０２及び２０２は、物理ノード１０１または１０２の上に仮想マシンを構築するための、いわゆる「仮想マシンモニタ」である。仮想計算機管理部１０２は、仮想マシン１０３を構築し、仮想計算機管理部２０２は、仮想マシン１１３を構築している。
【００２３】
また、本実施の形態において、仮想計算機管理部１０２及び２０２は、プログラムによって実現されている。プログラムは、仮想マシン環境を実現するために必要な機能を物理ノードのハードウェアに提供する。また、このプログラムが後述する本実施の形態におけるプログラムとなる。
【００２４】
ところで、仮想計算機管理部１０２及び２０２は、上述した特許文献１〜３に開示されている仮想マシンモニタと同様に機能することができるが、更に、以下の機能も備えている。即ち、仮想計算機管理部１０２及び２０２は、仮想プロセッサから仮想資源へのアクセスを検出し、検出したアクセスの頻度に基づいて、仮想プロセッサと仮想資源との関連の度合いを求める。そして、仮想計算機管理部１０２及び１０３は、仮想計算機を転送元の物理ノードから別の転送先の物理ノードに転送させる際に（マイグレーションの際に）、求めた関連度を利用することができる。よって、仮想計算機システム１００では、仮想計算機のマイグレーションを効率的に行うことができ、仮想マシンの実行性能の低下が抑制される。
【００２５】
本実施の形態１において、「関連の度合いを用いる」とは、仮想計算機管理部１０２及び２０２が、仮想計算機を転送させる際に、求めた関連の度合いに基づいて、仮想計算機を分割し、分割した部分毎に転送を実行することをいう。つまり、本実施の形態１では、各仮想プロセッサが利用する仮想資源には局所性があることが利用され、仮想プロセッサと仮想資源とは関連付けてグループ化され、仮想マシンは段階的に転送される。そのため、マイグレーション時に仮想プロセッサが仮想資源にアクセスする場合において、リモートノードへのアクセスが発生する頻度が低減されるので、仮想マシンの実行性能の低下が抑制される。
【００２６】
また、本実施の形態１では、関連の深い仮想プロセッサと仮想資源とが一つの組となって転送が行われるため、仮想マシンを一括してマイグレートする場合に比べて、仮想マシンが利用していた資源を部分的に早めに解放することができる。よって、移動元の物理ノードにおいては、空き資源が利用可能になるまでの時間の短縮化が図られ、仮想計算機システム１００全体の性能向上も図られる。
【００２７】
また、具体的には、図１に示すように、仮想計算機管理部１０２は、仮想マシン１０３において、仮想資源アクセス監視部１１１と、仮想資源アクセステーブル１１２とを備えている。仮想資源アクセステーブル監視部１１１は、仮想プロセッサ１０５及び１０６からの仮想資源（仮想メモリ領域１０７及び１０８、仮想デバイス１０９及び１１０）への命令を監視する。
【００２８】
更に、仮想資源アクセステーブル監視部１１１は、仮想プロセッサ１０５及び１０６が、仮想メモリ領域１０７及び１０８のいずれにアクセスしたのか、又は仮想デバイス１０９及び１１０のいずれにアクセスしたのかを仮想資源アクセステーブル１１２に記録する。仮想計算機管理部１０２は、仮想資源アクセステーブル１１２に格納されている情報に基づいて、関連度を計算する。なお、本実施の形態は、仮想計算機管理部２０２も、同様に関連度の計算が可能な態様であっても良い。
【００２９】
ここで、図２を用いて、仮想計算機がマイグレーション（転送）される際の、仮想計算機システムの構成について説明する。また、以下においては、物理ノード１０１を転送元の物理ノードとし、物理ノード２０１を転送先の物理ノードとして、仮想マシン１０３が、転送される例について説明する。なお、図２においては、最初から存在する、ゲストＯＳ１１４及び仮想マシン１１３の図示は、省略されている。
【００３０】
仮想計算機システムのユーザが、仮想マシン１０３のマイグレーションを指示すると、転送元の仮想計算機管理部１０２は、最初に、転送させる仮想プロセッサ（１０５又は１０６）を選択する。そして、仮想計算機管理部１０２は、算出された関連度に基づいて、選択した仮想プロセッサからのアクセス頻度が高い、仮想デバイス（１０９又は１１０）と仮想メモリ領域（１０７又は１０８）を選択する。
【００３１】
仮想計算機管理部１０２が、仮想プロセッサ１０６を選択し、これとの関連度が高い仮想資源が仮想メモリ領域１０８及び仮想デバイス１１０であるときは、仮想プロセッサ１０６、仮想メモリ領域１０８及び仮想デバイス１１０が先に転送される。このとき、本実施の形態１では、仮想プロッセ１０６の動作は、一旦、停止されるが、転送が終了すると、再開される。
【００３２】
仮想計算機システム１００の構成は、図２に示す構成となる。図２に示すように、転送元の物理ノード１０１には、仮想計算機１０３の一部分１０３ａが存在し、転送先の物理ノード２０１には、仮想計算機１０３の一部分１０３ｂが存在している。また、転送元の仮想計算機管理部１０２は、部分１０３ａにおいて、仮想資源アクセス要求受付部２０３と、ネットワーク送受信部２０４と、仮想資源管理テーブル２０５とを新たに構築する。更に、転送先の仮想計算機管理部２０２は、部分１０３ｂにおいて、仮想資源アクセス要求受付部２０６と、ネットワーク送受信部２０７と、仮想資源管理テーブル２０８とを新たに構築する。
【００３３】
仮想資源アクセス要求受理部２０３及び２０６は、ゲストＯＳ１０４からの命令を受信すると、対応する仮想資源管理テーブル２０５又は２０８を参照し、命令の実行に必要な仮想資源がどちらの物理ノード（１０１又は２０１）にあるかを判定する。なお、仮想資源管理テーブル２０５及び２０８によって格納される情報については、図６を用いて後述する。
【００３４】
また、仮想資源アクセス要求管理部２０３及び２０６は、それと同一の物理ノードに、必要な仮想資源が存在している場合は、ゲストＯＳ１０４からの命令を仮想プロセッサに実行させる。一方、仮想資源アクセス要求管理部２０３及び２０６は、それと同一の物理ノードに、必要な仮想資源が存在していない場合は、対応するネットワーク送受信部２０４又は２０７を経由して、ゲストＯＳ１０４からの命令を仮想プロセッサに実行させる。      
【００３５】
このように、本実施の形態１では、仮想マシン１０３を分割して転送している最中であっても、仮想マシン１０３の動作は継続している。そして、仮想マシン１０３の転送中に、仮想資源へのアクセス要求が生じた場合は、仮想資源がローカルのノードにある場合はそのまま仮想資源へのアクセスが実施される。一方、仮想資源がリモートのノードにある場合は、アクセス要求をリモートの物理ノードに転送し、そこで仮想資源へのアクセスが実施される。なお、アクセス対象となる仮想資源が物理ノード間で転送中の場合は、この仮想資源へのアクセスは、一定時間待機状態となる。
【００３６】
その後、仮想計算機管理部１０２は、残りの仮想プロセッサ１０５を選択し、更に、これとの関連度が高い仮想メモリ領域１０７及び仮想デバイス１０９を選択し、これらを転送先の物理ノード２０１に転送する。そして、仮想計算機１０３の残りの部分１０３ａの転送が終了すると、マイグレーションが終了し、転送先の物理ノード２０１に、仮想マシン１０３が完全に構築される。そして、仮想プロセッサ１０５及び１０６は処理を完全に再開する。
【００３７】
次に、図１及び図２に示した仮想計算機システムにおける動作について、通常時（マイグレーション前）とマイグレーション時とに分けて、図３〜図８を用いて説明する。なお、本実施の形態１における仮想計算機のマイグレーション方法は、図１及び図２に示した本実施の形態１における仮想計算機システムを動作させることによって実施される。このため、本実施の形態１における仮想計算機のマイグレーション方法の説明は、以下の仮想計算機システム１００の動作の説明に代える。また、以下の説明では、適宜、図１及び図２を参照する。
【００３８】
先ず、図１を参照しながら、図３及び図４を用いて、通常時（マイグレーション前）における仮想計算機システムの動作を、仮想マシン１０３を例に挙げて説明する。図３は、図１に示した仮想計算機管理部の通常時における一連の主な動作を示すフロー図である。図４は、図１に示した仮想資源アクセステーブルに格納されている情報の一例を示す図である。
【００３９】
図３に示すように、先ず、仮想資源アクセス監視部１１１は、ゲストＯＳ１０４（仮想プロセッサ１０５又は１０６）からの仮想メモリ領域（１０７又は１０８）、または仮想デバイス（１０９または１１０）へのアクセスを検出する（ステップＡ３０１）。
【００４０】
次に、仮想資源アクセス監視部１１１は、アクセス元の仮想プロセッサを識別する（ステップＡ３０２）。続いて、仮想資源アクセス監視部１１１は、アクセス元の仮想プロセッサとアクセス先の仮想資源とに基づいて、仮想資源アクセステーブル１１２（図４参照）を更新する（ステップＡ３０３）。ステップＡ３０３の実行後、仮想資源アクセス監視部１１１における処理は、一旦終了する。
【００４１】
図４に示すように、ステップＡ３０３において、仮想資源アクセステーブル１１２には、仮想プロセッサから各仮想資源にアクセスした際のアクセス頻度が格納される。そして、仮想計算機管理部１０２は、仮想資源アクセステーブル１１２に格納されているアクセス頻度が高いほど、仮想プロセッサと仮想資源との関連が強いと判断する。なお、仮想資源アクセステーブル１１２には、仮想マシン１０３の起動時からの累計が格納されていても良いし、直近の特定期間内の累計が格納されていても良い。
【００４２】
次に、図２を参照しながら、図５〜図８を用いて、マイグレーション時における仮想計算機システムの動作を説明する。図５は、図２に示した仮想計算機管理部のマイグレーション時における一連の主な動作を示すフロー図である。図６（ａ）は、図２に示した転送元の仮想資源管理テーブルに格納されている情報の一例を示し、図６（ｂ）は、図２に示した転送先の仮想資源管理テーブルに格納されている情報の一例を示す図である。
【００４３】
図５に示すように、ユーザがマイグレーションの指示を出すと、最初に、転送元の仮想計算機管理部１０２は、先に転送させる仮想プロセッサ（図２においては仮想プロセッサ１０６）を選択する（ステップＡ５０１）。なお、ステップＡ５０１では、ユーザに先に移動させる仮想プロセッサの選択を行わせても良い。また、ステップＡ５０１において、仮想プロセッサの選択順は、予め、各仮想プロセッサに付与された識別番号の順であっても良い。
【００４４】
次に、転送元の仮想計算機管理部１０２は、仮想資源アクセステーブル１１２を参照し、選択した仮想プロセッサと関連の強い仮想メモリ領域及び仮想デバイスを選択する（ステップＡ５０２）。具体的には、ステップＡ５０２において、仮想計算機管理部１０２は、仮想資源アクセステーブル１１２を参照して、各仮想メモリ領域及び仮想デバイスについて、最もアクセスされている頻度が高い、アクセス元の仮想プロセッサを検索する。そして、仮想計算機管理部１０２は、検索した仮想プロセッサと、転送対象として選択した仮想プロセッサとが一致する場合、当該仮想メモリ領域または仮想デバイスを転送させる仮想資源として選択する。
【００４５】
次に、転送元の仮想計算機管理部１０２は、選択した仮想プロセッサを停止し（ステップＡ５０３）、選択した仮想メモリ領域及び仮想デバイスを転送先の仮想計算機管理部２０２へ転送する（ステップＡ５０４）。
【００４６】
次に、転送元の仮想計算機管理部１０２は、転送先の仮想計算機管理部２０２に、選択した仮想プロセッサの内容を転送する（ステップＡ５０５）。その後、転送先の仮想計算機管理部２０２は、転送が終了した仮想プロセッサの実行を再開する（ステップＡ５０６）。
【００４７】
次に、転送元の仮想計算機管理部１０２は、仮想プロセッサが全て転送済みかどうかを判定する（ステップＡ５０７）。ステップＡ５０７の判定の結果、転送済みでない場合は、転送元の仮想計算機管理部１０２は、転送の済んでいない仮想プロセッサに対して、ステップＡ５０１からステップＡ５０６の処理を繰り返す。一方、ステップＡ５０７の判定の結果、仮想プロセッサが全て転送済みの場合は、転送元の仮想計算機管理部１０２は、マイグレーションを終了する。
【００４８】
また、ステップＡ５０１〜Ａ５０７の実行中において、転送元の仮想計算機管理部１０２は、仮想資源管理テーブル２０５に対して、転送先の仮想計算機管理部２０２は、仮想資源管理テーブル２０８に対して、情報の書き込みを行う。図６（ａ）及び（ｂ）に示すように、各テーブルには、仮想マシン１０３のマイグレーション中において、各仮想計算機管理部から見て、各仮想資源がローカルにあるのか、又はリモートにあるのか、更には転送中であるのかを特定する情報が、記述される。
【００４９】
ここで、図７を用いて、仮想資源管理テーブル２０５及び２０８の更新処理について説明する。図７は、図２に示した仮想計算機管理部が仮想資源管理テーブルの更新処理を行う際の一連の主な動作を示すフロー図である。
【００５０】
図７に示すように、先ず、転送元の仮想計算機管理部１０２は、マイグレーションを実行すると、転送の対象となる仮想プロセッサ及び仮想資源を選択し、仮想資源管理テーブル２０５及び２０８の該当する箇所のフラグを「転送中」に設定する（ステップＡ７０１）。なお、ステップＡ７０１において、転送先の仮想資源管理テーブル２０８でのフラグの設定は、転送元の仮想計算機管理部１０２からの指示により、転送先の仮想計算機管理部２０２が行っている。
【００５１】
次に、転送元の仮想計算機管理部１０２が、実際に仮想資源の転送を行う（ステップ７０２）。転送が終了すると、転送元の仮想計算機管理部１０２は、転送元の仮想資源管理テーブル２０５の該当する仮想資源のフラグを「リモート」に設定する（ステップＡ７０３）。続いて、転送先の仮想計算機管理部２０２は、転送先の仮想資源管理テーブル２０８の該当する仮想資源のフラグを「ローカル」に設定する（ステップＡ７０４）。ステップＡ７０１〜Ａ７０４の処理が繰り返され、仮想資源管理テーブル２０５及び２０８の更新が行われる。
【００５２】
続いて、図８を用いて、仮想マシン１０３をマイグレートしている最中に、ゲストＯＳ１０４が、転送元の仮想計算機管理部１０２に対して、又は転送先の仮想計算機管理部２０２に対して、仮想資源へのアクセスを要求した場合の処理について説明する。図８は、マイグレーション時に仮想資源へのアクセス要求があった場合における図２に示した仮想計算機管理部の一連の主な動作を示すフロー図である。
【００５３】
図８に示すように、最初に、仮想資源アクセス要求受理部２０３（又は２０４）が、ゲストＯＳ１０４から仮想資源へのアクセス要求を受信する（ステップＡ８０１）。次に、仮想資源アクセス要求受理部２０３（又は２０４）は、仮想資源所在管理テーブル２０７（又は２０８）を参照し、該当する仮想資源のフラグが「ローカル」であるかどうかを判定する（ステップＡ８０２）。
【００５４】
ステップＡ８０２の判定の結果、フラグが「ローカル」の場合、仮想資源アクセス要求受理部２０３（又は２０４）は、ゲストＯＳ１０４による仮想資源へのアクセスをそのまま実行させ（ステップＡ８０３）、処理を終了する。
【００５５】
一方、ステップＡ８０２の判定の結果、フラグが「ローカル」でない場合は、仮想資源アクセス要求受理部２０３（又は２０４）は、更に、フラグが「転送中」であるかどうかを判定する（ステップＡ８０４）。
【００５６】
ステップＡ８０４の判定の結果、フラグが「転送中」の場合は、仮想資源アクセス要求受理部２０３（又は２０４）は、設定された時間の間、待機状態となり（ステップＡ８０５）、その後歩、再度ステップＡ８０２を実行する。一方、ステップＡ８０４の判定の結果、フラグが「転送中」でない場合は、仮想資源はリモートにある。この場合、仮想資源アクセス要求受理部２０３（又は２０４）は、アクセス要求をリモートへ転送する（ステップＡ８０６）。ステップＡ８０６の実行後は、ゲストＯＳ１０４は、リモートの物理ノードにおいて、仮想資源へのアクセスを実行する（ステップ８０７）。
【００５７】
このように、仮想計算機管理部１０２が転送を実行すると、転送先の物理ノード２０１では、仮想計算機管理部２０２は、ゲストＯＳ１０４からのアクセスが検出された仮想資源の転送が終了していることを条件として、ゲストＯＳ１０４によるアクセスを許可する。この場合、ゲストＯＳ１０４による命令が、待機状態となる場合は存在するが、仮想マシン１０３における処理が停止されることはない。
【００５８】
本実施の形態１におけるプログラムは、コンピュータに、図３に示すステップＡ３０１〜Ａ３０３、図５に示すステップＡ５０１〜Ａ５０６、図７に示すステップＡ７０１〜Ａ７０４、及び図８に示すステップＡ８０１〜Ａ８０５を実行させるプログラムであれば良い。本実施の形態におけるプログラムをコンピュータにインストールし、実行することによって、本実施の形態１における仮想計算機システム１００を実現することができる。この場合、コンピュータのＣＰＵ（central processing unit）は、少なくとも、仮想計算機管理部１０２、仮想計算機管理部２０２、及び仮想マシン１０３として機能し、処理を行なう。
【００５９】
（実施の形態２）
次に、本発明の実施の形態２における仮想計算機システム、仮想計算機のマイグレーション方法、及びプログラムについて、図９を参照しながら説明する。図９は、本実施の形態２における計算機システムでの仮想計算機管理部のマイグレーション時における一連の主な動作を示すフロー図である。
【００６０】
本実施の形態２においては、仮想計算機システムの構成は、図１及び図２に示した実施の形態１における仮想計算機システム１００の構成と同様である。本実施の形態２は、仮想計算機管理部における処理の点で、実施の形態１と異なっている。以下に具体的に説明する。なお、実施の形態２における仮想計算機システムの構成は、実施の形態１における仮想計算機システム１００の構成と同様であるため、以下の説明においては図１及び図２を参照する。
【００６１】
図９に示すように、最初に、ユーザがマイグレーションの指示を出すと、転送元の仮想計算機管理部１０２は、先に転送させる仮想プロセッサを選択する（ステップＡ９０１）。次に、転送元の仮想計算機管理部１０２は、仮想資源アクセステーブル１１２を参照し、選択した仮想プロセッサと関連の強い仮想メモリ領域及び仮想デバイスを選択する（ステップＡ９０２）。
【００６２】
次に、転送元の仮想計算機管理部１０２は、選択した仮想プロセッサを停止せずに、選択した仮想プロセッサ、仮想メモリ領域、及び仮想デバイスの内容を転送する（ステップＡ９０３）。次に、転送中であっても転送元において仮想プロセッサ１０３は稼動しているため、転送元の仮想計算機管理部１０２は、転送を開始してから完了するまで、転送開始時と現在との間の差分を取得し、これを記録する（ステップＡ９０４）。
【００６３】
次に、転送元の仮想計算機管理部１０２は、ステップＡ９０４で取得された差分（転送中に生じた差分）と、予め設定された閾値とを対比し、取得された差分が閾値より小さいかどうかを判定する（ステップＡ９０５）。
【００６４】
ステップＡ９０５の判定の結果、取得された差分（転送中に生じた差分）が閾値より小さくない場合は、転送元の仮想計算機管理部１０２は、取得した差分を、転送先の仮想計算機管理部２０２に転送する（ステップＡ９０６）。そして、ステップＡ９０６が実行されると、再度ステップＡ９０４が実行されるが、この場合は、ステップＡ９０６の実行時と現在との間の差分が取得される。
【００６５】
一方、ステップＡ９０４〜ステップＡ９０６の処理が繰り返し行われ、ステップＡ９０５の判定の結果、ステップＡ９０４で取得された差分の大きさが閾値より小さくなった場合、転送元の仮想計算機管理部２０２は、転送元の物理ノード１０１において、ステップＡ９０１で選択した仮想プロセッサを停止する（ステップＡ９０７）。
【００６６】
次に、転送元の仮想計算機管理部１０２は、ステップＡ９０６の実行後に生じた差分を取得し、このとき生じた差分を転送先の仮想計算機管理部２０２に転送する（ステップＡ９０８）。その後、転送先の仮想計算機管理部２０２は、転送が終了した仮想プロセッサの実行を再開する（ステップＡ９０９）。
【００６７】
次に、転送元の仮想計算機管理部１０２は、仮想プロセッサが全て転送済みかどうかを判定する（ステップＡ９１０）。ステップＡ９１０の判定の結果、転送済みでない場合は、転送元の仮想計算機管理部１０２は、転送の済んでいない仮想プロセッサに対して、ステップＡ９０１からステップＡ９０９の処理を繰り返す。一方、ステップＡ９１０の判定の結果、仮想プロセッサが全て転送済みの場合は、転送元の仮想計算機管理部１０２は、マイグレーションを終了する。
【００６８】
このように、実施の形態２においては、仮想計算機管理部１０２は、仮想マシンが動作している状態で、その転送を実行する。更に、仮想計算機管理部１０２は、転送を実行しながら、仮想マシン１０３の転送の開始時点からの変化を検出し、検出した変化が設定された状態となった場合に、転送元の物理ノード１０１で仮想マシン１０３を停止させる。なお、既に一度以上の転送が行われた後においては、「開始時点」には、最新の転送の開始時点も含まれる。
【００６９】
つまり、本実施の形態２においては、仮想マシン１０３を分割してマイグレートする場合に、仮想プロセッサの停止をできる限り行わないようにして、仮想資源の移動が行われる。このため、本実施の形態２によれば、実施の形態１に比べて、仮想プロセッサの停止時間の短縮化が図られる。
【符号の説明】
【００７０】
１００  仮想計算機システム
１０１  物理ノード
１０２  仮想計算機管理部（仮想マシンモニタ）
１０３  仮想計算機（仮想マシン）
１０３ａ、１０３ｂ  分割された仮想計算機
１０４  ゲストＯＳ
１０５  仮想プロセッサ
１０６  仮想プロセッサ
１０７  仮想メモリ領域
１０８  仮想メモリ領域
１０９  仮想デバイス
１１０  仮想デバイス
１１１  仮想資源アクセス監視部
１１２  仮想資源アクセステーブル
１１３  仮想マシン
１１４  ゲストＯＳ
１１５  ネットワーク
２０１  物理ノード
２０２  仮想計算機管理部（仮想マシンモニタ）
２０３  仮想資源アクセス要求受付部
２０４  ネットワーク送受信部
２０５  仮想資源管理テーブル
２０６  仮想資源アクセス要求受付部
２０７  ネットワーク送受信部
２０８  仮想資源管理テーブル
【図１】
2010176178.tif 000003
【図２】
2010176178.tif 000004
【図３】
2010176178.tif 000005
【図４】
2010176178.tif 000006
【図５】
2010176178.tif 000007
【図６】
2010176178.tif 000008
【図７】
2010176178.tif 000009
【図８】
2010176178.tif 000010
【図９】
2010176178.tif 000011