(57)【要約】【課題】コンピュータシステムの起動時における信頼性の向上を図る。【解決手段】プロセッサ１００と、プロセッサとバス１４１で接続され、プロセッサで実行される第１のプログラム１２１ａを格納するＲＯＭ１２０と、コプロセッサ２００と、コプロセッサとバス２４１で接続され、プロセッサで実行される第２のプログラム１２１ｃとコプロセッサで実行されるプログラム版数監視用のプログラム２２１とを格納するＲＯＭ２２０と、を備える。コプロセッサは、プログラム２２１を実行して第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、第１のプログラムを第２のプログラムに置き換えるように制御する。この時、第１および第２のプログラムには、それぞれ内容の相違を表す版数を付し、版数の差異によって第１および第２のプログラムが同一であるか否かを判断する。【選択図】図１
2007249382.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサとバスで接続され、前記第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、
第２のプロセッサと、
前記第２のプロセッサとバスで接続され、前記第１のプロセッサで実行される第２のプログラムと前記第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、
を備え、
前記第２のプロセッサは、前記第３のプログラムを実行して前記第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、前記第１のプログラムを前記第２のプログラムに置き換えるように制御することを特徴とするコンピュータシステム。
【請求項２】
前記第１および第２のプログラムには、それぞれ内容の相違を表す版数を付し、
前記第２のプロセッサは、前記版数の差異によって前記第１および第２のプログラムが同一であるか否かを判断することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記第１のプロセッサと前記第２のプロセッサとを直接バスで接続されるように構成することを特徴とする請求項１記載のコンピュータシステム。
【請求項４】
前記第１の記憶部は、前記第２のプロセッサから直接参照可能なように前記第２のプロセッサとバスで接続されるように構成することを特徴とする請求項１記載のコンピュータシステム。
【請求項５】
前記第１のプロセッサとバスで接続される第３の記憶部を備え、
前記第１の記憶部は、起動プログラムを格納し、
前記第１のプロセッサは、起動時に前記起動プログラムを実行して前記第１のプログラムを前記第１の記憶部から読み出して前記第３の記憶部に格納し、前記第３の記憶部に格納された第１のプログラムを実行することを特徴とする請求項１記載のコンピュータシステム。
【請求項６】
前記第１のプロセッサと前記第１の記憶部とを複数組備え、
それぞれの組における前記第１のプログラムは、同一または互いに異なるものであって、
前記第２の記憶部は、該それぞれの組における前記第１のプログラムに対応するそれぞれ前記第２のプログラムを格納し、
前記第２のプロセッサは、前記第３のプログラムを実行して前記それぞれの組における前記第１のプログラムと前記それぞれの第２のプログラムとが同一であるか否かを判断することを特徴とする請求項１記載のコンピュータシステム。
【請求項７】
第１のプロセッサと、
前記第１のプロセッサとバスで接続され、前記第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、
第２のプロセッサと、
前記第２のプロセッサとバスで接続され、前記第１のプロセッサで実行される第２のプログラムと前記第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、
を備えるコンピュータシステムが障害時にプログラムを復旧する方法であって、
前記第２のプロセッサが前記第３のプログラムを実行して前記第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、前記第１のプログラムを前記第２のプログラムに置き換えるように制御することを特徴とするコンピュータシステムの障害時の復旧方法。
【請求項８】
前記第１および第２のプログラムには、それぞれ内容の相違を表す版数を付し、
前記第２のプロセッサは、前記版数の差異によって前記第１および第２のプログラムが同一であるか否かを判断することを特徴とする請求項７記載のコンピュータシステムの障害時の復旧方法。
【請求項９】
第１のプロセッサと、
前記第１のプロセッサとバスで接続され、前記第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、
第２のプロセッサと、
前記第２のプロセッサとバスで接続され、前記第１のプロセッサで実行される第２のプログラムと前記第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、
を備えるコンピュータシステムにおいて、
前記第２のプロセッサに、
前記第１および第２のプログラムとが同一であるか否かを判断する処理と、
同一でないと判断した場合には、前記第１のプログラムを前記第２のプログラムに置き換えるように制御する処理と、
を実行させるプログラム版数監視用のプログラム。
【請求項１０】
前記第１および第２のプログラムには、それぞれ内容の相違を表す版数が付され、
前記判断する処理において、前記版数の差異によって前記第１および第２のプログラムが同一であるか否かを判断することを特徴とする請求項９記載のプログラム版数監視用のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムおよびその障害時の復旧方法ならびにプログラムに関し、特にプログラムの更新に係る障害の復旧技術に関する。
【背景技術】
【０００２】
コンピュータシステムでは、必要に応じて使用するプログラムの更新、いわゆるバージョンアップがなされるのが通例である。この場合、更新時あるいは更新後の信頼性を向上するために様々な工夫がなされている。例えば、特許文献１には、設定の誤りやファイルの破損などにより、正常なファイルをロードすることができずに、ブートに失敗した場合、自動的に別のバックアップファイルを選択し、ＯＳなどを復旧起動する方法が開示されている。この方法は、現用のプログラムファイルを用いて起動を開始し、万一現用のプログラムファイルを用いて起動ができなくても、バックアップファイルを新しい順に用いて自動的に起動する。より具体的には、優先順位が付けられた複数のプログラムファイルから、優先度の最も高いプログラムファイルに含まれるカーネルの起動を開始し、カーネルの起動開始からの経過時間にもとづいて、当該カーネルが正常に起動されたか否かを判断して、所定の回数、正常に起動されていないと判断された場合、次に優先度の高いプログラムファイルに含まれるカーネルの起動を開始する。
【０００３】
また、特許文献２には、クライアント上で必要なプログラムを使用頻度で管理し、使用頻度の高いプログラムのみサーバからロードしクライアントで保持することによりシステム性能を高め、管理業務の効率化をはかるプログラムロード方式が開示されている。この方式は、クライアント・サーバシステムにおいて、サーバは分散型情報処理システムで使用するすべてのプログラムの最新版を保持するとともに各プログラムの版数を管理し、クライアントからのプログラム版数の問い合わせに対応してサーバ自身が保持するプログラムと版数が一致するときにはその旨を通知し、版数が一致しないときには保持している該当のプログラムをクライアントに転送する。クライアントは自身が使用したプログラムの版数および使用頻度を管理し、任意のプログラムを使用するときそのプログラムの版数をサーバに問い合わせ、その版数がサーバの保持するものの版数に一致したときにはクライアント自身が保持するプログラムをロードし、一致しなかったときにはサーバが転送したプログラムをロードし、使用頻度の高いプログラムをクライアント自身のファイルに格納するものである。
【０００４】
さらに、関連する技術として、特許文献３には、通信装置内に複数のプログラムロード手段を持ち、システムの障害からの復旧に失敗した場合に自動で他のプログラムロード手段に切り替えることでシステムを復旧させることを可能とし、これにより通信システムの信頼性を向上させるプログラムロード手段切替方式が開示されている。
【０００５】
【特許文献１】特開２００５−２２２３６６号公報
【特許文献２】特開平１０−２４０５３８号公報
【特許文献３】特開平５−２３３３１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献１では、当初のカーネルでの起動に失敗した場合、次に優先度の高いプログラムファイルに含まれるカーネルでの起動を行っている。したがって、本来起動したかったカーネルは起動されず、次善の代替用のカーネルが起動されることとなってしまい、システムを最新の状態で動作させることが困難になってしまう。すなわち、特許文献１では、システムを最新の状態で動作させるための技術が開示されていない。
【０００７】
一方、特許文献２に記載のシステムは、クライアントが最新のプログラムを保持することが可能である。しかしながら、障害が発生し、最新のプログラムを読み込むことができなかった場合の技術が開示されていないため、システムの信頼性を向上させることができない虞がある。また、クライアント上で必要なプログラムを使用頻度で管理し、使用頻度の高いプログラムのみサーバからロードしクライアントで保持するために、使用頻度の高いプログラムのみの管理に限定され、適用範囲が狭くなってしまう。
【０００８】
本発明の目的は、コンピュータシステムの起動時における障害発生において信頼性の向上を図るシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つのアスペクトに係るコンピュータシステムは、第１のプロセッサと、第１のプロセッサとバスで接続され、第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、第２のプロセッサと、第２のプロセッサとバスで接続され、第１のプロセッサで実行される第２のプログラムと第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、を備え、第２のプロセッサは、第３のプログラムを実行して第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、第１のプログラムを第２のプログラムに置き換えるように制御する。
【００１０】
第１の展開形態のコンピュータシステムにおいて、第１および第２のプログラムには、それぞれ内容の相違を表す版数を付し、第２のプロセッサは、版数の差異によって第１および第２のプログラムが同一であるか否かを判断することが好ましい。
【００１１】
第２の展開形態のコンピュータシステムにおいて、第１のプロセッサと第２のプロセッサとを直接バスで接続されるように構成してもよい。
【００１２】
第３の展開形態のコンピュータシステムにおいて、第１の記憶部は、第２のプロセッサから直接参照可能なように第２のプロセッサとバスで接続されるように構成してもよい。
【００１３】
第４の展開形態のコンピュータシステムにおいて、第１のプロセッサとバスで接続される第３の記憶部を備え、第１の記憶部は、起動プログラムを格納し、第１のプロセッサは、起動時に起動プログラムを実行して第１のプログラムを第１の記憶部から読み出して第３の記憶部に格納し、第３の記憶部に格納された第１のプログラムを実行するようにしてもよい。
【００１４】
第５の展開形態のコンピュータシステムにおいて、第１のプロセッサと第１の記憶部とを複数組備え、それぞれの組における第１のプログラムは、同一または互いに異なるものであって、第２の記憶部は、該それぞれの組における第１のプログラムに対応するそれぞれ第２のプログラムを格納し、第２のプロセッサは、第３のプログラムを実行してそれぞれの組における第１のプログラムとそれぞれの第２のプログラムとが同一であるか否かを判断するようにしてもよい。
【００１５】
本発明の１つのアスペクトに係るコンピュータシステムの障害時の復旧方法は、第１のプロセッサと、第１のプロセッサとバスで接続され、第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、第２のプロセッサと、第２のプロセッサとバスで接続され、第１のプロセッサで実行される第２のプログラムと第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、を備えるコンピュータシステムが障害時にプログラムを復旧する方法であって、第２のプロセッサが第３のプログラムを実行して第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、第１のプログラムを第２のプログラムに置き換えるように制御する。
【００１６】
本発明の１つのアスペクトに係るプログラムは、第１のプロセッサと、第１のプロセッサとバスで接続され、第１のプロセッサで実行される第１のプログラムを格納する第１の記憶部と、第２のプロセッサと、第２のプロセッサとバスで接続され、第１のプロセッサで実行される第２のプログラムと第２のプロセッサで実行されるプログラム版数監視用の第３のプログラムとを格納する第２の記憶部と、を備えるコンピュータシステムにおいて、第２のプロセッサに、第１および第２のプログラムとが同一であるか否かを判断する処理と、同一でないと判断した場合には、第１のプログラムを第２のプログラムに置き換えるように制御する処理と、を実行させる。
【発明の効果】
【００１７】
本発明によれば、プログラムの起動に、プロセッサがあらかじめ保存してあったプログラムを読み込めなかった場合でも、コプロセッサがその読み込めなかった事を探知し、自動的に復旧する。したがって、コンピュータシステムの起動時における障害発生において信頼性が向上する。
【発明を実施するための最良の形態】
【００１８】
本発明の実施形態に係るコンピュータシステムは、プロセッサ（図１の１００）と、プロセッサとバス（図１の１４１）で接続され、プロセッサで実行される第１のプログラム（図１の１２１ａ）を格納するＲＯＭ（図１の１２０）と、コプロセッサ（図１の２００）と、コプロセッサとバス（図１の２４１）で接続され、プロセッサで実行される第２のプログラム（図１の１２１ｃ）とコプロセッサで実行されるプログラム版数監視用のプログラム（図１の２２１）とを格納するＲＯＭ（図１の２２０）と、を備える。コプロセッサは、プログラム版数監視用のプログラムを実行して第１および第２のプログラムとが同一であるか否かを判断し、同一でない場合には、第１のプログラムを第２のプログラムに置き換えるように制御する。この時、第１および第２のプログラムには、それぞれ内容の相違を表す版数を付し、コプロセッサは、版数の差異によって第１および第２のプログラムが同一であるか否かを判断するようにしてもよい。
【００１９】
なお、ＲＯＭ（図１の１２０）は、コプロセッサから直接参照可能なようにコプロセッサとバス（図３の１４５）で接続されるように構成してもよい。
【００２０】
プロセッサとバス（図１の１４３）で接続されるＲＡＭ（図１の１１０）を備え、ＲＯＭ（図１の１２０）は、起動プログラム（図１の１２３）を格納し、プロセッサは、起動時に起動プログラムを実行して第１のプログラムをＲＯＭ（図１の１２０）から読み出してＲＡＭに格納し、ＲＡＭに格納された第１のプログラムを実行する。この第１のプログラムが、プロセッサにおいて通常実行されるプログラムに該当する。
【００２１】
以上のように構成されるコンピュータシステムは、プロセッサがあらかじめ保存してあった第１のプログラムを読み込むことができなかった場合であっても、コプロセッサがこのことを探知し、第１のプログラムを第２のプログラムに置き換えるようにして自動的に復旧する。したがって、コンピュータシステムにおけるプログラムの起動時あるいは起動後の障害に対処して信頼性が向上する。
【実施例１】
【００２２】
図１は、本発明の第１の実施例に係るコンピュータシステムの構成を示すブロック図である。図１において、コンピュータシステムは、プロセッサ１００、ＲＡＭ１１０、ＲＯＭ１２０、通信部１３０、コプロセッサ２００、ＲＯＭ２２０を備える。ＲＡＭ１１０は、バス１４３を介してプロセッサ１００に接続され、ＲＯＭ１２０は、バス１４１を介してプロセッサ１００に接続され、通信部１３０は、バス１４２を介してプロセッサ１００に接続される。また、ＲＯＭ２２０は、バス２４１を介してコプロセッサ２００に接続される。さらに、プロセッサ１００とコプロセッサ２００とは、バス１４４を介して互いに直接接続される。
【００２３】
なお、以上のような構成において、ＲＯＭ１２０内のデータの配置は、プロセッサ１００により異なっており、本発明はその配置に依存しないので、その詳細の説明を省略する。また、バス１４１、バス１４２、バス１４３は、バス制御用機構を必要としたり、一部あるいは全部を共通のバスとするように構成したりしてもよい。いずれも本発明の働きに影響を与えることはない。
【００２４】
ＲＯＭ１２０は、書き込み可能な不揮発性のプログラム格納用メモリであって、（１）プロセッサ１００によって通常実行される最新版（Ｒｅｖ．ｘｘａ）のプログラム１２１ａ、（２）プログラム１２１ａの情報を読み込めなかった場合に緊急用として動作させる版数（Ｒｅｖ．ｘｘｂ）のプログラム１２２、（３）プログラム１２１ａまたはプログラム１２２をプロセッサ１００の演算用メモリであるＲＡＭ１１０にコピーするためのブートプログラム１２３を蓄える。ブートプログラム１２３は、起動時にプロセッサ１００によって実行され、プログラム１２１ａまたはプログラム１２２をＲＡＭ１１０にコピーする。ＲＡＭ１１０内にコピーされたプログラム１２１ｂは、プロセッサ１００によって実行され、システムとして必要な所定の機能を実現する。
【００２５】
一方、ＲＯＭ２２０は、（１）プログラム１２１ａと同じ内容のプログラム１２１ｃ、（２）コプロセッサ２００によって実行されるプログラム２２１を備える。プログラム２２１は、起動時あるいは障害発生時にコプロセッサ２００によって実行され、プログラム１２１ａとプログラム１２１ｃとが有する版数が同一であるか否かを判断する。版数が同一でない場合には、ＲＯＭ２２０からプログラム１２１ｃを読み出して、プログラム１２１ａをプログラム１２１ｃに置き換えるように制御する。なお、コプロセッサ２００にもプログラム実行時には演算用メモリ（ＲＡＭ）が必要であるが、その容量やコプロセッサ２００への接続方法などは、本発明とは関連がないので説明を省略する。
【００２６】
コプロセッサ２００からプログラム１２１ａをプログラム１２１ｃに置き換えるように依頼を受けたプロセッサ１００は、プログラム１２１ｃを新たなプログラム１２１ａとしてＲＯＭ１２０に書き込む。
【００２７】
次にコンピュータシステムの障害処理時の動作について説明する。図２は、コンピュータシステムの障害処理時の動作を表すフローチャートである。図２において、プロセッサ１００は、プロセッサ１００の動作中プログラムの版数をコプロセッサ２００に与える（ステップＳ１１）。コプロセッサ２００は、与えられた版数と自らが保持しているプロセッサ１００のプログラムの版数とを比較する（ステップＳ１２）。比較の結果、版数が同じである場合には、正常終了となる（ステップＳ１３）。一方、版数が異なる場合には、コプロセッサ２００は、プロセッサ１００にプログラム１２１ｃを渡す。プログラム１２１ｃを受け取ったプロセッサ１００は、ＲＯＭ１２０に受け取ったプログラム１２１ｃを保存する（ステップＳ１４）。ここで通常はコピーが成功し、ＲＯＭ１２０に間欠障害があったものとして、もう一度リブートを行う（ステップＳ１５）。一方、コピーが失敗した場合は、直接プロセッサ１００に接続されるＲＡＭ１１０にデータをコピーし、プログラムを先頭に戻して起動するように動作してもよい。
【００２８】
以上のように、コプロセッサ２００は、プロセッサ１００のプログラム版数を管理し、プロセッサ１００が本来起動するはずのプログラム１２１ａで起動していない場合に、コプロセッサ２００がもつプログラム１２１ｃを用いてプロセッサ１００のプログラムを復元する。
【００２９】
なお、コプロセッサ２００は、他に同じ様なプロセッサの構成がある場合には、複数のプロセッサに共通の機能部として単一で構成するようにしてもよい。すなわち、プロセッサ１００とＲＡＭ１１０とＲＯＭ１２０とを複数組備え、それぞれの組におけるプログラム１２１ａは、同一または互いに異なるものであるとする。そして、ＲＯＭ２２０は、それぞれの組におけるプログラム１２１ａに対応するそれぞれのプログラム１２１ｃを格納する。さらに、コプロセッサ２００は、プログラム２２１を実行してそれぞれの組におけるプログラム１２１ａとそれぞれのプログラム１２１ｃとが同一であるか否かを判断するようにする。
【００３０】
このような構成にあって、複数のプロセッサが同じ内容のプログラムを必要とする際には、プログラムの更新が容易になる利点もある。すなわち、従来の方法であると個々の情報処理機構にプログラムをダウンロードする必要があったが、本実施例では各プロセッサで共用しているコプロセッサがもつプログラムデータを書き換えることで、プログラムの更新を行うことが可能となる。
【実施例２】
【００３１】
図３は、本発明の第２の実施例に係るコンピュータシステムの構成を示すブロック図である。図３において、図１と同一の符号は、同一物を表し、その説明を省略する。図３に示すコンピュータシステムにおいて、図１におけるバス１４１とバス１４４を共用にしたバス１４５によってプロセッサ１００とコプロセッサ２００とを接続する構成以外は、図１と同様の構成である。
【００３２】
このような構成のコンピュータシステムにおいて、コプロセッサ２００は、プロセッサ１００を介してプログラムの版数を確認するのではなく、ＲＯＭ１２０の内容とＲＯＭ２２０の内容とを直接比較して版数を確認する。これによって、コプロセッサ２００は、プロセッサ１００が最新のプログラム１２１ｃで動作しているか否かを判断する。
【００３３】
本実施例では、コプロセッサ２００のみでプログラム１２１ａのデータを確認するので、プロセッサ１００側にコプロセッサ２００との通信を行う機能が不要となる利点がある。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施例に係るコンピュータシステムの構成を示すブロック図である。
【図２】本発明の第１の実施例に係るコンピュータシステムの障害処理時の動作を表すフローチャートである。
【図３】本発明の第２の実施例に係るコンピュータシステムの構成を示すブロック図である。
【符号の説明】
【００３５】
１００  プロセッサ
１１０  ＲＡＭ
１２０  ＲＯＭ
１２１ａ、１２１ｂ、１２１ｃ、１２２、２２１  プログラム
１２３  ブートプログラム
１３０  通信部
１４１、１４２、１４３、１４４、１４５、２４１  バス
２００  コプロセッサ
２２０  ＲＯＭ
【図１】
2007249382.tif 000003
【図２】
2007249382.tif 000004
【図３】
2007249382.tif 000005