(57)【特許請求の範囲】
【請求項１】
複数の計算機で構成され、稼働系に設定された計算機の障害発生時に、当該計算機が行っている処理を、待機系に設定された計算機が引き継ぐ多重系システムにおいて、
前記障害発生時に、
前記障害の発生した計算機で動作しているソフトウェアが前記障害を検出して障害情報の保存を実施し、または待機系の計算機が前記障害を検出して前記障害の発生した計算機に対して障害情報の保存を指示し、
かつ前記待機系の計算機は前記障害を認識した後に、前記障害の発生した計算機における障害情報の保存終了を待つことなく、自発的に処理の引き継ぎを実施するものであって、
前記各計算機が、当該計算機上のソフトウェアとは独立に動作する、相互に伝送路を介して接続された機能拡張ボードを各々搭載し、
前記各機能拡張ボードは、他の計算機に搭載された機能拡張ボードから伝送路を介して受け取るメッセージの内容に従い、当該機能拡張ボードの搭載された計算機に対して割込を発生する機能と当該機能拡張ボードの搭載された計算機の動作を停止する機能を持ち、かつ当該機能拡張ボードの搭載された計算機上で動作するソフトウェアから前記メッセージに対する前記各機能の抑止を指示する機能を持ち、
他計算機での障害発生を認識した時に、前記障害を認識した計算機に搭載された機能拡張ボードから、前記障害の発生した計算機に搭載された機能拡張ボードに対して、割込発生を指示するメッセージを送信し、さらにその一定時間後に計算機の停止を指示するメッセージを送信し、
前記障害の発生した計算機に搭載された機能拡張ボードが前記割込指示メッセージに対して発生する割込に対する割込処理において、障害情報の保存を実行し、かつ前記機能拡張ボードに対して、前記割込発生機能と前記計算機動作停止機能の抑止を指示し、後から送信される計算機の停止を指示するメッセージを無視して障害情報の保存を継続することを特徴とした多重系システムの系切り替え方法。
【請求項２】
障害発生時に、該障害発生計算機のソフトウェアにより自発的に障害情報保存を実行し、かつ前記機能拡張ボードに対して、前記割込発生機能と前記計算機動作停止機能の抑止を指示し、後から送信される割込発生指示と計算機停止指示のメッセージを無視して障害情報の保存を継続することを特徴とした請求の範囲第１項記載の多重系システムの系切り替え方法。
【発明の詳細な説明】
技術分野
本発明は多重系システムの管理方法に係わり、特に、稼働系と待機系の計算機により構成される多重系システムにおいて、いずれかの計算機に障害が発生した際に系切り替えを実施する方法に関するものである。
背景技術
高い信頼性が要求される用途、例えば、鉄道運行管理，プラント制御，電力系統制御などに計算機を用いる場合には、処理を行う稼働系計算機の他に、稼働系の計算機に障害が生じた場合に稼働系の計算機が行っていた処理を引き継ぐ待機系の計算機を備えた多重系システムとして計算機を利用することが望ましい。
計算機の稼働を阻害する障害としては、ハードウェアの故障、およびオペレーティングシステム（以下ＯＳと記す）やデバイスドライバなどの基幹ソフトウェアの欠陥による論理矛盾が挙げられる。これらの障害発生時に、計算機のハードウェア・ソフトウェアに関する各種状態を保存することにより、事後の障害解析が可能となり、復旧措置，再発防止策の実施などに活用でき、システムの信頼性向上に役立つ。これは多重系システムにおいても同様である。
従来の多重系システムにおいては、障害が発生した場合に、障害が発生した計算機のディスク装置に障害情報を保存し、その後、当該障害発生計算機が実行していた処理を待機系に引き継ぐ系切り替え方法が実施されてきた。
また、特開平８−２０２５７３号公報には、多重系を構成する計算機全てに、お互いに常に内容を一致化させている共通メモリを搭載し、この共通メモリ上に障害情報を常に書き込み、障害発生計算機が実行していた処理を引き継いだ計算機がこの障害情報をディスクに保存する方法が記載されている。
処理の停止時間を短くするために、系切り替えに要する時間はできるだけ短いことが望ましい。従来の切り替え方法の場合、障害情報の保存に要する間だけ系切り替えが待たされるため、実用的な切り替え時間を実現するためには保存できる障害情報の量が制限されてしまう。
一方、特開平８−２０２５７３号公報に記載された方法の場合、系切り替え時間の短縮は可能であるが、保存する障害情報の量が多くなると、必要な共通メモリの容量が大きくなり装置コストが大きくなると同時に、共通メモリ内容一致化のための計算機負荷およびネットワーク負荷も大きくなってしまう。
本発明は、多重系システムにおいて、障害発生時に、メモリダンプを含む大容量の障害情報の保存を実施しつつ、高速な系切り替えを実現することを目的とする。
また、障害発生系におけるハードウェアやソフトウェアの暴走、および障害発生系における障害情報の保存動作が、系切り替え動作および切り替え後の処理を引き継いだ新稼働系の動作に影響を与えないようにすることを目的とする。
発明の開示
本発明は、障害の発生した稼働系計算機で行っていた処理を停止して障害情報の保存処理を開始し、引き続いて待機系計算機は該計算機の障害を検出して停止していた処理を引き継ぐものである。該障害発生計算機における処理の停止および障害情報の保存開始は、該障害発生計算機上のソフトウェアにより自発的に行うか、または先に待機系計算機が該計算機の障害を検出し該計算機に対して動作を指示することにより行うかにより実現される。
このような系切り替え方法によれば、処理の切り替えは、待機系計算機における障害検出から、障害発生計算機において安定して障害情報の保存が開始されるまでの見込み時間のみで実施でき、切り替え時間の短縮が実現できる。
また、前記目的達成のために、本発明は、稼働系計算機の障害を検出した待機系計算機が該障害発生計算機に対して障害情報の保存開始指示に引き続き該障害発生計算機の動作停止を指示して、該障害発生計算機では正常な障害情報保存動作をしている場合には動作停止指示を無視し、正常な障害情報保存動作をしていない場合には動作停止指示を受け入れて完全に停止するものである。
このような障害発生計算機の動作方法により、障害情報保存動作が不可能なほどの重度の障害状態において、該障害発生計算機が予期せぬ動作をし、ネットワークや共有ディスク装置といった系間の結合部を通じて、処理を引き継いだ新稼働系計算機の動作に影響を与えることが防げる。
また、前記目的達成のために、本発明は、該障害発生計算機において障害情報の保存を実施する前に、ネットワークや共有ディスク装置といった系間の結合部の入出力装置の動作を停止させるものである。
このような障害発生計算機の動作方法により、障害情報保存に無関係なハードウェアの動作により、ネットワークや共有ディスク装置といった系間の結合部を通じて、処理を引き継いだ新稼働系計算機の動作に影響を与えることが防げる。
発明を実施するための最良の形態
以下、本発明に係る多重系システムの切り替え方法の実施形態について詳細に説明する。
第１図に本実施形態に係る多重系システムの構成を示す。
図示するとおり、本実施形態に係る多重系システムは２台の計算機で構成された２重系システムである。ただし、計算機は３台以上で構成してもよい。
第１図において、計算機１００，１０１はそれぞれ稼働系計算機，待機系計算機を示している。系切り替えにより、稼働系計算機１００は待機系計算機として、稼働系計算機１０１は稼働系計算機として動作する。
各計算機１００，１０１は、中央演算処理装置（以下ＭＰＵと記す）１１０と主メモリ１１１，入出力制御装置１１２を備え、これらはプロセッサバス１２０によって接続されている。入出力制御装置１１２には、ディスク装置１１３や拡張バス１２１が接続される。
拡張バス１２１には、計算機の機能を拡張するための回路が接続される。一般的には回路が実装された拡張ボードを、スロットコネクタに挿入する形態で拡張バス１２１に接続される。ただし一部の機能は計算機本体内に実装され、拡張バスに直接内部で接続されている場合もある。本実施形態に係る計算機１００，１０１は、拡張ボードとしてＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ボード１１４，リンケージバスポート（Ｌｉｎｋａｇｅ  Ｂｕｓ  Ｐｏｒｔ）（以下ＬＸＰと記す）ボード１１５，Ｅｔｈｅｒｎｅｔボード１１６を備える。
ＳＣＳＩボード１１４には共有ディスク装置１０２が接続されている。この共有ディスク装置１０２は、系切り替え時の処理の引き継ぎデータなどを記憶するのに使用される。なお、ＳＣＳＩバスの代わりにＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）といったバスを使用する場合もある。
Ｅｔｈｅｒｎｅｔボード１１６はＥｔｈｅｒｎｅｔネットワーク１０３に接続され、このネットワーク１０３に接続された他の計算機などと通信を行う。本実施形態ではネットワーク１０３には、プラント９００を管理・制御するための複数のコントローラ９１０が接続されている。なお、Ｅｔｈｅｒｎｅｔの代わりに、トークンリングやＡＴＭといったネットワークを使用する場合もある。
ＬＸＰボード１１５は、系切り替え制御のための機能拡張ボードであり、専用の伝送路であるリンケージバス１０４を介して接続される。ＬＸＰボードは計算機１００，１０１相互間での相手計算機の生存監視と、系切り替えに必要な強制割込，動作停止，計算機再起動の各指示メッセージの送信、さらに各指示メッセージ受信時の自計算機における指示内容の実行を行う。
このような２重系システムにおいて、稼働系計算機１００，待機系計算機１０１ともに正常な状態では、稼働系計算機１００の主メモリ１１１にはＯＳ１３０，管理プログラム１３１，管理通信プログラム１３２、およびアプリケーション（ＡＰ）１３５がロードされ、管理プログラム１３１，管理通信プログラム１３２、およびアプリケーション１３５がＯＳ１３０上で実行されている。同様に、待機系計算機１０１の主メモリ１１１にも同じプログラムがロードされ、ＯＳ１３０，管理プログラム１３１、および管理通信プログラム１３２は実行されているが、アプリケーション１３５は実行されていない。さらに各計算機１００，１０１の主メモリ１１１には割込処理ルーチン１３３がロードされている。
アプリケーション１３５は、該２重系システムの用途たる処理を行うプログラムであり、本実施形態の場合、ネットワーク１０３を介して各コントローラ９１０から送られるデータの処理・記録を行うものである。
管理プログラム１３１は、稼働系計算機と待機系計算機の切り替え処理を行うプログラムである。本プログラムはＬＸＰボード１１５に対してメッセージ送受信要求や動作指示を行い、また、管理通信プログラム１３２に対して生存通知メッセージの送受信要求を行う。
管理通信プログラム１３２はＥｔｈｅｒｎｅｔボード１１６を使いネットワーク１０３を介して、他計算機と生存通知メッセージの送受信を行う。メッセージ送受信はＴＣＰ／ＩＰプロトコルを使って実行する。本プログラムは予め決められたＴＣＰポートで他計算機からの接続を待ち、接続された場合にはメッセージを受信して本プログラム内で内容を保持し、管理プログラム１３１からの読み出し要求に対して保持している内容を返す。また管理プログラム１３１からの生存確認メッセージ送信要求を受け、２重系を構成している他計算機上の管理通信プログラム１３２が待機しているＴＣＰポートに対してメッセージを送信する。
割込処理ルーチン１３３は、ＭＰＵに対してマスク不可能割込信号が入力されたときに起動されるように登録される。そして、マスク不可能割込信号発生時に障害情報の保存等、障害発生時の処理を実行する。ただし、本実施形態ではマスク不可能割込信号により起動するように登録しているが、ＭＰＵが提供する他の割込機構を使って実現してもよい。なお、本実施形態の場合、割込処理ルーチン１３３が独立したプログラムとなっているが、ＯＳ１３０の種類によってはＯＳの一部として割込処理ルーチンが提供される場合もあり、この場合はＯＳ１３０の割込処理ルーチンから呼び出されるサブルーチンとして必要な処理を組み込むことにより同一の機能が実現できる。
次に、本実施形態に係る多重系システムの系切り替え方法について説明する。
第２図に系切り替え処理のタイムチャートを示す。
稼働系計算機１００，待機系計算機１０１がともに正常な状態では、次のような処理が行われる。
管理プログラム１３１は、一定時間毎に管理通信プログラム１３２およびＬＸＰボード１１５に対して、生存通知メッセージ送信を要求する（３０１）。管理通信プログラム１３２はＥｈｔｅｒｎｅｔボード１１６を駆動し、ネットワーク１０３経由で他計算機に対して生存通知メッセージ４０１を送信する（３０２）。一方、ＬＸＰボード１１５はリンケージバス１０４経由で他計算機に対して生存通知メッセージ４０２を送信する（３０３）。
前記の生存通知メッセージ４０１，４０２を受信した待機系計算機１０１の管理通信プログラム１３２およびＬＸＰボード１１５は、各々受信結果を記憶する（３０４，３０５）。そして、待機系計算機１０１の管理プログラム１３１は、一定時間毎に自計算機の管理通信プログラム１３２およびＬＸＰボード１１５に対して、稼働系計算機からの生存通知メッセージを受信したかどうか確認する（３０６）。一定時間以上、稼働系計算機からの生存通知メッセージ４０１，４０２が双方とも受信されない場合には、稼働系計算機に障害が発生したものと判断する。
ここで生存通知メッセージを２つの経路で伝送するのは、各伝送経路や伝送路への接続回路に発生した障害を、計算機自体の障害と区別できるようにするためである。一方の生存通知メッセージのみが受信されない場合には、伝送路で障害であると判断し、画面表示やログ記録などの形で警告を発するに止め、系切り替えは実施しない。
第２図では稼働系計算機１００から待機系計算機１０１への向きの生存確認メッセージの送信動作のみが示されているが、実際には逆向きの生存確認メッセージの送信も行っており、稼働系計算機１００での受信確認処理３０６および待機系計算機１０１での送信処理３０１が一定時間毎に実行されている。
次に、稼働系計算機１００に障害が発生した場合の動作について説明する。
障害モードは複数考えられるが、第１に、ＯＳ内部で無限ループが発生するなどの要因でハングアップ状態になった場合を説明する。
ＯＳ内部での障害発生により管理プログラム１３１の動作はストップし、生存通知メッセージの送信処理３０１が一定時間毎に実行されなくなる。待機系計算機１０１の管理プログラム１３１は、一定時間４５１の間隔で行う受信メッセージ確認３０６の際に、２つの生存通知メッセージ４０１，４０２とも受信されていないことを検出すると、稼働系計算機１００に障害が発生したものと判断する。障害発生を検出した待機系計算機１０１上の管理プログラム１３１はＬＸＰボード１１５に対して強制割込指示の送信を依頼し（３０７）、ＬＸＰボード１１５は稼働系計算機のＬＸＰボードに対して強制割込指示メッセージ４０３を送信する（３０８）。
稼働系計算機１００上のＬＸＰボード１１５は強制割込指示メッセージ４０３を受信すると、ハードウェア的にマスク不可能割込信号４０４を発生させる（３０９）。ＭＰＵはこの割込信号を受け、割込処理ルーチン１３３を起動する。
割込処理ルーチン１３３は起動時に、まず、マスク不可能割込信号を無効化、すなわち再度マスク不可能割込信号が発生した場合にこれを無視するように設定する（３１０）。
割込処理ルーチン１３３は、起動後、相手系計算機１０１に影響を及ぼす可能性のある自計算機内の構成要素の動作停止を指示する（３１１）。本実施形態の構成の場合、ＳＣＳＩボード１１４およびＥｔｈｅｒｎｅｔボード１１６がこの様な構成要素に相当し、各ボードにあるレジスタ中の動作停止を指示するビットをセットすることにより動作を停止させる。これにより相手系計算機１０１が共有ディスク１０２やネットワーク１０３にアクセスする場合に、障害発生計算機１００の影響を受けなくなる。なお、構成要素の種類によってはレジスタ中の動作可能ビットをクリアすることにより、動作停止を指示する場合もある。
次に割込処理ルーチン１３３は、ＬＸＰボード１１５に対して以後の他計算機からの指示メッセージを無視するように設定し（３１２）、障害情報の保存を実行する（３１３）。障害情報の保存完了後、割込処理ルーチン１３３は停止し（３１４）、障害が発生した計算機１００は停止状態となる。
障害情報の保存処理３１３では、主メモリ１１１の内容や、計算機本体および各機能拡張ボードの動作状態を表す各々のレジスタの内容などを保存する。また、障害情報以外に、通常のシャットダウン処理のうち、該障害発生後の条件下でも実行可能な処理を実行してもよい。例えば、ディスク装置１１３に対するキャッシュ内容の書き出しを実行すれば、該障害発生計算機のディスク内容の整合性が保たれ、内容を救出できる可能性が高くなる。
待機系計算機１０１の管理プログラム１３１は、強制割込指示の送信（３０７）後、一定時間４５２をおいて、ＬＸＰボード１１５に対して動作停止指示の送信を依頼し（３１５）、またこの時点で、待機系計算機１０１でロードされていたアプリケーション１３５を起動して稼働系計算機１００の処理を引き継ぎ（３１８）、自計算機を新たな稼働系に設定する。これで系切り替えは完了する。
ＬＸＰボード１１５は、管理プログラム１３１からの動作停止指示送信依頼により、動作停止指示メッセージ４０５を送信する（３１６）。しかし、障害発生計算機１００では割込処理ルーチン１３３によりＬＸＰボードに対して指示メッセージを無視する設定が行われている（３１２）ため、この動作停止指示メッセージ４０５は無視され、障害情報の収集（３１３）が継続されることになる。
障害発生計算機内の構成要素の動作停止処理３１１において、各構成要素に、動作状態表示レジスタなどの動作状況確認手段が備わっている場合、動作停止処理３１１による動作停止を確認する手順を追加してもよい。この動作停止の確認において動作停止指示が失敗していると判断された場合、割込処理ルーチン１３３はその処理を停止する。これにより、他計算機からの指示メッセージを無視する処理が行われず、待機系計算機のＬＸＰボードからの動作停止指示メッセージ４０５を受けたＬＸＰボードにより計算機１００は強制的に停止状態となり、待機系計算機１０１は障害発生計算機１００の影響を受けずに処理を引き継ぐことになる。
また、障害情報保存処理３１３の先頭で、ディスク装置の異常など、障害情報保存のための準備が出来ていないと判断された場合、割込処理ルーチン１３３はＬＸＰボードのメッセージ無視の設定を解除し（３１９）、障害情報保存処理を停止するようにしてもよい。この場合も、待機系計算機からの動作停止指示メッセージ４０５を受けて障害発生計算機１００は強制的に停止状態となる。
第２の障害モードとして、一般的にカーネルパニックと呼ばれる、ＯＳが重大な論理矛盾を検出して継続運転不能と判断した障害について説明する。この場合の処理のタイムチャートを第３図に示す。
ＯＳは論理矛盾を検出すると、割込処理ルーチン１３３を起動する（３３１）。割込処理ルーチンは、第２図で説明した場合と同様に、自計算機内の構成要素の動作停止を指示し（３１１）、次にＬＸＰボード１１５に対して以後の他計算機からの指示メッセージを無視するように設定し（３１２）、その後、障害情報の保存処理を行い（３１３）、停止する（３１４）。
ＯＳに障害が発生し、割込処理ルーチンへ実行が移ることにより、稼働系計算機１００上の管理プログラム１３１が動作しなくなるため、待機系計算機に対して生存通知メッセージ４０１，４０２が送信されなくなる。待機系計算機１０１上の管理プログラム１３１は、前述のとおり、生存通知メッセージ４０１，４０２ともに受信されないことを検出し（３０６）、強制割込指示メッセージ４０３および計算機動作停止指示メッセージ４０５の送信を行う（３０８，３１６）。
強制割込指示メッセージ４０３を受けた時点で、すでに割込処理ルーチン１３３が起動しＬＸＰボードに対してメッセージ無視の設定が行われている（３１２）ため、強制割込指示メッセージ４０３は無視され（３３２）、障害情報の収集３１３が継続される。引き続いて受け取る動作停止指示メッセージ４０５も同様に無視される（３３３）。
なお、ここではＯＳが割込処理ルーチン１３３を呼び出すものとしたが、マスク不可能割込信号を発生させて割込処理ルーチン１３３を起動してもよい。またＯＳの種類によってはＯＳ自身が障害情報の保存（メモリダンプ）を行うものもあるが、その実行前に登録した処理を呼び出す機能が提供されている場合には、割込処理ルーチン１３３から障害情報の保存（３１３）を除いた処理を登録しておくことにより、同等の処理を実現することができる。
第３の障害モードとして、ハードウェアの部分的な障害について説明する。ここで説明するのは、障害の影響が前述した２つの障害モードとしては現れないが、多重系システムの本来の用途たる処理を継続することができないものであり、何らかの検出方法により検出されたものである。この場合の処理のタイムチャートを第４図に示す。
このような障害の発生の検出には、管理プログラム１３１による検出、専用の障害検出サブプログラム１３４による検出、アプリケーション１３５での異常検出などがある。これらのうち、管理プログラム以外で障害を検出した場合は、障害発生の検出を管理プログラム１３１に通知する（３４１，３４２）。管理プログラム１３１は、自分自身での障害検出、または障害検出サブプログラム１３４やアプリケーション１３５からの障害通知を受けて、割込処理ルーチン１３３を起動する（３４３）。割込処理ルーチン１３３は第３図で説明したＯＳの論理矛盾検出時と同一の処理手順を実行し、系切り替えが実施される。
なお、障害発生をハードウェア機構により監視している場合は、このハードウェアが割込を使用して異常検出結果を管理プログラム１３１や障害検出サブプログラム１３４に通知するか、もしくは管理プログラムや障害検出サブプログラムの側が定期的に該ハードウェアをポーリングして異常検出の有無を確認して、同様の処理を行う。
また、メモリ内容の破壊やハードウェア的な動作不全の程度により、割込処理ルーチン１３３の起動ができない場合がある。この場合、障害発生計算機１００は重度の制御不能状態であり、予測できない動作をして、待機系計算機１０１の動作に影響を与える恐れがある。
この場合は、障害発生計算機のＬＸＰボード１１５に対して他計算機からの指示メッセージを無視する設定（３１２）が行われない。従って、待機系計算機からの動作停止指示メッセージ４０５を受けたＬＸＰボード１１５が計算機１００を強制的に停止状態とする。従って障害発生計算機１００を待機系計算機１０１の動作に確実に影響を与えない状態としてから処理の引き継ぎを実施することになるので、確実に系の切り替えができる。
生存通知メッセージが受信されず障害が発生したと判断するまでの時間４５１は、第３図で示すように、障害が発生してソフトウェア的に割込処理ルーチン１３３が呼び出され、ＬＸＰボードに対する設定（３１２）を完了するまでの時間に対して、やや長く設定しておく。また強制割込指示メッセージ送信と計算機動作停止指示メッセージ送信の間隔４５２は、第２図に示すように、強制割込指示（３０７）による稼働系計算機１００の割込処理ルーチン１３３が起動され、ＬＸＰボードに対する設定（３１２）を完了するまでの時間に対して、やや長く設定しておく。
系の切り替え時間、すなわち処理引き継ぎ完了までの時間は、おおよそ時間４５１と時間４５２の合計となる。この系の切り替え時間は、メモリダンプなどの障害情報の保存３１３に要する時間に対して十分短く、障害情報の保存と系切り替え時間の短縮が両立される。
なお、以上の説明では稼働系計算機１００に障害が発生した場合の処理について説明してきたが、待機系計算機１０１に障害が発生した場合も、処理の引き継ぎによる稼働系，待機系切り替えがないことを除いて、同一の処理が行われる。
本実施形態では、各計算機がＬＸＰボード１１５とＥｔｈｅｒｎｅｔボード１１６を備えていたが、各計算機にＥｔｈｅｒｎｅｔボード１１６を２つ備え、Ｅｔｈｅｒｎｅｔネットワーク１０３を二重化して生存監視メッセージの通信を行う構成の多重系システムにおいても、同様の方法による系切り替えが可能である。このようなシステムにおいては、ＯＳの論理矛盾検出やハードウェアの部分的な障害検出という障害モードに対して、障害発生計算機１００における障害情報の保存３１３と待機系計算機１０１への処理引き継ぎ３１８による系切り替え動作が可能である。ただし強制割込指示４０３を送ることが出来ないので、ハングアップ状態の障害モードでは障害情報の保存が出来ない。また、動作停止指示メッセージ４０５を送ることが出来ないので、障害の程度によっては障害発生計算機１００の異常動作が待機系計算機１０１に影響を与える可能性が残る。
以下、各部の詳細について説明する。
まずＬＸＰボード１１５について説明する。第５図にＬＸＰボード１１５の内部構成を示す。
図示するようにＬＸＰボード１１５は、拡張バス１２１との入出力を担当する拡張バスインタフェース１７０，リンケージバス１０４を介したメッセージ処理を行うリンケージ制御用プロセッサ１７１、このリンケージ制御用プロセッサ１７１が実行するプログラムを格納するメモリ１７５，メッセージとリンケージバス上の電気信号との変換を行う伝送路インタフェース１７２，メッセージの一時格納用バッファであるメッセージ記憶用メモリ１７３，電源電圧の立ち上がりを検出する電源電圧検出回路１７４，拡張バス側からリンケージ制御用プロセッサ１７１の動作状態を確認したり動作方法を指示するための動作制御レジスタ１７６を備えている。
動作制御レジスタ１７６は拡張バス１２１から読み書きできるので、このＬＸＰボード１１５が搭載されている計算機上で動作するソフトウェアから動作状態を確認したり動作方法を指示することが可能である。この動作制御レジスタ１７６は、後述する強制割込指示禁止ビット１７６１，動作停止指示禁止ビット１７６２，再起動指示禁止ビット１７６３を含む。
ＬＸＰボードの初期化動作を説明する。ＬＸＰボードは、接続されている計算機とは独立に動作し、計算機のリセット信号自体を扱う必要がある。このため、ＬＸＰボードの初期化処理は、計算機のリセット処理とは独立に、ＬＸＰボードへの電源投入時にのみ行う。このため、拡張バス１２１経由で供給される電源電圧を監視する電源電圧検出回路１７４が電源電圧の立ち上がりを検出して、ＬＸＰボード内の各構成要素に対して初期化を指示する初期化信号１８４を出力する。拡張バスインタフェース１７０，リンケージ制御用プロセッサ１７１、および伝送路インタフェース１７２は、この初期化信号１８４を受け、メモリのクリア，各種状態情報のクリア，レジスタのクリア，リンケージバスのリセットなどの初期化処理を実行する。
次にメッセージ送信機能について説明する。管理プログラム１３１は拡張バス１２１を介して、拡張バスインタフェース１７０にメッセージの送信要求を行う。拡張バスインタフェース１７０は、拡張バス１２１とリンケージバス１０４のデータ転送速度が異なるため、送信するメッセージを一旦速度緩衝用バッファとしてメッセージ記憶用メモリ１７３に格納し、リンケージ制御用プロセッサ１７１に対してメッセージの到着を通知する。リンケージ制御用プロセッサ１７１はこの通知を受けてメッセージ記憶用メモリ１７３からメッセージを取り出し、伝送路インタフェース１７２に転送し、リンケージバス１０４を介して、メッセージを他計算機のＬＸＰボードに送信する。
最後にメッセージ受信処理機能について説明する。他計算機のＬＸＰボードからリンケージバス１０４を経由して指示メッセージが届いた場合、その種類に応じて以下のいずれかの処理を行う。
（１）メッセージが強制割込指示の場合、接続されている自計算機に対して、マスク不可能割込信号線１８２を通じて、マスク不可能割込信号を出力し、ＭＰＵ１１０での処理を割込ルーチン１３３に切り替える。ただし、レジスタ１７６の強制割込指示禁止ビット１７６１がセットされている場合には、本処理を行わず、指示メッセージを無視する。
（２）メッセージが動作停止指示の場合、接続されている自計算機に対してリセット信号線１８３を通じてリセット信号を継続して出力し続け、これにより計算機を強制的に停止する。ただし、レジスタ１７６の動作停止指示禁止ビット１７６２がセットされている場合には、本処理を行わず、メッセージを無視する。
（３）メッセージが再起動指示の場合、接続されている自計算機に対してリセット信号線１８３を通じてリセット信号を１度出力し、これにより計算機を再起動する。ただし、レジスタ１７６の再起動指示禁止ビット１７６３がセットされている場合には、本処理を行わず、メッセージを無視する。
（４）上記以外のメッセージの場合、メッセージ内容をメッセージ記憶用メモリ１７３に格納する。格納されたメッセージは、その後、管理プログラム１３１からの要求により、拡張バスインタフェース１７０，拡張バス１２１を介して随時読み出される。
第６図に拡張バスインタフェース１７０の処理手順を示す。
拡張バスインタフェース１７０は、計算機（拡張バス）からの入出力要求信号、および初期化信号線１８４からの初期化信号を受けると、要求待ち状態５０１から抜けて処理を開始し、受けた信号から処理要求の種類を判定する（５０２）。
処理要求が初期化信号であった場合、内部レジスタや回路の初期化処理（５０３）を行う。
処理要求が拡張バス１２１からの読出信号の場合、読み出し要求の対象がレジスタであればそのレジスタ１７６の内容を読み出し（５０５）、読み出し要求の対象がメッセージであればメッセージ記憶メモリ１７３の内容を読み出し（５０７）、読み出した結果を拡張バス１２１に送出する（５０６，５０８）。
処理要求が拡張バス１２１からの書込信号の場合、書き込み要求の対象がレジスタであれば書き込み内容をレジスタ１７６に書き込む（５１０）。一方、書き込み要求の対象が送信メッセージである場合には、その送信メッセージを一旦メッセージ記憶用メモリ１７３に格納し（５１１）、これをリンケージ制御用プロセッサ１７１に伝送させる（５１２）。
第７図にリンケージ制御用プロセッサ１７１の処理手順を示す。
制御用プロセッサ１７１は、拡張バスインタフェース１７０からの起動要求、伝送路インタフェース１７２からのメッセージ受信、および初期化信号線１８４からの初期化信号のいずれかのイベントにより、イベント待ち状態５２１から抜けて処理を開始し、そのイベントの種類を判定する（５２２）。
発生したイベントが初期化信号の場合、通信処理を初期化し、メッセージ記憶用メモリ１７３に保存されている全メッセージを破棄し、さらにレジスタ１７６を初期状態に設定する（５２３）。
一方、発生したイベントが、拡張バスインタフェース１７０からの起動要求、すなわち、メッセージの送信要求であれば、送信すべきメッセージをメッセージ記憶用メモリ１７３から読み出し（５２４）、伝送路インタフェース１７２に該メッセージを伝送させる（５２５）。
また、発生したイベントが伝送路インタフェース１７２からのメッセージ受信イベントの場合、他のＬＸＰボードからの指示メッセージの到着を示している。この場合、受信した指示メッセージの種類を判定し（５２６）、各々に対応した処理を行う。
メッセージが強制割込指示，動作停止指示，再起動指示のいずれかの場合、既に述べたとおり、レジスタ１７６中の対応する各禁止ビット（１７６１，１７６２，１７６３）がクリアされていることを確認し（５２７，５２９，５３１）、前述のとおりの信号を出力する（５２８，５３０，５３２）。
前記以外のメッセージの場合、単に受信した指示メッセージをメッセージ記憶用メモリ１７３に格納する（５３３）。
次に管理プログラム１３１について説明する。
管理プログラム１３１は次の３つの処理を行う。
（１）自計算機が正常に動作していることを他の計算機に通知するため、定期的に生存通知メッセージを送信する。
（２）他計算機から送られてくる生存通知メッセージを監視し、一定時間以上受信されない場合は送信元計算機に障害が発生したものと判断し、他計算機に対して強制割込指示メッセージならびに動作停止指示メッセージを送信する。また、障害発生計算機が稼働系計算機ならば、該計算機で実行していた処理を引き継ぎ、自計算機を新たな稼働系計算機に設定する。
（３）他のプログラムからの呼び出しにより、自計算機に障害が発生したことを認識し、障害情報収集等の割込処理ルーチン１３３を起動する。
なお、管理プログラム１３１が自計算機の障害発生を検出する機能を合わせ持っていてもよい。この場合、障害検出時には前記（３）と同様に割込処理ルーチンを起動する。
第８図に前記（１）の生存通知メッセージ送信処理の処理フローを示す。
図示するとおり、この処理では定期的に生存通知を他計算機に対して通知する。すなわち、管理通信プログラム１３２およびＬＸＰボード１１５に対して生存通知メッセージ送信を要求し（３０１）、予め定められた時間だけ待ち状態に移行する（５４１）処理を繰り返す。
第９図に前記（２）の生存通知メッセージの監視と他系障害発生時処理の処理フローを示す。
図示するように、周期的に他計算機からの生存メッセージの受信状態を確認し、一定時間以上受信できない場合には他系障害発生時処理を実行する。
他系障害と判断するための待ち時間４５１を決定するために、「通知１待ち回数」，「通知２待ち回数」という変数を設定する。これらの変数の初期値はＮ回であり、処理５６３での待ち時間ｔｗとの積「Ｎ×ｔｗ」が他系障害と判断するための待ち時間４５１となる。まずこれらの変数の初期化処理として、各々Ｎ回を設定する（５５１，５５２）。
次に、管理通信プログラム１３２では受信したメッセージの内容を記憶しているので、生存通知メッセージ４０１を受信したかどうかを管理通信プログラム１３２に問い合わせる（５５３）。受信されていれば「通知１待ち回数」をＮ回に設定して再度初期化し（５５４）、管理通信プログラム１３２に対しては記憶している生存通知メッセージのクリアを指示する（５５５）。一方、生存通知メッセージが受信されていなければ、「通知１待ち回数」の値を１減少させる。ただし「通知１待ち回数」の値が負になった場合は０を設定するものとする（５５６）。
同様にして、ＬＸＰボード１１５は受信したメッセージの内容を記憶しているので、生存通知メッセージ４０２を受信したかどうかを問い合わせる（５５７）。受信されていれば「通知２待ち回数」をＮ回に再設定して（５５８）、ＬＸＰボード１１５に記憶している生存通知メッセージのクリアを指示する（５５９）。生存通知メッセージが受信されていなければ、「通知２待ち回数」の値を１減少させる。ただし「通知２待ち回数」の値が負になった場合は０を設定するものとする（５６０）。
ここで「通知１待ち回数」および「通知２待ち回数」の値を調べる（５６１）。
両変数とも０となっている場合には、「Ｎ×ｔｗ」で表される待ち時間４５１以上の間、生存通知メッセージ４０１および４０２がともに受信されていないことになるため、他系の計算機に障害が発生したものと判断する。そしてまずＬＸＰボード１１５に対して強制割込指示メッセージ４０３の送信を依頼し（３０７）、次いで一定時間４５２だけ待ち状態とし（５６４）、その後、ＬＸＰボード１１５に対して計算機動作停止指示メッセージ４０５の送信を依頼する（３１５）。さらに自計算機の設定が待機系計算機である場合には、稼働系計算機の処理内容の引き継ぎを行い（３１８）、系切り替えを実行する。これらの処理を実行した後は、他系の障害発生計算機は必ず停止状態なので、生存通知メッセージの監視処理は停止する（５６６）。なお、障害発生計算機を交換しまたは障害要因を取り除き、待機系計算機として二重化システム内に復帰させる場合には、再度本処理を開始する（５５０）。開始はオペレータによる手動操作でもよいし、本監視処理停止（５５６）後、別処理を起動して生存監視メッセージの監視を続け、生存監視メッセージを検出した時点で本監視処理を再開する（５５０）方法でもよい。
処理５６１にて「通知１待ち回数」および「通知２待ち回数」のいずれか一方のみが０であった場合は、メッセージ伝送路や伝送路への接続回路に障害が発生したと判断し、これを画面表示やログ記録などの形で警告を発する（５６２）。
処理５６１にて「通知１待ち回数」および「通知２待ち回数」の両変数が０であった場合を除き、予め定められた時間ｔｗだけ待ち（５６３）、処理５５３へ戻る。
第１０図に前記（３）の自計算機で障害が発生した時の管理プログラム１３３の処理フローを示す。
この処理は、障害検出サブプログラム１３４やアプリケーション１３５からの呼び出しにより起動し（５７０）、単に割込処理ルーチン１３３を起動する（３４３）。割込処理ルーチン１３３は呼び出し元に処理を戻さない。
次に、割込処理ルーチン１３３について説明する。
割込処理ルーチン１３３は、障害発生時に、自計算機上のソフトウェアから起動されるか、または他計算機からの強制割込指示メッセージを受けてＬＸＰボード１１５から起動され、障害情報の保存およびこれに関連する処理を行う。
第１１図に割込処理ルーチン１３３の処理フローを示す。
割込処理ルーチン１３３は起動時に、まずマスク不可能割込信号を無効化する（３１０）。これは、何も処理を行わずに復帰するダミーの割込処理ルーチンを用意し、これをマスク不可能割込に対する処理ルーチンとしてＭＰＵに登録することにより実現する。これにより割込処理ルーチン１３３の処理中に再度マスク不可能割込信号が発生した場合でも、前記ダミーのルーチンへ処理が移りすぐに割込復帰するので、マスク不可能割込を無視することとなり、割込処理ルーチン１３３を継続できる。
次に、自計算機の一部、特に他系の計算機に影響を及ぼす可能性のある構成要素の動作停止を指示する（３１１）。そして動作停止を指示した各構成要素に対して状態を問い合わせ、全ての構成要素が本当に動作停止したかどうかを確認する（５８１）。動作停止に失敗したものがある場合、割込処理を打ち切る（５９０）。動作停止を指示した各構成要素が全て停止していれば、ＬＸＰボード１１５に対して以後の他計算機からの指示メッセージを無視するように設定する（３１２）。
続いて障害情報の保存が可能な状態かどうかを調べ（５８２）、保存が不可と判断された場合は、ＬＸＰボード１１５に対して他計算機からの指示メッセージ無視を解除し（３１９）、割込処理を打ち切る（５９０）。保存が可能と判断された場合は、実際の障害情報の保存を実行する（３１３）。障害情報の保存完了後、割込処理ルーチン１３３は停止し（３１４）、自計算機は停止状態となる。なお、障害情報の保存完了後、自計算機上のＬＸＰボード１１５に対してリセット信号の継続発生を指示し、計算機の動作を完全に停止させるようにしてもよい。
割込処理の打ち切りにより停止した場合（５９０）、自計算機は停止状態となるが、引き続き他計算機から送られてくる動作停止指示メッセージを受けてＬＸＰボード１１５がリセット信号を継続発生するので、この場合でも動作は完全に停止する。
以上のように、本発明によれば、多重系システムにおいて、障害発生時に、メモリダンプを含む大容量の障害情報の保存を実施しつつ、高速な系切り替えを実現することが可能である。
また、本発明によれば、障害発生系におけるハードウェアやソフトウェアの暴走、および障害発生系における障害情報の保存動作が、系切り替え動作および切り替え後の処理を引き継いだ新稼働系の動作に影響を与えないようにすることが可能である。
産業上の利用可能性
以上のように、本発明は高い信頼性が要求される用途の多重系システムに有効であり、稼働系の計算機に障害が生じた場合に稼働系の計算機が行っていた処理を引き継ぐ待機系の計算機を備えた多重系システムにおいて、いずれか一方の計算機で障害が発生した際に、事後の障害解析が可能となり、復旧措置，再発防止策の実施などに活用でき、システムの信頼性向上に役立つ。
【図面の簡単な説明】
第１図は、２重系システムの構成を示すブロック図であり、第２図は、この２重系システムにおける系切り替え処理の順序と各処理の関係を示したタイムチャートである。
第３図は、ＯＳの論理矛盾検出による系切り替え処理のタイムチャートであり、第４図は、ハードウェア障害検出による系切り替え処理のタイムチャートである。
第５図は、計算機に搭載するＬＸＰボードの構成を示すブロック図であり、第６図は、ＬＸＰボードに搭載する拡張バスインタフェースの処理手順を示すフローチャートであり、第７図は、ＬＸＰボードに搭載するリンケージ制御用プロセッサの処理手順を示すフローチャートである。
第８図は、管理プログラムの生存通知メッセージ送信処理の処理手順を示すフローチャートであり、第９図は、管理プログラムの生存通知メッセージの監視と他系障害発生時処理の処理手順を示すフローチャートであり、第１０図は、管理プログラムの自計算機に障害発生時処理の処理手順を示すフローチャートである。
第１１図は、割込処理ルーチンの処理手順を示すフローチャートである。
【図１】
0003806600.tif 000002
【図２】
0003806600.tif 000003
【図３】
0003806600.tif 000004
【図４】
0003806600.tif 000005
【図５】
0003806600.tif 000006
【図６】
0003806600.tif 000007
【図７】
0003806600.tif 000008
【図８】
0003806600.tif 000009
【図９】
0003806600.tif 000010
【図１０】
0003806600.tif 000011
【図１１】
0003806600.tif 000012