(57)【要約】【課題】転写メモリシステムにおけるメモリ使用領域の変更の手間を軽減する。【解決手段】転写メモリシステムに用いられるノード１は、転写メモリ１１１上の領域ごとに、この領域を確保しているノード１の識別情報を示した領域管理テーブル１１２を備える。このノード１は、他のノード１から、この他のノード１が確保している領域を示した確保領域情報と、追加要求の対象である領域を示した変更領域情報とを受信したとき、この情報に基づき、領域管理テーブル１１２を更新する。また、確保領域の追加命令が発生したときには、領域管理テーブル１１２を参照して、追加命令の対象となる領域が、他のノード１により確保されていないことを確認した上で、追加命令の対象となる領域を示した変更領域情報と、領域管理テーブル１１２において自身のノードが確保している確保領域情報とを、他のノード１へ同報送信する。【選択図】図２
2008059420.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されたノード同士が周期的な同報送信を行い、前記ノードのメモリ上のデータを前記ノード同士で共有する転写メモリシステムに用いられるノードであって、
情報の送受信を行う通信インタフェース部と、
前記メモリ上の領域ごとに、前記領域を確保しているノードの識別情報を示した領域管理情報を記憶する記憶部と、
前記転写メモリシステムを構成する他のノードから、このノードが確保しているメモリ上の領域を示した確保領域情報と、このノードの追加要求の対象である前記メモリ上の領域を示した変更領域情報とを、前記通信インタフェース部を介して前記ネットワーク経由で受信し、
前記受信した確保領域情報および変更領域情報に基づき、前記領域管理情報を更新し、
前記メモリ上における自身のノードの確保領域の追加命令が発生したとき、前記領域管理情報を参照して、前記追加命令の対象となる領域が、前記他のノードにより確保されているか否かを判断し、
前記追加命令の対象となる領域が、前記他のノードにより確保されていないと判断したとき、前記追加命令の対象となる領域を示した変更領域情報と、前記領域管理情報において自身のノードが確保している確保領域情報とを、前記通信インタフェース部を介して前記ネットワーク経由で、前記他のノードへ送信し、
前記メモリ上へのデータ書き込み要求が発生したとき、前記領域管理情報を参照して、前記自身のノードが確保している領域にデータを書き込み、前記データを書き込んだメモリ上のデータを、前記通信インタフェース部を介して前記ネットワーク経由で、前記他のノードへ送信する
処理部と、
を備えることを特徴とする転写メモリシステムに用いられるノード。
【請求項２】
前記処理部は、
前記変更領域情報の送信後、所定時間以内に、前記他のノードから、前記送信した変更領域情報に示される領域と同じ領域に関する変更領域情報を受信し無かったとき、前記領域管理情報において前記領域を確保しているノードの識別情報を、自身のノードの識別情報とすることを特徴とする請求項１に記載の転写メモリシステムに用いられるノード。
【請求項３】
前記記憶部は、
前記転写メモリシステムを構成するノードそれぞれの領域変更に関する優先度を示した優先度情報をさらに記憶し、
前記処理部は、
前記変更領域情報の送信後、所定時間以内に、前記他のノードから、前記送信した変更領域情報に示される領域と同じ領域に関する変更領域情報を受信したとき、
前記優先度情報を参照して、前記他のノードが、自身のノードよりも優先度が高いか否かを判断し、
前記他のノードが、前記自身のノードよりも優先度が高いと判断したとき、前記変更領域情報を送信しないことを特徴とする請求項１または請求項２に記載の転写メモリシステムに用いられるノード。
【請求項４】
前記変更領域情報は、前記ノードの開放要求の対象である前記メモリ上の領域を含み、
前記処理部は、
前記受信した確保領域情報および変更領域情報に基づき、前記領域管理情報を更新し、
前記メモリ上における自身のノードの確保領域の開放命令が発生したとき、前記領域管理情報を参照して、前記開放命令の対象となる領域が、前記自身のノードにより確保されているか否かを判断し、
前記開放命令の対象となる領域が、前記自身のノードにより確保されていると判断したとき、前記変更領域情報と、前記領域管理情報において自身のノードが確保している確保領域情報とを、前記ネットワーク経由で、前記他のノードへ送信することを特徴とする請求項１に記載の転写メモリシステムに用いられるノード。
【請求項５】
前記記憶部は、
前記転写メモリシステムを構成するノードそれぞれの稼動状態を示したノード稼動監視テーブルをさらに備え、
前記処理部は、
所定時間以内に、前記他のノードから、前記確保領域情報を受信し無かった場合、前記ノード稼動監視テーブルにおける、当該ノードの稼動状態を停止として記録することを特徴とする請求項１に記載の転写メモリシステムに用いられるノード。
【請求項６】
情報を処理する処理部と、情報を記憶する記憶部と、情報の送受信を行う通信インタフェースとを備え、ネットワークに接続されたノード同士が周期的な同報送信を行い、前記ノードのメモリ上のデータを前記ノード同士で共有する転写メモリシステムに用いられるノードが、
前記転写メモリシステムを構成する他のノードから、前記このノードが確保しているメモリ上の領域を示した確保領域情報と、このノードによる変更要求の対象である前記メモリ上の領域を示した変更領域情報とを前記通信インタフェース部を介して前記ネットワーク経由で受信し、
前記受信した確保領域情報および変更領域情報に基づき、前記メモリ上の領域ごとに、前記領域を確保しているノードの識別情報を示した領域管理情報を更新し、
前記メモリ上における自身のノードの確保領域の変更命令が発生したとき、前記領域管理情報を参照して、前記変更命令の対象となる領域が、前記他のノードにより確保されているか否かを判断し、
前記変更命令の対象となる領域が、前記他のノードにより確保されていないと判断したとき、前記変更命令の対象となる領域を示した変更領域情報と、前記領域管理情報において自身のノードが確保している確保領域情報とを前記通信インタフェース部を介して前記ネットワーク経由で、前記他のノードへ送信する
ことを特徴とするメモリ領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転写メモリシステムにおけるメモリ領域管理技術に関する。
【背景技術】
【０００２】
従来から、ネットワークに接続された計算機やコントローラ等の複数の処理装置（以下、ノードと呼ぶ）間において周期的な同報送信によりデータ共有する転写メモリシステムがある。この転写メモリシステムにおいて、ノードのデータ書き込み領域は、他のノードのデータ書き込み領域と重ならないようにする必要がある。また、転写データを使用する読み出し側のノードは、どのノードがどの領域に書き込みをしているかを知っている必要がある。このため、転写メモリシステムにおいて、予めノード毎に使用できるメモリ領域を固定化する方法がとられていた（特許文献１参照）。
【特許文献１】特開平１１−３４１０３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、この転写メモリシステムにおいて、制御アプリケーションがシステム更新を行うときや、メモリ領域の使い勝手の向上させたいときに、各ノードのメモリ使用領域の変更が必要な場合もある。このような場合、各ノードのメモリ使用領域の変更は、ノードの稼動をいったん停止させ、管理者が手動で変更しなければなら無かった。
【０００４】
そこで、本発明は、前記した問題を解決し、転写メモリシステムにおけるメモリ使用領域の変更の手間を軽減する手段を提供することを目的とする。
【課題を解決するための手段】
【０００５】
このような課題を解決するために、本発明は、転写メモリシステムの各ノードが、メモリ上の領域ごとに、この領域を確保しているノードの識別情報を示した領域管理情報を備える構成とした。そして、このノードにおいて、メモリ領域の変更が必要になったときには、変更領域を示した変更領域情報と、領域管理情報において自身のノードが確保している確保領域情報とを、他のノードへ同報送信する。このとき、ノードは、領域管理情報を参照して、変更領域情報に示される領域が他のノードにより確保されていないことを確認しておく。一方、自身のノードが、他のノードから、当該他のノードの確保領域情報および変更領域情報を受信したときには、これらの情報に基づき、領域管理情報を更新する。この後、ノードにおいてメモリ上へのデータ書き込み要求が発生したときには、この領域管理情報を参照して、自身のノードが確保している領域にデータを書き込む構成とした。
【発明の効果】
【０００６】
本発明によれば、転写メモリシステムのメモリ領域を変更するとき、ノードが自動で変更するので、ノードの稼動をいったん停止させ、管理者が手動で変更する必要がなくなる。また、転写メモリシステムのノードはそれぞれ、どのメモリ領域を確保しているか知った上で変更するので、メモリ領域の変更を確実に行うことができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明を実施するための最良の形態（以下、実施の形態とする）について、図面を参照して詳細に説明する。
【０００８】
図１は、本発明の実施の形態の転写メモリシステムの全体構成を例示した図である。図１において、ノード１（１ａ,１ｂ,１ｃ,１ｄ）はネットワーク１４経由で、転写メモリ１１１（後記）に記憶されたデータのコピーや、転写メモリ１１１の転写管理情報の送受信を行う。ここでの転写メモリ１１１のデータのコピーや転写管理情報の送受信には、ブロードキャスト通信、ＩＰ（Internet Protocol）マルチキャスト通信等の同報送信を用いる。なお、システム内のノード数は、図１に例示した数に限定されない。
【０００９】
図２は、図１のノードの構成を示すブロック図である。ノード１は、コントローラ（制御装置）、ワークステーション、パーソナルコンピュータ等のコンピュータである。このノード１は、揮発／不揮発性メモリやハードディスク装置を含む記憶部１１と、中央処理装置（ＣＰＵ、Central Processing Unit）等からなる処理部１２と、通信インタフェース（通信Ｉ／Ｆ）１３とを備える。この通信インタフェース１３は、ネットワーク１４との物理的接続およびネットワークドライバやＴＣＰ（Transmission Control Protocol/Internet Protocol）、ＵＤＰ／ＩＰ（User Datagram Protocol/Internet Protocol）レイヤまでのプロトコルが実装されている。なお、ノード１には、それぞれのノードを一意に識別するノード番号およびこのノード１が領域変更をする際の優先順位（あるいは優先度）が付与され、この優先順位に関する情報は記憶部１１に記憶される。
【００１０】
記憶部１１は、転写メモリ１１１と、領域管理テーブル（領域管理情報）１１２と、ノード稼動監視テーブル１１３とを備える。
【００１１】
転写メモリ１１１は、ネットワーク１４経由で同報送信されたデータをノード１間の共有メモリデータとして格納する領域である。
【００１２】
領域管理テーブル１１２は、転写メモリ１１１の領域ごとのノード１（１ａ〜１ｄ）による使用状況を示したテーブルである。この領域管理テーブル１１２の情報は、ノード１それぞれから同報送信された転写管理情報を基に、転写領域管理部１２３（後記）により書き込まれる。領域管理テーブル１１２の詳細は、図面を用いて後記する。
【００１３】
ノード稼動監視テーブル１１３は、システム内のノード１それぞれの稼動／停止状態管理情報を示したテーブルである。この情報も転写領域管理部１２３により書き込まれる。
【００１４】
処理部１２は、受信処理部１２１と、送信処理部１２２と、転写領域管理部１２３と、転写メモリアクセス制御部１２４と、制御アプリケーション１２５とを備える。
【００１５】
受信処理部１２１は、他ノード（システム内の他のノード１）からフレームを受信する。そして、この受信したフレームのうち、転写データを転写メモリ１１１に記録し、転写管理情報を転写領域管理部１２３に転送する。
【００１６】
送信処理部１２２は、転写メモリ１１１に書き込まれたデータをフレーム化して、他ノードへ同報送信する。なお、この送信処理部１２２はタイマを備え、このタイマにより所定周期ごとに転写メモリ１１１に書き込まれたデータを同報送信する。また、転写メモリ１１１の転写管理情報もフレーム化して、他ノードへ同報送信する。
【００１７】
制御アプリケーション１２５は、転写メモリ１１１に対するデータ書き込みおよび読み込みを行う。
【００１８】
転写領域管理部１２３は、他ノードから受信した転写管理情報、または自ノードにおける制御アプリケーション１２５からの領域確保指示を基に、領域管理テーブル１１２に情報を書き込む。また、この転写領域管理部１２３は、転写管理情報の送信タイミング時に、自ノードの転写管理情報を作成し、送信処理部１２２に渡す。
【００１９】
転写メモリアクセス制御部１２４は、自ノードの領域管理テーブル１１２を参照して、転写メモリ１１１の有効領域（書き込みおよび読み取り可能な領域）を判断する。つまり、自ノードに確保された領域を判断する。そして、転写メモリアクセス制御部１２４は、この判断結果に基づき、制御アプリケーション１２５による転写メモリ１１１へのアクセスを制御する。
【００２０】
図３を用いて転写メモリ１１１を説明する。図３は、図２の転写メモリを例示した図である。転写メモリ１１１は、複数バイトを１ブロックとしたブロックに分けられ、例えば、図３に示すように、転写メモリ開始アドレス「Ａ」から、１ブロックが「Ｂバイト」のブロックにより１６個のブロックに分けられる。
【００２１】
次に、図４を用いて領域管理テーブル１１２を説明する。図４は、図２の領域管理テーブルを例示した図である。図４に示すように、領域管理テーブル１１２には、転写メモリ１１１の領域（ブロック）ごとに、そのブロックを識別するブロック番号と、そのブロックを確保しているノード１の識別情報である確保ノード番号と、そのブロックにおけるデータ更新時刻と、そのブロックが現在変更要求中であるときには、その変更要求の種類（開放／追加）を示した変更要求と、変更カウンタとが含まれる。この変更カウンタは、他ノードに対し、変更要求を行う残り回数を示したものである。ここでの変更要求は、後記する変更領域情報を含む転写管理情報の送信により行われる。なお、本実施の形態において、ある領域がノード１により確保されている状態とは、この領域管理テーブル１１２における確保ノード番号に、このノード１のノード番号が記載され、かつ、変更要求の欄に何も記載されていない状態のことである。
【００２２】
例えば、図４の領域管理テーブル１１２において、ブロック番号「２」のブロックを確保しているノードのノード番号は「１」であることを示す。また、このブロックにおけるデータ更新時刻は「１０：１０：００.１２３」であることを示す。
【００２３】
また、ブロック番号「４」のブロックは、ノード番号「３」のノード１により変更要求中であり、まだノード１に確保されていない状態であることを示す。そして、ノード番号「３」のノード１が、この領域を確保するためには、あと「３（回）」、他ノードへ追加要求をする必要があることを示す。このように、領域の変更を確定する前に、複数回変更要求を行うのは、同じ領域について他ノードからの変更要求があったとき、同じ領域を複数のノード１に割り当てないようにするためである。なお、このとき、どちらのノード１に領域を割当てるかは、記憶部１１に記憶されるノードごとの優先順位の情報に基づき判断する。このときの判断の詳細は、フローチャートを用いて後記する。
【００２４】
次に、図５を用いてノード稼動監視テーブル１１３を説明する。図５は、図２のノード稼動監視テーブルを例示した図である。図５に示すように、ノード稼動監視テーブル１１３には、システムに接続されているノード１のノード番号と、そのノード１の稼動状態と、管理情報更新時間（転写管理情報の更新時刻）とが示される。例えば、図５のノード稼動監視テーブル１１３において、ノード番号「１」のノード１は「稼動中」であり、管理情報の更新時刻は「１０：１０：００.４０３」であることを示す。また、ノード番号「３」のノード１は「停止中」であり、管理情報の最終更新時刻は「１０：０８：００．３２１」であることを示す。さらに、ノード番号「４」のノード１は「無（ネットワーク１４に接続されていない状態）」であることを示す。
【００２５】
図６（ａ）は、本実施の形態における転写データ伝送フレームを例示した図である。図６（ａ）を用いてノード１から所定周期で同報送信される転写データ伝送フレームを説明する。図６（ａ）に示すように、転写データ伝送フレームは、ヘッダ部６１と書込データ６２とから構成される。ヘッダ部６１には、転写データ伝送フレーム識別子、フレームサイズ、送信元ノード番号、フレーム通番、送信周期等の情報が含まれる。また、書込データ６２には、総書込領域数（ブロック数）と、各書込領域ごとに、書込先頭ブロック番号、連続ブロック数、書込データ等が含まれる。
【００２６】
ノード１は、このような転写ノード伝送フレームを他ノードへ送信することにより、自ノードの転写メモリ１１１に書き込まれたデータを他ノードへ転写する。
【００２７】
次に、転写管理情報伝送フレームを説明する。図７は、本実施の形態における転写管理情報伝送フレームを例示した図である。図７に例示するように、転写管理情報伝送フレームは、ヘッダ部７１と、転写管理情報７２とから構成され、この転写管理情報７２は、確保領域情報７２１と変更領域情報７２２とが含まれる。ヘッダ部７１には、転写管理情報伝送フレーム識別子、フレームサイズ、送信元ノード番号、フレーム通番、送信周期等の情報が示される。確保領域情報７２１には、総確保領域数、フレームを送信するノード１が送信時点で確保している領域の先頭ブロック番号（確保先頭ブロック番号）、先頭ブロックからの連続ブロック数が含まれる。また、変更領域情報７２２は、総変更領域数、変更要求の対象である領域の先頭ブロック番号（変更先頭ブロック番号）、先頭ブロックからの連続ブロック数、変更区分（追加／開放）が含まれる。
【００２８】
ノード１は、このような転写管理情報伝送フレームを他ノードへ送信することにより、システム内の他ノードに転写メモリ１１１の確保領域、変更領域（追加領域、開放領域）を通知することができる。
【００２９】
次に、図６（ｂ）を用いて、制御アプリケーション１２５が転写メモリ１１１の読み出しを実行するときに引き渡されるデータのデータフォーマットを説明する。図６（ｂ）は、制御アプリケーションが転写メモリの読み出しを実行するときに引き渡されるデータのデータフォーマットを例示した図である。図６（ｂ）に示すように、転写メモリ１１１の読み出しを実行するときに引き渡されるデータは、ブロック番号ごとに、そのブロックに記憶されたデータと、そのデータに関する付加情報とが含まれる。この付加情報は、そのデータが正常なものであるか、未更新（所定期間以上更新されていないもの）であるか、無効なものかを示した情報である。この付加情報の詳細は、後記する。
＜動作概要＞
次に、図８を用いて、ノード１の動作の概要を説明する。図８は、図２のノードの動作の概要を示したフローチャートである。
【００３０】
まず、ノード１は、ネットワーク１４（図１参照）に接続された他ノードから転写管理情報を受信し、この受信した転写管理情報に基づく領域管理テーブルの更新処理を行う（Ｓ８１）。次に、ノード１は、転写管理情報の送信処理を行う（Ｓ８２）。つまり、自身のノード１が確保している領域の情報と、変更要求の領域があればその領域の情報を含む転写管理情報を、他ノードへ同報送信する。そして、ノード１は、転写データの送信処理を行う。つまり、転写データを他ノードへ送信（同報送信）する（Ｓ８３）。また、他ノードからの転写データの受信処理を行う（Ｓ８４）。転写メモリシステムを構成するノード１は以上のような処理を繰り返し、お互いに転写メモリ１１１上のデータを共有する。
【００３１】
＜他ノードから転写管理情報を受信して領域管理テーブルを更新する手順＞
次に、図９を用いて、図８のＳ８１の処理を詳細に説明する。図９は、図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。転写領域管理部１２３は、本システムが起動されると、領域管理テーブル１１２およびノード稼動監視テーブル１１３のデータをクリアし、以下の手順を実行する。
【００３２】
転写領域管理部１２３は、受信処理部１２１経由で転写管理情報伝送フレーム（図７参照）を受信すると（Ｓ３０２のＹｅｓ）、受信したフレームのヘッダ部７１から送信元ノード番号を取り込む（Ｓ３０３）。次に、転写領域管理部１２３は、受信したフレームにおける確保領域情報７２１を領域管理テーブル１１２に反映する（Ｓ３０４）。
【００３３】
例えば、Ｓ３０２で受信したフレームにおける送信元ノード番号が「１」であり、確保領域情報７２１に示される確保領域のブロック番号が「２,１３〜１５」であるとき、転写領域管理部１２３は、この情報を、図４に例示するような領域管理テーブル１１２として反映する。
【００３４】
次に、転写領域管理部１２３は、Ｓ３０２で受信したフレームに、変更領域情報７２２が有るか否かを判断する（Ｓ３０５）。ここで、Ｓ３０２で受信したフレームに、変更領域情報７２２が有るときには（Ｓ３０５のＹｅｓ）、この変更領域情報７２２に示される追加領域（新追加領域）に対し、既に他ノードからの追加要求が有るか否かを確認する（Ｓ３０６）。このときの確認は、領域管理テーブル１１２における、この領域（ブロック）に関する変更要求の有無により確認する。
【００３５】
一方、Ｓ３０５において、受信したフレームに変更領域情報７２２が無いときは（Ｓ３０５のＮｏ）、S３１０へ進む。
【００３６】
Ｓ３０６において、変更領域情報７２２に示される追加領域について、他ノードからの追加要求が無いとき（Ｓ３０６のＮｏ）、Ｓ３０２で受信したフレームにおける変更領域情報７２２に示される送信元ノード番号、変更領域の情報（追加領域情報）を領域管理テーブル１１２に反映する（Ｓ３０８）。
【００３７】
一方、Ｓ３０６において、新追加領域は既に追加要求が有ると判断されたとき（Ｓ３０６のＹｅｓ）、つまり、変更領域情報７２２に示される追加領域について、既に他ノードから追加要求がされているとき、転写領域管理部１２３は、今回、変更領域情報７２２により追加要求をしているノード１（新ノード）と、既に追加要求を行っているノード１（既ノード）との間で優先順位の比較を行い、優先順位の高いノード１の追加要求を領域管理テーブル１１２に反映する。
【００３８】
すなわち、まず、転写領域管理部１２３は、記憶部１１に記憶されている各ノード１の優先順位の情報を参照して、新ノードの方が、既ノードよりも優先順位が高いか否かを判断する（Ｓ３０７）。そして、新ノードの方が、既ノードよりも優先順位が高いと判断したとき（Ｓ３０７のＹｅｓ）、Ｓ３０２で受信したフレームに示される変更領域情報７２２に示される送信元ノード番号、変更領域の情報（追加領域情報）を領域管理テーブル１１２に反映し（Ｓ３０８）、次に、転写領域管理部１２３は、受信したフレームに示される開放領域情報を領域管理テーブル１１２に反映する（Ｓ３０９）。
一方、Ｓ３０７において、既ノードの方が、新ノードよりも優先順位が高いと判断したとき（Ｓ３０７のＮｏ）、Ｓ３０９へ進む。
【００３９】
このようにして、転写領域管理部１２３は、システム内の他ノードから受信したフレームを基に、領域管理テーブル１１２にデータを更新する。この後、転写領域管理部１２３は、ノード稼動監視テーブル１１３における、該当ノード（転写管理情報伝送フレームの送信元のノード）の状態を「稼動」に設定する（Ｓ３１０）。また、転写領域管理部１２３は、該当ノードの管理情報更新時刻を現在時刻に更新し（Ｓ３１１）、ノード稼動監視テーブル１１３を更新すると、Ｓ３０２へ戻り、転写管理情報伝送フレームの受信を待つ。
【００４０】
なお、前記したＳ３０２において、まだ転写管理情報伝送フレームを受信していないとき（Ｓ３０２のＮｏ）、転写領域管理部１２３は、ノード稼動監視テーブル１１３を監視し、管理情報更新時刻が、停止判断時間を超過しているノードが有るか否かを判断する（Ｓ３１２）。つまり、所定時間、転写管理情報伝送フレームを受信していないノードが有るか否かを判断する。ここで、ノード稼動監視テーブル１１３に停止判断時間を超過しているノードが有る場合（Ｓ３１２のＹｅｓ）、ノード稼動監視テーブル１１３の該当ノードの状態（稼動状態）に「停止」を設定し、Ｓ３１１へ進む。一方、ノード稼動監視テーブル１１３に停止判断時間を超過しているノードが無い場合（Ｓ３１２のＮｏ）、Ｓ３０２へ戻り、転写管理情報伝送フレームの受信を待つ。
【００４１】
＜転写管理情報の送信処理＞
次に、図１０を用いて、図８のＳ８２の処理を詳細に説明する。図１０は、図２の転写領域管理部による転写管理情報送信手順を示したフローチャートである。転写領域管理部１２３は、転写管理情報伝送フレームの周期送信タイミングになると起動され、以下の手順を実行する。
【００４２】
まず、転写領域管理部１２３は、領域管理テーブル１１２のデータを読み込む（Ｓ４０１）。次に、Ｓ４０１で読み込んだデータから、自ノード番号が設定されている領域の確保領域情報（図７の確保領域情報７２１参照）を生成する（Ｓ４０２）。例えば、自ノードのノード番号が「１」のとき、図４に例示した領域管理テーブル１１２のうち、このノード番号「１」が設定されている領域のブロック番号「２,１３〜１５」を用いて、当該ノード１の確保領域情報７２１を生成する。
【００４３】
また、転写領域管理部１２３は、Ｓ４０１で読み込んだデータのうち、自ノード番号が設定されている領域について、変更要求（追加要求、または開放要求）が設定されているか否かを確認する（Ｓ４０３）。ここで、当該領域に変更要求が設定されていない場合（Ｓ４０３のＮｏ）、転写領域管理部１２３は、この確保領域情報７２１に、ヘッダ部７１を付加した転写管理情報を生成する（Ｓ４０６）。この後、転写領域管理部１２３は、Ｓ４０６で生成した転写管理情報を送信処理部１２２へ出力し、送信処理部１２２は、この転写管理情報を転写管理情報伝送フレームに変換して、他ノードへ同報送信する（Ｓ４０７）。そして、次の周期送信タイミングになったとき、Ｓ４０１以降の処理を再度実行する。
【００４４】
一方、Ｓ４０３において、当該領域に変更要求が設定されている場合（Ｓ４０３のＹｅｓ）、転写領域管理部１２３は、自ノード番号と変更要求が設定されている変更領域情報７２２を生成する（Ｓ４０４）。そして、転写領域管理部１２３は、領域管理テーブル１１２において、確保ノード番号として自ノード番号が設定されており、かつ、変更要求が設定されている全てのブロックの変更カウンタ値を「１」減算する（Ｓ４０５）。次に、Ｓ４０６へ進み、転写領域管理部１２３は、転写管理情報を生成する（Ｓ４０６）。なお、ここでの転写管理情報は、Ｓ４０２で生成した確保領域情報と、Ｓ４０４で生成した変更領域情報とを含むものである。そして、前記したＳ４０７と同様に、送信処理部１２２は、Ｓ４０６で生成した転写管理情報を転写管理情報伝送フレームに変換して、他ノードへ同報送信する。そして、次の周期送信タイミングになったとき、Ｓ４０１以降の処理を再度実行する。
【００４５】
このようにして、領域管理テーブル１１２において、転写メモリ１１１の変更要求が設定されている場合、その旨を通知する転写管理情報伝送フレームがシステム内のノード１に周期的に伝送される。
【００４６】
＜自発的に領域管理テーブルを更新するときの手順。（１）領域追加＞
次に、図１１を用いて、制御アプリケーション２５が転写メモリ１１１の領域追加命令を出力したときの、転写領域管理部による領域管理テーブルの更新手順を説明する。図１１は、図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。
【００４７】
まず、転写領域管理部１２３は、制御アプリケーション２５から、転写メモリ１１１において領域（ブロック）の追加を指示する領域追加命令を受け付けると（Ｓ５００）、領域管理テーブル１１２のデータを読み込む（Ｓ５０１）。
【００４８】
転写領域管理部１２３は、読み込んだ領域管理テーブル１１２のデータを参照して、Ｓ５００で受け付けた追加命令の対象である領域（追加要求領域）が既に使われているか否かを確認する（Ｓ５０２）。つまり、領域管理テーブル１１２（図７参照）において、当該追加要求領域（ブロック）を確保しているノード１があるか否かを判断する。ここで、追加要求領域を確保しているノード１が有るとき（Ｓ５０２のＹｅｓ）、そのまま処理を終了するが、この追加要求領域が、追加要求領域を確保しているノード１が無いとき（Ｓ５０２のＮｏ）、以下の処理を実行する。
【００４９】
すなわち、転写領域管理部１２３は、領域管理テーブル１１２において、該当領域（追加要求領域）の「確保ノード番号」に自ノード番号に設定し、「変更要求」に「追加」を設定する（Ｓ５０３）。また、該当領域の変更カウンタに初期値を設定する（Ｓ５０４）。ここでの初期値は、例えば「３（回）」等である。
【００５０】
この後、転写領域管理部１２３は、領域管理テーブル１１２のデータを基に、前記した図１０の手順にしたがって、転写管理情報送信処理を実行し（Ｓ５０５）、自ノードが領域追加を要求している旨を、転写管理情報伝送フレームにより他ノードへ通知する。
【００５１】
次に、転写領域管理部１２３は、領域管理テーブル１１２における「変更カウンタ」の値を監視し、この値が０以下になったか否か判断する（Ｓ５０６）。つまり、転写領域管理部１２３は、自ノードが追加領域を要求していることを示す転写管理情報伝送フレームを、Ｓ５０４で設定した初期値の回数分（例えば、３回分）、同報送信したか否かを確認する。
【００５２】
ここで、まだ「変更カウンタ」の値が０よりも大きいとき（Ｓ５０６のＮｏ）、転写領域管理部１２３は、受信処理部１２１のバッファ等をチェックして、同じ領域に対し追加変更要求する他ノードからのフレーム（転写管理情報伝送フレーム）が受信されているか否かを判断する（Ｓ５０７）。つまり、自ノードが追加したい転写メモリ１１１の領域（ブロック）について、他ノードからも追加要求がされているか否かを判断する。
【００５３】
ここで、他ノードからも当該追加領域に対し追加要求がされているときには（Ｓ５０７のＹｅｓ）、前記した図９のＳ３０７と同様に、転写領域管理部１２３は、自ノード（既ノード）と、他ノード（新ノード）との優先順位の比較を行う（Ｓ５０８）。
【００５４】
ここで、新ノードの方が、優先順位が高ければ（Ｓ５０８のＹｅｓ）、領域管理テーブル１１２における当該追加領域の「確保ノード番号」、「変更要求」、「変更カウンタ」の値をクリアする（Ｓ５０９）。つまり、他ノード（新ノード）の追加要求を優先させるため、領域管理テーブル１１２における自ノードの追加要求をクリアする。
【００５５】
一方、Ｓ５０８において、他ノード（新ノード）よりも自ノード（既ノード）の方が、優先順位が高ければ（Ｓ５０８のＮｏ）、Ｓ５０６へ戻る。
【００５６】
なお、Ｓ５０６おいて、領域管理テーブル１１２における「変更カウンタ」の値が既に０以下になっているとき（Ｓ５０６のＹｅｓ）、転写領域管理部１２３は、当該追加領域に関する「変更要求」、「変更カウンタ」をクリアし、領域を確保する（Ｓ５１０）。この後、転写領域管理部１２３は、前記した図９と同様の手順により、領域管理テーブル１１２における自ノードの情報を基に転写管理情報生成処理を実行し、自ノードの領域が追加されたことを他ノードに通知する。
【００５７】
なお、Ｓ５０７において、当該追加領域に対し他ノードから追加変更要求をする転写管理情報伝送フレームが無いとき（Ｓ５０７のＮｏ）、Ｓ５０６へ戻り、「変更カウンタ」が０以下になった段階で（Ｓ５０６のＹｅｓ）、Ｓ５１０へ進む。また、Ｓ５０８において、他ノードよりも自ノードの方が、優先順位が高いときも（Ｓ５０８のＮｏ）、Ｓ５０６へ戻り、「変更カウンタ」が０以下になった段階で（Ｓ５０６のＹｅｓ）、Ｓ５１０へ進む。
【００５８】
このようにして、ノード１は、転写メモリ１１１に自ノードの領域を追加する。ここで、ノード１は他ノードからも同じ領域の追加要求があったとき、それぞれのノードに設定された優先順位により、どちらのノードの追加要求を優先するかを判断するので、追加要求の衝突を避けることができる、また、ノード１は、制御アプリケーション１２５から領域追加命令があったとき、すぐに転写メモリ１１１に領域追加をするのではなく、所定時間内（つまり、追加要求を所定回数同報送信する間）、他ノードからの追加要求の受信を待つ。これにより優先順位の高いノードに対し確実に転写メモリ１１１の領域を割り当てることができる。さらに、このように転写メモリ１１１の領域追加要求を複数回同報送信することで、自ノードの領域追加要求を、確実にシステム内の他ノードに周知させることができる。
【００５９】
＜自発的に領域管理テーブルを更新するときの手順。（２）領域開放＞
次に、図１２を用いて、制御アプリケーション２５が転写メモリ１１１の領域開放命令を出力したときの、転写領域管理部による領域管理テーブルの更新手順を説明する。図１２は、図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。
【００６０】
まず、転写領域管理部１２３は、制御アプリケーション１２５から、転写メモリ１１１の領域（ブロック）の開放命令を受け付けると（Ｓ６００）、図１１のＳ５０１と同様に領域管理テーブル１１２のデータを読み込む（Ｓ６０１）。
【００６１】
転写領域管理部１２３は、読み込んだ領域管理テーブル１１２のデータを参照して、Ｓ６００で受け付けた開放命令の対象である領域（開放要求領域）は、自ノードが確保しているか否かを確認する（Ｓ６０２）。つまり、領域管理テーブル１１２（図７参照）において当該開放要求領域（ブロック）の「確保ノード番号」が自ノード番号か否かを判断する。ここで、当該開放要求領域を自ノードが確保していないとき（Ｓ６０２のＮｏ）、そのまま処理を終了するが、当該開放要求領域を自ノードが確保していることが確認できたとき（Ｓ６０２のＹｅｓ）、転写領域管理部１２３は、以下の処理を実行する。
【００６２】
すなわち、まず、転写領域管理部１２３は、領域管理テーブル１１２において、当該開放要求領域（ブロック）における「変更要求」を「開放」に設定する（Ｓ６０３）。また、当該開放要求領域における変更カウンタに初期値を設定する（Ｓ６０４）。なお、ここでの初期値は、前記した領域追加の場合と同様に、例えば「３（回）」等とする。
【００６３】
この後、転写領域管理部１２３は、領域管理テーブル１１２のデータを基に、前記した図９の手順にしたがって、転写管理情報送信処理を実行し（Ｓ６０５）、自ノードが領域開放を要求している旨を転写管理情報伝送フレームにより他ノードへ通知する。
【００６４】
次に、転写領域管理部１２３は、前記した領域追加の場合と同様に、領域管理テーブル１１２における「変更カウンタ」の値を監視し、この値が０以下になったか否か判断する（Ｓ６０６）。つまり、転写領域管理部１２３は、自ノードが領域開放を要求していることを示す転写管理情報伝送フレームを、Ｓ６０４で設定した初期値の回数分（例えば、３回分）、同報送信したか否かを確認する。そして、「変更カウンタ」の値が０以下になったとき（Ｓ６０６のＹｅｓ）、転写領域管理部１２３は、領域管理テーブル１１２における当該開放要求領域の「確保ノード番号」、「変更要求」、「変更カウンタ」の値をクリアし（Ｓ６０７）、当該開放要求領域の開放を確定する。
【００６５】
このようにして、ノード１は、転写メモリ１１１における自ノードの領域の開放を行う。また、領域を開放する場合も、転写メモリ１１１の領域開放要求を複数回同報送信することで、自ノードの領域開放要求を、確実にシステム内の他ノードに周知させることができる。
【００６６】
＜制御アプリケーションが転写メモリを読み出す手順＞
次に、図１３を用いて、図８のＳ８３の処理を詳細に説明する。図１３は、図８のＳ８３の処理において、図２の制御アプリケーションが転写メモリを読み出す手順を示したフローチャートである。
【００６７】
まず、転写メモリアクセス制御部１２４は、制御アプリケーション１２５から転写メモリ１１１の読み出し要求を受け付ける（Ｓ７００）。これを受けて転写メモリアクセス制御部１２４は、制御アプリケーション１２５が読み出し要求をした転写メモリ１１１の領域（ブロック）の中から、未処理の読出要求領域を１つ選択する（Ｓ７０１）。
【００６８】
次に、転写メモリアクセス制御部１２４は、領域管理テーブル１１２を参照して、当該選択領域を確保しているノード１があるか否かを判断する（Ｓ７０２）。ここで、当該選択領域を確保しているノード１が有るとき（Ｓ７０２のＹｅｓ）、ノード稼動監視テーブル１１３（図５参照）を参照して、このノード１の状態が「稼動」か、否かを判断する（Ｓ７０３）。ここで、このノード１が「稼動」であるとき（Ｓ７０３のＹｅｓ）、領域管理テーブル１１２における当該選択領域のデータ更新時刻を参照して、前回のデータ更新から所定時間経過しているか否かを判断する（Ｓ７０４）。ここで、まだ当該選択領域における前回のデータ更新から所定時間経過していないとき（Ｓ７０４のＹｅｓ）、転写メモリアクセス制御部１２４は、制御アプリケーション１２５へ引き渡すデータフォーマット（図６（ｂ）参照）に、転写メモリ１１１の当該選択領域に記録されたデータを格納する。また、このデータの付加情報として「正常」をセットする（Ｓ７０５）。つまり、このデータは、稼動中のノード１が、所定時間以内に書き込んだデータであるので、正常なデータである可能性が高いことを示しておく。
【００６９】
次に、転写メモリアクセス制御部１２４は、Ｓ７００で要求された読出要求領域すべてについて、処理したとき（Ｓ７０９のＹｅｓ）、制御アプリケーション１２５へ転写データを引き渡す（Ｓ７１０）。この後、制御アプリケーション１２５は、この転写データを、送信処理部１２２経由で、システム内の他ノードへ送信（同報送信）する。なお、Ｓ７００で要求された読出要求領域のうち、まだ処理が終了していない領域があるときは（Ｓ７０９のＮｏ）、Ｓ７０１へ戻る。
【００７０】
なお、Ｓ７０２において、当該選択領域を確保しているノード１が無いとき（Ｓ７０２のＮｏ）、および、当該選択領域を確保しているノード１の状態が「稼動」ではないとき（Ｓ７０３のＮｏ）、Ｓ７０６へ進む。そして、転写メモリアクセス制御部１２４は、制御アプリケーション１２５へ引き渡すデータの当該選択領域に関する付加情報に「無効」をセットし（Ｓ７０６）、Ｓ７０９へ進む。すなわち、転写メモリ１１１の当該選択領域が、どのノード１にも確保されていない場合や、稼動していないノード１に確保されている場合、この領域のデータは無効であることを示しておく。
【００７１】
また、Ｓ７０４において、領域管理テーブル１１２における当該選択領域における前回のデータ更新から、所定時間経過しているとき（Ｓ７０４のＹｅｓ）、転写メモリアクセス制御部１２４は、制御アプリケーション１２５へ引き渡すデータフォーマットに、データを格納し、このとき、当該選択領域に関する付加情報に「未更新」をセットする（Ｓ７０７）。つまり、当該選択領域に書き込まれたデータは、稼動しているノード１により書き込まれたものであるが、前回のデータ更新から所定時間経過しているので、その旨を付加情報として付与する。そして、Ｓ７０９へ進む。
【００７２】
このようにして、制御アプリケーション１２５には、転写メモリ１１１の転写データが引き渡される。このとき、転写アクセス制御部１２４は、転写データに含まれるデータそれぞれが「正常」か、「未更新」か、「無効」か、を付加情報として付与して引き渡すので、この転写データを受け取った制御アプリケーション１２５は、データそれぞれの信頼性を確認することができる。
【００７３】
なお、前記した実施の形態において、ノード１はノード稼動監視テーブル１１３を含まない構成としてもよい。また、制御アプリケーション１２５に引き渡される転写データには、付加情報を含めないようにしてもよい。
【００７４】
さらに、前記した実施の形態において、ノード１は、メモリ領域の追加を確定させるまで、転写管理情報を所定周期で、所定回数（例えば、３回）生成し、送信するようにしたが、メモリ領域の追加の要求命令が発生してから、所定時間経過するのを待って、メモリ領域の追加を確定させるようにしてもよい。このような方法によっても、他ノードの追加要求と自ノードの追加要求とが衝突するのを防止することができる。
【００７５】
本実施の形態に係るノード１は、前記したような処理を実行させる専用回路あるいはプログラムによって実現することができる。ノード１をプログラムにより実現する場合、そのプログラムをコンピュータによる読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）に記憶して提供することが可能である。また、そのプログラムを、ネットワークを通して提供することも可能である。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態のシステムの全体構成を例示した図である。
【図２】図１のノードの構成を示すブロック図である。
【図３】図２の転写メモリを例示した図である。
【図４】図２の領域管理テーブルを例示した図である。
【図５】図２のノード稼動監視テーブルを例示した図である。
【図６】（ａ）は、本実施の形態における転写データ伝送フレームを例示した図であり、（ｂ）は、（ａ）の転写データ伝送フレームに含まれる書込データを例示した図である。
【図７】本実施の形態における転写管理情報伝送フレームを例示した図である。
【図８】図２のノードの動作の概要を示したフローチャートである。
【図９】図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。
【図１０】図２の転写領域管理部による転写管理情報送信手順を示したフローチャートである。
【図１１】図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。
【図１２】図２の転写領域管理部による領域管理テーブルの更新手順を示したフローチャートである。
【図１３】図２の制御アプリケーションが転写メモリを読み出す手順を示したフローチャートである。
【符号の説明】
【００７７】
１      ノード
１１    記憶部
１２    処理部
１３    通信インタフェース
１４    ネットワーク
２４    転写メモリアクセス制御部
２５    制御アプリケーション
６１    ヘッダ部
６２    書込データ
７１    ヘッダ部
７２    転写管理情報
１１１  転写メモリ
１１２  領域管理テーブル
１１３  ノード稼動監視テーブル
１２１  受信処理部
１２２  送信処理部
１２３  転写領域管理部
１２４  転写メモリアクセス制御部
１２５  制御アプリケーション
７２１  確保領域情報
７２２  変更領域情報
【図１】
2008059420.tif 000003
【図２】
2008059420.tif 000004
【図３】
2008059420.tif 000005
【図４】
2008059420.tif 000006
【図５】
2008059420.tif 000007
【図６】
2008059420.tif 000008
【図７】
2008059420.tif 000009
【図８】
2008059420.tif 000010
【図９】
2008059420.tif 000011
【図１０】
2008059420.tif 000012
【図１１】
2008059420.tif 000013
【図１２】
2008059420.tif 000014
【図１３】
2008059420.tif 000015