(57)【特許請求の範囲】
【請求項１】
物理的なメモリと物理的なプロセッサとを有するサーバ装置で実行されるハイパーバイザであって、
仮想マシンに割り当てられた前記物理的なプロセッサから物理領域への書込みを制御する書込み制御部と、
前記物理的なメモリのうち前記仮想マシンに割り当てられている記憶領域であり複数の物理領域で構成されている物理割当て領域を管理する領域管理部と
を有し、
（Ａ）前記書込み制御部が、前記物理割当て領域を構成する全ての物理領域を書込み禁止状態とし、
（Ｂ）前記仮想マシンで発生した書込み要求で指定された物理領域である書込み先領域が書込み禁止状態であることを前記物理的なプロセッサが特定した場合、
（ｂ１）前記領域管理部が、前記書込み先領域について更新有りと管理し、且つ、
（ｂ２）前記書込み制御部が、前記書込み先領域の書込み禁止状態を解除し、
（Ｃ）スナップショット取得時点になった場合に、前記領域管理部が、前記物理割当て領域を構成する全ての物理領域のうち、更新有りの物理領域内のデータを、前記物理割当て領域とは異なる記憶領域であるコピー領域にコピーし、
（Ｄ）物理領域に所定の障害が発生したことが検出された場合に、前記領域管理部が、前記所定の障害が発生した物理領域である障害領域に記憶されていたデータのコピーを記憶している前記コピー領域を、前記物理的なプロセッサに割り当てられた前記仮想マシンの前記物理割当て領域を構成する物理領域とし、
前記（Ｂ）が、前記（Ａ）の後に行われ、
前記（Ｃ）が、前記（Ａ）の後に行われ、
前記（Ｃ）の後、前記領域管理部が、更新有りの物理領域について、更新有りを更新無しと管理し、その後、再び前記（Ａ）が行われ、
前記障害領域において前記所定の障害が発生した回数が所定の回数以上の場合、前記（Ｄ）を行い、
前記障害領域において前記所定の障害が発生した回数が所定の回数未満であり、物理領域の所定の障害が発生したことが検出され、且つ、前記障害領域について更新無しと管理されている場合に、
（Ｅ）前記領域管理部が、前記障害領域に記憶されていたデータのコピーを記憶している前記コピー領域からデータを回復し、
前記（Ｄ）において、物理領域の所定の障害が発生したことが検出され、且つ、前記障害領域について更新有りと管理されている場合に、前記領域管理部が、前記所定の障害が発生した際の、前記物理的なプロセッサの特権レベルを特定し、その特権レベルに応じた処理を行う、
ハイパーバイザ。
【請求項２】
請求項１記載のハイパーバイザであって、
前記（Ａ）において、前記書込み制御部が、前記物理的なプロセッサが物理領域にデータを書き込む際に参照する情報である物理領域管理情報に、前記物理割当て領域を構成する全ての物理領域が書込み禁止状態であることを設定する、
ハイパーバイザ。
【請求項３】
請求項２記載のハイパーバイザであって、
前記所定の障害は、Memory Uncorrectable Errorである、
ハイパーバイザ。
【請求項４】
請求項１記載のハイパーバイザであって、
前記（Ｄ）において、前記領域管理部が、前記特権レベルが、第１のレベルの場合に、前記所定の障害を、前記障害領域が割り当てられている仮想マシンに報告するが、前記特権レベルが、第２のレベルの場合には、前記所定の障害とは異なる障害を前記障害領域が割り当てられている仮想マシンに報告する、
ハイパーバイザ。
【請求項５】
請求項４記載のハイパーバイザであって、
前記第１のレベルは、前記障害領域が割り当てられている仮想マシンで前記所定の障害が発生した際にＯＳが実行されていたことを表すレベルであり、
前記第２のレベルは、前記障害領域が割り当てられている仮想マシンで前記所定の障害が発生した際にアプリケーションプログラムが実行されていたことを表すレベルである、
ハイパーバイザ。
【請求項６】
請求項１記載のハイパーバイザであって、
前記（Ｄ）において、物理領域の所定の障害が発生したことが検出され、前記障害領域について更新無しと管理されており、且つ、前記障害領域に記憶されていたデータのコピーを記憶している記憶領域が無い場合には、前記領域管理部が、所定のデータを返す、
ハイパーバイザ。
【請求項７】
物理的なメモリと、
ハイパーバイザを実行する物理的なプロセッサと
を有し、
（Ａ）前記ハイパーバイザが、前記物理的なメモリのうち仮想マシンに割り当てられている記憶領域であり複数の物理領域で構成されている物理割当て領域を構成する全ての物理領域を書込み禁止状態とし、
（Ｂ）前記仮想マシンで発生した書込み要求で指定された物理領域である書込み先領域が書込み禁止状態であることを前記物理的なプロセッサが特定した場合に、
（ｂ１）前記ハイパーバイザが、前記書込み先領域について更新有りと管理し、且つ、
（ｂ２）前記ハイパーバイザが、前記書込み先領域の書込み禁止状態を解除し、
（Ｃ）スナップショット取得時点になった場合に、前記ハイパーバイザが、前記物理割当て領域を構成する全ての物理領域のうち、更新有りの物理領域内のデータを、前記物理割当て領域とは異なる記憶領域であるコピー領域にコピーし、
（Ｄ）物理領域に所定の障害が発生したことが検出された場合に、前記ハイパーバイザが、前記所定の障害が発生した物理領域である障害領域に記憶されていたデータのコピーを記憶している前記コピー領域を、前記物理的なプロセッサに割り当てられた前記仮想マシンの前記物理割当て領域を構成する物理領域とし、
前記（Ｂ）が、前記（Ａ）の後に行われ、
前記（Ｃ）が、前記（Ａ）の後に行われ、
前記（Ｃ）の後、前記ハイパーバイザが、更新有りの物理領域について、更新有りを更新無しと管理し、その後、再び前記（Ａ）が行われ、
前記障害領域において前記所定の障害が発生した回数が所定の回数以上の場合、前記（Ｄ）を行い、
前記障害領域において前記所定の障害が発生した回数が所定の回数未満であり、物理領域の所定の障害が発生したことが検出され、且つ、前記障害領域について更新無しと管理されている場合に、
（Ｅ）前記ハイパーバイザが、前記障害領域に記憶されていたデータのコピーを記憶している前記コピー領域からデータを回復し、
前記（Ｄ）において、物理領域の所定の障害が発生したことが検出され、且つ、前記障害領域について更新有りと管理されている場合に、前記ハイパーバイザが、前記所定の障害が発生した際の、前記物理的なプロセッサの特権レベルを特定し、その特権レベルに応じた処理を行う、
サーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパーバイザを利用した仮想化技術に関する。
【背景技術】
【０００２】
サーバ統合（Server Consolidate）やクラウドコンピューティング等の基盤技術として、サーバ仮想化が知られている。サーバ仮想化によれば、１台の物理的なコンピュータが複数台のコンピュータであるかのように論理的に分割され、分割されたそれぞれのコンピュータで、ＯＳ（Operating System）やアプリケーションソフト等のコンピュータプログラムが実行される。分割されたコンピュータは、例えば「仮想マシン」と呼ばれる。
【０００３】
サーバ仮想化では、仮想マシンの耐障害性の向上が望まれる。ハードウェエア障害として、プロセッサ障害、チップセット障害及びメモリ障害等があるが、その中の１つに、Memory Uncorrectable Errorがある（以下、「ＭＵＥ」と略す）。ＭＵＥは、メモリのビット反転による、メモリの修正不可能なエラーである。ＭＵＥは、一般的にはハードウェアの故障が原因ではなく、一過性の障害である。それ故、通常、ＭＵＥの生じているメモリを交換する必要は無い。データが正常であれば、そのメモリの使用が継続されて良い。
【０００４】
ＭＵＥの生じたメモリ領域内のデータを回復する方法として、メモリのミラーリングが考えられる。例えば、特許文献１によれば、運用系にあるメモリ転送部が運用系のメモリ内のデータを待機系にあるメモリコピー部へ転送する技術が開示されている。しかし、この技術によれば、あらゆる機構（共通バス、専用コピー機構、専用転送機構、書き込みアドレス監視機構、一時記憶領域、二重書き機構）を有するプラットフォームが必要になってしまう。
【０００５】
メモリのミラーリングとして、単純に２倍のメモリを消費する方法がある。しかし、これをサーバ仮想化に適用することは難しい。なぜなら、サーバ仮想化では、物理的なメモリが複数の仮想マシンに使用されることになり、メモリの使用量を抑える工夫が必要になるからである。
【０００６】
メモリ使用量に関して、例えば特許文献２に開示の技術がある。この技術によれば、ＯＳとファームウェアのホットプラグの機能とを使用して、ＯＳが使用するメモリが枯渇してきた際に、メモリのミラーリングが動的に無効にされる。この技術によれば、ゲストＯＳがホットプラグに対応している必要がある。
【０００７】
特殊なハードウェア機構及び特殊なゲストＯＳを必要となしない、メモリのミラーリングに関する技術が知られている（例えば特許文献３）。特許文献３によれば、プロセッサのライトプロテクト機能を利用して、メモリのミラーリングが実現される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２４３８５２号公報
【特許文献２】特開２００９−１９９４７８号公報
【特許文献３】特開２００７−２０７２５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、ハイパーバイザを利用したサーバ仮想化が知られている。ハイパーバイザを利用したサーバ仮想化によれば、一般に、仮想マシンにおいて、ＬＰＡＲ上でＯＳ（ゲストＯＳ）が実行される。ＬＰＡＲとは、論理パーティションの略であり、物理的なハードウェア資源に基づく論理的なハードウェア資源である。
【００１０】
ハイパーバイザを利用したサーバ仮想化にライトプロテクト機能を利用したメモリミラーリングが適用されたシステムが考えられる。
【００１１】
しかし、このシステムでは、ゲストＯＳからメモリへのデータの書き込みの都度に、書込みがトラップされ、ハイパーバイザが、メモリに書き込まれたデータをミラーリングすることになる。つまり、このシステムでは、ゲストＯＳからメモリへのデータの書き込みの度に、ハイパーバイザへ処理が遷移する。それ故、ハイパーバイザを実行する物理的なサーバ装置の性能が大きく低下してしまうと考えられる。
【００１２】
上記のような問題は、ＭＵＥに限らず、メモリで発生する別種の障害（例えば、ＭＵＥと同程度のレベルの障害）についても、あり得る。
【００１３】
そこで、本発明の目的は、所定の障害の生じた記憶領域内のデータを回復できるサーバ装置であってハイパーバイザを実行するサーバ装置の性能の低下を軽減することにある。
【課題を解決するための手段】
【００１４】
ハイパーバイザが、物理的なメモリのうち仮想マシンに割り当てられている記憶領域であり複数の物理領域で構成されている物理割当て領域の全ての物理領域を書込み禁止状態とする。仮想マシンからの書込み先物理領域が書込み禁止状態であることを、サーバ装置内の物理的なプロセッサが特定した場合、ハイパーバイザが、書込み先物理領域について更新有りと管理し、且つ、書込み先物理領域の書込み禁止状態を解除する。スナップショット取得時点になった場合に、ハイパーバイザが、物理割当て領域を構成する全ての物理領域のうち、更新有りの物理領域内のデータを、物理割当て領域とは異なる記憶領域であるコピー領域にコピーする。物理領域の所定の障害が発生したことが検出された場合に、ハイパーバイザが、所定の障害が発生した物理領域である障害領域に記憶されていたデータのコピーを記憶しているコピー領域からデータを回復する。
【００１５】
サーバ装置は、例えば、１又は複数の計算機で構成されていて良い。また、物理領域は、後述する物理ページであっても良いし、物理ページより大きい又は小さい記憶領域であっても良い。
【００１６】
物理的なプロセッサが物理領域にデータを書き込む際に参照する情報である物理領域管理情報（例えばシャドウページテーブル）に、物理割当て領域を構成する全ての物理領域が書込み禁止状態であることが設定されて良い。この場合、物理的なプロセッサは、書込み先領域が書込み禁止状態であることをその物理領域管理情報から特定することができる。
【００１７】
スナップショット取得時点とは、物理割当て領域のスナップショットイメージを確定させる時点である。
【００１８】
物理領域の所定の障害は、ＭＵＥであっても良いし、ＭＵＥ以外の障害であっても良い。なお、データの回復が、コピー領域内のデータを障害領域にコピーすることであるならば、上記所定の障害は、障害領域を含んだメモリの故障では無いことが望ましい。
【発明の効果】
【００１９】
所定の障害の生じた記憶領域内のデータを回復できるサーバ装置であってハイパーバイザを実行するサーバ装置の性能の低下を軽減することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施例に係るサーバ装置の構成を示す。
【図２】図２Ａは、シャドウページテーブル（２３２１）の構成を示す。図２Ｂは、更新監視テーブル（２５２１）の構成を示す。図２Ｃは、メモリ差分情報（２５２）の構成を示す。
【図３】ライトプロテクトとスナップショットイメージの取得とに関する処理のフローを示す。
【図４】ＭＵＥが発生した場合に行われる処理のフローを示す。
【図５】図４のステップ７５の障害処理のフローを示す。
【図６】図４のステップ７９の回復処理のフローを示す。
【図７】図６のステップ７９５及び７９７のコピー処理のフローを示す。
【発明を実施するための形態】
【００２１】
以下、図面を参照して、本発明の一実施例を説明する。なお、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）を用いながら行うことができる。このため、処理の主語が、プロセッサとされてもよい。プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００２２】
図１は、本発明の一実施例に係るサーバ装置の構成を示す。
【００２３】
サーバ装置１００の物理的なハードウェア資源（物理資源）１には、例えば、物理的なＣＰＵ（Central Processing Unit）（１）、物理的なメモリ（１２）、及び、物理的なＩ／Ｏ（Input/Output）デバイス（１３）が含まれている。図１によれば、物理ＣＰＵ（１１）、物理メモリ（１２）及び物理Ｉ／Ｏデバイス（１３）は、それぞれ、複数であるが、以下、説明を分かり易くするため、それぞれ、１つであるとする。物理Ｉ／Ｏデバイス（１３）は、例えば、サーバ装置の外部の機器と通信ネットワークを介して通信するための通信インタフェース装置（例えば、ＨＢＡ（Host Bus Adapter）或いはＮＩＣ（Network Interface Card））である。
【００２４】
物理ＣＰＵ（１１）によって、ハイパーバイザ（２）が実行される。ハイパーバイザ（２）は、１以上の仮想マシン（仮想計算機）を起動したり終了したりすることができる。
【００２５】
仮想マシンは、ハイパーバイザ（２）に管理され、ＬＰＡＲ（３）とゲストＯＳ（４）とを有する。
【００２６】
ゲストＯＳ（４）は、ＬＰＡＲ（３）上で実行されるが、実際には、物理ＣＰＵ（１１）における少なくとも１つの物理ＣＰＵで実行される。図示しないが、ゲストＯＳ（４）上で、仮想マシンにおけるアプリケーションプログラム等のプログラムが実行される。
【００２７】
ＬＰＡＲ（３）は、論理パーティションの略であり、物理資源（１）がハイパーバイザ（２）によって論理的に分割された資源、つまり、論理的なハードウェア資源である。従って、各ＬＰＡＲ（３）には、論理ＣＰＵ（３１）、論理メモリ（３２）及び論理Ｉ／Ｏデバイス（３３）が含まれる。論理ＣＰＵ（３１）は、物理ＣＰＵ（１１）に基づく論理的なＣＰＵである。論理メモリ（３２）は、物理メモリ（１２）に基づく論理的なメモリである。論理Ｉ／Ｏデバイス（３３）は、物理Ｉ／Ｏデバイス（１３）に基づく論理的なＩ／Ｏデバイスである。
【００２８】
以下、各構成要素を詳細に説明する。
【００２９】
物理メモリ（１２）は、複数の物理的な記憶領域（以下、物理ページ）で構成されている。
【００３０】
論理メモリ（３２）は、複数の論理的な記憶領域（以下、論理ページ）で構成されている。
【００３１】
ゲストＯＳ（４）は、ゲスト論理アドレスとゲスト物理アドレスとを管理する。ゲスト論理アドレスは、ゲストＯＳ（４）上で実行されるアプリケーションプログラム等のプログラムに提供されるメモリ空間のアドレスである。そのメモリ空間の容量は、論理メモリ（３２）の容量と一致していることもあれば、違っていることもある（一般に、メモリ空間は、論理メモリ（３２）より大きい）。ゲスト物理アドレスは、論理メモリ（３２）の論理ページのアドレスである。
【００３２】
ゲストＯＳ（４）は、ゲストページテーブル（４１）を有する。ゲストページテーブル（４１）は、論理ＣＰＵ（３１）が論理ページにデータを書き込む際に参照する情報である。ゲストページテーブル（４１）は、論理ページ毎にエントリを有する。エントリは、ゲスト物理アドレスと、ライトプロテクトフラグ（以下、ＷＰフラグ）とを有する。ゲストＯＳ（４）は、或る論理ページへの書き込みを禁止する場合、その論理ページに対応したＷＰフラグをＯＮにする。一方、ゲストＯＳ（４）は、或る論理ページへの書き込みを許可する場合、その論理ページに対応したＷＰフラグをＯＦＦにする。論理ＣＰＵ（３１）は、ＷＰフラグがＯＮになっている論理ページには、データを書き込めず、ＷＰフラグがＯＦＦになっている論理ページに、データを書き込める。
【００３３】
物理ＣＰＵ（１１）における各物理ＣＰＵは、物理メモリ（１２）におけるどの物理ページで障害が生じたかを表す情報が格納される記憶領域（例えばレジスタ）、例えば、ＭＳＲ（Model Specific Register）（１１１）を有する。
【００３４】
ハイパーバイザ（２）は、例えば、下記の機能を有する。
＊物理資源１を管理する資源管理部（２１）、
＊複数のＬＰＡＲ（３）に物理ＣＰＵ（１１）を割り当てるスケジューラ（２２）、
＊物理ＣＰＵ（１１）の処理をエミュレーションするＣＰＵ仮想化部（２３）、
＊Ｉ／Ｏの処理を仮想化するＩ／Ｏ仮想化部（２４）、及び、
＊障害が検出された場合にその障害に対応した処理を行うＲＡＳ（Reliability, Availability, Serviceability）部（２５）。
【００３５】
資源管理部（２１）は、例えば、下記の機能を有する。
＊メモリ割り当て情報（２１１１）を用いて、物理メモリ（１２）の各ＬＰＡＲ（３）への割当てを管理するメモリ割り当て管理部（２１１）、
＊ＣＰＵ割り当て情報（２１２１）を用いて、物理ＣＰＵ（１１）の各ＬＰＡＲ（３）への割当てを管理するＣＰＵ割り当て管理部（２１２）、
＊Ｉ／Ｏ割り当て情報（２１３１）を用いて、物理Ｉ／Ｏデバイス（１３）の各ＬＰＡＲ（３）への割当てを管理するＩ／Ｏデバイス割り当て管理部（２１３）。
【００３６】
メモリ割り当て情報（２１１１）は、物理メモリ（１２）のどの物理ページ群がどの論理メモリ（３２）に割り当てられているかを表す情報である。
【００３７】
ＣＰＵ割り当て情報（２１２１）は、物理ＣＰＵ（１１）と論理ＣＰＵ（３１）との対応関係を表す情報である。
【００３８】
Ｉ／Ｏ割り当て情報（２１３１）は、物理Ｉ／Ｏデバイス（１３）と論理Ｉ／Ｏデバイス（３３）との対応関係を表す情報である。
【００３９】
ＣＰＵ仮想化部（２３）は、例えば、下記の機能を有する。
＊特権命令のエミュレーションを司る命令エミュレーション部（２３１）、
＊ＭＭＵ（メモリ管理ユニット）のエミュレーションを実施するＭＭＵ仮想化部（２３２）、
＊割り込みをエミュレーションする割り込みエミュレーション部（２３３）。
【００４０】
ＭＭＵ仮想化部（２３２）は、ゲストページテーブル（４１）を基にシャドウページテーブル（２３２１）を作成する。シャドウページテーブル（２３２１）の詳細は後に述べる。
【００４１】
Ｉ／Ｏ仮想化部（２４）は、ＤＭＡ（Direct Memory Access）経由のメモリ転送を把握するためのＤＭＡ転送エミュレーション部（２４１）を有する。
【００４２】
ＲＡＳ部（２５）は、例えば、下記の機能を有する。
＊障害が発生した際にＭＳＲ（１１１）を解析する障害情報解析部（２５１）、
＊メモリの一部の領域を冗長化するための機能を司るメモリ更新情報管理部（２５２）。
【００４３】
管理部（２５２）は、障害発生時に回復処理を司る回復処理部（２５２３）を有する。また、管理部（２５２）は、更新管理テーブル（２５２１）と、メモリ差分情報（２５２２）とを管理する。更新管理テーブル（２５２１）は、どの物理ページ内のデータが更新されたかを表す。メモリ差分情報（２５２２）は、論理的な記憶デバイスであり、例えば、物理ページからコピーされたデータが格納される論理的な記憶領域と、交代メモリ領域とを含んでいる。テーブル更新管理テーブル（２５２１）、メモリ差分情報（２５２２）及び交代メモリ領域の詳細は後に述べる。
【００４４】
図２Ａは、シャドウページテーブル（２３２１）の構成を示す。
【００４５】
シャドウページテーブル（２３２１）は、物理ページ毎にエントリを有する。エントリは、ホスト物理アドレスと、ライトプロテクトフラグ（ＷＰフラグ）（２３２１（ａ））と、種々の属性情報とを有する。
【００４６】
ホスト物理アドレスは、物理ページのアドレスである。
【００４７】
ＷＰフラグ（２３２１（ａ））は、物理ページへの書き込みを禁止するか否かを表す。ＷＰフラグ（２３２１（ａ））がＯＮであれば、物理ページへの書き込みが禁止されている。この場合、物理ＣＰＵ（１１）は、その物理ページにデータを書き込むことができない。一方、ＷＰフラグ（２３２１（ａ））がＯＦＦであれば、物理ページへの書き込みが許可されている。この場合、物理ＣＰＵ（１１）は、その物理ページにデータを書き込むことができる。
【００４８】
このようなシャドウページテーブル（２３２１）が、ゲストページテーブル（４１）を基に、ハイパーバイザ（２）によって作成される。その際、ゲストページテーブル（４１）に登録されているゲスト物理アドレスに、そのゲストページテーブル（４１）を有する仮想マシン内のＬＰＡＲ（３）に対応したオフセットを加算することで、シャドウページテーブル（２３２１）に登録されるホスト物理アドレスが算出される。ゲスト物理アドレスは、ゲスト論理アドレスに対応している。このため、シャドウページテーブル（２３２１）を基に、ゲスト論理アドレスを用いてホスト物理アドレスを特定する（物理ページを特定する）ことができる。
【００４９】
ゲストＯＳ（４）が、ハイパーバイザ（２）を介さずに物理ＣＰＵ（１１）によって実行される。このため、ハイパーバイザ（２）を介さずに、ゲストＯＳ（４）から物理ページにデータを書き込むことができる。例えば、ゲストＯＳ（４）は、そのゲストＯＳ（４）上で実行されるプログラムから、ゲスト論理アドレスを指定した書込み要求を受ける。そのゲストＯＳ（４）を実行する物理ＣＰＵ（１１）が、シャドウページテーブル（２３２１）を基に、そのゲスト論理アドレスに対応したホスト物理アドレスを特定する。物理ＣＰＵ（１１）が、そのホスト物理アドレスが表す物理ページに、書込み要求に従うデータを書き込む。その際、書込み先の物理ページに対応したＷＰフラグ（２３２１（ａ））がＯＦＦになっていれば、ハイパーバイザ（２）に処理は遷移しないが、書込み先の物理ページに対応したＷＰフラグ（２３２１（ａ））がＯＮになっていれば、ハイパーバイザ（２）に処理が遷移する。
【００５０】
図２Ｂは、更新監視テーブル（２５２１）の構成を示す。なお、以下の説明では、論理メモリ（３２）が割り当てられている、物理メモリ（１２）の全部又は一部を、「物理割当て領域」と言う。また、或る時点での物理割当て領域のイメージを「スナップショットイメージ」と言い、その或る時点のことを「スナップショット取得時点」と言う。また、スナップショットイメージのうち物理割当て領域から別の記憶領域へコピーされたデータを「スナップショットデータ」と言う。
【００５１】
更新監視テーブル（２５２１）は、物理割当て領域を構成する物理ページ毎に、下記の情報を有する。
＊物理ページに対応するホスト物理アドレス、
＊書込みがされたか否かの監視を開始した後に物理ページが更新されたか（物理ページに対する書込みが行われたか）否かを表す更新ビット（２５２１（ａ））、
＊スナップショットデータのコピー先の記憶領域（以下、コピー領域）を表すアドレスであるスナップショットアドレス（２５２１（ｂ））。
【００５２】
更新ビット（２５２１（ａ））がＯＮ（１）になっていれば、物理ページに対して更新が行われたということである。
【００５３】
スナップショットアドレス（２５２１（ｂ））の値として、「Ｎ／Ａ」は、Not Assignedの略であり、物理ページに対応するコピー領域が無いこと、言い換えれば、物理ページにデータが書き込まれてから未だその物理ページに対して１度も更新が行われていないことを意味する。以下、Ｎ／Ａを「無効値」と言う。
【００５４】
更新ビット（２５２１（ａ））がＯＦＦ（０）であるのにスナップショットアドレス（２５２１（ｂ））として有効な値（コピー領域のアドレス）が設定されているエントリ（行）がある。そのエントリにおいて、その有効な値は、過去のスナップショットイメージ（最新のスナップショット取得時点より過去のスナップショット取得時点のスナップショットイメージ）におけるスナップショットデータが格納されている記憶領域のアドレスである。この場合、最新のスナップショット時点では、更新ビット（２５２１（ａ））がＯＮ（１）になっている物理ページ内のスナップショットデータが、その物理ページに対応したスナップショットアドレス（２５２１（ｂ））が表すコピー領域に、コピーされる。
【００５５】
なお、更新監視テーブル（２５２１）が有する各エントリは、スナップショットデータのサイズを有しても良い。この場合、監視の単位が、物理ページの単位ではなく、ゲストＯＳ（４）が管理している論理ページの単位となって良い。
【００５６】
図２Ｃは、メモリ差分情報（２５２）の構成を示す。
【００５７】
メモリ差分情報（２５２）は、コピー領域（２５２２（ａ））と、交代メモリ領域（２５２２（ｂ））とを有する。交代メモリ領域（２５２２（ｂ））は、物理ページの代わりに使用される記憶領域である。
【００５８】
コピー領域（２５２２（ａ））の基になっている物理的な記憶領域と、交代メモリ領域（２５２２（ｂ））の基になっている物理的な記憶領域との一方又は両方が、サーバ装置の内部にあっても良いし（例えば、物理メモリ（１２）に含まれていても良いし）、サーバ装置の外部（例えば、外部のストレージ装置）にあっても良い。この場合、例えば、一部のコピー領域（２５２２（ａ））の基になっている物理的な記憶領域が、サーバ装置の内部にあって、別のコピー領域（２５２２（ａ））の基になっている物理的な記憶領域が、サーバ装置の外部にあっても良い。これは、交代メモリ領域（２５２２（ｂ））についても同様である。また、コピー領域（２５２２（ａ））の基になっている物理的な記憶領域と、交代メモリ領域（２５２２（ｂ））の基になっている物理的な記憶領域との一方が、サーバ装置の内部にあって、他方が、サーバ装置の外部にあっても良い。サーバ装置の内部に、コピー領域（２５２２（ａ））又は交代メモリ領域（２５２２（ｂ））がある場合、その領域は、物理メモリ（１２）内であって、物理割当て領域以外の領域内にあって良い。
【００５９】
以下、本実施例で行われる処理の流れを説明する。
【００６０】
図３は、ライトプロテクトとスナップショットイメージの取得とに関する処理のフローを示す。この処理は、定期的に又は不定期的に実行される。
【００６１】
まず、ハイパーバイザ（２）（ＣＰＵ仮想化部（２３））が、シャドウページテーブル（２３２１）に登録されている全てのエントリにおけるＷＰフラグ（２３２１（ａ））をＯＮにする（ステップ５１）。これにより、物理割当て領域（物理メモリ（１２）のうち論理メモリ（３２）に割り当てられている領域）を構成する全ての物理ページが、書込み禁止の状態となる。このステップによれば、ゲストＯＳ（４）が書込みを禁止していない論理ページに対応した物理ページについても、書込みが禁止される状態となる。
【００６２】
その後、ハイパーバイザ（２）によってゲスト処理が実行される（ステップ５２）。すなわち、ゲストＯＳ（４）が物理メモリ（１２）にアクセス可能な状況となる。言い換えれば、このゲスト処理が行われない間は、ゲストＯＳ（４）から物理割当て領域内の物理ページが更新されることは無い。
【００６３】
ステップ５２において、或るゲストＯＳ（４）が、そのゲストＯＳ（４）上で実行されるプログラムから、ゲスト論理アドレスを指定した書込み要求を受けたとする。この場合、その要求に応答して、書込み処理が行われる。具体的には、そのゲストＯＳ（４）を実行する物理ＣＰＵ（１１）が、指定されたゲスト論理アドレスに対応したホスト物理アドレスをシャドウページテーブル（２３２１）から特定し、特定されたホスト物理アドレスが表す物理ページに、書込み要求に従うデータを書込む。
【００６４】
次に、物理ＣＰＵ（１１）が、上記特定されたホスト物理アドレスを有するエントリ（シャドウページテーブル（２３２１）が有するエントリ）内のＷＰフラグ（２３２１（ａ））がＯＮであるか否かを判断する（ステップ５３）。
【００６５】
ＷＰフラグ（２３２１（ａ））がＯＦＦであれば（ステップ５３：ＮＯ）、物理ＣＰＵ（１１）の処理は終了する。その後、いずれかのゲストＯＳ（４）が書込み要求を受けた場合、ステップ５２が行われる。
【００６６】
ＷＰフラグ（２３２１（ａ））がＯＮであれば（ステップ５３：ＹＥＳ）、物理ＣＰＵ（１１）は、物理ＣＰＵ（１１）によって、ハイパーバイザ（２）に処理が遷移される（例えば、物理ＣＰＵ（１１）から、上記特定されたホスト物理アドレスを用いてハイパーバイザ（２）がコールされる）。ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、上記特定されたホスト物理アドレスに対応した更新ビット（２５２１（ａ））をＯＮ（１）にする（ステップ５４）。そして、ハイパーバイザ（２）（ＣＰＵ仮想化部（２３））は、上記特定されたホスト物理アドレスを有するエントリ（シャドウページテーブル（２３２１）が有するエントリ）内のＷＰフラグ（２３２１（ａ））をＯＦＦにする（ステップ５５）。これにより、この時点より後の時点で、ＷＰフラグ（２３２１（ａ））がＯＦＦとされた物理ページにデータが書き込まれても、ステップ５３：ＮＯとなるので、ハイパーバイザに処理が遷移することが無い。このため、サーバ装置の処理性能が低下することが抑えられる。
【００６７】
ハイパーバイザ（２）（メモリ更新情報管理部（２５））が、スナップショットイメージの生成が必要か否かを判断する（ステップ５６）。具体的には、例えば、更新された物理ページの数が所定の閾値を超えているか否か、及び／又は、一定期間における指定ブランチ命令数が閾値を超えているか否かが判断される。このステップでの判断に使用される情報として、前述の例に代えて又は加えて、Ｉ／Ｏ要求（書込み及び／又は読出し要求）の数、仮想マシンの実行時間長、仮想マシンの優先度等が採用されて良い。
【００６８】
ステップ５６の判断の結果が否定的の場合（ステップ５６：ＮＯ）、処理は終了する。その後、いずれかのゲストＯＳ（４）が書込み要求を受けた場合、ステップ５２が行われる。
【００６９】
ステップ５６の判断の結果が肯定的の場合（ステップ５６：ＹＥＳ）、ハイパーバイザ（２）（メモリ更新情報管理部（２５））が、更新監視テーブル（２５２１）内の未参照のエントリのうちの１つを参照する（ステップ５７）。ステップ５１が行われた後にこのステップが初めて行われた場合、例えば、先頭のエントリが参照される。以下、参照されたエントリを、図３の説明において「対象エントリ」と言う。
【００７０】
次に、ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、対象エントリにおいて更新ビット（２５２１（ａ））がＯＮ（１）になっているか否かを判断する（ステップ５８）。
【００７１】
更新ビット（２５２１（ａ））がＯＦＦ（０）であり（ステップ５８：ＮＯ）、且つ、対象エントリが最終のエントリでなければ（つまり未参照のエントリが未だ有れば）（ステップ６３：ＮＯ）、ステップ５７が行われる。
【００７２】
ステップ５８：ＮＯであり、且つ、対象エントリが最終のエントリであれば（つまり、未参照のエントリが無ければ）（ステップ６３：ＹＥＳ）、ＯＮとなっている全ての更新ビット（２５２１（ａ））がハイパーバイザ（２）（メモリ更新情報管理部（２５））によってＯＦＦにされ、処理が終了する。その後、或るタイミングで（例えば直前回のステップ５１から一定時間経過した時に）、ステップ５１が行われる。
【００７３】
更新ビット（２５２１（ａ））がＯＮ（１）であれば（ステップ５８：ＹＥＳ）、ハイパーバイザ（２）は、対象エントリ内のスナップショットアドレス（２５２１（ｂ））が有効な値か否かを判断する（ステップ５９）。言い換えれば、対象エントリに対応した物理ページに既にコピー領域（２５２２（ａ））が対応付けられているか否かが判断される。
【００７４】
ステップ５９の判断の結果が否定的の場合（ステップ５９：ＮＯ）、ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、いずれの物理ページに対応付けられていないいずれかのコピー領域（２５２２（ａ））を確保する（ステップ６０）。そして、ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、確保したコピー領域（２５２２（ａ））のアドレスを、スナップショットアドレス（２５２１（ｂ））として対象エントリに登録する（ステップ６１）。
【００７５】
ステップ５９の判断の結果が肯定的の場合（ステップ５９：ＹＥＳ）、又は、ステップ６１の後、ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、確保されているコピー領域（２５２２（ａ））に、対象エントリに対応した物理ページ内のスナップショットデータをコピーする（ステップ６２）。その後、対象エントリが最終エントリでなければ（ステップ６３：ＮＯ）、ステップ５７が行われ、対象エントリが最終エントリであれば（ステップ６３：ＹＥＳ）、処理が終了する。ステップ６３：ＹＥＳの場合、ＯＮとなっている全ての更新ビット（２５２１（ａ））がハイパーバイザ（２）によってＯＦＦにされ、処理が終了する。その後、或るタイミングで、ステップ５１が行われる。
【００７６】
以上が、ライトプロテクトとスナップショットイメージの取得とに関する処理である。なお、ステップ５７が行われる回数を削減するために、更新管理テーブル（２５２１）の更新ビット（２５２１（ａ））が新たにＯＮ（１）になったエントリのみが、ステップ５７の対象とされても良い。この場合、更新ビット（２５２１（ａ））が新たにＯＮ（１）になったエントリがどこであるかを表す情報（例えばテーブル）が、ハイパーバイザ（２）によって管理されても良い。
【００７７】
図４は、ＭＵＥが発生した場合に行われる処理のフローを示す。
【００７８】
ＭＵＥが発生した場合（ステップ７１）、ＭＵＥが発生した物理ページ（以下、ＭＵＥページ）のホスト物理アドレスが、物理ＣＰＵ（１１）におけるＭＳＲ（１１１）に書き込まれる。ハイパーバイザ（２）（更新情報解析部（２５１））は、ＭＳＲ（１１１）に書き込まれているホスト物理アドレスを特定する（ステップ７２）。
【００７９】
ハイパーバイザ（２）（メモリ更新情報管理部（２５））は、更新監視テーブル（２５２１）を参照し（ステップ７３）、ステップ７２で特定されたホスト物理アドレスがそのテーブル（２５２１）に登録されているか否かを判断する（ステップ７４）。
【００８０】
ステップ７４の判断の結果が否定的の場合（ステップ７４：ＮＯ）、ハイパーバイザ（２）は、障害処理を行う（ステップ７５）。この障害処理の詳細は、後に、図５を参照して説明する。
【００８１】
ステップ７４の判断の結果が肯定的の場合（ステップ７４：ＹＥＳ）、ハイパーバイザ（２）は、ステップ７２で特定したホスト物理アドレスを有するエントリ内の更新ビット（２５２１（ａ））がＯＦＦ（０）であるか否かを判断する（ステップ７６）。
【００８２】
ステップ７６の判断の結果が肯定的である場合（ステップ７６：ＹＥＳ）、ハイパーバイザ（２）は、回復処理を行う（ステップ７７）。すなわち、ＭＵＥページに対応する更新ビット（２５２１（ａ））がＯＦＦであるということは、ＭＵＥページに格納されていたデータが、ＭＵＥページに対応付けられているコピー領域（２５２２（ａ））に格納されているということである（但し、一度も更新されたことの無い物理ページについては、回復すべき必要なデータが無いということである）。このため、回復処理が行われる。なお、この回復処理（ステップ７７）の詳細は、後に、図６を参照して説明する。
【００８３】
ステップ７６の判断の結果が否定的の場合（ステップ７６：ＮＯ）、ハイパーバイザ（２）は、障害処理を行う（ステップ７５）。ＭＵＥページに対応する更新ビット（２５２１（ａ））がＯＮであるということは、ＭＵＥページに格納されていたデータが、コピー領域（２５２２（ａ））にコピーされていないということである。このため、そのＭＵＥページ内のデータを回復することはできず、故に、障害処理が行われる。なお、頻繁に書き換えられる物理ページに関しては、サーバ装置内の図示しないキャッシュ領域に存在する可能性が高い。このため、ステップ７６：ＮＯの場合（又は、ステップ７４：ＮＯ）、ハイパーバイザ（２）が、ＭＵＥページ内のデータと同じデータがキャッシュ領域に残っているか否か判断し、同じデータがあれば、その同じデータが、ＭＵＥページ或いは交代メモリ領域にコピーされても良い（図６のステップ７９５又はステップ７９６と同じ処理が行われても良い）。
【００８４】
図５は、図４のステップ７５の障害処理のフローを示す。
【００８５】
ハイパーバイザ（２）が、障害（ＭＵＥ）が発生した際の、物理ＣＰＵ（１１）の特権レベルを特定する（ステップ７５１）。その特権レベルを表す情報は、物理ＣＰＵ（１１）のレジスタ或いは物理メモリ（１２）の所定の領域（例えば、物理割当て領域以外の領域）などの記憶領域に記憶されている。その情報を参照することで、特権レベルを特定することができる。
【００８６】
ハイパーバイザ（２）が、特権レベルが所定値（例えば重要度が低いことを意味する値）かを確認する（７５２）。特権レベルは、仮想マシンでどういうプログラムが実行されていたかによって異なる。例えば、ＭＵＥ発生時にアプリケーションプログラムが実行されていた場合の特権レベルは、ＭＵＥ発生時にゲストＯＳ（４）が実行されていた場合の特権レベルよりも低い。本実施例では、特権レベルの値が大きい方が、特権レベルは低い。
【００８７】
特権レベルが所定値（例えば３）であれば（ステップ７５２：ＹＥＳ）、ハイパーバイザ（２）は、ＭＵＥ以外の障害（例えば、＃ＧＰ（一般保護例外））を報告（ステップ７５４９）。報告先は、ＭＵＥページが割り当てられている仮想マシン（例えばその仮想マシン内のゲストＯＳ（４））である。ハイパーバイザ（２）は、障害要因を化かし、影響をアプリケーションプログラムのみにするなどの処理を実施する。この場合、ＭＵＥが発生したものの、その影響は小さいものとなる。具体的には、例えば、ＭＵＥ以外の障害の報告を受けた仮想マシンにおいて、ゲストＯＳ（４）によって、アプリケーションプログラムだけが終了される。
【００８８】
一方、特権レベルが所定値でなければ（例えば０であれば）（ステップ７５２：ＮＯ）、ハイパーバイザ（２）は、ＭＵＥページが割り当てられている仮想マシン（例えばゲストＯＳ（４））に、ＭＵＥを報告する（ステップ７５３）。その後の処理は、その報告を受けた仮想マシン（ゲストＯＳ（４））次第である。例えば、そのゲストＯＳ（４）は、再起動する。
【００８９】
このような障害処理は、ハイパーバイザ（２）のメモリ更新情報管理部（２５２）が行うことができる。
【００９０】
図６は、図４のステップ７９の回復処理のフローを示す。
【００９１】
ハイパーバイザ（２）の回復処理部（２５２３）は、回復ポリシーを確認する（ステップ７９１）。回復ポリシーとは、どのようなケースでどのようにしてデータを回復するかの定義を表す情報である。
【００９２】
回復ポリシーが、「ＭＵＥページを使用する」ことを表していれば（ステップ７９２：ＹＥＳ）、回復処理部（２５２３）は、コピー領域（２５２２（ａ））からスナップショットデータをＭＵＥページにコピーする（ステップ７９７）。そのコピー領域（２５２２（ａ））は、ＭＵＥページに対応したスナップショットアドレス（２５２１（ｂ））から特定される記憶領域である。
【００９３】
回復ポリシーが、「ＭＵＥページを使用しない」ことを表しており（ステップ７９２：ＮＯ）、且つ、「交代メモリ領域を新たに作成する」ことを表していれば（ステップ７９３：ＹＥＳ）、回復処理部（２５２３）は、交代メモリ領域（２５２２（ｂ））を確保する（ステップ７９４）。そして、回復処理部（２５２３）は、確保した交代メモリ領域（２５２２（ｂ））に、ＭＵＥページに対応したコピー領域（２５２２（ａ））内のスナップショットデータをコピーする（ステップ７９５）。その後、回復処理部（２５２３）は、シャドウページテーブル（２３２１）に、その交代メモリ領域（２５２２（ｂ））のアドレスを、ホスト物理アドレスとして書き込む（ステップ７９６）。
【００９４】
回復ポリシーが、「ＭＵＥページを使用しない」ことを表しており（ステップ７９２：ＮＯ）、且つ、「交代メモリ領域を新たに作成しない」ことを表していれば（ステップ７９３：ＮＯ）、回復処理部（２５２３）は、シャドウページテーブル（２３２１）に、ＭＵＥページに対応したコピー領域（２５２２（ａ））のアドレスを、ホスト物理アドレスとして書き込む（ステップ７９６）。
【００９５】
図７は、図６のステップ７９５及び７９７のコピー処理のフローを示す。
【００９６】
回復処理部（２５２３）は、ＭＵＥページに対応したスナップショットアドレス（２５２１（ａ））を確認する（ステップ７９５１）。
【００９７】
スナップショットアドレス（２５２１（ａ））が無効値であるということは、ＭＵＥページに、更新がこれまで一度も発生していないということである。この場合（ステップ７９５２：ＮＯ）、回復処理部（２５２３）は、所定のデータ（例えば、オール０、或いは、０ｘＦＦＦＦＦＦＦＦ）を、ゲストＯＳ（４）上のプログラムに返す。
【００９８】
スナップショットアドレス（２５２１（ａ））が有効な値であれば（ステップ７９５２：ＹＥＳ）、回復処理部（２５２３）は、その値が表すコピー領域（２５２２（ａ））内のデータを、ＭＵＥページ或いは交代メモリ領域にコピーする（ステップ７９５４）。
【００９９】
以上、上述した実施例によれば、ハイパーバイザ（２）は、ゲストＯＳ（４）が書込みを許可しているか否かに関わらず、ゲストＯＳ（４）に対応した物理割当て領域（ゲストＯＳ（４）が実行される仮想マシンが有する論理メモリ（３２）に対応した領域）を構成する全ての物理ページを、書込み禁止の状態とする。そして、書込み禁止の物理ページに対する書込み要求が発生する都度に、ハイパーバイザ（２）が、その物理ページについて更新有りと管理し、且つ、その物理ページの書込み禁止を解除する（書込み許可とする）。その後、スナップショット取得時点（図３のＳ５６：ＹＥＳ）になった場合に、ハイパーバイザ（２）は、更新有りの物理ページ内のデータ（スナップショットデータ）を、物理割当て領域とは別の記憶領域（コピー領域）にコピーする（更新無しの物理ページのスナップショットデータは、その物理ページで保持される）。スナップショットデータのコピー元の物理ページでＭＵＥが発生した場合には、コピー領域からスナップショットデータが回復される。また、書込み許可の物理ページに対する書込み要求が発生した場合には、ハイパーバイザ（２）に処理が遷移することなく、その物理ページに、その書込み要求に従うデータが書き込まれる。従って、ＭＵＥページ内のデータを回復することを実現しつつ、ハイパーバイザ（２）を実行するサーバ装置の処理性能が低下する頻度を抑えることができる。
【０１００】
以上、本発明の一実施例を説明したが、本発明は、この実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１０１】
例えば、情報の一例としてテーブルが例に採られているが、テーブルで管理される情報は、テーブル以外の形式で管理されても良い。このため、「ＸＸテーブル」を「ＸＸ情報」と言うことができる。
【０１０２】
また、例えば、更新監視テーブル（２５２１）には、ホスト物理アドレスに代えて、ゲスト論理アドレス或いはゲスト物理アドレスが登録されても良い。この場合、ＭＳＲ（１１１）から特定されたホスト物理アドレス（ＭＵＥページのホスト物理アドレス）が、ゲスト論理アドレス或いはゲスト物理アドレスに変換された後に、テーブル（２５２１）が参照されても良い。
【０１０３】
また、例えば、回復ポリシーは、「同一の領域（例えば物理ページ）でＭＵＥが発生した回数がＮ回未満であれば、その領域（例えばＭＵＥページ）を使用し、その回数がＮ回以上であれば、別の領域（例えばコピー領域又は新たな交代メモリ領域）を使用する」というポリシーであっても良い（Ｎは１以上の整数）。この場合、メモリ更新情報管理部（２５２）は、物理割当て領域における物理ページ毎（及び、物理割当て領域のホスト物理アドレスが割り当てられた記憶領域毎）に、ＭＵＥの発生回数を管理して良い。メモリ更新情報管理部（２５２）（例えば障害情報解析部（２５１））は、ＭＵＥの発生が検出された場合、ＭＵＥが発生した記憶領域（例えば物理ページ）の発生回数を更新して良い。回復処理部（２５２３）は、更新後の発生回数がＮ回未満であれば、その記憶領域に、コピー領域内のスナップショットデータをコピーして良い。一方、更新後の発生回数がＮ回以上であれば、回復処理部（２５２３）は、コピー領域又は新たな交代メモリ領域に、ＭＵＥの発生した記憶領域のホスト物理アドレスを割り当てて良い（すなわち、図６のステップ７９６、又は、ステップ７９４〜７９６を行って良い）。
【符号の説明】
【０１０４】
１…物理計算機、２…ハイパーバイザ、３…ＬＰＡＲ、４…ゲストＯＳ
【図１】
0005484117.tif 000002
【図２】
0005484117.tif 000003
【図３】
0005484117.tif 000004
【図４】
0005484117.tif 000005
【図５】
0005484117.tif 000006
【図６】
0005484117.tif 000007
【図７】
0005484117.tif 000008