(57)【特許請求の範囲】
【請求項１】
カーネル上で動作する複数のプログラムを有し、前記複数のプログラムには、
前記カーネルから出力されるタスクの異常に関する所定のメッセージを監視し、前記所定のメッセージの出力を検知すると当該メッセージに基づいて異常となったタスクを特定し、当該タスクの再起動を要求する監視プログラムと、
前記監視プログラムからのタスクの起動要求を受付け、当該タスクの再起動を実行するタスク生成プログラムと、を含み、
前記所定のメッセージには、
タスクにエラーが発生した際に前記カーネルから出力されるエラーメッセージと、タスクが終了した際に前記カーネルから出力されるプロセス終了通知と、が含まれ、
前記監視プログラムには、  前記エラーメッセージを監視し、前記エラーメッセージからエラーが発生したタスクを特定し、当該タスクの再起動を要求するエラーメッセージハンドリングプログラムと、  前記プロセス終了通知を監視し、前記プロセス終了通知から終了したタスクを特定し、当該タスクの再起動を要求するタスク終了監視プログラムと、が含まれ、
さらに、前記エラーメッセージハンドリングプログラムによる復旧処理が実行される際に、復旧処理の対象となるタスクの情報が書き込まれるエラータスク管理テーブルと、
前記タスク終了監視プログラムによる復旧処理が実行される際に、復旧処理の対象となるタスクの情報が書き込まれる終了タスク管理テーブルと、を有し、
前記エラーメッセージハンドリングプログラムは、前記終了タスク管理テーブルを参照し、復旧処理の対象となるタスクが登録されていないことを確認した後に復旧処理を実行し、
前記タスク終了監視プログラムは、前記エラータスク管理テーブルを参照し、復旧処理の対象となるタスクが登録されていないことを確認した後に復旧処理を実行することを特徴とする制御サーバ。
【請求項２】
請求項１において、
前記タスク生成プログラムは、前記エラーメッセージハンドリングプログラムか、前記タスク終了監視プログラムのうち、前記所定のメッセージを早く検知したプログラムからの再起動要求に従ってタスクを再起動することを特徴とする制御サーバ。
【請求項３】
請求項１において、さらに、
異常となったタスクの種類、または、異常の種類に対応した障害復旧処理が記憶される障害処理管理テーブルを有し、
前記監視プログラムは、異常となったタスクを特定すると、前記障害処理管理テーブルに基づいた障害復旧処理を実行することを特徴とする制御サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御サーバに関する。
【背景技術】
【０００２】
ミッションクリティカルなシステムにおいて、アプリケーションの最小単位であるプロセスが意図せず終了した場合、プロセス終了のイベントを迅速に検知し、復旧処理を行なう必要がある。
【０００３】
特許文献１には、コアファイル出力時に「ＣＰＵ使用率等のシステム・リソースを過渡に使用してしまう。そのため、管理プロセスにおいて実施しなければならないプロセスの再起動処理までもが遅延してしまい、サービス再起動の完了までの時間が大幅に遅延してしまうという問題がる」と記載され（段落０００９）、この課題を解決するために、「クラスタで構成されたシステムにおいて、致命的エラー発生時に共有メモリ情報を一時的にバックアップすることにより、Ｃ ｏ ｒ ｅ ファイルの出力を一時的に抑止することを可能とすることを特徴とする。」と記載されている(段落００２２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６５１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、特にプロセス処理にて致命的なエラーが生じた場合、プロセスは強制終了される。その際、事後に障害解析を行うためのコアファイルと呼ばれる情報がハードディスクに出力され、その後プロセス終了となる。
【０００６】
コアファイルのサイズは、エラーの発生したプロセスのメモリ空間の大きさに比例する。メモリ上のデータ操作に比べてハードディスク上のデータ操作は時間がかかるため、多大なメモリ空間を持つプロセスの場合、プロセス終了までに時間がかかり、プロセス終了を契機に行なう復旧処理が遅延してしまう。
【０００７】
ここで、プロセスの動作に致命的なエラーが発生した場合、エラー発生元プロセスに対して、カーネルはシグナルによる通知を行うが、特許文献１では、このシグナル通知を各プロセスで補足させ、Ｃｏｒｅファイルの出力を一時的に抑止することで上記の課題を解決している。
【０００８】
このため、プロセス毎に、障害処理のためのシグナル送受信処理を組み込む必要がある。従って、既存のオブジェクト資産をそのまま流用できず、改造及びリコンパイルが必要となる問題がある。
【０００９】
そこで、本発明では、汎用のカーネルを用いて、タスクの異常が発生した場合でも遅延することなく障害復旧を行う制御サーバ等を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、代表的な本発明の制御サーバ等の一つは、カーネル上で動作する複数のプログラムを有し、前記複数のプログラムには、前記カーネルから出力されるタスクの異常に関する所定のメッセージを監視し、前記所定のメッセージの出力を検知すると当該メッセージに基づいて異常となったタスクを特定し、当該タスクの再起動を要求する監視プログラムと、前記監視プログラムからのタスクの起動要求を受付け、当該タスクの再起動を実行するタスク生成プログラムと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、汎用のカーネルを用いて、タスクの異常が発生した場合でも遅延することなく障害復旧を行う制御サーバ等を提供することができる。  上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】制御サーバの構成図の例である。
【図２】カーネルエラーメッセージのハンドリングによる障害復旧処理を示すシーケンス図である。
【図３】タスクの終了監視による障害復旧処理を示すシーケンス図である。
【図４】タスク生成管理テーブルを示す図である。
【図５】タスク状態管理テーブルを示す図である。
【図６】エラータスク管理テーブルを示す図である。
【図７】終了タスク管理テーブルを示す図である。
【図８】エラーメッセージ処理管理テーブルを示す図である。
【図９】タスク終了時処理管理テーブルを示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施例を説明する。
【００１４】
図１は、本実施例の制御サーバの構成図の例である。
【００１５】
制御サーバ１は、メモリ１１、表示装置１３、ＣＰＵ１５、ネットワークＩ／Ｆ１４、ディスク装置１６を有する。本制御サーバは、外部ネットワークに接続され、コントローラ２、外部端末３、待機系サーバ４との通信を行う。
【００１６】
ＣＰＵ１５は、ディスク装置１６からメモリ１１にプログラムを展開し、このプログラムを実行する。実行するプログラムとしては、カーネル１２や、カーネル上で動作する各種プログラム等である。
【００１７】
メモリ１１は、ＣＰＵ１５が動作するための一時的な記憶領域であり、例えば、ディスク装置１６から転送されたプログラムが格納される。図１では、ＣＰＵ１５が実行する各種プログラムをメモリ１１内に機能ブロック図として示している。
【００１８】
ディスク装置１６は、情報の記憶媒体であり、カーネル１２、アプリケーションプログラム、デバイスドライバ、及びＣＰＵ１５を動作させるためのプログラムを保存し、プログラムの実行結果も保存する。ディスク装置１６としては、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、及びフラッシュメモリを例示できる。
【００１９】
ネットワークＩ／Ｆ１４は、ネットワークとの通信機能を有する。ネットワークＩ／Ｆ１４は、ＣＰＵ１５が実行するプログラムから通信要求を受け取り、ネットワークに対して通信する。
【００２０】
表示装置１３は、外部への情報の出力を行う装置であり、具体的には液晶ディスプレイやＣＲＴ等の表示装置からなる。  メモリ１１内には、プロセスの終了時に通知を行う、障害が発生した際にメッセージによる通知を行うエラーメッセージ出力機構１２２を有するカーネル１２を持ち、タスク１１６等の他の各種プログラムはカーネル１２上で動作する。尚、プロセス終了通知機構１２１、エラーメッセージ出力機構１２２による機能は、汎用ＯＳのカーネル１２が通常有する機能である。
【００２１】
タスク１１６は、タスク生成機構１１０にて生成されたプロセスを示し、複数のタスク１１６がＣＰＵ１５によって順次実行される。
【００２２】
タスク生成要求機構１０８は、タスクを一意に特定するためのタスクＩＤとプログラム名称を入力情報とし、図４に示すタスク生成管理テーブル１０９にこれらの情報を登録し、セマフォ操作によりタスク生成機構１１０に対して通知を行う。
【００２３】
ただし、タスク生成要求機構１０８は、図５に示すタスク状態管理テーブル１０９を参照し、入力として与えられたタスクＩＤを持つタスクの状態を確認し、で当該タスクがアクティブ状態の場合、新規登録処理及びセマフォ操作は行わない。
【００２４】
タスク生成機構１１０は、タスク生成管理テーブル１０９からタスク生成要求を一つずつ読み込み、タスクの生成を行うと共に、生成したタスクの持つＰＩＤとタスクＩＤを対応付けるために、タスク状態管理テーブル１１３にタスクの持つＰＩＤ、タスクＩＤを書込み、本タスク情報レコードのタスク状態をアクティブに変化させる。
【００２５】
図４は、タスク生成管理テーブル１０９の内容を示す図である。タスク生成管理テーブル１０９は、タスク生成要求機構１０８によって書き込まれるテーブルであり、タスクを一意に特定するためのタスクＩＤとプログラム名称とが対応付けて記憶されている。
【００２６】
図５は、タスク状態管理テーブル１１３の内容を示す図である。タスク状態管理テーブル１１３は、ＣＰＵ１５によって実行されるタスクの状態を示すテーブルであり、タスクの持つＰＩＤ、タスクＩＤ、本タスクのタスク状態が対応付けて記憶されている。このタスク状態管理テーブル１１３を参照することによって、ＰＩＤからタスクＩＤへのひも付け、当該タスクの状態を確認することができる。
【００２７】
＜エラーメッセージに基づく復旧処理＞
図２は、タスク動作時に致命的なエラーが発生した場合の障害復旧を示すシーケンスである。
【００２８】
図２において、タスク１１６に致命的な例外処理が発生した場合（Ｓ１０１）、カーネル１２の持つエラーメッセージ出力機構１２２は、カーネル内メッセージバッファに対してプログラムエラーが発生したことを通知するカーネルメッセージの書込みを行い（Ｓ１０２）、タスクにＣｏｒｅファイル出力を行わせるために、タスクに対してＳＩＧＳＥＧＶ等のシグナル送信を行う（Ｓ１０３）。ＳＩＧＳＥＧＶのシグナル受信を契機に、タスクはディスクに対してＣｏｒｅファイルの出力を開始する（Ｓ１０７）し、Ｃｏｒｅファイルの出力完了（Ｓ１１１）後に、プロセスとして消滅する。
【００２９】
エラーメッセージハンドリング機構１１５は、カーネル内メッセージバッファに対して読み込みを行い、読み込んだメッセージ内容を解析し、メッセージ内容に基づく障害ＩＤ、障害の発生したＰＩＤ、ＰＩＤに対応するタスクＩＤ等の情報を取得する（Ｓ１０４）。
【００３０】
エラーメッセージハンドリング機構１１５は、取得したＰＩＤ情報を基に、タスク状態管理テーブル１１３を参照し、障害の発生したタスクのレコードを特定し、本レコードの初期化を行うと共に、レコード初期化の多重実行防止のため、図６に示すエラータスク管理テーブル１１２に対してＰＩＤとタスクＩＤをセットとし、レコード書込みを行う（Ｓ１０５）。
【００３１】
また、Ｓ１０５処理前に、エラーメッセージハンドリング機構１１５は、図７に示す終了タスク管理テーブル１１１を参照し、Ｓ１０４で取得したＰＩＤとタスクＩＤに一致するレコードが存在するか確認し、レコードが存在する場合には、本レコードを削除し、Ｓ１０５処理は行わない。
【００３２】
図６は、エラータスク管理テーブル１１２の内容を示す図である。エラータスク管理テーブル１１２は、エラーメッセージハンドリング機構１１５によって、タスク状態管理テーブル１１３の初期化を実行した際に書き込まれるテーブルであり、初期化されたタスクＩＤとＰＩＤが対応付けて記憶される。本テーブルを後述するタスク終了監視機構１１４が参照することによって、エラータスク管理テーブル１１２とタスク終了監視機構１１４との初期化処理の重複を防ぐことができる。
【００３３】
図７は、終了タスク管理テーブル１１１の内容を示す図である。終了タスク管理テーブル１１１は、後述するタスク終了監視機構１１４によって、タスク状態管理テーブル１１３の初期化を実行した際に書き込まれるテーブルであり、初期化されたタスクＩＤとＰＩＤが対応付けて記憶される。本テーブルをエラータスク管理テーブル１１２が参照することによって、エラータスク管理テーブル１１２とタスク終了監視機構１１４との初期化処理の重複を防ぐことができる。
【００３４】
図２に戻り、エラーメッセージハンドリング機構１１５は、図８に示すエラーメッセージ処理管理テーブル１１８に登録済みの障害復旧処理を順次実行する（Ｓ１０６）。
【００３５】
図８は、エラーメッセージ処理管理テーブル１１８の内容を示す図である。エラーメッセージ処理管理テーブル１１８は、エラーメッセージ処理登録機構１２０によって予め障害ＩＤ、ＰＩＤ、タスクＩＤ等と、それに対応する障害復旧処理とが対応付けて記憶されている。本テーブルを参照することによって、障害の種類やタスクの種類によって適切な障害復旧処理を実行することができる。障害復旧処理は、障害ＩＤ、ＰＩＤ、タスクＩＤ等を入力とする。
【００３６】
図２においては、タスクＡの再起動を本障害復旧処理として登録した例を示し、障害ＩＤがプログラムエラーであった場合、障害復旧処理の入力として得られるタスクＩＤを持つタスクの起動要求を発行する。タスクの起動については、タスク生成要求機構１０８を使用し、前述の通り、セマフォ操作にてタスク生成機構１１０に通知を送る（Ｓ１０８）。
【００３７】
通知を受けたタスク生成機構１１０は、生成するタスクのタスク状態管理テーブル１１３上の状態をアクティブに更新後、タスク生成管理テーブル１０９を参照し、入力として与えられたタスクＩＤに対応するプログラム名称を基にタスクを起動する。
【００３８】
以上のように、本実施形態によれば、タスクの致命的なエラー発生時に、カーネルから出力されるメッセージをメッセージハンドリング機構により検知することで、Ｃｏｒｅファイルの出力完了を待たずにタスクの再起動を実施できる。その結果、タスクに対して異常時処理実装等の改造を加える必要はなく、かつタスク動作の中断時間を短くできる。
【００３９】
＜プロセス終了通知に基づく復旧処理＞
プログラムエラー等の致命的なエラーが発生した場合には、カーネルからカーネルメッセージが出力されるため、実施例１記載の方法により、障害復旧処理を実行できる。
【００４０】
一方で、タスクが致命的なエラー以外の原因により、意図せず終了した場合には、カーネルメッセージの出力が行われないため、エラーメッセージハンドリング機構にて障害検知を行えない。
【００４１】
図３は、タスク終了にカーネルメッセージ出力が伴わない場合の障害復旧を示すシーケンスである。
【００４２】
図３において、タスク１１６が終了した場合（Ｓ２０１）、カーネル１２の持つプロセス終了通知機構１２１が通知を出す（Ｓ２０２）。
【００４３】
タスク終了監視機構１１４は、プロセス終了通知機構１２１からの通知を受け取り、通知された内容を基に、終了したプロセスのＰＩＤ情報を取得する（Ｓ２０３）。タスク終了通知機構１２１は、タスク状態管理テーブル１１３を参照し、取得したＰＩＤ情報を基に、タスク状態管理テーブル１１３を参照し、終了したタスクのレコードを特定し、本レコードの初期化を行うと共に、レコード初期化の多重実行防止のため、終了タスク管理テーブル１１１に対してＰＩＤとタスクＩＤをセットとし、レコード書込みを行う（Ｓ２０４）。また、Ｓ２０４処理前に、タスク終了監視機構１１４は、エラータスク管理テーブル１１２を参照し、Ｓ２０３で取得したＰＩＤに一致するレコードが存在するか確認し、レコードが存在する場合には、本レコードを削除し、Ｓ２０４処理は行わない。
【００４４】
タスク終了監視機構１１４は、図９に示すタスク終了時処理管理テーブル１１７に登録済みの障害復旧処理を順次実行する（Ｓ２０５）。
【００４５】
図９は、タスク終了時処理管理テーブル１１７の内容を示す図である。タスク終了時処理管理テーブル１１７は、タスク終了時処理登録機構１１９によってタスクＩＤと、それに対応する障害復旧処理とが対応付けて記憶されている。本テーブルを参照することによって、タスクの種類によって適切な障害復旧処理を実行することができる。障害復旧処理は、タスクＩＤを入力とする。図２においては、タスクＡの再起動を本障害復旧処理として登録した例を示す。タスク起動までの流れは実施例１に記載の通りである。
【００４６】
以上のように、本実施形態によれば、カーネルメッセージ出力の伴わない、タスクの終了障害を検知でき、かつタスク終了監視機構はカーネルからのプロセス終了通知待ちとするため、ＣＰＵリソースの使用を抑えられる。
【００４７】
以上説明したように本発明では、エラーメッセージハンドリング機構１１５を設けることによって、致命的なエラーが発生した場合にカーネルが出力するエラーメッセージをハンドリングし、エラーメッセージに含まれるプロセスの情報を確認し、エラーの発生したプロセスに応じて、障害復旧処理を行うことができる。これによって、既存のオブジェクト資産に対して、改造を加えることなく、致命的なエラーが発生した場合でも直ちに障害復旧を行う技術を提供することができる。
【００４８】
また、タスク終了監視機構１１４を設けることによって、タスクが致命的なエラー以外の原因により意図せず終了した場合においても、プロセス終了通知を検知することで、同様に障害復旧処理を行うことができる。
【００４９】
このように、エラーメッセージハンドリング機構１１５と、タスク終了監視機構１１４との２つの監視機構によって障害復旧処理を行うため、カーネルメッセージ出力か、プロセス終了どちらか早い方を採用して障害普及できるため、再起動にかかる時間を短縮することができる。
【００５０】
さらには、エラーメッセージ処理管理テーブル１１８、タスク終了時処理管理テーブル１１７を設けることによって、エラーメッセージハンドリング機構１１５による復旧処理と、タスク終了監視機構１１４による復旧処理の重複を防ぐことがで  なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、障害復旧処理を待機系への系切替に変更してもよい。
【符号の説明】
【００５１】
１…制御サーバ、２…コントローラ、３…外部端末、４…待機系サーバ、１１…メモリ、１２…カーネル、１３…表示装置、１４…ネットワークＩ／Ｆ、１５…ＣＰＵ、１６…ディスク装置、１０８…タスク生成要求機構、１０９…タスク生成管理テーブル、１１０…タスク生成機構、１１１…終了タスク管理テーブル、１１２…エラータスク管理テーブル、１１３…タスク状態管理テーブル、１１４…タスク終了監視機構、１１５…エラーハンドリング機構、１１６…タスク、１１７…タスク終了時処理管理テーブル、１１８…エラーメッセージ処理管理テーブル、１１９…タスク終了時処理登録機構、１２０…エラーメッセージ処理登録機構
【図１】
0006430321.tif 000002
【図２】
0006430321.tif 000003
【図３】
0006430321.tif 000004
【図４】
0006430321.tif 000005
【図５】
0006430321.tif 000006
【図６】
0006430321.tif 000007
【図７】
0006430321.tif 000008
【図８】
0006430321.tif 000009
【図９】
0006430321.tif 000010