(57)【要約】【課題】ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上する。【解決手段】設定されたレプリカ数に基づいて、オブジェクトを分散して格納するストレージシステムの管理装置は、ストレージシステムの空き容量を検出する検出部と、ストレージシステムの空き容量と、オブジェクトを格納するコンテナごとの重要度に対応して設定される小数値を含むレプリカ数の変更情報であって、重要度が低い程、ストレージシステムの空き容量が多い状態からレプリカ数が低下するように設定されているレプリカ数の変更情報を記憶する変更情報記憶部と、ストレージシステムの空き容量と、オブジェクトを格納するコンテナごとの重要度とに対応する変更情報を変更情報記憶部から読み出し、レプリカ数の変更情報に応じて、レプリカ数の下限値を下回らないように、コンテナごとの平均値として小数値を含むレプリカ数の設定を変更する変更部とを備える。【選択図】図１
2019087287.tif 000002
【特許請求の範囲】
【請求項１】
データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納するストレージシステムの管理装置であって、
前記ストレージシステムの空き容量を検出する検出部と、
前記ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部と、
前記検出部が検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更部と
を備えることを特徴とする管理装置。
【請求項２】
前記レプリカ数の上限値及び下限値を記憶するレプリカ数記憶部を備え、
前記変更部は、
前記コンテナと重要度とを関連付けて記憶する重要度記憶部から前記コンテナごとの重要度を取得し、取得した前記コンテナごとの重要度と、前記空き容量とに基づいて、前記レプリカ数記憶部が記憶する前記上限値と前記下限値との間で前記レプリカ数の設定を前記コンテナごとに変更する
ことを特徴とする請求項１に記載の管理装置。
【請求項３】
前記レプリカ数記憶部は、重要度ごとの前記レプリカ数の上限値及び下限値を記憶し、
前記レプリカ数の上限値及び下限値のうちの少なくとも一方は、前記コンテナの重要度に基づいて設定される
ことを特徴とする請求項２に記載の管理装置。
【請求項４】
前記検出部は、定期的に前記ストレージシステムの空き容量を検出し、
前記変更部は、前記検出部が検出したストレージシステム１の空き容量に応じて、前記定期的に前記レプリカ数の設定を変更する
ことを特徴とする請求項１から請求項３のいずれか一項に記載の管理装置。
【請求項５】
請求項１から請求項４のいずれか一項に記載の管理装置と、
前記コンテナにおける平均レプリカ数が、前記管理装置によって設定された前記レプリカ数になるように、前記コンテナの配下に格納されている前記オブジェクトのレプリカ数を調整するサーバ装置と
を備えること特徴とするストレージシステム。
【請求項６】
前記管理装置によって変更された前記レプリカ数に基づいて、格納されている前記オブジェクトの複製が削除又は追加される複数のストレージ装置を備え、
前記サーバ装置は、前記ストレージ装置において、前記オブジェクトの複製を削除又は追加する場合に、前記コンテナの配下に格納されている前記オブジェクトのうち、サイズが大きいオブジェクトを優先する
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納し、ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部を備えるストレージシステムのストレージ管理方法であって、
検出部が、前記ストレージシステムの空き容量を検出する検出ステップと、
変更部が、前記検出ステップにて検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更ステップと
を含むことを特徴とするストレージ管理方法。
【請求項８】
データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納し、ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部を備えるストレージシステムのコンピュータに、
前記ストレージシステムの空き容量を検出する検出ステップと、
前記検出ステップにて検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更ステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置、ストレージシステム、ストレージ管理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、オブジェクトストレージシステム（以下、オブジェクトストレージという）などの分散型のストレージシステムが知られている（例えば、特許文献１を参照）。このようなストレージシステムでは、格納するデータを、例えば、所定のレプリカ（複製）数に分散して格納することでデータの信頼性を確保している。ここで、レプリカ数とは、元データを含めたレプリカ（複製）の数のことである。ストレージシステムでは、レプリカ数が多い程、信頼性は向上するが、ストレージの容量単価は増加する傾向にある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３９６８４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のようなストレージシステムでは、設定されたレプリカ数により保障される信頼性は、最低限保証されるレベルであり、データが損失するリスクを低減するために、可能な限り信頼性を向上させることが望ましい。また、上述のようなストレージシステムでは、ストレージの余剰容量がある場合であっても、レプリカ数に反映されることはなく、ストレージの余剰容量を有効に活用できない可能性があった。
【０００５】
本発明は、上記問題を解決すべくなされたもので、その目的は、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる管理装置、ストレージシステム、ストレージ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明の一態様は、データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納するストレージシステムの管理装置であって、前記ストレージシステムの空き容量を検出する検出部と、前記ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部と、前記検出部が検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更部とを備えることを特徴とする管理装置である。
【０００７】
また、本発明の一態様は、上記の管理装置において、前記レプリカ数の上限値及び下限値を記憶するレプリカ数記憶部を備え、前記変更部は、前記コンテナと重要度とを関連付けて記憶する重要度記憶部から前記コンテナごとの重要度を取得し、取得した前記コンテナごとの重要度と、前記空き容量とに基づいて、前記レプリカ数記憶部が記憶する前記上限値と前記下限値との間で前記レプリカ数の設定を前記コンテナごとに変更することを特徴とする。
【０００８】
また、本発明の一態様は、上記の管理装置において、前記レプリカ数記憶部は、重要度ごとの前記レプリカ数の上限値及び下限値を記憶し、前記レプリカ数の上限値及び下限値のうちの少なくとも一方は、前記コンテナの重要度に基づいて設定されることを特徴とする。
また、本発明の一態様は、上記の管理装置において、前記検出部は、定期的に前記ストレージシステムの空き容量を検出し、前記変更部は、前記検出部が検出したストレージシステム１の空き容量に応じて、前記定期的に前記レプリカ数の設定を変更することを特徴とする。
【０００９】
また、本発明の一態様は、上記の管理装置と、前記コンテナにおける平均レプリカ数が、前記管理装置によって設定された前記レプリカ数になるように、前記コンテナの配下に格納されている前記オブジェクトのレプリカ数を調整するサーバ装置とを備えること特徴とするストレージシステムである。
【００１０】
また、本発明の一態様は、上記のストレージシステムにおいて、前記管理装置によって変更された前記レプリカ数に基づいて、格納されている前記オブジェクトの複製が削除又は追加される複数のストレージ装置を備え、前記サーバ装置は、前記ストレージ装置において、前記オブジェクトの複製を削除又は追加する場合に、前記コンテナの配下に格納されている前記オブジェクトのうち、サイズが大きい前記オブジェクトを優先することを特徴とする。
【００１１】
また、本発明の一態様は、データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納し、ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部を備えるストレージシステムのストレージ管理方法であって、検出部が、前記ストレージシステムの空き容量を検出する検出ステップと、変更部が、前記検出ステップにて検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更ステップとを含むことを特徴とするストレージ管理方法である。
【００１２】
また、本発明の一態様は、データのまとまりであるオブジェクトを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、前記オブジェクトを分散して格納し、ストレージシステムの空き容量と、下位の階層として前記オブジェクトを配下に格納するコンテナごとの重要度に対応して設定される小数値を含む前記レプリカ数の変更情報であって、前記重要度が低い程、前記ストレージシステムの空き容量が多い状態から前記レプリカ数が低下するように設定されている前記レプリカ数の変更情報を記憶する変更情報記憶部を備えるストレージシステムのコンピュータに、前記ストレージシステムの空き容量を検出する検出ステップと、前記検出ステップにて検出した前記ストレージシステムの空き容量と、前記オブジェクトを格納するコンテナごとの重要度とに対応する前記レプリカ数の変更情報を前記変更情報記憶部から読み出し、読み出した前記レプリカ数の変更情報に応じて、予め定められた前記レプリカ数の下限値を下回らないように、前記コンテナごとの平均値として前記小数値を含む前記レプリカ数の設定を変更する変更ステップとを実行させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態によるストレージシステムの一例を示すブロック図である。
【図２】本実施形態におけるリングファイル記憶部の一例を示す図である。
【図３】本実施形態におけるリングファイルのリング情報のデータ例を示す図である。
【図４】本実施形態におけるリングファイルのデバイス一覧情報のデータ例を示す図である。
【図５】本実施形態におけるアカウント情報のデータ例を示す図である。
【図６】本実施形態におけるコンテナ一覧情報のデータ例を示す図である。
【図７】本実施形態におけるコンテナ情報のデータ例を示す図である。
【図８】本実施形態におけるオブジェクト一覧情報のデータ例を示す図である。
【図９】本実施形態におけるレプリカ数記憶部のデータ例を示す図である。
【図１０】本実施形態におけるレプリカ数の変更情報の一例を示す図である。
【図１１】本実施形態におけるストレージの論理階層構造の一例を示す図である。
【図１２】本実施形態におけるレプリカ数の変更処理の一例を示す図である。
【図１３】本実施形態におけるオブジェクトの追加処理の一例を示すフローチャートである。
【図１４】本実施形態におけるレプリカ数の変更処理の一例を示すフローチャートである。
【図１５】本実施形態におけるレプリカ数の調整処理の一例を示すフローチャートである。
【図１６】第２の実施形態によるストレージシステムの一例を示すブロック図である。
【図１７】第２の実施形態におけるレプリカ数記憶部のデータ例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態によるストレージシステム及び管理装置について図面を参照して説明する。
【００１６】
［第１の実施形態］
図１は、第１の実施形態によるストレージシステム１の一例を示すブロック図である。
この図に示すように、ストレージシステム１は、プロキシノード２０と、複数のストレージノード（３１、３２、３３、・・・）と、管理装置１０とを備えている。プロキシノード２０と、ストレージノード（３１、３２、３３、・・・）と、管理装置１０とは、ネットワークＮＴを介して互いに接続されている。また、ストレージシステム１は、ネットワークＮＴを介してクライアント端末２と接続可能になっている。
【００１７】
ストレージシステム１は、例えば、オブジェクトストレージシステムであり、設定されたレプリカ数に基づいて、データを分散して格納する。ここで、レプリカ数とは、データを複製して格納する数を示し、元データを含めたレプリカ（複製）の数のことである。
また、本実施形態では、データのまとまりを「オブジェクト」と称する。ストレージシステム１は、設定されたレプリカ数に基づいて、１つのオブジェクトを複数のストレージノード（３１、３２、３３、・・・）に分散して格納する。
【００１８】
なお、ストレージノード３１、ストレージノード３２、ストレージノード３３、・・・は、それぞれ後述するリングファイル記憶部（３１１、３２１、３３１）を備え、オブジェクトを格納する構成に関して同一である。ストレージノード３１、ストレージノード３２、ストレージノード３３、・・・は、ストレージシステム１が備える任意のストレージノードを示す場合、又は特に区別しない場合には、ストレージノード３０として説明する。
【００１９】
クライアント端末２は、ストレージシステム１が備えるストレージにオブジェクトの書き込み要求や読み出し要求などを送信するコンピュータ装置であり、例えば、エンドユーザの端末装置やネットワークＮＴを介してリソースの提供などのサービスをエンドユーザに提供するサーバ装置である。クライアント端末２は、オブジェクトの書き込みや読み出し、消去などをプロキシノード２０に要求する。
【００２０】
プロキシノード２０は、例えば、サーバ装置であり、クライアント端末２からの要求に応じて、各ストレージノード３０に対して処理を振り分ける。プロキシノード２０は、例えば、クライアント端末２からオブジェクトの書き込み要求を受け付けると、全てのストレージノード３０から、後述するリングファイルにより指定される複数のストレージノード３０を選択し、選択した複数のストレージノード３０に同一のオブジェクトの書き込み要求を送信する。なお、図１に示す一例では、ストレージシステム１は、１つのプロキシノード２０を備える例を説明するが、複数のプロキシノード２０を備えてもよい。
また、プロキシノード２０は、記憶部２１０を備えている。
【００２１】
記憶部２１０は、プロキシノード２０の各種処理に利用する情報を記憶する。記憶部２１０は、例えば、リングファイル記憶部２１１を備えている。
リングファイル記憶部２１１は、リングファイルを記憶する。ここで、リングファイルとは、例えば、データ（例えば、オブジェクト）とそのデータを格納する物理的な位置（サーバ装置、ディスク）を対応づけるテーブル情報である。リングファイルの詳細については、後述する。リングファイル記憶部２１１は、例えば、図２に示すように、データの重要度に対応する複数のリングファイルを記憶する。
【００２２】
図２は、本実施形態におけるリングファイル記憶部２１１の一例を示す図である。
この図に示す例では、リングファイル記憶部２１１は、複数のリングファイル（「リングファイルＡ」、「リングファイルＢ」、・・・）を備えている。なお、リングファイル記憶部２１１が記憶する各リングファイルは、データの重要度に対応しており、本実施形態では、リングファイル記憶部２１１は、重要度ごとのリングファイルを記憶するものとする。
【００２３】
リングファイルは、例えば、オブジェクトの格納先（デバイス）を指定するテーブルであるリング情報と、デバイス一覧情報とを含んでいる。リング情報は、オブジェクト名から算出されるハッシュ値の先頭部分（接頭辞）と、当該先頭部分に対応するオブジェクトの格納場所（デバイスＩＤ、格納場所候補も含む）と、レプリカ数及び重要度とを関連付けた情報である。ここで、ハッシュ値は、格納先が均等に割振られるように、算出されるものとする。
【００２４】
図３は、本実施形態におけるリングファイルのリング情報のデータ例を示す図である。
図３に示すように、リング情報は、例えば、「接頭辞」と、当該「接頭辞」に対応するデバイスＩＤと、「重要度」と、「レプリカ数」とを関連付けた情報である。また、リング情報では、「接頭辞」に対応する「第１のデバイスＩＤ」、「第２のデバイスＩＤ」、「第３のデバイスＩＤ」、・・・を含んでいる。ここで、「接頭辞」は、上述したオブジェクト名から算出されるハッシュ値の先頭部分である。また、「第１のデバイスＩＤ」、「第２のデバイスＩＤ」、「第３のデバイスＩＤ」、・・・は、オブジェクトの格納先のデバイスを識別する識別情報を示す。
【００２５】
図３に示す例では、例えば、「接頭辞」が“００”となるオブジェクトは、格納先として、「第１のデバイスＩＤ」が“３”、「第２のデバイスＩＤ」が“０”、「第３のデバイスＩＤ」が“２”、・・・のデバイスの順に格納されることを示している。また、このリング情報では、「重要度」が“５０”で、設定された「レプリカ数」が“３．０”であることを示している。なお、リング情報は、デバイスが稼働していないことなどを考慮して、設定された「レプリカ数」よりも多くのデバイスを各「接頭辞」に対して指定する。
【００２６】
また、図４は、本実施形態におけるリングファイルのデバイス一覧情報のデータ例を示す図である。
図４に示すように、デバイス一覧情報は、「デバイスＩＤ」と、「ＩＰアドレス」と、「ポート」と、「デバイス名」とを関連付けた情報を複数含んでいる。ここで、「デバイスＩＤ」は、デバイス（サーバ装置、ディスク)を識別する識別情報を示している。また、「ＩＰアドレス」及び「ポート」は、デバイスのＩＰアドレス及びポート番号を示している。また、「デバイス名」は、デバイスの名称を示している。
【００２７】
図４に示す例では、「デバイスＩＤ」の“０”に対応するデバイスの「ＩＰアドレス」が“ｘ．ｘ．ｘ．ｘ”、「ポート」が“８０００”、「デバイス名」が“ＺＺ”であることを示している。
このように、リングファイルは、「レプリカ数」を設定するとともに、オブジェクトの名前から、格納先であるデバイスの「ＩＰアドレス」、「ポート」及び「デバイス名」を特定するようになっている。
【００２８】
図１の説明に戻り、ストレージノード３０（ストレージ装置の一例）は、例えば、ストレージ（記憶装置）を備えるサーバ装置であり、例えば、プロキシノード２０から受信した要求に応じて処理を行う。例えば、プロキシノード２０からオブジェクトの書き込み要求や読み出し要求を受信した場合、ストレージノード３０は、当該オブジェクトを書き込んだり、読み出してプロキシノード２０に送信したりする。
また、ストレージノード３０には、オブジェクトを格納する通常のストレージノード３３の他に、アカウントを管理するストレージノード３１（アカウントサーバ）と、コンテナを管理するストレージノード３２（コンテナサーバ）などがある。ここで、コンテナとは、例えば、オブジェクトを格納する入れ物を示し、ファイルシステムで言えばディレクトリやフォルダに相当する。また、アカウントとは、例えば、コンテナを格納する入れ物を示す。このように、オブジェクトの上位の階層構造がコンテナであり、コンテナの上位の階層がアカウントであり、オブジェクト、コンテナ、及びアカウントは、データの階層構造を示している。
【００２９】
ストレージノード３１（アカウントサーバ）は、例えば、オブジェクトを格納するとともに、アカウントを管理する。ストレージノード３１は、例えば、記憶部３１０を備えている。
記憶部３１０は、ストレージノード３１の各種処理に利用する情報を記憶する。記憶部３１０は、例えば、リングファイル記憶部３１１と、アカウント情報記憶部３１２とを備えている。
【００３０】
リングファイル記憶部３１１は、上述したリングファイル記憶部２１１と同様であるので、ここではその説明を省略する。
アカウント情報記憶部３１２は、アカウントを管理するアカウント管理情報を記憶する。アカウント情報記憶部３１２は、アカウント管理情報として、例えば、アカウント情報と、コンテナ一覧情報とを記憶する。
【００３１】
図５は、本実施形態におけるアカウント情報のデータ例を示す図である。
図５に示すように、アカウント情報記憶部３１２は、例えば、「アカウント名」と、「コンテナ数」と、「名前のハッシュ値」と、「アカウントＩＤ」とを関連付けてアカウント情報として記憶する。ここで、「アカウント名」は、当該アカウントの名称を示し、「名前のハッシュ値」は、「アカウント名」のハッシュ値を示している。また、「コンテナ数」は、当該アカウントの配下に存在するコンテナの数を示し、「アカウントＩＤ」は、アカウントを識別する識別情報を示している。
図５に示す例では、「アカウント名」が“ＡＢＣ”であるアカウントは、配下に“３”個のコンテナを有し、「名前のハッシュ値」が“ＸＸＸＸＸＸＸＸＸＸＸＸ”、「アカウントＩＤ」が“ＹＹＹＹＹＹＹＹ”であることを示している。
【００３２】
また、図６は、本実施形態におけるコンテナ一覧情報のデータ例を示す図である。
図６に示すように、アカウント情報記憶部３１２は、例えば、「ＮＯ．」と、「コンテナ名」と、「作成時刻」と、「削除時刻」と、「名前のハッシュ値」と、「コンテナＩＤ」とを関連付けた情報を複数有するコンテナ一覧情報を記憶する。ここで、「ＮＯ．」は、コンテナ一覧情報の行番号を示し、「コンテナ名」は、当該コンテナの名称を示している。また、「作成時刻」及び「削除時刻」は、当該コンテナの作成時刻及び消去時刻を示し、「名前のハッシュ値」は、当該「コンテナ名」のハッシュ値を示している。また、「コンテナＩＤ」は、コンテナを識別する識別情報を示している。
【００３３】
図６に示す例では、「ＮＯ．」が“１”のコンテナは、「コンテナ名」が“ｔｅｓｔｃｏｎｔ１”であり、「作成時刻」が“２０１４−１０−０１  １０：００：００”であることを示している。また、「名前のハッシュ値」が“ＹＹＹＹＹＹＹＹＹＹＹＹ”であり。「コンテナＩＤ」が“ＺＺＺＺＺ”であることを示している。
【００３４】
再び図１の説明に戻り、ストレージノード３２（コンテナサーバ）は、例えば、オブジェクトを格納するとともに、コンテナを管理する。ストレージノード３２は、例えば、記憶部３２０を備えている。
記憶部３２０は、ストレージノード３２の各種処理に利用する情報を記憶する。記憶部３２０は、例えば、リングファイル記憶部３２１と、コンテナ情報記憶部３２２とを備えている。
【００３５】
リングファイル記憶部３２１は、上述したリングファイル記憶部２１１と同様であるので、ここではその説明を省略する。
コンテナ情報記憶部３２２（重要度記憶部の一例）は、コンテナを管理するコンテナ管理情報を記憶する。コンテナ情報記憶部３２２は、コンテナ管理情報として、例えば、コンテナ情報と、オブジェクト一覧情報とを記憶する。
【００３６】
図７は、本実施形態におけるコンテナ情報のデータ例を示す図である。
図７に示すように、コンテナ情報記憶部３２２は、例えば、「アカウント名」と、「コンテナ名」と、「作成時刻」と、「削除時刻」と、「オブジェクト数」と、「バイト数」と、「名前のハッシュ値」と、「コンテナＩＤ」と、「重要度」とを関連付けてコンテナ情報として記憶する。ここで、「アカウント名」は、上位のアカウントの名称を示し、「コンテナ名」は、当該コンテナの名称を示している。また、「作成時刻」、「削除時刻」、「名前のハッシュ値」、及び「コンテナＩＤ」は、上述したコンテナ一覧情報と同様である。また、「オブジェクト数」及び「バイト数」は、当該コンテナの配下のオブジェクト数及びデータのバイト数を示し、「重要度」は、当該コンテナの重要度を示している。
このように、コンテナ情報記憶部３２２は、データを格納するコンテナ（階層構造）と重要度とを関連付けて記憶する。
【００３７】
図７に示す例では、「アカウント名」が“ＡＢＣ”の配下の「コンテナ名」が“ｔｅｓｔｃｏｎｔ１”であるコンテナ情報を示し、「オブジェクト数」及び「バイト数」が、“１４”個及び“８０９６”バイトであることを示している。また、当該コンテナの「重要度」が“５０”であることを示している。
【００３８】
また、図８は、本実施形態におけるオブジェクト一覧情報のデータ例を示す図である。
図８に示すように、コンテナ情報記憶部３２２は、例えば、「ＮＯ．」と、「オブジェクト名」と、「作成時刻」と、「バイト数」と、「コンテンツ種別」と、「ハッシュ値」と、「削除済フラグ」とを関連付けた情報を複数有するオブジェクト一覧情報を記憶する。ここで、「ＮＯ．」は、オブジェクト一覧情報の行番号を示し、「オブジェクト名」は、当該オブジェクトの名称を示している。また、「作成時刻」は、当該オブジェクトの作成時刻を示し、「バイト数」及び「コンテンツ種別」は、オブジェクトのバイト数及びオブジェクトの種別（例えば、画像、動画、テキストなど）を示している。また、「ハッシュ値」は、当該「オブジェクト名」のハッシュ値を示し、「削除済フラグ」は、当該オブジェクトが削除されたか否かを示している。
【００３９】
図８に示す例では、「ＮＯ．」が“１”のオブジェクトは、「オブジェクト名」が“ｏｂｊ１”であり、「作成時刻」が“２０１４−１０−０２  １０：００：００”であることを示している。また、「バイト数」が“３０７２”バイトであり、「コンテンツ種別」が“ｉｍａｇｅ／ｊｐｅｇ”（ｊｐｅｇ画像）であることを示している。また、「ハッシュ値」が“ＡＡＡＡＡＡＡＡＡＡＡＡ”であり。「削除済フラグ」が“ＮＯ”であることを示している。
なお、上述した例では、説明上、アカウント及びコンテナが１つの例を説明したが、ストレージシステム１は、複数のアカウント及びコンテナを含むものであってもよい。
【００４０】
再び、図１の説明に戻り、ストレージノード３３（３０）は、例えば、オブジェクトを格納し、例えば、記憶部３３０を備えている。
記憶部３３０は、ストレージノード３３の各種処理に利用する情報を記憶する。記憶部３３０は、例えば、リングファイル記憶部３３１を備えている。
リングファイル記憶部３３１は、上述したリングファイル記憶部２１１と同様であるので、ここではその説明を省略する。
【００４１】
管理装置１０は、ストレージシステム１のレプリカ数を管理するコンピュータ装置である。管理装置１０は、例えば、管理記憶部１１０と、管理制御部１２０とを備えている。
管理記憶部１１０は、管理装置１０の各種処理に利用する情報を記憶する。管理記憶部１１０は、例えば、レプリカ数記憶部１１１と、変更情報記憶部１１２とを備えている。
【００４２】
レプリカ数記憶部１１１は、例えば、図９に示すように、レプリカ数の上限値及び下限値を記憶する。なお、本実施形態では、ストレージシステム１全体でのレプリカ数の上限値及び下限値が予め定められており、レプリカ数記憶部１１１は、当該ストレージシステム１全体でのレプリカ数の上限値及び下限値を記憶する。
図９は、本実施形態におけるレプリカ数記憶部１１１のデータ例を示す図である。
この図に示すように、レプリカ数記憶部１１１は、「上限値」と「下限値」とを関連付けて記憶する。ここでの「上限値」は、ストレージシステム１全体でのレプリカ数の上限値を示し、「下限値」は、ストレージシステム１全体でのレプリカ数の下限値を示している。
図９に示し例では、「上限値」が“５”、「下限値」が“２”であることを示している。
【００４３】
再び、図１の説明に戻り、変更情報記憶部１１２は、ストレージシステム１の空き容量に応じて、レプリカ数の設定を変更するレプリカ数の変更情報を記憶する。変更情報記憶部１１２は、例えば、レプリカ数記憶部１１１が記憶する「上限値」と「下限値」との間の範囲において、ストレージシステム１の空き容量に対応したレプリカ数を指定するテーブル情報である。また、変更情報記憶部１１２は、例えば、各コンテナの重要度に応じた、異なる変更情報を記憶してもよい。変更情報記憶部１１２は、例えば、図１０に示すように、ストレージシステム１の空き容量に応じて変更されるテーブル情報を記憶する。
【００４４】
図１０は、本実施形態におけるレプリカ数の変更情報の一例を示す図である。
図１０に示すグラフは、空き容量に対するレプリカ数の設定を示しており、縦軸がレプリカ数を示し、横軸が空き容量（％）を示している。
この図に示すように、レプリカ数の変更情報は、レプリカ数記憶部１１１が記憶する「下限値」の“２”と「上限値」の“５”との間で、空き容量が多い程、レプリカ数の値が大きくなるように設定される。なお、この図において、波形Ｗ１は、最も重要度が高い場合の変更情報の例を示し、波形Ｗ２は、次に重要度が高い場合の変更情報の例を示している。また、波形Ｗ３は、最も重要度が低い場合の変更情報の例を示している。
このように、実施形態では、レプリカ数の変更情報は、重要度に対応して設定されており、重要度が低い程、空き容量が多い状態からレプリカ数が低下するように設定されている。
【００４５】
なお、レプリカ数は、自然数に限定されるものではなく、自然数及び小数を含む実数であってもよい。レプリカ数が小数を含む実数である場合には、ストレージシステム１は、例えば、図１１に示すように、コンテナごとに平均値としてレプリカ数を実現できるように各オブジェクトを複製して格納する。
【００４６】
図１１は、本実施形態におけるストレージの論理階層構造の一例を示す図である。
図１１に示す例は、アカウントＡ１の配下に、例えば、コンテナＣ１がある場合の一例を示している。コンテナＣ１は、「オブジェクト１」（ＯＢ１）と、「オブジェクト２」（ＯＢ２）と「オブジェクト３」（ＯＢ３）とが格納されている。ここで、「オブジェクト１」（ＯＢ１）及び「オブジェクト２」（ＯＢ２）は、それぞれレプリカ数が“３”であり、３カ所に格納されている。また、「オブジェクト３」（ＯＢ３）は、レプリカ数が“２”であり、２カ所に格納されている。この場合、コンテナＣ１全体としてのレプリカ数は、以下の式（１）により、“２．６６６”となる。
【００４７】
レプリカ数＝（３＋３＋２）／３＝２．６６６  ・・・（１）
【００４８】
このように、本実施形態におけるストレージシステム１では、コンテナごとに、小数を含む実数値により、レプリカ数を設定することが可能である。
【００４９】
再び、図１の説明に戻り、管理制御部１２０は、例えば、ＣＰＵ（Central Processing Unit）などを含むプロセッサであり、管理装置１０を統括的に制御する。管理制御部１２０は、例えば、空き容量検出部１２１と、リング変更部１２２とを備えている。
【００５０】
空き容量検出部１２１（検出部の一例）は、ストレージシステム１の空き容量を検出する。空き容量検出部１２１は、所定の時間間隔で定期的に、ストレージシステム１の空き容量を検出する。空き容量検出部１２１は、例えば、各アカウントに対応するアカウントサーバが記憶するアカウント管理情報と、各コンテナに対応するコンテナサーバが記憶するコンテナ管理情報とを取得し、取得したアカウント管理情報及びコンテナ管理情報に基づいて、ストレージシステム１の空き容量を検出する。
【００５１】
リング変更部１２２（変更部の一例）は、空き容量検出部１２１が検出したストレージシステム１の空き容量に応じて、予め定められたレプリカ数の下限値を下回らないように、レプリカ数の設定を変更する。リング変更部１２２は、例えば、データを格納するコンテナと重要度とを関連付けて記憶するコンテナ情報記憶部３２２からコンテナごとの重要度を取得する。リング変更部１２２は、取得したコンテナごとの重要度と、空き容量とに基づいて、レプリカ数記憶部１１１が記憶する上限値と下限値との間でレプリカ数の設定をコンテナごとに変更する。すなわち、リング変更部１２２は、重要度と、空き容量とに基づいて、コンテナごとのレプリカ数を決定し、リングファイル内のレプリカ数を、決定したレプリカ数に変更して、各ノード（プロキシノード２０及びストレージノード３０）に配布する。つまり、リング変更部１２２は、各ノードが記憶するリングファイルを更新する（置き換える）。
【００５２】
例えば、リング変更部１２２は、レプリカ数記憶部１１１が記憶する上限値と下限値とを取得する。上限値が“５”、下限値が“２”である場合に、リング変更部１２２は、変更情報記憶部１１２が記憶する変更情報を参照して、取得したコンテナごとの重要度に対応するレプリカ数（上限値が“５”と下限値が“２”との間にレプリカ数）を決定する。例えば、リング変更部１２２は、図１０に示すように、ストレージシステム１の空き容量に応じて、自然数及び小数を含むレプリカ数に決定する。また、リング変更部１２２は、決定したレプリカ数を反映したリングファイルを生成する。そして、リング変更部１２２は、生成したリングファイルを各ノード（プロキシノード２０及びストレージノード３０）に配布する。
【００５３】
上述したプロキシノード２０は、リングファイル記憶部２１１が記憶するリングファイル内のレプリカ数と、コンテナ情報記憶部３２２が記憶するコンテナ管理情報とを定期的に確認して、リングファイル内のレプリカ数の変更に応じて、各オブジェクトのレプリカ数を変更する。すなわち、プロキシノード２０は、定期的に、各コンテナの平均レプリカ数がリングファイル内のレプリカ数と一致するように、各オブジェクトの複製を削除又は追加して調整する。すなわち、プロキシノード２０は、コンテナにおける平均レプリカ数が、管理装置１０によって設定されたレプリカ数になるように、コンテナの配下に格納されているデータのレプリカ数を調整する。
【００５４】
次に、本実施形態によるストレージシステム１の動作について、図面を参照して説明する。
図１２は、本実施形態におけるレプリカ数の変更処理の一例を示す図である。
図１２において、ストレージシステム１が、「コンテナＡ」〜「コンテナＥ」の５つのコンテナを有する場合の一例を示している。この例では、「コンテナＡ」及び「コンテナＢ」の重要度が“１００”であり、「コンテナＣ」及び「コンテナＤ」の重要度が“５０”であり、「コンテナＣ」の重要度が“１０”であるものとする。なお、重要度は、値が大きい程、重要度が高いものとする。また、この例では、レプリカ数記憶部１１１が記憶する「上限値」が“３”、「下限値」が“２”であるものとする。
【００５５】
図１２（ａ）は、ストレージシステム１の空き容量が大きい状態（例えば、８０％）を示している。この場合、管理装置１０は、重要度が“１００”に対応するリングファイルのレプリカ数を“３”に、重要度が“５０”に対応するリングファイルのレプリカ数を“３”に、重要度が“１０”に対応するリングファイルのレプリカ数を“３”に、それぞれ設定する。この場合、プロキシノード２０は、各コンテナの平均レプリカ数がリングファイル内のレプリカ数と一致するように、各オブジェクトの複製を削除又は追加して調整する。
【００５６】
次に、図１２（ｂ）は、ストレージシステム１の空き容量が図１２（ａ）に比べて減少した状態（例えば、５０％）を示している。この場合、管理装置１０は、重要度が“１００”に対応するリングファイルのレプリカ数を“３”に、重要度が“５０”に対応するリングファイルのレプリカ数を“３”に、重要度が“１０”に対応するリングファイルのレプリカ数を“２．５”に、それぞれ設定する。この場合、プロキシノード２０は、「コンテナＥ」のレプリカ数が、“２．５”と一致するように、「コンテナＥ」のオブジェクトの複製を削除して調整する。
【００５７】
次に、図１２（ｃ）は、ストレージシステム１の空き容量が図１２（ｂ）から更に減少した状態（例えば、１０％）を示している。この場合、管理装置１０は、重要度が“１００”に対応するリングファイルのレプリカ数を“３”に、重要度が“５０”に対応するリングファイルのレプリカ数を“２．６”に、重要度が“１０”に対応するリングファイルのレプリカ数を“２”に、それぞれ設定する。この場合、プロキシノード２０は、「コンテナＣ」及び「コンテナＤ」のレプリカ数が、“２．６”と一致するように、「コンテナＣ」及び「コンテナＤ」のオブジェクトの複製を削除して調整する。また、プロキシノード２０は、「コンテナＥ」のレプリカ数が、“２”と一致するように、「コンテナＥ」のオブジェクトの複製を削除して調整する。
【００５８】
このように、管理装置１０（リング変更部１２２）は、ストレージシステム１の空き容量に基づいて、レプリカ数記憶部１１１が記憶する上限値と下限値との間でレプリカ数の設定をコンテナごとに変更する。
【００５９】
次に、図１３を参照して、本実施形態におけるストレージシステム１のオブジェクトの追加処理の動作について説明する。
図１３は、本実施形態におけるオブジェクトの追加処理の一例を示すフローチャートである。
【００６０】
この図において、まず、プロキシノード２０は、オブジェクトの追加依頼があるか否かを判定する（ステップＳ１０１）。すなわち、プロキシノード２０は、例えば、クライアント端末２からネットワークＮＴを介して、オブジェクトの追加依頼があるか否かを判定する。プロキシノード２０は、オブジェクトの追加依頼がある場合（ステップＳ１０１：ＹＥＳ）に、処理をステップＳ１０２に進める。また、プロキシノード２０は、オブジェクトの追加依頼がない場合（ステップＳ１０１：ＮＯ）に、処理をステップＳ１０１に戻す。
【００６１】
ステップＳ１０２において、プロキシノード２０は、コンテナの管理情報を取得する。すなわち、プロキシノード２０は、ストレージノード３３（コンテナサーバ）のコンテナ情報記憶部３２２が記憶するコンテナ管理情報（図７及び図８参照）を取得する。ここでは、プロキシノード２０は、例えば、コンテナの重要度を取得する。
【００６２】
次に、プロキシノード２０は、コンテナに対応するリングファイルを参照する（ステップＳ１０３）。すなわち、プロキシノード２０は、コンテナの重要度に対応するリングファイルを、リングファイル記憶部２１１から参照する。
【００６３】
次に、プロキシノード２０は、参照したリングファイルに基づいて、追加するオブジェクトの配置を決定する（ステップＳ１０４）。プロキシノード２０は、リングファイル内のレプリカ数の設定に基づいて、リングファイル内のリング情報（図３参照）により指定される複数のデバイスを決定する。ここで、プロキシノード２０は、リング情報の「デバイスＩＤ」に対応するデバイスを図４に示すデバイス一覧情報により特定する。プロキシノード２０は、決定したオブジェクトの配置を各ストレージノード３０のデバイスに指示する。
【００６４】
次に、ストレージノード３０は、オブジェクトの配置指示に基づいて、オブジェクトを配置する（ステップＳ１０５）。すなわち、ストレージノード３０は、オブジェクトの配置指示に基づいて、オブジェクトを追加する。
【００６５】
次に、プロキシノード２０は、コンテナの管理情報を更新する（ステップＳ１０６）。すなわち、プロキシノード２０は、例えば、オブジェクトを追加したストレージノード３３（コンテナサーバ）のコンテナ情報記憶部３２２が記憶するコンテナ管理情報にオブジェクトを追加する。プロキシノード２０は、例えば、コンテナ情報記憶部３２２が記憶するコンテナ情報の「オブジェクト数」及び「バイト数」を変更するとともに、オブジェクト一覧情報に追加したオブジェクトに対応する行を追加する。ステップＳ１０６の処理後に、プロキシノード２０は、処理をステップＳ１０１に戻す。
【００６６】
なお、上述した図１３に示す例では、オブジェクトを追加する場合の一例を説明したが、オブジェクトを削除する場合も基本的には図１３に示す処理と同様である。但し、オブジェクトを削除する場合には、プロキシノード２０は、コンテナ情報記憶部３２２が記憶するオブジェクト一覧情報において、削除するオブジェクトに対応する行の「削除済フラグ」を“ＹＥＳ”に変更する。
【００６７】
次に、図１４を参照して、本実施形態におけるストレージシステム１のレプリカ数の変更処理の動作について説明する。
図１４は、本実施形態におけるレプリカ数の変更処理の一例を示すフローチャートである。なお、図１４に示す処理は、所定の時間間隔（例えば、数分単位、又は数時間単位）で定期的に実行されるものとする。
【００６８】
この図において、まず、管理装置１０は、ストレージシステム１の空き容量を検出する（ステップＳ２０１）。すなわち、管理装置１０の空き容量検出部１２１は、例えば、各アカウントに対応するアカウントサーバが記憶するアカウント管理情報と、各コンテナに対応するコンテナサーバが記憶するコンテナ管理情報とを取得する。空き容量検出部１２１は、取得したアカウント管理情報及びコンテナ管理情報に基づいて、ストレージシステム１の空き容量を検出する。
【００６９】
次に、管理装置１０は、空き容量に応じてレプリカ数を決定する（ステップＳ２０２）。すなわち、管理装置１０のリング変更部１２２は、空き容量検出部１２１が検出した空き容量に基づいてレプリカ数を決定する。具体的に、リング変更部１２２は、変更情報記憶部１１２が記憶する変更情報と、空き容量とに基づいて、レプリカ数記憶部１１１が記憶するレプリカ数の上限値及び下限値の範囲に収まるように、重要度ごとのレプリカ数を決定する。ここで決定されるレプリカ数は、自然数及び小数を含む実数の値である。
【００７０】
次に、リング変更部１２２は、リングファイルを生成する（ステップＳ２０３）。すなわち、リング変更部１２２は、決定した重要度ごとのレプリカ数に基づいて、重要度ごとのリングファイルを生成する。具体的に、リング変更部１２２は、例えば、現在のリングファイル内のレプリカ数を変更したリングファイルを生成する。なお、本実施形態では、コンテナ情報記憶部３２２が記憶するコンテナ情報に「重要度」が記憶されており、コンテナごとに重要度が定められている。そのため、リング変更部１２２は、リングファイルのレプリカ数を変更することにより、コンテナ単位によりレプリカ数を変更することになる。
【００７１】
次に、リング変更部１２２は、生成したリングファイルを配布する（ステップＳ２０４）。すなわち、リング変更部１２２は、生成した重要度ごとのリングファイルをプロキシノード２０及びストレージノード３０に送信する。これにより、プロキシノード２０及びストレージノード３０は、受信したリングファイルをリングファイル記憶部（２１１、３１１、３２１、３３１）に記憶させて、リングファイルを更新する。これにより、各ノード（プロキシノード２０及びストレージノード３０）が保持するリングファイル内に設定されたレプリカ数が更新される。ステップＳ２０４の処理後に、リング変更部１２２は、処理を終了する。
【００７２】
次に、図１５を参照して、ストレージシステム１において、更新されたリングファイルに基づいて、ストレージノード３０のコンテナごとのレプリカ数が変更されるレプリカ数の調整処理について説明する。
図１５は、本実施形態におけるレプリカ数の調整処理の一例を示すフローチャートである。なお、図１５に示す処理は、所定の時間間隔（例えば、数分単位など）で定期的に実行されるものとする。
【００７３】
この図において、まず、ストレージシステム１は、リングファイルを確認する（ステップＳ３０１）。例えば、プロキシノード２０が、リングファイル記憶部２１１に記憶されている各リングファイルを確認する。プロキシノード２０は、例えば、リングファイルの重要度及びレプリカ数を確認する。
【００７４】
次に、プロキシノード２０は、リングファイルに対応するコンテナのオブジェクトを確認する（ステップＳ３０２）。プロキシノード２０は、例えば、コンテナ情報記憶部３２２が記憶するコンテナ管理情報を取得して、コンテナ管理情報の重要度が一致するリングファイルにより、コンテナ内のオブジェクトを確認する。プロキシノード２０は、例えば、現在のコンテナ内の平均レプリカ数を算出する。
【００７５】
次に、プロキシノード２０は、オブジェクトの配置の変更が必要である否かを判定する（ステップＳ３０３）。すなわち、プロキシノード２０は、リングファイルに設定されたレプリカ数と、現在のコンテナ内の平均レプリカ数とが一致するか否かをコンテナごとに判定する。プロキシノード２０は、オブジェクトの配置の変更が必要である場合（ステップＳ３０３：ＹＥＳ）に、処理をステップＳ３０４に進める。また、プロキシノード２０は、オブジェクトの配置の変更が必要ない場合（ステップＳ３０３：ＮＯ）に、処理を終了する。
【００７６】
ステップＳ３０４において、プロキシノード２０は、複製（レプリカ）を増減するオブジェクトを決定する。すなわち、プロキシノード２０は、変更は必要なコンテナにおいて、リングファイルに設定されたレプリカ数と、コンテナ内の平均レプリカ数とが一致するように、削除又は追加するオブジェクトを決定する。なお、プロキシノード２０は、オブジェクトの複製を削除又は追加する場合に、コンテナ内のオブジェクトのうち、サイズが大きいオブジェクトを優先する。すなわち、プロキシノード２０は、ストレージノード３０において、オブジェクトの複製を削除又は追加する場合に、コンテナの配下に格納されているオブジェクトのうち、サイズが大きいオブジェクトを優先する。
【００７７】
次に、プロキシノード２０は、決定したオブジェクトを削除又は追加する（ステップＳ３０５）。プロキシノード２０は、決定したオブジェクトの削除又は追加するストレージノード３０に、決定したオブジェクトの削除又は追加を指示する。ストレージノード３０は、プロキシノード２０からの指示に基づいて、オブジェクトの削除又は追加を実行する。なお、オブジェクトの削除又は追加は、対応するリングファイルにより設定されているデバイスに対して実行される。
【００７８】
次に、プロキシノード２０は、コンテナの管理情報を更新する（ステップＳ３０６）。すなわち、プロキシノード２０は、コンテナ情報記憶部３２２が記憶するコンテナ管理情報のうち、オブジェクトの削除又は追加を実行したコンテナに対応するコンテナ管理情報を更新する。ステップＳ３０６の処理後に、プロキシノード２０は、処理を終了する。
【００７９】
このように、ストレージシステム１では、プロキシノード２０が、定期的に、リングファイル及びコンテナ管理情報を確認することにより、リングファイルのレプリカ数の設定の変更に応じた、レプリカ数になるようにコンテナごとに調整する。
【００８０】
以上説明したように、本実施形態による管理装置１０は、設定されたレプリカ数に基づいて、データ（例えば、オブジェクト）を分散して格納するストレージシステム１の管理装置であって、空き容量検出部１２１（検出部）と、リング変更部１２２（変更部）とを備えている。ここで、レプリカ数は、例えば、データを複製して格納する数を示す。空き容量検出部１２１は、ストレージシステム１の空き容量を検出する。リング変更部１２２は、空き容量検出部１２１が検出したストレージシステム１の空き容量に応じて、予め定められたレプリカ数の下限値を下回らないように、レプリカ数の設定を変更する。
これにより、本実施形態による管理装置１０は、例えば、空き容量が多い場合に、レプリカ数を増やし、例えば、空き容量が少ない場合にレプリカ数を減らす等、空き容量に応じて、格納データの信頼性を高めることができる。よって、本実施形態による管理装置１０は、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる。
【００８１】
また、本実施形態では、管理装置１０は、レプリカ数の上限値及び下限値を記憶するレプリカ数記憶部１１１を備えている。リング変更部１２２は、データを格納するコンテナ（階層構造）と重要度とを関連付けて記憶するコンテナ情報記憶部３２２（重要度記憶部）からコンテナごとの重要度を取得する。リング変更部１２２は、取得したコンテナごとの重要度と、空き容量とに基づいて、レプリカ数記憶部１１１が記憶する上限値と下限値との間でレプリカ数の設定をコンテナごとに変更する。
これにより、本実施形態による管理装置１０は、レプリカ数記憶部１１１が記憶する上限値と下限値との間で、コンテナごとの重要度と、空き容量とに基づいて、適切にレプリカ数を変更することができる。
【００８２】
また、本実施形態では、リング変更部１２２は、レプリカ数を変更したリングファイルを生成し、生成したリングファイルをプロキシノード２０（代理装置）及びストレージノード３０（ストレージ装置）に送信する。
これにより、空き容量及び重要度に応じて、レプリカ数を変更したリングファイルをプロキシノード２０及びストレージノード３０に提供することにより、本実施形態による管理装置１０は、従来のオブジェクトストレージを利用しつつ、より簡易な方法により動的にレプリカ数を変更することができる。
【００８３】
また、本実施形態によるストレージシステム１は、上述した管理装置１０と、コンテナ（階層構造）における平均レプリカ数が、管理装置１０によって設定されたレプリカ数になるように、コンテナの配下に格納されているデータのレプリカ数を調整するプロキシノード２０とを備えている。
これにより、本実施形態によるストレージシステム１は、例えば、レプリカ数に小数値を設定することができ、レプリカ数を設定する自由度を上げることができる。
【００８４】
また、本実施形態によるストレージシステム１は、管理装置１０によって変更されたレプリカ数に基づいて、格納されているデータの複製が削除又は追加される複数のストレージノード３０（ストレージ装置）を備えている。プロキシノード２０は、ストレージノード３０において、データの複製を削除又は追加する場合に、コンテナ（階層構造）の配下に格納されているデータのうち、サイズが大きいデータを優先する。
これにより、レプリカ数が変更された場合に、例えば、サイズの大きいオブジェクトからレプリカ数を変更するので、本実施形態によるストレージシステム１は、空き容量の変化により迅速に対応することができる。そのため、本実施形態によるストレージシステム１は、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる。
【００８５】
また、本実施形態によるストレージ管理方法は、データを複製して格納する数を示すレプリカ数であって、設定されたレプリカ数に基づいて、データを分散して格納するストレージシステム１のストレージ管理方法であって、検出ステップと、変更ステップとを含んでいる。検出ステップにおいて、管理装置１０は、ストレージシステム１の空き容量を検出する。変更ステップにおいて、管理装置１０は、検出ステップにて検出したストレージシステム１の空き容量に応じて、予め定められたレプリカ数の下限値を下回らないように、レプリカ数の設定を変更する。
これにより、本実施形態によるストレージ管理方法は、上述した管理装置１０及びストレージシステム１と同様に、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる。
【００８６】
［第２の実施形態］
次に、第２の実施形態によるストレージシステム及び管理装置について図面を参照して説明する。
本実施形態では、重要度に応じて、レプリカ数の上限値及び下限値を変更する点が、上述した第１の実施形態と異なる。
【００８７】
図１６は、第２の実施形態によるストレージシステム１ａの一例を示すブロック図である。
この図に示すように、ストレージシステム１ａは、プロキシノード２０と、複数のストレージノード（３１、３２、３３、・・・）と、管理装置１０ａとを備えている。プロキシノード２０と、ストレージノード（３１、３２、３３、・・・）と、管理装置１０ａとは、ネットワークＮＴを介して互いに接続される。また、ストレージシステム１ａは、ネットワークＮＴを介してクライアント端末２と接続可能になっている。
なお、この図において、図１に示す構成と同一の構成については同一の符号を付し、その説明を省略する。
【００８８】
管理装置１０ａは、ストレージシステム１ａのレプリカ数を管理するコンピュータ装置である。管理装置１０ａは、例えば、管理記憶部１１０ａと、管理制御部１２０ａとを備えている。
管理記憶部１１０ａは、管理装置１０ａの各種処理に利用する情報を記憶する。管理記憶部１１０ａは、例えば、レプリカ数記憶部１１１ａと、変更情報記憶部１１２とを備えている。
【００８９】
レプリカ数記憶部１１１ａは、例えば、図１７に示すように、レプリカ数の上限値及び下限値を記憶する。なお、本実施形態では、重要度ごとに、レプリカ数の上限値及び下限値が予め定められており、レプリカ数記憶部１１１ａは、重要度と、レプリカ数の上限値及び下限値とをかん関連付けて記憶する。
図１７は、本実施形態におけるレプリカ数記憶部１１１ａのデータ例を示す図である。
この図に示すように、レプリカ数記憶部１１１ａは、「重要度」と、「上限値」と、「下限値」とを関連付けて記憶する。ここでの「重要度」は、例えば、コンテナごとに設定される重要度のことである。
図１７に示し例では、「重要度」が“１００”の場合に、「上限値」が“５”、「下限値」が“３”であることを示している。また、「重要度」が“１０”の場合に、「上限値」が“３”、「下限値」が“２”であることを示している。
このように、レプリカ数記憶部１１１ａは、重要度ごとのレプリカ数の上限値及び下限値を記憶する。なお、上述した図１７に示す例では、重要度ごとに、レプリカ数の上限値及び下限値を変更する一例を説明したが、レプリカ数の上限値及び下限値のうちの少なくとも一方が重要度ごと変更されるようにしてもよい。
【００９０】
図１６の説明に戻り、本実施形態の変更情報記憶部１１２は、第１の実施形態と同様であるが、重要度ごとのレプリカ数の上限値及び下限値が設定される点において異なる。
【００９１】
管理制御部１２０ａは、例えば、ＣＰＵなどを含むプロセッサであり、管理装置１０ａを統括的に制御する。管理制御部１２０ａは、例えば、空き容量検出部１２１と、リング変更部１２２ａと、重要度変更部１２３とを備えている。
【００９２】
リング変更部１２２ａは、基本的には第１の実施形態におけるリング変更部１２２と同様であるが、レプリカ数記憶部１１１ａが記憶する重要度ごとの上限値及び下限値を用いる点が異なる。リング変更部１２２ａは、コンテナ情報記憶部３２２からコンテナごとの重要度を取得し、取得したコンテナごとの重要度に対応するレプリカ数の上限値及び下限値をレプリカ数記憶部１１１ａから取得する。リング変更部１２２ａは、取得したレプリカ数の上限値と下限値との間でレプリカ数の設定をコンテナごとに変更する。
【００９３】
重要度変更部１２３（変更部の一例）は、例えば、クライアント端末２からの変更要求に応じて、コンテナごとの重要度を変更する。重要度変更部１２３は、取得した変更要求に基づいて、コンテナ情報記憶部３２２が記憶する「重要度」の値を変更する。なお、重要度変更部１２３は、クライアント端末２からの変更要求の他に、各コンテナへのアクセス頻度に応じて、重要度を変更するようにしてもよい。すなわち、重要度変更部１２３は、各コンテナに対するアクセス頻度を検出し、例えば、アクセス頻度の高いコンテナの重要度を高める処理を実行する。本実施形態のストレージシステム１ａでは、アクセス頻度の高いコンテナの重要度が高められることにより、当該コンテナに対応するレプリカ数の上限値及び下限値が変更され、格納データの信頼性が向上される。
【００９４】
以上説明したように、本実施形態による管理装置１０ａは、レプリカ数記憶部１１１ａは、重要度ごとのレプリカ数の上限値及び下限値を記憶する。ここで、レプリカ数の上限値及び下限値のうちの少なくとも一方は、コンテナ（階層構造）の重要度に基づいて設定される。
これにより、本実施形態による管理装置１０ａは、重要度に応じて、レプリカ数をコンテナごとに柔軟に変更することができる。
【００９５】
また、本実施形態による管理装置１０ａは、各コンテナへのアクセス頻度に応じて、重要度を変更する重要度変更部１２３を備えている。
これにより、本実施形態による管理装置１０ａは、コンテナへのアクセス頻度に応じて、ストレージの余剰容量を有効に活用しつつ、格納データの信頼性を動的に向上させることができる。
【００９６】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の各実施形態において、階層構造の一例として、コンテナごとに、重要度を設定する例を説明したが、これに限定されるものではなく、オブジェクトごと、アカウントごとに、重要度を設定するようにしてもよい。
【００９７】
また、上記の各実施形態において、重要度ごとにリングファイルが設けられている例を説明したが、これに限定されるものではなく、例えば、コンテナごとにリングファイルが設けられていてもよい。
また、上記の各実施形態において、レプリカ数の調整処理をプロキシノード２０が実行する例を説明したが、コンテナサーバ（ストレージノード３２）などの他の装置が実行するようにしてもよい。
また、プロキシノード２０が、レプリカ数の調整処理を定期的に実行する例を説明したが、これに限定されるものではなく、オブジェクトの追加又は削除（消去）の要求がクライアント端末２からあった場合、レプリカ数の調整処理を実行するようにしてもよい。
【００９８】
また、上記の各実施形態において、管理装置１０（１０ａ）は、１つの装置で実現する例を説明したが、複数のサーバ装置により実現されてもよい。また、管理記憶部１１０（１１０ａ）の一部又は全部を管理装置１０（１０ａ）の外部に備えるようにしてもよい。
また、管理装置１０（１０ａ）は、変更情報記憶部１１２を備える例を説明したが、変更情報記憶部１１２を備える代わりに、演算などの他の手段により、上限値と下限値との間のレプリカ数を生成するようにしてもよい。
【００９９】
上記の各実施形態において、データ（例えば、オブジェクト）の複製を削除又は追加する場合に、サイズが大きいデータ（例えば、オブジェクト）を優先する例を説明したが、これに限定されるものではい。例えば、削除又は追加するデータ（例えば、オブジェクト）は、ランダムに決定されてもよいし、他のルールに従って決定されてもよい。
【０１００】
なお、上述したストレージシステム１（１ａ）が備える各構成は、内部に、コンピュータシステムを有している。そして、上述したストレージシステム１（１ａ）が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したストレージシステム１（１ａ）が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。
【０１０１】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後にストレージシステム１（１ａ）が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１０２】
また、上述した機能の一部又は全部を、ＬＳＩ（Large Scale Integration）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【０１０３】
１、１ａ  ストレージシステム
２  クライアント端末
１０、１０ａ  管理装置
２０  プロキシノード
３０、３３  ストレージノード
３１  ストレージノード（アカウントサーバ）
３２  ストレージノード（コンテナサーバ）
１１０、１１０ａ  管理記憶部
１１１、１１１ａ  レプリカ数記憶部
１１２  変更情報記憶部
１２０、１２０ａ  管理制御部
１２１  空き容量検出部
１２２、１２２ａ  リング変更部
１２３  重要度変更部
２１０、３１０、３２０、３３０  記憶部
２１１、３１１、３２１、３３１  リングファイル記憶部
３１２  アカウント情報記憶部
３２２  コンテナ情報記憶部
ＮＴ  ネットワーク
【図１】
2019087287.tif 000003
【図２】
2019087287.tif 000004
【図３】
2019087287.tif 000005
【図４】
2019087287.tif 000006
【図５】
2019087287.tif 000007
【図６】
2019087287.tif 000008
【図７】
2019087287.tif 000009
【図８】
2019087287.tif 000010
【図９】
2019087287.tif 000011
【図１０】
2019087287.tif 000012
【図１１】
2019087287.tif 000013
【図１２】
2019087287.tif 000014
【図１３】
2019087287.tif 000015
【図１４】
2019087287.tif 000016
【図１５】
2019087287.tif 000017
【図１６】
2019087287.tif 000018
【図１７】
2019087287.tif 000019