(57)【要約】  オペレーティングシステムを実行する情報処理装置であって、前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止する停止処理部と、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当てるマッピング処理部と、前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動する再起動処理部と、前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すメモリダンプ処理部と、を備える情報処理装置。
2012090290.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する情報処理装置であって、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止する停止処理部と、
前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当てるマッピング処理部と、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動する再起動処理部と、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すメモリダンプ処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域を前記オペレーティングシステムに組み込むメモリ組み込み処理部をさらに備え、
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当てることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、前記オペレーティングシステムの停止前に前記ハイパーバイザが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項５】
オペレーティングシステムを実行する情報処理装置のメモリダンプ方法であって、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを特徴とするメモリダンプ方法。
【請求項６】
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域を前記オペレーティングシステムに組み込むことをさらに行い、
前記割当て処理において、停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当てることを特徴とする請求項５記載のメモリダンプ方法。
【請求項７】
前記割当て処理において、停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記ファイルに書き出す処理は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行することを特徴とする請求項５記載のメモリダンプ方法。
【請求項８】
前記割当て処理において、停止された前記オペレーティングシステムに対して、前記オペレーティングシステムの停止前に前記ハイパーバイザが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記ファイルに書き出す処理は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項５記載のメモリダンプ方法。
【請求項９】
オペレーティングシステムを実行する情報処理装置に、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを実行させるメモリダンププログラム。
【請求項１０】
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域を前記オペレーティングシステムに組み込むことをさらに行わせ、
前記割当て処理において、停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当てることを特徴とする請求項９記載のメモリダンププログラム。
【請求項１１】
前記割当て処理において、停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記ファイルに書き出す処理は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行することを特徴とする請求項９記載のメモリダンププログラム。
【請求項１２】
前記割当て処理において、停止された前記オペレーティングシステムに対して、前記オペレーティングシステムの停止前に前記ハイパーバイザが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記ファイルに書き出す処理は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項９記載のメモリダンププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラムに関する。
【背景技術】
【０００２】
近年、UNIX（登録商標）サーバ、IAサーバが基幹システムに導入されるようになり、UNIX（登録商標）サーバ、IAサーバの高可用性が重要視されている。一般的に、システムに致命的なエラーが発生した場合はシステムを緊急停止（パニック）させて、その原因を調査するためにメモリダンプをディスクに保存している。【０００３】
システムを停止している間は、システムを使用できないので、速やかにシステムを再起動することが重要な要件となる。【０００４】
しかし、近年では、実装メモリの容量がテラバイト（TB）オーダのサーバが登場し、このようなシステムでは、メモリダンプを採取するのに非常に時間がかかり、速やかにシステムを再起動することができなくなっている。【０００５】
また、メモリダンプをディスク上に保存せず、パニック時のメモリ内容を別のメモリ上に保存する方法や障害発生時のメモリ内容をダンプ格納領域に保存する際、メモリの一部を保存し、再起動後に保存していないメモリ内容をダンプファイルに変換する方法が知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−２１２８３６号公報
【特許文献２】特開２００１−２２９０５３号公報
【特許文献３】特開２００６−７２９３１号公報
【特許文献４】特開２００５−１２２３３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の方法では、異常発生時のメモリダンプを別のメモリやディスクに保存しているため、保存するメモリダンプのサイズが大きい場合は、メモリのコピーに時間がかかり、速やかにシステムを再起動することができないという問題があった。【０００８】
また、オペレーティングシステムが致命的なエラーを検出して、システムを緊急停止する場合、異常を検出したオペレーティングシステムがダンプを採取するため、ダンプ採取処理中に再度異常を検出して、ハングアップが発生するなどの二次被害が発生することがあるという問題があった。【０００９】
本発明の課題は、オペレーティングシステムを緊急停止後、オペレーティングシステムを速やかに再起動することである。
【課題を解決するための手段】
【００１０】
実施の形態の情報処理装置は、オペレーティングシステムを実行する情報処理装置であって、停止処理部と、マッピング処理部と、再起動処理部と、メモリダンプ処理部と、を備える。【００１１】
停止処理部は、前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止する。【００１２】
マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当てる。【００１３】
再起動処理部は、前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動する。【００１４】
メモリダンプ処理部は、前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出す。
【発明の効果】
【００１５】
実施の形態の装置によれば、オペレーティングシステムを緊急停止後、オペレーティングシステムを速やかに再起動することが出来る。
【図面の簡単な説明】
【００１６】
【図１】実施の形態に係るサーバおよびＯＳの構成図である。
【図２】第１の実施の形態に係るメモリダンプ生成処理を示す図である。
【図３】第２の実施の形態に係るメモリダンプ生成処理を示す図である。
【図４】第３の実施の形態に係るメモリダンプ生成処理を示す図である。
【図５】第４の実施の形態に係るメモリダンプ生成処理を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態を説明する。
図１は、実施の形態に係るサーバおよびＯＳの構成図である。
【００１８】
図１の実施の形態に係るサーバおよびＯＳの構成は、後述の第１〜４の実施の形態で共通に用いられる。
【００１９】
サーバ（情報処理装置）１０は、ドメイン１１−ｉ（ｉ＝１〜３）、ディスク１３−ｉ、記憶部１４を備える。
【００２０】
なお、以下の説明においてドメイン１１−１〜３をそれぞれドメイン１〜３と呼ぶ場合もある。
【００２１】
ドメイン１１−ｉは、Central Processing Unit（ＣＰＵ）１５−ｉ−ｋ（ｋ＝１、２）およびメモリ１２−ｉを備える。
【００２２】
ＣＰＵ１５−ｉ−ｋは、各種処理を実行する。
メモリ１２−ｉは、各種プログラムやデータをディスク１３−ｉから読み出し、格納する。
記憶部１４は、ファームウェア１５およびハイパーバイザ１６を格納している。記憶部１４は、例えばRandom Access Memory(RAM)やRead Only Memory(ROM)である。
【００２３】
ファームウェア１５は、メモリ初期化処理部１７およびダンプ対象領域情報格納領域１８を備える。
メモリ初期化処理部１７は、メモリ１２−iを初期化する。
【００２４】
ダンプ対象領域情報格納領域１８は、カーネルおよびハイパーバイザ１６が使用しているメモリ領域の情報、詳細にはメモリ領域の開始ブロックとサイズを格納している。
ハイパーバイザ１６は、サーバ１０にインストールされているオペレーティングシステム（ＯＳ）３１−ｉを制御する。
【００２５】
ハイパーバイザ１６は、メモリ管理部１９、PA/RAマッピング処理部２０、PA/RAマッピング情報格納域２１、ドメイン起動処理部２２、メモリダンプ採取処理起動部２３、ダンプ対象領域通知処理部２４、およびダンプ対象メモリ読み出し処理部２５を備える。
【００２６】
メモリ管理部１９は、メモリを管理する。
PA/RAマッピング処理部２０は、物理アドレス（ＰＡ）とリアルアドレス（ＲＡ）間のマッピングを行う。ＰＡはメモリの物理アドレスであり、ＲＡはドメイン（オペレーティングシステム）上の実アドレスである。
【００２７】
PA/RAマッピング情報格納域２１は、ＰＡとＲＡ間のマッピングの情報を格納する。
ドメイン起動処理部２２は、ドメイン１１を起動する。
メモリダンプ採取処理起動部２３は、メモリダンプ採取処理部４４を呼び出す。
【００２８】
ダンプ対象領域通知処理部２４は、パニック時のハイパーバイザ１６が使用していたメモリ領域の開始アドレスとサイズをファームウェア１５に通知する。
ダンプ対象メモリ読み出し処理部２５は、ダンプ対象のメモリ領域を読み出す。
【００２９】
図１の下部は、ＯＳ３１の機能ブロックである。
サーバ１０には、ＯＳ３１−ｉがインストールされている。
ＯＳ３１−ｉは、それぞれドメイン１１−ｉのオペレーティングシステムである。
【００３０】
ＯＳ３１−ｉは、メモリ管理部３２−ｉ、ファイル管理部３３−ｉ、プロセス管理部３４−ｉ、割り込み処理部３５−ｉ、マッピング情報抽出・格納処理部３６−ｉ、マッピング情報格納領域３７−ｉ、パニック処理部３８−ｉ、ダンプ対象領域通知処理部３９−ｉ、ドメイン起動処理部４０−ｉ、ダンプドメイン停止処理部４１−ｉ、ダンプ対象メモリ読み出し処理部４２−ｉ、メモリダンプ採取処理部４３−ｉ、空きメモリ追加処理部４４−ｉ、メモリDR組み込み処理部４５−ｉ、メモリＤＲ切り離し処理部４６−ｉ、およびダンプ対象メモリ読み出し処理起動部４７−ｉを備える。
【００３１】
図１においては、ＯＳ３１−ｉの構成は共通なため、ＯＳ３１−１のみ詳細な構成を記載し、ＯＳ３１−２、３１−３の構成は省略する。
メモリ管理部３２は、ＯＳ３１が使用するメモリ１２を割り当てる。
【００３２】
ファイル管理部３３−１は、ディスク上に格納されたデータであるファイルを管理する。
プロセス管理部３４−１は、ＯＳ３１−１が実行するプログラムのプロセスを管理する。
【００３３】
割り込み処理部３５−１は、割り込み処理を行う。
マッピング情報抽出・格納処理部３６−１は、メモリ１２のダンプを取得および解析するために必要な情報を、マッピング情報格納領域３７に書き込む。
【００３４】
マッピング情報抽出・格納処理部３６−１がマッピング情報格納領域３７に書き込む情報としては、カーネルのテキスト域、データ域、ヒープ域、スタック域等、各セグメントのマッピング情報(論理アドレス、物理アドレス、サイズ等)やアドレス変換テーブル、ページテーブル等、各種制御テーブルのマッピング情報がある。
【００３５】
パニック処理部３８は、ドメイン１１−１を緊急停止（パニック）させる。
ダンプ対象領域通知処理部３９−１は、緊急停止時にＯＳ３１−１のカーネルおよびハイパーバイザ１６が使用していたメモリ領域（ダンプ対象領域）の情報（開始アドレスとサイズの組み合わせ）をファームウェアに通知する。
【００３６】
ドメイン起動処理部４０−１は、オペレーティングシステム３１−１を起動する。
ダンプドメイン停止処理部４１−１は、ダンプを採取するドメインを停止する。
ダンプ対象メモリ読み出し処理部４２−１は、再起動前のカーネルまたはハイパーバイザが使用していたメモリ領域を読み出す。
【００３７】
メモリダンプ採取処理部４３−１は、カーネルが使用していたメモリ領域のデータを読み出して、ダンプファイルを作成する。
空きメモリ追加処理部４４−１は、メモリ管理部３２にダンプ済みのメモリ領域を通知する。
【００３８】
メモリＤＲ組み込み処理部４５−１は、ドメイン１１−１にメモリ領域を組み込む。
メモリＤＲ切り離し処理部４６−１は、ドメイン１１−１からメモリ領域を切り離す。
ダンプ対象メモリ読み出し処理起動部４７−１は、ダンプ対象メモリ読み出し処理部２５を起動する。
【００３９】
図２は、第１の実施の形態に係るメモリダンプ生成処理を示す図である。
第１の実施の形態では、オペレーティングシステム３１−１（ドメイン１１−１）でメモリダンプを採取する場合について説明する。
【００４０】
ステップＳ１０１において、メモリ管理部３２は、ＯＳ３１−１の起動時に、メモリ１２−１の一番小さい(または一番大きい)リアルアドレス(RA)からカーネルが使用するメモリを割り当てる。このように、なるべくカーネルが使用するメモリ領域(ダンプ対象領域)のサイズが小さくなるようにする。
【００４１】
ステップＳ１０２において、オペレーティングシステム３１−１が致命的なエラーを検出した場合、パニック処理部３８−１はオペレーティングシステム３１−１（ドメイン１１−１）を緊急停止(パニック)する。
【００４２】
ステップＳ１０３において、ダンプ対象領域通知処理部３９−１は、緊急停止(パニック)時にオペレーティングシステム３１−１のカーネルおよび／またはハイパーバイザ１６が使用していたメモリ領域(ダンプ対象領域)の情報(開始アドレスとサイズの組み合わせ)をファームウェア１５に通知する。カーネルおよび／またはハイパーバイザが使用していたメモリ領域が複数のブロックに分かれている場合は、全てのブロックの開始アドレスとサイズを通知する。ファームウェア１５は、ダンプ対象領域の情報をダンプ対象領域情報格納領域１８に格納する。
【００４３】
ステップＳ１０４において、メモリ初期化処理部１７は、緊急停止(パニック)時にカーネルおよび／またはハイパーバイザが使用していたメモリ領域（ダンプ対象領域）の初期化処理を実施しない(すなわち、データを更新しない)ようにする。すなわち、緊急停止(パニック)時にカーネルおよび／またはハイパーバイザが使用していたメモリ領域をそのままの状態で残しておく。
【００４４】
ステップＳ１０５において、PA/RAマッピング処理部２０は、パニックしたドメイン１１−１のメモリ１２−１の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、オペレーティングシステム３１−１を再起動してもパニック時のカーネルおよび／またはパニック時のハイパーバイザ１６が使用していたメモリ領域のデータは上書きされなくなる。
【００４５】
1)パニック発生時にカーネルおよび／またはハイパーバイザが使用していたメモリの物理アドレスは、再起動するドメイン（オペレーティングシステム）のリアルアドレスに割り当てないようにする。かつ、
【００４６】
2)再起動前後で、該当ドメイン（オペレーティングシステム）が使用できるメモリサイズがなるべく変化しないようにする。
【００４７】
ただし、再起動するドメイン（オペレーティングシステム）に割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
【００４８】
ステップＳ１０６において、ドメイン起動処理部４０−１は、カーネルおよび／またはハイパーバイザが使用していたメモリのダンプをディスク等に書き出すことなく、オペレーティングシステム３１−１を再起動する。
【００４９】
ステップＳ１０７において、オペレーティングシステム３１−１を再起動して業務を再開させた後、ダンプ対象メモリ読み出し処理部４２−１は、パニック時のカーネルおよび／またはパニック時のハイパーバイザ１４が使用していたメモリ領域（ダンプ対象領域）を読み出す。なお、ダンプ対象領域の情報（開始アドレスやサイズ等）は、ダンプ対象領域情報格納領域１８から読み出す、またはファームウェア１５やハイパーバイザ１６からの通知により得る。
【００５０】
ステップＳ１０８において、メモリダンプ採取処理部４３−１は、読み出したメモリ領域のデータをファイルに書き出してダンプファイルを生成する。
【００５１】
次に、ステップＳ１０９またはステップＳ１１０を実行する。
ステップＳ１０９において、ダンプファイルを生成した後、空きメモリ追加処理部４４−１は、パニック時のカーネルおよび／またはパニック時のハイパーバイザ１４が使用していたメモリ領域(すなわち、ダンプ済み領域)を使用可能な未使用のメモリ、すなわち空きメモリとするようにメモリ管理部３２−１へ通知する。メモリ管理部３２−１はダンプ済み領域を空きメモリとする。
【００５２】
ステップＳ１１０において、ハイパーバイザ１６のメモリ管理部１９は、パニック発生時のカーネルおよび／またはパニック発生時のハイパーバイザ１６が使用していたメモリ領域(ダンプ済み領域)を、他のドメイン１１−２、１１−３（オペレーティングシステム３１−２、３１−３）からも使用可能な空きメモリとする。
【００５３】
第１の実施の形態によれば、エラーを検出してドメイン（オペレーティングシステム）を緊急停止(パニック)する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにドメイン（オペレーティングシステム）を再起動できる。これにより、業務停止時間を短縮することができる。
【００５４】
次に、第２の実施の形態について説明する。
第２の実施の形態では、パニック発生後、ドメイン（オペレーティングシステム）を再起動して業務を再開させた後、メモリDynamic Reconfiguration（DR）機能を使用してパニック発生時にカーネルが使用していたメモリ領域を再起動したドメイン（オペレーティングシステム）に組み込んで、カーネルのメモリダンプを採取する。
【００５５】
図３は、第２の実施の形態に係るメモリダンプ生成処理を示す図である。
第２の実施の形態では、オペレーティングシステム３１−１（ドメイン１１−１）でメモリダンプを採取する場合について説明する。
【００５６】
ステップＳ２０１において、メモリ管理部３２は、ＯＳ３１−１の起動時に、メモリ１２−１の一番小さい(または一番大きい)リアルアドレス(RA)からカーネルが使用するメモリを割り当てる。このように、なるべくカーネルが使用するメモリ領域(ダンプ対象領域)のサイズが小さくなるようにする。
【００５７】
ステップＳ２０２において、マッピング情報抽出・格納処理部３６−１は、カーネルが使用しているメモリのダンプを採取／解析するために必要となる情報（例えば、カーネルのテキスト域、データ域、ヒープ域、スタック域など、各セグメントのマッピング情報(論理アドレス、物理アドレス、サイズ等)、アドレス変換テーブル、ページテーブル、各種制御テーブルのマッピング情報）を、メモリ上のマッピング情報格納領域３７−１に書き込む。
【００５８】
ステップＳ２０３において、オペレーティングシステム３１−１が致命的なエラーを検出した場合、パニック処理部３８−１はオペレーティングシステム３１−１（ドメイン１１−１）を緊急停止(パニック)する。
【００５９】
ステップＳ２０４において、ダンプ対象領域通知処理部３９−１は、緊急停止(パニック)時にオペレーティングシステム３１−１のカーネルが使用していたメモリ領域(ダンプ対象領域)の情報(開始アドレスとサイズの組み合わせ)をファームウェア１５に通知する。カーネルが使用していたメモリ領域が複数のブロックに分かれている場合は、全てのブロックの開始アドレスとサイズを通知する。ファームウェア１５は、ダンプ対象領域の情報をダンプ対象領域情報格納領域１８に格納する。
【００６０】
ステップＳ２０５において、メモリ初期化処理部１７は、緊急停止(パニック)時にカーネルが使用していたダンプ対象領域の初期化処理を実施しない(すなわち、データを更新しない)ようにする。すなわち、緊急停止(パニック)時にカーネルが使用していたメモリ領域をそのままの状態で残しておく。
【００６１】
ステップＳ２０６において、PA/RAマッピング処理部２０は、パニックしたドメイン１１−１のメモリ１２−１の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、オペレーティングシステム３１−１を再起動してもパニック時のカーネルが使用していたメモリ領域のデータは上書きされなくなる。
1)パニック発生時にカーネルが使用していたメモリの物理アドレスは、再起動するドメイン（オペレーティングシステム）のリアルアドレスに割り当てないようにする。かつ、
2)再起動前後で、該当ドメイン（オペレーティングシステム）が使用できるメモリサイズがなるべく変化しないようにする。
【００６２】
ただし、再起動するドメイン（オペレーティングシステム）に割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
ステップＳ２０７において、ドメイン起動処理部４０−１は、カーネルが使用していたメモリのダンプをディスク等に書き出すことなく、オペレーティングシステム３１−１を再起動する。
【００６３】
ステップＳ２０８において、オペレーティングシステム３１−１を再起動して業務を再開させた後、メモリDR組み込み処理部４５−１が、メモリのDynamic Reconfiguration機能を使用して、パニック発生時にカーネルが使用していたメモリ領域（ダンプ対象領域）をドメイン１１−１（オペレーティングシステム３１−１）に組み込む。なお、ダンプ対象領域の情報（開始アドレスやサイズ等）は、ダンプ対象領域情報格納領域１８から読み出す、またはファームウェア１５やハイパーバイザ１６からの通知により得る。
【００６４】
ステップＳ２０９において、メモリダンプ採取処理部４３−１は、組み込んだメモリ領域を読み出してダンプファイルを生成する。
【００６５】
次に、ステップＳ２１０またはステップＳ２１１〜Ｓ２１２を実行する。
ステップＳ２１０において、ダンプファイルを生成した後、空きメモリ追加処理部４４−１は、パニック時のカーネルが使用していたメモリ領域(すなわち、ダンプ済み領域)を使用可能な未使用のメモリ、すなわち空きメモリとするようにメモリ管理部３２−１へ通知する。メモリ管理部３２−１はダンプ済み領域を空きメモリとする。
【００６６】
ステップＳ２１１において、メモリDR切り離し処理部４６−１は、メモリのDynamic Reconfiguration機能を使用して、パニック発生時にカーネルが使用していたメモリ領域をドメイン１１−１（オペレーティングシステム３１−１）から切り離して、切り離した領域を空きメモリとするようにメモリ管理部１９へ通知する。
【００６７】
ステップＳ２１２において、ハイパーバイザ１６のメモリ管理部１９は、切り離した領域を他のドメイン１１−２、１１−３（オペレーティングシステム３１−２、３１−３）からも使用可能な空きメモリとする。
【００６８】
第２の実施の形態によれば、エラーを検出してドメイン（オペレーティングシステム）を緊急停止(パニック)する場合、メモリダンプのサイズが大きい場合でも別のメモリ等にコピーを行っていないので、速やかにドメイン（オペレーティングシステム）を再起動できる。これにより、業務停止時間を短縮することができる。
【００６９】
また、第２の実施の形態によれば、メモリDynamic Reconfiguration機能を使用してメモリダンプを採取する場合、異常を検出したオペレーティングシステムではなく、再起動後の新しいオペレーティングシステムがダンプを採取するため、ダンプ採取処理中に再度異常を検出してハングアップする等の二次被害が発生する可能性が低くなる。
【００７０】
次に、第３の実施の形態について説明する。
第３の実施の形態では、パニック発生後、ドメイン（オペレーティングシステム）を再起動して業務を再開させた後、パニック発生時にカーネルが使用していたメモリ領域を、パニックしたドメイン（オペレーティングシステム）とは異なるドメイン（オペレーティングシステム）（ダンプ採取用ドメインまたはダンプ採取用オペレーティングシステムと呼ぶ）に割り当て、ダンプ採取用ドメイン（ダンプ採取用オペレーティングシステム）でパニック時にカーネルが使用していたメモリを読み出してダンプファイルを生成する。
【００７１】
以下の説明では、パニックが発生したドメイン（オペレーティングシステム）をドメイン１１−１（オペレーティングシステム３１−１）、ダンプ採取ドメイン（ダンプ採取用オペレーティングシステム）をドメイン１１−２（オペレーティングシステム３１−２）とする。
【００７２】
図４は、第３の実施の形態に係るメモリダンプ生成処理を示す図である。
ステップＳ３０１において、メモリ管理部３２は、ＯＳ３１−１の起動時に、メモリ１２−１の一番小さい(または一番大きい)リアルアドレス(RA)からカーネルが使用するメモリを割り当てる。このように、なるべくカーネルが使用するメモリ領域(ダンプ対象領域)のサイズが小さくなるようにする。
【００７３】
ステップＳ３０２において、オペレーティングシステム３１−１が致命的なエラーを検出した場合、パニック処理部３８−１はドメイン３１−１を緊急停止(パニック)する。
【００７４】
ステップＳ３０３において、ダンプ対象領域通知処理部３９−１は、緊急停止(パニック)時にオペレーティングシステム３１−１のカーネルが使用していたメモリ領域(ダンプ対象領域)の情報(開始アドレスとサイズの組み合わせ)をファームウェア１５に通知する。カーネルが使用していたメモリ領域が複数のブロックに分かれている場合は、全てのブロックの開始アドレスとサイズを通知する。ファームウェア１５は、ダンプ対象領域の情報をダンプ対象領域情報格納領域１８に格納する。
【００７５】
ステップＳ３０４において、メモリ初期化処理部１７は、緊急停止(パニック)時にカーネルが使用していたダンプ対象領域の初期化処理を実施しない(すなわち、データを更新しない)ようにする。すなわち、緊急停止(パニック)時にカーネルが使用していたメモリ領域をそのままの状態で残しておく。
【００７６】
ステップＳ３０５において、PA/RAマッピング処理部２０は、パニックしたドメイン１１−１のメモリ１２−１の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、オペレーティングシステム３１−１を再起動してもパニック時のカーネルが使用していたメモリ領域のデータは上書きされなくなる。
1)パニック発生時にカーネルが使用していたメモリの物理アドレスは、再起動するドメイン（オペレーティングシステム）のリアルアドレスに割り当てないようにする。かつ、
2)再起動前後で、該当ドメイン（オペレーティングシステム）が使用できるメモリサイズがなるべく変化しないようにする。
【００７７】
ただし、再起動するドメイン（オペレーティングシステム）に割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
【００７８】
ハイパーバイザのPA/RAマッピング処理部２０が、パニック発生時に旧カーネルが使用していた物理メモリ領域を、パニックしたドメインとは異なる別のダンプ採取用ドメインに割り当てる。パニックしたドメインの旧カーネルが使用していた物理メモリ領域は、メモリダンプを採取するドメインでも、パニックしたドメインと同じリアルアドレスにハイパーバイザのマッピング変更部がマップする。(パニックしたドメインとメモリダンプを採取するドメインとで、物理アドレスとリアルアドレスのマッピングが同じになるようにする。
【００７９】
ステップＳ３０６において、ドメイン起動処理部４０−１は、カーネルが使用していたメモリのダンプをディスク等に書き出すことなく、オペレーティングシステム３１−１を再起動する。
【００８０】
ステップＳ３０７において、ダンプドメイン起動処理部２２は、ダンプ採取用ドメイン３１−２のファームウェアを起動する。なお、オペレーティングシステムを起動すると、カーネルの初期化処理などで、パニックしたオペレーティングシステム３１−１のパニック時にカーネルが使用していたメモリ領域の内容を上書きしてしまうことになるため、オペレーティングシステム３１−２は起動しない。
【００８１】
ステップＳ３０８において、メモリダンプ採取処理起動部２３は、ダンプ採取用ドメイン１１−２のオペレーティングシステム３１−２のメモリダンプ採取処理部４３−２を呼び出す。
【００８２】
ステップＳ３０９において、ダンプ採取用ドメイン１１−２のオペレーティングシステム３１−２のメモリダンプ採取処理部４３−２は、パニック発生時にオペレーティングシステム３１−１のカーネルが使用していたメモリ領域（ダンプ対象領域）を読み出してダンプファイルを生成する。なお、ダンプ対象領域の情報（開始アドレスやサイズ等）は、ダンプ対象領域情報格納領域１８から読み出す、またはファームウェア１５やハイパーバイザ１６からの通知により得る。
【００８３】
ステップＳ３１０において、オペレーティングシステム３１−２のドメイン停止処理部４１−２は、ダンプ採取ドメイン１１−２を停止する。そして、ドメイン停止処理部４１−２は、パニック時にオペレーティングシステム３１−１のカーネルが使用していたメモリ(すなわち、ダンプ済み領域)を使用可能な未使用のメモリ、すなわち空きメモリとするようにハイパーバイザ１６のメモリ管理部１９へ通知する。
【００８４】
ステップＳ３１１において、ハイパーバイザ１６のメモリ管理部１９は、パニック発生時にカーネルが使用していたメモリ領域(ダンプ済み領域)を、他のドメイン１１−２、１１−３（オペレーティングシステム３１−２、３１−３）からも使用可能な空きメモリとする。
【００８５】
第３の実施の形態によれば、ダンプ採取用ドメインでダンプを採取する場合、異常を検出したドメインではなく、別のドメインでダンプを採取するため、ダンプ採取処理中に再度異常を検出してハングアップする等の二次被害が発生する可能性が低くなる。
【００８６】
第３の実施の形態によれば、Capacity on Demand (CoD)のような、ユーザが使用したハードウェア資源(CPU、メモリ、ディスク等)の量や時間に応じて課金を行うシステムにおいて、ダンプ採取用ドメインでダンプを採取する場合は、ダンプ採取のために使用するハードウェア資源に対する課金を行わないようにすることが容易に実現でき、料金の適正化を図ることができる。
【００８７】
次に、第４の実施の形態について説明する。
第４の実施の形態では、パニック発生後、ドメイン（オペレーティングシステム）を再起動して業務を再開させた後、ダンプ採取用ドメイン(ダンプ採取用オペレーティングシステム）でパニック発生時にハイパーバイザが使用していたメモリ領域を読み出して、ハイパーバイザのメモリダンプファイルを生成する。
【００８８】
以下の説明では、パニックが発生したドメイン（オペレーティングシステム）をドメイン１１−１（オペレーティングシステム３１−１）、ダンプ採取ドメイン（ダンプ採取用オペレーティングシステム）をドメイン１１−２（オペレーティングシステム３１−２）とする。
【００８９】
図５は、第４の実施の形態に係るメモリダンプ生成処理を示す図である。
ステップＳ４０１において、メモリ管理部３２は、ＯＳ３１−１の起動時に、メモリ１２−１の一番小さい(または一番大きい)リアルアドレス(RA)からカーネルが使用するメモリを割り当てる。このように、なるべくカーネルが使用するメモリ領域(ダンプ対象領域)のサイズが小さくなるようにする。
【００９０】
ステップＳ４０２において、オペレーティングシステム３１−１が致命的なエラーを検出した場合、パニック処理部３８−１はドメイン３１−１を緊急停止(パニック)する。
【００９１】
ステップＳ４０３において、ダンプ対象領域通知処理部２４は、緊急停止(パニック)時にハイパーバイザ１６が使用していたメモリ領域(ダンプ対象領域)の情報(開始アドレスとサイズの組み合わせ)をファームウェア１５に通知する。ハイパーバイザ１６が使用していたメモリ領域が複数のブロックに分かれている場合は、全てのブロックの開始アドレスとサイズを通知する。ファームウェア１５は、ダンプ対象領域の情報をダンプ対象領域情報格納領域１８に格納する。
【００９２】
ステップＳ４０４において、メモリ初期化処理部１７は、緊急停止(パニック)時にハイパーバイザ１６が使用していたダンプ対象領域の初期化処理を実施しない(すなわち、データを更新しない)ようにする。すなわち、緊急停止(パニック)時にハイパーバイザ１６が使用していたメモリ領域をそのままの状態で残しておく。
【００９３】
ステップＳ４０５において、PA/RAマッピング処理部２０は、パニックしたドメイン１１−１のメモリ１２−１の物理アドレス(PA)とリアルアドレス(RA)間のマッピングを以下の1)、2)のように変更する。それにより、オペレーティングシステム３１−１を再起動してもパニック時のハイパーバイザ１６が使用していたメモリ領域のデータは上書きされなくなる。
【００９４】
1)パニック発生時にハイパーバイザが使用していたメモリの物理アドレスは、再起動するドメイン（オペレーティングシステム）のリアルアドレスに割り当てないようにする。かつ、
【００９５】
2)再起動前後で、該当ドメイン（オペレーティングシステム）が使用できるメモリサイズがなるべく変化しないようにする。
【００９６】
ただし、再起動するドメイン（オペレーティングシステム）に割り当て可能な物理メモリが所定値より不足する場合は、1)を優先する。
ステップＳ４０６において、ドメイン起動処理部４０−１は、ハイパーバイザ１６が使用していたメモリのダンプをディスク等に書き出すことなく、オペレーティングシステム３１−１を再起動する。
【００９７】
ステップＳ４０７において、オペレーティングシステム３１−１が再起動された後、オペレーティングシステム３１−２のダンプ対象メモリ読み出し処理起動部４７−２は、ハイパーバイザ１６のダンプ対象メモリ読み出し処理部２５を呼び出す。
【００９８】
ステップＳ４０８において、ダンプ対象メモリ読み出し処理部２５は、パニック時にハイパーバイザ１６が使用していたメモリ領域（ダンプ対象領域）を読み出し、該メモリ領域のデータをオペレーティングシステム３１−２に出力する。なお、ダンプ対象領域の情報（開始アドレスやサイズ等）は、ダンプ対象領域情報格納領域１８から読み出すことにより得る。
【００９９】
ステップＳ４０９において、メモリダンプ採取処理部４３−２は、ダンプ対象メモリ読み出し処理部２５が読み出したメモリ領域のデータをファイルに書き出してダンプファイルを生成する。
【０１００】
ステップＳ４１０において、ハイパーバイザ１６のメモリ管理部１９は、パニック発生時にハイパーバイザ１６が使用していたメモリ領域(ダンプ済み領域)を、他のドメイン１１−２、１１−３（オペレーティングシステム３１−２、３１−３）からも使用可能な空きメモリとする。
【０１０１】
第４の実施の形態によれば、ダンプ採取用ドメインでダンプを採取する場合、異常を検出したドメインではなく、別のドメインでダンプを採取するため、ダンプ採取処理中に再度異常を検出してハングアップする等の二次被害が発生する可能性が低くなる。
【０１０２】
第４の実施の形態によれば、Capacity on Demand (CoD)のような、ユーザが使用したハードウェア資源(CPU、メモリ、ディスク等)の量や時間に応じて課金を行うシステムにおいて、ダンプ採取用ドメインでダンプを採取する場合は、ダンプ採取のために使用するハードウェア資源に対する課金を行わないようにすることが容易に実現でき、料金の適正化を図ることができる。
【０１０３】
以上、複数の実施の形態を説明してきたが、実施の形態は装置および方法に限らず、プログラムとして構成することも出来るし、該プログラムを格納したコンピュータが読み取り可能な記録媒体として構成することも出来る。記録媒体としては、例えば、フレキシブルディスク（ＦＤ）、ハードディスクドライブ、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、磁気テープ、不揮発性のメモリーカード等が用いられる。
【０１０４】
例えば、実施の形態のプログラムは、該プログラムを格納した記録媒体から読み出され、メモリ１２や記憶部１４に格納される。ＣＰＵ１５は、メモリ１２や記憶部１４からプログラムを読み出して実行することにより、上述した実施の形態の各種処理を実行する。
【図１】
2012090290.tif 000003
【図２】
2012090290.tif 000004
【図３】
2012090290.tif 000005
【図４】
2012090290.tif 000006
【図５】
2012090290.tif 000007
【手続補正書】
【提出日】平成25年7月4日(2013.7.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する情報処理装置であって、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止する停止処理部と、
前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当てるマッピング処理部と、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動する再起動処理部と、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すメモリダンプ処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域を前記オペレーティングシステムに組み込むメモリ組み込み処理部をさらに備え、
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当てることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、前記オペレーティングシステムの停止前に前記ハイパーバイザが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項５】
オペレーティングシステムを実行する情報処理装置のメモリダンプ方法であって、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを特徴とするメモリダンプ方法。
【請求項６】
オペレーティングシステムを実行する情報処理装置に、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを実行させるメモリダンププログラム。
【手続補正書】
【提出日】平成26年1月14日(2014.1.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する情報処理装置であって、
メモリの一番小さいまたは一番大きいリアルアドレスから前記オペレーティングシステムのカーネルが使用するメモリを割り当てるメモリ管理部と、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止する停止処理部と、
前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当てるマッピング処理部と、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動する再起動処理部と、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すメモリダンプ処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域を前記オペレーティングシステムに組み込むメモリ組み込み処理部をさらに備え、
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当てることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記マッピング処理部は、前記停止処理部により停止された前記オペレーティングシステムに対して、前記オペレーティングシステムの停止前に前記ハイパーバイザが使用していた前記第１のメモリ領域以外の前記第２のメモリ領域を前記オペレーティングシステムに割当て、
前記メモリダンプ処理部は、再起動した前記オペレーティングシステムとは異なる他のオペレーティングシステムで実行されることを特徴とする請求項１記載の情報処理装置。
【請求項５】
オペレーティングシステムを実行する情報処理装置のメモリダンプ方法であって、
メモリの一番小さいまたは一番大きいリアルアドレスから前記オペレーティングシステムのカーネルが使用するメモリを割り当て、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを特徴とするメモリダンプ方法。
【請求項６】
オペレーティングシステムを実行する情報処理装置に、
メモリの一番小さいまたは一番大きいリアルアドレスから前記オペレーティングシステムのカーネルが使用するメモリを割り当て、
前記オペレーティングシステムがエラーを検出した場合に、前記オペレーティングシステムを停止し、
停止された前記オペレーティングシステムに対して、停止前の前記オペレーティングシステムのカーネルまたは前記オペレーティングシステムの停止前に前記オペレーティングシステムを制御するハイパーバイザが使用していた第１のメモリ領域以外の第２のメモリ領域を前記オペレーティングシステムに割当て、
前記第２のメモリ領域を使用領域として、前記オペレーティングシステムを再起動し、
前記オペレーティングシステムを再起動した後、前記第１のメモリ領域のデータを読み出して、該データをダンプファイルに書き出すことを実行させるメモリダンププログラム
【国際調査報告】
2012090290.tif 000008
2012090290.tif 000009