JP4783392B2 - 情報処理装置および障害回復方法 - Google Patents

情報処理装置および障害回復方法 Download PDF

Info

Publication number
JP4783392B2
JP4783392B2 JP2008091727A JP2008091727A JP4783392B2 JP 4783392 B2 JP4783392 B2 JP 4783392B2 JP 2008091727 A JP2008091727 A JP 2008091727A JP 2008091727 A JP2008091727 A JP 2008091727A JP 4783392 B2 JP4783392 B2 JP 4783392B2
Authority
JP
Japan
Prior art keywords
page
virtual
write
operating system
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008091727A
Other languages
English (en)
Other versions
JP2009245216A (ja
Inventor
治男 冨田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008091727A priority Critical patent/JP4783392B2/ja
Publication of JP2009245216A publication Critical patent/JP2009245216A/ja
Application granted granted Critical
Publication of JP4783392B2 publication Critical patent/JP4783392B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想記憶機能を有する情報処理装置および同装置に適用される障害回復方法に関する。
近年の半導体技術の向上により、CPU、I/O装置といったハードウェア資源の仮想化に対応したシステムが開発されている。このシステムは、仮想マシンモニタ(ハイパーバイザ)と呼ばれる仮想化ソフトウェアで制御されている。
仮想化ソフトウェアとしては、商用ソフトウェアのVMware(登録商標)や、オープンソースソフトウェアのXenがよく知られている。
これらの仮想化ソフトウェアを利用することで、パーソナルコンピュータのようなコンピュータ上で簡単に仮想化環境を構築できる。
この仮想化環境を利用することにより、CPU、メモリ、I/O装置といったハードウェア資源を複数のオペレーティングシステムが同時に利用する事が可能になり、ハードウェア資源の有効利用が可能になる。
しかし、仮想化技術の分野においては、システムの可用性を高めるためのフォールトトレラント機能の実現方法についてはほとんど報告されていないのが現状である。
従来、高信頼性が要求されるサーバ等の計算機システムでは、メモリやCPU等のハードウェア故障や、ソフトウェアの不具合によるシステム停止を回避する方法として、ハードウェア装置を多重化したサーバ上でOSを稼動する方法や、クラスタリングソフトウェアを使用して、複数台のコンポピュータをクラスタリングしたシステムで運用する方法、等が用いられている。
しかし、ハードウェア装置を多重化する方法では、ハードウェアコストが増大し、またソフトウェアの不具合によるシステム停止には対応することが困難であった。また、ハードウェア装置を制御するためのデバイスドライバ等の特別なソフトウェアが必要とされる。
一方、クラスタリングソフトウェアを使用して、複数台のコンピュータをクラスタリングしたシステムで運用する方法の場合には、複数台のコンピュータとクラスタリングソフトウェアとを用意する必要があり、システム構築に関する時間とコストが増大するという問題がある。
ところで、特許文献1には、仮想記憶管理方式の計算機におけるデータ復旧方法が開示されている。この方法は、ページテーブルの書き込み可能ビットをオフしておき、プロセッサがページのデータを更新しようとした時にメモリ保護割り込みを発生させ、その割り込み処理ルーチンの中で、ページの内容をディスクに保存するというものである。
特開平10−78884号公報
しかし、特許文献1の方法では、仮想化機能を有する計算機システムの高信頼化については考慮されていない。また、特許文献1の方法では、あるプログラムのデータの復旧しか考慮していないため、実際にハードウェア障害やソフトウェアの不具合が発生した場合には、システム停止を回避できない危険がある。
仮想化機能を有する計算機システムにおいては、ハードウェア資源は仮想化ソフトウェアによって管理されるため、高信頼化を図るためには、仮想環境上で動作するオペレーティングシステムと仮想化ソフトウェアとの間の新たなインタフェースを実現することが必要となる。
本発明は上述の事情を考慮してなされたものであり、ハードウェアの多重化やクラスタリングといった複雑な構成を用いることなく、ハードウェア故障やソフトウェアの不具合によるシステム停止を回避することが情報処理装置および障害回復方法を提供することを目的とする。
上述の課題を解決するため、本発明は、仮想化機能と仮想記憶機能とを有し、仮想環境上で動作するオペレーティングシステムの仮想記憶をページ単位で処理する情報処理装置において、前記仮想環境を制御する仮想マシンモニタによって、前記オペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定する手段と、前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を、前記仮想マシンモニタによって実行する更新前データ保存手段と、前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を、前記仮想マシンモニタによって実行する手段と、
定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記オペレーティングシステムの所定の仮想ページアドレスに対応したメモリ領域に保存するチェックポイント取得手段と、前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する処理とを、前記仮想マシンモニタによって実行する手段とを具備することを特徴とする。
また、本発明は、仮想化機能と仮想記憶機能とを有する情報処理装置を障害から回復するための障害回復処理方法であって、仮想マシンモニタによって制御される仮想環境上で動作するオペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定処理を、前記仮想環境を制御する仮想マシンモニタによって実行するステップと、前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を、前記仮想マシンモニタによって実行するステップと、前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を、前記仮想マシンモニタによって実行するステップと、定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記オペレーティングシステムの所定の仮想ページアドレスに対応したメモリ領域に保存するチェックポイント取得ステップと、前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する処理とを、前記仮想マシンモニタによって実行するステップとを具備することを特徴とする。
また、本発明は、仮想記憶機能を有するコンピュータのハードウェア資源を仮想化する仮想マシンモニタとして機能するプログラムであって、前記仮想マシンモニタによって制御される仮想環境上で動作するオペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定する手順と、前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を実行する更新前データ保存手順と、前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を実行する手順と、前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記オペレーティングシステムの所定の仮想ページアドレスに対応するページであるか否かを判別する判別手順であって、前記オペレーティングシステムは、定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記所定の仮想ページアドレスに対応したメモリ領域に保存するタスクを含んでいる、判別手順と、前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する手順と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する手順とを、前記コンピュータに実行させることを特徴とする。
本発明によれば、ハードウェアの多重化やクラスタリングといった複雑な構成を用いることなく、ハードウェア故障やソフトウェアの不具合によるシステム停止を回避することが可能となる。
以下、図面を参照して本発明の実施形態を説明する。
まず、図1を参照して、本発明の一実施形態に係る情報処理装置の構成を説明する。この情報処理装置はIAアーキテクチャのような既存のPCアーキテクチャを用いたコンピュータであり、例えば各種業務処理を実行するためのサーバコンピュータとして実現されている。
図1には、このコンピュータの構成が模式的に示されている。このコンピュータは、図示のように、1以上のCPU(プロセッサ)111と、メモリ管理ユニット(MMU)112と、1以上のメモリモジュールから構成されるメモリ113と、ハードディスクドライブ(HDD)のようなディスクドライブ装置114と、グラフィクスコントローラ、LANコントローラ等の他の各種I/Oデバイス115等を備えている。メモリ管理ユニット(MMU)112は、システムバス100を介して、メモリ113、ディスクドライブ装置114、およびI/Oデバイス115それぞれに接続されている。
メモリ管理ユニット(MMU)112は仮想記憶機能をサポートするための機構であり、ページングによって、仮想環境(仮想マシン)上で動作するオペレーティングシステムの仮想記憶アドレスを物理アドレスに変換する。なお、このメモリ管理ユニット(MMU)112はCPU111内に実装する形式であってもよい。また、マルチプロセッサ構成の構成例としては、複数のコアを含む1つのCPU111を用いる構成や、複数のCPU111を用いる構成等が利用し得る。
本コンピュータにおいては、CPUおよびI/Oデバイス等のハードウェア資源を仮想化し、その仮想環境上で既存のオペレーティングシステムを動作させる仮想化ソフトウェアである仮想マシンモニタが実行される。この仮想マシンモニタは、仮想環境上で動作するオペレーティングシステムの仮想記憶をページ単位で処理して、実ハードウェア資源を制御する。
図2には、本コンピュータのハードウェアとソフトウェアとの関係が示されている。
CPU111、メモリ113、ディスクドライブ装置114、他のI/Oデバイス115といったハードウェア資源(実ハードウェア)の制御は全て仮想マシンモニタ(ハイパーバイザ)200によって実行される。この仮想マシンモニタ200は各オペレーティングシステム(ゲストOS)に対して仮想環境(仮想マシン)を提供する。つまり、仮想マシンモニタ200は、ハードウェア資源を仮想化し、論理的なハードウェア資源を各ゲストOSに割り当てる。これにより、仮想マシンモニタ200上によってゲストOS毎に提供される仮想環境上で複数のゲストOSがそれぞれ独立して動作することができる。
図3は、本コンピュータの有する仮想記憶機能の例を示している。仮想記憶機能は、ページングを用いて、仮想アドレス空間(仮想記憶空間)を所定サイズのページ単位で物理アドレス空間(物理メモリ空間)にアドレス変換する機能である。このアドレス変換には、ページテーブルが用いられる。MMU112にはトランスレーション・ルックアサイド・バッファ(TLB)が設けられており、ページテーブルの内容がキャッシュされている。
図3では、x86 CPUにおけるページ単位でのメモリ管理の例がされている(32ビットアドレッシングの場合)。CPU111が仮想アドレス空間上のあるデータをアクセスする場合、そのデータの仮想アドレス(32ビット)は、例えば、ページディレクトリインデックス、ページテーブルインデックス、およびページオフセットから構成される。CPUのCR3レジスタによって指定されるページディレクトリ(PD)内のページディレクトリエントリ(PDE)が仮想アドレス内のページディレクトリインデックスによって指定される。そして、指定されたページディレクトリエントリ(PDE)の値は、複数のページテーブル(PT)の中から、仮想アドレスに対応するページテーブルを指定する。仮想アドレス内のページテーブルインデックスは、指定されたページテーブル内のページテーブルエントリ(PTE)を指定する。このページテーブルエントリ(PTE)の値は仮想アドレスに対応する物理メモリ上の物理ページのアドレスを示す。この物理ページの中で、仮想アドレス内のページオフセットで指定されるアドレスが、仮想アドレスに対応する物理アドレスとなる。ページテーブル(PT)内の各ページテーブルエントリ(PTE)の有効/無効により、CPUがアクセスする仮想空間アドレスに対応する物理ページが物理メモリ113上に存在するか否かが識別される。
このように、ページテーブル(PT)は、仮想ページアドレスを物理ページアドレスに変換するために用いられる。
図4には、本実施形態で用いられるメモリ割り当ての例が示されている。
本実施形態においては、物理メモリ113のメモリ空間上には、ゲストOS1用のメモリ領域301、ゲストOS2用のメモリ領域302、ゲストOS3用のメモリ領域303、仮想マシンモニタ(ハイパーバイザ)用のメモリ領域304、ゲストOS1の更新履歴用メモリ領域305、ゲストOS2の更新履歴用メモリ領域306、ゲストOS3の更新履歴用メモリ領域307、ゲストOS1〜OS3に対する障害時代替用メモリ領域308とが割り当てられている。
例えば、ゲストOS1は、仮想アドレス空間(0〜2GB)を用いてゲストOS1用のメモリ領域301をアクセスすることができ、またゲストOS2は、仮想アドレス空間(0〜1GB)を用いてゲストOS2用のメモリ領域302をアクセスすることができる。
ゲストOS1の更新履歴用メモリ領域305はゲストOS1によって行われたメモリ更新履歴を格納するための領域であり、ここには、ゲストOS1によって更新されるメモリ領域301上のデータの更新前データが仮想マシンモニタ200によって蓄積される。
ゲストOS2の更新履歴用メモリ領域306はゲストOS2によって行われたメモリ更新履歴を格納するための領域であり、ここには、ゲストOS2によって更新されるメモリ領域302上のデータの更新前データが仮想マシンモニタ200によって蓄積される。
ゲストOS3の更新履歴用メモリ領域307はゲストOS3によって行われたメモリ更新履歴を格納するための領域であり、ここには、ゲストOS3によって更新されるメモリ領域303上のデータの更新前データが仮想マシンモニタ200によって蓄積される。
これら更新履歴用メモリ領域305〜307は仮想マシンモニタ200が管理するメモリ領域である。
障害時代替用メモリ領域308は、ゲストOSに割り当てられた物理メモリ領域内のある記憶位置にハードウェア障害が発生した場合に、その記憶位置の代替用に用いられる記憶領域である。この障害時代替用メモリ領域308も仮想マシンモニタ200が管理するメモリ領域である。
ここで、仮想マシンモニタ200によって実行される更新前データ蓄積処理の概要について説明する。ここでは、説明を簡単にするために、ゲストOSが1つである場合を例示する。
仮想マシンモニタ200は、ゲストOSに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定する。例えば、各ページテーブルエントリの書き込み可能属性を示すビットをオフに設定すればよい。ゲストOSが書き込み禁止のページへアクセスするためにページテーブルを参照すると、ページ書き込み違反の例外(または割り込み)がCPU内で発生し、これによって仮想マシンモニタ200に制御が渡される。仮想マシンモニタ200は、ページ書き込み違反の例外の発生に応答して、ページ書き込み違反が発生したページの更新前データをゲストOSのメモリ領域から取得して、そのゲストOS用の更新履歴用メモリ領域に保存する。
更新前データを保存した後に、仮想マシンモニタ200は、ページ書き込み違反が発生したページの書き込み禁止を解除することによってゲストOSによるページ書き込み違反が発生したページへの書き込みを継続させる。これにより、ゲストOSは、当該ページへの書き込みを正常に実行することが出来るようになる。
このように更新履歴用メモリ領域に更新前データを蓄積することにより、更新履歴用メモリ領域を用いてゲストOSのメモリ領域の内容を復元することができる。
更新前データ蓄積処理は、チェックポイント取得処理のタイミングと同期するように制御される。ここで、チェックポイント取得処理は、プロセスの実行の途中の状態からの再実行に必要な情報を定期的に保存する処理である。この情報を保存する時点をチェックポイントと呼び、その情報を保存することをチェックポイントの取得と呼ぶ。チェックポイント取得処理では、CPUの状態(プログラムカウンタ、レジスタ値等)を含むコンテキストを再実行に必要な情報として保存する。このチェックポイント取得処理はゲストOSのカーネルによって実行することが出来る。この場合、ゲストOSは、取得したコンテキストを、そのゲストOSの所定の仮想ページアドレスに対応したメモリ領域に保存する。仮想マシンモニタ200は、チェックポイント取得に使用する仮想ページアドレスに対するライトをトリガに、更新前データ蓄積処理を制御することができる。
すなわち、ページ書き込み違反による例外が発生した場合、仮想マシンモニタ200は、まず、ページ書き込み違反が発生したページがチェックポイント取得用の仮想ページアドレスに対応するページであるか否かを判別する。このチェックポイント取得用の仮想ページアドレスで指定されるページは、ゲストOSと仮想マシンモニタ200との間のインタフェース用のページとして用いられる。
ページ書き込み違反が発生したページがチェックポイント取得用の仮想ページアドレスに対応するページであるならば、仮想マシンモニタ200は、書き込み禁止を解除したページを再度書き込み禁止状態に設定し、これによってゲストOSに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する。
このようにして、チェックポイントの度にページテーブルの全ページが書き込み禁止状態に初期設定され、あるチェックポイントから次のチェックポイントまでの期間においては、各ページ毎に、そのページに対する最初の更新に対応する更新前データのみが蓄積される。
また、仮想マシンモニタ200は、チェックポイント取得処理のタイミングと同期するように、I/O装置に対するアクセスを実行する。
すなわち、仮想マシンモニタ200は、ゲストOSから発行されるI/O要求の実行タイミングを次のチェックポイント取得処理が実行されるまで遅延させるために、ゲストOSから発行されるI/O要求を蓄積する。そして、仮想マシンモニタ200は、ページ書き込み違反が発生したページがチェックポイント取得用の仮想ページアドレスに対応するページであることが判別された時、つまりチェックポイント取得処理が実行された時に、蓄積されているI/O要求を実行する。
このようにI/O要求の実行を遅らせることにより、障害が発生した場合には、CPUおよびメモリの状態のみならず、I/O装置の状態も、直前のチェックポイント時点の状態に復元することが出来る。
仮想マシンモニタ200は全てのハードウェア資源を直接的に制御しているので、ゲストOSによるI/O要求が実際に実行されるタイミングを容易に制御することができる。
また、仮想マシンモニタ200は、ハードウェア故障時に以下の処理を実行する。ここでは、メモリ112のECCエラーを例示して説明する。
ECCエラー発生時には、NMI(割り込み)が発生し、仮想マシンモニタ200に制御が渡される。
仮想マシンモニタ200は、発生したECCエラーが誤り訂正可能なエラー(1ビットエラー)であるか否かを判別する。発生したECCエラーが誤り訂正可能なエラーでない場合(2ビットエラー)、仮想マシンモニタ200は、保存されているコンテキスト(チェックポイント情報)を用いてCPUの状態を直前のチェックポイントに対応する状態に復元すると共に、更新履歴用メモリ領域に保存されている更新前データを用いてゲストOSのメモリ領域の状態を直前のチェックポイントに対応する時点に復元する。
さらに、仮想マシンモニタ200は、誤り訂正可能ではないエラーが発生した仮想ページアドレス用に、障害時代替用メモリ領域308の空き物理ページを割り当て、誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応するページテーブルのエントリに、空き物理ページのページアドレスを設定する。
また、仮想マシンモニタ200は、ソフトウェアの不具合によるシステム停止を回避するために、以下の機能も有している。
仮想マシンモニタ200は、まず、ゲストOSがパニック関数を呼び出す仮想ページアドレスに対応したページが存在しない状態にページテーブルを初期設定する。ゲストOSがパニック関数を呼び出すためにページテーブルを参照すると、ページフォルトによる例外が発生し、これによって仮想マシンモニタ200に制御が移る。仮想マシンモニタ200は、ページフォルトによる例外の発生に応答して、ページフォルトが発生したページがパニック関数のコードを呼び出す仮想ページアドレスに対応するページであるか否かを判別する。
パニック関数のコードを呼び出す仮想ページアドレスに対応するページであるならば、仮想マシンモニタ200は、保存されているコンテキスト(チェックポイント情報)を用いてCPUの状態を直前のチェックポイントに対応する状態に復元すると共に、更新履歴用メモリ領域に保存されている更新前データを用いてゲストOSのメモリ領域の状態を直前のチェックポイントに対応する時点に復元する。
次に、仮想マシンモニタ200によって実行される具体的な処理について説明する。
まず、仮想マシンモニタによるページフォルト処理を説明する。ここでは、本実施形態の構成例を理解し易くするために、まず、一般的な仮想マシンモニタとしてXenを例として説明する。
仮想マシンミニタXenでは、ゲストOSの仮想空間アドレスのページング機能を管理するデータ構造であるページテーブル(ゲストページテーブル)とは別に、ゲストOSの仮想空間アドレスと物理メモリを変換するための、シャドウページテーブルを使用したアドレス変換方式が一般的である。ゲストOSによって管理されるゲストページテーブルはアドレス変換に関しては仮想的なものであり、ゲストページテーブルの各エントリにはゲストOSが物理ページアドレスであると思っているアドレスが格納される。シャドウページテーブルはMMU112に実際に設定される実ページテーブルであり、仮想マシンミニタXenによって管理される。シャドウページテーブルの各エントリには実際の物理ページアドレスが格納される。
図5は、仮想マシンモニタXenのシャドウページテーブルの概念図である。
説明を簡単にするため、ここでは、シングルシャドウページテーブルで説明する。また、ゲストOSと仮想マシンモニタを区別するため、シャドウ側の用語にはS(shadow)をつけた。これは、説明のためであり、XenではPTはページ仮想モニタのページテーブルであり、ここで説明しているSPTにあたる。マルチプルシャドウページテーブルは、個々のゲストOSのページテーブル(ゲストページテーブル)毎にシャドウページテーブルを持つ方式で、ゲストOSのページテーブルが切り替わるたびに、対応するシャドウページテーブルを切り返える方式である。
ゲストOSが実行されると、CPU(本物、仮想でない)は、ゲストOSのページテーブルでなく、仮想マシンモニタのシャドウページテーブル(SPT)を参照し、アドレス変換を行う。IA32の場合には、TLBをフラッシュするために、必ずinvlpg命令を実行する必要があり、仮想化が実装されたCPUでは、一般保護例外となり、例外を処理する仮想マシンモニタに制御が渡たる。
仮想マシンモニタXenでは、ゲストOSのPTEの操作が発生したことを、ページフォルトで管理している。そのため、ゲストOSのPTのPTEがマップされる物理メモリの
SPTのSPTEは無効にしている。ゲストOSのPTEの操作のページフォルトの例外が発生すると、そのページをout of sync list と呼ばれるリストにキューイングし、ゲストOSのPTEにマップされる仮想マシンモニタのSPTEを有効にし(例外を回復)、ゲストOSのPTEへの書き込みを許可し、PTEへ書き込み、PTE更新時のinvlpg命令を実行する。
invlpg命令(特権命令)を実行すると、一般保護例外が発生し、仮想マシンモニタへ制御が渡り、out of sync list の内容をSPTに反映し、ゲストOSのPTEにマップされる仮想マシンモニタXenのSPTEを再び無効にする。
ゲストOSがページをアクセスするためにPTにPTEを追加しようとすると、CPUは、SPD経由でアクセスするため、SPT内には、SPTEが存在しないためアドレス変換できないため、ページフォルトが発生する。ページフォルトを処理する仮想マシンモニタでは、フォルトを処理する仮想空間アドレスがゲストOSのPTをout of sync list へ保存し、ページフォルトを解決する。ページフォルトが解決され、ゲストOSのPTのPTEを更新し、TLBをフラッシュするために、invlpg命令を実行すると、一般保護例外が発生し、仮想マシンモニタへ制御が渡り、out of sync list に保存してあるPTのPTE状態と現在のゲストOSのPTのPTE状態をチェックし、現在のゲストOSのPTのPTEがない場合で、out of sync list に保存してあるPTのPTEがある場合には、ゲストOSのPTEが無効になったと判断し、仮想マシンモニタのPTのPTEを無効にする。現在のゲストOSのPTのPTEがある場合で、out of sync list に保存してあるPTのPTEがない場合には、ゲストOSがPTEを設定したと判断し、ゲストOSのPTEをSPTEへコピーする(図5)。
ここまでが、仮想マシンモニタXenでのページフォルトの実現例である。
さて、本実施形態では、例えば、従来の仮想マシンモニタのシャドウページテーブルに加え、ゲストOSの全PTがマップされる物理メモリのSPTのSPTEを書き込み禁止にする。Xenでは、ゲストOSのPTのPTE操作をエミュレートするために、シャドウページテーブルとout of sync list とゲストOSが実行したinvlpg命令の一般保護例外による書き戻しを利用していたが、本実施形態では、ゲストOSの更新前のページ状態を保存するために、仮想マシンモニタのメモリ管理構造に、before page image listを追加する。
本実施形態では、ゲストOSがページを更新する際には、SPTEを参照する。SPTEでは、全てのPTEに対応するページそれぞれが書き込み禁止に設定されているため、ページフォルトの例外(書き込み違反による例外)が発生し、仮想マシンモニタ200へ制御が渡る。仮想マシンモニタ200では、SPTEが書き込み禁止になっていれば、
(チェックポイント間でのはじめての書き込み)、ゲストOSの更新したいページの内容(更新前データ)を図2に示す当該ゲストOSに対応する更新履歴用メモリ領域に格納すると共に、ゲストOSの更新したいページの仮想空間アドレス(ゲストOSの仮想アドレス)と更新履歴用メモリ領域のアドレス(仮想マシンモニタの物理アドレス)とをshadow page table entry listへ設定し、そして、書き込み違反が発生したページに対応するSPTEの書き込み禁止を解除する(図6)。
図2の各ゲストOSの更新履歴メモリ領域への保存の仕方は、ページフォルトが発生したゲストOSの仮想空間アドレス(仮想ページアドレス)でbefore page image entryを検索し、もし、ページフォルトが発生したゲストOSの仮想空間アドレスのエントリが有効であれば、過去にビフォアイメージを採取した事があるので、ゲストOSの仮想空間アドレスのデータで更新履歴の対応するエントリを上書きする。エントリが無効であれば、過去にビフォアイメージを採取した事がないので、更新履歴の対応するエントリにゲストOSの仮想空間アドレスのデータを書き込み、before page image entryの無効といなっているエントリを取り出し、ゲストOSの仮想空間アドレスを設定し、エントリを有効にする(図8)。
また、本実施形態では、図6に示すように、ECC error page listも用いられる。このECC error page listは、ECC2ビットエラーが発生したページをリンクするために用いられる。また、本実施形態では、図7に示すように、ゲストOSからのI/O要求を蓄積及び管理するためのI/O要求管理構造として、I/O request listも追加されている。
次に、図9および図10のフローチャートを参照して、仮想マシンモニタ200によって実行されるページフォルト処理の流れを説明する。
まず、ゲストOSによるページ書き込みがゲストOSが管理している仮想アドレスの範囲内であるかどうかがCPUのMMU等によって判別され(ステップS11)、範囲内でないならば、ページフォルトが発生し、通常の書き込み違反例外処理が仮想マシンモニタ200によって実行される(ステップS12)。
ページ書き込みがゲストOSが管理している仮想アドレスの範囲内であり、且つその書き込みページが書き込み禁止されているならば(ステップS13のYES)、ページ書き込み違反の例外が発生し、仮想マシンモニタ200に制御が渡る。
仮想マシンモニタ200は、ページ書き込み違反が発生したページが、上述したゲストOSと仮想マシンモニタ200とのインタフェース用のページ(チェックポイント取得用ページ)ではないかどうか、つまり、ページ書き込み違反が発生したページがチェックポイント取得のためにコンテキストをライトすべきゲストOSの仮想ページアドレスに対応するページでないかどうかを判別する(ステップS14)。
ページ書き込み違反が発生したページがインタフェース用のページ(チェックポイント取得用ページ)でないならば(ステップS14のYES)、仮想マシンモニタ200は、ページ書き込み違反が発生したページの更新前の内容(データ)をゲストOSのメモリ領域からリードして、当該ゲストOSに対応する更新履歴用メモリ領域に保存する(ステップS15)。この保存後、仮想マシンモニタ200は、ページテーブルを更新して、そのページを書き込み可に設定する(ステップS16)。これにより、ゲストOSはページ書き込み違反が発生したページへのデータの書き込みが可能となる(ステップS17)。
ページ書き込み違反が発生したページがインタフェース用のページ(チェックポイント取得用ページ)であるならば(ステップS14のNO)、仮想マシンモニタ200は、インタフェース用のページを書き込み可に設定した後、ステップS21に進み、I/O管理構造に存在する発行していないI/O要求を実行する。そして、仮想マシンモニタ200は、メモリ管理構造に存在するページフォルトがあったページを管理するデータを初期化した後(ステップS22)、全てのページの書き込みを再び書き込み禁止に設定する(ステップS23)。チェックポイント情報(コンテキスト)はゲストOSによりチェックポイント取得用ページに書き込まれる(ステップS17)。
次に、図11のフローチャートを参照して、invlpg命令での一般保護例外処理の流れを説明する。
invlpg命令が実行されると、仮想マシンモニタ200は、ゲストOSと仮想マシンモニタ200とのインタフェース用のページが書き込み可であるか否かを判別する(ステップS21)。インタフェース用のページが書き込み可であれば(ステップS31のYES)、仮想マシンモニタ200は、そのページを書き込み禁止にする(ステップS32)。そして、仮想マシンモニタ200は、out of sync listを用いて、ページテーブルとシャドウページテーブルとを同期させる(ステップS33)。
次に、図12、図13のフローチャートを参照して、ECCエラー時のNMI処理の流れについて説明する。
ECCの2ビット誤り等の障害が発生した場合には、CPUへNMI(Non Maskable Interrupt)が入力される。CPUのNMIハンドラ割り込みは、仮想マシンモニタ200へ登録されているので、NMIは仮想マシンモニタ200が処理する。仮想マシンモニタ200には、従来のNMIハンドラに加え、チェックポイントリスタートを実行する処理が追加されている。ECCエラー時のNMIハンドラの処理は以下の通りである。
ゲストOSによるメモリアクセスによってECCエラーが発生した時、NMIによって仮想マシンモニタ200に制御が渡る。仮想マシンモニタ200は、発生したECCエラーが誤り訂正可能なECCエラーであるかどうかを判定する(ステップS41)。
誤り訂正可能なECCエラーでない場合には(ステップS41のNO)、仮想マシンモニタ200は、保存されている更新前データを用いてゲストOSのメモリの状態を直前のチェックポイントに対応する時点に復元する処理を実行する(ステップS42)。ステップS42では、例えば、更新履歴管理構造(before page image list)を使用して、誤り訂正可能でない仮想アドレスを除き、ゲストOSの仮想アドレスに対応するメモリの内容が物理アドレスに書き戻される。次いで、仮想マシンモニタ200は、誤り訂正可能ではないエラーが発生した仮想ページアドレス用に、障害時代替用メモリ領域308の空き物理ページを用意する(ステップS43)。そして、仮想マシンモニタ200は、誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応するページテーブル(シャドウページテーブル)のエントリに、用意した空き物理ページのページアドレスを設定する(ステップS44〜S46)。この場合、誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応する更新前データは用意した空き物理ページに書き戻される(ステップS44)。
この後、仮想マシンモニタ200は、ECCエラーが発生したことを示すメッセージをコンソール等の表示画面上に表示する(ステップS47)。
なお、発生したECCエラーが誤り訂正可能でないECCエラーである場合には、自動的にリスタート処理を開始してもよい。この場合、保存されている更新前データを用いてゲストOSのメモリの状態を直前のチェックポイントに対応する時点に復元する処理、および誤り訂正可能ではないエラーが発生した仮想ページアドレス用に空き物理ページを用意して、誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応するページテーブルのエントリに用意した物理ページの物理ページアドレスを設定する処理等に加え、保存されているコンテキストを用いてCPUの状態を直前のチェックポイントに対応する状態に復元する処理が仮想マシンモニタ200によって実行される。
また、仮想マシンモニタ200は、ECCエラー時と同様の処理をゲストOSのパニック関数についても行う。
パニックの発生の監視は、例えば、ゲストOSがパニック関数を呼び出す仮想ページアドレスに対応するページが存在しない状態にページテーブルを初期設定することによって容易に行うことができる。手順は以下の通りである。
1. 仮想マシンモニタ200は、まず、ゲストOSがパニック関数を呼び出す仮想ページアドレスに対応したページが存在しない状態にページテーブルを初期設定する。ここでは、例えば、パニック関数を呼び出す仮想ページアドレスに対応したページテーブルエントリのプレゼントビットがOFFに設定される。
2. 仮想マシンモニタ200は、ページフォルトによる例外が発生すると、ページフォルトが発生したページがパニック関数のコードを呼び出す仮想ページアドレスに対応するページであるか否かを判別する。
3. パニック関数のコードを呼び出す仮想ページアドレスに対応するページであれば、仮想マシンモニタ200は、保存されているコンテキスト(チェックポイント情報)を用いてCPUの状態を直前のチェックポイントに対応する状態に復元すると共に、更新履歴用メモリ領域に保存されている更新前データを用いてゲストOSのメモリ領域の状態を直前のチェックポイントに対応する時点に復元する。
なお、データベース等を使う場合には、ユーザ(アプリケーション)からの要求に従い、復旧できるようにする事も意義がある。この場合には、”リスタート用”インタフェースのページを設定すれば、ユーザ要求でリスタートを実現することができる。
次に、チェックポイントを取得する処理について説明する。
チェックポイント取得処理はゲストOSのカーネル内で実現することができる。Windows(登録商標)の場合には、カーネルドライバ、Linux(登録商標)の場合には、カーネルスレッドで実現することができる。カーネルスレッドは、ゲストOSの論理CPUにバインドし、CPU個数分が同時に動作し、CPU間通信を使用し代表者の一人がチェックポイントを取得する。
図14のフローチャートはチェックポイント取得処理の流れを示している。
例えば複数のゲストOSがCPU間通信を使用して通信することにより、ゲストOSの内から代表を決定する(ステップS51)。各ゲストOSはチェックポイントの時点毎に自身が代表であるか否かを判定し、代表でない場合にはチェックポイント取得処理の完了まで待機する(ステップS52、S53)。代表のゲストOSは、チェックポイント情報(コンテキスト)を仮想マシンモニタとのインタフェース用のページに書き込むことにより、チェックポイント取得処理を実行する(ステップS53、S54)。
以上のように、本実施形態によれば、更新履歴用メモリ領域に更新前データを蓄積することにより、更新履歴用メモリ領域を用いてゲストOSのメモリ領域の内容を復元することができる。また、更新前データ蓄積処理は、ゲストOSと仮想モニタとの間のインタフェース用のページを用いることにより、チェックポイント取得処理のタイミングと同期するように制御される。これにより、チェックポイント取得の度にページテーブルの全ページが書き込み禁止状態に初期設定することができ、あるチェックポイントから次のチェックポイントまでの期間においては、各ページ毎に、そのページに対する最初の更新に対応する更新前データのみを効率よく蓄積することができる。また、ゲストOSと仮想モニタとの間のインタフェース用のページを利用することにより、ゲストOSから発行されるI/O要求の実行タイミングを次のチェックポイント取得処理が実行されるまで遅延させる処理を効率よく実行することができるので、I/O装置をも含めてシステム全体の状態を正常に直前のチェックポイントの時点に戻してリスタートすることができる。
よって、ハードウェアの多重化やクラスタリングといった複雑な構成を用いることなく、仮想化機能を用いたコンピュータ上でのハードウェア故障やソフトウェアの不具合によるシステム停止を回避することが可能となる。
なお、本実施形態では、ゲストページテーブルの他に、仮想マシンモニタが管理する物理ページアドレスを保持するためのページテーブルをシャドウページテーブルとして実装する例を説明したが、これはあくまで一例であり、ゲストOSの仮想ページアドレスを仮想マシンモニタが管理する物理ページアドレスに変換するページテーブルのみを使用する構成であってもよい。
また、本実施形態の更新前データ保存処理および障害回復処理等は全て仮想マシンモニタによって実行されるので、この仮想マシンモニタをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の一実施形態に係る情報処理装置の構成を示すブロック図。 同実施形態の情報処理装置におけるハードウェアとソフトウェアとの関係を示すブロック図。 同実施形態の情報処理装置で用いられる仮想記憶機能の例を説明するための図。 同実施形態の情報処理装置におけるメモリ割り当ての例を示す図。 従来の仮想マシンモニタのシャドウページテーブルを模式的に示す図。 同実施形態の情報処理装置で用いられる仮想マシンモニタのメモリ管理構造を説明するための図。 同実施形態の情報処理装置で用いられる仮想マシンモニタのI/O要求管理構造を説明するための図。 同実施形態の情報処理装置で用いられる仮想マシンモニタの更新履歴管理構造を説明するための図。 同実施形態の情報処理装置によって実行されるページフォルト処理の流れの一部を説明するためのフローチャート。 同実施形態の情報処理装置によって実行されるページフォルト処理の流れの残り部分を説明するためのフローチャート。 同実施形態の情報処理装置によって実行される一般保護例外処理の流れを説明するフローチャート。 同実施形態の情報処理装置によって実行されるECCエラー時のNMI処理の流れの一部を説明するためのフローチャート。 同実施形態の情報処理装置によって実行されるECCエラー時のNMI処理の流れの残り部を説明するためのフローチャート。 同実施形態の情報処理装置によって実行されるチェックポイント取得処理の流れを説明するためのフローチャート。
符号の説明
111…CPU、112…メモリ管理ユニット、113…メモリ、114…ディスクドライブ装置、115…I/Oデバイス、200…仮想マシンモニタ、301…ゲストOS1用のメモリ領域、302…ゲストOS2用のメモリ領域、303…ゲストOS3用のメモリ領域、304…仮想マシンモニタ(ハイパーバイザ)用のメモリ領域、305…ゲストOS1の更新履歴用メモリ領域、306…ゲストOS2の更新履歴用メモリ領域、307…ゲストOS3の更新履歴用メモリ領域、308…ゲストOS1〜OS3に対する障害時代替用メモリ領域。

Claims (10)

  1. 仮想化機能と仮想記憶機能とを有し、仮想環境上で動作するオペレーティングシステムの仮想記憶をページ単位で処理する情報処理装置において、
    前記仮想環境を制御する仮想マシンモニタによって、前記オペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定する手段と、
    前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を、前記仮想マシンモニタによって実行する更新前データ保存手段と、
    前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を、前記仮想マシンモニタによって実行する手段と、
    定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記オペレーティングシステムの所定の仮想ページアドレスに対応したメモリ領域に保存するチェックポイント取得手段と、
    前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する処理とを、前記仮想マシンモニタによって実行する手段とを具備することを特徴とする情報処理装置。
  2. 前記オペレーティングシステムから発行されるI/O要求の実行を次のチェックポイント取得処理が実行されるまで遅延させるために、前記オペレーティングシステムから発行されるI/O要求を蓄積する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された時に前記蓄積されているI/O要求を実行する処理とを、前記仮想マシンモニタによって実行する手段とをさらに具備することを特徴とする請求項1記載の情報処理装置。
  3. 前記オペレーティングシステムによるメモリアクセスによってECCエラーが発生した際に、前記ECCエラーが誤り訂正可能なエラーであるか否かを判別する処理を、前記仮想マシンモニタによって実行する手段と、
    前記ECCエラーが誤り訂正可能なエラーでない場合、前記保存されているコンテキストを用いてプロセッサの状態を直前のチェックポイントに対応する状態に復元すると共に、前記保存されている更新前データを用いて前記オペレーティングシステムのメモリの状態を直前のチェックポイントに対応する時点に復元する処理と、前記誤り訂正可能ではないエラーが発生した仮想ページアドレス用に所定の物理ページを割り当て、前記誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応する前記ページテーブルのエントリに前記所定の物理ページの物理ページアドレスを設定する処理とを、前記仮想マシンモニタによって実行する手段とをさらに具備することを特徴とする請求項1記載の情報処理装置。
  4. 前記ページテーブルを、前記オペレーティングシステムのパニック関数を呼び出す仮想ページアドレスに対応したページが存在しない状態に設定する処理を前記仮想マシンモニタによって実行する手段と、
    ページフォルトによる例外が発生した場合、前記ページフォルトによる例外が発生したページが前記パニック関数のコードを呼び出す仮想ページアドレスに対応するページであるか否かを判別する処理と、前記パニック関数のコードを呼び出す仮想ページアドレスに対応するページである場合、前記保存されているコンテキストを用いてプロセッサの状態を直前のチェックポイントに対応する状態に復元すると共に、前記保存されている更新前データを用いて前記オペレーティングシステムのメモリの状態を直前のチェックポイントに対応する時点に復元する処理とを、前記仮想マシンモニタによって実行する手段とをさらに具備することを特徴とする請求項2記載の情報処理装置。
  5. 仮想化機能と仮想記憶機能とを有する情報処理装置を障害から回復するための障害回復処理方法であって、
    仮想マシンモニタによって制御される仮想環境上で動作するオペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定処理を、前記仮想環境を制御する仮想マシンモニタによって実行するステップと、
    前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を、前記仮想マシンモニタによって実行するステップと、
    前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を、前記仮想マシンモニタによって実行するステップと、
    定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記オペレーティングシステムの所定の仮想ページアドレスに対応したメモリ領域に保存するチェックポイント取得ステップと、
    前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する処理とを、前記仮想マシンモニタによって実行するステップとを具備することを特徴とする障害回復処理方法。
  6. 前記オペレーティングシステムから発行されるI/O要求の実行を次のチェックポイント取得処理が実行されるまで遅延させるために、前記オペレーティングシステムから発行されるI/O要求を蓄積する処理と、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された時に前記蓄積されているI/O要求を実行する処理とを、前記仮想マシンモニタによって実行するステップをさらに具備することを特徴とする請求項5記載の障害回復処理方法。
  7. 仮想記憶機能を有するコンピュータのハードウェア資源を仮想化する仮想マシンモニタとして機能するプログラムであって、
    前記仮想マシンモニタによって制御される仮想環境上で動作するオペレーティングシステムに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定する手順と、
    前記オペレーティングシステムが書き込み禁止のページへアクセスするために前記ページテーブルを参照した際に発生するページ書き込み違反の例外に応答して、前記ページ書き込み違反が発生したページの更新前データを前記オペレーティングシステムのメモリ領域から取得して前記仮想マシンモニタが管理するメモリ領域に保存する処理を実行する更新前データ保存手順と、
    前記更新前データを保存した後に前記ページ書き込み違反が発生したページの書き込み禁止を解除することによって前記オペレーティングシステムによる前記ページ書き込み違反が発生したページへの書き込みを継続させる処理を実行する手順と、
    前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記オペレーティングシステムの所定の仮想ページアドレスに対応するページであるか否かを判別する判別手順であって、前記オペレーティングシステムは、定期的にチェックポイント取得処理を実行して、前記情報処理装置のプロセッサの状態を含むコンテキストを、前記所定の仮想ページアドレスに対応したメモリ領域に保存するタスクを含んでいる、判別手順と、
    前記ページ書き込み違反による例外が発生した場合、前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであるか否かを判別する手順と、
    前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された場合、前記書き込み禁止を解除したページを再度書き込み禁止状態に設定して前記オペレーティングシステムに割り当てるページテーブルの全ページを書き込み禁止状態に再設定する手順とを、前記コンピュータに実行させることを特徴とするプログラム。
  8. 前記オペレーティングシステムから発行されるI/O要求の実行を次のチェックポイント取得処理が実行されるまで遅延させるために、前記オペレーティングシステムから発行されるI/O要求を蓄積する手順と、
    前記ページ書き込み違反が発生したページが前記所定の仮想ページアドレスに対応するページであることが判別された時に前記蓄積されているI/O要求を実行する手順とを、前記コンピュータにさらに実行させることを特徴とする請求項7記載のプログラム。
  9. 前記オペレーティングシステムによるメモリアクセスによってECCエラーが発生した際に、前記ECCエラーが誤り訂正可能なエラーであるか否かを判別する手順と、
    前記ECCエラーが誤り訂正可能なエラーでない場合、前記保存されているコンテキストを用いてプロセッサの状態を直前のチェックポイントに対応する状態に復元すると共に、前記保存されている更新前データを用いて前記オペレーティングシステムのメモリの状態を直前のチェックポイントに対応する時点に復元する手順と、
    前記誤り訂正可能ではないエラーが発生した仮想ページアドレス用に所定の物理ページを割り当て、前記誤り訂正可能ではないエラーが発生した仮想ページアドレスに対応する前記ページテーブルのエントリに前記所定の物理ページの物理ページアドレスを設定する手順とを、前記コンピュータにさらに実行させることを特徴とする請求項7記載のプログラム。
  10. 前記ページテーブルを、前記オペレーティングシステムのパニック関数を呼び出す仮想ページアドレスに対応したページが存在しない状態に設定する処理を前記仮想マシンモニタによって実行する手順と、
    ページフォルトによる例外が発生した場合、前記ページフォルトによる例外が発生したページが前記パニック関数のコードを呼び出す仮想ページアドレスに対応するページであるか否かを判別する手順と、
    前記パニック関数のコードを呼び出す仮想ページアドレスに対応するページである場合、前記保存されているコンテキストを用いてプロセッサの状態を直前のチェックポイントに対応する状態に復元すると共に、前記保存されている更新前データを用いて前記オペレーティングシステムのメモリの状態を直前のチェックポイントに対応する時点に復元する手順とを、前記コンピュータにさらに実行させることを特徴とする請求項7記載のプログラム。
JP2008091727A 2008-03-31 2008-03-31 情報処理装置および障害回復方法 Expired - Fee Related JP4783392B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008091727A JP4783392B2 (ja) 2008-03-31 2008-03-31 情報処理装置および障害回復方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008091727A JP4783392B2 (ja) 2008-03-31 2008-03-31 情報処理装置および障害回復方法

Publications (2)

Publication Number Publication Date
JP2009245216A JP2009245216A (ja) 2009-10-22
JP4783392B2 true JP4783392B2 (ja) 2011-09-28

Family

ID=41307019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008091727A Expired - Fee Related JP4783392B2 (ja) 2008-03-31 2008-03-31 情報処理装置および障害回復方法

Country Status (1)

Country Link
JP (1) JP4783392B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667191B2 (en) * 2010-01-15 2014-03-04 Kingston Technology Corporation Managing and indentifying multiple memory storage devices
JP5484117B2 (ja) * 2010-02-17 2014-05-07 株式会社日立製作所 ハイパーバイザ及びサーバ装置
WO2011148447A1 (ja) 2010-05-24 2011-12-01 パナソニック株式会社 仮想計算機システム、領域管理方法、及びプログラム
JP5635815B2 (ja) * 2010-06-14 2014-12-03 株式会社日立製作所 コンピュータシステム及びその制御方法
WO2012070102A1 (ja) * 2010-11-22 2012-05-31 三菱電機株式会社 計算機装置及びプログラム
FR2972548B1 (fr) * 2011-03-08 2013-07-12 Thales Sa Dispositif pour l'amelioration de la tolerance aux fautes d'un processeur
JP5545250B2 (ja) * 2011-03-22 2014-07-09 株式会社デンソー 制御装置
WO2013080288A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 メモリ縮退方法及び情報処理装置
EP2787441A4 (en) * 2011-11-30 2015-08-26 Hitachi Ltd MEMORY EMPTY COLLECTION TECHNIQUE
US8875295B2 (en) * 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
JP6237230B2 (ja) 2013-12-27 2017-11-29 富士通株式会社 メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置
CN112099905B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 虚拟机脏页获取方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
JP2009245216A (ja) 2009-10-22

Similar Documents

Publication Publication Date Title
JP4783392B2 (ja) 情報処理装置および障害回復方法
US9928180B2 (en) Synchronizing a translation lookaside buffer with page tables
US10859289B2 (en) Generating and using checkpoints in a virtual computer system
US10191761B2 (en) Adaptive dynamic selection and application of multiple virtualization techniques
Park et al. Fast and space-efficient virtual machine checkpointing
US8479195B2 (en) Dynamic selection and application of multiple virtualization techniques
JP5484117B2 (ja) ハイパーバイザ及びサーバ装置
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
JP5772962B2 (ja) 情報処理装置、メモリダンプ採取方法、及びプログラム
US8468310B2 (en) Method and system for tracking data correspondences
WO2022193768A1 (zh) 内存读写指令的执行方法及计算设备
Russinovich et al. Virtual machine preserving host updates for zero day patching in public cloud
JP2005122334A (ja) メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム
Kourai Fast and correct performance recovery of operating systems using a virtual machine monitor
US20220318053A1 (en) Method of supporting persistence and computing device
WO2012137239A1 (ja) 計算機システム
Huang et al. Optimizing crash dump in virtualized environments
JP2022542212A (ja) カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110609

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110614

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110708

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees