(57)【要約】【課題】  不揮発メモリ内に保存されている過去の障害情報を現在の障害情報と区別可能にして過去の障害情報のファイル出力を制御すること。【解決手段】  不揮発メモリ内に保存されている障害情報を取り出し、不揮発メモリ内に保存されていた障害情報であることが判別できるように印を付与してログバッファに保存し、ログバッファに保存した障害情報をファイルへ出力するときに、障害情報に付与した印を参照して障害情報の種別を判定し、ファイル出力ポリシーファイルに定義したファイル出力条件に基づいて障害情報をファイルへ出力する。【選択図】図１
2010026694.tif 000002
【特許請求の範囲】
【請求項１】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおける障害情報出力方法において、
前記コンピュータシステムがその終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存する第１のステップと、
前記コンピュータシステムがその起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する第２のステップと、
前記コンピュータシステムが前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する第３のステップとを有することを特徴とする障害情報出力方法。
【請求項２】
前記コンピュータシステムが、前記第１のステップで、前記記憶装置内のバッファに保存されている障害情報の個数から前記ファイルに出力した障害情報の個数を差し引いた値を計算し、その値を基にファイルにまだ出力していない障害情報の有無を判定することを特徴とする請求項１に記載された障害情報出力方法。
【請求項３】
前記コンピュータシステムが、前記第１のステップで、コンピュータシステムの終了要因を判別可能な値を障害情報に含めて前記不揮発メモリへ保存することを特徴とする請求項１または請求項２のいずれかに記載された障害情報出力方法。
【請求項４】
前記コンピュータシステムが、前記第２のステップで、前記不揮発メモリ内に保存されていた障害情報とそれ以外の障害情報とを区別できる２種類の数字の内の１つを障害情報のヘッダ情報に含ませることを特徴とする請求項１乃至請求項３のいずれか１項に記載された障害情報出力方法。
【請求項５】
前記コンピュータシステムが、前記第２のステップで、前記障害情報を更新時刻の古い順に前記記憶装置内のバッファへ保存することを特徴とする請求項１乃至請求項４のいずれか１項に記載された障害情報出力方法。
【請求項６】
前記第３のステップは、前記印を付与した障害情報をファイルに出力する条件を規定する設定ファイルを記憶装置から参照するステップを含むことを特徴とする請求項１乃至請求項５のいずれか１項に記載された障害情報出力方法。
【請求項７】
前記記憶装置内の設定ファイルは、前記印を付与した障害情報のファイルへの出力可否を判定する条件項目として、前記印を付与した障害情報のファイルへの出力可否を規定する項目と、前記印を付与した障害情報のファイルへの出力可否を決定する境界値としての障害重要度を規定する項目と、前記コンピュータシステムの終了要因が異常終了である場合に前記印を付与した障害情報のファイルへの出力を抑止することを規定する項目とを含むことを特徴とする請求項６に記載された障害情報出力方法。
【請求項８】
前記第３のステップは、前記記憶装置内の設定ファイルに規定の各項目と、前記障害情報の前記印の値と、前記コンピュータシステムの終了要因とを参照して、前記印を付与した障害情報のファイルへの出力可否を判定するステップを含むことを特徴とする請求項７に記載された障害情報出力方法。
【請求項９】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおいて、
コンピュータシステムの終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存し、コンピュータシステムの起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する不揮発メモリ入出力処理部と、
前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する障害ログ出力処理部とを備えることを特徴とするコンピュータシステム。
【請求項１０】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおける障害情報出力方法をコンピュータに実行させるためのプログラムにおいて、
前記コンピュータシステムがその終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存する第１のステップと、
前記コンピュータシステムがその起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する第２のステップと、
前記コンピュータシステムが、前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する第３のステップとを有することを特徴とする障害情報出力方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムで発生した障害のログを不揮発メモリへ保存する技術と、不揮発メモリへ保存した障害ログをファイルへ出力する技術に関する。
【背景技術】
【０００２】
コンピュータシステムで発生した障害情報を記録するために、プログラムやデバイスドライバに障害情報をメモリに蓄積させ、それらをハードディスク上のログファイルへ出力するログ機能が一般に使用されている。
【０００３】
障害情報は一度メモリ上へ蓄えられるため、メモリ上の障害情報をファイル出力する前にコンピュータシステムが終了すると、障害情報がファイルへ記録されずに損失する。この損失を防止するために、障害情報を不揮発メモリへ保存した後にコンピュータシステムを終了させ、次回システム起動時に不揮発メモリ内の障害情報を取り出してログファイルへ出力させる技術が存在する。
【０００４】
次回のシステム起動が長期間経過後の場合、不揮発メモリへ保存された障害情報はそのシステム起動時と比べて古い情報となる。これら古い障害情報をログファイルへ出力させないため、障害情報を報告するための有効期間を設定し、有効期間を経過した障害情報はログファイルへ記録しないで破棄する方法が提案されている（特許文献１参照）。
【０００５】
【特許文献１】特開２００４−２２０５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来技術で不揮発メモリへ保存された障害情報をログファイルへ出力すると、当該の障害の発生した日時が現時点より古い場合、ログファイルへ出力した障害が今現在に発生した障害であると誤認識される。
【０００７】
具体的には、コンピュータシステムにログファイルを監視するプログラムが存在する場合、不揮発メモリ内の障害情報をログファイルへ出力すると、監視プログラムが障害情報を検知し、コンピュータシステムの管理者へメール等の手段で警告を送信する。実際には不揮発メモリ内の障害情報は過去に発生した障害に関する情報であるが、警告自体は今現在に送信されたものであるため、コンピュータシステムの管理者は障害の事実確認や対応のために不必要な作業が発生してしまう。
【０００８】
特許文献１に記載の方法のように古い障害情報を記録しないで破棄する方法では、コンピュータシステムの管理者へ古い障害情報に基づく警告を送信することは防止できるが、障害情報がログファイルへ記載されないため、過去に発生した障害情報の詳細について解析したり原因追及したりといった作業が実施できない。
【０００９】
またコンピュータシステムの管理者によって、不揮発メモリ内の障害ログをすべて別ファイルへ出力したいニーズや、重大な障害に関する障害情報のみをログファイルへ出力したいニーズ、コンピュータシステムが異常に終了した場合の障害ログのみログファイルへ出力したいニーズ、などの異なるログファイル出力方法のニーズが存在し、それらのニーズに対応可能なログファイル出力方法が必要である。
【００１０】
そこで、本発明は、不揮発メモリに保存されていた障害ログとコンピュータシステムの通常運用時の障害ログとを区別可能とし、システム管理者が決定したファイル出力方法で不揮発メモリに保存されていた障害ログをファイル出力することを目的とするものである。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、本発明は、不揮発メモリに保存されている障害情報を取り出した際に、不揮発メモリに保存されていた障害情報であることが分かるように印を付ける。
さらに本発明は、システム管理者が設定したログファイル出力条件に基づいて前記印の付けられた障害情報のログファイル出力可否を決定する。
さらに本発明は、前記出力可否に従って監視プログラムの監視対象であるログファイルへ前記障害情報の出力制御を実行し、同時に監視プログラムの非監視対象であるログファイルへ全ての障害情報を出力する。
【発明の効果】
【００１２】
本発明によれば、不揮発メモリに保存されている古い障害情報の監視対象のログファイルへの出力を抑止することでシステム管理者へ不要な障害発生の警告を送信することを防止し、全ての障害情報を非監視対象のログファイルへ記録することで障害情報の損失を防止できる。
【発明を実施するための最良の形態】
【００１３】
図１は本実施形態のサーバシステムの概略構成を示す図である。図１に示す様に、本実施形態のサーバシステム１００は、サーバ機器１０１と、アラート表示ディスプレイ１０９と、を備えている。サーバ機器１０１は、CPU（Central Processing Unit：中央処理装置）１０２と、メモリ１０３と、不揮発メモリ１１０と、HDD（Hard Disk Drive：ハードディスクドライブ）１０８と、を備えている。
【００１４】
メモリ１０３内には、OS（Operating System：オペレーティングシステム）１０４が存在する。OS１０４内には、障害情報を一時的に蓄積するためのログバッファ８００と、不揮発メモリに対して障害情報を保存したり取得したりするときに使用するための不揮発メモリ用バッファ４００と、監視対象のログファイルに障害情報が出力されるとシステム管理者へ警告を送信するためのアラート処理部１０５と、不揮発メモリへ障害情報を保存したり不揮発メモリから障害情報を取得したりするための不揮発メモリ入出力処理部１０６と、ログバッファ８００に蓄積された障害情報をログファイルへ出力するための障害ログ出力処理部１０７が存在する。
【００１５】
不揮発メモリ入出力処理部１０６は後述の図３に示す不揮発メモリ保存処理と図５に示す不揮発メモリ取得処理と図１３に示す不揮発メモリ削除処理とを実行する。障害ログ出力処理部１０７は後述の図９に示す障害ログファイル出力処理と図１０に示すファイル出力方法決定処理と図１２に示す障害ログエントリファイル出力処理とを実行する。
【００１６】
不揮発メモリ１１０内には、障害に関する情報である障害ログ６００が存在する。
HDD１０８内には、不揮発メモリ内に保存された障害情報のログファイル出力条件を設定するためのファイル出力ポリシーファイル２００と、障害ログ出力処理部１０７が全ての障害ログエントリ７００を出力する障害ログファイル１４００と、障害ログ出力処理部１０７が障害ログエントリ７００内のマークとファイル出力ポリシーファイル２００の情報に基づいて出力制御を実行するシステムログファイル１５００とが存在する。なお、本実施形態では、障害ログファイル１４００はアラート処理部１０５の非監視対象であり、システムログファイル１５００はアラート処理部１０５の監視対象とする。
アラート表示ディスプレイ１０９は、アラート処理部１０５が送信する警告の内容をシステム管理者へ表示する。
【００１７】
本実施形態のサーバシステム１００を前記処理部として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。
【００１８】
図２は不揮発メモリ内に保存された障害情報をログファイルへ出力する条件を設定するためのファイル出力ポリシーファイルの概要図である。本実施形態では、ログファイル出力条件として、不揮発メモリ内に保存された障害情報をログファイルへ出力するか否かを設定する項目と、不揮発メモリ内に保存された障害情報の中でログファイルに出力する障害情報のレベルを設定する項目と、前回のシステム終了要因が異常要因の場合に、不揮発メモリ内に保存された障害情報のログファイルへの出力を抑止する設定の項目と、を条件項目としている。ここで障害情報のレベルにはINFORMATIONやWARNING等の複数の種類があり、それぞれ障害レベルの高さが異なるものとする。
【００１９】
図４は、不揮発メモリへ障害情報を保存するときに使用するバッファ構成の概略図である。不揮発メモリ用バッファ４００は、不揮発メモリへ保存する障害情報に関する情報を格納するヘッダ部分４０１と、障害情報を格納するボディ部分４０２とで構成される。ヘッダ部分４０１の中には、コンピュータシステムの終了要因を示す値を代入するシステム終了要因項目４０３を含む。本実施形態では、システム終了要因項目４０３には、コンピュータシステムが正常終了する場合には「０」を代入し、異常終了する場合は「１」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。ボディ部分４０２は、障害情報を示す１つ以上の障害ログエントリ７００を含む。障害ログエントリ７００の個数は、ログファイルへ未出力の障害情報の個数に応じて変動する。障害ログエントリ７００の個数は、本実施形態の場合では、ログファイルへ未出力の障害情報の個数と同数である。
【００２０】
図６は、不揮発メモリに保存された障害情報の構成の概略図である。不揮発メモリ内の障害ログ６００は、不揮発メモリへ保存する障害情報に関する情報を格納するヘッダ部分６０１と、障害情報を格納するボディ部分６０２とで構成される。ヘッダ部分６０１の中には、コンピュータシステムの終了要因を示す値を代入するシステム終了要因項目６０３を含む。本実施形態では、システム終了要因項目６０３の値に、コンピュータシステムが正常終了するときには「０」を代入し、異常終了する場合は「１」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。ボディ部分６０２は、障害情報を示す１つ以上の障害ログエントリ７００を含む。障害ログエントリ７００の個数は、ログファイルへ未出力の障害情報の個数に応じて変動する。障害ログエントリ７００の個数は、本実施形態の場合では、ログファイルへ未出力の障害情報の個数と同数である。
【００２１】
図７は、各障害情報を示す障害ログエントリ構成の概要図である。障害ログエントリ７００は、障害情報のヘッダ部分７０１と、障害の詳しい情報を示す障害詳細情報７０２とで構成される。ヘッダ部分７０１の中には、当該障害ログエントリが不揮発メモリに保存されていた障害情報であるか否かを示す値を代入する不揮発メモリ内ログ項目７０３と、各障害情報の種類を識別するための障害ログ識別子７０４とを含む。本実施形態では、不揮発メモリ内ログ項目７０３は、当該障害ログエントリが不揮発メモリ内に保存されていた障害情報である場合には値「１」を代入し、それ以外の障害情報である場合には値「０」を代入することとしているが、これらの障害情報を識別できれば、このような態様に限定されない。障害ログ識別子７０４は、障害の内容を一意に識別できる値を代入する。本実施形態では、障害ログ識別子７０４は、障害の内容を一意に識別できる数字「１１００」と、障害のレベルを示す文字「W」（WはWARNINGを意味するものとする）を使用して識別子７０４を作成しているが、障害のレベルを示す文字は識別子７０４に含めずに、障害の内容を一意に識別できる数字と障害のレベルとの対応関係を示すテーブルを作成してそれを参照させてもよい。障害詳細情報７０２は、本実施形態では、障害が発生したときのメモリ情報を含む。
【００２２】
図８は、障害が発生したときに障害情報を一時的に蓄積するログバッファを示す概要図である。ログバッファ８００の中には、０個以上の障害ログエントリ７００を含む。また、ログバッファ８００に関連する情報として、ファイル出力済みポインタ８０１と、ログバッファ終端ポインタ８０２とを不揮発メモリ入出力処理部１０６が保持している。ファイル出力済みポインタ８０１は、ログバッファ８００の中にある障害ログエントリ７００の中で、ファイル出力の完了している障害ログエントリ７００の終端を示す値である。ファイル出力済みポインタ８０１の示す障害ログエントリ７００とそれよりも古い障害ログエントリ７００は全てログファイルへ出力済みであり、ファイル出力済みポインタ８０１の示す障害ログエントリ７００よりも新しい障害ログエントリ７００はまだログファイルへ出力していないことを示す。ログバッファ終端ポインタ８０２は、ログバッファ８００の中で障害ログエントリ７００が蓄積されている終端を示す値である。ログバッファ終端ポインタ８０２の示す障害ログエントリ７００よりも新しい障害ログエントリ７００は、ログバッファ内には存在しない。このため、ログバッファ終端ポインタ８０２とファイル出力済みポインタ８０１の差分の障害ログエントリ７００が、ログファイルへ未出力の障害ログエントリ７００を示す。
【００２３】
図１１は、不揮発メモリに保存された障害情報のファイル出力条件を示すファイル出力ポリシーテーブルを表す図である。ファイル出力ポリシーテーブル１１００は、障害ログ出力処理部１０７が、ファイル出力ポリシーファイル２００に記載の各条件項目を読み込んで、障害ログ出力処理部１０７の内部に作成する。ファイル出力ポリシーテーブル１１００は、前回のシステム終了要因を示す項目１１０１と、不揮発メモリ内の障害情報のログファイル出力可否を示す項目１１０２と、ログファイルへ出力する障害情報のレベルを示す項目１１０３と、前回のシステム終了要因が異常の場合にファイルへの出力を抑止するか否かを示す項目１１０４とで構成される。
【００２４】
図１４は、障害ログ出力処理部１０７が障害ログエントリ７００の内容を保存する障害ログファイルの概要図である。障害ログファイル１４００は、１個のヘッダ情報１４０１と、０個以上の障害情報１４０２とを含む。障害情報１４０２は、障害ログエントリ７００の不揮発メモリ内ログ項目７０３の値を代入するための不揮発メモリ内ログ項目１４０３と、障害ログエントリ７００の障害ログ識別子７０４の値を代入するための障害ログ識別子項目１４０４と、障害ログエントリ７００の障害詳細情報の値を代入するための障害詳細情報項目１４０５とを含む。
【００２５】
図１５は、アラート処理部１０５が監視する対象のシステムログファイルの概要図である。本実施形態では、システムログファイル１５００は、障害ログ出力処理部１０７により出力された障害ログエントリ７００のヘッダ部分７０１と、システム内の他のプログラムにより出力された情報とを含む。
【００２６】
図３は、本実施形態の不揮発メモリ入出力処理部１０６の不揮発メモリ保存処理の手順を示すフローチャートである。本実施形態では、図３の不揮発メモリ保存処理はコンピュータシステムの終了時に実行される。
【００２７】
まず、不揮発メモリ入出力処理部１０６は、ファイル出力済みポインタ８０１の値と、ログバッファ終端ポインタ８０２の値を参照し、その差を計算して、ログバッファ８００内の障害ログファイル１４００にまだ出力していない障害ログエントリ７００の個数を決定する（ステップ３００）。
【００２８】
次に、不揮発メモリ入出力処理部１０６は、不揮発メモリ用バッファ４００のヘッダ部分４０１の中にあるシステム終了要因項目４０３に、コンピュータシステムの終了要因を示す値を代入する（ステップ３０１）。本実施形態では、コンピュータシステムが正常終了するときには「０」を代入し、異常終了する場合は「１」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。
【００２９】
次に、不揮発メモリ入出力処理部１０６は、ステップ３００の処理で決定したファイル未出力の障害ログエントリ７００の個数を参照して、ログバッファ８００内にファイル未出力の障害ログエントリ７００が存在するか否かを確認する（ステップ３０２）。
【００３０】
ファイル未出力の障害ログエントリ７００がログバッファ８００内に存在しない場合、不揮発メモリ入出力処理部１０６は、不揮発メモリ用バッファ４００の内容を不揮発メモリ１１０に保存する（ステップ３０４）。
【００３１】
ファイル未出力の障害ログエントリ７００がログバッファ８００内に存在する場合、不揮発メモリ入出力処理部１０６は、不揮発メモリ用バッファ４００のボディ部分４０２に、ファイル未出力の障害ログエントリ７００を追加する（ステップ３０３）。不揮発メモリ入出力処理部１０６がファイル未出力の障害ログエントリ７００の追加を完了した後に、不揮発メモリ用バッファ４００の内容を不揮発メモリ１１０に保存する（ステップ３０４）。
【００３２】
図５は、本実施形態の不揮発メモリ入出力処理部１０６の不揮発メモリ取得処理の手順を示すフローチャートである。本実施形態では、図５の不揮発メモリ取得処理はコンピュータシステムの起動時に実行される。
【００３３】
まず、不揮発メモリ入出力処理部１０６は、不揮発メモリ内の障害情報を取得および保存するために使用する不揮発メモリ用バッファ４００をメモリに割り当てる（ステップ５００）。不揮発メモリ用バッファ４００を割り当てるメモリのサイズは、不揮発メモリ入出力処理部１０６が不揮発メモリ１１０内に保存可能なサイズと同じである。
【００３４】
次に、不揮発メモリ入出力処理部１０６は、不揮発メモリ１１０内の障害ログ６００を不揮発メモリ用バッファ４００へコピーする（ステップ５０１）。
次に、不揮発メモリ入出力処理部１０６は、ステップ５０１の処理で障害ログ６００のコピーに成功したか否かを判定する（ステップ５０２）。コピーに失敗した場合、本処理を終了する。コピーに成功した場合、ステップ５０３の処理へ移行する。
【００３５】
次に、不揮発メモリ入出力処理部１０６は、不揮発メモリ用バッファ４００へコピーした障害ログ６００のヘッダ部分６０１のシステム終了要因項目６０３の値を取得し、その値を保持する障害ログエントリ７００を作成して、ログバッファ８００へ作成した障害ログエントリ７００をコピーする（ステップ５０３）。システム終了要因項目６０３は、障害ログエントリ７００の障害詳細情報７０２に含める。
【００３６】
次に、不揮発メモリ入出力処理部１０６は、不揮発メモリ用バッファ４００へコピーした障害ログ６００のボディ部分６０２の障害ログエントリ７００を参照する（ステップ５０４）。
【００３７】
次に、不揮発メモリ入出力処理部１０６は、ステップ５０４の処理で参照した障害ログエントリの中に、ログバッファ８００へまだコピーしていない障害ログエントリが存在するか否かを判定する（ステップ５０５）。ログバッファ８００へまだコピーしていない障害ログエントリが存在しない場合、本処理を終了する。ログバッファ８００へまだコピーしていない障害ログエントリが存在する場合、ステップ５０６の処理へ移行する。
【００３８】
次に、不揮発メモリ入出力処理部１０６は、ログバッファ８００へまだコピーしていない障害ログエントリ７００の中で、最も古い障害ログエントリ７００を不揮発メモリ用バッファ４００から１つ取り出す（ステップ５０６）。
【００３９】
次に、不揮発メモリ入出力処理部１０６は、ステップ５０６の処理で取り出した障害ログエントリ７００のヘッダ部分７０１の不揮発メモリ内ログ項目７０３に値「１」を代入する（ステップ５０７）。本実施形態では、不揮発メモリ内から取り出した障害ログエントリ７００の場合は不揮発メモリ内ログ項目７０３に値「１」を代入し、それ以外の障害ログエントリ７００の場合は不揮発メモリ内ログ項目７０３に値「０」を代入することとしているが、これらの障害ログエントリ７００を識別できれば、このような態様に限定されない。
【００４０】
次に、不揮発メモリ入出力処理部１０６は、ステップ５０６の処理で取り出した障害ログエントリ７００をログバッファ８００へコピーする（ステップ５０８）。その後、ステップ５０４の処理へ戻り、不揮発メモリ用バッファ４００へコピーした障害ログ６００のボディ部分６０２の障害ログエントリ７００を参照する。
【００４１】
図９は、障害ログ出力処理部１０７の障害ログファイル出力処理の手順を示すフローチャートである。本実施形態では、図９の障害ログファイル出力処理はコンピュータシステムの起動時の図５の不揮発メモリ保存処理の後に実行される。
【００４２】
まず、障害ログ出力処理部１０７は、ファイル出力ポリシーファイル２００をオープンし、ファイル出力ポリシーを読み込む（ステップ９００）。
次に、障害ログ出力処理部１０７は、ステップ９００の処理で読み込んだファイル出力ポリシーを使用して、障害情報のファイル出力方法を決定する（ステップ９０１）。なお、このステップでの処理は、図１０に示すフローチャートを用いて詳述する。
【００４３】
次に、障害ログ出力処理部１０７は、ログバッファ８００内の障害ログエントリ７００を検索する（ステップ９０２）。
次に、障害ログ出力処理部１０７は、ステップ９０２の処理の結果、ログバッファ８００内に障害ログファイル１４００に未出力の障害ログエントリ７００が存在するか否かを判定する（ステップ９０３）。判定方法はステップ３００の処理と同様である。ファイル未出力の障害ログエントリ７００が存在しない場合、本処理を終了する。ファイル未出力の障害ログエントリ７００が存在する場合、ステップ９０４の処理へ移行する。
【００４４】
次に、障害ログ出力処理部１０７は、ログバッファ８００内の最も古い障害ログエントリ７００を１つ取得する（ステップ９０４）。
次に、障害ログ出力処理部１０７は、ステップ９０４の処理で取得した障害ログエントリ７００が障害詳細情報７０２内にシステム終了要因の値を保持しているか確認し、保持している場合は、障害ログ出力処理部１０７のファイル出力ポリシーテーブル１１００の「システム終了要因」項目１１０１へその値を代入する（ステップ９０５）。
【００４５】
次に、障害ログ出力処理部１０７は、ステップ９０４の処理で取得した障害ログエントリ７００のヘッダ部分７０１の不揮発メモリ内ログ項目７０３の値を参照し、値が「１」であるならば該当の障害ログエントリ７００は不揮発メモリから取得した障害ログエントリであると判断し、値が「１」以外であるならば該当の障害ログエントリは不揮発メモリから取得した障害ログエントリではないと判断する（ステップ９０６）。
【００４６】
次に、障害ログ出力処理部１０７は、ステップ９０１の処理で決定したファイル出力方法に基づいて、障害ログエントリ７００を障害ログファイル１４００とシステムログファイル１５００に出力する（ステップ９０７）。なお、このステップでの処理は、図１２に示すフローチャートを用いて詳述する。
【００４７】
次に、障害ログ出力処理部１０７は、ステップ９０７の処理で障害ログファイル１４００に出力した障害ログエントリ７００の個数を、不揮発メモリ入出力処理部１０６へ通知する（ステップ９０８）。通知の完了後、ステップ９０２の処理へ戻る。
【００４８】
図１０は、障害ログ出力処理部１０７のファイル出力方法決定処理の手順を示すフローチャートである。
まず、障害ログ出力処理部１０７は、ファイル出力ポリシーファイル２００の「不揮発メモリ内のログ出力」項目を参照する（ステップ１０００）。
【００４９】
次に、障害ログ出力処理部１０７は、ステップ１０００の処理で参照した「不揮発メモリ内のログ出力」項目の値がTRUEか否かを判定する（ステップ１００１）。項目の値がTRUEの場合、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「不揮発メモリ内のログ出力」設定項目１１０２に値TRUEを設定し（ステップ１００２）、ステップ１００４の処理へ移行する。項目の値がTRUEではない場合、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「不揮発メモリ内のログ出力」設定項目１１０２に値FALSEを設定し（ステップ１００３）、本処理を終了する。本実施形態では、不揮発メモリ内の障害情報をファイル出力することをTRUE、ファイル出力しないことをFALSEとしているが、これらの出力可否を識別できれば、このような態様に限定されない。
【００５０】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーファイル２００の「出力する障害レベル」項目の値の文字列を読み込む（ステップ１００４）。
次に、障害ログ出力処理部１０７は、ステップ１００４の処理で読み込んだ文字列を、ファイル出力ポリシーテーブル１１００の「出力する障害レベル」設定項目１１０３へコピーする（ステップ１００５）。
【００５１】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーファイル２００の「前回のシステム終了要因が異常時に出力抑止」項目の値を参照する（ステップ１００６）。
次に、障害ログ出力処理部１０７は、ステップ１００６の処理で参照した「前回のシステム終了要因が異常時に出力抑止」項目の値がTRUEか否かを判定する（ステップ１００７）。項目の値がTRUEの場合、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「前回のシステム終了要因が異常時に出力抑止」設定項目１１０４に値TRUEを設定し（ステップ１００８）、本処理を終了する。項目の値がFALSEの場合、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「前回のシステム終了要因が異常時に出力抑止」設定項目１１０４に値FALSEを設定し（ステップ１００９）、本処理を終了する。本実施形態では、前回のシステム終了要因が異常時に不揮発メモリ内の障害情報のファイル出力を抑止することをTRUE、ファイル出力を抑止しないことをFALSEとしているが、これらの出力抑止可否を識別できれば、このような態様に限定されない。
【００５２】
図１２は、障害ログ出力処理部１０７の障害ログエントリファイル出力処理の手順を示すフローチャートである。
まず、障害ログ出力処理部１０７は、ステップ９０６の処理での判定結果に基づき、障害ログエントリ７００が不揮発メモリ内から取得した障害ログエントリであるか否かを判定する（ステップ１２００）。障害ログエントリ７００が不揮発メモリ内から取得した障害ログエントリである場合、障害ログ出力処理部１０７はステップ１２０３の処理へ移行する。障害ログエントリ７００は不揮発メモリ内から取得した障害ログエントリではない場合、障害ログエントリの情報をシステムログファイル１５００に出力し（ステップ１２０１）、その後で障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。
【００５３】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「不揮発メモリ内のログ出力」設定項目１１０２の値を参照する（ステップ１２０３）。
【００５４】
次に、障害ログ出力処理部１０７は、ステップ１２０３の処理で参照した値がTRUEか否かを判定する（ステップ１２０４）。値がTRUEの場合、障害ログ出力処理部１０７はステップ１２０５の処理へ移行する。値がFALSEの場合、障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。
【００５５】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「出力する障害レベル」設定項目１１０３の値を参照する（ステップ１２０５）。
次に、障害ログ出力処理部１０７は、障害ログエントリ７００の識別子７０４を参照し、障害ログレベルを判定する（ステップ１２０６）。本実施形態では、識別子７０４に障害レベルを含めているが、識別子７０４と障害レベルの対応関係を定義したテーブルを用意してそのテーブルを参照して障害レベルを判定することもできる。
【００５６】
次に、障害ログ出力処理部１０７は、ステップ１２０５の処理で参照した障害レベルの値とステップ１２０６の処理で判定した障害レベルの値を比較し、障害ログエントリ７００の障害レベルが「出力する障害レベル」設定項目１１０３の障害レベル以上か否かを判定する（ステップ１２０７）。障害ログエントリ７００の障害レベルが「出力する障害レベル」設定項目１１０３の障害レベル以上の場合、障害ログ出力処理部１０７はステップ１２０８の処理へ移行する。障害ログエントリ７００の障害レベルが「出力する障害レベル」設定項目１１０３の障害レベルより低い場合、障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。
【００５７】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「前回のシステム終了要因が異常時に出力抑止」設定項目１１０４の値を参照する（ステップ１２０８）。
次に、障害ログ出力処理部１０７は、ステップ１２０８の処理で参照した値がTRUEか否かを判定する（ステップ１２０９）。値がTRUEの場合、障害ログ出力処理部１０７はステップ１２１０の処理へ移行する。値がFALSEの場合、障害ログエントリの情報をシステムログファイル１５００に出力し（ステップ１２１２）、その後で障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。
【００５８】
次に、障害ログ出力処理部１０７は、ファイル出力ポリシーテーブル１１００の「前回のシステム終了要因」項目１１０１の値を参照する（ステップ１２１０）。
次に、障害ログ出力処理部１０７は、ステップ１２１０の処理で参照した値を基に、前回のシステム終了要因が異常終了か否かを判定する。本実施形態では、コンピュータシステムが正常終了した場合を値「０」とし、異常終了した場合を値「１」としているが、これらの要因を識別できれば、このような態様に限定されない。前回のシステム終了要因が異常終了である場合、障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。前回のシステム終了要因が異常終了ではない場合、障害ログエントリの情報をシステムログファイル１５００に出力し（ステップ１２１２）、その後で障害ログエントリを障害ログファイル１４００に出力し（ステップ１２０２）、本処理を終了する。
【００５９】
図１３は、不揮発メモリ入出力処理部１０６の不揮発メモリ削除処理の手順を示すフローチャートである。本実施形態では、図１３の不揮発メモリ削除処理は障害ログ出力処理部１０７のステップ９０８の処理での通知後に実行する。
【００６０】
まず、不揮発メモリ入出力処理部１０６は、障害ログ出力処理部１０から障害ログファイル１４００に出力した障害ログエントリの個数を受信する（ステップ１３００）。
【００６１】
次に、不揮発メモリ入出力処理部１０６は、ステップ５０８の処理でログバッファ８００へコピーした障害ログエントリ７００の個数と、ステップ１３００の処理で受信したファイル出力済みの障害ログエントリ７００の個数とを比較する（ステップ１３０１）。
【００６２】
次に、不揮発メモリ入出力処理部１０６は、ステップ１３０１の処理での比較結果に基づき、ステップ１３００の処理で受信したファイル出力済みの障害ログエントリ７００の個数が、ログバッファ８００へコピーした障害ログエントリ７００の個数以上であるか否かを判定する。ステップ１３００の処理で受信したファイル出力済みの障害ログエントリ７００の個数が、ログバッファ８００へコピーした障害ログエントリ７００の個数以上である場合、不揮発メモリ１１０内の障害ログ６００は必要ないため、不揮発メモリから障害ログ６００を削除する（ステップ１３０３）。ステップ１３００の処理で受信したファイル出力済みの障害ログエントリ７００の個数が、ログバッファ８００へコピーした障害ログエントリ７００の個数より小さい場合、まだ不揮発メモリ内の障害ログ６００の全てを障害ログファイルへ出力完了していないため、不揮発メモリ内の障害ログ６００を削除しないで本処理を終了する。
【００６３】
以上説明した様に、本実施形態によれば、不揮発メモリに保存された障害情報をシステムログファイルへ出力する場合に、障害情報に付与した印の値を参照して障害情報の種別を判定することで、不揮発メモリから取り出した障害情報に対してのみシステムログファイルへの出力を抑止する制御が可能となる。また全ての障害情報は前記システムログファイルとは別の障害ログファイルに記録することで、障害情報の記録の損失を防ぐことが可能となる。
【００６４】
前記の様に本実施形態のコンピュータシステムによれば、コンピュータシステムに障害が発生した後に障害情報をファイルではなく不揮発メモリへ保存した場合、コンピュータシステムの障害回復後に不揮発メモリ内の障害情報に印を付与して障害ログファイルへ記録することで、システム障害発生時付近の前記印の付与された障害情報の切り分けが容易になり、通常運用時の障害情報と不揮発メモリへ保存された障害ログとを明確に区別可能とすることで過去の障害情報に絞った障害解析を支援し、コンピュータシステムの管理者がシステム障害の原因解析を効率的に行うことが可能となる。
【図面の簡単な説明】
【００６５】
【図１】本実施形態のサーバシステム１００の概略図である。
【図２】本実施形態のファイル出力ポリシーファイル２００の概略図である。
【図３】本実施形態の不揮発メモリへの障害情報の保存方法を示すフローチャートである。
【図４】本実施形態の不揮発メモリ用のバッファ４００の概要図である。
【図５】本実施形態の不揮発メモリ内の障害情報の取得方法を示すフローチャートである。
【図６】本実施形態の不揮発メモリ内の障害ログ６００の概略図である。
【図７】本実施形態の障害ログ６００内の障害ログエントリ７００の概略図である。
【図８】本実施形態のログバッファ８００の概略図である。
【図９】本実施形態の障害ログファイルへの出力処理を示すフローチャートである。
【図１０】本実施形態のステップ９０１の処理の詳細を示すフローチャートである。
【図１１】本実施形態のファイル出力ポリシーテーブル１１００の概略図である。
【図１２】本実施形態のステップ９０７の処理の詳細を示すフローチャートである。
【図１３】本実施形態の不揮発メモリ内の障害情報の削除方法を示すフローチャートである。
【図１４】本実施形態の障害ログファイル１４００の概略図である。
【図１５】本実施形態のシステムログファイル１５００の概略図である。
【符号の説明】
【００６６】
１００…サーバシステム、１０６…不揮発メモリ入出力処理部、１０７…障害ログ出力処理部、１１０…不揮発メモリ、２００…ファイル出力ポリシーファイル、４００…不揮発メモリ用バッファ、６００…障害ログ、８００…ログバッファ、１４００…障害ログファイル、１５００…システムログファイル
【図１】
2010026694.tif 000003
【図２】
2010026694.tif 000004
【図３】
2010026694.tif 000005
【図４】
2010026694.tif 000006
【図５】
2010026694.tif 000007
【図６】
2010026694.tif 000008
【図７】
2010026694.tif 000009
【図８】
2010026694.tif 000010
【図９】
2010026694.tif 000011
【図１０】
2010026694.tif 000012
【図１１】
2010026694.tif 000013
【図１２】
2010026694.tif 000014
【図１３】
2010026694.tif 000015
【図１４】
2010026694.tif 000016
【図１５】
2010026694.tif 000017