JP2015095015A - データ配置方法、データ配置プログラムおよび情報処理システム - Google Patents
データ配置方法、データ配置プログラムおよび情報処理システム Download PDFInfo
- Publication number
- JP2015095015A JP2015095015A JP2013232884A JP2013232884A JP2015095015A JP 2015095015 A JP2015095015 A JP 2015095015A JP 2013232884 A JP2013232884 A JP 2013232884A JP 2013232884 A JP2013232884 A JP 2013232884A JP 2015095015 A JP2015095015 A JP 2015095015A
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- backup
- nodes
- master
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ノード間の通信量を軽減すること。
【解決手段】ノード1,2,3は、主データX,Y,Zのバックアップである副データX1,Y1,Z1をノード1,2,3に分散して配置する。副データY1を保持するノード1は、副データY1に対応する主データYと主データYを保持するノード2との対応関係を示す管理情報K1を自ノードに格納する。副データZ1を保持するノード2は、副データZ1に対応する主データZと主データZを保持するノード3との対応関係を示す管理情報K2を自ノードに格納する。副データX1を保持するノード3は、副データX1に対応する主データXと主データXを保持するノード1との対応関係を示す管理情報K3を自ノードに格納する。
【選択図】図1
【解決手段】ノード1,2,3は、主データX,Y,Zのバックアップである副データX1,Y1,Z1をノード1,2,3に分散して配置する。副データY1を保持するノード1は、副データY1に対応する主データYと主データYを保持するノード2との対応関係を示す管理情報K1を自ノードに格納する。副データZ1を保持するノード2は、副データZ1に対応する主データZと主データZを保持するノード3との対応関係を示す管理情報K2を自ノードに格納する。副データX1を保持するノード3は、副データX1に対応する主データXと主データXを保持するノード1との対応関係を示す管理情報K3を自ノードに格納する。
【選択図】図1
Description
本発明はデータ配置方法、データ配置プログラムおよび情報処理システムに関する。
現在、ネットワークに接続された複数のノードにデータを分散して格納する分散ストレージシステムが利用されることがある。分散ストレージシステムの一例として、各ノードがデータレコードとしてキーと値(バリュー)の組を記憶する分散キーバリューストアが挙げられる。分散キーバリューストアでは、例えば、キーのハッシュ値に基づいて、複数のノードの中からキーに対応するバリューを記憶すべきノードが決定される。
分散ストレージシステムでは、所定数以下のノードの故障に耐えられるよう、データをコピーして複数のノードに記憶しておくことがある。例えば、同じデータを3台のノードに記憶しておけば、2台までのノードの同時故障に耐えることができる。データを冗長化した場合、同じデータを記憶する複数のノードのうち、1つのノードのみが当該データの読み出しや書き込みなどの命令を受け付けて処理し、他のノードは当該データを専らバックアップデータとして管理することが考えられる。前者の読み書きなどの命令により処理されるデータを主データ、後者のバックアップデータを副データと呼ぶことができる。
複数のノードのリソースを活用するため、主データの管理専用のノードおよび副データの管理専用のノードを設けるのではなく、各ノードが主データおよび副データの両方の管理を担当することが考えられている。例えば、あるサーバにおいて、当該サーバのデータをオリジナルデータ領域に保持し、他のサーバのデータを同期データ領域に保持する提案がある。この提案では、他のサーバで障害が発生すると、当該他のサーバのデータを同期データ領域に保持するサーバを、当該他のサーバの代替として機能させる。
なお、主サイトと同期リモートコピーにより関連付けられる第1の副サイトと、主サイトと非同期リモートコピーにより関連付けられる第2の副サイトとを含むシステムで、主サイトに障害が発生したときの両副サイト間のデータの同期方法が考えられている。また、複数のサーバ上のアプリケーションの更新を行う際に、1つのサーバで更新が失敗すると、全てのサーバで更新を取り消して更新前の状態に戻す提案もある。
主データと主データを保持するノードとの対応関係を示す情報(管理情報)を各ノードに格納することが考えられる。何れかの主データにアクセスする際に、各ノードは管理情報を用いてアクセス先のノードを決定する。このとき、アクセス先ノードの決定を各ノードで分担すれば、各ノードは全ての主データについて管理情報をもたなくてよく、アクセス先ノードの決定に伴う負荷を分散できる。各ノードで自ノードの管理情報にない主データを保持するノードを特定したいときは、他のノードに問い合わせればよい。
このとき、管理情報を各ノードでどのように分担するかが問題となる。例えば、障害などで利用できなくなったノード(障害ノード)が発生した場合に、各ノードは管理情報により障害ノード上の主データを特定できる。例えば、各ノードは、自身が保持する副データが障害ノード上の主データに対応するものであるかを管理情報により確認し、副データを用いて障害ノード以外のノードに当該主データを復元し得る。ところが、この場合、各ノードは自身が保持する全ての副データについて、障害ノード上の主データに対応するものであるかを確認することになる。このため、各ノードに管理情報を無作為に分担させると、ノード間での問い合わせが多発し、ノード間の通信量が増大するおそれがある。
1つの側面では、本発明は、ノード間の通信量を軽減できるデータ配置方法、データ配置プログラムおよび情報処理システムを提供することを目的とする。
1つの態様では、データ配置方法が提供される。このデータ配置方法では、複数の主データが分散して配置された複数のノードを含み、何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定するシステムが、複数の主データのバックアップである複数の副データを複数のノードに分散して配置し、副データを保持するノードに、当該副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を格納する。
また、1つの態様では、コンピュータによって実行されるデータ配置プログラムであって、複数の主データが分散して配置された複数のノードを含み、何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定するシステムに用いられるデータ配置プログラムが提供される。このデータ配置プログラムは、複数のノードの1つとして用いられるコンピュータに、複数の主データのバックアップである複数の副データの一部を記憶装置に配置し、記憶装置に保持された副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を記憶装置に格納する。
また、1つの態様では、複数の主データのうちの何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定する情報処理システムが提供される。この情報処理システムは、複数の主データおよび複数の主データのバックアップである複数の副データを各ノードに分散して配置し、自ノードが保持する副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を自ノードに格納する複数のノードを有する。
1つの側面では、ノード間の通信量を軽減できる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、ノード1,2,3を含む。ノード1,2,3はネットワークを介して接続されている。ノード1,2,3は、情報処理装置やストレージ装置でもよい。例えば、ノード1,2,3は、RAM(Random Access Memory)やHDD(Hard Disk Drive)などの記憶装置とCPU(Central Processing Unit)やASIC(Application Specific Integrated Circuit)などのプロセッサとを備えたコンピュータでもよい。以下に示す処理は、ノード1,2,3の各記憶装置に記憶されたプログラムをノード1,2,3の各プロセッサにより実行することで実現されてもよい。以下の説明において、ノード1,2,3が記憶する各種の情報は、ノード1,2,3が備える各記憶装置に格納される。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、ノード1,2,3を含む。ノード1,2,3はネットワークを介して接続されている。ノード1,2,3は、情報処理装置やストレージ装置でもよい。例えば、ノード1,2,3は、RAM(Random Access Memory)やHDD(Hard Disk Drive)などの記憶装置とCPU(Central Processing Unit)やASIC(Application Specific Integrated Circuit)などのプロセッサとを備えたコンピュータでもよい。以下に示す処理は、ノード1,2,3の各記憶装置に記憶されたプログラムをノード1,2,3の各プロセッサにより実行することで実現されてもよい。以下の説明において、ノード1,2,3が記憶する各種の情報は、ノード1,2,3が備える各記憶装置に格納される。
ノード1,2,3は、複数のデータを分散して保持する。ノード1,2,3は、クライアント装置(図示を省略)から、何れかのデータに対する書き込みや読み出しなどの命令(データに対するアクセス)を受け付ける。ここで、クライアント装置からのアクセスに対して処理されるデータを主データと呼ぶこととする。ノード1,2,3は、何れかの主データに対するアクセスを受け付けると、主データと主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定する。当該情報を管理情報と呼ぶこととする。
ノード1,2,3は、複数の主データのバックアップである複数の副データを分散して保持する。ノード1,2,3は、自ノードが保持する副データに対応する主データと当該主データを保持するノードとの対応関係を示す管理情報を自ノードに格納する。対応関係は、主データに対してノードを直接的に対応付けたものでもよいし、主データに対してノードを間接的に対応付けたものでもよい。主データに対してノードを間接的に対応付ける方法としては、例えば、管理情報では主データと所定のキーとを対応付けておき、当該キーを用いた別の演算(例えば、キーからハッシュ値を求める演算)により担当のノードを決定する方法が考えられる。
例えば、ノード1,2,3は主データX,Y,Zを分散して記憶する。具体的には、主データXはノード1に、主データYはノード2に、主データZはノード3に、それぞれ保持されている。
また、ノード1,2,3は副データX1,Y1,Z1を分散して保持する。副データX1は主データXのバックアップである。副データY1は主データYのバックアップである。副データZ1は主データZのバックアップである。具体的には、副データX1はノード3に、副データY1はノード1に、副データZ1はノード2にそれぞれ保持されている。例えば、ノード1,2,3は相互に通信して、主データX,Y,Zに対する更新内容を副データX1,Y1,Z1にも反映させる。
この場合、ノード1は管理情報K1を記憶する。管理情報K1は、主データYとノード2との対応関係を示す情報である。ノード1は副データY1を保持するからである。ノード2は管理情報K2を記憶する。管理情報K2は、主データZとノード3との対応関係を示す情報である。ノード2は副データZ1を保持するからである。ノード3は管理情報K3を記憶する。管理情報K3は、主データXとノード1との対応関係を示す情報である。ノード3は副データX1を保持するからである。
第1の実施の形態の情報処理システムによれば、複数の主データおよび複数の副データが、複数のノードに分散して配置される。副データを保持するノードに、その副データに対応する主データと当該主データを保持する他のノードとの対応関係を示す管理情報が格納される。
これにより、主データを復元する際のノード間の通信量を軽減できる。ここで、障害などで利用できなくなったノード(障害ノード)が発生した場合に、各ノードは管理情報により障害ノード上の主データを特定できる。例えば、各ノードは、自身が保持する副データが障害ノード上の主データに対応するものであるかを管理情報により確認し、副データを用いて障害ノード以外のノードに当該主データを復元し得る。ところが、この場合、各ノードは自身が保持する全ての副データについて、障害ノード上の主データに対応するものであるかを確認することになる。このため、各ノードにより管理情報を無作為に分担させると、ノード間での問い合わせが多発し、それに伴い通信量が増大するおそれがある。
具体的には、仮に、ノード1が副データY1と管理情報K2とを保持し、ノード2が副データZ1と管理情報K1とを保持する場合を考える。この場合で、障害などによりノード3を利用できなくなったとする。すると、ノード1は、自身が保持する副データY1がノード3上の主データZに対応するものであるかをノード2に問い合わせることになる。また、ノード2は、自身が保持する副データZ1がノード3上の主データZに対応するものであるかをノード1に問い合わせることになる。このように、各ノードによる管理情報の分担状況によってノード間の問い合わせが生じ得る。ノード間の問い合わせに伴う通信量は、問い合わせ対象となるデータ数が多い程増大し、ネットワークの負荷を高める要因になる。
これに対し、第1の実施の形態では、ノード1は副データY1と管理情報K1とを記憶する。ノード2は副データZ1と管理情報K2とを記憶する。ノード3は副データX1と管理情報K3とを記憶する。このため、仮にノード3を利用できなくなったとしても、ノード1は管理情報K1を参照することで、副データY1がノード3上の主データZに対応するものであるかを確認できる。また、ノード2は管理情報K2を参照することで、副データZ1がノード3上の主データZに対応するものであるかを確認できる。すなわち、ノード1,2は、各自が保持する副データがノード3上の主データZに対応するものであるかを、他のノードに問い合わせなくてもよい。よって、主データを復元する際のノード間の通信量を軽減できる。
なお、この場合、ノード2がノード3上の主データZに対応する副データZ1を保持しているので、ノード2がノード1,2の何れか(ノード3の代わりに主データZに対する処理を担当するノード)に、主データZを復元することになる。
また、主データ(例えば、主データZ)と当該主データに対応する副データ(例えば、副データZ1)とが同一ノード(例えば、ノード3)に配置されると、当該ノードを利用できなくなったときに当該主データの復元が難しくなる可能性もある。そこで、1つの主データに対して少なくとも2つのノードに、当該主データに対する副データを配置することも考えられる。例えば、主データZをノード3で保持している場合、副データZ1をノード2,3の両方で保持し、管理情報K2をノード2,3の両方に格納する。そうすれば、仮にノード3が利用できなくなったとしても、ノード2により主データZを復元できる。これにより、情報処理システムの障害に対する信頼性を向上することができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、クライアント21およびノード100,200,300を含む。ノード100,200,300およびクライアント21は、ネットワーク10に接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、クライアント21およびノード100,200,300を含む。ノード100,200,300およびクライアント21は、ネットワーク10に接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。
クライアント21は、ユーザが操作する端末装置としてのコンピュータである。クライアント21は、データの読み出し(リード)やデータの書き込み(ライト)を行うとき、ノード100,200,300の何れかにアクセスする。アクセス先のノードとしては、データの内容にかかわらず任意のノードを選択してよい。すなわち、この情報処理システムはボトルネックとなり得る集中管理ノードをもたず、全てのノードはクライアント21からのアクセスを受け付けることができる。また、クライアント21は、所望のデータが何れのノードに記憶されているか知らなくてよい。
ノード100,200,300は、データを不揮発性の記憶装置に格納して管理するサーバコンピュータである。ノード100,200,300が記憶するデータには、マスタデータが含まれる。マスタデータとは、主にクライアント21からの読み出しや書き込みなどの命令(アクセス)に応じて処理されるデータである。ノード100,200,300のマスタデータに対する処理をマスタ処理ということができる。マスタデータは第1の実施の形態の主データの一例である。
ここで、ノード100,200,300は、マスタデータA,B,C,Dを記憶する。ノード100,200,300は、マスタデータA,B,C,Dをセグメントと呼ばれる単位で管理する。セグメントとは、各ノードで利用可能な記憶領域の単位である。ノード100,200,300は、あるマスタデータに対してクライアント21からアクセスを受け付けたとき、セグメント単位で(各ノードが備える)キャッシュ(例えば、RAMの所定の記憶領域)への先読みを行う。例えば、連続してアクセスされる可能性の高いマスタデータ同士を同一のセグメントに配置することで、クライアント21からの以後のアクセスに対してキャッシュヒット率を向上し得る。
具体的には、ノード100はセグメントSG0を有する。セグメントSG0にはマスタデータA,Bが配置されている。ノード200はセグメントSG1を有する。セグメントSG1にはマスタデータCが配置されている。ノード300はセグメントSG2を有する。セグメントSG2にはマスタデータDが配置されている。連続してアクセスされる可能性の高いマスタデータの組が見出されていないときは、セグメントSG1,SG2のように単一のマスタデータが配置されることもある。
また、後述するように、ノード100,200,300はマスタデータのバックアップであるバックアップデータを記憶する。バックアップデータにはマスタ処理に応じた更新内容が反映される。バックアップデータをマスタデータと同期させる処理をバックアップ処理ということができる。バックアップデータは第1の実施の形態の副データの一例である。
すなわち、第2の実施の形態の情報処理システムでは、耐障害性を高めるためデータが冗長化され、同じデータが複数のノードに重複して記憶される。同じデータを記憶する複数のノードのうち、1つのノードがそのデータについてのクライアント21からのアクセスを処理し、他のノードはそのデータを専らバックアップコピーとして管理する。あるデータにとって、マスタ処理を担当するノードをマスタノード、バックアップ処理を担当するノードをバックアップノードと呼ぶことがある。各ノードではマスタ処理とバックアップ処理を混在させることがあり、その際、各ノードは何れかのデータにとってのマスタノードである(マスタ処理を担当する)と共に、何れかのデータにとってのバックアップノードになる(バックアップ処理を担当する)。後述するように、1つのノードが1つのデータに対して、バックアップノードおよびマスタノードの両方の役割を担うこともある。
なお、バックアップデータは、クライアント21が読み出し命令を発行したときの読み出し対象としては使用されない。ただし、クライアント21が書き込み命令を発行してマスタデータ(バックアップデータに対応するオリジナルのデータ)が更新された場合には、データの一貫性を維持するために、マスタデータに対応するバックアップデータは更新され得る。
各ノードには、セグメントのID(セグメントID)のハッシュ値に基づいて、マスタ処理を担当すべきマスタデータが割り当てられる。クライアント21からアクセスを受け付けたノードは、クライアント21から指定されたマスタデータのデータ名から、そのマスタデータが属するセグメントのセグメントIDを取得する。そして、当該ノードは、セグメントIDのハッシュ値を算出し、そのデータ名が示すマスタデータのマスタ処理を担当するマスタノードを判定する。判定されたマスタノードが他のノードであるときは、アクセスが当該他のノードに転送される。
図3は、マスタデータの配置例を示す図である。マスタデータをノード100,200,300に配置するにあたって、図3に示すように、セグメントIDのハッシュ値の値域を円状に繋げたハッシュ空間を定義する。例えば、ハッシュ値がLビットで表されるとき、2L−1(ハッシュ値の最大)の次のハッシュ値が0に戻るような循環するハッシュ空間が定義される。
ハッシュ空間上には、各ノードに対応する点(ハッシュ値)を設定する。ノードに対応するハッシュ値は、例えば、そのノードのIP(Internet Protocol)アドレスなどのアドレスのハッシュ値とする。図3の例では、ノード100,200,300に対応するハッシュ値v0,v1,v2(v0<v1<v2)が、それぞれハッシュ空間上に設定される。そして、隣接する2つのノードのハッシュ値によって挟まれる区間毎に、セグメントIDのハッシュ値が割り当てられる。例えば、各ノードは、ハッシュ空間上で1つ後ろのノードとの間の区間に属するセグメントに含まれるマスタデータのマスタ処理を担当する。
一例として、hv()をハッシュ関数とし、v2とv0の間に“0”があるとする。この場合、区間v0≦hv(key)<v1に属するセグメントSG0に含まれるマスタデータA,Bのマスタ処理はノード100が担当する(ただし、keyにはセグメントIDが代入される。図3において以下同様)。区間v1≦hv(key)<v2に属するセグメントSG1に含まれるマスタデータCのマスタ処理はノード200が担当する。区間v2≦hv(key)≦2L−1または0≦hv(key)<h0に属するセグメントSG2に含まれるマスタデータDのマスタ処理はノード300が担当する。
なお、各ノードがバックアップ処理を担当すべきバックアップデータの割り当て方法は、マスタデータの割り当て方法とは異なる(後述する)。
図4は、ノードのハードウェア例を示す図である。ノード100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットがノード100のバスに接続されている。
図4は、ノードのハードウェア例を示す図である。ノード100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットがノード100のバスに接続されている。
プロセッサ101は、ノード100の情報処理を制御する。プロセッサ101は、CPUやDSP(Digital Signal Processor)でもよいし、ASICやFPGA(Field Programmable Gate Array)などの特定用途の電子回路でもよい。また、「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)であってもよい。
RAM102は、ノード100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、ノード100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。ノード100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、ネットワーク10を介して他のコンピュータと通信を行えるインタフェースである。通信部104は、有線インタフェースでもよいし、無線インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、ノード100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、ノード100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、ノード100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
ただし、ノード100はディスクドライブ107や機器接続部108を備えなくてもよく、ノード100に対するユーザ操作がクライアント21などの他の装置から行える場合には画像信号処理部105や入力信号処理部106を備えなくてもよい。また、ディスプレイ11や入力デバイス12は、ノード100の筐体と一体に形成されていてもよいし、ワイヤレスで接続されていてもよい。クライアント21やノード200,300もノード100と同様のユニットを用いて実現できる。
図5は、ノードの機能例を示す図である。ノード100は、マスタ記憶部110、バックアップ記憶部120、マスタ処理部130およびバックアップ処理部140を有する。
マスタ記憶部110は、HDD103に確保される不揮発性の記憶領域である。マスタ記憶部110は、マスタデータを記憶する記憶領域とマスタデータのノード配置(何れのノードに配置されるか)を管理するための情報を記憶する記憶領域とを含む。前者の記憶領域は、セグメント単位に分割されている。当該記憶領域は、前述のように、マスタ記憶部110はセグメントSG0を含む。
マスタ記憶部110は、HDD103に確保される不揮発性の記憶領域である。マスタ記憶部110は、マスタデータを記憶する記憶領域とマスタデータのノード配置(何れのノードに配置されるか)を管理するための情報を記憶する記憶領域とを含む。前者の記憶領域は、セグメント単位に分割されている。当該記憶領域は、前述のように、マスタ記憶部110はセグメントSG0を含む。
また、マスタデータのノード配置を管理するための情報は、セグメント管理テーブルおよびセグメント担当テーブルを含む。セグメント管理テーブルは、マスタデータが何れのセグメントに属しているかを示す情報である。セグメント担当テーブルは、セグメントIDと担当ノードとの対応関係を示す情報である。セグメント管理テーブルおよびセグメント担当テーブルの両方を用いると、マスタデータとそのマスタ処理を担当するマスタノードを特定できる。よって、セグメント管理テーブルおよびセグメント担当テーブルは、第1の実施の形態の管理情報の一例であるということができる。
バックアップ記憶部120は、HDD103に確保される不揮発性の記憶領域である。バックアップ記憶部120は、バックアップデータを記憶する記憶領域とバックアップデータのノード配置を管理するための情報を記憶する記憶領域とを含む。バックアップデータのノード配置は、バックアップデータのデータ名(キー)のハッシュ値に応じて定まる。これは、マスタデータのノード配置が、マスタデータが属するセグメントのセグメントIDのハッシュ値に応じて定まる点と異なる。すなわち、マスタデータのノード配置と、バックアップデータのノード配置とは、それぞれ別個の方法によって決定される。よって、マスタ記憶部110に記憶されたマスタデータに対応するバックアップデータが、バックアップ記憶部120に格納されることもある。
マスタ処理部130は、クライアント21からのアクセスとしてのデータ操作命令を、クライアント21または他のノードからネットワーク10を介して受信する。データ操作命令の種類には、データ名を指定した読み出し命令(リード命令)や、データ名と値を指定した書き込み命令(ライト命令)が含まれる。マスタ処理部130は、マスタ記憶部110に記憶されたセグメント管理テーブルを参照して、データ操作命令で指定されたデータ名に対応するセグメントIDを取得する。マスタ処理部130は、そのセグメントIDからハッシュ値を算出し、マスタ記憶部110に記憶されたセグメント担当テーブルを参照して、そのデータ操作命令を実行すべきマスタノードを検索する。検索されたマスタノードが他のノードである場合、マスタ処理部130は、データ操作命令を検索されたマスタノードに転送する。
検索されたマスタノードがノード100である場合、マスタ処理部130は、データ操作命令を実行し、実行結果を示す応答メッセージをクライアント21に送信する。すなわち、データ操作命令が読み出し命令である場合、マスタ処理部130は、指定されたデータ名が示すマスタデータをマスタ記憶部110から読み出し、読み出したマスタデータをクライアント21に送信する。データ操作命令が書き込み命令である場合、マスタ処理部130は、指定されたデータが属するマスタ記憶部110のセグメントを選択し(または新たなセグメントを割り当て)、選択したセグメントにデータ名と対応付けて当該データを書き込む。
マスタ処理部130は、複数のマスタデータに対するクライアント21からのアクセスパターンに応じて、セグメントに対するマスタデータの配置を変更することもある(この場合、セグメント管理テーブルを更新する)。例えば、連続してアクセスされる頻度の高い所定数(第2の実施の形態では2個を想定する)のマスタデータを同一セグメントに配置する。マスタ処理部130は、セグメント単位にキャッシュ(図示を省略)への先読みを行うことで、クライアント21からのアクセスに対するキャッシュヒット率を向上し得る。ここで、キャッシュは、マスタ記憶部110に対して設けられたRAM上の記憶領域である。キャッシュを利用することでマスタデータへのアクセスの高速化を図れる。
バックアップ処理部140は、バックアップ記憶部120に記憶されたバックアップデータに、マスタデータの更新内容を反映する。例えば、マスタ記憶部110に記憶されたマスタデータに対応するバックアップデータがバックアップ記憶部120に記憶されている場合を考える。この場合、バックアップ処理部140は、マスタ処理部130によるマスタデータの更新内容をマスタ処理部130から取得する。バックアップ処理部140は、そのマスタデータに対応するバックアップデータをバックアップ記憶部120から検索し、検索したバックアップデータに取得した更新内容を反映させる。
また、例えば、他のノードに記憶されたマスタデータに対応するバックアップデータがバックアップ記憶部120に記憶されている場合を考える。この場合、バックアップ処理部140は、他のノードによる当該マスタデータの更新内容を当該他のノードから取得する。バックアップ処理部140は、そのマスタデータに対応するバックアップデータをバックアップ記憶部120から検索し、取得した更新内容を反映させる。
バックアップ処理部140は、マスタ記憶部110にマスタデータが新たに書き込まれた場合、そのマスタデータを複製してバックアップデータを生成する。更に、バックアップデータのデータ名からハッシュ値を算出し、バックアップ記憶部120に記憶されたバックアップ担当テーブルを参照して、そのバックアップデータを管理すべきバックアップノードを検索する。
検索されたバックアップノードが他のノードである場合、バックアップ処理部140は、当該バックアップデータをバックアップノードに転送する。検索されたバックアップノードがノード100である場合、バックアップ処理部140は、データ名と対応付けて、そのバックアップデータをバックアップ記憶部120に書き込む。後述するように1つのマスタデータに対して、2以上のバックアップノードが割り当てられる。あるデータのバックアップノードの1つは、そのデータのマスタノードと同一でもよい。例えば、あるデータにとってのマスタノードがノード100である場合に、そのデータにとってのバックアップノードの1つがノード100であることもある。その場合、ノード100は当該データに対して、マスタデータとバックアップデータとの両方を保持することになる。
バックアップ処理部140は、ノード200,300と通信して、何れかのノードにおける障害の有無を監視する。具体的には、バックアップ処理部140は、所定の死活監視用のパケット(例えば、ping)をノード200,300に送信して、その応答状況からノード200,300が通信可能であるか否かを検出し得る。例えば、宛先のノードから応答パケットを取得できれば、そのノードは通信可能であり正常であると判断できる。宛先のノードから応答パケットを得られなければ、そのノードは通信不能であり障害により利用不可であると判断できる。
バックアップ処理部140は、障害の発生したノード(障害ノード)がある場合に、マスタデータの復元処理を実行する。具体的には、バックアップ処理部140は、そのマスタデータに対応するバックアップデータがバックアップ記憶部120に格納されていれば、そのマスタデータを正常なノード上に復元する。復元先のノードは、障害ノードの代わりに、そのマスタデータを担当することになったノードである。このとき、バックアップ処理部140は、他のノードと通信して、情報処理システム内に、そのマスタデータに対するバックアップデータが少なくとも2つのノード上に配置されるように制御する。
ここで、バックアップデータを何個のノード上に配置するかは、ユーザが確保したいデータの複製数に依る。ここで、第2の実施の形態では、マスタデータに対するバックアップデータが、そのマスタデータと同一のノードに配置される可能性もある。このため、ユーザが確保したいデータの複製数に1を加算した個数のノード上に、バックアップデータを配置する。例えば、ユーザは、情報処理システムの運用開始時に、クライアント21や入力デバイス12を操作して、確保したいデータの複製数をノード100に入力できる。バックアップ処理部140は、受け付けた複製数に1を加算した個数のノード上に、バックアップデータを配置すると決定する。例えば、複製数として1を指定されたなら、2個のノード上にバックアップデータを配置すると決定することになる。バックアップ処理部140は、ノード200,300にも当該決定内容を通知する。
なお、マスタ処理部130およびバックアップ処理部140は、CPU101に実行させるプログラムのモジュールとして実現することができる。ただし、これらのモジュールの機能の一部または全部を、特定用途の集積回路を用いて実現してもよい。
また、ノード200,300もノード100と同様のモジュールを有する。ノード200は、マスタ記憶部210、バックアップ記憶部220、マスタ処理部230およびバックアップ処理部240を有する。ノード300は、マスタ記憶部310、バックアップ記憶部320、マスタ処理部330およびバックアップ処理部340を有する。各モジュールは、ノード100の同名のモジュールと同様の機能であるため、説明を省略する。
図6は、セグメント管理テーブルの例を示す図である。図6(A)はセグメント管理テーブル111を例示している。セグメント管理テーブル111はマスタ記憶部110に格納される。図6(B)はセグメント管理テーブル211を例示している。セグメント管理テーブル211はマスタ記憶部210に格納される。図6(C)はセグメント管理テーブル311を例示している。セグメント管理テーブル311はマスタ記憶部310に格納される。セグメント管理テーブル111,211,311はデータ名およびセグメントIDの項目を含む。
データ名の項目には、マスタデータのデータ名が登録される。セグメントIDの項目にはセグメントIDが登録される。例えば、セグメント管理テーブル111には、データ名が“A”、セグメントIDが“SG0”という情報が登録される。これは、マスタデータAがセグメントSG0に属していることを示す。
このように、ノード100,200,300は、マスタデータとセグメントとの対応関係の一部を記憶していればよい。自ノードが保持するセグメント管理テーブルにエントリされていないマスタデータに対するアクセスを受け付けたときは、他のノードに問い合わせればよい。例えば、ノード100がマスタデータBに対するアクセスを受け付けたとしても、セグメント管理テーブル111にはマスタデータBのエントリがない。このため、ノード100は、マスタデータBに対応するセグメントをノード200やノード300に問い合わせることで、そのセグメントを把握できる。
図7は、セグメント担当テーブルの例を示す図である。セグメント担当テーブル112は、マスタ記憶部110に格納される。セグメント担当テーブル112は、セグメントIDのハッシュ値の値域およびノードIDの項目を含む。
セグメントIDのハッシュ値の値域の項目には、ハッシュ関数hvを用いたときのセグメントIDのハッシュ値の値域が登録される。ノードIDの項目には、ノードIDが登録される。
例えば、セグメント担当テーブル112には、セグメントIDのハッシュ値の値域が“v0≦hv(key)<v1”、ノードIDが“#0”という情報が登録される。ここで、“key”にはセグメントIDが代入される。これは、図3で説明したように、区間v0≦hv(key)<v1に属するセグメントに含まれるマスタデータのマスタ処理はノード100が担当することを示す。
セグメント担当テーブル112に登録された他のハッシュ値の値域とノードIDとの対応も、図3で説明した他のハッシュ値の値域とノードIDとの対応と同様である。また、セグメント担当テーブル112と同様の情報は、マスタ記憶部210,310にも格納される。
図8は、バックアップ担当テーブルの例を示す図である。バックアップ担当テーブル121は、バックアップ記憶部120に格納される。バックアップ担当テーブル121は、データ名のハッシュ値の値域およびノードIDの項目を含む。
データ名のハッシュ値の値域の項目には、ハッシュ関数hを用いたときのバックアップデータのデータ名のハッシュ値の値域が登録される。ここで、バックアップデータのデータ名は、マスタデータのデータ名と同一でもよいし、マスタデータのデータ名を所定の規則に従って変更したものでもよい(例えば、所定の文字列を付加するなど)。ノードIDの項目には、ノードIDが登録される。
ここで、バックアップノードは、マスタノードの決定方法には依存しない方法で決定される。バックアップノードをノード100,200,300に配置するにあたって、図3で例示したハッシュ空間とは別個のハッシュ空間を定義する。バックアップノードの決定に用いるハッシュ空間は、バックアップデータのデータ名のハッシュ値の値域を円状に繋げたものである。例えば、ハッシュ値がMビットで表されるとき、2M−1(ハッシュ値の最大)の次のハッシュ値が0に戻るような循環するハッシュ空間が定義される。
このハッシュ空間上では、ノード100,200,300に対応するハッシュ値をハッシュ値h0,h1,h2(h0<h1<h2)とし、h2とh0の間に“0”があるとする。ノードに対応するハッシュ値は、マスタデータの場合と同様に、例えば、そのノードのIPアドレスなどのアドレスのハッシュ値とする。バックアップ担当テーブル121では、バックアップデータを2つのノードに配置する場合を例示する。
例えば、バックアップ担当テーブル121には、データ名のハッシュ値の値域が“h0≦h(key)<h2”、ノードIDが“#0”という情報が登録される。ハッシュ関数h(key)の“key”にはバックアップデータのデータ名が代入される。これは、区間h0≦h(key)<h2に属するバックアップデータのバックアップ処理はノード100が担当することを示す。
また、バックアップ担当テーブル121には、データ名のハッシュ値の値域が“h1≦h(key)≦2M−1,0≦h(key)<h0”、ノードIDが“#1”という情報が登録される。これは、区間h1≦h(key)≦2M−1,0≦h(key)<h0に属するバックアップデータのバックアップ処理はノード200が担当することを示す。
また、バックアップ担当テーブル121には、データ名のハッシュ値の値域が“h2≦h(key)≦2M−1,0≦h(key)<h1”、ノードIDが“#2”という情報が登録される。これは、区間h2≦h(key)≦2M−1,0≦h(key)<h1に属するバックアップデータのバックアップ処理はノード300が担当することを示す。
このように、バックアップデータを2つのノードに配置する場合、各ノードは、ハッシュ空間上で2つ後ろのノードとの間の区間に属するバックアップデータのバックアップ処理を担当する。なお、バックアップ担当テーブル121と同様の情報は、バックアップ記憶部220,320にも格納される。
図9は、バックアップデータの配置例を示す図である。図9では、バックアップ担当テーブル121で示されるバックアップノードの割り当て方法を図示している。区間h0≦h(key)<h2に属するバックアップデータC,D,Aのバックアップ処理はノード100が担当する(ただし、“key”にはバックアップデータのデータ名が代入される。図9において以下同様)。区間h1≦h(key)≦2M−1,0≦h(key)<h0に属するバックアップデータD,A,Bのバックアップ処理はノード200が担当する。区間h2≦h(key)≦2M−1,0≦h(key)<h1に属するバックアップデータB,Cのバックアップ処理はノード300が担当する。
なお、ハッシュ関数hvとハッシュ関数hとを同一の関数としてもよい。その場合、h0=v0、h1=v1、h2=v2である。
図10は、バックアップデータの配置例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。以下では、主にノード100に着目して、その手順を例示するが、ノード200,300も同様の手順を実行可能である。以下のステップS11の直前では、ノード100,200,300上には各マスタデータは配置されているが、バックアップデータは配置されていないものとする。
図10は、バックアップデータの配置例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。以下では、主にノード100に着目して、その手順を例示するが、ノード200,300も同様の手順を実行可能である。以下のステップS11の直前では、ノード100,200,300上には各マスタデータは配置されているが、バックアップデータは配置されていないものとする。
(S11)バックアップ処理部140は、データの複製数N(Nは1以上の整数)の指定をクライアント21から受け付ける。複製数Nは、許容される(情報処理システムの運用を継続すべき)ノードの同時故障数の上限を表しているということができる。例えば、N=1であれば、1つのノードの故障に対して、マスタデータが失われないよう耐障害性を確保することを意味する。例えば、ユーザは、クライアント21(または、入力デバイス12)を操作して、複製数Nをノード100に入力することができる。
(S12)バックアップ処理部140は、指定された複製数Nに対してN+1をバックアップノードの数と決定する。バックアップ処理部140は、決定したバックアップノードの数をノード200,300に通知する。ここでは、N=1が指定された場合を想定する。この場合、1つのマスタデータに対するバックアップノードの数は2であり、各バックアップデータの担当ノードは、バックアップ担当テーブル121によって定められる。
(S13)バックアップ処理部140は、マスタ記憶部110に記憶されたマスタデータのデータ名からバックアップデータ(ただし、この段階では未作成)のデータ名を決定する。前述のように、バックアップデータのデータ名は、マスタデータのデータ名と同一でもよいし、所定の規則により変更したものでもよい。バックアップ処理部140は、当該バックアップデータのデータ名をハッシュ関数h()に入力してハッシュ値を算出し、バックアップ担当テーブル121を参照して、当該マスタデータに対応する2つのバックアップノードを特定する。前述の例でいえば、マスタデータAに対応する2つのバックアップノードは、ノード100,200である。なお、バックアップ処理部140は、マスタ記憶部110に記憶されたマスタデータ毎に、ステップS13の処理を実行する。
(S14)バックアップ処理部140は、マスタ記憶部110に記憶された1つのマスタデータに対して2つのバックアップデータを、ステップS13で特定した2つのバックアップノードに配置する。前述の例でいえば、マスタデータAに対して、ノード100,200の2つのノードにマスタデータAのバックアップデータを配置する。その結果、バックアップ記憶部120,220に、マスタデータAのバックアップデータが格納される。マスタデータBも同様に処理される。バックアップ処理部140は、他のノードから自ノード(ノード100)が担当するバックアップデータを受信することもある。その場合、バックアップ処理部140は、受信したバックアップデータをバックアップ記憶部120に格納する。
(S15)バックアップ処理部140は、自ノードに配置されたバックアップデータに対応するマスタデータとセグメントIDとの対応関係をセグメント管理テーブル111に登録する。
このようにして、ノード100,200,300はバックアップデータの配置を行う。なお、ステップS12において、バックアップ処理部140,240,340は、バックアップノードの数に応じて、バックアップ担当テーブルを変更する。例えば、バックアップデータを3つのノードに配置するなら(N=2の場合)、各ノードは、ハッシュ空間上で3つ後ろのノードとの間の区間に属するバックアップデータのバックアップ処理を担当するようバックアップ担当テーブルを作成することになる。ノードを4つ以上設け、バックアップデータを4つ以上のノードに配置する場合(N≧3の場合)も同様である。
ユーザにより指定された複製数よりも多い数のバックアップノードを設ける理由は、次の通りである。すなわち、マスタノードとバックアップノードとの決定を互いに独立した方法で行うため、マスタデータと、そのマスタデータに対応するバックアップデータとが同一のノードに配置される可能性があるからである。ユーザによって指定された複製数分のノードで同時に障害が起こっても運用を継続できるように、バックアップデータを指定された複製数Nよりも多くのノードに配置することで、ユーザの所望する耐障害性を確保できる。
また、複製数N“+1”とするのは、最低限のバックアップデータ数でユーザの所望する耐障害性を確保するためである。これにより、“+2”以上とする場合よりも、各ノードでバックアップデータを保持するための記憶領域を節約しながら、ユーザの所望する耐障害性を確保できる。ただし、バックアップノードの数を複製数N+2以上とすることを妨げるものではない。
図11は、マスタデータの配置変更例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。以下では、主にノード100に着目して、その手順を例示するが、ノード200,300も同様の手順を実行可能である。
(S21)マスタ処理部130は、各ノード上の各マスタデータについてのアクセスパターン(各マスタデータに対するアクセス履歴)を他のノードと共有する。マスタ処理部130は、アクセスパターンから、連続してアクセスされる頻度の高かったマスタデータ同士を同じセグメント上に配置する。例えば、ノード100上のセグメントSG0に対して、別のセグメントに属していたマスタデータを新たに配置することもある。その場合、マスタ処理部130は、対象のマスタデータを他のノードから受信し、マスタ記憶部110上のセグメントSG0に格納する。また、セグメントSG0に属していたマスタデータを別のセグメントに配置することもある。その場合、マスタ処理部130は、対象のマスタデータを当該他のノードに送信する。
(S22)マスタ処理部130は、ステップS21における変更内容に従って、セグメント管理テーブル111を更新する。セグメントSG0に属するマスタデータの配置替えがなかったとしても、バックアップ記憶部120に記憶されたバックアップデータに対応するマスタデータが配置替えされていれば、セグメント管理テーブル111の更新は行われることになる。また、バックアップ処理部140は、マスタ処理部130によるマスタデータの配置替えが行われても、バックアップデータの配置替えを行わない。すなわち、平常時において、各ノード上のバックアップデータの配置は維持される。
なお、マスタ処理部130は、任意のタイミングで、ステップS21を開始することができる。例えば、各マスタデータに対するアクセスパターンを所定期間取得した後のタイミングが考えられる。
図12は、障害時の処理例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。以下では、主にノード100に着目して、その手順を例示するが、ノード200,300も同様の手順を実行可能である。また、一例としてノード300で障害が発生する場合を想定するが、他のノードで障害が発生する場合も同様の手順となる。
(S31)バックアップ処理部140は、ノード300が障害により利用不可となったことを検出する。例えば、バックアップ処理部140は、ノード200,300との間で死活監視用のパケットを送受信することで、ノード200,300における障害の有無を検出できる。
(S32)バックアップ処理部140は、セグメント担当テーブル112に基づいて、ノード300が担当していたセグメントを特定する。具体的には、バックアップ処理部140は、ノード100,200,300上の全てのセグメントIDについて関数hv()によるハッシュ値を算出し、セグメント担当テーブル112からノード300が担当していたセグメントSG2を特定する。なお、ノード100,200,300上の全てのセグメントIDは、各ノードに予め格納される。
(S33)バックアップ処理部140は、ステップS32で特定したセグメントSG2の担当ノード(セグメントSG2に属するマスタデータのマスタノードに相当)を決定する。具体的には、図3のハッシュ空間において、障害のあったノードの担当区間を、そのノードよりも1つ前の区間のノードに担当させる(セグメント担当テーブル112のハッシュ値の値域を変更する)。ノード300の障害に対して、ノード300が担当していたセグメントSG2は、ノード200の担当になる。すなわち、セグメントSG2に属するマスタデータのマスタ処理はノード200の担当になる。
(S34)バックアップ処理部140は、セグメント管理テーブル111を参照して、バックアップ記憶部120に記憶されたバックアップデータのうち、ステップS32で特定したセグメントSG2に属するマスタデータに対応するものを検索する。
(S35)バックアップ処理部140は、ステップS34の検索の結果、何れかのバックアップデータを検索できたか否かを判定する。検索できた場合、処理をステップS36に進める。検索できなかった場合、処理をステップS37に進める。
(S36)バックアップ処理部140は、検索されたバックアップデータを複製して、ステップS33で決定されたノード200上のセグメントSG2に配置する。その結果、ノード200上のセグメントSG2にマスタデータが復元される。
(S37)バックアップ処理部140は、他のノードと連携してバックアップデータの配置変更を行う。具体的には、情報処理システムとして1つのマスタデータに対するバックアップノードの数が2以上(本例では複製数N+1=1+1=2なので2)となるように、バックアップデータの配置を変更する。
なお、ステップS34,S35では、同一のバックアップデータが複数のノードで検索されることもある。例えば、ノード300で障害があったとき、ノード300上のセグメントSG2に属する1つのマスタデータに対応するバックアップデータがノード100,200の両方に格納されていれば、ノード100,200の両方で当該バックアップデータが検索される。その場合、ノード100,200の両方がノード200上のセグメントSG2に対してマスタデータの復元を重複して行うことになる(上書きすればよい)。
ただし、何れか一方のノードが当該マスタデータの復元を行ってもよい。重複して復元を行うのは冗長だからである。この場合、新たな担当がノード200であれば、ノード200にマスタデータの復元を行わせることが考えられる。ノード100に当該マスタデータの復元を行わせる場合よりも、ノード100,200間の通信を抑えられるからである。また、ノードIDが小さい(または大きい)方のノードにマスタデータの復元を行わせることも考えられる。
図13は、バックアップデータの配置変更例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。図13に示す処理はステップS37の処理に対応する。以下では、主にノード100に着目して、その手順を例示するが、ノード200,300も同様の手順を実行可能である。また、図12に続きノード300で障害が発生した場合を想定するが、他のノードで障害が発生する場合も同様の手順となる。
(S41)バックアップ処理部140は、バックアップ担当テーブル121に基づいて、障害のあったノード300が担当していたバックアップデータを特定する。具体的には、バックアップ処理部140は、ノード100,200,300上の全てのバックアップデータのデータ名について関数h()によるハッシュ値を算出し、バックアップ担当テーブル121からノード300が担当していたバックアップデータを特定する。なお、ノード100,200,300上の全てのバックアップデータのデータ名は、各ノードに予め格納される。あるいは、バックアップ処理部140は、ノード200と通信して、ノード100,200上で2つ存在していないバックアップデータを、ノード300が担当していたバックアップデータと特定してもよい。
(S42)バックアップ処理部140は、ステップS41で特定したバックアップデータのバックアップ処理を担当するノードを決定する。具体的には、バックアップ処理部140は、1つのマスタデータに対するバックアップデータがノード100,200の両方(2つ)に配置されるように、バックアップ担当テーブル121を更新する。1つのマスタデータに対するバックアップノード数2を確保するためである。図9の例でいえば、バックアップ処理部140は、ノード300の担当区間の前半部をノード100の担当区間に結合し、ノード300の担当区間の後半部をノード200の担当区間に結合する。その結果、1つのマスタデータに対するバックアップノード数2が確保される。
(S43)バックアップ処理部140は、更新後のバックアップ担当テーブル121を参照して、ステップS41で特定したバックアップデータのうち、自ノード(ノード100)が新たに担当することになったバックアップデータがあるか否かを判定する。ある場合、処理をステップS44に進める。ない場合、処理を終了する。
(S44)バックアップ処理部140は、自ノードが新たに担当することになったバックアップデータを取得する。例えば、バックアップ処理部140は、当該バックアップデータを他のノードから取得することができる。あるいは、当該バックアップデータに対応するマスタデータがマスタ記憶部110に記憶されている場合は、そのマスタデータを複製することで当該バックアップデータを取得することもできる。バックアップ処理部140は、取得したバックアップデータをバックアップ記憶部120に格納する。
(S45)バックアップ処理部140は、セグメント管理テーブル111を更新する。具体的には、他のノードから取得したバックアップデータに対応するマスタデータについて、当該マスタデータとセグメントとの対応関係をセグメント管理テーブル111に登録する。なお、バックアップ処理部140は、当該マスタデータとセグメントとの対応関係を自ノードで確認できなければ、他のノードに問い合わせることで確認できる。
このようにして、各ノードは何れかのノードに障害があった場合に、バックアップデータの配置を変更する。このとき、複製数N+1(第2の実施の形態ではN+1=2)を維持する(1つのマスタデータに対してバックアップノードを2つ設ける)。また、各ノードは、バックアップデータの配置変更に伴い、自ノードで保持するバックアップデータに対応するマスタデータとセグメントとの対応関係をセグメント管理テーブル111に登録する。
図14は、障害時のマスタデータの配置例を示す図である。図14では、ノード300に障害が発生した場合を想定している。図12のステップS33で説明したように、ノード300で障害が発生すると、(セグメントに対する)ハッシュ空間上のノード300の担当区間をノード200の担当区間に結合する。その結果、ノード200の担当区間は、v1≦hv(key)≦2L−1,0≦hv(key)<v0となる。図14の例では、ノード200はマスタデータC,Dのマスタノードとなる。担当区間の変更は各ノードが保持するセグメント担当テーブルに反映される。なお、図14の例では、ノード100の担当区間は変更なしである。
図15は、障害時のバックアップデータの配置例を示す図である。図15では、ノード300に障害が発生した場合を想定している。図13のステップS42で説明したように、ノード300で障害が発生すると、(バックアップデータに対する)ハッシュ空間上のノード300の担当区間の前半部をノード100の担当区間に結合する。その結果、ノード100の担当区間は、h0≦h(key)≦2M−1,0≦h(key)<h0となる。また、ノード300の担当区間の後半部をノード200の担当区間に結合する。その結果、ノード200の担当区間は、h1≦h(key)≦2M−1,0≦h(key)<h1となる。これは、変更後のノード100の担当区間と同一の区間である。担当区間の変更は各ノードが保持するバックアップ担当テーブルに反映される。
次に、ノード100,200,300に関する一連の処理を例示して、第2の実施の形態のデータ配置方法の具体例を説明する。マスタデータの各ノードにおける初期配置を、セグメント管理テーブル111,211,311およびセグメント担当テーブル112で示される配置とする。バックアップデータの各ノードにおける初期配置を、バックアップ担当テーブル121で示される配置とする。また、バックアップデータを区別するために、例えばマスタデータAに対するバックアップデータをバックアップデータA1,A2のように数字を付加した符号を用いて表記する。
図16は、マスタデータの配置変更の具体例を示す図である。以下、図16に示す処理をステップ番号に沿って説明する。
(ST101)ノード100のセグメントSG0には、マスタデータA,Bが配置されている。ノード100には、バックアップデータC1,D1,A1が配置されている。ノード200のセグメントSG1には、マスタデータCが配置されている。ノード200には、バックアップデータD2,A2,B1が配置されている。ノード300のセグメントSG2には、マスタデータDが配置されている。ノード300には、バックアップデータB2,C2が配置されている。
(ST101)ノード100のセグメントSG0には、マスタデータA,Bが配置されている。ノード100には、バックアップデータC1,D1,A1が配置されている。ノード200のセグメントSG1には、マスタデータCが配置されている。ノード200には、バックアップデータD2,A2,B1が配置されている。ノード300のセグメントSG2には、マスタデータDが配置されている。ノード300には、バックアップデータB2,C2が配置されている。
(ST102)ノード100,200,300は、マスタデータA,B,C,Dに対するアクセスパターンの変化に伴って、セグメントSG0,SG1,SG2における各マスタデータの配置を変更する。例えば、マスタデータB,Dが連続してアクセスされる可能性が高まったため、マスタデータBはセグメントSG2に移動される。その後、マスタデータC,Dが連続してアクセスされる可能性が高まったため、マスタデータDはセグメントSG1に移動される。各マスタデータの配置が変更されても、各バックアップデータの配置は維持される。
(ST103)ノード100,200,300は、各マスタデータの配置変更に伴って、セグメント管理テーブル111,211,311の設定を変更する。具体的には、ノード100は、セグメント管理テーブル111において、マスタデータDに対するセグメントIDを“SG1”に変更する。ノード200は、セグメント管理テーブル211において、マスタデータBに対するセグメントIDを“SG2”に変更する。ノード200は、セグメント管理テーブル211において、マスタデータDに対するセグメントIDを“SG1”に変更する。ノード300は、セグメント管理テーブル311において、マスタデータBに対するセグメントIDを“SG2”に変更する。
図17は、障害時の処理の具体例を示す図である。以下、図17に示す処理をステップ番号に沿って説明する。なお、図17では、図16で説明したマスタデータの配置変更後の状態を、各マスタデータの初期配置とする。
(ST201)ノード100,200は、ノード300が障害により利用不可となったことを検出する。ノード100,200は、ノード300にはセグメントSG2が存在していたことを検出する。
(ST202)ノード100,200は、ノード300の代わりにノード200がセグメントSG2を担当すると決定する。
(ST203)ノード100は、セグメント管理テーブル111を参照して、バックアップ記憶部120に格納されたバックアップデータC1,D1,A1のうち、セグメントSG2に属するマスタデータに対応するものを検索する。セグメント管理テーブル111には、セグメントSG2に対応するマスタデータのエントリはないので、検索結果なしとなる。ノード200は、セグメント管理テーブル211を参照して、バックアップ記憶部220に格納されたバックアップデータD2,A2,B1のうち、セグメントSG2に属するマスタデータに対応するものを検索する。セグメント管理テーブル211には、セグメントSG2に属するマスタデータBのエントリがあるので、検索結果はバックアップデータB1となる。
(ST203)ノード100は、セグメント管理テーブル111を参照して、バックアップ記憶部120に格納されたバックアップデータC1,D1,A1のうち、セグメントSG2に属するマスタデータに対応するものを検索する。セグメント管理テーブル111には、セグメントSG2に対応するマスタデータのエントリはないので、検索結果なしとなる。ノード200は、セグメント管理テーブル211を参照して、バックアップ記憶部220に格納されたバックアップデータD2,A2,B1のうち、セグメントSG2に属するマスタデータに対応するものを検索する。セグメント管理テーブル211には、セグメントSG2に属するマスタデータBのエントリがあるので、検索結果はバックアップデータB1となる。
図18は、障害時の処理の具体例(続き)を示す図である。以下、図18に示す処理をステップ番号に沿って説明する。
(ST204)ノード200は、バックアップ記憶部220に記憶されたバックアップデータB1を複製して、マスタ記憶部210のセグメントSG2に対応する記憶領域に格納する。
(ST204)ノード200は、バックアップ記憶部220に記憶されたバックアップデータB1を複製して、マスタ記憶部210のセグメントSG2に対応する記憶領域に格納する。
(ST205)ノード100,200は、図15で例示したように、バックアップ担当テーブルの設定を変更する。変更後のバックアップ担当テーブルによれば、ノード100はマスタデータA,B,C,Dに対する全てのバックアップデータを保持することになる。同様に、ノード200はマスタデータA,B,C,Dに対する全てのバックアップデータを保持することになる。
ノード100では、マスタデータBに対するバックアップデータが不足している。よって、ノード100は、ノード200からバックアップデータB3を取得し、バックアップ記憶部120に格納する。ノード200では、マスタデータCに対するバックアップデータが不足している。よって、ノード200は、ノード100からバックアップデータC3を取得し、バックアップ記憶部220に格納する。なお、ノード200上のセグメントSG1には、マスタデータCが格納されている。このため、ノード200は、バックアップデータC3をノード100から取得するのではなく、マスタデータCの複製をバックアップデータC3として取得し、バックアップ記憶部220に格納してもよい。
(ST206)ノード100は、セグメント管理テーブル111にマスタデータBとセグメントSG2との対応関係を示すエントリを追加する。ノード100は新たにバックアップデータB3を保持するからである。なお、ノード100は、マスタデータBに対応するセグメントIDを自ノードで確認できなければ、例えばノード200に問い合わせることで、当該セグメントIDを確認できる。また、ノード200は、セグメント管理テーブル211にマスタデータCとセグメントSG1との対応関係を示すエントリを追加する。ノード200は新たにバックアップデータC3を保持するからである。
次に、第2の実施の形態のデータ配置方法を用いない場合を比較例として説明する。
図19は、マスタデータの配置変更の比較例を示す図である。図19では、ノード100a,200a,300aが例示されている。ノード100a,200a,300aは、例えばコンピュータによって実現される。ノード100a,200a,300aはネットワークで接続されており互いに通信可能である(図示を省略)。ノード100aは、セグメントSG0を有する。ノード200aは、セグメントSG1を有する。ノード300aは、セグメントSG2を有する。
図19は、マスタデータの配置変更の比較例を示す図である。図19では、ノード100a,200a,300aが例示されている。ノード100a,200a,300aは、例えばコンピュータによって実現される。ノード100a,200a,300aはネットワークで接続されており互いに通信可能である(図示を省略)。ノード100aは、セグメントSG0を有する。ノード200aは、セグメントSG1を有する。ノード300aは、セグメントSG2を有する。
図19において各データの初期配置を次の通りとする。セグメントSG0はマスタデータA,Bを含む。セグメントSG1はマスタデータCを含む。セグメントSG2はマスタデータDを含む。
図19(A)は、マスタデータの配置変更に伴って、バックアップデータの配置も変更する例を示している。図19(A)の例では、マスタノードおよびバックアップノードの決定方法として次のような方法を想定している。図3で例示したハッシュ空間において、ノード100のハッシュ値をノード100aのハッシュ値に、ノード200のハッシュ値をノード200aのハッシュ値に、ノード300のハッシュ値をノード300aのハッシュ値に置き換えた場合を考える。すると、図3と同様の考え方により、マスタデータA,B,C,Dを保持するマスタノードが決定される。
更に、各ノードは、当該ハッシュ空間において自ノードの担当区間よりも1つ前のノードの担当区間に属するセグメントに含まれるマスタデータに対し、バックアップノードとして機能する。すなわち、ノード100aは、バックアップデータD1を保持する。ノード200aは、バックアップデータA1,B1を保持する。ノード300aは、バックアップデータC1を保持する。
図19(A)において、マスタデータBをセグメントSG0からセグメントSG1に移動させる場合を考える。図19(A)で想定しているバックアップノードの決定方法によれば、ノード300aが、マスタデータBに対するバックアップノードとして機能することになる。よって、バックアップデータB1は、ノード200aからノード300aへ移動される。
図19(A)の方法を採ると、マスタデータの移動のたびに、バックアップデータの移動も行われることになる。すなわち、各ノードにバックアップデータの移動のための負荷も生じることになる。この負荷は、マスタデータの移動の頻度が多い程増大する。また、各ノードに配置するバックアップデータの複製数が多い程、その複製数分の移動を伴うので、各ノードの負荷も増大する。
これに対し、第2の実施の形態のノード100,200,300は、ノード間でマスタデータが移動されても、バックアップデータの移動を行わない。このため、図19(A)のようにマスタデータの移動のたびにバックアップデータの移動を行う場合に比べて、マスタデータ移動時の各ノードの負荷を軽減できる。
ただし、図19(B)で示すように、マスタデータBをセグメントSG0からセグメントSG1に移動させた際に、バックアップデータB1がノード200a上に配置されていることもある。すると、ノード200aが障害で利用できなくなったときに、マスタデータBの復旧が困難になるおそれがある。
そこで、第2の実施の形態のノード100,200,300では、1つのマスタデータに対して、少なくとも2つのバックアップノードを設ける。これにより、仮に、何れかのマスタデータと当該マスタデータに対応するバックアップデータとが同一ノードに配置され、そのノードで障害が起きても、他のノードに当該マスタデータに対応するバックアップデータが少なくとも1つは保持されることになる。したがって、他のノードに保持されたバックアップデータを用いて、障害ノードが担当していたマスタデータを復元できる。
図20は、障害時の処理の比較例を示す図である。図20では、図19で示したノード100a,200a,300aに加えてノード400aも例示している。ノード100aは、セグメントSG0を有する。ノード200aは、セグメントSG1を有する。ノード300aは、セグメントSG2を有する。ノード400aは、セグメントSG3を有する。図20では各ノードにマスタデータA,B,C,D,Eを配置する。具体的には、セグメントSG0はマスタデータA,Bを含む。セグメントSG1はマスタデータCを含む。セグメントSG2はマスタデータDを含む。セグメントSG3はマスタデータEを含む。
また、図20では、図19(A)で例示した方法を用いて各マスタデータに対するバックアップノードを決定する。具体的には、ノード100aは、バックアップデータE1を保持する。ノード200aは、バックアップデータA1,B1を保持する。ノード300aは、バックアップデータC1を保持する。ノード400aは、バックアップデータD1を保持する。
この場合に、データとセグメントIDとの対応関係の情報(セグメント管理テーブル)を各ノードに分担して保持させることを考える。ところが、各ノードが保持するセグメント管理テーブルの内容を無作為に決定すると、何れかのノードが障害などで利用できなくなり、バックアップノードから障害ノード上のマスタデータを復元しようとする場合にノード間の通信量が増大し得る。
例えば、ノード100aは、セグメント管理テーブル111aを有する。セグメント管理テーブル111aには、マスタデータCとセグメントSG1との対応が登録されている。ノード200aは、セグメント管理テーブル211aを有する。セグメント管理テーブル211aには、マスタデータEとセグメントSG3との対応およびマスタデータDとセグメントSG2との対応が登録されている。
ノード300aは、セグメント管理テーブル311aを有する。セグメント管理テーブル311aには、マスタデータBとセグメントSG0との対応が登録されている。ノード400aは、セグメント管理テーブル411aを有する。セグメント管理テーブル411aには、マスタデータAとセグメントSG0との対応が登録されている。
この状況で、例えば、ノード400aが障害により利用できなくなると、各ノードは、自ノードが保持するバックアップデータがノード400a上のセグメントSG3に属するマスタデータに対応するものであるかを確認することになる。例えば、ノード100aは、バックアップデータE1に対応するマスタデータEが何れのセグメントに属するものかをノード200a,300aに問い合わせる。ノード200aは、バックアップデータA1,B1に対応するマスタデータA,Bが何れのセグメントに属するものかをノード100a,300aに問い合わせる。ノード300aは、バックアップデータC1に対応するマスタデータCが何れのセグメントに属するものかをノード100a,200aに問い合わせる。
この場合、ノード100aは、ノード200aからの応答によりマスタデータEがセグメントSG3に属する旨を確認できる。よって、ノード100aのバックアップデータE1を用いて、セグメントSG3(ノード100a,200a,300aの何れかが新たに担当する)上にマスタデータEを復元することになる。
しかし、この例では、ノード100a,200a,300aの間で多数の問い合わせが行われることになり、マスタデータを復元する際のノード間の通信量が増大する。このように、各ノードによるセグメント管理テーブルの分担状況によってノード間の問い合わせが生じ得る。ノード間の問い合わせに伴う通信量は、問い合わせ対象となるデータ数が多い程増大し、ネットワークの負荷を高める要因になる。
そこで、第2の実施の形態では、あるノードで保持されるバックアップデータに対するマスタデータとセグメントIDとの対応関係を示すセグメント管理テーブルを、そのノードに格納する。したがって、何れかのノードで障害が起きても、各ノードは、各自が保持するセグメント管理テーブルを参照することで、自ノードが保持するバックアップデータが障害ノード上のセグメントに属していたマスタデータに対応するものであるかを確認できる。このため、各ノードは図20の例のように、他のノードへの問い合わせを行わなくてもよい。よって、マスタデータを復元する際のノード間の通信量を軽減できる。
なお、第1,第2の実施の形態の情報処理は、各ノードが備えるプロセッサにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1,2,3 ノード
K1,K2,K3 管理情報
X,Y,Z 主データ
X1,Y1,Z1 副データ
K1,K2,K3 管理情報
X,Y,Z 主データ
X1,Y1,Z1 副データ
Claims (7)
- 複数の主データが分散して配置された複数のノードを含み、何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定するシステムが実行するデータ配置方法であって、
前記複数の主データのバックアップである複数の副データを前記複数のノードに分散して配置し、
副データを保持するノードに、当該副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を格納する、
データ配置方法。 - 1つの主データに対する副データを少なくとも2つのノードに配置する、請求項1記載のデータ配置方法。
- 前記複数のノードに対して許容される同時故障数を取得し、前記同時故障数よりも大きい数を、1つの主データに対し副データを配置するノード数とする、請求項1または2記載のデータ配置方法。
- 前記複数の副データの配置先の決定方法として前記複数の主データの配置先の決定方法に依存しない方法を用い、何れかの主データがノード間で移動されても、前記複数の副データの配置を維持する、請求項1乃至3の何れか1項に記載のデータ配置方法。
- 何れかのノードが利用できなくなると、他のノードにより当該他のノード自身に格納された前記対応関係を示す情報を参照して、当該他のノードに配置された副データが、利用できなくなったノードに配置された主データに対応するものであるか否かを確認し、当該主データに対応する副データを保持する他のノードを用いて、当該主データを何れかのノードに復元する、請求項1乃至4の何れか1項に記載のデータ配置方法。
- 複数の主データが分散して配置された複数のノードを含み、何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定するシステムに用いられるデータ配置プログラムであって、前記複数のノードの1つとして用いられるコンピュータに、
前記複数の主データのバックアップである複数の副データの一部を記憶装置に配置し、
前記記憶装置に保持された副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を前記記憶装置に格納する、
処理を実行させるデータ配置プログラム。 - 複数の主データのうちの何れかの主データに対するアクセスを受け付けると、主データと当該主データを格納したノードとの対応関係を示す情報によりアクセス先のノードを決定する情報処理システムであって、
前記複数の主データおよび前記複数の主データのバックアップである複数の副データを各ノードに分散して配置し、自ノードが保持する副データに対応する主データと当該主データを保持するノードとの対応関係を示す情報を自ノードに格納する複数のノード、
を有する情報処理システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013232884A JP2015095015A (ja) | 2013-11-11 | 2013-11-11 | データ配置方法、データ配置プログラムおよび情報処理システム |
US14/530,912 US20150135004A1 (en) | 2013-11-11 | 2014-11-03 | Data allocation method and information processing system |
EP20140191633 EP2871576A1 (en) | 2013-11-11 | 2014-11-04 | Data allocation method, data allocation program, and information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013232884A JP2015095015A (ja) | 2013-11-11 | 2013-11-11 | データ配置方法、データ配置プログラムおよび情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015095015A true JP2015095015A (ja) | 2015-05-18 |
Family
ID=51900131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013232884A Pending JP2015095015A (ja) | 2013-11-11 | 2013-11-11 | データ配置方法、データ配置プログラムおよび情報処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150135004A1 (ja) |
EP (1) | EP2871576A1 (ja) |
JP (1) | JP2015095015A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7443182B2 (ja) | 2020-07-21 | 2024-03-05 | 株式会社日立製作所 | サーバ、サーバシステム、及びサーバ管理方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10157112B2 (en) * | 2015-09-03 | 2018-12-18 | Toshiba Memory Corporation | Storage device |
WO2019003416A1 (ja) * | 2017-06-30 | 2019-01-03 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001084314A2 (en) * | 2000-05-02 | 2001-11-08 | Sun Microsystem, Inc. | Method and system for providing cluster replicated checkpoint services |
US6889333B2 (en) * | 2001-11-01 | 2005-05-03 | Microsoft Corporation | System and method for replicating data in a distributed system |
JP3901060B2 (ja) | 2002-08-28 | 2007-04-04 | 日本電気株式会社 | アプリケーションの更新処理方法、更新処理システム及び更新処理プログラム |
US7739240B2 (en) * | 2002-12-09 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Replication and replica management in a wide area file system |
US20040230862A1 (en) * | 2003-05-16 | 2004-11-18 | Arif Merchant | Redundant data assigment in a data storage system |
US7330931B2 (en) * | 2003-06-26 | 2008-02-12 | Copan Systems, Inc. | Method and system for accessing auxiliary data in power-efficient high-capacity scalable storage system |
US7657781B1 (en) * | 2003-07-25 | 2010-02-02 | Cisco Technology, Inc. | System and method for providing redundant data load sharing in a distributed network |
US7693880B1 (en) * | 2004-05-06 | 2010-04-06 | Symantec Operating Corporation | Mirrored storage at the file system level |
JP2006119745A (ja) | 2004-10-19 | 2006-05-11 | Hitachi Ltd | コンピュータシステム及びコンピュータシステムの制御方法 |
JP2009265973A (ja) | 2008-04-25 | 2009-11-12 | Nec Corp | データ同期システム、障害復旧方法、及び、プログラム |
US9098519B2 (en) * | 2008-09-16 | 2015-08-04 | File System Labs Llc | Methods and apparatus for distributed data storage |
CN101539873B (zh) * | 2009-04-15 | 2011-02-09 | 成都市华为赛门铁克科技有限公司 | 数据恢复的方法、数据节点及分布式文件系统 |
US20110258461A1 (en) * | 2010-04-16 | 2011-10-20 | Twinstrata, Inc | System and method for resource sharing across multi-cloud arrays |
CN101763321B (zh) * | 2010-02-24 | 2013-01-02 | 华为技术有限公司 | 数据容灾的方法、装置及系统 |
EP2672387B1 (en) * | 2012-06-04 | 2018-08-01 | Amplidata NV | A distributed object storage system |
US20140181443A1 (en) * | 2012-12-21 | 2014-06-26 | Commvault Systems, Inc. | Archiving using data obtained during backup of primary storage |
US9075773B1 (en) * | 2014-05-07 | 2015-07-07 | Igneous Systems, Inc. | Prioritized repair of data storage failures |
-
2013
- 2013-11-11 JP JP2013232884A patent/JP2015095015A/ja active Pending
-
2014
- 2014-11-03 US US14/530,912 patent/US20150135004A1/en not_active Abandoned
- 2014-11-04 EP EP20140191633 patent/EP2871576A1/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7443182B2 (ja) | 2020-07-21 | 2024-03-05 | 株式会社日立製作所 | サーバ、サーバシステム、及びサーバ管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2871576A1 (en) | 2015-05-13 |
US20150135004A1 (en) | 2015-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163472B2 (en) | Method and system for managing storage system | |
US10108367B2 (en) | Method for a source storage device sending data to a backup storage device for storage, and storage device | |
CN108932338B (zh) | 数据更新方法、装置、设备和介质 | |
JP6056453B2 (ja) | プログラム、データ管理方法および情報処理装置 | |
JP5254611B2 (ja) | 固定内容分散データ記憶のためのメタデータ管理 | |
US7536444B2 (en) | Remote copying system and remote copying method | |
US9830088B2 (en) | Optimized read access to shared data via monitoring of mirroring operations | |
US7836162B2 (en) | Transaction processing system and transaction processing method | |
US8676750B2 (en) | Efficient data synchronization in a distributed data recovery system | |
JP2016522514A (ja) | オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置 | |
CN115858236A (zh) | 一种数据备份方法和数据库集群 | |
JP5292351B2 (ja) | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム | |
JP5691246B2 (ja) | データベース二重化システム、情報処理装置及びデータベース二重化方法 | |
US8112598B2 (en) | Apparatus and method for controlling copying | |
CN113254536A (zh) | 数据库事务处理方法、系统、电子设备及存储介质 | |
JP5292350B2 (ja) | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム | |
JP2015095015A (ja) | データ配置方法、データ配置プログラムおよび情報処理システム | |
US8892830B2 (en) | Changing ownership of cartridges | |
US10025521B2 (en) | Obtaining additional data storage from another data storage system | |
JP2012022379A (ja) | 分散トランザクション処理システム、装置、方法およびプログラム | |
WO2015198371A1 (ja) | ストレージシステム及び記憶制御方法 | |
US20210248108A1 (en) | Asynchronous data synchronization and reconciliation | |
CN117667516A (zh) | 一种数据连接的灾备切换方法及装置 | |
JP2019133508A (ja) | 分散型構成管理装置、分散型構成管理方法、及び、分散型構成管理プログラム | |
JP2018169772A (ja) | ディザスタリカバリシステム、ディザスタリカバリ方法及びプログラム |