(57)【要約】【課題】WAN環境を通したストレージファームへのデータの書き込みにおけるレスポンスを向上させることを目的とする。【解決手段】ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置は、前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信するデータ受信部と、前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納するデータ書込部とを有する。【選択図】図１
2014178734.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置であって、
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信するデータ受信部と、
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納するデータ書込部と、
を有するキャッシュ装置。
【請求項２】
前記データ受信部は、前記ストレージファームへのデータの書き込み要件を示すフラグを受信し、
前記ストレージファームにおいて前記データの書き込み要件が満たされた場合、書込完了通知を前記ファイルシステム生成装置に通知する書込完了通知部を更に有する、請求項１に記載のキャッシュ装置。
【請求項３】
前記ストレージファームへのデータの書き込み要件を示すフラグは、
予め決められたレプリケーション数の全ての書き込みが完了したことを示すフラグと、
予め決められたレプリケーション数のうち所定数の書き込みが完了したことを示すフラグと、
のうちいずれかを含む、請求項２に記載のキャッシュ装置。
【請求項４】
ファイルシステム生成装置から読出対象のデータに対応するキーのリストを取得するストレージリーダに更に接続され、
前記ストレージリーダからキーのリストを受信した場合、当該受信したキーのリストに含まれるキーに対応する分割データを前記記憶部から読み出すデータ読出部と、
読み出した分割データを前記ストレージリーダに送信するデータ送信部と、
を更に有する、請求項１乃至３のうちいずれか１項に記載のキャッシュ装置。
【請求項５】
前記データ読出部は、前記受信したキーのリストに含まれるキーのうち少なくとも１つのキーに対応する分割データが前記記憶部に存在しない場合、前記ストレージファームから前記少なくとも１つのキーに対応する分割データを読み出す、請求項４に記載のキャッシュ装置。
【請求項６】
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置におけるデータ書込方法であって、
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信するステップと、
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納するステップと、
を有するデータ書込方法。
【請求項７】
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置として、コンピュータを機能させるためのプログラムであって、当該コンピュータを
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信する手段、及び
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納する手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ装置、データ書込方法及びプログラムに関する。
【背景技術】
【０００２】
近年、仮想化技術や分散処理技術等の進展に伴い、扱うデータ量は増加する傾向にあり、特に文書ファイルや画像、動画等の非構造化データの量が急増している。このため、大量のデータを効率的に保存する技術が求められている。
【０００３】
記憶領域を効率的に利用することができる技術として、key-Value形式を用いたデータの記憶方法が検討されている（特許文献１参照）。具体的には、ストレージファームに書き込もうとするデータを、インデックスと書込対象のデータのビット列とに分ける。書込対象のデータのビット列に対してはハッシュ値を計算し、計算されたハッシュ値をkeyとするkey-Value形式にしてストレージファームに書き込む。このようにして、ユーザが異なってもビット列としての同一性を判別することができ記憶領域の効率的な利用をすることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−００４０６７号公報
【非特許文献】
【０００５】
【非特許文献１】遅延を解消しスループットを最適化するWAN高速化装置http://itpro.nikkeibp.co.jp/as/wan2/index.shtml
【非特許文献２】WAN高速化http://www.cisco.com/web/JP/news/cisco_news_letter/tech/waas2/index.html
【発明の概要】
【発明が解決しようとする課題】
【０００６】
今後、ストレージリソースの集約効果や柔軟なリソースの利用ができるという理由から、クラウドストレージの利用が広まっていくことが考えられる。リソースが一か所に集約されているクラウドストレージでは、まさに上記のkey-Value形式を用いたデータの記憶方法によりデータの重複排除効果が期待されると考えられる。
【０００７】
しかし、上記のkey-Value形式を用いたデータの記憶方法では、ストレージファームが広域ネットワーク（WAN：Wide  Area  Network）環境にある場合に問題がある。例えば、ストレージファームに書き込まれるデータがWAN環境を通るため、ユーザに対するレスポンスが劇的に低下するという問題がある（非特許文献１及び２参照）。
【０００８】
また、ストレージシステムでは信頼性やフォールトトレランス性を強化するためにレプリケーションを行っている。特に信頼性を重視する観点から、全てのレプリカが書き込まれた時点で書き込み完了として扱う場合、更にレスポンスが低下する。
【０００９】
本発明は、WAN環境を通したストレージファームへのデータの書き込み及び読み出しにおけるレスポンスを向上させることを目的とする。
【００１０】
また、WAN環境下におけるレスポンス制御を目的として、システムが重視する観点を選択し、この重視する観点に基づくデータの書き込み制御を行うことを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一形態に係るキャッシュ装置は、
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置であって、
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信するデータ受信部と、
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納するデータ書込部と、
を有する。
【００１２】
本発明の一形態に係るデータ書込方法は、
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置におけるデータ書込方法であって、
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信するステップと、
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納するステップと、
を有する。
【００１３】
本発明の一形態に係るプログラムは、
ファイルシステム生成装置から受信した書込対象のデータを所定のデータ長に分割して分割データを生成し、分割データと当該分割データに対応するキーとのセットを生成するストレージライタに接続されたキャッシュ装置として、コンピュータを機能させるためのプログラムであって、当該コンピュータを
前記ストレージライタから分割データと当該分割データに対応するキーとのセットを受信する手段、及び
前記受信した分割データと当該分割データに対応するキーとのセットを当該キャッシュ装置の記憶部に格納すると共に、ストレージファームに格納する手段、
として機能させる。
【発明の効果】
【００１４】
本発明によれば、WAN環境を通したストレージファームへのデータの書き込み及び読み出しにおけるレスポンスを向上させることが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例に係るストレージシステムの構成図
【図２】本発明の実施例に係るストレージシステムにおけるデータ書き込み時の動作を示す図
【図３】本発明の実施例に係るストレージシステムにおけるデータ読み出し時の動作を示す図
【図４】本発明の実施例に係るキャッシュ装置の構成図
【図５】本発明の実施例に係るストレージシステムの利用例を示す図
【図６】本発明の実施例に係るストレージシステムを利用したときの効果を示す図
【発明を実施するための形態】
【００１６】
以下、本発明の実施例について詳細に説明する。
【００１７】
＜ストレージシステムの構成＞
図１に、本発明の実施例に係るストレージシステムの構成図を示す。本発明の実施例に係るストレージシステムは、ストレージファーム１０と、ストレージライタ２０と、ストレージリーダ３０と、監視装置４０と、ファイルシステム生成装置５０と、キャッシュ装置６０とを有する。ファイルシステム生成装置５０、ストレージライタ２０、ストレージリーダ３０及びキャッシュ装置６０は、例えば広域ネットワークを介して、ストレージファーム１０に接続されている。キャッシュ装置６０は、複数のファイルシステム生成装置５０により共有されるため、ファイルシステム生成装置５０から見て広域ネットワークの手前に配置される。なお、各装置の配置は、図１に示す配置に限定されない。また、ストレージファーム１０は、ネットワークを介して利用可能な複数の記憶装置が相互に連結された記憶システムであり、複数のストレージサーバ１１から構成されている。図示しないが、キャッシュ装置６０も、複数のストレージサーバから構成されたストレージファームとして構成されてもよい。なお、ストレージライタ２０、ストレージリーダ３０、監視装置４０、ファイルシステム生成装置５０及びキャッシュ装置６０の数は、図１に示す数に限定されない。また、ストレージサーバ１１の数も、図１に示す数に限定されない。
【００１８】
本発明の実施例では、ファイルシステム生成装置５０からストレージファーム１０に書き込もうとするデータを、インデックスと書込対象のデータのビット列とに分ける。書込対象のデータのビット列は、所定のデータ長の分割データに分割される。分割データのビット列に対してハッシュ値が計算され、計算されたハッシュ値をkeyとし、分割データのビット列をvalueとするkey-Value形式にして、分割データがキャッシュ装置６０及びストレージファーム１０に書き込まれる。
【００１９】
このように、ストレージライタ２０とストレージファーム１０との間にハッシュ値keyでアクセス可能なkey-Value形式の実データのキャッシュ装置６０を配置することで、読み出し時の性能向上が図られる。
【００２０】
また、本発明の実施例では、ユーザに対するレスポンスを向上させるために、信頼性とパフォーマンスとのトレードオフについてユーザ又はアプリケーションによる切り替えを可能とする。ここで、信頼性とパフォーマンスとのトレードオフによる切り替えとは、レスポンスに大きく影響する「情報処理システムが重視する観点」を選択可能とすることである。例えば、「情報処理システムが重視する観点」として、ストレージファームがレプリケーション機能を有する場合、全ての書き込みが完了したときに書き込み完了とする一貫性重視の観点と、所定数の書き込みが完了したときに書き込み完了とするパフォーマンス重視の観点とが存在する。この観点の設定はユーザ又はアプリケーションが実施する。例えば、ユーザが直接ストレージファームを利用する場合はユーザによる設定を可能とし、アプリケーションを通して利用する場合は、アプリケーションによる設定を可能とする。ただし、アプリケーションによる切替設定を可能とするためには、予めアプリケーションによる観点の切替設定を可能とする機能をアプリケーション内に備えておく必要がある。
【００２１】
このような観点がユーザ又はアプリケーションから切り替えられた場合に変更されるのは、書込み開始のタイミングではなく、ユーザ又はアプリケーションに対して発行する書込み完了のタイミングである。例えば、レスポンスの速さを優先するアプリケーションがパフォーマンス重視の観点を選択した場合、データ損失が発生した場合の挙動に問題が生じる可能性はあることを前提に、所定数（例えば、１つ）のレプリカに書き込まれた時点で書き込み完了を通知するような対処を可能とする。また、信頼性を優先するアプリケーションが一貫性重視の観点を選択した場合、全てのレプリカに書き込まれた時点で書き込み完了を通知するような対処を可能とする。以下では、「情報処理システムが重視する観点」は、データの書き込み要件を示すフラグと称される。
【００２２】
以下に、ストレージシステムの各構成要素について説明する。
【００２３】
ストレージファーム１０の各ストレージサーバ１１は、（key,value）のセットを保存する記憶装置である。ストレージサーバ１１は、外部から（key,value）のセットが与えられると、そのセットを保存する。また、ストレージサーバ１１は、外部からkeyが与えられると、そのkeyに対応するvalueを返す。
【００２４】
なお、keyを計算するためのハッシュ関数Hash()は、暗号学的に安全な（衝突困難性を有する）ハッシュ関数である。例えば、SHA256のようなハッシュ関数が用いられてもよい。ハッシュ関数により計算された値はハッシュ値と称される。
【００２５】
監視装置４０は、ストレージファーム１０内の各ストレージサーバ１１を監視する装置である。監視装置４０は、ストレージサーバ１１に書き込まれているデータのレプリケーションの数を監視する。監視部４０は、レプリケーション数が予め決められた数に満たない場合、ストレージサーバ１１に対してレプリカの書き込みを指示する。ただし、データの書き込み要件を示すフラグがパフォーマンス重視に設定されている場合、監視装置４０は、予め決められたレプリケーション数のうち所定数（例えば、１つ）の書き込みが完了した時点で、書き込みが完了したものとする。なお、所定数（例えば、１つ）の書き込みが完了した時点で書き込みが完了したものとするが、その後も予め決められたレプリケーション数になるまでレプリカの書き込みが行われる。一方、データの書き込み要件を示すフラグが一貫性重視に設定されている場合、監視装置４０は、予め決められたレプリケーション数の全ての書き込みが完了した時点で、書き込みが完了したものとする。
【００２６】
キャッシュ装置６０は、ストレージファーム１０の各ストレージサーバ１１と同様に、（key,value）のセットを保存する記憶装置である。キャッシュ装置６０は、外部から（key,value）のセットが与えられると、そのセットをキャッシュ装置６０内の記憶部に一時的に保存すると共に、ストレージファーム１０に保存する。キャッシュ装置６０の記憶容量はストレージファーム１０の記憶容量に比べて小さいため、キャッシュ装置６０に保存されたデータは、アクセス頻度、アクセス時間等によって削除される。なお、（key,value）のセットにデータの書き込み要件を示すフラグが付与されている場合、フラグは除去され、（key,value）のセットのみが保存される。データの書き込み要件を示すフラグは、ストレージファーム１０の監視装置４０に渡される。
【００２７】
また、キャッシュ装置６０は、外部からkeyが与えられると、キャッシュ装置６０の記憶部からそのkeyに対応するvalueを返す。キャッシュ装置６０の記憶部にそのkeyに対応するvalueが存在しない場合、キャッシュ装置６０は、ストレージファーム１０からそのkeyに対応するvalueを取得して返す。
【００２８】
ストレージライタ２０は、ファイルシステム生成装置５０からの書き込み指示を受けて、キャッシュ装置６０に（key,value）のセットを書き込む装置である。ストレージライタ２０は、ファイルシステム生成装置５０から受信した書込対象のデータのビット列を所定のデータ長に分割して、分割データであるvalueを生成する。更に、ストレージライタ２０は、分割データに対応するキーとして、keyi=Hash(valuei)を計算し、キャッシュ装置６０に（keyi,valuei）のセットを書き込む。また、ストレージライタ２０は、（keyi,valuei）のセットを書き込む前に、書込先のキャッシュ装置６０にkeyiが書き込まれているか否かを確認し、keyiが書き込まれている場合には、（keyi,valuei）のセットの書き込みをスキップしてもよい。ストレージライタ２０は、keyiのリストを生成し、ファイルシステム生成装置５０に返す。
【００２９】
ストレージリーダ３０は、ファイルシステム生成装置５０から読み出し指示を受けて、キャッシュ装置６０から指示されたkeyのリストに含まれるそれぞれのkeyに対応する分割データvalueをすべて読み出し、ファイルシステム生成装置５０に返す。なお、キャッシュ装置６０に分割データvalueが存在しない場合、キャッシュ装置６０は、ストレージファーム１０から分割データvalueを読み出し、ストレージリーダ３０を介してファイルシステム生成装置５０に返す。この場合、キャッシュ装置６０は、分割データvalueがキャッシュ装置６０内に存在しないkeyのみに対して、ストレージファーム１０から分割データvalueを読み出せばよい。
【００３０】
ファイルシステム生成装置５０は、通常のファイルシステムが備える機能に加えて、自己のファイルシステム内で一意のインデックスとkeyのリストとを対応付けて管理する。
【００３１】
＜データ書き込み動作＞
次に、データ書き込み動作について図２を参照して説明する。
【００３２】
ステップＳ１１において、ファイルシステム生成装置５０は、アプリケーションからデータの書き込み指示を受ける。受け取ったデータは、インデックスと書込対象のデータのビット列とに分けられる。インデックスは、ファイルシステム生成装置５０におけるファイルの格納場所を示すファイルパスでもよい。また、ユーザ又はアプリケーションから、データの書き込み要件を示すフラグが付与される。
【００３３】
ステップＳ１２において、ファイルシステム生成装置５０は、書込対象のデータのビット列を、データの書き込み要件を示すフラグと共にストレージライタ２０に送信する。
【００３４】
ステップＳ１３において、ストレージライタ２０は、書込対象のデータを所定のデータ長に分割する。分割されたデータをvaluei（i=1,...N）とする。ここで、分割されたデータvaluei毎にキャッシュ装置６０及びストレージファーム１０にデータが保存されるため、分割されたデータvaluei毎にデータの書き込み要件を示すフラグが付与される。
【００３５】
ステップＳ１４において、ストレージライタ２０は、keyi=Hash(valuei)を計算する。
【００３６】
ステップＳ１５において、ストレージライタ２０は、キャッシュ装置６０に（keyi,valuei）のセットを渡す。このとき、ストレージライタ２０は、keyiのリストを生成し、ファイルシステム生成装置５０に返す。ファイルシステム生成装置５０は、インデックスとkeyiのリストとを対応付けて保存する。
【００３７】
ステップＳ１６及びＳ１７において、キャッシュ装置６０は、キャッシュ装置６０内の記憶部に（keyi,valuei）のセットを書き込むと共に、ストレージファーム１０に（keyi,valuei）のセットを書き込む。更に、ストレージファーム１０の監視装置４０にデータの書き込み要件を示すフラグを渡す。ストレージファーム１０の監視装置４０は、データの書き込み要件が満たされた場合、書き込みが完了したものとする。
【００３８】
上記のように、データの書き込み要件を示すフラグには、一貫性重視と、パフォーマンス重視とが存在する。例えば、ユーザがローカルファイルシステムのバックエンドとしてこのストレージファームを利用する場合には、とにかく確実にデータを読み書きできる信頼性や一貫性が重視されると考えられる。この場合、ストレージファームに対して全てのデータが書かれた時点で書き込み完了とする制御を行う。このように、一貫性重視では、予め決められたレプリケーション数（N個）の全てのレプリカについて書き込みが完了した時点で書込み完了とする。一方、オンラインストレージ等の用途で用いる場合は最終的に正しいデータが読み書きできればよく、とにかくユーザに対するレスポンスを高めることが重視される傾向がある。このような場合の処理としては、書込み処理開始のタイミングは信頼性を重視するタイミングと変わらないが、アプリケーションに対して確認応答を返すタイミングを速くする。例えば、全てのレプリカへの書込み完了を待たず、全レプリカ中の一定数に対する書き込みが完了した時点で、書き込み完了をアプリケーションに通知する。パフォーマンス重視では、予め決められたレプリケーション数（N個）のうち所定数（n個）について書き込みが完了した段階で書込み完了とする。ただし、所定数（n個）についてはユーザ指定できるものとし、N≧nである。このように、アプリケーション毎に求めるストレージファームへの書き込み要件が異なる場合には、それぞれの要件に合わせてストレージファームに書き込むことでアプリケーション毎の最適化が可能となる。
【００３９】
＜データ読み出し動作＞
次に、データ読み出し動作について図３を参照して説明する。
【００４０】
ステップＳ２１において、ファイルシステム生成装置５０は、アプリケーションからデータの読み出し指示を受ける。データはインデックスで指定される。
【００４１】
ステップＳ２２において、ファイルシステム生成装置５０は、アプリケーションが指定したインデックスに対応するkeyiのリストをストレージリーダ３０に送信する。
【００４２】
ステップＳ２３において、ストレージリーダ３０は、keyiのリストに対応するvalueiをキャッシュ装置６０から読み出す。
【００４３】
ストレージリーダ３０がvalueiをキャッシュ装置６０から読み出すことができない場合、ステップＳ２４において、キャッシュ装置６０は、keyiのリストに対応するvalueiをストレージファーム１０から読み出し、ストレージリーダ３０に戻す。ストレージファーム１０から読み出したデータは、キャッシュ装置６０の記憶部に格納してもよい。
【００４４】
このようにして、ステップＳ２５において、ストレージリーダ３０は、keyiのリストに対応するvalueiを取得する。
【００４５】
ステップＳ２６において、ストレージリーダ３０は、valueiを結合し、元のデータを得る。
【００４６】
ステップＳ２７において、ストレージリーダ３０は、valueiを結合して得た元のデータをファイルシステム生成装置５０に送信する。
【００４７】
ステップＳ２８において、ファイルシステム生成装置５０は、アプリケーションにデータを渡す。
【００４８】
＜キャッシュ装置の構成及び動作＞
次に、キャッシュ装置６０の構成及び動作について更に詳細に説明する。キャッシュ装置６０は、データ受信部６０１と、データ書込部６０３と、キャッシュ用記憶部６０５と、データ読出部６０７と、データ送信部６０９と、書込完了通知部６１１とを有する。
【００４９】
データ受信部６０１は、ストレージライタ２０から書込対象のデータを分割した分割データvalueと、分割データに対応するkeyとのセットを受信する。更に、データ受信部６０１は、（key,value）のセットに付与されたデータの書き込み要件を示すフラグを受信する。
【００５０】
データ書込部６０３は、受信した（key,value）のセットをキャッシュ用記憶部６０５に格納すると共に、ストレージファーム１０に格納する。
【００５１】
キャッシュ用記憶部６０５は、（key,value）のセットを保存する記憶装置である。
【００５２】
書込完了通知部６１１は、ストレージファーム１０においてデータの書き込み要件が満たされた場合、書込完了通知をファイルシステム生成装置５０に通知する。
【００５３】
データ読出部６０７は、ストレージリーダ３０からkeyのリストを受信した場合、受信したkeyのリストに対応するvalueをキャッシュ用記憶部６０５から読み出す。データ読出部６０５は、受信したkeyのリストに対応するvalueがキャッシュ用記憶部６０５に存在しない場合、ストレージファーム１０からkeyのリストに対応するvalueを読み出す。このときに、データ読出部６０７は、ストレージファーム１０から読み出したkeyのリストに対応するvalueをキャッシュ用記憶部６０５に格納してもよい。
【００５４】
データ送信部６０９は、キャッシュ用記憶部６０５又はストレージファーム１０から読み出したvalueをストレージリーダ３０に送信する。
【００５５】
＜利用例＞
本発明の実施例は、図５に示すように、分散ファイルシステムとして利用されているRiak及びRedisを用いて構成されてもよい。
【００５６】
例えば、ストレージファーム部分に分散KVS（key value store）のRiakを用い、キャッシュ装置部分に分散KVSのRedisを用いる構成が考えられる。またキャッシュ装置部分にはRiakライブラリであるRiackを配置する。ローカルファイルシステムとしての利用の場合はユーザから見るとあたかもローカルファイルシステムを操作しているように見えるようにするため、ユーザランドでファイルシステムが作成できるFuseを利用してストレージライタおよびストレージリーダの機能を隠ぺいしてもよい。この例ではFuseは送出するデータに対して一貫性重視のフラグを付与してストレージライタに送信する。ファイルシステムのようなブロックストレージとして利用する場合、データが損失するとファイルシステム自体が破壊される可能性がある。そのため、ローカルファイルシステムとしての利用の場合には、常に一貫性重視のフラグが使用される。
【００５７】
一方、オブジェクトストレージサービスとしての利用の場合はユーザに対するレスポンス向上が求められる。このため、１つのレプリカに書き込まれた時点で書き込みを完了とする。このように、オブジェクトファイルシステムとしての利用の場合には、パフォーマンス重視のフラグに切り替えられる。
【００５８】
上記のように、ストレージライタでは書き込みたいデータを固定長のブロックに切り分けハッシュ値を計算する。更に、valueの先頭にフラグを付与して、key-Value形式のデータとする。キャッシュ装置部分のRedisでは、ストレージライタからkey-Value形式のデータを受け取ると、フラグを読み取り、フラグと（key,value）とをRiackに伝える。分散KVSのRiakではRiackからのフラグを考慮してkey-Value形式のデータを保存及びレプリケーションする。RiackがRiakに受け渡すフラグがパフォーマンス重視の場合、Riakは全レプリカ中1つを書き込んだ時点で、Riackに対して書込完了通知（ack）を返す。一貫性重視の場合は信頼性重視で全てのレプリカを書いた時点で書込完了通知（ack）を返す。
【００５９】
＜実施例の効果＞
本発明の実施例によれば、WAN環境を通したストレージファームへのデータの書き込み及び読み出しにおけるレスポンスを向上させることが可能になる。
【００６０】
より具体的には、ストレージライタとストレージファームとの間にkey-Value形式の実データのキャッシュを配置することで、読み出し時の性能向上が図られる。また、key-Value形式のデータを利用することにより、異なるユーザ又は異なるアプリケーション毎のデータ間における重複データを重複排除可能となり、ストレージの効率的な利用を図ることが可能となる。
【００６１】
更に、それぞれのユーザやアプリケーションが指定する性能要件に応じてストレージファームへのデータの書き込み要件を変更することで、要件に応じた性能向上に応えることが可能となる。
【００６２】
例えば、本発明の実施例に係るストレージシステムは、個人のパーソナルコンピュータ（PC）のローカルファイルシステムとして利用したり、オブジェクトストレージとして用いることができる。前者のローカルファイルシステムとして利用される場合は、信頼性が求められるため、一貫性重視の観点が設定されてもよい。後者のオブジェクトストレージとして利用される場合は、パフォーマンスが求められるため、パフォーマンス重視の観点が設定されてもよい。このように求めるストレージ要件が異なる場合でも同一のストレージファームに共存し、それぞれのストレージ書き込み要件に対応することができる。 
更に、図６を参照して、本発明の実施例に係るストレージシステムによる効果を説明する。図６は、複数のファイルシステム生成装置５０により共有されるメタデータ記憶装置７０が存在する点を除き、図１の構成と同じである。この例では、各拠点にキャッシュ装置６０が配置されている。ストレージライタ２０及びストレージリーダ３０は省略されているが、ファイルシステム生成装置５０とキャッシュ装置６０との間に存在する。
【００６３】
上記のように、ファイルシステム生成装置５０は、ストレージファーム１０にデータを書き込んだ場合、ストレージライタ２０からkeyiのリストを取得する。メタデータ記憶装置７０は、このkeyiのリストを格納し、複数のファイルシステム生成装置５０により共有可能にする装置である。
【００６４】
例えば、東京のユーザＡから大阪のユーザＣにデータＸ（例えば、１TB）が送付され、その後、東京のユーザＢから大阪のユーザＤに同じデータＸが送付される場合について検討する。
【００６５】
ユーザＡからユーザＣにデータＸを送付する場合（Ｓ１及びＳ２）、ユーザＡは、データXをキャッシュ装置６０及びストレージファーム１０に格納し、データＸに対応するkeyiのリストをメタデータ記憶装置７０に格納する（Ｓ３）。ユーザＢがデータＸをユーザＤに送付する前に、ユーザＢは、データＸに対応するkeyiのリストをメタデータ記憶装置７０から取得し（Ｓ４）、ユーザＤに送信することで、ユーザＤは、大阪のキャッシュ装置６０にデータＸが存在する可能性があることを認識できる。この場合、ユーザＢは、データＸの実データをユーザＤに送信する必要はなく、keyiのリストの送受信だけでユーザＤは１TBのデータＸを取得可能となる。その結果、送受信側でのスループットが大幅に向上する。
【００６６】
このように、本発明の実施例では、同一データを共通化して同一のハッシュ値で管理するため、他人のデータの使い回しが可能となる。
【００６７】
説明の便宜上、本発明の実施例に係るキャッシュ装置及びストレージシステムは機能的なブロック図を用いて説明しているが、本発明の実施例に係るキャッシュ装置及びストレージシステムは、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。また、本発明の実施例に係る方法は処理の流れを示すフローチャートを用いて説明しているが、本発明の実施例に係る方法は、実施例に示す順序と異なる順序で実施されてもよい。
【００６８】
以上、WAN環境を通したストレージファームへのデータの書き込み及び読み出しにおけるレスポンスを向上させるための手法について説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【００６９】
１０  ストレージファーム
２０  ストレージライタ
３０  ストレージリーダ
４０  監視装置
５０  ファイルシステム生成装置
６０  キャッシュ装置
７０  メタデータ記憶装置
【図１】
2014178734.tif 000003
【図２】
2014178734.tif 000004
【図３】
2014178734.tif 000005
【図４】
2014178734.tif 000006
【図５】
2014178734.tif 000007
【図６】
2014178734.tif 000008