[0001]【発明の属する技術分野】本発明は、計算機システムおよびその計算機システムの障害発生原因を調べるために必要な障害情報を採取するための障害情報採取方法に関する。[0002]【従来の技術】一般に、計算機システムにおいては、ソフトウェアまたはハードウェア障害によってオペレーティングシステムがシステム続行不可能な状態(システムクラッシュ)に陥った場合には、原因調査用の障害情報を採取するために、いわゆるクラッシュダンプ機能が実行される。クラッシュダンプ機能は、システムクラッシュ発生時の主メモリ上の全てのデータを採取し、ハードディスク装置などの補助記憶装置に保存する機能である。drive.【0003】通常、クラッシュダンプ機能は、オペレーティングシステムがシステムクラッシュ発生時に実行するシステムクラッシュ処理内に実装されており、システムクラッシュ発生時に自動的に実行される。occurs.【0004】クラッシュダンプ機能によって採取/保存されたメモリデータは例えば保守センタの解析担当者や現場の解析担当者などに渡され、障害発生の要因解析などに用いられる。computer,主メモリのサイズは年々増加する傾向にある。このため、最近では、クラッシュダンプ機能によって採取されるデータ量は膨大なものとなってきている。実際の解析作業を考えると、障害発生の原因調査を行う上では必ずしも全てのメモリデータを必要としないことが多く、採取したメモリデータのほとんどが無駄になる場合もある。be,その作業にも多くの時間が費やされるという問題がある。work.【0007】さらに、従来のクラッシュダンプ機能によって採取/保存される情報は、主メモリ上の生データ(バイナリーデータ)そのものであり、ユーザが直接認識することができない状態となっている。従って、ユーザまたは解析担当者がデータを参照するためには、データ参照用の特殊なソフトウェアを使用することが必要とされた。reference.【0008】本発明はこのような点に鑑みてなされたものであり、システム障害の原因調査用の障害情報をより効率的に採取できるようにし、ディスク資源の節約、解析作業の迅速化を図ることが可能な計算機システムおよび障害情報採取方法を提供することを目的とする。occurs,前記主メモリの中から、オペレーティングシステムがシステム状態情報の保存に使用しているスタック領域の位置を検出する検出手段と、前記主メモリ上の全データの内、前記検出されたスタック領域に保存されているシステム状態情報を、前記障害発生の原因を調べるための障害情報として採取する障害情報採取手段とを具備することを特徴とする。failure.【0010】この計算機システムにおいては、主メモリ上の全データではなく、オペレーティングシステムがシステム状態情報の保存に使用しているスタック領域に限定してメモリデータの採取が行われる。スタック領域のシステム状態情報はシステム障害発生時の命令実行状態等を示す情報であるので、ほとんどの場合、このシステム状態情報のみを障害発生の原因を調べるための障害情報として採取するだけで十分な原因究明を行うことができる。このため、原因究明に使用されない不要なデータを排除できるようになり、障害情報のデータサイズの縮小を図ることができる。よって、障害情報を保存するためのディスク装置の記憶容量の節約を実現できると共に、解析作業においては速やかに必要な情報を見つけることが可能となり、解析作業の迅速化を図ることができる。データサイズの縮小により、障害情報を解析担当者に渡すためのデータの可搬性の向上を実現でき、解析者に対して障害情報を電子メールによって通知することが可能となる。analyst.【0011】また、通常、スタック領域へのシステム状態情報の保存は、システム障害の発生時にオペレーティングシステムのシステムクラッシュ処理によって実行されることが多い。オペレーティングシステムによってシステム状態情報の保存処理が行われたときに実行させることがことが好ましい。means,ディスク装置上の予め決められた特定領域にファイルシステムを介さずに直接的に書き込むシステム状態情報保存手段をさらに具備することを特徴とする。このようにファイルシステムを介さずにファイル出力する機能を追加することにより、システム障害の発生によってファイルシステムが既に正常動作してない場合であっても、システム状態情報をファイルとして保存することが可能となる。device,前記計算機システムの動作期間中オープンされ続けている所定のファイルが存在する領域を使用することができる。この場合、前記システム状態情報保存手段は、予め取得されている前記所定ファイルの存在位置にシステム状態情報を書き込むことのみによって、ファイルシステムを介さずにファイル出力を容易に行うことが可能となる。よって採取された障害情報をテキスト形式のデータに変換してディスク装置に保存するテキストデータ保存手段とを具備することを特徴とする。and.【0015】このように、ユーザが直接参照できる形で障害情報を保存しておくことにより、その障害情報の内容を即座に認識することが可能となる。電子メールによる障害情報通知と組み合わせることにより、障害情報をテキスト形式で解析者に通知することが可能となる。[0016]【発明の実施の形態】以下、図面を参照して本発明の実施形態を説明する。図1には、本発明の一実施形態に係る計算機システムの機能構成が示されている。この計算機システム1は例えばオフィスや事業所などに配備されたコンピュータネットワークシステムのサーバ等として使用されるコンピュータであり、システム障害によってオペレーティングシステム11が動作続行不可能な状態に陥った場合に、主メモリ21から原因調査に必要な障害情報を自動採取する機能を有している。オペレーティングシステム11が動作停止されるようなシステム障害はソフトウェア又はハードウェア障害によって引き起こされるものであり、システムクラッシュ、ブルーパニック、あるいはブルースクリーンなどと称されている。screen.【0017】オペレーティングシステム(OS)11には、システムクラッシュ発生時に動作するシステムクラッシュ処理部111が設けられている。システムクラッシュ処理部111は、システムクラッシュ発生時の命令実行状態などを含むシステム状態情報を主メモリ21の現在のスタック領域にセーブした後、主メモリ21上の全データをディスク装置22に保存するためのクラッシュダンプ処理を実行する。本実施形態では、ディスク装置22に保存するデータを必要最小限のデータに限定するために、OS11の一連のシステムクラッシュ処理シーケンスに割り込んで実行されるように構成された障害情報管理プログラム12が用意されている。121と、システム処理起動部122から構成されている。スタックデータ検索/採取処理部121は、システムクラッシュ処理部111の処理途中に割り込んで、主メモリ21からシステム障害解析に必要な情報を検索および取得するためのコンピュータプログラムである。システム処理起動部122は、オペレーティングシステム(OS)11の再起動時に実行されるコンピュータプログラムであり、システムクラッシュ発生時にスタックデータ検索/採取処理部121が採取した障害情報をテキストファイルに保存したり、メール送信用の障害通知プログラム14を用いて障害情報を計算機システム1の保守管理サイト宛に電子メールで送信する処理などを実行する。transmission.【0019】ここで、本実施形態で用いられる障害情報採取方法の一連の手順を説明する。システムクラッシュが発生した場合、OS11のシステムクラッシュ処理部111の処理が開始され、システム状態情報がスタック領域に保存される。システム状態情報はシステムクラッシュ発生時の命令実行状態などを示すものであり、ブルースクリーン情報などと称される場合もある。この保存処理が終了した時点で、障害情報管理プログラム12のスタックデータ検索/採取処理部121が、システムクラッシュ処理部111の処理途中に割り込んで、検索/採取処理を開始する。about,等によって実現できる。21,スタック領域に保存されているシステム状態情報(以下、スタックデータと称する)のみを検索し、それを採取する。121は、スタックデータをバイナリデータからテキスト形式のコードデータに変換した後、ディスクダンプドライバ13を用いて、計算機システムの補助記憶装置として使用されているディスク装置22に対するスタックデータの保存処理を開始する。/採取処理部121によって指定されたダミーファイル領域にスタックデータを書き込む。この後、OS11が再起動された時には、障害情報管理プログラム12のシステム処理起動部122が動作する。システム処理起動部122は、ファイルシステムを介して、ディスク装置22のダミーファイルをオープンし、そこからスタックデータを読み取る。システム処理起動部122は、読み取ったスタックデータをディスク装置22上にオープンしたテキストファイルにコピーする。ダミーファイルは、システム動作期間中は常時オープンされ続ける。何時システムクラッシュが発生した場合でもディスクダンプドライバ13に対してスタックデータの書き込み位置を指定できるようにするためである。オープン状態のダミーファイルは排他制御によってロックされているため、他のユーザプログラムなどから使用することはできないが、ダミーファイルの内容をテキストファイルにコピーすることにより、ユーザによるスタックデータの参照が可能となる。障害通知プログラムは、システム処理起動部122によったスタックデータが書き込まれたテキストファイルから電子メール用の添付ファイルを作成し、そのファイルを電子メールに添付して保守管理サイト宛に送信する。これにより、障害発生の事実とその障害解析に必要な情報を解析担当者に通知することができる。personnel.【0029】(OSと障害情報管理プログラムとの関係)次に、図2のフローチャートを参照して、オペレーティングシステム11と障害情報管理プログラム12の関係を説明する。12.【0030】システムクラッシュが発生すると、システムクラッシュ処理部111は、まず、そのときの命令実行状態を示す情報としてCPUのレジスタ値をスタック領域に格納し(ステップS11)、次いで、ストップコードとそのパラメータをスタック領域に格納する(ステップS12)。ここで、ストップコードとはシステムクラッシュの原因の種別を示す情報であり、パラメータはその補足情報である。不正なメモリアクセスによってシステムクラッシュが発生した場合には、それを示すストップコードと、不正なメモリアクセスが発生したメモリアドレス値を示すパラメータがスタック領域に格納される。area.【0031】ストップコードおよびパラメータの保存処理が終了した時点で、障害情報管理プログラム12のスタックデータ検索/採取処理部121が、システムクラッシュ処理部111の処理途中に割り込んで検索/採取処理を開始する。検索/採取処理では、前述したように、スタックデータのみの採取および保存が行われる。data.この場合、システムクラッシュ発生時の命令実行状態を示しているCPUレジスタ値のみならず、ストップコードおよびパラメータも一緒に採取される。ストップコードおよびそのパラメータは、システムクラッシュ発生時にOSによって画面表示される場合もあるが、使用しているOSの種類やバージョンによっては、画面表示されない場合もある。本実施形態では、使用しているOSの種類やバージョンによらずその原因情報を常にユーザや解析担当者が参照できるようにするために、ストップコードおよびパラメータを、CPUレジスタ値と共に採取する。value.【0032】スタックデータ検索/採取処理部121の処理が終了すると、システムクラッシュ処理部111に制御が戻されて、メモリダンプ生成/出力処理が実行される(ステップS13)。メモリダンプ生成/出力処理では、主メモリ21上の全データをディスク装置22に保存するクラッシュダンプ処理などが行われる。この後、オペレーティングシステム11によってシステム再起動処理が行われた後(ステップS14)、障害情報管理プログラム12のシステム処理起動部122がオペレーティングシステム11によって呼び出されて実行される。システム処理起動部122は、前述したように、スタックデータをテキストファイルに保存したり、メール送信用の障害通知プログラム14を用いてスタックデータを保守管理サイト宛に電子メールで送信する処理などを行う。.【0033】(スタックデータ検索/採取処理:その1)次に、図3乃至図5を参照して、スタックデータ検索/採取のための第1の方法について具体的に説明する。図3にその処理手順を示す。システムクラッシュ処理部111の処理途中で、スタックデータ検索/採取処理部121が実行される。121は、まず、主メモリ21上にスタックデータ出力用バッファを準備する(ステップS102)。スタックデータ出力用バッファは、採取したスタックデータを格納するための領域である。data.【0035】次いで、スタックデータ検索/採取処理部121は、オペレーティングシステム11がシステム状態の保存に使用しているスタック領域の位置を検出するために、CPUの現在のスタックベースレジスタの値を取得する(ステップS103)。121が使用可能なスタックデータ領域の先頭位置を指すものであり、スタックベースレジスタの値で指定される位置に保持されている値を調べることにより、オペレーティングシステム11が使用したスタック領域の位置を検出することができる。do.【0036】すなわち、スタックデータ検索/採取処理部121は、ステップS103で取得したスタックベースレジスタの値が示す、スタックの別領域の位置を参照して、システム状態情報の格納位置を調べ、そこに格納されているデータを取得する(ステップS104)。S104).【0037】図4は、ステップ104の処理イメージを示したものである。F03)が、OS11によって保存されたシステム情報の位置(=F03)を示している。F03がシステムクラッシュ発生時のスタック位置であり、この箇所から、スタックデータ検索/採取処理部121はスタックデータの採取を行い、ステップ102の処理で準備していたスタックデータ出力バッファにコピーする(ステップS105)。S105).【0038】このようにして、スタックデータ検索/採取処理を行った後、オペレーティングシステム11のシステムクラッシュ処理部111に処理を戻す(ステップS106)。S106).【0039】図5は全体の処理イメージであり、オペレーティングシステム11のシステムクラッシュ処理中にスタックデータの採取が行われる様子を示している。performed.【0040】このように、本例では、主メモリ21上の全データではなく、オペレーティングシステム11がシステム状態情報の保存に使用しているスタック領域に限定してメモリデータの採取が行われる。スタックデータは前述したようにCPUレジスタ値と、ストップコードおよびそのパラメータを含んでいるので、ほとんどの場合、このスタックデータだけで十分な原因究明を行うことができる。このため、原因究明に使用されない不要なデータを排除できるようになり、障害情報のデータサイズの縮小を図ることができる。information.【0041】(スタックデータ検索/採取処理:その2)次に、図6および図7を参照して、スタックデータ検索/採取のための第2の方法について説明する。ここでは、スタックデータの内、ストップコードおよびパラメータについてのみ主メモリ21上から検索し、その検索したストップコードおよびパラメータのみを障害情報として採取する場合を想定する。これは、採取すべき障害情報をより限定すると共に、障害発生の原因情報を画面表示しないOSを使用している場合であっても、障害発生の原因情報を常にユーザや解析担当者に提供できるようにするためである。図6にその処理手順を示す。procedure.【0042】ソフトウェアまたはハードウェア障害によって、オペレーティングシステム11が続行不可能な状態に陥った場合、前述したように、オペレーティングシステム11のシステムクラッシュ処理部111が実行される(ステップS111)。システムクラッシュ処理部111の処理途中において、スタックデータ検索/採取処理部121が実行される。システムクラッシュ処理部111は、まず、主メモリ21上に採取データ出力用バッファを準備する(ステップS112)。121は、スタックベースレジスタの値に基づいてオペレーティングシステム11がシステム状態情報の保存に使用しているスタックを調べ、その箇所から、順にデータを検索/採取していく(ステップS114)。このスタック領域を図7(A)に示す。(A).【0043】図7(A)において、301がスタックベースレジスタの値で、スタックベースレジスタの値が示す箇所から順に、302がストップコード、302がパラメータ1、304がパラメータ2、305がパラメータ3、306がパラメータ4である。302-306の情報のみが採取される。collected.【0044】続く、ステップS115では、スタックデータ検索/採取処理部121は、ステップS114で採取した値(ストップコード、パラメータ1〜4)を採取データ出力用バッファに格納する。このようにして、スタックデータ検索/採取処理を行った後、オペレーティングシステムのシステムクラッシュ処理部111に処理を戻す(ステップS116)。S116).【0045】このように、システムクラッシュ発生時に表示される画面情報と同じ障害原因情報をスタックデータから検索、取得することにより、障害原因情報が画面表示されない場合でも、その情報をユーザや解析担当者に提供することが可能となる。障害原因情報を電子メールにて保守管理サイトの解析担当者に送信することにより、計算機システム1の使用者が解析担当者に電話によって障害の症状を伝える場合などに比べて、障害の内容を迅速且つ正確に通知することが可能となる。accurately.【0046】(スタックデータ検索/採取処理:その3)次に、図8および図9を参照して、スタックデータ検索/採取のための第3の方法について説明する。ここでは、メモリデータからスタックデータのみを検索して採取するだけでなく、そのスタックデータの解析処理も合わせて行い、採取したスタックデータに解析結果を付加して出力する場合を説明する。システムクラッシュ処理部111の処理途中で、スタックデータ検索/採取処理部121が実行される。121,まず、主メモリ21上にスタックデータ出力用バッファを準備する(ステップS122)。スタックデータ検索/採取処理部121は、オペレーティングシステム11がシステム状態の保存に使用しているスタック領域の位置を検出するために、CPUの現在のスタックベースレジスタの値を取得する(ステップS123)。).現在のスタックベースレジスタの値は、スタックデータ検索/採取処理部121が使用可能なスタックデータ領域の先頭位置を指すものであり、スタックベースレジスタの値で指定される位置に保持されている値を調べることにより、オペレーティングシステム11が使用したスタック領域の位置を検出することができる。used.【0048】すなわち、スタックデータ検索/採取処理部121は、ステップS123で取得したスタックベースレジスタの値が示す、スタックの別領域の位置を参照して、システム状態情報の格納位置を調べ、そこに格納されているデータを取得し(ステップS124)、ステップ122の処理で準備していたスタックデータ出力バッファにコピーする(ステップS125)。ここまでは、図3の処理と同じである。FIG.【0049】この後、ステップS126の処理において、スタックデータの解析処理が行われる。この解析処理では、スタックデータ出力バッファからトラップフレーム(システムクラッシュ発生の直接な原因となった命令実行時の状態が格納されているデータ群)を検索する。図9は、ステップS126の処理イメージを示したものである。S126.【0050】まず、スタックデータ出力バッファの先頭から、システムクラッシュ発生時のフラグレジスタ値を検索し、フラグレジスタ値が格納されているスタック位置を取得する(601参照)。フラグレジスタ値はトラップフレームの一部であり、フラグレジスタ値が格納されている位置は、トラップフレーム内で固定であるため、フラグレジスタ値が格納されているスタック位置から、トラップフレームの先頭位置を算出することが可能である(602参照)。トラップフレームの先頭位置を取得することによって、トラップフレーム内の各データへの参照が可能になる。このようにして、スタックデータ検索/採取処理を行った後、オペレーティングシステム11のシステムクラッシュ処理部111に処理を戻す(ステップS127)。S127).【0051】このように、スタックデータを単に採取するだけでなく解析結果を補足情報として付加して出力することにより、より効率の良い障害解析が可能となる。analysis.【0052】(採取データのディスク保存/テキスト変換)次に、図10のフローチャートを参照して、採取したスタックデータをファイルシステムを介さずにディスク装置22に保存する処理、およびスタックデータをユーザ可視可能なテキストデータに変換する処理について具体的に説明する。121つの処理によって実現される。process.【0053】オペレーティングシステム11による起動処理が終了すると、まず、最初に、システム処理起動部122が実行される。システム処理起動部122は、まず、ディスク装置22上に存在するダミーファイルをオープンする(ステップS201)。file,スタックデータ検索/採取処理部121にて、採取データを出力するためのファイルである。通常は、ダミーファイルへのデータ出力はファイルシステムを経由して行う。システムクラッシュ発生時にはファイルシステムが既に正常に動作していないため、ファイルシステム経由での出力が不可能な状態となる。そこで、ファイルシステムを経由せずに、ファイルに対するデータ出力を可能にする特別なソフトウェア(前述のディスクダンプドライバ13)を利用する。file,ステップS201でダミーファイルをオープンし、その論理位置の取得を後述のステップS207で行うのである。ダミーファイルのクローズ処理は行わないので、ファイルの排他処理により、ダミーファイル記憶領域は常時確保された状態に維持することができる。よって、システムクラッシュが何時発生しても、採取したスタックデータをファイルシステムを介さずにファイル出力することができる。system.【0055】ダミーファイルをオープンした後、システム処理起動部122は、ダミーファイルのデータを読み込み(ステップS202)、その先頭データを調べることによってスタックデータが保存されているか否かを判断する(ステップS203)。スタックデータが保存されている場合には、今回のシステム起動処理はシステムクラッシュ後の再起動処理であることを意味している。122,ディスク装置22上にテキストファイルを生成およびオープンし(ステップS204)、ステップS202で読み込んだダミーファイルのデータをそのテキストファイルにコピーする(ステップS205)。ダミーファイルの内容をテキストファイルへコピーするのは、前述したようにシステム動作中はダミーファイルは常にオープンされており、ロック状態(排他制御)になっているため、ユーザが直接ダミーファイルをアクセスすることができないからである。S206)、ダミーファイルのディスク上の論理位置を取得し、それを記憶しておく(ステップS207)。occurs,前述したように、オペレーティングシステム11のシステムクラッシュ処理の途中でスタックデータ検索/採取処理部121が実行される。スタックデータ検索/採取処理部121は、ディスクダンプドライバ13を動作させるためにその初期化処理およびオープン処理を実行した後(ステップS301,S302)、前述したスタックデータ検索/採取処理1、2、または3の方法を用いて、ダミーファイルに出力すべきデータの検索および採取を行う(ステップS303)。file3に指示して、ダミーファイルに採取データを直接書き込むダンプ処理を実行させる(ステップS305)。ダミーファイルへの書き込み処理が終了した時点で、スタックデータ検索/採取処理部121はディスクダンプドライバ13を終了させ(ステップS306)、オペレーティングシステム11に処理を戻す。11.【0059】このように、ファイルシステムを介さずに採取データをディスクに保存しておき、再起動時に採取データをテキストファイルに出力することにより、何時再起動が行われても、その時点で障害解析に必要な情報をテキストデータによってメール送信したり、ユーザによる参照を可能にすることができる。user.【0060】なお、本実施形態の障害情報管理プログラムおよびディスクダンプドライバ13、さらには障害通知プログラム14をコンピュータ読み取り可能な記録媒体に記録しておくことにより、その記録媒体を通じてそれら障害情報管理プログラムおよびディスクダンプドライバ13、さらには障害通知プログラム14などをコンピュータに導入するだけで、本実施形態と同様の効果を得ることが可能となる。invention,システム障害の原因調査用の障害情報をより効率的に採取できると共に、ユーザが参照しやすい形式でディスクに保存、さらにはメール送信することにより、解析作業の迅速化を図ることが可能となる。DRAWINGS【図1】本発明の一実施形態に係る計算機システムの機能構成と基本的な処理の流れを説明するための図。FIG.【図2】同実施形態のシステムで利用されるOSと障害情報管理プログラムとの関係を示すフローチャート。embodiment.【図3】同実施形態のシステムで利用されるスタックデータ検索/採取処理の第1の手順を示すフローチャート。embodiment.【図4】図3のスタックデータ検索/採取処理による検索動作を示す図。FIG.【図5】図3のスタックデータ検索/採取処理とオペレーティングシステムとの関係を示す図。3.【図6】同実施形態のシステムで利用されるスタックデータ検索/採取処理の第2の手順を示すフローチャート。embodiment.【図7】図6のスタックデータ検索/採取処理による検索動作を示す図。6.【図8】同実施形態のシステムで利用されるスタックデータ検索/採取処理の第3の手順を示すフローチャート。embodiment.【図9】図3のスタックデータ検索/採取処理によって実行されるスタックデータ解析処理の一例を示す図。FIG.【図10】同実施形態のシステムで利用されるスタックデータのディスク保存/テキスト変換処理の手順を説明するためのフローチャート。前記主メモリ上の全データの内、前記検出されたスタック領域に保存されているシステム状態情報を、前記障害発生の原因を調べるための障害情報として採取する障害情報採取手段とを具備することを特徴とする計算機システム。前記障害処理シーケンスの途中に割り込むことによって、前記スタック領域の検出および前記システム状態情報の採取を実行するように構成されていることを特徴とする請求項1記載の計算機システム。前記システム状態情報を解析し、その解析結果付きのシステム状態情報を前記障害情報として出力することを特徴とする請求項1記載の計算機システム。よって採取された前記システム状態情報を電子メールに添付して前記計算機システムの保守管理サイト宛に送信するメール送信手段をさらに具備することを特徴とする請求項1記載の計算機システム。よって採取されたシステム状態情報を、ディスク装置上の予め決められた特定領域にファイルシステムを介さずに直接的に書き込むシステム状態情報保存手段とを具備することを特徴とする計算機システム。よって採取されたシステム状態情報を書き込むことを特徴とする請求項5記載の計算機システム。前記計算機システムの再起動時に、前記所定ファイルの内容を前記ディスク装置上にテキストファイルとして保存する手段をさらに具備することを特徴とする請求項6記載の計算機システム。前記計算機システムの再起動時に、前記テキストファイルを電子メールに添付して前記計算機システムの保守管理サイト宛に送信するメール送信手段をさらに具備することを特徴とする請求項7記載の計算機システム。よって採取された障害情報をテキスト形式のデータに変換してディスク装置に保存するテキストデータ保存手段とを具備することを特徴とする計算機システム。