(57)【要約】【課題】同期レベルの制御をユーザ側から設定・制御可能なストレージシステムを提供すること。【解決手段】ストレージシステム１において、各ストレージノード２０ａ〜２０ｃの同期レベルを管理する同期レベル管理装置１０を備え、クライアント（例えば、３０ａ）は、ストレージノード２０ａ〜２０ｃにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を同期レベル管理装置１０に送信することにより、同期レベル管理装置１０に対してデータの要求を行う機能を有し、同期レベル管理装置１０は、クライアント３０ａからの指定情報を受けることにより、クライアント３０ａから最もアクセスに適したストレージノードを判断し、判断されたストレージノード（例えば、２０ａ）に係る情報をクライアント３０ａに回答する機能を有する。【選択図】図１
2011123596.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してクライアントと通信可能に接続された複数のストレージノードを有するストレージシステムにおいて、
前記ネットワークと通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理する同期レベル管理装置を備え、
前記クライアントは、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う機能を有し、
前記同期レベル管理装置は、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する機能を有することを特徴とするストレージシステム。
【請求項２】
前記指定情報は、前記クライアントに係る識別情報を含み、
前記同期レベル管理装置は、
前記指定情報に基づいて、対応するデータにアクセスしている他のクライアントがいるか判断し、他のクライアントがいる場合に当該他のクライアントがどの同期レベルで接続しているか確認し、対応するデータにどの同期レベルが許されているかを確認する状態管理部と、
前記指定情報、及び、前記状態管理部の確認結果に基づいて、前記クライアントが指定したデータに接続が可能かを判断する同期レベル調停部と、
前記クライアントが指定したデータに接続が可能な場合に、前記指定情報に基づいて対応するデータのマスタノードを求めるマスタノード解決部と、
前記マスタノード解決部で求めたマスタノード、及び、前記指定情報に基づいて、マスタノードから、同期レベルに対応するＴＡＴで到達できるストレージノード群を求め、前記ストレージノード群の中から前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答するトポロジー構成解決部と、
を備え、
前記状態管理部は、前記トポロジー構成解決部からストレージノードに係る情報を前記クライアントに回答した後、前記指定情報を保存することを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記同期レベル管理装置は、別のクライアントがアクセスしてきたときに、前記別のクライアントからの指定情報に基づいて、前記ストレージノードのアクセス権の設定を行うアクセス権設定部を備え、
前記ストレージノードは、前記アクセス権設定部によりアクセス権の設定が行われ、設定されたアクセス権に基づいて、アクセス中のクライアントのアクセス先の変更もしくは更新を制限したり、アクセス先の変更もしくは更新をガイドしたりするアクセス権チェック部を備えることを特徴とする請求項１又は２記載のストレージシステム。
【請求項４】
クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理し、前記クライアントからアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する機能を有することを特徴とする同期レベル管理装置。
【請求項５】
クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続された同期レベル管理装置を有するストレージシステムを用いて、各前記ストレージノードの同期レベルを管理する同期レベル管理方法であって、
前記クライアントにおいて、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う工程と、
前記同期レベル管理装置において、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する工程と、
を含むことを特徴とする同期レベル管理方法。
【請求項６】
クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続される同期レベル管理装置にて、各前記ストレージノードの同期レベルの管理を実行させるプログラムであって、
前記クライアントからアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断するステップと、
前記ステップで判断されたストレージノードに係る情報を前記クライアントに回答するステップと、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期レベルの制御が可能なストレージシステム、同期レベル管理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来からコンピュータの外部に置かれるストレージ（外部記憶装置）には様々なストレージデバイスやストレージ機器があり、それぞれ異なった特性を持っている。ストレージデバイスであれば、ハードディスク（ＨＤＤ）は、ｍｓ（ミリセカンド）オーダーでＲＥＡＤ／ＷＲＩＴＥができ、シーケンシャルアクセスに強くランダムアクセスは遅い。磁気テープは、ハードディスクよりもさらに遅く、基本的にはシーケンシャルアクセスであるが、ハードディスクよりも低コストに大容量化できるという特徴を持つ。最近では、フラッシュメモリをハードディスクの替わりに使うケースも増えつつある。フラッシュメモリはランダムアクセスに強く、ハードディスクよりも高速で低消費電力である。また、揮発性のメモリであっても、複数ノードに冗長化してストレージとみなすシステムも存在する。ストレージ機器であれば、エンタープライズのディスクアレイからＮＡＳ（Network Attached Storage）、ファイルサーバ、外付けディスク、外付けＵＳＢ（Universal Serial Bus）メモリのようなものまである。
【０００３】
従来は、このような様々なストレージをユーザは要件に応じて使い分けていた。要件として、例えば、性能、信頼性、可用性、携帯性、アプリケーション（ファイルサーバ、メールサーバ、データベース）などである。しかしながら、近年、クラウドコンピューティングの進展により、ストレージもユーザの手元において使うのではなく、ネットワーク上に仮想的に配置するアーキテクチャが出てきている。クラウド上に配置したストレージはクラウドストレージと言われているが、そこでは実際にデータが格納されるストレージがＨＤＤなのかメモリなのか、ディスクアレイなのかＮＡＳなのかといった情報は隠蔽される。むしろ、そのような物理的な構成は不要な情報となる。重要となるのは、サービスレベルという概念である。
【０００４】
ストレージシステムのサービスレベルで重要なポイントは、同期レベルと性能のトレードオフである。一般に、ストレージシステムは、データを物理的に一箇所に格納するのではなく、対障害性と性能を考慮して複数の場所に格納する。これにより、対障害性を向上すると同時に、アクセスを分散して性能を上げることが可能になる。性能を上げる典型的なやり方はキャッシュによる複製である。ただし、複製が多ければ多いほど、更新の際に複製まで含めて同期をとるコストがかかり、更新性能は低下する。特に、ＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）ネットワークを介した分散ストレージシステムでは、差分データをオーバーヘッドの大きいＴＣＰ／ＩＰで送らなければならないため、同期コストが高い。そのため、ＮＦＳ（Network File System）などのネットワークファイルシステムではクライアント側のキャッシュとサーバの同期はある程度のずれが許容されており、それによってある程度の性能が出るようになっている。このように、同期レベルと性能はトレードオフ関係にある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述のように同期レベルと性能はトレードオフ関係にあるが、従来のストレージシステムはストレージノード間でどうやって同期レベルを制御するかがストレージシステムとして固定されている。従来のストレージシステムは、複数のストレージノードで仮想化するといってもせいぜい数１０ノードであり、同期レベルはある一定以上の厳しさに固定することができていたため、ユーザは特に意識することなく利用していた。ところが、クラウドコンピューティング環境のように、ノード数が数１００、数１０００と多く、地理的にも広がったストレージシステムになると、厳しい同期レベルを保証するコストは飛躍的に高くなる。そのような環境においては、同期レベルの制約を緩めることで高性能を求めるユーザが出てくるであろう。
【０００６】
しかしながら、現在は複数のストレージノードからなるストレージシステムの同期レベルの制御をユーザ側から設定したり制御したりする機構は存在しないため、たとえユーザがゆるい同期制約でよいから性能を上げたくても実現する手段は存在しない。
【０００７】
本発明の主な課題は、同期レベルの制御をユーザ側から設定・制御可能なストレージシステム、同期レベル管理装置、方法、及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１の視点においては、ネットワークを介してクライアントと通信可能に接続された複数のストレージノードを有するストレージシステムにおいて、前記ネットワークと通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理する同期レベル管理装置を備え、前記クライアントは、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う機能を有し、前記同期レベル管理装置は、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する機能を有することを特徴とする。
【０００９】
本発明の前記ストレージシステムにおいて、前記指定情報は、前記クライアントに係る識別情報を含み、前記同期レベル管理装置は、前記指定情報に基づいて、対応するデータにアクセスしている他のクライアントがいるか判断し、他のクライアントがいる場合に当該他のクライアントがどの同期レベルで接続しているか確認し、対応するデータにどの同期レベルが許されているかを確認する状態管理部と、前記指定情報、及び、前記状態管理部の確認結果に基づいて、前記クライアントが指定したデータに接続が可能かを判断する同期レベル調停部と、前記クライアントが指定したデータに接続が可能な場合に、前記指定情報に基づいて対応するデータのマスタノードを求めるマスタノード解決部と、前記マスタノード解決部で求めたマスタノード、及び、前記指定情報に基づいて、マスタノードから、同期レベルに対応するＴＡＴで到達できるストレージノード群を求め、前記ストレージノード群の中から前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答するトポロジー構成解決部と、を備え、前記状態管理部は、前記トポロジー構成解決部からストレージノードに係る情報を前記クライアントに回答した後、前記指定情報を保存することが好ましい。
【００１０】
本発明の前記ストレージシステムにおいて、前記同期レベル管理装置は、別のクライアントがアクセスしてきたときに、前記別のクライアントからの指定情報に基づいて、前記ストレージノードのアクセス権の設定を行うアクセス権設定部を備え、前記ストレージノードは、前記アクセス権設定部によりアクセス権の設定が行われ、設定されたアクセス権に基づいて、アクセス中のクライアントのアクセス先の変更もしくは更新を制限したり、アクセス先の変更もしくは更新をガイドしたりするアクセス権チェック部を備えることが好ましい。
【００１１】
本発明の第２の視点においては、同期レベル管理装置において、クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理し、前記クライアントからアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する機能を有することを特徴とする。
【００１２】
本発明の第３の視点においては、クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続された同期レベル管理装置を有するストレージシステムを用いて、各前記ストレージノードの同期レベルを管理する同期レベル管理方法であって、前記クライアントにおいて、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う工程と、前記同期レベル管理装置において、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する工程と、を含むことを特徴とする。
【００１３】
本発明の第４の視点においては、クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続される同期レベル管理装置にて、各前記ストレージノードの同期レベルの管理を実行させるプログラムであって、前記クライアントからアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断するステップと、前記ステップで判断されたストレージノードに係る情報を前記クライアントに回答するステップと、を含むことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、複数のストレージノードを有するグローバルネームスペースを持つストレージシステムに対して、それを利用するユーザは、クライアントから許容できる同期レベルを指定することにより、同期レベルに即した性能でアクセスすることができ、すなわち、同期レベルの制御をユーザ側から設定・制御が可能となり、従来よりも高性能でアクセスすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係るストレージシステムの構成を模式的に示したブロック図である。
【図２】本発明の実施例１に係るストレージシステムにおける同期レベル管理装置の構成を模式的に示したブロック図である。
【図３】本発明の実施例１に係るストレージシステムにおけるストレージノードの構成を模式的に示したブロック図である。
【図４】本発明の実施例１に係るストレージシステムで用いられるデータコンテナの構成を示した模式図である。
【図５】本発明の実施例１に係るストレージシステムにおける同期レベル管理装置のデータコンテナ接続処理を模式的に示したフローチャートである。
【図６】従来例に係るストレージシステムの構成を模式的に示したブロック図である。
【図７】従来例に係るストレージシステムにおけるＷＲＩＴＥ動作を説明するための模式図である。
【図８】従来例に係るストレージシステムにおけるライトスルー動作を説明するための模式図である。
【図９】従来例に係るストレージシステムにおけるライトバック動作を説明するための模式図である。
【図１０】従来例に係るストレージシステムの変形例におけるＷＲＩＴＥ動作を説明するための模式図である。
【発明を実施するための形態】
【００１６】
本発明の実施形態１に係るストレージシステムでは、ネットワーク（図１の４０）を介してクライアント（図１の３０ａ、３０ｂ）と通信可能に接続された複数のストレージノード（図１の２０ａ〜２０ｃ）を有するストレージシステム（図１の１）において、前記ネットワークと通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理する同期レベル管理装置（図１の１０）を備え、前記クライアント（例えば、図１の３０ａ）は、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う機能を有し、前記同期レベル管理装置は、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノード（例えば、図１の２０ａ）に係る情報を前記クライアントに回答する機能を有する。
【００１７】
本発明の実施形態２に係る同期レベル管理装置（図１の１０）では、クライアント（図１の３０ａ、３０ｂ）、及び、複数のストレージノード（図１の２０ａ〜２０ｃ）と通信可能に接続されたネットワーク（図１の４０）と通信可能に接続されるとともに、各前記ストレージノードの同期レベルを管理し、前記クライアント（例えば、図１の３０ａ）からアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノード（例えば、図１の２０ａ）に係る情報を前記クライアントに回答する機能を有する。
【００１８】
本発明の実施形態３に係る同期レベル管理方法では、クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続された同期レベル管理装置を有するストレージシステムを用いて、各前記ストレージノードの同期レベルを管理する同期レベル管理方法であって、前記クライアントにおいて、前記ストレージノードにアクセスする際に、アクセスしようとするデータ及び同期レベルを指定した指定情報を前記同期レベル管理装置に送信することにより、前記同期レベル管理装置に対してデータの要求を行う工程と、前記同期レベル管理装置において、前記クライアントからの前記指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断し、判断されたストレージノードに係る情報を前記クライアントに回答する工程と、を含む。
【００１９】
本発明の実施形態４に係るプログラムでは、クライアント、及び、複数のストレージノードと通信可能に接続されたネットワークと通信可能に接続される同期レベル管理装置にて、各前記ストレージノードの同期レベルの管理を実行させるプログラムであって、前記クライアントからアクセスしようとするデータ及び同期レベルを指定した指定情報を受けることにより、前記クライアントから最もアクセスに適したストレージノードを判断するステップと、前記ステップで判断されたストレージノードに係る情報を前記クライアントに回答するステップと、を含む。
【実施例１】
【００２０】
本発明の実施例１に係るストレージシステムについて図面を用いて説明する。図１は、本発明の実施例１に係るストレージシステムの構成を模式的に示したブロック図である。図２は、本発明の実施例１に係るストレージシステムにおける同期レベル管理装置の構成を模式的に示したブロック図である。図３は、本発明の実施例１に係るストレージシステムにおけるストレージノードの構成を模式的に示したブロック図である。図４は、本発明の実施例１に係るストレージシステムで用いられるデータコンテナの構成を示した模式図である。
【００２１】
図１を参照すると、実施例１に係るストレージシステム１は、データを格納する複数のストレージノード２０ａ〜２０ｃを有するシステムであり、ストレージシステム１全体の同期を制御する同期レベル管理装置１０が設けられている。ストレージシステム１は、同期レベル管理装置１０と、ストレージノード２０ａ〜２０ｃと、データアクセスクライアント３０ａ、３０ｂと、を有し、お互いがネットワーク４０を介して通信可能に接続されている。なお、データアクセスクライアント３０ａ、３０ｂにはユーザ端末２ａ、２ｂが通信可能に接続されている。
【００２２】
ここで、ストレージシステム１において用いられる情報の定義について説明する。図４を参照すると、データ５２ａ〜５２ｃは、ファイル、オブジェクト、ボリューム、仮想ディスク等である。データ５２ａ〜５２ｃは、ＩＤによりアクセスされる。このＩＤをデータＩＤ５１ａ〜５１ｃと呼ぶ。実施例１では、ユーザ端末２ａ、２ｂは、データＩＤ５１ａ〜５１ｃと同期レベルを同期レベル管理装置１０に問い合わせて、アクセスするストレージノード２０ａ〜２０ｃに係る情報を得る。アクセスするストレージノード２０ａ〜２０ｃに係る情報を得るのに、例えばファイルごとに行うのでは効率が悪い。また、同期レベル管理装置１０が性能上のボトルネックになることも考えられる。よって、データ５２ａ〜５２ｃはある程度の固まりで管理されていると考える。これは、ファイルシステムのボリュームやＬＵＮ（Logical Unit Number）の概念と同じである。実施例１では、このデータ５２ａ〜５２ｃの固まりをデータコンテナ５０と呼ぶ。データコンテナ５０を識別する名前をデータコンテナＩＤ６０と呼ぶ。データ５２ａ〜５２ｃにアクセスしようとするユーザ端末２は、まずデータコンテナＩＤ６０とデータＩＤ５１ａ〜５１ｃを事前に知っていなければならない。例えば、ファイルシステムであれば、ボリューム名がデータコンテナＩＤ６０に相当し、ファイル名がデータＩＤ５１ａ〜５１ｃに相当する。
【００２３】
同期レベル管理装置１０は、各ストレージノード２０ａ〜２０ｃの同期レベルを管理するコンピュータであり、ネットワーク４０に通信可能に接続されている（図１参照）。同期レベル管理装置１０は、所定のプログラムを実行することにより、マスタノード解決部１１と、トポロジー構成解決部１２と、状態管理部１３と、同期レベル調停部１４と、アクセス権設定部１５と、が実現される（図２参照）。
【００２４】
マスタノード解決部１１は、データコンテナＩＤ６０に基づいて、対応するデータコンテナＩＤ６０からデータコンテナ５０のマスタノードを解決する（求める）機能部である。
【００２５】
トポロジー構成解決部１２は、ストレージノード２０〜２０ｃ間のＴＡＴ（Turn Around Time）をデータベース化し、任意のストレージノード２０〜２０ｃからあるＴＡＴで到達できるストレージノード２０ａ〜２０ｃ群を返す（求める）機能部である。大規模かつ管理されないネットワークでは、ネットワーク座標のような方法がとられるが、ある程度管理された環境であれば、ストレージノード２０〜２０ｃ間のＴＡＴをそれぞれ計測し、データベース化することにより、本機能は実現可能である。トポロジー構成解決部１２は、ユーザ端末２ａ、２ｂに係る識別情報に基づいて、求めたストレージノード２０ａ〜２０ｃ群からユーザ端末（例えば、図１の２ａ）に最も近く、最もアクセスに適したストレージノード２０ａ〜２０ｃに係る情報をユーザ端末に回答する。
【００２６】
状態管理部１３は、現在のデータコンテナ５０への設定や接続状況を管理する機能部である。具体的には、状態管理部１３は、データコンテナ５０にどの同期レベルを許されているか、どのユーザ端末２ａ、２ｂがどの同期レベルでアクセスしているかを情報として保持する。状態管理部１３は、あるデータコンテナ５０に対して同期レベルを限定したい場合にも対応できるように、同期レベルの限定を管理している。状態管理部１３は、接続処理時にどの同期レベルが許されているかをチェックする際に用いられる。
【００２７】
同期レベル調停部１４は、複数のユーザ端末２ａ、２ｂから同じデータコンテナ５０に接続し、それぞれの同期レベルが異なる場合の調停を行う機能部である。同期レベル調停部１４は、ユーザ端末がデータコンテナ５０に接続が可能かを判断し、接続が可能でない場合にはエラー（接続が可能でない）の旨をユーザ端末２ａに回答する。
【００２８】
アクセス権設定部１５は、別のクライアントがアクセスしてきたときに、前記別のクライアントからの指定情報に基づいて、ストレージノード２０ａ〜２０ｃにおけるアクセス権チェック部（図３の２１）のアクセス権設定を行う機能部である。なお、アクセス権設定部１５の動作の詳細は、後述する。
【００２９】
ストレージノード２０ａ〜２０ｃは、データを格納する装置である。ストレージノード２０ａ〜２０ｃは、コンピュータ機能を有し、所定のプログラムを実行することによりアクセス権チェック部２１が実現される。アクセス権チェック部２１は、同期レベル管理装置１０のアクセス権設定部１５によりアクセス権の設定が行われ、設定されたアクセス権に基づいて、アクセス中のユーザ端末２ａ、２ｂのアクセス先の変更もしくは更新を制限したり、アクセス先の変更もしくは更新をガイドしたりする。アクセス権チェック部２１の動作の詳細は、後述する。ストレージノード２０ａ〜２０ｃは、データを格納する機能部としてストレージ部２２を有する。ストレージ部２２には、データコンテナ５０が格納されている。
【００３０】
ストレージノード２０ａ〜２０ｃは、データ（図４の５２ａ〜５２ｃ）をお互いにキャッシュしあうが、あるデータ５２ａ〜５２ｃを最終的に保持するストレージノード２０ａ〜２０ｃは１つに限定される。そのストレージノードを、データコンテナ５０のマスタノードと呼ぶ。マスタノードは、データコンテナ５０により異なってもよい。ストレージノード２０ａ〜２０ｃ間でマスタノードとなるデータコンテナ５０を分散させることにより、マスタノードの負荷を分散させることができる。また、マスタノードの負荷が偏る場合には、マスタノードを移動させることにより、ストレージシステム１全体として負荷を均等化することも可能となる。
【００３１】
データアクセスクライアント３０ａ、３０ｂは、ユーザ端末２ａ、２ｂからの要求に応じてストレージノード２０ａ〜２０ｃに格納されたデータにアクセスするクライアント側のコンピュータである。
【００３２】
ネットワーク４０は、同期レベル管理装置１０、ストレージノード２０ａ〜２０ｃ、データアクセスクライアント３０ａ、３０ｂの間を通信可能に接続する情報通信網である。
【００３３】
ユーザ端末２ａ、２ｂは、ユーザが使用するコンピュータ端末であり、データアクセスクライアント３０ａ、３０ｂと通信可能に接続されている。
【００３４】
次に、本発明の実施例１に係るストレージシステムにおけるデータコンテナ接続処理について図面を用いて説明する。図５は、本発明の実施例１に係るストレージシステムにおける同期レベル管理装置のデータコンテナ接続処理を模式的に示したフローチャートである。
【００３５】
データコンテナ接続処理にあたって、まず、ユーザは、ユーザ端末（例えば、図１の２ａ）を用いて、アクセスしようとするデータコンテナ５０に係るデータコンテナＩＤ６０と、同期レベルとを指定した指定情報をデータアクセスクライアント３０に送信することにより、データアクセスクライアント３０との接続を開始する。これは、ユーザがそのデータをどのように利用するのか、また変更する場合には、他にそのデータコンテナ５０に接続している他のユーザに対してどのように変更を反映させたいかによって異なる。次に、データアクセスクライアント３０は、ユーザ端末２ａからの指定情報（データコンテナＩＤ６０と同期レベルを含む）を同期レベル管理装置１０に送信することにより、同期レベル管理装置１０に対してデータコンテナ５０の要求を行う。なお、指定情報には、ユーザ端末２ａに係る識別情報（データアクセスクライアント３０ａに係る識別情報でも可）が含まれている。
【００３６】
同期レベル管理装置１０は、データアクセスクライアント３０からのデータコンテナ５０の要求を受ける（指定情報を受信する）と、まず、指定情報におけるデータコンテナＩＤ６０に基づいて、状態管理部１３を検索して、対応するデータコンテナ５０に接続している他のユーザ端末（例えば、図１の２ｂ）がいるか判断する（ステップＡ１）。データコンテナ５０に接続している他のユーザ端末がいない場合（ステップＡ１のＮＯ）、ステップＡ３に進む。
【００３７】
データコンテナ５０に接続している他のユーザ端末がいる場合（ステップＡ１のＹＥＳ）、同期レベル管理装置１０は、状態管理部１３を検索して、他のユーザ端末がどの同期レベルで接続しているか確認する（ステップＡ２）。
【００３８】
データコンテナ５０に接続している他のユーザ端末がいない場合（ステップＡ１のＮＯ）、又は、ステップＡ２の後、同期レベル管理装置１０は、状態管理部１３を検索して、データコンテナ５０にどの同期レベルが許されているかを確認する（ステップＡ３）。
【００３９】
ステップＡ３の後、同期レベル管理装置１０は、同期レベル調停部１４により、指定情報における同期レベル、及び、ステップＡ３の確認結果に基づいて、ユーザ端末がデータコンテナ５０に接続が可能かを判断する（ステップＡ４）。なお、ステップＡ４の詳細（同期レベル調停部１４の動作）は、後述する。接続が可能でない場合（ステップＡ４のＮＯ）、ステップＡ９に進む。
【００４０】
接続が可能な場合（ステップＡ４のＹＥＳ）、同期レベル管理装置１０は、マスタノード解決部１１により、指定情報におけるデータコンテナＩＤ６０に基づいて、対応するデータコンテナ５０のマスタノードを求める（ステップＡ５）。
【００４１】
ステップＡ５の後、同期レベル管理装置１０は、トポロジー構成解決部１２により、ステップＡ５で求めたマスタノード、及び、指定情報における同期レベルに基づいて、マスタノードから、同期レベルに対応するＴＡＴで到達できるストレージノード２０ａ〜２０ｃ群を求める（ステップＡ６）。
【００４２】
ステップＡ６の後、同期レベル管理装置１０は、トポロジー構成解決部１２により、ユーザ端末２ａに係る識別情報に基づいて、ステップＡ６で求めたストレージノード２０ａ〜２０ｃ群から、ユーザ端末（例えば、図１の２ａ、データアクセスクライアント３０ａ）に最も近く、最もアクセスに適した（最適な）ストレージノード（例えば、図１の２０ａ）を判断し、判断されたストレージノード２０ａに係る情報をユーザ端末２ａに回答する（ステップＡ７）。この後、ユーザ端末２ａにおいては、ストレージノード２ａに係る情報を受け取り、ストレージノード２ａにアクセスすることでデータコンテナ５０を読み出すことになる。
【００４３】
ステップＡ７の後、同期レベル管理装置１０は、指定情報における同期レベル、データコンテナＩＤ、ユーザ端末２ａの識別情報を状態管理部１３に保存し（ステップＡ８）、データコンテナ接続処理を終了する。これにより、他のデータコンテナ接続処理におけるステップＡ２で用いられることになる。
【００４４】
接続が可能でない場合（ステップＡ４のＮＯ）、同期レベル管理装置１０は、同期レベル調停部１４により、エラー（接続が可能でない）の旨、ユーザ端末２ａに回答し（ステップＡ９）、データコンテナ接続処理を終了する。
【００４５】
次に、本発明の実施例１に係るストレージシステムにおけるデータコンテナ切断処理について説明する。
【００４６】
データコンテナ切断処理にあたって、ユーザは、データコンテナ５０へのアクセスを終了する場合、ユーザ端末（例えば、図１の２ａ）を用いてデータコンテナ５０の切断をデータアクセスクライアント３０に指示（ユーザ端末２ａに係る識別情報が含む）する。データアクセスクライアント３０は、ユーザ端末２ａからの切断指示を受けると、同期レベル管理装置１０に切断を通知（ユーザ端末２ａに係る識別情報が含む）する。これは、後述する同期レベル調停のために、アクセスが終了したことを同期レベル管理装置１０において認識しておく必要があるためである。一度切断したユーザ端末２ａが再度同じデータコンテナ５０にアクセスする際には、データコンテナ接続処理からやり直さなければならない。同期レベル管理装置１０は、データアクセスクライアント３０からの切断通知を受けると、状態管理部１３からユーザ端末２ａのデータコンテナ５０への接続に関する情報（同期レベル、ユーザ端末２ａの識別情報）を削除する。
【００４７】
次に、本発明の実施例１に係るストレージシステムにおける同期レベル管理装置１０の同期レベル調停部の動作について詳細に説明する。
【００４８】
同一のデータコンテナ５０に複数のユーザ端末２がアクセスすることがありえる。その複数のユーザ端末２ａ、２ｂで、同期レベルに矛盾がないように調停する機能が必要となる。例えば、ユーザＡは最も高い同期レベルを求めており、常にマスタノードにアクセスし、他のユーザによる変更を即座に検知することを求めている。それに対してユーザＢはゆるい同期レベルだが高性能を求めており、ユーザＢに近いストレージノード（例えば、２０Ｂ）でアクセスしようとしている。この状況では、ユーザＢがデータを変更した場合、キャッシュノードが更新されてからマスタノードに更新が伝搬する時間がかかるため、ユーザＡの求める同期レベルが保たれないことになってしまう。このようなケースを調停するのが同期レベル調停部１４である。
【００４９】
同期レベル調停部１４の基本ポリシーとしては、先に接続要求してきたユーザ端末のアクセス先をできるだけ変更しないようにする。つまり、前述の例の場合、ユーザＡとユーザＢのどちらが先に同期レベル管理装置１０に接続要求をしてきたかによって、動作が異なる。
【００５０】
ユーザＡが先に接続要求をしてきた場合、高い同期レベルが設定される。後に接続要求をしてきたユーザＢには、すでに高い同期レベルが設定されているので、ユーザＢに近いストレージノード２０ではなく、マスタノードに係る情報を回答する。これにより、ユーザＢのアクセス性能は低下してしまうことになる。
【００５１】
逆に、ユーザＢが先に接続要求をしてきた場合、ユーザＢに近いストレージノード２０をユーザＢに回答する。後に接続要求をしてきたユーザＡに対しては、すでにユーザＢがゆるい同期レベルで接続しているので、高い同期は実現できない。よってエラーを回答する。もし、ユーザＡが同期レベルをゆるめることができるのであれば、エラーを受けて同期レベルをゆるくして再度接続要求を行い、もしその同期レベルがユーザＢの同期レベルと整合がとれるようであれば、その同期レベルに応じたストレージノードに係る情報を回答する。
【００５２】
このように、基本的には先に接続要求をしてきたユーザ端末により同期レベルが決まるため、それより高い同期レベルの接続要求してきた後のユーザ端にはエラーが返り、それより低い同期レベルであれば先に決まった同期レベルに揃えられる。
【００５３】
別のポリシーとして、単純に先に来た接続要求で同期レベルが決まるのではなく、優先度により調停する方法もありえる。前述の例でユーザＢが先に接続要求をしてゆるい同期レベルで決まった後にユーザＡからの接続要求が来たとする。前述の基本ポリシーではエラーが返るが、ここでユーザＡの優先度がユーザＢよりも高い場合、ユーザＡの接続要求を優先して同期レベルを変更し、ユーザＡにはマスタノードを回答し、ユーザＢに対してはアクセス先の変更もしくは更新を不可にする。この機能を実現するのが、同期レベル管理装置１０のアクセス権設定部１５、及びストレージノード２０のアクセス権チェック部２１である。アクセス権設定部１５は、ユーザＢ（ユーザ端末２ｂ）がアクセスしているストレージノード（例えば２０ｂ）のアクセス権チェック部２１に対して、ユーザＢのアクセス先の変更もしくは更新負荷の設定を通知する。その後、ユーザＢがこのストレージノード２０ｂにアクセスすると、アクセス権チェック部２１からアクセス先を別のストレージノード（例えば２０ｃ；この場合はマスタノードとなる）に変更せよとの応答を受け、ユーザＢのデータアクセスクライアント３０ｂはアクセス先を変更する（この場合はマスタノードに変更する）。更新不可の場合は、ユーザＢが更新しようとすると、アクセス権チェック部２１からアクセス権がないとのエラー応答を受ける。これにより、ユーザＡ（ユーザ端末２ａ）は希望の同期レベルでアクセスができる。優先度の低いユーザＢのアクセスは、性能が低下するか、更新が不可になる。
【００５４】
次に、従来例に係るストレージシステムと対比しながら、本発明の実施例１に係るストレージシステムの作用効果について説明する。図６は、従来例に係るストレージシステムの構成を模式的に示したブロック図である。図７は、従来例に係るストレージシステムにおけるＷＲＩＴＥ動作を説明するための模式図である。図８は、従来例に係るストレージシステムにおけるライトスルー動作を説明するための模式図である。図９は、従来例に係るストレージシステムにおけるライトバック動作を説明するための模式図である。図１０は、従来例に係るストレージシステムの変形例におけるＷＲＩＴＥ動作を説明するための模式図である。
【００５５】
図６を参照すると、従来の一般的なストレージシステム１０１は、複数のストレージノード１２０を有し、グローバルネームスペースを構成している。各ストレージノード１２０は、自己が持っていないデータへのユーザ端末１０２からのＲＥＡＤリクエストを受けると別のストレージノード１２０にＲＥＡＤリクエストを転送する。転送するストレージノード１２０は、定められた方法で別のストレージノード１２０にＲＥＡＤリクエストの応答（ＲＥＡＤリプライ）を求める。ストレージノード１２０は、ＲＥＡＤリプライでデータを受信すると、最初に受けたＲＥＡＤリクエストの応答を返すと共に、設定に応じて自己のノードのストレージ部にも保存する。これが、いわゆるキャッシュ動作である。
【００５６】
もしＲＥＡＤしか行われないシステムであれば、アクセスされるごとにデータのコピーがキャッシュされていき、特に同期の制御は必要がない。問題が起こるのはＷＲＩＴＥが発生する場合である。図７を参照すると、ストレージノードＡに対してデータＸへのＷＲＩＴＥリクエストがあり、値がＰからＱに変更されるとする。この場合、ストレージノードＡの動作は従来手法としてライトスルー（Write Through）とライトバック（Write Back）の２つがある。
【００５７】
ライトスルー動作は、図８のようになる。すなわち、ストレージノードＡの持つデータＸ（値Ｐ）は無効とされ（Invalidate）、新たな値ＱがストレージノードＡからストレージノードＢにＷＲＩＴＥリクエストが転送される。ストレージノードＢもライトスルー動作をして、ストレージノードＢからストレージノードＣにＷＲＩＴＥリクエストが転送される。ストレージノードＣは、転送するノードを持たないので、自らのデータＸをＱに変更し、ＷＲＩＴＥリプライをストレージノードＢへ返し、それを受けたストレージノードＢはＷＲＩＴＥリプライをストレージノードＡに返し、それを受けたストレージノードＡはクライアントＡに対してＷＲＩＴＥ応答を返す。ライトスルーは、このように多段でリクエストが転送され、応答が返ってくるため、遅延は段数に応じて長くなり、性能は低下する。ただし、最終的にデータを持つストレージノードＣまで変更が反映されてから応答を返しているため、同期レベルは高い。なお、ストレージノードＣはマスタノードとなる。
【００５８】
一方、ライトバック動作は、図９のようになる。すなわち、ストレージノードＡの持つデータＸが値Ｑに変更された時点でクライアントＡにリプライを返してしまう。その後、非同期にストレージノードＡからストレージノードＢにＷＲＩＴＥリクエストが転送される。この際に、複数のＷＲＩＴＥリクエストをまとめて転送することで、より性能を高める工夫ができる。ストレージノードＢは、自己のデータを変更し、また非同期にストレージノードＣにＷＲＩＴＥリクエストを転送する。このようにライトバックは、ライトスルーのように段数が多くなってもレイテンシ（遅延時間）が長くならないため高性能である。ただし、ストレージノードＢやストレージノードＣに変更が反映される前に応答を返してしまうため、同期レベルは低いと言える。
【００５９】
ここまでは、クライアントＡからストレージノードＡ〜Ｃの経路のみを考えていた。しかし、構成はこれだけでは十分ではない。例えば、図１０のように、ストレージノードＣからさらにデータをキャッシュするストレージノードＤと、ストレージノードＥと、ストレージノードＥに接続するクライアントＥと、があるとする。すると、たとえライトスルーで更新をストレージノードＣに反映させたとしても、ストレージノードＤ、ストレージノードＥがデータＸを保持していたら反映はされない。クライアントＥは、クライアントＡがデータを変更した後にＲＥＡＤしても古い値Ｐが読めることになる。この問題を防ぐための方法として、キャッシュ有効期限が設定される。キャッシュ有効期限の設定とは、キャッシュに有効期限を設定し、それを過ぎたらキャッシュを無効とし、元ストレージノードへＲＥＡＤしにいくものである。この方式を用いると、ストレージノードＤ、ストレージノードＥのキャッシュ有効期限が過ぎて無効になった後には、クライアントＥがＲＥＡＤリクエストすると新たな値Ｑが読める。
【００６０】
このように、複数のストレージノード１２０によるストレージシステム１０１は同期をとることできる。しかし、どの方法をとるかはどのストレージシステム１０１を選ぶかでほとんど決まってしまい、多少のチューニングができる程度であった。また、ファイルシステムのマウントオプションにはＯ＿ＳＹＮＣのようにライトスルー動作を強制するものがあるが、制御対象はクライアントが持つキャッシュのみであり、ストレージノード側は制御対象となっていない。そのため、ユーザはストレージシステム１０１を選ぶ前に同期要件を決めなければならず、後でより高い同期が必要となった場合に対応できないリスクを考えると、必然的に高い同期のストレージシステム１０１を選択せざるをえない。高い同期要件を求めるほど、より性能が低くなる。
【００６１】
一方、実施例１では、ユーザはどのような同期要件にするか、ストレージシステム１を選択するときではなく、使用する際に決めることができる。そのため、必要以上に高い同期制御をせずにすみ、より高性能を得ることができる。もし、後でより高い同期が必要になったとしたら、その時点で同期要件を変えればよく、ストレージシステム１自体を変える必要はない。
【００６２】
実施例１によれば、複数ノードからなりグローバルネームスペースを持つストレージノードに対して、それを利用するユーザは、許容できる同期レベルを指定することにより、従来よりも高性能でアクセスすることができる。
【符号の説明】
【００６３】
１、１０１  ストレージシステム
２ａ、２ｂ、１０２  ユーザ端末
１０  同期レベル管理装置
１１  マスタノード解決部
１２  トポロジー構成解決部
１３  状態管理部
１４  同期レベル調停部
１５  アクセス権設定部
２０、２０ａ、２０ｂ、１２０  ストレージノード
２１  アクセス権チェック部
２２  ストレージ部
３０、３０ａ、３０ｂ  データアクセスクライアント（クライアント）
４０  ネットワーク
５０  データコンテナ
５１ａ、５１ｂ、５１ｃ  データＩＤ
５２ａ、５２ｂ、５２ｃ  データ
６０  データコンテナＩＤ
【図１】
2011123596.tif 000003
【図２】
2011123596.tif 000004
【図３】
2011123596.tif 000005
【図４】
2011123596.tif 000006
【図５】
2011123596.tif 000007
【図６】
2011123596.tif 000008
【図７】
2011123596.tif 000009
【図８】
2011123596.tif 000010
【図９】
2011123596.tif 000011
【図１０】
2011123596.tif 000012