JP2009289089A - クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム - Google Patents

クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム Download PDF

Info

Publication number
JP2009289089A
JP2009289089A JP2008141749A JP2008141749A JP2009289089A JP 2009289089 A JP2009289089 A JP 2009289089A JP 2008141749 A JP2008141749 A JP 2008141749A JP 2008141749 A JP2008141749 A JP 2008141749A JP 2009289089 A JP2009289089 A JP 2009289089A
Authority
JP
Japan
Prior art keywords
information
arrangement
operation mode
data
node device
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
Application number
JP2008141749A
Other languages
English (en)
Inventor
Shunichi Ichikawa
俊一 市川
Shin Kobayashi
心 小林
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 JP2008141749A priority Critical patent/JP2009289089A/ja
Publication of JP2009289089A publication Critical patent/JP2009289089A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】クラスタ型ストレージシステムにおいてデータの移行状態にかかわらず、データの信頼性を確保する。
【解決手段】システム内のノード装置10は配置制御情報135にシステム内の各ノード装置10が、どのリビジョン番号のコンテンツ配置情報131を用いて読み書き処理を行うかを定義した動作モード情報132を含める。この動作モード情報132を受信したノード装置10は、この動作モード情報132に示されたコンテンツ配置情報131すべてを参照して読み書き処理の対象となるノード装置10を決定する。よって、この動作モード情報132にデータ移行前のコンテンツ配置情報131Aおよびデータ移行後のコンテンツ配置情報131B両方のリビジョン番号を指示しておけば、ノード装置10はこの両方のノード装置10に読み書き処理を実行するので、データの信頼性を確保できる。
【選択図】図1

Description

本発明は、クラスタ型ストレージシステムに関する。
従来、ネットワークに接続された複数のノード装置内のデバイスにデータ(コンテンツ)を保存するクラスタ型ストレージシステムがある。このクラスタ型ストレージシステムによれば、データのI/O(Input/Output)性能、つまり、データのスループットや単位時間あたりのI/O数を向上させることができる。また、データ保存容量のスケーラビリティを向上させることができる。
このようなクラスタ型ストレージシステム(以下、適宜、システムと略す)として、Amazon社が開発したDynamoがある(非特許文献1参照)。このDynamoは、データの保存先となるノード装置を分散ハッシュテーブル(DHT:Distributed Hash Table)を用いて割り当てることで、特定のノード装置に負荷が集中することを防止している。なお、この分散ハッシュテーブルは、ノード装置のアドレスと、コンテンツキー(データの識別情報)のハッシュ値をDHT空間に写像したものである。
このDynamoにおいて、DHT空間上におけるコンテンツキーと、そのデータを保存するノード装置との対応関係は配置情報に設定される。そして、この配置情報は、ノード装置間のデータ交換によってシステム全体に伝播する。各ノード装置は、クライアント装置等からデータの読み出し要求や書き込み要求を受け付けると、この配置情報をもとに、データの読み出し先や書き込み先となるノード装置を決定する。そして、このノード装置を収容するノード装置に対しデータの読み出しや書き込み(以下、適宜「読み書き」と略す)を実行し、その実行結果をクライアント装置等へ返す。このDynamoにおいて、データの読み書き先となるノード装置を変更するためには、まず管理者等が、任意のノード装置を1つ選択し、このノード装置に記憶される配置情報を書き換える。この書き換え後の配置情報を、このノード装置から他のノード装置へ送信する。すると、この書き換え後の配置情報が各ノード装置に伝播する。この後、システム内の各ノード装置はこの書き換え後の配置情報に基づいてデータの読み書き先となるノード装置を決定するようになる。
Dynamo、[online]、[平成20年5月9日検索]、インターネット、<URL: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html >
しかし、システム内のあるノード装置に記憶されているデータを、別のノード装置に移行する場合、この移行処理が完了するまでには時間がかかることがある。また、このようなデータの移行処理が正常に終了しない場合もある。このような場合において、ノード装置が、書き換え後の配置情報を参照して、データの読み書き先となるノード装置を決定すると、データの読み書きに関し信頼性が損なわれるおそれがある。
例えば、ノード装置が、この書き換え後の配置情報を参照して、データの移行先のノード装置に読み書きを実行しようとしたとき、そのデータがまだ移行先のノード装置に移行しきっていない場合もある。このような場合、ノード装置は移行先のノード装置に対し読み書きを実行しても、そのデータに関する読み書きを完了することができない。つまり、ノード装置は、まだ移行元のノード装置に残っているデータについては、読み書きされないので対象データすべてについての読み書きを完了することができない。
そこで、本発明は前記した問題を解決し、クラスタ型ストレージシステムにおいてデータの移行をした場合でも、データの読み書きに関する信頼性を確保することを目的とする。
請求項1に記載の発明は、データを記憶するとともに他のノード装置のデータの読み出しおよび書き込みを実行するノード装置を複数備えるクラスタ型ストレージシステムにおける前記ノード装置であって、前記読み出しまたは書き込みの対象となるデータの識別情報を含む前記データの処理要求の入力を受け付ける入力部と、前記データの識別情報ごとに、このデータを記憶する前記ノード装置の識別情報を示した配置情報と、当該ノード装置において参照すべき前記配置情報のリビジョン番号を示した動作モード情報とを記憶する配置情報記憶部と、前記配置情報記憶部に記憶された1以上の前記配置情報の中から、前記配置情報記憶部に記憶された動作モード情報に示されるリビジョン番号の配置情報を選択し、この選択した配置情報と前記入力されたデータの識別情報とを参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択する制御部と、前記選択したノード装置へ、前記識別情報に対応するデータの読み出し要求または書き込み要求を送信するリクエスト送信部と、前記ノード装置から送信された、前記読み出し対象のデータまたは前記書き込み結果を受信するデータ受信部と、前記データを記憶するノード装置を変更するため、前記入力部経由で、前記変更対象となるデータの識別情報および当該変更後のノード装置の識別情報の入力を受け付けたとき、前記データの識別情報と当該変更後のノード装置の識別情報を対応付けた前記配置情報を作成し、この作成した配置情報を前記配置情報記憶部に記憶する配置情報作成部と、前記作成された配置情報のリビジョン番号を発行し、前記発行したリビジョン番号を前記作成された配置情報に対応付けて前記配置情報記憶部に記憶するリビジョン番号発行部と、前記入力部経由で、前記動作モード情報に含める前記配置情報のリビジョン番号の入力を受け付け、前記入力されたリビジョン番号を示した前記動作モード情報を作成し、この作成した動作モード情報を前記配置情報記憶部に記憶する動作モード情報作成部と、前記作成された配置情報および動作モード情報を含む配置制御情報を、他の前記ノード装置へ送信する配置制御情報送信部と、他の前記ノード装置から送信された前記配置制御情報を受信したとき、この受信した配置制御情報に含まれる前記配置情報および前記動作モード情報を前記配置情報記憶部に記憶する配置制御情報受信部とを備え、前記制御部は、前記配置情報を選択するとき、前記受信した前記配置情報および前記動作モード情報を記憶した前記配置情報記憶部における前記動作モード情報を参照して、この配置情報記憶部に記憶された前記配置情報から、当該ノード装置において参照すべき配置情報を選択することを特徴とする。
請求項2に記載の発明は、請求項1に記載のノード装置の前記制御部が、前記選択した配置情報が複数あり、このうち、同じデータの識別情報に対応するノード装置の識別情報の異なる配置情報があったとき、この配置情報それぞれにおける前記データの識別情報に対応するノード装置すべてを、当該データの読み出し先または書き込み先のノード装置として選択することを特徴とする。
請求項7に記載に発明は、請求項1ないし請求項6のいずれか1項に記載のノード装置を複数含んでなることを特徴とするクラスタ型ストレージシステムである。
請求項8に記載の発明は、データを記憶するとともに他のノード装置のデータの読み出しおよび書き込みを実行するノード装置を複数備えるクラスタ型ストレージシステムにおいて、前記データの識別情報ごとに、このデータを記憶する前記ノード装置の識別情報を示した配置情報と、当該ノード装置において参照すべき前記配置情報のリビジョン番号を示した動作モード情報とを記憶する記憶部を備え、この記憶部に記憶される配置情報を参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択する前記ノード装置が、前記読み出しまたは書き込みの対象となるデータの識別情報を含む前記データの処理要求の入力を受け付けるステップと、前記記憶部に記憶された1以上の前記配置情報の中から、前記記憶部に記憶された動作モード情報に示されるリビジョン番号の配置情報を選択するステップと、この選択した配置情報と前記入力されたデータの識別情報とを参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択するステップと、前記選択したノード装置へ、前記識別情報に対応するデータの読み出し要求または書き込み要求を送信するステップと、前記ノード装置から送信された、前記読み出し対象のデータまたは前記書き込み結果を受信するステップと、前記データを記憶するノード装置を変更するため、前記入力部経由で、前記変更対象となるデータの識別情報および当該変更後のノード装置の識別情報の入力を受け付けたとき、前記データの識別情報と当該変更後のノード装置の識別情報を対応付けた前記配置情報を作成し、この作成した配置情報を前記記憶部に記憶するステップと、前記作成された配置情報のリビジョン番号を発行し、前記発行したリビジョン番号を前記作成された配置情報に対応付けて前記記憶部に記憶するステップと、前記動作モード情報に含める前記配置情報のリビジョン番号の入力を受け付けたとき、前記入力されたリビジョン番号を示した前記動作モード情報を作成し、この作成した動作モード情報を前記配置情報記憶部に記憶するステップと、前記作成された配置情報および前記作成された動作モード情報を示した配置制御情報を、他の前記ノード装置へ送信するステップと、他の前記ノード装置から送信された前記配置制御情報を受信したとき、この受信した配置制御情報に含まれる前記配置情報および前記動作モード情報を前記記憶部に記憶するステップとを実行し、前記配置情報を選択するステップにおいて、前記受信した前記配置情報および前記動作モード情報を記憶した前記記憶部における前記動作モード情報を参照して、この記憶部に記憶された前記配置情報から、当該ノード装置において参照すべき配置情報を選択することを特徴とするデータ制御方法とした。
このようにすることで、クラスタ型ストレージシステムの各ノード装置は、動作モード情報を参照して、どの配置情報(コンテンツ配置情報)を参照してデータの読み書き処理を行うかを判断する。よって、クラスタ型ストレージシステムの管理者等が、動作モード情報に各ノード装置に参照させたいコンテンツ配置情報の識別情報(リビジョン番号)を列記し、この動作モード情報を各ノード装置に伝播させることで、各ノード装置が参照する配置情報を制御することができる。従って、例えば、この動作モード情報に、(1)そのデータの読み書き先が移行元のノード装置である配置情報と、(2)そのデータの読み書き先が移行先のノード装置の配置情報と両方のコンテンツ配置情報の識別情報を列記したものを配置制御情報に含めて他のノード装置へ送信する。このようにすることで、ノード装置間でデータの移行に伴い、当該データに関する読み書き先のノード装置として、そのデータの移行元のノード装置と、そのデータの移行先のノード装置との両方を各ノード装置に選択させることができる。よって、ノード装置は、データの移行をした場合でも、データの読み書きに関する信頼性を確保することができる。
請求項3に記載の発明は、請求項1または請求項2に記載のノード装置の前記制御部が、前記配置情報記憶部に記憶された配置情報から参照すべき配置情報を選択するとき、前記配置情報記憶部に記憶された動作モード情報すべてを参照して、前記配置情報を選択することを特徴とする。
このようにすることで、ノード装置が、他の複数のノード装置から、このノード装置それぞれおいて独立に更新された動作モード情報を受信した場合でも、そのすべての動作モード情報を用いて、自身が参照すべき配置情報を選択する。例えば、ノード装置が、ノード装置Aからは配置情報Aの識別情報(リビジョン番号)を示した動作モード情報を受信し、ノード装置Bからは配置情報Bの識別情報を示した動作モード情報を受信した場合を考える。この場合において、同じ識別情報(コンテンツキー)を持つデータに対するデータの読み書き先として、その配置情報A,B間で異なるノード装置A,Bが示されていたとき、ノード装置は、そのノード装置A,Bそれぞれをデータの読み書き先として選択する。つまり、ノード装置は、ノード装置それぞれにおける配置情報の内容を損なわずに処理を行うことができ、データの読み書きに関する信頼性を確保することができる。
請求項4に記載の発明は、請求項3に記載のノード装置の前記動作モード情報作成部が、前記入出力部経由で前記動作モード情報の親となる親動作モード情報の識別情報の入力を受け付けたとき、前記親動作モード情報の識別情報を含む動作モード情報を作成し、前記制御部は、前記配置情報記憶部に記憶された配置情報から参照すべき配置情報を選択するとき、前記受信した動作モード情報を含む前記配置制御情報記憶部の動作モード情報それぞれの親動作モード情報の識別情報を参照して、前記配置制御情報記憶部に記憶される動作モード情報の中から、この配置制御情報記憶部のいずれの動作モード情報の親動作モード情報になっていないすべての動作モード情報を参照して、前記配置情報を選択することを特徴とする。
このようにすることで、ノード装置は、自身が記憶する動作モード情報の中から、いずれの動作モード情報の親にもなっていない動作モード情報を参照して配置情報を選択する。つまり、ノード装置は、配置制御情報記憶部に記憶されるすべての動作モード情報を参照して配置情報を選択するが、このうち親子関係になっている動作モード情報を発見した場合、子である動作モード情報(新しい動作モード情報)の方を参照して配置情報を選択する。よって、ノード装置は、自身が記憶する動作モード情報のうち、より新しい動作モード情報を参照して配置情報を選択できる。
請求項6に記載の発明は、請求項1ないし請求項5のいずれか1項に記載のノード装置が記憶するデータは、このデータの更新日時を示すタイムスタンプの値を含み、前記データ受信部は、同じ識別情報のデータを複数の前記ノード装置から受信したとき、前記データのタイムスタンプの値を参照して、受信したデータのうち最新のデータを前記データの読み出し結果として選択することを特徴とする。
このようにすることで、ノード装置が、当該コンテンツの書き込み処理を複数のノード装置に対し実行した場合でも、そのうち最新のデータを読み出し結果として選択するので、読み出したデータの信頼性を確保することができる。
請求項9に記載の発明は、請求項8に記載のデータ制御方法をコンピュータである前記ノード装置に実行させるためのデータ制御プログラムである。
このようなデータ制御プログラムによれば、一般的なコンピュータに請求項8に記載のデータ制御方法を実行させることができる。
本発明によれば、クラスタ型ストレージシステムにおいてデータの移行をした場合でも、データの読み書きに関する信頼性を確保することができる。
以下、本発明を実施するための最良の形態(以下、実施の形態という)について説明する。
≪概要≫
まず、本実施の形態のクラスタ型ストレージシステムの概要を説明する。図1は、本実施の形態のクラスタ型ストレージシステムの概要を概念的に示した図である。このクラスタ型ストレージシステムにおけるノード装置10およびクライアント装置20の数は図1に示す数に限定されない。
このクラスタ型ストレージシステムは、複数のノード装置10(例えば、ノード装置10A,10B,10C)を含んで構成される。このノード装置10は、それぞれデータ(コンテンツ)を記憶するコンテンツ記憶部134を備える。また、このノード装置10は、TCP/IP(Transmission Control Protocol/Internet Protocol)等の通信プロトコルによりネットワーク経由で他のノード装置10やクライアント装置20との間で通信を行う。このノード装置10は、クライアント装置20からコンテンツの読み出し処理または書き込み処理(以下、適宜「読み書き処理」と略す)の対象となるコンテンツキー(コンテンツの識別情報)の入力を受け付けると、コンテンツ配置情報(配置情報)131を参照して、当該コンテンツを記憶するノード装置10を特定する。つまり、ノード装置10はこのコンテンツの読み出し先または書き込み先(以下、適宜「読み書き先」と略す)となるノード装置10を特定する。そして、この特定したノード装置10へ当該コンテンツの読み書き処理を実行し、その実行結果をクライアント装置20へ返す。
なお、このコンテンツ配置情報131は、図1に例示するように、バスケットIDごとに、そのバスケットIDに対応するコンテンツの読み書き先である(つまり、このコンテンツを記憶する)ノード装置10の識別情報(ノードID)を示した情報である。このバスケットIDは、例えば、コンテンツキーKをハッシュ関数Hに代入して計算したハッシュ値H(K)である。なお、コンテンツ配置情報131は、1つのノード装置10に複数記憶されることもある。動作モード情報132は、当該ノード装置10において参照すべき1以上のコンテンツ配置情報131の識別情報(リビジョン番号、例えば「rev1」等)を示した情報である。
ノード装置10は、この動作モード情報132を参照して、自身が記憶するコンテンツ配置情報131の中から、参照すべきコンテンツ配置情報131を決定する。なお、更新されたコンテンツ配置情報131および動作モード情報132は、配置制御情報135としてノード装置10間で交換される。このようにすることで、各ノード装置10は、コンテンツ配置情報131が更新された場合も、その更新されたコンテンツ配置情報131を参照してコンテンツの読み書き先となるノード装置10を決定できる。ここではノード装置10A,10B,10Cは、既にリビジョン番号「rev1」のコンテンツ配置情報131Aを保持しているものとする。
このようなクラスタ型ストレージシステムにおいて、例えば、図1に示すようにデータ1341(「ID(バスケットID)=2」)をノード装置10Aからノード装置10Bへ移行し、データ1341(「ID=3」)をノード装置10Bからノード装置10Cへ移行した場合、管理者等はコンテンツ配置情報131におけるノードIDを移行先のノードIDに書き換える。例えば、図1に示すコンテンツ配置情報131A(rev1)における移動対象のコンテンツのバスケットIDに対応するノードIDを、移行先のノード装置100のノードIDに書き換えたコンテンツ配置情報131B(rev2)を作成する。
また、このようにコンテンツ配置情報131Bを新たに作成したノード装置10Aは、新たな動作モード情報132Bも作成する。例えば、コンテンツ配置情報131Aを基にコンテンツ配置情報131Bを作成した場合、ノード装置10Aは、このコンテンツ配置情報131Aのリビジョン番号「rev1」を含む動作モード情報132Aに、コンテンツ配置情報131Bのリビジョン番号「rev2」を追加した動作モード情報132Bを作成する。そして、ノード装置10Aは、この新たなコンテンツ配置情報131Bと動作モード情報132Bとを含む配置制御情報135を、ノード装置10Bへ送信する。また、この配置制御情報135を受信したノード装置10Bは、この配置制御情報135をノード装置10Cへ送信する。
この配置制御情報135を受信したノード装置10B,10C、およびノード装置10Aは、以下のような動作を行う。すなわち、ノード装置10A,10B,10Cは、この配置制御情報135に含まれる動作モード情報132Bに示されるリビジョン番号に基づき、コンテンツ配置情報131A,131Bの両方を参照して、コンテンツの読み書き先のノード装置10を決定する。例えば、各ノード装置10は、バスケットID「2」のデータ1341については、ノード装置10A,10Bの両方を読み書き先として決定し、バスケットID「3」のデータ1341についてはノード装置10A,10B,10Cすべてを読み書き先として決定する。このようにすることで、ノード装置10間でデータ移行を行った場合でも、このデータの読み書きに対する信頼性を損なうことがなくなる。
なお、前記したデータ移行がすべて完了した場合、ノード装置10は、動作モード情報132Bから、データ移行前におけるコンテンツ配置情報131のリビジョン番号を削除してもよい。例えば、動作モード情報132に示されるリビジョン番号を「rev1、rev2」から「rev2」に変更した動作モード情報132Cを作成し、この作成した動作モード情報132Cを配置制御情報135に含めて各ノード装置10に伝播させる。このようにすることで、以降、各ノード装置10はリビジョン番号「rev1」に対応するコンテンツ配置情報131Aを参照せず、「rev2」に対応するコンテンツ配置情報131Bを参照する。つまり、各ノード装置10はこのコンテンツ配置情報131Bに示される当該データの移行後のノード装置10をデータの読み書き先とするようになる。
≪構成≫
次に、図2を用いてノード装置10の構成を説明する。図2は、図1のノード装置の構成を示したブロック図である。
ノード装置10(10A,10B,10C)はそれぞれ同じ構成であるので代表してノード装置10Aを説明する。図2に示すように、ノード装置10は、クライアント装置20や他のノード装置10との間のデータの入出力を司る入出力部11と、配置制御情報135の交換やクライアント装置20からの要求に基づく各種データ処理を実行する処理部12と、処理対象となるデータ(コンテンツ)や、前記したコンテンツ配置情報131や動作モード情報132を記憶する記憶部13とを備える。なお、ノード装置10B,10Cにおける配置制御情報交換部120、配置制御情報記憶部130、コンテンツ記憶部134以外の構成は、図示を省略している。
入出力部(入力部および出力部)11は、クライアント装置20やノード装置10とのデータ入出力を司る入出力インタフェースにより実現される。また、処理部12は、このノード装置10が備えるCPU(Central Processing Unit)によるプログラム実行処理により実現される。さらに、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、図示を省略しているが、記憶部13には、このノード装置10の機能を実現するためのプログラムが格納される。
このような処理部12は、配置制御情報交換部120と、制御部123と、リクエスト送信部124と、データ受信部125と、配置情報作成部126と、リビジョン番号発行部127と、動作モード情報作成部128と、データ処理部129とを備える。
配置制御情報交換部120は、前記した配置制御情報135(図1参照)を他のノード装置10との間で交換する。この配置制御情報交換部120は、配置制御情報送信部121と、配置制御情報受信部122とを備える。配置制御情報送信部121は、配置制御情報135を他のノード装置10へ送信する。また、配置制御情報受信部122は、他のノード装置10から送信された配置制御情報135を受信する。この配置制御情報受信部122は、この受信した配置制御情報135に含まれるコンテンツ配置情報131および動作モード情報132を、自身のノード装置10の配置制御情報記憶部130(後記)に記憶する。
制御部123は、入出力部11経由でクライアント装置20から、当該コンテンツのコンテンツキーを含む処理要求(読み書き処理の要求)を受け付けると、当該コンテンツの読み書き先のノード装置10のノードIDを特定(決定)する。つまり、制御部123は、まず、コンテンツキーをハッシュ関数に代入してバスケットIDを求める。次に、自身が保持するコンテンツ配置テーブル133(後記)から、当該バスケットIDに対応するノードIDを特定する。なお、このコンテンツ配置テーブル133について、詳細は後記するが、動作モード情報132に示されるリビジョン番号に対応する1以上のコンテンツ配置情報131をマージして作成されたものである。
リクエスト送信部124は、制御部123により特定されたノードIDのノード装置10へ、コンテンツキーに対応するコンテンツの読み書き要求を送信する。
データ受信部125は、ノード装置10への読み書き処理の要求に対する応答を受信する。つまり、読み出したコンテンツまたはそのコンテンツ読み出し処理の結果(OKかNGか)や、書き込み処理の結果(OKかNGか)を受信する。
配置情報作成部126は、入出力部11で、変更対象となるバスケットID、変更前のノード装置10のノードID(アドレス情報等)、変更後のノード装置10のノードID等の入力を受け付けると、これらの情報を基にコンテンツ配置情報131を作成する。例えば、コンテンツ配置情報131において、この変更対象となるバスケットIDに対応するノードIDを、変更前のノード装置10のノードIDから、変更後のノード装置10のノードIDへ変更する。そして、配置情報作成部126は、この作成したコンテンツ配置情報131を配置制御情報記憶部130に記憶する。また、この配置情報作成部126は、動作モード情報132に示されるリビジョン番号に対応するコンテンツ配置情報131を配置制御情報記憶部130から選択し、この選択したコンテンツ配置情報131を基にコンテンツ配置テーブル133を作成する。
このときのコンテンツ配置テーブル133の作成手順を、図3を用いて説明する。図3は、図2のコンテンツ配置テーブルの作成手順を概念的に示した図である。ここでは、配置制御情報記憶部130にコンテンツ配置情報131A,132Bと、リビジョン番号「rev1,rev2」を含む動作モード情報132が記憶され、配置情報作成部126が、この動作モード情報132に示されるリビジョン番号に対応するコンテンツ配置情報131A,131Bを基にコンテンツ配置テーブル133を作成する場合を例に説明する。
例えば、図3のコンテンツ配置情報131A,131BにおけるバスケットID「1」に対するノードIDは両方とも「10A,10B」である。よって、配置情報作成部126は、コンテンツ配置テーブル133におけるバスケットID「1」のノードリスト1331も「10A,10B」とする。
また、コンテンツ配置情報131A,131BのバスケットID「2」に対するノードIDは、「10A」と「10B」である。よって、配置情報作成部126は、コンテンツ配置テーブル133におけるバスケットID「2」のノードリスト1332を「10A,10B」とする。
さらに、コンテンツ配置情報131A,131BのバスケットID「3」に対するノードIDは「10A,10B」と「10A,10C」である。よって、配置情報作成部126は、コンテンツ配置テーブル133におけるバスケットID「3」のノードリスト1333を「10A,10B,10C」とする。
つまり、配置情報作成部126は、参照すべきコンテンツ配置情報131が複数あり、そのコンテンツ配置情報131間で、同じバスケットIDに対応するノードIDの異なるものがあったとき、このコンテンツ配置情報131それぞれから、このバスケットIDに対応するノードIDすべてを選択する。そして、このノードIDを、コンテンツ配置テーブル133の当該バスケットIDに対応するノードIDとして登録する。このようにして作成されたコンテンツ配置テーブル133を参照することで、制御部123は、コンテンツ移行前のノード装置10と移行後のノード装置10の両方のノード装置10に対し読み書き処理を実行できる。
なお、詳細は後記するが、配置情報作成部126は、動作モード情報132が複数あったとき、そのすべての動作モード情報132を参照して、コンテンツ配置テーブル133を作成する。つまり、ノード装置10は、新たな動作モード情報132を受信した場合でも、配置情報作成部126は、既存の動作モード情報132と新たな動作モード情報132と両方を参照する。このようにすることで、新たな動作モード情報132を受信した場合でも、ノード装置10はその両方の動作モード情報132の内容を損なわずに読み書き処理を実行できる。
但し、配置情報作成部126が、その配置制御情報記憶部130の動作モード情報132の中から、親子関係にある動作モード情報132を発見したとき、親(更新前)の動作モード情報132を参照せず、子(更新後)の動作モード情報132の方を参照してコンテンツ配置テーブル133を作成する。例えば、図3に示す動作モード情報132には、親となる動作モード情報132の識別情報として「132A」が記載されている(図3の「親=132A」参照)。これは、この動作モード情報132が動作モード情報132Aをベース(親)に作成されたことを示す。よって、配置情報作成部126は、配置制御情報記憶部130に動作モード情報132Aが含まれていた場合でも、この動作モード情報132Aを用いず、動作モード情報132の方を用いてコンテンツ配置テーブル133を作成する。このようにすることで、制御部123は、古い方の動作モード情報132ではなく、新しい方の動作モード情報132を参照して、コンテンツ配置テーブル133を作成できる。
図2のリビジョン番号発行部127は、新規にコンテンツ配置情報131が作成されると、このコンテンツ配置情報131のリビジョン番号を発行する。このリビジョン番号は、コンテンツ配置情報131ごとにユニークなものとするである。なお、このリビジョン番号は、数字の他に、文字、記号等を含んだものでもよい。
動作モード情報作成部128は、入出力部11からの指示入力に基づき動作モード情報132を作成する。例えば、配置情報作成部126がコンテンツ配置情報131A(図1参照)を修正して、新たにコンテンツ配置情報131Bを作成したとき、この入出力部11からの指示入力に基づき、動作モード情報作成部128は、コンテンツ配置情報131Aのリビジョン番号に、コンテンツ配置情報131Bのリビジョン番号を加えた動作モード情報132B(図1参照)を作成する。このようにすることで、このような動作モード情報132を受信したノード装置10は、新旧両方のコンテンツ配置情報131を参照してコンテンツ配置テーブル133を作成できる。したがって、ノード装置10は、コンテンツの移行元のノード装置10およびこのコンテンツの移行先のノード装置10の両方のノード装置10に対し、コンテンツの読み書き処理を実行できる。
なお、この動作モード情報作成部128は、入出力部11からの指示入力に基づき、この動作モード情報132の親となる動作モード情報132(親動作モード情報)の識別情報を付加する。例えば、動作モード情報132Aを基に動作モード情報132Bを作成した場合、この動作モード情報132Aの識別情報を、この動作モード情報132Bに付加する。
データ処理部129は、他のノード装置10からの処理要求に応じて、コンテンツ記憶部134に記憶されるコンテンツのうち、コンテンツキーに対応するコンテンツの読み書き処理を実行する。そして、データ処理部129は、その実行結果を処理要求の送信元であるノード装置10へ返す。
記憶部13は、所定領域に、配置制御情報記憶部130とコンテンツ記憶部134とを備える。
この配置制御情報記憶部130は、前記したコンテンツ配置情報131と、動作モード情報132と、コンテンツ配置テーブル133とを記憶する。
コンテンツ記憶部134は、コンテンツキーごとに、当該コンテンツキーに対応するコンテンツが記憶される。なお、このコンテンツには、データの更新日時であるタイムスタンプが付与されている。
≪処理手順≫
次に、本実施の形態のクラスタ型ストレージシステムのノード装置10の処理手順を説明する。まず、ノード装置10において、新たなコンテンツ配置情報131が追加されたときの処理手順を説明する。図4は、図2のノード装置に新たなコンテンツ配置情報が追加されたときの処理手順を示した図である。
まず、図2のノード装置10の配置情報作成部126は、入出力部11で、移行対象となるコンテンツのバスケットID、移行元のノード装置10のノードIDおよび移行先となるノード装置10のノードIDを示した変更情報の入力を受け付ける。そして、配置情報作成部126は、この変更情報を反映したコンテンツ配置情報131を追加する(S101)。例えば、配置情報作成部126は、コンテンツ配置情報131A(図1参照)をコピーし、このコンテンツ配置情報131Aにおいて、変更対象となるバスケットIDに対する、ノード装置10のIDを、移行先のノード装置10のノードIDに書き換えたコンテンツ配置情報131B(図1参照)を作成する。
次に、リビジョン番号発行部127は、この追加されたコンテンツ配置情報131のリビジョン番号を発行する(S102)。配置情報作成部126は、この発行されたリビジョン番号を、S101で追加されたコンテンツ配置情報131に対応付けて配置制御情報記憶部130に記憶する。
次に、動作モード情報作成部128は、入出力部11からの指示入力に基づき新たな動作モード情報132(例えば、動作モード情報132B)を作成し(S103)、この作成した動作モード情報132に、親動作モード情報13の識別情報(ID)を付加する(S104)。
例えば、動作モード情報作成部128は、コンテンツ配置情報131Aのリビジョン番号に、コンテンツ配置情報131Bのリビジョン番号を加えた動作モード情報132B(図1参照)を作成する。そして、動作モード情報作成部128は、この作成した動作モード情報132Bに、このコンテンツ配置情報131Bの親動作モード情報(例えば、動作モード情報132A)の識別情報(ID)を付加する。
このようにすることで、例えば、この動作モード情報132Bが各ノード装置10間に伝播した場合おいて、各ノード装置10に既にこの動作モード情報132Bの親となる動作モード情報132Aがあったとき、この動作モード情報132Aよりも動作モード情報132Bの方を優先的に適用して、参照すべきコンテンツ配置情報131を選択させることができる。動作モード情報作成部128は、この作成した動作モード情報132を、配置制御情報記憶部130に記憶する。
次に、配置情報作成部126は、新たに作成した動作モード情報132と、追加されたコンテンツ配置情報131とを含む配置制御情報135(図1参照)を作成する。そして、配置制御情報送信部121は、この配置制御情報135を他のノード装置10へ送信する(S105)。また、この配置情報作成部126は、新たに作成した動作モード情報132を参照し、コンテンツ配置情報131を選択して、この選択したコンテンツ配置情報131を参照してコンテンツ配置テーブル133を作成し、配置制御情報記憶部130に記憶する。配置情報作成部126は、作成したコンテンツ配置テーブル133を参照して当該コンテンツキーに対する読み書き先であるノード装置10を特定する。
なお、配置制御情報送信部121により送信された配置制御情報135は、各ノード装置10間に伝播する。おして、各ノード装置10において、この配置制御情報135を受信すると、この配置制御情報135に示される動作モード情報132およびコンテンツ配置情報131を配置制御情報記憶部130に記憶する。各ノード装置10は、この配置制御情報記憶部130に記憶される動作モード情報132およびコンテンツ配置情報131を参照して、コンテンツ配置テーブル133を作成する。そして、各ノード装置10は、この作成したコンテンツ配置テーブル133を参照して当該コンテンツキーに対する読み書き先であるノード装置10を特定する。
次に、図5を用いて、前記した配置制御情報135を受信したノード装置10の処理手順を説明する。図5は、図1の配置制御情報を受信したノード装置の処理手順を示した図である。
ノード装置10の配置制御情報受信部122は、配置制御情報135を受信すると(S111)、この受信した配置制御情報135に含まれる動作モード情報132を、配置制御情報記憶部130に追加する(S112)。また、この受信した配置制御情報135に含まれるコンテンツ配置情報131も配置制御情報記憶部130に追加する。
次に、配置情報作成部126は、以下の手順でコンテンツ配置テーブル133(図3参照)を作成する。すなわち、まず、配置情報作成部126は、配置制御情報記憶部130に含まれるすべての動作モード情報132の識別情報(ID)を示した全動作モード情報リストを作成する(S114)。また、配置情報作成部126は、この配置制御情報記憶部130に含まれるすべての動作モード情報132の親動作モード情報の識別情報を示した親動作モード情報リストを作成する(S115)。
次に、配置情報作成部126は、この全動作モード情報リストにあって、親動作モード情報リストにはない動作モード情報132の識別情報を示した参照動作モード情報リストを作成する(S116)。つまり、配置情報作成部126は、子を持たない動作モード情報132の識別情報を示したリストを作成する。
そして、配置情報作成部126は、この参照動作モード情報リストに示されるすべての動作モード情報132を参照してコンテンツ配置テーブル133を作成する(S117)。つまり、配置情報作成部126は、配置制御情報記憶部130に記憶される動作モード情報132の親動作モード情報の識別情報を参照して、この配置制御情報記憶部130に記憶される動作モード情報132のうち、いずれの動作モード情報132の親動作モード情報(親)になっていない動作モード情報132を参照して、コンテンツ配置テーブル133を作成する。
<具体例>
なお、このように各ノード装置10で独立にコンテンツ配置情報131や動作モード情報132が更新された場合における、各ノード装置10における配置制御情報135の伝播の具体例を、図6を用いて説明する。図6(a)および(b)は、図1のノード装置における配置制御情報の伝播を概念的に示した図である。図6(a)は、ノード装置10A,10B間の通信が断絶していた間の配置制御情報135の伝播の様子を示した図であり、図6(b)は、ノード装置10A,10B間の通信の断絶が回復した後の配置制御情報135の伝播の様子を示した図である。なお、ここでは、説明を容易にするため配置制御情報135は、動作モード情報132のみを示している。
例えば、図6(a)において、ノード装置10A,10B,10Cの持つコンテンツ配置情報131(図6において図示省略)のリビジョン番号は「rev1」とする。そして、ノード装置10Aには、リビジョン番号「rev2」のコンテンツ配置情報131Bが追加され、ノード装置10Bにはリビジョン番号「rev1.1.1」のコンテンツ配置情報131Dが追加されたとする。これに伴い、ノード装置10Aは、動作モード情報132Aを親動作モード情報とした動作モード情報132Bを作成する。そして、ノード装置10Aはこの動作モード情報132Bを、ノード装置10Cへ送信する。
また、ノード装置10Bは、同じく動作モード情報132Aを親動作モード情報とした動作モード情報132Dを作成する。そして、ノード装置10Bは、この動作モード情報132Dをノード装置10Cへ送信する。なお、前記したとおり、ノード装置10A,10B間の通信は断絶しているので、動作モード情報132Bはノード装置10Aからノード装置10Bへ送信されないし、動作モード情報132Dはノード装置10Bからノード装置10Aへ送信されないものとする。
ノード装置10Cは、動作モード情報132B,132Dを受信すると、この動作モード情報132B,132Dを、このノード装置10Cの配置制御情報記憶部130(図2参照)に追加する。そして、ノード装置10Cは、この配置制御情報記憶部130に含まれるすべての動作モード情報132(動作モード情報132A,132B,132D)の親動作モード情報のIDを参照して、この動作モード情報132のうち、いずれの動作モード情報132の親になっていない動作モード情報132(動作モード情報132B,132D)を選択する。そして、この選択した動作モード情報132(動作モード情報132B,132D)を用いてコンテンツ配置テーブル133を作成する。
なお、この後、ノード装置10A,10B間の通信の断絶が回復すると、動作モード情報132Bは、図6(b)に示すように伝播する。まず、動作モード情報132Bは、ノード装置10Aからノード装置10Bへ送信される。ノード装置10Bは、受信した動作モード情報132Bの親動作モード情報のIDから、この動作モード情報132Bの親が動作モード情報132Aであることが分かるので、前記したノード装置10Cの場合と同様に、いずれの親にもなっていない動作モード情報132B,132Dを基にコンテンツ配置テーブル133を作成する。
この後、ノード装置10Bは、この動作モード情報132B,132Dを親として、動作モード情報132Eを作成したとする。この場合、ノード装置10Bは、この動作モード情報132Eに、親動作モード情報のIDとして、この動作モード情報132B,132DのIDを付加して、ノード装置10Cへ送信する。
この動作モード情報132Eを受信したノード装置10Cは、動作モード情報132Dを、このノード装置10Cの配置制御情報記憶部130に追加する。そして、ノード装置10Cは、この配置制御情報記憶部130に含まれるすべての動作モード情報132(動作モード情報132A,132B,132D,132E)の親動作モード情報のIDを参照して、この動作モード情報132のうち、いずれの動作モード情報132の親になっていない動作モード情報132(動作モード情報132E)を選択する。そして、この選択した動作モード情報132を用いてコンテンツ配置テーブル133(動作モード情報132E)を作成する。
このようにすることで、クラスタ型ストレージシステムのいずれかのノード装置10において、古い動作モード情報132を更新して、新たな動作モード情報132が作成されたとき、各ノード装置10に、このうち最も新しい(一番下の子である)動作モード情報132を参照して、コンテンツ配置テーブル133を作成させることができる。
<読み出し手順>
次に、図2を参照しつつ、図7を用いて、図2のクライアント装置20からのデータの読み出し要求を受け付けたノード装置10の処理手順を説明する。図7は、図2のクライアント装置からのデータの読み出し要求を受け付けたノード装置の処理手順を示した図である。ここでは、ノード装置10が、コンテンツ配置テーブル133(図3参照)を作成済みであるものとして説明する。
まず、ノード装置10の制御部123は入出力部11経由で、クライアント装置20よりデータの読み出し要求を受信する(S201)。このデータの読み出し要求は、読み出し対象となるコンテンツのコンテンツキーを含むものである。
制御部123は、この読み出し要求に含まれるコンテンツキーを用いてバスケットIDを特定する(S202)。このときのバスケットIDは、前記したとおり、制御部123が、ハッシュ関数HにコンテンツキーKを代入することにより求める。
制御部123は、この特定したバスケットIDをキーとして、コンテンツ配置テーブル133(図3参照)からノードリストを取得する(S203)。例えば、バスケットIDが「1」であれば、図3に示すコンテンツ配置テーブル133から、このバスケットID「1」に対応するノードIDを示したノードリスト1331を取得する。
そして、制御部123は、「取得タイムスタンプ=0」、「取得コンテンツ=null」をセットする(S204)。つまり、この後、制御部123は、各ノード装置10からデータを取得し、その取得したデータ(コンテンツ)のタイムスタンプを参照しながら最新のデータを選択するが、このときのデータ選択に用いるパラメータ「取得タイムスタンプ」および「取得コンテンツ」の初期値を設定する。
制御部123は、ノードリストに示される各ノード装置10について、S207以降の処理を実行する(S205)。つまり、制御部123は、リクエスト送信部124により、ノードリストに示される各ノード装置10のデータの読み出し要求を送信する。そして、データ受信部125により、各ノード装置10のコンテンツ記憶部134からコンテンツ(データ)と、そのコンテンツのタイムスタンプとを受信する(S207)。
そして、制御部123は、この受信したコンテンツのタイムスタンプが、取得スタンプ(既に受信したコンテンツのタイムスタンプ)よりも新しいか否かを判断する(S208)。なお、ここで、制御部123が、最初に受信したコンテンツのタイムスタンプについては、「取得タイムスタンプ=0(初期値)」よりも新しいと判断する。一方、制御部123が2番目以降に受信したコンテンツについては、既に受信した、コンテンツのタイムスタンプと比較して、どちらのタイムスタンプが新しいかを判断する。
ここで、制御部123は、受信したコンテンツのタイムスタンプが、取得スタンプ(既に受信したコンテンツのタイムスタンプ)よりも新しいと判断したとき(S208のYes)、この受信したコンテンツを取得コンテンツとして記憶部13に記憶する(S209)。また、制御部123は、この受信したコンテンツのタイムスタンプを取得タイムスタンプとして記憶部13に記憶する(S210)。一方、S208において、制御部123が、受信コンテンツのタイムスタンプは、取得スタンプ(既に受信したコンテンツのタイムスタンプ)よりも古いと判断したとき(S208のNo)、S209およびS210をスキップして、S211へ進む。そして、制御部123は、ノードリストに示される全ノード装置10の処理を完了したとき(S211のYes)、つまり、ノードリストに示されるすべてのノード装置10に対し、S207以降の処理を実行したとき、S213へ進む。なお、まだ、S207以降の処理を実行していないノード装置10があるとき(S211のNo)は、S205へ戻る。
また、S211の後、制御部123は、記憶部13に記憶されている取得タイムスタンプの値が「0」か否かにより(S213)、いずれかのノード装置10からコンテンツを取得できたか否かを判断する。ここで、いずれかのノード装置10からコンテンツを取得できた場合(S213のNo)、制御部123は、記憶部13に記憶されている取得コンテンツをクライアント装置20(図2参照)へ返す(S214)。このとき制御部123は、取得コンテンツとともに、当該コンテンツ(データ)の取得に成功したことを示す成功応答メッセージもあわせて送信するようにしてもよい。
一方、制御部123が、記憶部13に記憶されている取得タイムスタンプの値が「0」のとき(S213のYes)、つまり、いずれのノード装置10からもコンテンツを取得できなかったとき。エラー(エラーメッセージ)をクライアント装置20へ返す(S215)。よって、制御部123は、クライアント装置20へデータの読み出しに失敗したことを伝えるエラー(エラーメッセージ)を出力する。
例えば、ノード装置10Bのコンテンツを、ノード装置10Cへ移行するとき、コンテンツ配置テーブル133には当該コンテンツの読み書き先としてノード装置10B,10Cが登録された場合を考える。このような場合、ノード装置10Aは、このコンテンツ配置テーブル133を参照して、ノード装置10B,10C両方から当該コンテンツを取得する。つまり、ノード装置10Aは、同じコンテンツキーに対応するコンテンツとして古いコンテンツと新しいコンテンツとを重複して取得することがある。このような場合でも、ノード装置10Aはコンテンツに付されたタイムスタンプを参照することで、この取得したコンテンツのうち最新のコンテンツを選択してクライアント装置20へ出力することができる。つまり、クライアント装置20へより信頼性の高いコンテンツを出力することができる。
<書き込み手順>
次に、図2を参照しつつ、図8を用いて、図2のクライアント装置20からのコンテンツの書き込み要求を受け付けたノード装置10の処理手順を説明する。図8は、図2のクライアント装置からのコンテンツの書き込み要求を受け付けたノード装置の処理手順を示した図である。
まず、ノード装置10の制御部123は入出力部11経由で、クライアント装置20よりコンテンツの書き込みを受信する(S301)。このコンテンツの書き込み要求は、書き込み対象となるコンテンツのコンテンツキーを含むものである。この後、制御部123は、S302およびS303の処理を実行してコンテンツ配置テーブル133からノードリストを取得する。このS302およびS303の処理は、前記した図7のS202およびS203と同様なので説明を省略する。
S303の後、制御部123は、全体結果フラグ=「成功」をセットする(S304)。つまり、この後、制御部123は、各ノード装置10に対しコンテンツの書き込みを実行し、各ノード装置10からその実行結果を受信し、実行結果を全体結果フラグとして記憶部13に記憶していくが、その初期値として「成功」をセットする。
次に、制御部123は、現在時刻のタイムスタンプTwを取得する(S305)。この現在時刻のタイムスタンプTwは、例えば、制御部123がクライアント装置20からコンテンツの書き込み要求を受け付けた時刻である。
そして、制御部123は、ノードリストに示される各ノード装置10について、S308以降の処理を実行する(S306)。制御部123は、リクエスト送信部124により、ノードリストに示される各ノード装置10へ、S302で特定したバスケットIDに対応するコンテンツと、タイムスタンプTwとを送信する(S308)。つまり、制御部123は、リクエスト送信部124により、コンテンツの書き込み要求を送信する。そして、制御部123は、このコンテンツの書き込み要求に対し、当該コンテンツの書き込み(保存)に成功したか否かを判断する(S309)。つまり、制御部123は、データ受信部125により、このコンテンツを記憶するノード装置10から当該コンテンツの書き込みに成功した旨の応答を受信したか否かを判断する。
ここで、制御部123がコンテンツの書き込みに成功したとき(S309のYes)、ノードリストに示されるすべてのノード装置10に対し処理を実行したか否かを判断する(S310)。ここで、ノードリストに示されるノード装置10のうち、まだ処理を実行していないノード装置10があるとき(S310のNo)、S306へ戻り、残りのノード装置10に対し処理を実行する。また、S309で、制御部123がコンテンツの書き込みに失敗したとき(S309のNo)、全体結果フラグを「失敗」に書き換え(S312)、S313へ進む。
前記したS310の後、制御部123が、ノードリストに示されるすべてのノード装置10に対し処理を実行したと判断したとき(S310のYes)、全体結果フラグが「成功」であるか否かを判断する(S313)。つまり、制御部123は、ノードリストに示されるすべてのノード装置10へのコンテンツの書き込みが成功したか否かを判断する。ここで、制御部123が、全体結果フラグは「成功」であると判断したとき(S313のYes)、成功の応答をクライアント装置20へ返す(S314)。一方、制御部123が、全体結果フラグは「成功」ではないと判断したとき(S313のNo)、エラー(エラーメッセージ)をクライアント装置20へ返す(S315)。つまり、制御部123は、当該コンテンツを持つすべてのノード装置10へのコンテンツの書き込みを完了できなかったことをクライアント装置20へ通知する。
このようにすることで、クラスタ型ストレージシステムの各ノード装置10は、読み書き対象となるコンテンツを持つ各ノード装置10に対し、読み書き処理を実行し、その結果をクライアント装置20へ返すことができる。
なお、このクラスタ型ストレージシステムにおいて複数のノード装置10にコンテンツを冗長化して書き込む場合、以下のようにしてもよい。すなわち、その冗長化の定足数Qwとしたとき、そのQwの値を記憶部13に設定しておく。そして、ノード装置10の制御部123は、図8のS303で取得したノードリストに示されるノード装置10のうち、この定足数Qw個のノード装置10への書き込みが成功した時点で、そのノードリストの保存結果を「成功」として判断して、その後の処理を進めるようにしてもよい。なお、Qwの値は、冗長化したノード装置10の数と同じ数でもよいし、それ以下の数でもよい。
また、このようにしてノード装置10が、複数のノード装置10にコンテンツを冗長化して書き込んだ場合において、前記したコンテンツの読み出し処理においても定足数Qr(このQrは、冗長化したノード装置10の数以下の数)のノード装置10からコンテンツの読み出しに成功した時点で、このノードリストの取得コンテンツを決定し、その後の処理を進めるようにしてもよい。
このようにすることで、ノード装置10は必ずしもコンテンツ配置テーブル133における当該コンテンツの読み書き先であるすべてのノード装置10からの応答結果を受信しなくても、クライアント装置20へ応答を返すことができる。
また、前記した動作モード情報作成部128は、管理者等が入出力部11から入力した指示入力に基づき動作モード情報132を作成することとしたがこれに限定されない。例えば、ノード装置10は、既存のコンテンツ配置情報131を基に新たなコンテンツ配置情報131を作成したとき、この既存のコンテンツ配置情報131のリビジョン番号に、新たなコンテンツ配置情報131のリビジョン番号を加えた動作モード情報132を作成するようにしてもよい。このようにすることで動作モード情報132の作成の手間を軽減できる。
また、制御部123は、まず動作モード情報132を参照してコンテンツ配置テーブル133を作成し、この作成したコンテンツ配置テーブル133を参照して、当該コンテンツの読み書き先のノード装置10を決定することとしたが、これに限定されない。例えば、制御部123は、直接、動作モード情報132とコンテンツ配置情報131とを参照して、この動作モード情報132に示されるリビジョン番号を持つコンテンツ配置情報131を参照して、当該コンテンツの読み書き先のノード装置10を決定するようにしてもよい。
本実施の形態のクラスタ型ストレージシステムの概要を概念的に示した図である。 図1のノード装置の構成を示したブロック図である。 図2のコンテンツ配置テーブルの作成手順を概念的に示した図である。 図2のノード装置に新たなコンテンツ配置情報が追加されたときの処理手順を示した図である。 図1の配置制御情報を受信したノード装置の処理手順を示した図である。 (a)および(b)は、図1のノード装置における配置制御情報の伝播を概念的に示した図である。 図2のクライアント装置からのコンテンツの読み出し要求を受け付けたノード装置の処理手順を示した図である。 図2のクライアント装置からのコンテンツの書き込み要求を受け付けたノード装置の処理手順を示した図である。
符号の説明
10(10A,10B,10C) ノード装置
11 入出力部(入力部、出力部)
12 処理部
13 記憶部
20 クライアント装置
120 配置制御情報交換部
121 配置制御情報送信部
122 配置制御情報受信部
123 制御部
124 リクエスト送信部
125 データ受信部
126 配置情報作成部
127 リビジョン番号発行部
128 動作モード情報作成部
129 データ処理部
130 配置制御情報記憶部
131(131A,131B) コンテンツ配置情報
132(132A,132B,132C,132D) 動作モード情報
133 コンテンツ配置テーブル
134 コンテンツ記憶部
135 配置制御情報
1331,1332,1333 ノードリスト

Claims (8)

  1. データを記憶するとともに他のノード装置のデータの読み出しおよび書き込みを実行するノード装置を複数備えるクラスタ型ストレージシステムにおける前記ノード装置であって、
    前記読み出しまたは書き込みの対象となるデータの識別情報を含む前記データの処理要求の入力を受け付ける入力部と、
    前記データの識別情報ごとに、このデータを記憶する前記ノード装置の識別情報を示した配置情報と、当該ノード装置において参照すべき前記配置情報のリビジョン番号を示した動作モード情報とを記憶する配置情報記憶部と、
    前記配置情報記憶部に記憶された1以上の前記配置情報の中から、前記配置情報記憶部に記憶された動作モード情報に示されるリビジョン番号の配置情報を選択し、この選択した配置情報と前記入力されたデータの識別情報とを参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択する制御部と、
    前記選択したノード装置へ、前記識別情報に対応するデータの読み出し要求または書き込み要求を送信するリクエスト送信部と、
    前記ノード装置から送信された、前記読み出し対象のデータまたは前記書き込み結果を受信するデータ受信部と、
    前記データを記憶するノード装置を変更するため、前記入力部経由で、前記変更対象となるデータの識別情報および当該変更後のノード装置の識別情報の入力を受け付けたとき、前記データの識別情報と当該変更後のノード装置の識別情報を対応付けた前記配置情報を作成し、この作成した配置情報を前記配置情報記憶部に記憶する配置情報作成部と、
    前記作成された配置情報のリビジョン番号を発行し、前記発行したリビジョン番号を前記作成された配置情報に対応付けて前記配置情報記憶部に記憶するリビジョン番号発行部と、
    前記入力部経由で、前記動作モード情報に含める前記配置情報のリビジョン番号の入力を受け付け、前記入力されたリビジョン番号を示した前記動作モード情報を作成し、この作成した動作モード情報を前記配置情報記憶部に記憶する動作モード情報作成部と、
    前記作成された配置情報および動作モード情報を含む配置制御情報を、他の前記ノード装置へ送信する配置制御情報送信部と、
    他の前記ノード装置から送信された前記配置制御情報を受信したとき、この受信した配置制御情報に含まれる前記配置情報および前記動作モード情報を前記配置情報記憶部に記憶する配置制御情報受信部とを備え、
    前記制御部は、前記配置情報を選択するとき、前記受信した前記配置情報および前記動作モード情報を含む前記配置情報記憶部における前記動作モード情報を参照して、この配置情報記憶部に記憶された前記配置情報から、当該ノード装置において参照すべき1以上の配置情報を選択することを特徴とするノード装置。
  2. 前記制御部は、前記選択した配置情報が複数あり、このうち、同じデータの識別情報に対応するノード装置の識別情報の異なる配置情報があったとき、この配置情報それぞれにおける前記データの識別情報に対応するノード装置すべてを、当該データの読み出し先または書き込み先のノード装置として選択することを特徴とする請求項1に記載のノード装置。
  3. 前記制御部は、前記配置情報記憶部に記憶された配置情報から参照すべき配置情報を選択するとき、前記配置情報記憶部に記憶された動作モード情報すべてを参照して、前記配置情報を選択することを特徴とする請求項1または請求項2に記載のノード装置。
  4. 前記動作モード情報作成部は、前記入出力部経由で前記動作モード情報の親となる親動作モード情報の識別情報の入力を受け付けたとき、前記親動作モード情報の識別情報を含む動作モード情報を作成し、
    前記制御部は、前記配置情報記憶部に記憶された配置情報から参照すべき配置情報を選択するとき、前記受信した動作モード情報を含む前記配置制御情報記憶部の動作モード情報それぞれの親動作モード情報の識別情報を参照して、前記配置制御情報記憶部に記憶される動作モード情報の中から、この配置制御情報記憶部のいずれの動作モード情報の親動作モード情報になっていないすべての動作モード情報を参照して、前記配置情報を選択することを特徴とする請求項3に記載のノード装置。
  5. 前記ノード装置が記憶するデータは、このデータの更新日時を示すタイムスタンプの値を含み、
    前記データ受信部は、同じ識別情報のデータを複数の前記ノード装置から受信したとき、前記データのタイムスタンプの値を参照して、受信したデータのうち最新のデータを前記データの読み出し結果として選択することを特徴とする請求項1ないし請求項4のいずれか1項に記載のノード装置。
  6. 請求項1ないし請求項5のいずれか1項に記載のノード装置を複数含んでなることを特徴とするクラスタ型ストレージシステム。
  7. データを記憶するとともに他のノード装置のデータの読み出しおよび書き込みを実行するノード装置を複数備えるクラスタ型ストレージシステムにおいて、
    前記データの識別情報ごとに、このデータを記憶する前記ノード装置の識別情報を示した配置情報と、当該ノード装置において参照すべき前記配置情報のリビジョン番号を示した動作モード情報とを記憶する記憶部を備え、この記憶部に記憶される配置情報を参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択する前記ノード装置が、
    前記読み出しまたは書き込みの対象となるデータの識別情報を含む前記データの処理要求の入力を受け付けるステップと、
    前記記憶部に記憶された1以上の前記配置情報の中から、前記記憶部に記憶された動作モード情報に示されるリビジョン番号の配置情報を選択するステップと、
    この選択した配置情報と前記入力されたデータの識別情報とを参照して、前記データの読み出し先または書き込み先である前記ノード装置を選択するステップと、
    前記選択したノード装置へ、前記識別情報に対応するデータの読み出し要求または書き込み要求を送信するステップと、
    前記ノード装置から送信された、前記読み出し対象のデータまたは前記書き込み結果を受信するステップと、
    前記データを記憶するノード装置を変更するため、前記入力部経由で、前記変更対象となるデータの識別情報および当該変更後のノード装置の識別情報の入力を受け付けたとき、
    前記データの識別情報と当該変更後のノード装置の識別情報を対応付けた前記配置情報を作成し、この作成した配置情報を前記記憶部に記憶するステップと、
    前記作成された配置情報のリビジョン番号を発行し、前記発行したリビジョン番号を前記作成された配置情報に対応付けて前記記憶部に記憶するステップと、
    前記動作モード情報に含める前記配置情報のリビジョン番号の入力を受け付けたとき、前記入力されたリビジョン番号を示した前記動作モード情報を作成し、この作成した動作モード情報を前記配置情報記憶部に記憶するステップと、
    前記作成された配置情報および前記作成された動作モード情報を示した配置制御情報を、他の前記ノード装置へ送信するステップと、
    他の前記ノード装置から送信された前記配置制御情報を受信したとき、
    この受信した配置制御情報に含まれる前記配置情報および前記動作モード情報を前記記憶部に記憶するステップとを実行し、
    前記配置情報を選択するステップにおいて、
    前記受信した前記配置情報および前記動作モード情報を記憶した前記記憶部における前記動作モード情報を参照して、この記憶部に記憶された前記配置情報から、当該ノード装置において参照すべき配置情報を選択することを特徴とするデータ制御方法。
  8. 請求項7に記載のデータ制御方法をコンピュータである前記ノード装置に実行させるためのデータ制御プログラム。
JP2008141749A 2008-05-29 2008-05-29 クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム Pending JP2009289089A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008141749A JP2009289089A (ja) 2008-05-29 2008-05-29 クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008141749A JP2009289089A (ja) 2008-05-29 2008-05-29 クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム

Publications (1)

Publication Number Publication Date
JP2009289089A true JP2009289089A (ja) 2009-12-10

Family

ID=41458238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008141749A Pending JP2009289089A (ja) 2008-05-29 2008-05-29 クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム

Country Status (1)

Country Link
JP (1) JP2009289089A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078097A1 (ja) 2009-12-21 2011-06-30 日本電気株式会社 複合条件判定ユニット、伝送装置、複合条件判定方法
JP2016173826A (ja) * 2012-11-08 2016-09-29 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. コンシステントハッシュ法を用いたネームスペースのための方法およびシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078097A1 (ja) 2009-12-21 2011-06-30 日本電気株式会社 複合条件判定ユニット、伝送装置、複合条件判定方法
JP2016173826A (ja) * 2012-11-08 2016-09-29 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. コンシステントハッシュ法を用いたネームスペースのための方法およびシステム

Similar Documents

Publication Publication Date Title
KR101905198B1 (ko) 분산 데이터 스토리지
JP4696089B2 (ja) 分散ストレージシステム
JP4275683B2 (ja) オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
JP5092234B2 (ja) 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
US7778975B2 (en) Mirroring method, mirroring device, and computer product
JP5682996B2 (ja) クライアントプログラム、端末、サーバ装置、サーバプログラム、システムおよび方法
US20080201428A1 (en) Method for Operating a Fixed Prefix Peer to Peer Network
CN106605217B (zh) 用于将应用从一个站点移动到另一站点的方法和***
JP2009223780A (ja) データ複製方法及びデータ複製システム
CN109714430A (zh) 分布式缓存方法、装置、计算机***及存储介质
JP2008524682A (ja) 均質化されたリソース・プールに対するコンピュータの迅速なプロビジョニング
JP5907419B2 (ja) 分散処理システム、分散処理方法および分散処理プログラム
US8019729B2 (en) System and method for updating file
KR20080050276A (ko) 객체 기반 분산 공유 시스템 및 그의 방법
JP4971717B2 (ja) ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
JP2009289089A (ja) クラスタ型ストレージシステム、そのノード装置、データ制御方法およびそのプログラム
JP2009289161A (ja) クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム
JP2009251756A (ja) クライアント装置、分散ファイルシステム、共有リソース多重化方法およびプログラム
CN109992447B (zh) 数据复制方法、装置及存储介质
JP2009193502A (ja) 計算機システム、ストレージ装置、及び、処理代替方法
JP2007317107A (ja) 情報処理システム、及び情報処理装置、並びに制御プログラム
JP2007219809A (ja) データ記憶システム、データ記憶方法、データ記憶プログラム
JP2021149461A (ja) 情報処理装置、情報処理システム、及びプログラム
JP5812512B2 (ja) データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム
JP5608551B2 (ja) 仮想マシンシステム、及びその制御方法