以下、図面を参照しながら本発明の実施の形態を説明する。
図1は、実施の形態に係るサーバのハードウェア構成図である。
サーバ(情報処理装置)10は、システムボード11−i(i=1〜3)、サービスプロセッサ(SP)21、ディスクユニット31、および通信インタフェース41を備える。
システムボード11−i、サービスプロセッサ21、ディスクユニット31、および通信インタフェース41は、バス51を介して接続されている。
システムボード11−iは、Central Processing Unit(CPU)12−i−k(k=1、2)、不揮発性メモリ14−i、およびメモリ13−i−kを備える。
サービスプロセッサ21は、サーバ10の制御、サーバ10内の物理パーティションの制御等を行う装置である。サービスプロセッサ21は、CPU22およびメモリ23を備える。サービスプロセッサ21は、制御部の一例である。
CPU22は、サーバ10の制御、サーバ10内の物理パーティションの制御等の各種処理を行う。
メモリ23は、サービスプロセッサ21で用いられるデータを一時的に格納する。メモリ23は、例えば、RAMである。
ディスクユニット31は、ハードディスクドライブ(HDD)32−i(i=1〜3)を備える。
HDD32は、サーバ10で使用されるデータを格納する装置である。HDD32は、記憶手段の一例である。
通信インタフェース41は、サーバ10と接続する装置と通信を行うインタフェースである。
図2は、実施の形態に係るサーバと機能との対応関係の一例を示す図である。
サーバ10は、2つの物理パーティション61−k(k=1、2)に分割して運用されている。尚、明細書内において、物理パーティション61−1、61−2をそれぞれ物理パーティション#0、物理パーティション#1と表記する場合がある。
物理パーティション#0、#1は、サービスプロセッサ21により制御される。物理パーティション#0、#1に含まれるCPUは、処理部の一例である。
システムボード11−1、11−2から構成される物理パーティション#0は、さらに物理パーティション#0内で4つの論理ドメイン#0〜#3に分割して、各論理ドメイン#0〜#3で独立したオペレーティングシステム(OS)が稼動している。また、ハイパーバイザ(HV)#0が、物理パーティション#0内の物理リソースと各論理ドメイン#0〜#3との対応関係を制御する。
システムボード11−3から構成される物理パーティション#1内では、論理ドメイン#4でオペレーティングシステム(OS)が稼動している。またハイパーバイザ#1が、物理パーティション#1内の物理リソースと論理ドメイン#4との対応関係を制御する。
図3は、実施の形態に係る物理パーティションの機能ブロック図である。
物理パーティション61−1は、論理ドメイン201−m(m=1〜4)、ファームウェア(FW)311、およびハイパーバイザ(HV)351を備える。
図3の物理パーティション61−1は、図2の物理パーティション61−1に対応する。
尚、論理ドメイン201−1〜201−4は、それぞれ図2で示した各論理ドメイン#0〜#3に対応する。
尚、明細書内において、論理ドメイン201−1は、制御ドメイン#0と表記する場合がある。
また、明細書内において、論理ドメイン201−4は、ダンプ専用ドメイン#3またはダンプ採取用ドメイン201−4と表記する場合がある。
以下、特に限定ない限り論理ドメインとは仮想マシンを示す。
論理ドメイン201−mは、CPU202−m−k(k=1、2)、メモリ203−m、およびディスク204−mを備える。以下、特に限定ない限りCPU202、メモリ203、およびディスク204は、それぞれ仮想CPU、仮想メモリ、および仮想ディスクである。
CPU202−m−kは、各種処理を実行する。
メモリ203−mは、ディスク204−mから読み出された、各種プログラムやデータを格納する。
ファームウェア311は、サーバ10全体(複数の物理パーティション61−1、61−2)の制御を行い、例えば、ハードウェアの初期化、メモリ診断、温度監視などを行う。ファームウェア311には、図1のサービスプロセッサ21、およびシステムボード11−1、11−2の不揮発性メモリ14−1、14−2上に展開されるPower On Self Test(POST)が含まれる。ここで、Power On Self Test(POST)とは、システム起動時にハードウェアリソースの診断と初期化を実行するプログラムである。
ハイパーバイザ351は、論理ドメイン201−m、および論理ドメイン201−m上で稼動するオペレーティングシステム(OS)401−mを制御する。ハイパーバイザ351は、図1のシステムボード11−1,11−2のメモリ13−1−1、13−1−2、13−2−1、13−2−2上に展開されCPU12−1−1、12−1−2、12−2−1、12−2−2により実行される。
図3の下部は、物理パーティション61−1内のソフトウェアを示す。
物理パーティション61−1内の各論理ドメイン#0〜#3で、OS401−mが稼動している。
OS401−1〜401−4は、それぞれ論理ドメイン201−1〜201−4のオペレーティングシステムに対応する。
図4は、実施の形態に係るファームウェアの詳細な構成図である。
ファームウェア311は、ダンプ対象領域情報/HVダンプフラグ格納処理部312、ダンプ対象領域情報/HVダンプフラグ格納領域313、HVダンプフラグ設定部314、メモリ初期化処理部315、HV使用領域変更部316、HV再起動命令部317、ダンプ対象領域情報/HVダンプフラグ通知部318、PA-RAマッピング通知部319、メモリ開放処理部320、HVダンプフラグリセット処理部321を備える。
ダンプ対象領域情報/HVダンプフラグ格納処理部312は、ダンプ対象領域情報およびHVダンプフラグをダンプ対象領域情報/HVダンプフラグ格納領域313に格納する。
ダンプ対象領域情報/HVダンプフラグ格納領域313は、ダンプ対象領域情報およびHVダンプフラグが格納される領域である。ここでダンプ対象領域情報は、ダンプ対象領域を示す情報であり、ダンプ対象領域の開始アドレス(PA Base)およびサイズの情報を含む。HVダンプフラグは、ハイパーバイザが使用していたメモリ領域のダンプファイルを生成するか否かを示す制御情報である。また、HVダンプフラグは、稼動中のハイパーバイザのメモリダンプを採取するか否かを示す情報(HVライブダンプフラグ)を含むこともできる。
HVダンプフラグ設定部314は、HVダンプフラグの値を設定する。例えば、HVダンプフラグ設定部314は、HVダンプを行なう場合にHVダンプフラグをTRUEに設定する。
メモリ初期化処理部315は、メモリの初期化を行う。
HV使用領域変更部316は、ハイパーバイザ351が使用するメモリの領域を変更する。
HV再起動命令部317は、ハイパーバイザ351に再起動を指示する。
ダンプ対象領域情報/HVダンプフラグ通知部318は、ダンプ対象領域情報およびHVダンプフラグを通知する。
PA-RAマッピング通知部319は、OSの処理に必要なPA-RAマッピングをハイパーバイザ351へ通知し、ハイパーバイザ351のPA-RAマッピング処理部368は、通知されたPA-RAマッピングを用いて物理アドレス(PA)から実アドレス(RA)への、あるいは実アドレス(RA)から物理アドレス(PA)への変換を行う。
メモリ開放処理部320は、メモリの開放処理を行う。
HVダンプフラグリセット処理部321は、HVダンプフラグをリセットする。詳細には、HVダンプフラグリセット処理部321は、HVダンプフラグをFALSEに設定する。
図5は、実施の形態に係るハイパーバイザの詳細な構成図である。
ハイパーバイザ351は、ドメイン緊急停止指示部352、OSパニック指示部353、HVダンプ対象領域通知処理部354、HVダンプ対象領域情報/HVダンプフラグ格納処理部355、HVダンプ対象領域情報/HVダンプフラグ格納領域356、HV再起動処理部357、OS再起動命令部358、HVメモリダンプフラグ読出・送信部359、HVダンプ対象領域読出処理部360、メモリ管理部361、メモリ開放処理部362、HVダンプフラグリセット処理部363、HVダンプフラグ通知部364、ダンプ専用ドメイン起動処理部365、カーネルダンプ対象領域情報/カーネルダンプフラグ格納処理部366、カーネルダンプ対象領域情報/カーネルダンプフラグ格納領域367、PA-RAマッピング処理部368、PA-RAマッピング情報格納域369、割り込み処理部370、メモリダンプ処理起動部371、メモリ初期化処理部372、およびカーネルダンプフラグリセット処理部373を備える。
ドメイン緊急停止指示部352は、ドメイン201に緊急停止を指示する。
OSパニック指示部353は、OS401に緊急停止(パニック)を指示する。
HVダンプ対象領域通知処理部354は、HVダンプ対象領域情報/HVダンプフラグ格納領域356からHVダンプ対象領域情報を読み出して通知する。
HVダンプ対象領域情報/HVダンプフラグ格納処理部355は、HVダンプ対象領域情報およびHVダンプフラグをHVダンプ対象領域情報/HVダンプフラグ格納領域356に格納する。
HVダンプ対象領域情報/HVダンプフラグ格納領域356は、HVダンプ対象領域情報およびHVダンプフラグを格納する。HVダンプ対象領域情報は、ハイパーバイザ351が使用しているメモリ領域(HVダンプ対象領域)を示す情報であり、メモリ領域の開始アドレス(PA Base)およびサイズの情報を含む。HVダンプフラグは、ハイパーバイザが使用していたメモリ領域のダンプファイルを生成するか否かを示す制御情報である。
HV再起動処理部357は、ハイパーバイザ351を停止させ、ハイパーバイザ351の再起動を行う。
OS再起動命令部358は、OS401に再起動を指示する。
HVメモリダンプフラグ読出・送信部359は、HVダンプフラグを読み出して送信する。
HVダンプ対象領域読出処理部360は、HVダンプ対象領域情報で示されるメモリ領域の内容を読み出し、送信する。または、HVダンプ対象領域読出処理部360は、現在のハイパーバイザ351が使用しているメモリ領域の内容を読み出し、送信する。
メモリ管理部361は、メモリを管理する。
メモリ開放処理部362は、メモリの開放処理を行う。
HVダンプフラグリセット処理部363は、HVダンプフラグをリセットする。詳細には、HVダンプフラグリセット処理部363は、例えば、HVダンプフラグをFALSEに設定する。
HVダンプフラグ通知部364は、HVダンプフラグを通知する。
ダンプ専用ドメイン起動処理部365は、ダンプ専用ドメインをファームウェアモードで起動する。ファームウェアモードとは、OSを起動しないモード、すなわちOSを起動する前に停止するモードである。
カーネルダンプ対象領域情報/カーネルダンプフラグ格納処理部366は、カーネルダンプ対象領域情報およびカーネルダンプフラグをカーネルダンプ対象領域情報/カーネルダンプフラグ格納領域367に格納する。
カーネルダンプ対象領域情報/カーネルダンプフラグ格納領域367は、カーネルダンプ対象領域情報およびカーネルダンプフラグを格納する。カーネルダンプ対象領域情報は、パニック時にOS401のカーネルが使用していたメモリ領域(カーネルダンプ対象領域)を示す情報であり、メモリ領域の開始アドレス(RA Base)およびサイズの情報を含む。カーネルダンプフラグは、OS401のカーネルのメモリダンプを実行するか否かを示す情報である。さらに、カーネルダンプフラグは、どのような方法でカーネルのメモリダンプを採取するかを示すこともできる。カーネルダンプフラグは、例えば、0:カーネルのメモリダンプを採取しない、1:ダンプ採取用ドメインで採取、または2:メモリDynamic Reconfiguration機能を用いて採取というような情報である。カーネルダンプフラグは、OS401から受信しても良いし、ハイパーバイザ351が予め設定して保持していても良い。
PA-RAマッピング処理部368は、物理アドレス(PA)とリアルアドレス(RA)間のマッピングを行う。PAはメモリの物理アドレスであり、RAはドメイン(オペレーティングシステム)上の実アドレスである。
PA-RAマッピング情報格納域369は、PAとRA間のマッピングの情報を格納する。
割り込み処理部370は、OS401のカーネルのメモリダンプをする場合にS401に対して、割り込み処理させる。割り込み処理が受け付けられるとOS401のカーネルのメモリダンプが可能と判断されてOS401のカーネルのメモリダンプ処理に進み、受け付けられないと割り込み出来ないと判断してOS401のカーネルのメモリダンプ処理はせずに終了する。
メモリダンプ処理起動部371は、制御ドメイン201−1にハイパーバイザ351のメモリダンプ処理を起動させる。
メモリ初期化処理部372は、メモリの初期化を行う。
カーネルダンプフラグリセット処理部373は、カーネルダンプフラグをリセットする。例えば、カーネルダンプフラグリセット処理部373は、カーネルダンプフラグを削除または“0:カーネルのメモリダンプを採取しない”に設定する。
図6は、実施の形態に係るOSの詳細な構成図である。
OS401−mは、メモリ管理部402−m、ファイル管理部403−m、プロセス管理部404−m、割り込み処理部405−m、マッピング情報抽出・格納処理部406−m、マッピング情報格納領域407−m、HVメモリダンプ判断部408−m、OS起動処理部409−m、HVダンプ対象領域読出処理部の呼び出し部410−m、カーネルダンプ対象メモリ読出処理部411−m、HVダンプ採取処理部412−m、カーネルダンプ採取処理部413−m、パニック処理部414−m、カーネルダンプ対象領域通知処理部415−m、メモリDR組み込み処理部416−m、メモリDR切り離し処理部417−m、空きメモリ追加処理部418−m、ダンプ専用ドメイン停止処理部419−m、カーネルダンプフラグリセット処理部420−m、およびカーネルダンプフラグ通知部421−mを備える。
メモリ管理部402−mは、OS401−mが使用するメモリ203−mを割り当てる。
ファイル管理部403−mは、ディスク上に格納されたデータであるファイルを管理する。
プロセス管理部404−mは、OS401−mが実行するプログラムのプロセスを管理する。
割り込み処理部405−mは、割り込み処理を行う。
マッピング情報抽出・格納処理部406−mは、メモリ203−mのダンプを取得および解析するために必要な情報を、マッピング情報格納領域407−mに格納する。
マッピング情報格納領域407−mは、メモリ203−mのダンプを取得および解析するために必要な情報を格納する。マッピング情報格納領域407−mが格納する情報は、例えば、カーネルのテキスト域、データ域、ヒープ域、スタック域等、各セグメントのマッピング情報(論理アドレス、物理アドレス、サイズ等)やアドレス変換テーブル、ページテーブル等、各種制御テーブルのマッピング情報である。
HVメモリダンプ判断部408−mは、HVダンプフラグがTRUEまたはFALSEであるか判定し、ハイパーバイザのメモリダンプを行うか判断する。
OS起動処理部409−mは、OS401−mを再起動する。
HVダンプ対象領域読出処理部の呼び出し部410−mは、HVダンプ対象領域読出処理部360を呼び出す。
カーネルダンプ対象メモリ読出処理部411−mは、カーネルダンプ対象領域(パニック時にOS401−mのカーネルが使用していたメモリ領域)のメモリ内容を読み出す。
HVダンプ採取処理部412−mは、HVダンプ対象領域読出処理部360からHVダンプ対象領域読出処理部360が読み出したメモリ内容を受信し、ダンプファイルを生成する。
カーネルダンプ採取処理部413−mは、読み出したカーネルダンプ対象領域のメモリ内容をファイルに保存(ダンプファイルを生成)する。
パニック処理部414−mは、ドメイン201−mを緊急停止(パニック)させる。
カーネルダンプ対象領域通知処理部415−mは、パニック時にOS401−mのカーネルが使用しているメモリ領域をハイパーバイザ351に通知する。
メモリDR組み込み処理部416−mは、ドメイン201−mにメモリ領域を組み込む。
メモリDR切り離し処理部417−mは、ドメイン201−mからメモリ領域を切り離す。
空きメモリ追加処理部418−mは、メモリ管理部402−mにダンプ済みのメモリ領域を通知する。
ダンプ専用ドメイン停止処理部419−mは、ダンプを採取した後にダンプを採取するドメイン(ダンプ専用ドメイン)を停止する。
カーネルダンプフラグリセット処理部420−mは、ハイパーバイザ351にカーネルダンプフラグのリセットを指示する。
カーネルダンプフラグ通知部421−mは、ハイパーバイザ351にカーネルダンプフラグを通知する。カーネルダンプフラグ通知部421−mは、カーネルのメモリダンプを実行する必要がある場合にカーネルダンプフラグをハイパーバイザ351に通知する。例えば、カーネルダンプフラグ通知部421−mは、カーネルのメモリダンプを採取しない場合はカーネルダンプフラグの値を“0:カーネルのメモリダンプを採取しない”、ダンプ採取用ドメインでカーネルのメモリダンプを採取する場合にカーネルダンプフラグの値を“1:ダンプ採取用ドメインで採取”、メモリDynamic Reconfiguration機能を用いてカーネルのメモリダンプを採取する場合にカーネルダンプフラグの値を“2:メモリDynamic Reconfiguration機能を用いて採取”とする。
(第1の実施の形態)
第1の実施の形態では、制御ドメインを用いてハイパーバイザのメモリダンプを採取する。
図7A、7Bは、第1の実施の形態に係るメモリダンプ生成処理のフローチャートである。
初期状態において、ドメイン201−1〜201−3およびOS401−1〜401−3は、起動され運用状態となっており、ドメイン201−4およびOS401−4は起動されていないものとする。
ステップS501において、ハイパーバイザ351は、致命的なエラーを検出する。
ステップS502において、ドメイン緊急停止指示部352は、運用状態の論理ドメイン、すなわち制御ドメイン201−1およびドメイン201−2、201−3に緊急停止を指示する。
ステップS503において、OS401−i(i=1〜3)は、緊急停止指示を受信し、OS401−iを緊急停止させる。
ステップS504において、HVダンプ対象領域通知処理部354は、HVダンプ対象領域情報/HVダンプフラグ格納領域356からHVダンプ対象領域情報を読み出し、ファームウェア311に通知する。HVダンプ対象領域情報は、ハイパーバイザ351が使用しているメモリ領域(ダンプ対象領域)を示す情報であり、メモリ領域の開始アドレス(PA Base)およびサイズの情報を含む。HVダンプ対象領域情報は、図8に示すような形式であり、ブロックの番号、ブロックの物理メモリの開始アドレス(PA Base)、およびブロックのサイズが対応付けられている。また、HV再起動処理部357は、ハイパーバイザ351を停止する(HVアボート)。
ステップS506において、ダンプ対象領域情報/HVダンプフラグ格納処理部312は、HVダンプ対象領域情報を受信する。
ステップS507において、ダンプ対象領域情報/HVダンプフラグ格納処理部312は、受信したHVダンプ対象領域情報をダンプ対象領域情報として、ダンプ対象領域情報/HVダンプフラグ格納領域313に格納する。また、HVダンプフラグ設定部314は、HVダンプフラグをTUREに設定し、ダンプ対象領域情報/HVダンプフラグ格納領域313に格納する。
ステップS508において、ファームウェア311は、メモリの内容を保持したまま、物理パーティションの再起動処理を開始する。
ステップS509において、メモリ初期化処理部315は、メモリの初期化処理を開始する。先ず、例えば、メモリの先頭のアドレスを初期化処理対象の領域として設定する。
ステップS510において、メモリ初期化処理部315は、ダンプ対象領域情報を参照し、初期化処理対象の領域がダンプ対象領域情報で指定される領域、すなわちダンプ対象領域であるか否か判定する。初期化処理対象の領域がダンプ対象領域である場合、初期化処理対象の領域の内容を保持したまま、制御はステップS512に進み、ダンプ対象領域でない場合、制御はステップS511に進む。
ステップS511において、メモリ初期化処理部315は、初期化処理対象の領域を初期化する。
ステップS512において、メモリ初期化処理部315は、ダンプ対象領域以外のすべての領域に対する初期化処理を行ったか判定する。ダンプ対象領域以外のすべての領域に対する初期化処理を行った場合、制御はステップS513に進み、ダンプ対象領域以外のすべての領域に対する初期化処理を行っていない場合、未処理の領域(例えば、ダンプ対象領域であるかチェック済みの領域の次のアドレス)を初期化処理対象の領域とし、制御はステップS510に戻る。
ステップS513において、HV使用領域変更部316は、ハイパーバイザ351が使用する領域をダンプ対象領域情報で示される領域以外の領域に変更する。なお、初期化処理対象の領域として、少なくともハイパーバイザ351が使用する変更後の領域を初期化対象としてもよい。
ステップS514において、HV再起動命令部317は、ハイパーバイザ351に再起動を指示する。ダンプ対象領域情報/HVダンプフラグ通知部318は、ダンプ対象領域情報/HVダンプフラグ格納領域313からダンプ対象領域情報およびHVダンプフラグを読み出し、ハイパーバイザ351に通知する。
ステップS515において、HVダンプ対象領域情報/HVダンプフラグ格納処理部355は、ダンプ対象領域情報およびHVダンプフラグを受信し、HVダンプ対象領域情報/HVダンプフラグ格納領域356に格納する。尚、HVダンプ対象領域情報/HVダンプフラグ格納処理部355は、受信したダンプ対象領域情報をHVダンプ対象領域情報として格納する。
ステップS516において、HV再起動処理部357は、ハイパーバイザ351を再起動する。ただし、HVダンプ対象領域情報で指定されるメモリ領域は使用しない。
ステップS517において、OS再起動命令部358は、OS401−1〜401−3に再起動を指示する。
ステップS518において、OS再起動処理部409−2、409−3は、それぞれOS401−2、401−3を再起動する。
ステップS519において、OS401−2、401−3は、業務を再開する。
ステップS520において、OS401−2、401−3は、通常の運用状態となる。
ステップS521において、OS再起動処理部409−1は、OS401−1を再起動する。
ステップS522において、OS401−1は、業務を再開する。
ステップS523において、HVメモリダンプ判断部408−1は、ハイパーバイザ351にHVダンプフラグの送信を要求する。
ステップS524において、HVメモリダンプフラグ読出・送信部359は、要求を受信すると、HVダンプ対象領域情報/HVダンプフラグ格納領域356からHVダンプフラグを読み出し、OS401−1に送信する。
ステップS525において、HVメモリダンプ判断部408−1は、HVダンプフラグを受信し、HVダンプフラグがTRUEであるか否か判定する。HVダンプフラグがTRUEの場合、制御はステップS527に進み、FALSEの場合、制御はステップS531に進む。
ステップS526において、HVダンプ対象領域読出処理部の呼び出し部410−1は、HVダンプ対象領域読出処理部360を呼び出す。
ステップS527において、HVダンプ対象領域読出処理部360は、HVダンプ対象領域情報で示されるメモリ領域の内容を読み出し、制御ドメインに送信する。
ステップS528において、HVダンプ採取処理部412−1は、HVダンプ対象領域読出処理部360からHVダンプ対象領域読出処理部360が読み出したメモリ内容を受信し、受信したメモリ内容をファイルに書き出してダンプファイルを生成する。以下、ステップS529、S530とステップS531の処理が並列に実行される。
ステップS529において、メモリ開放処理部362は、HVダンプ対象領域情報で指定されるメモリ領域を開放する。また、HVダンプフラグリセット処理部363は、HVダンプフラグをリセット、すなわちFALSEに設定する。HVダンプフラグ通知部364は、ファームウェア311にHVダンプフラグを通知する。
ステップS530において、メモリ開放処理部320は、ダンプ対象領域情報をクリアする。また、HVダンプフラグリセット処理部321は、HVダンプフラグをリセット、すなわちFALSEに設定する。
ステップS531において、OS401−1は、通常の運用状態となる。
第1の実施の形態に係るメモリダンプ生成処理によれば、エラーを検出してハイパーバイザおよびオペレーティングシステムを再起動する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにハイパーバイザおよびオペレーティングシステムを再起動できる。これにより、業務停止時間を短縮することができる。
ここで、第1の実施の形態に係るメモリダンプ生成処理の変形例について説明する。
変形例では、稼動中のハイパーバイザのメモリダンプの採取(ハイパーバイザのライブダンプと呼ぶ)が行われる。
図7Cは、第1の実施の形態に係るメモリダンプ生成処理の変形例のフローチャートである。
変形例のフローチャートは、図7A、7Bの第1の実施の形態に係るメモリダンプ生成処理のフローチャートにステップS532、S533が追加され、ステップS525においてNOと判定された場合に、制御がステップS532に進むものである。
図7Cでは、図7A、7Bに対する変更箇所について記載し、その他の部分については同様であるため記載は省略されている。
変形例において、例えば、HVダンプフラグのデータ構造を0:採取せず、1:異常時のHVダンプ、2:HVライブダンプのように変更することができる。HVメモリダンプ判断部408−1は、HVダンプフラグが1の場合、HVダンプフラグがTRUEと判定し、HVダンプフラグが0または2の場合、HVダンプフラグがFALSEと判定する。また、HVメモリダンプ判断部408−1は、HVダンプフラグが2の場合、HVダンプライブフラグがTRUEと判定する。
ステップS532において、HVメモリダンプ判断部408−1は、HVライブダンプフラグがTRUEであるか否か判定する。HVダンプフラグがTRUEの場合(すなわち、HVダンプフラグが2の場合)、制御はステップS533に進み、FALSEの場合、制御はステップS531に進む。
ステップS533において、HVライブダンプ処理が行われる。詳細には、HVダンプ対象領域読出処理部の呼び出し部410−1は、HVダンプ対象領域読出処理部360を呼び出す。HVダンプ対象領域読出処理部360は、稼動中のハイパーバイザ351が使用しているメモリ領域の内容を読み出し、制御ドメインに送信する。HVダンプ採取処理部412−1は、HVダンプ対象領域読出処理部360が読み出したメモリ内容を受信し、受信したメモリ内容をファイルに書き出してハイパーバイザのダンプファイルを生成する。
上記のように、稼動中のハイパーバイザのメモリダンプの採取では、ハイパーバイザを停止・再起動しないまま、ハイパーバイザが使用するメモリ領域のデータを読み出して、該データをハイパーバイザのダンプファイルとしてファイルに書き出している。
(第2の実施の形態)
第2の実施の形態では、ハイパーバイザのメモリダンプに加えて、OSのカーネルのメモリダンプを行う。
図9A、9B、9Cは、第2の実施の形態に係るメモリダンプ生成処理のフローチャートである。
初期状態において、ドメイン201−1〜201−3およびOS401−1〜401−3は、起動され運用状態となっており、ドメイン201−4およびOS401−4は起動されていないものとする。
ステップS601において、ハイパーバイザ351に致命的なエラーが発生する。
ステップS602において、ハイパーバイザ351は、致命的なエラーを検出する。
ステップS603において、割り込み処理部370は、運用状態のOS、すなわちOS401−i(i=1〜3)に割り込み処理を通知し、OSパニック指示部353は、OS401−iにパニックを指示する。
ステップS604において、パニック処理部414−iは、パニック指示を受信し、OS401−iをパニックさせる。
ステップS605において、カーネルダンプ対象領域通知処理部415−iは、ハイパーバイザ351にカーネルダンプ対象領域情報を通知する。カーネルダンプ対象領域情報は、OS401−iのカーネルが使用しているメモリ領域(ダンプ対象領域)を示す情報であり、メモリ領域の開始アドレス(RA Base)およびサイズの情報を含む。カーネルダンプ対象領域情報は、図10に示すような形式であり、ブロックの番号、ブロックのメモリの開始アドレス(RA Base)、およびブロックのサイズが対応付けられている。
尚、ステップS604およびS605は、パニック指示を受信した論理ドメインごとにそれぞれ実行される。
ステップS606において、PA-RAマッピング処理部368は、通知された開始アドレス(RA Base)をRA BaseからPA Baseの開始アドレス(PA Base)に変換するRA-PA変換を行う。
ステップS607において、HVダンプ対象領域通知処理部354は、ハイパーバイザ351が使用しているメモリ領域を示すHVダンプ対象領域情報をファームウェア311に通知する。さらに、HVダンプ対象領域通知処理部354は、OS401−iから受信したカーネルダンプ対象領域情報をファームウェア311に通知する。尚、通知されるカーネルダンプ対象領域情報は、RA BaseからPA Baseに変換された開始アドレス(PA Base)およびサイズを含む。実施の形態では、停止した論理ドメインに対応する3個のカーネルダンプ対象領域情報が通知される。
ステップS608において、ダンプ対象領域情報/HVダンプフラグ格納処理部312は、受信したHVダンプ対象領域情報および受信したカーネルダンプ対象領域情報をダンプ対象領域情報として、ダンプ対象領域情報/HVダンプフラグ格納領域313に格納する。また、HVダンプフラグ設定部314は、HVダンプフラグをTUREに設定し、ダンプ対象領域情報/HVダンプフラグ格納領域313に格納する。
ステップS609において、HV再起動処理部357は、ハイパーバイザ351を停止する(HVアボート)。
ステップS610において、メモリ初期化処理部315は、ダンプ対象領域情報で示される領域以外のメモリ領域を初期化する。すなわち、メモリ初期化処理部315は、ハイパーバイザ351が使用していた領域とパニック時にOS401−iのカーネルが使用していた領域以外のメモリ領域を初期化する。
ステップS611において、HV使用領域変更部316は、HV使用領域変更部316は、ハイパーバイザ351が使用する領域をダンプ対象領域情報で示される領域以外の領域に変更する。HV再起動命令部317は、ハイパーバイザ351に再起動を指示する。ダンプ対象領域情報/HVダンプフラグ通知部318は、ダンプ対象領域情報/HVダンプフラグ格納領域313からダンプ対象領域情報およびHVダンプフラグを読み出し、ハイパーバイザ351に通知する。ダンプ対象領域情報には、HVダンプ対象領域情報およびカーネルダンプ対象領域情報が含まれている。HVダンプ対象領域情報/HVダンプフラグ格納処理部355は、ダンプ対象領域情報の内のHVダンプ対象領域情報およびHVダンプフラグを受信し、HVダンプ対象領域情報/HVダンプフラグ格納領域356に格納する。カーネルダンプ対象領域情報/カーネルダンプフラグ格納処理部366は、ダンプ対象領域情報の内のカーネルダンプ対象領域情報を受信し、カーネルダンプ対象領域情報/カーネルダンプフラグ格納領域367に格納する。
ステップS612において、HV再起動処理部357は、ハイパーバイザ351を起動する。
ステップS613において、メモリ初期化処理部372は、カーネルダンプ対象領域情報で示される領域以外のメモリ領域を初期化する。
ステップS614において、PA-RAマッピング処理部368、OS再起動命令部358、およびダンプ専用ドメイン起動処理部365は、カーネルダンプフラグの値をチェックする。以下、カーネルダンプフラグの値に応じた処理が実行される。例えばPA-RAマッピング処理部368は、カーネルダンプフラグが“1:ダンプ採取用ドメインで採取”の場合、パニック発生時にOS401−1〜401−3のカーネルが使用していたメモリのPAをダンプ採取用ドメイン204−4のRAに割り当てる。
以下、ステップS621、ステップS622〜S626、およびステップS632〜S635の処理が別々に並列して実行される。
ただし、カーネルダンプフラグが“1:ダンプ採取用ドメインで採取”の場合、ステップS626、S635は実行されず、“2:メモリDynamic Reconfiguration機能を用いて採取”の場合、ステップS621は実行されない。
ここでは、ステップS621は、ダンプ採取用ドメイン204−4に関する処理であり、ステップS622〜S626は、制御ドメイン204−1に関する処理であり、ステップS632〜S635は、論理ドメイン204−2、204−3に関する処理である。
ステップS621において、ダンプ採取用ドメインによるカーネルのメモリダンプ生成処理が行われる。ダンプ採取用ドメインによるカーネルのメモリダンプ生成処理の詳細については後述する。
ステップS622において、PA-RAマッピング処理部368は、ドメイン201−1の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、OS401−1を再起動してもパニック時のカーネルおよびパニック時のハイパーバイザ351が使用していたメモリ領域のデータは上書きされなくなる。
1)パニック発生時にカーネルおよびハイパーバイザが使用していたメモリの物理アドレスは、再起動するドメインのリアルアドレスに割り当てないようにする。かつ、
2)再起動前後で、該当ドメインが使用できるメモリサイズがなるべく変化しないようにする。
ただし、再起動するドメインに割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
尚、パニック発生時にどの領域をカーネルおよびハイパーバイザ351が利用していたかは、HVダンプ対象領域情報およびカーネルダンプ対象領域情報を参照することにより判断される。
ステップS623において、OS再起動命令部358は、OS401−1に再起動を指示する。また、OS再起動命令部358は、カーネルダンプフラグが“2:メモリDynamic Reconfiguration機能を用いて採取”の場合、メモリDR機能を用いたケーネルのメモリダンプ生成処理を行う旨を再起動指示に含める。指示を受信したOS起動処理部409−1は、OS401−1を起動する。
ステップS624において、OS401−1は、業務を再開する。
ステップS625において、メモリDynamic Reconfiguration(DR)機能を用いたカーネルのメモリダンプ生成処理が行われる。メモリDR機能を用いたカーネルのメモリダンプ生成処理の詳細については後述する。 ステップS626において、ハイパーバイザのメモリダンプ生成処理が行われる。ステップS626は、図7BのステップS523〜S531の処理と同様であるため説明は省略する。
ステップS632において、PA-RAマッピング処理部368は、ドメイン201−2,201−3の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、OS401−1を再起動してもパニック時のカーネルおよびパニック時のハイパーバイザ351が使用していたメモリ領域のデータは上書きされなくなる。
1)パニック発生時にカーネルおよびハイパーバイザが使用していたメモリの物理アドレスは、再起動するドメインのリアルアドレスに割り当てないようにする。かつ、
2)再起動前後で、該当ドメインが使用できるメモリサイズがなるべく変化しないようにする。
ただし、再起動するドメインに割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
尚、パニック発生時にどの領域をカーネルおよびハイパーバイザ351が利用していたかは、HVダンプ対象領域情報およびカーネルダンプ対象領域情報を参照することにより判断される。
ステップS633において、OS再起動命令部358は、OS401−2、401−3に再起動を指示する。また、OS再起動命令部358は、カーネルダンプフラグが“2:メモリDynamic Reconfiguration機能を用いて採取”の場合、メモリDR機能を用いたケーネルのメモリダンプ生成処理を行う旨を再起動指示に含める。指示を受信したOS起動処理部409−2、409−3は、OS401−2,401−3をそれぞれ起動する。
ステップS634において、OS401−2,401−3は、それぞれ業務を再開する。
ステップS635において、メモリDR機能を用いたカーネルのメモリダンプ生成処理が行われる。
以下、カーネルのメモリダンプ生成処理の詳細について説明する。
カーネルのメモリダンプ生成処理は、(1)ダンプ採取用ドメインによるメモリダンプを採取する方法(ステップS621)、または(2)メモリDynamic Reconfiguration機能を用いてメモリダンプを採取する方法(ステップS626、S635)のいずれかが用いられる。
(1)ダンプ採取用ドメインでメモリダンプを採取する方法
ダンプ採取用ドメイン201−4は、複数のドメイン201が存在するシステムでも、それぞれの論理ドメイン毎に用意する必要はなく、システムで1つあれば良い。ダンプ採取用ドメイン201−4が1つの場合、複数の論理ドメイン201で同時にパニックが発生した場合は1ドメインずつメモリダンプを採取することになるが、ダンプ採取が完了しているかどうかにかかわらず、速やかに業務が再開できるため、業務への影響はない。
ダンプ採取用ドメイン201−4では、パニックが発生した論理ドメインの業務を引き継ぐ必要はないため、メモリダンプを採取するために必要となる下記のハードウェア資源があれば良い。
・パニックが発生した論理ドメインのOSのカーネルがパニック時に使用していた物理メモリ領域
・1個以上のCPU
・ダンプファイルを格納するディスクとディスクを使用するために必要なI/O資源
図11は、ダンプ採取用ドメインによるカーネルのメモリダンプ生成処理のフローチャートである。
図11は、図9BのステップS621に対応する。
ここでは、OS401−iのカーネルのメモリダンプ生成処理について説明する。
ステップS651において、ダンプ専用ドメイン起動処理部365は、ダンプ採取用ドメイン201−4をファームウェアモードで起動する。ファームウェアモードとは、OSを起動しないモード、すなわちOSを起動する前に停止するモードである。OSを起動しないことにより、ダンプ対象領域が書き換えられてしまうことを防ぐ。
ステップS652において、カーネルダンプ対象メモリ読出処理部411−4は、パニック発生時にオペレーティングシステム401−iのカーネルが使用していたメモリ領域(カーネルダンプ対象領域)を読み出す。尚、カーネルダンプ対象領域の情報(開始アドレス(RA Base)やサイズ等)は、ファームウェア311またはハイパーバイザ351からの通知により得る。
ステップS653において、カーネルダンプ採取処理部413−4は、読み出したメモリ内容をファイルに書き出してダンプファイルを生成する。
ステップS654において、ダンプ専用ドメイン停止処理部419−4は、ダンプ採取ドメイン201−4を停止する。そして、ダンプ専用ドメイン停止処理部419−4は、カーネルダンプ対象領域を使用可能な未使用のメモリ、すなわち空きメモリとするようにハイパーバイザ351のメモリ管理部361へ通知する。また、カーネルダンプフラグリセット処理部420−4は、ハイパーバイザ351にカーネルダンプフラグのリセットを指示する。リセット指示を受信したカーネルダンプフラグリセット処理部373は、カーネルダンプフラグをリセットする。
ステップS655において、メモリ管理部361は、カーネルダンプ対象領域を他の論理ドメイン201−iからも使用可能な空きメモリとする。
図12は、ダンプ採取用ドメインによるメモリダンプの採取を示す図である。
図12の左側は運用状態(およびパニック時)、真ん中は再起動時、右側はダンプ採取用ドメインによるメモリダンプの採取時を示す。
ここでは、論理ドメイン201−1の処理について記載している。尚、ドメイン201−2、201−3においても同様の処理が実行されるので、詳細は省略する。
図12の左側の運用状態において、PAのある領域が論理ドメイン201−1のRAのある領域にマッピングされている。
OS401−1のパニック時にOS401−1のカーネルが使用していた領域はカーネルダンプ対象領域となる。
OS401−1のパニック後、PA-RAマッピングの変更が行われ(ステップS622)、論理ドメイン201−1には、パニック時にOS401−1のカーネルが使用していた領域(カーネルダンプ対象領域)とは異なるPAの領域が割り当てられ、OS401−1は再起動する(図12の真ん中)。
図12の右側のダンプ時において、ダンプ採取専用ドメイン201−4のRAには、パニック時にOS401−1のカーネルが使用していたPAの領域(カーネルダンプ対象領域)が割り当てられる。ダンプ採取専用ドメイン201−4は、カーネルダンプ対象領域を読み出して、ダンプファイルを生成する。
図13は、ダンプ採取用ドメインによるメモリダンプの採取におけるPA-RAマッピング情報を示す図である。
図13の左側は運用状態(およびパニック時)、真ん中はダンプ時、右側はダンプ後を示す。
ここでは、ドメイン201−1(制御ドメイン#0)とダンプ採取専用ドメイン201−4(ダンプ採取専用ドメイン#3)のPA-RAマッピングについて記載している。
PA-RAマッピング情報は、ドメイン、開始アドレス(PA Base)、サイズ、および開始アドレス(RA Base)が対応付けられて記載されている。
図13の左側のパニック時において、開始アドレス(PA Base)がxxxxx、サイズが8GBである領域が制御ドメイン#0の開始アドレス(RA Base)がaaaaaである領域にマッピングされている(図12の左側に対応)。この領域がカーネルダンプ対象領域となる。
OS401−1のパニック後、PA-RAマッピングの変更が行われ(ステップS622)、PA-RAマッピング情報は図13の真ん中に示すようになる。
図13の真ん中のダンプ時において、開始アドレス(PA Base)がxxxxx、サイズが8GBである領域がダンプ採取専用ドメイン#3の開始アドレス(RA Base)がaaaaaである領域にマッピングされている。すなわち、パニック時の制御ドメイン#0のPAの領域がダンプ採取専用ドメイン#3のRAにマッピングされている。また、開始アドレス(PA Base)がyyyyy、サイズが8GBである領域が制御ドメイン#0の開始アドレス(PA Base)がaaaaaである領域にマッピングされている。すなわち、新たなPAの領域が再起動後の制御ドメイン#0に割り当てられている(図12の右側に対応)。
ダンプファイルの生成後、カーネルダンプ対象領域は他のドメインからも使用可能な空きメモリとなる(ステップS655)。
すなわち、図13の右側のダンプ後において、ダンプ採取専用ドメイン#3のマッピング情報は削除される。
ダンプ採取用ドメインでメモリダンプを採取する方法によれば、異常を検出したドメインではなく、別のドメインでダンプを採取するため、ダンプ採取処理中に再度異常を検出してハングアップする等の二次被害が発生する可能性が低くなる。
ダンプ採取用ドメインでメモリダンプを採取する方法によれば、Capacity on Demand (CoD)のような、ユーザが使用したハードウェア資源(CPU、メモリ、ディスク等)の量や時間に応じて課金を行うシステムにおいて、ダンプ採取のために使用するハードウェア資源に対する課金を行わないようにすることが容易に実現でき、料金の適正化を図ることができる。
(2)メモリDynamic Reconfiguration機能を用いてメモリダンプを採取する方法
ここでは、論理ドメイン201−1の処理(ステップS625)について説明する。尚、論理ドメイン201−2、201−3の処理(ステップS635)も同様の処理が実行されるので、詳細は省略する。
図14は、メモリDynamic Reconfiguration機能を用いたカーネルのメモリダンプ生成処理のフローチャートである。
図14は、図9CのステップS625に対応する。
ステップS641において、メモリDR組み込み処理部416−1は、メモリのDynamic Reconfiguration機能を使用して、パニック発生時にOS401−1のカーネルが使用していたメモリ領域(カーネルダンプ対象領域)をドメイン201−1に組み込む。なお、カーネルダンプ対象領域の情報(開始アドレス(RA Base)やサイズ等)は、ファームウェア311またはハイパーバイザ351からの通知により得る。
ステップS642において、カーネルダンプ対象メモリ読出処理部411−1は、組み込んだメモリ領域を読み出す。
ステップS643において、カーネルダンプ採取処理部413−1は、読み出したメモリ内容をファイルに書き出してダンプファイルを生成する。
ステップS644において、メモリDR切り離し処理部417−1は、メモリのDynamic Reconfiguration機能を使用して、パニック発生時にOS401−1のカーネルが使用していたメモリ領域をドメイン201−1から切り離して、切り離した領域を空きメモリとするようにメモリ管理部361に通知する。また、カーネルダンプフラグリセット処理部420−1は、ハイパーバイザ351にカーネルダンプフラグのリセットを指示する。リセット指示を受信したカーネルダンプフラグリセット処理部373は、カーネルダンプフラグをリセットする。
ステップS645において、メモリ管理部361は、切り離した領域を他のドメイン201−2、201−3からも使用可能な空きメモリとする。
また、ステップS644およびS645の代わりに、空きメモリ追加処理部418−1は、パニック時にOS401−1のカーネルが使用していたメモリ領域(すなわち、ダンプ済み領域)を使用可能な未使用のメモリ、すなわち空きメモリとするようにメモリ管理部402−1へ通知し、メモリ管理部402−1はダンプ済み領域を空きメモリとする処理を行っても良い。
図15は、メモリDynamic Reconfiguration機能を用いたメモリダンプの採取を示す図である。
図15の左側は運用状態(およびパニック時)、真ん中は再起動時、右側はダンプ採取用ドメインによるメモリダンプの採取時を示す。
ここでは、ドメイン201−1の処理について記載している。尚、ドメイン201−2、201−3においても同様の処理が実行されるので、詳細は省略する。
図15の左側の運用状態において、PAのある領域がドメイン201−1のRAのある領域にマッピングされている。
OS401−1のパニック時にOS401−1のカーネルが使用していた領域はカーネルダンプ対象領域となる。
OS401−1のパニック後、PA-RAマッピングの変更が行われ(ステップS622)、ドメイン201−1のRAには、パニック時にOS401−1のカーネルが使用していた領域(カーネルダンプ対象領域)とは異なるPAの領域が割り当てられ、OS401−1は再起動する(図15の真ん中)。
図15の右側の再起動後のダンプ時において、ドメイン201−1のRAには、パニック時にOS401−1のカーネルが使用していた領域(カーネルダンプ対象領域)が組み込まれる。ドメイン201−1は、カーネルダンプ対象領域を読み出して、ダンプファイルを生成する。
図16は、メモリDynamic Reconfiguration機能を用いたメモリダンプの採取におけるPA-RAマッピング情報を示す図である。
図16の左側は運用状態(およびパニック時)、真ん中はダンプ時、右側はダンプ後を示す。
ここでは、ドメイン201−1(制御ドメイン#0)のPA-RAマッピングについて記載している。
PA-RAマッピング情報は、ドメイン、開始アドレス(PA Base)、サイズ、および開始アドレス(RA Base)が対応付けられて記載されている。
図16の左側のパニック時において、開始アドレス(PA Base)がxxxxx、サイズが8GBである領域が制御ドメイン#0の開始アドレス(RA Base)がaaaaaである領域にマッピングされている(図15の左側に対応)。この領域がカーネルダンプ対象領域となる。
OS401−1のパニック後、PA-RAマッピングの変更が行われ、さらにカーネルダンプ対象領域が制御ドメイン#0に組み込まれ、PA-RAマッピング情報は図16の真ん中に示すようになる。
図16の真ん中のダンプ時において、開始アドレス(PA Base)がyyyyy、サイズが8GBである領域が制御ドメイン#0のRAの開始アドレス(RA Base)がaaaaaである領域にマッピングされている。さらに、開始アドレス(PA Base)がxxxxx、サイズが8GBである領域が制御ドメイン#0の開始アドレス(RA Base)がbbbbbである領域にマッピングされている。
すなわち、新たなPAの領域が再起動後の制御ドメイン#0に割り当てられ、さらに制御ドメイン#0の再起動後に、カーネルダンプ対象領域が制御ドメイン#0に組み込まれる(図15の右側に対応)。
ダンプファイルの生成後、カーネルダンプ対象領域は他のドメインからも使用可能な空きメモリとなる(ステップS645)。
すなわち、図16の右側のダンプ後において、カーネルダンプ対象領域のマッピング情報は削除される。
メモリDynamic Reconfiguration機能を用いてメモリダンプを採取する方法によれば、異常を検出したオペレーティングシステムではなく、再起動後の新しいオペレーティングシステムがダンプを採取するため、ダンプ採取処理中に再度異常を検出してハングアップする等の二次被害が発生する可能性が低くなる。
第2の実施の形態に係るメモリダンプ生成処理によれば、エラーを検出してハイパーバイザおよびオペレーティングシステムを再起動する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにハイパーバイザおよびオペレーティングシステムを再起動できる。これにより、業務停止時間を短縮することができる。
第2の実施の形態に係るメモリダンプ生成処理によれば、ハイパーバイザおよびカーネルのメモリダンプを採取することで、ハイパーバイザおよびドメインの両方に起因したエラーであっても、効果的にエラーの解析を行うことができる。
(第3の実施の形態)
第3の実施の形態では、OSでエラーが検出され、カーネルのメモリダンプが行われる。
ここでは、OS401−1のカーネルのメモリダンプを生成する場合について説明する。
図17は、第3の実施の形態に係るメモリダンプ生成処理のフローチャートである。
先ず、メモリ管理部402−1は、OS401−1の起動時に、メモリ203−1の一番小さい(または一番大きい)リアルアドレス(RA)からカーネルが使用するメモリを割り当てる。このように、なるべくカーネルが使用するメモリ領域(ダンプ対象領域)のサイズが小さくなるようにする。また、マッピング情報抽出・格納処理部406−1は、カーネルが使用しているメモリのダンプを採取/解析するために必要となる情報(例えば、カーネルのテキスト域、データ域、ヒープ域、スタック域など、各セグメントのマッピング情報(論理アドレス、物理アドレス、サイズ等)、アドレス変換テーブル、ページテーブル、各種制御テーブルのマッピング情報)を、マッピング情報格納領域407−1に書き込む。また、ドメイン201−1〜201−3およびOS401−1〜401−3は、起動され運用状態となっており、ドメイン201−4およびOS401−4は起動されていないものとする。
ステップS701において、OS401−1に致命的なエラーが発生する。
ステップS702において、OS401−1は、致命的なエラーを検出する。
ステップS703において、パニック処理部414−1は、OS401−1をパニック(緊急停止)させる。
ステップS704において、カーネルダンプ対象領域通知処理部415−1は、緊急停止(パニック)時にOS401−1のカーネルが使用していたメモリ領域(カーネルダンプ対象領域)の情報(カーネルダンプ対象領域情報)をハイパーバイザ351に通知する。また、カーネルダンプフラグ通知部421−1は、カーネルダンプフラグをハイパーバイザ351に通知する。
ステップS705において、カーネルダンプ対象領域情報/カーネルダンプフラグ格納処理部366は、受信したカーネルダンプ対象領域情報およびカーネルダンプフラグをカーネルダンプ対象領域情報/カーネルダンプフラグ格納領域367に格納する。
ステップS706において、メモリ初期化部372は、カーネルダンプ対象領域情報で示される領域以外のメモリ領域を初期化する。すなわち、メモリ初期化部372は、パニック時にOS401−1のカーネルが使用していたメモリ領域の初期化処理を実施しない(すなわち、データを更新しない)ようにする。それにより、パニック時にOS401−1のカーネルが使用していたメモリ領域のデータはそのままの状態で残る。
ステップS707において、PA-RAマッピング処理部368、OS再起動命令部358、およびダンプ専用ドメイン起動処理部365は、カーネルダンプフラグの値をチェックする。以下、カーネルダンプフラグの値に応じた処理が実行される。例えばPA-RAマッピング処理部368は、カーネルダンプフラグが“1:ダンプ採取用ドメインで採取”の場合、パニック発生時にOS401−1〜401−3のカーネルが使用していたメモリのPAをダンプ採取用ドメイン204−4のRAに割り当てる。
以下、ステップS708とステップS709〜S712の処理が別々に並列して実行される。
ただし、カーネルダンプフラグが“1:ダンプ採取用ドメインで採取”の場合はステップS712は実行されず、“2:メモリDynamic Reconfiguration機能を用いて採取”の場合はステップS708は実行されない。
ステップS708において、ダンプ採取用ドメインによるカーネルのメモリダンプ生成処理が行われる。ステップS708は、図9BのステップS621の処理と同様であるため説明は省略する。
ステップS709において、PA-RAマッピング処理部368は、パニックしたドメイン201−1の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、OS401−1を再起動してもパニック時にOS401−1のカーネルが使用していたメモリ領域のデータは上書きされなくなる。
1)パニック発生時にカーネルが使用していたメモリの物理アドレスは、再起動するドメインのリアルアドレスに割り当てないようにする。かつ、
2)再起動前後で、該当ドメインが使用できるメモリサイズがなるべく変化しないようにする。
ただし、再起動するドメインに割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
ステップS710において、OS再起動命令部358は、ドメイン201−1にOS401−1の再起動を指示する。また、OS再起動命令部358は、カーネルダンプフラグが“2:メモリDynamic Reconfiguration機能を用いて採取”の場合、メモリDR機能を用いたケーネルのメモリダンプ生成処理を行う旨を再起動指示に含める。OS起動処理部409−1は、カーネルが使用していたメモリのダンプをディスク等に書き出すことなく、OS401−1を再起動する。
ステップS711において、OS401−1は、業務を再開する。
ステップS712において、カーネルのメモリダンプ生成処理が行われる。尚、ステップS712の処理は、上述のステップS625の処理と同様であるため説明は省略する。
第3の実施の形態に係るメモリダンプ生成処理によれば、エラーを検出してオペレーティングシステムを緊急停止(パニック)する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにオペレーティングシステムを再起動できる。これにより、業務停止時間を短縮することができる。
(第4の実施の形態)
第4の実施の形態では、OSでエラーが検出され、カーネルのメモリダンプが行われ、さらに稼動中のハイパーバイザのメモリダンプの採取(ハイパーバイザのライブダンプと呼ぶ)が行われる。
ここでは、OS401−1のカーネルのメモリダンプを生成する場合について説明する。
図18A、18Bは、第4の実施の形態に係るメモリダンプ生成処理のフローチャートである。
ステップS801〜ステップS811は、図17のステップS701〜S711とそれぞれ同様の処理であるため、説明は省略する。
以下、ステップS812とステップS813は並列に実行される。
ステップS812において、カーネルのメモリダンプ生成処理が行われる。尚、ステップS812の処理は、上述のステップS625の処理と同様であるため説明は省略する。
ステップS813において、稼動中のハイパーバイザ351のメモリダンプ生成処理が制御ドメイン204−1で行われる。
以下、稼動中のハイパーバイザ351のメモリダンプ生成処理の詳細について説明する。
図19は、稼動中のハイパーバイザのメモリダンプ生成処理のフローチャートである。
図19は、図18BのステップS813に対応する。
第4の実施の形態において、例えば、HVダンプフラグのデータ構造を0:採取せず、1:異常時のHVダンプ、2:HVライブダンプのように変更することができる。HVメモリダンプ判断部408−1は、HVダンプフラグが0または1の場合、HVのライブダンプを採取しないと判定し、HVダンプフラグが2の場合、HVのライブダンプを採取すると判定する。
ステップS831において、HVメモリダンプ判断部408−1は、ハイパーバイザ351にHVダンプフラグの送信を要求する。
ステップS832において、HVメモリダンプフラグ読出・送信部359は、要求を受信すると、HVダンプ対象領域情報/HVダンプフラグ格納領域356からHVダンプフラグを読み出し、OS401−1に送信する。
ステップS833において、HVメモリダンプ判断部408−1は、受信したHVダンプフラグに基づいて、稼動中のハイパーバイザ351のライブダンプを採取するか否か判定する。稼動中のハイパーバイザ351のライブダンプを採取すると判定された場合、制御はステップS834に進み、採取しないと判定された場合の場合、処理は終了する。
ステップS834において、HVダンプ対象領域読出処理部の呼び出し部410−1は、HVダンプ対象領域読出処理部360を呼び出す。
ステップS835において、HVダンプ対象領域読出処理部360は、現在、ハイパーバイザ351が使用しているメモリ領域を読み出し、読み出したメモリ内容を制御ドメイン204−1に送信する。
ステップS836において、HVダンプ採取処理部412−1は、メモリ内容を受信し、受信したメモリ内容をファイルに書き出してハイパーバイザのダンプファイルを生成する。
上記のように、稼動中のハイパーバイザのメモリダンプの生成処理では、ハイパーバイザを停止・再起動しないまま、ハイパーバイザが使用するメモリ領域のデータを読み出して、該データをハイパーバイザのダンプファイルとしてファイルに書き出している。
第4の実施の形態に係るメモリダンプ生成処理によれば、エラーを検出してオペレーティングシステムを再起動する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにオペレーティングシステムを再起動できる。これにより、業務停止時間を短縮することができる。
第4の実施の形態に係るメモリダンプ生成処理によれば、ハイパーバイザおよびカーネルのメモリダンプを採取することで、ハイパーバイザおよびドメインの両方に起因したエラーであっても、効果的にエラーの解析を行うことができる。
以上、複数の実施の形態を説明してきたが、実施の形態は装置および方法に限らず、プログラムとして構成することも出来るし、該プログラムを格納したコンピュータが読み取り可能な記録媒体として構成することも出来る。記録媒体としては、例えば、フレキシブルディスク(FD)、ハードディスクドライブ、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、DVD−RAM、磁気テープ、不揮発性のメモリーカード等が用いられる。
例えば、実施の形態のプログラムは、該プログラムを格納した記録媒体から読み出され、メモリ13、23や不揮発性メモリ14に格納される。CPU12、22は、メモリ13、23や不揮発性メモリ14からプログラムを読み出して実行することにより、上述した実施の形態の各種処理を実行する。
本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成を取ることができる。例えば、論理ドメインの数は4つの限られるものでなく、任意の数にすることができる。