(57)【特許請求の範囲】
【請求項１】
プロセッサが複数設けられたマルチプロセッサシステムであって、
該プロセッサは、
発生した障害の深刻度に応じて、障害に関するデータを収集する障害ハンドリング部と、
外部のファイルサーバにアクセスするファイルサーバアクセス部と、
自プロセッサあるいは前記マルチプロセッサシステム内の他プロセッサにファイルシステムが搭載されている場合に、該障害に関するデータを格納可能か判断し、格納可能な場合には、該ファイルシステムに該障害に関するデータを格納し、格納不可能な場合には、該ファイルサーバに該障害に関するデータを格納し、該ファイルシステムが該自プロセッサにも該他プロセッサにも搭載されていない場合には、該ファイルサーバに該障害に関するデータを格納する障害処理部と、
を備えることを特徴とするマルチプロセッサシステム。
【請求項２】
前記障害に関するデータを収集する深刻度の障害は、CPUのリセットを必要とする障害であることを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記CPUのリセットは、前記障害処理部が前記障害に関するデータを、前記ファイルシステムあるいは前記ファイルサーバに格納後に行うことを特長とする請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記障害処理部は、プロセッサ間通信を用いて、前記他プロセッサに前記障害に関するデータを格納するための容量があるか否かを問い合わせることを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項５】
前記障害に関するデータは、障害要因、障害種別に応じた障害データ、障害解析に用いられる解析データを含むことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項６】
前記ファイルシステムは、前記プロセッサに搭載される不揮発性メモリに設けられていることを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項７】
外部のファイルサーバにアクセスするファイルサーバアクセス部を備えたプロセッサが複数設けられたマルチプロセッサシステムにおける障害情報格納方法であって、
該プロセッサは、
発生した障害の深刻度に応じて、障害に関するデータを収集し、
自プロセッサあるいは前記マルチプロセッサシステム内の他プロセッサにファイルシステムが搭載されている場合に、該障害に関するデータを格納可能か判断し、格納可能な場合には、該ファイルシステムに該障害に関するデータを格納し、格納不可能な場合には、該ファイルサーバに該障害に関するデータを格納し、
該ファイルシステムが該自プロセッサにも該他プロセッサにも搭載されていない場合には、該ファイルサーバに該障害に関するデータを格納する、
ことを特徴とする障害情報格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
通常、ルータなどの通信装置は、シェルフに、プロセッサなどを搭載した基板を搭載することによって構成される。このような基板は、シェルフに搭載する構成としては１単位となるので、以下においては、基板Unitと呼ぶ。
【０００３】
従来の基板Unit上は、機能分散したマルチプロセッサ構成となっている。ところで、基板Unitにおいて、障害が発生した場合には、障害の分析を行い、対策を施すことが要求される。そのためには、障害を解析するためのデータ（障害データ、解析データ等）を取得する必要がある。
【０００４】
メインプロセッサまたはサブプロセッサ（便宜的にメインとサブのプロセッサに分けて考えるが、機能的に差異があるわけではない）にてWDT(Watch Dog Timeout)など、障害種別が基板Unitにとって深刻なレベルの障害が発生したとする。障害データを収集する際、障害が発生したプロセッサに具備されている、ファイルシステムや不揮発性メモリの障害データ収集用に準備した領域に障害データ、解析データ等が格納される。当該領域が、収集データに対して予め十分な容量を確保できない場合、障害データは最低限のものだけを選択して収集するようにしていた。
【０００５】
サブプロセッサにてWDTなど、障害種別が基板Unitにとって深刻なレベルの障害が発生し、サブプロセッサにファイルシステムが具備されていない場合、障害データを破棄するか、ファイルシステムを持ったプロセッサ(メインプロセッサまたは他のサブプロセッサ)に収集してもらっていた。実際、組み込みシステムでは、コストの関係で全てのプロセッサにファイルシステムを実装しないケースが多い。
【０００６】
従来技術には、ネットワークサーバに障害再現、障害検出及び状態確認を行うためのハードウェアの内容を保存するものがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−６５８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来の技術では以下の問題に対応できない。
(1)プロセッサに具備されたファイルシステムの容量が小さいために、必要最低限のデータだけを収集する場合、からなずしも解析に有効なデータが全て揃っていない事がありうる。
(2)サブプロセッサにファイルシステムが具備されておらず、障害データを破棄してしまう場合、障害解析が困難になる。
(3)サブプロセッサにファイルシステムが具備されておらず、障害データはファイルシステムを持ったプロセッサが収集する場合、ファイルシステムを持ったプロセッサ側のファイルシステムの条件によって収集データのデータ量が左右されてしまい、(1)で記載した問題となってしまう。
【０００９】
以下の実施形態では、障害解析の効率化を促進できるマルチプロセッサシステムを提供する。
【課題を解決するための手段】
【００１０】
以下の実施形態の一側面におけるマルチプロセッサシステムは、プロセッサが複数設けられたマルチプロセッサシステムであって、該プロセッサは、発生した障害の深刻度に応じて、障害に関するデータを収集する障害ハンドリング部と、外部のファイルサーバにアクセスするファイルサーバアクセス部と、自プロセッサあるいは前記マルチプロセッサ内の他プロセッサにファイルシステムが搭載されている場合に、該障害に関するデータを格納可能か判断し、格納可能な場合には、該ファイルシステムに該障害に関するデータを格納し、格納不可能な場合には、該ファイルサーバに該障害に関するデータを格納し、該ファイルシステムが該自プロセッサにも該他プロセッサにも搭載されていない場合には、該ファイルサーバに該障害に関するデータを格納する障害処理部とを備える。
【発明の効果】
【００１１】
以下の実施形態によれば、障害解析の効率化を促進できるマルチプロセッサシステムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態の第１の構成例を説明する図（その１）である。
【図２】本実施形態の第１の構成例を説明する図（その２）である。
【図３】本実施形態の第１の構成例を説明する図（その３）である。
【図４】本実施形態の第１の構成例を説明する図（その４）である。
【図５】本実施形態の第１の構成例を説明する図（その５）である。
【図６】本実施形態の第１の構成例を説明する図（その６）である。
【図７】本実施形態の第１の構成例を説明する図（その７）である。
【図８】本実施形態の第１の構成例を説明する図（その８）である。
【図９】本実施形態の第１の構成例を説明する図（その９）である。
【図１０】本実施形態の第１の構成例を説明する図（その１０）である。
【図１１】本実施形態の第１の構成例を説明する図（その１１）である。
【図１２】本実施形態の第１の構成例を説明する図（その１２）である。
【図１３】本実施形態の第１の構成例を説明する図（その１３）である。
【図１４】本実施形態の第１の構成例を説明する図（その１４）である。
【図１５】本実施形態の第１の構成例を説明する図（その１５）である。
【図１６】本実施形態の第１の構成例を説明する図（その１６）である。
【図１７】本実施形態の第１の構成例を説明する図（その１７）である。
【図１８】本実施形態の第１の構成例を説明する図（その１８）である。
【図１９】本実施形態の第２の構成例を説明する図（その１）である。
【図２０】本実施形態の第２の構成例を説明する図（その２）である。
【図２１】本実施形態の第２の構成例を説明する図（その３）である。
【図２２】本実施形態の第３の構成例を説明する図（その１）である。
【図２３】本実施形態の第３の構成例を説明する図（その２）である。
【図２４】本実施形態の第３の構成例を説明する図（その３）である。
【図２５】本実施形態を具体的な構成に適用した場合を説明する図（その１）である。
【図２６】本実施形態を具体的な構成に適用した場合を説明する図（その２）である。
【図２７】本実施形態を具体的な構成に適用した場合を説明する図（その３）である。
【図２８】本実施形態を具体的な構成に適用した場合を説明する図（その４）である。
【図２９】本実施形態を具体的な構成に適用した場合を説明する図（その５）である。
【発明を実施するための形態】
【００１３】
本実施形態では、障害ハンドリング部で障害解析を行った結果、障害種別が基板Unitにとって深刻なレベル（Watch Dog Timeout（WDTと記載）や命令例外やメモリ例外といったCPUコアのリセットを必要とする深刻なレベル）の障害で、かつ、大量の障害データを必要とする場合の障害データ収集に関して述べる。
【００１４】
基板UNITは、CPUやメモリが搭載された基板の事であり、要求機能ごとに基板の機能が違うためUnitとしている。この基板Unitが機能分散したマルチプロセッサ構成となっているとする。
【００１５】
メインプロセッサまたはサブプロセッサにて障害が発生した時、障害ハンドリング部で障害解析を行う。そして、障害種別が基板Unitにとって深刻なレベル(WDTや命令例外やメモリ例外といったCPUコアのリセットを必要とする深刻な障害）であるか否かを自動判断する。そして、深刻なレベルの場合に障害データと解析データを詳細に収集し、軽微な場合は状況に合わせて収集を行なわないことなどする。障害種別が深刻なレベルであったと判断できた場合、障害種別毎に異なる障害データを自動的に選択し、障害種別毎に異なる障害解析に必要なデータ(レジスタ情報、メモリ情報、呼処理情報)を自動的に選択する。その全ての障害データ、解析データ等を収集してからCPUのリセットを行なう。そして、障害データと解析データを収集する際、収集すべき情報のサイズが基板UNIT内の不揮発性メモリ(自プロセッサ配下及び他プロセッサ配下の不揮発性メモリ)に格納しきれるのかをプロセッサ間通信により自動判定する。格納しきれない場合のみ、サブプロセッサ自身が構成可能な仮想ファイルシステムのリストからファイルシステムを選択して、外部のファイルサーバに接続し、障害データを収集保存させる。
【００１６】
以上により、具備されているファイルシステムや不揮発性メモリ容量の制限に依存することなく、障害データと解析データを収集することができるようになる。
【００１７】
したがって、障害種別に対応した、より多くの、障害情報を障害データとして残す事が可能となる。
【００１８】
これにより、より多くの情報を障害ログとして残す事が可能となり、障害解析がより実施しやすくなり、システムの平均修理時間(MTTR;Mean Time To Repair)を短縮できる。
【００１９】
図１〜図１８は、本実施形態の第１の構成例を説明する図である。
第１の構成例では、メインプロセッサ以外のサブプロセッサにて障害が発生し、サブプロセッサにファイルシステム(または不揮発性メモリ)が具備されておらず、メインプロセッサに具備されているが、メインプロセッサ側のファイルシステムの残量が少ない場合を示す。
【００２０】
図１においては、基板Unit９は、サブプロセッサ１０とメインプロセッサ１１からなっているとする。メインプロセッサ１１とサブプロセッサ１０との区別は便宜的なものであって、同じプロセッサであってよい。ここでは、サブプロセッサ１０において障害が発生するとする。サブプロセッサ１０のCPU１２において、CPUコアが障害を検出すると、これがシステム障害割り込み部１２に通知される。システム障害割り込み部１２は、割り込み命令を発行するが、障害ハンドリング部１４にこれが通知され、障害ハンドリング部１４が起動され、後述するような障害分析処理が行われる。なお、障害ハンドリング部１４は、CPUが実効する、基板Unitの機能を実現するためのプログラムの実行において障害が発生した場合も起動される。図１のCall処理部２２は、メインプログラムのサブルーチンなどの呼び出し処理を行うもので、呼び出し処理において異常が発生した場合に、障害ハンドリング部１４を起動する。障害ハンドリング部１４の障害分析結果は、障害処理部１５に通知される。障害処理部１５は、サブプロセッサ１０にファイルシステムが無いので、メインプロセッサ１１のファイルシステム残量チェック部１９に、メインプロセッサ１１のファイルシステム２０の残量を問い合わせる。ファイルシステム２０の残量が少なくて障害データ等を格納できない場合、障害処理部１５は、仮想ファイルシステムプロトコル処理部１６に、ファイルサーバ２１のファイルシステムへのアクセスを要求する。仮想ファイルシステムプロトコル処理部１６は、NFS(Network File System)やVFS(Virtual File System)といったプロトコルの処理をする。仮想ファイルシステムプロトコル処理部１６でプロトコル処理されたアクセス要求は、ETH(Ethernet)ドライバ１７、物理インタフェースPHY18を介して、ファイルサーバ２１に通知される。これにより、障害データ等は、ファイルサーバ２１のファイルシステムに格納される。障害データ等の格納後、障害処理部１５は、CPU１２をリセットする。
【００２１】
システム障害割り込み部１３は、障害ハンドリング部１４を起動する。障害ハンドリング部１４は、障害分析を実施し、CPUのリセットを必要とするような深刻な障害の判断を行う深刻度を自動判断する。また、深刻なレベルならデータ収集し、深刻でない場合はデータ収集を実施しないことにする。さらに、深刻なレベルの障害要因によって(WDTや命令例外やメモリ例外などの要因によって)、それぞれに有効な障害データを自動選択し、深刻なレベルの障害要因によって、それぞれの解析に必要なデータ(レジスタ情報、メモリ情報、呼処理情報)を自動選択する。そして、障害ハンドリング部１４は、障害処理部を起動する。
【００２２】
図２は、システム障害割り込み部と障害ハンドリング部の動作を示すフローチャートである。
【００２３】
CPUで障害が検出されると、システム障害割り込み部は、障害割り込み番号によって、起動するプログラムをVector Table化して保持しているので、ステップＳ１１で、障害の種別が分かるindex値を用いて障害ハンドリング部を起動する。また、システム障害割り込み部からの起動とは別に、Call処理において障害が発生した場合にも、障害ハンドリング部が起動される。ステップＳ１２において、Call処理において異常を検出した際には、障害種別が分かるindex値を用いて、障害ハンドリング部を起動する。
【００２４】
障害ハンドリング部では、ステップＳ１３において、障害の深刻度を自動判定する。ステップＳ１４で障害の深刻度に応じて、障害データを収集するか否かを判断する。深刻度が大きければデータを収集し、深刻度が小さければデータ収集しないとする。ここで、システム障害割り込み部からの障害ハンドリング部の起動は深刻な障害と判断し、Call処理部からの起動は軽微な障害と判断する。そして、深刻な障害と軽微な障害の双方について、深刻度を調べ、データを収集するか判断する。ステップＳ１４で、障害データを収集しないと判断された場合には、ステップＳ１７に進む。ステップＳ１４で、障害データを収集すると判断された場合には、ステップＳ１５において、収集障害データ自動選択処理を行い、ステップＳ１６において、収集解析データ自動選択処理を行い、ステップＳ１７に進む。ステップＳ１７では、データ収集の有無、障害データ種別、解析データ種別とともに、障害通知を障害処理部に行う。なお、ステップＳ１３、Ｓ１５、Ｓ１６の詳細は以下に述べる。
【００２５】
図３及び図４は、深刻度自動判定処理を説明する図である。
図４は、深刻度判定テーブルの例を説明する図である。
【００２６】
障害が発生すると、障害ハンドリング部に障害番号が通知されるが、この障害番号と起動するプログラムの格納されているアドレスとが対応付けられており、このアドレスをVectorアドレスと呼ぶ。深刻度判定テーブルは、システム障害用と軽微な障害用とが設けられる。（１）のシステム障害用深刻度判定テーブルでは、Vectorアドレスをインデックスとして、障害データを収集するか否かを示すフラグと、障害深刻度を示す数値が予め格納されている。（２）の軽微な障害用深刻度判定テーブルにおいては、障害種別をインデックスとして、障害データを収集するか否かを示すフラグと、障害深刻度を示す数値が予め格納されている。
【００２７】
図３のフローチャートにおいて、ステップＳ２０で、発生した障害がシステム障害割り込み部からの例外割り込みなどのシステム障害か、Call処理部からの障害かを判断する。Call処理部からの障害は、軽微な障害と判断する。
【００２８】
ステップＳ２０で、例外割り込みなどのシステム障害と判断された場合には、ステップＳ２１で、システム障害用深刻度判定テーブル（図４の（１））を、受け取ったVectorアドレスをインデックスとして参照する。ステップＳ２２において、障害データ収集フラグがＯＮか否かを判断する。ステップＳ２２の判断で、当該フラグがＯＮと判断された場合には、ステップＳ２３において、障害深刻度のデータを返り値として返して、処理を終了する。ステップＳ２２の判断で、当該フラグがＯＦＦであると判断された場合には、ステップＳ２４で、障害深刻度のデータを０として、返り値として返して、処理を終了する。
【００２９】
ステップＳ２０において、障害が軽微な障害であると判断された場合には、ステップＳ２５において、軽微な障害用深刻度判定テーブル（図４の（２））を、障害種別をインデックスとして参照する。ステップＳ２６において、障害データ収集フラグがＯＮか否かを判断する。ステップＳ２６で、当該フラグがＯＮと判断された場合には、ステップＳ２７において、深刻度データを返り値として返して、処理を終了する。ステップＳ２６で、当該フラグがＯＦＦと判断された場合には、ステップＳ２８において、深刻度データを０として、返り値として返して、処理を終了する。
【００３０】
図５及び図６は、収集障害データ自動選択処理を説明する図である。
図６は、システム障害用収集障害データテーブルの例を説明する図である。ここでは、２次テーブル構造のテーブルの例を示すが、１次構造であってもよい。（１）のテーブルは、深刻度データをインデックスとして、（２）のテーブルのインデックスを示すVectorアドレスと、そのアドレスの有効ビットを格納する。アドレスの有効ビットは、登録されているVectorアドレスが有効なものであるか否かを示す。（２）のテーブルは、（１）のテーブルで得られるVectorアドレスをインデックスとして、障害データとその有効ビットが格納される。障害データは、発生した障害の内容を示すデータである。
【００３１】
図５のフローチャートにおいて、ステップＳ３０では、障害がシステム障害か軽微な障害かを判断する。ステップＳ３０で、システム障害と判断された場合には、ステップＳ３１において、図６（１）と（２）のシステム障害用収集障害データテーブルを深刻度データとVectorアドレスをインデックスとして参照する。ステップＳ３０において、軽微な障害と判断された場合には、ステップＳ３２において、軽微な障害用収集障害データテーブルを深刻度データと障害種別をインデックスとして参照する。図６には、システム障害用収集障害データテーブルしか示していないが、軽微な障害用収集障害データテーブルにおいては、図６の（１）のテーブルが深刻度データをインデックスとして、障害種別を格納するものとなる。また、同様に、図６の（２）のテーブルが、障害種別をインデックスとして、障害データを格納するものとなる。ステップＳ３３では、収集障害データの情報を返り値として返して処理を終了する。
【００３２】
図７及び図８は、解析データ自動選択処理を説明する図である。
図８は、システム障害用解析データテーブルの例を説明する図である。ここでは、２次テーブル構造のテーブルを示しているが、１次構造のものであっても良い。図８の（１）のテーブルは、深刻度データをインデックスとして、図８の（２）のテーブルのインデックスであるVectorアドレスと、そのアドレスの有効ビットを格納する。アドレスの有効ビットは、登録されているVectorアドレスが有効なものであるか否かを示す。図８の（２）のテーブルは、図８の（１）のテーブルで得られるVectorアドレスをインデックスとして、解析データとその有効ビットを格納する。解析データは、発生した障害において、どのようなハードウェアの動作が行われていたかを示すデータである。解析データは、障害の解析に用いられる。
【００３３】
図７において、ステップＳ３５で、障害がシステム障害か軽微な障害かを判断する。ステップＳ３５の判断で、システム障害と判断された場合には、ステップＳ３６において、システム障害用解析データテーブルを深刻度データとVectorアドレスをインデックスとして参照する。ステップＳ３５の判断で、軽微な障害と判断された場合には、ステップＳ３７で、軽微な障害用解析データテーブルを深刻度データと障害種別をインデックスとして参照する。図８には、システム障害用解析データテーブルしか示していないが、軽微な障害用解析データテーブルにおいては、図８の（１）のテーブルが深刻度データをインデックスとして、障害種別を格納するものとなる。また、同様に、図８の（２）のテーブルが、障害種別をインデックスとして、解析データを格納するものとなる。ステップＳ３８において、解析データを返り値として返して、処理を終了する。
【００３４】
障害処理部は、障害ハンドリング部から渡された情報から収集データサイズを計算する。また、自プロセッサ配下にファイルシステムが存在するかを判断し、存在する際は、その残量によってデータが収集可能か否かを判断する。自プロセッサ配下にファイルシステムが存在しない場合、他のプロセッサ配下にファイルシステムが存在するかを判断し、存在する際はデータが収集可能か否かを判断する。他のプロセッサ配下にファイルシステムが存在する場合、他プロセッサのファイルシステムの残量がデータを格納可能なだけ存在するか判断するために、プロセッサ間通信にて他のプロセッサ配下のファイルシステムの残量をチェックする。チェックの結果を返り値として返し、データが収集可能か否を判断する。仮想ファイルシステムを接続する先のリストデータから優先度の高いものからファイルシステムを選択する。また、システムCallを使用し、仮想ファイルシステムのプロトコル(NFSやVFS)経由でLANから先のファイルサーバ上のファイルシステムをマウントする。障害要因と障害データを、自プロセッサ配下の不揮発性メモリ/他プロセッサ配下の不揮発性メモリ/仮想ファイルシステムのいずれかに出力する。障害要因と障害データの出力が完了するまで待って、CPUにリセット信号を出し、リセットする。
【００３５】
図９は、障害処理部の処理の流れを示すフローチャートである。
障害ハンドリング部から障害処理部が起動されると、ステップＳ４０において、障害ハンドリング部から渡された情報から、収集データサイズを計算する。ステップＳ４１において、自プロセッサ、あるいは、他プロセッサの不揮発性メモリに格納可能か問い合わせる。他プロセッサのファイルシステムの格納領域の残量は、プロセッサ間通信で問い合わせる。
【００３６】
ステップＳ４２において、データの収集が不可能と判断された場合には、ステップＳ４３において、仮想ファイルシステムを接続する先のファイルサーバ接続先リストからファイルサーバを選択し、ステップＳ４４において、仮想ファイルシステムをマウントする。ステップＳ４５において、仮想ファイルシステムに障害要因、障害データ、障害解析用データを出力し、ステップＳ４６に進む。
【００３７】
ステップＳ４２において、データ収集可能と判断された場合には、ステップＳ４８において、収集先が自プロセッサか他プロセッサかを判断する。ステップＳ４８の判断で、自プロセッサに格納する場合には、ステップＳ４９において、自プロセッサの不揮発性メモリに障害要因、障害データ、障害解析用データを出力する。ステップＳ４８の判断で、他プロセッサに格納する場合には、ステップＳ５０において、他プロセッサの不揮発性メモリに、障害要因、障害データ、障害解析用データを出力する。なお、ステップＳ４８で自プロセッサ、他プロセッサのいずれを選ぶかは次の図１０で説明する処理の結果による。
【００３８】
ステップＳ４６において、障害要因、障害データ、障害解析用データの出力が完了するのを待ち、ステップＳ４７において、CPUをリセットする。
【００３９】
図１０は、自プロセッサ／他プロセッサ不揮発性メモリ格納可能選択処理のフローチャートである。
【００４０】
ステップＳ５５において、自プロセッサにファイルシステムがあるか否かを判断する。ステップＳ５５で、無いと判断された場合には、ステップＳ５６において、他プロセッサにファイルシステムがあるか否かを判断する。ステップＳ５６の判断で、有りとなった場合には、ステップＳ５７において、他プロセッサのファイルシステムの残量をプロセッサ間通信でチェックする。ステップＳ５８において、残量があるか否かを判断する。ステップＳ５８の判断で、無いと判断された場合には、ステップＳ５９において、データ収集不可能という判断を返り値として返して処理を終了する。ステップＳ５８の判断で、有りと判断された場合には、ステップＳ６０において、他プロセッサでデータ収集可能という判断を返り値として返して処理を終了する。
【００４１】
ステップＳ５６の判断で、他プロセッサにファイルシステムがないと判断された場合には、ステップＳ６１において、データ収集不可能という判断を返り値として返して処理を終了する。
【００４２】
ステップＳ５５の判断で、自プロセッサにファイルシステムがあると判断された場合には、ステップＳ６２において、入力されたファイルのサイズと自プロセッサのファイルシステムの残量とを比較する。ステップＳ６３において、残量が十分か否かを判断する。ステップＳ６３の判断で、残量が不十分となった場合には、ステップＳ６４において、データ収集不可能という判断を返り値として返して処理を終了する。ステップＳ６３の判断で、残量が十分となった場合には、ステップＳ６５で、自プロセッサでデータを収集可能という判断を返り値として返して処理を終了する。
【００４３】
図１１は、他プロセッサファイルシステム残量チェック処理（図９のステップＳ４１）のフローチャートである。
【００４４】
ステップＳ７０において、要求元の自プロセッサから要求先の他プロセッサに、プロセッサ間通信で、ファイルシステムの残量のチェックリクエストを送信する。ステップＳ７１において、他プロセッサでは、ファイルシステムの残量のチェックリクエストを受信する。ステップＳ７２において、必要なファイルサイズをチェックする。ステップＳ７３において、他プロセッサは、チェック結果をプロセッサ間通信で自プロセッサに通知する。ステップＳ７４において、自プロセッサは、プロセッサ間通信で結果を受信し、ステップＳ７５において、結果を返り値として返して処理を終了する。
【００４５】
図１２及び図１３は、仮想ファイルシステムの選択処理（図９のステップＳ４３）を説明する図である。
【００４６】
図１３は、仮想ファイルシステムの接続先ファイルサーバリストの例を示す図である。接続先のファイルサーバのIPアドレスと優先度を対にしてリストに登録する。これらの仮想ファイルシステムを接続する先のファイルサーバのリストはCPUのプログラムが参照可能なリスト形式のデータでＲＡＭに格納される。リスト内の接続先のうち数個はデフォルト接続先としてシステム固定で準備する。このデータは、システムが立ち上がった際、ＲＡＭ上にロードする。
【００４７】
優先度は以下の考え方で決定する。
・デフォルトのシステム固定データ（ＲＯＭプログラム内のデータで用意する）の時点で0-10の優先度をつけておく(数字が小さいほど優先度が高い)。
・システムが立ち上がった際、ＲＡＭ上にロードして、リスト形式のデータを形成する。その後、リストの先頭のＩＰアドレスからpingを送信し、hop数の少ないものが近いサーバとして、「優先度×hop数の値」が小さいものからリストの並べ替えを行い、リストの先頭ほど優先度が高くなるようにする。次に優先度の高いものの選択はリストデータの先頭からデータを検索することで選択できる。
【００４８】
図１２において、ステップＳ８０では、仮想ファイルサーバの接続先ファイルサーバリストテーブルを検索し、ステップＳ８１で、仮想ファイルサーバ接続先ファイルサーバリストテーブルの先頭からIPアドレスを取り出す。ステップＳ８２において、取得したIPアドレスにpingを送信し、返信を得ることができるかチェックする。ステップＳ８３で、pingの送信がOKならば、ステップＳ８４において、当該IPアドレスの仮想ファイルサーバを接続対象とする。ステップＳ８３において、pingの送信がNGならば、ステップＳ８０に戻る。
【００４９】
図１４〜図１６は、仮想ファイルサーバの接続先ファイルサーバリストテーブルの生成方法を説明する図である。
【００５０】
図１６は、デフォルトのファイルサーバのIPアドレスの固定データの例を示す。図１６においては、接続先ファイルサーバのIPアドレスがリストアップされ、仮の優先度が高いものが、リストの上のほうに登録されている。これは、デフォルトのリストであるため、システムの設計時に予め作成しておくもので、ROMなどに格納される。
【００５１】
図１４のフローチャートにおいて、ステップＳ８９では、デフォルトのファイルサーバリストのIPアドレスの固定データを読み込む。ステップＳ９０において、デフォルトのファイルサーバのIPアドレスの固定データを先頭から１つ読み出す。ステップＳ９１において、読み出したIPアドレス宛にpingを送信し、ステップＳ９２で、正常に返信が得られるか判断する。ステップＳ９２で、正常に返信が得られない場合には、ステップＳ８９に戻る。ステップＳ９２で、正常に返信が得られる場合には、ステップＳ９３において、pingの結果受け取ったhop数を取得する。ステップＳ９４において、（データのインデックス値（仮優先度））×（hop数の値）＝（本優先度）として、当該IPアドレスをワークエリアに格納し、ステップＳ８９に戻る。ステップＳ８９からステップＳ９４の処理を、デフォルトリストの全ての固定データにあるIPアドレスについて行ったら、ステップＳ９５において、ワークエリアの情報を、本優先度の順番で並び替えながら、仮想ファイルサーバの接続先ファイルサーバリストテーブルを生成する。
【００５２】
図１５のオペレーション処理は、ユーザからの操作を受け付ける処理という意味である。図１５において、ステップＳ９６では、ユーザからの操作により、追加変更したい仮想ファイルシステムの接続先を受け付ける。ステップＳ９７において、受け付けたIPアドレスに対し、pingを送信する。ステップＳ９８において、pingの返信が正常に受け取れたか否かを判断する。pingの返信を正常に受け取れた場合には、ステップＳ９９において、pingの結果からhop数を取得する。ステップＳ１００において、（データのインデックス値（仮優先度））×（hop数の値）＝（本優先度）として、当該IPアドレスをワークエリアに格納し、ステップＳ１０２に進む。ステップＳ９８で、pingの返信が正常に受け取れなかった場合には、ステップＳ１０１において、当該IPアドレスは、追加、変更できない旨をユーザに通知して（表示して）ステップＳ１０２に進む。ステップＳ１０２では、ワークエリアの情報を本優先度の順番で並び替えながら、仮想ファイルサーバの接続先ファイルサーバリストテーブルを生成して、処理を終了する。
【００５３】
図１７は、第１の構成例の全体動作を示す図である。
まず、CPUで障害が発生するとする（１）。すると、システム障害割り込み部を介して、障害ハンドリング部にシステム障害が通知される（２）。障害ハンドリング部では、障害の深刻度自動判定部、収集障害データ自動選択部、収集解析データ自動選択部の処理を行い、障害処理部に障害通知を行う。障害処理部では（３）、障害データの収集サイズの計算を行う。そして、自プロセッサにファイルシステムがあるか、および、他プロセッサにファイルシステムがあるかを判断する。他プロセッサ（例えば、メインプロセッサ）にファイルシステムがある場合には、他プロセッサのファイルシステムの残量を、プロセッサ間通信でチェックする。今、他プロセッサのファイルシステムに残量が十分ないと判断されたとする。すると、つぎに、接続先ファイルサーバリストデータを参照して、リストから接続先のファイルサーバを選択する。そして、仮想ファイルシステムをマウントして、仮想ファイルシステムに、障害要因、障害データ、障害解析用データを出力する。データの出力完了を待って、CPUをリセットする。
【００５４】
図１８は、第１の構成例の一連の処理の流れを示すシーケンス図である。
CPUで障害検出が起こると、障害ハンドリング部では、障害解析、障害深刻度自動判定、収集障害データ自動選択、収集解析データ自動選択を行い、障害通知を障害処理部に行う。なお、収集障害データ自動選択と収集解析データ自動選択は、深刻度にしたがって、処理を分岐して、異なる処理を行う。
【００５５】
障害処理部では、障害通知を受け付けると、自プロセッサ／他プロセッサの不揮発性メモリに障害データや解析データが格納可能か否かを問い合わせる。自プロセッサ／他プロセッサ不揮発性メモリ格納可能判断部では、自プロセッサにファイルシステムがあるか、及び、他プロセッサにファイルシステムがあるかを判断する。今の場合、他プロセッサにファイルシステムがあるとする。すると、ファイルシステム残量チェック部が、プロセッサ間通信で他プロセッサ（メインプロセッサ）にファイルシステムの残量のチェックを依頼する。メインプロセッサのファイルシステム残量チェック部では、残量チェック依頼を受け、必要ファイルサイズをチェックし、不揮発性メモリにアクセスして残量を取得し、結果を自プロセッサ（サブプロセッサ）に通知する。サブプロセッサの自プロセッサ／他プロセッサ不揮発性メモリ格納可能判断部は、残量が十分あるか判断する。今の場合、残量が不十分であるとする。すると、障害処理部にデータを収集しきれない旨の通知が行われる。障害処理部では、接続先ファイルサーバリストデータを参照し、リストからファイルサーバを選択し、仮想ファイルシステムをマウントし、ファイルサーバのファイルシステムにアクセスする。そして、障害要因、障害データ及び解析データをファイルサーバのファイルシステムに出力し、CPUをリセットする。
【００５６】
図１９〜図２１は、本実施形態の第２の構成例を説明する図である。
第２の構成例では、メインプロセッサまたはサブプロセッサにて障害が発生し、自プロセッサにファイルシステム(または不揮発性メモリ)が具備されているが、残量が少なく、仮想ファイルシステムにアクセスする場合を説明する。
【００５７】
図１９において、図１と同様の構成要素には同様の参照符号を付し、それらの説明を省略する。
【００５８】
図１９において、自プロセッサは、メインプロセッサあるいはサブプロセッサである。
CPU１２の障害をシステム障害割り込み部１３で受けて、障害ハンドリング部１４を起動する。障害ハンドリング部１４で障害分析を行い、その情報を基に障害処理部１５を起動する。自プロセッサには、ファイルシステム３０が設けられているが、残量が少ないとしている。そこで、ファイルサーバの選択をし、障害要因、障害データ・障害解析データ格納を行い、CPUをリセットする。
【００５９】
図２０は、第２の構成例の全体の流れを示す図である。
まず、CPUで障害が発生するとする（１）。すると、システム障害割り込み部を介して、障害ハンドリング部にシステム障害が通知される（２）。障害ハンドリング部では、障害の深刻度自動判定部、収集障害データ自動選択部、収集解析データ自動選択部の処理を行い、障害処理部に障害通知を行う。障害処理部では（３）、障害データの収集サイズの計算を行う。そして、自プロセッサにファイルシステムがあるかを判断する。自プロセッサにファイルシステムがある場合には、自プロセッサのファイルシステムの残量をチェックする。今、自プロセッサのファイルシステムに残量がないと判断されたとする。すると、つぎに、接続先ファイルサーバリストデータを参照して、リストから接続先のファイルサーバを選択する。そして、仮想ファイルシステムをマウントして、仮想ファイルシステムに、障害要因、障害データ、障害解析用データを出力する。データの出力完了を待って、CPUをリセットする。
【００６０】
図２１は、第２の構成例の一連の処理の流れを示すシーケンス図である。
CPUで障害検出が起こると、障害ハンドリング部では、障害解析、障害深刻度自動判定を行い、収集障害データ自動選択、収集解析データ自動選択（収集データの自動選択）を行い、障害通知を障害処理部に行う。なお、収集データの自動選択は、深刻度にしたがって、処理を分岐して、異なる処理を行う。
【００６１】
障害処理部では、障害通知を受け付けると、自プロセッサの不揮発性メモリに障害データや解析データ等が格納可能か否かを問い合わせる。ファイルシステム残量チェック部が、自プロセッサにファイルシステムの残量チェックを依頼する。自プロセッサのファイルシステム残量チェック部では、残量チェック依頼を受け、ファイルシステムの残量を取得し、結果を障害処理部に通知する。障害処理部は、残量が十分あるか判断する。今の場合、残量が不十分であるとする。障害処理部では、接続先ファイルサーバリストデータを参照し、リストからファイルサーバを選択し、仮想ファイルシステムをマウントし、ファイルサーバのファイルシステムにアクセスする。そして、障害要因、障害データ及び解析データをファイルサーバのファイルシステムに出力し、CPUをリセットする。
【００６２】
図２２〜図２４は、本実施形態の第３の構成例を説明する図である。
図２２において、図１９と同様の構成要素には同様の参照符号を付し、それらの説明を省略する。
【００６３】
第３の構成例では、メインプロセッサまたはサブプロセッサにて障害が発生し、自プロセッサ及び他プロセッサにファイルシステム(または不揮発性メモリ)が具備されてない場合を示す。
【００６４】
CPU１２の障害をシステム障害割り込み部１３で受けて、障害ハンドリング部１４を起動する。障害ハンドリング部１４で障害分析を行い、その情報を基に障害処理部１５を起動する。ファイルサーバの選択をし、障害要因、障害データ、障害解析データ格納を行い、CPUをリセットする。
【００６５】
図２３は、第３の構成例の全体の流れを示す図である。
まず、CPUで障害が発生するとする（１）。すると、システム障害割り込み部を介して、障害ハンドリング部にシステム障害が通知される（２）。障害ハンドリング部では、障害の深刻度自動判定部、収集障害データ自動選択部、収集解析データ自動選択部の処理を行い、障害処理部に障害通知を行う。障害処理部では（３）、障害データの収集サイズの計算を行う。そして、自プロセッサ及び他プロセッサにファイルシステムがあるかを判断する。今、自プロセッサ及び他プロセッサにファイルシステムがないと判断されたとする。すると、つぎに、接続先ファイルサーバリストデータを参照して、リストから接続先のファイルサーバを選択する。そして、仮想ファイルシステムをマウントして、仮想ファイルシステムに、障害要因、障害データ、障害解析用データを出力する。データの出力完了を待って、CPUをリセットする。
【００６６】
図２４は、第３の構成例の一連の処理の流れを示すシーケンス図である。
CPUで障害検出が起こると、障害ハンドリング部では、障害解析、障害深刻度自動判定を行い、収集障害データ自動選択、収集解析データ自動選択（収集データの自動選択）を行い、障害通知を障害処理部に行う。なお、収集データの自動選択は、深刻度にしたがって、処理を分岐して、異なる処理を行う。
【００６７】
障害処理部では、障害通知を受け付けると、自プロセッサあるいは他プロセッサにファイルシステムがあるか否かを判断する。今の場合、自プロセッサにも他プロセッサにもファイルシステムが無いとする。障害処理部では、接続先ファイルサーバリストデータを参照し、リストからファイルサーバを選択し、仮想ファイルシステムをマウントし、ファイルサーバのファイルシステムにアクセスする。そして、障害要因、障害データ及び解析データをファイルサーバのファイルシステムに出力し、CPUをリセットする。
【００６８】
図２５〜図２９は、本実施形態を具体的な構成に適用した場合を説明する図である。
図２５〜図２７を参照して、サブプロセッサでWDTが発生した際、サブプロセッサにファイルシステムが具備されていない場合、かつ、メインプロセッサに十分な容量のファイルシステムが存在する場合を説明する。
【００６９】
図２５で、WDTドライバ４０は、サブプロセッサ１０でWDTが発生した際、WDTの発生を示す割り込みを発生させる。また、障害種別の解析と障害収集データの自動判断を実施する。ＯＳ（Operating System）４１は、WDTドライバ４０からの割り込みを、割り込みハンドラ経由でデータ収集処理部４２に通知する。データ収集処理部４２は、ＯＳ４１から割り込みハンドラ経由で起動され、以下の処理を順次行なう。
（１）割り込み要求を受け付ける
（２）メインプロセッサ１１のファイルシステム残量をチェックするためのプロセッサ間通信を行い、障害データを保存できるだけのサイズがあるかをチェックする。
（３）仮想ファイルシステムを接続する接続先ファイルサーバリストデータから優先度の高いものを選択する。
（４）システムCallを使用し、仮想ファイルシステムのプロトコル(NFSやVFS)経由でLANから先のファイルサーバ上のファイルシステムをマウントする。
（５）WDT要因や障害データを全て仮想ファイルシステム上にセーブする
（６）CPUをリセットする。
【００７０】
通信用ドライバ４３は、メインプロセッサ１１と通信するためのドライバ(PCI（Peripheral Component Interconnect）バスドライバ、割り込みドライバ等)である。メインプロセッサ側のサイズチェック処理部４４は、問い合わせがあった場合、ファイルシステムの使用可能サイズをチェックし、結果をサブプロセッサ１０に知らせる処理を行う。仮想ファイルシステムプロトコル４５は、NFS(Network File System)やVFS(Virtual File System)といったプロトコルである。ETHER NETドライバ（ETHドライバ）４６は、イーサネット（登録商標）による通信を行うためのドライバであり、PHY４７を制御し、仮想ファイルシステムプロトコルから制御されるドライバである。PHY４７は、LAN経由でサーバに接続する物理的なデバイスである。LAN４８は、ファイルサーバ４９と基板Unit９とを接続する。ファイルサーバ４９は、基板Unit９と仮想的に接続されるサーバである。
【００７１】
サブプロセッサにおいてWDTが発生し、ハングアップ通知(WDT割り込み)をWDTドライバで検出する。WDTドライバは プロセッサでWDTが発生した際、WDT発生の意味を持つUser割り込みを発生させる。OSの処理はWDTドライバからのUser割り込みを、割り込みハンドラ経由でデータ収集処理部に通知することである。データ収集処理部は割り込み要求を受け付ける。
【００７２】
データ収集処理部は、図２６及び図２７のPCI通信処理により、メインプロセッサと通信する。もし、メインプロセッサのファイルシステムに障害データを保存できるだけのサイズが残っていれば、サブプロセッサ側のWDT要因や障害データを全てメインプロセッサ配下のファイルシステムにPCI通信にて送信格納する。そして、CPUリセットしてサブプロセッサを立ち上げなおす。
【００７３】
図２６は、ファイルシステムの残量チェックのためのPCI通信処理を説明する図である。
【００７４】
ステップＳ１１０において、サブプロセッサ（ここで障害が発生したとする）は、PCI通信を開始し、ステップＳ１１１において、PCI空間の通信種別をレジスタに書き込む。ここでは、ファイルサイズチェックを書き込む。ステップＳ１１６において、PCI空間の通信トリガをPCI送信A-＞B方向のレジスタに書き込む。メインプロセッサでは、ステップＳ１１２において、通信領域をポーリングしておき、ステップＳ１１３において、通信トリガを認識する。ステップＳ１１４において、通信要求を認識し、PCI割り込みを発生させる。ステップＳ１２３において、通信リクエストを読み取り、ステップＳ１１５において、ファイルシステムの残量をチェックする。ステップＳ１１８において、PCI空間の通信結果をレジスタに書き込み、ステップＳ１１９で、PCI空間の通信トリガをPCI送信B->A方向のレジスタに書き込む。ここでは、結果は、データの収集が可能という旨のデータである。サブプロセッサでは、ステップＳ１１７において、通信領域のポーリングを開始し、ステップＳ１２０において、メインプロセッサからの通信トリガを認識する。ステップＳ１２１において、通信要求を認識して、PCI割り込みを発生する。ステップＳ１２２において、PCI通信結果を読み取り、処理を終了する。
【００７５】
図２７は、WDT要因や障害データ等を書き込む際のPCI通信を説明する図である。
サブプロセッサは、ステップＳ１３０において、PCI通信を開始し、ステップＳ１３１において、PCI空間の通信種別をレジスタに書き込む。ここでは、ファイルを書き込む旨の書き込みを行う。ステップＳ１３２において、PCI空間の通信トリガをPCI送信A->B方向のレジスタに書き込む。ステップＳ１３３で、PCI空間の送信レジスタにファイルサイズとファイルを書き出す。メインプロセッサでは、ステップＳ１３４において、通信領域のポーリングを行っており、ステップＳ１３５において、通信トリガを認識する。ステップＳ１３６において、通信要求を認識し、PCI割り込みを発生する。ステップＳ１３７において、通信リクエストを読み取り、ステップＳ１３８において、ファイルサイズ分のファイルの内容を読み出し、自ファイルシステムに書き出す。ステップＳ１３９において、PCI空間の通信結果をレジスタに書き込み、ステップＳ１４０で、PCI空間の通信トリガをPCI送信B->A方向のレジスタに書き込む。サブプロセッサでは、ステップＳ１４１において、通信領域のポーリングを始めており、ステップＳ１４２において、通信トリガを認識する。ステップＳ１４３において、通信要求を認識し、PCI割り込みを発生する。ステップＳ１４４において、PCI通信結果を読み取り、処理を終了する。
【００７６】
次に、サブプロセッサでWDTが発生した際、サブプロセッサにファイルシステムが具備されていない場合、かつ、メインプロセッサに十分な容量のファイルシステムが存在しない場合を説明する。
【００７７】
サブプロセッサでWDTが発生し、ハングアップ通知(WDT T.O 割り込み)をWDTドライバで検出する。WDTドライバは プロセッサでWDTが発生した際、WDT発生の意味を持つUser割り込みを発生させる。OSの処理はWDTドライバからのUser割り込みを、割り込みハンドラ経由でデータ収集処理部に通知することである。データ収集処理部は割り込み要求を受け付ける。データ収集処理部は、図２８のPCI通信処理により、メインプロセッサと通信する。もし、障害データを保存できるだけのサイズが残ってなければ、仮想ファイルシステムを接続する先のリストデータから優先度の高いものから選択する。次に、システムCallを使用し、仮想ファイルシステムのプロトコル(NFSやVFS)経由でLANから先のファイルサーバ上のファイルシステムをマウントする。システムCallの戻り値が正常で、マウントに成功したら、そのファイルシステムに、WDT要因や障害データを全てセーブする。CPUリセットを行い、仮想ファイルのマウントも同時に解除される。
【００７８】
図２８は、ファイル残量問い合わせの際のPCI通信を説明する図である。図２８は、図２６と同様であり、同様のステップには同様のステップ番号を付し、それらの説明を省略する。
【００７９】
図２８では、ステップＳ１１５のファイルシステムの残量チェックの結果、残量が十分でないことが判明する場合であり、通信結果として、データの収集が不可である旨がレジスタに書き込まれる。
【００８０】
次に、メインプロセッサでWDTが発生した際、メインプロセッサに具備されているファイルシステムが収集データに対して十分な容量を確保できない場合を図２９で説明する。
【００８１】
図２９において、図２５と同様な構成要素には同様な参照符号を付し、それらの説明を省略する。
【００８２】
データ収集処理部４２は、OSから割り込みハンドラ経由で起動され、自身のファイルシステムの残量をチェックし、障害データを保存できるだけのサイズがあるかをチェックする。十分な保存容量がない場合には、仮想ファイルシステムを接続する先のファイルサーバリストデータから優先度の高いものから選択し、システムCallを使用し、仮想ファイルシステムのプロトコル(NFSやVFS)経由でLANから先のファイルサーバ上のファイルシステムをマウントする。そして、WDT要因や障害データ等を全て仮想ファイルシステム上にセーブし、CPUをリセットする。
【００８３】
メインプロセッサでWDTが発生し、ハングアップ通知（WDT T.O 割り込み)をWDTドライバで検出する。WDTドライバは プロセッサでWDTが発生した際、WDT発生の意味を持つUser割り込みを発生させる。OSはWDTドライバからのUser割り込みを、割り込みハンドラ経由でデータ収集処理部に通知する。データ収集処理部は割り込み要求を受け付ける。その後、自身のファイルシステム残量をチェックし、障害データを保存できるだけのサイズがあるかをチェックする。もし、障害データを保存できるだけのサイズが残っていれば、障害データを自プロセッサ配下のファイルシステムに格納し、CPUのリセットを行なう。もし、障害データを保存できるだけのサイズが残ってなければ、仮想ファイルシステムを接続する先のファイルサーバリストデータから優先度の高いものを選択する。
【００８４】
次に、システムCallを使用し、仮想ファイルシステムのプロトコル(NFSやVFS)経由でLANから先のファイルサーバ上のファイルシステムをマウントする。システムCallの戻り値が正常で、マウントに成功したら、そのファイルシステムに、WDT要因や障害データを全てセーブし、CPUをリセットする。CPUリセットにより、仮想ファイルのマウントも解除される。
【符号の説明】
【００８５】
１０      サブプロセッサ
１１      メインプロセッサ
１２      CPU
１３      システム障害割り込み部
１４      障害ハンドリング部
１５      障害処理部
１６、４５      仮想ファイルシステムプロトコル処理部
１７、４６      ETHドライバ
１８、４７      PHY
１９      ファイルシステム残量チェック部
２０、３０      ファイルシステム
２１、４９      ファイルサーバ
２２      Call処理部
４０      WDTドライバ
４１      OS
４２      データ収集処理部
４３      通信用ドライバ
４４      サイズチェック処理部
４８      LAN
【図１】
0005929465.tif 000002
【図２】
0005929465.tif 000003
【図３】
0005929465.tif 000004
【図４】
0005929465.tif 000005
【図５】
0005929465.tif 000006
【図６】
0005929465.tif 000007
【図７】
0005929465.tif 000008
【図８】
0005929465.tif 000009
【図９】
0005929465.tif 000010
【図１０】
0005929465.tif 000011
【図１１】
0005929465.tif 000012
【図１２】
0005929465.tif 000013
【図１３】
0005929465.tif 000014
【図１４】
0005929465.tif 000015
【図１５】
0005929465.tif 000016
【図１６】
0005929465.tif 000017
【図１７】
0005929465.tif 000018
【図１８】
0005929465.tif 000019
【図１９】
0005929465.tif 000020
【図２０】
0005929465.tif 000021
【図２１】
0005929465.tif 000022
【図２２】
0005929465.tif 000023
【図２３】
0005929465.tif 000024
【図２４】
0005929465.tif 000025
【図２５】
0005929465.tif 000026
【図２６】
0005929465.tif 000027
【図２７】
0005929465.tif 000028
【図２８】
0005929465.tif 000029
【図２９】
0005929465.tif 000030