JP5504876B2 - プロセス異常復旧装置及びプロセス異常復旧方法 - Google Patents

プロセス異常復旧装置及びプロセス異常復旧方法 Download PDF

Info

Publication number
JP5504876B2
JP5504876B2 JP2009291929A JP2009291929A JP5504876B2 JP 5504876 B2 JP5504876 B2 JP 5504876B2 JP 2009291929 A JP2009291929 A JP 2009291929A JP 2009291929 A JP2009291929 A JP 2009291929A JP 5504876 B2 JP5504876 B2 JP 5504876B2
Authority
JP
Japan
Prior art keywords
recovery
file
recovery command
information
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009291929A
Other languages
English (en)
Other versions
JP2011134044A (ja
Inventor
滋 安田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009291929A priority Critical patent/JP5504876B2/ja
Publication of JP2011134044A publication Critical patent/JP2011134044A/ja
Application granted granted Critical
Publication of JP5504876B2 publication Critical patent/JP5504876B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はプロセス異常復旧装置及びプロセス異常復旧方法に関する。
近年では、高速化や拡張性向上を目的として複数のプロセスによりシステムを稼働させることが多い。この場合において、複数のプロセスがファイルやメモリを共有して使用することがある(以後の説明では複数のプロセスにおいて共有されうるファイル、メモリ等を共有リソースと記載する。)。
大規模なシステム等は連続稼働が要求されることが多い。連続稼働が必要なシステムでは、あるプロセスが異常終了した場合に速やか、かつ、正確にシステムが提供していたサービスを再開することが要求される。ここで、異常終了したプロセスが共有リソースを使用していた場合、当該プロセスが当該共有リソースの値を不正な状態に書き換えていた恐れがある。そのためプロセスの異常終了時には、異常終了したプロセスが使用していた共有リソースを復旧してから当該プロセスを再起動する必要がある。共有リソースの復旧の後に、プロセスの再起動を行うことにより正常なシステム動作が再開される。
共有リソースの復旧を含むプロセスの再起動の方法としては、主に以下の二つの方法がある。第一の方法は、異常終了したプロセスが復旧後に共有リソースにアクセスする場合、当該共有リソースに対するアクセス実行をする前に当該共有リソースの整合性を確認し、問題がないことを確認してからアクセス処理を行うという方法である。しかし当該方法では、共有リソースにアクセスするたびに整合性チェックを行う必要があるため、性能が劣化する恐れがある。
第二の方法は、プロセスの動作状況を監視する監視プロセスを用意し、監視プロセスが監視対象プロセスの異常終了を検出した場合、異常終了したプロセスが使用していた共有リソースの内容を修復するという方法である。しかしこの方法では、共有ライブラリが共有リソースを使用していた場合に問題が生じる。共有ライブラリファイルは複数のプロセスにおいて共通する処理を記載したファイルであり、共有ライブラリファイルは共有ライブラリにロードされる。すなわち、共有ライブラリは、各プロセスで共通する処理を行う処理主体である。
複数のプロセスが共有ライブラリを使用し、その共有ライブラリが共有リソースを使用する場合、プロセスの異常終了時に共有リソースを復旧するために、共有ライブラリを使用する複数のプロセス全てを監視対象とする必要がある。すなわち、各プロセスが共有ライブラリを介して共有リソースを使用する恐れがあるため、全てのプロセスを監視しなければならない。またそれらの複数のプロセスに対応する復旧処理を実装する必要がある。この場合、実装すべき復旧処理は共有ライブラリによる共有リソースの使用にかかるものであるにもかかわらず、共有ライブラリを使用するプログラム各々において復旧処理を実装する必要がある。そのため、実装の手間が大きい。
また、上述の二つの方法では、共有リソースの復旧処理をメモリ上またはプロセスにロードする必要がある。そのため、システム改編等に応じて、プロセス異常終了時の復旧処理の内容を変更する必要がある場合に、一旦システムを停止したうえで、処理内容の変更を行う。その後に、変更を反映した復旧処理を再度メモリ上またはプロセスにロードする必要がある。このため、常時稼働が求められるシステムでは、上記の2つの方法を適用することが困難である。
さらに、当該技術に関連する文献として以下のものが挙げられる。
特開2000-311099(特許文献1)公報には、名前が設定された任意のプロセスに対して復旧処理を設定し、プロセスの異常終了時に当該プロセスに設定された処理を実行するプロセス監視システムが開示されている。当該プロセス監視システムは、図12に示すような監視プロセス定義ファイルを保持する。監視プロセス定義ファイルには、プロセス名と、終了コードと、連動処理とが記述される。当該プロセス監視システムは、プロセス異常終了時に検出されたプロセス名とプロセス終了時の終了コードとを取得し、監視プロセス定義ファイルを検索して連動処理を取得し、当該連動処理を実行する。当該連動処理内には共有リソースの復旧処理等を記述する。連動処理内に共有リソースの復旧処理が記載されていることにより、プロセスの異常終了時に共有リソースの復旧処理が実行される。
特開平11-110258(特許文献2)公報には、プロセスの異常終了等により発行されたエラーメッセージを解析し、解析結果を用いてエラー状態を復旧するエラー診断装置が開示されている。当該エラー診断装置には、予めシステム復旧を要するエラーを認識するためのエラーメッセージと、その復旧コマンドが登録されている。エラー発生時には、エラー診断装置はエラーメッセージを解析し、エラーメッセージに対応づけられた復旧コマンドを実行する。
特開2000−311099号公報 特開平11−110258号公報 特開平11−327913号公報
しかしながら、上述の特許文献に記載の技術にも以下の問題点がある。特許文献1に記載のプロセス監視システムでは、プロセス名に対応づけて連動処理を設定している。一般にオペレーティングシステム上で動作するプロセスの名前は、ロードした実行ファイル名と同じとなることが多い。しかし異なる処理を実行するための複数の実行ファイルに対して同じ名前を付けてシステム上に配置した場合、異なる処理を実行し、かつ同じ名前を持つ複数のプロセスが存在することになる。また、プロセスの動作中にプロセス名を変更できるオペレーティングシステムも存在する。この場合、実行中の一方のプロセスのプロセス名に合わせるように、他方のプロセスのプロセス名を変更することが可能である。
つまり、異なる処理を実行するプロセスであるにもかかわらず、同じプロセス名を持つプロセスがシステム上に複数存在する可能性がある。言い換えると、プロセス名によってプロセスを識別することができない。この場合、プロセス異常終了時にプロセス名をキーとして監視プロセス定義ファイルから連動処理の検索を行ったとしても、複数の連動処理が検索結果として得られる可能性がある。これにより、異常終了したプロセスに対応する連動処理とは異なる連動処理も検索結果として取得され、当該連動処理が行われてしまう恐れがある。すなわち、プロセス異常終了時に適切な連動処理が行われない恐れがある。
また特許文献1に記載のプロセス監視システムでは、共有ライブラリに対する考慮が不十分である。実行ファイルをロードしたプロセスは、複数のプロセス間で共通する処理を使用するために、共有ライブラリファイルをロードした共有ライブラリとリンクする。共有ライブラリが共有リソースを使用する場合、あるプロセスが異常終了した際に当該共有リソースの復旧処理が必要になることがある。これは、共有ライブラリにおいて共有リソースを更新している最中に、共有ライブラリとリンクしているプロセスが異常終了した場合、共有ライブラリの処理も中断されることにより、共有リソースが異常値となる可能性があるためである。ここで、共有ライブラリとリンクしたプロセスが複数存在する場合、その全てのプロセスに対する連動処理を監視プロセス定義ファイルに定義して、当該共有リソースの復旧処理を行う必要がある。このため、連動処理を監視プロセス定義ファイルに定義する作業が煩雑となる。
特許文献2に記載のエラー診断装置では、エラーメッセージに基づいてエラーの復旧処理が行われる。当該エラーメッセージにはエラー内容と、エラーを引き起こしたプロセスが記述されうる。ここで、異常終了したプロセスがリンクしていた共有ライブラリに対して他のプロセスもリンクしていた場合、当該他のプロセスに関する復旧処理を行う必要がある。これは、当該他のプロセスが共有ライブラリを介して共有リソースを使用している可能性があり、当該使用を中断する等の復旧処理を行う必要があるためである。しかし、エラーメッセージには異常終了したプロセスの情報しか含まれないため、当該他のプロセスに対する復旧処理を行うことができない。これにより、プロセス異常終了時に適切な復旧処理が行われない恐れがある。
すなわち、特許文献1及び2に記載の技術によっては、プロセスの異常終了時に共有リソースの復旧も含めたプロセスの復旧処理が正常に行われない恐れがある。
本発明はこのような問題点を解決するためになされたものであり、プロセスの異常終了の際に共有リソースの復旧も含めたプロセスの復旧処理が正常に行うことができ、当該復旧処理に関する設定も簡易なプロセス異常復旧装置及びプロセス異常復旧方法を提供することを目的とする。
本発明にかかるプロセス異常復旧装置の一態様は、プロセスのロード対象となるロード対象ファイルと、プロセスの終了時に終了にかかる前記プロセスにかかる処理を行う復旧処理実行部と、を備え、前記ロード対象ファイルは、プロセス終了時に実行する復旧処理が記述された復旧コマンドファイルを配置した位置情報を含む復旧処理情報を有し、
前記復旧処理実行部は、プロセスの終了を検出した場合に、終了したプロセスにロードされていた前記ロード対象ファイルを全て取得し、取得した前記ロード対象ファイル内の前記位置情報を参照して前記復旧コマンドファイルを全て取得し、取得した前記復旧コマンドファイルをロードして前記復旧処理を実行するものである。
本発明にかかるプロセス異常復旧方法の一態様は、プロセスのロード対象となるロード対象ファイルに対して、当該プロセス終了時に実行する復旧処理が記述された復旧コマンドファイルを配置した位置情報を含む復旧処理情報を記述して記憶しておき、プロセス終了を検出した場合に、当該プロセスにロードされていた前記ロード対象ファイルを全て取得し、取得した前記ロード対象ファイル内の前記位置情報を参照して前記復旧コマンドファイルを全て取得し、取得した前記復旧コマンドファイルをロードして前記復旧処理を実行するものである。
本発明によれば、プロセスの異常終了の際に共有リソースの復旧も含めたプロセスの復旧処理が正常に行うことができる。
実施の形態1にかかるオペレーティングシステムの構成を示すブロック図である。 実施の形態1にかかる復旧処理情報を示す図である。 実施の形態1にかかる復旧コマンドリストを示す図である。 実施の形態1にかかる実行ファイル及び共有ライブラリファイルの例を示す図である。 実施の形態1にかかるプロセス終了処理の詳細を示すフローチャートである。 実施の形態1にかかる復旧コマンドリスト生成の詳細を示すフローチャートである。 実施の形態1にかかる復旧処理情報からの復旧コマンド情報の抽出処理を示すフローチャートである。 実施の形態1にかかる復旧コマンドの実行処理を示すフローチャートである。 実施の形態2にかかるプロセス異常復旧装置の構成を示すブロック図である。 実施の形態2にかかる復旧処理の実行を示すフローチャートである。 実施の形態1にかかるプロセス異常復旧装置の概要構成を示すブロック図である。 本発明が解決しようとする課題の1つに関連するプロセス監視システムの監視プロセス定義ファイルの図である。
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるオペレーティングシステム1の構成を示す図である。以下にオペレーティングシステム1の各構成要素について説明する。
オペレーティングシステム1は、コンピュータにおいて、ハードウェアを抽象化したインターフェイスをアプリケーションソフトウェアに提供するソフトウェアであり、基本ソフトウェアの一種である。
プロセス10は、実行ファイル101をロードすることにより起動されたプロセスである。同様にプロセス11は、実行ファイル111をロードすることにより起動されたプロセスである。実行ファイル101及び実行ファイル111は、プログラマにより記述された処理をコンピュータ上で実行可能な形式に書き換えたファイルである。共有ライブラリファイル201は、複数のプロセスで共通する処理が記載されたファイルである。
実行ファイル101及び実行ファイル111は共有ライブラリファイル201をリンクする。実行ファイル101が共有ライブラリファイル201とリンクしていることにより、プロセス10には共有ライブラリ20がロードされている。また実行ファイル111が共有ライブラリファイル201をリンクしていることにより、プロセス11には共有ライブラリ20がロードされている。プロセス10及びプロセス11は、共有メモリ50を共有して使用している。また、共有ライブラリ20は、共有ファイル60を使用している。
実行ファイル101には復旧処理情報1011が定義されている。同様に実行ファイル111には復旧処理情報1111が定義されている。復旧処理情報1011及び復旧処理情報1111は実行ファイルをロードして起動されたプロセスが終了した場合において、どのような復旧処理を行うかを定義した情報である。図2に復旧処理情報の詳細を示す。図2では、復旧処理情報1011、復旧処理情報1111、復旧処理情報2011の形式を復旧処理情報70を代表例として説明する。
図2に示すように復旧処理情報70はテーブル形式になっており、実行順701、復旧コマンドパス702、及び動作指定703の項目を含む構成である。一つのテーブル行が一つの復旧コマンド情報を表している。テーブル行を複数定義することにより、一つの実行ファイルまたは共有ライブラリファイルに対して複数の復旧コマンド情報を設定することが可能である。
実行順701は、複数の復旧コマンド情報が抽出された際に、どのような順序で復旧コマンドを実行するかを指定するものである。復旧コマンドとは、プロセス終了時に実行される復旧処理である。複数の復旧コマンド情報が抽出された場合、各復旧コマンドに対応して設定されている実行順701の値が小さい順に実行していく。
復旧コマンドパス702は、復旧処理が実装されている復旧コマンドファイルのファイルシステム上の位置を指定するものである。復旧コマンドファイルは実行ファイルの一種である。プロセス終了検出時に、復旧コマンドパス702にて指定された位置にある復旧コマンドファイルがロードされ、実行される。
動作指定703は、プロセス終了検出の際に復旧コマンドを実行するかどうかの条件を指定するものである。動作指定703には、「常に実行」、「異常終了時のみ実行」、「正常終了時のみ実行」のいずれかが設定される。動作指定703に「常に実行」が指定された場合、プロセス終了の際に、同じ行の復旧コマンドパス702に指定されている復旧コマンドファイルが正常終了、異常終了に関係なく必ずロードされ、実行されることを意味する。動作指定703に「異常終了時のみ実行」が指定された場合、プロセスの異常終了の際に、同じ行の復旧コマンドパス702に指定されている復旧コマンドファイルがロードされ、実行されることを意味する。動作指定703に「異常終了時のみ実行」が指定された場合、プロセスの異常終了の際に、同じ行の復旧コマンドパス702に指定されている復旧コマンドファイルがロードされ、実行されることを意味する。なお、プロセスがシグナル等の外部要因によって強制終了させられた場合も、プロセスが異常終了したとして扱われる。
図2では、復旧処理情報70に3つの行が設定されている。行711には、実行順701として"10"、復旧コマンドパス702として"/usr/bin/command1"、動作指定703として「常に実行」が設定されている。 行712には、実行順701として"20"、復旧コマンドパス702として"/usr/bin/command2"、動作指定703として「異常終了時のみ実行」が設定されている。 行713には、実行順701として"30"、復旧コマンドパス702として"/usr/bin/command3"、動作指定703として「正常終了時のみ実行」が設定されている。
復旧処理情報70が設定されている実行ファイルをロードして起動したプロセスが正常に終了した場合、行711と行713が抽出される。行711の実行順("10")が行703の実行順("30")よりも小さいので、"/usr/bin/command1"、"/usr/bin/command3"の順に復旧コマンドファイルがロードされ、実行される。
復旧処理情報70が設定されている実行ファイルをロードして起動したプロセスが異常終了した場合、行711と行712が抽出される。行711の実行順("10")が行712の実行順("30")よりも小さいので、"/usr/bin/command1"、"/usr/bin/command2" の順に復旧コマンドファイルがロードされ、実行される。
図1において、復旧処理情報1011及び復旧処理情報1111には、復旧コマンドファイル40の位置が設定されている。なお、復旧処理情報1011と復旧処理情報1111は、プロセスの仮想空間にはロードされない位置に配置されている。
復旧コマンドファイル40は、共有メモリ50に関する復旧処理が実装された実行ファイルである。復旧コマンドファイル40をロードして起動されるプロセスは、共有メモリ50の状態を検査し、不正な状態の修復を行う。 例えば、共有メモリ50内に排他制御情報を書き込んだ状態でプロセスが異常終了してしまうと、その後共有メモリ50を使用するプロセスにてデッドロックが発生する。この場合、復旧コマンドファイル40をロードして起動されたプロセスが共有メモリ50内の不正な排他制御情報を削除することで、共有メモリ50を使用するプロセスにおけるデッドロック発生を防止する。
また、復旧コマンドファイル40をロードして起動されるプロセスには、終了したプロセスの実行ファイル、およびプロセス起動時に指定された引数が指定される。当該指定は後述のプロセス終了処理部30によってなされる。このため、 共有メモリ50の復旧処理終了後、復旧コマンドファイル40をロードして起動されるプロセスは、終了したプロセスを再起動することができる。
共有ライブラリファイル201には復旧処理情報2011が定義されている。復旧処理情報2011には、復旧コマンドファイル41の位置が設定されている。なお、復旧処理情報2011は、プロセスの仮想空間にはロードされない位置に配置されている。
復旧コマンドファイル41には、共有ファイル60を復旧する処理が実装された実行ファイルである。復旧コマンドファイル41をロードして起動されるプロセスは、共有ファイル60の状態を検査し、不正な状態の修復を行う。たとえば、共有ファイル60の内容の一貫性を検査し、不正な状態であれば共有ファイル60の内容を変更する。
プロセス終了処理部30は、オペレーティングシステム1上で動作するプロセスを終了させるための処理を実行する処理部である。プロセス終了処理部30は、カーネル部2における一部機能を実現する処理部である。プロセス終了処理部30は、復旧処理実行部301を備える。復旧処理実行部301は、復旧コマンド抽出部3011と復旧コマンド実行部3012を備える。
オペレーティングシステム1上で動作する任意のプロセスが終了する場合、 その終了要因に関係なくプロセス終了処理部30が当該プロセスを消去する処理を行う。具体的には以下の処理を行う。
プロセス終了処理部30がプロセスの終了処理を行う場合、当該プロセスに含まれる全てのスレッドが停止した後、復旧処理実行部301を呼び出す。復旧処理実行部301内の復旧コマンド抽出部3011は、終了したプロセスにロードされているファイル(実行ファイル、共有ライブラリファイル)を全て抽出し、それらのファイルに含まれている復旧処理情報を参照する。復旧コマンド抽出部3011は、プロセスの終了種別(異常終了か、正常終了か)をキーとして、ファイル(実行ファイル、共有ライブラリファイル)内の復旧処理情報を検索し、必要な復旧コマンド情報を全て抽出する。復旧コマンド抽出部3011は、抽出された復旧コマンド情報から必要な情報を抽出し、実行順に基づいて並べ替えた復旧コマンドリストを生成する。
復旧コマンドリストには、復旧コマンド実行部3012が実行すべき復旧コマンドに関する情報がリスト形式で記載される。復旧コマンドリストには、終了したプロセスにロードされているファイルのファイル名、復旧コマンドパス、実行順の情報が含まれる。復旧コマンドリストは、実行順が昇順となるように並べ替えられている。生成された復旧コマンドリストの例を図3に示す。
復旧コマンドリストの生成の後、復旧処理実行部301は終了したプロセスの終了要因、終了種別(正常終了、異常終了)、及びプロセス起動時の引数を抽出して保存する。そして、復旧処理実行部301は、当該プロセスの消滅処理を行った後に、復旧コマンド実行部3012を呼び出す。復旧コマンド実行部3012は、復旧コマンドリストに記述された復旧コマンドを実行順の順序で全て実行する。すなわち、復旧コマンド実行部3012は、復旧コマンドリストの復旧コマンドパスからファイルを取得してロードし、プロセスを生成する。この生成したプロセスにより復旧処理を実行する。この際に、復旧コマンド実行部3012は、保存しておいたプロセスの終了要因等の情報を生成するプロセスの実行の引数に用いることにより終了要因等に応じた復旧処理を実行できる。
図1の構成においてプロセス10またはプロセス11が異常終了した場合、復旧処理実行部301によって復旧コマンドファイル40と復旧コマンドファイル41とがロードされて実行される。復旧コマンドファイル40をロードして実行することにより、共有メモリ50に関する復旧処理が実行される。復旧コマンドファイル41をロードして実行することにより、共有ファイル60に関する復旧処理が実行される。ここで共有メモリ50を使用するプログラムを新規に作成する場合、そのプログラムの実行ファイル内に復旧処理情報を作成し、内部に復旧コマンドファイル40の情報を設定する。これにより、共有メモリ50に関する復旧処理が実行される。共有ファイル60を使用するプログラムを新規に作成する場合、共有ライブラリファイル201を新規プログラムの実行ファイルにリンクする。これにより、共有ライブラリファイル201内の復旧処理情報2011を参照することができる。復旧処理情報2011を参照できることにより、復旧コマンドファイル41が復旧処理として実行されることとなる。すなわち、共有ファイル60に関する復旧処理が実行される。
次に、プロセスが異常終了した場合の、オペレーティングシステム1の動作例を説明する。オペレーティングシステム1内の実行ファイル101、実行ファイル111、及び共有ライブラリファイル201の復旧処理情報は図4に示すように設定されている。
図4を参照すると、実行ファイル101及び実行ファイル111をロードしたプロセスが異常終了した場合、復旧コマンドファイル40をロードして実行するように設定されている。また、共有ライブラリファイル201をロードした共有ライブラリが異常終了した場合、復旧コマンドファイル41をロードして実行するように設定されている。
当該設定(図4)がなされた場合において、プロセス10が外部要因によって強制終了されたこと、すなわちプロセス10が異常終了したことを考える。プロセス10には共有ライブラリ20がロードされている。そのため、プロセス10の異常終了時に、実行ファイル101内の復旧処理情報1011に設定されている復旧コマンドファイル40と、共有ライブラリファイル201内の復旧処理情報2011に設定されている復旧コマンドファイル41が抽出される。
抽出された復旧コマンドファイル40に関連付けられた実行順(20)と、復旧コマンドファイル41に関連付けられた実行順(10)とを比較すると、復旧コマンドファイル41に関連付けられた実行順の方が値が小さい。そのため、復旧コマンドファイル41、復旧コマンドファイル40の順序で復旧コマンドファイルがロードされ、実行される。この順序で復旧コマンドファイルがロードされ、実行されることにより、復旧コマンドファイル41による共有メモリ50の修復が行われた後に、復旧コマンドファイル40による共有ファイル60の修復が行われる。
次に、プロセス終了時のオペレーティングシステム1の処理の詳細についてフローチャートを用いて説明する。図5は、プロセス終了処理の詳細を示すフローチャートである。プロセスが明示的に終了した場合(正常終了)、またはプロセスがシグナル等の外部要因によって強制終了した場合(異常終了)、プロセス終了処理部30は、終了したプロセス内に含まれる全てのスレッドを停止する(S1)。続いて、復旧コマンド抽出部3011により当該プロセスにロードされている全ての実行ファイル及び共有ライブラリファイルに関する復旧処理情報から復旧コマンドリストを生成する(S2)。復旧コマンドリスト生成(S2)の詳細を図6のフローチャートを用いて説明する。
復旧コマンド抽出部3011は、空の復旧コマンドリストを作成する(S21)。復旧コマンド抽出部3011は、終了したプロセスの仮想空間管理情報を参照し、当該プロセスの仮想空間にロードされている全てのファイルを抽出する(S22)。復旧コマンド抽出部3011は、抽出したファイルから最初のファイルを処理対象として選択する(S23)。
選択したファイルが実行ファイルまたは共有ライブラリファイルである場合(S24:Yes)、選択したファイル内に復旧処理情報が存在するか否かを判定する(S25)。復旧処理情報が存在する場合(S25:Yes)、復旧コマンド抽出部3011は、復旧処理情報からプロセスの終了要因に対応する情報を抽出して復旧コマンドリストに追加する(S26)。S26の処理詳細を図7のフローチャートを用いて説明する。
復旧コマンド抽出部3011は、ファイル内の復旧処理情報のテーブルを読み込み、そのテーブルの最初の行を処理対象として選択する(S261)。最初の行に記載の動作指定703が「常に実行」の場合(S262:Yes)、選択中のファイル名、復旧コマンドパス702、実行順701の情報を抽出し、抽出した情報を復旧コマンドリストに追加する(S266)。
最初の行に記載の動作指定703が「常に実行」でない場合であっても(S262:No)、当該プロセスが正常終了であり(S263:Yes)、かつ動作指定703が「正常終了時のみ実行」である(S264:Yes)場合、または、当該プロセスが異常終了であり(S263:No)、かつ動作指定703が「異常終了時のみ実行」である(S265:Yes)場合、復旧コマンドリストへの追加処理を行う(S266)。
一方、最初の行に記載の動作指定703が「常に実行」でない場合であり(S262:Yes)、かつ当該プロセスが正常終了であり(S263:Yes)、かつ、動作指定703が「正常終了時のみ実行」ではない(S265:Yes)場合、復旧コマンドリストへの追加処理(S266)は行わない。同様に、最初の行に記載の動作指定703が「常に実行」でない場合であり(S262:Yes)、かつ当該プロセスが異常終了であり(S263:No)、かつ、動作指定703が「異常終了時のみ実行」ではない(S265:No)場合、復旧コマンドリストへの追加処理(S266)は行わない。
上述のS262からS266の処理を抽出した全ての行に対して実行し、処理を終了する(S267、S268)。
以上、図7を用いて説明したように、あるファイルに記載の復旧処理情報に基づいて復旧コマンドリストに復旧コマンドの情報を追加する処理(S26)が実行される。一のファイルからの復旧コマンドの情報の追加が終わった後に、復旧コマンド抽出部3011は、全てのファイルに対して処理を行ったか否かを判定する(S27)。全てのファイルに対して処理を終了していなかった場合(S27:No)、次のファイルが選択され(S28)、復旧コマンドリストに対する復旧コマンドの情報の追加処理は継続される(S24〜S26)。
全てのファイルに対する処理が終わった場合(S27:Yes)、復旧コマンド抽出部3011は、作成された復旧コマンドリストの各行を実行順の値が昇順となるようにソートする(S29)。作成された復旧コマンドリストの一例は図3のようになる。
以上、図6と図7を用いて説明したように、復旧コマンド抽出部3011は復旧コマンドリストを生成する(図5のS2)。続いて、復旧処理実行部301は、終了したプロセスの終了要因、プロセスの識別子、及び当該プロセスが起動された際に指定された引数を記憶する(S3)。これらの値は、復旧コマンド実行部3012が復旧コマンドファイルをロードして実行する際の引数として使用される。
次に、プロセス終了処理部30は、終了したプロセスに割り当てられた仮想空間等の資源を全て解放する(S4)。プロセス終了処理部30は、当該プロセスの管理情報を削除し、当該プロセスを消滅させる(S5)。消滅処理の後に、復旧コマンド実行部3012は、S2の処理で生成された復旧コマンドリストの各行に記載された復旧コマンドパスの位置から復旧コマンドファイルを取得し、ロードすることによって復旧処理を実行する(S6)。復旧コマンド実行部3012による復旧処理の実行処理を図8を用いて説明する。
復旧コマンド実行部3012は、復旧コマンド抽出部3011により生成された復旧コマンドリストが空か否かを判定する(S61)。復旧コマンドリストが空ではない場合(S61:No)、復旧コマンド実行部3012は復旧コマンドリストの先頭行を取り出す(S62)。取り出された行は、復旧コマンドリストから削除される。
復旧コマンド実行部3012は取り出された行の復旧コマンドパスに記載された位置に復旧コマンドファイルが存在するか否かを判定する(S63)。存在する場合(S63:Yes)、復旧コマンド実行部3012は当該復旧コマンドファイルをロードしてプロセスを生成する(S64)。プロセス生成後に復旧コマンド実行部3012は、生成したプロセスの終了を待ち合わせる(S65)。復旧コマンドファイルが存在しない場合(S63:No)、復旧コマンド実行部3012は、復旧コマンドリストが空か否かの判定から処理(S61)に戻り、処理を継続する。
なお、S64において、資源不足等の理由により、プロセスの生成が失敗する可能性がある。 しかし、復旧コマンド実行用の資源を前もって予約しておく等の技術を用いることにより、ステップS64におけるプロセス生成失敗を回避することができる。 それでも何らかの理由により復旧コマンド用プロセスの生成に失敗する場合、システム全体を停止させる、またはプロセスを生成可能となるまで待ち合わせる等の処理をシステム全体の方針に従って実装してもよい。
復旧コマンド実行部3012により生成されたプロセスは、S62において抽出された復旧コマンドの情報を示す行の復旧コマンドパスにおいて指定される復旧コマンドファイルを当該プロセスの仮想空間上にロードする(S641)。そして、当該プロセスは、復旧処理を実行する(S642)。
ここで、復旧処理の実行(S642)に際して、終了したプロセスがロードした実行ファイルの位置、復旧処理情報が設定されていたファイルの位置、終了したプロセスの識別子、終了したプロセスの終了要因、及び終了したプロセスが起動された際に指定された引数が、復旧コマンド実行時の引数として指定される。これらの情報(終了したプロセスの識別子等)は、S3において予め記憶されている。
復旧コマンドリストが空になった時点で、復旧コマンド実行部3012は処理を終了する(S61:No)。
続いて、本実施の形態にかかるプロセス異常復旧装置の効果について説明する。上述のように、実行ファイル、共有ライブラリファイル等のプロセスにロードされるファイル毎に、プロセス終了時の復旧処理が記述された復旧コマンドファイルを関連付ける。プロセス終了時には、復旧コマンドファイルがロードされ、復旧処理が実行される。そのため、実行ファイルと復旧コマンドファイルを関連付けることのみで、共有リソースの復旧処理等を実現できる。これにより、複数の実行ファイルにおいてある一つの復旧コマンドファイルを共有することが可能となり、異常状態からの復旧処理を共通化できる。
共有ライブラリファイルに対して復旧処理情報を定義できることにより、共有ライブラリが使用する共有リソースの復旧処理が実現される。そのため、共有ライブラリを使用する処理を含む実行ファイルが新規に作成される場合であっても、共有ライブラリが使用する共有リソースの復旧処理を考慮する必要がない。
特許文献1に記載の技術ではプロセス名が同じ複数のプロセスが存在する場合、復旧処理が正しく行われない恐れがあった。しかし本実施の形態にかかるオペレーティングシステムでは、実行ファイル、共有ライブラリファイルのファイル毎に復旧処理を関連付けるため、同じプロセス名を持つプロセスが複数存在する場合であっても各プロセスに対応する所望の復旧処理が実現できる。
実行ファイル、共有ライブラリファイル等のファイル毎に復旧処理を関連付けるので、プロセス毎に復旧処理を関連付ける特許文献1の方式と比べて設定作業が簡易である。
また、上記のように復旧コマンドファイルはプロセス終了時にのみロードされ、復旧処理が常にメモリ上に常駐しているわけではない。このため、システム稼働中に復旧コマンドファイルを修正した場合であっても、システムを再起動することなく当該修正が復旧コマンドファイルのロード時に反映される。
実行ファイルの復旧処理情報、または共有ライブラリファイルの復旧処理情報には、復旧コマンドファイルの位置を指定するのみである。したがって、実行ファイル、または共有ライブラリファイルのファイルシステム上の位置を変更した場合であっても、復旧コマンドファイルの位置が変更されなければ復旧処理が正常に実行される。
実施の形態2
本発明の実施の形態2は、共有ライブラリにより復旧処理を実行する点を特徴とする。図9を参照して、本実施の形態にかかるプロセス異常復旧装置の基本構成、及び動作について、実施の形態1と異なる部分を説明する。なお、図9において、同一名及び同一符号を付した処理部は実施の形態1と基本的に同じ処理を行う。
実行ファイル101には復旧処理情報1011が定義されている。同様に実行ファイル111には復旧処理情報1111が定義されている。復旧処理情報1011及び復旧処理情報1111には、復旧ライブラリファイル80の位置が設定されている。復旧ライブラリファイル80は、共有メモリ50を使用しているプロセスが異常終了した際に実行すべき処理が記述された共有ライブラリファイルである。
実行ファイル201には復旧処理情報2011が定義されている。復旧ライブラリファイル81は、共有ファイル60を使用しているプロセスが異常終了した際に実行すべき処理が記述された共有ライブラリファイルである。
監視プロセス90は、他のプロセス(監視対象プロセス)の状況を監視するプロセスである。監視プロセス90は、プロセス監視部901と、復旧処理実行部902と、を備える。監視プロセス90は、カーネル部2とは独立したプロセスとして存在する。
プロセス監視部901は、既存の技術を用いてプロセス10、及びプロセス11を監視する。またプロセス監視部901は、監視対象プロセスがロードしているファイル(実行ファイル、共有ライブラリファイル)の一覧を定期的に取得し、その一覧を保持しておく。当該ファイルの一覧取得はオペレーティングシステム1の機能を用いることで実現できる。
プロセス監視部901が監視対象プロセスの終了を検出した場合、当該プロセスの終了種別(異常終了か、正常終了か)をオペレーティングシステム1の機能を用いて取得する。そののち、プロセス監視部901は復旧処理実行部902を呼び出す。復旧処理実行部902は、復旧ライブラリ抽出部9021を呼び出す。呼び出された復旧ライブラリ抽出部9021は復旧ライブラリリストの作成を行う。なお、復旧ライブラリリストとは、実施形態1の復旧コマンドリストと対応するものである。復旧ライブラリリストの作成方法は、前述の第1の実施形態における図6、及び図7に示した手順とほぼ同様である。
但し、本実施の形態においては、図6のステップS22において当該プロセスにロードされている全ファイルを抽出する場合に、プロセス監視部901が保持しているファイル一覧を使用する。
復旧ライブラリ抽出部9021による復旧ライブラリリストの作成の後、復旧処理実行部9022が復旧ライブラリリストを基に復旧処理の実行を行う。復旧ライブラリ実行部9022による復旧処理の実行の処理手順について、図10を用いて説明する。
復旧処理実行部9022は、復旧ライブラリ抽出部9021により生成された復旧ライブラリリストが空か否かを判定する(S71)。復旧ライブラリリストが空ではない場合(S71:No)、復旧処理実行部9022は復旧ライブラリリストの先頭行を取り出す(S72)。取り出された行は、復旧ライブラリリストから削除される。
取り出された行に含まれる復旧ライブラリパスに記載された位置に復旧ライブラリファイルが存在するか否かを判定し(S73)、存在する場合(S73:Yes)にはその復旧ライブラリを監視プロセス90の仮想空間にロードする(S74)。そして、復旧ライブラリ内の復旧処理を実行する(S75)。
ここで、復旧処理の実行(S75)に際して、終了したプロセスの実行ファイルの位置、復旧処理情報が設定されていたファイルの位置、終了したプロセスの識別子、終了したプロセスの終了要因、及び終了したプロセスが起動された際に指定された引数が、復旧ライブラリの引数として指定される。
復旧処理が実行された後に(S75)、復旧ライブラリを監視プロセス90の仮想空間からアンロードする(S76)。
一方、復旧ライブラリファイルが存在しない場合(S73:No)、復旧処理実行部9022は、復旧ライブラリリストが空か否かの判定から処理(S71)に戻り、処理を継続する。
上記の処理(S71〜S76)は、復旧ライブラリリストが空になる(S71:No)まで継続される。
続いて、本実施の形態にかかるプロセス異常復旧装置の効果について説明する。上述のように、復旧処理を共有ライブラリとして実現している。これにより、オペレーティングシステム1のカーネル部2を変更することなく、プロセス異常に関する復旧処理を実現できる。また、復旧処理を実行する際に、新たなプロセスを生成する必要がなくなる。
なお、図11は本発明の実施の形態1にかかるプロセス異常復旧装置の最小構成を示す図である。プロセス12によるロード対象となる実行ファイル、共有ライブラリファイル等のロード対象ファイル121内に復旧処理情報1211が備えられている。復旧処理情報1211は、ロート対象ファイル121をロードすることにより生成されたプロセス12が終了した場合に実行する復旧コマンドファイル42の位置が記述されている。
プロセス12が終了した場合、復旧処理実行部30は終了したプロセス12がロードしているロード対象ファイル121を選択し、当該ロード対象ファイル121内の復旧処理情報1211を参照して復旧コマンドファイル42を抽出する。復旧処理実行部30は、抽出した復旧コマンドファイル42をロードして復旧処理を行う。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
(付記1)
プロセスのロード対象となるロード対象ファイルと、
プロセスの終了の際に、終了にかかる前記プロセスに関する処理を行う復旧処理実行部と、を備え、
前記ロード対象ファイルは、当該ファイルをロードしたプロセスが終了した際に実行する復旧処理が記述された復旧コマンドファイルを配置した位置情報、を含む復旧処理情報を有し、
前記復旧処理実行部は、プロセスの終了を検出した場合に、終了したプロセスにロードされていた前記ロード対象ファイルを全て取得し、
取得した前記ロード対象ファイル内の前記位置情報を参照して前記復旧コマンドファイルを全て取得し、
取得した前記復旧コマンドファイルをロードして前記復旧処理を実行する、プロセス異常復旧装置。
(付記2)
前記復旧処理実行部は、プロセスの終了を監視する監視プロセス内に設けられたことを特徴とする付記1に記載のプロセス異常復旧装置。
1 オペレーティングシステム
2 カーネル部
10 プロセス
11 プロセス
20 共有ライブラリ
30 プロセス終了処理部
40 復旧コマンドファイル
41 復旧コマンドファイル
42 復旧コマンドファイル
50 共有メモリ
60 共有ファイル
70 復旧処理情報
80 復旧ライブラリ
81 復旧ライブラリ
90 監視プロセス
101 実行ファイル
111 実行ファイル
121 ロード対象ファイル
201 共有ライブラリファイル
301 復旧処理実行部
901 プロセス監視部
902 復旧処理実行部
1011 復旧処理情報
1111 復旧処理情報
1211 復旧処理情報
2011 復旧処理情報
3011 復旧コマンド抽出部
3012 復旧コマンド実行部
9021 復旧ライブラリ抽出部
9022 復旧ライブラリ実行部

Claims (10)

  1. プロセスのロード対象となるロード対象ファイルに対して、当該プロセス終了の際に実行する復旧処理が記述された復旧コマンドファイルを配置した位置情報を含む復旧処理情報を記述して記憶しておき、
    プロセス終了を検出した場合に、当該プロセスにロードされていた前記ロード対象ファイルを全て取得し、
    取得した前記ロード対象ファイル内の前記位置情報を参照して前記復旧コマンドファイルを全て取得し、
    取得した前記復旧コマンドファイルをロードして前記復旧処理を実行する、プロセス異常復旧方法。
  2. 前記復旧処理情報内には、どの順序で前記復旧コマンドファイルをロードして実行するかを示す実行順情報が設定されており、
    プロセス終了検出の際、複数の前記復旧コマンドファイルが取得された場合に、前記実行順情報の順序で復旧処理を実行することを特徴とする請求項1に記載のプロセス異常復旧方法。
  3. 前記復旧処理情報内に、前記プロセスの終了状態の種別である終了種別条件と、前記復旧コマンドファイルの位置情報を関連付けて記述し、
    前記プロセス終了検出において、当該プロセスの終了状態を検出し、
    検出した前記終了状態の種別と、前記終了種別条件と、が一致した場合に、前記復旧コマンドファイルを取得することを特徴とする請求項1または請求項2に記載のプロセス異常復旧方法。
  4. 前記位置情報は、ファイルシステム上のファイルパス名で記述することを特徴とする請求項1乃至請求項3のいずれか1項に記載のプロセス異常復旧方法。
  5. 前記プロセス終了の検出処理はプロセス状態を監視する監視プロセスにより実行されることを特徴とする請求項1乃至請求項4のいずれか1項に記載のプロセス異常復旧方法。
  6. プロセスのロード対象となるロード対象ファイルと、
    プロセスの終了の際に、終了にかかる前記プロセスに関する処理を行う復旧処理実行部と、を備え、
    前記ロード対象ファイルは、当該ファイルをロードしたプロセスが終了した際に実行する復旧処理が記述された復旧コマンドファイルを配置した位置情報、を含む復旧処理情報を有し、
    前記復旧処理実行部は、プロセスの終了を検出した場合に、終了したプロセスにロードされていた前記ロード対象ファイルを全て取得し、
    取得した前記ロード対象ファイル内の前記位置情報を参照して前記復旧コマンドファイルを全て取得し、
    取得した前記復旧コマンドファイルをロードして前記復旧処理を実行する、プロセス異常復旧装置。
  7. 前記ロード対象ファイルは、前記復旧処理情報内に、複数の前記復旧コマンドファイルが取得された場合に、どの順序で前記復旧コマンドファイルをロードして実行するかを示す実行順情報を有し、
    前記復旧処理実行部は、プロセス終了検出時に、前記実行順情報の順序で復旧処理を実行することを特徴とする請求項6に記載のプロセス異常復旧装置。
  8. 前記ロード対象ファイルは、前記復旧処理情報内に、前記プロセスの終了状態の種別である終了種別条件と、前記復旧処理とを関連付けた情報を有し、
    前記復旧処理実行部は、前記プロセス終了検出において、当該プロセスの終了状態を検出し、
    検出した前記終了状態の種別と、前記終了種別条件と、が一致した場合に、前記終了種別条件と関連付けられた前記復旧コマンドファイルのみを取得することを特徴とする請求項6または請求項7に記載のプロセス異常復旧装置。
  9. 前記位置情報は、ファイルシステム上のファイルパス名で記載することを特徴とする請求項6乃至請求項8のいずれか1項に記載のプロセス異常復旧装置。
  10. 前記復旧処理実行部は、オペレーティングシステムのカーネル部に設けられたことを特徴とする請求項6乃至請求項9のいずれか1項に記載のプロセス異常復旧装置。
JP2009291929A 2009-12-24 2009-12-24 プロセス異常復旧装置及びプロセス異常復旧方法 Expired - Fee Related JP5504876B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009291929A JP5504876B2 (ja) 2009-12-24 2009-12-24 プロセス異常復旧装置及びプロセス異常復旧方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009291929A JP5504876B2 (ja) 2009-12-24 2009-12-24 プロセス異常復旧装置及びプロセス異常復旧方法

Publications (2)

Publication Number Publication Date
JP2011134044A JP2011134044A (ja) 2011-07-07
JP5504876B2 true JP5504876B2 (ja) 2014-05-28

Family

ID=44346717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009291929A Expired - Fee Related JP5504876B2 (ja) 2009-12-24 2009-12-24 プロセス異常復旧装置及びプロセス異常復旧方法

Country Status (1)

Country Link
JP (1) JP5504876B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5855529B2 (ja) * 1978-08-07 1983-12-10 富士通株式会社 デ−タ処理装置のエラ−処理方式
JPH0812616B2 (ja) * 1991-09-11 1996-02-07 インターナショナル・ビジネス・マシーンズ・コーポレイション オペレーティングシステムカーネル用受動回復方法およびシステム
JP2000322274A (ja) * 1999-05-11 2000-11-24 Nec Corp オペレーティングシステムの階層的リカバリ装置
WO2008111124A1 (ja) * 2007-03-12 2008-09-18 Fujitsu Limited マルチcpu異常検出復旧システム、方法及びプログラム
JP5433977B2 (ja) * 2008-05-09 2014-03-05 株式会社ニコン 自動機の制御装置

Also Published As

Publication number Publication date
JP2011134044A (ja) 2011-07-07

Similar Documents

Publication Publication Date Title
US8332845B2 (en) Compile timing based on execution frequency of a procedure
KR101470712B1 (ko) 컴퓨터 애플리케이션에서의 데이터 손실을 최소화하기 위한 방법 및 시스템
JP4876438B2 (ja) コンポーネントソフトウェアの運用方法および運用基盤
CN106951559B (zh) 分布式文件系统中数据恢复方法及电子设备
US7870424B2 (en) Parallel computer system
US6041425A (en) Error recovery method and apparatus in a computer system
US20070240136A1 (en) Apparatus and method for capabilities verification and restriction of managed applications in an execution environment
JP4315016B2 (ja) コンピュータシステムの系切替方法
US9049101B2 (en) Cluster monitor, method for monitoring a cluster, and computer-readable recording medium
US7783742B2 (en) Dynamic process recovery in a distributed environment
JPH0812616B2 (ja) オペレーティングシステムカーネル用受動回復方法およびシステム
JP5212357B2 (ja) マルチcpu異常検出復旧システム、方法及びプログラム
US20120096303A1 (en) Detecting and recovering from process failures
JP2004303114A (ja) インタープリタおよびネイティブコード実行方法
US20170270031A1 (en) Information processing apparatus, test execution method, and computer-readable recording medium
US20100085871A1 (en) Resource leak recovery in a multi-node computer system
JP2006285474A (ja) 並列計算機及びその制御方法
US20080209265A1 (en) Information-Processing Method and Apparatus
US8537662B2 (en) Global detection of resource leaks in a multi-node computer system
JP5504876B2 (ja) プロセス異常復旧装置及びプロセス異常復旧方法
CN112486511A (zh) 一种通过web生成操作系统安装镜像的方法
JP5316148B2 (ja) 情報処理装置およびデータ修復方法
CN109426601B (zh) 一种对程序进行无状态检测的方法和装置
JP2003152722A (ja) 障害情報表示システム
JP2006092057A (ja) プロセスの強制終了処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140303

R150 Certificate of patent or registration of utility model

Ref document number: 5504876

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees