(57)【要約】【課題】仮想マシンを動作する仮想計算機システムにおいて、冗長化することなく、仮想マシンの異常検出時に、仮想マシンを復旧する。【解決手段】ホストＯＳ（１１）が、指定されたゲストＯＳ（１２〜１４）に割り当てられたＣＰＵ及びメモリ（２）の内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置（７）に保存するスナップショット管理部（２２）を設け、スナップショット管理部（２２）が、ゲストＯＳ（１２〜１４）の異常検出に応じて、記憶装置（７）に保存したスナップショットを用いて、ゲストＯＳ（１２〜１４）を復旧する。ホストＯＳおよび仮想マシンを冗長化構成にする必要なく、且つゲストＯＳが、異常停止した時点の直前から、ゲストＯＳを復旧できる。【選択図】図２
2011060055.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを動作するゲストＯＳと、
前記ゲストＯＳを管理するホストＯＳと、
少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当てる仮想計算機モニタとを有し、
前記ホストＯＳは、
前記ゲストＯＳの異常を検出する異常検出部と、
指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存し、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するスナップショット管理部とを有する
ことを特徴とする仮想計算機システム。
【請求項２】
前記スナップショット管理部は、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、前記仮想マシンに割り当てられた前記ＣＰＵが入出力処理を実行していない及びメモリの更新が行われていないことを確認して、前記読み出した内容から、前記スナップショットを作成する
ことを特徴とする請求項１の仮想計算機システム。
【請求項３】
前記スナップショット管理部は、前記記憶装置に保存した最新又は指定されたスナップショットを用いて、前記ゲストＯＳを復旧する
ことを特徴とする請求項１の仮想計算機システム。
【請求項４】
ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、
前記ゲストＯＳの異常を検出する異常ステップと、
指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、
前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを有する
ことを特徴とする仮想マシンの復旧処理方法。
【請求項５】
ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともコンピュータ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、
前記ゲストＯＳの異常を検出する異常ステップと、
指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、
前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを、
コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラムに関する。
【背景技術】
【０００２】
ＩＴ（Information Technology）インフラのコスト低減を目的として、仮想化技術を用いて、リソース利用の効率化と運用コストの削減が、要請されている。このため、１台の物理サーバを、あたかも複数台のサーバであるかのように用いる仮想計算機システムが、利用されつつある。
【０００３】
例えば、多数の物理サーバで稼動している業務システムを、仮想化ソフトウェアを利用して、仮想化し、少量の物理サーバ上に集約する。これにより、物理サーバの導入及び運用コストを削減することが、期待できる。
【０００４】
このような仮想計算機システムは、複数の仮想マシン（ゲストＯＳ）が、ホストＯＳの管理化で稼動し、複数の仮想サーバ機能を実現している。このような仮想計算機システムにおいては、仮想マシンの障害が、システムの停止を招くおそれがある。
【０００５】
実計算機システムでは、クラスタリング技術（システム）を採用し、システムが停止した時に、同等の別システムへ切り替えて、業務引継ぎを行うことにより、高信頼・高可用なシステムを実現している。即ち、業務停止を防ぐために、クラスタリングシステムを導入して、計算機システムの冗長化を実現している。
【０００６】
一方、仮想計算機システムにおいても、クラスタリングシステムを導入して、業務が動作している仮想マシンを、物理サーバと同じようにクラスタリングして冗長化し、仮想マシンを管理するホストＯＳをクラスタリングして、仮想マシンの復旧を実現することが、提案されている。
【０００７】
図１０は、従来の仮想計算機システムの説明図である。
【０００８】
図１０に示すように、仮想計算機システムは、実計算機システム１００に、仮想計算機モニター（仮想化ソフトウェア）１２０と、ホストＯＳ（Operating System）１２２と、複数の仮想マシン（ゲストＯＳ（Operating System））１２４，１２６とを搭載する。ホストＯＳ１２２は、ゲストＯＳ１２４，１２６を管理するため設けられる。仮想計算機モニター１２０は、ホストＯＳ１２２、ゲストＯＳを、仮想化制御する。
【０００９】
このような仮想計算機システムにおいて、あるゲストＯＳ（仮想マシン）が異常により停止した場合に、そのゲストＯＳが実行している業務アプリケーションを継続できなくなる。このため、図１０に示すように、同じ構成の実計算機システム１０２を設け、共有ディスク装置１０４で、データの受け渡しを行う。これを、クラスタリング型ホットスタンバイクラスタシステムという。
【００１０】
即ち、仮想計算機モニター（仮想化ソフトウェア）１２０と、ホストＯＳ（Operating System）１２２とを搭載した第２の実計算機システム１０２を、第１の実計算機システム１００に、ＬＡＮ（Local Area Network）１０６で接続し、且つ異常通知のため、ハートビートネットワーク１０８で接続する。
【００１１】
このＬＡＮ１０６には、複数の端末装置１１０が接続されている。第１の実計算機システム１００のゲストＯＳ（例えば、１２６）が、異常となって、停止しても、第２の実計算機システム１０２のホストＯＳ１２２の管理の元に、ゲストＯＳ１２６を立ち上げることにより、ゲストＯＳ１２６の業務を再開できる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−０５２４０７号公報（図１乃至図７）
【特許文献２】特開平１１−１３４１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来の構成では、クラスタリングシステムにより、ホストＯＳおよび仮想マシンを冗長化構成にするため、運用系とは別に、待機（片）系システムや共有ディスク装置を、設ける必要があり、システム価格が割高になる。しかも、クラスタリングシステム用のソフトウェア１３０を設け、設定する必要がある。
【００１４】
又、従来技術では、業務（アプリケーション）の起動が完了したサービス開始時点のゲストＯＳのメモリやディスクの内容を、スナップショットとして、ディスクに保存することにより、ゲストＯＳおよびアプリケーションの起動時間を省略して、復旧時間の高速化を行っている。しかし、サービス開始時点のスナップショットしかないため、常に、ゲストＯＳの業務（サービス）開始時点からしか、ゲストＯＳを復旧できない。このため、利用者が、任意に指定した復旧ポイントから業務を開始できない。
【００１５】
更に、ローカルディスクを使用したデータレプリケーションにより、ファイル（ＯＳイメージ）を同期する構成（データレプリケーション型クラスタという）を採用すると、同期中に一方の計算機システムが、ダウンした場合などにより、ファイルの内容に、差異（矛盾）が発生し、かえって、業務を復旧するための時間がかかることがある。
【００１６】
従って、本発明の目的は、冗長化構成を採用することなく、仮想マシンの高速な復旧を行う仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
この目的の達成のため、仮想計算機システムは、仮想マシンを動作するゲストＯＳと、前記ゲストＯＳを管理するホストＯＳと、少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当てる仮想計算機モニタとを有し、前記ホストＯＳは、前記ゲストＯＳの異常を検出する異常検出部と、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存し、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するスナップショット管理部とを有する。
【００１８】
又、この目的の達成のため、仮想マシンの復旧処理方法は、ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、前記ゲストＯＳの異常を検出する異常ステップと、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを有する。
【００１９】
更に、この目的の達成のため、プログラムは、ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともコンピュータ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、前記ゲストＯＳの異常を検出する異常ステップと、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを、コンピュータに実行させる。
【発明の効果】
【００２０】
指定されたゲストＯＳに割り当てられたＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存しておき、ゲストＯＳの異常検出に応じて、記憶装置に保存したスナップショットを用いて、ゲストＯＳを復旧するため、ホストＯＳおよび仮想マシンを冗長化構成にする必要なく、且つゲストＯＳが、異常停止した時点の直前から、ゲストＯＳを復旧できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の仮想計算機システムの一実施の形態の物理ブロック図である。
【図２】図１の仮想計算機システムのソフトウェアの機能ブロック図である。
【図３】図２のホストＯＳの機能ブロック図である。
【図４】図２、図３のスナップショット管理域の説明図である。
【図５】本発明の一実施の形態のスナップショット作成処理の処理フロー図（その１）である。
【図６】本発明の一実施の形態のスナップショット作成処理の処理フロー図（その２）である。
【図７】図５及び図６のスナップショット作成処理の動作説明図である。
【図８】本発明の一実施の形態の復旧処理の処理フロー図である。
【図９】図８の復旧処理の動作説明図である。
【図１０】従来の仮想マシンの復旧処理の説明図である。
【発明を実施するための形態】
【００２２】
以下、実施の形態の例を、仮想計算機システム、スナップショット作成処理、復旧処理、他の実施の形態の順で説明するが、開示の仮想計算機システムは、この実施の形態に限られない。
【００２３】
（仮想計算機システム）
図１は、本発明の仮想計算機システムの一実施の形態の物理ブロック図、図２は、図１の仮想計算機システムのソフトウェアの機能ブロック図、図３は、図２のホストＯＳの機能ブロック図、図４は、図２、図３のスナップショット管理域の説明図である。
【００２４】
図１に示すように、物理サーバ（実計算機）１は、１つ又は複数のＣＰＵ／メモリ２と、バスアダプタ（例えば、ＦＣ−ＨＢＡ: Fibre  Channel Host Bus Adaptor）３と、ネットワークコントローラ（ＮＩＣ: Network Interface Controller）４とを、ハードウェアとして有する。
【００２５】
このバスアダプタ（ＨＢＡ）３は、ストレージスイッチ５を介し、ストレージ装置（例えば、ディスク装置）７と接続し、ネットワークインターフェースカード（ＮＩＣ）４は、Ｎｅｔスイッチ６を介しＬＡＮ（Local Area Network）８と接続する。
【００２６】
この物理ハードウェアに対し、図２で説明する仮想化ソフトウェアを搭載することにより、物理サーバ１が、複数の仮想サーバ９として、機能させることができる。図２で説明するように、例えば、仮想化ソフトウェアで、ＣＰＵ／メモリ２を、仮想サーバと機能させ、サーバ１とＩ／Ｏ装置（ここでは、ストレージスイッチ５、ストレージ装置７、Ｎｅｔスイッチ６）の関係を、仮想化する。
【００２７】
例えば、Ｉ／Ｏアダプタ接続の仮想化（スイッチ／仮想化装置）、ＨＢＡ３、ＮＩＣ４のアドレスの仮想化、Ｉ／Ｏ装置（ここでは、ストレージスイッチ５、ストレージ装置７、Ｎｅｔスイッチ６）のアクセス権の設定により、サーバに対するＩ／Ｏ資源の割り当て、変更及びサーバの交換作業を単純化する。
【００２８】
図２により、仮想計算機のソフトウェアを説明する。仮想計算機モニタ１０は、仮想化ソフトウェアの中核であり、ＣＰＵ／メモリ２（ここでは、メモリのみ２−２で示す）、ネットワークインターフェースカード（ＮＩＣ）４，Ｎｅｔスイッチ６、ディスク装置（ストレージスイッチ５、ストレージ装置７）などの物理的な資源を、仮想資源に分割し、この仮想資源を単位として、仮想マシン（ゲストＯＳ）１２〜１４に割当てる。例えば、ＶＭｗａｒｅ（商品名）、ＨｙｐｅｒＶ（商品名）、Ｘｅｎ（商品名）などが、適用できる。
【００２９】
ホストＯＳ１１は、仮想マシン（ゲストＯＳ）１２〜１４を管理するＯＳである。ゲストＯＳ１２〜１４は、例えば、Ｌｉｎｕｘ（商標名）、ＷＩＮＤＯＷＳ（登録商標）等の周知のＯＳを適用できる。
【００３０】
このホストＯＳ１１は、異常検出部２０と、スナップショット管理制御部２２と、仮想Ｉ／Ｏ制御部２４と、仮想ブリッジ２６とを、機能として有する。一方、仮想マシン１２〜１４の各々は、仮想ＮＩＣ２８を備え、ホストＯＳ１１の仮想ブリッジ２６を介し、物理ＮＩＣ４に、仮想的に接続される。
【００３１】
異常検出部２０は、仮想マシン１２〜１４の異常／停止を監視し、スナップショット管理制御部へ２２仮想マシンの状態（生死等）を通知する。スナップショット管理制御部２２は、指定された仮想マシンに対して、指示要求または一定間隔で、スナップショットを作成し、そのスナップショットから、仮想マシンを再開（レジューム）する。このスナップショット管理制御部２２は、ホストＯＳのメモリ域に確保されたスナップショット管理域３０（図４にて、後述する）の情報を、参照、更新しながら動作する。
【００３２】
ＩＯ制御部２４は、ホストＯＳ１１、仮想計算機モニタ７により、仮想マシン１２〜１４からのＩ／Ｏを、仮想マシン１２〜１４と物理デバイス（ネットワークインターフェースカード（ＮＩＣ）４，Ｎｅｔスイッチ６、ディスク装置（ストレージスイッチ５、ストレージ装置７）間で、制御及び処理する。
【００３３】
仮想ブリッジ２６は、仮想ネットワークを構成する要素の1 つであり、ホスト（管理）ＯＳ１１上のブリッジモジュールで構成される。又、ゲストＯＳ１２〜１４は、仮想マシンで動作するＯＳであり、アプリケーションソフトを実行する。仮想ＮＩＣ２８は、ホストＯＳ１１とゲストＯＳ１２〜１４が共有するネットワークを構成するインタフェースである。
【００３４】
図３、図４により、ホストＯＳ１１のスナップショット管理制御部２２を説明する。図４に示すように、スナップショット管理域３０は、ホスト（管理）ＯＳ１１上で動作する仮想マシン（ゲストＯＳ）を一意に識別するゲスト識別子３１を持ち、ゲスト識別子毎に、ゲストＯＳの状態（動作中、停止中、一時停止中）３２、スナップショット処理状態（作成中、復元中等）３３、最新スナップショット作成日時３４、スナップショット数３５、メモリコピー域アドレス３６、ディスクコピー済フラグ３７の情報を保持する。
【００３５】
このメモリコピー域アドレス３６は、ゲストＯＳ１２〜１４の仮想メモリ（ゲストＯＳから見える物理メモリ）２−１２内容を、ページ（仮想ページアドレス）単位で、ホスト（管理）ＯＳ１１のメモリ域（ゲストＯＳのメモリデータコピー域）に、コピーしたかどうかの情報（コピー済みフラグ）３６−１を持つメモリコピー域を示すアドレスを保持する。
【００３６】
ディスクコピー済フラグ３７は、スナップショットを保存するディスク装置７のデータ域に、コピーが完了したかどうかを示す情報（フラグ）を保持する。
【００３７】
図３に示すように、ホストＯＳ１１は、ゲストＯＳ１２〜１４のスナップショットを、ホストＯＳのローカル物理ディスク装置７に、保存し、参照する。スナップショットの保存には、ＳＡＮ（Storage Area Network）やＮＡＳ（Network Area Storage）などのストレージ機能と連携させてもよい。
【００３８】
ゲストＯＳ１２〜１４のスナップショットは、ゲストＯＳのＣＰＵ（のレジスタ）、メモリ内容を保持するメモリ２−１２データ域、ゲストＯＳのシステムディスク７−１２等のデータを保持する。ホストＯＳ１１のスナップショット管理制御部２２は、ホストＯＳ１１のメモリに、スナップショット管理域３０を使用して、スナップショット作成／復元の処理を制御する。
【００３９】
ホストＯＳ１１のスナップショット作成処理及び復旧処理を、説明する。ホストＯＳ１１は、予め設定された一定の時間間隔で、又は、ゲストＯＳ１２〜１４からホストＯＳ１１へ復旧ポイントを指示するインタフェースからの要求により、仮想マシンのゲストＯＳ１２〜１４の使用するＣＰＵ、メモリ２−２、ディスク装置７の内容（スナップショットのメモリのデータ域）を、ホストＯＳ１１の管理するメモリ２−２に保存する。
【００４０】
その際、ホストＯＳ１１は、ゲストＯＳ１２〜１４のメモリ２−１２とＩ／Ｏなどの入出力処理を監視し、メモリ２−１２や入出力処理の状態、および、その時のメモリ２−１２とディスク７−１２の内容などに、矛盾がないように、スナップショットを作成する。
【００４１】
又、ホストＯＳ１１は、新たにスナップショットを作成するときは、現在メモリに保存しているスナップショットを、ディスク装置７に保存し、サイクリックに数世代保存する。尚、設定により。管理する世代数は、変更可能である。
【００４２】
異常検出部２０が、ゲストＯＳ１２〜１４で異常が発生して、ダウン（停止）したことを検出したとき、ホストＯＳ１１は、メモリに保存したゲストＯＳの最新のスナップショット（または、予め指定されたスナップショット）を使用して、仮想マシンを再開（レジューム）して、停止した仮想マシンに切り替えて業務を継続する。又、ホストＯＳ１１は、ゲストＯＳがレジューム（再開）する直前に、ゲストＯＳの起動に問題がないか確認し、仮想マシンの時間調整を行う。
【００４３】
ホストＯＳ１１は、ゲストＯＳのスナップショットを再開（レジューム）できなかった場合は、ディスク装置７に保存している、１世代前のスナップショット（または予め指定されたスナップショット）を使用して、再開する。
【００４４】
（スナップショット作成処理）
図５、図６は、本発明の一実施の形態のスナップショット作成処理の処理フロー図、図７は、スナップショット作成処理の動作説明図である。
【００４５】
以下、図７を参照して、図５、図６のスナップショット作成処理を説明する。
【００４６】
（Ｓ１０）スナップショット管理制御部２２を以降、ホストＯＳ１１と称し、説明する。ホストＯＳ１１は、ゲストＯＳ（例えば、ゲストＯＳ識別子:２０）が起動された後、予め各仮想マシンの動作設定で指定された指定時間経過、又は、ゲストＯＳからホストＯＳ１１へ復旧ポイントを指示するインタフェースからの要求により、スナップショット保存先のディスク装置７の保存先、ディスク容量をチェックする。
【００４７】
（Ｓ１２）ホストＯＳ１１は、スナップショット保存先のディスクチェックで問題なければ、スナップショット管理域３０のスナップショット数３５を参照して、ディスク装置７に、同一のゲストＯＳの前回保存したスナップショットファイルがあるか確認する。ゲストＯＳの前回保存したスナップショットファイルがなければ、ステップＳ１５に進む。
【００４８】
（Ｓ１４）ホストＯＳ１１は、同一のゲストＯＳの前回保存したスナップショットファイルがあると判定した場合、そのスナップショットを、複写して、新しくスナップショットを作成する。
【００４９】
（Ｓ１５）ホストＯＳ１１は、同一のゲストＯＳの前回保存したスナップショットファイルがないと判断した場合、新しいスナップショットを作成し、スナップショットのディスクのデータコピー域に、ゲストＯＳのシステムデータを書き込む。
【００５０】
（Ｓ１６）ホストＯＳ１１は、ゲストＯＳ（ゲストＯＳ識別子:２０）の起動後に、スナップショット作成処理を行ったか否かを、スナップショット管理域３０のスナップショット数３５を参照して、判定する。スナップショット作成処理を行った場合には、ステップＳ２０に進む。
【００５１】
（Ｓ１８）ホストＯＳ１１は、スナップショット作成処理を行ってない場合には、ゲストＯＳ（ゲストＯＳ識別子:２０）のメモリ２−１２の内容を、ホストＯＳ１１のメモリ域（ゲストＯＳのメモリデータコピー域）に、コピー（退避）する。
【００５２】
（Ｓ２０）ホストＯＳ１１は、対象の動作中ゲストＯＳ（ゲストＯＳ識別子:２０）のメモリ内容を読み出し、このゲストＯＳのメモリ内容と、ホストＯＳ１１のメモリ域にコピー（退避）したメモリ内容（前回スナップショット作成時のメモリ内容）を、仮想ページアドレス単位に比較し、差分があるかを判定する。差分がなければ、メモリ内容が変化しないと判断し、ステップＳ２４に進む。
【００５３】
（Ｓ２２）差分が検出した場合、即ち、ゲストＯＳのメモリが更新されている領域（仮想ページアドレス）がある場合は、ホストＯＳ１１は、ホストＯＳ１１のメモリ域（ゲストOSのメモリのデータコピー域）に対して、変更部分（前回との差分）のみを書き込む。この際、この領域には、スナップショット管理制御部２２が、古いメモリデータをコピーしないように、コピー済みとして、管理域３０のコピー済みフラグ３６−１を記録する。メモリが更新されていない（参照のみされている）領域（仮想ページアドレス）がある場合は、メモリの管理域３０のコピーテーブル３６−１を参照し、すでにコピー済みの領域ならば何もしない。まだコピーされていない領域であれば、ホストＯＳ１１のメモリ域（ゲストOSのメモリデータコピー域）に対して、メモリ内容を書き込む。そして、ステップＳ２０に戻り、メモリ内容に差分がなくなるまで、ステップＳ２２の処理を、仮想ページアドレス単位に行う。
【００５４】
（Ｓ２４）次に、ホストＯＳ１１は、ゲストＯＳ（ゲストＯＳ識別子:２０）から、Ｉ／Ｏ処理中のチェックが完了しているか否かをチェックする。Ｉ／Ｏ処理中のチエックが完了している場合には、ホストＯＳ１１は、ステップＳ３２に進む。
【００５５】
（Ｓ２６）ホストＯＳ１１は、ゲストＯＳ（ゲストＯＳ識別子:２０）から、Ｉ／Ｏ処理中（ここでは、Ｉ／Ｏ処理待ち）があるか否かをチェックする。Ｉ／Ｏ処理待ちがあれば、ステップＳ２０に戻る。
【００５６】
（Ｓ２８）ホストＯＳ１１は、チェックが完了していないと判定し、Ｉ／Ｏ処理待ちがないと判定した場合には、ゲストＯＳ（ゲストＯＳ識別子:２０）を一時停止（サスペンド）する。即ち、現処理状態を、保全する。
【００５７】
（Ｓ３０）ホストＯＳ１１は、Ｉ／Ｏ制御部２４へＩ／Ｏ処理を依頼し、ゲストＯＳ（ゲストＯＳ識別子:２０）のスナップショットを保存するディスク装置７のデータ域７２へ、仮想ディスク７−１２のデータの書き込みを行う。ホストＯＳ１１のＩ／Ｏ制御部２４は、スナップショットのディスクのデータコピー域の変更部分（前回差分）のみを、書き込む。このＩ／Ｏ制御部２４の処理終了後、ホストＯＳ１１は、Ｉ／Ｏ制御部２４から、再度同じ、ディスクデータがコピーされないように、コピー済みとしてスナップショット管理域３０のディスクコピー済フラグ３７を記録する。そして、ステップＳ２０に戻る。
【００５８】
（Ｓ３２）ホストＯＳ１１は、ゲストＯＳが、Ｉ／Ｏ処理中チェックが完了していると判定すると、ホストＯＳ１１のメモリ域（＝ゲストＯＳのメモリデータコピー域）にコピーしたゲストＯＳのメモリ内容（ここでは、ＣＰＵのレジスタ内容を含む）を、ディスク装置７のゲストのスナップショット（メモリのデータ域）７０に保存する。その際、ホストＯＳ１１は、スナップショットとして作成するゲストＯＳ（ゲストＯＳ識別子:２０）のメモリと、Ｉ／Ｏなどの入出力処理によるディスクの内容や、その他の状態の整合確認を行う。そして、ホストＯＳ１１は、ゲストＯＳ（ゲストＯＳ識別子:２０）を再開（レジューム）し、処理を終了する。
【００５９】
図７を参照して、動作を説明する。ホストＯＳ１１のスナップショット管理制御部２２は、ゲストＯＳ１２のスナップショット作成する際、仮想マシンの状態を監視し、以下のように処理を行う。
【００６０】
ホストＯＳ１１は、起動指示により、ゲストＯＳ（ゲストＯＳ識別子:２０）１２を起動した後、ホストＯＳ１１は、予め、各仮想マシンの動作設定で指定された一定間隔、またはゲストＯＳ（ゲストＯＳ識別子:２０）１２から、ホストＯＳ１１へ復旧ポイントを指示するインタフェースからの要求があると、スナップショット管理制御部２２は、ゲストＯＳのスナップショットの作成処理を行う。
【００６１】
スナップショット管理制御部２２は、ゲストＯＳの状態を監視し、ゲストＯＳのメモリの更新と入出力処理が行われておらず、ゲストＯＳの動作状態に矛盾がない状態で、メモリ２−１２、ディスク７−１２の内容を、前回保存したデータからの差分のみを保存したスナップショットを作成する（矢印Ａ１）。
【００６２】
即ち、図５、図６では、ゲストＯＳの入出力処理待ちがない時（ディスクへのアクセスがない時）に、ゲストＯＳを一時停止し、ディスクのデータを保存する（Ｓ３０）。又、ゲストＯＳのＩ／Ｏ処理中のチエックが完了した場合に、メモリ（ＣＰＵのレジスタを含む）のデータを保存する（Ｓ３２）。又、メモリ、ディスクのデータを、前回保存したデータの差分のみ保存するため、膨大なデータ量である場合にも、スナップショットとして、保存する時間を削減できる。
【００６３】
スナップショット管理制御部２２は、次のスナップショットを作成する前に、メモリ／ディスクに保存しているデータ（スナップショット）を、ディスク装置７に保存する（矢印Ａ２）。ディスク装置７には、ゲストＯＳのスナップショットを、世代管理（例えば、５世代程度）して、保管する。
【００６４】
（復旧処理）
図８は、本発明の一実施の形態の復旧処理の処理フロー図、図９は、復旧処理の動作説明図である。以下、図９を参照して、図８の復旧処理を説明する。
【００６５】
ホストＯＳ１１のスナップショット管理制御部２２は、仮想マシン１２の異常（停止）を検出後、保存されたゲストＯＳ１２のスナップショットを使用して、以下のように復旧処理を行う。
【００６６】
（Ｓ４０）ホストＯＳ１１の異常検出部２０が、ゲストＯＳ（ゲストＯＳ識別子:２０）でパニック発生し、停止したことを検出し、スナップショット管理制御部２２へ通知する（図９の矢印Ｂ１）。
【００６７】
（Ｓ４２）スナップショット管理制御部２２は、Ｉ／Ｏ制御部２４に、ディスク装置７へ保存された最新のゲストＯＳ（ゲストＯＳ識別子:２０）のスナップショットの検索を依頼する（図９の矢印Ｂ２）。
【００６８】
（Ｓ４４）スナップショット管理制御部２２は、Ｉ／Ｏ制御部２４から通知された最新（または予め指定）のゲストＯＳ（ゲストＯＳ識別子:２０）のスナップショット（ディスク装置７内）を使用して、スナップショットに保存されているメモリ、ディスクの内容とＣＰＵの状態を復元して、一時停止（サスペンド）状態で、ゲストＯＳ（ゲストＯＳ識別子:２５）１２Ａを起動する（図９の矢印Ｂ３）。
【００６９】
（Ｓ４６）スナップショット管理制御部２２は、ゲストＯＳ（ゲストＯＳ識別子:２５）１２Ａの起動に問題がないか確認する。即ち、ゲストＯＳ１２Ａのメモリやその他の状態に矛盾がないことを確認した後、時間差を計測して時間調整（step/slew）する。スナップショット管理制御部２２は、ゲストＯＳ（ゲストＯＳ識別子:２５）１２Ａの起動に失敗した（問題がある）場合は、ステップＳ４２に戻り、再度、Ｉ／Ｏ制御部２４へ保存された最新より一世代前（または予め指定）のゲストＯＳのスナップショット検索を依頼する（図９の矢印Ｂ４）。
【００７０】
（Ｓ４８）スナップショット管理制御部２２は、ゲストＯＳ（ゲストＯＳ識別子:２５）１２Ａの起動に成功した場合、ゲストＯＳ（ゲストＯＳ識別子:２５）１２Ａを再開（レジューム）し、停止（ダウン）した仮想マシンに、切り替えて業務を継続する。
【００７１】
このように、ホストＯＳおよび仮想マシンを冗長化構成にする必要なく、仮想マシンを復旧できる。このため、待機（片）系システムや共有ディスク装置、クラスタリングシステム用のソフトウェアを設ける必要がなく、コスト削減に寄与する。
【００７２】
又、業務（アプリケーション）実行しているゲストＯＳのメモリやディスクの内容を、スナップショットとして、保存するため、ゲストＯＳが、異常停止した時点の直前から、ゲストＯＳを復旧できる。このため、利用者が、任意に指定した復旧ポイントから業務を開始できる。
【００７３】
更に、このようにしても、ゲストＯＳのメモリの更新と入出力処理が行われておらず、ゲストＯＳの動作の状態に矛盾がない状態で、ゲストＯＳのスナップショットを作成するため、ゲストＯＳの再起動後に、差異（矛盾）が発生しない状態で、再開できる。しかも、差分をスナップショットとして、保存するため、膨大なデータ量である場合にも、スナップショットとして、保存する時間を削減できる。
【００７４】
又、予めホストＯＳに指定された一定の間隔で、ゲストＯＳのメモリとディスクの内容を、スナップショットとして作成することにより、ゲストＯＳが停止する前の最新のスナップショットを使用して、ゲストＯＳを復旧できる。このため、ゲストＯＳの業務を、すぐに継続できる。
【００７５】
この例としては、業務停止後に、アプリケーションを動作してエラーになっても、再実行により、業務を継続できような情報系システムなどの業務に利用されることが、好適である。
【００７６】
更に、ゲストＯＳ上で動作する業務のアプリケーションから、ゲストＯＳのスナップショットの作成タイミング、どのゲストＯＳのスナップショットを使用するかを、細かく制御できるようにする。
【００７７】
例えば、業務の開始直前や、一連の業務処理完了時点でのスナップショットの作成を指示することにより、システム停止後に、復旧する開始ポイントの整合性を制御することができる。このため、業務停止直前の正常処理完了時点から、業務を継続して、高速な復旧が行えるようになる。
【００７８】
この例としては、業務停止後にアプリケーションを動作してエラーになると、業務を継続できないような高い信頼性を要求される勘定系システムなどの業務に利用されることが好適である。
【００７９】
（他の実施の形態）
前述の実施の形態では、スナップショットとして、ストレージ装置に、ディスク装置を使用した例で説明したが、半導体記憶装置によるＳＳＤ（Solid State Disk）装置等の他の記憶装置を利用することができる。
【００８０】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００８１】
（付記１）
仮想マシンを動作するゲストＯＳと、前記ゲストＯＳを管理するホストＯＳと、少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当てる仮想計算機モニタとを有し、前記ホストＯＳは、前記ゲストＯＳの異常を検出する異常検出部と、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存し、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するスナップショット管理部とを有することを特徴とする仮想計算機システム。
【００８２】
（付記２）
前記スナップショット管理部は、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、前記仮想マシンに割り当てられた前記ＣＰＵが入出力処理を実行していない及びメモリの更新が行われていないことを確認して、前記読み出した内容から、前記スナップショットを作成することを特徴とする付記１の仮想計算機システム。
【００８３】
（付記３）
前記スナップショット管理部は、前記記憶装置に保存した最新又は指定されたスナップショットを用いて、前記ゲストＯＳを復旧することを特徴とする付記１の仮想計算機システム。
【００８４】
（付記４）
前記スナップショット管理部は、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ、及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、前記記憶装置に保存された前回作成したスナップショットとの差分から、今回の前記スナップショットを作成することを特徴とする付記１の仮想計算機システム。
【００８５】
（付記５）
前記スナップショット管理部は、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ、メモリ及び前記ＣＰＵが使用するディスク装置の内容を、指定された時刻又は所定の時間間隔で、読み出し、前記読み出した内容から、前記スナップショットを作成することを特徴とする付記１の仮想計算機システム。
【００８６】
（付記６）
前記スナップショット管理部は、前記ＣＰＵ、メモリの内容と、前記ＣＰＵが使用するディスク装置の内容を、前記記憶装置の異なる管理された領域に、前記スナップショットとして、格納することを特徴とする付記５の仮想計算機システム。
【００８７】
（付記７）
前記スナップショット管理部は、前記記憶装置に保存した最新又は指定されたスナップショットを用いて、前記ゲストＯＳを一時停止状態で起動し、前記ゲストＯＳの起動を確認して、前記ゲストＯＳを再開することを特徴とする付記３の仮想計算機システム。
【００８８】
（付記８）
前記スナップショット管理部は、前記ゲストＯＳの起動に失敗したことを検出して、前記記憶装置に保存した他のスナップショットを用いて、前記ゲストＯＳを一時停止状態で起動することを特徴とする付記７の仮想計算機システム。
【００８９】
（付記９）
ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともＣＰＵ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、前記ゲストＯＳの異常を検出する異常ステップと、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを有することを特徴とする仮想マシンの復旧処理方法。
【００９０】
（付記１０）
前記保存ステップは、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、前記仮想マシンに割り当てられた前記ＣＰＵが入出力処理を実行していない及びメモリの更新が行われていないことを確認して、前記読み出した内容から、前記スナップショットを作成するステップを有することを特徴とする付記９の仮想マシンの復旧処理方法。
【００９１】
（付記１１）
前記復旧するステップは、前記記憶装置に保存した最新又は指定されたスナップショットを用いて、前記ゲストＯＳを復旧するステップを有することを特徴とする付記９の仮想マシンの復旧処理方法。
【００９２】
（付記１２）
前記保存ステップは、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ、及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、前記記憶装置に保存された前回作成したスナップショットとの差分から、今回の前記スナップショットを作成するステップを有することを特徴とする付記９の仮想マシンの復旧処理方法。
【００９３】
（付記１３）
前記保存ステップは、前記指定された前記仮想マシンに割り当てられた前記ＣＰＵ、メモリ及び前記ＣＰＵが使用するディスク装置の内容を、指定された時刻又は所定の時間間隔で、読み出し、前記読み出した内容から、前記スナップショットを作成するステップを有することを特徴とする付記９の仮想マシンの復旧処理方法。
【００９４】
（付記１４）
前記保存ステップは、前記ＣＰＵ、メモリの内容と、前記ＣＰＵが使用するディスク装置の内容を、前記記憶装置の異なる領域に、前記スナップショットとして、格納するステップを有することを特徴とする付記１３の仮想マシンの復旧処理方法。
【００９５】
（付記１５）
前記復旧ステップは、前記記憶装置に保存した最新又は指定されたスナップショットを用いて、前記ゲストＯＳを一時停止状態で起動し、前記ゲストＯＳの起動を確認して、前記ゲストＯＳを再開するステップを有することを特徴とする付記１１の仮想マシンの復旧処理方法。
【００９６】
（付記１６）
前記復旧ステップは、前記ゲストＯＳの起動に失敗したことを検出して、前記記憶装置に保存した他のスナップショットを用いて、前記ゲストＯＳを一時停止状態で起動するステップを更に有することを特徴とする付記１５の仮想マシンの復旧処理方法。
【００９７】
（付記１７）
ホストＯＳに管理されるゲストＯＳに、仮想計算機モニタが、少なくともコンピュータ，メモリを有する物理資源を仮想資源に分割し、仮想資源を単位として、前記ゲストＯＳに、割り当て、前記ゲストＯＳを仮想マシンとして、動作するステップと、前記ゲストＯＳの異常を検出する異常ステップと、指定された前記ゲストＯＳに割り当てられた前記ＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存するステップと、前記ゲストＯＳの異常検出に応じて、前記記憶装置に保存した前記スナップショットを用いて、前記ゲストＯＳを復旧するステップとを、コンピュータに実行させるプログラム。
【産業上の利用可能性】
【００９８】
指定されたゲストＯＳに割り当てられたＣＰＵ及びメモリの内容を、指定された時刻又は所定の時間間隔で、読み出し、スナップショットを作成し、記憶装置に保存しておき、ゲストＯＳの異常検出に応じて、記憶装置に保存したスナップショットを用いて、ゲストＯＳを復旧するため、ホストＯＳおよび仮想マシンを冗長化構成にする必要なく、且つゲストＯＳが、異常停止した時点の直前から、ゲストＯＳを復旧できる。
【符号の説明】
【００９９】
１  物理サーバ
２  ＣＰＵ／メモリ
２−２  メモリ
３  ホストバスアダプタ
４  ネットワークインターフェースカード
５  ストレージスイッチ
６  Ｎｅｔスイッチ
７  ストレージ装置
８  ＬＡＮ
９  仮想サーバ
１０  仮想計算機モニタ
１１  ホストＯＳ
１２〜１４  ゲストＯＳ
２０  異常検出部
２２  スナップショット管理制御部
３０  スナップショット管理域
【図１】
2011060055.tif 000003
【図２】
2011060055.tif 000004
【図３】
2011060055.tif 000005
【図４】
2011060055.tif 000006
【図５】
2011060055.tif 000007
【図６】
2011060055.tif 000008
【図７】
2011060055.tif 000009
【図８】
2011060055.tif 000010
【図９】
2011060055.tif 000011
【図１０】
2011060055.tif 000012