| 【発明の名称】 |
分散コンピュータシステム及び同システムにおけるコンピュータ状態の多重化記憶方法 |
| 【発明者】 |
【氏名】遠藤 浩太郎
|
| 【要約】 |
【課題】コンピュータ組み込み時や、立ち上げ時のコンピュータ状態のコピーを不要とする【解決手段】n台(nは例えば4)のコンピュータコンピュータ10-1〜10-n(10-4)を備え、当該n台のコンピュータ上での決定性のプログラム17の実行を整列マルチキャスト機構16により多重化する分散コンピュータシステムにおいて、コンピュータの状態を表す複数の状態変数の値を各コンピュータの磁気ディスク装置11内に割り当てた状態データ記憶部12に保存し、プログラム17からの状態読み出し要求時には、n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)からそのコンピュータの磁気ディスク装置11内の状態データ記憶部12に保存されている要求された状態変数の値を読み出し、そのうちの最も多い値を、状態読み出し要求に対する最終的な読み出し値とする。
【解決手段】n台(nは例えば4)のコンピュータコンピュータ10-1〜10-n(10-4)を備え、当該n台のコンピュータ上での決定性のプログラム17の実行を整列マルチキャスト機構16により多重化する分散コンピュータシステムにおいて、コンピュータの状態を表す複数の状態変数の値を各コンピュータの磁気ディスク装置11内に割り当てた状態データ記憶部12に保存し、プログラム17からの状態読み出し要求時には、n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)からそのコンピュータの磁気ディスク装置11内の状態データ記憶部12に保存されている要求された状態変数の値を読み出し、そのうちの最も多い値を、状態読み出し要求に対する最終的な読み出し値とする。 |
【特許請求の範囲】
【請求項1】 n台のコンピュータを備え、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムにおいて、前記各コンピュータは、コンピュータの状態を表す複数の状態変数を保存するための状態データ記憶部が割り当てられた不揮発性の記憶装置と、前記プログラムからの状態読み出し要求に応じて、前記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの前記状態データ記憶部に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、前記状態読み出し要求に対する最終的な読み出し値と決定する読み出し多数決手段とを具備することを特徴とする分散コンピュータシステム。 【請求項2】 n台のコンピュータを備え、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムにおいて、前記各コンピュータは、コンピュータの状態を表す複数の状態変数のうち、アクセス頻度が高い方から一定数の状態変数を保持するための第1の状態データ記憶部が割り当てられた揮発性の記憶装置と、前記第1の状態データ記憶部に保持される状態変数よりアクセス頻度が低い状態変数を保存するための第2の状態データ記憶部が割り当てられた不揮発性の記憶装置と、前記プログラムから状態読み出しが要求され、且つ要求された状態変数が前記第2の状態データ記憶部に保存されている場合、前記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの前記第2の状態データ記憶部に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、前記状態読み出し要求に対する最終的な読み出し値と決定する読み出し多数決手段とを具備することを特徴とする分散コンピュータシステム。 【請求項3】 n台のコンピュータを備え、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムにおいて、前記各コンピュータは、コンピュータの状態を表す複数の状態変数を保存するための状態データ記憶部が割り当てられた不揮発性の記憶装置と、前記状態データ記憶部の一部の写しを保持するための状態データキャッシュメモリと、前記プログラムから状態読み出しが要求され、且つ要求された状態変数が前記状態データキャッシュメモリに存在しない場合、前記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの前記状態データ記憶部に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、前記状態読み出し要求に対する最終的な読み出し値と決定する読み出し多数決手段とを具備することを特徴とする分散コンピュータシステム。 【請求項4】 前記各コンピュータは、前記読み出し多数決手段により決定された最終的な読み出し値と、自コンピュータの前記不揮発性記憶装置内の前記状態データ記憶部に保存されている前記要求された状態変数の値とを比較し、値が異なっている場合には、当該状態データ記憶部内の状態変数の値を前記最終的な読み出し値に書き換える書き換え手段を更に具備することを特徴とする請求項1乃至請求項3のいずれかに記載の分散コンピュータシステム。 【請求項5】 前記各コンピュータは、前記プログラムからの状態書き込み要求に応じて、要求された状態変数の値を自コンピュータの前記不揮発性記憶装置内の前記状態データ記憶部に書き込んだ場合、前記n台のコンピュータのうちのn−f台のコンピュータで自コンピュータと同一の書き込みが行われるのを待って前記要求された書き込み処理を完了する書き込み待ち合わせ手段を更に具備することを特徴とする請求項1乃至請求項3のいずれかに記載の分散コンピュータシステム。 【請求項6】 不揮発性の記憶装置を有するn台のコンピュータから構成され、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムにおけるコンピュータ状態の多重化記憶方法であって、コンピュータの状態を表す複数の状態変数の値を前記各コンピュータの前記不揮発性記憶装置に保存し、前記プログラムからの状態読み出し要求時には、前記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの前記不揮発性記憶装置に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、前記状態読み出し要求に対する最終的な読み出し値と決定することを特徴とするコンピュータ状態の多重化記憶方法。 【請求項7】 前記決定された最終的な読み出し値と、前記不揮発性記憶装置に保存されている前記要求された状態変数の値とを比較し、値が異なっている場合には、当該不揮発性記憶装置内の状態変数の値を前記最終的な読み出し値に書き換えることを特徴とする請求項6記載のコンピュータ状態の多重化記憶方法。 【請求項8】 前記プログラムからの状態書き込み要求に応じて、要求された状態変数の値を前記不揮発性記憶装置に書き込んだ場合、前記n台のコンピュータのうちのn−f台のコンピュータで自コンピュータと同一の書き込みが行われるのを待って前記要求された書き込み処理を完了することを特徴とする請求項6記載のコンピュータ状態の多重化記憶方法。 【請求項9】 不揮発性の記憶装置を有するn台のコンピュータから構成され、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムに適用される、コンピュータ状態の多重化記憶プログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、前記コンピュータに、コンピュータの状態を表す複数の状態変数の値を前記不揮発性記憶装置に保存する機能と、前記プログラムからの状態読み出し要求時には、前記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの前記不揮発性記憶装置に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、前記状態読み出し要求に対する最終的な読み出し値と決定する機能とを実現させるためのコンピュータ状態の多重化記憶プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、4台以上のコンピュータが結合した分散コンピュータシステムに係り、特に決定性(deterministic)のプログラムの実行を整列マルチキャスト機構を用いて多重化する分散コンピュータシステム及び同システムにおけるコンピュータ状態の多重化記憶方法に関する。 【0002】 【従来の技術】複数のコンピュータがネットワーク等により接続された分散コンピュータシステムとして、各コンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化することで、各コンピュータの状態を同一に保ち、出力列も同一とするように構成された分散コンピュータシステムが知られている。以下、この種の分散コンピュータシステムで適用される、決定性のプログラム、整列マルチキャスト機構及び多重化の意義について説明する。 【0003】決定性のプログラムは次のように説明される。まず、プログラムの実行は、コンピュータに入力が与えられると、そのときのコンピュータの状態によって、出力と、次の状態を求めるものであると考えることができる。そして、決定性のプログラムは、実行時に、出力と、次の状態が一意的に決まるプログラムとして定義される。決定性のプログラムは具体的には、不定値や乱数の参照がないプログラムのことをいう。 【0004】決定性のプログラムの特徴は、初期状態と入力列が決まれば、その動作が一意的であることにある。以下の説明では、プログラムと称するとき、決定性のプログラムのことを指す。 【0005】また、整列マルチキャスト機構は、次のように説明される。まず、複数のコンピュータが結合した分散コンピュータシステムのような環境では、それぞれのコンピュータが独立して動作する。したがって、これらのコンピュータを同期的に動作させる場合には、特別な仕組みが必要である。整列マルチキャスト機構は、分散システムへの入力を全てのコンピュータに配送する仕組みであり、データの到着順序が、全てのコンピュータで同じであることを保証する。 【0006】更に、多重化は、次のように説明される。まず、分散コンピュータシステムでは、それぞれのコンピュータが独立に故障する可能性がある。仮に、1つのコンピュータが故障しただけでシステム全体が機能しない場合は、分散コンピュータシステムの稼働率は1台のコンピュータの稼働率よりも低くなってしまう。 【0007】かかる事態を防止するために、システム全体に係わる処理は多重化することが必要である。逆に、多重化することによって、分散システムの稼働率を1台のコンピュータの稼働率よりも高くすること可能とある。 【0008】例えば、稼働率99%のコンピュータ10台で構成する分散コンピュータシステムが全く多重化されていないとすると、その分散コンピュータシステムの稼働率は90%程度である。もし、それが、多重化によって、3台の故障まで耐え得るとすると、稼働率は、99.9998%程度となる。 【0009】次に、整列マルチキャスト機構を用いた決定性のプログラムの実行の多重化方法について説明する。ここでは、4台のコンピュータを有する分散コンピュータシステムにおいて、プログラムの実行を整列マルチキャスト機構を用いて多重化する例を挙げる。 【0010】まず、システム内の全てのコンピュータは、同一の初期状態から始まる。入力されるデータは、必ず整列マルチキャスト機構を通して、全てのコンピュータに入力順に配送され、つまり整列マルチキャストされて、各コンピュータ上のそれぞれのプログラムが当該データに基づき動作する。 【0011】このシステムでは、各コンピュータの出力のうち、いずれか1台のコンピュータの出力が、システムの出力とされる。 【0012】各プログラムへの入力列は、整列マルチキャスト機構により同一順序となっている。したがって、決定性のプログラムの特徴により、全てのコンピュータの状態が同一に保たれ、出力列も全て同じとなる。つまり、プログラムの実行が多重化される。 【0013】上記の整列マルチキャスト機構による多重化の説明では、システム内の全てのコンピュータが初めから稼働していることを前提とした。しかし、実際には途中から多重化を始めなければならない場合もある。例えば、故障していたコンピュータが復旧した場合である。この場合には、整列マルチキャスト機構による多重化の拡大が必要である。 【0014】かかる整列マルチキャスト機構による多重化の拡大について説明する。まず第1のステップとして、整列マルチキャスト機構による整列マルチキャストを一時停止する。次に第2のステップ2として、故障から復旧してシステムに組み込まれるコンピュータに、現在稼働中のいずれかのコンピュータからコンピュータ状態をコピーする。最後に第3のステップ3として、整列マルチキャストを再開する。 【0015】この方式では、整列マルチキャストを一時停止することにより、コンピュータ状態が変化しないようにした上で、当該コンピュータ状態をコピーしている。このため、整列マルチキャストを再開したときに、全てのコンピュータが同一の動作を始めることができる。つまり、状態をコピーしている間は、プログラムの実行が一時的に停止される。 【0016】また、上記の整列マルチキャスト機構による多重化の説明では、システム内の全てのコンピュータが同一の初期状態から始まることを前提とした。しかし、ディスク装置などの不揮発性の記憶装置に、前回のプログラムの実行の状態を保存することで、立ち上げ時にその続きを行いたい場合がある。この場合には、立ち上げ時に、全てのコンピュータに保存されているデータが同一であるとは限らなくなる。 【0017】従来の分散コンピュータシステムでは、このデータを一致化するため、システム内で最後まで動作していたコンピュータに保存されている最新の状態を、他のコンピュータにコピーしてから多重化を開始していた。 【0018】 【発明が解決しようとする課題】このように、従来の分散コンピュータシステムにおいて適用されている整列マルチキャストを用いたコンピュータ状態の多重化記憶方法では、通常時はコンピュータ状態のコピーを必要としないものの、システムへのコンピュータの組み込み時や立ち上げ時にはコンピュータ状態のコピーが必要となる場合があった。特に、ディスク装置などの大容量不揮発性記憶装置に保存された状態データの場合には、そのコピーには長時間を必要とするため、実用上問題となる虞があった。 【0019】本発明は上記事情を考慮してなされたものでその目的は、コンピュータ組み込み時や、立ち上げ時のコンピュータ状態のコピーを不要とすることができる分散コンピュータシステム及び同システムにおけるコンピュータ状態の多重化記憶方法を提供することにある。 【0020】 【課題を解決するための手段】本発明は、n台のコンピュータを備え、当該n台のコンピュータ上での決定性のプログラムの実行を整列マルチキャスト機構により多重化する分散コンピュータシステムにおいて、上記各コンピュータに、コンピュータの状態を表す複数の状態変数を保存するための状態データ記憶部が割り当てられた不揮発性の記憶装置と、上記プログラムからの状態読み出し要求に応じて、上記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの上記状態データ記憶部に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、上記状態読み出し要求に対する最終的な読み出し値と決定する読み出し多数決手段とを設けたことを特徴とする。 【0021】本発明によれば、分散コンピュータシステム内の各コンピュータにおいて、プログラムからの状態読み出し要求に対して、n−f台のコンピュータからの読み出しは必要となるものの、コンピュータ組み込み時や立ち上げ時のコピーを不要とすることができる。 【0022】ここで、揮発性の記憶装置に状態データ記憶部を割り当てて、コンピュータの状態を表す複数の状態変数のうち、アクセス頻度が高い方から一定数の状態変数を当該揮発性記憶装置内の状態記憶部に保持し、残りを上記不揮発性記憶装置内の状態記憶部に保存する構成とするならば、読み出し量を減らして最適な性能を得ることができる。 【0023】また、上記不揮発性記憶装置内の状態記憶部の一部の写しを保持するキャッシュメモリ(状態データキャッシュメモリ)が追加された構成としても、読み出し量を減らして最適な性能を得ることができる。 【0024】また上記各コンピュータに、次の書き換え手段、即ち上記読み出し多数決手段により決定された最終的な読み出し値と、自コンピュータの不揮発性記憶装置内の状態データ記憶部に保存されている上記要求された状態変数の値とが異なっている場合に、当該状態データ記憶部内の状態変数の値を上記最終的な読み出し値に書き換える書き換え手段を追加するならば、n−f台のコンピュータのうちの多数を占めるn−2f台で、常に最新の値データを保持することができる。この理由については、説明の重複を避けるため、発明の実施の形態の欄で述べる。 【0025】また上記各コンピュータに、次の書き込み待ち合わせ手段、即ちプログラムからの状態書き込み要求に応じて、要求された状態変数の値を自コンピュータの上記不揮発性記憶装置内の状態データ記憶部に書き込んだ場合に、上記n台のコンピュータのうちのn−f台のコンピュータで自コンピュータと同一の書き込みが行われるのを待って上記要求された書き込み処理を完了する書き込み待ち合わせ手段を持たせるとよい。 【0026】また上記書き換え手段が追加されたn台のコンピュータのうち最大でf台のコンピュータで故障が発生した場合、そのコンピュータの不揮発性記憶装置のデータが消失している場合を考慮して、その故障したf台のコンピュータを停止させた状態で、稼働中の少なくともn−f台のコンピュータにおいて、上記プログラムの実行と並行して、不揮発性記憶装置内の状態データ記憶部からの全状態変数の読み出しが行われる構成とするとよい。 【0027】このような構成においては、読み出し多数決手段と書き換え手段の動作とにより、少なくともn−f台のコンピュータに最新のコンピュータの状態を保持させることができる。したがって、この段階で故障から復旧したコンピュータをシステムに組み込んでも、状態のコピーは必要ない。 【0028】なお、以上に述べた装置(分散コンピュータシステム)に係る本発明は方法(コンピュータ状態の多重化記憶方法)に係る発明としても成立する。また、以上に述べた装置に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(或いはコンピュータを当該発明に相当する手段として機能させるための、或いはコンピュータに当該発明に相当する機能を実現させるための)プログラム(コンピュータ状態の多重化記憶プログラム)を記憶したコンピュータ読み取り可能な記憶媒体としても成立する。 【0029】 【発明の実施の形態】以下、本発明の実施の形態につき図面を参照して説明する。 【0030】[第1の実施形態]図1は本発明の第1の実施形態に係る分散コンピュータシステムの構成を示すブロック図である。図1の分散コンピュータシステムは、n台(ここではn=4)のコンピュータ#1〜#N、即ちコンピュータ10-1〜10-n(10-4)と、これらの各コンピュータを結合するネットワーク20とから構成されている。 【0031】各コンピュータ(#i)10-i(i=1〜n)は、不揮発性記憶装置としての磁気ディスク装置11を備えている。この磁気ディスク装置11には、コンピュータの状態を保存するための状態データ記憶部12が割り当てられている。コンピュータの状態は、複数の状態変数の値データによって構成されると考えることができる。したがって状態データ記憶部12には、コンピュータの状態として、それぞれの状態変数の値データが記憶される。 【0032】各コンピュータ10-i(#i)はまた、整列マルチキャスト用単位モジュール13、読み出し多数決部14及び書き込み待ち合わせ部15を備えている。整列マルチキャスト用単位モジュール13、読み出し多数決部14及び書き込み待ち合わせ部15は、オペレーティングシステム(OS)とアプリケーション(アプリケーションプログラム)との間に位置するソフトウェア、即ちミドルウェアにより実現される。 【0033】各コンピュータ10-iの整列マルチキャスト用単位モジュール13は、互いに連携して動作することで、整列マルチキャスト機構16を実現する。この整列マルチキャスト機構16により、各コンピュータ10-i上のプログラム(決定性のプログラム)17の実行が多重化される。 【0034】読み出し多数決部14は、当該読み出し多数決部14が置かれているコンピュータ10-i上のプログラム17が磁気ディスク装置11内の状態データ記憶部12から状態変数を読み出すときに動作して、図1の分散コンピュータシステムを構成するn台のコンピュータのうちのn−f台のコンピュータから同じ種類の状態変数の値を読み出し、最も多い値を最終的な読み出し値としてプログラム17に渡す。ここで、fは3f<nとなる最大の整数である。例えば、図1のシステムのようにn=4であるならば、f=1である。また、n=10ならばf=3である。 【0035】書き込み待ち合わせ部15は、当該書き込み待ち合わせ部15が置かれているコンピュータ10-i上のプログラム17が磁気ディスク装置11内の状態データ記憶部12に状態変数を書き込むときに動作して、図1の分散コンピュータシステムを構成するn台のコンピュータのうちのn−f台のコンピュータで自コンピュータと同一の書き込みが行われるのを待って状態変化数の書き込み処理を完了する。 【0036】さて本実施形態では、分散コンピュータシステムを構成するコンピュータの台数がn台の場合、f台までの故障停止が許容されるものとする。つまり、整列マルチキャスト機構16により多重化されるプログラム17は、少なくともn−f台のコンピュータ上で実行される。また、f+1台以上の故障停止が発生した場合には、多重化されたプログラムの実行は継続しない(いわゆるフェイルストップとする)ものとする。この前提はシステムの稼働率に制限を設けるものであるが、n=10の場合を例にとると、従来の技術の欄で述べた稼働率の計算から明らかなように、実用上全く問題ないといえる。 【0037】ここで、各コンピュータ10-i(i=1〜n)の読み出し多数決部14の動作について、図2のフローチャートを参照して説明する。まず、コンピュータ10-i上のプログラム17から状態変数の読み出しが要求されると、読み出し多数決部14は当該読み出し要求を受け付ける(ステップS1)。この場合、読み出し多数決部14は、以下に述べる読み出し要求に対して応答を返したコンピュータ#j(jは1〜Nのいずれか)の数をカウントするための変数countと、各コンピュータ#1〜#Nからの読み出しデータを保持するデータ領域data“1”〜data“N”とを0(null値)に初期化する(ステップS2)。変数countの領域とデータ領域data“1”〜data“N”とは、揮発性の記憶装置、例えば図示せぬ主記憶のワーク領域上に確保される。 【0038】次に読み出し多数決部14は、自コンピュータを含む各コンピュータ#1〜#Nに対し、上記プログラム17により要求された状態変化数の読み出し要求を発行する(ステップS3)。そして読み出し多数決部14は、読み出し要求に対する、コンピュータ#1〜#Nのうちのいずれかのコンピュータ#jからの応答を待つ(ステップS4)。 【0039】一方、各コンピュータ#1〜#Nは、コンピュータ#iの読み出し多数決部14からの読み出し要求に応じて、自コンピュータの磁気ディスク装置11内の状態データ記憶部12に保存されている状態変数のうち、要求された状態変数の値データを読み出して要求元に返す。 【0040】読み出し多数決部14は、自身の発行した読み出し要求に対してコンピュータ#1〜#Nのうちのいずれかのコンピュータ#jから応答が返されると、当該コンピュータ#jから返された読み出しデータをデータ領域data“j”に設定すると共に、変数countを1だけインクリメントする(ステップS5)。 【0041】読み出し多数決部14は以上のステップS4,S5の処理を、変数countの値がn−f以上となるまで繰り返す(ステップS6)。そして変数countの値がn−f以上となると、即ち任意の合計n−f台のコンピュータから当該コンピュータの状態データ記憶部12に保存されている(プログラム17から)要求された状態変数の値データを受け取ると、データ領域data“1”〜data“N”に設定されているデータのうちのnull値でないもので、最も多い値のデータを正しい読み出しデータと決定する(ステップS7)。ここで、ステップS4,S5の処理の繰り返し回数をn−f以上としたのは、本実施形態の前提により、n台のコンピュータのうち少なくともn−f台のコンピュータが動作していることによる。 【0042】次に、各コンピュータ10-i(i=1〜n)の書き込み待ち合わせ部15の動作について、図3のフローチャートを参照して説明する。まず、コンピュータ10-i上のプログラム17から状態変数の書き込みが要求されると、書き込み待ち合わせ部15は当該書き込み要求を受け付けて(ステップS11)、要求された状態変数の値データを自コンピュータの状態データ記憶部12に書き込む(ステップS12)。 【0043】次に書き込み待ち合わせ部15は、書き込み完了を示す完了可フラグをセットし(ステップS13)、以下に述べる書き込み待ち合わせ要求に対して応答を返したコンピュータ#j(jは1〜Nのいずれか)の数をカウントするための変数countを0に初期化する(ステップS14)。 【0044】次に書き込み待ち合わせ部15は、各コンピュータ#1〜#Nに対し、上記プログラム17により要求された状態変数の書き込み待ち合わせ要求を発行する(ステップS15)。そして書き込み待ち合わせ部154は、書き込み待ち合わせ要求に対する、コンピュータ#1〜#Nのうちのいずれかのコンピュータ#jからの応答を待つ(ステップS16)。 【0045】以上の動作は、(稼働状態にある)各コンピュータ10-iの書き込み待ち合わせ部15で行われる。 【0046】さて、各コンピュータ#1〜#Nの応答プロセスは、他のコンピュータの書き込み待ち合わせ部15から書き込み待ち合わせが要求されると、自コンピュータの完了可フラグがセットされているか否か、即ち書き込み待ち合わせの要求元での書き込みと同一の状態変数の書き込みが終了しているか否かを判定する(ステップS19)。もし、完了可フラグがセットされているならば、書き込み待ち合わせ要求元に応答を返して、当該フラグをリセットする(ステップS20,S21)。これに対し、完了可フラグがセットされていないならば、コンピュータ#1〜#Nの応答プロセスは待ち(WAIT)状態となる(ステップS22)。この待ち状態は、自コンピュータでの書き込みが完了して完了可フラグがセットされると(ステップS12,S13)、書き込み待ち合わせ部15からの割り込み(“WAKE UP”割り込み)により解除される。この場合、ステップS19の判定が再び行われ、今度は完了可フラグはセットされていることから、書き込み待ち合わせ要求元に応答が返され、当該フラグがリセットされる(ステップS20,S21)。 【0047】書き込み待ち合わせ部15は、自身の発行した書き込み要求に対してコンピュータ#1〜#Nのうちのいずれかのコンピュータ#jから応答が返されると、変数countを1だけインクリメントする(ステップS17)。 【0048】書き込み待ち合わせ部15は以上のステップS16,S17の処理を、変数countの値がn−f以上となるまで繰り返す(ステップS18)。そして変数countの値がn−f以上となると、即ち任意の合計n−f台のコンピュータで、自身と同様の書き込みが行われるのを待ち合わせると、一連の状態変数の書き込み処理を完了する。ここで、ステップS16,S17の処理の繰り返し回数をn−f以上としたのは、先の読み出し多数決部14の動作でも述べたように、本実施形態の前提により少なくともn−f台のコンピュータが動作していることによる。 【0049】以上に述べた実施形態によれば、故障から復旧したコンピュータをシステムに組み込む多重化の拡大時、及びシステムの立ち上げ時も含めて、一切、コンピュータの状態(状態変数)のコピーを必要としないという格別な効果を得ることができる。以下に、その理由を説明する。 【0050】まず、上記の効果が得られることの正当性は、読み出し多数決部14が常に最新の状態を読み出すことを示せばよい。ここで、最新の状態とは、それぞれの状態変数に最も最近に書き込まれた値データということになる。 【0051】まず、状態データ記憶部12は磁気ディスク装置11(不揮発性の記憶装置)上に確保されているため、当該状態データ記憶部12に一度書き込まれたデータは消滅することはない。これは、コンピュータ10-iが一時的に停止し、再開した場合でも当てはまる。 【0052】そして、状態変数の書き込みは、書き込み待ち合わせ部15によって、少なくともn−f台のコンピュータの状態データ記憶部12に反映されていることが保証されている。 【0053】したがって、最新の値データは、(現時点で動作していないコンピュータが含まれるかもしれないが)少なくともn−f台のコンピュータの状態データ記憶部12に保存されていることになる。 【0054】一方、読み出し多数決部14は、n−f台のコンピュータの状態データ記憶部12から値データを読み出す。ここで値データが読み出されたn−f台のコンピュータは、最新の値データを保存するn−f台のコンピュータとは、異なるかもしれないが、それらのうち、少なくともn−2f台はオーバーラップする。この様子を図4に示す。 【0055】したがって、読み出し多数決部14は、少なくともn−2f個の最新の値データを取得していることになる。 【0056】実は、n−2f個はn−f個のうちの過半数を占めている。なぜなら、fの定義より3f<nなので、2(n−2f)−(n−f)=n−3f>0となるからである。 【0057】以上により、読み出し多数決部14がn−f台のコンピュータから読み出す同一状態変数のn−f個の値データのうち、少なくともn−2f個の値データは最新の値データであり、しかもn−f個のうちの多数(過半数)を占めることは明白である。よって読み出し多数決部14は、常に多数を占める最新の値データを取得する。 【0058】[第2の実施形態]前記した第1の実施形態に係る分散コンピュータシステムは、次の2つの理由により、通常時の性能が、従来のシステムより少し落ちる。 【0059】(1)コンピュータの状態を、ランダムアクセスメモリ(RAM)等の揮発性の記憶装置ではなくて、当該記憶装置に比べてアクセス性能が遅い磁気ディスク装置11(不揮発性の記憶装置)に保存している。 (2)コンピュータ状態(状態変数)の読み出しが、n−f台のコンピュータを対象に行われるため、従来に比べて読み出し量がn−f倍となる。 【0060】そこで、前記第1の実施形態の特徴を生かしながら、読み出し量を減らして最適な性能を得ることができるようにした本発明の第2の実施形態について、図面を参照して説明する。 【0061】図5は本発明の第2の実施形態に係る分散コンピュータシステムを構成するコンピュータ50-iのブロック構成を示す。なお、図1中の10-1〜10-n(10-4)と同一部分には同一符号を付してある。 【0062】図5のコンピュータ50-iが、図1中のコンピュータ10-1〜10-n(10-4)と異なる点は、例えば主記憶を構成するRAM等の揮発性メモリ51内に、磁気ディスク装置11内の状態データ記憶部12に相当する状態データ記憶部52を割り当てて、当該状態データ記憶部52に状態変数をアクセス頻度が高い方から一定数を格納し、残りのアクセス頻度が低い状態変数だけを磁気ディスク装置11内の状態データ記憶部12に保存する構成としたことである。ここで、状態データ記憶部52に格納されるアクセス頻度が高い状態変数は、状態データ記憶部12に保存されるアクセス頻度が低い状態変数より十分少ない数に設定されている。 【0063】この構成では、メモリ51内の状態データ記憶部52に格納されている状態変数、つまりアクセス頻度が高い状態変数については、システムへのコンピュータの組み込み時(多重化の拡大時)等において、従来と同様にコピーが必要となる。しかし、コピーが必要となる状態変数、即ちアクセス頻度が高い状態変数は、状態データ記憶部12に保存されるアクセス頻度が低い状態変数より十分に少ないため、全ての状態変数についてコピーが必要となる従来システムと比べて、コピーに要する時間が少なくて済む。 【0064】更に、n−f台のコンピュータからの読み出しが必要となる状態データ記憶部12内の状態変数については、数は多くてもアクセス頻度が低い。したがって、全ての状態変数についてn−f台のコンピュータからの読み出しが必要となる前記第1の実施形態に比べて、読み出し量が著しく減少する。 【0065】このように本実施形態においては、アクセス頻度が高い少数の状態変数を従来方式で処理し、残りのアクセス頻度の低い多数の状態変数を前記第1の実施形態で適用した方式で処理することにより、最適な性能を得ることができる。 【0066】[第3の実施形態]次に、本発明の第3の実施形態について、図面を参照して説明する。図6は本発明の第3の実施形態に係る分散コンピュータシステムを構成するコンピュータ60-iのブロック構成を示す。なお、図5のコンピュータ50-iと同一部分には同一符号を付してある。 【0067】図6のコンピュータ60-iが図5のコンピュータ50-iと異なる点は、磁気ディスク装置11内の状態データ記憶部12には、前記第1の実施形態(におけるコンピュータ10-1〜10-n)と同様に全ての状態変数を保存すると共に、当該状態データ記憶部12の一部の写しを保持するキャッシュメモリ(以下、状態データキャッシュと称する)62を、メモリ51内の状態データ記憶部52に代えて設けたことである。 【0068】この構成では、状態データ記憶部12の一部の写しである、状態データキャッシュ62に保持されている状態変数は、システムへのコンピュータの組み込み時(多重化の拡大時)等において、稼働中のコンピュータのいずれか1つのコンピュータからシステムに組み込むコンピュータ(の状態データキャッシュ62)へのコピーが必要となる。しかし、このコピーが必要となる状態変数は、全状態変数の一部であるため、全ての状態変数についてコピーが必要となる従来システムと比べて、コピーに要する時間が少なくて済む。 【0069】更に、自コンピュータのプログラム17から読み出しが要求され、且つ要求された状態変数が状態データキャッシュ62に存在するキャッシュヒット時には、前記第1の実施形態と異なってn−f台のコンピュータからの読み出しが不要となる。したがって、全ての状態変数についてn−f台のコンピュータからの読み出しが必要となる前記第1の実施形態に比べて、読み出し量が著しく減少する。 【0070】ここで、上記要求された状態変数が状態データキャッシュ62に存在しないキャッシュミスヒット時には、上記要求された状態変数が自コンピュータの磁気ディスク装置11の状態データ記憶部12から読み出されて、状態データキャッシュ62に保持される。また、状態データ記憶部12からの状態変数の読み出しが発生する場合、前記第1の実施形態と同様に読み出し多数決部14が動作して、システム内のn−f台のコンピュータから当該コンピュータの磁気ディスク装置11の状態データ記憶部12に保存されている上記要求された状態変数が読み出され、n−f個の状態変数の値のうち最も多い値が最終的な読み出し値と決定されてプログラム17に渡される。 【0071】このように本実施形態においては、磁気ディスク装置11内の状態データ記憶部12の一部の写しを保持する状態データキャッシュ62を設けて、当該状態データキャッシュ62に保持されている状態変数を従来方式で処理し、当該状態データキャッシュ62にミスヒットした場合の状態変数を前記第1の実施形態で適用した方式で処理することにより、最適な性能を得ることができる。本実施形態で適用した方式は、状態変数をアクセス頻度が高い状態変数と低い状態変数とに区分できない場合に適している。 【0072】[第4の実施形態]以上に述べた各実施形態では、磁気ディスク装置11に確保された状態データ記憶部12にデータが正しく保存されていることを前提としている。しかし、磁気ディスク装置11が故障して、状態データ記憶部12のデータが消えてしまう場合もあり得る。 【0073】そこで、n台のコンピュータのうち、最大でf台のコンピュータが故障し、しかも、これら故障したコンピュータ内の磁気ディスク装置11のデータが消えてしまった場合の復旧を可能とした本発明の第4の実施形態について、図面を参照して説明する。 【0074】図7は本発明の第4の実施形態に係る分散コンピュータシステムを構成するコンピュータ70-iのブロック構成を示す。なお、図1中の10-1〜10-n(10-4)と同一部分には同一符号を付してある。 【0075】図7のコンピュータ70-iが、図1中のコンピュータ10-1〜10-n(10-4)と異なる点は、読み出し多数決部14により決定された読み出しデータAと自コンピュータの状態データ記憶部12からの読み出しデータBとが異なる場合に、自コンピュータの状態データ記憶部12のデータBをデータAに書き換える書き換え部71を追加したことである。 【0076】次に、図7のコンピュータ70-iをn台、図1のシステムと同様にネットワーク等により結合して構成された分散コンピュータシステム(図示せず)における復旧動作について、図8のフローチャートを参照して説明する。 【0077】まず、n台のコンピュータ70-iのうち、最大でf台のコンピュータ70-iが故障し、そのうちの少なくとも一部のコンピュータ70-iの故障の要因が磁気ディスク装置11の故障にあり、データが消えてしまった磁気ディスク装置11も存在するものとする。この場合、まず故障したコンピュータ70-iを停止する(ステップS31)。 【0078】次に、動作している少なくともn−f台のコンピュータ70-iで、プログラム17の多重化実行の一環として、本来のプログラム17の実行と並行して、磁気ディスク装置11内の状態データ記憶部12からの全状態変数の読み出しを行う(ステップS32)。この動作は、読み出しなので、本来のプログラム17の実行には影響しない。 【0079】次に、故障から復旧してシステムに組み込まれるコンピュータ70-iに多重化を拡大する(ステップS33)。本実施形態では、この多重化の拡大において、つまりコンピュータ70-iの組み込み時において、状態のコピーは必要ない。その理由を以下に述べる。 【0080】まず、上記ステップS32を実行するコンピュータ70-iは、少なくともn−f台ある。また、この少なくともn−f台のコンピュータ70-iから読み出された全状態変数の値は最新のものであり、その値は、書き換え部71によって状態データ記憶部12に反映されていることが保証される。 【0081】したがって、ステップS32が完了した時点では、故障したコンピュータ以外のコンピュータのうち、少なくともn−f台のコンピュータで最新のコンピュータの状態が保持されていることになる。 【0082】このことは、n−f台のコンピュータで最新のデータを書き込んだのと同等とみなすことができ、結局、前記第1の実施形態と同様の場合に帰結される。 【0083】なお、上記書き換え部71をコンピュータ60-iに追加するには、当該書き換え部71に次の機能、即ち状態データ記憶部12のデータBをデータAに書き換える際に、状態データキャッシュ62のデータBもデータAに書き換える機能を持たせればよい。 【0084】以上に述べた第1乃至第4の実施形態に係る分散コンピュータを構成する各コンピュータとは、独立して動作する実行環境を指し、必ずしも物理的な計算機とは限らず、計算機以外にも、例えば仮想マシン(Virtual Machine:VM)、OS(オペレーティングシステム)上で動くプロセス(Process)なども含む。 【0085】なお、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。 【0086】 【発明の効果】以上詳述したように本発明によれば、コンピュータの状態を表す複数の状態変数の値を分散コンピュータシステムのn台のコンピュータの各不揮発性記憶装置にそれぞれ保存し、決定性のプログラムからの状態読み出し要求時には、上記n台のコンピュータのうちのn−f台(fは3f<nを満足する最大の整数)のコンピュータから当該コンピュータの不揮発性記憶装置に保存されている要求された状態変数の値を読み出し、n−f個の状態変数の値のうち最も多い値を、状態読み出し要求に対する最終的な読み出し値とするようにしたので、コンピュータ組み込み時や立ち上げ時のコピーを不要とすることができる。
|
| 【出願人】 |
【識別番号】000003078 【氏名又は名称】株式会社東芝
|
| 【出願日】 |
平成12年9月29日(2000.9.29) |
| 【代理人】 |
【識別番号】100058479 【弁理士】 【氏名又は名称】鈴江 武彦 (外6名)
|
| 【公開番号】 |
特開2002−108639(P2002−108639A) |
| 【公開日】 |
平成14年4月12日(2002.4.12) |
| 【出願番号】 |
特願2000−301474(P2000−301474) |
|