(57)【要約】  オペレーティングシステムを実行する処理部と、前記処理部が直接アクセス可能且つコントローラを有する不揮発性主記憶装置と、前記処理部が直接アクセス可能でない外部記憶装置と、を備え、前記処理部が前記オペレーティングシステムのエラーを検出したとき、前記処理部は、前記不揮発性主記憶装置以外をリセットして、前記オペレーティングシステムを再起動し、前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込むことを特徴とする情報処理装置。
2015015589.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する処理部と、
前記処理部が直接アクセス可能且つコントローラを有する不揮発性主記憶装置と、
前記処理部が直接アクセス可能でない外部記憶装置と、
を備え、
前記処理部が前記オペレーティングシステムのエラーを検出したとき、
前記処理部は、前記不揮発性主記憶装置以外をリセットして、前記オペレーティングシステムを再起動し、
前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込むことを特徴とする情報処理装置。
【請求項２】
前記不揮発性主記憶装置は、複数の不揮発性主記憶装置であり、
前記複数の不揮発性主記憶装置の各不揮発性主記憶装置の優先度が記載された設定情報を格納する情報格納部をさらに備え、
前記処理部は、前記設定情報を参照し、前記優先度の高い順に、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む処理を前記コントローラに実行させることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記コントローラは、
前記オペレーティングシステムから前記不揮発性主記憶装置へ書き込む第１のデータを受信し、
前記第１のデータが書き込まれる領域に存在する第２のデータが前記外部記憶装置に書き込まれていない場合、前記第２のデータを前記外部記憶装置に書き込み、
前記第２のデータを前記外部記憶装置に書き込み後、前記第１のデータを前記不揮発性主記憶装置へ書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記不揮発性主記憶装置は、外部から見たアドレスに対して未割り当ての領域を有し、
前記コントローラは、
前記オペレーティングシステムから前記不揮発性主記憶装置へ書き込む第１のデータを受信し、
前記第１のデータが書き込まれる第１の領域に存在する第２のデータが前記外部記憶装置に書き込まれていない場合、
前記第１の領域に割り当てられている外部から見たアドレスを無効にし、
前記未割り当ての領域に前記第１の領域に割り当てられていた外部から見たアドレスを割り当て、
前記第１の領域に割り当てられていた外部から見たアドレスを割り当てた前記未割り当ての領域へ前記第１のデータを書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記コントローラは、
前記不揮発性主記憶装置の複数の領域の各データが前記不揮発性主記憶装置へ書き込み済みであるかを示すフラグが記載された管理テーブルを有し、
前記オペレーティングシステムの動作時に、前記管理テーブルを参照し、前記外部記憶装置へ書き込んでいない未書込みデータを検出し、
該未書込みのデータを前記外部記憶装置へ書き込み、
書き込んだデータに対応するフラグを、前記外部記憶装置に書き込み済みであることを示すように設定することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記処理部が前記オペレーティングシステムのエラーを検出したとき、
前記コントローラは、前記管理テーブルを参照し、前記フラグに基づいて、前記外部記憶装置へ書き込んでいない前記不揮発性主記憶装置のデータのみを前記外部記憶装置へ書き込むことを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記情報処理装置は、前記不揮発性主記憶装置がダンプ対象であるか否かを示す設定情報を格納する情報格納部をさらに備え、
前記不揮発性主記憶装置は、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む処理を実行するか否かを示すダンプフラグを格納する主記憶装置情報格納部をさらに備え、
前記処理部は、前記設定情報に基づいて、ダンプ対象である前記不揮発性主記憶装置の前記ダンプフラグを有効に設定し、
前記コントローラは、前記ダンプフラグが有効の場合に、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記処理部が直接アクセス可能な揮発性主記憶装置をさらに備え、
前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む前に、前記揮発性主記憶装置のデータを前記不揮発性主記憶装置に書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項９】
オペレーティングシステムを実行する処理部と、前記処理部が直接アクセス可能な不揮発性主記憶装置と、前記処理部が直接アクセス可能でない外部記憶装置と、を備える情報処理装置が実行するメモリダンプ方法であって、
前記オペレーティングシステムのエラーを検出し、
前記不揮発性主記憶装置以外をリセットし、
前記オペレーティングシステムを再起動し、
前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む
処理を備えるメモリダンプ方法。
【請求項１０】
オペレーティングシステムを実行する処理部と、前記処理部が直接アクセス可能な不揮発性主記憶装置と、前記処理部が直接アクセス可能でない外部記憶装置と、を備えるコンピュータに、
前記オペレーティングシステムのエラーを検出し、
前記不揮発性主記憶装置以外をリセットし、
前記オペレーティングシステムを再起動し、
前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む
処理を実行させるメモリダンププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリダンプ方法、およびメモリダンププログラムに関する。
【背景技術】
【０００２】
近年、UNIX（登録商標）サーバ、IAサーバが基幹システムに導入されるようになり、UNIX（登録商標）サーバ、IAサーバの高可用性が重要視されている。一般的に、システムに致命的なエラー（クラッシュ事象）が発生した場合はシステムを緊急停止（パニック）させて、その原因を調査するためにメモリダンプをディスクに保存している。【０００３】
システムを停止している間は、システムを使用できないので、速やかにシステムを再起動して業務停止時間を短縮することが重要な要件となる。【０００４】
しかし、近年では、実装メモリの容量がテラバイト（TB）オーダのサーバが登場し、このようなシステムでは、メモリダンプを採取するのに非常に時間がかかり、速やかにシステムを再起動することができなくなっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１０２３９５号公報
【特許文献２】特開平４−１８２７４８号公報
【特許文献３】特開平１０−３３３９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、メモリダンプ処理による業務停止時間を短縮することである。
【課題を解決するための手段】
【０００７】
実施の形態の情報処理装置は、処理部と、不揮発性主記憶装置と、外部記憶装置と、を備える。【０００８】
前記処理部は、オペレーティングシステムを実行する。
前記不揮発性主記憶装置は、前記処理部が直接アクセス可能且つコントローラを有する。
前記外部記憶装置は、前記処理部が直接アクセス可能でない。【０００９】
前記処理部は、前記オペレーティングシステムのエラーを検出したとき、前記不揮発性主記憶装置以外をリセットして、前記オペレーティングシステムを再起動する。【００１０】
前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む。
【発明の効果】
【００１１】
実施の形態の情報処理装置によれば、メモリダンプ処理による業務停止時間を短縮することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る情報処理装置の構成図である。
【図２】ＢＩＯＳ設定情報の例を示す図である。
【図３】第１の実施の形態に係る不揮発性主記憶装置の構成および接続バスを示す図である。
【図４】記憶素子管理テーブルの例を示す図である。
【図５】ＥＥＰＲＯＭに記録されている情報を示す図である。
【図６】第１の実施の形態に係るメモリダンプ処理のフローチャートである。
【図７】第１の実施の形態に係るＢＧダンプ処理の詳細なフローチャートである。
【図８】第１の実施の形態に係る割り込みダンプ処理の詳細なフローチャートである。
【図９】第１の実施の形態に係る割り込みダンプ処理を示す図である。
【図１０】優先度による段階的なメモリダンプを示す図である。
【図１１】第１の実施の形態に係るクラッシュ事象発生直前およびＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す図である。
【図１２】第２の実施の形態に係る不揮発性主記憶装置の状態を示す図である。
【図１３】拡張記憶素子管理テーブルの例である。
【図１４】第２の実施の形態に係る割り込みダンプ処理の詳細なフローチャートである。
【図１５】割り当て変更前と割り当て変更後の拡張記憶素子管理テーブルを示す図である。
【図１６】第３の実施の形態に係るクラッシュ事象発生直前およびＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す図である。
【図１７】記憶素子管理テーブルのフラグの状態遷移図である。
【図１８Ａ】第４の実施の形態に係るメモリダンプ処理のフローチャートである。
【図１８Ｂ】第４の実施の形態に係るメモリダンプ処理のフローチャートである。
【図１９】第４の実施の形態に係る各処理時のデータの位置を示す図である。
【図２０】コンピュータシステムの構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら実施の形態について説明する。
図１は、第１の実施の形態に係る情報処理装置の構成図である。
【００１４】
情報処理装置１０１は、例えば、パーソナルコンピュータ（ＰＣ）やサーバ等のコンピュータである。
【００１５】
情報処理装置１０１は、Central Processing Unit（ＣＰＵ）１１１、揮発性主記憶装置１２１−ｉ（ｉ＝１〜３）、不揮発性主記憶装置１３１−ｉ、外部記憶装置コントローラ１５１、外部記憶装置１６１、Basic Input/Output System（ＢＩＯＳ）格納域１７１、およびその他入出力装置１８１を備える。
【００１６】
ＣＰＵ１１１は、各種処理を実行するプロセッサ（処理部）である。
ＣＰＵ１１１は、ＢＩＯＳ格納域１７１に格納されているＢＩＯＳ１７２を読み出して実行する。また、ＣＰＵ１１１は、揮発性主記憶装置１２１または不揮発性主記憶装置１４１に格納されているプログラムを読み出して実行する。
【００１７】
情報処理装置１０１には、Operating System（ＯＳ）がインストールされており、ＣＰＵ１１１は、外部記憶装置１６１からＯＳを揮発性主記憶装置１２１および／または不揮発性主記憶装置１４１に読み出して実行する。
【００１８】
ＣＰＵ１１１は、メモリコントローラ１１２およびＩ／Ｏコントローラ１１３を有する。
【００１９】
メモリコントローラ１１２は、揮発性主記憶装置１２１および不揮発性主記憶装置１３１に対する読み書きの制御を行う。メモリコントローラ１１２は、メモリバス１９１を介して揮発性主記憶装置１２１および不揮発性主記憶装置１３１と接続している。揮発性主記憶装置１２１および不揮発性主記憶装置１３１のデータは、メモリバス１９２を介して送信される。
【００２０】
また、メモリコントローラ１１２は、Inter-Integrated Circuit（Ｉ２Ｃ）バス１９２を介して揮発性主記憶装置１２１および不揮発性主記憶装置１３１と接続している。メモリコントローラ１１２は、Ｉ２Ｃのマスタコントローラを兼ねている。
【００２１】
Ｉ／Ｏコントローラ１１３は、入出力装置の制御を行う。Ｉ／Ｏコントローラ１１３は、Peripheral Component Interconnect（ＰＣＩ）バス１９３を介して、ＢＩＯＳ格納域１７１、外部記憶装置コントローラ１５１、およびその他入出力装置１８１と接続している。
【００２２】
揮発性主記憶装置１２１は、揮発性の記憶素子を用いたデータを格納する記憶装置である。揮発性主記憶装置１２１は、例えば、Dynamic Random Access Memory（DRAM）である。
揮発性主記憶装置１２１は、ＣＰＵ１１１から直接アクセス可能である。
【００２３】
不揮発性主記憶装置１３１は、不揮発性の記憶素子を用いたデータを格納する記憶装置である。不揮発性主記憶装置１３１は、例えば、NAND型フラッシュメモリやMagnetoresistive Random Access Memory（MRAM）等である。
【００２４】
不揮発性主記憶装置１３１は、電力が供給されない場合でも、データを保持することができる。
不揮発性主記憶装置１３１は、ＣＰＵ１１１から直接アクセス可能である。
【００２５】
外部記憶装置コントローラ１５１は、外部記憶装置１６１を制御する。外部記憶装置コントローラ１５１は、Ｉ／Ｏコントローラ１１３、外部記憶装置１６１、およびNonVolatile Memory（ＮＶＭ）コントローラ２０１と接続している。
【００２６】
外部記憶装置１６１は、データを格納する不揮発性の記憶装置である。
外部記憶装置１６１は、ＣＰＵ１１１から直接アクセスできない。よって、ＣＰＵ１１１が外部記憶装置１６１のデータを読み出す場合、該データは、揮発性主記憶装置１２１または不揮発性主記憶装置１３１に転送され、揮発性主記憶装置１２１または不揮発性主記憶装置１３１から読み出される。
【００２７】
外部記憶装置１６１は、例えば、ハードディスクドライブ、Solid State Drive （SSD）、または磁気テープ装置等である。外部記憶装置１６１は、揮発性主記憶装置１２１および不揮発性主記憶装置１３１よりもアクセス速度が遅い。
【００２８】
外部記憶装置１６１は、補助記憶装置または二次記憶装置とも呼ばれる。
ＢＩＯＳ格納域１７１は、BIOS Flash Firmware（以下、ＢＩＯＳと表記する）１７２およびＢＩＯＳ設定情報１７３を格納する。ＢＩＯＳ格納域１７１は、例えば、不揮発性のメモリである。
【００２９】
ＢＩＯＳ１７２は、ハードウェアの初期化やブートローダーの起動等を行うプログラムである。また、ＢＩＯＳ１７２は、ダンプ処理やＮＶＭコントローラの設定等を行う。
【００３０】
ＢＩＯＳ１７２は、例えば、Unified Extensible Firmware Interface（ＵＥＦＩ）や拡張ファームウェア等である。
【００３１】
ＢＩＯＳ１７２は、ＣＰＵ１１１により読み出されて実行される。
ＢＩＯＳ設定情報１７３は、メモリダンプ処理時に使用する設定値やメモリスロットに搭載される主記憶装置（揮発性主記憶装置１２１および不揮発性主記憶装置１３１）の特性などが記載される情報である。
【００３２】
尚、ＢＩＯＳ設定情報１７３の詳細については後述する。
その他入出力装置１８１は、データの入力および／または出力を行う装置である。その他入出力装置１８１は、例えば、Universal Serial Bus（ＵＳＢ）デバイスやPeripheral Component Interconnect（ＰＣＩ）カード等である。
【００３３】
図２は、ＢＩＯＳ設定情報の例を示す図である。
ＢＩＯＳ設定情報１７３は、Element、Attribute1、Attribute2、およびValueが対応付けられて記載されている。
【００３４】
Elementは、対象の装置や設定項目を示す。図２において、Elementとして、ダンプ先外部記憶装置、メモリ手動交換、メモリスロット１〜６が記載されている。
【００３５】
Attribute1およびAttribute2は、装置の特性を示す。図２において、ダンプ先外部記憶装置のAttribute1として、「共有」が記載されている。これは、外部記憶装置が複数の主記憶装置のダンプ先として設定されていることを示す。
【００３６】
また、図２において、メモリスロット１〜３のAttribute1として「揮発性」、メモリスロット４〜６のAttribute1として「不揮発性」が記述されている。これは、メモリスロット１〜３に搭載されている主記憶装置が揮発性、メモリスロット４〜６に搭載されている主記憶装置が不揮発性であることを示す。
【００３７】
また、図２において、メモリスロット４のAttribute2として「Block（対象外）」、モリスロット５、６のAttribute2として「Byte（対象）」が記述されている。これは、メモリスロット４に搭載されている主記憶装置に対してブロックアクセスを行い、ダンプ対象でないことを示し、メモリスロット５、６に搭載されている主記憶装置に対してバイトアクセスを行い、ダンプ対象であることを示す。
【００３８】
不揮発性主記憶装置１３１へのアクセス方法は以下２種類ある。
（１）ブロックアクセス：ＯＳからブロックストレージデバイスとして見える
（２）バイトアクセス：ＯＳから物理メモリ空間として見える
【００３９】
Valueは、設定されている値である。
図２において、メモリ手動交換のValueとして、Ｎが記載されている。これは、不揮発性主記憶装置１３１の手動交換を行わないことを示す。尚、Ｙが記載されている場合は、不揮発性主記憶装置１３１の手動交換を行うことを示す。尚、「メモリ手動交換」は、後述の第４の実施の形態で利用される。
【００４０】
図２において、ダンプ先外部記憶装置のValueとして、Ctrl=0, Device=2が記載されている。Ctrl=0, Device=2は、ダンプ先の外部記憶装置１６１を識別する情報である。
【００４１】
また、図２において、メモリスロット５のValueとして「Pri=High」、メモリスロット６のValueとして「Pri=Low」が記載されている。「Pri」は優先度を示し、メモリスロット５に搭載されている主記憶装置の優先度がHigh、メモリスロット６に搭載されている主記憶装置の優先度がLowであることを示している。
【００４２】
図３は、第１の実施の形態に係る不揮発性主記憶装置の構成および接続バスを示す図である。
【００４３】
不揮発性主記憶装置１３１−１は、ＮＶＭコントローラ２０１−１、Electrically Erasable Programmable Read-Only Memory（EEPROM）２１１、外部記憶装置コントローラ２３１、コネクタ２４１、および記憶素子２５１−ｋ（ｋ＝１〜８）
【００４４】
ＮＶＭコントローラ２０１−１は、バッファ２０２、記憶素子管理テーブル２０３、および制御ファームウェア２０４を備える。
【００４５】
ＮＶＭコントローラ２０１−１はＯＳの動作とは無関係に、ダンプ対象のデータを能動的に外部記憶装置１６１にコピーする。コピーはＯＳからのアクセス同様、最小アクセス単位はページだが、外部記憶装置１６１とのプロトコルが一度の転送命令で送信可能なデータ長の範囲で、複数のページが一括して送信されることで効率化を図る。
【００４６】
バッファ２０２は、記憶素子２５１に書き込むデータまたは記憶素子２５１から読み出したデータを一時的に格納する記憶装置である。
【００４７】
記憶素子管理テーブル２０３は、不揮発性主記憶装置１３１−１の各ページの状態が記載されたテーブルである。
尚、記憶素子管理テーブル２０３の詳細については後述する。
【００４８】
実施の形態の情報処理装置１０１では、仮想記憶方式によりＯＳが主記憶領域を「ページ」と呼ばれる構造体の単位で分割し、それらを管理するための構造として「ページテーブル」が存在するものとする。ＯＳのページテーブルはメモリ空間全体でひとつ保持され、主記憶領域の一部を利用して格納されるため、主記憶装置毎に持つものではない。一方、ＯＳが管理するページテーブルとは別に、個々の不揮発性主記憶装置１３１のＮＶＭコントローラ２０１は、ダンプ管理のために独自のページテーブルを保持するものとする。また、各ページのサイズおよび開始位置はＯＳが管理するものと一致するものとする。
【００４９】
制御ファームウェア２０４は、後述するBackground（ＢＧ）ダンプルーチン処理等を行うプログラムである。制御ファームウェア２０４は、ＮＶＭコントローラ２０１−１により実行される。
【００５０】
尚、不揮発性主記憶装置１３１−２、１３１−３の構成は、不揮発性主記憶装置１３１−１の構成と同様であるため説明は省略する。
【００５１】
ＥＥＰＲＯＭ２１１は、不揮発性主記憶装置１３１−１の特性やメモリダンプ処理の設定などの情報を格納する。尚、ＥＥＰＲＯＭ２１１に格納される情報の詳細については後述する。
【００５２】
外部記憶装置コントローラ２３１は、コネクタ２４１を介して、外部記憶装置コントローラ１５１と接続する。この接続はダンプ用途に限らず、不揮発性主記憶装置の故障に備えたバックアップを、ＯＳに負荷をかけずに実現するなどの用途に流用することも可能である。外部記憶装置コントローラ２３１は、外部記憶装置コントローラ１５１との間でデータの送受信を行う。外部記憶装置コントローラ２３１と外部記憶装置コントローラ１５１との間で通信を行うことで、Direct Memory Access（ＤＭＡ）コントローラを含むＩ／Ｏコントローラ１１３やＰＣＩバス１９３に影響が生じなくなる。
【００５３】
外部記憶装置１６１との通信プロトコルはSmall Computer System Interface（ＳＣＳＩ）など任意のものでよい。外部記憶装置コントローラ１５１、２３１は単純に通信プロトコルをやりとりする機能だけでなく、ブロックまたはファイルシステム上の書き込み位置を理解可能なレベルのものが実装される。
【００５４】
記憶素子２５１は、データを格納する素子である。
図４は、記憶素子管理テーブルの例を示す図である。
【００５５】
記憶素子管理テーブル２０３には、ページ番号とフラグが対応付けられて記載されている。
【００５６】
ページ番号は、ページに割り当てられた番号である。尚、以下の説明において、ページ番号ｎのページをページｎと表記する場合がある。
【００５７】
フラグは、ページの状態を示す情報である。フラグとして、空き領域、使用領域（Dirty）、使用領域（Sync）、未ダンプ、またはReservedが記載される。
【００５８】
空き領域は、データが書き込まれていない空き領域であることを示す。
使用領域（Dirty）は、データが書き込まれており、且つ該データは外部記憶装置１６１へコピーされていない、すなわち未ダンプであることを示す。
【００５９】
使用領域（Sync）は、データが書き込まれており、該データは外部記憶装置１６１へコピー済み、すなわちダンプ済みであることを示す。
【００６０】
未ダンプは、ダンプされていないことを示す。また、未ダンプ（１）、未ダンプ（２）のような未ダンプの後ろに付加されている数字は、ダンプの世代を示す。ＢＧダンプ処理中に再度クラッシュ事象が発生した場合も再度ダンプは可能である。この場合、前回のダンプデータの残りと今回のダンプデータの分離を可能とするために、ＮＶＭコントローラ２０１がＢＧダンプ処理を実行する初期にすべての使用済みページを「未ダンプ」と設定する処理で、すでに「未ダンプ」となっているページのフラグを見つけた場合「未ダンプ（１）」に書き換えることで、区別を可能とする。この場合、ＮＶＭコントローラ２０１は前回と今回のダンプ先のファイル名を区別可能なようにするなどの処理を行う。同様に前々回の未ダンプデータは「未ダンプ（２）」などとインクリメントすることで複数世代の管理も可能であるが、フラグの実装上どれだけ未アサインの番号が存在するかが世代の上限となる。例えば、フラグが４ビット（１６値）で管理され、４値が既存のフラグとしてアサイン済みであれば、追加で最大１２世代分が管理可能である。
【００６１】
Reservedは、未使用の（すなわち、外部から見たアドレスが割り当てられていない）予備領域であることを示す。
【００６２】
図５は、ＥＥＰＲＯＭに記録されている情報を示す図である。
ＥＥＰＲＯＭ２１１には、主記憶モジュールの種類、主記憶モジュールの容量、ＥＣＣの有無、温度センサ値、ＢＧダンプフラグ、およびダンプ先外部記憶装置が記録されている。
【００６３】
主記憶モジュールの種類は、主記憶装置の種類を示す。詳細には、主記憶モジュールの種類は、主記憶装置が揮発性か不揮発性であるかを示す。図５は、不揮発性主記憶装置１３１−１のＥＥＰＲＯＭ２１１なので、「不揮発性」が記載されている。
【００６４】
主記憶モジュールの容量は、不揮発性主記憶装置１３１−１の容量を示す。
ＥＣＣの有無は、不揮発性主記憶装置１３１−１のError Check and Correct（ＥＣＣ）機能の有無を示す。
【００６５】
温度センサ値は、温度センサから取得した不揮発性主記憶装置１３１−１の温度である。
【００６６】
ＢＧダンプフラグは、ＢＧダンプ処理を行うか否かを示す。ＢＧダンプフラグは０〜２のいずれかが設定される。０は無効（すなわち、ＢＧダンプ処理を行わない、若しくはＢＧダンプ処理完了）、１は有効（すなわち、ＢＧダンプ処理を行う）、２は有効且つWait（すなわち、ＢＧダンプ処理を行うために待機）を示す。
【００６７】
ダンプ先外部記憶装置は、ダンプ先の外部記憶装置を示す。
尚、揮発性主記憶装置１２１にも揮発性主記憶装置１２１の特性（主記憶モジュールの種類、主記憶モジュールの容量、ＥＣＣの有無、温度センサ値等）が記録されたＥＥＰＲＯＭが搭載されている。
【００６８】
図６は、第１の実施の形態に係るメモリダンプ処理のフローチャートである。
先ず、情報処理装置１０１では、ＯＳが実行されているものとする。
【００６９】
ステップＳ５０１において、情報処理装置１０１のＯＳでクラッシュ事象、すなわち致命的なエラーが発生する。
【００７０】
ステップＳ５０２において、ＣＰＵ１１１は、ダンプ処理を開始する。
ステップＳ５０３において、ＣＰＵ１１１は、不揮発性主記憶装置１３１のＢＧダンプフラグを設定する。詳細には、ＣＰＵ１１１は、ＢＩＯＳ設定情報１７３を参照し、各不揮発性主記憶装置１３１の優先度（Pri）を確認する。ＣＰＵ１１１は、Pri=Highである不揮発性主記憶装置１３１のＢＧダンプフラグを１、Pri=Lowである不揮発性主記憶装置１３１のＢＧダンプフラグを２に設定する。
【００７１】
ステップＳ５０４において、ＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３のフラグを設定する。詳細には、ＮＶＭコントローラ２０１は、「使用領域（Dirty）」を「未ダンプ」に設定する。ＮＶＭコントローラ２０１は、「使用領域（Dirty）」以外のフラグを「空き領域」に設定する。
【００７２】
ステップＳ５０５において、ＣＰＵ１１１は、不揮発性主記憶装置１３１以外の装置（ＣＰＵ１１１および揮発性主記憶装置１２１を含む）をリセットする。
【００７３】
ステップＳ５０６において、ＣＰＵ１１１は、ＯＳを起動する。
以下、ステップＳ５０７〜Ｓ５１０とステップＳ５１１が並列に実行される。
【００７４】
ステップＳ５０７において、Pri=Highである不揮発性主記憶装置１３１のＮＶＭコントローラ２０１は、ＢＧダンプ処理を実行する。尚、ＢＧダンプルーチン処理の詳細については後述する。
【００７５】
ステップＳ５０８において、ＣＰＵ１１１は、Pri=Highである全ての不揮発性主記憶装置１３１のＥＥＰＲＯＭ２１１内のＢＧダンプフラグが０であることを検出する。すなわち、Pri=Highである全ての不揮発性主記憶装置１３１でＢＧダンプルーチン処理が完了したことを検出する。
【００７６】
ステップＳ５０９において、ＣＰＵ１１１は、Pri=Lowである不揮発性主記憶装置１３１のＥＥＰＲＯＭ２１１内のＢＧダンプフラグを１に設定する。
【００７７】
ステップＳ５１０において、Pri=Lowである不揮発性主記憶装置１３１のＮＶＭコントローラ２０１は、ＢＧダンプ処理を実行する。尚、ＢＧダンプルーチン処理の詳細については後述する。
【００７８】
ステップＳ５１１において、各ＮＶＭコントローラ２０１は、割り込みダンプ処理を行う。尚、割り込みダンプ処理については後述する。
【００７９】
尚、上述のＣＰＵ１１１が実行する各ステップは、ＣＰＵ１１１がＢＩＯＳ１７２を読み出して実行することにより実現される。
【００８０】
図７は、第１の実施の形態に係るＢＧダンプ処理の詳細なフローチャートである。
図７は、図６のステップＳ５０７またはステップＳ５１０に対応する。
【００８１】
ステップＳ５２１において、ＮＶＭコントローラ２０１は、以下のステップＳ５２２〜Ｓ５２４で処理対象とするページを未選択のページの中から１つ選択する。例えば、ＮＶＭコントローラ２０１は、未選択のページの中から、ページ番号が一番小さいページを選択する。これにより、ページ番号の昇順にページが選択される。以下、選択されたページを選択ページと表記する。
【００８２】
ステップＳ５２２において、ＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３を参照し、選択ページのフラグが「未ダンプ」であるかチェックする。選択ページのフラグが「未ダンプ」の場合、制御はステップＳ５２３に進み、「未ダンプ」でない場合、制御はステップＳ５２５に進む。
【００８３】
ステップＳ５２３において、ＮＶＭコントローラ２０１は、選択ページのデータを外部記憶装置１６１にコピー（送信）する。これにより、選択ページのデータは、外部記憶装置１６１に書き込まれる。
【００８４】
ステップＳ５２４において、ＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３の選択ページのフラグを「空き領域」に設定する。
【００８５】
ステップＳ５２５において、未選択のページがある場合、制御はステップＳ５２１に戻り、未選択のページがない場合（すなわち、フラグが「未ダンプ」であるページが無い場合）、制御はステップＳ５２６に進む。
【００８６】
ステップＳ５２６において、ＮＶＭコントローラ２０１は、ＥＥＰＲＯＭ２１１のＢＧダンプフラグを０に設定する。
【００８７】
図８は、第１の実施の形態に係る割り込みダンプ処理の詳細なフローチャートである。
図８は、図６のステップＳ５１１に対応する。
【００８８】
ステップＳ５３１において、ＮＶＭコントローラ２０１は、ＯＳからの書き込み要求を待つ。ＯＳからの書き込み要求を受信した場合、制御はステップＳ５３２に進む。また、ＢＧダンプ処理が終了した場合、割り込みダンプ処理は終了する。
【００８９】
ステップＳ５３２において、ＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３を参照し、書き込み要求による書込み先のページのフラグが「未ダンプ」であるか否かチェックする。書込み先のページのフラグが「未ダンプ」である場合、制御はステップＳ５３３に進み、「未ダンプ」でない場合、制御はステップＳ５３４に進む。
【００９０】
ステップＳ５３３において、ＮＶＭコントローラ２０１は、書込み要求データをバッファ２０２に書き込み、書込み完了をＯＳに報告する（Write Back方式）。そして、ＮＶＭコントローラ２０１は、書込み要求データの書込み先のページを外部記憶装置１６１にコピー（送信）し、該ページのフラグを「空き領域」に設定する。
【００９１】
ステップＳ５３４において、ＮＶＭコントローラ２０１は、書込み要求データを書込み先のページ（記憶素子２５１）に書き込む。また、データが書き込まれたページのフラグは、「使用領域（Dirty）」となる。そして、制御はステップＳ５３１に戻る。
【００９２】
図９は、第１の実施の形態に係る割り込みダンプ処理を示す図である。
図９では、書込み先のページが未ダンプである場合の処理を示す。
先ず、ＮＶＭコントローラ２０１は、ＯＳからの書き込み要求を受信する（ステップＳ５４１）。
【００９３】
ＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３を参照し、書き込み要求による書込み先のページ（ページ番号＝５０）のフラグが「未ダンプ」であるか否かチェックする。ここでは、書込み先のページのフラグが「未ダンプ」であるので、ＮＶＭコントローラ２０１は、書込み要求データをバッファ２０２に書き込み、書込み完了をＯＳに報告する（ステップＳ５４２）。
【００９４】
ＮＶＭコントローラ２０１は、書込み先のページのデータを外部記憶装置１６１に書き込むためのキューを生成し、順番待ちになっているキューの先頭に割り込ませる。
【００９５】
そして、書込み先のページのデータが外部記憶装置１６１に書き込まれた後、ＮＶＭコントローラ２０１は、書込み要求データを書込み先のページ（記憶素子２５１）に書き込む。
【００９６】
図９において、ＢＧダンプ処理により、ページを順次ダンプするキューが生成されている。生成されたキューは、生成された順に並んでおり、先頭から順次、外部記憶装置コントローラ１５１に送信される。
【００９７】
図９においては、ページ番号＝６〜９のページを外部記憶装置１６１に書き込むためのキューが順番に並んでいる状態で、ページ番号＝５０のページを外部記憶装置１６１に書き込むためのキューがページ番号＝６のページのキューの前に割り込んだ状態を示している。このように、ページ番号＝５０のページを外部記憶装置１６１に書き込むためのキューが並んでいるキューに割り込み、先に実行される。
【００９８】
割り込みダンプ処理を用いることにより、ＯＳからの初回のデータ書き込みこそ低速であるが、それ以後の同一ページへの読み書きは通常時の不揮発性主記憶装置と同等の速度が得られる。また、ダンプに割り込みが発生したり、複数の不揮発性主記憶装置から非同期にダンプされることで、ダンプファイルは断片化（フラグメンテーション）が発生する。ダンプファイルが不連続となる箇所には開始アドレスとオフセットが合わせて記録されるようにすることで、ダンプの解析時に正しいアドレス空間に復元することが可能である。
【００９９】
図１０は、優先度による段階的なメモリダンプを示す図である。
上述のように、図６のメモリダンプ処理では、Pri=Highの不揮発性主記憶装置のＢＧメモリダンプ処理の後に、Pri=Lowの不揮発性主記憶装置のＢＧメモリダンプ処理が行われている。
【０１００】
このような優先度に基づく段階的なＢＧメモリダンプ処理の意義について説明する。
ＯＳのメモリ管理の特性上、ＢＩＯＳが決定した物理メモリアドレスにはアクセス順序や頻度に局所性があることが予想される。特にＯＳの起動にはカーネルが利用する領域を優先的にダンプする必要がある。このような特性をプロファイルとしてＢＩＯＳ設定情報１７３に保持し、不揮発性主記憶装置１３１の単位で優先順位付けをすることで、カーネルが利用する領域を優先的にダンプすることができる。
【０１０１】
図１０では、不揮発性主記憶装置１〜Ｎがあり、不揮発性主記憶装置１、２にカーネル空間、不揮発性主記憶装置３〜Ｎにユーザプロセス空間が割り当てられるものとする。
【０１０２】
よって、不揮発性主記憶装置１、２の優先度はHigh、不揮発性主記憶装置３〜Ｎの優先度はLowに設定される。
【０１０３】
メモリダンプの第１段階では、不揮発性主記憶装置１、２においてＢＧダンプフラグ＝１（有効）に設定され、不揮発性主記憶装置３〜ＮにおいてＢＧダンプフラグ＝２（有効：Ｗａｉｔ）に設定される。
【０１０４】
ＢＩＯＳ１７２を実行するＣＰＵ１１１は、ＥＥＰＲＯＭ２１１を監視して、優先度が高い不揮発性主記憶装置１、２のＢＧダンプフラグ＝０（無効）となった時点で、優先度が低い不揮発性主記憶装置３〜ＮにＢＧダンプフラグ＝１（有効）を設定する（第２段階）。
【０１０５】
尚、ＢＧダンプフラグ＝２（有効：Ｗａｉｔ）の場合、ＮＶＭコントローラ２０１はＯＳからの書き込み要求に応じて割り込みダンプ処理を実施するときだけダンプを実施する。
【０１０６】
図１０において、ダンプ第二段階の主記憶装置３〜Ｎで飛び飛びに網掛けになっている部分が、割り込みダンプ処理によってダンプ済みの領域を示す。
【０１０７】
図１１は、第１の実施の形態に係るクラッシュ事象発生直前およびＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す図である。
【０１０８】
図１１の上側はクラッシュ事象発生直前の記憶素子管理テーブルの状態を示し、下側はＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す。
【０１０９】
図１１では、記憶素子管理テーブル２０３の各レコードを記憶素子の物理的な位置（Column,Row）に対応するように配置して記載している。
【０１１０】
図１１では、クラッシュ事象発生直前において、ページ１〜３、６、Ｘ−１のフラグは「使用領域（Dirty）」であり、ページ４、５、Ｘのフラグは「空き領域」である。
【０１１１】
図６で述べたように、ＢＧダンプフラグが設定される（ステップＳ５０３）とＮＶＭコントローラ２０１は記憶素子管理テーブル２０３のフラグを設定する（ステップＳ５０４）。図１１の下側に示すように、「使用領域（Dirty）」は、「未ダンプ」に設定される。
【０１１２】
第１の実施の形態の情報処理装置によれば、メモリダンプ処理による業務停止時間を短縮することができる。
【０１１３】
第１の実施の形態の情報処理装置によれば、不揮発性主記憶装置から外部記憶装置へのダンプ処理をＯＳ再起動後のバックグラウンド処理とすることで、業務停止時間を短縮することができる。
【０１１４】
（第２の実施の形態）
第２の実施の形態では、不揮発性記憶装置１３１において、外部から見たアドレスに対して記憶素子が可変的に割り当てられる場合について説明する。
【０１１５】
尚、第２の実施の形態の情報処理装置の構成は、特に断りのない限り第１の情報処理装置の構成と同様であるため説明は省略する。
【０１１６】
第２の実施の形態の不揮発性主記憶装置１３１は、ＮＡＮＤ型フラッシュメモリを用いたＳＳＤで用いられているような、外部から見たアドレスに対して記憶素子が可変的に割り当てられているような方式が実装されているものとする。
【０１１７】
このような不揮発性主記憶装置１３１は、ある記憶素子が保持するデータを直接更新することができず、別の記憶素子に書き込む、またはひとまとまりの記憶素子の列をイレーズ後に再度書き込むなどの処理を行う。
【０１１８】
また、記憶素子の寿命が書き込み回数に依存するため、特定の記憶素子に書き込みが偏らないよう、不揮発性主記憶装置１３１は、外部から見て連続したアドレスであっても、内部的には不連続な領域に書き込むウェアレベリングと呼ばれる機能を持つ。このため、不揮発性主記憶装置１３１は、外部から見たアドレスと、記憶素子の対応を管理するためのテーブルを持つ。第２の実施の形態では、第１の実施の形態の記憶素子管理テーブル２０３を拡張することで、外部から見たアドレスと記憶素子との対応を管理するテーブルを実現する。
【０１１９】
実際には記憶素子１つにつき１つのアドレスを割り当てると、その管理のために膨大な量の管理表が必要となるため、ブロックと呼ばれる数キロバイト程度の単位で対応関係は管理される。
【０１２０】
図１２は、第２の実施の形態に係る不揮発性主記憶装置の状態を示す図である。
第２の実施の形態の不揮発性主記憶装置１３１は、データの読み書きに用いられる有効記憶素子と、ウェアレベリングに用いられるウェアレベリング用記憶素子を有する。
【０１２１】
第２の実施の形態の不揮発性主記憶装置１３１は、外部から見た不揮発性主記憶装置１３１の容量に対し、実際には数割程度余分にウェアレベリング用の記憶素子を有する。
【０１２２】
第２の実施の形態の不揮発性主記憶装置１３１は、記憶素子管理テーブル２０３の代わりに、記憶素子管理テーブル２０３を拡張した記憶素子管理テーブルを有する。
【０１２３】
以下、第１の実施例の記憶素子管理テーブル２０３を拡張した記憶素子管理テーブルを拡張記憶素子管理テーブル２０３’と表記する。
【０１２４】
図１３は、拡張記憶素子管理テーブルの例である。
拡張記憶素子管理テーブル２０３’は、外部から見た物理アドレス範囲、使用記憶素子位置、ページ番号、およびフラグが対応付けられて記載されている。
【０１２５】
外部から見た物理アドレス範囲は、外部（ＯＳやメモリコントローラ１１２）から見た不揮発性主記憶装置１３１の物理アドレスの範囲である。
【０１２６】
使用記憶素子位置は、不揮発性主記憶装置１３１の記憶素子２５１の位置を示す。
ページ番号は、ページに割り当てられた番号である。
【０１２７】
フラグは、ページの状態を示す情報である。
第２の実施の形態において、メモリダンプ処理やＢＧダンプ処理は第１の実施の形態と同様である。第２の実施の形態では、図８の割り込みダンプ処理の代わりに下記のような割り込みダンプ処理が行われる。
【０１２８】
図１４は、第２の実施の形態に係る割り込みダンプ処理の詳細なフローチャートである。
図１４は、図６のステップＳ５１１に対応する。
【０１２９】
ステップＳ６０１において、ＮＶＭコントローラ２０１は、ＯＳからの書き込み要求を待つ。ＯＳからの書き込み要求を受信した場合、制御はステップＳ６０２に進む。また、ＢＧダンプ処理が終了した場合、割り込みダンプ処理は終了する。
【０１３０】
ステップＳ６０２において、ＮＶＭコントローラ２０１は、拡張記憶素子管理テーブル２０３’を参照し、書込み先のメモリアドレスを含むページのフラグが「未ダンプ」であるか否かチェックする。書込み先のメモリアドレスを含むページのフラグが「未ダンプ」である場合、制御はステップＳ６０３に進み、「未ダンプ」でない場合、制御はステップＳ６０５に進む。
【０１３１】
ステップＳ６０３において、ＮＶＭコントローラ２０１は、書込み先のメモリアドレスを含む外部から見た物理アドレス範囲を無効にする。詳細には、ＮＶＭコントローラ２０１は、拡張記憶素子管理テーブル２０３’の書込み先のメモリアドレスを含む外部から見た物理アドレス範囲に「無効」を書き込む。
【０１３２】
ステップＳ６０４において、ＮＶＭコントローラ２０１は、無効にした外部から見た物理アドレス範囲を未割り当ての記憶素子に割り当てる。詳細には、ＮＶＭコントローラ２０１は、拡張記憶素子管理テーブル２０３’の未割り当ての記憶素子の使用記憶素子位置に対応する外部から見た物理メモリアドレス範囲およびページ番号に、それぞれ無効にした外部から見た物理アドレス範囲と無効にしたページのページ番号を書き込む。
【０１３３】
ステップＳ６０５において、ＮＶＭコントローラ２０１は、書込み要求データを新たに割り当てたページに書き込む。また、データが書き込まれたページのフラグは、「使用領域（Dirty）」となる。そして、制御はステップ６０１に戻る。
【０１３４】
図１５は、割り当て変更前と割り当て変更後の拡張記憶素子管理テーブルを示す図である。
【０１３５】
図１５の上側は変更前の拡張記憶素子管理テーブル２０３’、下側は変更後の拡張記憶素子管理テーブル２０３’を示す。
【０１３６】
割り当て変更前において、図１５の上側の拡張記憶素子管理テーブル２０３’に示すように、外部から見た物理メモリアドレスの範囲0x01010000〜0x0101FFFFに対応する使用記憶素子位置は0x1254、ページ番号は２０、フラグは未ダンプである。
【０１３７】
また、未割り当ての記憶素子として、記憶素子位置が0x57B9である記憶素子がある。
図１５では、書込み要求の書込み先のメモリアドレスが0x01010000〜0x0101FFFFの範囲に含まれるものとする。
【０１３８】
図１４で述べたように、書込み先のメモリアドレスを含むページのフラグが「未ダンプ」である場合、ＮＶＭコントローラ２０１は、拡張記憶素子管理テーブル２０３’の書込み先のメモリアドレスを含む外部から見た物理アドレス範囲に「無効」を書き込む。これにより、図１５の下側の拡張記憶素子管理テーブル２０３’に示すように、無効としたページに対応する外部から見た物理メモリアドレスの範囲は、0x01010000〜0x0101FFFF（無効）となっている。
【０１３９】
また、ＮＶＭコントローラ２０１は、拡張記憶素子管理テーブル２０３’の未割り当ての記憶素子の使用記憶素子位置に対応する外部から見た物理アドレス範囲およびページ番号に、それぞれ無効にした外部から見た物理メモリアドレス範囲と無効にしたページのページ番号を書き込む。ＮＶＭコントローラ２０１は、書込み要求データを新たに割り当てたページに書き込み、フラグを「使用領域（Dirty）」とする。
【０１４０】
これにより、図１５の下側の拡張記憶素子管理テーブル２０３’に示すように、記憶素子位置が0x57B9に対応する外部から見た物理メモリアドレス範囲は0x01010000〜0x0101FFFF、ページ番号は２０、フラグは「使用領域（Dirty）」となる。
【０１４１】
また、ＢＧダンプ処理は割り込みダンプ処理とは非同期に順次実行されるため、もともとのアドレス範囲が後から判別可能なように、アドレスデータそのものは保持される。ダンプ後には当該記憶素子のアドレス範囲及びページ番号は未割当に変更され、ウェアレベリング用にプールされる。
【０１４２】
第２の実施の形態の情報処理装置によれば、メモリダンプ処理による業務停止時間を短縮することができる。
【０１４３】
第２の実施の形態の情報処理装置によれば、ＯＳからの書き込み処理とダンプ処理とを非同期に実行することで、第１の実施の形態に比べて性能劣化が発生しにくくすることができる。
【０１４４】
（第３の実施の形態）
第３の実施の形態では、ＮＶＭコントローラ２０１がメモリダンプ処理を行っていない通常時に不揮発性記憶装置１３１のデータを外部記憶装置１６１にバックアップする場合について説明する。
【０１４５】
尚、第３の実施の形態の情報処理装置の構成は、特に断りのない限り第１の情報処理装置の構成と同様であるため説明は省略する。
【０１４６】
第３の実施の形態では、記憶素子管理テーブルのフラグとしてさらに「使用領域（Sync）」を用いる。
【０１４７】
通常時のバックアップ処理は、下記の通りである。
第３の実施の形態のＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３を監視し、フラグが「使用領域（Dirty）」であるページがあるかチェックする。
【０１４８】
ＮＶＭコントローラ２０１は、フラグが「使用領域（Dirty）」であるページを検出すると、該ページのデータを外部記憶装置１６１に書き込む（バックアップ）。
【０１４９】
そして、ＮＶＭコントローラ２０１は、該ページのフラグを「使用領域（Sync）」に設定する。
【０１５０】
尚、ＮＶＭコントローラ２０１は、ＯＳからの書込み要求によりページにデータを書き込んだ場合には、該ページのフラグを「使用領域（Dirty）」に設定する。
【０１５１】
ＮＶＭコントローラ２０１は、常に記憶素子管理テーブル２０３を監視し、フラグが「使用領域（Dirty）」であるページを減らすようにバックアップを行う。
【０１５２】
また、第３の実施の形態のメモリダンプ処理は、基本的に第１の実施の形態のメモリダンプ処理（図６）と同様である。
【０１５３】
図１６は、第３の実施の形態に係るクラッシュ事象発生直前およびＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す図である。
【０１５４】
図１６の上側はクラッシュ事象発生直前の記憶素子管理テーブルの状態を示し、下側はＢＧダンプフラグ設定直後の記憶素子管理テーブルの状態を示す。
【０１５５】
図１６では、記憶素子管理テーブル２０３の各レコードを記憶素子の物理的な位置（Column,Row）に対応するように配置して記載している。
【０１５６】
図１６では、クラッシュ事象発生直前において、ページ１、６のフラグは「使用領域（Dirty）」であり、ページ２、３、Ｘ−１のフラグは「使用領域（Sync）」であり、ページ４、５、Ｘのフラグは「空き領域」である。
【０１５７】
上述のように、第３の実施の形態のメモリダンプ処理は、第１の実施の形態のメモリダンプ処理と同様である。ＢＧダンプフラグが設定される（ステップＳ５０３）とＮＶＭコントローラ２０１は記憶素子管理テーブル２０３のフラグを設定する（ステップＳ５０４）。図１６の下側に示すように、「使用領域（Dirty）」は「未ダンプ」に設定され、「使用領域（Sync）」は「空き領域」に設定される。
【０１５８】
第３の実施の形態では、フラグ＝使用領域（Sync）のページは、外部記憶装置１６１にバックアップ済みであるので、ダンプする必要が無い。
【０１５９】
図１１の下側と図１６の下側とを比較すると、第３の実施の形態では、フラグが「未ダンプ」であるページが少なくなっている。
【０１６０】
よって、第３の実施の形態では、第１の実施の形態よりもメモリダンプ処理の時間が短縮できる。
【０１６１】
図１７は、記憶素子管理テーブルのフラグの状態遷移図である。
初期状態では、Ｓ０（フラグ＝空き領域）である。
【０１６２】
Ｓ０の状態において、ページにデータが書き込まれるとＳ１（フラグ＝使用領域（Dirty））に遷移する。
【０１６３】
Ｓ１の状態において、通常時にバックアップ処理が行われるとＳ２（フラグ＝使用領域（Sync））に遷移する。また、Ｓ１の状態において、ダンプフラグが有効になると、Ｓ３（フラグ＝未ダンプ）に遷移する。また、Ｓ１の状態において、ページを含む不揮発性主記憶装置１３１が解放されると（メモリ解放）、Ｓ０（フラグ＝未ダンプ）に遷移する。
【０１６４】
Ｓ２の状態において、ページにデータが書き込まれると、Ｓ１（フラグ＝使用領域（Dirty））に遷移する。Ｓ２の状態において、ダンプフラグが有効になると、Ｓ３（フラグ＝未ダンプ）に遷移する。
【０１６５】
Ｓ３の状態において、ダンプフラグが有効になると、Ｓ４（フラグ＝未ダンプ（１））に遷移する。Ｓ３の状態において、メモリダンプ処理が実施されると、Ｓ０（フラグ＝空き領域）に遷移する。
【０１６６】
以下、同様に状態Ｓ４〜Ｓ（Ｘ−１）において、ダンプフラグが有効になると、「未ダンプ」の世代を示す番号が１インクリメントされる。尚、状態ＳＸでは、「未ダンプ」の世代を示す番号がインクリメントされない。また、Ｓ４〜ＳＸの状態において、メモリダンプ処理が実施されると、Ｓ０（フラグ＝空き領域）に遷移する。
【０１６７】
第３の実施の形態の情報処理装置によれば、メモリダンプ処理による業務停止時間を短縮することができる。
【０１６８】
第３の実施の形態の情報処理装置によれば、通常時にバックアップを採取しているため、メモリダンプ処理時にはバックアップとの差分のみをダンプすればよいので、メモリダンプ処理の時間を短縮することができる。
【０１６９】
（第４の実施の形態）
第４の実施の形態では、第１〜第３の実施の形態のいずれかにおいて、さらに不揮発性主記憶装置のすべてまたは一部をダンプ対象外とする処理や揮発性主記憶装置から不揮発性主記憶装置へのコピー等の処理を行う場合について説明する。
【０１７０】
尚、第４の実施の形態の情報処理装置の構成は、特に断りのない限り第１の情報処理装置の構成と同様であるため説明は省略する。
【０１７１】
図１８Ａ、Ｂは、第４の実施の形態に係るメモリダンプ処理のフローチャートである。
先ず、情報処理装置１０１では、ＯＳが実行されているものとする。
【０１７２】
ステップＳ７０１において、情報処理装置１０１のＯＳでクラッシュ事象、すなわち致命的なエラーが発生する。
【０１７３】
ステップＳ７０２において、ＣＰＵ１１１は、ダンプ処理を開始する。
以下、揮発性主記憶装置ダンプルーチン（ステップＳ７０３〜Ｓ７０７）と不揮発性主記憶装置フラグ設定処理（ステップＳ７０８〜Ｓ７１２）が並列に実行される。尚、揮発性主記憶装置ダンプルーチンと不揮発性主記憶装置フラグ設定処理は、直列に実行されても良いし、どちらが先に実行されてもよい。
【０１７４】
ステップＳ７０３において、ＣＰＵ１１１は、フォアグラウンドの揮発性主記憶装置ダンプルーチン（フォアグラウンドダンプ）を開始する。尚、フォアグラウンドとは、情報処理装置１０１が専らダンプ処理のために動作しており、業務が稼働していない状態を示す。
【０１７５】
尚、ＣＰＵ１１１は、主記憶装置（揮発性主記憶装置１２１および不揮発性主記憶装置１３１）のＥＥＰＲＯＭを参照し、主記憶装置が揮発性か不揮発性か判別する。
【０１７６】
ステップＳ７０４において、ＣＰＵ１１１は、不揮発性主記憶装置１３１に揮発性主記憶装置１２１の全データまたは１部のデータをコピー可能な空き領域があるかチェックする。揮発性主記憶装置１２１のデータをコピー可能な空き領域がある場合、制御はステップＳ７０５に進み、揮発性主記憶装置１２１のデータをコピー可能な空き領域がない場合、制御はステップＳ７０６に進む。
【０１７７】
ステップＳ７０５において、ＣＰＵ１１１は、揮発性主記憶装置１２１のデータを不揮発性主記憶装置１３１にコピー（書き込み）する。発性主記憶装置１２１のデータを不揮発性主記憶装置１３１にコピーするときに、ＣＰＵ１１１は、揮発性主記憶装置のもともとのメモリアドレスが後から判別可能なような付加情報（例えば、コピーしたデータの開始アドレスおよびサイズまたはアドレスのオフセットなど）を同時に保存する。
【０１７８】
また、コピーの途中で不揮発性主記憶装置１３１の空き領域がなくなった場合は、制御はステップＳ７０６に進み、未コピーの揮発性主記憶装置１２１のデータは、外部記憶装置１６１にコピーされる。
【０１７９】
ステップＳ７０６において、ＣＰＵ１１１は、揮発性主記憶装置１２１のデータを外部記憶装置１６１にコピー（書き込み）する。
【０１８０】
ステップＳ７０７において、ＣＰＵ１１１は、揮発性主記憶装置ダンプルーチンを終了する。
【０１８１】
尚、不揮発性主記憶装置１３１の空き領域は、あらかじめ予約されているように実装することも可能だし、揮発性主記憶装置ダンプルーチンは、クラッシュ事象発生時の状態により変化する空き領域に動的に対応できるよう実装されることが望ましい。
【０１８２】
ステップＳ７０８において、ＣＰＵ１１１は、不揮発性主記憶装置フラグ設定処理を開始する。
【０１８３】
ステップＳ７０９において、ＣＰＵ１１１は、ＢＩＯＳ設定情報１７３を参照し、不揮発性主記憶装置１３１がブロックアクセスであるかチェックする。不揮発性主記憶装置１３１がブロックアクセスの場合、制御はステップＳ７１０に進み、不揮発性主記憶装置１３１がブロックアクセスでない場合（バイトアクセスである場合）、制御はステップＳ７１１に進む。尚、上記チェックは、全ての不揮発性主記憶装置１３１に対して行う。
【０１８４】
ステップＳ７１０において、ＣＰＵ１１１は、ブロックアクセスである不揮発性主記憶装置１３１をダンプの対象外とする。
【０１８５】
ステップＳ７１１において、ＣＰＵ１１１は、バイトアクセスである不揮発性主記憶装置１３１のＢＧダンプフラグを設定する。詳細には、ＣＰＵ１１１は、ＢＩＯＳ設定情報１７３を参照し、各不揮発性主記憶装置１３１の優先度（Pri）を確認する。ＣＰＵ１１１は、Pri=Highである不揮発性主記憶装置１３１のＢＧダンプフラグを１、Pri=Lowである不揮発性主記憶装置１３１のＢＧダンプフラグを２に設定する。
【０１８６】
ＢＧダンプフラグが設定されたＮＶＭコントローラ２０１は、記憶素子管理テーブル２０３のフラグを設定する。詳細には、ＮＶＭコントローラ２０１は、「使用領域（Dirty）」を「未ダンプ」に設定する。ＮＶＭコントローラ２０１は、「使用領域（Dirty）」以外のフラグを「空き領域」に設定する。
【０１８７】
ステップＳ７１２において、ＣＰＵ１１１は、不揮発性主記憶装置フラグ設定処理を終了する。
【０１８８】
ステップＳ７１３において、ＣＰＵ１１１は、不揮発性主記憶装置１３１の手動交換を行うか否か判断する。詳細には、ＣＰＵ１１１は、ＢＩＯＳ設定情報１７３を参照し、「手動交換」がＹかＮかによって、揮発性主記憶装置１３１の手動交換を行うか否か判断する。手動交換を行う場合、制御はステップＳ７１４に進み、手動交換を行わない場合、制御はステップＳ７１７に進む。
【０１８９】
ステップＳ７１４において、ＣＰＵ１１１は、情報処理装置１０１の電源をオフにする。
【０１９０】
また、ＣＰＵ１１１は、ダンプ処理の開始および電源オフのタイミングそれぞれでＢＩＯＳから情報処理装置１０１を管理するBaseboard Management Controller（ＢＭＣ）に対してイベント通知を行い、ＢＭＣは手動交換の準備および着手のタイミングをSimple Network Management Protocol（ＳＮＭＰ）トラップや電子メールなどの方法で保守員に知らせる。
【０１９１】
ステップＳ７１５において、保守員が手動で不揮発性主記憶装置１３１を交換し、情報処理装置１０１の電源をオンにする。
【０１９２】
保守員はその場またはサポートセンターに別途用意した計算機で取り外した不揮発性主記憶装置のデータをダンプし、外部記憶装置１６１にダンプされていたデータとマージすることで解析に必要なダンプデータを得る。
【０１９３】
尚、セキュリティを考慮して不揮発性主記憶装置１３１のデータが暗号化されている場合、保守員は情報処理装置１０１の所有者の了承のもとに解読用コードを入手する。
【０１９４】
ステップＳ７１６において、ＣＰＵ１１１は、ＯＳを起動する。
ステップＳ７１７において、ＣＰＵ１１１は、不揮発性主記憶装置１３１のメモリアドレス空間が消えてしまわないよう、ＣＰＵ１１１と揮発性主記憶装置１２１をリセットする。
【０１９５】
ステップＳ７１８において、ＣＰＵ１１１は、ＯＳを起動する。
ステップＳ７１９において、ＣＰＵ１１１およびＮＶＭコントローラ２０１は、ＢＧダンプ処理を実行する。ステップＳ７１９では、例えば、図６のステップＳ５０７〜Ｓ５１０の処理が実行される。尚、ＢＧダンプ処理は、ステップＳ７１１においてＢＧダンプフラグが設定された不揮発性主記憶装置１３１で行われる。
【０１９６】
ステップＳ７２０において、各ＮＶＭコントローラ２０１は、割り込みダンプ処理を行う。尚、割り込みダンプ処理は、図８または図１４で説明した通りである。
【０１９７】
尚、上述のＣＰＵ１１１が実行する各ステップは、ＣＰＵ１１１がＢＩＯＳ１７２を読み出して実行することにより実現される。
【０１９８】
上記に様にして得られたダンプデータは取得タイミングやアドレスがバラバラのファイルとなってしまうため、別途用意するソフトウェアツールによりマージするか、バラバラのファイルを読み込み可能なダンプの解析ソフトを利用する。
【０１９９】
図１９は、第４の実施の形態に係る各処理時のデータの位置を示す図である。
図１９では、不揮発性主記憶装置１３１−１がブロックアクセス、不揮発性主記憶装置１３１−１がバイトアクセスとする。また、不揮発性主記憶装置１３１−３の記載は省略する。また、図１９では、揮発性主記憶装置１２１−１を記載し、揮発性主記憶装置１２１−２、１２１−３は省略する。
【０２００】
先ず、クラッシュ事象発生時には、不揮発性主記憶装置１３１−１はデータＡ、Ｂを格納している。不揮発性主記憶装置１３１−２はデータＣを格納しており、空き領域（Free）を有する。揮発性主記憶装置１２１−１は、データＤ、Ｅを格納している（図１９のクラッシュ事象発生時の状態）。尚、不揮発性主記憶装置１３１−１のデータＡ、Ｂは、バックグラウンドダンプ完了まで保持される。
【０２０１】
揮発性主記憶装置ダンプルーチン（フォアグラウンドダンプ）が開始され、揮発性主記憶装置１２１−１のデータＤは、不揮発性主記憶装置１３１−２にコピーされる（図１９のフォアグラウンドダンプ中）。また、データＤの、不揮発性主記憶装置１３１−２へのコピーにより、不揮発性主記憶装置１３１−２の空き領域は無くなる。
【０２０２】
不揮発性主記憶装置１３１−２の空き領域が無いため、揮発性主記憶装置１２１−１のデータＥは、外部記憶装置１６１にコピーされる（図１９のフォアグラウンドダンプ完了）。
【０２０３】
ＯＳが再起動され（ステップＳ７１８）、ＢＧダンプ処理が実行される（ステップＳ７１９）と、不揮発性主記憶装置１３１−２のデータＣ、Ｄは、外部記憶装置１６１にコピーされる。また、再起動されたＯＳのデータＦ、Ｇが揮発性主記憶装置１２１−１に書き込まれ、再起動されたＯＳのデータＨが不揮発性主記憶装置１３１−２に書き込まれる（図１９のバックグランドダンプ中）。
【０２０４】
ＢＧダンプ処理が終了すると、揮発性主記憶装置１２１−１は、データＦ、Ｇを格納しており、不揮発性主記憶装置１３１−２は、データＨを格納しており、データＤがあった領域は空き領域となっている（図１９のバックグラウンドダンプ完了）。
【０２０５】
第４の実施の形態の情報処理装置によれば、メモリダンプ処理による業務停止時間を短縮することができる。
【０２０６】
第４の実施の形態の情報処理装置によれば、ブロックアクセスの不揮発性主記憶装置はダンプ不要であるから、これをダンプ対象外となるよう制御することで無駄な処理をなくすことができる。
【０２０７】
第４の実施の形態の情報処理装置によれば、揮発性主記憶装置のデータを外部記憶装置よりも高速にアクセス可能な不揮発性主記憶の空き領域へコピーすることにより、フォアグラウンドのダンプの所要時間を短縮することができる。
【０２０８】
第４の実施の形態の情報処理装置によれば、不揮発性主記憶装置から外部記憶装置へのダンプ処理をＯＳ再起動後のバックグラウンド処理とすることで、業務停止時間を短縮することができる。
【０２０９】
図２０は、コンピュータシステムの構成図である。
以上説明したようなメモリダンプ処理は、当然一般的なコンピュータシステムによって実現することが可能である。図２０において、実施の形態のメモリダンプ処理を実現するための情報処理装置１１は、本体１２とメモリ１３とによって構成されている。メモリ１３は、揮発性主記憶装置１２１、不揮発性主記憶装置１３１、外部記憶装置１６１、ＢＩＯＳ格納域１７１などの記憶装置に対応する。
【０２１０】
このようなメモリ１３に各実施の形態のメモリダンプ処理等を行うプログラムが格納され、そのプログラムが本体１２によって実行されることによって、実施の形態の各種処理を実現することが可能となる。
【０２１１】
このようなプログラムは、プログラム提供者側からネットワーク２１を介して情報処理装置１１にロードされることもできる。またプログラムは、市販され、流通している可搬型記憶媒体３１に格納され、そのような可搬型記憶媒体３１が情報処理装置１１にセットされ、メモリ１３に読み出されて本体１２によって実行されることも可能である。
【０２１２】
可搬型記憶媒体３１としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスクなど様々な形式の記憶媒体を使用することができ、このような記憶媒体から読み出されたプログラムコード自体が実施の形態の機能を実現する。
【図１】
2015015589.tif 000003
【図２】
2015015589.tif 000004
【図３】
2015015589.tif 000005
【図４】
2015015589.tif 000006
【図５】
2015015589.tif 000007
【図６】
2015015589.tif 000008
【図７】
2015015589.tif 000009
【図８】
2015015589.tif 000010
【図９】
2015015589.tif 000011
【図１０】
2015015589.tif 000012
【図１１】
2015015589.tif 000013
【図１２】
2015015589.tif 000014
【図１３】
2015015589.tif 000015
【図１４】
2015015589.tif 000016
【図１５】
2015015589.tif 000017
【図１６】
2015015589.tif 000018
【図１７】
2015015589.tif 000019
【図１８Ａ】
2015015589.tif 000020
【図１８Ｂ】
2015015589.tif 000021
【図１９】
2015015589.tif 000022
【図２０】
2015015589.tif 000023
【手続補正書】
【提出日】平成28年10月14日(2016.10.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する処理部と、
前記処理部が直接アクセス可能且つコントローラを有する不揮発性主記憶装置と、
前記処理部が直接アクセス可能でない外部記憶装置と、
を備え、
前記処理部が前記オペレーティングシステムのエラーを検出したとき、
前記処理部は、前記不揮発性主記憶装置以外をリセットして、前記オペレーティングシステムを再起動し、
前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込むことを特徴とする情報処理装置。
【請求項２】
前記不揮発性主記憶装置は、複数の不揮発性主記憶装置であり、
前記複数の不揮発性主記憶装置の各不揮発性主記憶装置の優先度が記載された設定情報を格納する情報格納部をさらに備え、
前記処理部は、前記設定情報を参照し、前記優先度の高い順に、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む処理を前記コントローラに実行させることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記コントローラは、
前記オペレーティングシステムから前記不揮発性主記憶装置へ書き込む第１のデータを受信し、
前記第１のデータが書き込まれる領域に存在する第２のデータが前記外部記憶装置に書き込まれていない場合、前記第２のデータを前記外部記憶装置に書き込み、
前記第２のデータを前記外部記憶装置に書き込み後、前記第１のデータを前記不揮発性主記憶装置へ書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記不揮発性主記憶装置は、外部から見たアドレスに対して未割り当ての領域を有し、
前記コントローラは、
前記オペレーティングシステムから前記不揮発性主記憶装置へ書き込む第１のデータを受信し、
前記第１のデータが書き込まれる第１の領域に存在する第２のデータが前記外部記憶装置に書き込まれていない場合、
前記第１の領域に割り当てられている外部から見たアドレスを無効にし、
前記未割り当ての領域に前記第１の領域に割り当てられていた外部から見たアドレスを割り当て、
前記第１の領域に割り当てられていた外部から見たアドレスを割り当てた前記未割り当ての領域へ前記第１のデータを書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記コントローラは、
前記不揮発性主記憶装置の複数の領域の各データが前記不揮発性主記憶装置へ書き込み済みであるかを示すフラグが記載された管理テーブルを有し、
前記オペレーティングシステムの動作時に、前記管理テーブルを参照し、前記外部記憶装置へ書き込んでいない未書込みデータを検出し、
該未書込みのデータを前記外部記憶装置へ書き込み、
書き込んだデータに対応するフラグを、前記外部記憶装置に書き込み済みであることを示すように設定することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記処理部が前記オペレーティングシステムのエラーを検出したとき、
前記コントローラは、前記管理テーブルを参照し、前記フラグに基づいて、前記外部記憶装置へ書き込んでいない前記不揮発性主記憶装置のデータのみを前記外部記憶装置へ書き込むことを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記情報処理装置は、前記不揮発性主記憶装置がダンプ対象であるか否かを示す設定情報を格納する情報格納部をさらに備え、
前記不揮発性主記憶装置は、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む処理を実行するか否かを示すダンプフラグを格納する主記憶装置情報格納部をさらに備え、
前記処理部は、前記設定情報に基づいて、ダンプ対象である前記不揮発性主記憶装置の前記ダンプフラグを有効に設定し、
前記コントローラは、前記ダンプフラグが有効の場合に、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記処理部が直接アクセス可能な揮発性主記憶装置をさらに備え、
前記コントローラは、前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む前に、前記揮発性主記憶装置のデータを前記不揮発性主記憶装置に書き込むことを特徴とする請求項１記載の情報処理装置。
【請求項９】
オペレーティングシステムを実行する処理部と、前記処理部が直接アクセス可能な不揮発性主記憶装置と、前記処理部が直接アクセス可能でない外部記憶装置と、を備える情報処理装置が実行するメモリダンプ方法であって、
前記処理部が
前記オペレーティングシステムのエラーを検出し、
前記不揮発性主記憶装置以外をリセットし、
前記オペレーティングシステムを再起動し、
前記不揮発性主記憶装置が有するコントローラが
前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む
処理を備えるメモリダンプ方法。
【請求項１０】
オペレーティングシステムを実行する処理部と、前記処理部が直接アクセス可能な不揮発性主記憶装置と、前記処理部が直接アクセス可能でない外部記憶装置と、を備えるコンピュータに、
前記処理部が
前記オペレーティングシステムのエラーを検出し、
前記不揮発性主記憶装置以外をリセットし、
前記オペレーティングシステムを再起動し、
前記不揮発性主記憶装置が有するコントローラが
前記不揮発性主記憶装置のデータを前記外部記憶装置に書き込む
処理を実行させるメモリダンププログラム。
【国際調査報告】
2015015589.tif 000024
2015015589.tif 000025
2015015589.tif 000026
2015015589.tif 000027