(57)【要約】【課題】記憶領域の効率化と速度パフォーマンスの向上を図ること。【解決手段】本発明のストレージシステムは、データとそのデータに対応するキーのセットを格納する複数のサーバ１１と、サーバ１１にデータを書き込むストレージライタ２０と、一意のインデックスとそれに対応する一以上のキーのリストの組を有するファイルシステム生成部５０と、を含み、キーが複数のサーバ１１のいずれに格納されているかを、表もしくはアルゴリズムによって示す。ストレージライタ２０は、インデックスによって特定される書込対象のデータのハッシュ値をキーとし、表もしくはアルゴリズムによって特定された書込先のサーバ１１に書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップする。【選択図】図１
2013004067.tif 000002
【特許請求の範囲】
【請求項１】
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムであって、
前記ストレージライタは、
前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとし、
前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップすることを特徴とする、
ストレージシステム。
【請求項２】
前記ストレージサーバからデータを読み込むストレージリーダをさらに有し、
前記ストレージリーダは、
前記インデックスによって特定される読込対象のキーのリストを取得し、前記表もしくはアルゴリズから特定された読込先のストレージサーバから、キーに対応する読込対象のデータを読み込むと共に、読込対象のデータとキーとのセットをキャッシュメモリにキャッシュし、
以降の読込対象のデータに対応するキーが前記キャッシュメモリにキャッシュされている場合、該キーに対応する読込対象のデータを前記キャッシュメモリから読み込むことを特徴とする、
請求項１に記載のストレージシステム。
【請求項３】
前記ストレージサーバに書き込むデータのデータ長は、予め決められており、
前記ストレージライタは、
前記インデックスによって特定された書込対象のデータを予め決められたデータ長に分割し、分割した各分割データについて、該分割データとキーとのセットを書込先のストレージサーバに書き込み、前記インデックスに対応するリストとして、分割したデータに対応するキーのリストを格納し、
前記ストレージリーダは、
前記インデックスによって特定された読込対象のデータを予め決められたデータ長に分割し、分割した各分割データについて、読込先のストレージサーバから各分割データを読み込み、読み込んだ各分割データを結合して読込対象のデータを得る、
請求項２に記載のストレージシステム。
【請求項４】
前記複数のストレージサーバを監視する監視部をさらに有し、
前記監視部は、
前記ストレージサーバに格納されているデータのレプリカの数を確認する機能と、
そのレプリカの数が指定された値に満たない場合、前記ストレージサーバにレプリカを作ることを指示する機能と、
前記複数のストレージサーバに対して、定期的に、該ストレージサーバに書き込まれているデータとキーとのセットの対応を確認する機能と、を有し、
偽のセットが書き込まれているストレージサーバに対し、他のストレージサーバが、偽のセットを削除して、真のセットを新たに書き込む、
請求項１から３のいずれか１項に記載のストレージシステム。
【請求項５】
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムが行うストレージ制御方法であって、
前記ストレージライタが、前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとするステップと、
前記ストレージライタが、前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップするステップと、を有することを特徴とする、
ストレージ制御方法。
【請求項６】
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムにおいて、前記ストレージライタに、
前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとする手順と、
前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップする手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模なストレージシステムに関するものである。
【背景技術】
【０００２】
（Ａ）並列KVS
大規模なストレージシステムを実現する技術として、KVS（Key Value Store）が存在する（非特許文献１）。
【０００３】
KVSとは、keyから、valueというデータを対応付け、keyとvalueとをセットで保存するDB（Data Base）技術であり、クラウドのような大規模な環境で利用されている。
【０００４】
KVSは、単純なkeyとvalueとの対応関係しか持たないため、容易にDB処理の並列化が可能であるという特徴がある。DB処理を並列化したKVSは並列KVSと称される。
【０００５】
並列KVSは、keyの種類によってDB処理をする担当を分割した複数のストレージサーバを並列に並べることで実現可能である。並列KVSは、データ量が多くなっても現実的な処理性能を得ることができるという利点がある。
（Ｂ）レプリケーション
大規模なストレージシステムを実現する際に、多くのストレージサーバを並べる場合、並べれば並べるほど、一部のストレージサーバに障害が起きる可能性が高くなる。
【０００６】
そのため、一部のストレージサーバに障害が起きてもデータが失われないように、データのレプリカを他のストレージサーバに保存する技術（レプリケーション、非特許文献２）が利用されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】（株）アスキー・メディアワークス、“クラウドの技術”、 ISBN978-4-04-868064-6、 2009年 11月 6日、p.100-101
【非特許文献２】“3.1 If I add new DataNodes to the cluster will HDFS move the blocks to the newly added nodes in order to balance disk space utilization between the nodes?”, ［平成23年5月23日検索］、インターネット＜URL: http://wiki.apache.org/hadoop/FAQ＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した並列KVSとレプリケーションには、それぞれ以下に示すような課題がある。
（ａ）並列KVSの課題
並列KVSでは、各ストレージサーバは、他のストレージサーバがどのようなvalueを保存しているかを知る必要がない。
【０００９】
そのため、いくらでもストレージサーバを追加することができるが、各ストレージサーバは、他のストレージサーバが保存しているvalueを知る術を持たないため、まったく同じデータを複数のストレージサーバが保存してしまうことがあり、記憶領域が効率的に利用されていないという課題がある。
【００１０】
例えば、ある人がLinuxのインストールディスクをあるストレージサーバに保存したとする。その状態で、別の人が同じインストールディスクを同じストレージシステムに保存しようとする場合、通常のストレージシステムでは、これらのインストールディスクを全く異なるデータである認識して、異なるストレージサーバに二重に保存してしまうことがある。
（ｂ）レプリケーションの課題
レプリカを生成する場合、マスターとなるデータが必要となる。そのデータを更新する場合、データとレプリカとの一貫性を確保するために、そのデータと全てのレプリカとの同期を完了させる必要がある。
【００１１】
そのため、データを更新する場合は、そのデータに対応するkeyをロックし、同期が完了するまで、そのデータの書き込み・読み込みをできないようにしている。
【００１２】
しかし、データを更新する度にkeyをロックし、同期が完了するまで、そのデータの書き込み・読み込みを待っていると、速度パフォーマンスが低下するという課題がある。
【００１３】
そこで、本発明の目的は、上述した課題を解決することができるストレージシステム、ストレージ制御方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明のストレージシステムは、
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムであって、
前記ストレージライタは、
前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとし、
前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップすることを特徴とする。
【００１５】
本発明のストレージ制御方法は、
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムが行うストレージ制御方法であって、
前記ストレージライタが、前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとするステップと、
前記ストレージライタが、前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップするステップと、を有することを特徴とする。
【００１６】
本発明のプログラムは、
データとそのデータに対応するキーのセットを格納する複数のストレージサーバと、前記ストレージサーバにデータを書き込むストレージライタと、一意のインデックスとそれに対応する一以上の前記キーのリストの組を有するファイルシステム生成部と、を含み、前記キーが前記複数のストレージサーバのいずれに格納されているかを、表もしくはアルゴリズムによって示すストレージシステムにおいて、前記ストレージライタに、
前記インデックスによって特定される書込対象のデータのハッシュ値をハッシュ関数により計算し、計算したハッシュ値をキーとする手順と、
前記表もしくはアルゴリズムによって特定された書込先のストレージサーバに書込対象のデータに対応するキーがまだ書き込まれていない場合、書込対象のデータとキーとのセットを書き込み、書込先のストレージサーバに書込対象のデータに対応するキーが書き込まれている場合、書込対象のデータとキーとのセットの書き込みをスキップする手順と、
を実行させる。
【発明の効果】
【００１７】
本発明によれば、ストレージシステムにおいて、記憶領域を効率的に利用することができると共に、速度パフォーマンスの向上を図ることができるという効果が得られる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態のストレージシステムの構成を示す図である。
【図２】図１に示したストレージシステムのデータ書き込み時の動作を説明する図である。
【図３】図１に示したストレージシステムのデータ読み込み時の動作を説明する図である。
【図４】本発明の他の実施形態のストレージシステムの構成を示す図である。
【発明を実施するための形態】
【００１９】
以下に、本発明を実施するための形態について図面を参照して説明する。
（１）本実施形態の構成
（１−１）ストレージシステム
図１に示すように、本実施形態のストレージシステムは、ストレージファーム１０と、ストレージライタ２０と、ストレージリーダ３０と、監視部４０と、ファイルシステム生成部５０と、を有している。また、ストレージファーム１０は、複数のストレージサーバ１１から構成されている。なお、ストレージライタ２０、ストレージリーダ３０、監視部４０、およびファイルシステム生成部５０の数は、図１に示した数に限定されない。また、ストレージサーバ１１の数も、図１に示した数に限定されず、複数であれば良い。
（１−２）ストレージファーム１０
各ストレージサーバ１１は、（key,value）のセットを保存するものであり、各ストレージサーバ１１は、ストレージリーダ３０およびストレージライタ２０からアクセスされ、また、監視部４０から監視される。
【００２０】
ストレージサーバ１１は、例えば、以下の機能を備える。
【００２１】
すなわち、ストレージサーバ１１は、外部から（key,value）のセットが与えられると、そのセットを保存する機能を備える。
【００２２】
また、ストレージサーバ１１は、外部からkeyが与えられると、そのkeyに対応するvalueを返す機能を備える。
【００２３】
また、ストレージサーバ１１は、外部からkeyが与えられると、そのkeyを保存しているか否かの情報を返す機能を備える。
【００２４】
また、ストレージサーバ１１は、外部からの指示を受けて、key = Hash（value）であるか否かを確認し、その真偽の情報を返す機能を備える。
【００２５】
なお、hash（）は、暗号学的に安全（衝突困難性を有する）なハッシュ関数である（例えば、SHA256など）。また、ハッシュ関数により計算された値はハッシュ値と称される。
【００２６】
また、ストレージサーバ１１は、外部から指示された（key,value）のセットを削除する機能を備える。
（１−３）ストレージライタ２０
ストレージライタ２０は、ファイルシステム生成部５０から書き込み指示を受けて、ストレージファーム１０に（key,value）のセットを書き込むものであり、例えば、以下の機能を備える。
【００２７】
すなわち、ストレージライタ２０は、ファイルシステム生成部５０から書き込み指示を受けた書込対象のデータ（bit列）を、予め決められたbit 長のvalueiに分割し、keyi =Hash（valuei）を計算する機能を備える。
【００２８】
また、ストレージライタ２０は、keyiとストレージサーバ１１とを対応付ける表またはアルゴリズムを有しており、ストレージファーム１０内のストレージサーバ１１の中から、上述した表またはアルゴリズムを用いて、（keyi,valuei）のセットの書込先のストレージサーバ１１を特定し、特定したストレージサーバ１１に（keyi,valuei）のセットを書き込む機能を備える。
【００２９】
また、ストレージライタ２０は、（keyi,valuei）のセットを書き込む前に、書込先のストレージサーバ１１に対し、keyiが書き込まれているか否かを確認し、keyiが書き込まれている場合は、（keyi,valuei）のセットの書き込みをスキップする機能を備える。
【００３０】
また、ストレージライタ２０は、keyiのリストを生成し、ファイルシステム生成部５０に返す機能を備える。
（１−４）ストレージリーダ３０
ストレージリーダ３０は、ファイルシステム生成部５０から読み込み指示を受けて、ストレージファーム１０からvalueを読み込み、ファイルシステム生成部５０に返すものであり、例えば、以下の機能を備える。
【００３１】
すなわち、ストレージリーダ３０は、keyとストレージサーバ１１とを対応付ける表またはアルゴリズムを有しており、ストレージファーム１０内のストレージサーバ１１の中から、上述した表またはアルゴリズムを用いて、ファイルシステム生成部５０から読み込み指示を受けたkeyリストの各keyに対応するvalueを読み込む読込先のストレージサーバ１１を特定する機能を備える。
【００３２】
また、ストレージリーダ３０は、keyの列に対応するvalueの列をそれぞれkey毎に読込先のストレージサーバ１１から読み込み、valueの列を結合してファイルシステム生成部５０に返す機能を備える。
【００３３】
また、ストレージリーダ３０は、ストレージファーム１０から読み込んだvalueを、keyとセットで不図示のキャッシュメモリにキャッシュしておく機能を備える。
（１−５）監視部４０
監視部４０は、ストレージファーム１０内の個々のストレージサーバ１１を監視するものであり、例えば、以下の機能を備える。
【００３４】
すなわち、監視部４０は、ストレージファーム１０内の個々のストレージサーバ１１が動作しているか否かを監視する機能を備える。
【００３５】
また、監視部４０は、ストレージサーバ１１に書き込まれているデータのレプリカの数を確認する機能を備える。
【００３６】
また、監視部４０は、上記で確認したレプリカの数が指定された数に満たない場合、そのストレージサーバ１１に対し、レプリカの作成と、他のストレージサーバ１１へのレプリカの書き込みとを指示する機能を備える。
【００３７】
また、監視部４０は、元のデータが書き込まれているストレージサーバ１１と、そのデータのレプリカが書き込まれているストレージサーバ１１とに対し、定期的に、そのストレージサーバ１１に書き込まれている（key,value）のについて、key = Hash（value）であるか否かの真偽を問い合わせる機能を備える。
【００３８】
もし、偽のセットが書き込まれているストレージサーバ１１がある場合、そのストレージサーバ１１に対し、他のストレージサーバ１１が、偽のセットを削除して、真のセットを新たに書き込むことになる。
（１−６）ファイルシステム生成部５０
ファイルシステム生成部５０は、通常のファイルシステムが備える機能に加えて、以下の機能を備える。
【００３９】
すなわち、ファイルシステム生成部５０は、自己のファイルシステム内で一意のインデックスと、keyリストと、を対応付けて管理する機能を備える。
【００４０】
また、ファイルシステム生成部５０は、書込対象のデータをストレージライタ２０に送信し、そのデータに対応するkeyリストを受け取る機能を備える。
【００４１】
また、ファイルシステム生成部５０は、インデックスに対応するkeyのkeyリストをストレージリーダ３０に送信し、そのkeyに対応したvalueを結合した読込対象のデータを受け取る機能を備える。
（２）本実施形態の動作
（２−１）データ書き込み時の動作
まず、データ書き込み時の動作について、図２を参照して説明する。
【００４２】
図２に示すように、まず、ステップＳ１１において、ファイルシステム生成部５０は、アプリケーションからデータの書き込み指示を受ける。その際、インデックスとデータ（bit 列）が指定される。
【００４３】
次に、ステップＳ１２において、ファイルシステム生成部５０は、データ（bit 列）をストレージライタ２０に送信する。
【００４４】
次に、ステップＳ１３において、ストレージライタ２０は、データを予め決められたbit 長（例えば、256KB）ごとに分割する。分割したデータ（チャンクと呼ぶ）をvaluei（i = 1,...,N）とする。
【００４５】
次に、ステップＳ１４において、ストレージライタ２０は、keyi = Hash（valuei）をそれぞれ計算する。
【００４６】
次に、ステップＳ１５において、ストレージライタ２０は、上述した表またはアルゴリズムを用いて、keyiと対応付けられるストレージサーバ１１を、（keyi, valuei）の書込先のストレージサーバ１１と特定し、特定したストレージサーバ１１に（keyi, valuei）のセットを書き込む。
【００４７】
この時、ストレージライタ２０は、（keyi, valuei）のセットを書き込む前に、書込先のストレージサーバ１１に対し、keyiが書き込まれているか否かを確認し、keyiが書き込まれていれば、（keyi, valuei）のセットの書き込みを行わない。
【００４８】
次に、ステップＳ１６において、ストレージライタ２０は、keyiのリストを生成し、ファイルシステム生成部５０に返す。
【００４９】
その後、ステップＳ１７において、ファイルシステム生成部５０は、インデックスとkeyiのリストとを対応付けて保存する。
【００５０】
なお、ステップＳ１４，Ｓ１５の処理は、ステップ内で並列実行が可能であり、また、ステップＳ１６の処理は、ステップＳ１４，Ｓ１５の処理と並列実行が可能である。
【００５１】
また、ステップＳ１３の分割方法は、任意であり、後述する図３のステップＳ２４の結合方法と対応さえしていればよい。
（２−２）データ読み込み時の動作
続いて、データ読み込み時の動作について、図３を参照して説明する。
【００５２】
図３に示すように、まず、ステップＳ２１において、ファイルシステム生成部５０は、アプリケーションからデータの読み込み指示を受ける。その際、データは、インデックスで指定される。
【００５３】
次に、ステップＳ２２において、ファイルシステム生成部５０は、アプリケーションが指定したインデックスに対応付けられたkeyiのリストを、ストレージリーダ３０に送信する。
【００５４】
次に、ステップＳ２３において、ストレージリーダ３０は、上述した表またはアルゴリズムを用いて、keyiのリストの各keyiと対応付けられるストレージサーバ１１を読込先のストレージサーバ１１と特定する。そして、ストレージリーダ３０は、特定したストレージサーバ１１から、keyiに対応するチャンクvalueiを読み込む。
【００５５】
このとき、ストレージリーダ３０は、keyiがキャッシュメモリにキャッシュされていれば、キャッシュメモリからチャンクvalueiを読み込む。
【００５６】
また、ストレージリーダ３０は、読込先のストレージサーバ１１から読み込んだチャンクvalueiを、keyiとセットでキャッシュメモリにキャッシュしておく。
【００５７】
次に、ステップＳ２４において、ストレージリーダ３０は、チャンクvalueiを結合し、元のデータを得る。
【００５８】
次に、ステップＳ２５において、ストレージリーダ３０は、チャンクvalueiを結合して得た元のデータをファイルシステム生成部５０に送信する。
【００５９】
その後、ステップＳ２６において、ファイルシステム生成部５０は、アプリケーションに対し、データを渡す。
【００６０】
なお、ステップＳ２３の処理は、ステップ内で並列実行が可能である。
【００６１】
また、ステップＳ２３〜Ｓ２６の処理は、それぞれのi ごとに実施することで、レイテンシを下げることができる。
（３）本実施形態の効果
上述したように本実施形態によれば、ストレージライタ２０は、データを書き込む際に、そのデータを分割した各valueiについて、keyi = Hash（valuei）を計算し、（keyi, valuei）のセットを書き込む。
【００６２】
この時、ストレージライタ２０は、書込先のストレージサーバ１１にkeyiが書き込まれているか否かを確認し、keyiが書き込まれていれば、（keyi, valuei）のセットの書き込みをスキップする。
【００６３】
ここで、同じvalueiを書き込む場合、ハッシュ関数の性質から、それらvalueiに対しては、異なるkeyiが割り当てられることはなく（正確には確率的に無視できるぐらい小さい）、同じkeyiが割り当てられることになるため、（keyi, valuei）のセットは、１つのストレージサーバ１１にのみ書き込まれ、異なるストレージサーバ１１に重複して書き込まれることはない。
【００６４】
よって、ストレージサーバ１１の記憶領域を効率的に利用することができる。
【００６５】
例えば、互いに類似する２つのデータ（多くの部分が同一しており、例えば最後の部分だけが少し異なる）を書き込む場合、２つのデータの同一部分は、１つのストレージサーバ１１にのみ書き込まれるため、各ストレージサーバ１１の記憶領域を共有することができる。
【００６６】
また、本実施形態によれば、ストレージファーム１０内においては、ハッシュ関数の性質から、同じkeyiに対しては、異なるvalueiが割り当たることがないため、keyiに対応するvalueiが書き換わることがない。そのため、レプリカを作ったとしても、マスターとなるデータとレプリカとの同期は保たれることになる。
【００６７】
よって、データを更新する場合に、データとレプリカとの一貫性を気にする必要がないため、keyをロックすることなく、データの書き込みを完了させることができ、速度パフォーマンスの向上を図ることができる。
（４）他の実施形態
（４−１）一般に、多くのストレージシステム（例えば、HDFS Hadoop Distributed File System）では、データをチャンクに分けて分割して保存している。
【００６８】
そこで、本発明のストレージシステムは、他のストレージシステムに保存していたデータを自システムに保存する場合、他のストレージシステムから転送されてきたチャンクについて、ステップＳ１４の分割処理を行わず、そのままストレージファーム１０内のストレージサーバ１１に書き込む構成とすることができる。
【００６９】
また、本発明のストレージシステムは、自システムに保存していたデータを、他のストレージシステムに保存する場合、自システムに保存していたチャンクについて、ステップＳ２４の結合処理を行わず、そのまま他のストレージシステムに転送する構成とすることができる。
【００７０】
この構成の場合も、上述した実施形態と同じ効果を得ることができる。
【００７１】
また、この構成の場合は、データの転送を全て並列に行うことができるため、速度パフォーマンスのさらなる向上が図れる。
（４−２）上述した実施形態においては、ストレージライタ２０およびストレージリーダ３０が、ストレージサーバ１１からは独立して設置されていたが、例えば、図４に示すように、ストレージファーム１０内のストレージサーバ１１のそれぞれに、ストレージライタ２０およびストレージリーダ３０の機能を搭載する構成とすることもできる。
【００７２】
なお、この構成の場合、各ストレージサーバ１１は、図１に示したストレージサーバ１１の機能を備えるサーバ部１１１と、図１に示したストレージライタ２０の機能を備えるストレージライタ部１１２と、図１に示したストレージリーダ３０の機能を備えるストレージリーダ部１１３と、を有する構成となる。
【００７３】
また、この構成の場合、ファイルシステム生成部５０は、ストレージファーム１０内のどのストレージサーバ１１にアクセスしても、ストレージファーム１０を使用可能である。
【００７４】
また、複数の利用者で本発明のストレージシステムを利用することを想定した場合、ストレージファーム１０、ストレージライタ２０、ストレージリーダ３０、監視部４０を複数の利用者で共有し、ファイルシステム生成部５０のみを各利用者毎に用意する構成とすることが考えられる。
【００７５】
この構成の場合、他の利用者のデータの変更が、他の利用者に影響を与えることはない。その理由は、影響があるのはファイルシステム生成部５０にあるインデックスと対応したkeyリストだけのためである。
【００７６】
なお、本発明のストレージサーバ１１、ストレージライタ２０、およびストレージリーダ３０にて行われる方法は、コンピュータに実行させるためのプログラムに適用しても良い。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
【符号の説明】
【００７７】
１０    ストレージファーム
１１    ストレージサーバ
２０    ストレージライタ
３０    ストレージリーダ
４０    監視部
５０    ファイルシステム生成部
【図１】
2013004067.tif 000003
【図２】
2013004067.tif 000004
【図３】
2013004067.tif 000005
【図４】
2013004067.tif 000006