(57)【特許請求の範囲】
【請求項１】
仮想マシンが動作する複数の仮想化サーバを備え、
前記仮想化サーバが、
前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、
前記仮想化サーバに障害が発生した場合に、メモリダンプを実行して前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を含むダンプファイルを取得し、前記ダンプファイルを他の前記仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、
前記仮想マシンエミュレート手段が、
障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報に基づいて、前記仮想マシンを復元する
ことを特徴とする仮想化システム。
【請求項２】
前記仮想デバイスの内部状態の情報が、仮想ＣＰＵに関する情報、仮想メモリに関する情報、仮想Ｉ／Ｏデバイスに関する情報を含むことを特徴とする請求項１に記載の仮想化システム。
【請求項３】
前記仮想マシンエミュレート手段が、
前記仮想Ｉ／Ｏデバイスについて発行中のＩ／Ｏ要求があった場合に、前記仮想Ｉ／Ｏデバイスの種類に基づいて、Ｉ／Ｏ要求の再発行、Ｉ／Ｏ要求のエラー処理、Ｉ／Ｏ要求の正常終了の何れかを行う
ことを特徴とする請求項２に記載の仮想化システム。
【請求項４】
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を複数回実行しても問題ない場合は、当該Ｉ／Ｏ要求を再発行する
ことを特徴とする請求項３に記載の仮想化システム。
【請求項５】
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求をエラーとして処理すると、仮想ＯＳがリトライする場合は、前記発行中のＩ／Ｏ要求をすべてエラーとして終了する処理を行う
ことを特徴とする請求項３に記載の仮想化システム。
【請求項６】
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、前記発行中のＩ／Ｏ要求を全て正常終了として終了する処理を行う
ことを特徴とする請求項３に記載の仮想化システム。
【請求項７】
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域を優先して前記ダンプファイルに記録することを特徴とする請求項１から請求項６の何れか１項に記載の仮想化システム。
【請求項８】
仮想マシンが動作する仮想化サーバであって、
前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、
前記仮想化サーバに障害が発生した場合に、メモリダンプを実行して前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を含むダンプファイルを取得し、前記ダンプファイルを他の前記仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、
前記仮想マシンエミュレート手段が、
障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報に基づいて、前記仮想マシンを復元する
ことを特徴とする仮想化サーバ。
【請求項９】
仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーション方法であって、
前記仮想化サーバの仮想マシンエミュレート手段が、前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納ステップと、
前記仮想化サーバのメモリダンプ採取処理手段が、前記仮想化サーバに障害が発生した場合に、メモリダンプを実行して前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を含むダンプファイルを取得し、前記ダンプファイルを他の前記マイグレーション方法へ転送するメモリダンプ採取処理ステップと、
前記仮想マシンエミュレート手段が、障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報に基づいて、前記仮想マシンを復元する復元ステップと
を有することを特徴とするマイグレーション方法。
【請求項１０】
仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーションプログラムであって、
前記仮想化サーバの仮想マシンエミュレート手段に、前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納処理を実行させ、
前記仮想化サーバのメモリダンプ採取処理手段に、前記仮想化サーバに障害が発生した場合に、メモリダンプを実行して前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を含むダンプファイルを取得し、前記ダンプファイルを他の前記マイグレーションプログラムへ転送するメモリダンプ採取処理を実行させ、
前記仮想マシンエミュレート手段に、障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報に基づいて、前記仮想マシンを復元する復元処理を実行させる
ことを特徴とするマイグレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化システムに関し、特に、障害発生時の仮想マシンのマイグレーション技術に関する。
【背景技術】
【０００２】
仮想化システムにおいては、仮想化サーバに障害が発生した場合、該仮想化サーバで動作している仮想マシンにもシステム停止等の影響の発生が考えられる。
【０００３】
仮想化サーバで発生する障害に対する仮想マシンの防護策としては、動作中の仮想マシンを、ＯＳを停止させることなく他の仮想化サーバへ移動させるライブマイグレーション手法が挙げられる。ライブマイグレーションは既に実用化されている機能であり、その実現方法については、例えば非特許文献１や非特許文献２等で解説されている。
【０００４】
しかし、仮想化サーバのストールなど重障害を想定する場合は、仮想化サーバが操作不可能となるまでにライブマイグレーションが間に合うこと、及び仮想マシンが実行していた処理をできるだけ失わないことなどを工夫する必要がある。
【０００５】
この問題を解決するための技術として、例えば特許文献１や特許文献２のような手法が提案されている。
【０００６】
特許文献１に開示の技術は、仮想化サーバの障害を予兆し仮想マシンのマイグレーションを行うものであり、特許文献２に開示の技術は、定期的な仮想マシンのスナップショットから障害発生前の状態を復元するものである。
【０００７】
また、関連技術として、特許文献３から特許文献５の技術が開示されている。
【０００８】
特許文献３に開示の技術は、障害が発生しているＯＳ以外のファームウエアでメモリダンプを実行するものである。
【０００９】
特許文献４に開示の技術は、ゲストＯＳにパニックが発生すると、ゲストＯＳのメモリ部をホストＯＳによりダンプ部に保存するものである。
【００１０】
特許文献５に開示の技術は、仮想サーバを管理するハイパーバイザがＯＳ及びアプリケーションのイメージを移行先物理サーバにコピーするものである。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特表２００７−５３６６５７号公報
【特許文献２】特開２００９−０８０６９２号公報
【特許文献３】特開２０１１−２３２９８６号公報
【特許文献４】特開２０１０−０８６１８１号公報
【特許文献５】特開２００９−１８１４１８号公報
【非特許文献】
【００１２】
【非特許文献１】Ｕｒｉ  Ｌｕｂｌｉｎ、”ＫＶＭ  Ｌｉｖｅ  Ｍｉｇｒａｔｉｏｎ”、［ｏｎｌｉｎｅ］、［平成２３年３月１３日検索］、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｌｉｎｕｘ−ｋｖｍ．ｏｒｇ／ｗｉｋｉ／ｉｍａｇｅｓ／５／５ａ／ＫｖｍＦｏｒｕｍ２００７＄Ｋｖｍ＿Ｌｉｖｅ＿Ｍｉｇｒａｔｉｏｎ＿Ｆｏｒｕｍ＿２００７．ｐｄｆ＞
【非特許文献２】Ｌｉｎｕｘ内部ドキュメント、”Ｍｉｇｒａｔｉｏｎ”［ｏｎｌｉｎｅ］、［平成２３年３月１３日検索］、インターネット＜ｈｔｔｐ：／／ｇｉｔ．ｋｅｒｎｅｌ．ｏｒｇ／？ｐ＝ｖｉｒｔ／ｋｖｍ／ｑｅｍｕ−ｋｖｍ．ｇｉｔ；ａ＝ｂｌｏｂ＿ｐｌａｉｎ；ｆ＝ｄｏｃｓ／ｍｉｇｒａｔｉｏｎ．ｔｘｔ；ｈｂ＝ＨＥＡＤ＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１に開示の技術は、仮想化サーバの障害を予兆し仮想マシンのマイグレーションを行うものであるため、予兆のない障害に対しては適用できない。
【００１４】
また、特許文献２に開示の技術は、定期的な仮想マシンのスナップショットから障害発生前の状態を復元するものであり、必ずしも障害発生直前の仮想マシン状態を再現できるとは限らない。
【００１５】
さらに、特許文献３から特許文献５に開示の技術では、ゲストＯＳの内部状態や構成情報が記録されている場所を特定できないという問題がある。
【００１６】
（発明の目的）
本発明の目的は、上述の課題を解決し、障害発生直前の仮想マシンの状態を復元する仮想化システム、仮想化サーバ、マイグレーション方法、マイグレーションプログラムを提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の仮想化システムは、仮想マシンが動作する複数の仮想化サーバを備え、仮想化サーバが、仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、ダンプファイルをマイグレーション先の仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、仮想マシンエミュレート手段が、障害が発生した仮想化サーバから受信したダンプファイルに含まれる仮想マシンの情報に基づいて、仮想マシンを復元する。
【００１８】
本発明の第１の仮想化サーバは、仮想マシンが動作する仮想化サーバであって、仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、ダンプファイルをマイグレーション先の仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、仮想マシンエミュレート手段が、障害が発生した仮想化サーバから受信したダンプファイルに含まれる仮想マシンの情報に基づいて、仮想マシンを復元する。
【００１９】
本発明の第１のマイグレーション方法は、仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーション方法であって、仮想化サーバの仮想マシンエミュレート手段が、仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納ステップと、仮想化サーバのメモリダンプ採取処理手段が、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、ダンプファイルをマイグレーション先のマイグレーション方法へ転送するメモリダンプ採取処理ステップと、仮想マシンエミュレート手段が、障害が発生した仮想化サーバから受信したダンプファイルに含まれる仮想マシンの情報に基づいて、仮想マシンを復元する復元ステップとを有する。
【００２０】
本発明の第１のマイグレーションプログラムは、仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーションプログラムであって、仮想化サーバの仮想マシンエミュレート手段に、仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納処理を実行させ、仮想化サーバのメモリダンプ採取処理手段に、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、ダンプファイルをマイグレーション先のマイグレーションプログラムへ転送するメモリダンプ採取処理を実行させ、仮想マシンエミュレート手段に、障害が発生した仮想化サーバから受信したダンプファイルに含まれる仮想マシンの情報に基づいて、仮想マシンを復元する復元処理を実行させる。
【発明の効果】
【００２１】
本発明によれば、障害発生直前の仮想マシンの状態を復元することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施の形態による仮想化システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態による仮想化システムの動作を示すフローチャートである。
【図３】本発明の第３の実施の形態による仮想化システムの動作を示すフローチャートである。
【図４】本発明の仮想化システムの最小限の構成を示すブロック図である。
【図５】本発明の仮想化サーバのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２３】
本発明の上記及び他の目的、特徴及び利点を明確にすべく、添付した図面を参照しながら、本発明の実施形態を以下に詳述する。なお、上述の本願発明の目的のほか、他の技術的課題、その技術的課題を解決する手段及びその作用効果についても、以下の実施形態による開示によって明らかとなるものである。
【００２４】
なお、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２５】
（第１の実施の形態）
本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２６】
図１は、本発明の第１の実施の形態による仮想化システム１０００の構成を示すブロック図である。
【００２７】
図１を参照すると、本実施の形態による仮想化システム１０００は、仮想化サーバ１０（１０−１、１０−２）と、外部ストレージ１００とを備える。
【００２８】
仮想化サーバ１０は、仮想マシン２０と、仮想マシンエミュレート手段３０と、ゲストＯＳ４０と、物理メモリ５０と、メモリダンプ採取処理手段６０とを含む。
【００２９】
メモリダンプ採取処理手段６０は、仮想化サーバ１０で障害が発生した場合にメモリダンプを実行する機能を有する。
また、メモリダンプ採取処理手段６０は、採取したダンプファイルをマイグレーション先の仮想化サーバ１０へ転送する機能を有する。
【００３０】
仮想マシンエミュレート手段３０は、マイグレーション元の仮想化サーバ１０から受信したダンプファイルに基づいて、仮想マシン２０の復元を行う機能を有する。
【００３１】
また、仮想マシンエミュレート手段３０は、仮想マシン２０を仮想化サーバ１０上に作成するとき、仮想ＣＰＵ２１、仮想メモリ２２、仮想Ｉ／Ｏデバイス２３、２４などの仮想デバイスの割り当てを行う。
【００３２】
また、仮想マシンエミュレート手段３０は、仮想マシン２０の構成情報や仮想デバイスの内部状態を、固定のアドレスを持つ専用メモリ領域５１に格納する機能を有する。これにより、障害発生後に採取するメモリダンプから仮想マシン２０の構成情報や仮想デバイスの内部状態を抜き出すことが可能となる。
【００３３】
なお、専用メモリ領域５１が固定のアドレスを持たずに、メモリダンプ中の仮想マシンエミュレート手段３０のプロセス情報をたどって記録場所を特定する方法でもよい。
【００３４】
本発明は、上述の構成を有し、仮想化サーバでストール等の障害が発生した時に採取するメモリダンプの情報を元に、マイグレーション先の仮想化サーバで仮想ＯＳの状態を復旧して、マイグレーションを行う機能を提供する。
【００３５】
また、本発明では、マイグレーション元の仮想化サーバにおいて、仮想マシンの構成情報や仮想デバイスの内部状態を、障害発生後に採取するメモリダンプから抜き出せるように特定可能なメモリ領域に格納する。また、障害発生時にメモリダンプ中に含まれる情報を元にマイグレーション先のホストで仮想マシンを再作成・設定した後で、障害発生時点で仮想Ｉ／Ｏデバイスに仕掛かり中の要求があった場合に、復元処理を行い、マイグレーション先の仮想化サーバと整合性を確保することで、マイグレーションを実現する。
【００３６】
（第１の実施の形態の動作の説明）
次に、本実施の形態による仮想化システム１０００の動作について、図面を参照して詳細に説明する。
【００３７】
図２は、本実施の形態による仮想化システム１００のマイグレーションの処理動作を示すフローチャートである。以下、仮想化サーバ１０−１で障害が発生した場合を例として具体的に説明する。マイグレーション先は仮想化サーバ１０−２とする。
【００３８】
仮想化サーバ１０−１で障害が発生した場合（ステップＳ２０１）、仮想化サーバ１０−１のメモリダンプ採取処理手段６０が、メモリダンプを実行する（ステップＳ２０２）。
【００３９】
次いで、メモリダンプ採取処理手段６０が、メモリダンプの実行により採取したダンプファイルを、マイグレーション先である仮想化サーバ１０−２へネットワークを用いて転送する（ステップＳ２０３）。なお、仮想化サーバ１０−２へ転送する代わりに、仮想化サーバ１０−１と仮想化サーバ１０−２で共有しているディスク等に転送することで、仮想化サーバ１０−２において参照可能とすることとしてもよい。
【００４０】
仮想化サーバ１０−２は、ダンプファイルの受信等で仮想化サーバ１０−１の障害を検知すると、仮想マシンエミュレート手段３０が、ダンプファイルに記録された仮想マシン２０の構成情報を元に、仮想デバイスを割り当てて仮想マシン２０を作成する（ステップＳ２０４）。
【００４１】
次いで、仮想マシンエミュレート手段３０は、ダンプファイルに記録された仮想マシン２０の内部情報を元に、作成した仮想マシンの内部状態を設定する（ステップＳ２０５）。内部状態の設定処理は、ダンプファイル中に記録されている仮想マシン２０の内部状態を、作成した仮想マシン２０の仮想デバイスの内部状態に対して設定する。
【００４２】
内部状態の設定については、具体的には以下のとおりである。
【００４３】
仮想ＣＰＵについて、メモリダンプ中に記録されている仮想マシン２０の情報を元に、ＣＰＵのレジスタ内容や仮想ＣＰＵの設定を復元する。
【００４４】
仮想メモリについて、メモリダンプ中に記録されている仮想マシン２０の情報を元に、仮想マシン２０の使用していたメモリを特定し、その内容を仮想メモリ２２にコピーする。あわせて仮想マシン２０が必要とするメモリ管理情報を設定する。
【００４５】
仮想Ｉ／Ｏデバイスについて、メモリダンプ中に記録されている仮想マシン２０の情報を元に、各仮想Ｉ／Ｏデバイス２３、２４の内部状態を設定する。
【００４６】
次いで、仮想マシンエミュレート手段３０は、仮想デバイスの復元処理を行う（ステップＳ２０６）。復元処理は、メモリダンプ中に記録された仮想マシンの内部状態を元に、作成した仮想マシン２０の仮想デバイス内部状態を復元する。
【００４７】
仮想Ｉ／Ｏデバイスについて、仮想マシンエミュレート手段３０は、仮想化サーバ１０−１で処理を行っていた仕掛かり中のＩ／Ｏ要求があった場合には、以下の処理により、仮想デバイスの内部状態と仮想化サーバ１０−２の整合性を確保する。
【００４８】
１．Ｉ／Ｏ要求を再実行する。
Ｉ／Ｏデバイスの種類によって、同一のＩ／Ｏ要求を複数回実行しても問題がない場合は、仮想化サーバ１０−２に対して同じＩ／Ｏ要求を発行することで、仮想デバイスの内部状態と整合性を持たせることができる。
【００４９】
２．仕掛かり中のＩ／Ｏ要求をエラーとする。
Ｉ／Ｏデバイスの種類によって、Ｉ／Ｏ要求をエラーとして返した場合に、仮想ＯＳがリトライする場合は、発行中のＩ／Ｏ要求を全てエラーとして終わらせることで、仮想デバイスの内部状態と整合性を持たせる。
【００５０】
３．仕掛かり中のＩ／Ｏ要求を正常終了とする。
Ｉ／Ｏデバイスの種類によって、Ｉ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、発行中のＩ／Ｏ要求を全て正常終了として終わらせることで、仮想デバイスの内部状態と整合性を持たせる。
【００５１】
仮想デバイスの復元処理を行った結果、Ｉ／Ｏデバイスの内部状態と仮想化サーバ１０−２の整合性を確保できない場合、マイグレーション処理は中止される（ステップＳ２０７”ＮＯ”）。
【００５２】
整合性が取れた場合（ステップＳ２０７”ＹＥＳ”）、仮想マシンエミュレート手段３０は、復元した仮想マシン２０の実行を開始する（ステップＳ２０８）。
【００５３】
仮想マシン２０の実行が成功した場合は、マイグレーション処理は正常に終了し（ステップＳ２０９”ＹＥＳ”）、再開に失敗した場合は、マイグレーション処理は中止される（ステップＳ２０９”ＮＯ”）。
【００５４】
（第１の実施の形態による効果）
本実施の形態による第１の効果は、仮想化サーバで障害が発生した時点の仮想マシンの状態でマイグレーションできることにある。
【００５５】
その理由は、障害ホストで採取したメモリダンプファイルから、仮想マシンの構成情報や仮想デバイスの内部状態を抜き出し、その情報をもとに仮想マシンを作成するためである。
【００５６】
本実施の形態による第２の効果は、仮想化サーバの障害発生後に仮想マシンのマイグレーションを行えることにある。
【００５７】
その理由は、マイグレーション処理はマイグレーション先のホストが行うため、障害発生ホストが動作不能であっても影響がないためである。
【００５８】
本実施の形態による第３の効果は、仮想化サーバのメモリダンプの完了を待たずに仮想マシンのマイグレーションを行えることにある。
【００５９】
その理由は、仮想マシンの再開に必要な情報だけをマイグレーション先ホストに転送できるためである。
【００６０】
本実施の形態による第４の効果は、仮想マシンが復旧不可である場合に早期に検出できることにある。
【００６１】
その理由は、仮想マシン用途のメモリ領域のメモリチェックを、タイミングを選んで行うことができるためである。
【００６２】
ここで、本発明の課題を解決できる最小限の構成を図４に示す。仮想化システム１０００が、仮想マシン２０が動作する複数の仮想化サーバ１０を備え、仮想化サーバ１０が、仮想マシン２０の構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域５１に格納する仮想マシンエミュレート手段３０と、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、ダンプファイルをマイグレーション先の仮想化サーバ１０へ転送するメモリダンプ採取処理手段６０とを含み、仮想マシンエミュレート手段３０が、障害が発生した仮想化サーバ１０から受信したダンプファイルに含まれる仮想マシン２０の情報に基づいて、仮想マシン２０を復元することで、上述した本発明の課題を解決することができる。
【００６３】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明を行う。
【００６４】
第１の実施の形態の構成に加え、メモリダンプ採取処理手段６０が以下の機能を持つことで、効率的なマイグレーションを実現することができる。
【００６５】
（１）仮想化サーバ１０でのメモリダンプ実行時に、マイグレーション対象の仮想マシン２０で使用されていた物理メモリ領域を優先してメモリダンプファイルに記録する機能
（２）仮想マシン２０で使用されていた物理メモリ領域だけを、別のメモリダンプファイルに記録する機能
（３）仮想マシン２０で使用されていた物理メモリ領域のメモリダンプファイルへの出力が終わり次第、そのファイルをマイグレーション先の仮想化サーバ１０に転送する機能
【００６６】
これらの機能により、メモリダンプの完了を待たずに、先行して対象の仮想マシン２０のマイグレーションを行うことができる。
【００６７】
また、メモリダンプ採取時、メモリダンプデータの転送時、マイグレーション先ホストでの仮想マシン再開時等のタイミングで仮想マシン２０のメモリ領域のメモリチェックを行い、異常を検出した場合は仮想マシン２０のマイグレーションを中断する機能を設けても良い。これにより仮想マシン２０が復旧不可である場合の不要な処理を軽減し、効率的なマイグレーションを実現することができる。
【００６８】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明を行う。
【００６９】
第１の実施の形態では、マイグレーション元の仮想化サーバ１０からマイグレーション先の仮想化サーバ１０にダンプファイルを転送したのに対して、本実施の形態では、マイグレーション元の仮想化サーバ１０からマイグレーション先の仮想化サーバ１０に、マイグレーションに必要な情報だけを転送する。これにより、マイグレーション先の仮想化サーバ１０で動作する処理が、既存のライブマイグレーション処理に近い形で実現できる特長がある。
【００７０】
仮想化サーバ１０で仮想マシン２０を作成する時、仮想マシンエミュレート手段３０は、仮想ＣＰＵ、仮想メモリ、仮想Ｉ／Ｏデバイスなどの仮想デバイスの割り当てを行う。仮想マシンエミュレート手段３０は、仮想マシン２０の構成情報や仮想デバイスの内部状態を、メモリダンプ取得後に採取されたダンプファイルから抜き出せるように特定可能なメモリ領域に格納する。
【００７１】
以下、仮想化サーバ１０−１で障害が発生した場合を例として具体的に説明する。マイグレーション先は仮想化サーバ１０−２とする。
【００７２】
仮想化サーバ１０−１で障害が発生した場合、仮想化サーバ１０−１のメモリダンプ採取処理手段６０は、障害時マイグレーション処理を実行する。障害時マイグレーション処理の手順を図３に示す。
【００７３】
仮想化サーバ１０−１で障害が発生すると（ステップＳ３０１）、仮想化サーバ１０−１のメモリダンプ採取処理手段６０が、仮想化サーバ１０−２に対しライブマイグレーション要求を送信する（ステップＳ３０２）。
【００７４】
仮想化サーバ１０−２は、該要求を受け取ると、仮想マシンエミュレーション手段３０が、仮想マシンの新規作成を行う（ステップＳ３０３）。
【００７５】
次いで、仮想化サーバ１０−１のメモリダンプ採取処理手段６０は、仮想マシン２０のメモリ内容を仮想化サーバ１０−２に転送する（ステップＳ３０４）。
【００７６】
また、仮想化サーバ１０−１のメモリダンプ採取処理手段６０は、仮想ＣＰＵ２１、仮想Ｉ／Ｏデバイス２３、２４などの仮想デバイスの内部状態の情報を仮想化サーバ１０−２に送信する（ステップＳ３０５）。
【００７７】
既存のライブマイグレーションでは、仮想マシン２０の動作を停止した後で状態のコピーを行うが、障害時マイグレーション処理では、仮想化サーバ１０−１が障害で実行中の状態で止まっているため、仮想デバイスの内部状態と、マイグレーション先の仮想化サーバ１０の状態が整合していない状態でコピーが行われる。
【００７８】
次いで、仮想化サーバ１０−２の仮想マシンエミュレーション手段３０が、仮想マシン２０の復元及び実行を行うが、該処理については第１の実施の形態と同様のため説明を省略する。
【００７９】
次に、本発明の仮想化サーバ１０のハードウェア構成例について、図５を参照して説明する。図５は、仮想化サーバ１０のハードウェア構成例を示すブロック図である。
【００８０】
図５を参照すると、本発明の仮想化サーバ１０は、一般的なコンピュータ装置と同様のハードウェア構成であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部５０２、ネットワークを介してデータの送受信を行う通信部５０３、入力装置５０５や出力装置５０６及び記憶装置５０７と接続してデータの送受信を行う入出力インタフェース部５０４、上記各構成要素を相互に接続するシステムバス５０８を備えている。記憶装置５０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
【００８１】
本発明の仮想化サーバ１０の各機能は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置５０７に格納し、そのプログラムを主記憶部５０２にロードしてＣＰＵ５０１で実行することにより、ソフトウェア的に実現することも可能である。
【００８２】
以上、好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００８３】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００８４】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００８５】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００８６】
また、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００８７】
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【００８８】
（付記１）
仮想マシンが動作する複数の仮想化サーバを備え、
前記仮想化サーバが、
前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、
障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、前記ダンプファイルをマイグレーション先の前記仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、
前記仮想マシンエミュレート手段が、
障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの情報に基づいて、前記仮想マシンを復元する
ことを特徴とする仮想化システム。
【００８９】
（付記２）
前記専用メモリ領域が、固定のアドレスを持つことを特徴とする付記１に記載の仮想化システム。
【００９０】
（付記３）
前記仮想デバイスの内部状態の情報が、仮想ＣＰＵに関する情報、仮想メモリに関する情報、仮想Ｉ／Ｏデバイスに関する情報を含むことを特徴とする付記１又は付記２に記載の仮想化システム。
【００９１】
（付記４）
前記仮想マシンエミュレート手段が、
前記仮想Ｉ／Ｏデバイスについて発行中のＩ／Ｏ要求があった場合に、前記仮想Ｉ／Ｏデバイスの種類に基づいて、Ｉ／Ｏ要求の再発行、Ｉ／Ｏ要求のエラー処理、Ｉ／Ｏ要求の正常終了の何れかを行う
ことを特徴とする付記３に記載の仮想化システム。
【００９２】
（付記５）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を複数回実行しても問題ない場合は、当該Ｉ／Ｏ要求を再発行する
ことを特徴とする付記４に記載の仮想化システム。
【００９３】
（付記６）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求をエラーとして処理すると、仮想ＯＳがリトライする場合は、前記発行中のＩ／Ｏ要求をすべてエラーとして終了する処理を行う
ことを特徴とする付記４に記載の仮想化システム。
【００９４】
（付記７）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、前記発行中のＩ／Ｏ要求を全て正常終了として終了する処理を行う
ことを特徴とする付記４に記載の仮想化システム。
【００９５】
（付記８）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域を優先して前記ダンプファイルに記録する
ことを特徴とする付記１から付記７の何れか１項に記載の仮想化システム。
【００９６】
（付記９）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域を専用の前記ダンプファイルに記録する
ことを特徴とする付記１から付記８の何れか１項に記載の仮想化システム。
【００９７】
（付記１０）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域の前記ダンプファイルへの出力が終了次第、当該ダンプファイルを前記マイグレーション先の前記仮想化サーバへ転送する
ことを特徴とする付記８又は付記９に記載の仮想化システム。
【００９８】
（付記１１）
メモリダンプ採取時、メモリダンプデータの転送時、マイグレーション先ホストでの仮想マシン再開時の何れかのタイミングで前記専用メモリ領域のチェックを行い、異常を検出した場合はマイグレーション処理を終了する
ことを特徴とする付記１から付記１０の何れか１項に記載の仮想化システム。
【００９９】
（付記１２）
仮想マシンが動作する仮想化サーバであって、
前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する仮想マシンエミュレート手段と、
障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、前記ダンプファイルをマイグレーション先の前記仮想化サーバへ転送するメモリダンプ採取処理手段とを含み、
前記仮想マシンエミュレート手段が、
障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの情報に基づいて、前記仮想マシンを復元する
ことを特徴とする仮想化サーバ。
【０１００】
（付記１３）
前記専用メモリ領域が、固定のアドレスを持つことを特徴とする付記１２に記載の仮想化サーバ。
【０１０１】
（付記１４）
前記仮想デバイスの内部状態の情報が、仮想ＣＰＵに関する情報、仮想メモリに関する情報、仮想Ｉ／Ｏデバイスに関する情報を含むことを特徴とする付記１２又は付記１３に記載の仮想化サーバ。
【０１０２】
（付記１５）
前記仮想マシンエミュレート手段が、
前記仮想Ｉ／Ｏデバイスについて発行中のＩ／Ｏ要求があった場合に、前記仮想Ｉ／Ｏデバイスの種類に基づいて、Ｉ／Ｏ要求の再発行、Ｉ／Ｏ要求のエラー処理、Ｉ／Ｏ要求の正常終了の何れかを行う
ことを特徴とする付記１４に記載の仮想化サーバ。
【０１０３】
（付記１６）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を複数回実行しても問題ない場合は、当該Ｉ／Ｏ要求を再発行する
ことを特徴とする付記１５に記載の仮想化サーバ。
【０１０４】
（付記１７）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求をエラーとして処理すると、仮想ＯＳがリトライする場合は、前記発行中のＩ／Ｏ要求をすべてエラーとして終了する処理を行う
ことを特徴とする付記１５に記載の仮想化サーバ。
【０１０５】
（付記１８）
前記仮想マシンエミュレート手段は、
前記発行中のＩ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、前記発行中のＩ／Ｏ要求を全て正常終了として終了する処理を行う
ことを特徴とする付記１５に記載の仮想化サーバ。
【０１０６】
（付記１９）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域を優先して前記ダンプファイルに記録する
ことを特徴とする付記１２から付記１８の何れか１項に記載の仮想化サーバ。
【０１０７】
（付記２０）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域を専用の前記ダンプファイルに記録する
ことを特徴とする付記１２から付記１９の何れか１項に記載の仮想化サーバ。
【０１０８】
（付記２１）
前記メモリダンプ採取処理手段が、
前記仮想マシンで使用されていた物理メモリ領域の前記ダンプファイルへの出力が終了次第、当該ダンプファイルを前記マイグレーション先の前記仮想化サーバへ転送する
ことを特徴とする付記１９又は付記２０に記載の仮想化サーバ。
【０１０９】
（付記２２）
メモリダンプ採取時、メモリダンプデータの転送時、マイグレーション先ホストでの仮想マシン再開時の何れかのタイミングで前記専用メモリ領域のチェックを行い、異常を検出した場合はマイグレーション処理を終了する
ことを特徴とする付記１２から付記２１の何れか１項に記載の仮想化サーバ。
【０１１０】
（付記２３）
仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーション方法であって、
前記仮想化サーバの仮想マシンエミュレート手段が、前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納ステップと、
前記仮想化サーバのメモリダンプ採取処理手段が、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、前記ダンプファイルをマイグレーション先の前記マイグレーション方法へ転送するメモリダンプ採取処理ステップと、
前記仮想マシンエミュレート手段が、障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの情報に基づいて、前記仮想マシンを復元する復元ステップと
を有することを特徴とするマイグレーション方法。
【０１１１】
（付記２４）
前記専用メモリ領域が、固定のアドレスを持つことを特徴とする付記２３に記載のマイグレーション方法。
【０１１２】
（付記２５）
前記仮想デバイスの内部状態の情報が、仮想ＣＰＵに関する情報、仮想メモリに関する情報、仮想Ｉ／Ｏデバイスに関する情報を含むことを特徴とする付記２３又は付記２４に記載のマイグレーション方法。
【０１１３】
（付記２６）
前記復元ステップで、
前記仮想Ｉ／Ｏデバイスについて発行中のＩ／Ｏ要求があった場合に、前記仮想Ｉ／Ｏデバイスの種類に基づいて、Ｉ／Ｏ要求の再発行、Ｉ／Ｏ要求のエラー処理、Ｉ／Ｏ要求の正常終了の何れかを行う
ことを特徴とする付記２５に記載のマイグレーション方法。
【０１１４】
（付記２７）
前記復元ステップで、
前記発行中のＩ／Ｏ要求を複数回実行しても問題ない場合は、当該Ｉ／Ｏ要求を再発行する
ことを特徴とする付記２６に記載のマイグレーション方法。
【０１１５】
（付記２８）
前記復元ステップで、
前記発行中のＩ／Ｏ要求をエラーとして処理すると、仮想ＯＳがリトライする場合は、前記発行中のＩ／Ｏ要求をすべてエラーとして終了する処理を行う
ことを特徴とする付記２６に記載のマイグレーション方法。
【０１１６】
（付記２９）
前記復元ステップで、
前記発行中のＩ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、前記発行中のＩ／Ｏ要求を全て正常終了として終了する処理を行う
ことを特徴とする付記２６に記載のマイグレーション方法。
【０１１７】
（付記３０）
前記メモリダンプ採取処理ステップで、
前記仮想マシンで使用されていた物理メモリ領域を優先して前記ダンプファイルに記録する
ことを特徴とする付記２３から付記２９の何れか１項に記載のマイグレーション方法。
【０１１８】
（付記３１）
前記メモリダンプ採取処理ステップで、
前記仮想マシンで使用されていた物理メモリ領域を専用の前記ダンプファイルに記録する
ことを特徴とする付記２３から付記３０の何れか１項に記載のマイグレーション方法。
【０１１９】
（付記３２）
前記メモリダンプ採取処理ステップで、
前記仮想マシンで使用されていた物理メモリ領域の前記ダンプファイルへの出力が終了次第、当該ダンプファイルを前記マイグレーション先の前記仮想化サーバへ転送する
ことを特徴とする付記３０又は付記３１に記載のマイグレーション方法。
【０１２０】
（付記３３）
メモリダンプ採取時、メモリダンプデータの転送時、マイグレーション先ホストでの仮想マシン再開時の何れかのタイミングで前記専用メモリ領域のチェックを行い、異常を検出した場合はマイグレーション処理を終了する
ことを特徴とする付記２３から付記３２の何れか１項に記載のマイグレーション方法。
【０１２１】
（付記３４）
仮想マシンが動作する複数の仮想化サーバを備える仮想化システムにおけるマイグレーションプログラムであって、
前記仮想化サーバの仮想マシンエミュレート手段に、前記仮想マシンの構成情報及び仮想デバイスの内部状態の情報を専用メモリ領域に格納する格納処理を実行させ、
前記仮想化サーバのメモリダンプ採取処理手段に、障害が発生した場合に、メモリダンプを実行してダンプファイルを取得し、前記ダンプファイルをマイグレーション先の前記マイグレーションプログラムへ転送するメモリダンプ採取処理を実行させ、
前記仮想マシンエミュレート手段に、障害が発生した前記仮想化サーバから受信した前記ダンプファイルに含まれる前記仮想マシンの情報に基づいて、前記仮想マシンを復元する復元処理を実行させる
ことを特徴とするマイグレーションプログラム。
【０１２２】
（付記３５）
前記専用メモリ領域が、固定のアドレスを持つことを特徴とする付記３４に記載のマイグレーションプログラム。
【０１２３】
（付記３６）
前記仮想デバイスの内部状態の情報が、仮想ＣＰＵに関する情報、仮想メモリに関する情報、仮想Ｉ／Ｏデバイスに関する情報を含むことを特徴とする付記３４又は付記３５に記載のマイグレーションプログラム。
【０１２４】
（付記３７）
前記復元処理で、
前記仮想Ｉ／Ｏデバイスについて発行中のＩ／Ｏ要求があった場合に、前記仮想Ｉ／Ｏデバイスの種類に基づいて、Ｉ／Ｏ要求の再発行、Ｉ／Ｏ要求のエラー処理、Ｉ／Ｏ要求の正常終了の何れかを行う
ことを特徴とする付記３６に記載のマイグレーションプログラム。
【０１２５】
（付記３８）
前記復元処理で、
前記発行中のＩ／Ｏ要求を複数回実行しても問題ない場合は、当該Ｉ／Ｏ要求を再発行する
ことを特徴とする付記３７に記載のマイグレーションプログラム。
【０１２６】
（付記３９）
前記復元処理で、
前記発行中のＩ／Ｏ要求をエラーとして処理すると、仮想ＯＳがリトライする場合は、前記発行中のＩ／Ｏ要求をすべてエラーとして終了する処理を行う
ことを特徴とする付記３７に記載のマイグレーションプログラム。
【０１２７】
（付記４０）
前記復元ステップで、
前記発行中のＩ／Ｏ要求を正常終了として返した場合に、仮想ＯＳまたは仮想ＯＳ上で動作するユーザプログラムが異常を検出して再送処理を行う場合は、前記発行中のＩ／Ｏ要求を全て正常終了として終了する処理を行う
ことを特徴とする付記３７に記載のマイグレーションプログラム。
【０１２８】
（付記４１）
前記メモリダンプ採取処理で、
前記仮想マシンで使用されていた物理メモリ領域を優先して前記ダンプファイルに記録する
ことを特徴とする付記３４から付記４０の何れか１項に記載のマイグレーションプログラム。
【０１２９】
（付記４２）
前記メモリダンプ採取処理で、
前記仮想マシンで使用されていた物理メモリ領域を専用の前記ダンプファイルに記録する
ことを特徴とする付記３４から付記４１の何れか１項に記載のマイグレーションプログラム。
【０１３０】
（付記４３）
前記メモリダンプ採取処理で、
前記仮想マシンで使用されていた物理メモリ領域の前記ダンプファイルへの出力が終了次第、当該ダンプファイルを前記マイグレーション先の前記仮想化サーバへ転送する
ことを特徴とする付記４１又は付記４２に記載のマイグレーションプログラム。
【０１３１】
（付記４４）
メモリダンプ採取時、メモリダンプデータの転送時、マイグレーション先ホストでの仮想マシン再開時の何れかのタイミングで前記専用メモリ領域のチェックを行い、異常を検出した場合はマイグレーション処理を終了する
ことを特徴とする付記３４から付記４３の何れか１項に記載のマイグレーションプログラム。
【符号の説明】
【０１３２】
１０（１０−１、１０−２）：仮想化サーバ
２０：仮想マシン
３０：仮想マシンエミュレート手段
４０：ゲストＯＳ
５０：物理メモリ
５１：専用メモリ領域
６０：メモリダンプ採取処理手段６０
１００：外部ストレージ
１０１：仮想ディスク
５０１：ＣＰＵ
５０２：主記憶部
５０３：通信部
５０４：入出力インタフェース部
５０５：入力装置
５０６：出力装置
５０７：記憶装置
５０８：システムバス
【図１】
0006007532.tif 000002
【図２】
0006007532.tif 000003
【図３】
0006007532.tif 000004
【図４】
0006007532.tif 000005
【図５】
0006007532.tif 000006