(57)【要約】【課題】分散ストレージシステムに属するストレージノードの負荷の均一化を図ること。【解決手段】コンピュータ１は、データアクセスの対象となる各仮想記憶領域と、ストレージノード２，３，４，５が有する記録装置内の各実記憶領域と、の割り当て関係を管理する。負荷情報取得手段１ｃは、各ストレージノードが備える各実記憶領域に対するアクセス情報を各ストレージノードから取得する。負荷情報取得手段１ｃは、取得したアクセス情報に基づいて各実記憶領域の負荷情報を生成して、生成した負荷情報を負荷情報記憶手段１ａに格納する。割当手段１ｄは、負荷情報記憶手段１ａに記憶された負荷情報に基づいて、各ストレージノードの負荷が均一になるように仮想記憶領域への実記憶領域の割り当て関係を変更する。指示手段１ｅは、仮想記憶領域に割り当てる実記憶領域の変更に伴い、各ストレージノードに対して実記憶領域のデータの移動を指示する。【選択図】図１
2010277289.tif 000002
【特許請求の範囲】
【請求項１】
論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を、コンピュータに管理させる管理プログラムであって、
前記コンピュータを、
前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納する負荷情報取得手段、
前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更する割当手段、
前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する指示手段、
として機能させることを特徴とする管理プログラム。
【請求項２】
前記負荷情報には、前記各実記憶領域を配置先の変更対象とするか否かを示すフラグが設けられており、
前記割当手段は、前記負荷情報に含まれる前記フラグを参照して、前記配置先の変更対象となっている記憶領域のうち最大負荷である第１の記憶領域を特定し、前記第１の記憶領域を前記各ストレージノードに割り当てた場合に前記各ストレージノードで発生しうる予測負荷を算出し、算出した当該予測負荷が最小となるストレージノードに前記第１の記憶領域のデータを割り当てると共に、前記第１の記憶領域を前記配置先の変更対象としない旨、前記負荷情報に含まれる前記フラグを変更する、
ことを特徴とする請求項１記載の管理プログラム。
【請求項３】
前記割当手段は、前記複数のストレージノードのうちの何れかが切断されたことを検知した場合、または、前記複数のストレージノードのうちの何れかを切断する指示を受け付けた場合に前記データの配置先の割り当てを行うことを特徴とする請求項１または２の何れか１項に記載の管理プログラム。
【請求項４】
前記割当手段は、前記データの配置先の割り当てを所定の周期で行うことを特徴とする請求項１乃至３の何れか１項に記載の管理プログラム。
【請求項５】
前記割当手段は、同一内容の複数のデータからアクセス要求時にアクセス先として使用する主データとバックアップとして使用する副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一のストレージノードに属さないように前記割り当て関係を変更することを特徴とする請求項１乃至４の何れか１項に記載の管理プログラム。
【請求項６】
論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を管理する管理装置であって、
前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納する負荷情報取得手段と、
前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更する割当手段と、
前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する指示手段と、
を有することを特徴とする管理装置。
【請求項７】
論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を管理するコンピュータの管理方法であって、
負荷情報取得手段が、前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納し、
割当手段が、前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更し、
指示手段が、前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する、
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して分散ストレージシステムを管理する管理プログラム、管理装置および管理方法に関する。
【背景技術】
【０００２】
現在、コンピュータを用いたデータ処理が広く行われるようになり、データを保存・利用するためのストレージ技術が一層重要となっている。近年では、データ保存の高信頼化やデータ利用の高速化を図るため、分散ストレージシステムが構築されている。
【０００３】
分散ストレージシステムでは、複数のストレージノードがネットワークを介して接続される。ストレージノードは、記憶装置を備えており、データを記憶する。ストレージノードには、データを分散して格納することができる。これにより、複数のストレージノードに負荷が分散されてシステムの高速化を図れる。また、アクセスノードは、データを冗長して複数のストレージノードに配置することもできる。これにより、データ保存の高信頼化を図れる。
【０００４】
ところで、システムの運用管理において、システムを構成するノードで発生する負荷の監視が行われる。負荷の監視により、負荷の集中しやすいノードや処理能力に余裕があるノードを特定することができる。その結果に基づき、システム全体のチューニング、データ容量の均一化、ハードウェア資源の拡充および機能の追加などを各ノードの利用状況に応じて的確に行うことができる。
【０００５】
例えば、ディスクアレイ装置では、内蔵された複数のディスク装置に対するアクセス頻度やリード／ライトに要した時間などを取得することが考えられる。具体的には、各ディスク装置上の複数のストライプのうちアクセス頻度の高いストライプを、各ディスク装置のうち現在のものよりも高性能なディスク装置上に置き換えることが考えられている。また、ディスクアレイ装置に設けた論理領域ごとに取得した情報と与えられた条件（要求性能や信頼性レベルなど）とに応じて、論理ユニット（１以上の論理領域の結合）に格納されたデータの配置先を他の論理ユニットに変更することが考えられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０８−０６３２９８号公報
【特許文献２】特開２００８−１５２８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、分散ストレージシステムでは、複数のストレージノードに跨って論理領域（論理ボリューム）が設けられる。そして、論理ボリュームは、ディスク装置に設けられた複数の実記憶領域（スライス）に細分化して管理される。例えば、複数のストレージノード上の複数のスライスが単一の論理ボリュームに対応付けられる。
【０００８】
しかし、従来は複数のストレージノードからスライスごとの負荷情報を収集する技術がなかった。そのため、ネットワーク経由でストレージノードのスライス割り当てを行う分散ストレージシステムでは、各スライスの負荷を考慮して、ディスクノード間の負荷を均一化させることができなかった。
【０００９】
本発明はこのような点に鑑みてなされたものであり、分散ストレージシステムに属するストレージノードの負荷の均一化を図ることができる管理プログラム、管理装置および管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、論理ボリュームに含まれる複数の仮想記憶領域それぞれと、各仮想記憶領域を指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を、コンピュータに管理させる管理プログラムが提供される。この管理プログラムを実行するコンピュータは、負荷情報取得手段、割当手段および指示手段として機能する。負荷情報取得手段は、各ストレージノードが備える各実記憶領域に対するアクセス情報を複数のストレージノードから取得し、取得したアクセス情報に基づいて各実記憶領域の負荷情報を生成して、生成した負荷情報を負荷情報記憶手段に格納する。割当手段は、負荷情報記憶手段に記憶された負荷情報に基づいて、各ストレージノードの負荷が均一になるように仮想記憶領域への実記憶領域の割り当て関係を変更する。指示手段は、仮想記憶領域に割り当てる実記憶領域の変更に伴い、複数のストレージノードに対して実記憶領域のデータの移動を指示する。
【００１１】
また、上記課題を解決するために上記管理プログラムを実行するコンピュータと同様の機能を有する管理装置が提供される。また、上記管理プログラムにより実現される処理と同様の処理を行う管理方法が提供される。
【発明の効果】
【００１２】
上記管理プログラム、管理装置および管理方法によれば、分散ストレージシステムに属するストレージノードの負荷の均一化を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に係る分散ストレージシステムを示す図である。
【図２】第１の実施の形態の分散ストレージシステムの構成を示す図である。
【図３】第１の実施の形態のコントロールノードのハードウェア構成を示す図である。
【図４】第１の実施の形態の論理ボリュームの第１のデータ構造例を示す図である。
【図５】第１の実施の形態の各ノードの機能構成を示す図である。
【図６】第１の実施の形態のスライス管理テーブルのデータ構造を示す図である。
【図７】第１の実施の形態の論理ボリューム管理テーブルのデータ構造例を示す図である。
【図８】第１の実施の形態のアクセス性能テーブルのデータ構造例を示す図である。
【図９】第１の実施の形態のアクセス統計テーブルのデータ構造例を示す図である。
【図１０】第１の実施の形態のスライス負荷管理テーブルのデータ構造例を示す図である。
【図１１】第１の実施の形態のストレージノード負荷管理テーブルのデータ構造例を示す図である。
【図１２】第１の実施の形態の仮割り当て管理テーブルのデータ構造例を示す図である。
【図１３】第１の実施の形態の論理ボリュームの第２のデータ構造例を示す図である。
【図１４】第１の実施の形態の再配置処理の手順を示すフローチャートである。
【図１５】第１の実施の形態のスライス再配置後の論理ボリュームのデータ構造例を示す図である。
【図１６】第１の実施の形態のスライス再配置後の負荷の具体例を示す図である。
【図１７】第２の実施の形態のストレージノード負荷管理テーブルのデータ構造例を示す図である。
【図１８】第２の実施の形態の仮割り当て管理テーブルのデータ構造例を示す図である。
【図１９】第２の実施の形態のスライス再配置後の論理ボリュームのデータ構造例を示す図である。
【図２０】第２の実施の形態のスライス再配置後の負荷の具体例を示す図である。
【発明を実施するための形態】
【００１４】
以下、実施の形態を図面を参照して詳細に説明する。
図１は、本実施の形態に係る分散ストレージシステムを示す図である。この分散ストレージシステムは、コンピュータ１およびストレージノード２，３，４，５を有する。コンピュータ１およびストレージノード２，３，４，５は、ネットワークを介して接続される。コンピュータ１は、ストレージノード２，３，４，５に設けられた実記憶領域に対するデータの配置を管理する。
【００１５】
ここで、ストレージノード２には、実記憶領域２ａ，２ｂ，２ｃ，２ｄが設けられている。ストレージノード３には、実記憶領域３ａ，３ｂ，３ｃ，３ｄが設けられている。ストレージノード４には、実記憶領域４ａ，４ｂ，４ｃ，４ｄが設けられている。ストレージノード５には、実記憶領域５ａ，５ｂ，５ｃ，５ｄが設けられている。各実記憶領域は、分散ストレージシステムにおいて、論理ボリュームに含まれ、データアクセスの対象となる複数の仮想記憶領域それぞれに対応付けられる。
【００１６】
コンピュータ１は、負荷情報記憶手段１ａ、管理情報記憶手段１ｂ、負荷情報取得手段１ｃ、割当手段１ｄおよび指示手段１ｅを有する。
負荷情報記憶手段１ａは、ストレージノード２，３，４，５に設けられた各実記憶領域の負荷を示す負荷情報を記憶する。
【００１７】
管理情報記憶手段１ｂは、各仮想記憶領域と各実記憶領域との割り当て関係を管理する管理情報を記憶する。管理情報には、例えば、実記憶領域２ａ，３ｃが１つの仮想記憶領域に対応付けられる。
【００１８】
実記憶領域２ａには、例えば、アクセス要求時にアクセス先として使用する主データ（主１）が格納される。この場合、実記憶領域３ｃには、主データ（主１）のバックアップとして使用する副データ（副１）が格納される。更に、管理情報には、例えば、実記憶領域２ａに配置された主データ（主１）と実記憶領域３ｃに配置された副データ（副１）との対応付けも定義される。他の記憶領域に関しても同様である。
【００１９】
負荷情報取得手段１ｃは、ストレージノード２，３，４，５からアクセス性能やアクセス統計の情報を含むアクセス情報を取得する。負荷情報取得手段１ｃは、取得したアクセス情報に基づいて、ストレージノード２，３，４，５の各実記憶領域に対する負荷を取得して負荷情報を生成し、負荷情報記憶手段１ａに格納する。負荷の内容としては、例えば、各実記憶領域に対する読み出しや書き込みのアクセス頻度に基づくものが考えられる。
【００２０】
負荷情報には、例えば、主データを配置した実記憶領域に対するアクセス負荷の高低が設定される。例えば、実記憶領域２ａの負荷が“高”であると設定される。また、例えば、実記憶領域３ａの負荷が“中”であると設定される。また、例えば、実記憶領域４ｂの負荷が“低”であると設定される。他の記憶領域に関しても同様である。
【００２１】
割当手段１ｄは、負荷情報記憶手段１ａに記憶された負荷情報に基づいて、管理情報記憶手段１ｂに記憶された管理情報を操作して、ストレージノード２，３，４，５の負荷が均一になるように仮想記憶領域への実記憶領域の割り当て関係を変更する。
【００２２】
指示手段１ｅは、仮想記憶領域に割り当てる実記憶領域の変更に伴い、管理情報記憶手段１ｂに記憶された管理情報を参照して、ストレージノード２，３，４，５に対して実記憶領域のデータの移動を指示する。
【００２３】
コンピュータ１によれば、負荷情報取得手段１ｃにより、ストレージノード２，３，４，５から各実記憶領域に対するアクセス情報が取得される。負荷情報取得手段１ｃにより、このアクセス情報からストレージノード２，３，４，５の各実記憶領域に対する負荷を示す負荷情報が生成され、生成された負荷情報が負荷情報記憶手段１ａに格納される。割当手段１ｄにより、負荷情報記憶手段１ａに記憶された負荷情報に基づいて、ストレージノード２，３，４，５の負荷が均一になるように仮想記憶領域への実記憶領域の割り当て関係が変更される。指示手段１ｅにより、仮想記憶領域に割り当てる実記憶領域の変更に伴い、ストレージノード２，３，４，５に対して実記憶領域のデータの移動が指示される。
【００２４】
これにより、分散ストレージシステムに属するストレージノードの負荷の均一化を図ることができる。具体的には、ストレージノード２，３，４，５の各実記憶領域の負荷に応じて、各実記憶領域のデータ配置を変更するので、ストレージノード２，３，４，５の負荷を均一にするための細かな調整を行うことができるようになる。このため、局所的に高負荷となることが避けられ、システム全体としてのアクセス性能が向上する。
【００２５】
このとき、割当手段１ｄは、主データと該当の主データと同一内容の副データの配置先とが同一のストレージノードに属さないように主データの配置先を割り当てることが考えられる。
【００２６】
例えば、割当手段１ｄは、主データ（例えば、主１）の配置先を対応する副データ（例えば、副１）が配置されていないストレージノード（例えば、ストレージノード２，４，５）から選択する。
【００２７】
このようにすると、データ配置の変更に際して、主データと対応する副データとが異なるストレージノードに配置されるので、双方のデータが単一のストレージノードに属することがない。このため、１つのストレージノードが切断したときに両方の冗長データにアクセスできなくなるという事態を避けることができるので信頼性が損なわれることがなくなる。
【００２８】
また、コンピュータ１は、例えば、ストレージノード２，３，４，５の負荷情報を定期的に取得することが考えられる。
そして、コンピュータ１は、このようなデータ配置先の変更を、例えば次のようなタイミングで実行することが考えられる。すなわち、ストレージノード２，３，４，５の何れかを停止するタイミング、何れかのストレージノードで障害が発生したことを検知したタイミング、新たなストレージノードが追加されたタイミングなどである。また、コンピュータ１は、例えば、このようなデータ配置先の変更を定期的に実行することも考えられる。
【００２９】
このように、コンピュータ１は、所定のタイミングで適宜データ配置先の変更を行うことで、分散ストレージシステムのアクセス性能を考慮した、より効率的な運用が可能となる。
【００３０】
［第１の実施の形態］
以下、第１の実施の形態を図面を参照して詳細に説明する。
図２は、第１の実施の形態の分散ストレージシステムの構成を示す図である。分散ストレージシステムは、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置することで、信頼性と処理性能とを向上させたストレージシステムである。
【００３１】
この分散ストレージシステムでは、ストレージノード１００，２００，３００，４００、コントロールノード５００、アクセスノード６００および管理ノード３０がネットワーク１０を介して相互に接続されている。また、端末装置２１，２２，２３が、ネットワーク２０を介してアクセスノード６００に接続されている。
【００３２】
ストレージノード１００，２００，３００，４００には、それぞれストレージ装置１１０，２１０，３１０，４１０が接続されている。ストレージノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由でアクセスノード６００に提供する。また、ストレージノード１００，２００，３００，４００は、データに冗長性をもたせて管理している。すなわち、同一内容のデータが、２つのストレージノードで管理されている。このようにデータを冗長化させて管理することで、高信頼化を図っている。ストレージ装置２１０，３１０，４１０は、例えば、内蔵する複数のＨＤＤ（Hard disk Drive）を用いてＲＡＩＤ（Redundant Arrays of Independent Disks）を実現したディスクアレイ装置である。
【００３３】
コントロールノード５００は、ストレージノード１００，２００，３００，４００を管理する。具体的には、コントロールノード５００は、データの配置状況を示す論理ボリュームを保持している。コントロールノード５００は、ストレージノード１００，２００，３００，４００からデータの管理に関する情報を取得し、必要に応じて論理ボリュームを更新する。また、コントロールノード５００は、論理ボリュームが更新されると、その影響を受けるストレージノードに対して更新内容を通知する。論理ボリュームの詳細は、後述する。
【００３４】
アクセスノード６００は、端末装置２１，２２，２３に対して、ストレージノード１００，２００，３００，４００が管理するデータを利用した情報処理のサービスを提供する。すなわち、アクセスノード６００は、端末装置２１，２２，２３からの要求に応答して所定のプログラムを実行し、必要に応じてストレージノード１００，２００，３００，４００にアクセスする。ここで、アクセスノード６００は、コントロールノード５００から論理ボリュームを取得し、取得した論理ボリュームに基づいてアクセスすべきストレージノードを特定する。
【００３５】
管理ノード３０は、分散ストレージシステムの管理者が操作する端末装置である。分散ストレージシステムの管理者は、管理ノード３０を操作して、ストレージノード１００，２００，３００，４００、コントロールノード５００およびアクセスノード６００にアクセスし、運用に必要な各種設定を行うことができる。
【００３６】
図３は、第１の実施の形態のコントロールノードのハードウェア構成を示す図である。コントロールノード５００は、ＣＰＵ（Central Processing Unit）５０１、ＲＡＭ（Random Access Memory）５０２、ＨＤＤ５０３、グラフィック処理装置５０４、入力インタフェース５０５および通信インタフェース５０６を有する。
【００３７】
ＣＰＵ５０１は、コントロールノード５００全体の動作を制御する。
ＲＡＭ５０２は、ＣＰＵ５０１に実行させるＯＳのプログラムやアプリケーションソフトウェア（以下、アプリケーションという）のプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ５０２は、ＣＰＵ５０１による処理に必要な各種データを記憶する。
【００３８】
ＨＤＤ５０３は、ＯＳのプログラム、アプリケーションのプログラムを記憶する。また、ＨＤＤ５０３は、ＣＰＵ５０１による処理に必要な各種データを記憶する。なお、ＨＤＤ５０３の代わりに例えばＳＳＤ（Solid State Drive）などの他の不揮発性の記憶装置を用いることもできる。
【００３９】
グラフィック処理装置５０４は、モニタ５１と接続される。グラフィック処理装置５０４は、ＣＰＵ５０１からの命令に従ってモニタ５１の画面に画像を表示させる。
入力インタフェース５０５は、キーボード５２とマウス５３と接続される。入力インタフェース５０５は、キーボード５２やマウス５３から送られてくる信号をＣＰＵ５０１に送信する。
【００４０】
通信インタフェース５０６は、ネットワーク１０と接続され、ストレージノード２００，３００，４００、コントロールノード５００やアクセスノード６００とのデータの送受信を行う。
【００４１】
なお、ストレージノード１００，２００，３００，４００、アクセスノード６００、管理ノード３０および端末装置２１，２２，２３についてもコントロールノード５００と同様のハードウェア構成により実現できる。ただし、ストレージノード１００，２００，３００，４００は、ストレージ装置１１０，１２０，１３０，１４０と接続するためのＨＤＤインタフェースを更に備えている。また、アクセスノード６００は、ネットワーク１０と接続するための通信インタフェースに加えて、ネットワーク２０と接続するための通信インタフェースを更に備えている。
【００４２】
次に、コントロールノード５００がアクセスノード６００に対して提供する論理ボリュームについて説明する。論理ボリュームは、ストレージノード２００，３００，４００によって分散管理されているデータを、アクセスノード６００から容易に利用できるようにするための仮想的なボリュームである。
【００４３】
図４は、第１の実施の形態の論理ボリュームの第１のデータ構造例を示す図である。論理ボリューム７００には、“ＬＶＯＬ１”という論理ボリュームＩＤ（IDentifier）が付与されている。また、ストレージノード１００，２００，３００，４００には、それぞれ“ＳＮ−Ａ”，“ＳＮ−Ｂ”，“ＳＮ−Ｃ”，“ＳＮ−Ｄ”というノードＩＤが付与されている。
【００４４】
ストレージノード１００，２００，３００，４００に接続されたストレージ装置１１０，２１０，３１０，４１０それぞれにおいて、例えばＲＡＩＤ５の論理ディスクが構成されている。この論理ディスクは８つのスライスに分割されて、各ストレージノード内で一元的に管理されている。
【００４５】
ストレージ装置１１０内の記憶領域は、６つのスライス１１１〜１１８に分割されている。ストレージ装置２１０内の記憶領域は、６つのスライス２１１〜２１８に分割されている。ストレージ装置３１０内の記憶領域は、６つのスライス３１１〜３１８に分割されている。ストレージ装置４１０内の記憶領域は、６つのスライス４１１〜４１８に分割されている。
【００４６】
論理ボリューム７００は、セグメント７１０，７２０，７３０，７４０，７５０，７６０，・・・という単位で構成される。セグメント７１０，７２０，７３０，７４０，７５０，７６０，・・・は、プライマリスライス７１１，７２１，７３１，７４１，７５１，７６１，・・・とセカンダリスライス７１２，７２２，７３２，７４２，７５２，７６２，・・・との組で構成される。
【００４７】
図４では、スライスＩＤを“Ｐ”または“Ｓ”のアルファベットと数字との組み合わせで示している。“Ｐ”はプライマリスライス（主データを格納するためのスライス）であることを示している。“Ｓ”はセカンダリスライス（副データを格納するためのスライス）であることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば１番目のセグメント７１０のプライマリスライス７１１が“Ｐ１”で示され、セカンダリスライスが“Ｓ１”で示される。そして、“Ｐ１”と“Ｓ１”のスライスには、同一のデータが格納され、データの冗長化が図られる。
【００４８】
このような構造の論理ボリューム７００の各プライマリスライスおよびセカンダリスライスが、ストレージ装置１１０，２１０，３１０，４１０内の何れかのスライスに対応付けられる。例えば、セグメント７１０のプライマリスライス７１１がストレージ装置１１０のスライス１１１に対応付けられ、セカンダリスライス７１２がストレージ装置４１０のスライス４１４に対応付けられる。
【００４９】
そして、ストレージ装置１１０，２１０，３１０，４１０には、自己のスライスに対応付けられたプライマリスライスまたはセカンダリスライスのデータが格納される。なお、論理ボリュームは、データの用途やアクセス元の権限などに応じて、複数作成することができる。論理ボリュームに現れないスライスはアクセスノード６００から認識することができないため、論理ボリュームを使い分けることはセキュリティの向上にも寄与する。
【００５０】
図５は、第１の実施の形態の各ノードの機能構成を示す図である。ストレージノード１００は、スライス情報記憶部１２０、アクセス性能記憶部１３０、アクセス統計情報記憶部１４０、データアクセス部１５０、スライス管理部１６０、アクセス性能測定部１７０、アクセス統計情報取得部１８０およびアクセス情報送信部１９０を有する。
【００５１】
スライス情報記憶部１２０は、ストレージ装置１１０が有するスライスについてのスライス情報が格納される。スライス情報には、スライスを特定するためのアドレスやスライスへの割り当ての種別（プライマリスライスまたはセカンダリスライスの何れか）などが含まれる。また、各スライスについて、同一セグメントに属する対応するスライス（プライマリスライスに対応するセカンダリスライスまたはセカンダリスライスに対応するプライマリスライス）を管理しているストレージノードに関する情報も含まれる。
【００５２】
アクセス性能記憶部１３０は、ストレージ装置１１０で許容される最大のアクセス性能を示す情報を記憶する。このアクセス性能は、アクセス性能測定部１７０により予め測定される。
【００５３】
アクセス統計情報記憶部１４０は、ストレージ装置１１０の各スライスに対する読み出しアクセス数と書き込みアクセス数と運用時間とを計測して得られたアクセス統計情報を記憶する。アクセス統計情報は、アクセス統計情報取得部１８０により取得される。
【００５４】
データアクセス部１５０は、アクセスノード６００からのアクセスを受け付けると、スライス情報記憶部１２０に記憶されたスライス情報を参照して、ストレージ装置１１０に格納されたデータにアクセスする。
【００５５】
具体的には、データアクセス部１５０は、アクセスノード６００からアドレスを指定したデータの読み出し要求（Ｒｅａｄ要求）を受け付けると、指定されたアドレスが属するスライスがプライマリスライスであるか否かを判断する。プライマリスライスである場合には、データアクセス部１５０は、指定されたアドレスに対応するデータをストレージ装置１１０から取得し、アクセスノード６００に送信する。プライマリスライスでない場合には、データアクセス部１５０は、アドレスの指定が不適切である旨をアクセスノード６００に通知する。
【００５６】
また、データアクセス部１５０は、アクセスノード６００からアドレスおよび書き込み内容を指定したデータの書き込み要求（Ｗｒｉｔｅ要求）を受け付けるとストレージ装置１１０内の指定されたアドレスに対応する位置にデータの書き込みを試みる。そして、データアクセス部１５０は、書き込みの結果をアクセスノード６００に通知する。
【００５７】
また、データアクセス部１５０は、指定されたアドレスが属するスライスがプライマリスライスである場合、対応するセカンダリスライスを管理するストレージノードに対して、同様の書き込みを行うよう指示する。これによって、プライマリスライスとセカンダリスライスとの内容が一致するように維持される。
【００５８】
更に、データアクセス部１５０は、スライス情報記憶部１２０に記憶されたスライス情報が更新されると、ストレージノード２００，３００，４００にネットワーク１０を通じてスライス情報を送信することにより、スライスの配置を更新後の状態に変更する。
【００５９】
スライス管理部１６０は、ストレージノード１００の稼動状態を定期的にコントロールノード５００に通知する。また、スライス管理部１６０は、コントロールノード５００からスライスの情報の取得要求があるとスライス情報記憶部１２０に格納されたスライス情報を送信する。また、スライス管理部１６０は、スライス情報の更新の指示を受け付けると、指示された更新内容を、スライス情報記憶部１２０に記憶されたスライス情報に反映させる。
【００６０】
アクセス性能測定部１７０は、ストレージ装置１１０の最大のアクセス性能を測定し、測定結果をアクセス性能記憶部１３０に格納する。アクセス性能測定部１７０は、例えば、ストレージノード１００やストレージ装置１１０の起動時やシステム全体の初期化時などにアクセス性能の測定を行う。例えば、アクセス性能測定部１７０は、ストレージ装置１１０に対して最大限の負荷を掛けたときのｉｏｐｓをアクセス性能として測定する。
【００６１】
アクセス統計情報取得部１８０は、ストレージ装置１１０に対するデータアクセス部１５０による読み出しアクセスや書き込みアクセスの回数を取得する。また、アクセス統計情報取得部１８０は、アクセス回数を取得した総時間を記録する。アクセス統計情報取得部１８０は、このようにして得たアクセス統計情報をアクセス統計情報記憶部１４０に格納する。
【００６２】
アクセス情報送信部１９０は、アクセス性能記憶部１３０に記憶されたアクセス性能やアクセス統計情報記憶部１４０に記憶されたアクセス統計情報（これらをまとめてアクセス情報とよぶ）をコントロールノード５００に送信する。アクセス情報送信部１９０は、コントロールノード５００からの要求に応じて、または、定期的にアクセス情報をコントロールノード５００に送信する。
【００６３】
なお、ストレージノード２００，３００，４００に関しても、ストレージノード１００と同一の機能構成により実現できる。
コントロールノード５００は、スライス情報群記憶部５１０、負荷情報記憶部５２０、負荷情報取得部５３０および論理ボリューム管理部５４０を有する。
【００６４】
スライス情報群記憶部５１０には、ストレージノード１００，２００，３００，４００が管理するスライス情報が格納される。スライス情報群記憶部５１０に格納されるスライス情報は、ストレージノード１００，２００，３００，４００が保持している情報を収集したものである。
【００６５】
負荷情報記憶部５２０は、ストレージノード１００，２００，３００，４００の各スライスに対する負荷を示す負荷情報を記憶する。負荷情報は、負荷情報取得部５３０により生成され、負荷情報記憶部５２０に格納される。
【００６６】
負荷情報取得部５３０は、ストレージノード１００，２００，３００，４００からアクセス情報を受信する。負荷情報取得部５３０は、受信したアクセス情報に基づいて、ストレージノード１００，２００，３００，４００のスライス単位の負荷を評価する。負荷情報取得部５３０による負荷の評価方法の詳細に関しては、後述する。
【００６７】
論理ボリューム管理部５４０は、ストレージノード１００，２００，３００，４００から稼働状態を示す通知をネットワーク１０経由で受信する。これにより、論理ボリューム管理部５４０は、各ストレージノードが正常に稼働しているか否かを知る。また、論理ボリューム管理部５４０は、必要に応じてストレージノード１００，２００，３００，４００からスライス情報を取得し、スライス情報群記憶部５１０に格納されたスライス情報を更新する。また、論理ボリューム管理部５４０は、スライス情報群記憶部５１０のスライス情報に基づいて、アクセスノード６００に格納される論理ボリュームを作成する。
【００６８】
また、論理ボリューム管理部５４０は、ストレージノード１００，２００，３００，４００の何れかで障害が発生した場合や何れかを停止する場合にスライス情報および論理ボリュームを更新する。
【００６９】
具体的には、論理ボリューム管理部５４０は、停止対象ノードに配置されていたプリマリスライスに対するセカンダリスライスをプライマリスライスに変更する。また、変更後のプライマリスライスに対応するセカンダリスライスを稼動中のストレージノードの空きスライスから特定する。そして、論理ボリューム管理部５４０は、特定したスライスをセカンダリスライスに割り当て、スライス情報および論理ボリュームを更新する。
【００７０】
このとき、論理ボリューム管理部５４０は、負荷情報記憶部５２０に記憶された負荷情報を参照して、稼動中のストレージノードの負荷を均一化するよう試みる。具体的には、論理ボリューム管理部５４０は、新たにプライマリスライスとして割り当てたスライスを複数のストレージノードに仮割り当てする。そして、論理ボリューム管理部５４０は、仮割り当てしたストレージノードの負荷を評価する。論理ボリューム管理部５４０は、各ストレージノードについて仮割り当てにより評価した負荷のうち、最小負荷となる仮割り当て先を実際のデータ配置先として、スライス情報および論理ボリュームを更新する。
【００７１】
論理ボリューム管理部５４０は、稼動中のストレージノードに対して更新後のスライス構成を示すスライス情報を送信する。
アクセスノード６００は、論理ボリューム記憶部６１０とデータアクセス制御部６２０を有する。
【００７２】
論理ボリューム記憶部６１０には、論理ボリュームの管理情報（以下、論理ボリューム管理情報という）が格納される。論理ボリューム管理情報では、ストレージ装置１１０，２１０，３１０，４１０が管理する記憶領域を一元的に扱うために、仮想的なアドレスである論理アドレスによって各セグメントが管理されている。論理ボリューム管理情報には、セグメントを特定するための論理アドレスやセグメントに属するプライマリスライスおよびセカンダリスライスを特定するための情報が含まれる。論理ボリューム管理情報は、コントロールノード５００によって作成され、更新される。
【００７３】
データアクセス制御部６２０は、実行中のプログラムからデータへのアクセス要求があると、まず論理ボリューム記憶部６１０に論理ボリューム管理情報が格納されているか否か確認する。論理ボリューム管理情報が格納されていない場合、データアクセス制御部６２０は、コントロールノード５００から論理ボリューム管理情報を取得し、論理ボリューム記憶部６１０に格納する。
【００７４】
そして、データアクセス制御部６２０は、論理ボリューム管理情報に基づいてアクセス先となるストレージノードを特定する。すなわち、利用するデータが属するセグメントを特定し、特定したセグメントのプライマリスライスを管理するストレージノードを特定する。その後、データアクセス制御部６２０は、特定したストレージノードにアクセスする。
【００７５】
ここで、アクセスに失敗した場合、コントロールノード５００から論理ボリューム管理情報を取得した後にデータの配置状況が変化したことが考えられるため、データアクセス制御部６２０は、コントロールノード５００から最新の論理ボリュームを取得して、再びストレージノードへのアクセスを試みる。
【００７６】
図６は、第１の実施の形態のスライス管理テーブルのデータ構造を示す図である。スライス管理テーブル５１１，５１２，５１３，５１４は、コントロールノード５００のスライス情報群記憶部５１０に格納される。スライス管理テーブル５１１，５１２，５１３，５１４は、ストレージノード１００，２００，３００，４００のスライスを管理するスライス情報である。スライス管理テーブル５１１，５１２，５１３，５１４は、ストレージノード１００，２００，３００，４００にも保持される。そして、スライス管理テーブル５１１，５１２，５１３，５１４は、スライス配置の変更に応じてコントロールノード５００とストレージノード１００，２００，３００，４００との間で同期される。
【００７７】
スライス管理テーブル５１１には、スライスＩＤを示す項目、実アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ボリュームＩＤを示す項目、セグメントＩＤを示す項目、リンクを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのスライスについてのスライス情報を示す。
【００７８】
スライスＩＤを示す項目には、スライスＩＤが設定される。実アドレスを示す項目には、スライスの先頭ブロックを示す物理的なアドレスが設定される。ブロック数を示す項目には、スライスに含まれるブロックの数が設定される。種別を示す項目には、“Ｐ”（Primary），“Ｓ”（Secondary），“Ｆ”（Free）の何れかの値が設定される。“Ｐ”はプライマリスライスを意味し、“Ｓ”はセカンダリスライスを意味し、“Ｆ”はセグメントが対応付けられてないことを意味する。ボリュームＩＤを示す項目には、スライスに対応付けられたセグメントが属する論理ボリュームの論理ボリュームＩＤが設定される。セグメントＩＤを示す項目には、スライスに対応付けられたセグメントのセグメントＩＤが設定される。
【００７９】
リンクを示す項目には、種別が“Ｐ”であるスライスについては、対応するセカンダリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。また、種別が“Ｓ”であるスライスについては、対応するプライマリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。
【００８０】
例えば、スライスＩＤが“１”、実アドレスが“０”、ブロック数が“１０２４”、種別が“Ｐ”、ボリュームＩＤが“ＬＶＯＬ１”、セグメントＩＤが“１”、リンクが“ＳＮ−Ｄ，４”という情報が格納される。
【００８１】
これは、ストレージノード１００が管理する０ブロックから１０２３ブロックまでの記憶領域に対して、論理ボリューム“ＬＶＯＬ１”の１番目のセグメントのプライマリスライスが割り当てられていることを示している。また、そのセカンダリスライスに対応するプライマリスライスが、ストレージノード“ＳＮ−Ｄ”の４番目のスライスに割り当てられていることを示している。
【００８２】
図７は、第１の実施の形態の論理ボリューム管理テーブルのデータ構造例を示す図である。論理ボリューム管理テーブル６１１は、論理ボリューム記憶部６１０に格納される。論理ボリューム管理テーブル６１１は、論理ボリューム“ＬＶＯＬ１”についてのテーブルである。
【００８３】
論理ボリューム管理テーブル６１１には、セグメントＩＤを示す項目、論理アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ノードＩＤを示す項目および実アドレスを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
【００８４】
セグメントＩＤを示す項目には、セグメントを識別するセグメントＩＤが設定される。論理アドレスを示す項目には、セグメントの先頭ブロックを示す論理ボリューム上の仮想的なアドレスが設定される。ブロック数を示す項目には、セグメントに含まれるブロックの数が設定される。
【００８５】
種別を示す項目には、“Ｐ”または“Ｓ”の何れかの値が設定される。ノードを示す項目には、割り当て先のストレージノードを識別するノードＩＤが設定される。実アドレスを示す項目には、割り当て先のスライスの先頭ブロックを示す物理的なアドレスが設定される。
【００８６】
論理ボリューム管理テーブル６１１に格納される情報は、コントロールノード５００のスライス情報群記憶部５１０に格納されたスライス情報に基づいて、論理ボリューム管理部５４０によって生成される。
【００８７】
図８は、第１の実施の形態のアクセス性能テーブルのデータ構造例を示す図である。アクセス性能テーブル１３１は、アクセス性能測定部１７０によって生成され、アクセス性能記憶部１３０に格納される。アクセス性能テーブル１３１は、ストレージノード１００のノードＩＤ“ＳＮ−Ａ”に対応付けられている。アクセス性能テーブル１３１には、Ｉ／Ｏ（Input / Output）サイズを示す項目、読み出し性能を示す項目および書き込み性能を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのＩ／Ｏサイズにおけるアクセス性能を示す。
【００８８】
Ｉ／Ｏサイズを示す項目には、ストレージ装置１１０に対するアクセス単位となるデータサイズが設定される。読み出し性能を示す項目には、該当のＩ／Ｏサイズでの最大の読み出し性能が設定される。書き込み性能を示す項目には、該当のＩ／Ｏサイズでの最大の書き込み性能が設定される。
【００８９】
アクセス性能テーブル１３１には、例えば、Ｉ／Ｏサイズが“５１２Ｂ（Byte）”、読み出し性能が“４００ｉｏｐｓ”、書き込み性能が“１５０ｉｏｐｓ”という情報が設定される。
【００９０】
なお、読み出し性能および書き込み性能は、例えば、アクセス性能測定部１７０により、ストレージ装置１１０に対して所定のＩ／Ｏサイズで読み出しや書き込みを発生させるベンチマークソフトウェアによって測定することができる。
【００９１】
図９は、第１の実施の形態のアクセス統計テーブルのデータ構造例を示す図である。アクセス統計テーブル１４１，１４２，１４３，・・・は、アクセス統計情報取得部１８０によって取得され、アクセス統計情報記憶部１４０に格納される。アクセス統計テーブル１４１，１４２，１４３，・・・は、ストレージノード１００のスライスごとに取得される。アクセス統計テーブル１４１，１４２，１４３，・・・は、ノードＩＤ“ＳＮ−Ａ”および各スライスＩＤに対応付けられる。なお、以下ではアクセス統計テーブル１４１に関して説明するが、アクセス統計テーブル１４２，１４３，・・・に関しても同様の構造である。
【００９２】
アクセス統計テーブル１４１には、Ｉ／Ｏサイズを示す項目、経過時間を示す項目、読み出しＩＯ数を示す項目および書き込みＩＯ数を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのＩ／Ｏサイズにおけるアクセス統計を示す。
【００９３】
Ｉ／Ｏサイズを示す項目には、ストレージ装置１１０に対するアクセス単位となるデータサイズが設定される。経過時間を示す項目には、統計を取り始めてからの経過時間が設定される。読み出しＩＯ数を示す項目には、統計を取り始めてからストレージ装置１１０に対して発生した読み出しＩＯ数が設定される。書き込みＩＯ数を示す項目には、統計を取り始めてからストレージ装置１１０に対して発生した書き込みＩＯ数が設定される。
【００９４】
アクセス統計テーブル１４１には、例えば、ＩＯサイズが“５１２Ｂ”、経過時間が“３０時間”、読み出しＩＯ数が“５０２３００”、書き込みＩＯ数が“２５０１００”という情報が設定される。
【００９５】
負荷情報取得部５３０は、ストレージノード１００，２００，３００，４００から取得したアクセス情報に基づいて、負荷情報を生成する。このとき、負荷情報取得部５３０は、以下の式（１）によりストレージノード１００，２００，３００，４００の各スライスの負荷を評価することができる。
【００９６】
【数１】
2010277289.tif 000003
【００９７】
ここで、式（１）において、Ｌi（ｉ＝１，２，３，・・・，８）は、スライスごとの負荷を示す。ｉは、スライスＩＤに対応する。ｊは、Ｉ／Ｏサイズに対応する添え字である。すなわち、ｊ＝１，２，３，・・・であり、例えばｊ＝１は、Ｉ／Ｏサイズ５１２Ｂに対応する。また、例えばｊ＝２は、Ｉ／Ｏサイズ１ｋＢ（Kilo Byte）に対応する。
【００９８】
ｒijは、該当のスライスおよび該当のＩ／Ｏサイズでの読み出しＩＯ数を示す。例えば、アクセス統計テーブル１４１（ｉ＝１）のＩ／Ｏサイズ“５１２Ｂ”（ｊ＝１）に対して、ｒ11＝５０２３００となる。
【００９９】
ｗijは、該当のスライスおよび該当のＩ／Ｏサイズでの書き込みＩＯ数を示す。例えば、ｗ11＝２５０１００となる。
ｔは、統計を取り始めてからの経過時間（秒）を示す。例えば、アクセス統計テーブル１４１では、経過時間が“３０”時間であるので、秒に換算してｔ＝１０８０００秒となる。
【０１００】
Ｒjは、該当のストレージノードにおける該当のＩ／Ｏサイズでの読み出し性能を示す。例えば、アクセス性能テーブル１３１のＩ／Ｏサイズ“５１２Ｂ”（ｊ＝１）に対して、Ｒ1＝４００ｉｏｐｓとなる。
【０１０１】
Ｗjは、該当のストレージノードにおける該当のＩ／Ｏサイズでの書き込み性能を示す。例えば、Ｗ1＝１５０ｉｏｐｓとなる。
このように、負荷情報取得部５３０は、ストレージノード１００，２００，３００，４００から取得したアクセス情報と式（１）とに基づいて、ストレージノード１００，２００，３００，４００の各スライスの負荷を評価することができる。式（１）を用いることで、最大のアクセス性能に対して、実際に発生したアクセス頻度の割合により負荷を評価することができる。
【０１０２】
図１０は、第１の実施の形態のスライス負荷管理テーブルのデータ構造例を示す図である。スライス負荷管理テーブル５２１は、負荷情報取得部５３０により生成され、負荷情報記憶部５２０に格納される。スライス負荷管理テーブル５２１には、ノードＩＤを示す項目、スライスＩＤを示す項目およびスライス負荷を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのスライスの負荷に関する情報を示す。
【０１０３】
ノードＩＤを示す項目には、ノードＩＤが設定される。スライスＩＤを示す項目には、スライスＩＤが設定される。スライス負荷を示す項目には、該当のスライスの負荷を示す情報が設定される。スライスの負荷には、例えば、負荷情報取得部５３０により式（１）を用いて算出した値を百分率で示した値が設定される。
【０１０４】
スライス負荷管理テーブル５２１には、例えば、ノードＩＤが“ＳＮ−Ａ”、スライスＩＤが“１”、スライス負荷が“２０％”という情報が設定される。
図１１は、第１の実施の形態のストレージノード負荷管理テーブルのデータ構造例を示す図である。ストレージノード負荷管理テーブル５２２は、論理ボリューム管理部５４０により生成され、負荷情報記憶部５２０に格納される。
【０１０５】
ここで、ストレージノード負荷管理テーブル５２２は、ストレージノード４００が障害などによって分散ストレージシステムから切断された場合を例示している。
ストレージノード負荷管理テーブル５２２には、ノードＩＤを示す項目、割り当て済みスライスによる負荷を示す項目および割り当て先検討中スライスによる負荷を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのストレージノードの負荷に関する情報を示す。
【０１０６】
ノードＩＤを示す項目には、ノードＩＤが設定される。
割り当て済みスライスによる負荷を示す項目には、割り当てが既になされているプライマリスライス（割り当て先の変更対象外のスライス）による該当のストレージノードにおける負荷が設定される。例えば、割り当てが既になされているスライスとして、スライスＩＤ“１”、“２”、“３”が存在する場合、これらのスライスによる合計の負荷が設定される。
【０１０７】
割り当て先検討中スライスによる負荷を示す項目には、割り当て先を検討中のプライマリスライスによる該当のストレージノードにおける負荷が設定される。例えば、割り当て先を検討中のスライスとして、スライスＩＤ“４”、“５”のスライスが存在する場合、これらのスライスによる合計の負荷が設定される。
【０１０８】
ストレージノード負荷管理テーブル５２２には、例えば、ノードＩＤが“ＳＮ−Ａ”、割り当て済みスライスによる負荷が“６０％”、割り当て先検討中スライスによる負荷が“３５％”という情報が設定される。
【０１０９】
これは、ストレージノード４００が利用不可となったために、ストレージノード１００のスライス１１４に割り当てられていた“Ｓ４”が“Ｐ４”に仮割り当てされた状態を示している。すなわち、ストレージノード１００には、既にスライス１１１，１１２，１１３に“Ｐ１”、“Ｐ５”、“Ｐ９”が割り当て済みである。したがって、スライス１１１，１１２，１１３の負荷の合計が割り当て済みスライスによる負荷に設定される。具体的には、この値は、スライス負荷管理テーブル５２１によれば、“２０％”＋“３０％”＋“１０％”＝“６０％”となる。
【０１１０】
また、新たにプライマリスライス“Ｐ４”となったスライス１１４で予測される負荷は、ストレージノード４００において発生していた負荷から求めることができる。すなわち、スライス負荷管理テーブル５２１によれば、スライス４１１に対する負荷は“３５％”である。この場合、ストレージノード１００のスライス１１４で新たに発生しうる負荷を“３５％”と評価することができる。このため、割り当て先検討中スライスによる負荷を示す項目に“３５％”が設定されることになる。ただし、ストレージ装置１１０，２１０，３１０，４１０の性能は同一であるとする。
【０１１１】
なお、ストレージ装置１１０，２１０，３１０，４１０の性能が異なる場合には、性能比によって重み付けを行うことも考えられる。例えば、ストレージ装置４１０よりもストレージ装置１１０の方がディスクの回転数や平均シーク時間などの性能が高い場合が考えられる。具体的には、これらの性能の違いによりデータへの平均アクセス時間について、例えば、ストレージ装置１１０の平均アクセス時間がストレージ装置４１０の平均アクセス時間の半分であるとする。この場合、スライス４１１に対して測定された“３５％”という負荷を１／２にした“１７．５％”がストレージノード１００に新たに加わる負荷と評価することもできる。
【０１１２】
ストレージノード２００，３００についての設定情報に関しても同様である。
論理ボリューム管理部５４０は、この状態を起点として、ストレージノード４００に配置されていたプライマリスライス“Ｐ４”、“Ｐ８”、“Ｐ１２”の仮割り当てを順次行い、ストレージノード１００，２００，３００で発生しうる負荷を評価する。
【０１１３】
図１２は、第１の実施の形態の仮割り当て管理テーブルのデータ構造例を示す図である。仮割り当て管理テーブル５２３は、論理ボリューム管理部５４０により生成され、負荷情報記憶部５２０に格納される。仮割り当て管理テーブル５２３は、ストレージノード負荷管理テーブル５２２の状態（仮割り当ての起点）での各スライスの負荷を表すものである。仮割り当て管理テーブル５２３には、ノードＩＤを示す項目、スライスＩＤを示す項目、スライス負荷を示す項目および割り当てフラグを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのストレージノードのスライスに関する情報を示す。
【０１１４】
ノードＩＤを示す項目には、ノードＩＤが設定される。スライスＩＤを示す項目には、スライスＩＤが設定される。スライス負荷を示す項目は、該当のスライスの負荷が設定される。割り当てフラグを示す項目には、仮割り当てにより配置先が決定したスライスであるか否かを示すフラグが設定される。
【０１１５】
仮割り当て管理テーブル５２３には、例えば、ノードＩＤが“ＳＮ−Ａ”、スライスＩＤが“１”、スライス負荷が“２０％”、割り当てフラグが“済”という情報が設定される。すなわち、スライス１１１に関しては、配置先の変更は行わない。
【０１１６】
また、仮割り当て管理テーブル５２３には、例えば、ノードＩＤが“ＳＮ−Ａ”、スライスＩＤが“４”、スライス負荷が“３５％”、割り当てフラグが“未”という情報が設定される。すなわち、スライス１１４に新たに割り当てられた“Ｐ４”について、仮割り当てによる配置先変更の試みが必要であることを示している。
【０１１７】
図１３は、第１の実施の形態の論理ボリュームの第２のデータ構造例を示す図である。図１３では、ストレージノード４００が障害により分散ストレージシステムから切断された場合を例示している。ストレージノード４００が切断されると、論理ボリューム管理部５４０は、論理ボリューム７００を図１３に示すような状態に変更する。
【０１１８】
まず、論理ボリューム管理部５４０は、ストレージノード４００に配置されていたプライマリスライスとセカンダリスライスとの役割をストレージノード１００，２００，３００に割り当てる。
【０１１９】
すなわち、スライス４１１の“Ｐ４”の役割が、“Ｓ４”が割り当てられていたスライス１１４に引き継がれ、スライス１１４が“Ｐ４”となる。また、スライス４１２の“Ｐ８”の役割が、“Ｓ８”が割り当てられていたスライス３１４に引き継がれ、スライス３１４が“Ｐ８”となる。また、スライス４１３の“Ｐ１２”の役割が、“Ｓ１２”が割り当てられていたスライス２１４に引き継がれ、スライス２１４が“Ｐ１２”となる。
【０１２０】
更に、スライス４１４の“Ｓ１”の役割が、空きスライスであったスライス２１７に引き継がれる。また、スライス４１５の“Ｓ６”の役割が、空きスライスであったスライス３１７に引き継がれる。また、スライス４１６の“Ｓ１１”の役割が、空きスライスであったスライス１１７に引き継がれる。
【０１２１】
そして、新たにプライマリスライスとなったスライス１１４，２１４，３１４に対応するセカンダリスライスがストレージノード１００，２００，３００に配置される。このとき、スライス１１４の“Ｐ４”に対して、空きスライスであったスライス２１８に“Ｓ４”が配置されるものとする。また、スライス２１４の“Ｐ１２”に対して、空きスライスであったスライス３１８に“Ｓ１２”が配置されるものとする。また、スライス３１４の“Ｐ８”に対して、空きスライスであったスライス１１８に“Ｓ８”が配置されるものとする。
【０１２２】
次に、以上のような構成においてコントロールノード５００で実行される処理の詳細を説明する。なお、図１３の状態となった時点までに論理ボリューム管理部５４０は、ストレージノード負荷管理テーブル５２２および仮割り当て管理テーブル５２３を生成済みである。
【０１２３】
図１４は、第１の実施の形態の再配置処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］論理ボリューム管理部５４０は、負荷情報記憶部５２０に記憶された仮割り当て管理テーブル５２３を参照する。
【０１２４】
［ステップＳ１２］論理ボリューム管理部５４０は、仮割り当て管理テーブル５２３に割り当てフラグ“未”が設定されたスライスが存在するか否かを判定する。存在する場合、処理がステップＳ１３に移される。存在しない場合、処理が完了する。
【０１２５】
［ステップＳ１３］論理ボリューム管理部５４０は、割り当てフラグ“未”のスライスのうち、スライス負荷が最大のスライスを選択する。例えば、仮割り当て管理テーブル５２３の場合、割り当てフラグ“未”のスライスのうち負荷が最大（“３５％”）であるスライス１１４を選択する。
【０１２６】
［ステップＳ１４］論理ボリューム管理部５４０は、選択したスライスを仮割り当てするストレージノードを１つ選択する。ここで、論理ボリューム管理部５４０は、選択したプライマリスライスとセカンダリスライスとが同一のストレージノードに属さないように仮割り当てするストレージノードを選択する。例えば、“Ｐ４”に対しては、“Ｓ４”が配置されたストレージノード２００は、選択対象から除外される。したがって、例えば、図１３の状態では、ストレージノード１００，３００が配置先の候補となり、この中から仮割り当てするストレージノードが選択される。
【０１２７】
［ステップＳ１５］論理ボリューム管理部５４０は、上記ステップＳ１４で選択したストレージノードに上記ステップＳ１３で選択したスライスを仮割り当てする。
［ステップＳ１６］論理ボリューム管理部５４０は、仮割り当てしたストレージノードで予測される負荷を算出する。例えば、ストレージノード１００が仮割り当て先として選択されている場合、仮割り当て管理テーブル５２３に設定されたスライス１１１，１１２，１１３，１１４の負荷を合計した“９５％”をストレージノード１００で予測される負荷と評価できる。なお、このとき、仮割り当てを行ったスライスの他に、割り当てフラグ“未”が設定されているスライスの負荷に関しては、ストレージノードの負荷の算出に用いないものとする。例えば、“Ｐ４”をストレージノード３００に仮割り当てした場合、スライス３１１，３１２，３１３の負荷（割り当てフラグ“済”のスライス）と、仮割り当てした“Ｐ４”の負荷との合計（“７５％”）がストレージノード３００で予測される負荷となる。
【０１２８】
［ステップＳ１７］論理ボリューム管理部５４０は、配置先の候補となる全てのストレージノードで仮割り当てにより予測される負荷を算出済みであるか否かを判定する。算出済みである場合、処理がステップＳ１８に移される。算出済みでない場合、処理がステップＳ１４に移される。
【０１２９】
［ステップＳ１８］論理ボリューム管理部５４０は、予測される負荷が最小となるストレージノードに上記ステップＳ１３で選択したプライマリスライスの役割を割り当てる。論理ボリューム管理部５４０は、ストレージノード１００，２００，３００にそのための指示を送信する。例えば、図１３の例では、スライス１１４に配置された“Ｐ４”がストレージノード１００，３００に仮割り当てされた場合のストレージノード１００，３００の負荷が評価される。すなわち、“Ｐ４”を割り当てた場合に予測される負荷は、ストレージノード１００で“９５％”であり、ストレージノード３００で“７５％”であるので、ストレージノード３００が“Ｐ４”の配置先となる。
【０１３０】
［ステップＳ１９］論理ボリューム管理部５４０は、上記ステップＳ１８で割り当て済みのスライスについて、仮割り当て管理テーブル５２３の割り当てフラグの“未”を“済”に変更する。そして、処理がステップＳ１１に移される。
【０１３１】
このように、論理ボリューム管理部５４０は、仮割り当て管理テーブル５２３を参照して、割り当てが“未”であるスライスの配置を変更する。
このとき、論理ボリューム管理部５４０は、負荷が大きなスライスから順に、割り当て先の候補とする複数のストレージノードに仮割り当てする。そして、実際に該当のスライスを割り当てた場合に各ストレージノードで予測される負荷を評価する。更に、予測される負荷が最小となるストレージノードに該当のスライスを割り当てる。また、このとき、論理ボリューム管理部５４０は、割り当て先の候補とするストレージノードに同一内容のスライス（例えば、“Ｐ４”と“Ｓ４”）が属さないよう割り当て先を選択する。
【０１３２】
なお、上記ステップＳ１６において、ストレージ装置１１０，２１０，３１０，４１０の性能が異なる場合、例えば、性能比に応じて、仮割り当ての対象としているスライスについて取得している負荷を調整することが考えられる。例えば、ストレージ装置４１０よりもストレージ装置１１０の方がディスクの回転数や平均シーク時間などの性能が高い場合が考えられる。具体的には、これらの性能の違いによりデータへの平均アクセス時間について、例えば、ストレージ装置１１０の平均アクセス時間がストレージ装置４１０の平均アクセス時間の半分であるとする。この場合、スライス４１１に対して測定された“３５％”という負荷を１／２にした“１７．５％”がストレージノード１００に新たに加わる負荷と評価することもできる。
【０１３３】
図１５は、第１の実施の形態のスライス再配置後の論理ボリュームのデータ構造例を示す図である。図１５では、図１３に対してスライスの再配置が行われた結果を例示している。論理ボリューム管理部５４０は、図１４の手順により図１３のスライス配置から図１５のスライス配置を得る。
【０１３４】
具体的には、論理ボリューム管理部５４０は以下の手順を実行する。ただし、ストレージ装置１１０，２１０，３１０，４１０の性能は同一であるものとする。
（１）論理ボリューム管理部５４０は、負荷情報記憶部５２０に記憶された仮割り当て管理テーブル５２３を参照して、まず、最も負荷の大きいプライマリスライス“Ｐ４”について仮割り当てを行う。論理ボリューム管理部５４０は、“Ｐ４”をストレージノード１００に仮割り当てした結果、ストレージノード１００で予測される負荷として、“２０％”＋“３０％”＋“１０％”＋“３５％”＝“９５％”を得る。また、“Ｐ４”をストレージノード３００に仮割り当てした結果、ストレージノード３００で予測される負荷として、“１０％”＋“２０％”＋“１０％”＋“３５％”＝“７５％”を得る。なお、ストレージノード２００は、“Ｓ４”が配置されているため、割り当ての対象から除外する。その結果、論理ボリューム管理部５４０は、ストレージノード３００を“Ｐ４”の割り当て先とする。そして、論理ボリューム管理部５４０は、スライス２１８からスライス３１４へのスライスコピーをストレージノード２００，３００に指示する。そして、論理ボリューム管理部５４０は、スライス３１４にコピーされたスライスを“Ｐ４”に設定するようストレージノード２００，３００に指示する。
【０１３５】
（２）論理ボリューム管理部５４０は、次に負荷の大きいプライマリスライス“Ｐ８”について仮割り当てを行う。論理ボリューム管理部５４０は、“Ｐ８”をストレージノード２００に仮割り当てした結果、ストレージノード２００で予測される負荷として、“３０％”＋“１０％”＋“１０％”＋“２５％”＝“７５％”を得る。また、“Ｐ８”をストレージノード３００に仮割り当てした結果、ストレージノード３００で予測される負荷として、“１０％”＋“２０％”＋“１０％”＋“３５％”＋“２５％”＝“１００％”を得る。なお、ストレージノード１００は、“Ｓ８”が配置されているため、割り当ての対象から除外する。その結果、論理ボリューム管理部５４０は、ストレージノード２００を“Ｐ８”の割り当て先とする。そして、論理ボリューム管理部５４０は、スライス１１８からスライス２１４へのスライスコピーをストレージノード１００，２００に指示する。そして、論理ボリューム管理部５４０は、スライス２１４にコピーされたスライスを“Ｐ８”に設定するようストレージノード１００，２００に指示する。
【０１３６】
（３）論理ボリューム管理部５４０は、最も負荷の小さいプライマリスライス“Ｐ１２”について仮割り当てを行う。論理ボリューム管理部５４０は、“Ｐ１２”をストレージノード１００に仮割り当てした結果、ストレージノード１００で予測される負荷として、“２０％”＋“３０％”＋“１０％”＋“２０％”＝“８０％”を得る。また、“Ｐ１２”をストレージノード２００に仮割り当てした結果、ストレージノード２００で予測される負荷として、“３０％”＋“１０％”＋“１０％”＋“２５％”＋“２０％”＝“９５％”を得る。なお、ストレージノード３００は、“Ｓ１２”が配置されているため、割り当ての対象から除外する。その結果、論理ボリューム管理部５４０は、ストレージノード１００を“Ｐ１２”の割り当て先とする。そして、論理ボリューム管理部５４０は、スライス３１８からスライス１１４へのスライスコピーをストレージノード１００，３００に指示する。そして、論理ボリューム管理部５４０は、スライス１１４にコピーされたスライスを“Ｐ１２”に設定するようストレージノード１００，３００に指示する。
【０１３７】
このようにスライスの再配置を行うことで、同一内容のプライマリスライスとセカンダリスライスとが同一のストレージノードに属することを防止できる。これにより、該当のデータに対する信頼性を保持して負荷の均一化を図ることができる。
【０１３８】
図１６は、第１の実施の形態のスライス再配置後の負荷の具体例を示す図である。（Ａ）は、スライス再配置前の各ストレージノードの負荷の状況を示している（図１３の状態に対応する）。（Ｂ）は、スライス再配置後の各ストレージノードの負荷の状況を示している（図１５の状態に対応する）。
【０１３９】
論理ボリューム管理部５４０は、ストレージノード４００に障害が発生した場合、ストレージノード１００，２００，３００にストレージノード４００の役割を委譲する。すなわち、ストレージノード４００に割り当てられていたプライマリスライスに対応するストレージノード１００，２００，３００上のセカンダリスライスをプライマリスライスに変更する。具体的には、スライス１１４が“Ｐ４”、スライス２１４が“Ｐ１２”、スライス３１４が“Ｐ８”となる。
【０１４０】
このとき、ストレージノード１００のアクセス負荷は“９５％”となる。また、ストレージノード２００のアクセス負荷は“７０％”となる。また、ストレージノード３００のアクセス負荷は“６５％”となる。したがって、ストレージノード１００に対して負荷が過大となってしまう。これに対し、論理ボリューム管理部５４０は、新たに委譲されたプライマリスライスの役割を再配置することで、ストレージノード１００，２００，３００のアクセス負荷の均一化を試みる。
【０１４１】
その結果、スライス１１４に“Ｐ１２”、スライス２１４に“Ｐ８”、スライス３１４に“Ｐ４”が割り当てられる。これにより、ストレージノード１００のアクセス負荷は“８０％”となる。また、ストレージノード２００のアクセス負荷は“７５％”となる。また、ストレージノード３００のアクセス負荷は“７５％”となる。
【０１４２】
論理ボリューム管理部５４０は、このようにスライス単位で再配置を行うことで、論理ボリューム“ＬＶＯＬ１”について、ストレージノード１００，２００，３００の負荷を均一化することができる。
【０１４３】
なお、上述の例では、ストレージノード４００が障害などによって分散ストレージシステムから切断されたことを検知してスライスの再配置を実行するものとしたが、このような場合に限られない。例えば、ストレージノード４００をメンテナンスなどのために分散ストレージシステムから切断しようとする場合に、切断の前処理として、上記のようなスライスの再配置を実行することも考えられる。この場合、例えば、論理ボリューム管理部５４０は、管理ノード３０からの再配置実行指示を受け付けたタイミングでスライスの再配置を実行する。
【０１４４】
［第２の実施の形態］
以下、第２の実施の形態を図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１４５】
第１の実施の形態では、障害などによってストレージノード１００，２００，３００，４００の何れかが分散ストレージシステムから切断される場合を例示した。第２の実施の形態では、正常に稼動しているストレージノード１００，２００，３００，４００の間で負荷を均一化する場合を例示する。
【０１４６】
ここで、第２の実施の形態の分散ストレージシステムの構成、各ノードのハードウェア、論理ボリューム、機能の構成は、図２〜５に示した第１の実施の形態の各構成と同一であるため、説明を省略する。
【０１４７】
ただし、論理ボリューム管理部５４０は、定期的（例えば、１ヶ月おき）に、あるいは、管理ノード３０より管理者による所定の操作入力があった場合に、ストレージノード１００，２００，３００，４００の負荷を均一化するものとする。
【０１４８】
また、スライス管理テーブル、論理ボリューム管理テーブル、アクセス性能テーブル、アクセス統計テーブル、スライス負荷管理テーブルに関しても、図６〜１０に示した第１の実施の形態の各データ構造と同一であるため、説明を省略する。
【０１４９】
なお、以下では、論理ボリューム管理部５４０が図４に示した論理ボリューム７００に対して負荷の均一化を試みる場合を例示する。
図１７は、第２の実施の形態のストレージノード負荷管理テーブルのデータ構造例を示す図である。ストレージノード負荷管理テーブル５２２ａは、論理ボリューム管理部５４０により生成され、負荷情報記憶部５２０に格納される。ストレージノード負荷管理テーブル５２２ａは、図１１で説明した第１の実施の形態のストレージノード負荷管理テーブル５２２に対応する。なお、ストレージノード負荷管理テーブル５２２ａの構造は、ストレージノード負荷管理テーブル５２２と同一であるため、説明を省略する。
【０１５０】
ストレージノード負荷管理テーブル５２２ａには、例えば、ノードＩＤが“ＳＮ−Ａ”、仮割り当て済みスライスによる負荷が“０％”、割り当て先検討中スライスによる負荷が“９０％”という情報が設定される。この状態では、ストレージノード１００が管理する全てのプライマリスライス（スライス１１１，１１２，１１３）が再配置の対象となっている。
【０１５１】
論理ボリューム管理部５４０は、この状態を起点として、ストレージノード１００，２００，３００，４００に配置されている全てのプライマリスライスの仮割り当てを順次行い、ストレージノード１００，２００，３００，４００で発生しうる負荷を評価する。
【０１５２】
図１８は、第２の実施の形態の仮割り当て管理テーブルのデータ構造例を示す図である。仮割り当て管理テーブル５２３ａは、論理ボリューム管理部５４０により生成され、負荷情報記憶部５２０に格納される。仮割り当て管理テーブル５２３ａは、図１２で説明した第１の実施の形態の仮割り当て管理テーブル５２３ａに対応する。なお、仮割り当て管理テーブル５２３ａの構造は、仮割り当て管理テーブル５２３と同一であるため、説明を省略する。
【０１５３】
仮割り当て管理テーブル５２３ａには、例えば、ノードＩＤが“ＳＮ−Ａ”、スライスＩＤが“１”、スライス負荷が“４０％”、割り当てフラグが“未”という情報が設定される。なお、仮割り当て管理テーブル５２３ａには、再配置処理の起点となるタイミングでは、全てのスライスについて割り当てフラグ“未”が設定される。すなわち、論理ボリューム管理部５４０が再配置の対象とするスライスは、ストレージノード１００，２００，３００，４００に配置された全てのプライマリスライスである。
【０１５４】
論理ボリューム管理部５４０は、以上のような構成において、第１の実施の形態において図１４で示した手順に従って、ストレージノード１００，２００，３００，４００のアクセス負荷の均一化を行う。その結果、図４のスライス配置に対して、次のようなスライス配置を得ることができる。
【０１５５】
図１９は、第２の実施の形態のスライス再配置後の論理ボリュームのデータ構造例を示す図である。図１９では、図４に対してスライスの再配置が行われた結果を例示している。論理ボリューム管理部５４０は、図１４の手順により図４のスライス配置から図１９のスライス配置を得る。
【０１５６】
具体的には、論理ボリューム管理部５４０は以下の手順を実行する。ただし、ストレージ装置１１０，２１０，３１０，４１０の性能は同一であるものとする。また、優先順位の決定に際して比較するべき値に同値のものがある場合、ノードＩＤが若い方（例えば、ＳＮ−Ｂに対してはＳＮ−Ａ）が優先されるものとする。
【０１５７】
（１）論理ボリューム管理部５４０は、負荷情報記憶部５２０に記憶された仮割り当て管理テーブル５２３ａを参照して、まず、最も負荷の大きいプライマリスライス“Ｐ１”について仮割り当てを行う。なお、ストレージノード４００には“Ｓ１”が配置されている。このため、ストレージノード４００は“Ｐ１”の配置先から除外される。論理ボリューム管理部５４０は、何れのストレージノードにもプライマリスライスが割り当てられていないので、ストレージノード１００，２００，３００の何れに配置してもよい。ここでは、論理ボリューム管理部５４０はストレージノード１００に“Ｐ１”を割り当てる。
【０１５８】
（２）論理ボリューム管理部５４０は、プライマリスライス“Ｐ５”について仮割り当てを行う。論理ボリューム管理部５４０は、“Ｐ５”をストレージノード１００に仮割り当てした結果、ストレージノード１００で予測される負荷として、“４０％”＋“３０％”＝“７０％”を得る。また、“Ｐ５”をストレージノード３００，４００に仮割り当てした結果、ストレージノード３００，４００で予測される負荷として“３０％”を得る。なお、ストレージノード２００には“Ｓ５”が配置されている。このため、ストレージノード２００は“Ｐ５”の配置先から除外される。ここで、ストレージノード３００，４００では、予測される負荷が同一であるため、ストレージノード３００，４００の何れに配置してもよい。ここでは、論理ボリューム管理部５４０はストレージノード３００に“Ｐ５”を割り当てる。
【０１５９】
（３）論理ボリューム管理部５４０は、プライマリスライス“Ｐ９”について仮割り当てを行う。論理ボリューム管理部５４０は、“Ｐ９”をストレージノード１００に仮割り当てした結果、ストレージノード１００で予測される負荷として、“４０％”＋“２０％”＝“６０％”を得る。また、“Ｐ９”をストレージノード２００に仮割り当てした結果、ストレージノード２００で予測される負荷として“２０％”を得る。同様にして、ストレージノード３００，４００で予測される負荷として、“５０％”、“２０％”を得る。したがって、論理ボリューム管理部５４０はストレージノード２００に“Ｐ９”を割り当てる。
【０１６０】
（４）論理ボリューム管理部５４０は、プライマリスライス“Ｐ６”について仮割り当てを行う。なお、ストレージノード４００は“Ｓ６”が配置されている。このため、ストレージノード４００は“Ｐ６”の配置先から除外される。論理ボリューム管理部５４０は、ストレージノード１００，２００，３００で予測される負荷として、“６０％”、“４０％”、“５０％”を得る。したがって、論理ボリューム管理部５４０はストレージノード２００に“Ｐ６”を割り当てる。
【０１６１】
（５）論理ボリューム管理部５４０は、プライマリスライス“Ｐ１０”について仮割り当てを行う。なお、ストレージノード３００は“Ｓ１０”が配置されている。このため、ストレージノード３００は“Ｐ１０”の配置先から除外される。論理ボリューム管理部５４０は、ストレージノード１００，２００，４００で予測される負荷として、“５５％”、“５５％”、“１５％”を得る。したがって、論理ボリューム管理部５４０はストレージノード４００に“Ｐ１０”を割り当てる。
【０１６２】
以降、論理ボリューム管理部５４０は、“Ｐ３”、“Ｐ８”、“Ｐ７”、“Ｐ２”、“Ｐ１１”、“Ｐ４”、“Ｐ１２”に関しても図１４で説明した手順により、順次配置先を決定する。その結果、図１９に示すスライス配置を得る。
【０１６３】
このようにスライスの再配置を行うことで、同一内容のプライマリスライスとセカンダリスライスとが同一のストレージノードに属することを防止できる。これにより、該当のデータに対する信頼性を保持して負荷の均一化を図ることができる。
【０１６４】
図２０は、第２の実施の形態のスライス再配置後の負荷の具体例を示す図である。（Ａ）は、スライス再配置前の各ストレージノードの負荷の状況を示している（図３の状態に対応する）。（Ｂ）は、スライス再配置後の各ストレージノードの負荷の状況を示している（図１９の状態に対応する）。
【０１６５】
論理ボリューム管理部５４０は、ストレージノード１００，２００，３００，４００から取得したアクセス情報に基づいて、各ストレージノードの負荷を定期的に均一化する。
（Ａ）の状態では、ストレージノード１００，２００，３００，４００の負荷が“９０％”、“４０％”、“３０％”、“２０％”である。したがって、ストレージノード１００に対して負荷が過大となっている。
【０１６６】
論理ボリューム管理部５４０は、アクセス負荷の均一化を試み、図１９のスライス配置を得る。その結果、ストレージノード１００には、“Ｐ１”、“Ｐ１１”、“Ｐ１２”が配置される。また、ストレージノード２００には、“Ｐ９”、“Ｐ６”、“Ｐ２”が配置される。また、ストレージノード３００には、“Ｐ５”、“Ｐ３”、“Ｐ４”が配置される。また、ストレージノード４００には、“Ｐ１０”、“Ｐ８”、“Ｐ７”が配置される。これにより、ストレージノード１００，２００，３００，４００の負荷が“４５％”、“４５％”、“５０％”、“４０％”となる。すなわち、論理ボリューム管理部５４０は、このようにスライス単位に再配置を行うことで、論理ボリューム“ＬＶＯＬ１”について、ストレージノード１００，２００，３００，４００の負荷を均一化することができる。
【０１６７】
以上で説明したように、コントロールノード５００は、ストレージノード１００，２００，３００，４００の各スライスの負荷に応じて、各スライスの配置を変更し、ストレージノード１００，２００，３００，４００の負荷の均一化を図ることができる。その結果、局所的に高負荷となることが避けられ、システム全体としてのアクセス性能を向上することができる。
【０１６８】
更に、データ配置の変更に際して、プライマリスライスと対応するセカンダリスライスとが異なるストレージノードに配置されるので、スライスが単一のストレージノードに属することがない。このため、１つのストレージノードが分散ストレージシステムから切断されたときに両方の冗長データにアクセスできなくなるという事態を避けることができるので信頼性が損なわれることがなくなる。
【０１６９】
なお、コントロールノード５００は、ストレージノード１００，２００，３００，４００のアクセス情報を定期的に取得する。そして、コントロールノード５００は、ストレージノード１００，２００，３００，４００の負荷を随時監視する。
【０１７０】
これにより、あるタイミングで突然何れかのストレージノードが切断された場合にも、直前に取得したアクセス情報から負荷を評価することが可能となる。
また、コントロールノード５００は、このようなスライスの再配置を、ストレージノード１００，２００，３００，４００の何れかを停止するタイミングや何れかのストレージノードで障害が発生したことを検知したタイミングで実行する。また、コントロールノード５００は、定期的（例えば、１ヶ月おき）にスライスの再配置を行う。
【０１７１】
また、コントロールノード５００は、ストレージノード１００，２００，３００，４００のアクセス負荷が、所定のしきい値以上となった場合に、再配置を行うようにしてもよい。
【０１７２】
このように、コントロールノード５００は、所定のタイミングで適宜スライスの再配置を行うことで、分散ストレージシステムのアクセス性能を考慮した、より効率的な運用が可能となる。
【０１７３】
なお、コントロールノード５００の機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１７４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１７５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１７６】
以上、本件の管理プログラム、管理装置および管理方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１７７】
説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を、コンピュータに管理させる管理プログラムであって、
前記コンピュータを、
前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納する負荷情報取得手段、
前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更する割当手段、
前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する指示手段、
として機能させることを特徴とする管理プログラム。
【０１７８】
（付記２）  前記負荷情報には、前記各実記憶領域を配置先の変更対象とするか否かを示すフラグが設けられており、
前記割当手段は、前記負荷情報に含まれる前記フラグを参照して、前記配置先の変更対象となっている記憶領域のうち最大負荷である第１の記憶領域を特定し、前記第１の記憶領域を前記各ストレージノードに割り当てた場合に前記各ストレージノードで発生しうる予測負荷を算出し、算出した当該予測負荷が最小となるストレージノードに前記第１の記憶領域のデータを割り当てると共に、前記第１の記憶領域を前記配置先の変更対象としない旨、前記負荷情報に含まれる前記フラグを変更する、
ことを特徴とする付記１記載の管理プログラム。
【０１７９】
（付記３）  前記割当手段は、前記複数のストレージノードのうちの何れかが切断されたことを検知した場合、または、前記複数のストレージノードのうちの何れかを切断する指示を受け付けた場合に前記データの配置先の割り当てを行うことを特徴とする付記１または２の何れか１つに記載の管理プログラム。
【０１８０】
（付記４）  前記割当手段は、前記データの配置先の割り当てを所定の周期で行うことを特徴とする付記１乃至３の何れか１つに記載の管理プログラム。
（付記５）  前記割当手段は、同一内容の複数のデータからアクセス要求時にアクセス先として使用する主データとバックアップとして使用する副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一のストレージノードに属さないように前記割り当て関係を変更することを特徴とする付記１乃至４の何れか１つに記載の管理プログラム。
【０１８１】
（付記６）  前記アクセス情報は、前記各ストレージノードで測定され、前記各ストレージノードで許容される単位時間当たりのデータ入出力数に基づく負荷を示すアクセス性能と、所定期間に発生した前記各ストレージノードに対するデータアクセス回数を示すアクセス統計情報と、を含んでおり、
前記負荷情報取得手段は、前記アクセス性能と前記アクセス統計情報とに基づいて、前記負荷情報を生成する、
ことを特徴とする付記５記載の管理プログラム。
【０１８２】
（付記７）  前記管理情報では、データの特定に用いる論理ボリュームのアドレス空間が複数の論理セグメントに分割され、前記論理セグメント単位で前記同一内容の複数のデータが管理されており、
前記割当手段は、前記論理セグメント単位で前記主データと前記副データとの配置先を変更する、
ことを特徴とする付記１乃至６の何れか１つに記載の管理プログラム。
【０１８３】
（付記８）  論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を管理する管理装置であって、
前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納する負荷情報取得手段と、
前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更する割当手段と、
前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する指示手段と、
を有することを特徴とする管理装置。
【０１８４】
（付記９）  論理ボリュームに含まれる複数の仮想記憶領域それぞれと、当該仮想記憶領域それぞれを指定したアクセスの対象となるデータの格納先となる、複数のストレージノードそれぞれが有する記録装置内の実記憶領域との割り当て関係を管理するコンピュータの管理方法であって、
負荷情報取得手段が、前記各ストレージノードが備える前記各実記憶領域に対するアクセス情報を前記複数のストレージノードから取得し、前記アクセス情報に基づいて前記各実記憶領域の負荷情報を生成して、当該負荷情報を負荷情報記憶手段に格納し、
割当手段が、前記負荷情報記憶手段に記憶された前記負荷情報に基づいて、前記各ストレージノードの負荷が均一になるように前記仮想記憶領域への前記実記憶領域の割り当て関係を変更し、
指示手段が、前記仮想記憶領域に割り当てる前記実記憶領域の変更に伴い、前記複数のストレージノードに対して前記実記憶領域のデータの移動を指示する、
ことを特徴とする管理方法。
【符号の説明】
【０１８５】
１  コンピュータ
１ａ  負荷情報記憶手段
１ｂ  管理情報記憶手段
１ｃ  負荷情報取得手段
１ｄ  割当手段
１ｅ  指示手段
２，３，４，５  ストレージノード
２ａ，２ｂ，２ｃ，２ｄ，３ａ，３ｂ，３ｃ，３ｄ，４ａ，４ｂ，４ｃ，４ｄ，５ａ，５ｂ，５ｃ，５ｄ  実記憶領域
【図１】
2010277289.tif 000004
【図２】
2010277289.tif 000005
【図３】
2010277289.tif 000006
【図４】
2010277289.tif 000007
【図５】
2010277289.tif 000008
【図６】
2010277289.tif 000009
【図７】
2010277289.tif 000010
【図８】
2010277289.tif 000011
【図９】
2010277289.tif 000012
【図１０】
2010277289.tif 000013
【図１１】
2010277289.tif 000014
【図１２】
2010277289.tif 000015
【図１３】
2010277289.tif 000016
【図１４】
2010277289.tif 000017
【図１５】
2010277289.tif 000018
【図１６】
2010277289.tif 000019
【図１７】
2010277289.tif 000020
【図１８】
2010277289.tif 000021
【図１９】
2010277289.tif 000022
【図２０】
2010277289.tif 000023