(57)【要約】  複数の仮想マシンが動作する情報処理装置が実行するメモリ縮退方法であって、第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する処理を実行する。
2013080288.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作する情報処理装置が実行するメモリ縮退方法であって、
第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、
前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する処理を実行するメモリ縮退方法。
【請求項２】
前記第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記第一の仮想マシンのオペレーティングシステムが、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、ハイパーバイザが前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、
再起動された前記オペレーティングシステムが、前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを使用対象から除外する処理を実行する請求項１記載のメモリ縮退方法。
【請求項３】
前記対応関係を変更する処理は、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項１又は２記載のメモリ縮退方法。
【請求項４】
前記対応関係を変更する処理は、前記故障に係る物理アドレスが、前記オペレーティングシステムのカーネル空間に割り当てられる仮想物理アドレスに対応付けられないように、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項３記載のメモリ縮退方法。
【請求項５】
複数の仮想マシンが動作する情報処理装置であって、
第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶する記憶部と、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更する変更部と、
前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する除外部とを有する情報処理装置。
【請求項６】
前記変更部は、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項５記載の情報処理装置。
【請求項７】
前記変更部は、前記故障に係る物理アドレスが、前記オペレーティングシステムのカーネル空間に割り当てられる仮想物理アドレスに対応付けられないように、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項６記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ縮退方法及び情報処理装置に関する。
【背景技術】
【０００２】
メモリの縮退とは、メインメモリ（以下、単に「メモリ」という。）の一部において故障が検出された場合（メモリエラーが発生した場合）に、当該一部を使用対象から除去することをいう。メモリの縮退によって、故障位置に対して繰り返しアクセスすることが回避され、コンピュータの稼働状態の安定性が確保される。【０００３】
従来、カーネル空間においてメモリエラーが発生した場合、メモリの縮退は、例えば、ＣＰＵとは別のプロセッサで稼動する監視機構であるファームウェア（以下、「システムファームウェア」という。）が、システム（ＯＳ（Operating System）及びＯＳ上で動作するソフトウェア群）の起動時に行われる。【０００４】
図１は、カーネル空間においてメモリエラーが発生した場合の処理概要の一例を説明するための図である。【０００５】
図１において、（１）は、カーネル空間においてメモリエラーが発生した状態を示す。この場合、システムファームウェアは、メモリ故障情報を記憶する。メモリ故障情報は、メモリ領域が所定の単位で分割された分割単位ごとにビットが割り当てられたビットマップ情報である。すなわち、メモリ故障情報は、分割単位ごとに使用可否を示すフラグが記録されたビットマップ情報である。【０００６】
メモリエラーによってＯＳがパニックしてシステムの再起動が開始されると、（２）に示される状態に移行する。（２）において、システムファームウェアは、メモリ故障情報に基づいて、メモリエラーが発生した分割単位を縮退させる。【０００７】
続いて、ＯＳが起動されると、縮退された分割単位は使用されずにＯＳは稼動する。その結果、故障位置への再度のアクセスによるパニックの発生が回避される。【０００８】
一方、ユーザ空間においてエラーが発生した場合は、ＯＳがメモリの縮退を行うことができる。【０００９】
図２は、ユーザ空間においてメモリエラーが発生した場合の処理概要の一例を説明するための図である。【００１０】
図２において、（１）は、ユーザ空間においてメモリエラーが発生した状態を示す。この場合、ＯＳは、メモリ故障情報を記憶する。【００１１】
続いて、ＯＳは、（２）に示されるように、メモリ故障情報に基づいて、メモリエラーが発生した分割単位を縮退させる。この際、システムの再起動は不要である。【００１２】
他方において、仮想化技術によって、一つのコンピュータ上に、複数の仮想マシンを起動させることができる。このような仮想化環境において、システムファームウェアは、各仮想マシンの起動又は再起動に関与しない。したがって、メモリの縮退に関して上記の機構を採用した場合、図３に示されるような問題が有る。【００１３】
図３は、仮想化環境におけるメモリエラーの発生時の問題点を説明するための図である。図３では、ｎ個の仮想マシン（ＶＭ）が稼動している例が示されている。【００１４】
（１）は、ＶＭ＃２上のカーネル空間においてメモリエラーが発生した状態を示す。この場合、図１において説明したように、システムファームウェアによって、メモリ故障情報が記憶される。【００１５】
（２）は、メモリエラーによってＶＭ＃２のＯＳがパニックしている状態を示す。但し、ＶＭ＃２以外のＶＭは、動作を継続することができる。【００１６】
（３）は、パニックに応じて、ＶＭ＃２のＯＳが、再起動を開始した状態を示す。この際、システムファームウェアは、ＶＭ＃２の再起動に関与しない。ＶＭの起動は、ハイパーバイザによって行われるからである。したがって、システムファームウェアが記憶するメモリ故障情報に基づいて、メモリの縮退を行うことはできない。その結果、ＶＭ＃２上のＯＳは、再度パニックし、（２）の状態と（３）の状態とを繰り返すことになる。【００１７】
なお、図３において、メモリ故障情報に基づいてメモリの縮退が行われるのは、システム（すなわち、全ての仮想マシン及びハイパーバイザ）が再起動される際である。【００１８】
そこで、例えば、特許文献１では、仮想化環境におけるメモリの縮退方法が開示されている。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００９−２４５２１６号公報
【特許文献２】特開２００９−２３０５９６号公報
【特許文献３】特開２００９−５９１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、特許文献１に記載された技術のように、仮想マシンにメモリを割り当てる単位でメモリの縮退が行われると、メモリの縮退の単位（サイズ）は、仮想マシンへのメモリの割り当ての単位に依存してしまう。メモリの縮退の単位とは、メモリの故障によって縮退されるメモリ領域のサイズをいう。【００２１】
図４は、メモリの縮退の単位が仮想マシンへのメモリの割り当ての単位に依存する状態を示す図である。【００２２】
（１）は、ＶＭ＃２上のカーネル空間においてメモリエラーが発生した状態を示す。【００２３】
（２）は、ハイパーバイザによってメモリの縮退が行われている状態を示す。メモリの縮退の単位は、仮想マシンへのメモリの割り当て単位であるため、図４の例では、ＶＭ＃２に割り当てられた領域が縮退されてしまう。【００２４】
したがって、仮想マシンに割り当てるメモリの単位が大きい場合、メモリの縮退の単位が大きくなり、正常なメモリを無駄にしてしまうことになる。【００２５】
このような事態を避けるために、仮想マシンに割り当てるメモリの単位を小さくすると、メモリの搭載量が大きくなればなるほど、上記における分割単位が増加し、ハイパーバイザが管理するメモリ故障情報が肥大化してしまうことになる。【００２６】
また、仮想マシンに割り当てるメモリの単位を可変長にすると、ハイパーバイザの制御内容が複雑になるという問題が有る。【００２７】
上記の通り、従来の技術では、大規模な仮想化環境に対応するのは困難である。【００２８】
そこで、一側面では、メモリ故障によるＯＳのパニックの繰り返しの防止を仮想化環境の大規模化に対応可能な仕組みで実現することのできるメモリ縮退方法及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【００２９】
一つの案では、複数の仮想マシンが動作する情報処理装置が実行するメモリ縮退方法であって、第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する処理を実行する。
【発明の効果】
【００３０】
一態様によれば、メモリ故障によるＯＳのパニックの繰り返しの防止を仮想化環境の大規模化に対応可能な仕組みで実現することができる。
【図面の簡単な説明】
【００３１】
【図１】カーネル空間においてメモリエラーが発生した場合の処理概要の一例を説明するための図である。
【図２】ユーザ空間においてメモリエラーが発生した場合の処理概要の一例を説明するための図である。
【図３】仮想化環境におけるメモリエラーの発生時の問題点を説明するための図である。
【図４】メモリの縮退の単位が仮想マシンへのメモリの割り当ての単位に依存する状態を示す図である。
【図５】本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図６】本発明の実施の形態の情報処理装置の機能構成例を示す図である。
【図７】本実施の形態の仮想化環境のメモリマッピングの一例を説明するための図である。
【図８】情報処理装置が実行する処理の概要の一例を説明するための図である。
【図９】情報処理装置が実行する処理手順の一例を説明するためのシーケンス図である。
【図１０】情報処理装置が実行する処理手順の説明を補足するための図である。
【図１１】メモリ管理テーブルの構成例を示す図である。
【図１２】メモリ領域の獲得要求に応じて実行される処理手順の一例を説明するためのフローチャートである。
【図１３】メモリマッピングの変更処理の第一の例を説明するための図である。
【図１４】メモリマッピングの変更処理の第一の例を説明するための図である。
【図１５】メモリマッピングの変更処理の第一の例を説明するための図である。
【図１６】メモリマッピングの変更処理の第二の例を説明するための図である。
【図１７】メモリマッピングの変更処理の第二の例を説明するための図である。
【図１８】メモリマッピングの変更処理の第二の例を説明するための図である。
【発明を実施するための形態】
【００３２】
以下、図面に基づいて本発明の実施の形態を説明する。図５は、本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。図５において、情報処理装置１０は、ＣＰＵ１０４ａ、１０４ｂ、及び１０４ｃ等の複数のＣＰＵ１０４を有する。後述されるように、各ＣＰＵ１０４は、各仮想マシンに割り当てられる。なお、情報処理装置１０は、必ずしも複数のＣＰＵ１０４を備えていなくてもよい。例えば、一つのマルチコアプロセッサによって、複数のＣＰＵ１０４が代替されてもよい。この場合、各プロセッサコアが、各仮想マシンに割り当てられればよい。
【００３３】
情報処理装置１０は、更に、ドライブ装置１００、補助記憶装置１０２、主記憶装置１０３、及びインタフェース装置１０５等を有する。ＣＰＵ１０４とこれらのハードウェアとは、バスＢによって接続されている。
【００３４】
情報処理装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３５】
主記憶装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。なお、主記憶装置１０３は、以下において「メモリ」とも呼ばれる。ＣＰＵ１０４は、主記憶装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００３６】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００３７】
図６は、本発明の実施の形態の情報処理装置の機能構成例を示す図である。図６において、情報処理装置１０は、ハイパーバイザ１１、及びＶＭ１２ａ〜１２ｃの複数の仮想マシン（Virtual Machine）を有する。ハイパーバイザ１１及びＶＭ１２は、情報処理装置１０にインストールされたプログラム（仮想化プログラム）がＣＰＵ１０４に実行させる処理によって実現される。
【００３８】
ハイパーバイザ１１は、情報処理装置１０を仮想化し、複数のＯＳ１３（オペレーティングシステム：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の並列実行を可能とする。ハイパーバイザ１１は、ソフトウェアによって実現される仮想的なコンピュータ（ＶＭ１２）を作り出し、ＶＭ１２上でＯＳ１３を動作させる。なお、ハイパーバイザ１１は、仮想マシンモニタ（ＶＭＭ（Virtual Machine Monitor））とも呼ばれる。
【００３９】
図６に示されるように、各ＶＭ１２には、ＣＰＵ１０４及びＯＳディスク１２０が割り当てられている。また、各ＶＭ１２上では、ＯＳ１３が動作する。
【００４０】
ＯＳディスク１２０は、それぞれ、補助記憶装置１０２における一部の記憶領域である。各ＶＭ１２には、補助記憶装置１０２において相互に重複しない記憶領域が、ＯＳディスク１２０ａ、１２０ｂ、又は１２０ｃとして割り当てられる。但し、補助記憶装置１０２が複数存在し、ＯＳディスク１２０と補助記憶装置１０２とが一対一に対応付けられてもよい。
【００４１】
各ＶＭ１２に割り当てられたＣＰＵ１０４は、ＶＡ／ＲＡ変換テーブル１４１、ＲＡ／ＰＡ変換テーブル１４２、及びエラー通知部１４３等を含む。各ＶＭ１２は、当該ＶＭ１２に割り当てられたＣＰＵ１０４のみを使用可能であり、他のＶＭ１２に割り当てられたＣＰＵ１０４は使用することはできない。一方、ハイパーバイザ１１は、全てのＣＰＵ１０４を使用することができる。
【００４２】
ＶＡ／ＲＡ変換テーブル１４１は、仮想アドレス（Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ：以下、「ＶＡ」という。）から仮想物理アドレス（Ｒｅａｌ  Ａｄｄｒｅｓｓ：以下「ＲＡ」という。）に変換するための情報（変換情報）を記憶する。例えば、ＶＡ／ＲＡ変換テーブル１４１は、ＶＡとＲＡとの対応情報を変換情報として記憶する。各ＣＰＵ１０４は、ＶＡ／ＲＡ変換テーブル１４１に記憶されていないＶＡへのアクセスは出来ない。また、ＶＡ／ＲＡ変換テーブル１４１は、ＯＳ１３からアクセス可能である。なお、ＲＡは、ＯＳ１３にとっての（又はＯＳ１３から見た場合の）物理アドレスに相当するアドレスである。但し、実際の物理アドレスではなく、ハイパーバイザ１１によって仮想的に作り出されている物理アドレスである。
【００４３】
ＲＡ／ＰＡ変換テーブル１４２は、ＲＡから物理アドレス（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ：以下「ＰＡ」という。）に変換するための情報（変換情報）を記憶する。例えば、ＲＡ／ＰＡ変換テーブル１４２は、ＲＡとＰＡとの対応情報を変換情報として記憶する。各ＣＰＵ１０４は、ＲＡ／ＰＡ変換テーブル１４２に記憶されていないＲＡへのアクセスは出来ない。ハイパーバイザ１１は、各ＣＰＵ１０４のＲＡ／ＰＡ変換テーブル１４２にアクセス可能であるが、各ＯＳ１３は、ＲＡ／ＰＡ変換テーブル１４２にアクセスすることは出来ない。
【００４４】
なお、ＶＡ／ＲＡ変換テーブル１４１及びＲＡ／ＰＡ変換テーブル１４２は、例えば、ＣＰＵ１０４内のレジスタを用いて実現可能である。
【００４５】
エラー通知部１４３は、ＣＰＵ１０４によるメモリアクセスに応じてメモリの故障が検出された場合、アクセスされたアドレス（ＲＡ）を、ＯＳ１３及びＶＭ起動制御部１１４に通知する。
【００４６】
各ＶＭ１２のＯＳディスク１２０は、メモリの縮退が行われた場合に、メモリ縮退情報の記憶手段として利用される。メモリ縮退情報とは、メモリの故障位置を示す情報である。本実施の形態において、主記憶装置１０３を構成するメモリモジュールは、ＤＩＭＭ（Dual Inline Memory Module）であるとする。故障位置を有するＤＩＭＭの識別情報（ＤＩＭＭ番号）と、当該ＤＩＭＭにおいて、故障位置に対応するアドレスのオフセット値（ＤＩＭＭアドレス）とが、メモリ縮退情報として記憶される。なお、各ＯＳ１３は、当該ＯＳ１３が動作する仮想マシンに割り当てられたＯＳディスク１２０にのみアクセス可能であり、他の仮想マシンに割り当てられたＯＳディスク１２０にはアクセスすることは出来ない。
【００４７】
各ＯＳ１３は、メモリ管理テーブル１３１、メモリ縮退制御部１３２、及びメモリアクセス制御部１３３等を有する。
【００４８】
メモリ管理テーブル１３１は、ページ単位で、使用状況を示す情報を記憶する。ページとは、仮想記憶のページング方式におけるメモリの分割単位である。すなわち、メモリ管理テーブル１３１は、ＯＳ１３において縮退制御可能なメモリの最小単位ごとに、使用状況を記憶する。なお、メモリ管理テーブル１３１は、主記憶装置１０３が実現するメモリ領域のうち、当該ＶＭ１２に割り当てられたメモリ領域を用いて実現可能である。
【００４９】
メモリ縮退制御部１３２は、メモリ縮退情報（ＤＩＭＭ番号及びＤＩＭＭアドレス）をＯＳディスク１２０に記憶する。メモリ縮退制御部１３２は、また、ＯＳディスク１２０内のメモリ縮退情報を参照して、メモリ管理テーブル１３１に使用不可能となったＲＡを記録する。
【００５０】
メモリアクセス制御部１３３は、新たに仮想メモリ領域を獲得する際に、獲得した仮想メモリ領域のＶＡと、当該ＶＡに対して割り当てる仮想物理メモリ領域のＲＡとの対応情報をＶＡ／ＲＡ変換テーブル１４１に記録する。ＶＡに対して割り当てる仮想物理メモリ領域の決定の際には、メモリ管理テーブル１３１が参照され、使用可能な仮想物理メモリ領域が割り当ての対象とされる。したがって、使用不可能な仮想物理メモリ領域のＲＡがＶＡ／ＲＡ変換テーブル１４１に記録されることはない。一般的に、ＣＰＵ１０４上のＶＡ／ＲＡ変換テーブル１４１のサイズにはハードウェア的に限界があるため、ＶＡ／ＲＡ変換テーブル１４１は、ＯＳ１３によっても別途管理されることが多い。その場合、ＣＰＵ１０４上のＶＡ／ＲＡ変換テーブル１４１はＯＳ１３によって管理されるＶＡ／ＲＡ変換テーブル１４１の一部となる。ＣＰＵ１０４は、必要となるマッピング情報をＯＳ１３のＶＡ／ＲＡ変換テーブル１４１から自動的に読み込む。
【００５１】
ハイパーバイザ１１は、構成情報記憶部１１１、メモリマップ制御部１１２、メモリ情報変換部１１３、及びＶＭ起動制御部１１４等を含む。
【００５２】
なお、本実施の形態において、各ＶＭ１２の構成要素の参照番号の末尾には、当該ＶＭ１２の参照番号の末尾のアルファベット（ａ〜ｃ）が付与される。例えば、ＶＭ１２ｂの構成要素の参照番号の末尾には、「ｂ」が付与される。
【００５３】
構成情報記憶部１１１は、ＲＡとＰＡとの対応情報であるメモリ割当情報と、ＰＡとＤＩＭＭ番号及びＤＩＭＭアドレスとのの対応情報であるメモリ実装情報とを記憶する。メモリ割当情報は、ＶＭ１２ごとに記憶される。構成情報記憶部１１１は、例えば、主記憶装置１０３を用いて実現可能である。
【００５４】
メモリマップ制御部１１２は、メモリ割当情報を参照して、ＶＭ１２が使用するＲＡと、ＶＭ１２に割り当てるＰＡとの変換情報を、各ＶＭ１２に割り当てられるそれぞれのＣＰＵ１０４のＲＡ／ＰＡ変換テーブル１４２に登録する。
【００５５】
メモリ情報変換部１１３は、メモリ実装情報とＲＡ／ＰＡ変換テーブル１４２とを参照して、ＲＡとＤＩＭＭ番号及びＤＩＭＭアドレスとについて、双方向の変換を行う。
【００５６】
ＶＭ起動制御部１１４は、ＶＭ１２の起動制御を行う。ＶＭ起動制御部１１４は、また、エラー通知部１４３からメモリエラーの通知があった場合は、ＶＭ１２を起動する前に、ＲＡ／ＰＡ変換テーブル１４２の変更をメモリマップ制御部１１２に指示する。ＲＡ／ＰＡ変換テーブル１４２の変更とは、ＲＡとＰＡとの対応関係の変更をいう。
【００５７】
続いて、本実施の形態の情報処理装置１０における仮想化環境のメモリマッピングについて説明する。すなわち、ＶＡ、ＲＡ、ＰＡ、並びにＤＩＭＭ番号及びＤＩＭＭアドレスの関係について説明する。図７は、本実施の形態の仮想化環境のメモリマッピングの一例を説明するための図である。
【００５８】
ＶＡとＲＡとのマッピング（対応付け）については、ＶＭ１２ごとにＶＡ／ＲＡ変換テーブル１４１によって管理される。各ＶＭ１２上のＯＳ１３が、メモリ管理テーブル１３１に基づいてＶＡからＲＡへの変換情報を生成し、当該変換情報をＣＰＵ１０４のＶＡ／ＲＡ変換テーブル１４１に記録する。ＶＡからＲＡへの変換情報がＶＡ／ＲＡ変換テーブル１４１に記録されると、ＣＰＵ１０４は、与えられたＶＡからＲＡを求めることができるようになる。
【００５９】
ＲＡとＰＡとのマッピングについては、ＶＭ１２ごとにＲＡ／ＰＡ変換テーブル１４２によって管理される。ハイパーバイザ１１のメモリマップ制御部１１２が、メモリ割当情報に基づいてＲＡからＰＡへの変換情報を生成し、当該変換情報をＣＰＵ１０４のＲＡ／ＰＡ変換テーブル１４２に記録する。ＲＡからＰＡへの変換情報がＲＡ／ＰＡ変換テーブル１４２に記録されると、ＣＰＵ１０４は、ＶＡ／ＲＡ変換テーブル１４１に基づいて求められたＲＡに関して、ＰＡを求めることができるようになる。ＣＰＵ１０４は、求められたＰＡを使用してメモリへのアクセスを行う。なお、ハイパーバイザ１１もＰＡを使用してメモリにアクセスすることができる。ハイパーバイザ１１の場合、ＣＰＵ１０４内の各変換テーブルによる制限はなく、全てのアドレス（ＰＡ）にアクセス可能である。すなわち、ハイパーバイザ１１は、いずれのＶＭ１２に割り当てられたアドレスにもアクセス可能である。
【００６０】
ＰＡとＤＩＭＭ番号及びＤＩＭＭアドレスとのマッピングは、通常、ハードウェア仕様によって決定される一意な関係にある。例えば、非図示のメモリコントローラに、当該マッピングがロジックとして組み込まれている。当該ロジックは、メモリ実装情報として、構成情報記憶部１１１にも記憶される。なお、本実施の形態では、ＰＡとＤＩＭＭ番号及びＤＩＭＭアドレスとの対応が可変である場合についても考慮している。したがって、ＰＡとＤＩＭＭ番号及びＤＩＭＭアドレスとのマッピングについても言及されている。
【００６１】
以上の三つのマッピングにより、ＣＰＵ１０４は与えられたＶＡからＰＡにアクセスすることができる。ＰＡに対応するメモリモジュールへのアクセスは、非図時のメモリコントローラによって行われる。
【００６２】
以下、情報処理装置１０が実行する処理手順について説明する。図８は、情報処理装置が実行する処理の概要の一例を説明するための図である。
【００６３】
例えば、ＶＭ１２ｂにおいて、メモリの故障が検知されると（Ｓ１０１）、ＶＭ１２ｂ上で動作するＯＳ１３ｂは、故障したメモリアドレス（ＲＡ）の通知をＣＰＵ１０４ｂより受ける（Ｓ１０２）。続いて、ＯＳ１３ｂは、通知されたＲＡに対応するＤＩＭＭ番号及びＤＩＭＭアドレスを取得する（Ｓ１０３）。
【００６４】
続いて、ＯＳ１３ｂは、当該ＤＩＭＭ番号及びＤＩＭＭアドレスを、メモリ縮退情報としてＯＳディスク１２０ｂに記憶する（Ｓ１０４）。続いて、ＯＳ１３ｂは、パニックし、ＶＭ１２ｂの再起動をハイパーバイザ１１に要求する（Ｓ１０５）。
【００６５】
ハイパーバイザ１１は、再起動要求に応じ、ＯＳ１３ｂがメモリの故障が原因でパニックしたことを認識する（Ｓ１１１）。続いて、ハイパーバイザ１１は、再起動対象のＶＭ１２ｂに関するメモリの割り当て（ＰＡとＲＡとのマッピング）を変更する（Ｓ１１２）。すなわち、ＶＭ１２ｂに関して、メモリ割当情報とＲＡ／ＰＡ変換テーブル１４２ｂとが変更される。この際、ＯＳ１３ｂのカーネル空間が割り当てられるＲＡには、メモリの故障位置に係るＰＡが対応付けられないように、メモリ割当情報及びＲＡ／ＰＡ変換テーブル１４２ｂが変更される。続いて、ハイパーバイザ１１は、ＶＭ１２ｂを再起動させる（Ｓ１１３）。
【００６６】
続いて、ＶＭ１２ｂの再起動に伴って、ＯＳ１３ｂが再起動する（Ｓ１２１）。この際、ＯＳ１３ｂのカーネル空間に割り当てられたＰＡは、故障位置を含まない可能性が高いため、ＯＳ１３ｂは、正常に再起動される可能性が高い。
【００６７】
続いて、再起動されたＯＳ１３ｂは、ＯＳディスク１２０ｂからメモリ縮退情報を読み込む（Ｓ１２２）。続いて、ＯＳ１３ｂは、当該メモリ縮退情報が示すＤＩＭＭ番号及びＤＩＭＭアドレスに対応するＲＡを取得する（Ｓ１２３）。続いて、ＯＳ１３ｂは、当該ＲＡを、使用可能なメモリ領域から除去する（Ｓ１２４）。その結果、以降の処理において、同じ故障位置に基づくメモリエラーの発生は抑止される。
【００６８】
続いて、情報処理装置１０が実行する処理手順を更に詳しく説明する。図９は、情報処理装置が実行する処理手順の一例を説明するためのシーケンス図である。また、図１０は、情報処理装置が実行する処理手順の説明を補足するための図である。
【００６９】
例えば、ＣＰＵ１０４ｂが、ＯＳ１３ｂの命令コードに指定されたＶＡに対応するＰＡにアクセスした結果、メモリ故障を検出すると、エラー通知部１４３ｂは、メモリエラーの発生を、ＯＳ１３ｂのメモリアクセス制御部１３３ｂと、ハイパーバイザ１１のＶＭ起動制御部１１４とに通知する（Ｓ２０１、Ｓ２０２）。当該通知には、アクセス対象とされたＶＡに対応するＲＡが指定される。当該ＲＡは、ＶＡ／ＲＡ変換テーブル１４１に基づいて求められる。
【００７０】
続いて、メモリアクセス制御部１３３ｂは、通知されたＲＡをメモリ縮退制御部１３２ｂに通知する（Ｓ２０３）。メモリ縮退制御部１３２ｂは、通知されたＲＡに関して、ＤＩＭＭ番号及びＤＩＭＭアドレスへの変換を、ハイパーバイザ１１のメモリ情報変換部１１３に要求する（Ｓ２０４）。メモリ情報変換部１１３は、当該ＲＡをＤＩＭＭ番号及びＤＩＭＭアドレスに変換し、変換結果をメモリ縮退制御部１３２ｂに応答する（Ｓ２０５）。なお、ＲＡからＤＩＭＭ番号及びＤＩＭＭアドレスへの変換は、構成情報記憶部１１１が記憶する、メモリ割当情報及びメモリ実装情報を用いて行われる。すなわち、ＲＡとＰＡとの対応情報であるメモリ割当情報を用いて、ＲＡからＰＡへの変換が行われる。続いて、ＰＡとＤＩＭＭ番号及びＤＩＭＭアドレスとの対応情報であるメモリ実装情報を用いて、ＰＡからＤＩＭＭ番号及びＤＩＭＭアドレスへの変換が行われる。
【００７１】
続いて、メモリ縮退制御部１３２ｂは、ＤＩＭＭ番号及びＤＩＭＭアドレスを、メモリ縮退情報としてＯＳディスク１２０ｂに記憶する（Ｓ２０６）。
【００７２】
以上までの状態が、図１０の（１）に示されている。図１０の（１）では、ＶＭ１２ｂ上で動作するＯＳ１３ｂのカーネル空間においてメモリ故障が検出され、当該故障位置に対応するＤＩＭＭ番号及びＤＩＭＭアドレスが、ＯＳディスク１２０ｂに記憶される様子が示されている。
【００７３】
続いて、ＯＳ１３ｂがパニックする。パニック処理において、ＯＳ１３ｂのメモリ縮退制御部１３２ｂは、ハイパーバイザ１１のＶＭ起動制御部１１４に対して、ＶＭ１２ｂの再起動を要求する（Ｓ２０７）。ＶＭ起動制御部１１４は、ステップＳ２０４におけるエラー通知部１４３ｂからのメモリエラーの発生通知の後の再起動要求であることに基づいて、ＯＳ１３ｂがメモリ故障が原因でパニックしたことを認識する。そこで、ＶＭ起動制御部１１４は、ＲＡ／ＰＡ変換テーブル１４２ｂの変更をメモリマップ制御部１１２に要求する（Ｓ２０８）。
【００７４】
メモリマップ制御部１１２は、要求に応じ、ＶＭ１２ｂに関して、ＲＡとＰＡとの対応関係（メモリマッピング）の変更処理を実行する（Ｓ２０９）。その結果、メモリ割当情報及びＲＡ／ＰＡ変換テーブル１４２ｂの内容が書き換えられ、ＯＳ１３ｂのカーネル空間に割り当てられるＲＡには、メモリの故障位置に係るＰＡが対応付けられないように、メモリ割当情報及びＲＡ／ＰＡ変換テーブル１４２ｂが変更される。
【００７５】
ステップＳ２０９における状態が、図１０の（２）に示されている。図１０の（２）では、ＯＳ１３ｂのカーネル空間に割り当てられていた物理メモリ領域と、ユーザ空間に割り当てられていた物理メモリ領域とが入れ替えられている様子が示されている。その結果、故障位置に対応するＲＡは、移動する。
【００７６】
なお、ＶＭ１２ｂ以外のＶＭ１２ａ及びＶＭ１２ｃに関しては、正常に動作が継続している。
【００７７】
続いて、ＶＭ起動制御部１１４は、ＶＭ１２ｂの再起動に伴い、ＣＰＵ１０４ｂのＶＡ／ＲＡ変換テーブル１４１ｂをクリアする（Ｓ２１０）。続いて、ＶＭ起動制御部１１４は、ＶＭ１２ｂを再起動させる（Ｓ２１１）。ＶＭ１２ｂの再起動に伴って、ＯＳ１３ｂも再起動する（Ｓ２１２）。この際、ＯＳ１３ｂのカーネル空間に割り当てられるＲＡに対応するＰＡは、故障位置を含まないため、ＯＳ１３ｂは、正常に再起動する。
【００７８】
ＯＳ１３ｂが再起動すると、メモリ縮退制御部１３２ｂは、ＯＳディスク１２０ｂにメモリ縮退情報として記憶されているＤＩＭＭ番号及びＤＩＭＭアドレスを読み込む（Ｓ２１３）。続いて、メモリ縮退制御部１３２ｂは、当該ＤＩＭＭ番号及びＤＩＭＭアドレスについて、ＲＡへの変換をメモリ情報変換部１１３に要求する（Ｓ２１４）。メモリ情報変換部１１３は、メモリ実装情報及びメモリ割当情報に基づいて、当該ＤＩＭＭ番号及びＤＩＭＭアドレスをＲＡに変換する（Ｓ２１５）。具体的には、メモリ実装情報に基づいて、当該ＤＩＭＭ番号及びＤＩＭＭアドレスがＰＡに変換される。当該ＰＡは、メモリ割当情報に基づいてＲＡに変換される。
【００７９】
続いて、メモリ情報変換部１１３は、変換結果としてのＲＡを、メモリ縮退制御部１３２ｂに応答する（Ｓ２１６）。続いて、メモリ縮退制御部１３２は、メモリ管理テーブル１３１ｂを更新し、当該ＲＡを含むメモリ領域を使用対象から除去する（Ｓ２１７）。
【００８０】
図１１は、メモリ管理テーブルの構成例を示す図である。図１１において、メモリ管理テーブル１３１ｂは、ページ番号ごとに、使用状況を示す値を記憶する。
【００８１】
ページ番号とＲＡの関係は一意である。例えば、ＯＳ１３ｂで縮退制御可能な最小メモリサイズが８Ｋバイトの場合、ＲＡを右に１３ビットシフトした値がページ番号となる。ＲＡを右に１３ビットシフトした値とは、ＲＡを８Ｋバイト単位で丸めた値である。したがって、ページ番号は、８Ｋバイト単位のＲＡの領域を示す。
【００８２】
使用状況には、０、１、又２が記録される。０は、未使用であることを示す。１は、使用中であることを示す。２は、使用不可能であることを示す。
【００８３】
したがって、ステップＳ２１７において、メモリ縮退制御部１３２は、使用対象から除去すべきＲＡを右に１３ビットシフトした値と一致するページ番号に対して、「２」を記録する。
【００８４】
例えば、図１１では、ページ番号１０００に対して「２」が記録されている。したがって、ＲＡ＝８１９２０００ｂｙｔｅｓ〜８２００１９１ｂｙｔｅｓの範囲の一部又は全部においてメモリが故障した状態が示されている。
【００８５】
このように、ＯＳ１３によって縮退が行われる場合、縮退の単位を、例えばページ単位に限定することができる。図１１の例では、縮退の単位を８Ｋバイトとすることができる。その結果、正常であるにも拘わらず使用対象とされないメモリ領域を小さくすることができる。
【００８６】
なお、ステップＳ２１３〜Ｓ２１７に対応するのが、図１０の（３）である。図１０の（３）では、メモリ縮退情報としてもＤＩＭＭ番号及びＤＩＭＭアドレスが読み込まれ、ハイパーバイザ１１によって当該ＤＩＭＭ番号及びＤＩＭＭアドレスがＲＡに変換される様子が示されている。更に、当該ＲＡを含むページＰ１が、縮退されている様子が示されている。
【００８７】
続いて、メモリ領域の獲得要求が発生した場合に情報処理装置１０が実行する処理について説明する。メモリ領域の獲得要求は、ＯＳ１３ｂ内において発生してもよいし、ＯＳ１３ｂ上で動作するプログラム（例えば、アプリケーションプログラム）において発生してもよい。
【００８８】
図１２は、メモリ領域の獲得要求に応じて実行される処理手順の一例を説明するためのフローチャートである。
【００８９】
メモリ領域の獲得要求が発生すると（Ｓ２２１）、メモリアクセス制御部１３３ｂは、獲得要求に指定されたサイズ分の仮想メモリ領域を確保する（Ｓ２２２）。続いて、メモリアクセス制御部１３３ｂは、メモリ管理テーブル１３１ｂを参照して、使用可能なページ番号を検索する（Ｓ２２３）。すなわち、メモリ管理テーブル１３１ｂにおいて、使用状況の値が「０」であるページ番号が検索される。
【００９０】
続いて、メモリアクセス制御部１３３ｂは、検索されたページ番号のうち、獲得要求に応じたサイズ分のページに対応するページ番号の使用状況に対して「１」を記録する（Ｓ２２４）。続いて、メモリアクセス制御部１３３ｂは、ステップＳ２２２において確保された仮想メモリ領域のＶＡと、ステップＳ２２４において使用中とされたページ番号に係るＲＡとの対応情報を、ＣＰＵ１０４ｂのＶＡ／ＲＡ変換テーブル１４１ｂに登録する（Ｓ２２５）。
【００９１】
このように、使用状況が「２」であるＲＡは、ＶＡ／ＲＡ変換テーブル１４１ｂに登録されない。また、ＯＳ１３ｂはＶＡ以外を用いてメモリアクセスをすることはない。換言すれば、ＯＳ１３ｂは、ＲＡを用いてメモリアクセスをすることはない。その結果、使用状況の値が「２」とされたメモリ領域、すなわち、故障位置を含むメモリ領域は、縮退される。
【００９２】
続いて、図９のステップＳ２０９の詳細について説明する。図１３、図１４、及び図１５は、メモリマッピングの変更処理の第一の例を説明するための図である。なお、ここでは、カーネル空間が、高いアドレスから配置されるアーキテクチャを前提とする。カーネル空間が低いアドレスから配置されるアーキテクチャの場合は、以下において説明するマッピング変更処理のアドレスの高低を逆にすればよい。
【００９３】
図１３に示されるように、第一の例におけるＲＡ／ＰＡ変換テーブル１４２ｂの各エントリは、ＲＡ、サイズ、及びＰＡオフセット等の項目を有する。各エントリのＲＡに対応するＰＡは、「ＲＡ＋ＰＡオフセット」により求まる。すなわち、ＲＡから始まる「サイズ」分の仮想物理メモリ領域は、ＲＡ＋ＰＡオフセットから始まる「サイズ」分の物理メモリ領域にマッピングされていることを示す。以下、仮想物理メモリ領域を「ＲＡ領域」といい、物理メモリ領域を「ＰＡ領域」という。
【００９４】
図１３の状態では、ＲＡ＝ＰＡのマッピングが、Ａ（０〜２５６Ｍバイト）＝ａ（１〜１．２５Ｇバイト）、Ｂ（２５６〜５１２Ｍバイト）＝ｂ（１．２５〜１．５Ｇバイト）、Ｃ（５１２〜１０２４Ｍバイト）＝ｃ（１．５〜２Ｇバイト）、Ｄ（１０２４〜１２８０Ｍバイト）＝ｄ（２．５〜２．７５Ｇバイト）となっている。また、Ａ、Ｂ、Ｃ、Ｄの順で、低いＲＡから高いＲＡに並んでいる。この状態において、ＰＡ領域ｄ内でメモリ故障が検出され、ＯＳ１３ｂの起動に失敗したとする。なお、ＲＡ領域Ｄは、カーネル空間に割り当てられるＲＡ領域であるとする。
【００９５】
（１）まず、メモリマップ制御部１１２は、ＲＡ／ＰＡ変換テーブル１４２ｂにおいて、ＲＡが最も高いアドレスのエントリを探し出す。ここでは、Ｄのエントリが見つかる。
【００９６】
（２）続いて、メモリマップ制御部１１２は、Ｄのエントリとサイズの値が同じであるエントリをＲＡ／ＰＡ変換テーブル１４２ｂより抽出する。すなわち、サイズの値が２５６Ｍバイトであるエントリが抽出される。ここではＡのエントリ及びＢのエントリが抽出される。
【００９７】
（３）続いて、メモリマップ制御部１１２は、（１）おいて見つけたＤのエントリのＰＡが、（２）で抽出したエントリの中で、最も低いＲＡにマッピングされるように、エントリＡ、Ｂ、及びＤのＰＡオフセットを順次変更する。Ａ及びＢのエントリの中で、ＲＡの値が低いのはＡのエントリである。したがって、Ａ＝ａ、Ｂ＝ｂ、Ｄ＝ｄであったマッピングが、Ａ＝ｄ、Ｂ＝ａ、Ｄ＝ｂへと変更される。すなわち、マッピングがローテーションする。なお、Ｃのエントリは、Ｄのエントリとサイズが異なるため、マッピングの変更の対象とはされない。
【００９８】
このようなマッピングのローテーションが行われた後の状態を示すのが、図１４である。図１４において、カーネル空間に割り当てられるＲＡ領域Ｄに対応するＰＡ領域ｂは、メモリ故障の発生箇所ではない。したがって、ＯＳ１３ｂは、正常に起動できる可能性が高い。
【００９９】
仮に、ＯＳ１３ｂの起動中に、ＰＡ領域ｂにおいても故障が検出された場合、ＯＳ１３ｂは、再度パニックし、もう一度再起動を実行することになる。この場合、上記（１）、（２）、及び（３）の処理が再度繰り返される。具体的には、Ａ＝ｄ、Ｂ＝ａ、Ｄ＝ｂであったマッピングが、Ａ＝ｂ、Ｂ＝ｄ、Ｄ＝ａへとローテーションされる。
【０１００】
このようなマッピングのローテーションが行われた後の状態を示すのが、図１５である。図１５において、カーネル空間に割り当てられるＲＡ領域Ｄに対応するＰＡ領域ａは、メモリ故障の発生箇所ではない。したがって、ＯＳ１３ｂは、正常に起動できる可能性が高い。ＯＳ１３ｂの起動に成功すると、メモリ縮退制御部１３２ｂによって、メモリの故障部分が縮退される。この際、ＲＡ／ＰＡ変換テーブル１４２のエントリの単位で縮退が行われるのではなく、ＯＳ１３ｂにおいて縮退制御可能なメモリの最小単位の領域が縮退される。
【０１０１】
仮に、図１５の状態で、ＰＡ領域ａにメモリの故障が検出された場合は、更に、同様の処理が繰り返される。図１３〜図１５では、同一サイズのＲＡ領域は、Ａ、Ｂ、及びＤの三つしかないため、無限ループする可能性が危惧される。しかし、実際的には、ＲＡ／ＰＡ変換テーブル１４２ｂのエントリ数は十分に多く、ＯＳ１３ｂの起動に必要なカーネル空間のメモリ領域は十分に小さいため、無限ループの可能性は低い。但し、無限ループを抑止するために、再起動の連続失敗回数の最大値を定義し、当該最大値に達した場合は、ＶＭ１２ｂの起動を抑止するようにしてもよい。
【０１０２】
なお、図１３〜図１５において明らかなように、メモリマップ制御部１１２ｂは、既に（メモリ故障の検出前に）ＶＭ１２ｂに割り当て済みのＰＡ領域に関して、ＲＡとのマッピングを入れ替える。換言すれば、例えば、いずれのＶＭ１２に対しても割り当てられていないＰＡ領域を新たにＶＭ１２ｂに対して割り当てるのではなく、既存のマッピングに関して変更が行われる。そうすることにより、縮退の単位が、ＲＡ／ＰＡ変換テーブル１４２のエントリの単位（ＰＡ領域ｄに関しては２５６Ｍバイト）に依存するのを回避することができる。すなわち、例えば、図１３の状態において、ＲＡ領域Ｄを、新たなＰＡ領域にマッピングしたとすると、２５６Ｍバイト分のＰＡ領域ｄは、使用されないメモリ領域となってしまう。一方、本実施の形態のように、既存のマッピングに関して変更が行われれば、ＰＡ領域ｄの使用は継続される。その結果、ＰＡ領域ｄのうち、ＯＳ１３ｂの縮退制御可能なメモリの最小単位の領域（例えば、８Ｋバイト）に、縮退する範囲を限定ことができる。
【０１０３】
メモリマッピングの変更処理は、以下のように実行されてもよい。図１６、図１７、及び図１８は、メモリマッピングの変更処理の第二例を説明するための図である。ここでも、カーネル空間が、高いアドレスから配置されるアーキテクチャを前提とする。カーネル空間が低いアドレスから配置されるアーキテクチャの場合は、以下において説明するマッピング変更処理のアドレスの高低を逆にすればよい。
【０１０４】
図１６に示されるように、第二の例におけるＲＡ／ＰＡ変換テーブル１４２ｂの各エントリは、ＰＡ、サイズ、ＲＡオフセット、及び状態等の項目を有する。各エントリのＲＡは、「ＰＡ＋ＲＡオフセット」により求まる。すなわち、ＰＡ＋ＲＡオフセットから始まる「サイズ」分のＲＡ領域は、ＰＡから始まる「サイズ」分のＰＡ領域にマッピングされていることを示す。また、状態には、ｏｋ又はｆａｉｌｅｄのいずれかが記録される。ｏｋは通常の状態を示す。ｆａｉｌｅｄは過去に故障した位置を含むことを示す。
【０１０５】
図１６の状態では、ＲＡ＝ＰＡのマッピングが、Ａ（０〜２５６Ｍバイト）＝ａ（１〜１．２５Ｇバイト）、Ｂ（２５６〜５１２Ｍバイト）＝ｂ（１．２５〜１．５Ｇバイト）、Ｃ（５１２〜１０２４Ｍバイト）＝ｃ（１．５〜２Ｇバイト）、Ｄ（１０２４〜１２８０Ｍバイト）＝ｄ（２．５〜２．７５Ｇバイト）となっている。この状態において、ＰＡ領域ｄ内でメモリ故障が検出され、ＯＳ１３ｂの起動に失敗したとする。なお、ＲＡ領域Ｄは、カーネル空間に割り当てられるＲＡ領域であるとする。
【０１０６】
（１）まず、メモリマップ制御部１１２は、エラー通知部１４３ｂから通知されたＲＡが含まれるエントリをＲＡ／ＰＡ変換テーブル１４２ｂより探し出す。ここでは、ｄのエントリが見つかるため、メモリマップ制御部１１２は、ｄのエントリの状態をｆａｉｌｅｄに変更する。
【０１０７】
（２）続いて、メモリマップ制御部１１２は、ｄのエントリとサイズの値が同じであるエントリであって、かつ、状態の値がｏｋであるエントリをＲＡ／ＰＡ変換テーブル１４２より抽出する。ここでは、ａのエントリ及びｂのエントリが抽出される。
【０１０８】
（３）続いて、メモリマップ制御部１１２は、（２）において抽出したエントリの中でＲＡが最も低いエントリを抽出する。ここでは、ａのエントリが抽出される。
【０１０９】
（４）続いて、メモリマップ制御部１１２は、ＰＡ領域ｄに対応するＲＡ領域Ｄと、ＰＡ領域ａに対応するＲＡ領域Ａとが入れ替わるように、ａ及びｄのエントリのＲＡオフセットを変更する。ここでは、Ａ＝ａ、Ｄ＝ｄが、Ａ＝ｄ、Ｄ＝ａへと変更される。このようにマッピングが変更された状態を示すのが図１７である。図１７において、カーネル空間に割り当てられるＲＡ領域Ｄに対応するＰＡ領域ａは、メモリ故障の発生箇所ではない。したがって、ＯＳ１３ｂは、正常に起動できる可能性が高い。
【０１１０】
仮に、ＯＳ１３ｂの再起動中に、ＰＡ領域ａにおいても故障が検出された場合、ＯＳ１３ｂは、再度パニックし、もう一度再起動を実行することになる。この場合、上記（１）、（２）、（３）、及び（４）の処理が再度繰り返される。今度は（２）においてａ及びｄのエントリの状態がｆａｉｌｅｄであることから、ｂのエントリのみが抽出される。（４）においてｄに対応するＲＡと、ｂに対応するＲＡとが入れ替えられる。すなわち、Ｂ＝ｂ、Ｄ＝ａであったマッピングが、Ｂ＝ａ、Ｄ＝ｂへと変更される。
【０１１１】
このようなマッピングの変更が行われた後の状態を示すのが、図１８である。図１８において、カーネル空間に割り当てられるＲＡ領域Ｄに対応するＰ領域ｂは、メモリ故障の発生箇所ではない。したがって、ＯＳ１３ｂは、正常に起動できる可能性が高い。ＯＳ１３ｂの起動に成功すると、メモリ縮退制御部１３２ｂによって、メモリの故障部分が縮退される。この際、ＲＡ／ＰＡ変換テーブル１４２のエントリの単位で縮退が行われるのではなく、ＯＳ１３ｂにおいて縮退制御可能なメモリの最小単位の領域が縮退される。
【０１１２】
このように、第二の例においても、メモリマップ制御部１１２ｂは、既にそのＶＭ１２ｂに割り当て済みのＰＡ領域に関して、ＲＡとのマッピングを入れ替える。したがって、縮退の単位が、ＲＡ／ＰＡ変換テーブル１４２のエントリの単位（ＰＡ領域ｄに関しては２５６Ｍバイト）に依存するのを回避することができる。
【０１１３】
なお、ＯＳ１３は、ＶＡ及びＲＡに関与し、ＰＡには関与しない。したがって、ＲＡとＰＡとのマッピングの変更によって、ＯＳ１３に動作に問題が発生する可能性は低い。
【０１１４】
なお、本実施の形態では、ＶＭ１２ｂにおいてメモリ故障が検出された例を示したが、他のＶＭ１２においてメモリ故障が検出された場合も、当該他のＶＭ１２に関して同様の処理が実行されればよい。
【０１１５】
また、本実施の形態では、メモリ縮退情報として、ＤＩＭＭ番号及びＤＩＭＭアドレスを記憶する例を示した。但し、一般的に、ＤＩＭＭ番号及びＤＩＭＭアドレスとＰＡとの関係は、固定的である場合が多い。また、当該関係が可変であったとしても、運用時においては、実質的に固定的である場合が多い。したがって、ＤＩＭＭ番号及びＤＩＭＭアドレスの代わりに、ＰＡが記憶されてもよい。要するに、ＲＡとＰＡとのマッピングの変更に影響しないアドレス情報が、メモリ縮退情報として記憶されればよい。また、ＳＩＭＭ（Single In-line Memory Module）等、ＤＩＭＭ以外のメモリモジュールが使用される場合、当該メモリモジュールに適合した方法で、故障位置が特定されてもよい。
【０１１６】
上述したように、本実施の形態によれば、大規模な仮想化環境においても適用可能な仕組みで、メモリ故障によるＯＳ１３のパニックの繰り返しを防止することができる。
【０１１７】
すなわち、メモリの故障位置に対応するＰＡは、ＯＳ１３のカーネル空間に割り当てられないように、ＲＡとＰＡとのマッピングが変更される。その結果、メモリエラーの発生に応じて実行されるＯＳ１３のパニックの繰り返しを防止することができる。この際、再起動の対象は、メモリ故障が検出されたＶＭ１２に限定される。すなわち、情報処理装置１０自体を再起動させる必要はない。
【０１１８】
また、メモリの縮退は、ＶＭ１２上のＯＳ１３によって行われる。また、ハイパーバイザ１１は、ＲＡ／ＰＡ変換テーブル１４２のマッピングを変更すればよく、メモリの縮退には直接的には関与しない。したがって、ＶＭ１２の増加に伴って、メモリの縮退のためにハイパーバイザ１１が管理すべき情報が増加する可能性は低い。よって、大規模な仮想化環境であっても、メモリの縮退のために、ハイパーバイザ１１の管理情報が大規模になったり、ハイパーバイザ１１の制御が複雑になったりする可能性は低い。
【０１１９】
また、ＯＳ１３によってメモリの縮退が行われることにより、ＯＳ１３において縮退制御可能なメモリの最小単位でメモリを縮退させることができる。したがって、正常なメモリ領域を有効活用することができる。
【０１２０】
また、ＯＳ１３は、故障位置をＲＡによって記憶するのではなく、物理的なアドレス情報であるＤＩＭＭ番号及びＤＩＭＭアドレスによって記憶する。したがって、ＲＡとＰＡとのマッピングがハイパーバイザ１１によって変更されたとしても、縮退すべきＲＡを正しく把握することができる。
【０１２１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１２２】
１０          情報処理装置
１１          ハイパーバイザ
１２          ＶＭ
１３          ＯＳ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        主記憶装置
１０４、１０４ａ、１０４ｂ、１０４ｃ    ＣＰＵ
１０５        インタフェース装置
１１１        構成情報記憶部
１１２        メモリマップ制御部
１１３        メモリ情報変換部
１１４        ＶＭ起動制御部
１２０        ＯＳディスク
１３１        メモリ管理テーブル
１３２        メモリ縮退制御部
１３３        メモリアクセス制御部
１４１        ＶＡ／ＲＡ変換テーブル
１４２        ＲＡ／ＰＡ変換テーブル
１４３        エラー通知部
Ｂ            バス
【図１】
2013080288.tif 000003
【図２】
2013080288.tif 000004
【図３】
2013080288.tif 000005
【図４】
2013080288.tif 000006
【図５】
2013080288.tif 000007
【図６】
2013080288.tif 000008
【図７】
2013080288.tif 000009
【図８】
2013080288.tif 000010
【図９】
2013080288.tif 000011
【図１０】
2013080288.tif 000012
【図１１】
2013080288.tif 000013
【図１２】
2013080288.tif 000014
【図１３】
2013080288.tif 000015
【図１４】
2013080288.tif 000016
【図１５】
2013080288.tif 000017
【図１６】
2013080288.tif 000018
【図１７】
2013080288.tif 000019
【図１８】
2013080288.tif 000020
【手続補正書】
【提出日】平成26年5月21日(2014.5.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作する情報処理装置が実行するメモリ縮退方法であって、
第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、
前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する処理を実行するメモリ縮退方法。
【請求項２】
前記第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記第一の仮想マシンのオペレーティングシステムが、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶部に記憶し、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、ハイパーバイザが前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更し、
再起動された前記オペレーティングシステムが、前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを使用対象から除外する処理を実行する請求項１記載のメモリ縮退方法。
【請求項３】
前記対応関係を変更する処理は、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項１又は２記載のメモリ縮退方法。
【請求項４】
前記対応関係を変更する処理は、前記故障に係る物理アドレスが、前記オペレーティングシステムのカーネル空間に割り当てられる仮想物理アドレスに対応付けられないように、前記故障の検出前に前記第一の仮想マシンに割り当てられていた物理アドレスについて、仮想物理アドレスとの対応関係を変更する請求項３記載のメモリ縮退方法。
【請求項５】
複数の仮想マシンが動作する情報処理装置であって、
第一の仮想マシンに割り当てられたメモリ領域における故障の検出に応じ、前記故障に係る仮想物理アドレスに対応する物理アドレス又はメモリモジュールのアドレス情報を記憶する記憶部と、
前記第一の仮想マシン上で動作するオペレーティングシステムが前記故障の検出に応じて再起動される前に、前記第一の仮想マシンに関する仮想物理アドレスと物理アドレスとの対応関係を変更する変更部と、
前記記憶部に記憶された物理アドレス又はメモリモジュールのアドレス情報に対応する仮想物理アドレスを、前記オペレーティングシステムの使用対象から除外する除外部とを有する情報処理装置。
【国際調査報告】
2013080288.tif 000021
2013080288.tif 000022
2013080288.tif 000023
2013080288.tif 000024