JP2009289161A - クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム - Google Patents

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

Info

Publication number
JP2009289161A
JP2009289161A JP2008143046A JP2008143046A JP2009289161A JP 2009289161 A JP2009289161 A JP 2009289161A JP 2008143046 A JP2008143046 A JP 2008143046A JP 2008143046 A JP2008143046 A JP 2008143046A JP 2009289161 A JP2009289161 A JP 2009289161A
Authority
JP
Japan
Prior art keywords
identification information
data
information
node device
node
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
JP2008143046A
Other languages
English (en)
Inventor
Shin Kobayashi
心 小林
Shunichi Ichikawa
俊一 市川
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 JP2008143046A priority Critical patent/JP2009289161A/ja
Publication of JP2009289161A publication Critical patent/JP2009289161A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】複数のデバイスにコンテンツを冗長化して保存するクラスタ型ストレージシステムにおいて、コンテンツの保存先であるデバイスの組み合わせを、任意の組み合わせにできるようにする。
【解決手段】コンテンツを複数のデバイス110に冗長化して保存するクラスタ型ストレージシステムのノード装置100において、データの書き込み先となるデバイスを決定するときに参照する配置情報131を、対象となるコンテンツのコンテンツキー(K)を用いて計算したハッシュ値を用いてバスケットIDを作成する。そして、配置情報131において、このバスケットIDに対応するデバイスIDとして、このコンテンツを保存する複数のデバイス110のデバイスIDを設定できるようにした。
【選択図】図1

Description

本発明は、クラスタ型ストレージシステムに関する。
従来から、分散した複数のデバイスにデータを保存するクラスタ型ストレージシステムがある。このクラスタ型ストレージシステムによれば、デバイスの追加によって、スループット、単位時間あたりのI/O数、データ保存容量を柔軟に向上させることができるという、拡張性(スケーラビリティ)を有している。
このクラスタ型ストレージシステムとして、Amazon社が開発したDynamoがある(非特許文献1参照)。このDynamoは、分散ハッシュテーブル(DHT:Distributed Hash Table)を使用し、Key-Valueペアでデータ(コンテンツ)の書き込み先を管理するストレージシステムである。また、このKey-Valueペアとは、コンテンツを保存するときコンテンツキーを付与して保存する方式であり、システムがコンテンツを読み出すときは、コンテンツキーを指定して読み出す。Dynamoでは、DHT空間の均等分割、仮想ノードの導入等により、ノード装置間(デバイス間)の負荷分散を行っている。このDynamoでは、ハッシュ関数HにコンテンツキーKを代入して計算したハッシュ値H(K)によって、コンテンツを保存するデバイスを決定する。ここで、コンテンツを冗長化して保存する場合は、DHT空間上、隣接するデバイス群にコンテンツを複製して保存する。
Dynamo、[online]、[平成20年5月9日検索]、インターネット、<URL: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html >
しかし、非特許文献1の記載によると、Dynamoで30分間の各ノード装置の平均負荷を計測したところ、負荷が平均値の15%になったノード装置の数が、全ノード数の10%〜20%存在する。このような負荷の偏りが生じる原因は様々なものが考えられるが、例えばアプリケーションによる特定のキーのコンテンツに対する集中的なアクセスが挙げられる。具体例を挙げると、コンテンツC1が、DHT空間上隣接する3つのデバイスD1,D2,D3に保存され、別のコンテンツC2が、DHT空間上隣接する3つのデバイスD2,D3,D4に保存されるシステムを考える。このシステムの場合、コンテンツC1,C2に頻繁にアクセスするアプリケーションが出現すると、デバイスD2,D3の負荷が特に高くなり、システム内のデバイス間(ノード装置間)に負荷の偏りが生じるという問題がある。ここで、Dynamoでは冗長化されるデバイスの組み合わせはDHT空間上隣接するデバイスと決められている。よって、負荷の偏りを解消するため、コンテンツを冗長化して保存するデバイスの組み合わせを任意の組み合わせに変更することはできない。
本発明は、前記した問題を解決し、複数のデバイスにコンテンツを冗長化して保存するクラスタ型ストレージシステムにおいて、コンテンツの保存先であるデバイスの組み合わせを、任意の組み合わせにできるようにすることを目的とする。
前記した課題を解決するため請求項1に記載の発明は、データの読み出しおよび書き込みを行うノード装置を複数備え、前記ノード装置の収容する複数のデバイスに前記データを冗長化して記憶するクラスタ型ストレージシステムにおける前記ノード装置であって、
前記データの識別情報であるコンテンツキーのハッシュ値を基に得られた識別情報であるバスケットIDごとに、当該データを記憶する複数の前記デバイスの識別情報を示した配置情報と、前記デバイスの識別情報ごとに、前記デバイスを収容するノード装置の識別情報を示したアドレス情報とを記憶する記憶部と、前記読み出しまたは書き込みの対象となるデータのコンテンツキーを含む、前記データの書き読み要求または読み出し要求の入力を受け付ける入力部と、前記コンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算するハッシュ計算部と、前記計算されたバスケットIDをキーとして、前記配置情報から、前記バスケットIDに対応する前記デバイスの識別情報を検索し、この検索した前記デバイスの識別情報と、前記アドレス情報とを参照して、前記検索した識別情報に対応するデバイスを収容するノード装置の識別情報を特定し、前記特定した識別情報のノード装置へ、当該デバイスへの前記コンテンツキーに対応するデータの読み出し要求または書き込み要求を送信するルーチング部と、前記ノード装置から前記データの読み出し要求または書き込み要求の結果を受信するデータ受信部とを備えることを特徴とする。
請求項8に記載の発明は、データの読み出しおよび書き込みを行うノード装置を複数備え、前記ノード装置の収容する複数のデバイスに前記データを冗長化して記憶するクラスタ型ストレージシステムにおいて、前記データの識別情報であるコンテンツキーのハッシュ値を基に得られた識別情報であるバスケットIDごとに、当該データを記憶する複数の前記デバイスの識別情報を示した配置情報と、前記デバイスの識別情報ごとに、前記デバイスを収容するノード装置の識別情報を示したアドレス情報とを記憶する記憶部を備える前記ノード装置が、前記読み出しまたは書き込みの対象となるデータのコンテンツキーを含む、前記データの書き読み要求または読み出し要求の入力を受け付けるステップと、前記コンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算するステップと、前記計算されたバスケットIDをキーとして、前記配置情報から、前記バスケットIDに対応する前記デバイスの識別情報を検索するステップと、この検索した前記デバイスの識別情報と、前記アドレス情報とを参照して、前記検索した識別情報に対応するデバイスを収容するノード装置の識別情報を特定するステップと、前記特定した識別情報のノード装置へ、当該デバイスへの前記コンテンツキーに対応するデータの読み出し要求または書き込み要求を送信するステップと、前記ノード装置から前記データの読み出し要求または書き込み要求の結果を受信するステップとを実行することを特徴とするデータの読み出しおよび書き込み制御方法である。
このようにすることで、クラスタ型ストレージシステム(以下、システムと略す)のノード装置は、冗長化するデバイスの識別情報を明示した配置情報を用いて、データの書き込み先(または読み出し先)となるデバイスを決定する。よって、システムの管理者等がこの配置情報を設定することで、各ノード装置が決定するデータの書き込み先(または読み出し先)となるデバイスを自由に設定できる。
請求項2に記載の発明は、請求項1に記載のノード装置が前記入力部経由で、前記データのコンテンツキーと、当該データの記憶先となる複数の前記デバイスの識別情報とを含む前記配置情報の設定情報の入力を受け付けたとき、前記ハッシュ計算部は、前記設定情報に含まれるコンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算し、前記ノード装置は、前記計算されたバスケットIDと、前記設定情報に含まれる前記複数の前記デバイスの識別情報とを対応付けた前記配置情報を作成する配置情報管理部を備えることを特徴とする。
このようにすることで、システムの管理者等は、各ノード装置が決定するデータの書き込み先(または読み出し先)となるデバイスを自由に設定できる。
請求項3に記載の発明は、請求項2に記載のノード装置において、前記データの記憶先となるデバイスを変更するため、前記入力部経由で、前記変更対象となるデータのコンテンツキーと、当該データの新たな記憶先となるデバイスの識別情報とを含む変更情報の入力を受け付けたとき、前記配置情報管理部は、前記ハッシュ計算部により計算された前記変更対象となるデータのコンテンツキーに対応するバスケットIDをキーとして、前記配置情報から、当該バスケットIDに対応する前記デバイスの識別情報を検索し、前記配置情報における、当該検索したデバイスの識別情報を、前記新たな記憶先となるデバイスの識別情報に変更し、前記ルーチング部は、前記デバイスの識別情報を検索するとき、前記変更した配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする。
請求項9に記載の発明は、請求項8のデータの読み出しおよび書き込み制御方法において、前記ノード装置が、前記データの記憶先となるデバイスを変更するため、前記変更対象となるデータのコンテンツキーと、当該データの新たな記憶先となるデバイスの識別情報とを含む変更情報の入力を受け付けたとき、前記変更対象となるデータのコンテンツキーに対応するバスケットIDを計算するステップと、前記計算されたバスケットIDをキーとして、前記配置情報から、当該バスケットIDに対応する前記デバイスの識別情報を検索するステップと、前記配置情報における、当該検索したデバイスの識別情報を、前記新たな記憶先となるデバイスの識別情報に変更するステップとを実行し、前記デバイスの識別情報を検索するとき、前記変更した配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする。
このようにすることで、例えば、システム内の処理負荷の偏りの解消のため、管理者等が処理負荷の大きいノードのデバイスに記憶されているデータを、比較的処理負荷の小さいノードのデバイスへ移行した場合、この配置情報に、当該データの記憶先としてこの移行先のデバイスに設定しておけば、データ移行後、ノード装置にこの移行先のデバイスに対し読み出し処理や書き込み処理を実行させることができる。
請求項4に記載の発明は、請求項1ないし請求項3のいずれか1項に記載のノード装置において、他の前記ノード装置から前記データの読み出し要求または書き込み要求を受信したとき、自身の前記ノード装置の備えるデバイスに記憶される前記データに対し、前記読み出しまたは書き込み処理を実行し、その実行結果を、前記データの読み出し要求または書き込み要求の送信元であるノード装置へ送信するデータ送信部を備えることを特徴とする。
このようにすることで、他のノード装置からデータの読み出し要求または書き込み要求を受信した場合でも、この要求に応じた処理を実行し、その実行結果を相手方のノード装置へ返すことができる。
請求項5に記載の発明は、請求項2ないし請求項4のいずれか1項に記載のノード装置の前記配置情報管理部が、前記記憶部における前記配置情報が変更されたとき、前記クラスタ型ストレージシステム内の他のノード装置へ、前記変更後の配置情報を送信し、他のノード装置から、変更後の配置情報を受信したとき、前記変更後の配置情報を前記記憶部に記憶し、前記ルーチング部は、前記デバイスの識別情報を検索するとき、前記変更後配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする。
このようにすることで、システムのいずれかのノード装置で配置情報が変更されたとき、各ノード装置がそれぞれ、この変更された配置情報に基づきデータの読み出し先または書き込み先を決定できる。
請求項6に記載の発明は、請求項1ないし請求項5のいずれか1項に記載のノード装置を複数備えることを特徴とするクラスタ型ストレージシステムとした。
このようにすることで、請求項1ないし請求項5のいずれか1項に記載のノード装置によりクラスタ型ストレージシステムを実現できる。
請求項7に記載の発明は、請求項6に記載のクラスタ型ストレージシステムが、前記前記クラスタ型ストレージシステム内の前記ノード装置それぞれにおける処理負荷を監視する監視装置をさらに備え、前記監視装置において、前記ノード装置間の処理負荷の偏りを検出したとき、前記ノード装置は、前記配置情報において、前記処理負荷が比較的高い前記ノード装置に収容されるデバイスの識別情報に対応するバスケットIDについて、このバスケットIDに対応するデバイスの識別情報を、前記処理負荷が比較的低い前記ノード装置に収容されるデバイスの識別情報へ変更することを特徴とする。
このようにすることで、システムのノード装置間に処理負荷の偏りが生じた場合、ノード装置が自動で配置情報の変更を行うことができる。よってシステムのノード装置間に処理負荷の偏りが生じた場合の配置情報の変更の手間を軽減できる。
請求項10に記載の発明は、請求項8または請求項9に記載のデータの読み出しおよび書き込み制御方法を、コンピュータである前記ノード装置に実行させるためのプログラムである。
このようなプログラムによれば、一般的なコンピュータに請求項8または請求項9に記載のデータの読み出しおよび書き込み制御方法を実行させることができる。
本発明によれば、複数のデバイスにコンテンツを冗長化して保存するクラスタ型ストレージシステム(システム)において、コンテンツの保存(記憶)先であるデバイスの組み合わせを管理者等が任意に設定可能となる。よって、デバイス間に負荷の偏りが発生したとき、その負荷の偏りの軽減のため、コンテンツの記憶先であるデバイスの変更を行いやすくなる。また、システムの運用環境に合わせて、当該コンテンツの保存先であるデバイスの組み合わせをシステムの管理者等が任意に設定できるので、システムのアベイラビリティを向上させることができる。
以下、本発明を実施するための最良の形態(以下、実施の形態という)について説明する。
≪概要≫
まず、図1を用いて本実施の形態のクラスタ型ストレージシステムの概要を説明する。図1は、本実施の形態のクラスタ型ストレージシステムの構成例を示した図である。
図1に示すように、クラスタ型ストレージシステム(以下、システムと略す)は複数のノード装置100(100A,100B,100C,100D)を含んで構成される。ここでは、同じコンテンツキー(コンテンツの識別情報)に対応するコンテンツが、3つのデバイス110(110C,110E,110G)に冗長化されて保存されている場合を例に説明する。ここでは、この3つのデバイス110(110C,110E,110G)は、それぞれノード装置100B,100C,100D内のデバイス110であるものとする。
クライアント装置20は、システムにアクセスするためのアプリケーションを備える端末装置である。各ノード装置100は、このクライアント装置20からのアクセスを受け付けると、このクライアント装置20からデータ(コンテンツ)の読み出し要求または書き込み要求に基づき、所定のノード装置100に対しコンテンツの読み出しまたは書き込みを行う。
このようなクラスタ型ストレージシステムにおいて、各ノード装置100はそれぞれ、当該コンテンツの記憶先を示した配置情報131と、デバイス110が収容されるノード装置100のIPアドレス等の識別情報を示したアドレス情報132とを備える。なお、この配置情報131が更新されたとき、この更新された配置情報131は、ノード装置100は、他の各ノード装置100へこの更新された配置情報131を送信する。そして、各ノード装置100はこの更新後の配置情報131を基に当該コンテンツの読み出し先または書き込み先となるデバイス110を決定する。
例えば、ノード装置100Aが、クライアント装置20から、コンテンツキー(K)を指定した読み書き要求(コンテンツの読み出し要求または書き込み要求)を受け付けると、このコンテンツキー(K)をハッシュ関数Hに代入してバスケットID(例えば、「1」)を計算する。そして、ノード装置100Aは、この計算したバスケットID(例えば、「1」)をキーとして、この配置情報131から、このバスケットIDに対応するデバイスID(例えば、「110C,110E,110G」)を検索する。また、ノード装置100Aは、アドレス情報132を参照して、この検索したデバイスIDに対応するデバイス110を収容するノード装置100のノードID(ノード装置100のIPアドレス等)を特定する。そして、この特定したノード装置100のデバイス110それぞれに対し当該コンテンツの読み書き要求を送信する。そして、ノード装置100Aは、ノード装置100B,100C,100Dから、その読み書き要求に対する実行結果を受信すると、この実行結果をクライアント装置20へ返す。
ここで、各ノード装置100の備える配置情報131は、図1に例示するようにバスケットIDごとに、このバスケットIDに対応する1以上のデバイスID(デバイス110の識別情報)を示した情報である。このバスケットIDは、前記したコンテンツキー(K)をハッシュ関数Hに代入して得られた値、H(K)である。なお、このようなハッシュ関数を用いてバスケットIDを決めるのは、システム内のバスケット間で負荷の偏りがないようにするためである。
なお、本実施の形態の配置情報131のバスケットIDに対応するデバイスID群は、入出力部11経由の指示入力により設定可能である。つまり、従来のクラスタ型ストレージシステムにおいて、コンテンツを複数のデバイスに冗長化して保存する場合、そのデバイスの組み合わせはDHT空間上隣接するデバイスとしかできなかった。しかし、本システムのノード装置100によれば、コンテンツを複数のデバイスに冗長化して保存する場合、このデバイスの組み合わせは管理者等が任意に設定可能である。よって、システム内のデバイス間でデータの移行等が行いやすくなる。
≪構成≫
引き続き図1を用いて、ノード装置100の構成を説明する。図1に示すようにノード装置100は、1以上のデバイス110と、コンテンツ管理部10とを備える。このデバイス110は、前記したコンテンツキー(K)およびバスケットIDごとにコンテンツを記憶する。このデバイス110は、例えばHDD(Hard Disk Drive)等により実現される。また、コンテンツ管理部10は、クライアント装置20からコンテンツの読み出し要求または書き込み要求(以下、適宜「読み書き要求」と略す)を受け付けたとき、配置情報131を参照して、このコンテンツが保存されるデバイス110を検索する。この検索したデバイス110に対し、当該コンテンツの読み書き処理(読み出し処理または書き込み処理)を実行する。また、コンテンツ管理部10は、クライアント装置20等からの設定指示に基づき配置情報131の更新や作成を行ったり、この配置情報131を他のノード装置100との間で交換したりする。
このようなコンテンツ管理部10は、入出力部11と、処理部12と、記憶部13とを備える。
入出力部11は、他のノード装置100やクライアント装置20との間の通信を行うための通信インタフェースから構成される。また、処理部12は、このノード装置100が備えるCPU(Central Processing Unit)によるプログラム実行処理により実現される。さらに、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、記憶部13には、このノード装置100の機能を実現するためのプログラムが格納される。
入出力部(入力部および出力部)11は、コンテンツキーを含むコンテンツの読み書き要求の入力を受け付けたり、配置情報131の設定指示の入力を受け付けたりする。また、他のノード装置100との間でコンテンツの送受信や、読み書き処理の結果の送受信を行ったりする。
処理部12は、ノード装置100のデバイス110に対し読み書き処理を実行したり、配置情報131を作成したりする。このような処理部12は、ハッシュ計算部121と、配置情報管理部122と、アドレス情報管理部123と、ルーチング部124と、データ受信部125と、データ送信部126とを含んで構成される。
ハッシュ計算部121は、コンテンツキー(K)をハッシュ関数Hに代入して、ハッシュ値H(K)を計算する。
配置情報管理部122は、入出力部11からの設定入力に基づき新規に配置情報131を作成したり、既存の配置情報131の内容を変更したりする。例えば、新規に配置情報131を作成するとき、配置情報管理部122は、コンテンツのコンテンツキーと、このコンテンツを冗長化して保存する複数のデバイス110のデバイスIDとを含む設定入力を受け付けたとき、ハッシュ計算部121は、このコンテンツキーのハッシュ値を基にバスケットIDを計算する。そして、配置情報管理部122は、このバスケットIDと、この設定入力に含まれるデバイスIDとを対応付けて配置情報131を作成する。また、この配置情報管理部122は、既存の配置情報131の内容を変更するときには以下のようにする。まず、配置情報管理部122は、変更対象となるコンテンツのコンテンツキーと、このコンテンツの新たな記憶先となるデバイス110のデバイスIDとを含む変更情報の入力を受け付けると、ハッシュ計算部121は、このコンテンツのコンテンツキーに対応するバスケットIDを計算する。そして、配置情報管理部122は、このバスケットIDをキーとして、配置情報131から、当該バスケットIDに対応するデバイスIDを検索する。そして、このデバイスIDに対応するデバイス110を、新たな記憶先となるデバイス110のデバイスIDに書き換える。さらに、この配置情報管理部122は、自身のノード装置100で作成した配置情報131を他のノード装置100へ送信したり、他のノード装置100から配置情報131を受信したりする。つまり、ノード装置100間での配置情報131の交換を行う。なお、作成または更新された配置情報131や、他のノード装置100から受信した配置情報131は、記憶部13に記憶される。
アドレス情報管理部123は、入出力部11からの入力に基づきアドレス情報132の内容を更新する。
ルーチング部124は、入出力部11経由で、クライアント装置20から処理対象のコンテンツのコンテンツキー(K)を含むコンテンツの読み書き要求の入力を受け付けたとき、ハッシュ計算部121によりこのコンテンツキーのハッシュ値H(K)を計算する。そして、このハッシュ値H(K)から、このコンテンツキー(K)に対応するバスケットIDを求める。ここでは、ハッシュ値H(K)をそのままバスケットIDとして用いる場合を例に説明する。
ルーチング部124は、配置情報131からこのバスケットIDに対応するデバイスIDを検索する。そして、ルーチング部124は、このデバイスIDに対応するデバイス110を収容するノード装置100のノードIDをアドレス情報132から検索する。そして、ルーチング部124は、検索したノードIDに対応するノード装置100へ、当該デバイスIDに対応するデバイス110に記憶されるコンテンツの読み書き要求を送信する。なお、このルーチング部122は、記憶部13の配置情報131が変更されたとき、この変更された配置情報131を参照してデバイスIDを検索する。
また、このルーチング部124が送信する読み出し要求は、コンテンツの読み出し先であるデバイス110のデバイスID、バスケットID、コンテンツキー(K)等を含む。また、書き込み要求は、コンテンツの書き込み先であるデバイス110のデバイスID、バスケットID、コンテンツキー(K)に加え、書き込み内容であるデータと、クライアント装置20からこの書き込み要求を受信した時刻であるタイムスタンプとを含む。このタイムスタンプは、例えば「20070501100015(2007年5月1日10時00分15秒)」等である。
データ受信部125は、他のノード装置100からコンテンツの読み書き要求の応答を受信する。受信した応答は、記憶部13のRAM等に記憶しておく。
データ送信部126は、他のノード装置100からコンテンツの読み書き要求を受信したとき、デバイス110に記憶される当該コンテンツの読み出し処理または書き込み処理を実行する。そして、その処理結果を、この読み書き要求の送信元であるノード装置100へ返す。
なお、このコンテンツの読み書き要求の送信およびその要求結果(応答結果やコンテンツ等を含む)に用いられるプロトコルは、例えば、HTTP(HyperText Transfer Protocol)またはHTTPに相当するデータ通信プロトコルを用いる。
記憶部13は、配置情報131と、アドレス情報132とを記憶する。
配置情報131は、前記したとおり、バスケットIDごとに、このバスケットIDに対応するコンテンツを記憶するデバイス110のデバイスIDを示した情報である。例えば、図1に例示するシステムにおいて、バスケットID「1」に対応するコンテンツを、デバイス110C,110E,110Gに冗長化して保存し、バスケットID「2」に対応するコンテンツを、デバイス110D,110F,110Hに冗長化して保存する場合、配置情報131のバスケットID「1」に対応するデバイスIDとして「110C,110E,110G」を設定しておく。また、この配置情報131のバスケットID「2」に対応するデバイスIDとして「110D,110F,110H」を設定しておく。
アドレス情報132は、デバイスIDごとに、そのデバイスIDに対応するデバイス110を収容するノード装置100のノードIDを示した情報である。なお、このノードIDは、IPアドレスとポート番号との組み合わせで記述するようにしてもよい。
なお、図1において、コンテンツ管理部10とデバイス110とは同じノード装置100内に含まれるものとして説明したが、これらを別個の装置として実現するようにしてもよい。
≪処理手順≫
次に、図1を参照しつつ、図2を用いてノード装置100の処理手順を説明する。図2は、図1のノード装置が他のノード装置へコンテンツの読み書き要求を送信する手順を示した図である。ここでは、クライアント装置20からのコンテンツの読み書き要求を受け付けたノード装置100Aが、このコンテンツを保存するデバイス110C,110E,110Gへ当該コンテンツの読み書き要求を送信する場合を例に説明する。
まず、ノード装置100Aのルーチング部124(図1参照)は、クライアント装置20からコンテンツの読み出し要求または書き込み要求(読み書き要求)を受信する(S101)。なお、読み出し要求は、読み出し対象であるコンテンツのコンテンツキー(K)を含む。書き込み要求は、書き込み対象であるコンテンツのコンテンツキー(K)と、書き込み内容を示すデータとを含む。
ノード装置100Aのハッシュ計算部121(図1参照)は、受信したコンテンツキー(K)を基にバスケットIDを計算する(S102)。そして、ルーチング部124は、この計算したバスケットIDと配置情報131とを参照して、このコンテンツの書き込み先であるデバイス110C,110E,110GのデバイスIDを検索する(S103)。次に、ルーチング部124は、検索したデバイスIDをキーとしてアドレス情報132から、このデバイスIDに対応するデバイス110(デバイス110C,110E,110G)を収容するノード装置100(ノード装置100B,100C,100D)のアドレス(ノードID)を検索する(S104)。
そして、ルーチング部124は、この検索したアドレスを基に、このコンテンツの書き込み先であるデバイス110C,110E,110Gを収容するノード装置100B,100C,100Dへ、当該コンテンツの読み出し要求または書き込み要求(読み書き要求)を送信する(S105)。なお、ここで送信する読み出し要求は、前記したとおり、デバイスID、バスケットID、コンテンツキー(K)を含むものである。また、書き込み要求は、デバイスID、バスケットID、コンテンツキー(K)、書き込み内容を示すデータに加え、この書き込み要求を受け付けた日時を示すタイムスタンプを含む。
次に、図1を参照しつつ、図3を用いて、図2に示す手順によりコンテンツの読み書き要求を送信したノード装置100Aが、クライアント装置20へその読み書き要求の応答を返すときの処理手順を説明する。図3(a)は、図1のノード装置が、コンテンツの読み書き要求に対する応答をクライアント装置へ送信する手順を示した図であり、図3(b)は、(a)におけるS202の処理を概念的に示した図である。
図2においてノード装置100Aからコンテンツの読み出し要求または書き込み要求(読み書き要求)を受信したノード装置100B,100C,100Dは、データ送信部126(図1参照)により、このコンテンツの読み出し要求または書き込み要求(読み書き要求)に対する応答をノード装置100Aへ送信する(S201)。
そして、ノード装置100Aのデータ受信部125は、ノード装置100B,100C,100Dから、この読み出し要求または書き込み要求(読み書き要求)に対する応答を受信する。ここで、ルーチング部124には、データ受信部125で受信した応答の数が所定の定足数を充足したと判断したとき(S202)、この受信した応答をクライアント装置20へ返す。なお、図3(a)に示すように読み出し要求に対する応答および書き込み要求に対する応答は、それぞれ当該要求に基づく処理の結果(処理の成功または失敗)を示したものである。なお、読み出し処理に成功した場合、その応答には、読み出したコンテンツが含まれる。
このようにすることで、例えば、当該コンテンツを記憶するノード装置100の数が多数であった場合でも、そのノード装置100すべてから応答を待たずにクライアント装置20へ応答を返すことができる。
ここで、図3(b)を用いてS202における定足数充足の判断処理を、具体例を用いて説明する。ここでは、読み出し要求または書き込み要求(読み書き要求)を送信したノード装置100の数が「4」であり、定足数を「2」とした場合を例に説明する。
例えば、書き込み要求の場合、ノード装置100から、他のノード装置100へ書き込み要求を送信し、この要求に対する結果OK(成功)の受信数が「2」に達したとき、この時点でノード装置100はクライアント装置20へOKを返送する(例1、例2参照)。つまり、受信した応答の中に結果NGが含まれていた場合、この結果NGの応答はカウントせず、結果OKの応答の受信数が「2」に達した時点でノード装置100はクライアント装置20へOKを返送する(例2参照)。そして、今まで受信した書き込み要求に対する応答をクライアント装置20へ送信する。このように結果OKの応答の受信数が「2」に達した後、ノード装置100が応答を受信しても、その応答については無視する。なお、この書き込み要求に関する定足数は、冗長化されたデバイス110の数そのものでもよいし、冗長化されたデバイス110よりも少ない数であってもよい。
また、読み出し要求の場合、ノード装置100から、他のノード装置100へ読み出し要求を送信し、最新のタイムスタンプ(例えば「Time=3」)を持つコンテンツの受信数が「2」に達した時点でノード装置100はクライアント装置20へOKを返送する(例3、例4参照)。つまり、(1)受信した応答の中に結果NGのものが含まれていた場合、および、(2)タイムスタンプの値が最新のものではないコンテンツ(例えば「Time=2」)が含まれていた場合(例4参照)、この応答はカウントしない。そして、この最新のタイムスタンプを持つコンテンツの受信数が「2」に達した時点で、ノード装置100はクライアント装置20へOKを返送する。そして、今まで受信したコンテンツをクライアント装置20へ送信する。ここで、結果OKの応答の受信数が「2」に達した後、ノード装置100が受信した応答については、ノード装置100はこの応答をクライアント装置20へ返さない。なお、ノード装置100において最新のコンテンツの受信数が「2」に達する前にコンテンツ受信処理が終了した場合、受信した分のコンテンツをクライアント装置20へ返すようにしてもよい。
≪具体例≫
次に、図4を用いて、クラスタ型ストレージシステムのノード装置100に負荷の集中が起こった場合における、配置情報131の書き換えについて、具体例を用いて説明する。図4(a)は、本実施の形態のクラスタ型ストレージシステムにおいて各ノード装置の収容するデバイスおよび各ノード装置における負荷の相対比率を例示した図である。図4(b)は、書き換え前の配置情報と、書き換え後の配置情報とを例示した図である。
ここでは、クラスタ型ストレージシステムにおいてデータセンタA,B,Cがそれぞれ図4に示すようなデバイスを収容するノード装置100(100A〜100L)を備えている場合を例に説明する。このときの各ノード装置100の配置情報131の内容は、図4(b)の配置情報131Aに示すとおりである。各ノード装置100の左に付記された数値は、このクラスタ型ストレージシステムの各ノード装置100における負荷の相対的比率を示す。このようなクラスタ型ストレージシステムにおいて、ノード装置100C,100G,100Kの負荷が比較的高く(負荷の相対的比率「2」)、ノード装置100D,100H,100Lの負荷が比較的低く(相対的比率「0.67」)なったとする。
このような状態において、ノード装置100間の負荷の偏りを解消するためには、図4(a)のノード装置100C,100G,100Kの負荷を従来の1/2倍とし、ノード装置100D,100H,100Lの負荷を従来の3/2倍とすればよい。そのためには、例えば、バスケットID「12,13」に対応するコンテンツの書き込み先を、それぞれデバイス041,141,241およびデバイス042,142,242に変更すればよい。このような変更に伴い、配置情報管理部122は、管理者等の指示入力に基づき、配置情報131Bを作成する。この配置情報131Bは、配置情報131AにおけるバスケットID「12,13」のコンテンツの書き込み先をノード装置100C,100G,100Kから、ノード装置100C,100G,100Kに書き換えたものである。そして、この書き換え後の配置情報131Bは各ノード装置100へ伝播し、当該バスケットIDに対応するコンテンツに対する読み書き処理は、配置情報131Bに示されるノード装置100に対し行われるようになる。
このようにすることで、各ノード装置100に冗長化してコンテンツを保存するシステムにおいて特定のノード装置100(またはデバイス110)に負荷が集中した場合、その負荷の集中を解消するように配置情報131を書き換えることができる。
また、このような場合以外にも、配置情報131の各バスケット(バスケットID)に対応するデバイスIDは、管理者等が書き換え可能である。よって、コンテンツを冗長化して保存するデバイス110の組み合わせをシステムの運用環境に合わせて、DHT空間上で自由に選択することができる。
なお、システム内に、ノード装置100それぞれにおける処理負荷を監視する監視装置を設けてもよい。そして、この監視装置において、ノード装置100間の処理負荷の偏りを検出したとき、この処理負荷の値をノード装置100へ送信する。そして、ノード装置100は、この処理負荷の値を参照して、配置情報131において、処理負荷が比較的高いノード装置100に対応するバスケットの数を低減し、処理負荷が比較的低いノード装置100に対応するバスケットの数を増加させるようにしてもよい。例えば、ノード装置100は、配置情報131において、処理負荷が比較的高いノード装置100のデバイス110に対応するバスケットIDについて、このバスケットIDに対応するデバイス110を、処理負荷が比較的低いノード装置100のデバイス110へ変更するようにしてもよい。
また、前記した配置情報131に用いられるバスケットIDは、コンテンツキー(K)のハッシュ値H(K)としたが、これに限定されない。例えば、管理者等が用意しておきたいバスケット数よりも充分多い種類のハッシュ値が得られるハッシュ関数H’によりハッシュ値H’(K)を得て、そのマスク値をバスケットIDとしてもよい。従って、バスケット数が216個必要である場合、232種類のハッシュ値が得られるハッシュ関数CRC32によってコンテンツキー(K)のハッシュ値を得て、その下位16ビットのマスク値をバスケットIDとしてもよい。
また、デバイス110内にコンテンツを保存(記憶)する方法は様々な方法が考えられる。例えば、(1)デバイス110内に1つのデータベースを置き、そのデータベースにバスケットIDと、コンテンツキー(K)と、コンテンツとを関連付けて保存してもよいし、(2)デバイス110内にバスケットIDごとにデータベースを置き、そのデータベースそれぞれにおいてコンテンツキー(K)とコンテンツとを関連付けて保存してもよい。また、(3)バスケットID、コンテンツキー(K)をディレクトリ名やファイル名として、コンテンツをファイルシステムに保存するようにしてもよい。
本実施の形態のクラスタ型ストレージシステムの構成例を示した図である。 図1のノード装置が他のノード装置へコンテンツの読み書き要求を送信する手順を示した図である (a)は、図1のノード装置が、コンテンツの読み書き要求に対する応答をクライアント装置へ送信する手順を示した図であり、(b)は、(a)におけるS202の処理を概念的に示した図である。 (a)は、本実施の形態のクラスタ型ストレージシステムにおいて各ノード装置の収容するデバイスおよび各ノード装置における負荷の相対比率を例示した図であり、(b)は、書き換え前の配置情報と、書き換え後の配置情報とを例示した図である。
符号の説明
10 コンテンツ管理部
11 入出力部
12 処理部
13 記憶部
20 クライアント装置
100(100A,100B,100C,100D)ノード装置
110(110C,110D,110E,110F,110G,110H) デバイス
121 ハッシュ計算部
122 配置情報管理部
123 アドレス情報管理部
124 ルーチング部
125 データ受信部
126 データ送信部
131(131A,131B) 配置情報
132 アドレス情報

Claims (10)

  1. データの読み出しおよび書き込みを行うノード装置を複数備え、前記ノード装置の収容する複数のデバイスに前記データを冗長化して記憶するクラスタ型ストレージシステムにおける前記ノード装置であって、
    前記データの識別情報であるコンテンツキーのハッシュ値を基に得られた識別情報であるバスケットIDごとに、当該データを記憶する複数の前記デバイスの識別情報を示した配置情報と、前記デバイスの識別情報ごとに、前記デバイスを収容するノード装置の識別情報を示したアドレス情報とを記憶する記憶部と、
    前記読み出しまたは書き込みの対象となるデータのコンテンツキーを含む前記データの書き読み要求または読み出し要求を受け付ける入力部と、
    前記コンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算するハッシュ計算部と、
    前記計算されたバスケットIDをキーとして、前記配置情報から、前記バスケットIDに対応する前記デバイスの識別情報を検索し、この検索した前記デバイスの識別情報と、前記アドレス情報とを参照して、前記検索した識別情報に対応するデバイスを収容するノード装置の識別情報を特定し、前記特定した識別情報のノード装置へ、当該デバイスへの前記コンテンツキーに対応するデータの読み出し要求または書き込み要求を送信するルーチング部と、
    前記ノード装置から前記データの読み出し要求または書き込み要求の結果を受信するデータ受信部とを備えることを特徴とするノード装置。
  2. 前記入力部経由で、前記データのコンテンツキーと、当該データの記憶先となる複数の前記デバイスの識別情報とを含む前記配置情報の設定情報の入力を受け付けたとき、
    前記ハッシュ計算部は、前記設定情報に含まれるコンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算し、
    前記ノード装置は、
    前記計算されたバスケットIDと、前記設定情報に含まれる前記複数の前記デバイスの識別情報とを対応付けた前記配置情報を作成する配置情報管理部を備えることを特徴とする請求項1に記載のノード装置。
  3. 前記データの記憶先となるデバイスを変更するため、前記入力部経由で、前記変更対象となるデータのコンテンツキーと、当該データの新たな記憶先となるデバイスの識別情報とを含む変更情報の入力を受け付けたとき、
    前記配置情報管理部は、前記ハッシュ計算部により計算された前記変更対象となるデータのコンテンツキーに対応するバスケットIDをキーとして、前記配置情報から、当該バスケットIDに対応する前記デバイスの識別情報を検索し、前記配置情報における、当該検索したデバイスの識別情報を、前記新たな記憶先となるデバイスの識別情報に変更し、
    前記ルーチング部は、前記デバイスの識別情報を検索するとき、前記変更した配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする請求項2に記載のノード装置。
  4. 他の前記ノード装置から前記データの読み出し要求または書き込み要求を受信したとき、自身の前記ノード装置の備えるデバイスに記憶される前記データに対し、前記読み出しまたは書き込み処理を実行し、その実行結果を、前記データの読み出し要求または書き込み要求の送信元であるノード装置へ送信するデータ送信部を備えることを特徴とする請求項1ないし請求項3のいずれか1項に記載のノード装置。
  5. 前記配置情報管理部は、前記記憶部における前記配置情報が変更されたとき、前記クラスタ型ストレージシステム内の他のノード装置へ、前記変更後の配置情報を送信し、他のノード装置から、変更後の配置情報を受信したとき、前記変更後の配置情報を前記記憶部に記憶し、
    前記ルーチング部は、前記デバイスの識別情報を検索するとき、前記変更後の配置情報を含む前記記憶部に記憶された配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする請求項2ないし請求項4のいずれか1項に記載のノード装置。
  6. 請求項1ないし請求項5のいずれか1項に記載のノード装置を複数備えることを特徴とするクラスタ型ストレージシステム。
  7. 前記クラスタ型ストレージシステム内の前記ノード装置それぞれにおける処理負荷を監視する監視装置をさらに備え、
    前記監視装置において、前記ノード装置間の処理負荷の偏りを検出したとき、
    前記ノード装置は、前記配置情報において、前記処理負荷が比較的高い前記ノード装置に収容されるデバイスの識別情報に対応するバスケットIDについて、このバスケットIDに対応するデバイスの識別情報を、前記処理負荷が比較的低い前記ノード装置に収容されるデバイスの識別情報へ変更することを特徴とする請求項6に記載のストレージシステム。
  8. データの読み出しおよび書き込みを行うノード装置を複数備え、前記ノード装置の収容する複数のデバイスに前記データを冗長化して記憶するクラスタ型ストレージシステムにおいて、前記データの識別情報であるコンテンツキーのハッシュ値を基に得られた識別情報であるバスケットIDごとに、当該データを記憶する複数の前記デバイスの識別情報を示した配置情報と、前記デバイスの識別情報ごとに、前記デバイスを収容するノード装置の識別情報を示したアドレス情報とを記憶する記憶部を備える前記ノード装置が、
    前記読み出しまたは書き込みの対象となるデータのコンテンツキーを含む、前記データの書き読み要求または読み出し要求の入力を受け付けるステップと、
    前記コンテンツキーのハッシュ値を基に当該コンテンツキーに対応する前記バスケットIDを計算するステップと、
    前記計算されたバスケットIDをキーとして、前記配置情報から、前記バスケットIDに対応する前記デバイスの識別情報を検索するステップと、
    この検索した前記デバイスの識別情報と、前記アドレス情報とを参照して、前記検索した識別情報に対応するデバイスを収容するノード装置の識別情報を特定するステップと、
    前記特定した識別情報のノード装置へ、当該デバイスへの前記コンテンツキーに対応するデータの読み出し要求または書き込み要求を送信するステップと、
    前記ノード装置から前記データの読み出し要求または書き込み要求の結果を受信するステップとを実行することを特徴とするデータの読み出しおよび書き込み制御方法。
  9. 前記ノード装置が、
    前記データの記憶先となるデバイスを変更するため、前記変更対象となるデータのコンテンツキーと、当該データの新たな記憶先となるデバイスの識別情報とを含む変更情報の入力を受け付けたとき、
    前記変更対象となるデータのコンテンツキーに対応するバスケットIDを計算するステップと、
    前記計算されたバスケットIDをキーとして、前記配置情報から、当該バスケットIDに対応する前記デバイスの識別情報を検索するステップと、
    前記配置情報における、当該検索したデバイスの識別情報を、前記新たな記憶先となるデバイスの識別情報に変更するステップとを実行し、
    前記デバイスの識別情報を検索するとき、前記変更した配置情報を参照して、前記デバイスの識別情報を検索することを特徴とする請求項8に記載のデータの読み出しおよび書き込み制御方法。
  10. 請求項8または請求項9に記載のデータの読み出しおよび書き込み制御方法を、コンピュータである前記ノード装置に実行させるためのプログラム。
JP2008143046A 2008-05-30 2008-05-30 クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム Pending JP2009289161A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008143046A JP2009289161A (ja) 2008-05-30 2008-05-30 クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008143046A JP2009289161A (ja) 2008-05-30 2008-05-30 クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム

Publications (1)

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

Family

ID=41458295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008143046A Pending JP2009289161A (ja) 2008-05-30 2008-05-30 クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム

Country Status (1)

Country Link
JP (1) JP2009289161A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011136261A1 (ja) 2010-04-28 2011-11-03 日本電気株式会社 ストレージシステム、ストレージシステムの制御方法、及びコンピュータプログラム
JP2013171305A (ja) * 2012-02-17 2013-09-02 Fujitsu Ltd ストレージ装置、ストレージシステム、ストレージ管理方法及びストレージ管理プログラム
JP2019164728A (ja) * 2018-03-20 2019-09-26 東芝メモリ株式会社 書き込み制御装置、ストレージ装置、ネットワークシステム、書き込み制御方法およびプログラム
JP2020506464A (ja) * 2017-01-18 2020-02-27 ネットアップ,インコーポレイテッド オブジェクトベース・ストレージでアーカイブされたデータ・コンテナをリストアする方法とシステム
CN113010120A (zh) * 2021-04-27 2021-06-22 宏图智能物流股份有限公司 一种通过轮循方式实现语音数据分布式存储的方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011136261A1 (ja) 2010-04-28 2011-11-03 日本電気株式会社 ストレージシステム、ストレージシステムの制御方法、及びコンピュータプログラム
JP2013171305A (ja) * 2012-02-17 2013-09-02 Fujitsu Ltd ストレージ装置、ストレージシステム、ストレージ管理方法及びストレージ管理プログラム
US9218276B2 (en) 2012-02-17 2015-12-22 Fujitsu Limited Storage pool-type storage system, method, and computer-readable storage medium for peak load storage management
JP2020506464A (ja) * 2017-01-18 2020-02-27 ネットアップ,インコーポレイテッド オブジェクトベース・ストレージでアーカイブされたデータ・コンテナをリストアする方法とシステム
JP2019164728A (ja) * 2018-03-20 2019-09-26 東芝メモリ株式会社 書き込み制御装置、ストレージ装置、ネットワークシステム、書き込み制御方法およびプログラム
JP7039348B2 (ja) 2018-03-20 2022-03-22 キオクシア株式会社 書き込み制御装置、ストレージ装置、ネットワークシステム、および書き込み制御方法
CN113010120A (zh) * 2021-04-27 2021-06-22 宏图智能物流股份有限公司 一种通过轮循方式实现语音数据分布式存储的方法
CN113010120B (zh) * 2021-04-27 2022-07-29 宏图智能物流股份有限公司 一种通过轮循方式实现语音数据分布式存储的方法

Similar Documents

Publication Publication Date Title
US8495013B2 (en) Distributed storage system and method for storing objects based on locations
US9971823B2 (en) Dynamic replica failure detection and healing
JP6328432B2 (ja) ゲートウェイ装置、ファイルサーバシステム及びファイル分散方法
JP6607783B2 (ja) 分散キャッシュクラスタ管理
US9069835B2 (en) Organizing data in a distributed storage system
US10735545B2 (en) Routing vault access requests in a dispersed storage network
JP4291077B2 (ja) 分散ストレージ装置のファイル管理方法及び分散ストレージシステム
US20120297067A1 (en) Load Balancing System for Workload Groups
JP5375972B2 (ja) 分散ファイルシステム、そのデータ選択方法およびプログラム
US20060123121A1 (en) System and method for service session management
US20140059315A1 (en) Computer system, data management method and data management program
US10515228B2 (en) Commit and rollback of data streams provided by partially trusted entities
WO2016169237A1 (zh) 数据处理方法及装置
JP2009289161A (ja) クラスタ型ストレージシステム、そのノード装置、データの読み出しおよび書き込み制御方法およびそのプログラム
US9262219B2 (en) Distributed processing system, distributed processing method, and distributed processing program
WO2014132966A1 (ja) ストレージシステム、ストレージ装置、ストレージ装置の制御方法及び制御プログラム、管理装置、管理装置の制御方法及び制御プログラム
US20160323379A1 (en) Distributed storage of software images in computing systems
US11237747B1 (en) Arbitrary server metadata persistence for control plane static stability
JP2016099969A (ja) 情報処理装置、データ保存システム、及びデータ保存方法
WO2020153053A1 (ja) データベース管理サービス提供システム
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
JP2006260074A (ja) Cadデータ管理装置
JP5732082B2 (ja) データ管理装置およびデータ管理プログラム
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
US20090319612A1 (en) Information distribution system, terminal apparatus, distribution server and introduction server in the information distribution system, and recording medium on which program thereof is recorded