(57)【特許請求の範囲】
【請求項１】
仮想計算機が提供する仮想ハードウェアを利用して動作する複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を管理し、各ゲストＯＳに割り当てられている送信キューと受信キューを管理し、各ゲストＯＳが利用する仮想ハードウェアの状態をスナップショット保存できるゲストＯＳ管理システム
を制御する仮想計算機制御システムであって、
スナップショット保存の対象となる２以上の保存対象ゲストＯＳによる送信キューへのデータ格納の停止を指示するとともに既に送信キューに格納されているデータの送信のみを許可する送信停止指示を前記ゲストＯＳ管理システムに出力し、保存対象ゲストＯＳごとに、送信キューが空になったことを通知する送信完了通知を前記ゲストＯＳ管理システムから入力する送信制御部と、
保存対象ゲストＯＳごとに、受信キューが空になったことを通知する受信完了通知を前記ゲストＯＳ管理システムから入力する受信制御部と、
前記送信制御部が２以上の保存対象ゲストＯＳの全てについて送信完了通知を入力した後に、前記受信制御部が受信完了通知を入力している保存対象ゲストＯＳについて仮想ハードウェアの状態をスナップショット保存するよう指示するスナップショット指示を前記ゲストＯＳ管理システムに出力するスナップショット制御部とを有することを特徴とする仮想計算機制御システム。
【請求項２】
前記仮想計算機制御システムは、
保存対象ゲストＯＳの動作を停止させて保存対象ゲストＯＳが利用する仮想ハードウェアの状態をスナップショット保存し、更に、スナップショット保存した仮想ハードウェアの状態を復元し、前記仮想計算機制御システムからの指示を入力した際に保存対象ゲストＯＳの動作を再開させるゲストＯＳ管理システムを制御し、
前記仮想計算機制御システムは、更に、
２以上の保存対象ゲストＯＳのうち動作再開の対象となる２以上の再開対象ゲストＯＳの仮想ハードウェアの状態の復元を指示する状態復元指示を前記ゲストＯＳ管理システムに出力し、再開対象ゲストＯＳごとに、仮想ハードウェアの状態の復元が完了したことを通知する復元完了通知を前記ゲストＯＳ管理システムから入力し、２以上の再開対象ゲストＯＳの全てについて復元完了通知を入力した後に、各再開対象ゲストＯＳの動作を再開させるよう指示する動作再開指示を前記ゲストＯＳ管理システムに出力する再開制御部を有することを特徴とする請求項１に記載の仮想計算機制御システム。
【請求項３】
前記再開制御部は、
再開対象ゲストＯＳごとに、動作が再開したことを通知する動作再開完了通知を前記ゲストＯＳ管理システムから入力し、２以上の再開対象ゲストＯＳの全てについて動作再開完了通知を入力した後に、各再開対象ゲストＯＳによる送信キューへのデータ格納を再開させるよう指示する送信再開指示を前記ゲストＯＳ管理システムに出力することを特徴とする請求項２に記載の仮想計算機制御システム。
【請求項４】
前記仮想計算機制御システムは、
２以上の保存対象ゲストＯＳを選択する上位装置に接続されており、
更に、前記仮想計算機制御システムは、
ゲストＯＳの管理を行う管理ＯＳとゲストＯＳが利用する仮想ハードウェアの管理を行う仮想ハードウェア管理機構との組から構成され、管理ＯＳと仮想ハードウェア管理機構との組が複数の物理計算機に配置されているゲストＯＳ管理システムを制御し、
前記仮想計算機制御システムにおいて、
前記送信制御部、前記受信制御部及び前記スナップショット制御部は、物理計算機ごとに存在し、各物理計算機で動作し、
各送信制御部は、
前記上位装置により選択されたいずれかの保存対象ゲストＯＳが同じ物理計算機で動作している場合に、同じ物理計算機上の管理ＯＳに送信停止指示を出力し、同じ物理計算機上の管理ＯＳから送信完了通知を入力し、前記上位装置に送信完了通知を入力したことを通知し、
各受信制御部は、
前記上位装置により選択されたいずれかの保存対象ゲストＯＳが同じ物理計算機で動作している場合に、同じ物理計算機上の管理ＯＳから受信完了通知を入力し、
各スナップショット制御部は、
前記上位装置が２以上の保存対象ゲストＯＳの全てについて送信完了通知の入力の通知を受けた際に前記上位装置から発行される指示に基づき、同じ物理計算機上の仮想ハードウェア管理機構に、同じ物理計算機上の受信制御部が同じ物理計算機上の管理ＯＳから受信完了通知を入力している保存対象ゲストＯＳについてのスナップショット指示を出力することを特徴とする請求項１〜３のいずれか一項に記載の仮想計算機制御システム。
【請求項５】
前記仮想計算機制御システムは、
２以上の保存対象ゲストＯＳを選択する上位装置に接続されており、
更に、前記仮想計算機制御システムは、
２以上のゲストＯＳが動作する物理計算機に配置され、前記２以上のゲストＯＳの管理を行う管理ＯＳと前記２以上のゲストＯＳが利用する仮想ハードウェアの管理を行う仮想ハードウェア管理機構との組から構成されるゲストＯＳ管理システムを制御し、
前記仮想計算機制御システムにおいて、
前記送信制御部、前記受信制御部及び前記スナップショット制御部は、前記物理計算機で動作し、
前記送信制御部は、
前記上位装置により選択された２以上の保存対象ゲストＯＳの各々について、前記管理ＯＳに送信停止指示を出力し、前記管理ＯＳから送信完了通知を入力し、前記上位装置に送信完了通知を入力したことを通知し、
前記受信制御部は、
前記上位装置により選択された２以上の保存対象ゲストＯＳの各々について、前記管理ＯＳから受信完了通知を入力し、
前記スナップショット制御部は、
前記上位装置が２以上の保存対象ゲストＯＳの全てについて送信完了通知の入力の通知を受けた際に前記上位装置から発行される指示に基づき、前記受信制御部が前記管理ＯＳから受信完了通知を入力している保存対象ゲストＯＳについてのスナップショット指示を前記仮想ハードウェア管理機構に出力することを特徴とする請求項１〜４のいずれか一項に記載の仮想計算機制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機の状態を保存する技術に関する。
【背景技術】
【０００２】
従来の仮想計算機では、仮想計算機の状態を保存するスナップショット機能がある。
仮想計算機のスナップショット機能とは、ある時点の仮想計算機の仮想ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の状態、仮想メモリの内容、仮想Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイスの状態をホスト計算機上のディスクに保存する機能である。
そして、このディスクに保存した内容から、保存した時点の仮想計算機の状態を復元することができ、保存時点以後の処理を継続して実行することができる（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−８０７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の仮想計算機上のソフトウェアがネットワークを介して通信を行いながら連携して処理を行っている場合、それら複数の仮想計算機のスナップショットを保存しようとしたとき、双方の処理の間で矛盾なく、整合性が取れた状態でスナップショットを保存しなければならない。
たとえば、仮想計算機Ａと仮想計算機Ｂがあるとき、仮想計算機Ａ上の処理が仮想計算機Ｂ上の処理に対して、ネットワークを介してデータを送信している際に、双方の仮想計算機のスナップショットを保存する場合を考える。
仮想計算機Ａ上の処理がデータを送信後に仮想計算機Ａがスナップショットを作成し、仮想計算機Ｂ上の処理がデータを受信する前に仮想計算機Ｂがスナップショットを作成すると、仮想計算機Ａから送信したデータはスナップショットに含まれず、当該データは失われる。
この例に代表されるように、従来の技術では、ネットワークを介して通信を行いながら連携して処理を行っている複数の仮想計算機について、双方の処理の間で矛盾なく、整合性が取れたスナップショットを取得することができないという課題がある。
【０００５】
本発明では、このような課題を解決することを主な目的としており、通信を相互に行っている複数の仮想計算機のスナップショットを同時に作成するときに、送信中のデータを失うことなく整合性が取れた状態で行うことを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る仮想計算機制御システムは、
仮想計算機が提供する仮想ハードウェアを利用して動作する複数のゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を管理し、各ゲストＯＳに割り当てられている送信キューと受信キューを管理し、各ゲストＯＳが利用する仮想ハードウェアの状態をスナップショット保存できるゲストＯＳ管理システム
を制御する仮想計算機制御システムであって、
スナップショット保存の対象となる２以上の保存対象ゲストＯＳによる送信キューへのデータ格納の停止を指示するとともに既に送信キューに格納されているデータの送信のみを許可する送信停止指示を前記ゲストＯＳ管理システムに出力し、保存対象ゲストＯＳごとに、送信キューが空になったことを通知する送信完了通知を前記ゲストＯＳ管理システムから入力する送信制御部と、
保存対象ゲストＯＳごとに、受信キューが空になったことを通知する受信完了通知を前記ゲストＯＳ管理システムから入力する受信制御部と、
前記送信制御部が２以上の保存対象ゲストＯＳの全てについて送信完了通知を入力した後に、前記受信制御部が受信完了通知を入力している保存対象ゲストＯＳについて仮想ハードウェアの状態をスナップショット保存するよう指示するスナップショット指示を前記ゲストＯＳ管理システムに出力するスナップショット制御部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、保存対象ゲストＯＳによる送信キューへのデータ格納の停止させ、各保存対象ゲストＯＳの送信キュー及び受信キューが空になった後で、スナップショット保存を行うようにしているので、スナップショット保存時にデータが送信されている事態を回避することができ、通信データを消失することなく保存対象ゲストＯＳ間で整合が取れた状態でスナップショット保存を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係るスナップショット保存時の動作例を示すフローチャート図。
【図３】実施の形態１に係るスナップショット復元時の動作例を示すフローチャート図。
【図４】実施の形態２に係るシステム構成例を示す図。
【図５】実施の形態３に係るシステム構成例を示す図。
【図６】実施の形態１に係る保存実行部の構成例を示す図。
【図７】実施の形態１に係る物理計算機のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
本実施の形態では、通信を相互に行っている複数の仮想計算機のスナップショットを同時に作成するときに、送信中のデータを失うことなく整合性が取れた状態で行うことが可能な構成を説明する。
また、スナップショットに基づき状態の復元を行う際にも、データの消失が発生しない構成を説明する。
【００１０】
図１は、本実施の形態に係るシステム構成例を示す。
【００１１】
図１において、物理計算機１０１ａ、１０１ｂの上で、それぞれＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）モニター１１４ａ、１１４ｂが動作し、そのＶＭモニター１１４ａ、１１４ｂ上では管理ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１０５ａ、１０５ｂ、ゲストＯＳ１０６ａ、１０６ｂが動作している。
ゲストＯＳ１０６ａは、ＶＭモニター１１４ａ及び管理ＯＳ１０５ａにより実現される仮想計算機が提供する仮想ハードウェア（仮想ＣＰＵ、仮想メモリ、仮想Ｉ／Ｏデバイス）を利用して動作する。
同様に、ゲストＯＳ１０６ｂは、ＶＭモニター１１４ｂ及び管理ＯＳ１０５ｂにより実現される仮想計算機が提供する仮想ハードウェア（仮想ＣＰＵ、仮想メモリ、仮想Ｉ／Ｏデバイス）を利用して動作する。
ゲストＯＳ１０６ａ、１０６ｂの上では、それぞれアプリケーション１０４ａ、１０４ｂが動作している。
【００１２】
物理計算機１０１ａ、１０１ｂは物理ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）１１５ａ、１１５ｂを備え、管理ＯＳ１０５ａ、１０５ｂ内の物理ネットワークドライバ１１０ａ、１１０ｂにより制御される。
物理ネットワークドライバ１１０ａ、１１０ｂはネットワークブリッジ１０９ａ、１０９ｂを介して管理ＯＳ用仮想ネットワークドライバ１０７ａ、１０７ｂおよび管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂと通信データを受け渡しする。
保存実行部１０２ａ、１０２ｂを含め管理ＯＳ１０５ａ、１０５ｂ上で動作するプログラムは、管理ＯＳ用仮想ネットワークドライバ１０７ａ、１０７ｂを用いてネットワーク通信を行う。
アプリケーション１０４ａ、１０４ｂは、ゲストＯＳ１０６ａ、１０６ｂ内のゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂにより通信を行う。
ゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂは、管理ＯＳ１０５ａ、１０５ｂ内の管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂと連携し、ＶＭモニター１１４ａ、１１４ｂを介してデータの受け渡しを行い、ネットワーク通信処理を行う。
管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ネットワーク受信キュー１１１ａ、１１１ｂと、ネットワーク送信キュー１１２ａ、１１２ｂをそれぞれ持つ。
ネットワーク受信キュー１１１ａはゲストＯＳ１０６ａに割り当てられている受信キューであり、ネットワーク送信キュー１１２ａはゲストＯＳ１０６ａに割り当てられている送信キューである。
また、ネットワーク受信キュー１１１ｂはゲストＯＳ１０６ｂに割り当てられている受信キューであり、ネットワーク送信キュー１１２ｂはゲストＯＳ１０６ｂに割り当てられている送信キューである。
【００１３】
なお、図１において破線で囲んだ範囲２００ａ及び２００ｂ、つまり、管理ＯＳ１０５ａ、１０５ｂ、ＶＭモニター１１４ａ、１１４ｂが、ゲストＯＳ管理システムに相当する。
ゲストＯＳ管理システムにおいて、管理ＯＳ１０５ａ、１０５ｂは、上述のように、複数のゲストＯＳ１０６ａ、１０６ｂを管理し、各ゲストＯＳに割り当てられているネットワーク受信キュー１１１ａ、１１１ｂとネットワーク送信キュー１１２ａ、１１２ｂを管理する。
また、ＶＭモニター１１４ａ、１１４ｂは、各ゲストＯＳが利用する仮想ハードウェアを管理し、仮想ハードウェアの状態をスナップショット保存できる。
ＶＭモニター１１４ａ、１１４ｂは、仮想ハードウェア管理機構の例でもある。
【００１４】
管理ＯＳ１０５ａ、１０５ｂの上では保存実行部１０２ａ、１０２ｂが動作する。
保存実行部１０２ａ、１０２ｂを組み合わせたものが、仮想計算機制御システムに相当する。
保存実行部１０２ａ、１０２ｂは、仮想計算機管理計算機１１６上で動作している同期保存指示部１１７からの指示を受け、その指示に従った動作を行い、応答を同期保存指示部１１７へ返す。
保存実行部１０２ａ、１０２ｂは、テーブル１０３ａ、１０３ｂを持つ。
テーブル１０３ａ、１０３ｂは、ゲストＯＳ１０６ａ、１０６ｂとそれらが使用する管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂを対応付けする。
なお、保存実行部１０２ａ、１０２ｂの詳細は、後述する。
【００１５】
同期保存指示部１１７は、上位装置の例である仮想計算機管理計算機１１６上で動作し、テーブル１１８を持つ。
テーブル１１８は、ネットワーク通信を行って連携しながら動作しているシステムに属するゲストＯＳ名とそのゲストＯＳを管理している管理ＯＳ名からなる。
【００１６】
図６は、本実施の形態に係る保存実行部１０２ａ、１０２ｂの構成例を示す。
なお、図６において、末尾がａの要素は、保存実行部１０２ａの要素であり、末尾がｂの要素は、保存実行部１０２ｂの要素である。
【００１７】
図６において、送信制御部１０２１ａ、１０２１ｂは、管理ＯＳ１０５ａ、１０５ｂに送信停止指示を出力し、また、管理ＯＳ１０５ａ、１０５ｂから送信完了通知を入力する。
送信停止指示は、スナップショット保存の対象となる２以上の保存対象ゲストＯＳ１０６ａ、１０６ｂによるネットワーク送信キュー１１２ａ、１１２ｂへのデータ格納の停止を指示するとともに既にネットワーク送信キュー１１２ａ、１１２ｂに格納されているデータの送信のみを許可するメッセージである。
また、送信完了通知は、保存対象ゲストＯＳ１０６ａ、１０６ｂごとに、ネットワーク送信キュー１１２ａ、１１２ｂが空になったことを通知するメッセージである。
【００１８】
受信制御部１０２２ａ、１０２２ｂは、管理ＯＳ１０５ａ、１０５ｂから受信完了通知を入力する。
受信完了通知は、保存対象ゲストＯＳ１０６ａ、１０６ｂごとに、ネットワーク受信キュー１１１ａ、１１１ｂが空になったことを通知するメッセージである。
【００１９】
スナップショット制御部１０２３ａ、１０２３ｂは、保存対象ゲストＯＳ１０６ａ、１０６ｂの全てについて送信完了通知が入力された後に、受信制御部１０２２ａ、１０２２ｂが受信完了通知を入力しているゲストＯＳについてのスナップショット指示をＶＭモニター１１４ａ、１１４ｂに出力する。
スナップショット指示は、ネットワーク受信キューが空になっている保存対象ゲストＯＳについて仮想ハードウェアの状態をスナップショット保存するよう指示するメッセージである。
【００２０】
再開制御部１０２４ａ、１０２４ｂは、ゲストＯＳ１０６ａ、１０６ｂの仮想ハードウェアの状態の復元を指示するとともに、復元後にゲストＯＳ１０６ａ、１０６ｂの動作再開を指示し、更に、ゲストＯＳ１０６ａ、１０６ｂのデータ送信の再開を指示する。
手順としては、再開制御部１０２４ａ、１０２４ｂは、動作再開の対象となる再開対象ゲストＯＳ１０６ａ、１０６ｂの仮想ハードウェアの状態の復元を指示する状態復元指示をＶＭモニター１１４ａ、１１４ｂに出力し、また、再開対象ゲストＯＳごとに、仮想ハードウェアの状態の復元が完了したことを通知する復元完了通知をＶＭモニター１１４ａ、１１４ｂから入力する。
そして、再開対象ゲストＯＳ１０６ａ、１０６ｂの全てについて復元完了通知が入力された後に、再開制御部１０２４ａ、１０２４ｂは、各再開対象ゲストＯＳ１０６ａ、１０６ｂの動作を再開させるよう指示する動作再開指示を管理ＯＳ１０５ａ、１０５ｂに出力する。
更に、再開制御部１０２４ａ、１０２４ｂは、再開対象ゲストＯＳごとに、動作が再開したことを通知する動作再開完了通知を管理ＯＳ１０５ａ、１０５ｂから入力し、再開対象ゲストＯＳ１０６ａ、１０６ｂの全てについて動作再開完了通知が入力された後に、再開対象ゲストＯＳ１０６ａ、１０６ｂによるネットワーク送信キュー１１２ａ、１１２ｂへのデータ格納を再開させるよう指示する送信再開指示を管理ＯＳ１０５ａ、１０５ｂに出力する。
【００２１】
テーブル管理部１０２５ａ、１０２５ｂは、図１に示したテーブル１０３ａ、１０３ｂの読み出し、書き込み等を行う。
【００２２】
テーブル記憶部１０２６ａ、１０２６ｂは、図１に示したテーブル１０３ａ、１０３ｂを記憶している。
【００２３】
次に、仮想計算機のスナップショット保存時の動作について図２を用いて説明する。
【００２４】
ステップ２０１で、同期保存指示部１１７は、テーブル１１８を用い、スナップショット保存したいシステムに属するゲストＯＳとそれを管理する管理ＯＳを調べる。
それを元に同期保存指示部１１７は、管理ＯＳ１０５ａ、１０５ｂ上で動作している保存実行部１０２ａ、１０２ｂに対して、ゲストＯＳ１０６ａ、１０６ｂの送信キューの停止要求を送信する。
【００２５】
ステップ２０２で、保存実行部１０２ａ、１０２ｂでは、送信制御部１０２１ａ、１０２１ｂが、同期保存指示部１１７からのゲストＯＳ１０６ａ、１０６ｂの送信停止要求を受け、ゲストＯＳとその仮想ネットワークドライバを対応付けするテーブル１０３ａ、１０３ｂに基づき、送信を停止する管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂに対して送信停止指示を送信して、送信キュー停止を要求する。
【００２６】
ステップ２０３で、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、保存実行部１０２ａ、１０２ｂからの送信キュー停止要求に従い、ネットワーク送信キュー１１２ａ、１１２ｂを停止する。
つまり、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂにネットワーク送信キュー１１２ａ、１１２ｂへのデータ格納を停止するように要求する。
そして、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ネットワーク送信キュー１１２ａ、１１２ｂに既にキューイングされているデータがすべて送信完了するのを待つ。
また、ネットワーク送信キュー１１２ａ、１１２ｂを停止したので、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂからネットワーク送信キュー１１２ａ、１１２ｂへの送信データのキューイングを要求されても、送信データのキューイングを保留する。
【００２７】
ステップ２０４で、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ネットワーク送信キュー１１２ａ、１１２ｂにキューイングされていたデータがすべて送信完了したら、保存実行部１０２ａ、１０２ｂに対して送信キューの停止が完了したことを通知する送信完了通知を出力する。
【００２８】
ステップ２０５で、保存実行部１０２ａ、１０２ｂでは、送信制御部１０２１ａ、１０２１ｂが、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂからの送信完了通知を受け、同期保存指示部１１７に対して送信キュー停止が完了したことを通知する。
【００２９】
ステップ２０６で、同期保存指示部１１７は、保存実行部１０２ａ、１０２ｂの両方の送信キュー停止の完了通知を受けたら、保存実行部１０２ａ、１０２ｂに対して、ゲストＯＳ１０６ａ、１０６ｂが動作している仮想計算機の保存要求を送付する。
【００３０】
ステップ２０７で、保存実行部１０２ａ、１０２ｂでは、スナップショット制御部１０２３ａ、１０２３ｂが同期保存指示部１１７からのゲストＯＳ１０６ａ、１０６ｂの保存要求を受け、受信制御部１０２２ａ、１０２２ｂがネットワーク受信キュー１１１ａ、１１１ｂが空であることを確認し、スナップショット制御部１０２３ａ、１０２３ｂがＶＭモニター１１４ａ、１１４ｂに対してゲストＯＳ１０６ａ、１０６ｂが動作している仮想計算機の保存要求を送付する。
より具体的には、受信制御部１０２２ａ、１０２２ｂが管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂから受信完了通知を入力した後に、スナップショット制御部１０２３ａ、１０２３ｂが、ＶＭモニター１１４ａ、１１４ｂにスナップショット指示を出力して、ゲストＯＳ１０６ａ、１０６ｂの仮想ハードウェアの状態のスナップショット保存を要求する。
【００３１】
ステップ２０８で、ＶＭモニター１１４ａ、１１４ｂは、保存実行部１０２ａ、１０２ｂからの仮想計算機の保存要求を受け、ゲストＯＳ１０６ａ、１０６ｂが動作している仮想計算機（仮想ハードウェア）を停止し、スナップショットを保存する。
【００３２】
ステップ２０９で、保存実行部１０２ａ、１０２ｂでは、スナップショット制御部１０２３ａ、１０２３ｂが、ゲストＯＳ１０６ａ、１０６ｂについてのスナップショットの保存が完了した旨の通知を受け、同期保存指示部１１７にスナップショットの保存完了を通知する。
【００３３】
ステップ２１０で、同期保存指示部１１７は、保存実行部１０２ａ、１０２ｂの両方からスナップショットの保存完了が通知されたら、スナップショットの同期保存処理を終了する。
【００３４】
次に、仮想計算機のスナップショット復元時の動作について図３を用いて説明する。
【００３５】
ステップ３０１で、同期保存指示部１１７は、テーブル１１８を用いて復元したいシステムに属するゲストＯＳとそれを管理する管理ＯＳを求める。
そして、同期保存指示部１１７は、管理ＯＳ１０５ａ、１０５ｂ上で動作している保存実行部１０２ａ、１０２ｂに対して、ゲストＯＳ１０６ａ、１０６ｂのスナップショットの復元要求を送信する。
【００３６】
ステップ３０２で、保存実行部１０２ａ、１０２ｂでは、再開制御部１０２４ａ、１０２４ｂが、同期保存指示部１１７からのゲストＯＳ１０６ａ、１０６ｂの復元要求を受け、ＶＭモニター１１４ａ、１１４ｂに対して状態復元指示を出力し、ゲストＯＳ１０６ａ、１０６ｂが動作する仮想計算機（ゲストＯＳ１０６ａ、１０６ｂが利用する仮想ハードウェア）の復元を要求する。
【００３７】
ステップ３０３で、ＶＭモニター１１４ａ、１１４ｂは、保存実行部１０２ａ、１０２ｂからの仮想計算機の復元要求を受け、ゲストＯＳ１０６ａ、１０６ｂが動作する仮想計算機（ゲストＯＳ１０６ａ、１０６ｂが利用する仮想ハードウェア）のスナップショットを復元する。
このとき、ネットワーク送信キュー１１２ａ、１１２ｂは停止状態としておき、仮想計算機が復元されて実行を再開しても、ゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂはデータをネットワーク送信キュー１１２ａ、１１２ｂにキューイングできない。
これは、一方のゲストＯＳ（例えば、ゲストＯＳ１０６ａ）が他方のゲストＯＳ（例えば、ゲストＯＳ１０６ｂ）よりも早く動作を再開した場合に、ゲストＯＳ１０６ｂが動作を再開する前にゲストＯＳ１０６ａがゲストＯＳ１０６ｂに向けてデータを送信し、この結果データが消失してしまう事態を回避するためである。
一方、ネットワーク受信キュー１１１ａ、１１１ｂはキューイング可能である。
【００３８】
ステップ３０４で、保存実行部１０２ａ、１０２ｂでは、再開制御部１０２４ａ、１０２４ｂは、ゲストＯＳ１０６ａ、１０６ｂが動作する仮想計算機のスナップショットの復元が完了したら、同期保存指示部１１７にスナップショットの復元完了を通知する。
つまり、再開制御部１０２４ａ、１０２４ｂは、仮想ハードウェアの状態の復元が完了したことを通知する復元完了通知をＶＭモニター１１４ａ、１１４ｂから入力すると、同期保存指示部１１７にスナップショットの復元完了を通知する。
【００３９】
ステップ３０５で、同期保存指示部１１７は、保存実行部１０２ａ、１０２ｂの両方からスナップショットの復元完了通知を受けたら、保存実行部１０２ａ、１０２ｂに対して、ゲストＯＳ１０６ａ、１０６ｂの実行再開要求を送付する。
【００４０】
ステップ３０６で、保存実行部１０２ａ、１０２ｂでは、再開制御部１０２４ａ、１０２４ｂが、同期保存指示部１１７からのゲストＯＳ１０６ａ、１０６ｂの実行再開要求を受け、ゲストＯＳの実行を再開し、同期保存指示部１１７に対して実行再開完了を通知する。
つまり、再開制御部１０２４ａ、１０２４ｂは、動作再開指示を管理ＯＳ１０５ａ、１０５ｂに出力し、また、管理ＯＳ１０５ａ、１０５ｂから動作再開完了通知を入力し、同期保存指示部１１７に対して実行再開完了を通知する。
【００４１】
ステップ３０７で、同期保存指示部１１７は、保存実行部１０２ａ、１０２ｂの両方からスナップショットの実行再開完了通知を受けたら、保存実行部１０２ａ、１０２ｂに対して、ゲストＯＳ１０６ａ、１０６ｂのネットワークの送信再開要求を送付する。
【００４２】
ステップ３０８で、保存実行部１０２ａ、１０２ｂでは、再開制御部１０２４ａ、１０２４ｂが、同期保存指示部１１７からのゲストＯＳ１０６ａ、１０６ｂのネットワークの送信再開要求を受け、ゲストＯＳとその仮想ネットワークドライバを対応付けするテーブル１０３ａ、１０３ｂにより、対象となる管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂに送信再開指示を出力して送信キューへのデータ格納の再開を要求する。
【００４３】
ステップ３０９で、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、保存実行部１０２ａ、１０２ｂからの送信再開指示に従い、ネットワーク送信キュー１１２ａ、１１２ｂを再開する。
そして、ゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂにネットワーク送信キュー１１２ａ、１１２ｂの再開を通知する。
それを受けゲストＯＳ側仮想ネットワークドライバ１１３ａ、１１３ｂはネットワーク送信キュー１１２ａ、１１２ｂへのキューイングを再開する。
【００４４】
ステップ３１０で、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂは、ネットワーク送信キュー１１２ａ、１１２ｂを再開したら、保存実行部１０２ａ、１０２ｂに対して送信キューの再開が完了したことを通知する。
【００４５】
ステップ３１１で、保存実行部１０２ａ、１０２ｂでは、再開制御部１０２４ａ、１０２４ｂが、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｂからの送信キュー再開完了通知を受け、同期保存指示部１１７に対して送信キュー再開が完了したことを通知する。
【００４６】
ステップ３１２で、同期保存指示部１１７は、保存実行部１０２ａ、１０２ｂの両方から送信キューの再開完了が通知されたら、スナップショットの同期復元処理を終了する。
【００４７】
以上のように、複数の仮想計算機のスナップショットの保存の際に、各仮想計算機のデータ送信を、管理ＯＳ側の仮想ネットワークドライバで停止させたあと、各仮想計算機のスナップショットの保存を行っているので、保存時にデータが送信されることがなく、このため、送信中の通信データを失うことなく、各仮想計算機間で整合が取れた状態で保存することができる。
また、複数の仮想計算機のスナップショットの復元の際に、各仮想計算機を復元したときには、管理ＯＳ側の仮想ネットワークドライバでデータ送信を停止した状態とし、仮想計算機がすべて復元した後で、送信を再開しているため、通信データを失うことなく復元することができる。
【００４８】
以上、本実施の形態では、
仮想計算機のＣＰＵ、メモリ、ディスク等の仮想Ｉ／Ｏデバイスの状態を保存、復元するスナップショット機能を持つ仮想計算機システムにおいて、
仮想計算機を管理する計算機上に同期保存指示部と、仮想計算機を搭載する物理計算機上に保存実行部と、仮想計算機の仮想ネットワークドライバを備え、
前記仮想ネットワークドライバは、保存実行部からの要求により仮想計算機からのネットワーク送信のみ遮断する機能と、送信キューおよび受信キューが空になったことを通知する機能を備え、仮想計算機復元時に送信キューを停止した状態で復元させる仮想計算機システムを説明した。
【００４９】
また、前記保存実行部は、同期保存指示部からの送信停止要求により、停止する仮想ネットワークドライバに対して停止要求を出し、仮想ネットワークドライバからの送信キューが空になった通知を待って、同期保存指示部に対して送信停止要求完了を通知することを説明した。
【００５０】
また、前記保存実行部は、同期保存指示部からの仮想計算機の保存実行により、該当する仮想ネットワークドライバの受信キューが空になった通知を待って、ＶＭモニターに対して仮想計算機の停止と保存実行を行うことを説明した。
【００５１】
実施の形態２．
図４は、本実施の形態に係るシステム構成例を示しており、ゲストＯＳが１つの物理計算機に複数搭載されている場合の構成を示す。
【００５２】
ゲストＯＳ１０６ｘは追加したゲストＯＳで、その中ではゲストＯＳ側仮想ネットワークドライバ１１３ｘがあり、ゲストＯＳ１０６ｘ上ではアプリケーション１０４ｘが動作している。
ゲストＯＳ側仮想ネットワークドライバ１１３ｘは、管理ＯＳ１０５ａ内の管理ＯＳ側仮想ネットワークドライバ１０８ｘと連携してゲストＯＳ１０６ｘのネットワーク処理を行う。
管理ＯＳ側仮想ネットワークドライバ１０８ｘの中には、ネットワーク送信キュー１１２ｘ、ネットワーク受信キュー１１１ｘがあり、ネットワークブリッジ１０９ａを介して物理ネットワークドライバ１１０ａと通信データを受け渡しする。
保存実行部１０２ａの中のゲストＯＳと管理ＯＳ側仮想ネットワークドライバの対応付けするテーブル１０３ａには、ゲストＯＳ１０６ｘとその管理ＯＳ側仮想ネットワークドライバ１０８ｘの項目が追加される。
物理計算機１０１ｂの中の構成は、図１の物理計算機１０１ｂの中の構成と同じである。
なお、本実施の形態においても、破線で囲んだ２００ａと２００ｂ（不図示）がゲストＯＳ管理システムに相当する。
【００５３】
このように、１台の物理計算機上で複数のゲストＯＳを実行している場合、管理ＯＳ側仮想ネットワークドライバ１０８ａ、１０８ｘをテーブル１０３ａで定義しておくことで、対処可能である。
つまり、保存実行部１０２ａは、実施の形態１で説明したゲストＯＳ１０６ａ、管理ＯＳ側仮想ネットワークドライバ１０８ａに対する動作を、ゲストＯＳ１０６ｘ、管理ＯＳ側仮想ネットワークドライバ１０８ｘに対しても行うことで、１台の物理計算機に複数のゲストＯＳ、複数の管理ＯＳ側仮想ネットワークドライバが存在する場合でも、データ消失なく複数のゲストＯＳに対するスナップショット保存及びスナップショット復元を行うことができる。
なお、図４では１台の物理計算機上にゲストＯＳが２つ存在している例を示しているが、３つ以上のゲストＯＳの場合も同様である。
【００５４】
実施の形態３．
図５は、本実施の形態に係るシステム構成例を示しており、システムに含まれる物理計算機が３台の構成例で、また、スナップショットの同期保存復元を行うゲストＯＳのグループが２つ（ｓ１、ｓ２）ある例を示す。
各物理計算機１０１ａ、１０１ｂ、１０１ｃの中の構成は、図１および図４と同様であるが、ここでは追加した構成要素と、それに関係する構成要素のみ記載し、それ以外は省略する。
【００５５】
図５は、図４に対して物理計算機１０１ｂの中に新たにゲストＯＳ１０６ｙを追加している。
また、物理計算機１０１ｃを追加し、ゲストＯＳ１０６ｚを実行する。
そして、ゲストＯＳ１０６ｘ、１０６ｙ、１０６ｚの間でスナップショットを同期保存、復元を行うため、同期保存指示部１１７のテーブルには、新たにゲストＯＳ１０６ｘ、１０６ｙ、１０６ｚの項目と、その管理ＯＳ１０５ａ、１０５ｂ、１０５ｃの項目を追加し、それらを同期保存、復元するシステムとして管理する。
つまり、図５に示すように、グループ（ｓ１、ｓ２）ごとに、管理ＯＳとゲストＯＳの対応関係を表すテーブル１１８を用意することで、同期保存指示部１１７はグループごとに複数のゲストＯＳのスナップショット保存及びスナップショット復元を行わせることができる。
このように、３台以上からなる仮想計算機を同期保存、復元する場合、同期保存指示部１１７のテーブル１１８に、対象となるゲストＯＳとその管理ＯＳを追加することで、対処可能である。
なお、本実施の形態においても、破線で囲んだ２００ａ、２００ｂ、２００ｃがゲストＯＳ管理システムに相当する。
【００５６】
最後に、実施の形態１〜３に示した物理計算機１０１のハードウェア構成例について説明する。
図７は、実施の形態１〜３に示す物理計算機１０１のハードウェア資源の一例を示す図である。
なお、図７の構成は、あくまでも物理計算機１０１のハードウェア構成の一例を示すものであり、物理計算機１０１のハードウェア構成は図７に記載の構成に限らず、他の構成であってもよい。
【００５７】
図７において、物理計算機１０１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００５８】
通信ボード９１５は、図１等に示すように、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されている。
【００５９】
磁気ディスク装置９２０には、ＶＭモニター９２１、管理ＯＳ９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムには、ゲストＯＳやゲストＯＳで実行されるアプリケーションが含まれる。
プログラム群９２３のプログラムは、ＣＰＵ９１１、ＶＭモニター９２１、管理ＯＳ９２２により実行される。
また、ＶＭモニター９２１自身が管理ＯＳ９２２の機能を含む場合や、管理ＯＳ９２２内にＶＭモニター９２１が存在する場合もある。
【００６０】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるＶＭモニター９２１、管理ＯＳ９２２、ゲストＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００６１】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
物理計算機１０１の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００６２】
また、上記プログラム群９２３には、実施の形態１〜３の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。
プログラムは、ＣＰＵ９１１により読み出され実行される。
【００６３】
ファイル群９２４には、実施の形態１〜３の説明において、「〜の入力」、「〜の出力」、「〜の判断」、「〜の参照」、「〜の生成」、「〜の比較」、「〜の取得」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜３で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６４】
また、実施の形態１〜３の説明において「〜部」として説明しているものは、「〜ステップ」、「〜手順」、「〜処理」としても把握できる。
すなわち、実施の形態１〜３で説明したフローチャートに示すステップ、手順、処理により、物理計算機１０１における動作を方法として把握することができる。
【００６５】
以上、実施の形態１〜３に示す物理計算機１０１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００６６】
１０１  物理計算機、１０２  保存実行部、１０３  テーブル、１０４  アプリケーション、１０５  管理ＯＳ、１０６  ゲストＯＳ、１０７  管理ＯＳ用仮想ネットワークドライバ、１０８  管理ＯＳ側仮想ネットワークドライバ、１０９  ネットワークブリッジ、１１０  物理ネットワークドライバ、１１１  ネットワーク受信キュー、１１２  ネットワーク送信キュー、１１３  ゲストＯＳ側仮想ネットワークドライバ、１１４  ＶＭモニター、１１５  物理ＮＩＣ、１１６  仮想計算機管理計算機、１１７  同期保存指示部、１１８  テーブル、２００  ゲストＯＳ管理システム、１０２１  送信制御部、１０２２  受信制御部、１０２３  スナップショット制御部、１０２４  再開制御部、１０２５  テーブル管理部、１０２６  テーブル記憶部。
【図１】
0005419802.tif 000002
【図２】
0005419802.tif 000003
【図３】
0005419802.tif 000004
【図４】
0005419802.tif 000005
【図５】
0005419802.tif 000006
【図６】
0005419802.tif 000007
【図７】
0005419802.tif 000008