(57)【要約】【課題】ライトオフローディング機能を備えた分散ストレージシステムを省電力制御する際のデータ転送量を削減する。【解決手段】分散ストレージシステム。一の新規オブジェクトに相当する複数のオブジェクトを分散配置する複数のノードを選択する際、選択したノードの組み合わせが、一方が他方のライトオフローディング先にならないように選択する。【選択図】図８
2014021544.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがストレージとして動作する複数のノードを備える分散ストレージシステムであって、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記分散ストレージシステムは、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含み、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する生成時データ配置先決定手段を備える
ことを特徴とする分散ストレージシステム。
【請求項２】
前記生成時データ配置先決定手段は、
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする請求項１に記載の分散ストレージシステム。
【請求項３】
前記Ｘ台のノードを選択する過程で、ライトオフローディング先のノードとして予め定められたノードであって未選択なものの台数が、前記Ｘ台よりも少ない場合、前記生成時データ配置先決定手段は、当該未選択のライトオフローディング先のノードを以後の選択候補から除外することを特徴とする請求項１及び請求項２のいずれかに記載の分散ストレージシステム。
【請求項４】
ライトオフローディング先のノードとして予め定められたノードのうち、未選択なノードの台数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のライトオフローディング先のノードを選択候補から除外することを特徴とする請求項１及び請求項２のいずれかに記載の分散ストレージシステム。
【請求項５】
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む
分散ストレージシステムとともに用いる装置であって、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する
ことを特徴とする生成時データ配置先決定装置。
【請求項６】
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする請求項５に記載の生成時データ配置先決定装置。
【請求項７】
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、
前記複数のノードの少なくとも一部である複数のノードが前記第１の動作モードにて動作する段階と、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する段階と、
前記Ｘ個のデータオブジェクトを他のノードにマイグレーションすることなく、前記選択したＸ台のノードの少なくとも一部を第２の動作モードに移行させる段階と
を含むことを特徴とする分散配置ノード選択方法。
【請求項８】
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする請求項７に記載の分散配置ノード選択方法。
【請求項９】
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する手順をコンピュータに実行させるためのプログラム。
【請求項１０】
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、それぞれがストレージとして機能する多数の計算機を、ネットワークを介して互いに接続してなるシステム、即ち、分散ストレージシステムに関し、特に、分散ストレージシステムの省電力化に関する。
【背景技術】
【０００２】
分散ストレージシステムは、ネットワークを介して接続された多数の計算機を有し、これらの計算機のハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、メモリ等を用いてデータの格納およびデータの提供を行う。分散ストレージシステムでは、いずれの計算機にデータを配置し、いずれの計算機によってデータを処理するのかを、ソフトウェアまたは特別なハードウェアが決定する。また、分散ストレージシステムの動作を動的に変更することにより、システム内のリソース使用量を調整するとともに、クライアント端末およびその利用者に対する性能を向上させる。
【０００３】
消費電力を削減するため、分散ストレージシステムの一部のノードを、通常の稼働状態（以下通常モード）から、停止乃至消費電力を抑えた稼働状態（以下省電力モード）に移行するものが特許文献１に記載されている。また、可用性を高めるために、同一データの複製を複数のノードに同時に配置するものが非特許文献１に記載されている。
【０００４】
これらをそのまま組み合わせて適用した分散ストレージシステムでは、省電力モードにあるノードに対してデータの書き込み要求が発生するとアクセス性能が低下するという問題が生じる。このノードは、省電力モードから通常モードに復帰してから書き込みを行なうので、通常モードで稼働中のノードに対して書き込み要求を行なう場合と比較すると、書き込みの完了までに長い時間を必要とするためである。
【０００５】
例えば、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）標準には、Ｓ０からＳ５の６つの状態が規定されている。Ｓの後の数字が大きいほど深いスリープ状態であり、通常モードに復帰するための所要時間が長くなる一方、そのスリープ状態での消費電力は低くなるというトレードオフの関係にある。従って、あるデータの複製を格納しているすべてのノードが、例えばＡＣＰＩ  Ｓ４のような省電力モードにあるとき、良好な省電力効果が得られるものの、通常モードへの復帰に時間を要するためにそのデータに対するアクセス性能は著しく低下する。他方、ＡＣＰＩ  Ｓ１のような省電力モードにあるときは、通常モードへの復帰は速やかに完了するが、省電力効果が低くなる。アクセス性能の著しい低下を防ぎつつ、高い省電力効果を得るためには、データの１つ以上の複製を稼働ノードに保持させるようにデータを配置し、稼働ノードのデータを用いてクライアントからの要求に応答することで省電力モードからの復帰を抑制する必要がある。
【０００６】
非特許文献２には、停止したディスクに対するデータオブジェクトの書き込み要求を他のディスクにリダイレクトして、そのデータオブジェクトを一時的に他の稼働中のディスクに書き込み、停止したディスクが稼働するとそのデータオブジェクトをそのディスクに書き込む技術、即ち、ライトオフローディング（Ｗｒｉｔｅ  ｏｆｆ−ｌｏａｄｉｎｇ）が記載されている。特許文献１、非特許文献１に記載の技術の組み合わせに対し、更に非特許文献２に記載の技術を適用することにより、省電力モードにあるノードに対する書き込み要求を、他のノードにリダイレクトし、リダイレクト先のノードに一時的に書き込みを行なうようにすることができる。その結果、書き込み要求を受けたノードを省電力モードに維持しつつ、アクセス性能への影響を回避することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−４８３６０号公報
【非特許文献】
【０００８】
【非特許文献１】Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall, and Werner Vogels. 2007. Dynamo: amazon's highly available key-value store. In Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles (SOSP '07). ACM, New York, NY, USA, 205-220. DOI=10.1145/1294261.1294281 http://doi.acm.org/10.1145/1294261.1294281
【非特許文献２】Ｎａｒａｙａｎａｎ，Ｄ．，Ｄｏｎｎｅｌｌｙ，Ａ．，Ｒｏｗｓｔｒｏｎ，Ａ．，“Ｗｒｉｔｅ  Ｏｆｆ−Ｌｏａｄｉｎｇ：  Ｐｒａｃｔｉｃａｌ  Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  ｆｏｒ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ，”ＡＣＭ  Ｔｒａｎｓ．  Ｓｔｏｒａｇｅ，Ｖｏｌ．４，Ｎｏ．３，Ａｒｔｉｃｌｅ  １０，Ｎｏｖｅｍｂｅｒ  ２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１、非特許文献１、２を適用した分散ストレージシステムにおけるデータの配置について説明する。図９（Ａ）に示すように、Ｎｏｄｅ１からＮｏｄｅ８の８つのノードからなる分散ストレージシステムを考える。Ｎｏｄｅ１及び２はデータの保持ノードとして動作すると共に、ライトオフローディング（以下ＷＯと略記する）のログを書き込み先として動作する。Ｎｏｄｅ３からＮｏｄｅ５のＷＯ先はＮｏｄｅ１であり、Ｎｏｄｅ６からＮｏｄｅ８のＷＯ先はＮｏｄｅ２と、規定されているものとする。
【００１０】
今、全ノードが稼動しており、Ｎｏｄｅ１にデータＤ１ａが格納され、Ｎｏｄｅ４にデータＤ２が格納され、Ｎｏｄｅ５にデータＤ１ｂが格納されているものとする。可用性を高めるため、同一データの複製であるデータＤ１ａとデータＤ１ｂがそれぞれノードＮｏｄｅ１、５に配置されている。データＤ１ａとデータＤ１ｂを総称してデータＤ１と呼ぶものとする。Ｎｏｄｅ４に配置されたデータＤ２は分散ストレージシステムにひとつだけ配置されている。
【００１１】
この状態から、図９（Ｂ）に示すようにＮｏｄｅ４、５が停止状態に移行したとする。Ｎｏｄｅ４、５のＷＯ先はどちらもＮｏｄｅ１なので、Ｎｏｄｅ４、５を対象とする書き込み要求は、どちらもＮｏｄｅ１にリダイレクトされる。
【００１２】
すると、データＤ１ａを格納するノードと、データＤ１ａの複製であるデータＤ１ｂのＷＯ先のノードとが共にＮｏｄｅ１となる。従って、Ｎｏｄｅ５が停止状態に移行後、データＤ１ａに対する書き込み要求に基づいて発生する差分データを格納するノードは、Ｎｏｄｅ１ただひとつとなる。このため、分散ストレージシステムにおいてデータＤ１を格納するノードの冗長性が低下することとなる。
【００１３】
一方、データＤ２については分散ストレージシステム内の唯一のノードＮｏｄｅ４に格納されている。このようなＮｏｄｅ４を停止状態に移行すると、ライトオフローディング機能により書き込み機能は高速に提供できるものの、データＤ２に対する読み込み処理はノードＮｏｄｅ４を稼働状態に移行しないと提供できない。従って、分散ストレージシステムのパフォーマンスに悪影響を及ぼす。
【００１４】
こうした悪影響を回避するため、従来の分散ストレージシステムでは、ノードを停止状態に移行させる前に、そのノードが停止しても問題が発生しないようにデータを他のノードに移動し、その後でそのノードを停止する。
【００１５】
すなわち、上述したデータＤ１ａ、Ｄ１ｂのように、Ｎｏｄｅ５を停止すると、データＤ１ｂのＷＯ先となるノードと、そのデータの複製であるデータＤ１ａとが同一のノードＮｏｄｅ１になる場合、これを回避するため、図９（Ｃ）に示すように、Ｎｏｄｅ１のデータＤ１ａを、停止状態に移行する予定のＮｏｄｅ４、５以外のノード、たとえばＮｏｄｅ８に予め移動、即ちマイグレーションを行う。
【００１６】
また、上述したデータＤ２のように、Ｎｏｄｅ４を停止すると、データＤ２を格納した稼働中のノードが存在しない状態になる場合、これを回避するため、Ｎｏｄｅ４のデータＤ２を、これから停止状態に移行する予定のＮｏｄｅ４、５以外のノード、たとえばＮｏｄｅ６に予めマイグレーションする。
【００１７】
ノードの停止に先立ってこのようなデータマイグレーションを行うことにより、上述の悪影響を回避することができる。言い換えると、従来の分散ストレージシステムにおいて、上述の悪影響を回避しつつ、ノードの一部を停止して省電力モードに移行するためには、ノードの停止に先立って、停止予定のノードから停止予定のないノードへとデータマイグレーションを行う必要がある。省電力モードへの移行の前に、マイグレーションが完了するまでの待ち時間が発生し、この待ち時間の間、分散ストレージシステムは省電力モードに移行することができず、その結果、本来は不要な電力消費が発生していた。
【００１８】
本発明はこのような状況に鑑みてなされたものであり、本発明が解決しようとする課題は、分散ストレージシステムを構成するすべてのノードが通常に稼動している通常モードから、その分散ストレージシステムを構成する一部ノードを停止する省電力モードに移行する前後で、データの冗長性を維持するために省電力モードへの移行に先立って必要なノード間でのデータの移動、すなわち、マイグレーションの回数、オブジェクト量を削減して、省電力モードへの移行に要する時間を短縮して、分散ストレージシステムが省電力モードで動作する時間を伸ばし、消費電力を削減することである。
【課題を解決するための手段】
【００１９】
上述の課題を解決するため、本発明は、その一態様として、それぞれがストレージとして動作する複数のノードを備える分散ストレージシステムであって、前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、前記分散ストレージシステムは、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含み、一の新規データオブジェクトＤに相当するデータオブジェクトＤａ及びＤｂを配置するための相異なる２台のノードを前記複数のノードの中から選択する際、選択した２台のノードが前記組み合わせになるのを回避するようにして選択する生成時データ配置先決定手段を備えることを特徴とする分散ストレージシステムを提供する。
【００２０】
また、本発明は、他の一態様として、それぞれがストレージとして動作する複数のノードを備え、前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムとともに用いる装置であって、一の新規データオブジェクトＤに相当するデータオブジェクトＤａ及びＤｂを配置するための相異なる２台のノードを前記複数のノードの中から選択する際、選択した２台のノードが前記組み合わせになるのを回避するようにして選択することを特徴とする生成時データ配置先決定装置を提供する。
【００２１】
また、本発明は、他の一態様として、それぞれがストレージとして動作する複数のノードを備え、前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、前記複数のノードの少なくとも一部である複数のノードが前記第１の動作モードにて動作する段階と、一の新規データオブジェクトＤに相当するデータオブジェクトＤａ及びＤｂを配置するための相異なる２台のノードを、前記第１の動作モードにて動作する複数のノードの中から選択する際、選択した２台のノードが前記組み合わせになるのを回避するようにして選択する段階と、データオブジェクトＤａ及びＤｂを他のノードにマイグレーションすることなく、前記選択した２台のノードのいずれかを第２の動作モードに移行させる段階とを含むことを特徴とする分散配置ノード選択方法を提供する。
【００２２】
また、本発明は、他の一態様として、それぞれがストレージとして動作する複数のノードを備え、前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、一の新規データオブジェクトＤに相当するデータオブジェクトＤａ及びＤｂを配置するための相異なる２台のノードを、前記第１の動作モードにて動作する複数のノードの中から選択する際、選択した２台のノードが前記組み合わせになるのを回避するようにして選択する手順をコンピュータに実行させるためのプログラムを提供する。
【発明の効果】
【００２３】
データオブジェクトＤａを配置したノードＮａを第１の動作モードにしたまま、データオブジェクトＤｂを配置したノードＮｂを第１の動作モードから第２の動作モードに移行させて、分散ストレージシステムを省電力モードに移行させたものとする。
【００２４】
このとき、データオブジェクトＤａに対する書き込み要求が、当然にノードＮａに送信される一方で、データオブジェクトＤｂに対する書き込み要求は、ライトオフローディング機能によりノードＮａにリダイレクトされる。従って、省電力モード移行後にデータオブジェクトＤに生じた更新分のデータは、ノードＮａのみに集中する。省電力モード移行前にノードＮａ及びＮｂにて冗長なハードウェア構成でひとつのデータオブジェクトＤ＝Ｄａ＝Ｄｂを保持していたことと比較すると、データオブジェクトＤを保持するハードウェアの冗長性が損なわれたことを意味する。
【００２５】
こうした冗長性の低下を避けるため、従来のシステムでは、省電力モードへの移行に先立って、ノードＮｂから、省電力モード後も第１の動作モードのままで動作する他ノードにデータを移動、即ちマイグレーションを行うこととしていた。
【００２６】
これに対して本発明では、新規データの複製を分散配置する複数ノードを選択する際、上述の省電力モード移行前の冗長性低下を避けるために事前にマイグレーションが必要となるノードの組み合わせを避けて選択する。このため、本発明によれば、上述のマイグレーションを行わなくても、分散配置した複数の複製が同一ノードに集中する事態を回避することができる。また、必要なマイグレーションの回数が減るので、省電力モードに移行する際の待ち時間を短縮し、省電力モードで動作する動作時間が延びるので、システムの消費電力を抑えることができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施の形態の構成を示すブロック図である。
【図２】分散ストレージ１を構成する一のストレージである分散ストレージ構成ノード１０Ｘの構成を示すブロック図である。
【図３】分散ストレージ状態情報管理手段１１が管理するテーブルの例を示す図である。
【図４】分散ストレージデータ配置先管理手段１２が管理するテーブルの例を示す図である。
【図５】図１に係る分散ストレージシステムの物理構成を示すブロック図である。
【図６】図５に係る分散ストレージシステムの物理構成に、システム制御手段４を加えたブロック図である。
【図７】本発明の分散ストレージシステムにおけるデータアクセス動作について説明するためのフローチャートである。
【図８】図７のステップＳ１１５において、生成時データ配置先決定手段１１が行なうオブジェクト配置先の決定ルーチンについて説明するためのフローチャートである。
【図９】ライトオフローディングとデータマイグレーションについて説明するための図である。
【発明を実施するための形態】
【００２８】
本発明を実施するための一実施の形態である分散ストレージシステムについて説明する。図１を参照すると、本発明の第１の実施の形態は、分散ストレージ１と、データアクセス先決定部２と、分散ストレージアクセス部３と、システム制御部４から構成される。
【００２９】
分散ストレージ１は、分散ストレージ状態情報管理部１１と、分散ストレージデータ配置先管理部１２と、分散ストレージ構成ノード１０１〜１０４、およびこれらを接続するネットワークから構成される。構成ノードの数は図１では４であるが任意の数としてよい。分散ストレージ１は複数の構成ノードを協調して動作させることによってストレージ機能を提供する。
【００３０】
分散ストレージ１に格納されるデータは、固定長または意味的に区切られたデータ断片（以下「オブジェクト」ともいう。）の集合として、構成ノード１０Ｘが備える記憶装置のいずれか１つまたは、複数に格納される。複数のノードに格納される場合には、オブジェクトの複製として格納される。分散ストレージ１のクライアント（分散ストレージアクセス部３）は、オブジェクト単体あるいは集合に対して、一意の識別子（キー）によってアクセスする。各オブジェクトの他に、オブジェクトに基づいて計算された冗長符号情報が複製として他のノードに格納されるようにしてもよい。冗長符号情報は、ノード故障時において、データの消失を防ぐために用いられる。
【００３１】
オブジェクトの例として、例えば、ファイルシステムのファイル、ファイルと関連するメタデータの集合、関係データベースのタプルもしくはテーブル、オブジェクトデータベースのデータ、Ｋｅｙ−Ｖａｌｕｅデータ格納システムのＶａｌｕｅ、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）、ＢＳＯＮ（Ｂｉｎａｒｙ  ＪＳＯＮ）で記載されたドキュメント等が上げられる。なお、本発明におけるオブジェクトは、これらのオブジェクトに限られない。また、これらの例について、さらに固定長または意味的に区切ったデータ断片を分散ストレージ構成ノード１０Ｘへの格納単位としてもよい。
【００３２】
分散ストレージ状態情報管理部１１は、分散ストレージ１の構成ノード１０Ｘの稼働状態（例えば、省電力モードに移行しているか否か）、分散ストレージ構成ノード１０Ｘごとに指定されるライトオフローディング先のノード情報（例えば、構成ノード１０３のライトオフローディング先ノードは構成ノード１０１とする、といった情報）を保持管理し、その他各部のリクエストに応じて情報を応答する。分散ストレージデータ配置先管理部１２は、オブジェクト毎の格納先構成ノードを保持・管理し、その他各部のリクエストに応じて情報を応答する。分散ストレージ状態情報管理部１１及び分散ストレージデータ配置先管理部１２は、分散ストレージ１を構成する計算機のいずれか、或いは、任意の他の計算機にて所定のプログラムを実行することにより実現される。
【００３３】
分散ストレージ構成ノード１０１、１０２、１０３、１０４は、それぞれ、分散ストレージシステムを構成するストレージノードである。以下、これらストレージノードに共通する説明をする際には、これらストレージを総称して、分散ストレージ構成ノード１０Ｘ、或いは、単に構成ノード１０Ｘと記すものとする。構成ノード１０１、１０２、１０３、１０４のうちの任意のひとつを構成ノード１０Ｘと呼ぶ場合もある。構成ノード１０Ｘは、データを保持するための記憶装置（例えばＨＤＤ、半導体メモリ）と、ストレージ機能を実現するための演算装置（例えばＣＰＵ）を備える計算機によって実現される。これらの構成ノードは、任意のネットワークによって接続される。図１ではネットワークを省略している。
【００３４】
図２を参照して、分散ストレージ構成ノード１０Ｘの構成について説明する。ここでは構成ノード１０１を例に挙げて説明する。分散ストレージ構成ノード１０１はデータ送受信部１３と、データ保持部１４から構成される。更に、データ保持部１４は通常データ保持部１４１と一時データ保持部１４２から構成される。データ送受信部１３は、分散ストレージアクセス部３からのアクセス処理リクエストを受け付け、データ保持部１４に対して該アクセス処理リクエストを実行する（データを読み出す、更新データを書き出す、といった機能を果たす）。データ保持部１４はデータを保持するための記憶装置によって実現され、通常のオブジェクトの保持先となる通常データ保持部１４１と、ライトオフローディングログデータの保持先となる一時データ保持部１４２から構成される。なお、ライトオフローディング機能を実現するには、最小で１機の構成ノードをライトオフローディング先のノードとすればよいので、構成ノード１０Ｘの全てがライトオフローディングログの書き込み対象となるノードとして機能する必要はない。従って、一時データ保持部については、ライトオフローディングログの書き込み対象となるノードのみが備えることとしてもよい。
【００３５】
分散ストレージ状態情報管理部１１は任意のデータベースソフトウェアで実現することとしてもよい。このときに用いるテーブルの例を図３に示す。図３は、分散ストレージ１が構成ノード１０１〜１０８の８つから構成されている場合の例である。nodeidカラムは構成ノードを識別するIDであり、woカラムはライトオフローディングのターゲットノード（ライトオフローディングのログを保持するノード、以降WOターゲット）であるかどうかを示している。1の場合はWOターゲットになることができる。図３の例ではnodeidが101、102のノードがWOターゲットとなる。wo_targetカラムはそれぞれのnodeid毎に決定されるWOターゲットのnodeidが指定されている。例えば、nodeid:108のノードはnodeid:102ノードがWOターゲットとなる。すなわち、nodeid:108が省電力モードに移行されている場合、nodeid:108の保持オブジェクトに対する更新処理はnodeid:102にログとして書きこまれる。そして、nodeid:108が省電力モードから復帰する際に該ログをnodeid:102から読み出しnodeid:108に適用させる。stateカラムはそれぞれのnodeidの動作状態を示しており、図３の例ではACPIの動作モードとして登録されている。尚、当然ながらその他の形式で情報を保持してもよい。
【００３６】
同様に、分散ストレージデータ配置先管理部１２も任意のデータベースソフトウェアで実現することとしてもよい。このときに用いるテーブルの例を図４に示す。図４はオブジェクトがobjid:1とobjid:2の2つ保持され、複製がオブジェクト1つあたり2つ（プライマリデータと合わせて合計3つ保持される）場合の例である。objidカラムはオブジェクトのユニークな識別子であるobjidを示す。primary/backupはobjidのprimaryの配置先なのか、backupの配置先なのか示し、1の場合primary、2の場合にbackupとなる。nodeidカラムはそのレコードのobjidが登録されるnodeidを示す。従って、objid:1のオブジェクトはprimaryデータをnodeid:101に保持し、nodeid:102、103にbackupデータを保持する。
【００３７】
データアクセス先決定部２は生成時データ配置先決定部２１と、通常時アクセス先決定部２２から構成される。データアクセス先決定部２は、分散ストレージアクセス部３がオブジェクトにアクセスする際に、アクセス処理先となる構成ノードを特定して応答する。この応答された情報を元に、分散ストレージアクセス部３は構成ノード１０１−１０４のいずれかに対してデータアクセスを行う。
【００３８】
生成時データ配置先決定部２１は、オブジェクトが新規に生成される際にオブジェクトの配置先を決定する。動作の流れについては後述する。通常時アクセス先決定部２２は、既存のオブジェクトに対する更新や参照処理の際のアクセス先を応答する機能を果たす。通常時アクセス先決定部２２は分散ストレージデータ配置先管理部１２から、アクセス要求のオブジェクトの配置先構成ノードの情報を応答する。
【００３９】
分散ストレージアクセス部３は、任意のオブジェクトにアクセスする際に、該オブジェクトに対してアクセス先とすべき分散ストレージ１の構成ノードを、データアクセス先決定部２から取得する。データアクセス処理は指定された分散ストレージ構成ノード１０Ｘに対して行う。もちろん分散ストレージシステムの仕組みとして異なる方法で実現しても良い。例えば、分散ストレージアクセス部３が任意の分散ストレージ構成ノード１０Ｘに対してアクセス要求を行い、データアクセス先決定部２相当の機能をアクセス先の分散ストレージ構成ノード１０Ｘに保持させて、実際のアクセス先にアクセス要求をフォーワードするようなやり方であってもよい。本実施の形態では説明の簡略化のために図１のような構成を取る。
【００４０】
システム制御部４は、データ配置状態取得部４１と制御内容決定部４２と、データ移動制御部４３と、ノード電源制御部４４から構成される。システム制御部４は、分散ストレージ１の構成する一部のノードの電源制御を行うことで分散ストレージ１の省電力制御動作を実現させる。
【００４１】
データ配置状態取得部４１は分散ストレージ１から、オブジェクトの配置状態情報を取得する機能を果たす。制御内容決定部４２は、省電力化のために行う制御内容を決定する。制御内容は、どのオブジェクトをどのノードに移動させるかといったデータの移動に関する内容、どの構成ノードを省電力モードへ移行させるか（あるいは省電力モードから復帰させるか）といったノード電源制御に関する内容の２つからなる。
【００４２】
省電力化のための制御を実現するために、制御内容決定部４２は、分散ストレージシステムを構成する全ノードのうち、停止するノードの台数、稼動を続けるノードの台数を決定する。この台数の決定方法には様々な方法が考えられる。例えば、一日、一週間、一ヶ月等の一定期間を複数の時間帯に分割し、時間帯毎に稼動するノードの台数を定めて、その一定期間毎に繰り返すこととしてもよい。或いは、分散ストレージシステム全体の負荷を示すような何らかの指標を計測する手段を設け、この指標と現在稼動中のノード数とに基づいてシステム全体の余裕の有無を判定し、余裕がある場合は何台かのノードを停止する一方、余裕がない場合は現在停止中のノードを何台か復帰させるということが考えられる。
【００４３】
データ移動制御部４３は制御内容決定部４２によって指定されたデータの移動内容に基づいて、分散ストレージ１内でのデータ移動を行う。具体的には、移動元の分散ストレージ構成ノード１０Ｘからデータを取り出し、移動先分散ストレージ構成ノード１０Ｘにデータを書き出すとともに、分散ストレージデータ配置先管理部１２に保持されているデータの配置管理情報を変更する。
【００４４】
ノード電源制御部４４は、分散ストレージ構成ノード１０Ｘに対して省電力モードへの移行を要求する。各構成ノード１０Ｘにおける省電力モードへの移行は、OSレベルで行う、或いは、各ノードに設けた制御装置経由で行う、といった手段で行なうことが出来る。
【００４５】
図５に本発明の第１の実施の形態の実施例として物理的な構成を示す。図５の構成は、クライアントノード３００と、ネットワーク２００と、分散ストレージ構成ノード１０１〜１０８から構成される。分散ストレージ構成ノードの数では８であるが、任意の複数の数となる。
【００４６】
クライアントノード３００は、分散ストレージ１に対してデータアクセスをする単一あるいは複数の計算機である。クライアントノード３００上において、分散ストレージアクセス部３とデータアクセス先決定部２が動作する。
【００４７】
ネットワーク２００は、分散ストレージ構成ノード１０１〜１０８間を接続し、データおよび制御メッセージをやり取りする。ネットワーク２００は、例えば、Ethernet（登録商標）、Fibre ChannelやFCoE(Fibre Channel over Ethernet(登録商標))、InfiniBandまたはこれらを利用するTCP/IP、RDMAなどの上位プロトコルにより実現する。実現方法としてはこれらに限られない。
【００４８】
ネットワーク２００を介して、分散ストレージ構成ノード１０１〜１０８が接続される。図５の例では、図３に示す分散ストレージ状態情報の例と同様に、分散ストレージ構成ノード１０１および１０２がＷＯターゲットノードとして構成する場合の例である。
【００４９】
図５の例では、分散ストレージ構成ノード１０Ｘ上でデータ送受信部１３およびデータ保持部１４が動作する。そして更に、分散ストレージ構成ノード１０１上ではさらに、分散ストレージ状態情報管理部１１と分散ストレージデータ配置先管理部１２が動作する。また、分散ストレージ構成ノード１０３〜８におけるデータ保持部１４では通常データ保持部１４１だけを用意させ、一時データ保持部１４２を用意していない。
【００５０】
なお、データアクセス先決定部２の動作箇所や、分散ストレージ状態情報管理部１１、分散データ配置先管理部１２については必ずしも図５のような構成を取らなくても良い。例えば、データアクセス先決定部２を分散ストレージ構成ノード１０１〜１０８の任意の単数あるいは複数のノードで動作し、分散ストレージアクセス部３がランダムに決定したノード上のデータアクセス先決定部２に要求命令を発行してもよい。また、分散ストレージ状態情報管理部１１および分散データ配置先管理部１２が複数のノードで動作してもよいし、分散ストレージ構成ノード１０Ｘとは別の計算機などで動作しても良い。
【００５１】
また、同様にデータアクセス先決定部２は、データアクセス先を決定するために、分散ストレージ状態情報管理部１１と分散ストレージデータ配置先管理部１２から情報を取得する必要がある。必要な情報の複製をキャッシュとしてクライアントノード３００上に保持するような仕組み、またキャッシュ情報を更新する仕組みなどを保有してもよい。このような機構の詳細については本発明の本質から外れるために説明を省略する。
【００５２】
図５の分散ストレージシステムにシステム制御部４を追加した物理構成図を図６に示す。図５に加え、分散ストレージ構成ノード１０１でシステム制御部４の機能を果たすソフトウェアが動作する。システム制御部４を動作させる計算機を別途用意するような構成であってもよい。
【００５３】
次に、図７及び図８のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００５４】
図７に示すフローチャートは、本実施の形態の提供する分散ストレージにおけるデータへのアクセスの流れを示すものである。なお、煩雑化を回避するためにエラー処理などへの対応を記述していない。本来はこのフローに対して物理的・論理的障害やユーザ・アプリケーションの利用ミスに対する例外的な処理を行う必要がある。
【００５５】
まず、分散ストレージを利用する任意のアプリケーションが、分散ストレージアクセス部３を介してストレージアクセス要求（オブジェクトの参照か更新か生成などの処理要求）を行う（図７のステップＳ１０１）。分散ストレージアクセス部３はアプリケーションによるアクセス要求を解釈し、そのリクエストが既存のオブジェクトに対する要求（オブジェクトに対する参照処理や、オブジェクトを更新する処理、オブジェクトにデータを追記する処理、などがある）であるか、それともこの時点では存在していないオブジェクトを新たに生成する処理であるかどうか判別する（ステップＳ１０２）。オブジェクトに対する参照・更新などの処理であればＳ１０３に進み、そうでない場合にはＳ１１４に進む。
【００５６】
このアクセス要求が参照処理の場合はステップＳ１０４以降の処理、更新要求の場合にはＳ１０８以降の処理を行う（ステップＳ１０３）。まず参照処理から説明する。参照処理の場合、分散ストレージアクセス部３は、データアクセス先決定部２の通常時アクセス先決定部２２を用いてアクセス先を決定する。通常時アクセス先決定部２２は、分散ストレージデータ配置先管理部１２から要求対象のオブジェクト（例えばｉｄなどのユニークな識別子で特定される）の配置先ノードリストを取得する（ステップＳ１０４）。次に、通常時アクセス先決定部２２は、分散ストレージ状態情報管理部１１から構成ノードの稼働状態を取得し、オブジェクトの配置先ノードリストのうち、稼働しているノードから１つ選ぶ（例えばプライマリオブジェクトが格納されているノードを応答する、あるいはランダムで選ぶ、といった方法がある）（ステップＳ１０５）。このとき、オブジェクトの配置先ノードリストのノードが全て省電力モードにあるときには、任意ノードを起こす、といった処理が必要であるが、例外的な処理であるため図７には記述していない。本実施例の説明でも省略する。また、ステップＳ１０４、１０５は分散ストレージ状態情報管理部１１および分散ストレージデータ配置先管理部１２を動作するソフトウェアに対して、１回の処理リクエストで同時に実行するように実装してもよい（本説明では簡略化のため、段階的な説明を行った）。
【００５７】
次に、分散ストレージアクセス部３は、データアクセス先決定部２（通常時アクセス先決定部２２）によって決定されたアクセス先ノードに対してアクセス要求を発行する（ステップＳ１０６）。アクセス要求が発行された分散ストレージ構成ノード１０Ｘのデータ送受信部１３は、アクセス要求を受け付け、データ保持部１４（通常データ保持部１４１）から該当するオブジェクトのデータを取り出し、クライアントノード３００に対して応答する（ステップＳ１０７）。
【００５８】
次に、ステップＳ１０３において更新要求であった場合の処理について説明する。参照処理と同様に、分散ストレージアクセス部３は、データアクセス先決定部２の通常時アクセス先決定部２２を用いてアクセス先を決定する。まず、通常時アクセス先決定部２２は、分散ストレージデータ配置先管理部１２から要求対象のオブジェクトの配置先ノードリストを取得する（ステップＳ１０８）。次に、通常時アクセス先決定部２２は、分散ストレージ状態情報管理部１１から構成ノードの稼働状態を取得し、オブジェクトの配置先ノードリストの構成ノードが全て省電力モードに移行していないかどうか確認する（ステップＳ１０９）。全て省電力モードに移行していない、すなわち全てが通常稼働状態にある場合にはステップＳ１１３に進む。そうでない場合（配置先ノードのうち１つ以上のノードが省電力モードに移行している）場合には、ステップＳ１１０に進む。
【００５９】
まず、ステップＳ１１０以降について説明する。通常時アクセス先決定部２２は、オブジェクトの配置先ノードリストのうち、稼働しているノードから１つ選ぶ（ステップＳ１１０）。この選ぶ方法については、分散ストレージシステムの実装ポリシーに依存する。プライマリオブジェクトを保持する構成ノードを選び、その後アクセス処理についてはプライマリノードに要求メッセージを発行し、該構成ノードがその処理リクエストに責任を持って処理する方法（プライマリ/バックアップ方式）や、ランダムで要求先を決定してアクセス先の構成ノードが責任を持つ方式や、分散ストレージアクセス部３が全ての配置先構成ノードに処理リクエストを発行し、その処理に責任を持つような方法が考えられる。ここでは、プライマリオブジェクトを格納する構成ノードが稼働状態にあれば、そのノードを選び、もし省電力状態に移行していればその他のノードから稼働状態にあるノードを選ぶ。もし全てのノードが停止状態にあればアクセス処理の前に省電力状態から稼働状態に移行させる必要があるが、例外的な処理であるため図７には記述していない。本実施例の説明でも省略する。
【００６０】
次に、分散ストレージアクセス部３が、選択された構成ノード１０Ｘのデータ送受信部１０３に対してアクセス要求を発行する（ステップＳ１１１）。次に、構成ノード１０Ｘは受け付けたアクセス要求に対して、自身のデータ保持部１４にデータ更新内容を書きこみ、かつ、その他の（データ更新先の）構成ノード１０Ｘに更新リクエストを送信し、データ保持部１４に対してデータの更新内容を書き込ませる。全ての更新処理を完了した後に、分散ストレージアクセス部３に完了通知を発行する（ステップＳ１１２）。このとき、処理対象オブジェクトのデータ配置先である構成ノードではデータ保持部１４の通常データ保持部１４１にデータを格納し、処理対象オブジェクトのデータ配置先が省電力モードに移行している場合には、代わりにそのライトオフローディング先ノードを更新先構成ノードとして選び（ステップＳ１１１の時点で）、ライトオフローディング先ノードの構成ノードでは通常データ保持部１４１ではなく、一時データ保持部１４２に更新データをログとして書き込む（ライトオフローディング元のノードが通常稼働状態に復帰したときに、通常データ保持部１４１に該一時データ保持部１４２に書き込まれている更新ログを適用する）。
【００６１】
図３、図４の配置状態を例に挙げて説明すると、objid=2のオブジェクトに対してデータを更新する場合に、データの配置先構成ノードは構成ノード１０５、１０３、１０８である。このとき、プライマリオブジェクトを格納する構成ノードである構成ノード１０５は通常稼働状態にあるため、アクセスリクエストは構成ノード１０５に対して送信される。また、構成ノード１０８は省電力モードに移行しているため、そのＷＯターゲットである構成ノード１０２に対してデータを更新する。すなわち、アクセス要求を受け取った構成ノード１０５のデータ送受信部１０３は、自身の通常データ保持部１４１にデータを書き込むとともに、構成ノード１０３および１０２にデータ更新要求を発行し、構成ノード１０３は通常データ保持部１４１にデータを書き込み、１０２は一時データ保持部１４２にデータを書き込む。構成ノード１０３および１０２はデータを書き込み完了後、構成ノード１０５に処理完了を通知する。そして、構成ノード１０５は自身のデータ保持部１４に対する更新処理と、構成ノード１０３および１０２からの通知を受け取った後に、アクセス要求元であるストレージアクセス部３に完了通知を発行する。
【００６２】
ステップＳ１０９において、配置先構成ノードが全て通常稼働状態にある場合にはステップＳ１１３に進む。この場合、通常時アクセス先決定部２２は、オブジェクトの配置先ノードリストのうち、稼働しているノードから１つ選ぶ（ステップＳ１１３）。ここではプライマリオブジェクトを保持する構成ノードを選ぶこととする。次に、このプライマリオブジェクトの構成ノードにアクセス要求を発行する（ステップＳ１１６）。受け取った構成ノード１０Ｘのデータ送受信部１０３は該オブジェクトの配置先ノードリスト全てに対してデータ更新処理要求を行い、それぞれのデータ保持部１４（通常データ保持部１４１）に対して更新内容を書き込み、ストレージアクセス部３に対して応答する（ステップＳ１１７）。
【００６３】
ステップＳ１０２において新たにオブジェクトを生成する場合の処理について説明する。分散ストレージアクセス部３は、データアクセス先決定部２の生成時データ配置先決定部２１を用いて、オブジェクトの生成先を決定する。生成時データ配置先決定部２１は、まず分散ストレージ状態情報管理部１１の情報を取得する（ステップＳ１１４）。次に、オブジェクトの配置先決定ルール（後述）に基づいて、オブジェクトの配置先を通常稼働ノードから選択する（必ずしも通常稼働ノードから選ばなくてもよいが、フローが複雑化するため通常稼働ノードから選択することとする）（ステップＳ１１５）。また、ここで分散データ配置先管理部１２に対して決定された配置先情報を登録する。
【００６４】
次に、決定されたオブジェクトの生成先構成ノードに対してアクセス要求を発行し（ステップＳ１１６）、それぞれの構成ノードのデータ保持部１４（通常データ保持部１４１）でオブジェクトを生成しデータを書き込む（ステップＳ１１７）。
【００６５】
図８に示すフローチャートは、図７におけるステップＳ１１５のオブジェクト配置先の決定ルーチンを示す図である。生成時データ配置先決定部２１の動作内容であり、オブジェクトの格納ノードを冗長性維持に必要な複製数分（Ｘ個）選択する処理である。通常、オブジェクトの配置は乱数や数理的手法によるアルゴリズム（ランダム選択、ラウンドロビン、Consistent Hashing）などが用いられることが一般的である。本発明では次のようなフローに基づいて選択することによって、本発明の効果を得ている。
【００６６】
まず、図７のステップＳ１１４において分散ストレージ状態情報管理部１１から取得した、通常稼働状態のノードリストを、オブジェクトの生成先候補のリストとする（図８のステップＳ２０１）。
【００６７】
尚、ＷＯノードが一台のみの分散ストレージシステム、つまり、ＷＯノード以外のすべてのノードのライトオフローディングログをその一台のＷＯノードに格納する分散ストレージシステムの場合には例外的に、ステップＳ２０１にてその唯一のＷＯノードを候補リストから除外する。これは、ステップＳ２０１の直後のステップＳ２０２においてノードを選択した結果、その唯一のＷＯノードが選択されてしまう事態を回避するためである。これを回避するのは、仮に、ステップＳ２０２にてシステム内の唯一のＷＯノードを配置先として真っ先に選択すると、その直後のステップＳ２０３においてシステム内の全ノードが次段落にて説明する条件（ｃ）に該当することになり、必要な数の配置先を選択することができなくなるからである。
【００６８】
次に、候補リストから配置先候補となる構成ノード１０Ｘを１つ選択し、オブジェクト配置先リストに追加する（ステップＳ２０２）。選ぶ方法は任意でよく、例えば乱数を使って選ぶ方法が考えられる。次に、下記条件に合致したノードを候補リストから削除する（ステップＳ２０３）。
【００６９】
（ａ）ステップＳ２０２にて選択されたノード自身。 
（ｂ）ステップＳ２０２にて選択されたノードのＷＯ先となるノード。分散ストレージ状態情報管理部１１に登録されている。 
（ｃ）ステップＳ２０２にて選択されたノードがＷＯ先となっているノードである場合には、そのノードをＷＯ先とするノード。分散ストレージ状態情報管理部１１に登録されている。
【００７０】
また、ＷＯノードがシステムでＸ個以下しか用意されていない場合、次の格納先としてＷＯ先ノードを選択すると、その次の配置先候補が無くなってしまうことがある。例えば、２台のＷＯノードと、６台のデータ保持ノードからなる図５の分散ストレージシステムが図８の処理を実行して、Ｘ＝３、即ち３台のノードを配置先として選択する過程で、１台目、２台目にそれぞれＷＯノード１０１、１０２を選択したとする。このとき、６台のデータ保持ノード１０３−１０８はすべて条件（ｃ）に合致し、選択候補から除外されるので、３台目の候補がなくなってしまうことになる。
【００７１】
そこで、残っている選択可能なノード候補の中でのＷＯ先ノード数が、配置先がまだ決まっていないオブジェクト複製数よりも少ない場合、即ち、未選択なＷＯ先ノードの数が、配置先未定のオブジェクト複製数未満の場合、未選択のＷＯ先ノードをすべて候補リストから外すこととしてもよい。つまり、Ｘ台のノードを選択する過程で、未選択のＷＯ先ノードの台数が、Ｘ台よりも少なくなった場合、その未選択のＷＯ先ノードを以後の選択候補から除外することとしてもよい。これもＷＯノードがシステムに対して用意する数が少ない時の例外的処理となる。
【００７２】
また、残っている候補のＷＯ先ノードの候補リストの外し方として、選択可能なノード候補の中からＷＯ先ノードが残り１つになっても２つ以上のノード選択が残っている状態になってから取り除いてもよい。つまり、未選択のＷＯ先ノードの数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のＷＯ先ノードを選択候補から除外することとしてもよい。この場合、ＷＯ先ノードが配置先として選択されるケースが増大するため、オブジェクトが分散ストレージシステムのノード全体に均等に配置されるのでパフォーマンスに悪影響を与えにくい。
【００７３】
一般に、分散ストレージシステムでは、特定のノードにアクセスが集中すると性能上の問題が発生しやすく、逆にアクセスが各ノードに分散すると問題が発生しにくい。また、一般に、ライトオフローディング技術を適用した分散ストレージシステムにおいて、ライトオフローディングログへのアクセスが発生するのは、そのログに対応するオブジェクトに対する更新を伴うアクセスが発生し、そのアクセスがライトオフローディングログにリダイレクトされたときのみである。このため、ＷＯ先ノードに配置するオブジェクトの数が極端に少ないと、それ以外のノードに対するアクセス頻度が高くなり、結果的にシステム全体の性能が低下する場合がある。このためＷＯ先ノードにも確率的にオブジェクトを配置することがシステム全体の性能を良好に保つ上で好ましいと考えられる。尚、アクセス確率が均等ではない場合、例えばZipf分布のような形をとる場合でも、各オブジェクトのアクセス確率が推定出来ない限り、出来るだけランダムに均等に分散配置するのが有利であると考えられる。
【００７４】
次に、配置先ノードがＸ個選ばれたかどうか確認する（ステップＳ２０４）。選び終わっていないばあいには、ステップＳ２０２に戻る。選び終わった場合には、オブジェクト配置先リストをオブジェクトの生成先として決定し、分散ストレージアクセス部３に対して返答する（ステップＳ２０５）。
【００７５】
本発明の実施の構成では、システム制御部４が、分散ストレージ１の構成ノード１０Ｘの幾つかのノードを省電力モードに移行することで省電力効果を得る。システム制御部４の動作としては次のように動作する。
【００７６】
まず、データ配置状態取得部４１が、分散ストレージデータ配置先管理部１２からデータの配置先情報を取得する。次に、制御内容決定部４２は、分散ストレージ状態情報管理部１１から、構成ノードの状態を取得し、電源制御を行うノード数（省電力モードへ移行する、或いは、通常モードへ復帰するノード数）および、それに必要なデータ移動の内容を決定する（例えば、構成ノード１０Ｘ、１０Ｙを省電力モードに移行し、オブジェクトＺを構成ノード１０Ａに移動する、といった内容）。次に、データ移動制御部４３はデータを移動させ、ノード電源制御部４４は、構成ノード１０Ｘおよび１０Ｙに電源制御命令を発行し、省電力モードに移行させる。
【００７７】
分散ストレージシステムにおいて、図８の動作を行って複数のオブジェクトを複数のノードに分散配置した後、省電力モードに移行し、分散配置した複数ノードの一部を停止するとする。オブジェクトの複製数よりシステムのＷＯ先ノード数が十分多い場合においては、このとき、図８の動作により、停止したノードは分散配置した他のノードのＷＯ先のノードではない。また、分散配置した他のノードには、停止したノードをＷＯ先のノードとするようなノードは存在しない。従って、同じオブジェクトに由来するライトオフローディングログと複製とが同一ノードに集中する事態は発生せず、従ってこうした事態を回避するためのマイグレーションを行う必要もない。
【００７８】
一般に、一部の構成ノードを省電力モードに移行することによりシステム全体の省電力化を図る分散ストレージシステムにおいて、構成ノードを省電力モードに移行するのに先立って、構成ノード間でデータの移動を行なうのは次のような理由による。
【００７９】
・任意のオブジェクトに対して、更新および参照アクセスを行う際に、その複製が全て省電力モードの構成ノードに格納されている場合には、構成ノードを通常稼働状態に復帰させる必要があり、アクセス性能の著しい劣化を引き起こす。例えば、ＡＣＰＩで規定された省電力モードのＳ４からＳ０に復帰させる場合には数十秒かかり、Ｓ３の場合にも１〜２秒必要となる。
【００８０】
・従来の分散ストレージシステムでは、生成したオブジェクトを配置する構成ノードをランダムに選択する。そのため、ライトオフローディングによって冗長性を維持する際に、オブジェクトの格納先とそのＷＯ先ノードの両方に同一オブジェクト（の複製）が格納されることがある。この場合、ライトオフローディングによるログと、通常オブジェクトの更新先が同一ノードに格納されてしまうため、冗長性が低下する。
【００８１】
従って、上記のような状態を起こさないために、次の条件に合致するオブジェクトを、適切な構成ノードへ移動させる必要がある。
【００８２】
（１）ＷＯノード上にある、これから省電力モードへ移行する構成ノードに格納されているオブジェクトの複製。 
（２）これから省電力モードへ移行するノードおよび、既に省電力モードへ移行したノードにおいて、ＷＯ先ノードが共通しているオブジェクトの複製（１つを除いて全て）。
【００８３】
オブジェクト生成をランダムに配置する従来の分散ストレージシステムでは、上記（１）と（２）両方のオブジェクトを移動させる必要がある。
【００８４】
一方、本発明の分散ストレージシステムでは、ステップＳ２０２でノードを配置先として選択して配置先リストに追加するとともに、ステップＳ２０３では、ステップＳ２０２で選択したノード自身、及び、そのノードと条件（ｂ）（ｃ）に該当するノードを選択候補リストから除外し、以後、そのノードを配置先ノードの選択候補から外す。これを繰り返して配置先リストを構成する。このようにして構成された配置先リストには、配置先リスト内の他のノードのＷＯ先ではなく、また、配置先リスト内の他のノードをＷＯ先としないようなノードのみが記載される。
【００８５】
従って、配置先リスト内からノードを選択すれば、省電力モードに移行する構成ノードに配置されたオブジェクトの複製が、その構成ノードのＷＯ先として設定されたノードに配置されることはないので、（１）の条件に合致するオブジェクトは分散ストレージシステムに存在せず、（２）の条件に合致するオブジェクトのみを移動すれば足りることとなる。
【００８６】
これにより、複数オブジェクトを異なるノードに配置することにより得られる冗長性を省電力モードへの移行の前後で維持するために必要となるマイグレーションの回数を削減することが可能となり、その結果、データ移動量を削減することができる。このデータ移動量は、システムの構成ノード数が大きいほど、保持しているオブジェクト数が大きいほど、また省電力モードに移行させるノード数が大きいほど増大するために、本発明のデータ移動量削減効果も大きくなる。
【００８７】
以上、本発明を実施の形態に即して説明したが、本発明はこれに限定されるものではない。例えば、上述の分散ストレージシステムは２台のＷＯノードを備えることとして説明したが、本発明はこれに限定されるものではなく、ＷＯノードが１台であっても、或いは３台以上であってもよい。同様に、システム全体でのノードの総数にも制限はない。また、説明を簡単にするため、各ノードは停止する動作モードと稼動する動作モードの２種類を有するものとして説明したが、例えばＡＣＰＩ標準のように３種類以上の動作モードを各ノードが有する場合にも本発明を適用可能であることは、当業者には容易に理解されるだろう。
【００８８】
上記の実施形態の一部又は全部は以下の付記のようにも記載されうるが、これらに限定されるものではない。
【００８９】
（付記１）
それぞれがストレージとして動作する複数のノードを備える分散ストレージシステムであって、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記分散ストレージシステムは、前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含み、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する生成時データ配置先決定手段を備える
ことを特徴とする分散ストレージシステム。
【００９０】
（付記２）
前記生成時データ配置先決定手段は、
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする付記１に記載の分散ストレージシステム。
【００９１】
（付記３）
前記Ｘ台のノードを選択する過程で、ライトオフローディング先のノードとして予め定められたノードであって未選択なものの台数が、前記Ｘ台よりも少ない場合、前記生成時データ配置先決定手段は、当該未選択のライトオフローディング先のノードを以後の選択候補から除外することを特徴とする付記１及び付記２のいずれかに記載の分散ストレージシステム。
【００９２】
（付記４）
ライトオフローディング先のノードとして予め定められたノードのうち、未選択なノードの台数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のライトオフローディング先のノードを選択候補から除外することを特徴とする付記１及び付記２のいずれかに記載の分散ストレージシステム。
【００９３】
（付記５）
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む
分散ストレージシステムとともに用いる装置であって、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する
ことを特徴とする生成時データ配置先決定装置。
【００９４】
（付記６）
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする付記５に記載の生成時データ配置先決定装置。
【００９５】
（付記７）
前記Ｘ台のノードを選択する過程で、ライトオフローディング先のノードとして予め定められたノードであって未選択なものの台数が、前記Ｘ台よりも少ない場合、前記生成時データ配置先決定手段は、当該未選択のライトオフローディング先のノードを以後の選択候補から除外することを特徴とする付記５及び付記６のいずれかに記載の生成時データ配置先決定装置。
【００９６】
（付記８）
ライトオフローディング先のノードとして予め定められたノードのうち、未選択なノードの台数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のライトオフローディング先のノードを選択候補から除外することを特徴とする付記５及び付記６のいずれかに記載の生成時データ配置先決定装置。
【００９７】
（付記９）
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、
前記複数のノードの少なくとも一部である複数のノードが前記第１の動作モードにて動作する段階と、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する段階と、
前記Ｘ個のデータオブジェクトを他のノードにマイグレーションすることなく、前記選択したＸ台のノードの少なくとも一部を第２の動作モードに移行させる段階と
を含むことを特徴とする分散配置ノード選択方法。
【００９８】
（付記１０）
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
ことを特徴とする付記９に記載の分散配置ノード選択方法。
【００９９】
（付記１１）
前記Ｘ台のノードを選択する過程で、ライトオフローディング先のノードとして予め定められたノードであって未選択なものの台数が、前記Ｘ台よりも少ない場合、前記生成時データ配置先決定手段は、当該未選択のライトオフローディング先のノードを以後の選択候補から除外する段階を更に含むことを特徴とする付記９及び付記１１のいずれかに記載の分散配置ノード選択方法。
【０１００】
（付記１２）
ライトオフローディング先のノードとして予め定められたノードのうち、未選択なノードの台数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のライトオフローディング先のノードを選択候補から除外する段階を更に含むことを特徴とする付記９及び付記１１のいずれかに記載の分散配置ノード選択方法。
【０１０１】
（付記１３）
それぞれがストレージとして動作する複数のノードを備え、
前記複数のノードの少なくとも一部は、第１の動作モードと、前記第１の動作モードよりも消費電力が低い第２の動作モードとを有し、
前記第２の動作モードにあるノードに対する書き込み要求を、そのノードについて予め定められた他のノードにリダイレクトして、その書き込み要求を一時的にそのノードに書き込むもの、即ちライトオフローディングを行うものであり、前記複数のノードは、一のノードと、当該一のノードのライトオフローディング先として予め定められたノードとからなる組み合わせを含む分散ストレージシステムに関して、
一の新規データオブジェクトに対応するＸ個（Ｘは２以上の自然数）のデータオブジェクトをそれぞれ別ノードに配置するための相異なるＸ台のノードを、前記複数のノードの中から選択する際、選択したＸ台のノードが前記組み合わせになるのを回避するようにして選択する手順をコンピュータに実行させるためのプログラム。
【０１０２】
（付記１４）
前記第１の動作モードで動作中のノードからなる選択候補リストの中から一のノードを選択し、
選択したノード、選択したノードのライトオフローディング先として予め定められたノード、及び、選択したノードをライトオフローディング先として予め定められたノードを、前記選択候補リストから除外する
付記１３に記載のプログラム。
【０１０３】
（付記１５）
前記Ｘ台のノードを選択する過程で、ライトオフローディング先のノードとして予め定められたノードであって未選択なものの台数が、前記Ｘ台よりも少ない場合、前記生成時データ配置先決定手段は、当該未選択のライトオフローディング先のノードを以後の選択候補から除外する手順を更にコンピュータに実行させる付記１３及び付記１４のいずれかに記載のプログラム。
【０１０４】
（付記１６）
ライトオフローディング先のノードとして予め定められたノードのうち、未選択なノードの台数が１台になった時点で、選択すべきノードの台数がまだ２台以上残っている場合、その未選択のライトオフローディング先のノードを選択候補から除外する手順を更にコンピュータに実行させる付記１３及び付記１４のいずれかに記載のプログラム。
【産業上の利用可能性】
【０１０５】
本発明によれば、複数のノードによってストレージシステムを実現する、分散ストレージシステムといった用途に適用できる。
【符号の説明】
【０１０６】
１        分散ストレージ
２        データアクセス先決定部
３        分散ストレージアクセス部
４        システム制御部
１１      分散ストレージ状態情報管理部
１２      分散ストレージデータ配置先管理部
１３      データ送受信部
１４      データ保持部
２１      生成時データ配置先決定部
２２      通常時アクセス先決定部
４１      データ配置状態取得部
４２      制御内容（データ移動・ノード電源停止）決定部
４３      データ移動制御部
４４      ノード電源制御部
１０１〜１０８    分散ストレージ構成ノード
１４１    通常データ保持部
１４２    一時データ保持部
２００    ネットワーク
３００    クライアントノード
【図１】
2014021544.tif 000003
【図２】
2014021544.tif 000004
【図３】
2014021544.tif 000005
【図４】
2014021544.tif 000006
【図５】
2014021544.tif 000007
【図６】
2014021544.tif 000008
【図７】
2014021544.tif 000009
【図８】
2014021544.tif 000010
【図９】
2014021544.tif 000011