(57)【要約】  データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置は、前記複数のデータ記憶部の各識別番号を習得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号であるデータ記憶部の集合をグループとして特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用してデータキーハッシュ値を取得し、前記データキーハッシュ値を所定の割り当て方法に従って前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定された識別番号のグループに対応するデータ記憶部のグループに対応付ける。
2013005777.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置であって、
前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、
を具備する管理装置。
【請求項２】
データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部と、
前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、
を具備する分散記憶システム。
【請求項３】
ハッシュ空間の所定の範囲を割り当てられ、前記範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、
ハッシュ空間において前記マスタの記憶部と同一の範囲を割り当てられ、前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、
を具備する分散記憶システム。
【請求項４】
データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置が行う前記複数のデータ記憶部のアクセス先選択方法であって、
前記複数のデータ記憶部の識別番号を取得し、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、
ことを含むアクセス先選択方法。
【請求項５】
識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムに追加された記憶装置のデータ記憶部設定方法であって、
前記追加された記憶装置に含まれるデータ記憶部の１つをマスタに設定し、
前記追加された記憶装置に含まれる残りのデータ記憶部の各々に、前記追加された記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、
前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、
ことを含むデータ記憶部設定方法。
【請求項６】
識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムの、前記データ記憶部のいずれかに含まれるデータ記憶部の個数が増加した場合のデータ記憶部設定方法であって、
増加した前記データ記憶部の１つをマスタに設定し、
増加した前記データ記憶部のうちマスタに設定されていないデータ記憶部の各々に、前記データ記憶部の個数が増加した記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、
前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、
ことを含むデータ記憶部設定方法。
【請求項７】
データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置としてのコンピュータに、
前記複数のデータ記憶部の識別番号を取得し、
前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、
前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、
読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、
所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、
ことを実行させるためのプログラム。
【請求項８】
ハッシュ空間の所定の範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、
前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、
を具備する分散記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムに関する。
【背景技術】
【０００２】
データを複数の記憶媒体に分散して記憶させるなど、処理対象を分散させる幾つかの方法が知られている。例えば、特許文献１に紹介されているコンシステントハッシングでは、まず、第１の処理として、ノードのアドレスのハッシュ値と、オブジェクトのハッシュ値とを算出する。次に、第２の処理として、第１の処理で得られたノードのハッシュ値及びオブジェクトのハッシュ値を、それぞれ、ノードＩＤおよびオブジェクトＩＤとして設定する。そして、第３の処理として、オブジェクトを、そのオブジェクトのオブジェクトＩＤに最も「近い」ノードＩＤを持つノードに登録する（割り当てる）。このようにして、処理対象であるオブジェクトが、ノードに分散して割り当てられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】日本国特開２０１０−２７２０１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンシステントハッシングは、ノードの増減に柔軟に対応できる。しかしながら、ノードの代替に対する配慮は為されていない。
例えば、ノードがＩＰネットワークに接続され、ノードＩＤとしてＩＰアドレス（Internet Protocol Address）のハッシュ値を用いている分散システムで、ノードの故障対策として代替用のノード（代替ノード）を予め準備しておく場合を想定する。この場合、元のノードと代替ノードとのノードＩＤを一致させるために、両者に同一のＩＰアドレスを付すことが考えられる。
しかし、この場合、元のノードをＩＰネットワークから切り離した後に、代替ノードをＩＰネットワークに接続する必要がある。よって、ノードの交代に時間を要してしまう。また、元のノードと代替ノードとの間で通信を行ってデータのバックアップを取るためには、ＩＰネットワークとは別に通信経路を設ける必要がある。よって、システムを構築する者にとって負担となる。【０００５】
本発明の目的の一例は、上述の課題を解決することのできる管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
この発明は上述した課題を解決するためになされた。本発明の一態様による管理装置は、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する。この管理装置は、前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、を具備する。【０００７】
本発明の一態様による分散記憶システムは、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部と、前記複数のデータ記憶部の識別番号を取得する識別番号取得部と、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当てる特定部と、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得するグループハッシュ部と、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得するデータキーハッシュ部と、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付けるデータ対応付け部と、を具備する。【０００８】
本発明の一態様による分散記憶システムは、ハッシュ空間の所定の範囲を割り当てられ、前記範囲にデータキーハッシュ値が含まれるデータを記憶するマスタの記憶部と、ハッシュ空間において前記マスタの記憶部と同一の範囲を割り当てられ、前記マスタの記憶部が記憶する前記データのコピーを記憶するスレーブの記憶部と、を具備する。【０００９】
本発明の一態様によるアクセス先選択方法は、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置が行う前記複数のデータ記憶部のアクセス先選択方法である。このアクセス先選択方法は、前記複数のデータ記憶部の識別番号を取得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、ことを含む。【００１０】
本発明の一態様によるデータ記憶部設定方法は、識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムに追加された記憶装置のデータ記憶部設定方法である。このデータ記憶部設定方法は、前記追加された記憶装置に含まれるデータ記憶部の１つをマスタに設定し、前記追加された記憶装置に含まれる残りのデータ記憶部の各々に、前記追加された記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、ことを含む。【００１１】
本発明の一態様によるデータ記憶部設定方法は、識別番号を設定された複数のデータ記憶部を含む記憶装置を具備し前記複数のデータ記憶部がグループ分けされている分散記憶システムの、前記データ記憶部のいずれかに含まれるデータ記憶部の個数が増加した場合のデータ記憶部設定方法である。このデータ記憶部設定方法は、増加した前記データ記憶部の１つをマスタに設定し、増加した前記データ記憶部のうちマスタに設定されていないデータ記憶部の各々に、前記データ記憶部の個数が増加した記憶装置以外の記憶装置であって互いに異なる記憶装置に含まれ、かつ、互いに異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させ、前記データおよび識別番号の移動元のデータ記憶部を、前記設定したマスタに対応するスレーブに設定する、ことを含む。【００１２】
本発明の一態様によるプログラムは、データを記憶するとともに複数桁の識別番号を有する複数のデータ記憶部を具備する分散記憶システムを管理する管理装置としてのコンピュータに、前記複数のデータ記憶部の識別番号を取得し、前記識別番号のうちマスク対象の桁として設定されている所定の下位桁を除いた残りの上位桁が同一の識別番号のグループを特定し、特定したグループに、前記マスク対象の桁を所定の値で置き換えて得たグループ番号を割り当て、前記グループ番号にハッシュ関数を適用して得られる値であるグループハッシュ値を取得し、読み書き対象のデータに対応するキーに前記ハッシュ関数を適用して得られる値であるデータキーハッシュ値を取得し、所定の割り当て方法に従って、前記データキーハッシュ値を、前記グループハッシュ値の何れかに割り当てることで、前記読み書き対象のデータを、前記特定部が特定した識別番号のグループに対応するデータ記憶部のグループに対応付ける、ことを実行させる。
【発明の効果】
【００１３】
本発明によれば、ノードの増減に柔軟に対応でき、かつ、より簡単にノードの代替を実行することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態における分散記憶システムの概略構成を示す構成図である。
【図２】図１に示す管理装置の概略構成を示す構成図である。
【図３】図２に示す特定部が行うマスキングの例を二進数表記で示す説明図である。
【図４】本実施形態における、識別番号に対するマスキングおよびハッシングの例を示す説明図である。
【図５】本実施形態における、ハッシュ値をハッシュ空間に配置した例を示す説明図である。
【図６】本実施形態における、データのハッシュ値をハッシュ空間に配置した例を示す説明図である。
【図７】本実施形態において、記憶装置に対してデータの読み書きを行う際の、管理装置の処理手順を示すフローチャートである。
【図８】本実施形態における、同一グループに属するデータ記憶部が異なる記憶装置に含まれる構成の例を示す説明図である。
【図９】本実施形態における、分散記憶システムに新たな記憶装置が追加された構成例を示す説明図である。
【図１０】本実施形態における、データ移動元の記憶装置に、新たなグループのスレーブが設定された構成例を示す説明図である。
【図１１】本実施形態の、図１０に示す構成において、記憶装置内におけるデータ記憶部の並びを整理した構成例を示す説明図である。
【図１２】本実施形態における、追加された識別番号に対応するマスキングおよびハッシングの例を示す説明図である。
【図１３】本実施形態における、追加された識別番号に対応するグループハッシュ値をハッシュ空間に配置した例を示す説明図である。
【図１４】本実施形態における、データ記憶部を追加する処理の手順を示すフローチャートである。
【図１５】本実施形態における、メモリ増設対象の記憶装置を停止させた状態のデータ記憶部の構成例を示す説明図である。
【図１６】本実施形態における、記憶装置を停止させてメモリを増設した状態のデータ記憶部の構成例を示す説明図である。
【図１７】本実施形態における、記憶装置の有するデータ記憶部に、停止前と同様の識別番号が設定された構成例を示す説明図である。
【図１８】本実施形態における、増加分のデータ記憶部の各々に、マスタあるいはスレーブを設定した構成例を示す説明図である。
【図１９】本実施形態における、データ移動元のデータ記憶部に、新たなグループのスレーブが設定された構成例を示す説明図である。
【図２０】本実施形態における、メモリを増設した記憶装置のデータ記憶部が機能回復した状態のデータ記憶部の構成例を示す説明図である。
【図２１】本実施形態における、メモリ増設に際してデータ記憶部を追加する処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本発明の一実施形態における分散記憶システム１の概略構成を示す構成図である。図１において、分散記憶システム１は、複数の記憶装置１００と、１つまたは複数の管理装置２００と、１つまたは複数のクライアント装置３００と、ネットワーク９００とを具備する。記憶装置１００−０〜１００−３１と、管理装置２００と、クライアント装置３００とは、ネットワーク９００に接続されている。
【００１６】
ネットワーク９００は、通信ネットワークである。ネットワーク９００は、クライアント装置３００と、管理装置２００と、記憶装置１００−０〜１００−３１との間で行われる各種通信を媒介する。
記憶装置１００−０〜１００−３１の各々は、ネットワーク９００を介して、管理装置２００からのデータの読み書き要求を受け付け、データ書込要求によって書き込まれるデータを記憶する。以下では、記憶装置１００−０〜１００−３１を「記憶装置１００」と総称する。
【００１７】
記憶装置１００は、本発明におけるデータ記憶部の一例であってよい。図１では１つの記憶装置が１つのデータ記憶部を構成している。しかしながら、本発明の適用範囲はこれに限らない。１つの記憶装置に複数のデータ記憶部が含まれていてもよいし、１つのデータ記憶部が複数の記憶装置で構成されていてもよい。
【００１８】
分散記憶システム１が具備する記憶装置１００の数（およびデータ記憶部の数）は、図１に示す３２個に限られない。記憶装置１００は、２つ以上であればよい。後述する記憶装置１００のグループ分けにおいて各グループに同数のデータ記憶部が含まれることが、データの保全性（冗長性）を各グループで同様とするためには好ましい。しかしながら、グループによって含まれる記憶装置１００の数が異なる構成でも本発明の実施形態を実施することができる。
【００１９】
管理装置２００は、クライアント装置３００からのデータの読み書きの要求を受けると、その要求に従って記憶装置１００に対するデータの読み書きの要求を行う。分散記憶システム１は、１つ以上の管理装置２００を具備していればよい。分散記憶システム１が複数の管理装置２００を具備する場合、各管理装置２００は、同様の機能を有し、クライアント装置３００は、いずれの管理装置２００にアクセスしてもよい。
クライアント装置３００は、記憶装置１００へのデータの読み書きを要求する装置である。クライアント装置３００は、管理装置２００に対して、データの読み書きの要求（記憶装置１００からのデータ読出要求や、記憶装置１００へのデータ書込要求）を送信する。
【００２０】
管理装置２００は、図１に示すように記憶装置１００およびクライアント装置３００と独立した装置として構成されていてもよい。管理装置２００は、記憶装置１００またはクライアント装置３００に含まれて構成されていてもよい。
【００２１】
図２は、管理装置２００の概略構成を示す構成図である。図２において、管理装置２００は、識別番号取得部２０１と、特定部２０２と、グループハッシュ部２０３と、ネットワーク通信部２１１と、データキーハッシュ部２１２と、データ対応付け部２２１と、読み書き処理部２２２とを具備する。
識別番号取得部２０１は、分散記憶システム１の具備する全ての記憶装置１００の識別番号を取得する。識別番号取得部２０１は、その識別番号を予め記憶しておいてもよい。あるいは、識別番号取得部２０１は、各記憶装置１００に対して記憶装置１００の識別番号を問い合わせるなど、他の方法で識別番号を取得してもよい。
【００２２】
記憶装置１００の識別番号（データ記憶部の識別番号）としては、各記憶装置１００に設定されているＩＰアドレス（Internet Protocol Address）の第４オクテット（Octet）を用いる。本実施形態では、記憶装置１００−０〜１００−３１には、それぞれ、ＩＰアドレス「１９２．１６８．０．０」〜「１９２．１６８．０．３１」が設定されている。従って、記憶装置１００−０〜１００−３１の識別番号は、それぞれ、「０」〜「３１」となる。
【００２３】
本発明におけるデータ記憶部の識別番号は、上述したＩＰアドレスの第４オクテッドに限られない。識別番号は、データ記憶部を一意に識別可能なデータであればよい。例えば、データ記憶部の識別番号として、マシン名を用いるようにしてもよいし、識別番号専用に設定された番号を用いるようにしてもよい。識別番号としてＩＰアドレスまたはマシン名などの一般的なデータ（識別番号専用以外のデータ）を用いることで、誤設定のおそれを軽減させることができる。
【００２４】
特定部２０２は、識別番号取得部２０１の取得する記憶装置１００の識別番号の一部にマスクをかけることで、識別番号をグループ分けする。この識別番号のグループ分けによって、記憶装置１００がグループ分けされる。
グループハッシュ部２０３は、特定部２０２がマスクをかけた識別番号の各々をハッシュ関数に代入して（すなわち、マスクをかけた識別番号の各々にハッシュ関数を適用して）ハッシュ値を算出する。すなわち、グループハッシュ部２０３は、特定部２０２が記憶装置１００をグループ分けした各グループについて、そのグループに対応するハッシュ値を算出する。以下ではグループハッシュ部２０３の算出するハッシュ値を「グループハッシュ値」と称する。
【００２５】
ネットワーク通信部２１１は、ネットワーク９００に接続されている。ネットワーク通信部２１１は、クライアント装置３００から送信される、記憶装置１００からのデータ読出要求や、記憶装置１００へのデータ書込要求を受信して、その要求をデータキーハッシュ部２１２に出力する。また、ネットワーク通信部２１１は、読み書き処理部２２２から出力される、特定の記憶装置１００に対するデータ読出要求やデータ書込要求を、ネットワーク９００を介してその記憶装置１００に送信する。ネットワーク通信部２１１は、記憶装置１００からデータが返信されると、読み書き処理部２２２の処理に従って、そのデータを要求元のクライアント装置３００に転送する。
【００２６】
データキーハッシュ部２１２は、ネットワーク通信部２１１から出力されるデータ読出要求やデータ書込要求から、データに対応付けられたキーを読み出す。データキーハッシュ部２１２は、読み出したキーを、グループハッシュ部２０３が用いるハッシュ関数と同一のハッシュ関数に代入してハッシュ値を算出する。以下では、データキーハッシュ部２１２の算出するハッシュ値を「データキーハッシュ値」と称する。
【００２７】
データ対応付け部２２１は、グループハッシュ部２０３の算出するグループハッシュ値と、データキーハッシュ部２１２の算出するデータキーハッシュ値とを取得する。そして、データ対応付け部２２１は、所定の割当方法に従って、データキーハッシュ値を、グループハッシュ値の何れかに割り当てることで、読み書きの対象となっているデータを、記憶装置１００のグループのいずれかに対応付ける。
【００２８】
読み書き処理部２２２は、データ対応付け部２２１がデータを対応付けたグループに含まれる特定の記憶装置１００（本実施形態では識別番号の最も小さい記憶装置１００）に対して、ネットワーク通信部２１１を介して、そのデータの読出要求ないし書込要求を送信する。記憶装置１００がデータを返送すると、読み書き処理部２２２は、ネットワーク通信部２１１を介してそのデータを取得し、取得したデータを、ネットワーク通信部２１１を介してクライアント装置３００に転送する。
【００２９】
次に図３〜６を参照して、管理装置２００が行うマスキングおよびハッシングについて説明する。
図３は、特定部２０２が行うマスキングの例を二進数表記で示す説明図である。
記憶装置１００−２２の識別番号「２２」を二進数で表記すると、図３の（ａ）部に示すように８桁の二進数「０００１０１１０」となる。
【００３０】
本実施形態では、二進数で表記された識別番号のうち下位２桁がマスク対象の桁として設定されている。そこで、特定部２０２は、下位２桁を「００」に置き換えるマスキングを行う。記憶装置１００−２２の場合、このマスキングによって、マスクされた識別番号として図３の（ｂ）部に示す「０００１０１００」を得る。
【００３１】
次に説明するように、このマスクされた識別番号が同一の記憶装置１００で、１つのグループを構成する。すなわち、特定部２０２は、マスクされた識別番号を生成することで、マスク対象の桁として設定されている下位２桁を除いた残りの上位６桁が同一の識別番号のグループを特定する。特定部２０２は、特定したグループ（に含まれる各記憶装置１００）に、マスク対象の桁を「００」で置き換えた、マスクされた識別番号を割り当てる。このようにマスクされた識別番号はグループを識別する番号であり、以下ではこのマスクされた識別番号を「グループ番号」と称する。
【００３２】
図４は、識別番号に対するマスキングおよびハッシングの例を示す説明図である。図４の（ａ）部は、記憶装置１００毎の識別番号の例を１０進数表記で示す。また、図４の（ｂ）部は、グループ番号の例を１０進数表記で示す。図４の（ｃ）部は、グループ番号にハッシュ関数を適用して得られるハッシュ値の例を１０進数表記で示す。
【００３３】
図４の（ｂ）部において、ハイフン「−」の左の数字は、グループ番号を示す。ハイフンの右の数字は、元の（マスキングを行う前の）識別番号を示す。図４の（ｂ）部に示すように、グループ番号は、元の識別番号を４で割った商となっている。従って、記憶装置１００−０〜１００−３が１つのグループを構成し、記憶装置１００−４〜１００−７が１つのグループを構成するというように、４つの記憶装置１００によって１つのグループが構成される。
【００３４】
図４の（ｃ）部において、ハイフンの左の数字は、グループ番号をハッシュ関数に代入して得られるハッシュ値を示す。ハイフンの右の数字は、元の識別番号を示す。次に説明するように、このハッシュ値によって、記憶装置１００は、グループ単位でハッシュ空間に散らばって配置される。
【００３５】
図４の（ｂ）部における「０−０」や「１−４」等に対するハッチング、および、図４の（ｃ）部における「３１−０」や「２００−４」等に対するハッチングは、グループ内で最も小さい識別番号を示している。
この最も小さい識別番号を割り当てられた記憶装置１００は、管理装置２００によるデータの読み書きを受け付けるマスタとなる。他の記憶装置１００は、マスタの有するデータのコピーを記憶するスレーブとなる。このように、記憶装置１００は、グループ毎にマスタスレーブ構造を構築する。
【００３６】
図５は、ハッシュ値をハッシュ空間に配置した例を示す説明図である。図５において、ハッシュ空間ＨＳは、「０」から「３１９」までの、３２０個の整数で構成されている。ハッシュ空間ＨＳは、「０」、「１」、「２」、・・・、「３１９」の順で並んで再び「０」に戻るというように、これらの整数が循環的に配置されている。
【００３７】
このハッシュ空間ＨＳにおいて、例えばハッシュ値「３１」を有する記憶装置１００−０〜１００−３のグループ（図５において番号「０」で示されているグループ）は、ハッシュ空間ＨＳ内の値「３１」の位置に配置されている。ハッシュ値「２００」を有する記憶装置１００−４〜１００−７のグループ（図５において番号「１」で示されているグループ）は、ハッシュ空間ＨＳ内の値「２００」の位置に配置されている。
このように、グループ毎にハッシュ値を割り当てることで、記憶装置１００は、グループ単位でハッシュ空間に散らばって配置されている。
【００３８】
グループハッシュ部２０３は、各グループのグループ番号をハッシュ空間内に散らすことのできる様々なハッシュ関数を用いることができる。
ここでは図を見易くするために、比較的小さいハッシュ空間（３２０個の点で構成される空間）の場合について説明した。しかしながら、各グループをハッシュ空間内に散らし易くするために、グループハッシュ部２０３が、より大きいハッシュ空間を有するハッシュ関数を用いることが望ましい。例えば、グループハッシュ部２０３が、億単位の数の点で構成されるハッシュ空間を有するハッシュ関数を用いることが望ましい。
【００３９】
図６は、データのハッシュ値をハッシュ空間に配置した例を示す説明図である。
例えば、クライアント装置３００から読み書きを要求されたデータのキーに対して、データキーハッシュ部２１２がハッシングを行って得られたデータキーハッシュ値が「５５」の場合について説明する。この場合、図６に示すように、データキーハッシュ値は、記憶装置１００−０〜１００−３のグループのグループハッシュ値「３１」と、記憶装置１００−１６〜１００−１９のグループのグループハッシュ値「７７」との間の点Ｐ１に配置される。
【００４０】
本実施形態では、データ対応付け部２２１は、データキーハッシュ値を、データキーハッシュ値以上のグループハッシュ値のうち最小のものに割り当てる。図６に示す例の場合、データ対応付け部２２１は、データキーハッシュ値「５５」を、ハッシュ空間ＨＳを時計回りに辿って最初に到達するグループハッシュ値「７７」に割り当てる。この割り当てによって、データ対応付け部２２１は、クライアント装置３００から読み書きを要求されたデータを、記憶装置１００−１６〜１００−１９のグループ（グループハッシュ値が「７７」のグループ）に対応付ける。
この対応付けに従って、読み書き処理部２２２は、記憶装置１００−１６〜１００−１９のグループのうち、識別番号の最も小さい記憶装置１００−１６に対してデータの読み書きを行う。
【００４１】
このように、記憶装置１００の各グループには、グループハッシュ値に基づいてハッシュ空間の所定の範囲が割り当てられている。記憶装置１００の各グループは、そのグループに割り当てられた所定の範囲にデータキーハッシュ値が含まれるデータを記憶する。具体的には、マスタの記憶装置１００の各々が、自らに割り当てられた所定の範囲にデータキーハッシュ値が含まれるデータを記憶する。スレーブの記憶装置１００は、対応するマスタの記憶装置１００（同一グループ内のマスタ記憶装置１００）と同一の範囲を割り当てられ、その対応するマスタの記憶装置１００が記憶するデータのコピーを記憶する。
【００４２】
データ対応付け部２２１がデータハッシュ値をグループハッシュ値に割り当てる方法は、上記の方法に限らず、データハッシュ値をグループハッシュ値に一意に対応付け可能な様々な方法を用いることができる。例えば、データ対応付け部２２１が、データキーハッシュ値を、そのデータキーハッシュ値以下のグループハッシュ値のうち最大のものに割り当てるようにしてもよい。
【００４３】
次に、図７を参照して、管理装置２００の動作について説明する。
図７は、記憶装置１００に対してデータの読み書きを行う際の、管理装置２００の処理手順を示すフローチャートである。管理装置２００は、クライアント装置３００から送信される、データの読み書き要求（データ読出要求またはデータ書込要求）をネットワーク通信部２１１にて受信すると、同図の処理を開始する。
【００４４】
図７において、まず、識別番号取得部２０１は、記憶装置１００の各々の識別番号を取得する（ステップＳ１０１）。例えば、識別番号取得部２０１は、管理装置２００の具備する記憶部が、記憶装置１００との通信のために記憶している記憶装置１００の各々のＩＰアドレスから、第４オクテットを読み出すことで識別番号を取得する。このように、管理装置２００が識別番号を予め記憶しておき、識別番号取得部２０１がその識別番号を読み出すようにしてもよい。あるいは、管理装置２００が、記憶装置１００の各々と通信を行って、記憶装置１００の各々から識別番号を受信するようにしてもよい。
【００４５】
次に、特定部２０２は、識別番号取得部２０１が取得した識別番号の各々に対して、図３を参照して説明したマスキングを行なってグループ番号を生成する（ステップＳ１０２）。そして、特定部２０２は、図４に示すように、生成したグループ番号と元の識別番号とを対応付ける。これによって、記憶装置１００の各々にグループ番号が割り当てられ、記憶装置１００がグループ分けされる。
【００４６】
次に、グループハッシュ部２０３は、特定部２０２が生成したグループ番号の各々をハッシュ関数に代入してグループハッシュ値を取得する（算出する）（ステップＳ１０３）。
管理装置２００は、クライアント装置３００からデータの読み書き要求を受ける度に、上記ステップＳ１０１〜Ｓ１０３の処理を行ってもよい。あるいは、管理装置２００は、予めその処理を行って、グループハッシュ値を記憶してもよい。
【００４７】
管理装置２００が、クライアント装置３００からデータの読み書き要求を受ける度にグループハッシュ値を取得する場合、最新の識別番号に基づいて処理を行うことができる。特に、分散記憶システム１が複数の管理装置２００を具備する場合に、管理装置２００毎に処理に違いが生じることを防止できる。一方、管理装置２００がグループハッシュ値を予め記憶しておく場合、管理装置２００の負荷を軽減させることができ、また、より速く処理を行い得る。
【００４８】
図７の処理を開始した後、データキーハッシュ部２１２は、ネットワーク通信部２１１が受信したデータの読み書き要求から、読み書きを行うデータのキー（例えばそのデータのファイル名）を読み出すことで、そのキーを取得する（ステップＳ１１１）。
そして、データキーハッシュ部２１２は、グループハッシュ部２０３が用いるのと同じハッシュ関数に、ステップＳ１１１で読み出したキーを代入して、データキーハッシュ値を取得する（算出する）（ステップＳ１１２）。
【００４９】
そして、データ対応付け部２２１は、図６を用いて説明したように、ステップＳ１１２でデータキーハッシュ部２１２が求めたデータキーハッシュ値を、ステップＳ１０３でグループハッシュ部２０３が求めたグループハッシュ値の何れかに割り当てる（ステップＳ１２１）。これによって、データ対応付け部２２１は、ステップＳ１０２でのマスキングによって特定部２０２がグループ分けを行った、記憶装置１００のグループのいずれかに、読み書き対象のデータを対応付ける。
【００５０】
次に、読み書き処理部２２２は、ステップＳ２２１にてデータ対応付け部２２１がデータの対応付けを行ったグループに含まれる記憶装置１００のうち、識別番号の最も小さい記憶装置１００をマスタとして選択する（ステップＳ１２２）。
読み書き処理部２２２は、ステップＳ１２２でマスタとして選択した記憶装置１００に対して、ネットワーク通信部２１１を介してデータ書込要求ないしデータ読出要求を送信することで、データの読み書きを実行する。
【００５１】
ステップＳ２２１でマスタとして選択した記憶装置１００が故障している場合など、その記憶装置１００に対してデータの読み書きを行えない場合、同じグループの中で、次に識別番号の小さい記憶装置１００をマスタとして選択し、その記憶装置１００に対してデータ書込要求ないしデータ読出要求を送信する。
このように、１つのグループに複数の記憶装置１００が割り当てられてマスタスレーブ構造を構築しているので、マスタが故障した際に速やかにマスタの交代を行うことができる。
【００５２】
以上のように、特定部２０２は、記憶装置１００の識別番号をマスキングすることで、記憶装置１００をグループ分けし、グループ番号を生成する。グループハッシュ部２０３は、特定部２０２が生成したグループ番号をハッシングすることで、記憶装置１００のグループをハッシュ空間に散らばらせる。このように、記憶装置１００がグループ単位でハッシュ空間に配置される。また、グループ内で記憶装置１００がマスタスレーブ構造を構築する。これにより、ハッシュ空間を利用してノード（データ記憶部としての記憶装置１００）の増減に柔軟に対応でき、かつ、マスタスレーブ構造によってノードの代替を実行することができる。
【００５３】
上述したように、１つの記憶装置１００に複数のデータ記憶部が含まれていてもよい。この場合のデータ記憶部は、例えば、物理ノードである記憶装置１００を用いて構築される、仮想マシン（仮想ノード）の記憶装置である。各仮想マシンに設定されるＩＰアドレスの第４オクテットが、識別番号として用いられる。
１つの記憶装置１００に複数のデータ記憶部が含まれる場合、記憶装置１００のいずれかが故障しても全てのグループのデータを保持できるように、同一グループに属するデータ記憶部は、異なる記憶装置１００に含まれている（実装されている）ことが好ましい。
【００５４】
図８は、同一グループに属するデータ記憶部が異なる記憶装置１００に含まれる構成の例を示す説明図である。
図８において、横の並びＮ０〜Ｎ７の各々が記憶装置１００（物理ノード）を示し、縦の並びＧ０〜Ｇ７の各々がデータ記憶部のグループを示す。縦の並びＧ０〜Ｇ２では、１つのグループに属するデータ記憶部が、複数の列に分かれて配置されている。
【００５５】
具体的には、分散記憶システム１は、グループの数と同数（図８の例では８つ）の記憶装置１００を具備している。記憶装置１００の各々には、１つのグループに含まれるデータ記憶部と同数（図８の例では４つ）のデータ記憶部が含まれている。記憶装置１００の各々は、１つのマスタ（識別番号「０」、「４」、「８」、・・・、「２８」のデータ記憶部）と、３つのスレーブ（マスタ以外のデータ記憶部）とを含む。
【００５６】
さらに具体的には、行Ｎｉ（ｉは０≦ｉ≦７の整数）に示される記憶装置１００は、識別番号４・ｉのデータ記憶部をマスタとして含み、識別番号（４・ｉ＋５）ｍｏｄ３２、（４・ｉ＋１０）ｍｏｄ３２、（４・ｉ＋１５）ｍｏｄ３２のデータ記憶部をスレーブとして含む。ここで、「・」は乗算を示し、「ｍｏｄ」は剰余算を示し、「３２」は剰余算における基数である。すなわち、「ｍｏｄ３２」は３２で割った余りを示す。
【００５７】
以下の説明においては、記憶装置１００の各々を、符号Ｎ０〜Ｎ７（図９等では符号Ｎ０〜Ｎ８）を用いて、「記憶装置Ｎ０」のように表記する。また、データ記憶部のグループの各々を、符号Ｇ０〜Ｇ７（図９等では符号Ｇ０〜Ｇ８）を用いて、「グループＧ０」のように表記する。
【００５８】
図８において、グループＧ３に属するデータ記憶部は、それぞれ異なる記憶装置に含まれている。具体的には、識別番号１２、１３、１４、１５のデータ記憶部が、それぞれ、記憶装置Ｎ３、Ｎ２、Ｎ１、Ｎ０に含まれている。このように、１つのグループに属するデータ記憶部の各々が異なる記憶装置に含まれていることで、いずれかの記憶装置が故障しても、故障した記憶装置が記憶するデータ（故障した記憶装置に含まれるデータ記憶部が記憶するデータ）を保持することができる。
【００５９】
次に、図９〜図１３を参照して、図８に示す構成にデータ記憶部を追加する処理の例を示す。
図９は、分散記憶システム１に新たな記憶装置が追加された構成例を示す説明図である。図９において、分散記憶システム１は、図８に示した記憶装置Ｎ０〜Ｎ７に加えて、記憶装置Ｎ８を具備している。
【００６０】
この記憶装置Ｎ８は４つのデータ記憶部を含んでいる。この４つのデータ記憶部の１つが、新たなグループ（グループＧ８）におけるマスタに設定される。図８に示した構成における最大の識別番号「３１」の次の識別番号「３２」が、そのマスタに設定されている。記憶装置Ｎ８における残りのデータ記憶部には、記憶装置Ｎ５〜Ｎ７から、それぞれ異なるグループに属するデータ記憶部（識別番号３、７、１１のデータ記憶部）のデータおよび識別番号が移される（Ｍｏｖｅされる）。
【００６１】
図１０は、データ移動元の記憶装置１００に、新たなグループのスレーブが設定された構成例を示す説明図である。図１０において、図９におけるデータの移動元のデータ記憶部に、新たに設定されたマスタ（識別番号３２のデータ記憶部）に対するスレーブ（識別番号３３〜３５のデータ記憶部）が設定されている。
【００６２】
図１１は、図１０に示す構成において、記憶装置内におけるデータ記憶部の並びを整理した構成例を示す説明図である。図４を参照して説明した、識別番号の二進数表記において下位２桁を「００」に置き換えるマスキングによると、識別番号３２〜３５が同一のグループに含まれる。また、識別番号０〜３が同一のグループに含まれる。図１０で示した構成において、同一グループのデータ記憶部が、同一の縦の並びに配置されるように、記憶装置内で（すなわち、横の並びの各々について）データ記憶部の並びを整理すると、図１１に示す構成となる。
【００６３】
図１２は、追加された識別番号に対応するマスキングおよびハッシングの例を示す説明図である。図１２の（ａ）部に示す識別番号のうち、識別番号３２〜３５が、記憶装置１００の追加に伴って追加された識別番号である。
図７のステップＳ１０２において、特定部２０２は、これら識別番号３２〜３５の各々に対して図３を参照して説明したマスキングを行って、図１２の（ｂ）部に示すように、グループ番号「８」を得る。
さらに、図７のステップＳ１０３において、グループハッシュ部２０３は、グループ番号「８」をハッシュ関数に代入して、図１２の（ｃ）部に示すように、グループハッシュ値「２３４」を算出する。
【００６４】
図１３は、追加された識別番号に対応するグループハッシュ値をハッシュ空間に配置した例を示す説明図である。図１３において、追加された識別番号に対応するグループハッシュ値「２３４」が、グループハッシュ値「２１９」と「２９５」との間に配置されている。
【００６５】
これにより、図７のステップＳ１２１において、データ対応付け部２２１が、データキーハッシュ値をグループハッシュ値に対応付ける際に、グループハッシュ値「２９５」に対応付ける範囲が狭くなっている。すなわち、図５の状態では、データキーハッシュ値が２２０〜２９５の場合にグループハッシュ値「２９５」に対応付けられるのに対し、図１３の状態では、データキーハッシュ値が２３５〜２９５の場合にグループハッシュ値「２９５」に対応付けられる。
【００６６】
これによって、グループハッシュ値「２９５」のグループに含まれるデータ記憶部（識別番号１２〜１５のデータ記憶部）が対応するデータキーハッシュ値の範囲（すなわち、識別番号１２〜１５のデータ記憶部の責任範囲）が狭くなる。
【００６７】
図１４は、図９〜図１１で説明した、データ記憶部を追加する処理の手順を示すフローチャートである。分散記憶システム１のユーザが、図１４に示す処理を行うようにしてもよい。あるいは、管理装置２００が、データ記憶部追加部を具備し、記憶装置１００が増設されたことを検出すると、そのデータ記憶部追加部が、図１４に示す処理を自動で行うようにしてもよい。以下では、データ記憶部追加部が処理を行う場合について説明するが、ユーザが処理を行う場合の処理手順も同様である。
【００６８】
図１４において、データ記憶部追加部は、まず、図９における識別番号３２のデータ記憶部のように、追加された記憶装置１００のデータ記憶部のうちの１つに、既に使用している最大の識別番号の次の識別番号を設定する（ステップＳ２０１）。この識別番号は、新たなグループ内で最も小さい識別番号となる。この識別番号を設定されたデータ記憶部が新たなグループにおけるマスタに設定される。
【００６９】
次に、データ記憶部追加部は、追加された記憶装置１００の残りのデータ記憶部に、他の記憶装置に含まれる、スレーブのデータ記憶部のデータ及び識別番号（すなわち、スレーブのデータ記憶部が記憶するデータ及びそのデータ記憶部に設定された識別番号）を移動させる（ステップＳ２０２）。その際、データ記憶部追加部は、図９における識別番号３、７および１１の各データ記憶部のように、互いに異なる記憶装置１００から、互いに異なるグループに属するデータ記憶部のデータおよび識別番号を移動させる。
【００７０】
さらに、データ記憶部追加部は、図１０における識別番号３３〜３５のデータ記憶部のように、ステップＳ２０２でデータを移動させた元のデータ記憶部に新たな識別番号を設定することで、そのデータ記憶部を新たなグループのスレーブに設定する（ステップＳ２０３）。
ステップＳ２０２において、互いに異なる記憶装置１００からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
【００７１】
データ記憶部追加部は、新たなグループのデータ記憶部に、その責任範囲（図１３の例ではハッシュ値２２０〜２３４）のデータを、責任範囲が減少するグループのデータ記憶部（図１３の例では、識別番号１２〜１５のデータ記憶部）から移動させる（ステップＳ２０４）。
その後、図１３の処理を終了する。
【００７２】
図１０の構成から図１１の構成への、データ記憶部の並びの整理の説明は、図９で説明したデータおよび識別番号の移動前の状態（図９に示す状態）と、移動後の状態（図１１に示す状態）とでの、各部の対応関係を判り易くするために便宜上示した。このデータ記憶部の並びの整理のために、特別な処理は要しない。図１４を参照して説明した処理によって得られた構成の各データ記憶部に対して、図７のステップＳ１０２において、特定部２０２が識別番号のマスキングを行うことで、図１１に示すグループ分けを行うことができる。
【００７３】
以上のように、記憶装置１００が増設された際に、増設された記憶装置１００に含まれるデータ記憶部の１つを新たなグループにおけるマスタに設定する。そして、増設された記憶装置１００に含まれる残りのデータ記憶部の各々に、互いに異なる記憶装置１００から、互い異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させる。さらに、移動元のデータ記憶部を新たなグループにおけるスレーブに設定する。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置１００に含まれるようになる。その結果、いずれかの記憶装置１００が故障した際にも、その記憶装置１００が記憶しているデータを保持することができる。
【００７４】
記憶装置１００の記憶容量が大きい場合、当該記憶装置１００が、１つのグループ分以上のデータ記憶部を含むようにしてもよい。以下、図１５〜図２１を参照して、記憶装置１００のメモリを増設する際のデータ記憶部の設定例について説明する。
【００７５】
図１５は、メモリ増設対象の記憶装置１００を停止させた状態におけるデータ記憶部の構成例を示す説明図である。図８に示す構成において、識別番号２８のデータ記憶部に設定されているマスタを、識別番号２９のデータ記憶部に移行させ、メモリ増設対象の記憶装置１００である記憶装置Ｎ７を停止させることによって、図１５に示す構成を得られる。
【００７６】
上述したように、読み書き処理部２２２が、グループ内で識別番号の最も小さいデータ記憶部をマスタとすることで、特別な処理を必要とせず記憶装置Ｎ７を停止させるだけでマスタを移行させることができる。マスタを移行させることで、記憶装置Ｎ７のメモリ増設作業中においても、分散記憶システム１を稼動させることができる。
【００７７】
図１６は、記憶装置Ｎ７を停止させてメモリを増設した状態におけるデータ記憶部の構成例を示す説明図である。メモリを増設された記憶部Ｎ７では、図１６に示されるように、８つのデータ記憶部が構築される。
【００７８】
図１７は、記憶装置Ｎ７の有するデータ記憶部に、停止前と同様の識別番号が設定された構成例を示す説明図である。記憶装置Ｎ７の停止前と同様の識別番号を設定して、停止前と同様のグループ構成とすることで、記憶装置Ｎ７に含まれるデータ記憶部が機能回復したとき（データ記憶部としてのデータの記憶および読み出しを再開した際）に冗長性を回復させることができる。
【００７９】
図１８は、増加分のデータ記憶部の各々に、マスタあるいはスレーブを設定した構成例を示す説明図である。増加分のデータ記憶部の１つが、新たなグループ（グループＧ８）におけるマスタに設定される。メモリ増設前の構成（図８に示した構成）における最大の識別番号「３１」の次の識別番号「３２」が、新たなグループにおけるマスタに設定されている。残りのデータ記憶部には、記憶装置Ｎ０〜Ｎ２から、それぞれ異なるグループに属するデータ記憶部（識別番号１５、１９、２３のデータ記憶部）のデータおよび識別番号が移される。
【００８０】
図１９は、データ移動元のデータ記憶部に、新たなグループのスレーブが設定された構成例を示す説明図である。図１９において、図１８におけるデータの移動元のデータ記憶部に、新たに設定されたマスタ（識別番号３２のデータ記憶部）に対するスレーブ（識別番号３３〜３５のデータ記憶部）が設定されている。
【００８１】
図２０は、メモリを増設した記憶装置Ｎ７のデータ記憶部が機能回復した状態におけるデータ記憶部の構成例を示す説明図である。上述した、読み書き処理部２２２が、グループ内において識別番号の最も小さいデータ記憶部をマスタとするマスタ選択方法では、図２０の構成において、識別番号２８のデータ記憶部が、グループＧ７におけるマスタとして選択される。そこで、記憶装置Ｎ７のデータ記憶部を機能回復させるに際して、識別番号２８のデータ記憶部から識別番号２９のデータ記憶部にデータをコピーすることで、マスタの移行を可能とする。
【００８２】
図２１は、図１５〜図２０で説明した、メモリ増設に際してデータ記憶部を追加する処理の手順を示すフローチャートである。分散記憶システム１のユーザが、図２１に示す処理を行うようにしてもよい。あるいは、管理装置２００が、メモリ増設対応部を具備し、そのメモリ増設対応部が、図２１に示す処理の一部（例えば記憶装置にメモリを追加する処理以外の処理）を自動で行うようにしてもよい。以下では、メモリ増設対応部が処理を行う場合について説明するが、ユーザが処理を行う場合の処理手順も同様である。
【００８３】
図２１において、メモリ増設対応部は、まず、メモリ増設対象の記憶装置１００（図１５の例では、記憶装置Ｎ７）を停止させる（ステップＳ３０１）。これによって、メモリ増設対象の記憶装置１００に含まれていたマスタは、同じグループのスレーブのうち、識別番号が最も小さいものに移行される。図１５の例では、識別番号２８のデータ記憶部に設定されていたグループＧ７のマスタが、識別番号２９のデータ記憶部に移行している。
【００８４】
次に、ユーザは、記憶装置のメモリを増設する（ステップＳ３０２）。
ユーザがメモリの増設を完了して記憶装置を再起動させると、メモリ増設対応部は、図１７における識別番号２８、１、６および１１の各データ記憶部のように、記憶装置を停止させる前と同様の識別番号を、メモリを増設した記憶装置に含まれるデータ記憶部に設定する（ステップＳ３０３）。
【００８５】
次に、メモリ増設対応部は、図１８における識別番号３２のデータ記憶部のように、メモリ増設前の構成における最大の識別番号の次の識別番号を、メモリを増設した記憶装置に含まれ、ステップＳ３０３で識別番号を設定されていないデータ記憶部の１つに設定する（ステップＳ３０４）。
【００８６】
また、メモリ増設対応部は、メモリを増設した記憶装置に含まれる残りのデータ記憶部に、他の記憶装置に含まれる、スレーブのデータ記憶部のデータ及び識別番号を移動させる（ステップＳ３０５）。その際、データ記憶部追加部は、図１８における識別番号２３、１９および１５の各データ記憶部のように、互いに異なる記憶装置１００から、互いに異なるグループに属するデータ記憶部のデータおよび識別番号を移動させる。
【００８７】
さらに、メモリ増設対応部は、図１９における識別番号３３〜３５のデータ記憶部のように、ステップＳ３０５でデータを移動させた元のデータ記憶部を、新たなグループのスレーブに設定する（ステップＳ３０６）。
ステップＳ３０５において、互いに異なる記憶装置１００からデータを移動させることで、新たなグループのスレーブが、互いに異なるデータ記憶部に含まれるようになっている。
【００８８】
そして、データ記憶部追加部は、図１４のステップＳ２０４と同様に、新たなグループのデータ記憶部に、その責任範囲のデータを、責任範囲が減少するグループのデータ記憶部から移動させる（ステップＳ３０７）。
その後、図２１の処理を終了する。
【００８９】
以上のように、記憶装置１００のメモリが増設された際に、メモリ増設に伴って増設されたデータ記憶部の１つを新たなグループにおけるマスタに設定する。増設されたデータ記憶部のうち残りのデータ記憶部の各々に、互いに異なる記憶装置１００から、互い異なるグループに含まれるデータ記憶部のデータおよび識別番号を移動させる。さらに、移動元のデータ記憶部を新たなグループにおけるスレーブに設定する。
これによって、各グループに含まれるデータ記憶部が、互いに異なる記憶装置１００に含まれるようになる。その結果、いずれかの記憶装置１００が故障した際にも、その記憶装置１００が記憶しているデータを保持することができる。
【００９０】
上述したように、管理装置２００の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。「コンピュータシステム」は、ＯＳや周辺機器等のハードウェアを含む。
「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００９１】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られない。この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００９２】
この出願は、２０１１年７月４日に出願された日本出願特願２０１１−１４８０１１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００９３】
本発明は、管理装置、分散記憶システム、アクセス先選択方法、データ記憶部設定方法およびプログラムに適用することができる。本発明によれば、ノードの増減に柔軟に対応でき、かつ、より簡単にノードの代替を実行することができる。
【符号の説明】
【００９４】
１  分散記憶システム
１００、１００−０〜１００−３１  記憶装置
２００  管理装置
２０１  識別番号取得部
２０２  特定部２０２
２０３  グループハッシュ部
２１１  ネットワーク通信部
２１２  データキーハッシュ部
２２１  データ対応付け部
２２２  読み書き処理部
３００  クライアント装置
９００  ネットワーク
【図１】
2013005777.tif 000003
【図２】
2013005777.tif 000004
【図３】
2013005777.tif 000005
【図４】
2013005777.tif 000006
【図５】
2013005777.tif 000007
【図６】
2013005777.tif 000008
【図７】
2013005777.tif 000009
【図８】
2013005777.tif 000010
【図９】
2013005777.tif 000011
【図１０】
2013005777.tif 000012
【図１１】
2013005777.tif 000013
【図１２】
2013005777.tif 000014
【図１３】
2013005777.tif 000015
【図１４】
2013005777.tif 000016
【図１５】
2013005777.tif 000017
【図１６】
2013005777.tif 000018
【図１７】
2013005777.tif 000019
【図１８】
2013005777.tif 000020
【図１９】
2013005777.tif 000021
【図２０】
2013005777.tif 000022
【図２１】
2013005777.tif 000023
【国際調査報告】
2013005777.tif 000024
2013005777.tif 000025
2013005777.tif 000026
2013005777.tif 000027