JP3788832B2 - 複合系計算機システム - Google Patents

複合系計算機システム Download PDF

Info

Publication number
JP3788832B2
JP3788832B2 JP26449596A JP26449596A JP3788832B2 JP 3788832 B2 JP3788832 B2 JP 3788832B2 JP 26449596 A JP26449596 A JP 26449596A JP 26449596 A JP26449596 A JP 26449596A JP 3788832 B2 JP3788832 B2 JP 3788832B2
Authority
JP
Japan
Prior art keywords
computer
event
script
computers
scenario
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
JP26449596A
Other languages
English (en)
Other versions
JPH10111859A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP26449596A priority Critical patent/JP3788832B2/ja
Priority to KR1019970048432A priority patent/KR100326100B1/ko
Priority to US08/943,764 priority patent/US6073126A/en
Publication of JPH10111859A publication Critical patent/JPH10111859A/ja
Application granted granted Critical
Publication of JP3788832B2 publication Critical patent/JP3788832B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数の計算機により構成される複合系計算機システムに係り、特にシステムの構成及び制御内容を定義して、その定義内容に従う運用を行うのに好適な複合系計算機システムに関する。
【0002】
【従来の技術】
従来、複数の計算機で構成される複合系計算機システムの構成及び制御内容の定義は、実行可能なスクリプト(プログラム)として、人が直接または簡単なマクロ(macro )を介して各計算機毎に記述するのが一般的であった。この実行可能スクリプトの具体的な内容は、各計算機の接続関係の登録専用コマンドや各計算機の状態取り出しコマンド、例外手続きとしてのCPUやディスク、ネットワーク等の障害検出時に実行させるべきコマンド列等である。また、例外手続きとしては、この他に、サーバ・プロセスの別計算機への移動または待機プロセスの実行開始、データやファイル、ネットワーク・アドレスの別計算機への引き継ぎ、警報出力などの特殊入出力装置の操作などがある。
【0003】
【発明が解決しようとする課題】
上記したように従来は、複合系計算機システムの構成及び制御内容の定義は、実行可能なスクリプトとして人が直接または簡単なマクロを介して各計算機毎に記述したいた。
【0004】
しかし、構成及び制御内容の定義には、あらゆる事態への配慮が必要であり、そのスクリプト記述は一般に難しい。
【0005】
また、各計算機間での不整合等、スクリプトの記述ミスが発生し易い。
【0006】
また、例外手続きに記述ミスまたは考え違い(意味的な不整合)があっても発見し難く、そのような誤りや漏れが運用時まで引き継がれる可能性が高い。
【0007】
また、障害時の手続きについて、複合系計算機システムを構成する計算機の台数が多くなると(例えば3台以上になると)想定すべき障害のパターン数が多くなることから、スクリプト記述時に考え漏れを生じ易い。このため、障害発生時それを回避するための処理が正しく行われず、システムの異常停止という最悪の事態を招くことが少なくない。
【0008】
本発明は上記事情を考慮してなされたものでその目的は、システム構成及び制御内容の定義が容易に記述でき、記述や操作上の誤りを少なくでき、しかも障害想定漏れが少なくて済み、その定義内容に従う信頼性のある運用が保証できる複合系計算機システムを提供することにある。
【0009】
【課題を解決するための手段】
本発明は、複合系計算機システムの構成及び制御内容を抽象的且つ統合的に記述したプログラムであるシナリオを、上記各計算機毎の別々の処理に分解し、当該シナリオから上記各計算機で直接実行可能な形式のコマンド列である処理スクリプトを生成するシナリオコンパイル手段を備えると共に、上記各計算機に、上記シナリオコンパイル手段により生成されている各計算機別の各処理スクリプトのうち、計算機状態に対応し且つ該当する計算機用の処理スクリプトを実行するスクリプト実行手段とを備えたことを特徴とする。
【0010】
ここで、複合系計算機システムの制御内容の具体例としては、計算機で発生する各種イベント(事象)に対するシステムの動作がある。
【0011】
また、シナリオの抽象性の具体例としては、システム構成を定義する記述(例えば複合系計算機システムを構成する計算機を定義する計算機記述)の中で、実際の計算機の名前(定数)を、シナリオ内に閉じた変数(即ち、シナリオから生成される処理スクリプトには表われない変数)として定義し、シナリオ内の他の記述では、この変数を参照する形式がある。
【0012】
また、シナリオの統合性(共通化)の具体例としては、イベントに対する処理を、複数の計算機について共通化して記述する形式、複数のイベントに対する処理も共通化して記述する形式、更には自系を指す特別な変数とイベントの部分を指す変数を設けることで、一部のみある計算機またはあるイベントに特別な処理がある場合にも共通化して記述する形式がある。この他、シナリオ内の特定の単位内での例えば稼働系と待機系の計算機の記述を、処理スクリプト内で用いられる定数と関係付けられたシナリオ内で用いられる変数(第1の変数)とは別の変数(第2の変数)に定義し、上記特定の単位内の他の部分では、この第2の変数を参照する形式がある。
【0013】
このような構成においては、複合系計算機システムの構成及び制御内容を抽象的且つ統合的に記述したシナリオ(プログラム)が適用できることから、従来のように実行可能なスクリプトとして各計算機毎に記述する必要があった複合系計算機システムと異なって、システム構成及び制御内容の定義が容易に記述できる。特に、シナリオの抽象性と統合性(共通化)により、各計算機での同一計算機状態(イベント)に対する別々の処理をあたかも1つの処理であるかのように記述できることから、処理の記述数を減少できる。この効果は、複合系計算機システムの構成計算機数が多いほど顕著となる。特に、シナリオの動作する計算機群である後述する特定グループを設定し、各計算機上に当該グループの各計算機の状態を記憶するための状態記憶手段を設け、この状態記憶手段の内容によりイベント発生時の動作内容を決定する構成を適用する場合、当該状態記憶手段の更新に関しては、同一イベントに対して上記特定グループ内の全ての計算機で同一操作が行われるため、処理記述数削減の効果が大きい。
【0014】
また本発明は、上記シナリオコンパイル手段により生成された各計算機別の各処理スクリプトを対応する各計算機の記憶領域に配布するスクリプト配布手段を設け、上記計算機での計算機状態に応じて(例えばイベント発生により)、その計算機に配布されている処理スクリプトのうち、当該計算機状態(発生イベント)に対応する処理スクリプトが上記スクリプト実行手段にて実行される構成としたことを特徴とする。ここで、上記シナリオコンパイル手段が、各計算機別の各処理スクリプトの他に、当該各処理スクリプトを該当する計算機に配布するためのコマンド列である配布スクリプトを生成する構成とし、この配布クリプトを上記スクリプト配布手段が実行することで、各計算機への処理スクリプト配布が行われるようにするとよい。
【0015】
このように、シナリオコンパイル手段により生成された処理スクリプト等の成果物を(上記シナリオで定義された複合系計算機システムの)各計算機にスクリプト配布手段が配布するためのプログラム(配布スクリプト)が、当該シナリオコンパイル手段により自動生成される構成とすることで、この種のプログラムを人が各計算機毎に記述する場合と異なって記述誤りをなくすことができ、これにより配布操作の誤りと、計算機間の不整合を防止できる。
【0016】
また本発明は、上記スクリプト実行手段に、処理スクリプトの実行の許可または禁止について、各計算機毎に別々に、初期状態での設定及びイベント発生時での再設定を可能にする機構を持たせ、シナリオの動作する計算機群である特定グループをイベント発生時に自動的に変化せることを特徴とする。
【0017】
このようにすることで、特に(オペレーティングシステムの入れ替えやテストなどを目的とする)保守等のために、システムを停止させることなく、所望の計算機を切り離したり、或いは組み込むことが可能となる。
【0018】
また本発明は、上記スクリプト実行手段に、複数のイベントに対する処理スクリプトの実行順序が上記特定グループ内で全て同一となり、1つのイベントに対する処理スクリプトの実行が上記特定グループ内で全て終了するまで次の処理スクリプトの実行の開始を待つことを保証する機構を更に持たせたことを特徴とする。
【0019】
このような構成においては、ほぼ同時に複数の計算機で障害が発生したとしても正しい引き継ぎが可能となる同期イベント型複合系計算機システムが実現できる。
【0020】
また本発明は、上記特定グループの各計算機の状態を記憶するための状態記憶手段を上記各計算機上に設け、上記特定グループ内の各計算機上のスクリプト実行手段において、イベント発生に伴う処理スクリプトの実行時に自系の状態記憶手段を参照してイベント発生時の動作内容を決定すると共に、状態記憶手段の内容に対して各計算機上で同一の更新処理を行う構成としたことを特徴とする。
【0021】
このような構成においては、例えば特定グループ内の計算機で障害が発生がした場合に、その時点における特定グループ内の各計算機の状態を自系の状態記憶手段を参照することで知ることができ、これにより、障害が発生した計算機がサービス(アプリケーションプログラム)の実行中の計算機であるならば、どの計算機がその処理を引き継ぐかなどを自動決定できる。そのためには、計算機の状態に、処理の引き継ぎの優先順位を含めるとよい。
【0022】
この他、互いに交わらない複数の特定グループを構成し、イベント発生時の動作内容を、各特定グループ毎に異なった状態記憶手段の内容によって変化させるようにすることで、物理的に1つのシステムでありながら、特定グループ数分の独立したシステムを自由に構築することが可能となる。
【0023】
また本発明は、上記スクリプト実行手段に、上記特定グループ内でイベント発生に伴う処理スクリプトの実行が終了した後に、当該グループ内の全ての計算機に関する処理スクリプトの終了状態を取得し、その終了状態に従ってエラーリカバリ用の処理スクリプトを実行する機能を更に持たせたことを特徴とする。
【0024】
このような構成においては、イベント発生時の処理のエラーリカバリが可能となる。
【0025】
また本発明は、上記処理スクリプトに、その処理の一部として少なくとも1つのイベントを疑似的に発生させるコマンドを持たせることで、当該処理スクリプトが上記スクリプト実行手段により実行された場合に、少なくとも1つのイベントが疑似的に発生され、当該処理スクリプトの実行後に、この疑似的に発生されたイベント(疑似イベント)に対応する処理スクリプトが実行される構成としたことを特徴とする。
【0026】
このような構成においては、1つのイベントに起因して複数の処理スクリプトを実行させることが可能となる。特に、上記エラーリカバリ用の処理スクリプトの実行により、少なくとも1つの疑似イベントが発生される構成とすることで、複合したエラーリカバリが可能となる。
【0027】
また本発明は、上記シナリオコンパイル手段に、上記シナリオの記述内容の正誤を検出するための正誤検出手段及び上記シナリオの記述内容の意味を確認してその整合性を判定する意味確認手段の少なくとも1つを持たせると共に、上記正誤検出手段による記述誤り検出時または上記意味確認手段による不整合検出時に、その旨のエラーメッセージを出力するエラー出力手段を持たせたことを特徴とする。
【0028】
このように、上記シナリオの記述内容の正誤確認機能を、当該シナリオの記述内容からその記述内容と同等の作用を与える処理スクリプトを生成するシナリオコンパイル手段に持たせることで、当該シナリオの記述誤りを容易に見つけることができる。この正誤確認機能の実現手段(正誤検出手段)としては、コマンドの引数に代表される記述値が不適合であることを検出する記述値不適合検出手段等が適用可能である。
【0029】
また、上記シナリオの記述内容の意味の確認機能、或いはデバイス故障など起こり得る各種障害時を想定したシミュレーション機能を上記シナリオコンパイル手段に持たせることで、当該シナリオの意味的に不整合性のある箇所を容易に見つけることができ、実行するまで分かり難い制御アルゴリズムの問題点を実行前に認識することができる。この意味の確認機能の実現手段(意味確認手段)としては、イベントの発生が無限ループを構成していることを検出する無限ループ検出手段、状態記憶手段に対する更新操作内容が特定グループ内で同一とならないことを検出する状態記憶手段内容不一致検出手段、状態記憶手段に対する更新操作内容が、予め定められている当該状態記憶手段の内容が満たすべき条件(インタロック)に合致していないことを検出するインタロック検出手段、及び1つのイベントに対する各計算機での共有装置に対する操作内容が不整合であることを検出する共有装置操作不整合性検出手段の少なくとも1つが適用可能である。
【0030】
特に、正誤検出手段により記述内容の誤りが検出された場合(記述値不適合検出手段によりコマンドの引数に代表される記述値が不適合であることが検出された場合)には、シナリオコンパイル手段による処理スクリプト生成を停止する構成とすることで、誤った処理スクリプトが生成されて、処理スクリプトの実行がエラーとなることを防止できる。
【0031】
同様に、意味確認手段によりシナリオ中で意味的に不整合性のある箇所が検出された場合、シナリオコンパイル手段による処理スクリプト生成を停止する構成とすることで、各計算機間で整合性のない処理スクリプトが生成されて、例えば障害発生時の引き継ぎ等が正常に行われないといった不具合が生じるのを防止できる。
【0032】
特に、イベントの発生が無限ループを構成していることを検出した場合に処理スクリプト生成を停止するならば、1つのイベントに対する一連の処理スクリプトの実行が必ず停止することを保証できる。また、状態記憶手段に対する更新操作内容が特定グループ内で同一とならないことを検出した場合に処理スクリプト生成を停止するならば、状態記憶手段の内容が上記特定グループ内で常に同一であることを保証できる。また、状態記憶手段に対する更新操作内容が、予め定められている当該状態記憶手段の内容が満たすべき条件(インタロック)に合致していないことを検出した場合に処理スクリプト生成を停止するならば、状態記憶手段の内容が常に指定条件を満たすことを保証できる。なお、この指定条件を上記シナリオ中に記述しているならば、インタロック検出手段での検出処理に便利である。また、1つのイベントに対する各計算機での共有装置に対する操作内容が不整合であることを検出した場合に処理スクリプト生成を停止するならば、処理スクリプトの共有装置に対する処理が不整合を起こさないことを保証できる。
【0033】
この他、上記意味確認手段として、上記シナリオに記述された内容を解釈し、非同期に発生する可能性のある各種イベントを任意に組み合わせてシミュレーションする動作シミュレーション手段を適用するならば、意味の確認を動的に行うことができる。
【0034】
また、上記シナリオコンパイル手段に、上記シナリオ内で用いられる変数を定数に置き換える置換手段と、この置換手段により置き換えられた定数を上記シナリオ内で伝播させる定数伝播手段とを持たせることで、変数を用いた記述に対しても上記各検出手段を有効に適用することが可能となる。また、上記シナリオコンパイル手段に、シナリオ内のループ文での記述を内部的に展開するループ展開手段を持たせることで、ループ変数を用いた記述に対しても上記各検出手段を有効に適用することが可能となる。
【0035】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【0036】
[第1の実施形態]
図1は本発明の第1の実施形態に係る複合系計算機システムのブロック構成図である。
【0037】
図1において、100A,100Bは複合系計算機システムを構成する計算機であり、計算機間接続手段としての例えばLAN(ローカルエリアネットワーク)101により相互接続されている。
【0038】
計算機100A,100Bのうちの例えば計算機100Aには、複合系計算機システムの構成及び制御(特に、障害やオペレータ操作等により発生する各種イベントに対するシステムの動作)の定義内容を抽象的に且つ統合的に記述したプログラム(以下、HAシナリオと称する)110が保存されているものとする。このHA(High Availavility )シナリオ110は、図2に示すように、人201が直接に、或はグラフィカルユーザインタフェース(Graphical User Interface;GUI)202を介して記述されるものである。
【0039】
計算機100Aは、HAシナリオ110をコンパイルして、そのHAシナリオ110の記述内容通りの作用を与えるための、例えば計算機100A,100Bで実行可能な形式のコマンド列の集合(以下、HAスクリプト集合と称する)120を変換生成するコンパイラ(以下、HAシナリオコンパイラと称する)140と、HAスクリプト集合120の中から計算機100A,100B用のHAスクリプト集合130A,130Bを選択して該当する計算機100A,100Bに配布するHAスクリプト配布機構150を内蔵している。
【0040】
図1の構成の複合系計算機システムでは、図2に示すように、人201が直接に、或はGUI202を介して記述したHAシナリオ110は、(計算機100A上の)HAシナリオコンパイラ140により読み込まれる。HAシナリオコンパイラ140は、読み込んだHAシナリオ110について、その書式に従った字句及び構文解析を行って、システム内の各計算機毎の別々の処理、例えば計算機100A,100B毎の別々の処理に分解し、計算機100A,100Bで直接実行可能な形式のHAスクリプト集合120を生成する。このHAシナリオコンパイラ140の動作の詳細は後述する。
【0041】
計算機100A上のHAスクリプト配布機構150は、HAシナリオコンパイラ140により生成されたHAスクリプト集合120の中から計算機100A,100Bで実行すべき部分を選択し、それぞれ計算機100A,100B用のHAスクリプト集合130A,130Bとして該当する計算機100A,100Bの持つ例えば大容量記憶装置内の特定ディレクトリに配布(コピー)する。ここで、計算機100A上の配布機構150による計算機100BへのHAスクリプト集合130Bの配布は、計算機100A,100Bが相互接続されているLAN101を介して行われる。
【0042】
HAスクリプト配布機構150により計算機100A,100Bの特定ディレクトリに配布されたHAスクリプト集合130A,130B(中のHAスクリプト)は、計算機100A,100Bが有するHAスクリプト実行機構160A,160Bにより実行される。
【0043】
次に、HAシナリオ110と当該HAシナリオ110から生成されるHAスクリプト集合120の詳細につき、計算機100A,100Bのうちの一方の計算機、例えば計算機100A上で1つのアプリケーションプログラム(以下、アプリケーションと略称する)が実行されており、他方の計算機である計算機100Bが待機する形態の場合を例に、図3乃至図6を参照して説明する。
【0044】
まず、本システム内の計算機100A,100Bで発生する各種イベント(事象)には、(1)他の計算機の障害検出、(2)アプリケーションの強制引継ぎ要求(以下、テイクオーバと称する)、(3)アプリケーションの通常引継ぎ要求(以下、スイッチオーバと称する)、(4)アプリケーションの開始要求、(5)アプリケーションの終了要求の5種類が含まれている。
【0045】
HAシナリオ110は、図3に示すように、計算機記述111と、システム記述112と、サービス記述113を含んでいる。
【0046】
計算機記述111は、計算機に固有な情報を定義するものであり、例えば計算機の名前、ネットワークアドレスなどを定義する。
【0047】
システム記述112は、計算機での各イベント(以下、HAイベントと称する)に対するアプリケーションによらないシステムの動作を定義するものである。システム記述112は、主として他の計算機の障害検出に対して、HAスクリプト実行機構(160A,160B)を制御する処理を記述する。このシステム記述112は、アプリケーションによらないHAイベント、例えば他の計算機の障害検出を定義するシステムイベント記述112aを含む。
【0048】
サービス記述113は、各HAイベントに対するアプリケーションの動作を定義するものであり、主としてアプリケーションのテイクオーバ、スイッチオーバ、開始要求、及び終了要求の各HAイベントに対して、各計算機上での処理を定義する。このサービス記述113は、アプリケーション毎のHAイベント、例えばテイクオーバ、スイッチオーバ、開始要求、終了要求を定義するサービスイベント記述113aを含む。
【0049】
HAシナリオ110は、前述したように、複合系計算機システムの構成及び制御(障害やオペレータ操作に対するシステムの動作)の定義内容を抽象的に且つ統合的に記述したものである。
【0050】
ここでHAシナリオ110の抽象性について説明する。
【0051】
まず本実施形態では、HAスクリプト内で用いられる名前(である定数)と、HAシナリオ110内で用いられる名前(である変数)とを区別し、HAシナリオ110内で用いられる名前(変数)とHAスクリプト内で用いられる名前(定数)との関係をHAシナリオ110内に定義する形式を適用する。そこでHAシナリオ110では、計算機記述111の中で、実際の計算機の名前(定数)を、HAシナリオ110内に閉じた変数(即ち、HAシナリオ110から生成されるHAスクリプトには表われない変数)として定義し、HAシナリオ110内の他の記述では、この変数を参照する形式を適用する。
【0052】
このようなHAシナリオ110の抽象性により、当該HAシナリオ110では、実際の計算機の名前は計算機記述の中の1箇所に記述すればよいことになる。これにより、システムを他のシステムに移動する場合などにおけるHAシナリオの変更が容易となる。
【0053】
例えば、計算機Aを計算機Cに、計算機Bを計算機Dに置き換える場合を考えると、HAシナリオの記述は、図5(a)から図5(b)のように変更するだけでよい。なお、図5中の{name="X"}のような記述(X=A,B,C,D) が実際の計算機の名前の記述部であり、例えば"server cpu1{name="B"}" は、計算機Bをserver cpu1 (第1のサーバ計算機)として定義していることを示す。
【0054】
以上がHAシナリオ110の抽象性である。
【0055】
次に、HAシナリオ110の統合性について説明する。
【0056】
まずHAシナリオ110では、システム記述112及びサービス記述113内で、HAイベントに対する処理を、複数の計算機(ここでは計算機100A,100B)について共通化して記述してある。また、複数のHAイベントに対する処理も共通化して記述してある。更に、自系を指す特別な変数とHAイベントの部分を指す変数を設けることで、一部のみある計算機またはあるHAイベントに特別な処理がある場合にも、共通化が図られている。
【0057】
以上が、HAシナリオ110の統合性(共通化)であり、このような統合性(共通化)により、HAシナリオ110の作成が容易になる。
【0058】
HAシナリオ110の統合性(共通化)の例を、切り離しHAイベントに対する処理を共通化したサービス記述113の場合につき図6に示す。但し、この例では、システムを構成する計算機がcpu1,cpu2の2台ではなく、cpu1〜cpu4の4台の場合を想定している。
【0059】
図6中の"syncevent OutX =(“切り離し”,cpuX)"のような記述(X=1,2,3,4) は、"syncevent OutX"の記述部分が、cpuXを切り離す切り離しHAイベントを表すことを定義したものである。
【0060】
また、"syncaction ( cpu1|cpu2|cpu3|cpu4, Out1|Out2|Out3|Out4 )" は、処理をする計算機と、その計算機がどのイベントに対して処理をするかを、cpu1〜cpu4の4計算機と、Out1〜Out4の4イベントの合計4×4=16通りの組み合わせについて共通化して記述したものである。
【0061】
また、"if ( localcpu==event.cpu )"中の"localcpu"はcpu1〜cpu4のうちの自系を指す変数であり、"event.cpu" は上記切り離しHAイベントOut1〜Out4の第2フィールド(cpuX)を指す変数であり、自系がHAイベントOut1〜Out4の第2フィールドの指す計算機であるか否かを判定する。
【0062】
なお、図6中で"#" が付された記述行は、コメントの記述行である。
【0063】
さて、HAシナリオコンパイラ140は、計算機100A上で、以上に述べた形式のHAシナリオ110を読み込み、その計算機記述111の内容から、計算機の種類の情報を得ると共に、システムイベント記述112a及びサービスイベント記述113aの内容からイベントの種類を取得し、更にシステム記述112及びサービス記述113の内容から処理の内容を得て、(イベント処理用HAスクリプトの集合である)HAスクリプト集合120を生成する。
【0064】
HAスクリプト集合120は、図4に示すように、計算機100Aにおける、計算機100Bの障害検出に対する処理を記述したHAスクリプト131A、計算機100Aにおける、計算機100Bからのテイクオーバに対する処理を記述したHAスクリプト132A、計算機100Aにおける、計算機100Aへのスイッチオーバに対する処理を記述したHAスクリプト133A、計算機100Aにおける、計算機100Bへのスイッチオーバに対する処理を記述したHAスクリプト134A、計算機100Aにおける、計算機100Aでの開始要求に対する処理を記述したHAスクリプト135A、計算機100Aにおける、計算機100Bでの開始要求に対する処理を記述したHAスクリプト136A、及び計算機100Aにおける、終了要求に対する処理を記述したHAスクリプト137Aを有している。
【0065】
HAスクリプト集合120はまた、計算機100Bにおける、計算機100Aの障害検出に対する処理を記述したHAスクリプト131B、計算機100Bにおける、計算機100Aからのテイクオーバに対する処理を記述したHAスクリプト132B、計算機100Bにおける、計算機100Aへのスイッチオーバに対する処理を記述したHAスクリプト133B、計算機100Bにおける、計算機100Bへのスイッチオーバに対する処理を記述したHAスクリプト134B、計算機100Bにおける、計算機100Aでの開始要求に対する処理を記述したHAスクリプト135B、計算機100Bにおける、計算機100Bでの開始要求に対する処理を記述したHAスクリプト136B、及び計算機100Bにおける、終了要求に対する処理を記述したHAスクリプト137Bを有している。
【0066】
ここで、障害検出、テイクオーバ、スイッチオーバ及び開始要求のイベントは、本実施形態では2種類ずつある。但し、障害検出及びテイクオーバの各イベントに対するHAスクリプトは、HAスクリプト131A,131B及びHAスクリプト132A,132Bのように、その性質から片方の計算機にしか必要ない。
【0067】
計算機100A上のHAスクリプト配布機構150は、HAシナリオコンパイラ140により生成されたHAスクリプト集合120の中から、計算機100Aで実行すべきHAスクリプト131A〜137Aを選択し、それらを計算機100A用のHAスクリプト集合130Aとして、計算機100Aの持つ大容量記憶装置内の特定ディレクトリに配布する。またHAスクリプト配布機構150は、HAスクリプト集合120の中から、計算機100Bで実行すべきHAスクリプト131B〜137Bを選択し、それらを計算機100B用のHAスクリプト集合130Bとして、計算機100Bの持つ大容量記憶装置内の特定ディレクトリにLAN101を経由して配布する。
【0068】
なお、HAシナリオコンパイラ140及びHAスクリプト配布機構150は、(計算機100Aではなくて)計算機100B上に設けられていても構わない。
【0069】
計算機100A,100B上のHAスクリプト実行機構160A,160Bは、イベントが発生する毎に、HAスクリプト集合130A,130B中の該当するHAスクリプトを実行する。
【0070】
[第2の実施形態]
次に、本発明の第2の実施形態につき図面を参照して説明する。
【0071】
図7は4台の計算機で構成された複合系計算機システムの実施形態を示すブロック図である。
【0072】
図7のシステムにおいて、4台の計算機700A,700B,700C,700Dのうちの3台の計算機、例えば計算機700A,700B,700Cは、その計算機上でそれぞれ独立したアプリケーションAP1〜AP3が動作している稼働系(master)となり、残りの1台の計算機700Dは各計算機700A〜700Cに共通の待機系(slave )として待機する形態をとっているものとする。
【0073】
この形態では、一般には、(前記第1の実施形態におけるHAシナリオ110に相当する)HAシナリオ内に(サービス記述113に相当する)3つのサービス記述が必要になる。
【0074】
しかしながら、HAスクリプト内で用いられる名前(定数)と関係付けられたHAシナリオ内で用いられる名前(第1の変数)と、HAシナリオ内の特定の単位内で用いられる名前(第2の変数)とを区別し、それらの関係をHAシナリオ内の特定の単位内に記述するならば、3つのサービス記述をほぼ共通化することが可能になる。このようなHAシナリオの例を図8に示す。
【0075】
ここでは、3つのサービス記述801,802,803の先頭で、master=cpuX 及びslave=cpu4のような記述(X=1,2,3) により、稼働系と待機系の計算機を定義し、サービス記述801〜803内の他の部分804-1〜804-3(図8中の(1),(2),(3)の部分)では、この変数を参照する形式を適用している。
【0076】
[第3の実施形態]
次に、本発明の第3の実施形態につき図面を参照して説明する。
【0077】
図9は本発明の第3の実施形態に係る複合系計算機システムにおいて、オペレータ要求による計算機の組み込み/切り離し、及び障害発生計算機の自動切り離しを説明するための図である。ここでは、3台の計算機900A,900B,900Cから構成される複合系計算機システムであって、ハードウェアまたはソフトウェアの障害や、オペレータ操作(オペレータ入力)などの各イベントに対して、各計算機900A〜900Cが同期をとって、各計算機900A〜900Cに定義されているイベント処理のためのHAスクリプトを同時に実行することにより、障害処理もしくは要求された処理を行う同期イベント型の複合系計算機システムを前提としている。
【0078】
本システムでのHAイベントには、(1)実行禁止にできない特別なHAイベントである新HAグループの作成要求、(2)他の計算機の障害検出、(3)計算機の組み込み要求、(4)計算機の切り離し要求の4種類が含まれている。ここで、HAグループ(特定グループ)とは、互いに同期をとってHAスクリプトを実行する計算機の集合をいう。但し、初期状態のHAグループ(新HAグループ)は、1台の計算機のみからなる。
【0079】
上記(1)〜(4)の各HAイベントは、(前記第1の実施形態におけるシステムイベント記述112aに相当する)HAシナリオのシステムイベント記述内に記述されるもので、上記(2)を除く各HAイベントはオペレータ操作に従って発生され、上記(2)のHAイベントは計算機の障害検出により自動的に発生される。
【0080】
上記(1)の新HAグループの作成要求に対する処理は、指定された計算機をHAスクリプトの実行許可にする処理を含む。
【0081】
次に、上記(2)の他の計算機の障害検出に対する処理は、障害を起こした計算機をHAスクリプトの実行禁止にする処理を含む。
【0082】
次に、上記(3)の計算機の組み込み要求に対する処理は、指定された計算機をHAスクリプトの実行許可にする処理を含む。
【0083】
次に、上記(4)の計算機の切り離し要求に対する処理は、指定された計算機をHAスクリプトの実行禁止にする処理を含む。
【0084】
なお、上記(1)の新HAグループの作成要求と、(2)の計算機の組み込み要求とは、以下に述べるように異なる機能である。まず、前者はHAグループが新しく作られることを意味するのに対し、後者は既に作成されているあるHAグループに対して組み込まれることを意味する。特に前者はHAスクリプトの実行禁止になっている計算機に発生するイベントであるのに対し、後者はHAスクリプトの実行許可になっている計算機(即ちHAグループ内の計算機)に発生するイベントである点で異なる。
【0085】
また、計算機の組み込み、切り離しは、主として保守などの目的で1台だけの計算機を停止させたい場合などに用いられる。
【0086】
図9中の各計算機900A〜900Cは図示せぬLANにより相互接続されている。計算機900A〜900C上には、(前記第1の実施形態におけるHAスクリプト実行機構160A,160Bに相当する)HAスクリプト実行機構960A〜960Cが設けられている。これら計算機900A〜900C上のHAスクリプト実行機構960A〜960Cは、互いに協調して動作し、特に他の計算機のHAスクリプトの実行を許可することができるようになっている。この場合、実行を許可された計算機は、実行を許可した計算機と同じHAグループに入っていると認識する。
【0087】
図9において、同図(a)に示すように、計算機900Aで、当該計算機900Aからなる新HAグループの作成要求のHAイベント901がオペレータ操作により発生したものとする。この場合、計算機900Aは、自系をHAスクリプトの実行許可状態にすることで、図9(b)に示すように自系のみからなるHAグループ902を作成する。
【0088】
次に、HAグループ902の計算機900Aで、図9(b)に示すように、計算機900Bの(HAグループ902への)組み込み要求のHAイベント903がオペレータ操作により発生したものとする。この場合、計算機900Aは、HAイベント903で指定された計算機900BをHAスクリプトの実行許可状態にすることで、図9(c)に示すように当該計算機900BをHAグループ902に組み込む。これにより、HAグループの計算機900Aと、新たにHAグループ902に組み込まれた計算機900Bとは、互いに協調して動作する。
【0089】
次に、HAグループ902の計算機900A,900Bで、図9(c)に示すように、計算機900Cの(HAグループ902への)組み込み要求のHAイベント904が(計算機900Aまたは900Bに対する)オペレータ操作により発生したものとする。この場合、計算機900A,900Bは、HAイベント904で指定された計算機900CをHAスクリプトの実行許可状態にすることで、図9(d)に示すように当該計算機900CをHAグループ902に組み込む。これにより、HAグループの計算機900A,900Bと、新たにHAグループ902に組み込まれた計算機900Cとは、互いに協調して動作する。
【0090】
このような状態で、図9(e)に示すように計算機Aで障害905が発生し、その障害905を計算機900B,900Cにおいて検出したものとする。すると、計算機900B,900Cでは、図9(e)に示すように計算機900Aの障害検出のHAイベント906が発生する。この場合、計算機900B,900Cは、障害905が発生した計算機900AがHAスクリプトの実行禁止状態になったとみなすことで、図9(f)に示すように当該計算機900AをHAグループ902から自動的に切り離す。
【0091】
次に、計算機900AがHAグループ902から切り離されている状態で、HAグループ902の計算機900B,900Cで、図9(f)に示すように、計算機900Bの(HAグループ902からの)切り離し要求のHAイベント907がオペレータ操作により発生したものとする。この場合、計算機900B,900Cは、HAイベント907で指定された計算機900BをHAスクリプトの実行禁止状態にすることで、図9(g)に示すように当該計算機900BをHAグループ902から切り離す。
【0092】
次に、計算機900A,900BがHAグループ902から切り離されている状態で、HAグループ902の900Cで、図9(g)に示すように、計算機900C自身の(HAグループ902からの)切り離し要求のHAイベント908がオペレータ操作により発生したものとする。この場合、計算機900Cは、HAイベント908で指定された計算機900C自身をHAスクリプトの実行禁止状態にすることで、図9(h)に示すように当該計算機900C自身をHAグループ902から切り離す。
【0093】
このように、各計算機900A〜900D毎に別々に、HAスクリプトの実行の許可/禁止の初期状態での設定、及びHAイベント発生時での再設定を可能とする機構を持つことで、HAグループをHAイベント発生時に自動的に変化させ、オペレータ操作に従うオンライン状態での計算機の組み込み/切り離し、及び障害発生計算機の自動切り離しが容易に行える。
【0094】
これは、特に(オペレーティングシステムの入れ替えやテストなどを目的とする)保守等のために、システムを停止させることなく、所望の計算機を切り離したり、或いは組み込むのに好都合である。なお従来は、システムを停止させずに計算機の組み込み/切り離しを行うと、誤って障害として検出されて引き継ぎ処理が行われるため、一旦システムを停止させてから計算機の組み込み/切り離しを行う必要があった。
【0095】
[第4の実施形態]
次に、本発明の第4の実施形態につき図面を参照して説明する。
【0096】
図10は、複合系計算機システムにおいて、障害が発生した計算機で動いていたアプリケーションを他の計算機で自動的に引き継ぐ形態を説明するための図である。ここでは、4台の計算機1000A,1000B,1000C,1000Dから構成される複合系計算機システムを前提としている。
【0097】
まず本システムで適用される(前記第1の実施形態におけるHAシナリオ110に相当する)HAシナリオは、次のような条件に従うアプリケーションの引き継ぎを行うように記述されているものとする。
【0098】
(1)計算機1000Aに障害発生したとき、計算機1000Bが正常なら、計算機1000Aで動いていたアプリケーションを計算機1000Bへ引き継ぐ。
【0099】
(2)計算機1000Aに障害発生したとき、計算機1000Bが正常でなく、計算機1000Cが正常なら、計算機1000Aで動いていたアプリケーションを計算機1000Cへ引き継ぐ。
【0100】
(3)計算機1000Bに障害発生したとき、計算機1000Dが正常なら、計算機1000Bで動いていたアプリケーションを計算機1000Dへ引き継ぐ。
【0101】
(4)計算機1000Cに障害発生したとき、計算機1000Dが正常なら、計算機1000Cで動いていたアプリケーションを計算機1000Dへ引き継ぐ。
【0102】
図10において、計算機1000A,1000Bにほぼ同時に障害が発生したものとする。この場合、計算機1000Aの障害検出のHAイベントと計算機1000Bの障害検出のHAイベントとが、それぞれ計算機1000C,1000Dでほぼ同時に発生するが、その発生順序は、計算機1000C,1000Dにおいて同一であるとは限らない。これは、検出の遅延や通信の遅延のために起こる。
【0103】
ところが従来は、障害が発生した計算機で動いていたアプリケーションを別の計算機で引き継ぐ場合には、次に述べるように上記した障害検出のHAイベントの発生順序は重要である。
【0104】
例えば、計算機1000A、計算機1000Bの順序で障害が検出されたとするならば、計算機1000Aで実行されていたアプリケーションは、まず上記(1)の条件に従い、図10において符号1001aで示される引継ぎ経路で計算機1000Bに(一時的に)引き継がれ、計算機1000Bの障害が検出された時点で、上記(3)の条件に従い、図10において符号1001bで示される引継ぎ経路で計算機1000Dに引き継がれる。即ち、先に計算機1000Aの障害が検出された場合には、計算機1000Aで実行されていたアプリケーションは結局計算機1000Dに引き継がれる。
【0105】
一方、計算機1000B、計算機1000Aの順序で障害が検出されたとするならば、計算機1000Bで実行されていたアプリケーションは、まず上記(3)の条件に従って計算機1000Dに(一時的に)引き継がれるものの、計算機1000Aの障害が検出された時点で、この引き継ぎは解消され、新たに、計算機1000Aで実行されていたアプリケーションが、上記(2)の条件に従い、図10において符号1002で示される引継ぎ経路で計算機1000Cに引き継がれる。即ち、先に計算機1000Bの障害が検出された場合には、計算機1000Aで実行されていたアプリケーションは計算機1000Cに引き継がれる。
【0106】
したがって、計算機1000C,1000Dにおいて、いずれも計算機1000A、計算機1000Bの順序で障害が検出された場合には、計算機1000Aで実行されていたアプリケーションが経路1001a,1001bで計算機1000Dに正しく引き継がれる。同様に、計算機1000C,1000Dにおいて、いずれも計算機1000B、計算機1000Aの順序で障害が検出された場合には、計算機1000Aで実行されていたアプリケーションが経路1002で計算機1000Cに正しく引き継がれる。
【0107】
しかしながら、計算機1000Cにおいて計算機1000A、計算機1000Bの順序で障害が検出され、計算機1000Dにおいてその逆に計算機1000B、計算機1000Aの順序で障害が検出された場合には、計算機1000C,1000Dのいずれでも引き継ぎが行われない。また、計算機1000Cにおいて計算機1000B、計算機1000Aの順序で障害が検出され、計算機1000Dにおいてその逆に計算機1000A、計算機1000Bの順序で障害が検出された場合には、計算機1000Aで実行されていたアプリケーションが、経路1002で計算機1000Cに引き継がれると共に、経路10001a,10001bで計算機1000Dにも引き継がれる。
【0108】
即ち従来技術では、計算機1000C,1000Dで発生される、計算機1000Aの障害検出のHAイベントと計算機1000Bの障害検出のHAイベントの順序が、両計算機1000C,1000Dで異なる場合には、計算機1000Cと計算機1000Dの両方に(計算機1000Aで実行していたアプリケーションの)引き継ぎが行われてしまうか、両方共引き継ぎが行われないかのいずれかとなり、正しい結果とならない。
【0109】
そこで本実施形態では、このような不具合を解消するために、(前記第1の実施形態におけるHAスクリプト実行機構160A,160Bに相当する)各計算機1000A〜1000D内のHAスクリプト実行機構を、図11のように構成している。
【0110】
まず、各計算機1000A〜1000D内のHAスクリプト実行機構は、新HAグループの作成要求HAイベントを受け付けるHAイベント受付部1101、計算機の障害検出HAイベントを受け付けるHAイベント受付部1102、計算機の組み込み要求HAイベントを受け付けるHAイベント受付部1103、計算機の切り離し要求HAイベントを受け付けるHAイベント受付部1104、及びその他のHAイベントを受け付けるHAイベント受付部1105とを有している。
【0111】
HAスクリプト実行機構はまた、他系のHAスクリプト実行機構との間の通信を行う通信部1106、及びHAスクリプトを実行するHAスクリプト実行部1107を有している。
【0112】
HAスクリプト実行機構は更に、HAグループの構成情報を格納しておくHAグループ構成記憶部1108、次に実行する可能性のあるHAスクリプトの要因となるHAイベントを候補HAイベントとして格納しておく候補HAイベント記憶部1109、検出した障害の情報を格納しておく障害検出記憶部1110、及び候補HAイベントの確定状態を格納しておく確定状態記憶部1111を有している。各記憶部1108〜1111は、自系に関する該当する情報を格納しておくための記憶領域と、他系に関する該当する情報を格納しておくための3台の計算機分の記憶領域とを持つ。
【0113】
HAスクリプト実行機構は更に、HAイベント受付部1103〜1105で受け付けられたHAイベントを一時格納(保留)しておくためのFIFO(先入れ先出し)方式のHAイベント保留記憶部1112、一連のHAスクリプトの実行順序を管理する順序番号を記憶しておくための順序番号記憶部1113、及びHAグループ内の各計算機が協調してHAイベント処理を行うための同期制御を司る同期制御部1114を有している。
【0114】
次に、図11の構成のHAスクリプト実行機構の動作の概略について述べる。
【0115】
まず、新HAグループの作成要求HAイベントの受付部1101は、自系計算機がHAグループに入ってない場合にのみ、該当するHAイベントを受け付ける。
【0116】
一方、計算機の障害検出HAイベントの受付部1102は、障害検出HAイベントを無条件で受け付ける。また、計算機の組み込み要求HAイベントの受付部1103、計算機の切り離し要求HAイベントの受付部1104、及びその他のHAイベントの受付部1105は、該当するHAイベントを無条件で受け付ける。
【0117】
新HAグループの作成要求HAイベントの受付部1101、及び計算機の障害検出HAイベントの受付部1102で受け付けられた各HAイベントは、そのまま同期制御部1114に入力される。
【0118】
これに対し、計算機の組み込み要求HAイベントの受付部1103、計算機の切り離し要求HAイベントの受付部1104、及びその他のHAイベントの受付部1105で受け付けられた各HAイベントは、一旦HAイベント保留記憶部1112に保持され、同期制御部1114からの要求に応じて当該同期制御部1114に入力される。
【0119】
一方、通信部1106は、HAグループ構成記憶部1108、候補HAイベント記憶部1109、障害検出記憶部1110、及び確定状態記憶部1111の自系用の記憶領域にそれぞれ格納されている自系に関する情報を、他系(のHAスクリプト実行機構)に通知すると共に、他系(のHAスクリプト実行機構内の通信部1106)から通知された情報をそれぞれ対応する記憶部1108〜1111の対応する記憶領域に格納する。ここで、他系への情報通知は、順序番号記憶部1113に格納されている順序番号を付加して行われる。また、他系からの情報の受信時には、その情報が当該情報に付加されていた順序番号と共に、記憶部1108〜1111のうちの該当する情報の記憶部に格納される。
【0120】
同期制御部1114は、HAグループ構成記憶部1108、候補HAイベント記憶部1109、障害検出記憶部1110、及び確定状態記憶部1111にそれぞれ格納されている自系並びに他系に関する情報と、自系で入力されたHAイベントから、最新の自系の状態を決定し、その状態を対応する各記憶部1108〜1111の自系用記憶領域に格納する。
【0121】
このとき、もし自系の確定状態が確定成功であるならば、HAスクリプト実行部1107は、候補HAイベント記憶部1109に格納されている候補HAイベントに対応するHAスクリプトの実行を行い、順序番号を更新する。これに対し、自系の確定状態が確定失敗であるならば、HAスクリプト実行部1107は、候補HAイベント記憶部1109に格納されている候補HAイベントを破棄し、順序番号を更新する。
【0122】
次に、図11の構成のHAスクリプト実行機構を図10の複合系計算機システムの各計算機1000A〜1000Dに設けた場合の典型的な処理について、(1)新HAグループの作成、計算機の組み込み/切り離し以外の場合の通常の処理(障害が検出されなかった場合の処理)、(2)新HAグループの作成、計算機の組み込み/切り離し以外の場合の障害検出時の処理、(3)新HAグループの作成の場合の処理、(4)計算機の組み込みの場合の処理、(5)計算機の切り離しの場合の処理を例に、図12乃至図16を適宜参照して順に説明する。
【0123】
(1)新HAグループの作成、計算機の組み込み/切り離し以外の場合の通常の処理
この処理は、HAグループ内の計算機で行われる。ここでは、図10中の各計算機1000A〜1000Dが全てHAグループに含まれているものとする。
【0124】
まずHAグループ内のある計算機のHAスクリプト実行機構の持つ同期制御部1114からの入力要求により、HAイベント保留記憶部1112の先頭に位置している(新HAグループの作成、計算機の組み込み/切り離し以外の)HAイベント、例えばHAイベント受付部1105で受け付けられてHAイベント保留記憶部1112にFIFOで格納されたHAイベント(その他のHAイベント、通常のHAイベント)が入力されたものとする。この場合、同期制御部1114は、この入力HAイベントを候補HAイベントとして候補HAイベント記憶部1109内の自系用記憶領域に格納する(ステップS1)。
【0125】
通信部1106は、候補HAイベント記憶部1109に格納された自系の候補HAイベントを他系に通知する(ステップS2)。
【0126】
この他系に通知された候補HAイベントは、その系の候補HAイベント記憶部1109内の通知元計算機用の記憶領域に格納される(ステップS3)。また、候補HAイベントが通知された系で候補HAイベントが決定していない場合には、当該イベントはその系の候補HAイベントとなり、その系の候補HAイベント記憶部1109内の自系用記憶領域にも格納される。またステップS3では、この候補HAイベント記憶部1109内の自系用記憶領域の内容が他系に通知される。
【0127】
このようにして、HAグループ内の各計算機1000A〜1000DのHAスクリプト実行機構の持つ通信部1106では、いずれかの計算機の障害が検出されない限り(ステップS4)、他系の候補HAイベントを全て受信する(ステップS5)。
【0128】
HAグループ内の各計算機1000A〜1000Dの同期制御部1114は、候補HAイベント記憶部1109に格納されている他系の候補HAイベントと自系の候補HAイベント、即ち各計算機1000A〜1000Dの候補HAイベントが全て等しいならば(ステップS6)、自系の確定状態を確定成功とし(ステップS7)、そうでないならば確定失敗とする(ステップS8)。確定成功の例を図17(a)に、確定失敗の例を図17(b)に示す。なお、図17においてe,fはそれぞれ異なる候補HAイベントを示す。
【0129】
各計算機1000A〜1000Dでは、確定成功となった場合には、同期制御部1114の制御によりHAスクリプト実行部1107にて該当するHAイベントについてのHAスクリプトが実行され(ステップS9)、その実行終了時にHAイベント保留記憶部1112の先頭に位置しているHAイベントが、上記確定したHAイベントと同一であれば、それが削除される(ステップS10)。また、確定状態記憶部1111の自系用の記憶領域に確定成功を示す確定状態が格納される。
【0130】
これに対し、確定失敗となった場合には、候補HAイベント記憶部1109に格納されている自系の候補HAイベントは破棄され(ステップS11)、同期制御部1114からHAイベント保留記憶部1112に対してHAイベントの再要求が行われる(ステップS13)。ここで、確定失敗判定時からHAイベントの再要求までの時間間隔はランダムに設定される(ステップS12)。また、確定状態記憶部1111の自系用の記憶領域に確定失敗を示す確定状態が格納される。
【0131】
同期制御部1114は、上記ステップS10またはS13の後、順序番号記憶部1113内の順序番号を次に進め、次のHAイベントの入力を待つ(ステップS14)。
【0132】
このように本実施形態においては、HAグループ内の全ての計算機の候補HAイベントが等しくなるまでは、言い換えれば、1つのHAイベントに対する処理スクリプトの実行がHAグループ内で全て終了するまでは、次のHAスクリプトの実行は抑止される。この結果、複数のHAイベントに対するHAスクリプトの実行順序がHAグループ内で全て同一となる。
【0133】
なお、1つの順序番号についての確定状態は、最終的にはHAグループ内の計算機1000A〜1000Dで全て確定成功か或いは全て確定失敗かのどちらかに決定されるが、通信の遅延時間のために、決定は全ての計算機1000A〜1000Dで同時ではない。したがって、他系の計算機の処理が次の順序番号に進んでしまっているか否かを、その系からの通知情報に付されていた順序番号から判断し、進んでいる場合には、自系の次の順序番号の処理が開始するまで保留する必要がある。そのため、各記憶部1108〜1111には、現在の状態の記憶領域と1つ前の状態の記憶領域の2つが確保されている。
【0134】
(2)新HAグループの作成、計算機の組み込み/切り離し以外の場合の障害検出時の処理
まずHAグループ内のある計算機で障害検出HAイベントが入力されると、前記した通常のHAイベントの入力時と同様にして、その障害検出HAイベントが他系に通知される。
【0135】
このように、HAグループ内のある計算機で障害検出HAイベントが入力され、その障害検出HAイベントが他系に通知された場合、即ちHAグループ内の計算機で障害が検出された場合(ステップS4)、HAグループ内の障害が検出された計算機を除く各計算機の通信部1106では、障害が検出された計算機以外の候補HAイベントを全て受信する(ステップS15)。
【0136】
HAグループ内の障害が検出された計算機を除く各計算機の同期制御部1114は、候補HAイベント記憶部1109に格納されている、障害が検出された計算機以外の候補HAイベントと自系の候補HAイベントが全て等しいならば(ステップS16)、自系の確定状態を確定保留とし(ステップS17)、そうでないならば確定失敗とする(ステップS18)。この確定保留は、確定成功と確定失敗との間の中間的な状態を示すもので、この確定保留の例を図17(c)に示す。また、この図17(c)には、上記確定保留判定時における確定状態記憶部1111の内容が併せて示されている。
【0137】
次に、自系の確定状態が確定状態記憶部1111の自系用の記憶領域に格納され、その確定状態が他系に通知される(ステップS19)。
【0138】
HAグループ内の障害が検出された計算機を除く各計算機では、障害が検出された計算機以外の確定状態を全て受信する(ステップS20)。この結果、HAグループ内の障害が検出された計算機を除く各計算機の確定状態記憶部1111の内容は図17(d)に示すようになる。
【0139】
HAグループ内の障害が検出された計算機を除く各計算機の同期制御部1114は、確定状態記憶部1111に格納されている、障害が検出された計算機以外の確定状態が全て確定保留か確定成功であるならば(ステップS21)、確定状態を確定成功とし(ステップS7)、そうでないならば確定失敗とする(ステップS8)。
【0140】
このように本実施形態においては、HAグループ内の障害が検出された計算機を除く全ての計算機の確定状態が確定保留か確定成功となるまでは、HAスクリプトの実行は抑止される。従って、このような障害検出時の処理を図10の例に適用した場合には、計算機1000A〜1000Dのうち、障害が発生していない計算機1000C及び計算機1000Dにおいて確定状態が確定保留か確定成功となって初めてHAスクリプトが実行されることから、結局計算機Aで実行されていたアプリケーションは計算機1000Cまたは計算機1000Dのどちらか一方のみに正しく引き継がれる。
【0141】
(3)新HAグループの作成の場合の処理
まずHAグループ内のある計算機(のHAスクリプト実行機構の持つ同期制御部1114)で新HAグループの作成要求HAイベントが入力されたものとする。この場合、計算機間の通信は行われず、計算機1000A〜1000Dのうち、新HAグループの作成要求HAイベントが入力された計算機が、1台でHAグループを構成するような設定に、全ての記憶部1108〜1111を初期化する(ステップS31)
(4)計算機の組み込みの場合の処理
まずHAグループ内のある計算機(のHAスクリプト実行機構の持つ同期制御部1114)で計算機の組み込み要求HAイベントが入力されたものとする。この場合、図12及び図13のフローチャート中のステップS1〜S21と同様の処理が行われ、その結果、計算機の組み込み要求HAイベントが確定成功となったなら(ステップS41)、組み込まれる計算機以外の計算機(の同期制御部1114)は、組み込み要求HAイベントで要求された計算機がHAグループに組み込まれるように自系のHAグループ構成記憶部1108を変更し(ステップS42)、組み込まれる計算機に対してHAグループ構成を通知する(ステップS43)。
【0142】
これを受けて、組み込まれる計算機は、通知されたHAグループ構成に基づいて、自系のHAグループ構成記憶部1108及び順序番号記憶部1113に対する情報設定を行い、候補HAイベント記憶部1109、障害検出記憶部1110及び確定状態記憶部1111を初期化する(ステップS44)。
【0143】
その後、組み込み要求HAイベントで要求された計算機を含むHAグループ内の各計算機(の同期制御部1114)は、順序番号記憶部1113内の順序番号を次に進め、次のHAイベントの入力を待つ(ステップS45)。
【0144】
これに対し、計算機の組み込み要求HAイベントが確定失敗となったなら(ステップS46)、組み込まれる計算機以外の計算機(の同期制御部1114)は、順序番号記憶部1113内の順序番号を次に進め、次のHAイベントの入力を待つ(ステップS45)。
【0145】
(5)計算機の切り離しの場合の処理
まずHAグループ内のある計算機(のHAスクリプト実行機構の持つ同期制御部1114)で計算機の切り離し要求HAイベントが入力されたものとする。この場合、図12及び図13のフローチャート中のステップS1〜S21と同様の処理が行われ、その結果、計算機の切り離し要求HAイベントが確定成功となったなら(ステップS51)、切り離される計算機以外の計算機(の同期制御部1114)は、自系のHAグループ構成記憶部1108の内容(HAグループ構成)を変更し、切り離し要求HAイベントで要求された計算機をHAグループから切り離す(ステップS52)。
【0146】
一方、切り離される計算機は、新HAグループの作成要求HAイベントが入力されるか、他系から組み込みのためのHAグループ構成が通知されるまで待機状態となる(ステップS53)。
【0147】
その後、切り離された計算機を除くHAグループ内の各計算機(の同期制御部1114)は、順序番号記憶部1113内の順序番号を次に進め、次のHAイベントの入力を待つ(ステップS54)。
【0148】
これに対し、計算機の切り離し要求HAイベントが確定失敗となったなら(ステップS55)、切り離しが要求された計算機を含むHAグループ内の各計算機(の同期制御部1114)は、順序番号記憶部1113内の順序番号を次に進め、次のHAイベントの入力を待つ(ステップS54)。
【0149】
以上のように、本実施形態においては、複数のHAイベントに対するHAスクリプトの実行順序がHAグループ内で同一であり、1つのHAイベントに対するHAスクリプトの実行がHAグループ内で全て終了するまで次のHAスクリプトの実行が開始されないように保証できるため、複数のHAイベントに対する動作が矛盾なく行える。
【0150】
[第5の実施形態]
次に、本発明の第5の実施形態につき図面を参照して説明する。
【0151】
図18は、複合系計算機システムにおいて、アプリケーションの引き継ぎ先を、動的に変更可能な優先順位に従って決定する形態を説明するための図である。ここでは、4台の計算機1800A,1800B,1800C,1800Dから構成される複合系計算機システムを前提としている。
【0152】
各計算機1800A〜1800Dには、前記第4の実施形態で述べた図11と同様の構成のHAスクリプト実行機構1810に加えて、各計算機1800A〜1800DのHAグループ内の状態(アプリケーションの引き継ぎの優先順位等)を格納しておくHA状態テーブル1820が設けられる。このHA状態テーブル1820に格納される各計算機1800A〜1800DのHAグループ内の状態には、HAグループ内でアプリケーションの実行中であることを示す“実行中”、(実行中の計算機が障害を起こした場合における)HAグループ内でのアプリケーションの引き継ぎの優先度(優先順位)を表す“優先度1”〜“優先度4”(数値が小さいほど高優先度)、障害が検出されていることを示す“障害検出”、HAグループから切り離されていることを示す“切り離し”等がある。
【0153】
また、HAシナリオのシステム記述並びにサービス記述内で使用可能なHA状態テーブル参照記述、HAシナリオのシステム記述並びにサービス記述内にあるHA状態テーブル更新記述、HAスクリプトから使用可能なHA状態テーブル参照コマンド並びに更新コマンドが用意される。
【0154】
また、HAスクリプト実行機構1810には、計算機の組み込み時に、組み込まれる計算機に対してHA状態テーブル1820の内容を配布する機能(HA状態テーブル配布機能)と、新HAグループの作成時に、HA状態テーブル1820の内容を初期化する機能(HA状態テーブル初期化機能)が付加されている。
【0155】
さて、(前記第1の実施形態におけるHAシナリオ110に相当する)HAシナリオ(内のシステム記述及びサービス記述)には、HA状態テーブル1820の更新のため、図19に示すようなHA状態テーブル更新記述1900が含まれている。このHA状態テーブル更新記述1900は、HAグループ内でのHA状態テーブル(1820)の更新が全て同一のため、計算機によらずに共通に記述される。
【0156】
HA状態テーブル更新記述1900中の"get s=state(outcpu)" は、HA状態テーブルを参照して、障害が検出された計算機(outcpu)のHAグループ内の状態を変数sとして取得することを指示するHA状態テーブル参照コマンド1901である。
【0157】
また、"get t=state(host)" は、HA状態テーブルを参照して、 host=cpu1〜cpu4で示される各計算機1800A〜1800Dのそれぞれについて、その計算機(host)のHAグループ内の状態を変数tとして取得することを指示するHA状態テーブル参照コマンド1902である。
【0158】
HA状態テーブル更新記述1900中には、上記参照コマンド1901〜1902に従って取得した、障害が検出された計算機(outcpu)のHAグループ内の状態sが、“実行中”、“優先度1”、“優先度2”、“優先度3”、または“優先度4”のいずれであるかにより、hostで示される計算機のHA状態テーブル1820の状態をどのように更新するかを指示するHA状態テーブル更新コマンド群1911〜1915が含まれている(図では一部省略されている)。
【0159】
HA状態テーブル更新コマンド群1911〜1915は、hostで示される計算機のHA状態テーブル1820の状態を、上記参照コマンド1901,1902に従って取得した当該計算機(host)のHAグループ内の状態tに応じて決定するためのHA状態テーブル更新コマンドの集合である。例えば、HA状態テーブル更新コマンド群1911では、障害が検出された計算機(outcpu)が“実行中”の場合に、hostで示される計算機の状態を、当該hostで示される計算機の現在の状態が“実行中”ならば“障害検出”とし、“優先度1”ならば(アプリケーション引き継ぎのために)“実行中”とし、“優先度2”ならば“優先度1”とし、“優先度3”ならば“優先度2”とし、“優先度4”ならば“優先度3”とすることが指示される。他のHA状態テーブル更新コマンド群1912〜1915も同様であり、障害が検出された計算機(outcpu)の状態とhostで示される計算機の状態が一致しているならば、当該hostで示される計算機の状態を“障害検出”とし、それ以外の場合には、hostで示される計算機の状態を、当該計算機の現在の状態より1つ上の状態とすることが指示される。
【0160】
また、HAシナリオには、(前記第1の実施形態におけるサービス記述113に相当する)図20に示すようなサービス記述2000が含まれている。このサービス記述2000には、障害検出時の処理が記述されている。
【0161】
図20中の"syncaction ( cpu1|cpu2|cpu3|cpu4 , TakeOver1| TakeOver2| TakeOver3| TakeOver4 )" は、処理をする計算機と、その計算機がどの引き継ぎ要求(テイクオーバ)のイベントに対して処理をするかを、cpu1〜cpu4の4計算機と、 TakeOver1〜TakeOver4 の4イベントの合計4×4=16通りの組み合わせについて共通化して記述したものである。
【0162】
また、"set outcpu=event.cpu"は、障害が検出された計算機(event.cpu) を変数outcpuとして設定するための記述部分である。
【0163】
また、"get s=state(event.cpu)"は、障害が検出された計算機(event.cpu) のHA状態テーブル内の状態を取得して変数sとして設定することを指示するHA状態テーブル参照コマンド2001である。
【0164】
また、"if(s=="実行中")から始まる記述2002は、変数sで示されるHA状態テーブルの状態、即ち障害が検出された計算機(event.cpu) のHA状態テーブルの状態が実行中である場合に、cpu1〜cpu4のうちの自系(localcpu)の状態に応じてどのような処理をするのかを記述したものである。この記述2002は、自系のHA状態テーブル内の状態を変数tとして取得することを指示するHA状態テーブル参照コマンド2003を含む。
【0165】
さて、図18の複合系計算機システムにおいて、同図(a)に示すように、計算機1800A〜1800Dのうち計算機1800DだけがHAグループから外れているものとする。
【0166】
このような状態では、HAグループ内の計算機1800A〜1800Cに設けられている(システム内の各計算機1800A〜1800Dの引き継ぎの優先順位等を格納している)HA状態テーブル1820の内容は、図18(a)に示すように全て同一となるように制御される。具体的には、HAグループへの計算機の組み込み時には、その組み込まれる計算機のHA状態テーブル1820の内容を、HAグループ内の各計算機のHA状態テーブル1820と同一に保つために、その組み込まれる計算機にHAグループ内の各計算機からHA状態テーブル1820の内容が配布される。これは、計算機の組み込み要求HAイベントに伴う組み込み処理の一部として行われる。
【0167】
ここでは、各計算機1800A〜1800C上のHA状態テーブル1820の内容から明らかなように、計算機1800Bがアプリケーション1830の実行中であり、アプリケーションの引き継ぎの優先度が計算機1800Aは優先度1に、計算機1800Cは優先度2に設定されているものとする。このHA状態テーブル1820の内容は、HAスクリプトの実行に伴って適宜参照、更新される。
【0168】
ここで、図18(a)に示すように、計算機1800A,1800C,1800Dで(アプリケーション1830を実行中の)計算機1800Bの障害検出イベント1840が発生したものとする。
【0169】
すると計算機1800A,1800C,1800Dのうち、HAグループに入っている計算機1800A,1800C内のHAスクリプト実行機構1810は、図18(b)に示すように、計算機1800Bの障害検出イベント1840に対するHAスクリプト1850を実行する。
【0170】
この例では、アプリケーションの引き継ぎの優先度が、計算機1800Aは優先度1に、計算機1800Cは優先度2に設定されていることから、計算機1800Bで実行されていたアプリケーション1830は、図18(c)に示すように計算機1800Aに引き継がれ、当該計算機1800Aが実行中となるように、計算機1800A,1800C上のHA状態テーブル1820の内容が更新される。また、計算機1800Cの優先度は優先度2から優先度1に更新される。また、障害が検出された計算機1800BはHAグループから切り離され、計算機1800A,1800C上のHA状態テーブル1820における計算機1800Bの状態は、“実行中”から“障害検出”に更新される。
【0171】
このように本実施形態においては、障害検出イベント発生時におけるアプリケーションの引き継ぎ先(即ちHAイベント発生時の動作内容)をHA状態テーブル1820の示すHAグループ(内の各計算機)の状態によって決定する(変化させる)ことができる。
【0172】
以上はシステム内にHAグループが最大1つだけ存在する場合について説明したが、互いに交わらない複数のHAグループ(即ち、共通の計算機を構成要素としない複数のHAグループ)を設定することも可能である。
【0173】
図21は、図18のシステムにおいて、計算機1800Aと計算機1800Cで1つのHAグループ2101を構成し、計算機1800Bと計算機1800Dで別のHAグループ2102を構成している例を示す。
【0174】
図21のようなHAグループ構成では、それぞれのHAグループ2101,2102で、独立にHA状態テーブル1820の内容を更新することが可能となり、HAイベント発生時の動作内容を、HAグループ毎に異なったHAグループの状態によって決定することが可能となる。
【0175】
[第6の実施形態]
次に、本発明の第6の実施形態につき図面を参照して説明する。
【0176】
図22は、複合系計算機システムにおいて、HAイベント発生時の処理のエラーリカバリを可能とした形態を説明するための図である。
【0177】
図22において、各計算機2200A〜2200Dには、前記第4の実施形態で述べた図11と同様の構成のHAスクリプト実行機構2210が設けられており、このHAスクリプト実行機構2210には、HAイベントに対するHAスクリプト(例えば、障害検出HAイベント2240に対するHAスクリプト2220)が終了した後、HAグループ内でその終了状態を通知し、必要な他系の終了状態を全て受信したならば、エラーリカバリ用のHAスクリプト2230を実行する機能が付加されている。ここで、HAスクリプトの終了状態には、HAスクリプトが正常終了したことを示す状態(正常終了)、異常終了したことを示す状態(異常終了)、計算機に障害が発生したことを示す状態(障害検出)、及びその計算機がHAグループに入っていないことを示す状態(HAグループ切り離し)の4種がある。
【0178】
また、本実施形態で適用されるHAシナリオのシステム記述及びサービス記述には、エラーリカバリ処理記述部が用意されている。このエラーリカバリ処理記述部では、HAイベントに対するHAスクリプトの上記終了状態(各計算機で正常終了したか、異常終了したか、計算機に障害が発生したか、その計算機がHAグループに入っていないか)を取得するためのコマンドが記述できるようになっている。
【0179】
次に、図22のシステムにおける各計算機の基本的な動作について、図23のフローチャートを参照して説明する。
【0180】
図22のシステムでは、何らかのHAイベントが発生すると、各計算機、例えば計算機2200A〜2200D(障害検出HAイベントの場合には、障害が検出された計算機を除く)内のHAスクリプト実行機構2210で対応するHAスクリプトが実行される(ステップS61)。
【0181】
HAスクリプト実行機構2210は、HAスクリプトを実行すると、自系のHAスクリプトの終了状態を他系に通知する(ステップS62)。
【0182】
HAスクリプト実行機構2210は、HAグループに入っていないか、障害が検出された計算機以外の全てのHAスクリプト終了状態の通知を待ち合わせる(ステップS63)。
【0183】
HAスクリプト実行機構2210は、HAグループに入っていないか、障害が検出された計算機以外の全てのHAスクリプトを受信すると、その受信した終了状態(正常終了、異常終了、障害検出、HAグループ切り離し)と計算機の組を引数として、エラーリカバリ用のHAスクリプト2230を実行する(ステップS64)。このステップS64では、エラーリカバリ用のHAスクリプト2230に従い、適切なエラー処理が選択され、実行される。なお、発生したHAイベントに基づいて実行されたHAスクリプトがHAグループ内で全て正常終了した場合には、エラーリカバリ用のHAスクリプト2230自体は実行されるものの、実質的には何も行われない設定となっている。
【0184】
次に、エラーリカバリの具体例につき、計算機2200Aに障害が発生した場合を例に説明する。
【0185】
まず、計算機2200A〜2200DがHAグループに入っているものとする。この状態で、計算機2200Aに障害が発生し、その結果、HAグループ内の他の計算機2200B〜2200Dで、図22(a)に示すように計算機2200Aの障害検出HAイベント2240が発生したものとする。
【0186】
すると、各計算機2200B〜2200D内のHAスクリプト実行機構2210は、図22(b)に示すように、障害検出HAイベント2240に対するHAスクリプト2220を実行する。
【0187】
本実施形態では、計算機2200Aで動作していたアプリケーションを計算機2200Bに引き継ぐようにHAシナリオが記述されているものとする。この場合、計算機2200BはHAスクリプト2220の実行により、本来ならば計算機2200Aで動作していたアプリケーションを引き継ぐことになる。ところが本実施形態では、計算機2200BでのHAスクリプト2220の実行が図22(b)に示すように異常終了し、当該計算機2200Bへの引き継ぎ2241に失敗したものとする。
【0188】
計算機2200Bへの引き継ぎ2241に失敗した場合、当該計算機2200Bから他系に対し、図22(b)に示すようにHAスクリプト(2220)の異常終了通知2242がなされる。一方、計算機2200C,2200DではHAスクリプト2220の実行が正常終了したものとすると、計算機2200C,2200Dから他系に対し、図22(b)に示すようにHAスクリプト(2220)の正常終了通知2243がなされる。
【0189】
各計算機2200B〜2200D(内のHAスクリプト実行機構2210)は、障害が検出された計算機2200A以外の各計算機のHAスクリプト終了状態を全て取得すると、その取得した終了状態と計算機の組を引数として、図22(c)に示すようにエラーリカバリ用のHAスクリプト2230を実行する。
【0190】
ここでHAシナリオには、計算機2200Bへの引き継ぎに失敗した場合に、計算機200Cに引き継ぐようにエラーリカバリするように記述されているものとする。このような場合、計算機2200C(内のHAスクリプト実行機構2210)は、エラーリカバリ用のHAスクリプト2230の実行により、計算機2200BでのHAスクリプトが異常終了したことを得て、図22(c)に示すように、障害が検出された計算機2200Aで動作していたアプリケーションの引き継ぎ2244を実行する。
【0191】
[第7の実施形態]
次に、本発明の第7の実施形態につき図面を参照して説明する。
【0192】
図24は、複合系計算機システムにおいて、HAスクリプトの処理の一部として、疑似的にHAイベントを発生させることで、1つのHAイベントに起因して複数のHAスクリプトを実行可能とした形態を説明するための図である。
【0193】
本システムを構成する各計算機には、前記第4の実施形態で述べた図11と同様の構成のHAスクリプト実行機構(図示せず)が設けられており、当該HAスクリプト実行機構には、発生した疑似的なHAイベント(疑似HAイベント)を、通常のHAイベントに先立って受け付ける機能が付加されている。
【0194】
また本システムでは、HAシナリオのシステム記述並びにサービス記述内で使用可能な疑似HAイベント発生記述、(この疑似HAイベント発生記述に対応する)HAスクリプトから使用可能な疑似HAイベント発生コマンドが用意される。
【0195】
このようなシステムでは、HAイベントが発生し、そのHAイベントに対するHAスクリプトが各計算機で実行されると、疑似HAイベント発生コマンドに従って疑似HAイベントが発生される。この結果、HAスクリプトの実行が終了すると、当該HAスクリプトの実行過程で発生した疑似HAイベントに対するHAイベントが実行されることになる。
【0196】
以下、疑似HAイベントの発生の具体列につき、図24を参照して説明する。
【0197】
まず本実施形態で適用されるHAシナリオでは、それぞれのサービス記述毎に、アプリケーションの開始要求を別々のHAイベントとして定義し、個別にアプリケーションの開始が指定できるものとする。そこで、全てのアプリケーションの開始要求のHAイベントを、それらのHAイベントが疑似HAイベントとして発生するように記述する。ここでは、全てのアプリケーション(AP1,AP2)の開始要求のHAイベント2400に対するHAスクリプト2401内に、アプリケーションAP1,AP2の開始要求の疑似HAイベント2411,2412を発生するコマンドが用意されているものとする。また、疑似HAイベント2411,2412に対するHAスクリプト2421,2422が用意されているものとする。
【0198】
このため、本システムにおいて、全てのアプリケーションの開始要求のHAイベント2400が発生すると、そのHAイベント2400に対するHAスクリプト2401が実行されて、当該HAスクリプト2410内で、アプリケーションAP1,AP2の開始要求の疑似HAイベント2411,2412が発生する。
【0199】
そして、全てのアプリケーションの開始要求のHAイベント2400に対するHAスクリプト2401の実行が終了すると、当該HAスクリプト2401内で最初に疑似HAイベント2411として発生したアプリケーションAP1の開始要求に対するHAスクリプト2421が実行される。
【0200】
次に、このアプリケーションAP1の開始要求に対するHAスクリプト2421が終了すると、今度は疑似HAイベント2412として発生したアプリケーションAP2の開始要求に対するHAスクリプト2422が実行される。その後、このアプリケーションAP2の開始要求に対するHAスクリプト2422が終了する。
【0201】
以上は、HAスクリプトの処理の一部として、疑似的にHAイベントを発生させる例として、アプリケーションの開始要求の疑似HAイベントを発生させる場合について説明したが、これに限るものではなく、例えばアプリケーションの通常引き継ぎ要求(スイッチオーバ)を、アプリケーションの停止要求と、開始要求の各々の疑似HAイベントとして発生させることも可能である。これは、HAシナリオ内で、そのように記述することで実現できる。
【0202】
[第8の実施形態]
そこで、アプリケーションの通常引き継ぎ要求(スイッチオーバ)を、アプリケーションの停止要求と、開始要求の各々の疑似HAイベントとして発生させる第8の実施形態につき、図25を参照して説明する。
【0203】
図25は、計算機2500Aから計算機2500Bへのアプリケーションのスイッチオーバの例を示すもので、まず計算機2500A,2500Bで、それぞれスイッチオーバのHAイベント2510が発生し、そのHAイベント2510に対するHAスクリプト2511が実行されたものとする。このHAスクリプト2511内では、アプリケーションの計算機2500Aでの停止要求の疑似HAイベント2521と、アプリケーションの計算機2500Bでの開始要求の疑似HAイベント2522とが順に発生される。
【0204】
そして、スイッチオーバのHAスクリプト2511の実行が終了すると、当該HAスクリプト2511内で最初に疑似HAイベント2521として発生したアプリケーションの計算機2500Aでの停止要求に対するHAスクリプト2531が実行される。
【0205】
次に、このアプリケーションの計算機2500Aでの停止要求のHAスクリプト2531が終了すると、今度は疑似HAイベント2522として発生したアプリケーションの計算機2500Bでの開始要求に対するHAスクリプト2532が実行される。その後、このアプリケーションの計算機2500Bでの開始要求に対するHAスクリプト2532が終了する。
【0206】
このように本実施形態においては、スイッチオーバの処理と、開始要求、停止要求の処理とを共通化することで、HAシナリオの作成を容易にすることができる。
【0207】
また、スイッチオーバの処理を2つのHAイベント(2521,2522)に対する処理として分けることにより、停止処理が終了してから開始処理が開始されることが保証される。
【0208】
以上、HAスクリプトの処理の一部として、疑似HAイベントを発生させる第7及び第8の実施形態につき説明した。このHAスクリプトから疑似HAイベントを発生させる技術を前記第6の実施形態に適用し、エラーリカバリ用のHAスクリプトからも疑似HAイベントを発生させることで、エラーリカバリに失敗した場合のエラーリカバリを実現することができる。
【0209】
[第9の実施形態]
そこで、エラーリカバリ用のHAスクリプトからも疑似HAイベントを発生させることで、エラーリカバリに失敗した場合のエラーリカバリを可能とする第9の実施形態につき、図26及び図27を参照して説明する。
【0210】
本実施形態が、前記第6の実施形態と異なる点は、エラーリカバリ用のHAスクリプトから、アプリケーションの引き継ぎ要求(テイクオーバ)が疑似HAイベントとして発生するように構成されていることであり、処理の基本は、前記第6及び第7の実施形態で適用された処理の流れを合わせた形となる。
【0211】
図26及び図27の例では、(前記第6の実施形態における計算機2200A〜2200Dに相当する)計算機2600A〜2600DがHAグループに入っており、そのうちの計算機2600Aに障害2601が発生した結果、HAグループ内の他の計算機2600B〜2600Dで、計算機2600Aの障害検出HAイベント2610が発生した場合を想定している。
【0212】
さて、計算機2600B〜2600Dで計算機2600Aの障害検出HAイベント2610が発生すると、図26に示すように、その障害検出HAイベント2610に対するHAスクリプト2611が、当該計算機2600B〜2600Dで実行される。このHAスクリプト2611では、計算機2600A(名前がAの計算機)で動作していたアプリケーションを計算機2600B(名前がBの計算機)に引き継ぐようになっているが、当該計算機2600BでのHAスクリプト2611の実行が異常終了して、図26の例のように当該計算機2600Bへの引き継ぎ2612が失敗したものとする。
【0213】
エラーリカバリ用のHAスクリプト2613内では、計算機2600C(名前がCの計算機)へのテイクオーバ(障害時引き継ぎ要求)の疑似HAイベント2614が発生するものとする。この場合、エラーリカバリ用のHAスクリプト2613の実行が終了すると、各計算機2600B〜2600Dでは、当該HAスクリプト2613内で疑似HAイベント2614として発生した計算機2600Cへのテイクオーバに対するHAスクリプト2615が実行される。
【0214】
HAスクリプト2615では、計算機2600Aで動作していたアプリケーションを計算機2600Cに引き継ぐようになっているが、当該計算機2600CでのHAスクリプト2615の実行が異常終了して、図26に示すように当該計算機2600Cへの引き継ぎ2616が失敗したものとする。
【0215】
計算機2600Cへの引き継ぎ2616に失敗した場合、当該計算機2600Cから他系に対し、HAスクリプト(2615)の異常終了通知がなされる。一方、計算機2600B,2600DではHAスクリプト2615の実行が正常終了したものとすると、計算機2600B,2600Dから他系に対し、HAスクリプト(2615)の正常終了通知がなされる。
【0216】
各計算機2600B〜2600Dは、障害が検出された計算機2600A以外の各計算機のHAスクリプト終了状態を全て取得すると、その取得した終了状態と計算機の組を引数として、図27に示すように、計算機2600Cへのテイクオーバに対するエラーリカバリ用のHAスクリプト2617を実行する。
【0217】
エラーリカバリ用のHAスクリプト2617内では、計算機2600D(名前がDの計算機)へのテイクオーバの疑似HAイベント2618が発生するものとする。この場合、エラーリカバリ用のHAスクリプト2617の実行が終了すると、各計算機2600B〜2600Dでは、当該HAスクリプト2617内で疑似HAイベント2618として発生した計算機2600Dへのテイクオーバに対するHAスクリプト2619が実行される。
【0218】
HAスクリプト2619では、計算機2600Aで動作していたアプリケーションを計算機2600Dに引き継ぐようになっており、当該計算機2600DでのHAスクリプト2619の実行が正常終了した結果、図27に示すように当該計算機2600Dへの引き継ぎ2620が成功したものとする。この場合、各計算機2600B〜2600Dでは、計算機2600Dへのテイクオーバに対するエラーリカバリ用のHAスクリプト2621が実行されるが、計算機2600Dへの引き継ぎ2620に成功していることから、実質的には何も行われない。
【0219】
以上、HAスクリプト内で疑似的にHAイベントを発生させる第7乃至第9の実施形態について説明した。ここでは、疑似HAイベントは、HAイベントの発生に同期して発生することから、1つのHAイベントが発生すると、一連のHAスクリプトが次々に実行されることになる。したがって、もし疑似HAイベントの無限ループがあると、一連のHAスクリプトの実行は永久に停止しないという問題が発生する。
【0220】
このような問題は、そもそもHAシナリオの書き方に起因して発生するわけであるが、従来のコンパイラ技術(例えば、構文解析など)では、この不具合を検出することはできない。しかも、該当するHAイベントが発生するまでは現象が現われないため、運用開始後も障害が発生するまでは発見されない場合が多い。
【0221】
[第10の実施形態]
そこで、(前記第1の実施形態におけるHAシナリオコンパイラ140に相当する)HAシナリオコンパイラにHAイベントの無限ループを検出する機能を持たせた実施形態について図28を参照して説明する。
【0222】
図28に示すHAシナリオコンパイラは、(前記第1の実施形態におけるHAシナリオ110に相当する)HAシナリオの構文解析を行う構文解析部2801、構文解析の結果を受けて内部構造(内部形式の中間コード)に展開する展開部2802、HAイベントを非同期に発生するものと、疑似HAイベントとして発生するものとに区別(分類)するHAイベント分類部2803、疑似HAイベントの呼び出し関係のグラフを作成するHAイベント呼び出し関係グラフ作成部2804、疑似HAイベントの呼び出し関係のグラフからループの存在を判定するループ判定部2805、及びループ判定部2805の判定結果をもとにエラーメッセージを出力するエラー出力部2806を備えている。なお図28では、展開された内部構造を最適化して目的のHAスクリプト集合をなすコード列を生成する最適化部等は省略されている。
【0223】
次に、図28の構成のHAシナリオコンパイラの動作を、図29のフローチャートを参照して説明する。
【0224】
まずHAシナリオコンパイラ内の構文解析部2801は、HAシナリオを読み込み構文解析を行う(ステップS71)。展開部2802は、構文解析部2801により構文解析された結果を受けて内部構造に展開する(ステップS72)。これにより、例えば複数のHAイベントに共通化された記述が、複数のスクリプトに対応する記述に展開される。
【0225】
HAイベント分類部2803は、展開部2801により展開された内部構造から、HAイベントを、障害やオペレータ入力に起因して非同期に発生するものと、疑似HAイベントとして発生するものとに区別する(ステップS73)。
【0226】
HAイベント呼び出し関係グラフ作成部2804は、HAイベント分類部2803の分類結果をもとに、疑似HAイベント発生記述を探索し、HAイベントの呼び出し関係のグラフを作成する(ステップS74)。
【0227】
ループ判定部2805は、HAイベントの呼び出し関係のグラフを対象に深さ優先の探索を行うことで、非同期に発生するHAイベントを判定し、そこから始まるループ(疑似HAイベントの無限ループ)の存在を判定する(ステップS75)。
【0228】
エラー出力部2806は、ループ判定部2805によりループの存在が判定された場合、エラーメッセージを出力し、HAシナリオコンパイラでの動作を停止する(ステップS76)。
【0229】
このように本実施形態においては、HAシナリオの記述内容の意味の確認をHAイベントの呼び出し関係について行って、疑似HAイベントの無限ループの存在を検出することで、当該無限ループの存在のために、一連のHAスクリプトの実行が永久に停止しないという不具合の発生を防止できる。
【0230】
ところで、HAシナリオにおけるデバイス名の書き間違い、オプションの書き間違いなど(HAシナリオの記述内容の誤り)は、これらがOS(オペレーティングシステム)やアプリケーションに依存するため、通常のコンパイラ技術では検出できない。
【0231】
[第11の実施形態]
そこで、HAシナリオにおけるデバイス名の書き間違い、オプションの書き間違いなどを検出可能とした実施形態について、図30を参照して説明する。
【0232】
図30に示すHAシナリオコンパイラは、HAシナリオの構文解析を行う構文解析部3001、構文解析の結果を受けて内部構造(内部形式の中間コード)に展開する展開部3002、各計算機の処理での操作を抽出する操作抽出部3003、各計算機の処理での操作(HA状態テーブルの操作、ディスク操作、ネットワーク操作、アプリケーション操作など)で使用される引数に期待される値を計算機毎に格納してある基準引数値データベース3004、抽出された操作で使用される引数の正当性を判定する引数判定部3005、及び引数判定部3005の判定結果をもとにエラーメッセージを出力するエラー出力部3006を備えている。なお図30では、展開された内部構造を最適化して目的のHAスクリプト集合をなすコード列を生成する最適化部等は省略されている。
【0233】
次に、図30の構成のHAシナリオコンパイラの動作を、図31のフローチャートを参照して説明する。
【0234】
まずHAシナリオコンパイラ内の構文解析部3001は、HAシナリオを読み込み構文解析を行う(ステップS81)。展開部3002は、構文解析部30001により構文解析された結果を受けて内部構造に展開する(ステップS82)。これにより、例えば複数の計算機に共通化された記述が、複数のスクリプトに対応する記述に展開される。
【0235】
操作抽出部3003は、展開部2801により展開された内部構造から、各計算機の処理に関して、該当する操作(HA状態テーブルの操作、ディスク操作、ネットワーク操作、アプリケーション操作など)を探索し、抽出する(ステップS83)。
【0236】
引数判定部3005は、操作抽出部3003により抽出された、各計算機の処理に関する各操作について、その引数が正当なものであるか否かを、基準引数値データベース3004を参照することで判定する(ステップS84)。
【0237】
エラー出力部3006は、引数判定部3005により、HA状態テーブルの操作、ディスク操作、ネットワーク操作、アプリケーション操作などで正当でない引数の使用が判定された場合、エラーメッセージを出力し、HAシナリオコンパイラでの動作を停止する(ステップS85)。
【0238】
このように本実施形態においては、HAシナリオの記述内容の正しさの確認を、HA状態テーブルの操作、ディスク操作、ネットワーク操作、アプリケーション操作などで使用される引数について行うことで、HAシナリオにおけるデバイス名の書き間違い、オプションの書き間違いなどの不具合が、実際のシステムを構築しなくても、HAシナリオのコンパイルの段階で検出できる。
【0239】
[第12の実施形態]
次に、HAシナリオの正当性を、HA状態テーブルを利用して検査するようにした実施形態について、図32を参照して説明する。
【0240】
まず、HAスクリプトが実行時に処理を変化させる要因はHA状態テーブルの内容のみである。そのため、HAシナリオからHA状態テーブルの操作に関係する部分のみを抽出して、当該HAシナリオの制御の戦略の正当性を、HA状態テーブルの観点から検査することが可能である。
【0241】
そこで本実施形態におけるHAシナリオコンパイラ内には、図32に示すように、(図30中の構文解析部3001及び展開部3002に相当する)構文解析部3201及び展開部3202に加えて、HA状態テーブルの操作に関係する処理のみを抽出する抽出部(HA状態テーブル操作関連処理抽出部)3203、抽出されたHA状態テーブルの操作が各計算機で同一であるか否かを判定する同一操作判定部3204、抽出されたHA状態テーブルの操作が指定された条件(インタロック)を保つか否かを判定するインタロック判定部3205、及び判定部3204,3205の判定結果をもとにエラーメッセージを出力するエラー出力部3206が設けられている。ここでインタロックの条件(HA状態テーブルが満たすべき条件)はHAシナリオに記述されており、例えば同時に複数の計算機で同一のアプリケーションが稼働状態にならないとか、優先度が同じ計算機は存在してはならないなどである。
【0242】
次に、図32の構成のHAシナリオコンパイラの動作を、図33及び図34のフローチャートを参照して説明する。
【0243】
まずHAシナリオコンパイラ内の構文解析部3201は、HAシナリオを読み込み構文解析を行う(ステップS91)。展開部3202は、構文解析部32001により構文解析された結果を受けて内部構造に展開する(ステップS92)。これにより、例えば複数の計算機に共通化された記述が、複数のスクリプトに対応する記述に展開される。
【0244】
HA状態テーブル操作関連処理抽出部3203は、展開部2801により展開された内部構造から、各計算機におけるHA状態テーブルの操作に関係する処理を全て抽出する(ステップS93)。
【0245】
同一操作判定部3204は、抽出されたHA状態テーブル操作(の内容)が各計算機で同一であるか否かを判定する(ステップS94)。
【0246】
もし、抽出された操作が各計算機で同一であるならば、インタロック判定部3205に制御が渡される。
【0247】
インタロック判定部3205は、上記抽出されたHA状態テーブル操作が行われたものとした場合に、各計算機でインタロックを保つか否かを判定する(ステップS95)。このインタロック判定部3205でのインタロック判定の詳細を図34のフローチャートに従って説明する。
【0248】
まずインタロック判定部3205は、HA状態テーブルのとり得る内容を各計算機について全て求め、その組み合わせのリストを作成する(ステップS101)。これにより、例えば4台の計算機からなる複合系計算機システムで、各計算機について、実行中、優先度1、優先度2、優先度3、優先度4、切り離し、障害検出の7つの状態がある場合であれば、合計7×7×7×7=2401通りの状態の組み合わせからなるリストが作成される。
【0249】
次にインタロック判定部3205は、作成した状態の組み合わせのリストの中から、インタロックに符合していない組み合わせ(複数の計算機で優先度が同一の組み合わせなど)を削除する(ステップS102)。
【0250】
次にインタロック判定部3205は、上記リスト中の残されている組み合わせの(各計算機での)各状態に対して、(上記ステップS93で)HA状態テーブル操作関連処理抽出部3203により抽出されたHA状態テーブルの操作を施し、その結果を保存する(ステップS103)。
【0251】
そしてインタロック判定部3205は、HA状態テーブルの操作を施した後の各状態の組み合わせが、上記リスト中の残されている全組み合わせの部分となっているか否かを調べ、部分となっている場合だけ、各計算機でのHA状態テーブルの操作がインタロックを保つものと判定する(ステップS104)。
【0252】
さて、インタロック判定部3205にて、各計算機でのHA状態テーブルの操作がインタロックを保たないと判定された場合、或いは同一操作判定部3204にて、各計算機でのHA状態テーブルの操作が同一でないと判定された場合には、HAシナリオが正当性に欠けているものとして、エラー出力部3206からエラーメッセージが出力されて、HAシナリオコンパイラでの動作が停止される(ステップS96)。
【0253】
このように本実施形態においては、HAシナリオの記述内容の意味の確認として、全ての計算機で同じHAイベントに対しては同じHA状態テーブルの操作をすることの確認を行うことで、HA状態テーブルがHAグループ内の計算機で同一であることを保証することができる。なお、インタロックは制御の分野で従来からよく使用されているが、本実施形態では実行時にこれを適用するのではなく、コンパイル時に適用し、HAシナリオの正当性を高度に保証するようにしたことに特徴がある。
【0254】
ところで、共有装置に対する操作がHAシナリオに含まれている場合、複数の計算機から行われる操作の整合性を検査することは重要である。しかし、従来のコンパイラ技術では対処できない。
【0255】
[第13の実施形態]
そこで、共有装置に対する操作の不整合性を検出するようにした実施形態について、図35を参照して説明する。
【0256】
本実施形態におけるHAシナリオコンパイラ内には、図35に示すように、(図30中の構文解析部3001及び展開部3002に相当する)構文解析部3501及び展開部3502に加えて、共有装置の操作記述を抽出する共有装置操作記述抽出部3503、抽出された共有装置装置記述の組に対して操作の整合性を判定する共有装置操作整合性判定部3504、及び判定部3504の判定結果をもとにエラーメッセージを出力するエラー出力部3505が設けられている。
【0257】
図35の構成において、共有装置操作記述抽出部3503は、構文解析部3501、展開部3502を通してHAシナリオから得られた内部構造を探索して共有装置(例えば共有ディスク)の操作記述を全て抽出する。この共有装置の操作記述は、HA状態テーブルの内容によって条件付けられて記述されることが多い。したがって、単にその記述があるか否かだけから判断することはできず、異なる計算機の処理に対して、同時に条件が成立するか否かを判定する必要がある。
【0258】
そこで共有装置操作整合性判定部3504は、HA状態テーブルの内容が各計算機上で全て同一であることを利用して、異なる計算機間の条件を比較する。特に、HAシナリオ内に前記第12の実施形態で述べたようなインタロック(HA状態テーブルが満たすべき条件)が記述されているならば、これも条件の比較に利用する。即ち共有装置操作整合性判定部3504は、共有装置操作記述抽出部3503により抽出された共有装置操作記述の中から、同時に成立する可能性のある条件が付けられた共有装置操作記述の組、つまり1つのHAイベントに対する各計算機における処理で、同時に実行される可能性のある共有装置操作記述の組を全て洗い出し、その組に対して操作の整合性を判定する。
【0259】
もし、共有装置操作整合性判定部3504で、同一のアドレスを複数の計算機がネットワークに設定すること(ネットワークアドレスの不整合性)や、共有ディスクを複数の計算機が同時に確保するといったことが検出された結果、整合性なし(不整合)が判定された場合には、エラー出力部3505からエラーメッセージが出力されて、HAシナリオコンパイラでの動作が停止される。
【0260】
このように本実施形態においては、HAシナリオの記述内容の意味の確認を共有装置の操作について行うことで、当該操作の不整合性の発生を防止することができる。
【0261】
図36に共有装置操作記述の例を示す。
【0262】
図36において、"get s=state(event.cpu)"の記述3601は、障害が検出された計算機(event.cpu) について、自系のHA状態テーブル内の状態を変数sとして取得することを指示するHA状態テーブル参照コマンドである。
【0263】
また、"if(s=="実行中")" から始まる記述3602は、変数sで示されるHA状態テーブルの状態、即ち障害が検出された計算機(event.cpu) のHA状態テーブルの状態が“実行中”である場合に、各計算機(localcpu)が行うべき処理を記述したものである。
【0264】
ここで、HA状態テーブルの内容は全ての計算機で同一であることから、上記"if(s=="実行中")" で示される条件は、全ての計算機について同時に成立しなければならず、これを整合性判定に利用する。
【0265】
また、上記記述3602は、自系のHA状態テーブル内の状態を変数(var) tとすると、そのtが“優先度1”であるならば、"mktkdisk"という関数を呼び出して、障害が検出された計算機(event.cpu) につながれていた(vg1 で識別される)共有ディスク(共有装置)を自系(“優先度1”の計算機)に強制的("-f") につなぐという引き継ぎを指示する記述3603を含む。
【0266】
ここで、“優先度1”の計算機は1つしかないというインタロックがあるので、変数tが“優先度1”という条件は、2つ以上の計算機について同時に成立してはならず、これを整合性判定に利用する。
【0267】
以上、HAシナリオコンパイラにHAシナリオの正当性を保証するための各種判定機能を持たせた第10乃至第13の実施形態につき説明したが、これらの実施形態では、変数で記述されたHAイベントや引数、代入文、条件文などに対しては解析が不能になる可能性がある。
【0268】
[第14の実施形態]
そこで、変数で記述されたHAイベントや引数、代入文、条件文などに対しても、前記第10乃至第13の実施形態で適用した判定機構を有効に機能させるための実施形態について、図37を参照して説明する。
【0269】
まず本実施形態では、前記第10乃至第13の実施形態におけるHAシナリオコンパイラの展開部(2802,3002,3202,3502)に、図37に示すように第1変数−定数置換部3701、第2変数−定数置換部3702及び定数伝播部3703を追加している。
【0270】
第1変数−定数置換部3701は、計算機に関して共通化された記述を内部的に展開した際に、自系を指す特別な変数を定数に置き換えるものである。この第1変数−定数置換部3701の処理を、例えば前記第1の実施形態において切り離しHAイベントに対する処理を共通化して記述したHAシナリオ中のサービス記述113(図6参照)に対して適用するならば、"localcpu"という自系を指す特別な変数は全てcpu1〜cpu4のいずれかに置き換え可能であり、更にそれらの変数は全て“A”〜“D”の実際の計算機の名前(定数)に置き換え可能である。
【0271】
第2変数−定数置換部3702は、HAイベントに関して共通化された記述を内部的に展開した際に、HAイベントの部分を指す特別な変数を定数に置き換えるものである。この第2変数−定数置換部3702の処理を、上記の変数−定数置換部3701と同様に、図6に示した切り離しHAイベントに対する処理を共通化して記述したHAシナリオ中のサービス記述113に対して適用するならば、"event.cpu" というHAイベントの部分を指す特別な変数は全てcpu1〜cpu4のいずれかに置き換え可能であり、更にそれらの変数は全て“A”〜“D”の実際の計算機の名前(定数)に置き換え可能である。
【0272】
定数伝播部3703は、サービス記述及びシステム記述内で、変数に代入された定数を定数伝播するものである。この定数伝播部3703の処理を、例えば前記第2の実施形態においてサービス毎の記述を共通化して記述した図8に示したようなHAシナリオに対して適用し、内部的に定数伝播を行うならば、各サービス記述801〜803の部分804-1〜804-3(図8中の(1),(2),(3)の部分)で参照されるmaster及びslave という変数は全てcpu1〜cpu4のいずれかに置き換え可能であり、更にそれらの変数は全て“A”〜“D”の実際の計算機の名前(定数)に置き換え可能である。
【0273】
以上のように、計算機に関して共通化された記述、及びHAイベントに関して共通化された記述を内部的に展開し、変数を定数に置き換え、またサービス記述及びシステム記述内で代入された変数に定数伝播することで、変数を用いた記述に対しても、前記第10乃至第13の実施形態で適用したHAシナリオ記述の正当性に対する判定機構を有効に機能させることができる。
【0274】
なお、定数伝播は従来のコンパイラで適用されていた手法であるが、もっぱら高速化のために最適化の1つとして用いられているものである。これに対し、本実施形態ではHAシナリオコンパイラにおけるエラー解析(HAシナリオの正当性の判定)の精度を向上させる目的で用いており、従来の定数伝播手法とは適用の仕方及び効果が異なる。
【0275】
この他、HAシナリオコンパイラにおけるエラー解析の精度向上のために、ループ文で書かれた記述を内部的に展開し、ループ変数を定数に置き換えるためのループ変数−定数置換部(図示せず)をHAシナリオコンパイラに追加することも可能である。
【0276】
ここで、ループ文で書かれた記述の一例を図38に示す。この記述は、前記第7の実施形態のように、全てのアプリケーションの開始要求を疑似HAイベントとして発生させる場合のHAシナリオ記述であり、sは全てのサービス(アプリケーション)の各々を表すループ変数であり、"event.cpu" は組み込まれる計算機である。この図38のような記述は、サービスが追加されたとしても変わらないので便利であるが、このままでは、HAシナリオ記述の正当性を判定することは難しい。
【0277】
そこで、上記したループ変数−定数置換部を、例えば前記第10の実施形態で適用したHAシナリオコンパイラ内(の展開部2802)に設け、ループ文で書かれた記述を内部的に展開し、ループ変数をそれぞれの定数(ここではサービス名)に置き換えるようにするならば、(HAシナリオのエラー解析精度としての)HAイベントの無限ループの検出精度を向上することができる。
【0278】
また、HAシナリオコンパイラに、HAシナリオの記述内容に従って各種障害発生時の動作を試行する動作シミュレーション機構を設け、HAシナリオをコンパイルして得られる各HAスクリプト(イベント処理スクリプト)を配布する前に、当該動作シミュレーション機構が、HAシナリオに記述された内容を解釈して、シミュレーションし、その際に現れた状態(HA状態テーブルの内容)もしくは処理に矛盾がないかチェックする構成とすることも可能である。
【0279】
ここでは、まず初期状態から始めて、非同期に発生する可能性のあるイベント(障害、ユーザオペレーション)を任意に組み合わせて、各HAスクリプトを解釈する。このとき、例えば(HAグループ内の)各計算機でのHA状態テーブルの内容が同一に保たれているか、共有装置を2つ以上の計算機から同時に使用するようになっていないか、同一のサービス(アプリケーション)を2つ以上の計算機で同時に実行していないか、といった矛盾がないかをチェックする。
【0280】
以上のシミュレーションは実際のシステムが構築されていなくても、HAシナリオコンパイラ上で実行できる。
【0281】
なお、上記した動作シミュレーション機構の他に、前記第11実施形態で適用したHAシナリオの正当性の判定機構(HAシナリオの記述内容の正しさの確認機構)、及び前記第10、第12及び第13実施形態でそれぞれ適用したHAシナリオの正当性の判定機構(HAシナリオの記述内容の意味の確認機構)を全てHAシナリオコンパイラに持たせることも可能である。
【0282】
なお、前記第1の実施形態では、HAシナリオコンパイラでの成果物がHAイベント処理用のHAスクリプト(の集合)である場合について説明したが、これに限るものではない。
【0283】
[第15の実施形態]
そこで、HAイベント処理用だけでなく、それ以外の目的で用いられる各種スクリプト、更にはスクリプト以外の成果物がHAシナリオコンパイラにより生成される実施形態につき、図39を参照して説明する。
【0284】
図39において、計算機3900は、プログラム開発環境を提供するものである。この計算機3900は、前記第1の実施形態における図1中の計算機100Aとは異なって、実システムを構成するものではないものとする。
【0285】
計算機3900中のHAシナリオコンパイラ3901はHAシナリオ3902を読み込んでコンパイルすることで、対象となる複合系計算機システム(ここでは、3台の計算機3910A〜3910Cから構成される複合系計算機システム)のシステム構成を定義した設定ファイル3903、HAイベント処理用のHAスクリプト3904(の集合)、これら設定ファイル3903、HAスクリプト3904(の集合)及び次に述べるチェックスクリプト3906を、HAシナリオ3902に記述された計算機名(サーバ名)で示される(複合系計算機システムを構成する)各計算機(3910A〜3910C)に配布するための配布スクリプト(プログラム)3905、オンラインでの新シナリオの適用の可否を決定するためのチェックスクリプト3906、及びチェックシート3907の各成果物を生成する。チェックシート3907は、実際にHAシナリオコンパイラに記述された通りにシステムが構成されているか否かを、人がチェックするためのチェック項目の一覧であり、計算機3900からプリント出力(或いは表示出力)される。なお、設定ファイル3903及びHAスクリプト3904は、複合系計算機システムを構成する各計算機別に生成される。
【0286】
計算機3900上のHAシナリオコンパイラ3901により生成された上記成果物中の設定ファイル3903、HAスクリプト3904、配布スクリプト3905及びチェックスクリプト3906は、例えば磁気テープ等の大容量記憶媒体に格納された後、図39において符号aで示すように、複合系計算機システム(実システム)を構成する例えば3台の計算機3910A〜3910Cの1つ(ここでは計算機3910B)に移動され、その計算機(3910B)が持つ同種の大容量記憶装置(ここでは磁気テープ装置)に装着される。なお、各計算機3910A〜3910CはLAN3920に接続されていることから、計算機3900も当該LAN3920に接続されているならば、上記各成果物をLAN3920を介して計算機3910B(計算機3910A〜3910Cのいずれか)の大容量記憶装置に転送するようにしても構わない。また、計算機3900が計算機3910B(計算機3910A〜3910Cのいずれか)の場合には、以上の成果物の移動は不要となる。
【0287】
計算機3910Bは、HAシナリオコンパイラ3901により生成された上記各成果物のうちの配布スクリプト3905を実行し、残りの成果物である設定ファイル3903、HAスクリプト3904(の集合)及びチェックスクリプト3906を、図39において符号bで示すように、(HAシナリオ3902に記述されている複合系計算機システムを構成するサーバ名の)各計算機3910A〜3910Cの、一種のバッファとしての登録ディレクトリ3911に配送・コピーする。ここで、配布スクリプト3905自体も、HAシナリオ3902をコンパイルした結果の成果物であることから、他の成果物である設定ファイル3903、HAスクリプト3904(の集合)及びチェックスクリプト3906の配布先が正しく設定でき、誤った配布先に配布されるのを防止できる。なお、各計算機3910A〜3910Cには、当該計算機3910A〜3910C用の設定ファイル3903及びHAスクリプト3904(の集合)だけが配送される。また、計算機3910Bから計算機3910A,3910Cへの成果物配送は、LAN3920を介して行われる。
【0288】
計算機3910A〜3910Cは、自系の登録ディレクトリ3911に配送された上記成果物のうち、設定ファイル3903及びHAスクリプト3904を実使用のために自系の実使用ディレクトリ(実行用のディレクトリ)3912にコピーする。
【0289】
次に計算機3910A〜3910Cは、自系の登録ディレクトリ3911にあるチェックスクリプト(3906)を実行し、当該登録ディレクトリ3911にある設定ファイル(3903)及びHAスクリプト(3904)と、自系の実使用ディレクトリ3912にある(登録ディレクトリ3911からコピーされた)設定ファイル(3903)及びHAスクリプト(3904)とを、図39において符号cで示すように比較する。
【0290】
そして計算機3910A〜3910Cは、自系の(実使用ディレクトリ3912内の)設定ファイル(3903)が(登録ディレクトリ3911内のものとは)異なっているときは、(システムを一旦停止してから)複合系計算機システムを構成するソフトウェアを再起動する必要がある旨のメッセージを出力(例えば表示出力)する。
【0291】
また、自系の(実使用ディレクトリ3912内の)HAスクリプト(3904)が(登録ディレクトリ3911内のものとは)異なっているときは、計算機3910A〜3910CはHAスクリプト更新イベントを発行して、該当するHAスクリプトを更新する必要がある旨のメッセージを出力(例えば表示出力)する。 一方、設定ファイル(3903)及びHAスクリプト(3904)の各々が異なっていないときは、(新HAシナリオ3902に対応する)実使用ディレクトリ3912内の設定ファイル(3903)及びHAスクリプト(3904)のオンラインでの使用可が判定される。
【0292】
【発明の効果】
以上詳述したように本発明によれば、複合系計算機システムの構成及び制御内容を抽象的且つ統合的に記述したプログラム(シナリオ)が適用できることから、従来のように実行可能なスクリプトとして各計算機毎に記述する必要があった複合系計算機システムと異なって、システム構成及び制御内容の定義が容易に記述できる。また、各計算機が実行すべき処理スクリプト(コマンド列)を上記シナリオ(HAシナリオ)から自動的に生成することで、人がそのコマンド列を記述する場合の各計算機間での不整合等の誤りの発生を防止できる。
【0293】
また本発明によれば、上記シナリオの記述内容の正誤確認機能を、当該シナリオの記述内容からその記述内容と同等の作用を与える処理スクリプトを生成するシナリオコンパイル手段に持たせることで、当該シナリオの記述誤りを容易に見つけることができる。
【0294】
また本発明によれば、上記シナリオの記述内容の意味の確認機能、或いはデバイス故障など起こり得る各種障害時を想定したシミュレーション機能を上記シナリオコンパイル手段に持たせることで、当該シナリオの意味的に不整合性のある箇所を容易に見つけることができ、実行するまで分かり難い制御アルゴリズムの問題点を実行前に認識することができる。
【0295】
また、本発明によれば、シナリオコンパイル手段により生成される処理スクリプト等の成果物を、上記シナリオで定義された複合系計算機システムを構成する各計算機に配布するためのプログラム(配布スクリプト)を、当該シナリオコンパイル手段により自動生成する機能を持たせることで、この種のプログラムを人が各計算機毎に記述する場合と異なって記述誤りをなくすことができ、これにより配布操作の誤りと、計算機間の不整合を防止できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る複合系計算機システムのブロック構成図。
【図2】図1のシステムにおける主要な構成とデータ変換の流れを示す図。
【図3】図1中のHAシナリオ110の概略構成を示す図。
【図4】図1中のHAシナリオコンパイラ140により生成される(HAシナリオ110の内容と同等の作用を与える)HAスクリプト集合120の一例を示す図。
【図5】HAシナリオ110の抽象性を説明するための図。
【図6】HAシナリオ110の統合性(共通化)を説明するための図。
【図7】本発明の第2の実施形態に係る複合系計算機システムにおける稼働系と待機系の例を示す図。
【図8】図7のシステムにおけるHAシナリオ内のサービス記述の共通化を説明するための図。
【図9】本発明の第3の実施形態に係る複合系計算機システムにおける計算機組み込み/切り離しを説明するための状態遷移図。
【図10】本発明の第4の実施形態に係る複合系計算機システムにおいて、従来方式のアプリケーション引き継ぎを適用した場合の問題を説明するための図。
【図11】同実施形態で適用されるHAスクリプト実行機構のブロック構成図。
【図12】同実施形態において、HAグループ内の計算機で新HAグループの作成と計算機の組み込み/切り離し以外のHAイベントが入力された場合の動作を説明するためのフローチャートの一部を示す図。
【図13】同実施形態において、HAグループ内の計算機で新HAグループの作成と計算機の組み込み/切り離し以外のHAイベントが入力された場合の動作を説明するためのフローチャートの残りを示す図。
【図14】同実施形態において、HAグループ内の計算機で新HAグループの作成要求のHAイベントが入力された場合の動作を説明するためのフローチャート。
【図15】同実施形態において、HAグループ内の計算機の組み込み要求のHAイベントが入力された場合の動作を説明するためのフローチャート。
【図16】同実施形態において、HAグループ内の計算機の切り離し要求のHAイベントが入力された場合の動作を説明するためのフローチャート。
【図17】同実施形態における確定状態決定を説明するための図。
【図18】本発明の第5の実施形態に係る複合系計算機システムにおいて、アプリケーションの引き継ぎ先を、動的に変更可能な優先順位に従って決定する形態を説明するための図。
【図19】同実施形態で適用されるHA状態テーブル更新記述の一例を示す図。
【図20】同実施形態で適用されるサービス記述の一例を示す図。
【図21】同実施形態における複数のHAグループ設定を説明するための図。
【図22】本発明の第6の実施形態に係る複合系計算機システムにおいて、HAイベント発生時の処理のエラーリカバリを可能とした形態を説明するための図。
【図23】同実施形態における各計算機の基本的な動作を説明するためのフローチャート。
【図24】本発明の第7の実施形態に係る複合系計算機システムにおいて、HAスクリプトの処理の一部として、疑似的にHAイベントを発生させることで、1つのHAイベントに起因して複数のHAスクリプトを実行可能とした形態を説明するための図。
【図25】本発明の第8の実施形態に係る複合系計算機システムにおいて、アプリケーションの通常引き継ぎ要求(スイッチオーバ)を、アプリケーションの停止要求と、開始要求の各々の疑似HAイベントとして発生させる場合の形態を説明するための図。
【図26】本発明の第9の実施形態に係る複合系計算機システムにおいて、エラーリカバリ用のHAスクリプトからも疑似HAイベントを発生させることで、エラーリカバリに失敗した場合のエラーリカバリを可能とする形態を説明するための状態遷移図の一部を示す図。
【図27】本発明の第9の実施形態に係る複合系計算機システムにおいて、エラーリカバリ用のHAスクリプトからも疑似HAイベントを発生させることで、エラーリカバリに失敗した場合のエラーリカバリを可能とする形態を説明するための状態遷移図の残りを示す図。
【図28】本発明の第10の実施形態に係る複合系計算機システムで適用される、HAイベントの無限ループを検出する機能を持つHAシナリオコンパイラのブロック構成図。
【図29】図28の構成のHAシナリオコンパイラの主要な動作を説明するためのフローチャート。
【図30】本発明の第11の実施形態に係る複合系計算機システムで適用される、HAシナリオの記述内容の誤りを検出する機能を持つHAシナリオコンパイラのブロック構成図。
【図31】図30の構成のHAシナリオコンパイラの主要な動作を説明するためのフローチャート。
【図32】本発明の第12の実施形態に係る複合系計算機システムで適用される、HAシナリオの正当性をHA状態テーブルを利用して検査する機能を持つHAシナリオコンパイラのブロック構成図。
【図33】図32の構成のHAシナリオコンパイラの主要な動作を説明するためのフローチャート。
【図34】図33中のステップS95の処理の詳細な手順を示すフローチャート。
【図35】本発明の第13の実施形態に係る複合系計算機システムで適用される、共有装置に対する操作の不整合性を検出する機能を持つHAシナリオコンパイラのブロック構成図。
【図36】同実施形態における共有装置操作記述の一例を示す図。
【図37】本発明の第14の実施形態に係る複合系計算機システムで適用される、HAシナリオコンパイラ内の展開部に追加された複数の要素を示す図。
【図38】ループ文で書かれた記述の一例を示す図。
【図39】本発明の第15の実施形態に係る複合系計算機システムのブロック構成図。
【符号の説明】
100A,100B,700A〜700D,900A〜900C,1000A〜1000D,1800A〜1800D,2200A〜2200D,2500A,2500B,2600A〜2600D,3900,3910A〜3910C…計算機、
101,3920…LAN、
110,3902…HAシナリオ、
120,130A,130B…HAスクリプト集合(処理スクリプト集合)、
140,3901…HAシナリオコンパイラ、
150…HAスクリプト配布機構、
160A,160B,960〜960C,1810,2210…HAスクリプト実行機構、
902,2001,2002…HAグループ、
1820…HA状態テーブル(状態記憶手段)、
2801,3001,3201,3501…構文解析部、
2802,3002,3202,3502…展開部、
2805…ループ判定部(無限ループ検出手段、意味確認手段)、
3005…引数判定部(記述値不適合検出手段、正誤検出手段)、
3204…同一操作判定部(状態記憶手段内容不一致検出手段、意味確認手段)、
3205…インタロック判定部(インタロック検出手段、意味確認手段)、
3504…共有装置操作整合性判定部(共有装置操作不整合性検出手段、意味確認手段)、
3701…第1変数−定数置換部、
3702…第2変数−定数置換部、
3703…定数伝播部、
3903…設定ファイル、
3904…HAスクリプト(処理スクリプト)、
3905…配布スクリプト、
3906…チェックスクリプト、
3907…チェックシート、
3911…登録ディレクトリ、
3912…実使用ディレクトリ。

Claims (4)

  1. 複数の計算機で構成される複合系計算機システムにおいて、
    前記複合系計算機システムの構成及び前記計算機で発生する各種イベントに対するシステムの動作を記述したプログラムであるシナリオを、前記各計算機毎の別々の処理に分解し、前記シナリオから前記各計算機で直接実行可能な形式のコマンド列である処理スクリプトに生成する、前記複数の計算機のうちのいずれか1つの計算機に設けられたシナリオコンパイル手段と、
    前記シナリオコンパイル手段により生成された各計算機別の前記各処理スクリプトを対応する前記各計算機の記憶領域に配布する、前記1つの計算機に設けられたスクリプト配布手段と、
    前記各計算機に設けられ、1つのイベントが発生したときに、その計算機に配布されている前記各処理スクリプトのうち、当該イベントに対応する処理スクリプトを実行するスクリプト実行手段であって、前記処理スクリプトの実行の許可または禁止について、前記各計算機毎に別々に、初期状態での設定及びイベント発生時での再設定を可能とすることで、前記シナリオの動作する計算機群である特定グループをイベント発生時に自動的に変化せ、且つ複数の前記イベントに対する処理スクリプトの実行順序が前記特定グループ内で全て同一となり、1つの前記イベントに対する処理スクリプトの実行が前記特定グループ内で全て終了するまで次の処理スクリプトの実行の開始を待つことを保証するように構成されたスクリプト実行手段とを具備し、
    前記スクリプト実行手段は、
    イベントの入力時には、そのイベントを自系の候補イベントとして取得すると共に当該候補イベントを前記特定グループ内の他の計算機に通知し、
    前記特定グループ内の他の計算機からの前記候補イベントの通知時には、自系の候補イベントが存在しないならば、その通知された候補イベントを通知元計算機及び自系の候補イベントとしてそれぞれ取得すると共に、その自系の候補イベントを前記特定グループ内の他の計算機に通知し、自系の候補イベントが存在するならば、その通知された候補イベントを通知元計算機の候補イベントとして取得し、
    前記特定グループ内の全ての計算機の候補イベントを取得した際に、当該候補イベントが全て同一であるならば、自系における候補イベントの確定状態を確定成功として対応する処理スクリプトを実行し、その実行の後に次のイベントの入力を要求し、そうでないならば、自系における候補イベントの確定状態を確定失敗として、自系の候補イベントを破棄して対応する処理スクリプトの実行を抑止し、次のイベントの入力を要求する
    ことを特徴とする複合系計算機システム。
  2. 前記スクリプト実行手段は、
    前記特定グループの計算機の障害が検出された場合には、前記特定グループ内の当該障害が検出された計算機以外の全ての計算機の候補イベントを取得した際に、当該候補イベントが全て同一であるならば、自系における候補イベントの確定状態を確定保留として、その確定状態を前記特定グループ内の他の計算機に通知すると共に、前記特定グループ内の他の計算機から通知される前記確定状態を取得し、
    前記特定グループ内の当該障害が検出された計算機以外の全ての計算機の前記確定状態を取得した際に、当該確定状態が全て確定保留または確定成功であるならば、自系における候補イベントの確定状態を確定成功として対応する処理スクリプトを実行し、その実行の後に次のイベントの入力を要求し、そうでないならば、自系における候補イベントの確定状態を確定失敗として、自系の候補イベントを破棄して対応する処理スクリプトの実行を抑止し、次のイベントの入力を要求する
    ことを特徴とする請求項1記載の複合系計算機システム。
  3. 前記スクリプト実行手段は、
    前記特定グループの計算機構成を記憶する特定グループ構成記憶手段を備えており、
    前記候補イベントが計算機の組み込み要求のイベントである場合、前記自系における候補イベントの確定状態を確定成功とした際に、前記組み込み要求イベントで要求された計算機が前記特定グループに組み込まれるように前記特定グループ構成記憶手段の内容を変更し、その内容を前記要求された計算機に通知する
    ことを特徴とする請求項2記載の複合系計算機システム。
  4. 前記スクリプト実行手段は、
    前記特定グループの計算機構成を記憶する特定グループ構成記憶手段を備えており、
    前記候補イベントが計算機の切り離し要求のイベントである場合、前記自系における候補イベントの確定状態を確定成功とした際に、前記組み込み要求イベントで要求された計算機が前記特定グループから切り離されるように前記特定グループ構成記憶手段の内容を変更する
    ことを特徴とする請求項2記載の複合系計算機システム。
JP26449596A 1996-10-04 1996-10-04 複合系計算機システム Expired - Fee Related JP3788832B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP26449596A JP3788832B2 (ja) 1996-10-04 1996-10-04 複合系計算機システム
KR1019970048432A KR100326100B1 (ko) 1996-10-04 1997-09-24 복합계계산기시스템
US08/943,764 US6073126A (en) 1996-10-04 1997-10-03 Multi-computer system capable of abstractly and integrally describing system configuration and control contents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26449596A JP3788832B2 (ja) 1996-10-04 1996-10-04 複合系計算機システム

Publications (2)

Publication Number Publication Date
JPH10111859A JPH10111859A (ja) 1998-04-28
JP3788832B2 true JP3788832B2 (ja) 2006-06-21

Family

ID=17404040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26449596A Expired - Fee Related JP3788832B2 (ja) 1996-10-04 1996-10-04 複合系計算機システム

Country Status (3)

Country Link
US (1) US6073126A (ja)
JP (1) JP3788832B2 (ja)
KR (1) KR100326100B1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6144954A (en) * 1998-01-27 2000-11-07 Li; Chou H. Automatic development of computer software
JP2000305796A (ja) * 1999-04-22 2000-11-02 Hitachi Ltd 電子計算機間のジョブ転送方法およびジョブ転送システム
JP3831154B2 (ja) 1999-08-13 2006-10-11 株式会社東芝 プログラム多重化拡大方法
US20020198996A1 (en) * 2000-03-16 2002-12-26 Padmanabhan Sreenivasan Flexible failover policies in high availability computing systems
US7827136B1 (en) * 2001-09-20 2010-11-02 Emc Corporation Management for replication of data stored in a data storage environment including a system and method for failover protection of software agents operating in the environment
US7159036B2 (en) * 2001-12-10 2007-01-02 Mcafee, Inc. Updating data from a source computer to groups of destination computers
US7979460B2 (en) 2006-02-15 2011-07-12 Sony Computer Entainment America Inc. Systems and methods for server management
US9489418B2 (en) 2007-04-27 2016-11-08 International Business Machines Corporation Processing database queries embedded in application source code from within integrated development environment tool
US9047337B2 (en) * 2007-04-27 2015-06-02 International Business Machines Corporation Database connectivity and database model integration within integrated development environment tool
JP5625243B2 (ja) * 2009-02-26 2014-11-19 日本電気株式会社 情報処理システム、ディザスタリカバリ方法及びディザスタリカバリプログラム
JP5560113B2 (ja) * 2010-06-25 2014-07-23 株式会社日立製作所 計算機システム及び計算機の管理方法
JP6481515B2 (ja) * 2015-05-29 2019-03-13 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイラプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837735A (en) * 1987-06-09 1989-06-06 Martin Marietta Energy Systems, Inc. Parallel machine architecture for production rule systems
JPS647232A (en) * 1987-06-30 1989-01-11 Toshiba Corp Inference processor
US5339392A (en) * 1989-07-27 1994-08-16 Risberg Jeffrey S Apparatus and method for creation of a user definable video displayed document showing changes in real time data
US5283856A (en) * 1991-10-04 1994-02-01 Beyond, Inc. Event-driven rule-based messaging system
US5428525A (en) * 1992-07-01 1995-06-27 Cappelaere; Patrice G. Computer system and method for signal control prioritizing and scheduling
JP2950053B2 (ja) * 1992-10-21 1999-09-20 日本電気株式会社 電子計算機の監視方式
US5500802A (en) * 1994-05-31 1996-03-19 Morris; James M. System and method for creating configurators using templates
JPH08249201A (ja) * 1995-03-15 1996-09-27 Mitsubishi Electric Corp データ処理装置
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
JPH11143701A (ja) * 1997-11-10 1999-05-28 Toshiba Corp 高可用性システムの設計支援機能を有する計算機システム
JPH11238044A (ja) * 1998-02-23 1999-08-31 Toshiba Corp 計算機
JP2000353087A (ja) * 1999-06-10 2000-12-19 Toshiba Corp 高可用性システムの動作シナリオ開発環境を有する計算機システム
JP2002373156A (ja) * 2001-06-14 2002-12-26 Toshiba Corp クラスタ制御システム及びクラスタ制御システムにおけるシナリオ実行方法

Also Published As

Publication number Publication date
US6073126A (en) 2000-06-06
JPH10111859A (ja) 1998-04-28
KR100326100B1 (ko) 2002-06-26
KR19980032397A (ko) 1998-07-25

Similar Documents

Publication Publication Date Title
US5968185A (en) Transparent fault tolerant computer system
JP3329841B2 (ja) ネットワークシステム及びそのソフトウエア管理方法
US7958210B2 (en) Update management method and update management unit
US6907547B2 (en) Test tool and methods for testing a computer function employing a multi-system testcase
JP4544651B2 (ja) フォールト回復/フォールト許容計算
US8413133B2 (en) Software update management apparatus and software update management method
US7516361B2 (en) Method for automatic checkpoint of system and application software
JP3788832B2 (ja) 複合系計算機システム
US8886995B1 (en) Fault tolerant state machine for configuring software in a digital computer
WO1997022930A9 (en) Transparent fault tolerant computer system
US8024537B2 (en) Storage system, remote copy and management method therefor
US8255649B2 (en) Remote copy control method and system in storage cluster environment
JP3748339B2 (ja) 複数のデータストアの同期をとってデータ整合性を達成する方法
JP5521595B2 (ja) ストレージシステム及びストレージ制御方法
JP3901060B2 (ja) アプリケーションの更新処理方法、更新処理システム及び更新処理プログラム
JP3809915B2 (ja) 入出力構成変更装置
US20080222374A1 (en) Computer system, management computer, storage system and volume management method
JP2850756B2 (ja) 分散処理システムにおけるファイルの障害復旧方式
JP2024110768A (ja) 情報処理プログラム、情報処理装置および情報処理方法
JP2007257447A (ja) 装置の二重化仮運用方法及び二重化システム
JP2020149573A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法、及び、ストレージ制御プログラム
JP2011215760A (ja) 計算機システム、及び、モジュール実行方法
AU7167300A (en) Fault handling/fault tolerant computing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051107

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: 20060322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060324

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090407

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100407

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100407

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110407

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees