JPWO2013005777A1 - 管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム - Google Patents
管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム Download PDFInfo
- Publication number
- JPWO2013005777A1 JPWO2013005777A1 JP2013523038A JP2013523038A JPWO2013005777A1 JP WO2013005777 A1 JPWO2013005777 A1 JP WO2013005777A1 JP 2013523038 A JP2013523038 A JP 2013523038A JP 2013523038 A JP2013523038 A JP 2013523038A JP WO2013005777 A1 JPWO2013005777 A1 JP WO2013005777A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- group
- data storage
- unit
- hash
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置は、前記複数のデータ記憶部の各識別番号を習得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号であるデータ記憶部の集合をグループとして特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用してデータキーハッシュ値を取得し、前記データキーハッシュ値を所定の割り当て方法に従って前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定された識別番号のグループに対応するデータ記憶部のグループに対応付ける。
Description
本発明は、管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムに関する。
データを複数の記憶媒体に分散して記憶させるなど、処理対象を分散させる幾つかの方法が知られている。例えば、特許文献1に紹介されているコンシステントハッシングでは、まず、第1の処理として、ノードのアドレスのハッシュ値と、オブジェクトのハッシュ値とを算出する。次に、第2の処理として、第1の処理で得られたノードのハッシュ値及びオブジェクトのハッシュ値を、それぞれ、ノードIDおよびオブジェクトIDとして設定する。そして、第3の処理として、オブジェクトを、そのオブジェクトのオブジェクトIDに最も「近い」ノードIDを持つノードに登録する(割り当てる)。このようにして、処理対象であるオブジェクトが、ノードに分散して割り当てられる。
コンシステントハッシングは、ノードの増減に柔軟に対応できる。しかしながら、ノードの代替に対する配慮は為されていない。
例えば、ノードがIPネットワークに接続され、ノードIDとしてIPアドレス(Internet Protocol Address)のハッシュ値を用いている分散システムで、ノードの故障対策として代替用のノード(代替ノード)を予め準備しておく場合を想定する。この場合、元のノードと代替ノードとのノードIDを一致させるために、両者に同一のIPアドレスを付すことが考えられる。
しかし、この場合、元のノードをIPネットワークから切り離した後に、代替ノードをIPネットワークに接続する必要がある。よって、ノードの交代に時間を要してしまう。また、元のノードと代替ノードとの間で通信を行ってデータのバックアップを取るためには、IPネットワークとは別に通信経路を設ける必要がある。よって、システムを構築する者にとって負担となる。
例えば、ノードがIPネットワークに接続され、ノードIDとしてIPアドレス(Internet Protocol Address)のハッシュ値を用いている分散システムで、ノードの故障対策として代替用のノード(代替ノード)を予め準備しておく場合を想定する。この場合、元のノードと代替ノードとのノードIDを一致させるために、両者に同一のIPアドレスを付すことが考えられる。
しかし、この場合、元のノードをIPネットワークから切り離した後に、代替ノードをIPネットワークに接続する必要がある。よって、ノードの交代に時間を要してしまう。また、元のノードと代替ノードとの間で通信を行ってデータのバックアップを取るためには、IPネットワークとは別に通信経路を設ける必要がある。よって、システムを構築する者にとって負担となる。
本発明の目的の一例は、上述の課題を解決することのできる管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムを提供することである。
この発明は上述した課題を解決するためになされた。本発明の一態様による管理装置は、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する。この管理装置は、前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、を具備する。
本発明の一態様による分散記憶システムは、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部と、前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、を具備する。
本発明の一態様による分散記憶システムは、ハッシュ空間の所定の範囲を割り当てられ、前記範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、ハッシュ空間において前記マスタの記憶部と同一の範囲を割り当てられ、前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、を具備する。
本発明の一態様によるアクセス先選択方法は、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置が行う前記複数のデータ記憶部のアクセス先選択方法である。このアクセス先選択方法は、前記複数のデータ記憶部の識別番号を取得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、ことを含む。
本発明の一態様によるデータ記憶部設定方法は、識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムに追加された記憶装置のデータ記憶部設定方法である。このデータ記憶部設定方法は、前記追加された記憶装置に含まれるデータ記憶部の1つをマスタに設定し、前記追加された記憶装置に含まれる残りのデータ記憶部の各々に、前記追加された記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、ことを含む。
本発明の一態様によるデータ記憶部設定方法は、識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムの、前記データ記憶部のいずれかに含まれるデータ記憶部の個数が増加した場合のデータ記憶部設定方法である。このデータ記憶部設定方法は、増加した前記データ記憶部の1つをマスタに設定し、増加した前記データ記憶部のうちマスタに設定されていないデータ記憶部の各々に、前記データ記憶部の個数が増加した記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、ことを含む。
本発明の一態様によるプログラムは、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置としてのコンピュータに、前記複数のデータ記憶部の識別番号を取得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、ことを実行させる。
本発明によれば、ノードの増減に柔軟に対応でき、かつ、より簡単にノードの代替を実行することができる。
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本発明の一実施形態における分散記憶システム1の概略構成を示す構成図である。図1において、分散記憶システム1は、複数の記憶装置100と、1つまたは複数の管理装置200と、1つまたは複数のクライアント装置300と、ネットワーク900とを具備する。記憶装置100−0〜100−31と、管理装置200と、クライアント装置300とは、ネットワーク900に接続されている。
図1は、本発明の一実施形態における分散記憶システム1の概略構成を示す構成図である。図1において、分散記憶システム1は、複数の記憶装置100と、1つまたは複数の管理装置200と、1つまたは複数のクライアント装置300と、ネットワーク900とを具備する。記憶装置100−0〜100−31と、管理装置200と、クライアント装置300とは、ネットワーク900に接続されている。
ネットワーク900は、通信ネットワークである。ネットワーク900は、クライアント装置300と、管理装置200と、記憶装置100−0〜100−31との間で行われる各種通信を媒介する。
記憶装置100−0〜100−31の各々は、ネットワーク900を介して、管理装置200からのデータの読み書き要求を受け付け、データ書込要求によって書き込まれるデータを記憶する。以下では、記憶装置100−0〜100−31を「記憶装置100」と総称する。
記憶装置100−0〜100−31の各々は、ネットワーク900を介して、管理装置200からのデータの読み書き要求を受け付け、データ書込要求によって書き込まれるデータを記憶する。以下では、記憶装置100−0〜100−31を「記憶装置100」と総称する。
記憶装置100は、本発明におけるデータ記憶部の一例であってよい。図1では1つの記憶装置が1つのデータ記憶部を構成している。しかしながら、本発明の適用範囲はこれに限らない。1つの記憶装置に複数のデータ記憶部が含まれていてもよいし、1つのデータ記憶部が複数の記憶装置で構成されていてもよい。
分散記憶システム1が具備する記憶装置100の数(およびデータ記憶部の数)は、図1に示す32個に限られない。記憶装置100は、2つ以上であればよい。後述する記憶装置100のグループ分けにおいて各グループに同数のデータ記憶部が含まれることが、データの保全性(冗長性)を各グループで同様とするためには好ましい。しかしながら、グループによって含まれる記憶装置100の数が異なる構成でも本発明の実施形態を実施することができる。
管理装置200は、クライアント装置300からのデータの読み書きの要求を受けると、その要求に従って記憶装置100に対するデータの読み書きの要求を行う。分散記憶システム1は、1つ以上の管理装置200を具備していればよい。分散記憶システム1が複数の管理装置200を具備する場合、各管理装置200は、同様の機能を有し、クライアント装置300は、いずれの管理装置200にアクセスしてもよい。
クライアント装置300は、記憶装置100へのデータの読み書きを要求する装置である。クライアント装置300は、管理装置200に対して、データの読み書きの要求(記憶装置100からのデータ読出要求や、記憶装置100へのデータ書込要求)を送信する。
クライアント装置300は、記憶装置100へのデータの読み書きを要求する装置である。クライアント装置300は、管理装置200に対して、データの読み書きの要求(記憶装置100からのデータ読出要求や、記憶装置100へのデータ書込要求)を送信する。
管理装置200は、図1に示すように記憶装置100およびクライアント装置300と独立した装置として構成されていてもよい。管理装置200は、記憶装置100またはクライアント装置300に含まれて構成されていてもよい。
図2は、管理装置200の概略構成を示す構成図である。図2において、管理装置200は、識別番号取得部201と、特定部202と、グループハッシュ部203と、ネットワーク通信部211と、データキーハッシュ部212と、データ対応付け部221と、読み書き処理部222とを具備する。
識別番号取得部201は、分散記憶システム1の具備する全ての記憶装置100の識別番号を取得する。識別番号取得部201は、その識別番号を予め記憶しておいてもよい。あるいは、識別番号取得部201は、各記憶装置100に対して記憶装置100の識別番号を問い合わせるなど、他の方法で識別番号を取得してもよい。
識別番号取得部201は、分散記憶システム1の具備する全ての記憶装置100の識別番号を取得する。識別番号取得部201は、その識別番号を予め記憶しておいてもよい。あるいは、識別番号取得部201は、各記憶装置100に対して記憶装置100の識別番号を問い合わせるなど、他の方法で識別番号を取得してもよい。
記憶装置100の識別番号(データ記憶部の識別番号)としては、各記憶装置100に設定されているIPアドレス(Internet Protocol Address)の第4オクテット(Octet)を用いる。本実施形態では、記憶装置100−0〜100−31には、それぞれ、IPアドレス「192.168.0.0」〜「192.168.0.31」が設定されている。従って、記憶装置100−0〜100−31の識別番号は、それぞれ、「0」〜「31」となる。
本発明におけるデータ記憶部の識別番号は、上述したIPアドレスの第4オクテッドに限られない。識別番号は、データ記憶部を一意に識別可能なデータであればよい。例えば、データ記憶部の識別番号として、マシン名を用いるようにしてもよいし、識別番号専用に設定された番号を用いるようにしてもよい。識別番号としてIPアドレスまたはマシン名などの一般的なデータ(識別番号専用以外のデータ)を用いることで、誤設定のおそれを軽減させることができる。
特定部202は、識別番号取得部201の取得する記憶装置100の識別番号の一部にマスクをかけることで、識別番号をグループ分けする。この識別番号のグループ分けによって、記憶装置100がグループ分けされる。
グループハッシュ部203は、特定部202がマスクをかけた識別番号の各々をハッシュ関数に代入して(すなわち、マスクをかけた識別番号の各々にハッシュ関数を適用して)ハッシュ値を算出する。すなわち、グループハッシュ部203は、特定部202が記憶装置100をグループ分けした各グループについて、そのグループに対応するハッシュ値を算出する。以下ではグループハッシュ部203の算出するハッシュ値を「グループハッシュ値」と称する。
グループハッシュ部203は、特定部202がマスクをかけた識別番号の各々をハッシュ関数に代入して(すなわち、マスクをかけた識別番号の各々にハッシュ関数を適用して)ハッシュ値を算出する。すなわち、グループハッシュ部203は、特定部202が記憶装置100をグループ分けした各グループについて、そのグループに対応するハッシュ値を算出する。以下ではグループハッシュ部203の算出するハッシュ値を「グループハッシュ値」と称する。
ネットワーク通信部211は、ネットワーク900に接続されている。ネットワーク通信部211は、クライアント装置300から送信される、記憶装置100からのデータ読出要求や、記憶装置100へのデータ書込要求を受信して、その要求をデータキーハッシュ部212に出力する。また、ネットワーク通信部211は、読み書き処理部222から出力される、特定の記憶装置100に対するデータ読出要求やデータ書込要求を、ネットワーク900を介してその記憶装置100に送信する。ネットワーク通信部211は、記憶装置100からデータが返信されると、読み書き処理部222の処理に従って、そのデータを要求元のクライアント装置300に転送する。
データキーハッシュ部212は、ネットワーク通信部211から出力されるデータ読出要求やデータ書込要求から、データに対応付けられたキーを読み出す。データキーハッシュ部212は、読み出したキーを、グループハッシュ部203が用いるハッシュ関数と同一のハッシュ関数に代入してハッシュ値を算出する。以下では、データキーハッシュ部212の算出するハッシュ値を「データキーハッシュ値」と称する。
データ対応付け部221は、グループハッシュ部203の算出するグループハッシュ値と、データキーハッシュ部212の算出するデータキーハッシュ値とを取得する。そして、データ対応付け部221は、所定の割当方法に従って、データキーハッシュ値を、グループハッシュ値の何れかに割り当てることで、読み書きの対象となっているデータを、記憶装置100のグループのいずれかに対応付ける。
読み書き処理部222は、データ対応付け部221がデータを対応付けたグループに含まれる特定の記憶装置100(本実施形態では識別番号の最も小さい記憶装置100)に対して、ネットワーク通信部211を介して、そのデータの読出要求ないし書込要求を送信する。記憶装置100がデータを返送すると、読み書き処理部222は、ネットワーク通信部211を介してそのデータを取得し、取得したデータを、ネットワーク通信部211を介してクライアント装置300に転送する。
次に図3〜6を参照して、管理装置200が行うマスキングおよびハッシングについて説明する。
図3は、特定部202が行うマスキングの例を二進数表記で示す説明図である。
記憶装置100−22の識別番号「22」を二進数で表記すると、図3の(a)部に示すように8桁の二進数「00010110」となる。
図3は、特定部202が行うマスキングの例を二進数表記で示す説明図である。
記憶装置100−22の識別番号「22」を二進数で表記すると、図3の(a)部に示すように8桁の二進数「00010110」となる。
本実施形態では、二進数で表記された識別番号のうち下位2桁がマスク対象の桁として設定されている。そこで、特定部202は、下位2桁を「00」に置き換えるマスキングを行う。記憶装置100−22の場合、このマスキングによって、マスクされた識別番号として図3の(b)部に示す「00010100」を得る。
次に説明するように、このマスクされた識別番号が同一の記憶装置100で、1つのグループを構成する。すなわち、特定部202は、マスクされた識別番号を生成することで、マスク対象の桁として設定されている下位2桁を除いた残りの上位6桁が同一の識別番号のグループを特定する。特定部202は、特定したグループ(に含まれる各記憶装置100)に、マスク対象の桁を「00」で置き換えた、マスクされた識別番号を割り当てる。このようにマスクされた識別番号はグループを識別する番号であり、以下ではこのマスクされた識別番号を「グループ番号」と称する。
図4は、識別番号に対するマスキングおよびハッシングの例を示す説明図である。図4の(a)部は、記憶装置100毎の識別番号の例を10進数表記で示す。また、図4の(b)部は、グループ番号の例を10進数表記で示す。図4の(c)部は、グループ番号にハッシュ関数を適用して得られるハッシュ値の例を10進数表記で示す。
図4の(b)部において、ハイフン「−」の左の数字は、グループ番号を示す。ハイフンの右の数字は、元の(マスキングを行う前の)識別番号を示す。図4の(b)部に示すように、グループ番号は、元の識別番号を4で割った商となっている。従って、記憶装置100−0〜100−3が1つのグループを構成し、記憶装置100−4〜100−7が1つのグループを構成するというように、4つの記憶装置100によって1つのグループが構成される。
図4の(c)部において、ハイフンの左の数字は、グループ番号をハッシュ関数に代入して得られるハッシュ値を示す。ハイフンの右の数字は、元の識別番号を示す。次に説明するように、このハッシュ値によって、記憶装置100は、グループ単位でハッシュ空間に散らばって配置される。
図4の(b)部における「0−0」や「1−4」等に対するハッチング、および、図4の(c)部における「31−0」や「200−4」等に対するハッチングは、グループ内で最も小さい識別番号を示している。
この最も小さい識別番号を割り当てられた記憶装置100は、管理装置200によるデータの読み書きを受け付けるマスタとなる。他の記憶装置100は、マスタの有するデータのコピーを記憶するスレーブとなる。このように、記憶装置100は、グループ毎にマスタスレーブ構造を構築する。
この最も小さい識別番号を割り当てられた記憶装置100は、管理装置200によるデータの読み書きを受け付けるマスタとなる。他の記憶装置100は、マスタの有するデータのコピーを記憶するスレーブとなる。このように、記憶装置100は、グループ毎にマスタスレーブ構造を構築する。
図5は、ハッシュ値をハッシュ空間に配置した例を示す説明図である。図5において、ハッシュ空間HSは、「0」から「319」までの、320個の整数で構成されている。ハッシュ空間HSは、「0」、「1」、「2」、・・・、「319」の順で並んで再び「0」に戻るというように、これらの整数が循環的に配置されている。
このハッシュ空間HSにおいて、例えばハッシュ値「31」を有する記憶装置100−0〜100−3のグループ(図5において番号「0」で示されているグループ)は、ハッシュ空間HS内の値「31」の位置に配置されている。ハッシュ値「200」を有する記憶装置100−4〜100−7のグループ(図5において番号「1」で示されているグループ)は、ハッシュ空間HS内の値「200」の位置に配置されている。
このように、グループ毎にハッシュ値を割り当てることで、記憶装置100は、グループ単位でハッシュ空間に散らばって配置されている。
このように、グループ毎にハッシュ値を割り当てることで、記憶装置100は、グループ単位でハッシュ空間に散らばって配置されている。
グループハッシュ部203は、各グループのグループ番号をハッシュ空間内に散らすことのできる様々なハッシュ関数を用いることができる。
ここでは図を見易くするために、比較的小さいハッシュ空間(320個の点で構成される空間)の場合について説明した。しかしながら、各グループをハッシュ空間内に散らし易くするために、グループハッシュ部203が、より大きいハッシュ空間を有するハッシュ関数を用いることが望ましい。例えば、グループハッシュ部203が、億単位の数の点で構成されるハッシュ空間を有するハッシュ関数を用いることが望ましい。
ここでは図を見易くするために、比較的小さいハッシュ空間(320個の点で構成される空間)の場合について説明した。しかしながら、各グループをハッシュ空間内に散らし易くするために、グループハッシュ部203が、より大きいハッシュ空間を有するハッシュ関数を用いることが望ましい。例えば、グループハッシュ部203が、億単位の数の点で構成されるハッシュ空間を有するハッシュ関数を用いることが望ましい。
図6は、データのハッシュ値をハッシュ空間に配置した例を示す説明図である。
例えば、クライアント装置300から読み書きを要求されたデータのキーに対して、データキーハッシュ部212がハッシングを行って得られたデータキーハッシュ値が「55」の場合について説明する。この場合、図6に示すように、データキーハッシュ値は、記憶装置100−0〜100−3のグループのグループハッシュ値「31」と、記憶装置100−16〜100−19のグループのグループハッシュ値「77」との間の点P1に配置される。
例えば、クライアント装置300から読み書きを要求されたデータのキーに対して、データキーハッシュ部212がハッシングを行って得られたデータキーハッシュ値が「55」の場合について説明する。この場合、図6に示すように、データキーハッシュ値は、記憶装置100−0〜100−3のグループのグループハッシュ値「31」と、記憶装置100−16〜100−19のグループのグループハッシュ値「77」との間の点P1に配置される。
本実施形態では、データ対応付け部221は、データキーハッシュ値を、データキーハッシュ値以上のグループハッシュ値のうち最小のものに割り当てる。図6に示す例の場合、データ対応付け部221は、データキーハッシュ値「55」を、ハッシュ空間HSを時計回りに辿って最初に到達するグループハッシュ値「77」に割り当てる。この割り当てによって、データ対応付け部221は、クライアント装置300から読み書きを要求されたデータを、記憶装置100−16〜100−19のグループ(グループハッシュ値が「77」のグループ)に対応付ける。
この対応付けに従って、読み書き処理部222は、記憶装置100−16〜100−19のグループのうち、識別番号の最も小さい記憶装置100−16に対してデータの読み書きを行う。
この対応付けに従って、読み書き処理部222は、記憶装置100−16〜100−19のグループのうち、識別番号の最も小さい記憶装置100−16に対してデータの読み書きを行う。
このように、記憶装置100の各グループには、グループハッシュ値に基づいてハッシュ空間の所定の範囲が割り当てられている。記憶装置100の各グループは、そのグループに割り当てられた所定の範囲にデータキーハッシュ値が含まれるデータを記憶する。具体的には、マスタの記憶装置100の各々が、自らに割り当てられた所定の範囲にデータキーハッシュ値が含まれるデータを記憶する。スレーブの記憶装置100は、対応するマスタの記憶装置100(同一グループ内のマスタ記憶装置100)と同一の範囲を割り当てられ、その対応するマスタの記憶装置100が記憶するデータのコピーを記憶する。
データ対応付け部221がデータハッシュ値をグループハッシュ値に割り当てる方法は、上記の方法に限らず、データハッシュ値をグループハッシュ値に一意に対応付け可能な様々な方法を用いることができる。例えば、データ対応付け部221が、データキーハッシュ値を、そのデータキーハッシュ値以下のグループハッシュ値のうち最大のものに割り当てるようにしてもよい。
次に、図7を参照して、管理装置200の動作について説明する。
図7は、記憶装置100に対してデータの読み書きを行う際の、管理装置200の処理手順を示すフローチャートである。管理装置200は、クライアント装置300から送信される、データの読み書き要求(データ読出要求またはデータ書込要求)をネットワーク通信部211にて受信すると、同図の処理を開始する。
図7は、記憶装置100に対してデータの読み書きを行う際の、管理装置200の処理手順を示すフローチャートである。管理装置200は、クライアント装置300から送信される、データの読み書き要求(データ読出要求またはデータ書込要求)をネットワーク通信部211にて受信すると、同図の処理を開始する。
図7において、まず、識別番号取得部201は、記憶装置100の各々の識別番号を取得する(ステップS101)。例えば、識別番号取得部201は、管理装置200の具備する記憶部が、記憶装置100との通信のために記憶している記憶装置100の各々のIPアドレスから、第4オクテットを読み出すことで識別番号を取得する。このように、管理装置200が識別番号を予め記憶しておき、識別番号取得部201がその識別番号を読み出すようにしてもよい。あるいは、管理装置200が、記憶装置100の各々と通信を行って、記憶装置100の各々から識別番号を受信するようにしてもよい。
次に、特定部202は、識別番号取得部201が取得した識別番号の各々に対して、図3を参照して説明したマスキングを行なってグループ番号を生成する(ステップS102)。そして、特定部202は、図4に示すように、生成したグループ番号と元の識別番号とを対応付ける。これによって、記憶装置100の各々にグループ番号が割り当てられ、記憶装置100がグループ分けされる。
次に、グループハッシュ部203は、特定部202が生成したグループ番号の各々をハッシュ関数に代入してグループハッシュ値を取得する(算出する)(ステップS103)。
管理装置200は、クライアント装置300からデータの読み書き要求を受ける度に、上記ステップS101〜S103の処理を行ってもよい。あるいは、管理装置200は、予めその処理を行って、グループハッシュ値を記憶してもよい。
管理装置200は、クライアント装置300からデータの読み書き要求を受ける度に、上記ステップS101〜S103の処理を行ってもよい。あるいは、管理装置200は、予めその処理を行って、グループハッシュ値を記憶してもよい。
管理装置200が、クライアント装置300からデータの読み書き要求を受ける度にグループハッシュ値を取得する場合、最新の識別番号に基づいて処理を行うことができる。特に、分散記憶システム1が複数の管理装置200を具備する場合に、管理装置200毎に処理に違いが生じることを防止できる。一方、管理装置200がグループハッシュ値を予め記憶しておく場合、管理装置200の負荷を軽減させることができ、また、より速く処理を行い得る。
図7の処理を開始した後、データキーハッシュ部212は、ネットワーク通信部211が受信したデータの読み書き要求から、読み書きを行うデータのキー(例えばそのデータのファイル名)を読み出すことで、そのキーを取得する(ステップS111)。
そして、データキーハッシュ部212は、グループハッシュ部203が用いるのと同じハッシュ関数に、ステップS111で読み出したキーを代入して、データキーハッシュ値を取得する(算出する)(ステップS112)。
そして、データキーハッシュ部212は、グループハッシュ部203が用いるのと同じハッシュ関数に、ステップS111で読み出したキーを代入して、データキーハッシュ値を取得する(算出する)(ステップS112)。
そして、データ対応付け部221は、図6を用いて説明したように、ステップS112でデータキーハッシュ部212が求めたデータキーハッシュ値を、ステップS103でグループハッシュ部203が求めたグループハッシュ値の何れかに割り当てる(ステップS121)。これによって、データ対応付け部221は、ステップS102でのマスキングによって特定部202がグループ分けを行った、記憶装置100のグループのいずれかに、読み書き対象のデータを対応付ける。
次に、読み書き処理部222は、ステップS221にてデータ対応付け部221がデータの対応付けを行ったグループに含まれる記憶装置100のうち、識別番号の最も小さい記憶装置100をマスタとして選択する(ステップS122)。
読み書き処理部222は、ステップS122でマスタとして選択した記憶装置100に対して、ネットワーク通信部211を介してデータ書込要求ないしデータ読出要求を送信することで、データの読み書きを実行する。
読み書き処理部222は、ステップS122でマスタとして選択した記憶装置100に対して、ネットワーク通信部211を介してデータ書込要求ないしデータ読出要求を送信することで、データの読み書きを実行する。
ステップS221でマスタとして選択した記憶装置100が故障している場合など、その記憶装置100に対してデータの読み書きを行えない場合、同じグループの中で、次に識別番号の小さい記憶装置100をマスタとして選択し、その記憶装置100に対してデータ書込要求ないしデータ読出要求を送信する。
このように、1つのグループに複数の記憶装置100が割り当てられてマスタスレーブ構造を構築しているので、マスタが故障した際に速やかにマスタの交代を行うことができる。
このように、1つのグループに複数の記憶装置100が割り当てられてマスタスレーブ構造を構築しているので、マスタが故障した際に速やかにマスタの交代を行うことができる。
以上のように、特定部202は、記憶装置100の識別番号をマスキングすることで、記憶装置100をグループ分けし、グループ番号を生成する。グループハッシュ部203は、特定部202が生成したグループ番号をハッシングすることで、記憶装置100のグループをハッシュ空間に散らばらせる。このように、記憶装置100がグループ単位でハッシュ空間に配置される。また、グループ内で記憶装置100がマスタスレーブ構造を構築する。これにより、ハッシュ空間を利用してノード(データ記憶部としての記憶装置100)の増減に柔軟に対応でき、かつ、マスタスレーブ構造によってノードの代替を実行することができる。
上述したように、1つの記憶装置100に複数のデータ記憶部が含まれていてもよい。この場合のデータ記憶部は、例えば、物理ノードである記憶装置100を用いて構築される、仮想マシン(仮想ノード)の記憶装置である。各仮想マシンに設定されるIPアドレスの第4オクテットが、識別番号として用いられる。
1つの記憶装置100に複数のデータ記憶部が含まれる場合、記憶装置100のいずれかが故障しても全てのグループのデータを保持できるように、同一グループに属するデータ記憶部は、異なる記憶装置100に含まれている(実装されている)ことが好ましい。
1つの記憶装置100に複数のデータ記憶部が含まれる場合、記憶装置100のいずれかが故障しても全てのグループのデータを保持できるように、同一グループに属するデータ記憶部は、異なる記憶装置100に含まれている(実装されている)ことが好ましい。
図8は、同一グループに属するデータ記憶部が異なる記憶装置100に含まれる構成の例を示す説明図である。
図8において、横の並びN0〜N7の各々が記憶装置100(物理ノード)を示し、縦の並びG0〜G7の各々がデータ記憶部のグループを示す。縦の並びG0〜G2では、1つのグループに属するデータ記憶部が、複数の列に分かれて配置されている。
図8において、横の並びN0〜N7の各々が記憶装置100(物理ノード)を示し、縦の並びG0〜G7の各々がデータ記憶部のグループを示す。縦の並びG0〜G2では、1つのグループに属するデータ記憶部が、複数の列に分かれて配置されている。
具体的には、分散記憶システム1は、グループの数と同数(図8の例では8つ)の記憶装置100を具備している。記憶装置100の各々には、1つのグループに含まれるデータ記憶部と同数(図8の例では4つ)のデータ記憶部が含まれている。記憶装置100の各々は、1つのマスタ(識別番号「0」、「4」、「8」、・・・、「28」のデータ記憶部)と、3つのスレーブ(マスタ以外のデータ記憶部)とを含む。
さらに具体的には、行Ni(iは0≦i≦7の整数)に示される記憶装置100は、識別番号4・iのデータ記憶部をマスタとして含み、識別番号(4・i+5)mod32、(4・i+10)mod32、(4・i+15)mod32のデータ記憶部をスレーブとして含む。ここで、「・」は乗算を示し、「mod」は剰余算を示し、「32」は剰余算における基数である。すなわち、「mod32」は32で割った余りを示す。
以下の説明においては、記憶装置100の各々を、符号N0〜N7(図9等では符号N0〜N8)を用いて、「記憶装置N0」のように表記する。また、データ記憶部のグループの各々を、符号G0〜G7(図9等では符号G0〜G8)を用いて、「グループG0」のように表記する。
図8において、グループG3に属するデータ記憶部は、それぞれ異なる記憶装置に含まれている。具体的には、識別番号12、13、14、15のデータ記憶部が、それぞれ、記憶装置N3、N2、N1、N0に含まれている。このように、1つのグループに属するデータ記憶部の各々が異なる記憶装置に含まれていることで、いずれかの記憶装置が故障しても、故障した記憶装置が記憶するデータ(故障した記憶装置に含まれるデータ記憶部が記憶するデータ)を保持することができる。
次に、図9〜図13を参照して、図8に示す構成にデータ記憶部を追加する処理の例を示す。
図9は、分散記憶システム1に新たな記憶装置が追加された構成例を示す説明図である。図9において、分散記憶システム1は、図8に示した記憶装置N0〜N7に加えて、記憶装置N8を具備している。
図9は、分散記憶システム1に新たな記憶装置が追加された構成例を示す説明図である。図9において、分散記憶システム1は、図8に示した記憶装置N0〜N7に加えて、記憶装置N8を具備している。
この記憶装置N8は4つのデータ記憶部を含んでいる。この4つのデータ記憶部の1つが、新たなグループ(グループG8)におけるマスタに設定される。図8に示した構成における最大の識別番号「31」の次の識別番号「32」が、そのマスタに設定されている。記憶装置N8における残りのデータ記憶部には、記憶装置N5〜N7から、それぞれ異なるグループに属するデータ記憶部(識別番号3、7、11のデータ記憶部)のデータおよび識別番号が移される(Moveされる)。
図10は、データ移動元の記憶装置100に、新たなグループのスレーブが設定された構成例を示す説明図である。図10において、図9におけるデータの移動元のデータ記憶部に、新たに設定されたマスタ(識別番号32のデータ記憶部)に対するスレーブ(識別番号33〜35のデータ記憶部)が設定されている。
図11は、図10に示す構成において、記憶装置内におけるデータ記憶部の並びを整理した構成例を示す説明図である。図4を参照して説明した、識別番号の二進数表記において下位2桁を「00」に置き換えるマスキングによると、識別番号32〜35が同一のグループに含まれる。また、識別番号0〜3が同一のグループに含まれる。図10で示した構成において、同一グループのデータ記憶部が、同一の縦の並びに配置されるように、記憶装置内で(すなわち、横の並びの各々について)データ記憶部の並びを整理すると、図11に示す構成となる。
図12は、追加された識別番号に対応するマスキングおよびハッシングの例を示す説明図である。図12の(a)部に示す識別番号のうち、識別番号32〜35が、記憶装置100の追加に伴って追加された識別番号である。
図7のステップS102において、特定部202は、これら識別番号32〜35の各々に対して図3を参照して説明したマスキングを行って、図12の(b)部に示すように、グループ番号「8」を得る。
さらに、図7のステップS103において、グループハッシュ部203は、グループ番号「8」をハッシュ関数に代入して、図12の(c)部に示すように、グループハッシュ値「234」を算出する。
図7のステップS102において、特定部202は、これら識別番号32〜35の各々に対して図3を参照して説明したマスキングを行って、図12の(b)部に示すように、グループ番号「8」を得る。
さらに、図7のステップS103において、グループハッシュ部203は、グループ番号「8」をハッシュ関数に代入して、図12の(c)部に示すように、グループハッシュ値「234」を算出する。
図13は、追加された識別番号に対応するグループハッシュ値をハッシュ空間に配置した例を示す説明図である。図13において、追加された識別番号に対応するグループハッシュ値「234」が、グループハッシュ値「219」と「295」との間に配置されている。
これにより、図7のステップS121において、データ対応付け部221が、データキーハッシュ値をグループハッシュ値に対応付ける際に、グループハッシュ値「295」に対応付ける範囲が狭くなっている。すなわち、図5の状態では、データキーハッシュ値が220〜295の場合にグループハッシュ値「295」に対応付けられるのに対し、図13の状態では、データキーハッシュ値が235〜295の場合にグループハッシュ値「295」に対応付けられる。
これによって、グループハッシュ値「295」のグループに含まれるデータ記憶部(識別番号12〜15のデータ記憶部)が対応するデータキーハッシュ値の範囲(すなわち、識別番号12〜15のデータ記憶部の責任範囲)が狭くなる。
図14は、図9〜図11で説明した、データ記憶部を追加する処理の手順を示すフローチャートである。分散記憶システム1のユーザが、図14に示す処理を行うようにしてもよい。あるいは、管理装置200が、データ記憶部追加部を具備し、記憶装置100が増設されたことを検出すると、そのデータ記憶部追加部が、図14に示す処理を自動で行うようにしてもよい。以下では、データ記憶部追加部が処理を行う場合について説明するが、ユーザが処理を行う場合の処理手順も同様である。
図14において、データ記憶部追加部は、まず、図9における識別番号32のデータ記憶部のように、追加された記憶装置100のデータ記憶部のうちの1つに、既に使用している最大の識別番号の次の識別番号を設定する(ステップS201)。この識別番号は、新たなグループ内で最も小さい識別番号となる。この識別番号を設定されたデータ記憶部が新たなグループにおけるマスタに設定される。
次に、データ記憶部追加部は、追加された記憶装置100の残りのデータ記憶部に、他の記憶装置に含まれる、スレーブのデータ記憶部のデータ及び識別番号(すなわち、スレーブのデータ記憶部が記憶するデータ及びそのデータ記憶部に設定された識別番号)を移動させる(ステップS202)。その際、データ記憶部追加部は、図9における識別番号3、7および11の各データ記憶部のように、互いに異なる記憶装置100から、互いに異なるグループに属するデータ記憶部のデータおよび識別番号を移動させる。
さらに、データ記憶部追加部は、図10における識別番号33〜35のデータ記憶部のように、ステップS202でデータを移動させた元のデータ記憶部に新たな識別番号を設定することで、そのデータ記憶部を新たなグループのスレーブに設定する(ステップS203)。
ステップS202において、互いに異なる記憶装置100からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
ステップS202において、互いに異なる記憶装置100からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
データ記憶部追加部は、新たなグループのデータ記憶部に、その責任範囲(図13の例ではハッシュ値220〜234)のデータを、責任範囲が減少するグループのデータ記憶部(図13の例では、識別番号12〜15のデータ記憶部)から移動させる(ステップS204)。
その後、図13の処理を終了する。
その後、図13の処理を終了する。
図10の構成から図11の構成への、データ記憶部の並びの整理の説明は、図9で説明したデータおよび識別番号の移動前の状態(図9に示す状態)と、移動後の状態(図11に示す状態)とでの、各部の対応関係を判り易くするために便宜上示した。このデータ記憶部の並びの整理のために、特別な処理は要しない。図14を参照して説明した処理によって得られた構成の各データ記憶部に対して、図7のステップS102において、特定部202が識別番号のマスキングを行うことで、図11に示すグループ分けを行うことができる。
以上のように、記憶装置100が増設された際に、増設された記憶装置100に含まれるデータ記憶部の1つを新たなグループにおけるマスタに設定する。そして、増設された記憶装置100に含まれる残りのデータ記憶部の各々に、互いに異なる記憶装置100から、互い異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させる。さらに、移動元のデータ記憶部を新たなグループにおけるスレーブに設定する。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置100に含まれるようになる。その結果、いずれかの記憶装置100が故障した際にも、その記憶装置100が記憶しているデータを保持することができる。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置100に含まれるようになる。その結果、いずれかの記憶装置100が故障した際にも、その記憶装置100が記憶しているデータを保持することができる。
記憶装置100の記憶容量が大きい場合、当該記憶装置100が、1つのグループ分以上のデータ記憶部を含むようにしてもよい。以下、図15〜図21を参照して、記憶装置100のメモリを増設する際のデータ記憶部の設定例について説明する。
図15は、メモリ増設対象の記憶装置100を停止させた状態におけるデータ記憶部の構成例を示す説明図である。図8に示す構成において、識別番号28のデータ記憶部に設定されているマスタを、識別番号29のデータ記憶部に移行させ、メモリ増設対象の記憶装置100である記憶装置N7を停止させることによって、図15に示す構成を得られる。
上述したように、読み書き処理部222が、グループ内で識別番号の最も小さいデータ記憶部をマスタとすることで、特別な処理を必要とせず記憶装置N7を停止させるだけでマスタを移行させることができる。マスタを移行させることで、記憶装置N7のメモリ増設作業中においても、分散記憶システム1を稼動させることができる。
図16は、記憶装置N7を停止させてメモリを増設した状態におけるデータ記憶部の構成例を示す説明図である。メモリを増設された記憶部N7では、図16に示されるように、8つのデータ記憶部が構築される。
図17は、記憶装置N7の有するデータ記憶部に、停止前と同様の識別番号が設定された構成例を示す説明図である。記憶装置N7の停止前と同様の識別番号を設定して、停止前と同様のグループ構成とすることで、記憶装置N7に含まれるデータ記憶部が機能回復したとき(データ記憶部としてのデータの記憶および読み出しを再開した際)に冗長性を回復させることができる。
図18は、増加分のデータ記憶部の各々に、マスタあるいはスレーブを設定した構成例を示す説明図である。増加分のデータ記憶部の1つが、新たなグループ(グループG8)におけるマスタに設定される。メモリ増設前の構成(図8に示した構成)における最大の識別番号「31」の次の識別番号「32」が、新たなグループにおけるマスタに設定されている。残りのデータ記憶部には、記憶装置N0〜N2から、それぞれ異なるグループに属するデータ記憶部(識別番号15、19、23のデータ記憶部)のデータおよび識別番号が移される。
図19は、データ移動元のデータ記憶部に、新たなグループのスレーブが設定された構成例を示す説明図である。図19において、図18におけるデータの移動元のデータ記憶部に、新たに設定されたマスタ(識別番号32のデータ記憶部)に対するスレーブ(識別番号33〜35のデータ記憶部)が設定されている。
図20は、メモリを増設した記憶装置N7のデータ記憶部が機能回復した状態におけるデータ記憶部の構成例を示す説明図である。上述した、読み書き処理部222が、グループ内において識別番号の最も小さいデータ記憶部をマスタとするマスタ選択方法では、図20の構成において、識別番号28のデータ記憶部が、グループG7におけるマスタとして選択される。そこで、記憶装置N7のデータ記憶部を機能回復させるに際して、識別番号28のデータ記憶部から識別番号29のデータ記憶部にデータをコピーすることで、マスタの移行を可能とする。
図21は、図15〜図20で説明した、メモリ増設に際してデータ記憶部を追加する処理の手順を示すフローチャートである。分散記憶システム1のユーザが、図21に示す処理を行うようにしてもよい。あるいは、管理装置200が、メモリ増設対応部を具備し、そのメモリ増設対応部が、図21に示す処理の一部(例えば記憶装置にメモリを追加する処理以外の処理)を自動で行うようにしてもよい。以下では、メモリ増設対応部が処理を行う場合について説明するが、ユーザが処理を行う場合の処理手順も同様である。
図21において、メモリ増設対応部は、まず、メモリ増設対象の記憶装置100(図15の例では、記憶装置N7)を停止させる(ステップS301)。これによって、メモリ増設対象の記憶装置100に含まれていたマスタは、同じグループのスレーブのうち、識別番号が最も小さいものに移行される。図15の例では、識別番号28のデータ記憶部に設定されていたグループG7のマスタが、識別番号29のデータ記憶部に移行している。
次に、ユーザは、記憶装置のメモリを増設する(ステップS302)。
ユーザがメモリの増設を完了して記憶装置を再起動させると、メモリ増設対応部は、図17における識別番号28、1、6および11の各データ記憶部のように、記憶装置を停止させる前と同様の識別番号を、メモリを増設した記憶装置に含まれるデータ記憶部に設定する(ステップS303)。
ユーザがメモリの増設を完了して記憶装置を再起動させると、メモリ増設対応部は、図17における識別番号28、1、6および11の各データ記憶部のように、記憶装置を停止させる前と同様の識別番号を、メモリを増設した記憶装置に含まれるデータ記憶部に設定する(ステップS303)。
次に、メモリ増設対応部は、図18における識別番号32のデータ記憶部のように、メモリ増設前の構成における最大の識別番号の次の識別番号を、メモリを増設した記憶装置に含まれ、ステップS303で識別番号を設定されていないデータ記憶部の1つに設定する(ステップS304)。
また、メモリ増設対応部は、メモリを増設した記憶装置に含まれる残りのデータ記憶部に、他の記憶装置に含まれる、スレーブのデータ記憶部のデータ及び識別番号を移動させる(ステップS305)。その際、データ記憶部追加部は、図18における識別番号23、19および15の各データ記憶部のように、互いに異なる記憶装置100から、互いに異なるグループに属するデータ記憶部のデータおよび識別番号を移動させる。
さらに、メモリ増設対応部は、図19における識別番号33〜35のデータ記憶部のように、ステップS305でデータを移動させた元のデータ記憶部を、新たなグループのスレーブに設定する(ステップS306)。
ステップS305において、互いに異なる記憶装置100からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
ステップS305において、互いに異なる記憶装置100からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
そして、データ記憶部追加部は、図14のステップS204と同様に、新たなグループのデータ記憶部に、その責任範囲のデータを、責任範囲が減少するグループのデータ記憶部から移動させる(ステップS307)。
その後、図21の処理を終了する。
その後、図21の処理を終了する。
以上のように、記憶装置100のメモリが増設された際に、メモリ増設に伴って増設されたデータ記憶部の1つを新たなグループにおけるマスタに設定する。増設されたデータ記憶部のうち残りのデータ記憶部の各々に、互いに異なる記憶装置100から、互い異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させる。さらに、移動元のデータ記憶部を新たなグループにおけるスレーブに設定する。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置100に含まれるようになる。その結果、いずれかの記憶装置100が故障した際にも、その記憶装置100が記憶しているデータを保持することができる。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置100に含まれるようになる。その結果、いずれかの記憶装置100が故障した際にも、その記憶装置100が記憶しているデータを保持することができる。
上述したように、管理装置200の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。「コンピュータシステム」は、OSや周辺機器等のハードウェアを含む。
「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られない。この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
この出願は、2011年7月4日に出願された日本出願特願2011−148011を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムに適用することができる。本発明によれば、ノードの増減に柔軟に対応でき、かつ、より簡単にノードの代替を実行することができる。
1 分散記憶システム
100、100−0〜100−31 記憶装置
200 管理装置
201 識別番号取得部
202 特定部202
203 グループハッシュ部
211 ネットワーク通信部
212 データキーハッシュ部
221 データ対応付け部
222 読み書き処理部
300 クライアント装置
900 ネットワーク
100、100−0〜100−31 記憶装置
200 管理装置
201 識別番号取得部
202 特定部202
203 グループハッシュ部
211 ネットワーク通信部
212 データキーハッシュ部
221 データ対応付け部
222 読み書き処理部
300 クライアント装置
900 ネットワーク
Claims (8)
- データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置であって、
前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、
を具備する管理装置。 - データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部と、
前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、
を具備する分散記憶システム。 - ハッシュ空間の所定の範囲を割り当てられ、前記範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、
ハッシュ空間において前記マスタの記憶部と同一の範囲を割り当てられ、前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、
を具備する分散記憶システム。 - データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置が行う前記複数のデータ記憶部のアクセス先選択方法であって、
前記複数のデータ記憶部の識別番号を取得し、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、
ことを含むアクセス先選択方法。 - 識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムに追加された記憶装置のデータ記憶部設定方法であって、
前記追加された記憶装置に含まれるデータ記憶部の1つをマスタに設定し、
前記追加された記憶装置に含まれる残りのデータ記憶部の各々に、前記追加された記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、
前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、
ことを含むデータ記憶部設定方法。 - 識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムの、前記データ記憶部のいずれかに含まれるデータ記憶部の個数が増加した場合のデータ記憶部設定方法であって、
増加した前記データ記憶部の1つをマスタに設定し、
増加した前記データ記憶部のうちマスタに設定されていないデータ記憶部の各々に、前記データ記憶部の個数が増加した記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、
前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、
ことを含むデータ記憶部設定方法。 - データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置としてのコンピュータに、
前記複数のデータ記憶部の識別番号を取得し、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、
ことを実行させるためのプログラム。 - ハッシュ空間の所定の範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、
前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、
を具備する分散記憶システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013523038A JPWO2013005777A1 (ja) | 2011-07-04 | 2012-07-04 | 管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011148011 | 2011-07-04 | ||
JP2011148011 | 2011-07-04 | ||
JP2013523038A JPWO2013005777A1 (ja) | 2011-07-04 | 2012-07-04 | 管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2013005777A1 true JPWO2013005777A1 (ja) | 2015-02-23 |
Family
ID=47437124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013523038A Pending JPWO2013005777A1 (ja) | 2011-07-04 | 2012-07-04 | 管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2013005777A1 (ja) |
WO (1) | WO2013005777A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015149076A (ja) * | 2015-03-04 | 2015-08-20 | 株式会社日立製作所 | 管理装置、管理システム、およびデータ管理方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014199553A1 (ja) * | 2013-06-14 | 2014-12-18 | 日本電気株式会社 | 受付ノードによるデータ格納先の決定方法 |
EP3080709A4 (en) * | 2013-09-09 | 2017-07-05 | Unitedlex Corp. | Interactive case management system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004220183A (ja) * | 2003-01-10 | 2004-08-05 | Sony Corp | 情報処理装置および情報処理方法、並びにコンピュータ・プログラム |
JP2006244223A (ja) * | 2005-03-04 | 2006-09-14 | Nippon Telegr & Teleph Corp <Ntt> | P2pコンテンツ転送方法 |
-
2012
- 2012-07-04 WO PCT/JP2012/067098 patent/WO2013005777A1/ja active Application Filing
- 2012-07-04 JP JP2013523038A patent/JPWO2013005777A1/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015149076A (ja) * | 2015-03-04 | 2015-08-20 | 株式会社日立製作所 | 管理装置、管理システム、およびデータ管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2013005777A1 (ja) | 2013-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210004355A1 (en) | Distributed storage system, distributed storage system control method, and storage medium | |
JP6492123B2 (ja) | 分散キャッシングおよびキャッシュ分析 | |
CN103067433B (zh) | 一种分布式存储系统的数据迁移方法、设备和系统 | |
US20150222695A1 (en) | Distributed processing system and method of operating the same | |
US9800575B1 (en) | Assigning storage responsibility in a distributed data storage system with replication | |
JP6222227B2 (ja) | ストレージノード、ストレージノード管理装置、ストレージノード論理容量設定方法、プログラム、記録媒体および分散データストレージシステム | |
JP2011065314A (ja) | ファイル管理方法及びストレージシステム | |
US20130332418A1 (en) | Method of managing data in asymmetric cluster file system | |
JP2010074604A (ja) | データアクセスシステム、データアクセス方法およびデータアクセス用プログラム | |
JP2019504369A (ja) | データチェック方法および記憶システム | |
CN109597903B (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
JP2018181190A (ja) | ストレージ装置、およびストレージ制御プログラム | |
WO2013005777A1 (ja) | 管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラム | |
JP6233403B2 (ja) | ストレージシステム、ストレージ装置、ストレージ装置の制御方法及び制御プログラム、管理装置、管理装置の制御方法及び制御プログラム | |
US11640343B2 (en) | Method for migrating data in a raid system having a protection pool of storage units | |
WO2016073019A1 (en) | Generating a unique identifier for an object in a distributed file system | |
CN109587185B (zh) | 云存储系统和云存储系统中的对象处理方法 | |
JP6241449B2 (ja) | データ管理システム及びデータ管理方法 | |
JP5900096B2 (ja) | レプリケーションシステム、レプリケーションプログラム及びレプリケーション構成の再構築方法 | |
CN111428114A (zh) | Elasticsearch搜索引擎的索引创建方法及装置 | |
JP2014095946A (ja) | 情報処理装置、情報処理システムの制御方法及び情報処理システムの制御プログラム | |
JP6361254B2 (ja) | オブジェクト配置装置、オブジェクト配置方法、及び、プログラム | |
JP6197666B2 (ja) | 記憶装置、複製方法及び複製プログラム | |
CN104572754A (zh) | 一种数据库系统、数据库系统访问方法及装置 | |
JP6279780B1 (ja) | 分散ストレージの非同期リモートレプリケーションシステムおよび分散ストレージの非同期リモートレプリケーション方法 |