(58)【調査した分野】(Int.Cl.,DB名)
プログラムを実行するプロセッサとメモリとを備える情報処理装置を複数含んで構成され、前記複数の情報処理装置のそれぞれが、前記メモリに記憶しているデータを他の前記情報処理装置に送信することにより、前記データを前記複数の情報処理装置の間で共有するデータ共有システムであって、
前記複数の情報処理装置のそれぞれは、
他の前記情報処理装置から送信されてきた前記データを受信するデータ受信部と、
前記受信したデータ、及び自身が記憶しているデータを前記メモリ内の所定の記憶領域に転送して共有データとして記憶する共有データ記憶部と、
前記自身の共有データを記憶するために割り当てられる前記記憶領域上の割り当て領域、及び、前記他の情報処置装置の前記共有データを記憶するために割り当てられる前記記憶領域上の割り当て領域に関する情報である領域管理情報を記憶する領域情報記憶部と、
前記記憶領域上の割り当て領域の内容の変更を要求する旨、及び前記変更する割り当て領域を示す情報である変更要求を生成し、生成した前記変更要求を他の前記情報処理装置に送信する変更要求送信部と、
前記他の情報処理装置が送信してきた前記変更要求を受信し、受信した前記変更要求と前記領域管理情報とに基づき、前記割り当て領域の変更を行う領域変更部と、
を備え、
前記変更要求送信部は、自身と現在通信していない他の前記情報処理装置があるか否かを判断し、自身と現在通信していない前記情報処理装置があると判断した場合には、当該情報処理装置に関して前記記憶領域に割り当てられている割り当て領域の解放を要求する旨、及び当該解放する領域を示す前記変更要求である解放要求を生成し、生成した前記解放要求を、他の情報処理装置が生成した解放要求を含むフレームデータとして他の各情報処理装置に送信し、
前記領域変更部は、他の前記情報処理装置が送信してきた、前記フレームデータを受信し、受信した前記フレームデータと前記領域管理情報とに基づき、通信していない情報処理装置に自身が含まれるか否かを判断し、自身が含まれると判断した場合には、自身の前記共有データを記憶するために割り当てられている前記記憶領域上の領域を解放しないように要求する旨の情報を含む前記変更要求である解放拒否を、他の前記情報処理装置に送信する一方、通信していない情報処理装置に自身が含まれていないと判断した場合には、その情報処理装置の前記共有データを記憶するために割り当てられていた前記記憶領域上の領域を解放する
ことを特徴とする、データ共有システム。
プログラムを実行するプロセッサとメモリとを備える情報処理装置を複数含んで構成され、前記複数の情報処理装置のそれぞれが、前記メモリに記憶しているデータを他の前記情報処理装置に送信することにより、前記データを前記複数の情報処理装置の間で共有するデータ共有システムにおいて実行されるデータ共有プログラムであって、
前記情報処理装置に、
他の前記情報処理装置から送信されてきた前記データを受信させ、
前記受信したデータ、及び自身が記憶しているデータを前記メモリ内の所定の記憶領域に転送して共有データとして記憶させ、
前記自身の共有データを記憶するために割り当てられる前記記憶領域上の割り当て領域、及び、前記他の情報処置装置の前記共有データを記憶するために割り当てられる前記記憶領域上の割り当て領域に関する情報である領域管理情報を記憶させ、
前記記憶領域上の割り当て領域の内容の変更を要求する旨、及び前記変更する割り当て領域を示す情報である変更要求を生成し、生成した前記変更要求を他の前記情報処理装置に送信させ、
前記他の情報処理装置が送信してきた前記変更要求を受信し、受信した前記変更要求と前記領域管理情報とに基づき、前記割り当て領域の変更を行わせ、
自身と現在通信していない他の前記情報処理装置があるか否かを判断し、自身と現在通信していない前記情報処理装置があると判断した場合には、当該情報処理装置に関して前記記憶領域に割り当てられている割り当て領域の解放を要求する旨、及び当該解放する領域を示す前記変更要求である解放要求を生成し、生成した前記解放要求を、他の情報処理装置が生成した解放要求を含むフレームデータとして他の各情報処理装置に送信する処理を実行させ、
他の前記情報処理装置が送信してきた、前記フレームデータを受信し、受信した前記フレームデータと前記領域管理情報とに基づき、通信していない情報処理装置に自身が含まれるか否かを判断し、自身が含まれると判断した場合には、自身の前記共有データを記憶するために割り当てられている前記記憶領域上の領域を解放しないように要求する旨の情報を含む前記変更要求である解放拒否を、他の前記情報処理装置に送信する一方、通信していない情報処理装置に自身が含まれていないと判断した場合には、その情報処理装置の前記共有データを記憶するために割り当てられていた前記記憶領域上の領域を解放する処理を実行させる、
機能を実現させるためのデータ共有プログラム。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【0012】
図1は、本実施形態として説明する、データ共有システム1の全体構成を説明する図である。同図に示すように、データ共有システム1は、複数のノード100(100a、100b、100c、100d、・・・)、及び管理端末200を含んで構成される。
【0013】
データ共有システム1は、例えば、鉄道会社の運行管理施設、発電所の発電管理施設、鉄工所の運用管理施設に設けられるネットワークシステムであり、ノード100は、例えば、駅、発電施設、工場機械等に設けられるコントローラ(制御装置)や、ワークステーション、パーソナルコンピュータ等の情報処理装置である。なお、以下では、ノード100を情報処理装置と称することがある。
【0014】
各ノード100は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、専用線等によるネットワーク140を介して、通信可能に接続されてい
る。各ノード100は、自身(以下、自ノードともいう)が記憶しているデータを他のノード100(以下、他ノードともいう)の全てに対し、ネットワーク140を介して、所定周期で同報送信(例えば、ブロードキャスト通信、IP(Internet Protocol)マルチ
キャスト通信)する。これにより、各ノード100は、上記データを各ノード100の間で共有データ(以下、転写データともいう)として共有することができる。
【0015】
管理端末200は、HMI(Human-Machine Interface)などの端末(情報処理装置)
であり、ネットワーク140を介して、各ノード100と通信可能に接続されている。管理端末200の詳細は後述する。
【0016】
図2は、ノード100のハードウェア構成を示す図である。同図に示すように、ノード100は、CPU(Central Processing Unit)、MPU(MicroProcessing Unit)等の
プロセッサ11と、メモリ12(RAM、ROM、NVRAM等の揮発性又は不揮発性メモリ)と、ハードディスクやSSD(Solid State Drive)等の記憶装置13と、他のノ
ード100との通信を行う通信インタフェース14と、を備える。なお、通信インタフェース14は、ネットワーク140との物理的接続を行うと共に、ネットワークドライバ等により、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)
、UDP/IP(User Datagram Protocol/Internet Protocol)レイヤまでのプロトコルによる通信を実現する。また、ノード100は、タッチパネルや操作ボタン等の入力装置15と、液晶ディスプレイ等の出力装置16と、を備えても良い。
【0017】
図3は、ノード100が備える機能を説明する図である。同図に示すように、ノード100は、受信部121、送信部122、記憶部110、転写領域管理部123、転写メモリアクセス制御部124、及び制御アプリケーション125を備える。
【0018】
このうち受信部121は、他の情報処理装置から送信されてきたデータ(データフレーム等)を受信する。
【0019】
送信部122は、他の情報処理装置にデータ(データフレーム等)を送信する。例えば、送信部122は、転写データをフレームに変換した、後述する転写データ伝送フレームを送信する。なお、この送信部122はタイマを備え、このタイマにより、所定周期ごとにデータ(フレーム)を他の情報処理装置に同報送信することができる。
【0020】
記憶部110は、受信部121が受信したデータ、及び自身が記憶しているデータを所定の記憶領域(以下、単に「記憶領域」という)に転送して共有データとして記憶する共有データ記憶部(不図示)を含む。具体的には、記憶部110は、上記データを、転写メモリ111に記憶する。
【0021】
また、記憶部110は、自身の共有データを記憶するために割り当てられる記憶領域上の割り当て領域、及び、他の情報処理装置の共有データを記憶するために割り当てられる記憶領域上の割り当て領域に関する情報である領域管理情報を記憶する領域情報記憶部(不図示)を備える。具体的には、記憶部110は、領域管理情報を領域管理テーブル112に記憶している。領域管理テーブル112は、転写メモリ111の現在の使用状況、例えば、転写メモリ111のどの領域が、どのノード100(100a〜100d)の共有データのために割り当てられているかが記憶されている。領域管理テーブル112の詳細は後述する。なお、本実施形態では、ノード100は、初めて起動される際に、領域管理テーブル112のデータをクリアするものとする。
【0022】
また、記憶部110は、ノード稼働監視テーブル113を記憶している。ノード稼働監視テーブル113には、データ共有システム1内のノード100のそれぞれの稼働状態/停止状態を示す情報(以下、稼働情報という)が記憶される。なお、本実施形態では、ノード100は、初めて起動される際に、ノード稼働監視テーブル113のデータをクリアするものとする。
【0023】
なお、稼働状態とは、ノード100が直近の所定の時間(以下、停止判断時間という)内に転写データを送信してきている、すなわち通信している状態であり、停止状態とは、ノード100が停止判断時間内に転写データを送信してきていない、すなわち通信していない状態であるものとする。
【0024】
また、記憶部110は、内部メモリ114を有している。内部メモリ114には、後述する制御アプリケーション125が書き込み又は読み込むためのデータが記憶されている。
【0025】
さらに、記憶部110は、自ノードをデータ共有システム1内で一意に識別するための情報(以下、ノード番号という)を記憶している(不図示)。
【0026】
次に、転写領域管理部123は、変更要求送信部1231、及び領域変更部1232を有する。
【0027】
このうち変更要求送信部1231は、記憶領域上の割り当て領域の内容の変更を要求する旨、及び変更する割り当て領域を示す情報である変更要求を生成し、生成した変更要求を他の情報処理装置に送信する。なお、変更要求は、後述する転写管理情報伝送フレームとして送信される。
【0028】
具体的には、例えば、変更要求送信部1231は、共有データを記憶するための領域を記憶領域上に割り当てることを要求する旨、及び割り当てる領域を示す変更要求である割り当て要求(以下、確保要求、追加要求ともいう)を生成し、生成した割り当て要求を他の情報処理装置に送信する。
【0029】
また、例えば、変更要求送信部1231は、記憶領域に割り当てられている割り当て領域の解放を要求する旨、及び解放する領域を示す変更要求である解放要求を生成し、生成した解放要求を他の情報処理装置に送信する。
【0030】
領域変更部1232は、他の情報処理装置が送信してきた変更要求を受信し、受信した変更要求と領域管理情報とに基づき、割り当て領域の変更を行う。
【0031】
具体的には、例えば、領域変更部1232は、他の情報処理装置が送信してきた割り当て要求を受信し、受信した割り当て要求と領域管理情報とに基づき、他の情報処理装置の
共有データを記憶するための領域を、記憶領域に割り当てる。
【0032】
また、例えば、領域変更部1232は、他の情報処理装置が送信してきた解放要求を受信し、受信した解放要求と領域管理情報とに基づき、他の情報処理装置の共有データを記憶するために割り当てられていた記憶領域上の領域を解放する。
【0033】
また、例えば、領域変更部1232は、他の情報処理装置が送信してきた、通信していない情報処理装置の情報を含む解放要求を受信し、受信した解放要求と領域管理情報とに基づき、通信していない情報処理装置の共有データを記憶するために割り当てられていた記憶領域上の領域を解放する。
【0034】
また、領域変更部1232は、受信した解放要求に基づき、通信していない情報処理装置が自身であるか否かを判断し、自身であると判断した場合には、自身の共有データを記憶するために割り当てられている記憶領域上の領域を解放しないように要求する旨の変更要求である解放拒否を、他の前記情報処理装置に送信する。なお、領域変更部1232は、例えば、自身と現在通信していない情報処理装置があるか否かの判断を、共有データを所定期間送信してきていない情報処理装置があるか否かによって判断する。
【0035】
なお、領域変更部1232は、同内容の変更要求を他の情報処理装置から2以上の所定回数受信した場合に、受信した変更要求に基づき、割り当て領域の変更を開始する。
【0036】
また、転写領域管理部123は、領域管理テーブル112を管理する。具体的には、転写領域管理部123は、他ノードから受信した変更要求、及び、制御アプリケーション125からの変更命令(後述)を基に、領域管理テーブル112を更新する。また、転写領域管理部123は、領域管理テーブル112へのデータの書き込み要求がある場合、内部メモリ114のデータを転写メモリ111に書き込む。
【0037】
転写メモリアクセス制御部124は、領域管理テーブル112を参照し、転写メモリ111の領域のうち自身の共有データを記憶するために確保されている領域があるか否かを判断する。そして、転写メモリアクセス制御部124は、この判断結果に基づき、制御アプリケーション125による転写メモリ111へのアクセスを制御する。
【0038】
制御アプリケーション125は、転写メモリ111へのデータの書き込みや、転写メモリ111からのデータの読み込みを行う。例えば、制御アプリケーション125は、転写データを含む所定のデータテーブル(以下、転写データテーブルという)を生成することにより、転写メモリ111の内容の読み出しの処理(以下、転写データ読み出し処理S1200という)を行う。転写データ読み出し処理S1200の詳細は後述する。
【0039】
また、制御アプリケーション125は、転写領域管理部123に対して変更要求を送信し、転写領域管理部123は、その変更要求に応じた記憶領域の内容の変更を転写領域管理部123に行わせる処理(以下、変更命令対応処理S1100という)を行う。
【0040】
以上に説明した、記憶部110及び処理部120の機能は、ノード100のハードウェアによって、もしくは、ノード100のプロセッサ11が、メモリ12又は記憶装置13に格納されているプログラムを読み出して実行することにより実現される。
【0041】
次に、転写メモリ111について説明する。
図4は、転写メモリ111の構成の一例を示す図である。転写メモリ111は、複数バイトを1ブロックとした少なくとも1つ以上のブロックからなる。例えば、同図に示すように、転写メモリ111は、アドレス「A」から始まるメモリであり、1ブロックあたり
「Bバイト」からなる16個のブロック(領域)に分けられる。本実施形態では、転写データはこのブロック単位で記憶されるものとする。そして、このブロックのそれぞれに対して、それぞれを識別するためのブロック番号が割り当てられている。
【0042】
次に、領域管理テーブル112を説明する。
図5は、領域管理テーブル112の一例を示した図である。同図に示すように、領域管理テーブル112は、転写メモリ111の各ブロックを識別するブロック番号1121、ブロック番号1121のブロックがどのノード100の共有データを記憶するために割り当てられているかを示す確保ノード番号1122(例えば、ノード番号が格納される)、ブロック番号1121のブロックの転写データの最終更新時刻を示すデータ更新時刻1123、ブロック番号1121のブロックに転写データが書き込まれる周期を示す書き込み周期1124(そのブロックに周期的に転写データを書き込む場合にのみ使用される)、確保ノード番号1122が示すノード100の内部メモリ114のアドレス(例えば、転写データを書き込む書き込み元のノード100の内部メモリアドレス)を示す内部メモリアドレス1125、ブロック番号1121のブロックの共有データに対する変更要求のの種類を示した変更要求1126、及び変更カウンタ1127の各項目を含んで構成される、少なくとも1つ以上のレコードから構成される。
【0043】
変更カウンタ1127は、ノード100が変更要求1126による変更要求に対応する処理(例えば、領域の割り当て、領域の解放)を実行するためにはあと何回、その変更要求を受信する必要があるかを示す情報である。変更カウンタ1127には、所定の初期値(例えば、3(回)、5(回))が設定される。
【0044】
なお、本実施形態では、変更要求には、確保要求、解放要求、及び解放拒否に加えて、後述する変更不可、及び変更不可を解除する変更不可解除があるものとする。これらの詳細は後述する。
【0045】
また、本実施形態においては、領域管理テーブル112において、確保ノード番号1122にノード番号が設定され、かつ、変更要求1126に何も格納されていないレコードのブロック番号1121の領域が、ノード100により割り当てられている状態であるものとする。また、確保ノード番号1122に「0」が格納されている場合には、そのレコードのブロック番号1121のブロックはどのノード100にも割り当てられていないものとする。
【0046】
ここで、領域管理テーブル112の各項目を例を挙げて説明する。
例えば、
図5において、ブロック番号1121が「2」のレコードは、転写メモリ111のブロック番号が「2」のブロックが割り当てられているノード100のノード番号は「1」であることを示している。また、このブロックにおける転写データのデータ更新時刻は「10:10:00.123」である。
【0047】
また、ブロック番号1121が「4」のレコードは、転写メモリ111のブロック番号「4」のブロック(領域)に対する変更要求(確保要求)をノード番号「3」のノード100から受信しているが(「追加」)、このノード番号「3」のノード100がこの領域を割り当てるには、あと「3」(回)、確保要求を領域管理テーブル112を記憶しているノードに送信する必要があり、まだそのブロックは当該ノードに割り当てられていない状態であることを示している。このように、2回以上の回数変更要求を送信することによって領域の内容が変更されるようにしているのは、互いに近接する期間において、同じ領域について複数のノード100から変更要求があったとき、当該領域が当該複数のノード100によって割り当てられてしまうことを防ぐためである。なお、このとき、複数のノード100のうちいずれのノード100に領域を割り当てるかは、例えば、予め各ノード
100に割り当てられた優先順位などを利用して判断することができる。
【0048】
次に、ブロック番号1121が「7」のレコードは、ノード番号「4」のノード100によって周期的にデータの書き込みが行われており、1000msの周期で、ノード番号「4」のノード100の内部メモリ114のメモリアドレス0x1000番地のデータが(自ノードの)転写メモリ111に書き込まれていることを示している。
【0049】
また、ブロック番号1121が「8」のレコードは、ノード番号「5」のノード100が、領域を割り当てて周期的なデータの書き込みを開始するための変更要求(確保要求)を送信していることを示している(「追加」)。
【0050】
また、ブロック番号「15」のレコードは、ノード番号「6」のノード100が割り当てている領域に関して、変更要求1126に変更不可が設定されていることを示している(「変更不可」)。なお、変更不可は、ノード100が停止状態であっても、他ノードから受信した解放要求に対して領域を解放しない状態であることを示す。
【0051】
次に、ノード稼働監視テーブル113を説明する。
図6は、ノード稼働監視テーブル113の一例を示した図である。同図に示すように、ノード稼働監視テーブル113は、データ共有システム1における各ノード100のノード番号を示すノード番号1131、そのノード100の状態(稼働状態か、停止状態か、もしくはデータ共有システム1に接続されていない状態か)を示す稼働状態1132、及び、ノード100が転写管理情報を最後に受信した時刻(最終更新時刻)を示す管理情報更新時刻1133の各項目を含む、少なくとも1つ以上のレコードから構成される。
【0052】
同図の例では、ノード番号「1」のノード100は稼働状態(「稼働」)であり、転写管理情報を最後に受信した時刻は「10:10:00.403」である。また、ノード番
号「3」のノード100は停止状態(「停止」)であり、ノード100が転写管理情報を最後に受信した時刻は「10:08:00.321」である。さらに、ノード番号「4」のノード100はデータ共有システム1に現在接続されていない状態(「無」)である。
【0053】
次に、転写データ伝送フレームについて説明する。
図7は、転写データ伝送フレーム600の一例を示した図である。同図に示すように、転写データ伝送フレーム600は、ヘッダ部610、及びデータ部620から構成される。このうちヘッダ部610は、転写データ伝送フレーム600ごとに割り当てられた識別子を示すフレーム識別子611、フレーム識別子611の転写データ伝送フレーム600のサイズを示すフレームサイズ612、フレーム識別子611の転写データ伝送フレーム600を送信したノード100のノード番号を示す送信元ノード番号613、連続して送信されるフレーム識別子611の転写データ伝送フレーム600のそれぞれに割り当てられたフレーム通番614(シーケンス番号)、及び、フレーム識別子611の転写データ伝送フレーム600の送信周期を示す送信周期615の各情報を有する。
【0054】
データ部620は、ノード100が、自身の転写メモリ111の各ブロックに記憶されている転写データを、少なくとも1つ以上の、連続するアドレスのブロックの群に分割することにより生成される。
【0055】
すなわち、データ部620は、総確保領域数621、及び、領域情報625からなる。総確保領域数621には、上記ブロック群の総数が格納され、領域情報625には、各ブロック群の情報が、総確保領域数621が示す数分、格納される。具体的には、領域情報625は、ブロック群の先頭のブロック番号が格納される書込先頭ブロック番号622、ブロック群を構成する連続するブロックの数が格納される連続ブロック数623、及び、
ブロック群に書き込まれる転写データの内容が格納される書込データ624からなる。
【0056】
以上の転写データ伝送フレーム600は、各ノード100から所定周期で他ノードに同報送信される。これにより、データ共有システム1における全ノード100のそれぞれが、自ノード及び他ノードの共有データを共有することになる。
【0057】
次に、転写管理情報伝送フレームを説明する。
図8は、転写管理情報伝送フレーム700の一例を示した図である。同図に示すように、転写管理情報伝送フレーム700は、ヘッダ部710、及び転写管理情報720から構成される。
【0058】
ヘッダ部710は、転写管理情報伝送フレーム700ごとに割り当てられた識別子を示すフレーム識別子711と、フレーム識別子711の転写管理情報伝送フレーム700のサイズを示すフレームサイズ712と、フレーム識別子711の転写管理情報伝送フレーム700を送信したノード100のノード番号を示す送信元ノード番号713と、連続して送信される転写管理情報伝送フレーム700のそれぞれに割り当てられたフレーム通番714(シーケンス番号)と、フレーム識別子711の転写管理情報伝送フレーム700の送信周期を示す送信周期715とからなる。
【0059】
転写管理情報720は、確保領域情報730、及び変更領域情報740からなる。
【0060】
確保領域情報730は、ノード100が、転写メモリ111の各ブロックに記憶されている転写データを、少なくとも1つ以上の、連続するアドレスのブロックの群に分割することにより生成される。
【0061】
すなわち、確保領域情報730は、総確保領域数731、及びブロック群情報737からなり、総確保領域数731には、分割したブロック群の総数が格納され、ブロック群情報737には、分割したブロック群の数分、各ブロック群に関する情報が格納される。具体的には、ブロック群情報737は、ブロック群の先頭のブロック番号が格納される確保先頭ブロック番号732と、ブロック群を構成する連続するブロックの数が格納される連続ブロック数733と、ブロック群への転写データの書き込み周期の情報が格納される書き込み周期734と、ブロック群の転写データが記憶されていた内部メモリ114のアドレス(例えば先頭アドレス)が格納されるメモリアドレス735と、ブロック群のデータに割り当てられた識別子であるデータ識別子736とからなる。
【0062】
例えば、転写メモリ111のブロック番号が「11」のブロック、及びブロック番号が「12」のブロックの領域の転写データを示す場合は、確保先頭ブロック番号732に「11」が、連続ブロック数733に「2」が格納される。
【0063】
変更領域情報740は、変更要求が変更する割り当て領域を示す情報を含む。この変更領域情報740は、ノード100が、転写メモリ111の各ブロックに記憶されている転写データを、少なくとも1つ以上の、連続するアドレスのブロックの群に分割することにより生成される。
【0064】
すなわち、変更領域情報740は、総確保領域数741、及びブロック群情報749からなる。総確保領域数741には、分割されたブロック群の総数が格納され、ブロック群情報749には、分割されたブロック群の数分、各ブロック群に関する情報が格納される。具体的には、ブロック群情報749は、変更要求を送信したノード100のノード番号を示す変更ノード番号742と、変更ノード番号742のノード100が送信した変更要求(例えば、追加要求、解放要求)が格納される変更種類743と、ブロック群の先頭の
ブロック番号が格納される確保先頭ブロック番号744と、ブロック群を構成する連続するブロックの数を示す情報が格納される連続ブロック数745と、ブロック群の転写データへの書き込み周期の情報が格納される書き込み周期746と、変更要求の対象の各ブロック群への転写データが記憶されている内部メモリ114のアドレス(例えば先頭アドレス)が格納されるメモリアドレス747と、ブロック群に記憶されている転写データに割り当てられ、制御アプリケーション125において使用される識別子であるデータ識別子748とからなる。
【0065】
各ノード100は、このような転写管理情報伝送フレーム700を他ノードへ送信することにより、変更要求(例えば、追加要求、解放要求)の種類、その変更要求が変更する割り当て領域を示す情報、及びその領域におけるデータの種類を共有することができる。
【0066】
次に、転写データテーブルについて説明する。
図9は、転写データテーブル800の一例を示した図である。同図に示すように、転写データテーブル800は、転写メモリのブロック番号が格納されるブロック番号811と、ブロック番号811に記憶されている転写データが格納されるデータ812と、ブロック番号811に記憶されている転写データの更新状態を示す付加情報813とを有する、少なくとも1つ以上のレコードを含んで構成される。この付加情報813には、その転写データが正常なものであることを示す「正常」、その転写データが所定期間以上更新されていないことを示す「未更新」、その転写データが無効なものであることを示す「無効」のいずれかが格納される。
【0067】
<動作概要>
次に、本実施形態のデータ共有システム1が有する各ノード100の動作の概要を説明する。
【0068】
<転写データ共有処理>
図10は、各ノード100が行う、転写データを共有するための処理(以下、転写データ共有処理S800という)の一例を説明するフローチャートである。転写データ共有処理S800は、例えば、所定の周期で繰り返し実行される。
【0069】
同図に示すように、転写領域管理部123は、ノード100の起動(電源投入等)により処理を開始すると、他ノードから送信されてきた転写管理情報伝送フレーム700を受信し、受信した転写管理情報伝送フレーム700に基づき、転写メモリ111の割り当て領域の変更を行う処理(以下、領域変更処理S810という)を行う(S810)。
【0070】
また、転写領域管理部123は、転写管理情報伝送フレーム700の送信処理(以下、転写管理情報送信処理S820という)を実行する(S820)。例えば、ノード100は、自ノードに割り当てられている転写メモリ111の領域の内容を変更する旨の変更要求を、他ノードへ同報送信する。
【0071】
また、転写領域管理部123は、転写データ伝送フレーム600の送信処理(以下、転写データ送信処理S830という)を行う(S830)。具体的には、ノード100は、自ノードに割り当てられている転写メモリ111の領域の転写データを他ノードへ同報送信する。
【0072】
また、転写領域管理部123は、他ノードから送信されてきた転写データを受信する(S840)。なお、後述するように、この受信の際に、転写データ読み込み処理が実行される。
【0073】
また、転写領域管理部123は、自ノードの内部メモリ114のデータを転写メモリ111に書き込む処理(以下、転写データ書き込み処理S850という)を行う(S850)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうち、確保ノード番号1122が示すノード100が自ノードのノード番号であり、内部メモリアドレス1125にメモリアドレスが設定されており、かつ、データ更新時刻1123が示す時刻が所定の時間以上前の時刻である(例えば、所定の書き込み周期の時間以上の時間が経過している)レコードを全て取得する。そして転写領域管理部123は、取得したレコードにおけるブロック番号1121が示すブロック(転写メモリ111の領域)を特定し、特定したブロックに、上記取得したレコードにおける内部メモリアドレス1125が示すメモリアドレスのデータを書き込む。上記で取得した全てのレコードについてデータを書き込んだら、本処理は終了する。なお、上記の所定の書き込み周期を記憶するために、領域管理テーブル112に、前回にデータの書き込みを行った時刻を記憶させてもよい。
【0074】
データ共有システム1を構成する各ノード100は、以上に説明した転写データ共有処理S800を繰り返し実行することにより、お互いに転写メモリ111上のデータを共有する。以下、転写データ共有処理S800の各処理ステップを説明する。
【0075】
<領域変更処理S810>
まず、領域変更処理S810を詳細に説明する。
【0076】
図11は、領域変更処理S810の一例を説明するフローチャートである。同図に示すように、転写領域管理部123は、転写管理情報伝送フレーム700を受信しているか否かを確認する(S910)。転写管理情報伝送フレーム700を受信している場合には(S910のYes)、受信した転写管理情報伝送フレーム700のヘッダ部710から送信元ノード番号713を取得し(S912)、S914に進むが、転写管理情報伝送フレーム700を受信していない場合は(S910のNo)、後述するS930に進む。
【0077】
S914では、受信した転写管理情報伝送フレーム700に、自ノードに割り当てられている領域を解放する旨の解放要求が含まれているか否かを確認する。具体的には、転写領域管理部123は、受信した転写管理情報伝送フレーム700に、変更ノード番号742が自ノード番号であり、変更種類743が解放要求である変更領域情報740が含まれているか否かを判断する。
【0078】
自ノードに割り当てられている領域を解放する旨の解放要求が含まれていない場合には(S914のNo)、後述するS916に進む。
【0079】
一方、自ノードに割り当てられている領域を解放する旨の解放要求が含まれている場合には(S914のYes)、転写領域管理部123は、解放拒否を設定する。具体的には、転写領域管理部123は、領域管理テーブル112のうちブロック番号1121が自ノードに割り当てられている領域に設定されているレコードの変更要求1126に「拒否」を設定する(S926)、その後はS916に進む。なお、この「拒否」は後に、転写管理情報として他ノード100に同報送信される(S820)
【0080】
S916では、転写領域管理部123は、S910で受信した転写管理情報伝送フレーム700における確保領域情報730の内容を領域管理テーブル112に反映する。例えば、受信した転写管理情報伝送フレーム700における送信元ノード番号713が「1」であり、確保領域情報730のブロック群情報737によって特定されるブロックのブロック番号が「2、13〜15」であるとき、転写領域管理部123は、
図5に示したように、領域管理テーブル112のブロック番号1121が「1、13、14、15」である
レコードの確保ノード番号1122のそれぞれに、「1」を格納する。
【0081】
次に、転写領域管理部123は、S910で受信した転写管理情報伝送フレーム700において、変更種類743に「変更不可」または「変更不可解除」が設定されているブロック群情報749があるか否かを判断する(S940)。
【0082】
変更種類743に「変更不可」または「変更不可解除」の変更要求が設定されているブロック群情報749がある場合(S940のYES)は、領域管理テーブル112の変更要求1126にその変更種類と、領域(ブロック)の情報とを設定する。具体的には、ブロック群情報749における変更種類743が「変更不可」の場合は、転写領域管理部123は、ブロック群情報749における変更ノード番号742、先頭確保ブロック番号744、及び連続ブロック数745に基づき特定されるブロックがブロック番号1121に格納されている領域管理テーブル112のレコードの変更要求1126を「変更不可」に設定する。一方、ブロック群情報749における変更種類743が「変更不可解除」の場合は、転写領域管理部123は、ブロック群情報749における変更ノード番号742、確保先頭ブロック番号744、及び連続ブロック数745により特定されるブロックがブロック番号1121に格納されている領域管理テーブル112のレコードの変更要求1126を空欄とする。
【0083】
続いて、転写領域管理部123は、S910で受信した転写管理情報伝送フレーム700において、自ノードの領域に対する変更要求が含まれているか否かを判断すると共に、その変更要求が含まれている場合には、その変更要求を取得する(S918)。具体的には、転写領域管理部123は、転写管理情報伝送フレーム700のブロック群情報749のうち、変更ノード番号742に自ノードのノード番号が設定されているブロック群情報749があるか否かを判断するとともに、そのブロック群情報749がある場合は、そのブロック群情報749の変更種類743を取得する。
【0084】
自ノードの領域に対する変更要求が含まれていない場合は(S918のNo)、S922へ進むが、自ノードの領域に対する変更要求が含まれている場合には(S918のYes)、転写領域管理部123は、領域管理テーブル112の更新を行う(S920)。具体的には、転写領域管理部123は、S918で取得したブロック群情報749の変更ノード番号742の確保先頭ブロック番号744、及び連続ブロック数745に基づき、変更する対象の領域(ブロック)を特定する。そして転写領域管理部123は、領域管理テーブル112のうち、確保ノード番号1122に自ノードのノード番号が格納され、かつ上記特定したブロックの情報がブロック番号1121に格納されているレコードにおける変更要求1126を、上記取得した変更要求で更新する。その後は、S922に進む。
【0085】
このようにして、転写領域管理部123は、データ共有システム1内の他ノードから受信したフレームを基に、領域管理テーブル112を更新する。
【0086】
なお、S918において、転写領域管理部123は、自ノードの領域に対する変更要求が確保要求である場合、その確保要求が割り当てようとするブロックが他ノードによって割り当てられていないことを、領域管理テーブル112に基づき確認し、他ノードによって割り当てられていないことを確認できた場合に、領域管理テーブル112の更新を行うようにしてもよい。また、転写領域管理部123は、他ノードからの確保要求を受信しているか否かを判断し、他ノードからの確保要求を受信していないと判断した場合に、領域管理テーブル112の更新を行うようにしてもよい。なお、他ノードからの確保要求を受信していると判断した場合には、予め各ノード100に設定しておいた優先順位に基づき、割り当てを行うノード100を選択するようにしてもよい。
【0087】
S922では、転写領域管理部123は、転写管理情報伝送フレーム700を送信してきた送信元のノード100を、稼働状態のノード100として特定する(S922)。具体的には、転写領域管理部123は、ノード稼働監視テーブル113のレコードのうち、S912で取得した送信元のノード100のノード番号が確保ノード番号1131に格納されているレコードを取得し、取得したレコードにおける稼働状態1132を、「稼働」に設定する。その後は、S924に進む。
【0088】
S924では、転写領域管理部123は、転写管理情報伝送フレーム700を送信してきた送信元のノード100の管理情報更新時刻を現在時刻に更新する。具体的には、転写領域管理部123は、ノード稼働監視テーブル113のレコードのうち、S912で取得した送信元のノード100のノード番号が確保ノード番号1131に格納されているレコードを取得し、取得したレコードにおける管理情報更新時刻1133を現在時刻に設定する。
【0089】
転写領域管理部123は、このようにノード稼働監視テーブル113を更新すると、本処理を終了する。
【0090】
S930では、転写領域管理部123は、停止状態であるノード100(以下、停止ノードという)を一つ取得する。具体的には、転写領域管理部123は、ノード稼働監視テーブル113を参照し、管理情報更新時刻1133の示す時刻から停止判断時間以上更新されていないレコードを一つ取得し、取得したレコードのノード番号1131を取得することによって、停止ノードを取得する。
【0091】
停止ノードを取得できた場合(S930のYes)には、転写領域管理部123は、ノード稼働監視テーブル113を更新する(S932)。具体的には、転写領域管理部123は、ノード稼働監視テーブル113を参照し、S930で取得したレコードの稼働状態1132を「停止」に設定し、S933に進む。一方、停止ノードを取得できなかった場合は(S930のNo)、本処理は終了する。
【0092】
S933では、転写領域管理部123は、取得した停止ノードが割り当てている領域を一つ取得し、取得した領域に解放拒否が設定されていれば(S933のYes)、S935に進むが、取得した領域に解放拒否が設定されていなければ(S933のNo)、その領域を解放する(S934)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうち、S930で取得した停止ノードのノード番号が確保ノード番号1122に格納しているレコードを一つ取得し、取得したレコードの変更要求1126に「拒否」が設定されていない限り、そのレコードの確保ノード番号1122に自ノードのノード番号を設定し、変更要求1126に「解放」を設定し、変更カウンタ1127に初期値を設定する。その後はS935に進む。
【0093】
S935では、転写領域管理部123は、取得した停止ノードが割り当てている領域が他にあるか否かを判断し、取得した停止ノードが確保している領域が他にある場合には(S935のYes)、S933に戻り、取得した停止ノードが確保している領域が他に無い場合(S935のNo)は、転写領域管理部123は、S930で取得した停止ノード以外に、停止状態であるノード100があるか否かを判断し、停止状態であるノード100が他にある場合は、その停止ノードを取得しS932に戻るが(不図示)、停止状態であるノード100がない場合は本処理は終了する。
【0094】
このように、転写領域管理部123は、停止ノードが確保している全ての領域に対して、解放要求を設定する。そして、その後は、後述する変更要求確定処理S950によって、設定した解放要求が他ノードに送信される。
【0095】
<停止ノードへの解放の効果>
以上のように、情報処理装置(ノード100)は、自身と現在通信していない情報処理装置がある場合には、通信していない情報処理装置の情報を含む解放要求を生成し、生成した解放要求を、他の情報処理装置に送信し、一方、他の情報処理装置が送信してきた、通信していない情報処理装置の情報を含む解放要求を受信し、受信した解放要求と領域管理情報とに基づき、通信していない情報処理装置の共有データを記憶するために割り当てられていた記憶領域上の領域を解放するので、転写メモリ111のうち停止ノードが割り当てていた領域を他ノードが割り当てることができないままとなってしまうことを防ぐことができる。
【0096】
また、情報処理装置は、自身と現在通信していない情報処理装置があるか否かの判断を、共有データを所定期間送信してきていない情報処理装置があるか否かによって判断するので、これにより、適切なノード100を対象とした解放要求を送信することができる。
【0097】
また、情報処理装置は、受信した解放要求に基づき、通信していない情報処理装置が自身の情報処理装置である場合には、自身の情報処理装置の共有データを記憶するために割り当てられている記憶領域上の領域を解放しないように要求する旨の変更要求である解放拒否を、他の情報処理装置に送信するので、自ノードが確保している領域が誤って解放されてしまう事態を避けることができる。例えば、自ノードが実際には稼働状態にも関わらず「停止状態」と他ノードが誤認し、その他ノードが解放要求を送信してきた場合に、その解放要求を拒否することによって、自ノードに割り当てられていた領域が解放されてしまうことを防ぐことができる。また、自ノードも、その領域を解放することを拒絶するという情報を他ノードに送信するので、他ノードは、誤ってその領域を解放してしまうことを避けられる。
【0098】
なお、この解放拒否については、例えば、データ共有システム1の点検のために、ある停止ノード100が割り当てている領域の状態を維持したい場合は、管理者等が、その領域に予め解放拒否を設定しておく(領域管理テーブル112の変更要求1126に「拒否」を設定しておく)ことで、その停止ノードに割り当てられている領域が解放されることを防ぐことも可能である。
【0099】
<転写管理情報送信処理S820>
次に、転写管理情報送信処理S820を詳細に説明する。
図12は、転写管理情報送信処理S820の一例を説明するフローチャートである。
【0100】
まず、転写領域管理部123は、領域管理テーブル112を読み込み(S1010)、読み込んだ領域管理テーブル112に基づき、自ノードの領域の確保領域情報730を生成する(S1020)。具体的には、転写領域管理部123は、読み込んだ領域管理テーブル112のレコードのうち、確保ノード番号1122に自ノードのノード番号が格納されているレコードを全て抽出し、抽出したレコードのブロック番号1121、書き込み周期1124、及び内部メモリアドレス1125に基づき、確保領域情報730を生成する。
【0101】
例えば、自ノードのノード番号が「1」の場合は、
図5に示した領域管理テーブル112のうち、確保ノード番号1122にノード番号「1」が格納されているレコードである、ブロック番号1121が「2」、「13」〜「15」のレコードに基づき、確保領域情報730を生成する。
【0102】
転写領域管理部123は、領域管理テーブル112を読み込み、自ノードの領域に対す
る変更要求(追加要求、解放要求)が設定されているか否かを確認する(S1030)。具体的には、転写領域管理部123は、読み込んだ領域管理テーブル112のレコードのうち、確保ノード番号1122に自ノードのノード番号が格納されているレコードを全て抽出し、抽出したレコードの変更要求1126に変更要求(追加要求、解放要求)が設定されているか否かを確認する。
【0103】
自ノードの領域に対して変更要求が設定されていない場合(S1030のNo)、S1060に進み、自ノードの領域に対して変更要求が設定されている場合(S1030のYes)、S1040に進む。
【0104】
S1040では、転写領域管理部123は、自ノードの領域に対する変更要求が設定されている変更領域情報740を生成する。具体的には、転写領域管理部123は、S1030で抽出した領域管理テーブル112のレコードのうち変更要求が設定されているレコードのブロック番号1121、書き込み周期1124、内部メモリアドレス1125、及び変更要求1126により領域を特定し、特定した領域について確保領域情報740を生成する。
【0105】
そして、転写領域管理部123は、領域管理テーブル112を読み出し、自ノードの領域に対する変更要求が設定されている全てのブロックの変更カウンタ値を「1」減算する(S1050)。具体的には、転写領域管理部123は、読み出した領域管理テーブル112のレコードのうち、確保ノード番号1122に自ノードのノード番号が格納され、かつ変更要求1126に変更要求が設定されているレコードを全て取得し、取得したレコードの変更カウンタ1127の値を「1」減算する。その後はS1060に進む。
【0106】
S1060では、転写領域管理部123は、S1020で生成した確保領域情報730にヘッダ部710を付帯させた転写管理情報720を生成する。なお、転写領域管理部123は、S1040で変更領域情報を生成した場合は、生成した変更領域情報、及びS1020で生成した確保領域情報730にヘッダ部710を付帯させた転写管理情報720を生成する。
【0107】
そして、転写領域管理部123は、生成した転写管理情報720を送信部122へ出力し、送信部122は、この転写管理情報720を転写管理情報伝送フレーム700に変換して、他ノードへ同報送信する(S1070)。
【0108】
このように、転写管理情報送信処理S820は、領域管理テーブル112において転写メモリ111の変更要求が設定されている場合、その旨を通知する転写管理情報伝送フレーム700を、データ共有システム1内のノード100に周期的に送信する。
【0109】
<変更要求確定処理S950>
次に、変更要求確定処理S950について説明する。
図13は、変更要求確定処理S950の一例を説明するフローチャートである。変更要求確定処理は、例えば、所定の時間間隔で行われる。
【0110】
まず、転写領域管理部123は、領域管理テーブル112から、変更要求が設定されている領域(以下、変更領域という)を取得する(S952)。具体的には、転写領域管理部123は、変更要求1126に情報が格納されているレコードのブロック番号1121を取得する。
【0111】
ここで、領域管理テーブル112に設定されている変更要求は、本処理の実行中も、転写管理情報送信処理S810によって送信されている。すなわち、自ノード領域の内容を
変更する旨を示す転写管理情報伝送フレーム700が、他ノードに同報送信されている。
【0112】
そこで、転写領域管理部123は、変更領域に対する変更要求が変更カウンタ値の回数分、送信されたか否かを確認する(S956)。具体的には、転写領域管理部123は、S952で取得したレコードの変更カウンタ1127の値が0以下になっているか否かを判断する。
【0113】
変更カウンタ値の回数分、送信された場合には(S956のYes)、S957に進み、変更カウンタ値の回数分、送信されていない場合には(S956のNo)、本処理は終了する。
【0114】
S957では、転写領域管理部123は、変更領域を変更する変更要求が「変更不可」であるか否かを判断し、「変更不可」である場合には変更要求確定処理S950を終了するが、「変更不可」でない場合には、S958に進む。
【0115】
S958では、転写領域管理部123は、変更領域を反映することにより領域管理テーブル112を更新する。例えば、転写領域管理部123は、変更要求が追加要求の場合、S952で取得したレコード(例えば、確保ノード番号1122、変更要求1126、変更カウンタ1127)の内容をクリアする(例えば、空欄又は0にする)(S958)。
【0116】
そして、転写領域管理部123は、S952で取得した変更領域以外に、他の変更領域があれば(S959のYes)、その変更領域に対してS952以下の処理を行い、他に変更領域がなければ(S959のNo)、本処理は終了する。
【0117】
この後、転写領域管理部123は、領域管理テーブル112における自ノードの情報を基に転写管理情報伝送フレーム700を生成し、生成した転写管理情報伝送フレーム700を他ノードに送信することにより、自ノードの領域の内容が変更されたことを他ノードに通知する。
【0118】
なお、S956において、変更要求が変更カウンタ値の回数分、送信されていない場合には(S956のNo)、転写領域管理部123は、受信部121のバッファ等をチェックすることにより他ノードからの転写管理情報伝送フレーム700の受信を確認し、転写管理情報伝送フレーム700を受信しており、かつ、その転写管理情報伝送フレーム700に変更要求が含まれている場合には、その変更要求と上記の変更要求のいずれかに対して、S958の処理を行うようにしてもよい。例えば、変更要求が追加要求の場合は、予め各ノード100に設定された優先順位に従い、優先順位が最も高いノード100からの変更要求に基づき、S958の処理を行うようにする。
【0119】
また、S956の処理の前に、自ノードが他ノードに変更要求を送信していた場合において、S956において、その他ノードから、拒否要求を含む転写管理情報伝送フレーム700を受信した場合は、その他ノードは稼働していることがわかるので、転写領域管理部123は、上記送信した変更要求が設定されている領域管理テーブル112のレコードの確保ノード番号1122、変更要求1126、及び変更カウンタ1127をクリアするようにしてもよい。
【0120】
<変更命令対応処理S1100>
次に、変更命令対応処理S1100について説明する。
【0121】
図14は、変更命令対応処理S1100の一例を説明するフローチャートである。同図に示すように、転写領域管理部123は、処理を開始すると、制御アプリケーション12
5から送信されてくる変更要求の受信を待機する(S1110)。なお、この変更要求は、例えば、制御アプリケーション125から、所定の周期または任意のタイミングで送信することができる。
【0122】
転写領域管理部123は、制御アプリケーション125から変更要求を受信すると、領域管理テーブル112を読み込むことにより、受信した変更要求の種類を特定すると共に、その変更要求が示す領域(以下、指定領域という)を特定する(S1120)。
【0123】
受信した変更要求が追加要求の場合(S1130の「追加」)、転写領域管理部123は、読み込んだ領域管理テーブル112のデータを参照して、指定領域(追加する、転写メモリ111の領域)が既に他ノードによって割り当てられているか否かを確認する(S1132)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうちブロック番号1121に指定領域が格納されているレコードを取得し、取得したレコードの確保ノード番号1122に他ノードのノード番号が格納されているか否かを判断する。
【0124】
指定領域が既に他ノードによって割り当てられている場合は(S1132のYes)、変更命令対応処理S1100は終了するが、指定領域が他ノードによって割り当てられていない場合は(S1132のNo)、転写領域管理部123は、指定領域に「追加」を設定する。具体的には、転写領域管理部123は、S1132で取得したレコードの変更要求1126に「追加」を設定し、確保ノード番号1122にノード番号(自ノード又は他ノードのノード番号)を設定する(S1134)。この設定した変更要求はその後、変更要求確定処理S950によって反映され(変更が確定し)、さらに、この変更要求を含む転写管理情報が他ノードに送信される。
【0125】
S1110で受信した変更命令が解放命令の場合(S1130の「解放」)、転写領域管理部123は、読み込んだ領域管理テーブル112のデータを参照して、指定領域(解放する、転写メモリ111の領域)が既に自ノードによって割り当てられているか否かを確認する(S1136)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうちブロック番号1121が示すブロックが指定領域であるレコードを取得し、取得したレコードの確保ノード番号1122に自ノードのノード番号が格納されているか否かを判断する。
【0126】
指定領域が自ノードによって割り当てられていない場合は(S1136のNo)、変更命令対応処理S1100は終了するが、指定領域が既に自ノードによって割り当てられている場合は(S1136のYes)、転写領域管理部123は、指定領域に「解放」を設定する。具体的には、転写領域管理部123は、S1136で取得したレコードの変更要求1126に「解放」を設定する(S1138)。この設定した変更要求はその後、変更要求確定処理S950によって反映され(変更が確定し)、さらに、この変更要求を含む転写管理情報が他ノードに送信される。
【0127】
なお、以上のような解放命令に対する処理は他のノード100に与える影響が小さいと考えられるため、転写領域管理部123は、直ちに指定領域を解放する処理を行ってもよい。
【0128】
S1110で受信した変更命令が変更不可命令の場合(S1130の「変更不可」)、転写領域管理部123は、読み込んだ領域管理テーブル112のデータを参照して、指定領域(変更不可とする、転写メモリ111の領域)が既に自ノードによって割り当てられているか否かを確認する(S1140)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうちブロック番号1121が示すブロックが指定領域であ
るレコードを取得し、取得したレコードの確保ノード番号1122に自ノードのノード番号が格納されているか否かを判断する。
【0129】
指定領域が自ノードによって割り当てられていない場合(S1140のNo)、変更命令対応処理S1100は終了するが、指定領域が自ノードによって割り当てられている場合(S1140のYes)、転写領域管理部123は、指定領域に「変更不可」を設定する。具体的には、転写領域管理部123は、S1140で取得したレコードの変更要求1126に「変更不可」に設定する(S1138)。この設定した変更要求はその後、変更要求確定処理S950によって反映され(変更が確定し)、さらに、この変更要求を含む転写管理情報が他ノードに送信される。
【0130】
S1110で受信した変更命令が変更不可解除命令の場合(S1130の「変更不可解除」)、転写領域管理部123は、読み込んだ領域管理テーブル112のデータを参照して、指定領域(変更不可解除とする、転写メモリ111の領域)が既に自ノードによって割り当てられているか否かを確認する(S1150)。具体的には、転写領域管理部123は、領域管理テーブル112のレコードのうちブロック番号1121が示すブロックが指定領域であるレコードを取得し、取得したレコードの確保ノード番号1122に自ノードのノード番号が格納されているか否かを判断する。
【0131】
指定領域が自ノードによって割り当てられていない場合は(S1150のNo)、変更命令対応処理S1100は終了するが、指定領域が既に自ノードによって割り当てられている場合は(S1150のYes)、転写領域管理部123は、指定領域の「変更不可」を解除する。具体的には、転写領域管理部123は、S1150で取得したレコードの変更要求1126に設定されている「変更不可」を解除する(例えば、空欄にする)(S1152)。この設定した変更要求はその後、変更要求確定処理S950によって反映され(変更が確定し)、さらに、この変更要求を含む転写管理情報が他ノードに送信される。
【0132】
なお、上記の変更不可解除命令に対する処理は他のノード100に与える影響が小さいと考えられるため、転写領域管理部123は、直ちに変更不可を解除する処理を行ってもよい。
【0133】
<転写データ読み出し処理S1200>
次に、転写データ読み出し処理S1200の詳細について説明する。
【0134】
図15は、転写データ読み出し処理S1200の一例を説明するフローチャートである。なお、転写データ読み出し処理S1200は、制御アプリケーション125が、転写メモリアクセス制御部124に対して、転写メモリ111のデータの読み出し要求を送信することにより開始される。例えば、転写データ読み出し処理S1200は、転写データ受信処理S840を実行する際に行われるように設定することができる。
【0135】
同図に示すように、転写メモリアクセス制御部124は、制御アプリケーション125からの転写メモリ111のデータの読み出し要求を受信すると(S1200)、転写メモリ111の領域(ブロック)から一つのブロックを選択する(S1202)。
【0136】
転写メモリアクセス制御部124は、領域管理テーブル112を参照して、S1200で選択した領域(以下、読み出し領域という)を既に割り当てているノード100があるか否かを判断する(S1204)。具体的には、転写メモリアクセス制御部124は、領域管理テーブル112のレコードのうち、ブロック番号1121に読み出し領域が格納されているレコードの確保ノード番号1122が「0」以外であるか否かを判断する。
【0137】
読み出し領域を既に割り当てているノード100(以下、割り当てノードという)がある場合(S1204のYes)、には、S1206に進み、読み出し領域を割り当てているノード100がない場合(S1204のNo)、S1218に進む。
【0138】
S1206では、転写メモリアクセス制御部124は、割り当てノードが稼働状態であるか否かを判断する。具体的には、転写メモリアクセス制御部124は、ノード稼働監視テーブル113のレコードのうちノード番号1131に割り当てノードのノード番号が格納されているレコードを取得し、取得したレコードの稼働状態1132に「稼働」が設定されているか否かを判断する。
【0139】
割り当てノードが稼働状態である場合(S1206のYes)には、S1208に進み、割り当てノードが稼働状態でない場合(S1206のNo)には、S1218に進む。
【0140】
S1208では、転写メモリアクセス制御部124は、読み出し領域のデータが所定時間更新されていないか否かを判断する。具体的には、転写メモリアクセス制御部124は、S1206で取得したレコードのデータ更新時刻1123が示す時刻が、現在時刻より上記所定時間前であるか否かを判断する。
【0141】
読み出し領域のデータが所定時間更新されていない場合(S1208のYes)には、転写メモリアクセス制御部124は、付加情報が「無効」の転写データテーブル800のレコードを生成する。具体的には、転写メモリアクセス制御部124は、ブロック番号811に読み出し領域が設定され、読み出し領域に記憶されているデータがデータ812に設定され、付加情報813に「正常」が設定された、転写データテーブル800のレコードを生成する(S1210)。すなわち、このデータは稼働中のノード100が所定時間以内に書き込んだデータであるので、正常なデータである可能性が高いことを示しておく。
【0142】
S1218では、転写メモリアクセス制御部124は、付加情報が「無効」の転写データテーブル800のレコードを生成する。具体的には、転写メモリアクセス制御部124は、ブロック番号811に読み出し領域が設定され、読み出し領域に記憶されているデータがデータ812に設定され、付加情報813に「無効」が設定された、転写データテーブル800のレコードを生成する。すなわち、転写メモリ111の読み出し領域がどのノード100にも確保されていない場合や、稼働していないノード100に確保されている場合に、この領域のデータは無効であることを示しておく。その後は、S1212へ進む。
【0143】
S1216では、転写メモリアクセス制御部124は、付加情報が「未更新」の転写データテーブル800のレコードを生成する。具体的には、転写メモリアクセス制御部124は、ブロック番号811に読み出し領域が設定され、読み出し領域に記憶されているデータがデータ812に設定され、付加情報813に「未更新」が設定された、転写データテーブル800のレコードを生成する。すなわち、読み出し領域に書き込まれたデータは、稼働しているノード100により書き込まれたものであるが、前回のデータ更新から所定時間を経過しているので、その旨を付加情報として付与する。その後は、S1212へ進む。
【0144】
S1212では、転写メモリアクセス制御部124は、全ての読み出し領域について転写データテーブル800を生成したか否かを確認し、転写データテーブル800を生成していない読み出し領域がある場合(S1212のNo)、S1202に戻るが、全ての読み出し領域について転写データテーブル800を生成した場合(S1212のYes)には、S1214に進む。
【0145】
S1214では、転写メモリアクセス制御部124は、生成した転写データテーブル800を制御アプリケーション125に引き渡す。
【0146】
このようにして、制御アプリケーション125には、転写メモリ111の転写データが引き渡される。このとき、転写メモリアクセス制御部124は、転写データに含まれるデータのそれぞれが「正常」か、「未更新」か、「無効」か、を付加情報として付与して引き渡すので、この転写データを受け取った制御アプリケーション125は、データのそれぞれの信頼性を確認することができる。
【0147】
<管理端末200>
次に、管理端末200について説明する。
【0148】
図16は、管理端末200のハードウェア構成の一例を説明する図である。同図に示すように、管理端末200は、CPU(Central Processing Unit)、MPU(MicroProcessing Unit)等のプロセッサ21と、メモリ22(RAM、ROM、NVRAM等の揮発
性又は不揮発性メモリ)と、ハードディスクやSSD(Solid State Drive)等の記憶装
置23と、ノード100との通信を行う通信インタフェース24と、タッチパネルや操作ボタン等の入力装置25と、液晶ディスプレイ等の出力装置26と、を備える。管理端末200の具体例は、データ共有システム1のネットワーク140を介してノード100と通信可能な携帯端末(ノートコンピュータ、タブレット端末等)であるが、据置型の情報処理装置であってもよい。
【0149】
管理端末200は、転写メモリ111の領域の状態を出力装置26に出力する機能を有する出力部(不図示)を備える。例えば、出力部は、共有データを記憶するために割り当てられている領域が記憶領域に存在するか否かを示す情報、及び、現在、同内容の前記変更要求を2以上の所定回数未満受信している状態であることを示す情報を出力する。これらの出力部の機能は、管理端末200のハードウェアによって、もしくは、管理端末200のプロセッサ21が、メモリ22又は記憶装置23に格納されているプログラムを読み出して実行することにより実現される。
【0150】
次に、出力部が出力する画面の詳細について説明する。
図17は、出力部が出力装置26に出力する画面の一例を説明する図である。同図に示すように、管理端末200の画面には、ブロック番号1310、確保ノード番号1320、データ更新時刻1330、書き込み周期1340、内部メモリアドレス1125、ステータス1360が表示される。
【0151】
例えば、管理端末200の画面には、ノード100の領域管理テーブル112の内容が表示される。具体的には、ブロック番号1121に対応するブロック番号1310、確保ノード番号1122に対応する確保ノード番号1320、データ更新時刻1123に対応するデータ更新時刻1330、書き込み周期1124に対応する書き込み周期1340、内部メモリアドレス1125に対応する内部メモリアドレス1350が表示される。
【0152】
また、ステータス1360には、ブロック番号1310が示す領域の状態が表示される。例えば、その領域がノード100によって割り当てられていない場合は「空き」、割り当てられている場合は「割り当て済み」が表示される。この表示を行うことにより、例えば、データ共有システム1における管理者等は、入力装置25に入力を行う等して、「空き」が表示されている領域(割り当てがない領域)に自ノードの転写データを記憶する領域を割り当てるように、ノード100に設定を行うことができる。例えば、同図に示すように、入力欄1371に、割り当てる領域(ブロック番号)及び割り当てるノード100
を入力し、これらの入力値から割り当て要求を生成して当該ノード100の転写領域管理部123に割り当て要求を送信する機能を有するボタン1372を操作することにより、領域を割り当てることができる。また、「割り当て済み」が表示されている領域(割り当てがある領域)を解放するように、ノード100に設定を行うことができる。例えば、同図に示すように、入力欄1371に、解放する領域(ブロック番号)及び解放先のノード100を入力し、これらの入力値から解放要求を生成して当該ノード100の転写領域管理部123に解放要求を送信する機能を有するボタン1373を操作することにより、領域を解放することができる。
【0153】
また、ある領域を割り当てているノード100が周期的にデータの書き込みを行っている状態(変更要求が変更カウンタ値の回数未満送信されている状態)であり、未だ他のノードがそのデータを取得できる状態の場合は、そのノード100のステータス1360には「データ取得可」が表示される。この表示を行うことにより、管理者等は、書き込み周期1340や内部メモリアドレス1350に表示される情報を参考にしながら、入力欄1371に、領域(ブロック番号)及び解放先のノード100を入力し、これらの入力値から転写メモリ111のデータを取得し表示する機能を有するボタン1374を操作することにより、そのデータを出力欄1375に表示することができる。
【0154】
なお、本画面にプルダウンメニューを設け、ステータス1360が「空き」、「割り当て済み」、「データ取得可」のそれぞれに該当する欄のみを表示するような機能を設けてもよい。
【0155】
また、以上に説明した機能は、管理端末200ではなく、ノード100に設けるようにしてもよい。
【0156】
以上に説明したように、本実施形態のデータ共有システム1によれば、情報処理装置(ノード100)のそれぞれは、記憶領域(転写メモリ111)上の割り当て領域の内容の変更を要求する旨、及び変更する割り当て領域を示す情報である変更要求を生成し、生成した変更要求を他の情報処理装置に送信し、また、他の情報処理装置が送信してきた変更要求を受信し、受信した変更要求と領域管理情報とに基づき、割り当て領域の変更を行うので、各ノードが、他ノードの記憶領域の内容を容易に変更できる。これにより、データ共有システム1における各ノード100の記憶領域の内容を適切に維持することができる。例えば、データ共有システム1にノード100を追加したり離脱させたりする場合において、システムの管理者等が、各ノード100の共有データの記憶領域の割り当ての変更を行うために、データ共有システム1を停止したり各ノード100の設定を変更する等の作業を行うなどの煩雑な作業を行う必要がなく、各ノード100が自律的に他ノードの記憶領域を変更し、データ共有システム1における共有データの内容を適切に維持することができる。すなわち、本実施形態のデータ共有システム1によれば、共有データの記憶領域を容易かつ適切に管理することができる。
【0157】
例えば、情報処理装置は、共有データを記憶するための領域を記憶領域上に割り当てることを要求する旨、及び割り当てる領域を示す変更要求である割り当て要求を生成し、生成した割り当て要求を他の情報処理装置に送信し、一方、他の情報処理装置が送信してきた割り当て要求を受信し、受信した割り当て要求と領域管理情報とに基づき、他の情報処理装置の前記共有データを記憶するための領域を、記憶領域に割り当てるので、システムの管理者等が、各ノード100の共有データの記憶領域を割り当てる場合における、煩雑な割り当て作業を行う必要がない。
【0158】
また、情報処理装置は、記憶領域に割り当てられている割り当て領域の解放を要求する旨、及び解放する領域を示す変更要求である解放要求を生成し、生成した解放要求を他の
情報処理装置に送信し、一方、他の情報処理装置が送信してきた解放要求を受信し、受信した解放要求と領域管理情報とに基づき、他の情報処理装置の共有データを記憶するために割り当てられていた記憶領域上の領域を解放するので、システムの管理者等が、各ノード100の共有データの記憶領域を解放する場合における、煩雑な割り当て作業を行う必要がない。
【0159】
以上の実施形態の説明は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれる。