(57)【特許請求の範囲】
【請求項１】
複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置であって、
前記複数のサーバに対し、前記サーバ及び前記サーバが搭載する前記仮想マシンの負荷情報を要求する負荷情報要求手段と、
前記負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断手段を備え、
前記負荷情報要求手段は、前記移行元サーバが保有している移行対象仮想マシンに関する全情報を複製して移行先サーバへ渡すことである前記動的移行の準備が完了した前記移行元サーバ及び前記移行先サーバの双方から前記動的移行の準備が完了した旨の通知を受け取ると、前記移行元サーバ及び前記移行先サーバに対し再度前記負荷情報を要求し、
前記動的移行判断手段は、その再度の要求に対する前記負荷情報を受け取ると、受け取った前記負荷情報における前記移行元サーバの負荷の低下又は前記移行先サーバの負荷の上昇に基づいて、準備が完了している当該動的移行を実行するか否かを決定することを特徴とする仮想マシン管理装置。
【請求項２】
前記動的移行の準備開始命令及び実行命令又は実行中止命令を前記移行元サーバ及び移行先サーバに通知する動的移行制御手段を備え、
前記動的移行制御手段が、前記動的移行判断手段が決定した前記移行元サーバ及び前記移行先サーバに対し、前記移行対象仮想マシンの動的移行の準備を開始する旨の命令を通知することを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項３】
前記動的移行制御手段が、
前記動的移行判断手段が前記動的移行を実行すると決定した場合に、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行する旨の命令を通知し、前記動的移行判断手段が前記動的移行の実行を中止すると決定した場合は、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行を中止する旨の命令を通知することを特徴とする請求項２に記載の仮想マシン管理装置。
【請求項４】
複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置による仮想マシン管理方法であって、
前記複数のサーバに対し、前記サーバ及び前記サーバが搭載する前記仮想マシンの負荷情報を要求する負荷情報要求ステップと、
前記負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断ステップを含み、
前記負荷情報要求ステップにおいて、ら前記移行元サーバが保有している移行対象仮想マシンに関する全情報を複製して移行先サーバへ渡すことである前記動的移行の準備が完了した前記移行元サーバ及び前記移行先サーバの双方か前記動的移行の準備が完了した旨の通知を受けると、前記移行元サーバ及び前記移行先サーバに対し再度前記負荷情報を要求し、
前記動的移行判断ステップで、その再度の要求に対する前記負荷情報を受け取ると、受け取った前記負荷情報における前記移行元サーバの負荷の低下又は前記移行先サーバの負荷の上昇に基づいて、準備が完了している当該動的移行を実行するか否かを決定することを特徴とする仮想マシン管理方法。
【請求項５】
前記動的移行の準備開始命令及び実行命令又は実行中止命令を前記移行元サーバ及び移行先サーバに通知する動的移行制御ステップを含み、
前記動的移行制御ステップにおいて、
前記動的移行判断ステップで決定した前記移行元サーバ及び前記移行先サーバに対し、前記移行対象仮想マシンの動的移行の準備を開始する旨の命令を通知することを特徴とする請求項４に記載の仮想マシン管理方法。
【請求項６】
前記動的移行制御ステップにおいて、
前記動的移行判断ステップで前記動的移行を実行すると決定した場合に、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行する旨の命令を通知し、
前記動的移行判断ステップで前記動的移行の実行を中止すると決定した場合は、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行を中止する旨の命令を通知することを特徴とする請求項５に記載の仮想マシン管理方法。
【請求項７】
複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置に、
前記複数のサーバに対し、前記サーバ及び前記サーバが搭載する前記仮想マシンの負荷情報を要求する負荷情報要求処理と、
前記負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断処理を実行させ、
前記負荷情報要求処理において、前記移行元サーバが保有している移行対象仮想マシンに関する全情報を複製して移行先サーバへ渡すことである前記動的移行の準備が完了した前記移行元サーバ及び前記移行先サーバの双方から前記動的移行の準備が完了した旨の通知を受けると、前記移行元サーバ及び前記移行先サーバに対し再度前記負荷情報を要求し、
前記動的移行判断処理で、その再度の要求に対する前記負荷情報を受け取ると、受け取った前記負荷情報における前記移行元サーバの負荷の低下又は前記移行先サーバの負荷の上昇に基づいて、準備が完了している当該動的移行を実行するか否かを決定することを特徴とする仮想マシン管理プログラム。
【請求項８】
前記動的移行の準備開始命令及び実行命令又は実行中止命令を前記移行元サーバ及び移行先サーバに通知する動的移行制御処理を含み、
前記動的移行制御処理において、
前記動的移行判断処理で決定した前記移行元サーバ及び前記移行先サーバに対し、前記移行対象仮想マシンの動的移行の準備を開始する旨の命令を通知することを特徴とする請求項７に記載の仮想マシン管理プログラム。
【請求項９】
前記動的移行制御処理において、
前記動的移行判断処理で前記動的移行を実行すると決定した場合に、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行する旨の命令を通知し、
前記動的移行判断処理で前記動的移行の実行を中止すると決定した場合は、前記移行元サーバ及び前記移行先サーバに対し、当該動的移行の実行を中止する旨の命令を通知することを特徴とする請求項８に記載の仮想マシン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ間での仮想マシンの動的移行に関し、特に負荷に応じた仮想マシンの自動的な動的移行を実行する仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラムに関する。
【背景技術】
【０００２】
これまで、一台の電子計算機へは、１つの基本ソフトウェア（以下、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が導入され使用されるのが一般的であったが、近年、非特許文献１のような「サーバ仮想化ソフトウェア」と呼ばれるソフトウェアが提供されるようになり、１台のサーバを１つあるいは２つ以上の仮想マシンとして分割して、１つ１つの仮想マシンに別々のＯＳを導入して使用できるようになった。
【０００３】
また、サーバ仮想化ソフトウェアの中には、仮想マシンに関してライブマイグレーションや動的移行などと呼ばれる機能を持つものがあり、当該機能を使用すると、あるサーバで稼働中の仮想マシンを稼動状態のまま別のサーバへ移動させることが可能である（非特許文献１のソフトウェア製品ではＶＭｗａｒｅ  ＶＭｏｔｉｏｎという名称の動的移行機能を提供している）。
【０００４】
さらに、サーバ仮想化ソフトウェアの中には、サーバと仮想マシンの負荷に応じて仮想マシンを自動的に動的移行させる機能を持つものがあり、当該機能を使用すると、高負荷サーバ上の仮想マシンを低負荷サーバへ自動的に動的移行させ、サーバの負荷を自動的に平準化させることが可能である（非特許文献１のソフトウェア製品ではＶＭｗａｒｅ  ＤＲＳという名称で当該機能を提供している）。
【０００５】
この仮想マシンを自動的に動的移行させる技術に関して、特許文献１では、移行先のサーバを選択する手段として、サーバと仮想マシンの負荷情報だけではなく、仮想マシン上のアプリケーションソフトウェアの性質も加味する方法を提供している。
【０００６】
なお、上述したような仮想マシンにおける動的移行のみならず、プログラムやファイル等のマイグレーションにおいてサーバの負荷情報を参照する技術は複数開示されており、例えば、負荷情報に基づいてマイグレーションを実行するか否かを決定する技術が特許文献２や特許文献３に開示されている。
【０００７】
特許文献２に開示の技術では、転送元計算機ノード上で移動対象プロセスの原本の実行を継続しつつ移動対象プロセスが使用しているメモリ空間の内容を転送先計算機ノードにコピーし、次いで、転送元計算機ノードの実行記録とＣＰＵの使用率（移動対象プロセスのメモリ空間を移行元計算機ノードから移行先計算機ノードへコピーする際の、当該コピー開始から終了までの期間におけるＣＰＵ使用率）から、転送先計算機ノードでの実行結果に基づく再生処理の所要時間を推定し、当該推定に基づいて、転送先計算機ノードの移動対象プロセスのコピーに処理を移行するか否かを判断することで、プロセスマイグレーションを実行するか否かを決定している。
【０００８】
特許文献３に開示の技術では、マイグレーション（１つのファイルシステムが１つのＮＡＳ１１０の管理下から別のＮＡＳ１１０の管理下に移行すること）が完了した後、定期的に負荷情報を取得して、移行元のＮＡＳ１１０の負荷が下がればもう一度マイグレーションを行って、もとのＮＡＳ１１０にファイルシステムを戻すことで、動的な負荷分散を実現している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−１１６８５２号公報
【特許文献２】特開２００４−０７８４６５号公報
【特許文献３】特開２００８−０４０６４５号公報
【非特許文献】
【００１０】
【非特許文献１】ＶＭｗａｒｅ  ｖＳｐｈｅｒｅ，  ｈｔｔｐ：／／ｗｗｗ．ｖｍｗａｒｅ．ｃｏｍ／ｊｐ／ｐｒｏｄｕｃｔｓ／ｖｓｐｈｅｒｅ／
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところが、特許文献１では、以下の二点を考慮していない。一点目は、仮想マシンの動的移行には準備が必要であり、当該準備には少なからず時間が掛かることである。具体的には、仮想マシンを動的移行させるには、移行元サーバが保有する移行対象仮想マシンの全情報（メモリ内容など）を移行先サーバへ複製する必要があり、この作業には少なからず時間が掛かることである。二点目は、サーバと仮想マシンの負荷は常に変化しうるため、一点目で指摘した準備の前後でサーバと仮想マシンの負荷が変わってしまっている可能性があることである。
【００１２】
このため、特許文献１のように、サーバと仮想マシンのある瞬間の負荷に基づいて移行対象仮想マシンと移行先サーバを決定したとしても、動的移行の準備期間中に仮想マシンやサーバの負荷が変動した場合、実行した動的移行が不要なものになってしまったり、あるいは不適切なサーバへの動的移行になってしまったりするという問題があった。例えば、移行対象仮想マシンや移行元サーバの負荷が動的移行の準備期間中に低下した場合、動的移行させる必要性がなくなっている可能性があるため、その動的移行は不要なものになってしまうという問題があった。あるいは、移行対象仮想マシンや移行先サーバの負荷が動的移行の準備期間中に上昇した場合、移行先サーバの負荷が移行対象仮想マシンを受け入れることにより過剰になってしまう可能性があるため、その動的移行は不適切なものになってしまうという問題があった。
【００１３】
また、移行準備に掛かる時間の長さは、移行対象仮想マシンのメモリ容量が大きければ大きいほど長くなり、また移行元サーバと移行先サーバを接続するネットワークが混雑していればさらに長くなることから、特に大規模なシステムにおいて上記で指摘した問題点が顕著になるため、対策が求められている。
【００１４】
また、特許文献２に開示の技術は、転送先計算機ノードの性能やＣＰＵ使用率などの状態については何も考慮していないため、転送元計算機ノードと転送先計算機ノードの性能に差がある場合や、メモリコピー中に転送先計算機ノードのＣＰＵ使用率が変化した場合には、推定した再生処理の所要時間は無意味なものになり、移動対象プロセスのコピーに処理を移行するか否かの判断を適切に出来ないという問題があった。また、いったんプロセスマイグレーションを始めると、当該プロセスマイグレーションを途中で中止する処理がないため、メモリコピー中に転送元計算機ノードと転送先計算機ノードの負荷がどんなに変化しても、必ずプロセスを移動させようとするという問題があった。
【００１５】
また、特許文献３に開示の技術は、複数のＮＡＳ１１０の中から一番負荷の低いＮＡＳ１１０にファイルシステムをマイグレーションしているが、単に負荷の低いＮＡＳ１１０を選択しているだけで、対象ファイルシステムに掛かっている負荷を賄えるかどうかを考慮していないため、移行先のＮＡＳ１１０の負荷がどのような状態であれ、移行元のＮＡＳ１１０より負荷が低かれ、例え移行先のＮＡＳ１１０が対象ファイルシステムの負荷を賄えないとしても、マイグレーションされてしまう危険性があるという問題があった。
【００１６】
（発明の目的）
本発明の目的は、上述した不適切な動的移行を実行してしまう可能性があるという問題を解決し、動的移行を実行に移す直前の段階において改めて動的移行の必要性を判断することで不要な動的移行を中止することを可能にする仮想マシン管理装置、仮想マシン管理方法、仮想マシン管理プログラムを提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の仮想マシン管理装置は、複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置であって、複数のサーバに対し、サーバ及びサーバが搭載する仮想マシンの負荷情報を要求する負荷情報要求手段と、負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断手段を備え、動的移行判断手段は、動的移行の準備が完了した後の移行元サーバ及び移行先サーバの負荷情報に基づいて、準備が完了している当該動的移行を実行するか否かを決定する。
【００１８】
本発明の第１の仮想マシン管理方法は、複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置による仮想マシン管理方法であって、複数のサーバに対し、サーバ及びサーバが搭載する仮想マシンの負荷情報を要求する負荷情報要求ステップと、負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断ステップを含み、動的移行判断ステップで、動的移行の準備が完了した後の移行元サーバ及び移行先サーバの負荷情報に基づいて、準備が完了している当該動的移行を実行するか否かを決定する。
【００１９】
本発明の第１の仮想マシン管理プログラムは、複数のサーバ間における仮想マシンの動的移行を管理する仮想マシン管理装置に、複数のサーバに対し、サーバ及びサーバが搭載する仮想マシンの負荷情報を要求する負荷情報要求処理と、負荷情報に基づいて、移行元サーバと移行対象仮想マシン、及び移行先サーバを決定する動的移行判断処理を実行させ、動的移行判断処理で、動的移行の準備が完了した後の移行元サーバ及び移行先サーバの負荷情報に基づいて、準備が完了している当該動的移行を実行するか否かを決定する。
【発明の効果】
【００２０】
本発明によれば、動的移行の準備期間中に動的移行の必要性がなくなった場合は当該動的移行を中止することができ、これにより、仮想マシンの不要な動的移行を中止することが出来るようになる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態によるコンピュータシステムの構成を示すブロック図である。
【図２】第１の実施の形態によるコンピュータシステムの動作を示す流れ図である。
【図３】第１の実施の形態による仮想マシンの動的移行のイメージ図である。
【図４】本発明の仮想マシン管理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態によるコンピュータシステムの構成を示す図である。図１を参照すると、本実施の形態のコンピュータシステム１００は、仮想マシンが搭載可能な複数のサーバ１０−１〜１０−ｎと、仮想マシンの動的移行を行う仮想マシン管理装置３０とを備える。なお、ｎ（２以上の自然数）は、サーバの数を示している。
【００２４】
サーバ１０−１〜１０−ｎは、仮想マシン１２−１〜１２ｍと、仮想マシン処理装置１１−１〜１１−ｎを備える。ｍ（２以上の自然数）は仮想マシンの数を示している。なお、サーバ１０−１〜１０−ｎは、仮想マシンを１台も搭載しない状態となることもあり得る。
【００２５】
仮想マシン処理装置１１−１〜１１−ｎは、サーバ１０−１〜１０−ｎ、及び当該サーバ１０−１〜１０−ｎが搭載する仮想マシン（以下、搭載仮想マシン）の負荷情報を取得し、当該負荷情報を仮想マシン管理装置３０へ送信する負荷情報送信手段１１１−１〜１１１−ｎと、動的移行する仮想マシンに決定された仮想マシン（以下、移行対象仮想マシン）の動的移行を行う動的移行実行手段１１２−１〜１１２−ｎとを含む。
【００２６】
負荷情報送信手段１１１−１〜１１１−ｎは、仮想マシン管理装置３０から負荷情報の要求があると、サーバ１０−１〜１０−ｎ及び搭載仮想マシンの負荷情報を取得し、仮想マシン管理装置３０へ当該負荷情報を送信する機能を有する。
【００２７】
動的移行実行手段１１２−１〜１１２−ｎは、仮想マシン管理装置３０から動的移行の準備を開始する旨の指示（以下、準備開始命令）を受けると、動的移行のための準備を行い、準備が完了した旨（準備完了通知）を仮想マシン装置３０へ通知する機能を有する。
【００２８】
具体的には、準備開始命令を受けた移行元サーバの動的移行実行手段１１２−１〜１１２−ｎは、移行元サーバが保有している移行対象仮想マシンに関する全情報（メモリ内容等）を複製して移行先サーバへ渡した後、準備完了通知を仮想マシン管理装置３０へ送信する。
【００２９】
また、準備開始命令を受けた移行先サーバの動的移行実行手段１１２−１〜１１２−ｎは、移行元サーバから移行対象仮想マシンに関する全情報を受け取ると、準備完了通知を仮想マシン管理装置へ送信する。
【００３０】
また、動的移行実行手段１１２−１〜１１２−ｎは、仮想マシン管理装置３０から、既に準備した動的移行の実行の命令（以下、動的移行実行命令）を受けると、移行対象仮想マシンを移行先のサーバ１０へ動的移行する機能を有する。なお、動的移行については、本発明の技術分野における当業者にとってよく知られており、方式そのものは本発明とは直接的には関係しないため、その詳細については省略する。
【００３１】
また、動的移行実行手段１１２−１〜１１２−ｎは、仮想マシン管理装置３０から、動的移行の中止（キャンセル）の命令（以下、動的移行実行中止命令）を受けると、動的移行のために準備していた情報を全て廃棄する機能を有する。
【００３２】
仮想管理マシン管理装置３０は、サーバ１０−１〜１０−ｎに対し、サーバ１０−１〜１０−ｎ及び搭載仮想マシンの負荷情報を要求する負荷情報要求手段３１と、搭載仮想マシンの動的移行を行うか否かを判断する動的移行判断手段３２と、移行元サーバ及び移行先サーバに動的移行の準備、及び実行又は中止を命令する動的移行制御手段３３とを含む。
【００３３】
負荷情報要求手段３１は、サーバ１０−１〜１０−ｎに対し、負荷情報を要求する機能を有する。なお、負荷情報の要求タイミングは自由に設定可能である。
【００３４】
また、負荷情報要求手段３１は、動的移行制御手段３３が移行元サーバ及び移行先サーバの双方から動的移行の準備完了通知を受け取ると、当該移行元サーバと移行先サーバに対し、負荷情報を再度要求する機能を有する。以下、準備完了通知後に移行元サーバ及び移行先サーバから取得した負荷情報を直前負荷情報と称す。
【００３５】
動的移行判断手段３２は、負荷情報要求手段３１が取得した負荷情報に基づいて、サーバ１０−１〜１０−ｎに対し、搭載仮想マシンの動的移行の必要性があるか否かを判断する機能を有する。なお、負荷がどのような場合に動的移行が必要とみなすかは任意に設定可能であり、例えばサーバや仮想マシンのＣＰＵ使用率やメモリ使用率、又はそれらの組合せ等、自由に決めることが出来る。
【００３６】
また、動的移行判断手段３２は、動的移行の必要性があると判断した移行元サーバに対し、当該移行元サーバの搭載仮想マシンのどれを移行対象仮想マシンとするか、及び、サーバ１０−１〜１０−ｎのどれを移行先サーバとするかを、負荷情報に基づいて決定する機能を有する。なお、当該決定の基準は、自由に設定可能である。
【００３７】
また、動的移行判断手段３２は、負荷情報要求手段３１が取得した直前負荷情報に基づいて、動的移行の準備が完了している当該動的移行を実行するか否か判断する機能を有する。なお、当該動的移行の中止判断の要因としては、動的移行の準備期間中に移行対象仮想マシンや移行元サーバの負荷が低下しており、直前負荷情報を取得した時点ではもはや動的移行の必要性がない場合や、あるいは、動的移行の準備期間中に移行対象仮想マシンや移行先サーバの負荷が上昇しており、直前負荷情報を取得した時点では移行先サーバがもはや適切な移行先ではない場合などが考えられる。
【００３８】
動的移行制御手段３３は、動的移行判断手段３２が移行元サーバと移行対象仮想マシン、及び移行先サーバを決定すると、当該移行元サーバ及び移行先サーバに対し、移行対象仮想マシンの動的移行の準備を開始する旨の準備開始命令を通知する機能を有する。
【００３９】
また、動的移行制御手段３３は、移行元サーバ及び移行先サーバから、動的移行の準備完了通知を受け取る機能を有する。
【００４０】
また、動的制御手段３３は、動的移行判断手段３２が直前負荷情報に基づいてした動的移行をすべきか否かの判断に基づいて、動的移行実効命令又は動的移行実効中止命令を、移行元サーバ及び移行先サーバに通知する機能を有する。
【００４１】
具体的には、動的制御手段３３は、動的移行判断手段３２が、直前負荷情報に基づいても当該動的移行すべきであると判断した場合は、移行元サーバ及び移行先サーバに対し、動的移行実行命令を通知する。
【００４２】
反対に、動的移行制御手段３２は、動的移行判断手段３２が、直前負荷情報に基づくと、当該動的移行を実行すべきではない、あるいは実行する必要がないと判断した場合は、移行元サーバ及び移行先サーバに対し、動的移行実行中止命令を通知する。
【００４３】
（第１の実施の形態の動作の説明）
次に、図面を参照して、本実施の形態の動作について詳細に説明する。
【００４４】
本実施の形態におけるコンピュータシステム１００の動作について、図２、図３を用いて説明する。図２は、本実施の形態における仮想マシン管理装置３０の動作を示した流れ図であり、図３は本実施の形態における仮想マシンの動的移行の様子を示したイメージ図である。
【００４５】
まず、仮想マシン管理装置３０の負荷情報要求手段３１が、任意のタイミングで、サーバ１０−１〜１０−ｎに対して、サーバ１０−１〜１０−ｎ及び搭載仮想マシンの負荷情報を要求する（ステップＳ２０１）。
【００４６】
サーバ１０−１〜１０−ｎは、当該負荷情報の要求を受け取ると、負荷情報送信手段１１１−１〜１１−ｎが、サーバ１０−１〜１０−ｎ及び搭載仮想マシンの負荷情報を取得し、当該負荷情報を仮想マシン管理装置３０へ送信する（ステップＳ２０２）。
【００４７】
仮想マシン管理装置３０は、サーバ１０−１〜１０−ｎから負荷情報が送られてくると、当該負荷情報に基づいて、動的移行判断手段３２が、サーバ１０−１〜１０−ｎに対し、搭載仮想マシンの動的移行の必要性があるか否かを判断する（ステップＳ２０３）。
【００４８】
動的移行判断手段３２による当該判断の結果、動的移行の必要性があるサーバがなかった場合、仮想マシン管理装置３０は、再びステップＳ２０１へ戻る（ステップＳ２０３”ＮＯ”）。
【００４９】
動的移行判断手段３２による当該判断の結果、動的移行の必要性があるサーバが有った場合は（ステップＳ２０３”ＹＥＳ”）、動的移行判断手段３２は、次いで、動的移行の必要性があると判断したサーバ（移行元サーバ）の搭載仮想マシンのどれを移行対象仮想マシンとするか、及び、サーバ１０−１〜１０−ｎのどれを移行先サーバとするかを、負荷情報に基づいて決定する（ステップＳ２０４）。ここで、以下の説明においては、便宜上、移行元サーバをサーバ１０−１、移行先サーバをサーバ１０−２、移行対象仮想マシンを仮想マシン１２−２として説明を行うこととする。
【００５０】
次いで、動的移行制御手段３３が、移行元サーバであるサーバ１０−１及び移行先サーバであるサーバ１０−２に対して、仮想マシン１２−２の動的移行の準備を開始する旨の準備開始命令を通知する（ステップＳ２０５）。
【００５１】
サーバ１０−１は、準備開始命令を受け取ると、動的移行実行手段１１２−１が、仮想マシン１２−２に関する全情報を複製してサーバ１０−２へ渡した後、準備完了通知を仮想マシン管理装置３０へ送信し、一方で、サーバ１０−２は、当該全情報を受け取った後、同じく準備完了通知を仮想マシン管理装置３０へ送信する（ステップＳ２０６）。
【００５２】
動的移行判断手段３２は、サーバ１０−１及びサーバ１０−２の双方から準備完了通知を受け取ると、負荷情報要求手段３１が、サーバ１０−１及びサーバ１０−２に対して、再度負荷情報を要求する（ステップＳ２０７）。
【００５３】
サーバ１０−１及びサーバ１０−２は、再度負荷情報の要求を受け取ると、負荷情報送信手段１１１−１及び負荷情報送信手段１１１−２が、負荷情報を再度取得し、当該負荷情報（直前負荷情報）を仮想マシン管理装置３０へ送信する（ステップＳ２０８）。
【００５４】
仮想マシン管理装置３０は、サーバ１０−１及びサーバ１０−２から直前負荷情報が送られてくると、当該直前負荷情報に基づいて、動的移行判断手段３２が、動的移行の準備が完了している仮想マシン１２−２の動的移行動的移行を実行するか否か判断する（ステップＳ２０９）。
【００５５】
動的移行判断手段３２が、当該動的移行を実行すべきであると判断した場合は（ステップＳ２０９”ＹＥＳ”）、動的移行制御手段３３が、サーバ１０−１及びサーバ１０−２に対し、動的移行実行命令を通知する（ステップＳ２１０）。
【００５６】
次いで、当該動的移行実行命令を受け取ったサーバ１０−１及びサーバ１０−２は、既に準備済みの当該動的移行を実行する（ステップＳ２１１）。ここで、当該動的移行のイメージを図３に示す。
【００５７】
動的移行判断手段３２が、当該動的移行を実行すべきではない、あるいは実行する必要がないと判断した場合は（ステップＳ２０９”ＮＯ”）、動的移行制御手段３３が、サーバ１０−１及びサーバ１０−２に対し、動的移行実行中止命令を通知する（ステップＳ２１２）。
【００５８】
次いで、当該動的移行実行中止命令を受け取ったサーバ１０−１及びサーバ１０−２は、当該動的移行のために準備した全情報を破棄する（ステップＳ２１３）。
【００５９】
次いで、ステップＳ２１１で動的移行を実行した後、若しくはステップＳ２１３で動的移行の実行を中止した後は、ステップＳ３０１へ戻る。
【００６０】
（第１の実施の形態による効果）
次に本実施の形態の効果について説明する。
【００６１】
第１の効果は、本実施の形態によれば、動的移行の準備期間中に移行対象仮想マシンや移行元サーバの負荷が低下した場合に、仮想マシンの不要な動的移行を中止することが可能になる。
【００６２】
その理由は、動的移行の準備完了後にサーバと仮想マシンの負荷を再確認することにより、動的移行を実行に移す直前の段階において改めて、動的移行の必要性を判断しているからである。
【００６３】
第２の効果は、本実施の形態によれば、動的移行の準備期間中に移行対象仮想マシンや移行先サーバの負荷が上昇した場合に、移行対象仮想マシンが不適切なサーバへ動的移行してしまうのを回避できることにある。
【００６４】
その理由は、動的移行の準備完了後にサーバと仮想マシンの負荷を再確認することにより、動的移行を実行に移す直前の段階において改めて、移行先サーバが移行対象仮想マシンを受け入れるのに適しているか否かを再判定しているからである。
【００６５】
上記第１の効果及び第２の効果は、大規模システムにおいて特に顕著である。なぜならば、動的移行の準備に掛かる時間の長さは、移行対象仮想マシンのメモリ容量が大きければ大きいほど長くなり、また移行元サーバと移行先サーバを接続するネットワークが混雑していればさらに長くなるため、こういった条件が揃いやすい大規模システムでは、動的移行の準備に掛かる時間が長くなりやすく、その期間に負荷が変動する可能性がより高くなるためである。
【００６６】
第３の効果は、本実施の形態によれば、動的移行の準備完了後に行う負荷の再確認が短時間で行えることから、再確認中の負荷変動が少なくなるため、準備した動的移行を実行に移しても、実行した動的移行が不要なものになるあるいは不適切なものになる可能性が低いことである。
【００６７】
その理由は、負荷の再確認対象を移行元サーバおよび移行先サーバおよび移行対象仮想マシンに限定することによって、全てのサーバおよび全ての仮想マシンを再確認対象とする場合に比べて、負荷の再確認に掛かる時間が最短になるようにしているからである。
【００６８】
次に、本発明の仮想マシン管理装置３０のハードウェア構成例について、図４を参照して説明する。図４は、本発明の仮想マシン管理装置３０のハードウェア構成例を示すブロック図である。
【００６９】
図４を参照すると、本発明の仮想マシン管理装置３０は、一般的なコンピュータ装置と同様のハードウェア構成であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部８０２、ネットワークを介してデータの送受信を行う通信部８０３、入力装置８０５や出力装置８０６及び記憶装置８０７と接続してデータの送受信を行う入出力インタフェース部８０４、上記各構成要素を相互に接続するシステムバス８０８を備えている。記憶装置８０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
【００７０】
本発明の本発明の仮想マシン管理装置３０の負荷情報要求手段３１、動的移行判断手段３２、及び動的移行制御手段３３は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置８０７に格納し、そのプログラムを主記憶部８０２にロードしてＣＰＵ８０１で実行することにより、ソフトウェア的に実現することも可能である。
【産業上の利用可能性】
【００７１】
本発明によれば、仮想マシンの動的移行のみならず、プログラムやＯＳ等のマイグレーションを行うシステムにおいても適用可能である。
【００７２】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【符号の説明】
【００７３】
１００：コンピュータシステム
１０−１、１０−２、１０−ｎ：サーバ
１１−１、１１−２、１１−ｎ：仮想マシン処理装置
１１１−１、１１１−２、１１１−ｎ：負荷情報送信手段
１２−１、１２−２、１２−３、１２−ｍ：仮想マシン
１１２−１、１１２−２、１１２−ｎ：動的移行制御手段
３０：仮想マシン管理装置
３１：負荷情報要求手段
３２：動的移行判断手段
３３：動的移行制御手段
【図１】
0005549189.tif 000002
【図２】
0005549189.tif 000003
【図３】
0005549189.tif 000004
【図４】
0005549189.tif 000005