(57)【特許請求の範囲】
【請求項１】
ネットワークを介して相互接続した複数の計算機により構成され、各計算機はプログラムがメモリ内のデータの更新を行う計算機システムにおいて、計算機間でのメモリデータの一致化を行うためのメモリデータ一致化方法において、
コピー元の計算機におけるある時点でのメモリの全データを抜き出し、コピー先の計算機へ転送し、前記抜き出した全データを該コピー先計算機のメモリへ上書きを許して書込むステップと、
該コピー元計算機において前記プログラムの処理によるメモリ上のデータの更新を監視するステップと、
更新監視により検出したメモリデータの差分のみを該コピー先計算機に転送し、前記更新検出による差分データを該コピー先計算機のメモリ上の対応箇所へ上書きを許して書き込むことを、前記コピー元計算機のメモリ上のデータの更新がなくなるまで繰り返すステップと、を含み、
各計算機は、メモリ上のデータを階層的に管理しており、
コピー元計算機において前記プログラムの処理によるメモリデータの更新を監視するために、階層管理されるメモリデータに対して、メモリを構成する複数のページをある範囲毎に重複なくグループに割振り、グループの単位でデータ更新を監視し、予め前記グループにライトプロテクションを設定し、前記ライトプロテクションを用いて前記グループの更新を検出し、更新を検出したグループに対してのみ、該グループに含まれるページの中からさらにページ単位で更新箇所を特定する
ことを特徴とするデータ一致化方法。
【請求項２】
請求項１のデータ一致化方法において、
メモリを構成するページを割振るグループを多段にする
ことを特徴とするデータ一致化方法。
【請求項３】
請求項１のデータ一致化方法において、
コピー元計算機でのメモリデータの更新検出による差分データのコピー先計算機への転送を、前記メモリ内のページを割振ったグループの単位でデータ更新を検出する毎に実施することを特徴とする計算機間でのデータ一致化方法。
【請求項４】
請求項１のデータ一致化方法において、
当該計算機システム内で稼動する計算機が２つ以上である場合、メモリの領域を分割し、コピー元計算機として２つ以上の稼働中の計算機に各々割当て、各計算機にて割当てられたメモリ領域内のデータ更新を監視し、検出した差分データをコピー先計算機に転送し、該コピー先計算機のメモリデータの対応箇所へ書込む
ことを特徴とするデータ一致化方法。
【請求項５】
請求項１又は請求項３のデータ一致化方法において、
前記計算機システムが、構成する各計算機において同じ処理を並列実行させ、該システムによるサービス提供を無停止で行うフォールトトレラントコンピュータシステムである場合、コピー元計算機でのデータ更新検出による差分データのコピー先計算機への転送を、該コピー元計算機におけるプログラムの動作を監視し、該プログラムが待機中であり、メモリデータの更新をしていないタイミングで実施する
ことを特徴とするデータ一致化方法。
【請求項６】
請求項５のデータ一致化方法において、
前記フォールトトレラントコンピュータ内で稼動するコピー元計算機におけるメモリデータの更新検出量が1回の転送メッセージに格納可能なサイズ以下となった場合、該転送メッセージを送信する際に、コピー元計算機における前記プログラムの処理を一時停止させ、コピー先計算機が該転送メッセージを受信し、メモリデータの対応箇所への書込みを完了した時点で、メモリデータ一致化が完了したとみなし、該コピー元計算機におけるデータ更新検出及び差分データ転送を終了し、
コピー先計算機における前記プログラムの処理を、前記コピー元計算機の一時停止中のプログラムと同期をとって再開する
ことを特徴とするデータ一致化方法。
【請求項７】
請求項１又は請求項６のデータ一致化方法において、
コピー元計算機でのメモリデータの更新検出による差分データをコピー先計算機へ転送するとともに、該差分データを前記コピー元計算機内の領域にも書込んでおき、更新検出及び差分データ転送を終了する時点で検証する
ことを特徴とするデータ一致化方法。
【請求項８】
請求項７のデータ一致化方法において、
コピー元計算機におけるデータ一致化の検証が完了した時点で、コピー先計算機に通知し、該コピー先計算機を前記計算機システム内でオンライン化する
ことを特徴とするデータ一致化方法。
【請求項９】
請求項１のデータ一致化方法において、
各計算機は、前記データ更新が発生した際に、更新を検出したグループに含まれるページの中から、予め設定された該ページに対応するダーティビットに基づいて、データ更新のあったページを特定し、前記データ更新のあったページのデータを読み込む際に前記ダーティビットを解除する
ことを特徴とするデータ一致化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して相互接続した、複数の独立した、メモリの階層管理機構を有し、ユーザプログラムがメモリデータの更新を行う計算機により構成される、計算機システムにおいて、稼働中の計算機は無停止、処理継続のまま、該稼働中の計算機の有するメモリデータを他の計算機に一致させ、一致化させた計算機もシステム内で実行状態に移行させることに関するものである。
【背景技術】
【０００２】
複数のサブシステムから送出される同一データを二台のホストコンピュータで同時に処理する二重化コンピュータシステムにおいて、二重化運転を開始する際の、処理データの同期合わせ、すなわちマスター系処理データのスレーブ系へのコピー処理（この処理を「スレーブ組み込み処理」という）を、二台のディスク装置と、系間通信路を用いて行う、ことを特徴とする二重化コンピュータシステムのスレーブ組込方法（特許文献１参照）などが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−７３２７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来技術では、稼働中の計算機は無停止のままで、計算機間のデータ一致化を実施する場合、稼働中の計算機よりコピー先計算機へデータコピーを行っても、稼働中の計算機の実行状態やデータ更新頻度によっては、データコピー中にコピー元の稼働中の計算機でのデータ更新が発生し、コピー先計算機へコピーされたデータとコピー元の稼働中の計算機のデータとが異なり得て、データの一致化が達成できない可能性がある。
【０００５】
本発明の目的は、稼働中の計算機システムにおいて、正常稼働中の計算機の処理を中断することなく、メモリデータのサイズに関わらず高速に該計算機のメモリデータを、システム内の他の計算機のメモリデータに一致化させるシステム、方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、データ転送元計算機の処理装置が、データ転送元計算機のメモリ上のデータが更新された場合に、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超えなくなるまで、更新されたデータを複数の転送メッセージに分割・挿入してデータ転送先計算機へ転送し、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超えない場合に、更新されたデータを１つのメッセージに挿入してデータ転送先計算機へ転送すると共に、データ転送先計算機の処理装置に、プログラムに従ったデータ転送先計算機のメモリを使用したデータの処理を開始させることを特徴とする。好ましくは、データ転送元計算機の処理装置が、データ転送先計算機から所定の要求を受信した場合に、データ転送元計算機のメモリ上のデータを読み出し、データのサイズが１つの転送メッセージで転送可能なデータのサイズを超えるか否かを判定し、データのサイズが１つの転送メッセージで転送可能なデータのサイズを超える場合に、データを複数の転送メッセージに分割・挿入してデータ転送先計算機へ転送し、データをデータ転送先計算機へ転送した後にデータ転送元計算機のメモリ上のデータが更新されたか否かを所定の周期で検出し、データが更新された場合に、更新されたデータをデータ転送元計算機のメモリから読み出し、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超えるか否かを判定し、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超える場合に、更新されたデータを複数の転送メッセージに分割・挿入してデータ転送先計算機へ転送することを、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超えなくなるまで繰り返し、更新されたデータのサイズが１つの転送メッセージで転送可能なデータのサイズを超えない場合に、プログラムに従ったデータの処理の待機中に、更新されたデータを１つのメッセージに挿入してデータ転送先計算機へ転送すると共に、所定の通知をデータ転送先計算機へ転送し、データ転送先計算機の処理装置が、データ転送元計算機から受信されたデータおよび更新されたデータをデータ転送先計算機のメモリに順次書込み、所定の通知を受信した場合に、データ転送元計算機の処理装置のプログラムに従ったデータの処理の待機中に、データ転送元計算機から受信された１つのメッセージに挿入された更新されたデータをデータ転送先計算機のメモリに書込み、所定の通知に基づいて、データ転送元計算機の処理装置のプログラムに従ったデータの処理に同期して、プログラムに従ったデータの処理を開始することを特徴とする。
【０００７】
また、本発明は、ネットワークを介して相互接続した、複数の独立した、メモリの階層管理機構を有し、ユーザプログラムがメモリデータの更新を行う計算機により構成される、計算機システムにおいて、計算機間でのメモリデータの一致化を、コピー元の計算機は無停止、処理継続のままで行うための方法であり、コピー元の計算機におけるある時点でのメモリの全データを抜き出し、コピー先の計算機へ転送し、前記抜き出した全データを該コピー先計算機のメモリへ上書きを許して書込むステップと、該コピー元計算機においてユーザプログラムの処理によるメモリデータの更新を、階層に従って監視するステップと、前記更新監視により検出したメモリデータの差分のみを該コピー先計算機に転送し、メモリデータの該当箇所へ上書きを許して書き込むことを繰り返すステップとを含む。
【発明の効果】
【０００８】
本発明によれば、稼働中の計算機システムにおいて、正常稼働中の計算機の処理を中断することなく、メモリデータのサイズに関わらず高速に該計算機のメモリデータを、システム内の他の計算機のメモリデータに一致化させることを可能とし、計算機システムの信頼性の維持、該システムにより実行、提供されるサービスの無停止を保証できる。
【図面の簡単な説明】
【０００９】
【図１】本発明による、ネットワークを介して相互接続した、複数の独立した、メモリの階層管理機構を有し、ユーザプログラムがメモリデータの更新を行う計算機により構成される、計算機システムを対象として実施する、メモリの階層管理機構を有する計算機間でのメモリデータ一致化方法の概要を示す図である。
【図２】本発明における、計算機システムを構成する、メモリの階層管理機構を有する計算機間でのメモリデータ一致化のための処理の流れを示すシーケンス図である。
【図３】本発明における、計算機システムを構成し、外部からの要求に対する処理等を実行する計算機のモジュール構成を示す図である。
【図４】本発明における、計算機にて階層管理されるメモリデータの更新監視のためにページを割振るグループ構造を示す図である。
【図５Ａ】本発明における、コピー元計算機にてメモリを構成するページのグループ毎の更新の有無を管理するグループ更新管理テーブルを示す図である。
【図５Ｂ】本発明における、コピー元計算機にてメモリデータの更新箇所及び差分データの転送状態を管理するページ更新管理テーブルを示す図である。
【図６】本発明における、コピー元計算機にてメモリデータの更新検出を行う処理の流れを示すフローチャートである。
【図７】本発明における、本発明における、コピー元計算機にてメモリデータの更新検出により抽出した差分データをコピー先計算機へ転送する処理の流れを示すフローチャートである。
【図８】本発明における、コピー先計算機にてコピー元計算機より受信した差分データをメモリへ書込む処理の流れを示すフローチャートである。
【図９】本発明の適用先である、ネットワーク（通信媒体）を介して相互接続した、複数の独立したノードにより構成され、構成する各ノードにおいて同じ処理を並列実行させることによるフォールトトレラントコンピュータシステムの概要を示す図である。
【図１０】本発明における、メモリの領域を分割し、２つ以上の稼働中の計算機に各々分担し、コピー元として各計算機にて分担されたメモリ領域内の更新を監視し、検出した差分データをコピー先計算機に転送し、書込みを行う処理の概要を示す図である。
【図１１】本発明における、コピー元計算機とコピー先計算機との間でのメモリデータ一致化処理の終了からコピー先計算機でのユーザプログラムの処理再開までの処理の流れを示すフローチャートである。
【図１２】本発明における、コピー元計算機とコピー先計算機との間でのメモリデータ一致化の正常完了を検証する処理の流れを示す図である。
【図１３】本発明における、本発明における、コピー元計算機からコピー先計算機へと送信される転送データのメッセージ形式を示す図である。
【発明を実施するための形態】
【００１０】
図１は、本発明による、ネットワークを介して相互接続した、複数の独立した、メモリの階層管理機構を有し、ユーザプログラムがメモリデータの更新を行う計算機により構成される、計算機システムを対象として実施する、メモリの階層管理機構を有する計算機間でのメモリデータ一致化方法の概要を示す図である。
【００１１】
主な構成要素は、コピー元計算機０１１１、コピー先計算機０１１２とコピー元計算機０１１１にて稼動するユーザプログラム０１２１、該ユーザプログラム０１２１が処理中にデータ更新を行うメモリ０１３１、またコピー先計算機０１１２にて稼動するユーザプログラム０１２２、該ユーザプログラム０１２２が処理中にデータ更新を行うメモリ０１３２である。メモリ０１３１やメモリ０１３２の記憶容量は、例えば、８Ｇバイトである。
【００１２】
本発明による、メモリの階層管理機構を有する計算機間でのメモリデータ一致化方法は、“全データコピー”（０１０１）、“差分データコピー”（０１０２）、“最終コピー”（０１０３）の３段階にて実施する。
【００１３】
第１段階の“全データコピー”（０１０１）では、コピー元計算機０１１１のメモリ０１３１のある時点での全データのスナップショット（メモリ上のデータの集合をそのまま収集）を取り、該データをコピー先計算機０１１２へと転送する。コピー先計算機０１１２では前記転送された全データを受信し、該コピー先計算機０１１２のメモリ０１３２へ上書きを許して書込みを行う（０１４１）。前記転送に関し、メモリ０１３１の全データはサイズが所定の閾値よりも大きいと判定した場合は、複数のメッセージに分割して送信する。ここでコピー元計算機０１１１ではユーザプログラム０１２１は動作中であり、メモリ０１３１に対してデータ更新を行うが、コピー先計算機０１１２ではユーザプログラム０１２２は動作していない。よって前記全データの転送及びコピー先計算機０１１２のメモリ０１３２への書込みの処理実施中にもコピー元計算機０１１１のメモリ０１３１はデータ更新され得る。
【００１４】
第２段階の“差分データコピー”（０１０２）では、第１段階の実施中にコピー元計算機０１１１にてメモリ０１２１へのデータ更新を監視しておき（０１５１）、検出した更新箇所のデータをメモリ０１２１より抽出し、前記第１段階（０１０１）にて全コピーしたデータからの差分データとして、コピー先計算機０１１２へと転送する。コピー先計算機で０１１２では前記転送された差分データを受信し、該コピー先計算機０１１２のメモリ０１３２の該当箇所へ上書きを許して書込みを行う（０１４２）。前記転送に関し、該差分データはサイズが所定の閾値よりも大きいと判定した場合は、複数のメッセージに分割して送信する。なお上記差分データの抽出、転送及びコピー先計算機０１１２のメモリ０１３２への該差分データの書込みの処理実施中もさらにコピー元計算機０１１１では動作中のユーザプログラム０１２１によるメモリ０１３１へのデータ更新が実施される。このためメモリ０１３１へのデータ更新の監視及び上記差分データの抽出、コピー先計算機０１１２への転送及び該コピー先計算機０１１２のメモリ０１３２への該差分データの書込みの処理は繰り返し実施する。
【００１５】
コピー元計算機０１１１でのメモリ０１３１からのデータ抽出、コピー先計算機０１１２への転送及び該コピー先計算機０１１２のメモリ０１３２への書込みの一連の処理に要する時間をデータコピー時間と定義する（０１６１、０１６２、０１６３）。データコピー時間の大部分はコピー元計算機０１１１からコピー先計算機０１１２への転送時間が占めており、データコピー時間の大きさは転送するデータのサイズに比例する。よって第２段階（０１０２）では、前記差分データの抽出、コピー先計算機０１１２への転送及び該コピー先計算機０１１２のメモリ０１３２への該差分データの書込みを繰り返し実行していくと、１回あたりの差分データのサイズは減少していき、合わせて１回あたりのデータコピー時間０１６２は小さくなっていく。
【００１６】
ここでデータコピー時間（データ転送時間）が最小となる時、すなわち差分データのサイズが１つの送信メッセージに格納できるサイズ以下となった時、第２段階０１０２から第３段階の“最終コピー”（０１０３）へと移行する。
【００１７】
第３段階０１０３では、コピー元計算機０１１１のユーザプログラム０１２１を一時停止させ（０１７１）、前記１つの送信メッセージに格納できるサイズ（例えば、１Ｍバイト）以下となった差分データのコピー先計算機０１１２への転送及び該コピー先計算機０１１２のメモリ０１３２への該差分データの書込み（０１４３）を実施する。本処理にて差分データの転送および書込みは最後とし、メモリデータ一致化完了とする（０１７２）。以後、コピー元計算機０１１１及びコピー先計算機０１１２との間で同期を取ってから、つまり同一タイミングでユーザプログラム（０１２１、０１２２）の処理を再開させる（０１７３）。
【００１８】
上記において、ユーザプログラムは周期的に動作し、１周期の処理終了後、次周期までの間に待機時間が存在するものである。よって前記０１７１におけるユーザプログラム０１２１の一時停止は前記待機時間中に実施するものとする。また第３段階０１０３に要する時間は前記ユーザプログラムの待機時間内に収める必要がある。そのために第３段階０１０３におけるデータコピー時間０１６３の許容範囲がユーザプログラムの動作仕様に従って決まる。
【００１９】
図２は、本発明による、計算機システムを構成する、メモリの階層管理機構を有する計算機間でのメモリデータ一致化のための処理の流れをシーケンス図である。
【００２０】
主な構成要素は、コピー元計算機０１１１における、メモリデータ一致化処理を行う一致化処理部０２０３、メモリ０１３１、該メモリ０１３１のデータ更新を行うユーザプログラム０１２１と、コピー先計算機０１１２における、メモリデータ一致化処理を行う一致化処理部０２０４、メモリ０１３２、該メモリ０１３２のデータ更新を行うユーザプログラム０１２２である。
【００２１】
コピー先計算機０１１２において、０２６１にて、ユーザプログラム０１２２は初期化処理を完了し、待機状態となる。０２４１にて、一致化処理部０２０４は、コピー元計算機０１１１の一致化処理部０２０３に対して、一致化開始要求を送信する。
【００２２】
コピー元計算機０１１１において、一致化処理部０２０３が、前記コピー先計算機０１１２の一致化処理部０２０４からの一致化開始要求を受信すると、０２３１において、メモリ０１３１より、全メモリデータを読込み、バッファ領域に一時蓄積する。バッファ領域は、記憶装置（メモリ）上のメモリ０１３１とは異なる領域に形成されるのが好ましい。０２３２において、０２３１にて読込んだ全メモリデータをコピー先計算機０１１２に対して転送する。コピー先計算機０１１２の一致化処理部０２０４が、前記コピー元計算機０１１１から転送される全メモリデータを受信すると、０２４２において、前記全メモリデータをメモリ０１３２に上書きを許して書込む。この結果、メモリ０１３１上とメモリ０１３２上の同一アドレスには、同一データが存在することとなる。
【００２３】
コピー元計算機０１１１では、前記０２３１にて全メモリデータを読込み、０２３２にてコピー先計算機０１１２に該全メモリデータを転送し、０２４２にてコピー先計算機０１１２のメモリ０１３２に書込んでいる間にも、ユーザプログラム０１２１は稼働中であり、処理の過程でメモリ０１３１に対してデータ更新を行うことが可能である（０２５１、０２５２）。このため０２３１、０２３２、０２４２の処理を終えた時点のコピー先計算機０１１２のメモリ０１３２はコピー元計算機０１１１のメモリ０１３１とデータ内容が異なっている可能性がある。よって０２３３において、一致化処理部０２０３が、全メモリデータを転送した後にメモリ０１３１のデータ更新を検出した場合に、該更新箇所のデータを差分データとして読み込む。０２３４において、０２３３にて読み込んだ差分データをコピー先計算機０１１２に転送する。コピー先計算機０１１２の一致化処理部０２０４が、前記コピー元計算機０１１１から転送される差分データを受信すると、０２４３において、該差分データをメモリ０１３２に上書きを許して書込む。以降、コピー元計算機０１１１での更新検出、差分データの読込み及びコピー先計算機０１１２への転送、コピー先計算機０１１２での該差分データの書込みの処理（０２３５、０２３６、０２４４）を、差分データがなくなるまで繰り返す。
【００２４】
０２３７において、コピー元計算機０１１１の一致化処理部０２０３が、差分データがなくメモリデータ一致化の完了を判定すると、コピー先計算機０１１２に通知する。コピー先計算機０１１２では、０２６２において、ユーザプログラム０１２２の処理を再開する。
【００２５】
図３は、本発明における、計算機システムを構成し、外部からの要求に対する処理等を実行する計算機のモジュール構成を示す図である。
【００２６】
計算機０３００には、外部システムからの要求に対する処理を実行し応答を返すユーザプログラム０３０１、該ユーザプログラム０３０１が処理中に読み込み、書込みを行うメモリ０３０２、計算機間でのメモリデータ一致化、等の処理を行う一致化処理部０３０３が導入される。ユーザプログラム０３０１によるメモリ０３０２へのデータの読み込み、書込みはユーザプログラム０３０１に従って処理するＣＰＵによって実現され、一致化処理部０３０３は一致化処理プログラムに従って処理するＣＰＵによって実現される。
【００２７】
一致化処理部０３０３の主な構成要素は、ユーザプログラム０３０１によるメモリ０３０２へのデータ更新を監視し、更新検出時には更新箇所に関する情報をページ更新管理テーブル０３４１及びグループ管理テーブル０３４２を用いて逐次記録する更新監視部０３３１、前記ページ更新管理テーブル０３４１を参照し、計算機間でのメモリデータ一致化のための処理を行うデータ転送・書込み部０３３２、メモリデータ一致化処理の進捗に応じてユーザプログラムの一時停止、処理再開、計算機間での同期等の制御を行うユーザプログラム実行管理部０３３３、通信媒体０３０５を介してシステム内の他の計算機０３００との間の通信を行う、データ通信部０３３４がある。更新の監視は、ユーザプログラムの処理周期と同一周期で行ってもよいし、ユーザプログラムの処理周期よりも短い周期で行ってもよい。
【００２８】
メモリデータ一致化処理において、コピー元となる計算機０３００では、データ転送・書込み部０３３２は、メモリ０３０２の全データの読込み及びデータ通信部０３３４を介してのコピー先計算機への該データの転送、もしくはページ更新管理テーブル０３４１を参照して、更新箇所のデータの読込み及びデータ通信部０３３４を介してのコピー先計算機への該データの転送等の処理を行う。一方コピー先となる計算機０３００では、データ転送・書込み部０３３２は、前記コピー元計算機のデータ転送・書込み部０３３２より転送されるデータを受信し、該データのメモリ０３０２への書込みを行う。
【００２９】
図４は、本発明における、計算機にて階層管理されるメモリデータの更新監視のためにページを割振るグループ構造を示す図である。
【００３０】
主な構成要素は、メモリ０３０２を構成する個々のページ（0、1、2、…、m、m+1、m+2、…）毎に割り当てるノード０４０１、重複なく複数の該ノード０４０１毎に形成するグループ０４０２である。
【００３１】
メモリ０３０２を構成する個々のページ毎に割り当てるノード０４０１により、ユーザプログラム０３０１によるメモリ０３０２へのデータ更新の発生箇所をページ単位で検出、記録する。なお該メモリ０３０２を構成するページのサイズ等は、プロセッサもしくはＯＳの仕様により決定されるものであり、例えば、４ｋバイトである。
【００３２】
グループ０４０２により、各グループに含まれる複数のノード０４０１の中にデータ更新発生を記録したもの１つ以上が存在するか否かを検出、記録する。ここで該グループ０４０２に含まれるノード０４０１にマッピングされるページの中で１つでもデータ更新が発生していれば、該グループ０４０２にはデータ更新発生が記録される。
【００３３】
前記ノード０４０１及びグループ０４０２を用いてのメモリ０３０２へのデータ更新の検出・記録の実施の一例として、ノード０４０１には、ページへのデータ更新発生時にページ毎でハードウェアにより値がセットされるダーティビットが利用できる。該ダーティビットは、データ更新のあったページのデータを読み込む際に値を解除するものとする。グループ０４０２には、メモリ０３０２への書込み処理実施時に例外処理を発生させるライトプロテクションが利用できる。該ライトプロテクションを用いて、個々のグループ０４０２に対してデータ更新発生の有無を示すフラグ情報を記録する。なおここで前記グループ０４０２のデータ更新発生に関するフラグ情報を記録するテーブルの詳細は図５Ａに示す。ダーティビットは、ページごとにページ上に格納されるのに対して、ライトプロテクションは、複数のグループのライトプロテクションを管理するテーブル内に格納される。よって、数が多く、また、ページ領域へアクセスする必要があるため、ダーティビットの検索には時間がかかるが、数が少なく、また、テーブル内を検索すればよいので、ライトプロテクションの検索には時間をかからない。
【００３４】
図５Ａは、本発明における、コピー元計算機にてメモリを構成するページのグループ毎の更新の有無を管理するグループ更新管理テーブルを示す図である。
【００３５】
グループ更新管理テーブル０５０１の主な構成要素は、グループ０５１１、更新フラグ０５１２である。
【００３６】
グループ０５１１には、メモリ０３０２を構成する複数のページを重複無く割り振るグループの識別情報が格納される。更新フラグ０５１２には、該グループ０５１１に格納される情報に該当するグループ内に含まれる少なくとも１つのページにおいてデータ更新が発生したか否かを示すフラグ情報が格納される。図の例ではデータ更新の発生したページを少なくとも１つ含むグループには“TRUE”の値が、グループ内の全てのページでデータ更新が発生していなければ“FALSE”の値が格納される。なお該更新フラグ０５１２の値が“TRUE”である場合、一度該更新フラグ０５１２を参照し、該当するグループに含まれるページの中から更新の検出されたページの検索・参照を行う時点で、リセットし“FALSE”の値を格納する。
【００３７】
図５Ｂは、本発明における、コピー元計算機にてメモリデータの更新箇所及び差分データの転送状態を管理するページ更新管理テーブルを示す図である。
【００３８】
ページ更新管理テーブル０５０２の主な構成要素は、グループ０５２１、アドレス０５２２、検出時刻０５２３、ステータス０５２４である。
【００３９】
グループ０５２１には、データ更新が検出されたページが含まれるグループの識別情報が格納される。同一グループ内であっても更新されたページが異なれば、別レコードとする。該グループ０５２１に格納される情報はグループ更新管理テーブル０５０１のグループ０５１１に該当する。アドレス０５２２には、データ更新が検出されたページのアドレスが格納される。検出時刻０５２３には、アドレス０５２２に格納されるアドレスのページにてデータ更新が検出された時刻が格納される。ステータス０５２４には、該ページのデータ更新による差分データの転送状態に関するステータスが格納される。該差分データがメモリ領域より抽出され、コピー先計算機に転送済みであれば“SENT”、転送処理中であれば“SENDING”、まだ転送処理が実施されていなければ“NOT-SEND”が値として格納される。
【００４０】
図６は、本発明における、コピー元計算機にてメモリデータの更新検出を行う処理の流れを示すフローチャートである。
【００４１】
０６０１において、コピー元計算機でのグループ更新管理テーブルを参照する。０６０２において、０６０１の結果、更新のあるグループがある場合、０６０３において、該当グループに属する各ページに該当するノードの更新記録を参照する。０６０４において、０６０３の結果、更新のあるページがある場合、０６０５において、ページ更新管理テーブルに該当箇所である更新のあるページに関する情報を追記する。０６０２において、０６０１の結果、更新のあるグループが無い場合、０６０３から０６０５の処理は実施しない。０６０４において、０６０３の結果、更新のあるページが無い場合、０６０５の処理は実施しない。０６０６において、全てのグループに関してグループ管理テーブルの確認が終了していない場合、０６０１から０６０５の処理を繰り返す。０６０６において、全てのグループに関してグループ管理テーブルの確認が終了している場合、０６０７において、メモリ一致化処理が完了している場合、処理を終了する。０６０７において、メモリ一致化処理が完了していない場合、０６０８において、指定時間の待機を行った後、０６０１からの処理を繰り返す。
【００４２】
図７は、本発明における、コピー元計算機にてメモリデータの更新検出により抽出した差分データをコピー先計算機へ転送する処理の流れを示すフローチャートである。
【００４３】
０７０１において、ページ更新管理テーブルにおける１グループに関する領域の情報を読込む。０７０２において、０７０１の結果、該グループに属するページの中に更新箇所がある場合、０７０６において、前記ページ更新管理テーブルの情報を参照し、該当ページのデータを差分データとしてメモリより抽出する。０７０７において、アプリケーションの動作監視を実施している場合、０７０８において、アプリケーションが動作中である場合、アプリケーションが待機状態になるまで待ち受ける。０７０８において、アプリケーションが待機中である場合、０７０９において、０７０６にて抽出した差分データを転送用のメッセージに格納する。ここで該差分データのサイズが１つの転送用メッセージに格納可能なサイズを超える場合は、該差分データを複数のメッセージに分割して格納する。０７０７において、アプリケーションの動作監視を実施しない場合、０７０８の処理は行わずに前記０７０９の処理を行う。０７１０において、０７０９にて生成したメッセージをコピー先計算機に対して送信する。０７１１において、０７０６にて抽出した全ての差分データの送信が完了していない場合、０７０７から０７１０までの処理を繰り返す。０７１１において、０７０６にて抽出した全ての差分データの送信が完了した場合、０７０３において、ページ更新管理テーブル内の全グループに関する領域の情報の読込みが終了していない場合、０７０１からの処理を繰り返す。０７０２において、０７０１の結果、該グループに属するページの中に更新箇所が無い場合、前記０７０３の処理を行う。０７０３において、ページ更新管理テーブル内の全グループに関する領域の情報の読込みが終了している場合、０７０４において、メモリ一致化処理が完了している場合、処理を終了する。０７０４において、メモリ一致化処理が完了していない場合、０７０５において、指定時間の待機を行った後、０７０１からの処理を繰り返す。ここで待機する時間はアプリケーションによるメモリデータの更新頻度に応じて予め指定するものである。
【００４４】
０７０７、０７０８にてアプリケーションの動作監視を行い、アプリケーション処理の待機中にデータ送信処理を行うことにより、コピー元計算機の負荷を軽減し、データの更新によるデータ差分量を早期に縮小させることができる。
【００４５】
図８は、本発明における、コピー先計算機にてコピー元計算機より受信した差分データをメモリへ書込む処理の流れを示すフローチャートである。
【００４６】
コピー先計算機ではコピー元計算機から送信されるメッセージを待ち受けており、０８０１において、メッセージを受信する。０８０２において、０８０１にて受信したメッセージの種別が“全データ”である場合、０８０３において、受信メッセージよりデータを抽出する。０８０４において、０８０３にて抽出したデータのメモリの該当箇所（コピー元計算機のメモリ内のアドレスと同一アドレス）への書込みを行う。その後、コピー元計算機からのメッセージ受信待ち状態になり、０８０１からの処理を繰り返す。０８０１にて受信したメッセージの種別が“差分データ”である場合、０８０５において、受信メッセージに含まれる１つ以上の差分データの中から１つの差分データを抽出する。０８０６において、０８０５にて抽出した差分データのメモリの該当箇所（コピー元計算機のメモリ内のアドレスと同一アドレス）への書込みを行う。０８０７において、受信メッセージからの全ての差分データの抽出を終了した場合、コピー元計算機からのメッセージ受信待ち状態になり、０８０１からの処理を繰り返す。０８０７において、受信メッセージからの全ての差分データの抽出を終了していない場合、０８０５、０８０６の処理を繰り返す。０８０１にて受信したメッセージの種別が“終了予告通知”である場合、０８０８において、通信の終了、必要データのバックアップ等の終了処理を行い、処理を終了する。
【００４７】
図９は、本発明の適用先である、ネットワーク（通信媒体）を介して相互接続した、複数の独立したノードにより構成され、構成する各ノードにおいて同じ処理を並列実行させることによるフォールトトレラントコンピュータシステムの概要を示す図である。尚、図９で示すノードは、システムの構成要素（例えば、計算機）をいい、図４で示したノード０４０１（ディレクトリのノード）とは異なる。
【００４８】
本フォールトトレラントコンピュータシステム０９０１の主な構成要素は、ＬＡＮ０９１２を介して相互接続する２つ以上のノード０９１１、広域ネットワーク０９０２に接続し外部システムとの通信の中継を行うゲートウェイサーバ０９１３、等である。
【００４９】
フォールトトレラントコンピュータシステム０９０１は、広域ネットワーク０９０２を介して通信可能な外部システム０９０３からの要求を受け付けて、該要求に対する処理を実施し、処理結果を応答として該外部システム０９０３に返信することによるサービスを提供する。ここでは外部システム０９０３からの要求として入力メッセージ０９３１を受信し、該要求に対する処理結果を格納した出力メッセージ０９４１を外部システム０９０３に対して送信する。
【００５０】
フォールトトレラントコンピュータシステム０９０１の内部では、広域ネットワーク０９０２を介して外部システム０９０３からの要求として入力メッセージ０９３１を受信したゲートウェイサーバ０９１３がＬＡＮ０９１２を介して、システム内の全てのノード０９１１に対して入力メッセージ０９３２として転送し直す。ここでほぼ同時に全てのノード０９１１が該メッセージを受信し、概メッセージに対する処理を開始できるように、入力メッセージ０９３２はブロードキャスト送信する。該入力メッセージ０９３２を受信した各ノード０９１１は、各々該入力メッセージ０９３２に対する処理を実行して、処理結果を格納した出力メッセージ０９４２を、ＬＡＮ０９１２を介してゲートウェイサーバ０９１３に対して送信する。各ノード０９１１からの出力メッセージ０９４２を受信したゲートウェイサーバ０９１３は要求元の外部システム０９０３への応答として出力メッセージ０９４１を作成し、外部システム０９０３に対して送信する。ここでゲートウェイサーバ０９１３は、各ノード０９１１から受信した１つ以上の出力メッセージ０９４２のデータ内容の比較照合、正誤判定等を行い、正しいメッセージデータを出力メッセージ０９４１として、要求元の外部システム０９０３に送信する。
【００５１】
ノード０９１１の主なハードウェア構成は、処理装置（ＣＰＵ）０９２１、記憶装置（メモリ、ハードディスク）０９２２、通信装置０９２３からなる。記憶装置０９２２には、フォールトトレラントコンピュータシステム０９０１により外部システム０９０３に対して提供するサービスを実行する上で必要なデータ、上記サービスに関する外部システム０９０３からの要求に対して処理を実行するためのユーザプログラム、複数のノード０９１１の間での稼動中及び再組込み中の同期を実施するためのソフトウェアプログラム、ＬＡＮ０９１２を介してノード０９１１とゲートウェイサーバ０９１３との間の通信を行うためのソフトウェアプログラム等が格納され、処理装置０９２１により処理される。つまり、プログラムに従って処理装置が記憶装置に所定のデータを読み書き（更新を含む）することによって所定のデータに対して所定の処理を実現する。メモリ０１３１、０１３２およびバッファは、記憶装置に含まれる。また通信装置０９２３は、ゲートウェイサーバ０９１３からの入力メッセージ０９３２を受信し、ゲートウェイサーバ０９１３に対して出力メッセージ０９４２を送信するための通信処理を行う。
【００５２】
なおフォールトトレラントコンピュータシステム０９０１では、複数のノード０９１１が同一のハードウェア構成をとり、同一のプログラムを同期して（併行して）実行する。そして、フォールトトレラントコンピュータシステム０９０１内に２つ以上のノード０９１１を含め、これらで外部システム０９０３からの要求に対する処理を同時に併行して実行させていることで、１つ以上のノードにて障害が発生した場合でも、残りの稼働中のノードが処理を実行することで、システムとして正常動作によるサービス提供を維持することを可能とし、システムの耐障害性、信頼性を高めている。
【００５３】
図１０は、本発明における、メモリの領域を分割し、２つ以上の稼働中の計算機に各々分担し、コピー元として各計算機にて分担されたメモリ領域内の更新を監視し、検出した差分データをコピー先計算機に転送し、書込みを行う処理の概要を示す図である。
【００５４】
主な構成要素は、システム内で稼働中の複数の計算機であり、更新監視対象となるメモリ領域を分担されコピー元計算機となる、計算機１０１０、１０１１、１０１２、これらのコピー元計算機とＬＡＮ０９１２を介して相互接続しているコピー先計算機０１１２である。コピー元計算機１０１０、１０１１、１０１２では、それぞれユーザプログラム１０４０、１０４１、１０４２が同じタイミングで同一の処理を行い、各計算機のメモリ領域１０２０、１０２１、１０２２に対して同様のデータ更新を行う。
【００５５】
ここでコピー元計算機１０１０、１０１１、１０１２にはデータ更新監視対象として、領域０、領域１、領域ｎを分担させ、メモリ領域のうちこれらの分担領域のみを更新監視するものとする。ゆえにコピー元計算機１０１０は、領域０でのデータ更新を検出すると、該領域に関する差分データをコピー先計算機０１１２に転送し、該コピー先計算機０１１２のメモリ領域０１３２内の領域０に書込みを行う（１０３０）。コピー元計算機１０１１は、領域１でのデータ更新を検出すると、該領域に関する差分データをコピー先計算機０１１２に転送し、該コピー先計算機０１１２のメモリ領域０１３２内の領域１に書込みを行う（１０３１）。コピー元計算機１０１２は、領域ｎでのデータ更新を検出すると、該領域に関する差分データをコピー先計算機０１１２に転送し、該コピー先計算機０１１２のメモリ領域０１３２内の領域ｎに書込みを行う（１０３２）。
【００５６】
上述のように複数の計算機に更新監視対象のメモリ領域を分担することにより、コピー元計算機における、メモリデータ一致化処理に伴う処理負荷を軽減することができる。
【００５７】
図１１は、本発明における、コピー元計算機とコピー先計算機との間でのメモリデータ一致化処理の終了からコピー先計算機でのユーザプログラムの処理再開までの処理の流れを示すフローチャートである。
【００５８】
コピー元計算機では、１１０１において、図６に示した手順によりメモリデータの更新を検出する。１１０２において、１１０１にて検出した更新による差分データを、図７に示した手順によりコピー先計算機に転送する。１１０３において、１１０２にて転送する差分データのサイズが指定した閾値以上か否かを判定し、１１０２にて転送する差分データのサイズが指定した閾値以上である場合、１１０１、１１０２の処理を繰り返す。１１０３において、１１０２にて転送する差分データのサイズが指定した閾値以下である場合、１１０４において、コピー先計算機に対して終了予告通知を送信する。ここで前記差分データサイズの閾値は、差分データの転送に要する時間が最小となるように、コピー元計算機からコピー先計算機への転送に用いている１回の送信メッセージに格納可能なデータの最大サイズとする。前記終了予告通知は、１１０２にて最後に送信した差分データにてメモリデータ一致化処理を終了することを事前に通知するためのものである。１１０５において、コピー元計算機にて稼働中のユーザプログラムを一時停止させる。
【００５９】
コピー先計算機では、１１１１において、１１０２にてコピー元計算機より転送された差分データを受信する。１１１２において、１１１１にて受信した差分データを、該コピー先計算機のメモリの該当箇所に書込む。１１１３において、１１０４にてコピー元計算機より送信される終了予告通知を受信していない場合、１１１１、１１１２の処理を繰り返す。１１１３において、１１０４にてコピー元計算機より送信される終了予告通知を受信した場合、１１１４において、１１１２にて行うメモリへのデータ書込みの処理の経過時間の計測を行い、指定されたタイムアウトが発生する場合、１１１１、１１１２、１１１３の処理を繰り返す。ここでタイムアウト時間はユーザプログラムの処理周期（これは、ユーザプログラムがメモリ上のデータを更新する周期になる）、待機時間等に応じて決定する。１１１４において、１１１２にて行うメモリへのデータ書込みの処理の経過時間の計測を行い、タイムアウトが発生する前に、１１１２のデータ書込みの処理が完了した場合、１１１５において、コピー元計算機に対して、書込み完了通知を送信する。１１１６において、コピー先計算機のユーザプログラムの処理を再開する。
【００６０】
コピー元計算機では、１１０６において、１１１５にてコピー先計算機より送信される書込み完了通知の受信待ちとなり、タイムアウトが発生した場合、１１０７において、１１０５にて一時停止していたユーザプログラムの処理を再開し、１１０１から１１０６までの処理を繰り返す。１１０６において、１１１５にてコピー先計算機より送信される書込み完了通知を受信した場合、１１０８において、１１１６にて処理再開したコピー先計算機のユーザプログラムと同期をとって、１１０５にて一時停止していたユーザプログラムの処理を再開する。同期をとる方法として、コピー先計算機から送信される書込み完了通知内にコピー先計算機のユーザプログラムの処理開始時刻を埋め込み、書込み完了通知を受信したコピー元計算機がその処理開始時刻にコピー元計算機内のユーザプログラムの処理を再開する。また、同期をとる他の方法として、コピー元計算機より送信される終了予告通知内にコピー元計算機のユーザプログラムの処理再開時刻（稼動中のユーザプログラムの処理周期に沿った次の処理時刻であるのが好ましい）を埋め込み、終了予告通知を受信したコピー先計算機がその処理再開時刻にコピー先計算機内のユーザプログラムの処理を開始する。
【００６１】
図１２は、本発明における、コピー元計算機とコピー先計算機との間でのメモリデータ一致化の正常完了を検証する処理の流れを示す図である。
【００６２】
主な構成要素は、システム内で稼働中であり、メモリデータ一致化処理においてコピー元となるコピー元計算機０１１１と、該コピー元計算機０１１１とＬＡＮ０９１２を介して相互接続し、メモリデータ一致化処理においてコピー先となるコピー先計算機０１１２である。
【００６３】
コピー元計算機０１１１内には、メモリデータ一致化の対象であり、ユーザプログラム０１２１によりデータ更新され、更新監視の対象となるメモリ領域０１３１の他に、該メモリ領域０１３１と同サイズ、同一構成である予備メモリ領域１２１３を用意しておく。
【００６４】
メモリデータ一致化処理において、コピー元計算機０１１１にてメモリ領域０１３１の更新を検出し（１２２１）、該更新検出による差分データをコピー先計算機０１１２に転送し、該コピー先計算機０１１２のメモリ領域０１３２の該当箇所にデータを書込む際に、前記コピー元計算機０１１１内の予備メモリ領域１２１３に対しても、該更新検出による差分データを同様に書込んでおく（１２２３）。これにより該予備メモリ領域１２１３とコピー先計算機０１１２のメモリ領域０１３２は同一のデータ内容になるはずである。
【００６５】
メモリデータ一致化処理が終了する時点で、コピー元計算機０１１１にて、メモリ領域０１３１と予備メモリ領域１２１３とのデータ内容の比較を行い、両領域のデータ内容が同一であれば、メモリデータ一致化処理は正常完了したと判定する。
【００６６】
上記によりメモリデータ一致化の正常完了の検証を高速化できる。
【００６７】
図１３は、本発明における、コピー元計算機からコピー先計算機へと送信される転送データのメッセージ形式を示す図である。
【００６８】
メッセージ１３０１の主な構成要素は、ヘッダ情報１３１１、識別情報１３１２、通番１３１３、データ数１３１４、データ総サイズ１３１５、データ領域１３１６である。
【００６９】
ヘッダ情報１３１１には、メッセージプロトコル等に関する情報が格納される。識別情報１３１２には、本メッセージが全データ転送のメッセージか、差分データ転送のメッセージか、終了予告通知のメッセージのいずれであるかを示す識別情報が格納される。通番１３１３には、コピー元計算機からコピー先計算機へ送信されるメッセージに付与される通し番号が格納される。データ数１３１４には、データ領域１３１６に含まれるデータの数が格納される。データ総サイズ１３１５には、データ領域１３１６に含まれるデータの総サイズが格納される。データ領域１３１６には、個々のデータ（１３２１、１３２２、１３２３）が格納される。
【００７０】
データ領域１３１６に格納されるデータ（１３２１、１３２２、１３２３）の内訳はアドレス１３３１、データサイズ１３３２、データ本体１３３３である。アドレス１３３１には、該データが格納されているメモリ領域内のアドレスが格納される。データサイズ１３３２には、該データのサイズが格納される。データ本体１３３３には、メモリ領域より抽出した該データの現在値が格納される。
【００７１】
メッセージ１３０１が差分データ転送のメッセージである場合、データ領域１３１６に格納される個々のデータ（１３２１、１３２２、１３２３）は、メモリ領域より更新抽出した個々の差分データとなる。メモリ領域より更新抽出した差分データの総サイズがメッセージに格納可能な最大サイズよりも大きい場合、該差分データは複数のメッセージに分割格納して転送される。メッセージ１３０１が全データ転送のメッセージである場合、データ領域１３１６に格納されるデータは１つのみで、メッセージに格納可能なサイズのデータを全データの中から切り出して格納される。全データのサイズがメッセージに格納可能な最大サイズよりも大きい場合、該全データは複数のメッセージに分割格納して転送される。メッセージ１３０１が終了予告通知（一致化処理の終了予告を通知）である場合、該メッセージにはヘッダ情報１３１１、識別情報１３１２のみが含まれ、他の情報は含まれない。
【００７２】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【００７３】
本発明は、フォールトトレラントコンピュータシステムに利用可能である。
【符号の説明】
【００７４】
０１１１‥コピー元計算機、０１１２‥コピー先計算機、０１２１‥ユーザプログラム、０１３１、０１３２‥メモリ、０１２２‥ユーザプログラム。
【図１】
0005509272.tif 000002
【図２】
0005509272.tif 000003
【図３】
0005509272.tif 000004
【図４】
0005509272.tif 000005
【図５Ａ】
0005509272.tif 000006
【図５Ｂ】
0005509272.tif 000007
【図６】
0005509272.tif 000008
【図７】
0005509272.tif 000009
【図８】
0005509272.tif 000010
【図９】
0005509272.tif 000011
【図１０】
0005509272.tif 000012
【図１１】
0005509272.tif 000013
【図１２】
0005509272.tif 000014
【図１３】
0005509272.tif 000015