JP5918802B2 - ノードおよびプログラム - Google Patents

ノードおよびプログラム Download PDF

Info

Publication number
JP5918802B2
JP5918802B2 JP2014079232A JP2014079232A JP5918802B2 JP 5918802 B2 JP5918802 B2 JP 5918802B2 JP 2014079232 A JP2014079232 A JP 2014079232A JP 2014079232 A JP2014079232 A JP 2014079232A JP 5918802 B2 JP5918802 B2 JP 5918802B2
Authority
JP
Japan
Prior art keywords
data
node
owner
redundancy
member identifier
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.)
Active
Application number
JP2014079232A
Other languages
English (en)
Other versions
JP2015201027A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2014079232A priority Critical patent/JP5918802B2/ja
Publication of JP2015201027A publication Critical patent/JP2015201027A/ja
Application granted granted Critical
Publication of JP5918802B2 publication Critical patent/JP5918802B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ネットワーク上に分散配置されるサーバをクラスタ化してデータを格納する分散処理システムにおいて、原本データと複製データとの間の不整合を検出する、ノードおよびプログラムに関する。
近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。
分散処理を行う際には、クラスタを構成する各サーバ(以下、「クラスタメンバ」または「ノード」と称する。)が担当するデータ(処理対象のデータ)を決定する必要がある。このとき、クラスタ全体での処理能力を高めるためには、各ノードが担当するデータ数(データ量)は平均化されていることが望ましい。
代表的なデータの管理(振り分け)手法として、各データのkeyをハッシュ関数にかけた値(以下、「hash(key)」と称する。)をノード数Nで割った余り、すなわち「hash(key) mod N」を番号として持つノードにデータを振り分けて管理するものがある。この場合、各ノードに事前に「0」から「N−1」までの番号を割り当てていることが前提となる。このような管理(振り分け)手法を用いた場合、ノードを追加すると、Nの値が変化して、多くのデータについて、そのデータの保存を担当するノードが変更になるため、担当するデータを再配置することが必要になる。
そこで、ノードの追加に伴い担当するクラスタメンバが変更になるデータ数を約1/Nに抑える方法として、コンシステントハッシュ(Consistent Hashing)法(非特許文献1参照)を用いた管理(振り分け)手法がある。このコンシステントハッシュ法は、Amazon Dynamo(非特許文献2参照)等で用いられる。
このコンシステントハッシュ法を用いたデータ管理(振り分け)手法では、ノードとデータの双方にID(IDentifier)を割り当てる。そして、データのIDから閉じたID空間(以下、「コンシステントハッシュのID空間」と称する。)を時計回りに辿った場合に最初に出合ったノードをそのデータの担当とする。ノードに対するIDの与え方の例としては、IP(Internet Protocol)アドレスをハッシュ関数にかけた値(hash(IPアドレス))が挙げられる。
クラスタ構成の分散処理システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、すなわち、コンシステントハッシュのID空間における、ノード間の距離(以下、「ノードの担当領域」と称する。)を等しくすることが望ましい。この点を解決するため、各ノードに仮想的に複数のID(仮想ID)を持たせる手法が用いられている(非特許文献1参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当領域は異なっていても、大数の法則に従いノードの担当領域は平均化される。
ここで、コンシステントハッシュのID空間に配置するノード(各ノードに対し仮想ノードを設定した場合は、各仮想ノード)のことを、クラスタメンバを略して「メンバ」と称する。そして、コンシステントハッシュのID空間上に配置する1つ1つのノード(メンバ)に対応するID(仮想ノードを設定した場合は「仮想ID」)のことを「メンバ識別子」と称する。
多数のデータの管理をクラスタ構成の分散処理システムで実行する場合、あるノードに障害が発生した場合でも他のノードで処理が継続できるように、データの複製を保持することでデータの冗長化を実現している。コンシステントハッシュ法によるデータ管理手法を用いた分散処理システムにおいても、データの冗長化が必要であり、図11に示すような複製データの配置手法をとるものがある。
図11に示すように、コンシステントハッシュ法では、ノード(ノード「1」〜「4」)とデータ(データA〜D。黒丸(●)で表示)の双方にIDを割り当て、データのIDからコンシステントハッシュのID空間(以下、単に「ID空間」と称する場合がある。)を時計回りに辿り最初に出合ったノード(メンバ)をそのデータ(原本データ)の担当として決定する。そして、原本データを担当するノードのさらに右隣(時計回りに次)のノード(メンバ)にそのデータ(原本データ)を複製した複製データを担当させる。複製データを複数個設定する場合には、複製データを担当するノードのさらに右隣のノード(メンバ)というように順次2個目以降の複製データを担当させる。なお、以下において、原本データを担当(保持)するノード(メンバ)を「所有者」(所有者ノード)と称し、複製データを担当(保持)するノード(メンバ)を「バディ」(複製ノード)と称して説明する。
具体的には、図11に示すデータAを例に説明すると、データAは、そのデータAのIDの位置から、ID空間上を時計回りに辿り最初に出合ったノード「1」が担当(所有者)となる。また、そのデータA(原本データ)の複製データは、ID空間上でノード「1」の右隣にあたるノード「2」が担当(バディ)となる。
このように原本データ・複製データを担当するノード(メンバ)を決定することで、ノードに障害等が発生し、当該ノードが離脱した場合でも、複製データを所持しているノードが新たに原本データを担当するノードとなることにより処理を継続できるという利点がある。
David karger et al.,"Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web",[online],1997,ACM,[平成26年3月26日検索],インターネット<URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf> Giuseppe DeCandia,et al.,"Dynamo: Amazon’s Highly Available Key-value Store," SOSP’07, October 14-17, 2007, Stevenson, Washington, USA,[online]、[平成26年3月26日検索]、インターネット<URL:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf>
コンシステントハッシュ法によるデータ管理手法におけるデータ冗長処理について説明する。あるノードのID空間上のメンバ(所有者)において、原本データの更新が発生したとする。この場合、その原本データの複製を保持するメンバ(バディ)に対し、原本データの更新を複製データに反映させる複製処理を実行する。しかし、この複製処理が失敗すると、原本データと複製データとの間で不整合が生じてしまう。以下、図1を参照して説明する。
図1は、原本データと複製データとの間に、不整合が発生する例を説明するための図である。図1に示すように、ある原本データ「X」に対する信号を受信し(ステップS1)、その原本データを保持するメンバ(所有者)においてデータ「X」(原本データ)が更新されたとする(ステップS2)。この場合、このデータ「X」を保持するメンバ(所有者)は、データ「X」の更新情報を、すべてのバディ(図1においては、バディ「1」とバディ「2」)に送信する(ステップS3)。ここで、バディ「2」において、複製データの更新が失敗した場合(ステップS4)、所有者とバディ「2」との間で、データ「X」についての不整合が発生する。
分散処理システムにおいては、データの一貫性を担保するため、上記のような不整合を検出し、回復する仕組みが必要となるが、不整合の検出、回復処理は、ノード負荷に影響を与えるため、ノードの負荷を抑えつつ不整合を検出、回復させる仕組みが必要となる。
このような背景に鑑みて本発明がなされたのであり、本発明は、ノード負荷を抑えた上で、原本データと複製データとの間に発生した不整合を検出し、回復させる、ノードおよびプログラムを提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、 クラスタを構成する複数のノードのいずれかが、クライアントにサービスを提供するためのデータを原本データとして格納する所有者ノード、または、前記データの複製データを格納する1つ以上の複製ノードとして割り当てられるクラスタシステムの前記ノードであって、前記クラスタを構成する複数のノードそれぞれのノード識別情報と、当該複数のノードそれぞれに対応付けられて設定されたメンバに固有な識別子であるメンバ識別子と、が格納されたメンバ識別子管理情報であって、前記データと前記所有者ノードおよび前記複製ノードとの対応関係を求めるために用いられる前記メンバ識別子管理情報が記憶される記憶部と、前記クラスタにおいて前記ノードが離脱または追加した際に、前記メンバ識別子管理情報を、前記ノードの離脱または追加に応じた、前記データと前記所有者ノードおよび前記複製ノードとの新たな対応関係に変更して格納するメンバ識別子管理部と、変更された前記メンバ識別子管理情報に基づいて、自ノードが記憶している前記原本データおよび前記複製データを再配置する再冗長化処理を実行する再冗長化処理部と、前記データを新規に保持する際、および、前記再冗長化処理を実行する際に、(1)前記データに固有な識別子であるデータ識別子と、(2)当該データの前記原本データを格納する前記所有者ノードの前記ノード識別情報および前記メンバ識別子、並びに、当該データの前記複製データを格納する前記複製ノードの前記ノード識別情報および前記メンバ識別子、を示す所有者・複製先情報と、を前記データそれぞれに付与するデータ情報付与部と、自ノードが保持する前記データの中から、(条件A)前記データに付与された前記所有者・複製先情報の前記所有者ノードの前記ノード識別情報が、自ノードのノード識別情報であること、(条件B)前記データに付与された前記データ識別子が、前記メンバ識別子管理情報に基づき自ノードが前記所有者ノードとなるデータであること、の両条件を満たす前記データを整合対象データとして抽出し、前記抽出した整合対象データについて、自ノードが格納する原本データと、前記所有者・複製先情報に示される前記複製ノードが格納する複製データとを比較し、不整合が検出された場合に、前記原本データにより前記複製データを更新することにより不整合を回復させるデータ整合処理部と、を備えることを特徴とするノードとした。
また、請求項2に記載の発明は、クラスタを構成する複数のノードのいずれかが、クライアントにサービスを提供するためのデータを原本データとして格納する所有者ノード、または、前記データの複製データを格納する1つ以上の複製ノードとして割り当てられるクラスタシステムの前記ノードとしてのコンピュータを、前記クラスタを構成する複数のノードそれぞれのノード識別情報と、当該複数のノードそれぞれに対応付けられて設定されたメンバに固有な識別子であるメンバ識別子と、が格納されたメンバ識別子管理情報であって、前記データと前記所有者ノードおよび前記複製ノードとの対応関係を求めるために用いられる前記メンバ識別子管理情報が記憶される記憶手段、前記クラスタにおいて前記ノードが離脱または追加した際に、前記メンバ識別子管理情報を、前記ノードの離脱または追加に応じた、前記データと前記所有者ノードおよび前記複製ノードとの新たな対応関係に変更して格納するメンバ識別子管理手段、変更された前記メンバ識別子管理情報に基づいて、自ノードが記憶している前記原本データおよび前記複製データを再配置する再冗長化処理を実行する再冗長化処理手段、前記データを新規に保持する際、および、前記再冗長化処理を実行する際に、(1)前記データに固有な識別子であるデータ識別子と、(2)当該データの前記原本データを格納する前記所有者ノードの前記ノード識別情報および前記メンバ識別子、並びに、当該データの前記複製データを格納する前記複製ノードの前記ノード識別情報および前記メンバ識別子、を示す所有者・複製先情報と、を前記データそれぞれに付与するデータ情報付与手段、自ノードが保持する前記データの中から、(条件A)前記データに付与された前記所有者・複製先情報の前記所有者ノードの前記ノード識別情報が、自ノードのノード識別情報であること、(条件B)前記データに付与された前記データ識別子が、前記メンバ識別子管理情報に基づき自ノードが前記所有者ノードとなるデータであること、の両条件を満たす前記データを整合対象データとして抽出し、前記抽出した整合対象データについて、自ノードが格納する原本データと、前記所有者・複製先情報に示される前記複製ノードが格納する複製データとを比較し、不整合が検出された場合に、前記原本データにより前記複製データを更新することにより不整合を回復させるデータ整合処理手段、として機能させるためのプログラムとした。
このようにすることで、本発明のノードおよびプログラムによれば、(条件A)、(条件B)の両方を満たすデータを整合対象データとして抽出することができる。つまり、再冗長化処理において整合性が回復できるデータについては、整合対象データとして抽出しないため、処理対象となるデータを絞り込むことができる。これにより、ノードおよびプログラムは、ノードへの負荷を抑えて原本データと複製データとの間に発生した不整合を検出し、回復させることができる。
本発明によれば、ノード負荷を抑えた上で、原本データと複製データとの間に発生した不整合を検出し、回復させる、ノードおよびプログラムを提供することができる。
原本データと複製データとの間に不整合が発生する例を説明するための図である。 本実施形態に係るノードを含む分散処理システムの全体構成を示す図である。 本実施形態に係るノードの構成例を示す機能ブロック図である。 本実施形態に係るメンバ識別子管理テーブル(メンバ識別子管理情報)のデータ構成例を示す図である。 本実施形態に係るノードに保持されるデータのデータ構成例を説明するための図である。 本実施形態に係るノードの再冗長化処理部が行う再冗長化対象データの検出処理の流れを示すフローチャートである。 本実施形態に係るノードの再冗長化処理部が行う再冗長化処理の所定のタイミングを説明するための図である。 本実施形態に係るノードのデータ整合処理部が行う不整合検出処理の流れを示すフローチャートである。 本実施形態に係るノードのデータ整合処理部が行う整合対象データリストの生成処理を説明するための図である。 本実施形態に係るノードのデータ整合処理部が行う整合対象データリストの生成処理における(条件B)の判定処理を説明するための図である。 コンシステントハッシュ法によるデータ管理手法を説明するための図である。
次に、本発明を実施するための形態(以下、「本実施形態」と称する。)に係るノード1を含む分散処理システム1000等について説明する。
<分散処理システムの全体構成>
まず、本実施形態に係るノード1含む分散処理システム1000の全体構成について説明する。
図2は、本実施形態に係るノード1を含む分散処理システム1000の全体構成を示す図である。
この分散処理システム1000は、各クライアント2からのメッセージを受け付けるロードバランサ3と、複数の振り分け装置4と、クラスタを構成する複数のノード1とを含んで構成される。ロードバランサ3は、クライアント2からのメッセージを単純なラウンドロビン等により各振り分け装置4に振り分ける。振り分け装置4は、受信したメッセージを、例えば、コンシステントハッシュ法等に基づき、各ノード1に振り分ける。各ノード1では、メッセージ処理を行い、クライアント2にサービスを提供する。
なお、図2においては、振り分け装置4とノード1とを別装置として記載したが、同一サーバ上で別々の機能として動作させることも可能である。また、振り分け装置4も、図2に示すように、クラスタ構成をとることができる。さらに、ロードバランサ3が存在せず、クライアント2から任意の振り分け装置4にメッセージを送信することも可能である。
本実施形態では、分散処理システム1000のデータ管理手法として、ノード1の離脱時および追加時の影響が少ない、コンシステントハッシュ法によるデータ管理手法を例として説明する。ただし、コンシステントハッシュ法に限定されるものではない。また、図11に示した複製データの配置手法により、コンシステントハッシュのID空間上で右隣(時計回りに次)のノード1(メンバ)に複製データを担当させることとする。
また、本実施形態に係る分散処理システム1000では、クラスタからのノード1の離脱時におけるデータの再冗長化処理と、クラスタへのノード1の追加時におけるデータの再配置処理とにおいて同様の仕組みでノード間のデータ移行を行うため、以下の説明では、ノード1の離脱時と追加時とのデータ移行の処理を、併せて再冗長化処理と称して説明する。
(処理の概要)
本実施形態に係る分散処理システム1000のノード1は、クラスタを構成する複数のノード1の通常の処理(クライアント2からのメッセージ処理)に影響を及ぼさないようにするため、ノード1の離脱や追加があった場合に、その離脱や追加の直後ではなく、所定のタイミングで再冗長化処理の対象となるデータ(再冗長化処理対象データ)を検出する処理を実行し、そこで検出されたデータについて、再冗長化処理を実行する。さらに、本実施形態に係るノード1は、各ノード1が保持する原本データについて、所定の時間間隔で、複製ノード(バディ)が保持する複製データとの間で不整合が発生しているか否かの検出処理(不整合検出処理)を行い、不整合が検出された場合に、その不整合を回復させる。この不整合検出処理の際、ノード1は、再冗長化処理において、整合性が回復できるデータについては、処理対象のデータ(後記する「整合対象データ」)として抽出しないことによりデータを絞り込み、ノード1への負荷を抑えた不整合検出処理を実行する。
<ノードの構成>
以下、本実施形態に係るノード1の構成例について、具体的に説明する。
図3は、本実施形態に係るノード1の構成例を示す機能ブロック図である。
ノード1は、図2に示したように、振り分け装置4と通信可能に接続されると共に、クラスタを構成する自身以外の他のノード1とも通信可能に接続される。そして、クライアント2からのメッセージを受信し、サービスを提供する。また、ノード1は、クラスタを構成するノードに離脱または追加があった場合に、移行が必要なデータについて、再冗長化処理を実行する。さらに、ノード1は、自身が保持する原本データと、他のノード1が保持するその原本データの複製データについての不整合を検出し、回復させる処理を実行する。
このノード1は、図3に示すように、制御部10と、入出力部11と、メモリ部12と、記憶部13(記憶手段)とを含んで構成される。
入出力部11は、振り分け装置4や、自身以外の他のノード1との間の情報の入出力を行う。また、この入出力部11は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
制御部10は、ノード1全体の制御を司り、メンバ識別子管理部101(メンバ識別子管理手段)、メッセージ処理部102、データ情報付与部103(データ情報付与手段)、データ抽出部104、再冗長化処理部105(再冗長化処理手段)およびデータ整合処理部106(データ整合処理手段)を含んで構成される。なお、この制御部10は、例えば、記憶部13に格納されたプログラムをCPU(Central Processing Unit)がメモリ部12であるRAM(Random Access Memory)に展開し実行することで実現される。
メンバ識別子管理部101(メンバ識別子管理手段)は、クラスタを構成する各ノード1に関する識別情報をメンバ識別子管理テーブル300(メンバ識別子管理情報)として管理する。
図4は、本実施形態に係るメンバ識別子管理テーブル300(メンバ識別子管理情報)のデータ構成例を示す図である。図4に示すように、メンバ識別子管理テーブル300には、クラスタを構成する各ノード1のノードアドレス301(ノード識別情報)に対応付けてメンバ識別子302が格納される。
ノードアドレス301(ノード識別情報)は、各ノード1に固有なアドレスであり、例えば、IPアドレスである。
メンバ識別子302は、ノード1(メンバ)に固有な識別子であり、例えば、コンシステントハッシュのID空間上でのノードIDに相当する。また、コンシステントハッシュ法において仮想IDを用いる場合には、メンバ識別子302は、仮想ID毎に割り当てられ、メンバ識別子管理テーブル300に登録される。そして、このメンバ識別子管理テーブル300では、例えば、メンバ識別子302を昇順に並べることにより、コンシステントハッシュのID空間におけるID(または仮想ID)を昇順に並べて管理することができる。つまり、メンバ識別子管理テーブル300において、メンバ識別子302を昇順に並べたときの次のノード1(メンバ)が、ID空間上での右隣(時計回りに次)のノード1(メンバ)となる。
例えば、図4においては、コンシステントハッシュのID空間に基づくメンバ識別子302が「0」〜「11111」であるデータについては、同図の第1行目が指すノード(ノードアドレス「10.0.0.254」、メンバ識別子「11111」であるノード)が所有者として担当し、次の第2行目が指すノード(ノードアドレス「10.0.0.1」、メンバ識別子「22222」であるノード)がバディとして担当することを示す。同様に、データ識別子が「11111」に1を加えた「11112」〜「22222」であるデータについては、第2行目が指すノード(ノードアドレス「10.0.0.1」、メンバ識別子「22222」であるノード)が所有者として担当し、次の第3行目が指すノード(ノードアドレス「10.0.0.125」、メンバ識別子「33333」のノード)がバディとして担当することを示す。
このようにして、このメンバ識別子管理テーブル300に基づき、データとその所有者とバディとが対応付けられる。
なお、このメンバ識別子302は、メンバ識別子管理部101が各ノード1に対して付与することもできるし、他のノード1や外部装置(例えば、振り分け装置4等)が生成したメンバ識別子管理テーブル300を受信して格納することも可能である。
メンバ識別子管理部101は、クラスタを構成する複数のノード1において、あるノード1(メンバ)が離脱した際には、そのノード1のノードアドレス301とメンバ識別子302とを含むレコードを削除する。また、メンバ識別子管理部101は、クラスタを構成する複数のノード1において、ノード1(メンバ)が追加された場合には、そのノード1のノードアドレス301とメンバ識別子302とを含むレコードを新規に登録する。つまり、メンバ識別子管理部101は、クラスタにおいてノード1が離脱または追加した際に、メンバ識別子管理テーブル300を、ノード1の離脱または追加に応じた、データと所有者ノードおよび複製ノードとの新たな対応関係に変更して格納する。
図3に戻り、メッセージ処理部102は、振り分け装置4から振り分けられたメッセージを受信し、そのメッセージの処理を実行し、処理結果をクライアント2に返信することにより、サービスを提供する。このメッセージによりメッセージ処理部102が実行する処理は、例えば、データの登録、更新、検索、削除等である。また、メッセージ処理部102は、データの登録や更新等のメッセージを受信した場合に、自身以外の他のノード1(ここでは、メンバ識別子302を昇順に並べた場合の次のノード(メンバ)、つまり、コンシステントハッシュのID空間での右隣のノード(メンバ))にデータの複製を行うことでデータの冗長化を実現する。複製データを複数持つようにする場合には、さらに他のメンバ(ここでは、メンバ識別子302を昇順に並べた場合のさらに次のノード(メンバ)、つまり、コンシステントハッシュのID空間での2つ右隣のノード(メンバ))にデータの複製を行う。また、メッセージ処理部102は、メッセージの処理に必要なデータをそのノード1自身が保持していなかった場合には、他のノード1に要求すること等により、そのデータを取得することが可能である。
なお、メッセージ処理部102は、クラスタを構成するノード1に離脱や追加があった場合において、データの再冗長化処理が実行される前に、再冗長化の対象となるデータに関するメッセージを受信したときには、そのメッセージの処理を実行すると共に、そのデータの再冗長化処理を実行する。
データ情報付与部103(データ情報付与手段)は、各データ(データ本体403)に、そのデータのデータ識別子401と、所有者・バディ情報402(所有者・複製先情報)とを付与する(図5参照)。データ情報付与部103は、新規にデータ400を登録する場合、または、ノード1(メンバ)の離脱や追加等によりデータ400の再冗長化処理を実行した場合において、そのデータ(データ本体403)に、データ識別子401と、所有者・バディ情報402とを付与する。
図5は、本実施形態に係るノード1に保持されるデータ400のデータ構成例を説明するための図である。
図5(a)に示すように、ノード1に保持されるデータ400には、データ識別子401と、所有者・バディ情報402(所有者・複製先情報)と、データ本体403とが格納される。図5(b)を参照して、各データの内容を説明する。
データ識別子401には、各データを一意に識別可能な値が格納される。例えば、コンシステントハッシュ法におけるデータのIDが格納される。
所有者・バディ情報402(所有者・複製先情報)には、そのデータについて、原本データを保持しているノード(所有者)に関する情報と、複製データを保持しているノード(バディ:複製ノード)に関する情報とが格納される。ここで、所有者に関する情報は、ID空間上での所有者(メンバ)を識別する情報として、ノードアドレス301(ノード識別情報)とメンバ識別子302の情報が格納される。なお、このノードアドレス301とメンバ識別子302は、メンバ識別子管理テーブル300(図4)に格納される情報と同様の情報であるが、図5(b)においては、ノードアドレス「1」、メンバ識別子「1」等のように簡略化して表記している。また、バディに関する情報は、ID空間上でのバディを識別する情報として、ノードアドレス301(ノードアドレス「2」)とメンバ識別子302(メンバ識別子「2」)の情報が格納される。
データ本体403には、メッセージ処理の対象となるデータそのものが格納される。
図3に戻り、データ抽出部104は、例えば、メンバ識別子管理部101により、メンバ識別子管理テーブル300(図4参照)が変更されたことを契機として、次に示す判定対象データの抽出処理を行う。データ抽出部104は、データ400に格納された所有者・バディ情報402を参照することにより、(1)自身が原本として管理しているデータ(原本データ)、および、(2)自身が複製として管理しているデータ(複製データ)のうち、その複製データの原本データを管理しているノード1(所有者)が離脱したノード1と一致するデータ、つまり、原本データが消失した複製データ、を再冗長化処理が必要か否かの判定対象となるデータ(判定対象データ)として抽出する。そして、データ抽出部104は、その抽出したデータのデータ識別子401を、抽出データ管理テーブル100に格納する。
なお、ノード1が追加された場合には、(2)の原本データが消失した複製データは、存在しないため、そのノード1が原本として管理しているデータ(原本データ)のみが抽出される。
再冗長化処理部105(再冗長化処理手段)は、予め設定されるパラメータに基づく所定のタイミングで、データ抽出部104により抽出され抽出データ管理テーブル100に格納された判定対象データについて、変更されたメンバ識別子管理テーブル300に基づき、コンシステントハッシュ法等の予め定められたデータ管理手法に従った場合の所有者とバディとを特定し(以下、この処理を「シミュレーション」と称す。)、各データ(判定対象データ)に付与されている所有者・バディ情報402と比較する。そして、再冗長化処理部105は、この比較の結果、所有者のメンバ識別子302およびバディのメンバ識別子302が一致(完全一致)しないデータを、再冗長化対象データとして検出し、再冗長化処理を実行する。
なお、冗長数が3以上(複製データが2以上)の場合、複製データを管理する複数のノード1(ID空間上で原本データを管理する所有者に時計回りで近いノードから、バディ「1」,バディ「2」,・・・と呼ぶ。)が同一データに対して再冗長化処理を実行する虞がある。そこで、複数のバディが存在する場合には、番号の若い(昇順で手前の)バディが再冗長化処理を担当することとする。この再冗長化対象データの検出処理の詳細については、図6を参照して後記する。
この再冗長化処理部105は、再冗長化処理を実行する所定のタイミングを、設定された1つ以上のパラメータに基づき実行する。再冗長化処理部105は、1つ以上のパラメータにより、再冗長化処理の実行タイミングを調整することで、再冗長化処理の負荷が一度に集中して通常の処理を妨げサービス品質の低下を招かないように負荷を抑制しつつ、再冗長化処理を実行する。
パラメータは、例えば、再冗長化処理スレッド数、再冗長化処理実行間隔、シミュレーション最大個数が設定される。
再冗長化処理スレッド数とは、再冗長化処理を並列で実行できる最大スレッド数を示す。この再冗長化処理スレッド数に大きな値を設定すると、再冗長化処理にかかる時間を短縮することができるが、ノード1の処理負荷は大きくなる。これに対し、再冗長化処理スレッド数に小さな値を設定すると、再冗長化処理にかかる時間は増加するが、ノード1の処理負荷は小さくなる。
再冗長化処理実行間隔とは、各スレッドで、再冗長化処理部105が再冗長化対象データの検出処理(図6)を実行した結果、再冗長化対象データが検出され、再冗長化処理部105が、その再冗長化処理を実行した後に待機する時間を指す。
シミュレーション最大個数とは、各スレッドが前記したシミュレーション(変更後のメンバ識別子管理テーブル300(図4参照)に基づく、所有者とバディの特定)を含む再冗長化対象データの検出処理を連続で実行する個数を指す。再冗長化処理部105は、再冗長化対象データの検出処理を連続で実行した後に、所定の時間待機し、その後、再びシミュレーションを含む再冗長化対象データの検出処理を開始する。
このシミュレーション最大個数を少なく設定する、または、再冗長化処理実行間隔を長く設定することで、ノード1は、処理負荷を抑えながら徐々にデータ移行処理を実行することが可能となる。
なお、この再冗長化処理スレッド数、再冗長化処理実行間隔、シミュレーション最大個数の各パラメータは、予めすべて設定されてもよいし、いずれか1つでもよいし、各パラメータを任意に組み合わせて設定されてもよい。
また、このパラメータにより調整される所定のタイミングでの再冗長化処理の詳細については、図7を参照して後記する。
データ整合処理部106(データ整合処理手段)は、各ノード(所有者)が保持する原本データについて、複製ノード(バディ)が保持する複製データと、所定の時間間隔で不整合検出処理を実行し、不整合を検出した場合に、その不整合を回復させる。
データ整合処理部106は、この不整合検出処理において、具体的には、整合対象データリスト生成処理、整合性確認処理、および、整合性回復処理を実行する。以下、具体的に説明する。
整合対象データリスト生成処理は、データ整合処理部106が、不整合検出処理の対象となるデータ(整合対象データ)のリスト(以下、「整合対象データリスト」と称する。)を生成する処理である。データ整合処理部106は、自ノード1が保持する全データの中から、以下の(条件A)および(条件B)を満たすデータを抽出することにより、そのデータのデータ識別子401をリスト化してこの整合対象データリスト200(後記する、図9(b)参照)を生成する。
(条件A)データに付与された「所有者・バディ情報」(所有者・複製先情報)の所有者が、自ノードのデータである。
(条件B)データの「データ識別子」が、メンバ識別子管理テーブルにおける自ノードのメンバの担当領域内に位置するデータである。
(条件A)は、データに付与された所有者・バディ情報402の所有者のノード識別情報が、自ノードのノード識別情報であることを示す。そして、この(条件A)は、各ノード1が保持するデータのうち、原本データのみを不整合検出処理の対象とするためのものである。
また、(条件B)は、データに付与されたデータ識別子401が、メンバ識別子管理テーブル300に基づき自ノードが所有者となるデータであることを示す。そして、この(条件B)は、その時点における(更新された最新の)メンバ識別子管理テーブル300において、データ識別子401が、自ノード1のメンバの担当領域内に位置しない、つまり、他ノード1の担当領域内に位置する場合、今後の再冗長化処理により他ノード1が所有者となるようなデータの再配置が行われ、そこで整合性回復が期待できるため、不整合検出処理の対象としないようにするためのものである。
(条件A)、(条件B)の両方を満たすデータを、不整合検出処理の対象となるデータ(整合対象データ)として抽出することにより、ノード1が保持する全データの中から、整合対象データを絞り込むことができ、ノード1の処理負荷を抑えることができる。
整合性確認処理は、データ整合処理部106が、整合対象データリスト200に抽出されたデータ識別子に対応する個々のデータ(整合対象データ)について、他のノード1に保持された複製データとの整合性を確認する処理である。
ノード1(所有者)のデータ整合処理部106は、所有者・バディ情報402に示される複製ノード(バディ)に対して、整合対象データ(原本データ)をハッシュ値に変換した値を送信する。複製ノード(バディ)のデータ整合処理部106は、整合対象データ(原本データ)の複製データを抽出して、その複製データをハッシュ値に変換した値を算出する。そして、複製ノード(バディ)のデータ整合処理部106は、受信した整合対象データ(原本データ)のハッシュ値と、算出した複製データのハッシュ値とを比較することにより、整合性を確認する。ここで、整合性確認処理に利用するデータの情報は、整合対象データ(原本データ)そのものでもよいし、その他、整合性確認を実行できる値であればよい。
複製ノード(バディ)のデータ整合処理部106は、整合性を確認した結果(値が一致すれば「整合」、値が不一致であれば「不整合」)を、原本データを保持するノード1(所有者)に送信する。
整合性回復処理は、自ノード1のデータ整合処理部106が、複製ノード(バディ)から、整合性を確認した結果(整合、不整合)を受け取り、その結果が不整合である場合に、その整合対象データ(原本データ)に対応する複製データの整合性を回復させる処理である。
自ノード1(所有者)のデータ整合処理部106は、整合性を確認した結果が不整合である応答を受け取ると、その整合対象データ(原本データ)を、不整合となった複製ノード(バディ)に送信し、その複製データを送信した原本データで上書き(更新)させることにより、整合性を回復する。
メモリ部12は、RAM等の一次記憶装置からなり、制御部10によるデータ処理に必要な情報を一時的に記憶している。なお、このメモリ部12には、前記した、抽出データ管理テーブル100や、整合対象データリスト200等が記憶される。
記憶部13(記憶手段)は、ハードディスクやフラッシュメモリ等の記憶装置からなり、前記したメンバ識別子管理テーブル300(図4参照)や、データ400(図5参照)等が記憶される。
なお、データ400の各データには、図5に示すように、そのデータのデータ識別子401、所有者・バディ情報402およびデータ本体403が格納される。
<処理の流れ>
次に、本実施形態に係るノード1が実行する処理の流れについて説明する。ここでは、再冗長化処理部105が行う再冗長化対象データの検出処理、および、所定のタイミングでの再冗長化処理について説明する。その後、データ整合処理部106が行う不整合検出処理について説明する。
≪再冗長化対象データの検出処理≫
再冗長化対象データの検出処理は、データ抽出部104が判定対象データとして抽出し、抽出データ管理テーブル100に格納したデータについて、ノード1の離脱や追加に対応して変更されたメンバ識別子管理テーブル300に基づき、コンシステントハッシュ法等の予め定められたデータ管理手法に従った場合の所有者とバディとを特定し(シミュレーション)、各データ(判定対象データ)に付与されている所有者・バディ情報402と比較する。そして、再冗長化処理部105は、この比較の結果、所有者のメンバ識別子およびバディのメンバ識別子が一致(完全一致)しないデータを、再冗長化対象データとして検出する。
図6は、本実施形態に係るノード1の再冗長化処理部105が行う再冗長化対象データの検出処理の流れを示すフローチャートである。
まず、ノード1の再冗長化処理部105は、抽出データ管理テーブル100から抽出した判定対象データについて、シミュレーション(図6において、「A処理」と記載)を実行する(ステップS10)。具体的には、再冗長化処理部105は、抽出した判定対象データについて、変更されたメンバ識別子管理テーブル300に基づき、コンシステントハッシュ法等の予め定められたデータ管理手法に従った場合の所有者とバディとを特定する。
次に、再冗長化処理部105は、抽出データ管理テーブル100から抽出した判定対象データに格納された所有者・バディ情報402の所有者のメンバ識別子とバディのメンバ識別子とを抽出(図6において、「B処理」と記載)する(ステップS11)。
続いて、シミュレーション(A処理)の結果、自ノードが所有者か否かを判定する(ステップS12)。ここで、シミュレーション(A処理)の結果、自ノードが所有者である場合には(ステップS12→Yes)、次のステップS13に進み、一方、自ノードが所有者でない場合には(ステップS12→No)、ステップS15に進む。
ステップS13において、再冗長化処理部105は、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者か否かを判定する。ここで、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者でない場合は(ステップS13→No)、そのデータ(判定対象データ)を、再冗長化処理の対象となるデータ(再冗長化対象データ)として決定する。つまり、同じデータに関して、所有者がA処理とB処理とで一致しないため、再冗長化が必要なデータ(図6において、「再冗長化対象」と記載する。)となる。一方、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者である場合は(ステップS13→Yes)、次のステップS14に進む。
ステップS14において、再冗長化処理部105は、シミュレーション(A処理)の結果と所有者・バディ情報抽出(B処理)の結果とでバディが一致するか否かを判定する。ここで、バディが一致する場合には(ステップS14→Yes)、そのデータ(判定対象データ)は、再冗長化の必要のないデータ(図6において、「再冗長化対象外」と記載する。)となる。一方、バディが一致しない場合には(ステップS14→No)、そのデータ(判定対象データ)を、再冗長化処理の対象となるデータ(再冗長化対象データ)として決定する。つまり、所有者が一致していても、バディが一致していないため、再冗長化対象データとなる。
次に、ステップS12において、シミュレーション(A処理)の結果、自ノードが所有者でない場合には(ステップS12→No)、再冗長化処理部105は、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者か否かを判定する(ステップS15)。ここで、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者ある場合には(ステップS15→Yes)、そのデータ(判定対象データ)を、再冗長化処理の対象となるデータ(再冗長化対象データ)として決定する。つまり、所有者がA処理とB処理で一致しないため、再冗長化対象となる。一方、所有者・バディ情報抽出(B処理)の結果、自ノードが所有者でない場合は(ステップS15→No)、次のステップS16に進む。
ステップS16において、再冗長化処理部105は、所有者・バディ情報抽出(B処理)の結果、所有者が変更後のメンバ識別子管理テーブル300(図4参照)に存在するか否かを判定する。ここで、存在する場合には(ステップS16→Yes)、そのデータ(判定対象データ)は、再冗長化対象外となる。一方、存在しない場合には(ステップS16→No)、次のステップS17に進む。
ステップS17において、再冗長化処理部105は、所有者・バディ情報抽出(B処理)の結果、自身より若いバディ(メンバ識別子302を昇順に並べた場合に、番号が若いバディ)が存在し、変更後のメンバ識別子管理テーブル300(図4参照)にも、その自身より若いバディが存在するか否かを判定する。つまり、複数のバディが存在する場合に、自身が番号の最も若いバディであるか否かを判定する。ここで、自身より若いバディが存在する場合には(ステップS17→Yes)、同一データに対し重複して再冗長化処理を実行するのを避けるため、そのデータ(判定対象データ)を、再冗長化対象外とする。一方、自身より若いバディが存在しない場合には(ステップS17→No)、そのデータ(判定対象データ)を、再冗長化処理の対象となるデータ(再冗長化対象データ)として決定する。
このようにすることで、再冗長化処理部105は、抽出データ管理テーブル100に抽出された判定対象データそれぞれについて、再冗長化処理を実行すべきか否かを判定し、再冗長化対象データを検出することができる。また、複数のバディが存在する場合であっても、離脱や追加されたノード1の両隣にある、所有者と番号が最も若いバディとがトリガとなり再冗長化処理が実行されるので、同一データについて、重複して再冗長化処理を実行することを避けることができる。
≪所定のタイミングでの再冗長化処理≫
次に、図7を参照して、再冗長化処理部105が、予め設定されるパラメータに基づいて、再冗長化処理を実行する所定のタイミングについて説明する。
図7においては、予め設定されるパラメータの例として、再冗長化処理スレッド数、再冗長化処理実行間隔、および、シミュレーション最大個数が設定されている例を示す。
図7は、再冗長化処理スレッド数(符号P1)が「3」に設定されている例を示している。
また、各スレッドにおいて、再冗長化処理部105が、抽出データ管理テーブル100から判定対象データを取得すると(ステップS20)、再冗長化対象データの検出処理を実行し(ステップS21)、再冗長化対象データが検出された場合には、そのまま再冗長化処理を実行する(ステップS22)。
ここで、再冗長化対象データについて、ステップS22において、再冗長化処理を実行した後、再冗長化処理部105は、再冗長化処理実行間隔(符号P2)が設定されているため、所定の時間、次の判定対象データの取得処理(ステップS20)を行わずに待機する。
また、図7のスレッド「1」に示すように、シミュレーション最大個数(符号P3)のパラメータが「5」に設定されている場合には、再冗長化処理部105は、抽出データ管理テーブル100から判定対象データを取得し、再冗長化対象データの検出処理を5回連続して実行する。そして、再冗長化処理部105は、シミュレーション最大個数(ここでは「5」回)の再冗長化対象データの検出処理を行っても、再冗長化対象データが検出されなかったときには、所定の時間待機する。
このようにすることで、再冗長化処理部105が、各パラメータにより設定された所定のタイミングで再冗長化対象データの検出処理を実行し、再冗長化対象データが検出された場合に、再冗長化処理を実行することができる。よって、クラスタを構成するノード1が離脱したり追加されたりした直後において、他の既存のノード1は、再冗長化処理を一時に実行しないため、ノード1が処理負荷を抑えながら徐々に再冗長化処理を実行することができる。
≪不整合検出処理≫
次にデータ整合処理部106が実行する不整合検出処理について説明する。図1を参照して説明したように、原本データの更新が発生した場合に、その複製データに更新が反映するように、メッセージ処理部102(図3)によりデータの複製が行われるが、その複製処理に失敗した場合に、原本データと複製データとの間で不整合が発生する。データ整合処理部106は、この原本データと複製データとの間で発生した不整合を検出して回復する処理(不整合検出処理)を実行する。
図8は、本実施形態に係るノード1のデータ整合処理部106が行う不整合検出処理の流れを示すフローチャートである。なお、以下に示す、ステップS30〜S34の処理は、データ整合処理部106に予め設定された所定の時間間隔ごとに実行される。
まず、データ整合処理部106は、不整合検出処理の対象となるデータ(整合対象データ)を抽出した整合対象データリスト200の生成処理を実行する(ステップS30)。
この整合対象データの抽出は、データ整合処理部106が、自ノード1に格納された全データに関して、前記した(条件A)、(条件B)の両方を満たすデータのデータ識別子を抽出することにより行う。
図9および図10を参照して、この整合対象データリスト200の生成処理の詳細を説明する。
図9は、本実施形態に係るノード1のデータ整合処理部106が行う整合対象データリスト200の生成処理を説明するための図である。
まず、データ整合処理部106は、自ノード1に格納された各データが、「(条件A)データに付与された『所有者・バディ情報』の所有者が、自ノードのデータである。」を満たすか否かを判定するために、図9(a)の符号310に示すように、自ノード1が格納するデータ400の所有者・バディ情報402の値を参照し、その所有者のノードアドレス(ノード識別情報)が自ノード1のノードアドレスと一致するか否かを判定する。
続いて、データ整合処理部106は、「(条件B)データの『データ識別子』が、メンバ識別子管理テーブルにおける自ノードのメンバの担当領域内に位置するデータである。」を満たすか否かを判定するため、図9(a)の符号320に示すように、自ノード1が格納するデータ400のデータ識別子401の値を参照し、そのデータ識別子401の値が、メンバ識別子管理テーブル300(図4)における自ノード1のメンバの担当領域内に位置するか否かを判定する。なお、(条件B)の判定処理の詳細は、図10を参照して後記する。
データ整合処理部106は、(条件A)、(条件B)の両方を満たすデータを抽出し、そのデータのデータ識別子をリスト化して整合対象データリスト200を生成する(図9(b)参照)。
図10は、本実施形態に係るノード1のデータ整合処理部106が行う整合対象データリストの生成処理における(条件B)の判定処理を説明するための図である。
データ整合処理部106は、自ノード1が格納するデータ400が(条件B)を満たすか否かを判定するため、まず、データ400のデータ識別子401の値を抽出する。図10(a)に示す例においては、ノード「A」に格納されたデータ「X」のデータ識別子401として、コンシステントハッシュのIDの値「12345」が抽出されたものとする。
次に、データ整合処理部106は、メンバ識別子管理テーブル300を参照し、抽出されたデータ識別子401の値が、自ノード1のメンバの担当領域内に位置するか否かを判定する。図10(b)に示す例では、抽出されたデータ識別子401の値「12345」が、コンシステントハッシュのID空間における領域「1」、つまり、自ノード(ここでは、ノードアドレス「10.0.0.1」のノード「A」)のメンバ「1」(メンバ識別子「22222」)の担当領域(「11112」〜「22222」)内に位置するデータであるため、(条件B)を満たすと判定される。
このようにして、データ整合処理部106は、(条件A)、(条件B)の両方を満たすデータを抽出して、整合対象データリスト200を生成する。この(条件B)を設定することにより、例えば、ノード1の離脱や追加により、メンバ識別子管理テーブル300が変更され、再冗長化処理部105が、ノード1の処理負荷を抑えながら徐々に再冗長化処理を実行している場合に、その再冗長化処理により整合性回復が期待できるデータについては、不整合検出処理の対象としないようにすることができる。
図8に戻り、データ整合処理部106は、整合対象データリスト200から1つの整合対象データのデータ識別子を抽出し、整合性確認処理を実行する(ステップS31)。
この整合性確認処理は、以下の処理により行われる。自ノード1(所有者)のデータ整合処理部106は、所有者・バディ情報402に示される複製ノード(バディ)に対して、整合対象データ(原本データ)をハッシュ値に変換した値を送信する。その情報を受信した複製ノード(バディ)のデータ整合処理部106は、その整合対象データ(原本データ)に対応する複製データをハッシュ値に変換した値を算出し、その算出した複製データのハッシュ値と、受信した整合対象データ(原本データ)のハッシュ値とを比較することにより整合性を確認する。そして、複製ノード(バディ)のデータ整合処理部106は、その整合性の確認結果(整合、不整合)を、原本データを保持するノード1(所有者)に送信する。
続いて、自ノード1(所有者)のデータ整合処理部106は、複製ノード(バディ)から受信した整合性の確認結果が不整合であるか否かを判定する(ステップS32)。そして、データ整合処理部106は、確認結果が不整合でなければ、つまり、整合であれば(ステップS32→No)、ステップS34に進む。一方、データ整合処理部106は確認結果が不整合であれば(ステップS32→Yes)、次のステップS33に進む。
ステップS33において、データ整合処理部106は、整合性回復処理を実行する。
具体的には、データ整合処理部106は、その整合対象データ(原本データ)を、不整合となった複製ノード(バディ)に送信する。そして、複製ノード(バディ)のデータ整合処理部106が、受信した原本データを用いて、複製データを上書き(更新)することにより、整合性を回復させる。そして、ステップS34に進む。
ステップS34において、データ整合処理部106は、整合対象データリスト200に抽出されたすべての整合対象データのデータ識別子を処理したか否かを判定する。ここで、まだ処理していない整合対象データのデータ識別子がある場合には(ステップS34→No)、ステップS31に戻る。一方、すべての整合対象データのデータ識別子の抽出を終えている場合には(ステップS34→Yes)、不整合検出処理を終了する。
なお、ステップS31〜S34の処理について、データ整合処理部106は、複数のスレッドを設定して並列実行させてもよい。
以上説明したように、本実施形態に係るノードおよびプログラムによれば、再冗長化処理において整合性が回復できるデータについては、不整合検出処理の対象となるデータ(整合対象データ)として抽出しないことによりデータを絞り込みことができる。これにより、ノードおよびプログラムは、ノードへの負荷を抑えて原本データと複製データとの間に発生した不整合を検出し、回復することができる。
1 ノード
2 クライアント
3 ロードバランサ
4 振り分け装置
10 制御部
11 入出力部
12 メモリ部
13 記憶部(記憶手段)
100 抽出データ管理テーブル
101 メンバ識別子管理部(メンバ識別子管理手段)
102 メッセージ処理部
103 データ情報付与部(データ情報付与手段)
104 データ抽出部
105 再冗長化処理部(再冗長化処理手段)
106 データ整合処理部(データ整合処理手段)
200 整合対象データリスト
300 メンバ識別子管理テーブル(メンバ識別子管理情報)
400 データ
1000 分散処理システム

Claims (2)

  1. クラスタを構成する複数のノードのいずれかが、クライアントにサービスを提供するためのデータを原本データとして格納する所有者ノード、または、前記データの複製データを格納する1つ以上の複製ノードとして割り当てられるクラスタシステムの前記ノードであって、
    前記クラスタを構成する複数のノードそれぞれのノード識別情報と、当該複数のノードそれぞれに対応付けられて設定されたメンバに固有な識別子であるメンバ識別子と、が格納されたメンバ識別子管理情報であって、前記データと前記所有者ノードおよび前記複製ノードとの対応関係を求めるために用いられる前記メンバ識別子管理情報が記憶される記憶部と、
    前記クラスタにおいて前記ノードが離脱または追加した際に、前記メンバ識別子管理情報を、前記ノードの離脱または追加に応じた、前記データと前記所有者ノードおよび前記複製ノードとの新たな対応関係に変更して格納するメンバ識別子管理部と、
    変更された前記メンバ識別子管理情報に基づいて、自ノードが記憶している前記原本データおよび前記複製データを再配置する再冗長化処理を実行する再冗長化処理部と、
    前記データを新規に保持する際、および、前記再冗長化処理を実行する際に、(1)前記データに固有な識別子であるデータ識別子と、(2)当該データの前記原本データを格納する前記所有者ノードの前記ノード識別情報および前記メンバ識別子、並びに、当該データの前記複製データを格納する前記複製ノードの前記ノード識別情報および前記メンバ識別子、を示す所有者・複製先情報と、を前記データそれぞれに付与するデータ情報付与部と、
    自ノードが保持する前記データの中から、(条件A)前記データに付与された前記所有者・複製先情報の前記所有者ノードの前記ノード識別情報が、自ノードのノード識別情報であること、(条件B)前記データに付与された前記データ識別子が、前記メンバ識別子管理情報に基づき自ノードが前記所有者ノードとなるデータであること、の両条件を満たす前記データを整合対象データとして抽出し、前記抽出した整合対象データについて、自ノードが格納する原本データと、前記所有者・複製先情報に示される前記複製ノードが格納する複製データとを比較し、不整合が検出された場合に、前記原本データにより前記複製データを更新することにより不整合を回復させるデータ整合処理部と、
    を備えることを特徴とするノード。
  2. クラスタを構成する複数のノードのいずれかが、クライアントにサービスを提供するためのデータを原本データとして格納する所有者ノード、または、前記データの複製データを格納する1つ以上の複製ノードとして割り当てられるクラスタシステムの前記ノードとしてのコンピュータを、
    前記クラスタを構成する複数のノードそれぞれのノード識別情報と、当該複数のノードそれぞれに対応付けられて設定されたメンバに固有な識別子であるメンバ識別子と、が格納されたメンバ識別子管理情報であって、前記データと前記所有者ノードおよび前記複製ノードとの対応関係を求めるために用いられる前記メンバ識別子管理情報が記憶される記憶手段、
    前記クラスタにおいて前記ノードが離脱または追加した際に、前記メンバ識別子管理情報を、前記ノードの離脱または追加に応じた、前記データと前記所有者ノードおよび前記複製ノードとの新たな対応関係に変更して格納するメンバ識別子管理手段、
    変更された前記メンバ識別子管理情報に基づいて、自ノードが記憶している前記原本データおよび前記複製データを再配置する再冗長化処理を実行する再冗長化処理手段、
    前記データを新規に保持する際、および、前記再冗長化処理を実行する際に、(1)前記データに固有な識別子であるデータ識別子と、(2)当該データの前記原本データを格納する前記所有者ノードの前記ノード識別情報および前記メンバ識別子、並びに、当該データの前記複製データを格納する前記複製ノードの前記ノード識別情報および前記メンバ識別子、を示す所有者・複製先情報と、を前記データそれぞれに付与するデータ情報付与手段、
    自ノードが保持する前記データの中から、(条件A)前記データに付与された前記所有者・複製先情報の前記所有者ノードの前記ノード識別情報が、自ノードのノード識別情報であること、(条件B)前記データに付与された前記データ識別子が、前記メンバ識別子管理情報に基づき自ノードが前記所有者ノードとなるデータであること、の両条件を満たす前記データを整合対象データとして抽出し、前記抽出した整合対象データについて、自ノードが格納する原本データと、前記所有者・複製先情報に示される前記複製ノードが格納する複製データとを比較し、不整合が検出された場合に、前記原本データにより前記複製データを更新することにより不整合を回復させるデータ整合処理手段、
    として機能させるためのプログラム。
JP2014079232A 2014-04-08 2014-04-08 ノードおよびプログラム Active JP5918802B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014079232A JP5918802B2 (ja) 2014-04-08 2014-04-08 ノードおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014079232A JP5918802B2 (ja) 2014-04-08 2014-04-08 ノードおよびプログラム

Publications (2)

Publication Number Publication Date
JP2015201027A JP2015201027A (ja) 2015-11-12
JP5918802B2 true JP5918802B2 (ja) 2016-05-18

Family

ID=54552238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014079232A Active JP5918802B2 (ja) 2014-04-08 2014-04-08 ノードおよびプログラム

Country Status (1)

Country Link
JP (1) JP5918802B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101756136B1 (ko) * 2016-01-22 2017-07-26 계명대학교 산학협력단 계층적 구조를 갖는 시스템의 정보 결함허용 방법
JP6564349B2 (ja) * 2016-06-09 2019-08-21 日本電信電話株式会社 保守減設システム、ノードおよび保守減設方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009163549A (ja) * 2008-01-08 2009-07-23 Konica Minolta Holdings Inc ネットワークシステム、共有データの同期方法およびプログラム
JP5969315B2 (ja) * 2012-08-23 2016-08-17 日本電信電話株式会社 データ移行処理システムおよびデータ移行処理方法

Also Published As

Publication number Publication date
JP2015201027A (ja) 2015-11-12

Similar Documents

Publication Publication Date Title
US11288248B2 (en) Performing file system operations in a distributed key-value store
US8234518B2 (en) Method for voting with secret shares in a distributed system
US8352482B2 (en) System and method for replicating disk images in a cloud computing based virtual machine file system
US9727273B1 (en) Scalable clusterwide de-duplication
US9305072B2 (en) Information storage system and data replication method thereof
US20140229440A1 (en) Method and apparatus for replicating virtual machine images using deduplication metadata
JP2009020757A (ja) データ登録装置、データ登録方法及びプログラム
JP6196389B2 (ja) 分散型ディザスタリカバリファイル同期サーバシステム
JP5969315B2 (ja) データ移行処理システムおよびデータ移行処理方法
US11409715B2 (en) Maintaining high-availability of a file system instance in a cluster of computing nodes
JP6059558B2 (ja) 負荷分散判定システム
JP6025679B2 (ja) 分散データベースシステム
JP5918802B2 (ja) ノードおよびプログラム
KR101750601B1 (ko) 장애 내구성을 지닌 클러스터의 상태 감시 및 클러스터의 형상 변경을 위한 클러스터 관리 방법 및 데이터 저장 시스템
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
JP5711771B2 (ja) ノード離脱処理システム
JP6093320B2 (ja) 分散処理システム
JP5845298B2 (ja) ノードおよびプログラム
EP2947579A1 (en) Method for generating a backup copy of a distributed data structure, system for generating a backup copy of a distributed data structure, program and computer program product
JP4818396B2 (ja) オーバーレイネットワークシステム及び同システムにおけるオブジェクト登録方法
JP5711772B2 (ja) クラスタシステム
JP6506156B2 (ja) ノードおよびグラビテーション抑止方法
JP6714547B2 (ja) 負荷分散装置、負荷分散方法、および、負荷分散プログラム
JP6127005B2 (ja) クラスタシステムのサーバ装置およびプログラム
JP2015011434A (ja) バックアップ方法及びバックアップシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160408

R150 Certificate of patent or registration of utility model

Ref document number: 5918802

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150