(57)【要約】【課題】システムに対する制約を守ったまま自律負荷分散制御ができる、分散ストレージシステムを提供する。【解決手段】本発明による分散ストレージシステムは、データを保持するための記憶手段を備える複数の構成ノードがネットワークを介して接続されてなる。各構成ノードは、それぞれ論理的に接続された任意の数の論理的接続先ノードに対しデータを転送するデータ転送手段と、前記記憶手段のデータ保持状態情報及び前記任意の数の論理的接続先ノードと構成ノード自身の負荷情報を負荷状態として取得する状態取得手段と、取得した負荷状態から転送すべきデータ量を転送先ノード毎に計算する制御内容計算手段と、転送されるデータが満たすべき制約ルールを格納している制約ルール保持手段と、計算された転送すべきデータ量から制約を満たすデータを選択し、前記制約ルールを参照して選択したデータが制約ルールを満たしているか確認するデータ選択／ルールチェック手段と、を含む制御手段を備える。【選択図】    図３
2014032575.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
【非特許文献２】Narayanan,D.,Donnelly,A.,Rowstron,A.,“Write Off-Loading: Practical Power Management for Enterprise Storage,”ACM Trans.Storage,Vol.4,No.3,Article 10,November 2008
【発明の概要】
【発明が解決しようとする課題】
【０００７】
第１の問題点は、任意の既存の負荷分散アルゴリズムに基づいてデータ配置制御を行うことにより、実システム上で考慮しなければならない制約を破ることがある、ということである。その理由は、負荷分散制御アルゴリズムがシステムの制約を考慮せずに開発されていることがあるためである。さらに、既に実績がある負荷分散アルゴリズムに対して、実システム毎に異なる制約条件があった場合、それらの負荷分散アルゴリズムを制約条件の異なるシステムに適用するためには負荷分散アルゴリズムの修正が必要になり、その修正には高度な技術的知見を必要としてしまい汎用的なシステムとして利用が困難になってしまう。
【０００８】
例えば、分散ストレージシステムに対し、各構成ノードが自律分散的にデータの転送を行う事で、負荷分散を実現する制御アルゴリズムを動作させるとする。その場合、分散ストレージシステムが、例えば非特許文献１のような複数ノードにデータの複製を配置することで可用性を維持する仕組みになっている場合には、負荷分散アルゴリズムによるデータの移動によってその可用性が失われないように調整しなければならない。つまり、データの複製が同一ノードに複数保持されてはならない、という制約がある。このとき負荷分散アルゴリズムがその制約を考慮していない場合には、データは無規律に転送されてしまい、ある時点でデータの複製が同一ノードに置かれることを回避できなくなるために、可用性を維持できなくなりシステムとして問題を起こしてしまう。
【０００９】
第２の問題点は、負荷分散のために移動できるデータが存在せず、データ移動制御が行えないことがある、ということである。その理由は、本発明で想定するような自律負荷分散制御システムにおいては、各構成ノードが負荷分散のためのデータ移動制御を自律的に判断して行う。そして、このようなシステムにおいては、各構成ノードは分散システムの一部のノードのみを転送候補として制御内容を計算することで計算コストを削減しようとしている。このような制御方式において、前述のように制約を考慮したデータ転送を行う場合に、各構成ノードの転送候補となるノードが少ない場合には、保護する制約によっては移動制御の出来るデータが存在しないことがあるためである。
【００１０】
本発明の課題は、システムに対する制約を守ったまま自律負荷分散制御ができる、分散ストレージシステムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の態様による分散ストレージシステムは、システムを構成する各構成ノードが、それぞれ論理的に接続された幾つかのノードに対しデータの転送制御を行うシステム構成を持つ。具体的には、各構成ノードが、それぞれ論理的に接続された任意の数の論理的接続先ノードに対しデータを転送するデータ転送手段と、前記記憶手段のデータ保持状態情報及び前記任意の数の論理的接続先ノードと構成ノード自身の負荷情報を負荷状態として取得する状態取得手段と、取得した負荷状態から転送すべきデータ量を転送先ノード毎に計算する制御内容計算手段と、転送されるデータが満たすべき制約ルールを格納している制約ルール保持手段と、計算された転送すべきデータ量から制約を満たすデータを選択し、前記制約ルールを参照して選択したデータが制約ルールを満たしているか確認するデータ選択／ルールチェック手段と、を含む制御手段を備え、各構成ノードが定期的に独立して負荷状態に応じてデータの転送制御を行うよう動作する。
【００１２】
このような構成を採用し、転送データを決定する際に制約ルールを満たすデータだけを選ぶよう動作することにより、本発明の課題を達成する事が出来る。
【００１３】
本発明の第２の態様によれば、データを保持するための記憶手段を備える複数の構成ノードがネットワークを介して接続された分散ストレージシステムにおける分散ストレージデータ移動制御方法が提供される。本方法においては、各構成ノードが、それぞれ転送されるデータが満たすべき制約ルールをあらかじめ制約ルール保持手段に格納している。各構成ノードはまた、それぞれ論理的に接続された任意の数の論理的接続先ノードに対しデータを転送するステップと、前記記憶手段のデータ保持状態情報及び前記任意の数の論理的接続先ノードと構成ノード自身の負荷情報を負荷状態として取得するステップと、取得した負荷状態から転送すべきデータ量を転送先ノード毎に計算するステップと、計算された転送すべきデータ量から制約を満たすデータを選択し、前記制約ルールを参照して選択したデータが制約ルールを満たしているか確認するステップと、を実行することにより、データ転送の必要性の有無判断、データ転送量及び転送先を決定する。
【００１４】
本発明の第３の態様によれば、データを保持するための記憶手段を備える複数の構成ノードがネットワークを介して接続された分散ストレージシステムであって各構成ノードは、それぞれ転送されるデータが満たすべき制約ルールをあらかじめ制約ルール保持手段に格納している分散ストレージシステムに適用されるデータ移動制御用プログラムが提供される。本プログラムは、各構成ノードのコンピュータに、論理的に接続された任意の数の論理的接続先ノードに対しデータを転送するステップと、前記記憶手段のデータ保持状態情報及び前記任意の数の論理的接続先ノードと構成ノード自身の負荷情報を負荷状態として取得するステップと、取得した負荷状態から転送すべきデータ量を転送先ノード毎に計算するステップと、計算された転送すべきデータ量から制約を満たすデータを選択し、前記制約ルールを参照して選択したデータが制約ルールを満たしているか確認するステップと、を実行させる。
【発明の効果】
【００１５】
第１の効果は、システムの制約を守ったまま自律負荷分散制御ができることである。その理由は、各構成ノードが転送データを選択する際に、制約ルールを満たすデータだけを選んで転送するためである。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態の構成の概要を示すブロック図である。
【図２】図１に示された第１の実施の形態における、論理的なノード接続形態を示すブロック図である。
【図３】図１に示された第１の実施の形態の構成のうち、構成ノード１００を中心として制御手段２の構成を詳細に示したブロック図である。
【図４】図３に示された制御内容計算手段２２の実施例における評価関数について説明するための図である。
【図５】図３に示された制御内容計算手段２２の実施例における起動停止判断の指標について説明するための図である。
【図６】本発明の第１の実施の形態の動作を説明するための流れ図である。
【図７】本発明の第１の実施の形態の動作のうち、転送データ選択処理動作を説明するための流れ図である。
【図８】本発明の第２の実施の形態の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
次に、本発明を実施するための形態について図面を参照して詳細に説明する。
【００１８】
図１は本発明の第１の実施の形態におけるシステムの概要を示す構成図である。図１を参照すると、本発明の第１の実施の形態は、ネットワーク２００によって結合された構成ノード１００〜１０８から構成される。以下では、構成ノード１０Ｘと記載する場合、Ｘは０から８の値を取り得ることを意味する。構成ノードの数は図１では９個であるが、任意の複数の数となることは言うまでもない。
【００１９】
構成ノード１０Ｘ（すなわち１００〜１０８）は、分散ストレージシステムを構成するストレージノードである。構成ノード１０Ｘは、データを保持するための記憶装置（例えばＨＤＤ、半導体メモリ等）と、ストレージ機能を実現するための演算装置（例えばＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備える計算機（コンピュータ）によって実現される。
【００２０】
構成ノード１０Ｘは、データストア（記憶手段）１と、ＣＰＵ等により実現される制御手段２と、データ受信手段３と、負荷監視手段４とを備える。データストア１は分散ストレージシステムに格納されるデータを格納する機能を果たす。データストア１は構成ノード１０Ｘが保持する記憶装置と、それに対する記憶処理を実現するソフトウェアによって実現され、構成ノードの計算機リソースによって実現される。制御手段２は、それぞれの構成ノード１０Ｘのデータストア１に格納されているデータのうち、任意のデータを別のノードに配置制御（マイグレーションや複製数の増加）を行う。データ受信手段３は、制御手段２によって行われる配置制御処理によって転送される、自身以外の構成ノードからの転送データを受信しデータストア１へ保持する。負荷監視手段４は、構成ノード１０Ｘのノード負荷情報（例として、データアクセス量、構成ノード１０ＸのＣＰＵ利用率やＩＯ（Ｉｎｐｕｔ−Ｏｕｔｐｕｔ）量などの計算機負荷量）を既存の監視ソフトウェアなどによって取得し、制御手段２と、自身以外の構成ノード１０Ｘの一部に送信する機能を果たす。
【００２１】
ネットワーク２００は、構成ノード１００〜１０８間を接続し、データ及び制御メッセージをやり取りするために用いられる。ネットワーク２００は、例えば、Ethernet（登録商標）、Fibre ChannelやFCoE(Fibre Channel over Ethernet)、InfiniBand、または、これらを利用するTCP/IP(Transmission Control Protocol/Internet Protocol)、RDMA(Remote Direct Memory Access)などの上位プロトコルにより実現されるが、実現方法としてはこれらに限られない。
【００２２】
分散ストレージシステムに格納されるデータは、固定長または意味的に区切られたデータ断片（以下「オブジェクト」という）の集合として、構成ノード１０Ｘのそれぞれのデータストア１のいずれか１つまたは、複数に格納される。複数のノードに格納される場合には、オブジェクトの複製として格納される。分散ストレージシステムのクライアントは、オブジェクト単体あるいは集合に対して、一意の識別子（キー）によってアクセスする。各オブジェクトの他に、オブジェクトに基づいて計算された冗長符号情報が複製として他のノードに格納されるようにしてもよい。冗長符号情報は、ノード故障時において、データの消失を防ぐために用いられる。
【００２３】
オブジェクトの例として、例えば、ファイルシステムのファイル、ファイルと関連するメタデータの集合、関係データベースのタプルもしくはテーブル、オブジェクトデータベースのデータ、Ｋｅｙ−Ｖａｌｕｅデータ格納システムのＶａｌｕｅ、ＪＳＯＮ（Ｊａｖａ  Ｓｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）、ＢＳＯＮ（Ｂｉｎａｒｙ  ＪＳＯＮ）で記載されたドキュメント等が挙げられる。しかし、本発明におけるオブジェクトは、これらのオブジェクトに限られない。また、これらの例について、さらに固定長または意味的に区切ったデータ断片をデータストア１への格納単位としてもよい。
【００２４】
[制御手法の概要]
第１の実施の形態での配置制御手法は、各構成ノード１０Ｘの制御手段２によってデータ転送の必要性と、データ転送量及び転送先を決定し実行する手法である。各構成ノード１０Ｘは、図１に示した通り、ネットワークを介して結合されているため、どのノードに対してもデータを転送することは可能である。ただ、全てのノードを転送先にしてデータ転送量を計算することは計算コストが大きくなるため、各構成ノードを任意のトポロジで論理的に結合し、その論理的な結合先のノードだけを各制御手段２における転送先候補ノードとし、その転送先候補ノードに対するデータの転送必要性可否判断やデータ転送量及び転送先を算出するための計算処理を行う事で、計算量を削減する。
【００２５】
各構成ノード１０Ｘの論理的な結合形式としては、メッシュ型、ツリー型、フルコネクト型、スター型、キューブ型などや、またこれら複数の結合方式を階層的に接続したり、複合的に組み合わせたりする形式がある。本実施の形態としては、説明を簡略化するために、図２に示すような２次元メッシュ構造で接続されるものとする。この場合、構成ノード１００における論理的な接続ノード（転送先候補ノード）は、構成ノード１０１及び１０３である。この接続形態に関する情報は、論理的接続情報として各構成ノード１０Ｘが保持しており、変更された場合には各構成ノードに通知されるものとする。
【００２６】
図３に第１の実施の形態の構成のうち、構成ノード１００を中心として、制御手段２の構成をより詳細に表現したブロック図を示す。制御手段２は、状態取得手段２１、制御内容計算手段２２、データ選択／ルールチェック手段２３、データ移動制御手段（データ転送手段）２４、制約ルール保持手段２５から構成される。それぞれの手段は、構成ノード１０Ｘを実現するハードウェア装置を用いたソフトウェアとして動作する。
【００２７】
構成ノード１００の状態取得手段２１は、データストア１のデータ保持状態情報（例えば、データ保持量、種類）及び構成ノード１００とその論理的接続先ノード（図３の場合、構成ノード１０１及び１０３）の負荷情報を負荷状態として負荷監視手段４（図３の場合、構成ノード１００、１０１、１０３の負荷監視手段４）から取得する。このデータ保持状態情報及び負荷情報の詳細内容は、制御内容計算手段２２のアルゴリズムによって具体的に決定される。
【００２８】
制御内容計算手段２２は、以下に説明するアルゴリズムに基づいて、状態取得手段２１が取得したデータ保持状態情報及び負荷情報を用い、転送すべきデータ量を転送先候補ノード毎に算出し決定する機能を果たす。
【００２９】
まず、図４のような、データストア１と関係する評価関数を導入する。この場合、横軸λはデータストア１の負荷量に相当する。縦軸ｆｉ（λ）は、何らかの効率または利潤に関わる指標である。データストア１の場合、レスポンス効率、エネルギー効率に関する指標を設定する。レスポンス効率によれば、系全体のレスポンスを好適にし、エネルギー効率によれば系全体のエネルギー効率を好適にすることができる。この効率に関わる評価関数を凸関数で表す。凸関数を使用するのも本制御手法の特徴である。図４のような、上に凸な関数を凹関数と呼び、下に凸な関数を凸関数と呼ぶこともあるが、ここでは、関数の性質上で区別する表現を採用し、凹関数も凸関数と表現することにする。
【００３０】
評価関数が凸関数である要素を連携させて、全体で最適化（各要素の評価関数の値の総和が最大となる状態)する問題は、「凸計画問題」として知られており、各要素の動作レベルにおける評価関数の微分値が等しい状況で最適化が達成されることが数学的に明らかにされている。本実施の形態はこの原理を応用している。本実施の形態において、評価関数として凸関数を使った理由がここにある。
【００３１】
この原理を勘案し、各要素の状態変化（本実施の形態のサーバのケースでは負荷分散）を以下の式（１）に従い制御する。
【数１】
2014032575.tif 000003
【００３２】
ここで、λiはデータストア１の負荷量であり、K1は状態変更のゲインに相当する係数である。この制御をかけることで、各要素は評価関数の微分値ｄｆi／ｄλiを等しくするように状態を変更しようとする。これは「凸計画問題」のところで説明したように、全体利潤を最大化するポイントに各要素の状態（負荷量）を制御するのと等価である。つまり、上記式（１）の制御により、評価関数の縦軸で設定された効率が系全体として最大化される。kは要素iに隣接する要素の番号（図２の構成で論理的に接続されている場合には、要素iが構成ノード１００の場合、構成ノード１０１、１０３）を意味する。このように隣接要素が複数個ある場合は、順次、上記式（１）の制御を繰り返せばよい。
【００３３】
上記までの説明の手法で、負荷の配置の問題をリアルタイムに解くことができるが、場合によっては、データストア１（及び構成ノード１０Ｘ）が停止していた方が、効率の上がる場合がある。また、停止していたデータストア１（構成ノード１０Ｘ）を起動したほうが、効率の上がる場合もある。上記式（１）だけでは、この起動停止の判断ができないので、以下の指標を使って、データストア１の起動停止の判断を行う。
【００３４】
まず、要素自身と、その要素に隣接するノードの評価関数間に、ある指標を定義する。図５は、その評価関数を説明するための図である。負荷量λが０のときに、効率または利潤（縦軸）ｆｉ（λ）が負の値を取っている意味は、起動によりコストが発生することを意味している。縦軸を利潤と考えれば、運転（起動）しているにも関わらず、需要がなければ、運転コストが回収（需要家から集める金額）を上回り、利潤がマイナスになるというイメージである。評価関数の値が０になったところが、運転コストと回収が均衡した点であり、評価関数の値がプラスになるということは利益が発生している事を意味する。
【００３５】
ここで、ノードi（自身）のゼロクロス点をλ0,i、隣接ノードｊの評価関数における、ノードｉのゼロクロス点と同じ傾きの点をZij、隣接ノードｊの現在の負荷をλｊとする。したがって、Zijは以下の式（２）で表すことができる。
【数２】
2014032575.tif 000004
【００３６】
そして、ここで以下の式（３）で表される指標Siを定義する。
【数３】
2014032575.tif 000005
【００３７】
この指標Siは、現在の隣接ノードの負荷（総和）が、自身のゼロクロス点よりどれだけ大きいかを意味している。もしノードiが停止しているとして、ノードiを起動すべき条件は、起動することでノードiがゼロクロス点以上の負荷を担当する状況にあるかどうかである。そうすれば利潤はマイナス（評価関数値が負）にならないため、ノードiを起動することで不利はない。指標Siはそれを数値化したものである。隣接ノードがノードiのゼロクロス点における評価関数微分値と等価なZijよりどれだけ負荷を担当しているかを示すのが式（３）の右辺第１項であり、それをゼロクロス点λ0,iで減算することで（右辺第２項）、自身のゼロクロス点以上の負荷が周りに存在しているかを示す指標となっている。指標Siが０より大きければ、ノードiを起動したときにいずれ隣接ノードが担当している負荷はノードiが担当することになり、かつノードiの担当負荷はゼロクロス点以上となる。逆に、指標Siが０より小さければ、ノードiが隣接ノードの担当負荷を新たに担っても、ゼロクロス点以下となり、ノードiの起動により利潤をマイナスにしてしまう。指標Siはこのようなものであり、指標Siの正負を見ることでノードiを起動すべきか停止すべきかがわかる。指標Siが負の時とは、その時点でノードiの負荷は評価関数が負の値をとる領域にあるということで、起動しているノードは評価関数が０以下になった時点で停止すると考えても良い。
【００３８】
以上のように、上記式（１）で各要素の状態変化を制御しながら、上記式（３）の指標Siをモニタすることで、リアルタイムにデータストア１の好適な負荷量の算出、及びノードを起動すべきか停止すべきかの判断をすることができる。これは従来のように予め予測シナリオでスケジューリングして制御していたものに比べ画期的なアルゴリズムとなっている。なぜなら、想定外の外乱や需給変化があってもリアルタイムに即応できるからである。
【００３９】
また、このアルゴリズムは、自律分散的に独立に動くので、どこかが故障したりしても、故障した要素からの信号が途絶えた分だけ、他の要素が自律的にリカバーするという動作を行う。また、突然要素を増やしたり、減らしたりしても、徐々に自律的に適正な動作に向かうことができる。つまり、外乱に対して、非常にロバストであり、また、要素の増減を自由にできるスケーラビリティを有している。
【００４０】
従来のシステムは、故障に対して無力であったり、様々なエラー用のシーケンスを用意したりしなければならなかった。また、勝手に要素（リソース）を増やしたり、減らしたりすればシステム全体の安定性が保たれるか保証はなく、そのたびにプログラム、処理を見直さなければならなかった。本実施の形態のアルゴリズムはこれらの問題を自律分散適応的な制御ですべて解決することができる。
【００４１】
データ選択／ルールチェック手段２３は、制御内容計算手段２２によって決定される、接続先毎のノード及び、転送すべきデータ量及びその転送先ノードの情報から、実際にデータを選択する。その際に、データ選択／ルールチェック手段２３は、制約ルール保持手段２５に格納されているルールを参照し、ルールを満たしているデータを転送データとして選ぶ機能を果たす。
【００４２】
データ移動制御手段２４は、データ選択／ルールチェック手段２３によって選択指定されたデータを、データストア１から取得し、転送先ノードに対してデータを転送する。転送先ノードのデータ受信手段３がそのデータを受信し、転送先ノードのデータストア１に反映する。
【００４３】
制約ルール保持手段２５は、データの保持方式として実システムとして考慮しなければならない制約となる情報である、１つあるいは複数の制約ルールを保持する。
【００４４】
［制約ルールの実施例］
制約ルールを保持する実施例としては、決められたインタフェースを持つ実行プログラムとして保持する方法がある。例えば、転送先ノード番号と転送候補断片データを渡し、転送可ならばYESを応答し、転送不可ならばNOを応答するようなプログラムである。これらの実行プログラムを制約ルール保持手段２５に保持させておき、データ選択／ルールチェック手段２３は、制約ルールとなる実行プログラムを制約ルール保持手段２５から取り出し、実行プログラムに対し転送先ノード番号と転送候補断片データを渡し実行することで、転送可否判定を行う。このインタフェースは別の形であってもよい。例えば、転送先ノード番号と転送候補断片データのデータ配置状態情報（全体の情報）を渡す、あるいは転送候補断片データのID情報から配置先を決定するプログラムを渡す、ということが考えられる。
【００４５】
また、制約ルールをテキストやその他の形式によって記述し、それをプログラムに変換して判定するような仕組みによって実現しても良い。
【００４６】
［全体動作］
次に、図６、図７のフローチャートを参照して、第１の実施の形態の全体動作について詳細に説明する。図６は各構成ノード１０Ｘにおけるデータの転送制御処理フローである。このフローが定期的に実行されることによりシステムを安定的に負荷分散させ動作させる。図７は図６のステップＳ１０３を詳細に説明するフローチャートであり、ある転送先ノードに対し、実際に転送するデータ断片を選択する処理である。
【００４７】
まず、図３、図６を用いて基本的なデータ転送制御処理フローについて説明する。状態取得手段２１は、データストア１からデータの保持状態情報を取得すると共に、自身及び論理的な接続ノードである、構成ノード１００及び１０１、１０３の負荷監視手段４から負荷情報を取得し、負荷状態として制御内容計算手段２２に渡す（ステップＳ１０１）。次に、制御内容計算手段２２は、渡されたデータ保持状態情報と負荷情報を用いて、制御内容（転送先毎の転送データ量）を算出する（ステップＳ１０２）。ステップＳ１０２の具体的方法については制御内容計算手段２２の項に示す。
【００４８】
続いて、データ選択／ルールチェック手段２３は、制約ルール保持手段２５に格納されているルールを満たすよう、転送先ノード毎に転送データ断片を選択し、選択した転送データ断片を指定する情報をデータ移動制御手段２４に渡しデータ移動制御の実行を要求する（ステップＳ１０３）。ステップＳ１０３については詳細を図７のフローチャートによって後述する。
【００４９】
データ移動制御手段２４は、データ選択／ルールチェック手段２３からの転送データ断片を指定する情報に基づいてデータストア１から転送すべきデータ断片を取得し、転送先のデータ受信手段３へデータを転送する（ステップＳ１０４）。
【００５０】
［ステップＳ１０３における転送データ選択］
次に、図７を用いてデータ選択／ルールチェック手段２３によるステップＳ１０３の動作について説明する。前述したように、データ選択／ルールチェック手段２３は、制御内容計算手段２２によって決定された、接続先毎のノード、データ転送量及びその転送先ノードの情報から、データ転送量を満たす分のデータ断片を、状態取得手段２１を介してデータストア１から選ぶ（ステップＳ２０１）。例えば、決定されたデータ転送量がデータ断片１００個分に相当するのであれば、データ選択／ルールチェック手段２３はデータストア１に格納されているデータ断片を１００個選ぶ。選ぶ方法としては、ランダムに選ぶ、FIFO（First in First out）順に選ぶ、FILO（First in Last out）順に選ぶ、など様々な方法が考えられるが、ここではどのような方法に基づいてもよい。
【００５１】
次に、データ選択／ルールチェック手段２３は、制約ルール保持手段２５から制約ルールを取り出す（ステップＳ２０２）。ステップＳ２０１とＳ２０２は独立して実行できるため、任意の順序で実行して良い。
【００５２】
さらに、データ選択／ルールチェック手段２３は、ステップＳ２０２で取得した制約ルールと、ステップＳ２０１で選択した（転送候補となる）データ断片から、各データ断片が制約ルールを満たしているか判定する（ステップＳ２０３）。
【００５３】
さらに、データ選択／ルールチェック手段２３は、ステップＳ２０１で選択した転送候補データ断片全てが、ステップＳ２０３での判定で制約ルールを満たしているかどうか確認する（ステップＳ２０４）。転送候補データ断片全てがルールを満たしている場合（ステップＳ２０４がＹＥＳの場合）、すなわち制約を満たす指定データ量の転送データ断片のリストアップが完了したことになるため、本処理は終了し、図６のステップＳ１０４に進む。
【００５４】
データ断片のうち、制約ルールを満たさないデータがある場合（ステップＳ２０４がＮＯである場合）、データ選択／ルールチェック手段２３は、制約ルールを満たさないデータ量分の新たなデータ断片を再度、データストア１に格納されているデータ断片から選択する（ステップＳ２０５）。基本的な選択方法としてはステップＳ２０１と同様にしてよいが、以前に選択され、ルールを満たさなかったデータ断片は選択候補から外すべきである。データ選択／ルールチェック手段２３は、新しい転送データ断片候補を選んだ後に、ステップＳ２０３に戻り、再度のルール判定処理を行う。
【００５５】
［第２の実施の形態：論理的接合形態の変更］
次に、図８を参照して、本発明の第２の実施の形態について詳細に説明する。図８において、第２の実施の形態は、構成ノードが第１の実施の形態とほぼ同じ構成を持つが、制御手段２内に論理的接合形態管理手段２６を備える点が異なる。
【００５６】
論理的接合形態管理手段２６は、構成ノードの論理的接続先ノードについて応答する手段である。第１の実施の形態においては、構成ノードの論理的接合形態は図２に示すように静的に定められており、各構成ノードが論理的接続情報を保持することとした。第２の実施の形態ではこれを可変にすることが出来る。そのため、状態取得手段２１、制御内容計算手段２２は、この論理的接合形態管理手段２６から論理的接合形態の情報を取得し、取得した論理的接合形態の情報を踏まえて動作する。第１の実施の形態は、構成ノード１００の論理的接合形態管理手段２６が常に構成ノード１０１と１０３を接続先として応答した形の構成と見なすことも出来る。
【００５７】
具体的な実施例としては、構成ノード１０Ｘが保持する記憶装置にファイルなどの形式として論理的接続形態の情報を保持し、他の手段の要求に応じて接続先を応答する、といった方法がある。またその他の手段によって接続形態を変更する場合には、該当ファイルを編集することとなる。この方法はあくまで一例であり、その他の方法に基づいても良いし、実際にはロックなどの管理が必要であるが、本発明の本質と関係が無いため説明は省略する。
【００５８】
第２の実施の形態において、第１の実施の形態と異なる点について説明する。構成ノード１００の状態取得手段２１は、自身及び論理的接続先ノード（ここでは、構成ノード１０１，１０３）の負荷監視手段４から負荷情報を取得するが、この論理的接続先ノードについては、論理的接続形態管理手段２６から接続先情報を受け取った上で、負荷情報を取得する。例えば、構成ノード１０１、１０３に加え、構成ノード１０４が接続先に追加された場合には、構成ノード１０４の負荷監視手段４からも負荷情報を取得する（図８では矢印による図示を省略）。
【００５９】
制御内容計算手段２２は、論理的接合形態管理手段２６から取得した論理的接続先ノード分の転送データ量の計算を行う。例えば、構成ノード１０１、１０３に加え構成ノード１０４が接続先に追加されている場合には、構成ノード１０４についても転送データ量の計算を行う。従って、このように計算対象が増加する場合にはその分の計算コストが増大する。
【００６０】
データ選択／ルールチェック手段２３は、論理的接合形態管理手段２６の情報を制約ルールチェックの結果に応じて変更するように動作する。データ選択／ルールチェック手段２３は、例えば、図７の動作フローのステップＳ２０３においてデータ断片が制約ルールに適合しない頻度が増加したときに、接続先を変更する。例えば、構成ノード１０３の代わりに構成ノード１０４を追加する、あるいは構成ノード１０４を単純に追加する、という方法がある。勿論、その他の構成ノードを追加してもよい。このように論理的接続先ノードを変更することによって、転送データが制約ルールに反せず負荷分散のためのデータ転送制御を実行しやすくなり、データ断片が見つけやすくなる、計算コストが下がる等の効果が得られる。前述した通り、論理的接続先ノードの増加は計算コストの増大を引き起こすため、それとのトレードオフとなる。
【００６１】
接続形態の変更契機として、データ断片が制約ルールに適合しない頻度の他に、制約ルール違反があらかじめ指定された閾値以上発生した場合、といった方法が考えられる。また接続先を変更するか、接続する構成ノードを増加するかについても、接続先数が閾値以下の場合には構成ノードを増加し、それ以上の場合には接続先（論理的接続形態）を変更する、という制御が考えられる。
【００６２】
データ移動制御手段２４についても論理的接続形態が変更されるため、転送先ノードが追加される。図８の構成では構成ノード１０４が追加されているため、転送先が追加されている。
【００６３】
その他については第１の実施の形態とほぼ同じ動作をするため、説明を省略する。
【産業上の利用可能性】
【００６４】
本発明は、複数のノードによってストレージシステムを実現する、分散ストレージシステムといった用途に適用できる。
【符号の説明】
【００６５】
１    データストア
２    制御手段
３    データ受信手段
４    負荷監視手段
２１    状態取得手段
２２    制御内容計算手段
２３    データ選択／ルールチェック手段
２４    データ移動制御手段
２５    制約ルール保持手段
２６    論理的接合形態管理手段
１００〜１０８    構成ノード
２００    ネットワーク
【図１】
2014032575.tif 000006
【図２】
2014032575.tif 000007
【図３】
2014032575.tif 000008
【図４】
2014032575.tif 000009
【図５】
2014032575.tif 000010
【図６】
2014032575.tif 000011
【図７】
2014032575.tif 000012
【図８】
2014032575.tif 000013