(57)【要約】  本発明の目的は、ストレージノードのＩ／Ｏ性能値に基づいて、ストレージ領域の論理容量を設定することができるストレージノード管理装置を提供することにある。  本発明のストレージノード管理装置は、分散データストレージシステムにおいて、複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ノードを設定し、前記基準ノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、前記各領域の論理容量を前記基準ノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する設定部と、  前記分散データストレージシステムの構成変更を反映したシステム構成情報を決定する決定部と、前記システム構成情報を前記複数のＩ／Ｏ性能の異なるストレージノードに送信する送信部とを備える。
2014188682.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する設定手段と、
前記設定手段により設定した情報に基づいて、前記分散データストレージシステムの構成変更を反映したシステム構成情報を決定する決定手段と、
前記決定手段により決定したシステム構成情報を前記複数のＩ／Ｏ性能の異なるストレージノードに送信する送信手段とを備えるストレージノード管理装置。
【請求項２】
前記設定手段は、前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能が前記基準ストレージノードのＩ／Ｏ性能のＮ倍である場合、前記基準ストレージノード以外のストレージノードの第１のストレージ論理容量を前記基準ストレージノードの論理容量のＮ倍に設定することを特徴とする請求項１に記載のストレージノード管理装置。
【請求項３】
前記設定手段は、前記基準ストレージノード以外のストレージノードの論理容量が、前記基準ストレージノードの論理容量のＮ倍以上である場合、Ｎ倍を超える残りの容量を、前記基準ストレージノード以外のストレージノードの第２のストレージ領域に設定することを特徴とする請求項１または２に記載のストレージノード管理装置。
【請求項４】
前記設定手段は、前記基準ストレージノードに第１及び第２のストレージ領域が設定される場合、前記基準ストレージノードの第１のストレージ領域に設定した論理容量のＮ倍の容量を、前記基準ストレージノード以外のストレージノードの第１のストレージ領域の論理容量に設定することを特徴とする請求項１乃至３のいずれか１つに記載のストレージノード管理装置。
【請求項５】
Ｉ／Ｏ性能の異なる複数のストレージノードによって、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定するストレージノード論理容量設定方法。
【請求項６】
前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能が前記基準ストレージノードのＩ／Ｏ性能のＮ倍である場合、前記基準ストレージノード以外のストレージノードの第１のストレージ論理容量を前記基準ストレージノードの論理容量のＮ倍に設定することを特徴とする請求項５に記載のストレージノード論理容量設定方法。
【請求項７】
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させるプログラム。
【請求項８】
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させるプログラムが記録された記録媒体。
【請求項９】
前記請求項１乃至４のいずれか１つに記載のストレージ管理装置で第１のストレージ領域と第２のストレージ領域に分割されるストレージデバイスを有する格納手段と、
前記格納手段に格納するデータにアクセス要求がある場合、自ノード向けのアクセス要求であるかどうかを判定するデータ入出力管理手段と、
書き込み対象となるデータのＩＤと、データ格納先となる物理アドレスと、アクセス頻度情報とを紐づけた情報を管理すると共に、前記データ入出力管理手段によって指定されたデータのＩＤとデータの読み書きを指示する命令に応じて、データの読み書きを行うデータ格納管理手段と、
前記請求項１乃至４のいずれか１つに記載のストレージ管理装置から取得するシステム構成情報に含まれる論理容量に基づき、前記第１のストレージ領域と第２のストレージ領域に容量を満たすように前記ストレージデバイスのアドレスを分類するストレージ使用量管理手段とを備えるストレージノード。
【請求項１０】
請求項１乃至４のいずれか1つに記載のストレージ管理装置と、請求項９に記載のストレージノードとを備える分散データストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージノードのストレージ論理容量を設定する技術分野に関する。
【背景技術】
【０００２】
近年、ネットワークの高速化やインターネットの普及により大規模なデータ処理への需要が増加している。これに伴い、データ処理に用いるストレージノードが格納可能な容量（以下、「ストレージ容量」と称する）の増大も求められている。
【０００３】
しかしながら、単一のサーバを用いてストレージノードを構成する場合、次のような問題点がある。第１にストレージノードの拡張性に限界があることである。第２にそのサーバが稼働する間にストレージ容量の拡充及びＩ／Ｏ（input/output：入出力）性能の拡充が困難であることである。そして、第３にストレージノードが単一障害点となるという問題である。これらの問題を解決するために分散データシステムという技術が提案されている。
【０００４】
一般的に分散データシステムは、複数のサーバ装置の外部記憶装置を、ネットワークを介して接続された分散データストレージノードとして利用する。その分散データストレージノードは、ストレージデバイスが組み込まれた複数ノード群を連携させて動作する。従って、分散データストレージノードは、あたかも１つのノードとして振る舞うことが可能であるコンピュータシステムである。
【０００５】
このような分散データストレージシステムは、システムを構成するノード（即ち、サーバ装置）を追加することに伴い、データの格納容量の拡充、データのアクセス性能の増強といったスケールアウト拡張性を保有することが特徴である。
【０００６】
また、分散データストレージシステムは、書き込み要求のあったデータに関して、単一のノードではなく、複数のノードにデータの複製をコピーして保存している。このため、あるノードが障害によりアクセス不能となりストレージノードとして機能しなくなってしまった場合であっても、分散データストレージシステムは、次のような処理が可能である。即ち、障害が発生したノードが担当していたデータにアクセスする際の応答処理において、障害発生ノードが保持していたデータの複製を保持している他のノードがその障害発生ノードにおけるサービスを引き継ぐ。これによって、分散データストレージシステムは、システムの可用性を維持することができる。
【０００７】
さらに、分散データストレージシステムはあるノードに格納されていたデータを、ノード故障により再び読み出すことが不可能となってしまっても、他のノードに格納された複製データを使用することができる。このため、データの消失が発生せず、同時に、データ保持の信頼性を維持することができる。
【０００８】
従って、分散データストレージシステムは、そのシステム規模を自由に拡張できる点、さらに、システムを構成するノード処理性能の向上、ストレージデバイスの大容量化、及び低価格化等々のトレンドを受けて、様々なシステムで導入が進んでいる。
【０００９】
但し、分散データストレージシステムは、提供するサービスの可用性やデータ保持の信頼性を維持するために、ＩＴ(Information Technology)システムにおけるサービス規模に応じて、必要とするハードウェアノードの台数が、ある一定規模必要である。
【００１０】
実際にデータを物理的に格納するストレージデバイスとして、主に、ＨＤＤ（ハードディスクドライブ：Hard Disk Drive）が採用されている。ＨＤＤは、長年大容量化の一途をたどっている。しかしながら、ＨＤＤはＩ／Ｏ性能の伸びが停滞しており、容量当たりのＩ／Ｏ性能も、年々減少している。
【００１１】
一方、フラッシュメモリを記憶媒体とするＳＳＤ（ソリッドステートドライブ：Solid State Drive）は、ＨＤＤと同様に、年々大容量化が進んでいる。ＳＳＤは、ＨＤＤを大幅に超えるランダムアクセス性能を備えているため、近年需要が拡大している。
【００１２】
さらに、ＤＲＡＭ（Dynamic Random Access Memory）に代表される揮発性メモリの大容量化、フラッシュメモリのＩ／Ｏ性能を大幅に超える次世代の不揮発半導体メモリを用いたストレージデバイスの開発も進んでいる。このようなストレージデバイスには、コスト、性能特性、容量の異なる複数のストレージデバイスが、単一のストレージシステム内におけるストレージデバイス群として採用されるようになってきている。
【００１３】
このように、分散データストレージを構成するノードは、単にデータの格納容量の違いだけでなく、Ｉ／Ｏ性能の大幅に異なるデバイスを組み合わせることが可能となっている。
【００１４】
また、分散データストレージシステムを運用する際には、新たにノードを追加することによりシステムを格納可能なスケールアウト拡張性を維持することが可能である。
【００１５】
しかしながら、このようなスケールアウト拡張性を実現するためには、分散データストレージシステムを構成するノードの数が増加した場合においても、データを各ノード間で一様に分散させ、またデータの格納場所を容易に一意に設定する必要がある。
【００１６】
このような特徴を実現するために、あるノードにおいてデータを特定するＩＤ（識別子）とデータの格納先をデータテーブルを用いて管理するのではなく、各ノードとデータにアクセスするクライアント間においてデータの格納先を算術的に設定するためのルールを共有する手法がある。
【００１７】
この手法を採用することにより、クライアントがデータにアクセスする際、その都度、データの格納先を他のノードに問い合わせることなく、クライアントが独自にその格納先を設定できる。
【００１８】
また、分散データストレージシステムを構成するノード数が増加して数百、数千台となることを考えた場合、次の問題が生じる。それは、特定の１台のノードがすべてのデータの格納先を管理する、また、クライアントからのデータ格納場所の問合せに応える場合、前記ノードがシステムの性能がボトルネックになるという問題点である。
【００１９】
前述した算術的なデータ格納場所の設定手法を採用すれば、このような性能のボトルネックの発生を回避することができる。このデータ格納場所を算術的に設定するアルゴリズムとして、コンシステントハッシング（Consistent Hashing）と呼ばれるハッシュ関数を組み合わせたアルゴリズム、或いはランダム関数を組み合わせたアルゴリズムなどがある。
【００２０】
これらのアルゴリズムは、均等なデータ格納の割り当てる。これにより、同一の性能で構成された複数のノード群を連携させた分散データストレージシステムにおいて、特定のノードに偏りが発生して、特定のノードのみデータの格納容量を超過するという問題、または、特定のノードにアクセスの偏りが発生して、性能低下を起こすといった問題を回避することが可能である。
【００２１】
この算術的なデータ格納場所の設定手法は、下記の特徴を有する。即ち、個々のデータにあらかじめ割り当てられたデータ識別子（ＩＤ）と、データ本体そのものを入力データとして設定する。この場合、「システムを構成するノード数」、「各ノードに割り当てる論理的なデータ容量」、「ノードのＩＰアドレス（Internet Protocol Address）情報」、「ノードの稼働の有無、及びあらかじめ決められた算術式による算出結果の値とデータ格納先を紐づける格納情報」を含むシステムの構成情報を、算術に用いるパラメータとして設定する。そして、その手法では、パラメータを利用して算出された値によりデータの格納先となるノードを設定する。
【００２２】
したがって、このような設定手法では、ノード追加やノードの故障といったシステム構成が変更された際に、そのシステム構成情報のみを、システムを構成するノードと、データをアクセスするクライアントとの間で共有することができる。従って、すべてのデータをどのノードに格納すべきか一意に設定することが可能となる。
【００２３】
以上説明したように、分散データストレージシステムを構成するノードがすべて均一の容量であり、且つＩ／Ｏ性能を保持していた場合、算術的なデータ格納先設定手法を用いて、すべてのノードに一様にデータが分散格納されるようにシステム構成情報を設定すればよい。
【００２４】
このように設定された分散データストレージシステムは、データの新規作成や書き込みに伴う、各ノードのストレージ容量の消費量と、データアクセスＩ／Ｏ数とを均等に分散することができる。
【００２５】
しかし、前述した分散データストレージシステムを長期的に運用する場合、すでに同一性能のストレージノードを調達することができないことを解決する必要がある。この場合、システムに組み込まれているストレージノードと異なる容量及びＩ／Ｏ性能を備えるストレージノードを、新規に導入するストレージノードとして組み込むことが考えられる。
【００２６】
また、最初から性能の異なるストレージノードからシステムを構成することも考えられる。
【００２７】
例えば、特許文献１は、マルチノードストレージシステムを提案している。マルチノードストレージシステムは、管理ノードと多種多様なストレージデバイスを管理する多種多様なストレージノードとが、ネットワークを介して相互に接続されている。また、管理ノードは多種多様なストレージノードからデータの管理に関する情報を取得し、必要に応じて論理ボリュームを更新する。
【００２８】
また、特許文献２に記載されたシステムは、何れのストレージノードがデータを保持するかを、データに付与されるキーから算出されるハッシュ値に基づいて判断する。キーに対するハッシュ値は、例えば、ＭＤ５（Message Digest algorithm ５）を用いて算出できる。システムは、ＳＨＡ（Secure Hash Algorithm）など他のハッシュ関数を用いてもよい。
【００２９】
このように、キーに対するハッシュ値に基づいて担当のストレージノード（以下、担当ノードということがある）を判定する方法は、コンシステントハッシング（Consistent Hashing）と呼ばれることがある。ハッシュ値に対する担当ノードを管理する担当管理テーブルに基づいて、アクセス先の担当ノードを判断する分散ストレージシステムが特許文献２で提案されている。
【００３０】
さらに、特許文献３に記載されたシステムは、データの配置方法に対して、第一の記憶領域と第二の記憶領域とに分ける。第一の記憶領域の空き領域がなくなった場合、第二の記憶領域にユーザ情報として記憶し、第一の記憶領域に記憶されたユーザ情報と第二の記憶領域に記憶されたユーザ情報とをユーザ情報の使用頻度に基づく条件で入れ替えを行うデータを分散して配置する。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２００９−１５１５１９号公報
【特許文献２】特開２０１３−０４５３７９号公報
【特許文献３】特開２０１０−１５２７１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００３２】
しかし、異なる容量及びＩ／Ｏ性能を備えるストレージノードを設置又は新規導入する場合、性能の偏りに合わせて、確率的にデータ格納量と、データアクセスＩ／Ｏ数に偏りを持たせる必要がある。そのために、算術的なデータ格納先の設定手法におけるシステム構成情報のうち、導入ノードの性能倍数分の重みを割り当てることで、特定のノードに性能に応じたデータ格納容量及びデータアクセスＩ／Ｏ数を処理できるように設定することが要求される。
【００３３】
たとえば、新規導入ノードのストレージ論理容量が、システム内で運用中のノードの論理容量の２倍であった場合、新規導入ノードへの重みを他のノードの２倍に設定する。その結果、確率的に２倍の容量のデータが配置されるように設定することが可能となる。
【００３４】
しかし、システムが前述の異なる性能を有するノードを新規に導入する際、データの容量に合わせて前記重みをかけると、データアクセスＩ／Ｏ数は、かけた重みの数だけ他のノードよりも増える。
【００３５】
例えば、論理容量に合わせて２倍の重みを設定した場合、新規導入ノードは、２倍のＩ／Ｏを処理できるＩ／Ｏ性能を備える必要がある。そうでないと、新規導入ノードが性能のボトルネックになる。従って、システム全体の性能が劣化するという問題がある。
【００３６】
同様に、新規導入ノードが既設のノードに比べて１０倍のＩ／Ｏ性能を保持しており、他のノードに比べて１０倍の重みを設定した場合、ストレージ論理容量が１０倍以上なければ、他のノードよりも新規導入ノードのストレージ消費率が上がる。この結果、システム全体のストレージ消費率が低下する。
【００３７】
つまり、他のノードのストレージ消費量に余裕があるにも関わらず、新たに新規導入ノードを追加してストレージ容量を拡大しなければならないという問題がある。
【００３８】
分散データストレージシステムは、算術的にデータ格納先を設定する手法に基づいてデータやデータアクセスＩ／Ｏを分散させる機能を備えている。しかし、分散データストレージシステムには、異なる性能のストレージノードを組み込む場合に、ストレージ論理容量、およびＩ／Ｏ性能に合った、データ格納容量、およびデータアクセスＩ／Ｏ数をそれぞれ割り当てることが困難であるという問題がある。
【００３９】
特許文献１〜３に記載されている技術を用いることにより、異なる性能のノードの使用及びデータ管理情報に基づいてノードの論理ボリュームを更新することができる。
【００４０】
また、特許文献２に記載されているストレージ制御方法は、アクセス先のノードを判別することができる。さらに特許文献３に記載されているアクセス制御方法は、データを第１の記憶領域又は第２の記憶領域へ記憶すること、及びデータの使用頻度に応じてデータの入れ替えを行うことが可能である。
【００４１】
しかしながら、特許文献１乃至３に記載された技術は、Ｉ／Ｏ性能の差異に基づいて、ノードのストレージ領域の容量を設定することはできない。
【００４２】
本発明は、このような課題に鑑みてなされたものであり、ストレージノードのＩ／Ｏ性能値に基づいて、ストレージ領域の論理容量を設定することができるストレージノード管理装置、ストレージノード論理容量の設定方法、プログラム、記録媒体および分散データストレージシステムを提供することを主たる目的とする。
【課題を解決するための手段】
【００４３】
本発明の一実施形態に係るストレージノード管理装置は、Ｉ／Ｏ性能の異なる複数のストレージノードに基づいて、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する設定手段と、
前記設定部により設定した情報に基づいて、前記分散データストレージシステムの構成変更を反映したシステム構成情報を決定する決定手段と、
前記決定部により決定したシステム構成情報を前記複数のＩ／Ｏ性能の異なるストレージノードに送信する送信手段とを備える。
【００４４】
本発明の一実施形態に係るストレージノード論理容量設定方法は、Ｉ／Ｏ性能の異なる複数のストレージノードに基づいて、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する。
【００４５】
本発明の一実施形態に係るプログラムは、Ｉ／Ｏ性能の異なる複数のストレージノードに基づいて、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させる。
【００４６】
本発明の一実施形態に係る記録媒体は、Ｉ／Ｏ性能の異なる複数のストレージノードに基づいて、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させるプログラムを記録する。
【００４７】
本発明の一実施形態に係るストレージノードは、前記ストレージ管理装置で第１のストレージ領域と第２のストレージ領域に分割されるストレージデバイスを有する格納手段と、
前記格納部に格納するデータにアクセス要求がある場合、自ノード向けのアクセス要求であるかどうかを判定するデータ入出力管理手段と、
書き込み対象となるデータのＩＤ、データ格納先となる物理アドレス、アクセス頻度情報の３つの情報を紐づけたデータ管理テーブルを管理し、前記データ入出力管理部によって指定されたデータのＩＤとデータの読み書きの命令に応じて、データの読み書きを行うデータ格納管理手段と、
前記ストレージ管理装置から取得するシステム構成情報に含まれる論理容量に基づき、前記第１のストレージ領域と第２のストレージ領域に容量を満たすように前記ストレージデバイスのアドレスを分類するストレージ使用量管理手段とを備える。
【００４８】
本発明の一実施形態に係る分散データストレージシステムは、前記ストレージ管理装置とストレージノードとを備える。
【発明の効果】
【００４９】
本発明によれば、ストレージノードのＩ／Ｏ性能値に基づいて、ストレージ領域の論理容量を設定することができるストレージノード管理装置、ストレージノード論理容量の設定方法、プログラム、記録媒体および分散データストレージシステムを提供することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の第１の実施形態に係る分散データストレージシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る管理ノードの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るストレージノードの構成を示すブロック図である。
【図４】本発明の第１の実施形態に係るデータ書き込み動作を示すフローチャートである。
【図５】本発明の第１の実施形態に係るデータ書き込み動作の一部を示すフローチャートである。
【図６】本発明の第１の実施形態に係るデータ書き込み動作の一部を示すフローチャートである。
【図７】本発明の第２の実施形態に係るストレージノード管理装置の構成を示すブロック図である。
【図８】本発明の第１の実施形態としての管理ノード４または第２の実施形態としてのストレージノード管理装置７００のコンピュータ装置の回路ブロック図である。
【発明を実施するための形態】
【００５１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態に係る分散データストレージシステムの構成を示すブロック図である。図１に示すように、分散データストレージシステム３は、１つの管理ノード４および少なくとも性能は同一の２台以上のストレージノード５がネットワークを介して相互通信可能に接続されている。
【００５２】
また、少なくとも１台以上のクライアント装置１がネットワーク２を介して複数のストレージノード５、及び後に追加される複数のストレージノード６に相互通信可能に接続されている。
【００５３】
クライアント装置１は、ユーザが操作するコンピュータである。ユーザは、新規書き込みの要求があった場合、クライアント装置１を操作して、分散データストレージシステム３のストレージノード５にアクセスするデータアクセス要求を送信する。
【００５４】
このアクセスに応じて、クライアント装置１は、データの格納先を算出するために、あらかじめ決められている算術式を使う。即ち、クライアント装置１は、書き込み対象となるデータにＩＤを付与し、当該ＩＤを算術式の入力データとして用い、データ格納先を示す値を算出する。
【００５５】
そして、クライアント装置１は、算出した値を管理ノード４から取得したシステム構成情報に含まれる格納情報と照合してデータの格納先を設定する。さらに、クライアント装置１は、データの格納先となるストレージノード５へ、前述のＩＤと書き込み対象となるデータとを書き込み命令とともに送信することで、データの読み書きを行う。
【００５６】
管理ノード４は、分散データストレージシステム３の管理者が操作する端末装置である。分散データストレージシステム３の管理者は、管理ノード４を操作して、ストレージノード５、６にアクセスし、システム構成情報を設定して運用に必要な各種設定を行うことができる。
【００５７】
図２は、本発明の第１の実施形態に係る管理ノードの構成を示すブロック図である。図２に示すように、管理ノード４は、入出力部７、設定部１０、決定部１２、送信部１３、及び記憶部１４が接続されている。
【００５８】
入出力部７は、キーボード８とマウス９とが接続されて、キーボード８やマウス９から送られてくる信号を、バスを介して各部に転送する。
【００５９】
設定部１０は、モニタ１１と接続されている。分散データストレージシステム３に異なるＩ／Ｏ性能のストレージノードの設置、追加や障害等によりシステムの構成変更が発生した場合、設定部１０は、システム構成情報をモニタの画面に表示する。
【００６０】
システム構成情報は、「論理的なデータ容量」や「ストレージノードのＩＰアドレス情報」、「ストレージノードの稼働の有無」、「あらかじめ決められた算術式による算出結果をもとに、その算出結果の値とデータ格納先を紐づける格納情報」とからなる。
【００６１】
そして、設定部１０は、ストレージノードの設置、追加や障害等に基づいて、システム構成変更を反映した最新のシステム構成情報を設定する。また、設定部１０は、設置、又は追加のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割して、各領域の論理容量の設定を行う。
【００６２】
決定部１２は、設定部１０によって設定された情報に基づいて、分散データストレージシステムの構成変更を反映したシステム構成情報を決定する。
【００６３】
送信部１３は、設定部１０によって設定された情報及び決定部１２によって決定されたシステム構成情報をネットワーク２を介して、クライアント装置１及び／又は各ストレージノードに送信する。
【００６４】
記憶部１４は、設定部１０によって設定された情報及び決定部１２によって決定されたシステム構成情報などを記憶する。
【００６５】
システム構成情報のうち、「算術式に算出する算出結果、及び格納情報」の例を以下のように説明する。なお、割り当て方法は利用する算術式に応じて異なる。
【００６６】
クライアント装置１がデータの配置先を決める算術式に、例えば、Consistent Hashingを用いる。この場合、管理ノード４は、各ノードが搭載するストレージ容量に合わせて、仮想ノードを割り当てる。さらに、各ノードに設定する論理的なデータ容量に応じて、バーチャルノード数、およびバーチャルノード番号を割り当てる。
【００６７】
例えば、２台の基準ノード、論理データ容量が２倍となる２台のノードを有する計４台のノードを含むシステムが構成される場合、基準ノードにバーチャルノードを1つずつ、論理容量が２倍のノードにバーチャルノードを２つずつを割り当てたと仮定する。このようなシステムの場合、計６つのバーチャルノードが必要となる。
例えば、次のように割り当てられる。
【００６８】
基準ノード１：バーチャルノード１
基準ノード２：バーチャルノード２
論理容量が２倍のノード１：バーチャルノード３、４
論理容量が２倍のノード２：バーチャルノード５、６
各バーチャルノードの番号が、算術式により算出される結果（値）であり、上記の各ノードにおけるバーチャルノードの対応関係が記憶部１４の格納情報となる。
【００６９】
これらの情報は、システムの運用管理者が設定するものであり、管理ノード４が事前に設定する設定情報である。
【００７０】
管理ノード４は、以上のような構成に基づいて、ネットワーク２を介してストレージノード５、６を管理する。
【００７１】
なお、管理ノード４が備える機能は、いずれか１台のストレージノード５が担う構成でもよい。
【００７２】
図３は、ストレージノード５の構成を示すブロック図である。ストレージノード５は、データ入出力管理部１５、データ格納先管理部１６、ストレージ使用量管理部１７、及びストレージデバイス１９を有する格納部１８を備える。各部がストレージノード５の内部バスに接続されている。
【００７３】
各ストレージノード５は、図３に示すように、それぞれにストレージデバイス１９を接続している。ストレージノード５は、ストレージデバイス１９に格納されたデータを管理し、管理しているデータをネットワーク２を経由してクライアント装置１に提供する。
【００７４】
また、ストレージノード５は、データに冗長性をもたせて管理している。すなわち、同一内容のデータが、少なくとも２つのストレージノードで管理されている。
【００７５】
ストレージデバイス１９は、ディスクアレイを用いずにハードディスク単体（ＨＤＤ）で構成される。複数の性能の異なるデバイスでストレージデバイスが構成されても良い（例えば、ＳＳＤとＨＤＤを組み合わせ）。
【００７６】
また、ストレージデバイス１９は、内蔵する複数のＨＤＤを用いたＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムでも良く、ＲＡＩＤ以外の技術を用いてディスクアレイを構成してもよい。本実施の形態では、ストレージデバイスは、ハードディスク単体（ＨＤＤ）のディスク管理サービスを提供する。
【００７７】
データ入出力管理部１５は、ネットワーク２を介して送受信されるデータの入出力を担当する。
【００７８】
分散データストレージシステム３にストレージノードの追加や障害等によりシステムの構成変更が発生する場合、クライアント装置１は管理ノード４で発生したシステム構成変更を反映したシステム構成情報を保持しない。また、クライアント装置１は、誤ったノードに書き込み命令を送信することが考えられる。
【００７９】
この場合、データ入出力管理部１５は、自ノードに送信された書き込み命令に含まれるデータＩＤを入力とした算術的アルゴリズムに基づいて計算を行い、計算結果の値と管理ノード４からのシステム構成情報に含まれる格納情報と照合し、データアクセス要求が、自ノード向けの要求であるかどうかを判定する。
【００８０】
即ち、計算結果の値と格納情報とが一致する場合、データ入出力管理部１５は、データアクセス要求を自ノード向けの要求であると判定し、データアクセス要求に従ってデータのＩＤとデータの読み書きの命令をデータ格納先管理部１６に送信する。
【００８１】
算出結果の値と格納情報とが一致しない場合、データ入出力管理部１５は、自ノード向けの要求でないと判定し、クライアント装置１へデータ格納先ではない旨を表すエラーを返答する。
【００８２】
クライアント装置１は、そのエラーを取得した場合、管理ノード４に最新のシステム構成情報の送信を要求し、書き込み対象となるデータにＩＤを付与する。さらにクライアント装置１では、データの格納先を算出するために、あらかじめ決められている算術式を使い、当該ＩＤを入力データとしてデータ格納先を示す値を算出する。
【００８３】
クライアント装置１は、算術式で算出した値を管理ノード４から送信された最新のシステム構成情報に含まれる格納情報と照合してデータの格納先を再設定する。
【００８４】
クライアント装置１は、再設定したデータ格納先となるストレージノード５へＩＤと書き込み対象となるデータを、書き込み命令とともに再送信することで、データの読み書きを行う。
【００８５】
データ格納先管理部１６は、自ノードのストレージデバイス１９のデータ格納先となる物理アドレスと、データ入出力管理部１５により要求される書き込み対象となるデータのＩＤとを紐づけるテーブルを管理している。
【００８６】
データ格納先管理部１６は、データ入出力管理部１５によって指定されたデータのＩＤとデータの読み書きの命令に応じて、ストレージデバイス１９からデータの読み書きを行い、データ入出力管理部１５に与えられた命令の応答を返す。
【００８７】
前述のテーブルの内容は、データのＩＤ、ストレージデバイスの物理アドレス、アクセス頻度情報を紐づけた一般的なデータ管理テーブルである。データ格納先管理部１６は、データＩＤを入力として、ストレージデバイスの物理アドレス及びアクセス頻度情報を抽出することができる。
【００８８】
なお、データ格納先管理部１６は、テーブルで管理するデータのＩＤごとに、データの読み書きといったデータアクセス要求があった場合、その要求を当該データのＩＤのアクセス頻度情報として、テーブルに登録する。
【００８９】
ストレージ使用量管理部１７は、ストレージデバイス１９の空きアドレスを管理している。
【００９０】
データ入出力管理部１５からデータ格納先管理部１６へ新規のデータの書き込み要求があった場合、データ格納先管理部１６は、ストレージ使用量管理部１７から空きアドレスを取得して、ストレージデバイス１９に書き込みを行う。
【００９１】
なお、ストレージデバイス１９にデータの書き込みがあったアドレスは、ストレージ使用量管理部１７にて使用中のアドレスとして管理される。
【００９２】
また、ストレージ使用量管理部１７は、ストレージノード５が分散データストレージシステム３に組み込まれる際、管理ノード４から送信されるシステム構成情報に含まれる論理的なデータ容量に基づき、ストレージデバイス１９のすべてのアドレスを第１のストレージ領域用のアドレスと、第２のストレージ領域用のアドレスとの２種類に分類する。この場合、ストレージ使用量管理部１７は、論理的なデータ容量が、第１のストレージ領域の容量と第２のストレージ領域に容量を満たすようにアドレスを分類する。
【００９３】
ストレージデバイス１９は、ＨＤＤやＳＳＤといった一般的なストレージデバイスにより構成されているが、異なるデバイスを複数組み合わせて構成してもよい。異なるデバイスを複数組み合わせる場合においては、ストレージ使用量管理部１７は、よりＩ／Ｏ性能の高いデバイスを第１のストレージ領域用として割り当てる。
【００９４】
また、新規導入のストレージノード６も既設のストレージノード５と同様のハードウェアを用いて実装してもよい。
【００９５】
図４〜図６は、Ｉ／Ｏ性能の異なるストレージノード６が新規導入された場合、クライアント装置１から分散データストレージシステム３へのデータ書き込み処理を示すフローチャートである。以下、図４〜図６に示す処理をフローチャートに沿って説明する。
【００９６】
（ステップＳ４０１）図１に示すように、既設のストレージノード５のＩ／Ｏ性能値として、論理的な容量が１０である分散ストレージシステム３に、Ｉ／Ｏ性能値が２０であるストレージノード６が新規導入されると仮定する。この場合、管理ノード４は、当該性能の異なるストレージノード６の追加に基づいてシステム構成変更を反映したシステム構成情報を設定する。
【００９７】
（ステップＳ４０２）管理ノード４は、新規に導入されるストレージノード６が管理しているストレージデバイスを第１のストレージ領域と第２のストレージ領域に分割して、それぞれの容量を下記の条件に基づいて割り当てる。
【００９８】
また、下記の条件は、各ノードに割り当てる容量を設定するためのルールである。管理ノード４は、各ノードに割り当てる容量を設定する場合、管理ノード４で管理するシステム構成情報に含まれる情報の一部として、システムを構成するノードのＩ／Ｏ性能値に合わせるように設定する。即ち、下記ルールに基づき、管理ノード４が容量を設定する。
条件１）  管理ノード４は、基準となるストレージノード５のＩ／Ｏ性能値を決める。次に、Ｉ／Ｏ性能の異なるストレージノード６のＩ／Ｏ性能が基準ストレージノード５のＮ倍である場合、管理ノード４は、Ｉ／Ｏ性能の異なるストレージノード６の第１のストレージの論理容量を基準ノードのＮ倍に設定する（Ｎは、０より大きい整数である）。
【００９９】
例えば、ストレージノード６のＩ／Ｏ性能が、基準ストレージノード５のＩ／Ｏ性能の２倍である場合、管理ノード４は、Ｉ／Ｏ性能の異なるストレージノード６の第１のストレージの論理容量を基準ノードの論理容量の２倍に設定し、ストレージノード６のＩ／Ｏ性能に合わせる。この結果、Ｉ／Ｏ性能の異なるノードの性能がボトルネックになるという問題を解決することができるので、システム全体の性能を維持することができる。
条件２）  条件１）において、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量が、基準ストレージノード５のストレージデバイスのＮ倍以上ある場合、管理ノード４は、ストレージノード６内にＮ倍を超える残りの容量を、第２のストレージ領域として設定し、基準ストレージノード５には第２のストレージ領域を設定しない（データ再配置先とならない）。
【０１００】
例えば、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量が、基準ストレージノード５のストレージデバイスの２倍以上ある場合、管理ノード４は、ストレージノード６内に２倍を超える残りの容量を、第２のストレージ領域として設定する。
【０１０１】
このため、ストレージノード６は、Ｉ／Ｏ性能に合わせて、第１のストレージ領域に２倍の容量を保持することができるので、Ｉ／Ｏ性能の異なるストレージノード６の性能がボトルネックになるという問題を解決することができ、システム全体の性能を維持することができる。
条件３）  条件１）及び条件２）において、基準ストレージノード５に第２のストレージ領域を設定する場合、基準ストレージノードの第１のストレージ領域に割り当てた容量のＮ倍の容量を、Ｉ／Ｏ性能の異なるストレージノード６の第１のストレージ領域の容量として割り当てる。
【０１０２】
例えば、ストレージノード６のＩ／Ｏ性能が基準ストレージノード５のＩ／Ｏ性能の２倍である場合、ストレージノード６の第１のストレージ領域の論理容量が基準ストレージノード５の第１のストレージ領域に割り当てた容量の２倍に設定される。
【０１０３】
このように、ストレージノード６は、Ｉ／Ｏ性能に合わせて、第１のストレージ領域に２倍の容量を保持することができるので、Ｉ／Ｏ性能の異なるストレージノード６の性能がボトルネックになるという問題を解決することができ、システム全体の性能を維持することができる。
条件４）  条件１）において、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量が、基準ストレージノード５のストレージデバイスのＮ倍以下の場合、管理ノード４は、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量を上限として第１のストレージ領域としてすべて割り当てる。
【０１０４】
例えば、ストレージノード６のＩ／Ｏ性能が基準ストレージノード５のＩ／Ｏ性能が基準ノードの２倍であり、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量が、基準ストレージノード５のストレージデバイスの２倍以下の場合、管理ノード４は、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量を上限として第１のストレージ領域としてすべて割り当てる。
【０１０５】
このように、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量を最大限に活用しながらストレージノード６のＩ／Ｏ性能に合わせることができる。よって、Ｉ／Ｏ性能の異なるストレージノード６の性能がボトルネックになるという問題を最大限に低減することができ、システム全体の性能を最大限に維持することができる。
条件５）  条件１）及び４）において、Ｉ／Ｏ性能の異なるストレージノード６における第１のストレージ領域の容量の１/Ｎの容量を、基準ストレージノードの第１のストレージ領域の容量として割り当てる。
【０１０６】
例えば、ストレージノード６のＩ／Ｏ性能が基準ストレージノード５のＩ／Ｏ性能の２倍であり、Ｉ／Ｏ性能の異なるストレージノード６内のストレージデバイスの容量が、基準ストレージノード５のストレージデバイスの２倍以下であると仮定する。この場合、管理ノード４は、Ｉ／Ｏ性能の異なるストレージノード６における第１のストレージ領域の容量の１/２の容量を、基準ストレージノード５の第１のストレージ領域の容量として割り当てる。
【０１０７】
従って、条件１）のように、管理ノード４は、論理容量をＩ／Ｏ性能に合わせるようになり、Ｉ／Ｏ性能の異なるノードの性能がボトルネックになるという問題を解決することができ、システム全体の性能を維持することができる。
条件６）  ３種類以上のＩ／Ｏ性能、ストレージ論理容量の異なるストレージノード６が存在した場合、最もＩ／Ｏ性能の低いノードを基準ストレージノードとして設定し、条件１）〜５）に基づき、第１のストレージ領域の容量、第２のストレージ領域の容量を設定する。
【０１０８】
この設定条件は、最もＩ／Ｏ性能の低いノードを基準ストレージノードとして設定しているので、条件１）〜５）に基づき、最も容量の低いストレージノードの第１のストレージ領域の論理容量を基準ストレージノードのＩ／Ｏ性能に容易に合わせることができる。
【０１０９】
このため、Ｉ／Ｏ性能の異なるストレージノードの性能がボトルネックになるという問題を解決することができ、システム全体の性能を維持することができる。
条件７）  ストレージノード５、６が条件１）〜６）に合致しないストレージノードの組み合わせである場合、最も少ないストレージ容量となるストレージノードを基準ストレージノードとする。
【０１１０】
この設定条件は、最も少ないストレージ容量となるストレージノードを基準ストレージノードとする。従って、管理ノード４は、ストレージノードのＩ／Ｏ性能が基準ストレージノードの容量に合わせて設定することで、ストレージノードがボトルネックになるという問題を容易に解決することができる。
【０１１１】
なお、ストレージノード内において、複数の性能の異なるデバイスでストレージデバイスが構成されている場合（例えば、ＳＳＤとＨＤＤを組み合わせた場合等）、管理ノード４は、最もＩ／Ｏ性能の高いデバイスのみを利用した場合におけるＩ／Ｏ性能、およびストレージ論理容量を基準に、条件１）〜６）に従って、第１のストレージ領域の容量、および第２のストレージ領域の論理容量を設定する。
【０１１２】
本実施形態では、一例として、管理ノード４は、条件１）に基づいて設定する。即ち、管理ノード４は、導入されるストレージノード６の第１のストレージ領域の論理容量を、基準ストレージノード５の容量の２倍である２０に設定する。
【０１１３】
これによって、新規に導入されたストレージノード６の論理的な容量をＩ／Ｏ性能に合わせることができるようになるので、ストレージノード６の論理的な容量とＩ／Ｏ性能との差がなくなる。
【０１１４】
（ステップＳ４０３）管理ノード４は、変更済のシステム構成情報と第１のストレージ領域の論理容量などの設定情報をクライアント装置１及び全てのストレージノード５、６に送信する。もしくは管理ノード４は、クライアント装置１やストレージノード５、６からの変更済のシステム構成情報または設定情報の送信要求があった際にそれらの情報を送信してもよい。
【０１１５】
（ステップＳ４０４）ユーザから新規書き込みの要求があった場合、クライアント装置１は、書き込み対象となるデータにＩＤを付与し、そのＩＤを入力データとして、あらかじめ決められた算術式、および管理ノード４より取得したシステム構成情報に基づいて、データの格納先となるストレージノード５を設定する。
【０１１６】
（ステップＳ４０５）クライアント装置１は、ステップＳ４０４で設定したデータの格納先となるストレージノード５へ、ＩＤと書き込み対象となるデータを書き込み命令とともに送信する。
【０１１７】
（ステップＳ４０６）ストレージノード５のデータ入出力管理部１５は、自ノードに送信された書き込み命令に含まれるデータＩＤを入力として算術的アルゴリズムにより計算する。さらに、データ入出力管理部１５は、算出した値と管理ノード４からのシステム構成情報に含まれる格納情報とを照合し、データアクセス要求が、自ノード向けの要求であるかどうかを判定する。
【０１１８】
その判定により、算出した値と格納情報とが一致する場合、データ入出力管理部１２は、自ノードが格納先となると判定し、データ入出力管理部１５はクライアント装置１から送信された書き込み要求をデータ格納先管理部１６に転送する。
【０１１９】
（ステップＳ４０７）データ格納先管理部１６は、データＩＤとストレージデバイス１９を紐づけたテーブルに、書き込み要求に含まれているデータＩＤが存在しているか確認する。
【０１２０】
＜テーブルに書き込み要求に含まれているデータＩＤが存在している場合＞
（ステップＳ４０８）データ格納先管理部１６は、テーブルに紐づけられているアドレスを取得する。
【０１２１】
（ステップＳ４０９）データ格納先管理部１６は、取得したアドレスをもとに、ストレージデバイス１９の適合するアドレスへ、書き込み要求に含まれているデータを書き込む。
【０１２２】
（ステップＳ４１０）データ格納先管理部１６は、書き込みが完了したことを、データ入出力管理部１５に転送する。データ入出力管理部１５は、書き込み完了を受けて、クライアント装置１へ、書き込み要求が完了したことを通知する。
【０１２３】
＜テーブルに書き込み要求に含まれているデータＩＤが存在してない場合＞
（ステップＳ４１１）図５に示すように、データ格納先管理部１６は、ストレージ使用量管理部１７から、第１のストレージ領域の中から空きアドレスを取得する。次に、データ格納先管理部１６は、データ書き込み要求に含まれるＩＤと空きアドレスを紐づけて、テーブル上に新たなエントリとして登録して書き込みを完了する。
【０１２４】
（ステップＳ４１２）尚、第１のストレージ領域の使用量がある一定以上になった場合で、且つ第１のストレージ領域として確保しているストレージデバイスの使用量が、あらかじめ決められた使用量以上、つまり空きアドレスの数があらかじめ決められた一定数以下となった場合、ストレージ使用量管理部１７は、データ格納先管理部１６に、使用量超過のアラームを上げる。
【０１２５】
（ステップＳ４１３）データ格納先管理部１６は、アラームをトリガーとして、ＩＤとストレージデバイス１９へのデータ格納先アドレスを紐づけたテーブル上で管理されている、各ＩＤのアクセス頻度情報を参照する。次に、データ格納先管理部１６は、もっともアクセス頻度の低いＩＤから、あらかじめ決められた一定データ量分のＩＤ群を抽出する。
【０１２６】
（ステップＳ４１４）データ格納先管理部１６は、抽出されたＩＤを構成するバイナリデータをあらかじめ決められた数分だけ、巡回ビットシフトを実行する。その後、データ格納先管理部１６は、シフトされたＩＤのデータを入力データとして、クライアント装置１、ストレージノード５、６、管理ノード４間で共有しているシステム構成情報、および算術的データ格納先の設定手法を用いて、新たにデータの格納先を設定する。その格納先は、ＩＤのデータの再格納先となる。
【０１２７】
＜再格納先が、自ノードである場合＞
（ステップＳ４１５）図５に示すように、データ格納先管理部１６は、ストレージ使用量管理部１７に対して、ＩＤに紐づけられたアドレスが、第１のストレージ領域から第２のストレージ領域に割り当てが変更になったことを通知する。
【０１２８】
（ステップＳ４１６）ストレージ使用量管理部１７は、その通知を受けて、該当するアドレスを第２のストレージ領域のアドレスとして登録するとともに、第２のストレージ領域に割り当てているアドレスの中から、空きアドレスを１つ選択し、第１のストレージ領域のアドレスとして登録する。
【０１２９】
ただし、ストレージデバイス１９が複数の性能の異なるデバイスにより構成されていた場合は、データ格納先管理部１６は、第１のストレージ領域から第２のストレージ領域へデータを再配置してもよい。
【０１３０】
（ステップＳ４１７）データ格納先管理部１６は、第１のストレージ領域のアドレスとして登録されたアドレスへ、書き込み要求に含まれているデータを書き込む。
【０１３１】
（ステップＳ４１８）データ格納先管理部１６は、書き込みが完了したことを、データ入出力管理部１５に転送する。データ入出力管理部１５は、書き込み完了を受けて、クライアント装置１へ、書き込み要求が完了したことを通知する。
【０１３２】
＜ステップＳ４１４で設定される再格納先が、他のストレージノード６である場合＞
（ステップＳ４１９）図６に示すように、データ格納先管理部１６は、ストレージデバイス１９から前記ＩＤに該当するデータを読み出し、前記ＩＤに該当するアドレスが解放された（空きアドレスとなった）ことをストレージ使用量管理部１７に通知する。さらに、データ格納先管理部１６は、ＩＤとストレージデバイス１９のアドレス情報を紐づけて管理しているテーブルにおいて、アドレス情報を、再格納されたことを示す識別子に置き換える。
【０１３３】
（ステップＳ４２０）さらに、データ格納先管理部１６は、ストレージデバイス１９から読み出したデータと、巡回ビットシフトさせた再格納後のＩＤを、データ入出力管理部１２を経由して、再格納先となるストレージノード６へ再格納命令とともに転送する。
【０１３４】
（ステップＳ４２１）再格納先となったストレージノード６のデータ入出力管理部１５は、再格納要求を受け取った後、要求をデータ格納先管理部１６へ転送する。
【０１３５】
データ格納先管理部１６は、ストレージ使用量管理部１７から、第２のストレージ領域として確保しているアドレスの中から空きアドレスを取得し、ＩＤとアドレスを紐づけるテーブルに新たなエントリとして登録した後、空きアドレスにデータを格納する。
【０１３６】
この場合、第１のストレージ領域に格納する必要がある場合、データ格納先管理部１６は、第１のストレージ領域の空きアドレスを取得して、当該アドレスにデータを格納しても良い。
【０１３７】
（ステップＳ４２２）ステップＳ４２１での処理の完了通知は、データ入出力管理部１５を経由して、再格納元のストレージノード５に転送される。再格納元のストレージノード５は、書き込み完了通知を受けて、クライアント装置１へ、書き込み要求が完了したことを通知する。
【０１３８】
本発明の第１の実施形態としての分散データストレージシステムにおいて、異なるＩ／Ｏ性能を備えたストレージノード群によって構成される際、管理ノード４は、ストレージノードの論理容量とＩ／Ｏ性能のそれぞれの性能差に合わせて、ストレージノードの論理容量を、データアクセスＩ／Ｏ数に基づいて設定することが可能となる。
【０１３９】
これに基づいて、ストレージノードの性能がボトルネックにならず、システム全体の性能を維持するという効果がある。
[第２の実施形態]
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。なお、本実施形態の説明において、本発明の第２の実施形態に係るストレージノード管理装置７００の構成と本発明の第１の実施形態に係る管理ノードの構成の以外に、本発明の第１の実施形態と同様なシステム構成や同様に動作するステップを有するので、それにおける詳細な説明を省略する。
【０１４０】
図７は、本発明の第２の実施形態に係るストレージノード管理装置７００の構成を示すブロック図である。図７に示すように、ストレージノード管理装置７００は、設定部７０１、決定部７０２、及び送信部７０３を備える。
【０１４１】
ストレージノード管理装置７００は、ネットワーク２を介して複数のストレージノード５、６と接続している。
【０１４２】
分散データストレージシステム３の管理者がストレージノード管理装置７００を操作する。そして、その操作に基づいて、ストレージノード管理装置７００は、複数の異なるＩ／Ｏ性能のストレージノード５、６にアクセスし、システム構成情報を設定して運用に必要な各種設定を行う。
【０１４３】
分散データストレージシステム３に、異なるＩ／Ｏ性能のストレージノードの設置、追加や障害等によりシステムの構成変更が発生した場合、設定部７０１は、システム構成情報をモニタの画面に表示する。
【０１４４】
システム構成情報は、「論理的なデータ容量」、「ストレージノードのＩＰアドレス情報」、「ストレージノードの稼働の有無」、及び「あらかじめ決められた算術式による算出結果をもとに、その算出結果の値とデータ格納先を紐づける格納情報」とからなる。
【０１４５】
そして、設定部１０は、ストレージノードの設置、追加や障害等に基づいて、発生したシステム構成変更を反映した最新のシステム構成情報を設定する。また、設定部１０は、設置、又は追加のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割して、各領域の論理容量の設定を行う。
【０１４６】
決定部７０２は、設定部７０１によって設定された情報に基づいて、分散データストレージシステム３の構成変更を反映したシステム構成情報を決定する。
【０１４７】
送信部７０３は、設定部７０１によって設定された情報及び決定部７０２によって決定されたシステム構成情報をネットワーク２を介して、クライアント装置１や又は各ストレージノード５、６に送信する。
【０１４８】
本発明の第２の実施形態としての分散データストレージシステムは、異なるＩ／Ｏ性能を備えたストレージノード群によって構成される際、ストレージノード管理装置７００は、ストレージノードの論理容量とＩ／Ｏ性能のそれぞれの性能差に合わせて、ストレージノードの論理容量を、データアクセスＩ／Ｏ数に基づいて設定することが可能となる。
【０１４９】
前述したように、本発明の第２の実施形態によれば、ストレージノードの論理容量とＩ／Ｏ性能のそれぞれの性能差に合わせて、ストレージノードのデータ格納容量を、データアクセスＩ／Ｏ数に基づいて設定することが可能となる。
【０１５０】
同様に、分散データストレージシステムを運用する際、すでにシステムに組み込み済のノードのストレージノードの容量、Ｉ／Ｏ性能リソースを未消費の状態であれば、余分なノードの追加を避けることが可能となる。
【０１５１】
従って、分散データストレージシステムを構成するストレージノードの論理容量とＩ／Ｏ性能の性能差がなくなり、もしくは最小限にすることができ、それぞれのストレージノードのＨ／Ｗ性能をできるだけ最大に近づけるようにリソースを割り当てることが可能となる。その結果、ストレージ容量、Ｉ／Ｏ性能の両面において、分散データストレージシステムの全体性能を向上させることが可能となる。
【０１５２】
また、上述した本発明の各実施形態において、各フローチャートを参照して説明した処理機能は、コンピュータによって実現することができる。その場合、ストレージノード５、６、管理ノード４、ストレージノード管理装置７００が有すべき機能の処理内容を記述したプログラムが提供される。
【０１５３】
図８は、本発明の第１の実施形態としての管理ノード４または第２の実施形態としてのストレージノード管理装置７００のコンピュータ装置の回路ブロック図である。
【０１５４】
図８に示すように、本発明の第１の実施形態としての管理ノード４または第２の実施形態としてのストレージノード管理装置７００の処理機能は、ＲＯＭ８０３（Read Only Memory）又は記憶装置（ＨＤＤ）に記憶されたコンピュータ・プログラムをＣＰＵ８０１（Central Processing Unit）がＲＡＭ８０２（Random Access Memory）に書き込んで実行する。従って、上記処理機能がコンピュータ上で実現される。
【０１５５】
また、処理機能を実現するための内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。
【０１５６】
磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などがある。光磁気記録媒体には、ＭＯ（Magneto - Optical disk）などがある。
【０１５７】
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを通じて、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５８】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。
【０１５９】
そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【０１６０】
また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６１】
以上、本発明の実施の形態を説明したが、上記については単に本発明の原理を示すものである。本発明は上記に示して説明した構成および応用例に限定されるものではなく、さらに、多数の変形、変更が当業者にとって可能である。
【０１６２】
例えば、本発明は、最初から分散データストレージスステムに異なる容量とＩ／Ｏ性能のストレージノードが混載されている場合に適用することができる。
【０１６３】
また、システムの運用中にあるストレージノードの故障により、システムの構成情報に変更が生じ、他のストレージノードの論理容量を再設定する必要があった場合などに適用することができることはいうまでもない。
【０１６４】
また、対応するすべての変形例および均等物は、添付の請求項およびその均等物を本発明の範囲とみなすことができる。また、各部の構成は同様の機能を有する任意の構成のものに置換することができる。
【０１６５】
さらに、本発明に他の任意の構成物や工程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１６６】
以上の実施の形態に関し、さらに以下の付記を開示する。
【０１６７】
（付記１）
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する設定手段と、
前記設定手段により設定した情報に基づいて、前記分散データストレージシステムの構成変更を反映したシステム構成情報を決定する決定手段と、
前記決定手段により決定したシステム構成情報を前記複数のＩ／Ｏ性能の異なるストレージノードに送信する送信手段とを備えるストレージノード管理装置。
【０１６８】
（付記２）
前記設定手段は、前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能が前記基準ストレージノードのＩ／Ｏ性能のＮ倍である場合、前記基準ストレージノード以外のストレージノードの第１のストレージ論理容量を前記基準ストレージノードの論理容量のＮ倍に設定することを特徴とする付記１に記載のストレージノード管理装置。
【０１６９】
（付記３）
前記設定手段は、前記基準ストレージノード以外のストレージノードの論理容量が、前記基準ストレージノードの論理容量のＮ倍以上である場合、Ｎ倍を超える残りの容量を、前記基準ストレージノード以外のストレージノードの第２のストレージ領域に設定することを特徴とする付記１または２に記載のストレージノード管理装置。
【０１７０】
（付記４）
前記設定手段は、前記基準ストレージノードに第１及び第２のストレージ領域が設定される場合、前記基準ストレージノードの第１のストレージ領域に設定した論理容量のＮ倍の容量を、前記基準ストレージノード以外のストレージノードの第１のストレージ領域の論理容量に設定することを特徴とする付記１乃至３のいずれか１つに記載のストレージノード管理装置。
【０１７１】
（付記５）
前記設定手段は、３種類以上のＩ／Ｏ性能、ストレージ容量の異なるストレージノードが存在した場合は、最もＩ／Ｏ性能の低いストレージノードを基準ストレージノードとして設定し、全てのストレージノードのＩ／Ｏ性能及び格納容量が最大に近づくように第１のストレージ領域の論理容量、第２のストレージ領域の論理容量を設定することを特徴とする付記１乃至４のいずれか１つに記載のストレージ管理装置。
【０１７２】
（付記６）
前記設定手段は、性能の差異が大きいストレージノードの組み合わせの場合、最も少ないストレージ容量となるノードを基準ストレージノードとし、全てのストレージノードのＩ／Ｏ性能及び格納容量が最大に近づくように第１のストレージ領域の論理容量、第２のストレージ領域の論理容量を設定することを特徴とする付記１乃至５のいずれか１つに記載のストレージ管理装置。
【０１７３】
（付記７）
Ｉ／Ｏ性能の異なる複数のストレージノードにより基づいて、分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定し、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定するストレージノード論理容量設定方法。
【０１７４】
（付記８）
前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能が前記基準ストレージノードのＩ／Ｏ性能のＮ倍である場合、前記基準ストレージノード以外のストレージノードの第１のストレージ論理容量を前記基準ストレージノードの論理容量のＮ倍に設定することを特徴とする付記７に記載のストレージノード論理容量設定方法。
【０１７５】
（付記９）
前記基準ストレージノード以外のストレージノードのストレージ論理容量が、前記基準ストレージノードのストレージ容量のＮ倍以上である場合、Ｎ倍を超える残りの容量を、前記基準ストレージノード以外のストレージノードの第２のストレージ領域に設定することを特徴とする付記７又は８に記載のストレージノード論理容量設定方法。
【０１７６】
（付記１０）
前記基準ストレージノードに第１及び第２のストレージ領域が設定される場合、前記基準ストレージノードの第１のストレージ領域に設定した容量のＮ倍の容量を、前記基準ストレージノード以外のストレージノードの第１のストレージ領域の容量に設定することを特徴とする付記７乃至９のいずれか１つに記載のストレージノード論理容量設定方法。
【０１７７】
（付記１１）
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させるプログラム。
【０１７８】
（付記１２）
Ｉ／Ｏ性能の異なる複数のストレージノードを含む分散データストレージシステムを構成する際、前記複数のＩ／Ｏ性能の異なるストレージノードから少なくとも１つの基準ストレージノードを設定する処理と、前記基準ストレージノードのＩ／Ｏ性能と論理容量とを参照して、前記基準ストレージノード以外のストレージノードのストレージ領域を第１のストレージ領域と第２のストレージ領域に分割すると共に、それら第１及び第２のストレージ領域の論理容量を前記基準ストレージノード以外のストレージノードのＩ／Ｏ性能に合わせるように設定する処理とをコンピュータに実行させるプログラムが記録された記録媒体。
【０１７９】
（付記１３）
前記付記１乃至６のいずれか１つに記載のストレージ管理装置で第１のストレージ領域と第２のストレージ領域に分割されるストレージデバイスを有する格納手段と、
前記格納手段に格納するデータにアクセス要求がある場合、自ノード向けのアクセス要求であるかどうかを判定するデータ入出力管理手段と、
書き込み対象となるデータのＩＤと、データ格納先となる物理アドレスと、アクセス頻度情報とを紐づけた情報を管理すると共に、前記データ入出力管理手段によって指定されたデータのＩＤとデータの読み書きを指示する命令に応じて、データの読み書きを行うデータ格納管理手段と、
前記付記１乃至６のいずれか１つに記載のストレージ管理装置から取得するシステム構成情報に含まれる論理容量に基づき、前記第１のストレージ領域と第２のストレージ領域に容量を満たすように前記ストレージデバイスのアドレスを分類するストレージ使用量管理手段とを備えるストレージノード。
【０１８０】
（付記１４）
付記１乃至６のいずれか1つに記載のストレージ管理装置と、付記１３に記載のストレージノードとを備える分散データストレージシステム。
【０１８１】
この出願は、２０１３年５月２０日に出願された日本出願特願２０１３−１０６０７７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１８２】
１  クライアント装置
２  ネットワーク
３  分散データストレージシステム
４  管理ノード
５  ストレージノード
６  ストレージノード
７  入出力部
８  キーボード
９  マウス
１０  設定部
１１  モニタ
１２  決定部
１３  送信部
１４  記憶部
１５  データ入出力管理部
１６  データ格納先管理部
１７  ストレージ使用量管理部
１８  格納部
１９  ストレージデバイス
７００  ストレージノード管理装置
７０１  設定部
７０２  決定部
７０３  送信部
８０１  ＣＰＵ
８０２  ＲＡＭ
８０３  ＲＯＭ
８０４  記憶装置
８０５  外部機器接続インタフェース
８０６  ネットワークインタフェース
【図１】
2014188682.tif 000003
【図２】
2014188682.tif 000004
【図３】
2014188682.tif 000005
【図４】
2014188682.tif 000006
【図５】
2014188682.tif 000007
【図６】
2014188682.tif 000008
【図７】
2014188682.tif 000009
【図８】
2014188682.tif 000010
【国際調査報告】
2014188682.tif 000011
2014188682.tif 000012
2014188682.tif 000013
2014188682.tif 000014