(57)【要約】【課題】  ネットワーク基盤を有するクラスタストレージシステムに適用する、クライアントとオブジェクトを格納しているストレージ間の情報網距離最適化技術を提供する。【解決手段】  少なくとも2台以上のストレージノードとネットワークとから構成されるストレージシステムであり、ストレージノードは他のストレージノード及びネットワークに接続されるクライアントとの情報網距離を測定する手段を有する。このストレージシステムにおいてクライアントが接続されたとき、クライアントが必要とするオブジェクトのクエリを用いて検索することで、各ストレージノード内に格納されクエリと適合度の高いオブジェクトを抽出し、ストレージノードの情報網距離測定手段によりクライアントから近いと判断するストレージノードに抽出したオブジェクトを集約する。【選択図】  図5
2009151403.tif 000002
【特許請求の範囲】
【請求項１】
クライアントが接続可能なネットワークと、前記ネットワークに接続された複数のストレージノードとを備えたクラスタストレージシステムの運用方法において、
前記複数のストレージノードは、クライアントのストレージシステムへの接続を検出したときに、情報網距離プログラムを用いて、当該クライアントとの情報網距離の測定を行い、
前記複数のストレージノードは、前記測定の結果を互いに送受信し、所定の条件に従い前記クライアントに近いストレージノードにニアノードであることを登録し、残りのストレージノードにファーノードであることを登録し、
前記ファーノードは、情報網距離プログラムを用いて、自ストレージノードを除く他のストレージノードとの情報網距離の測定を行い、それぞれの自ストレージノードに最も近いニアノードを自身に記憶し、
前記クライアントは、オブジェクトの特徴メタデータを前記ストレージノードに通知し、
前記ファーノードは、クライアントから通知されたオブジェクトの特徴メタデータに基づき自身のデータベースエンジンを用いて自ストレージノード内のオブジェクトを検索し、前記記憶したニアノードのストレージノードに、前記検索したオブジェクトを送信することを特徴とするクラスタストレージの運用方法。
【請求項２】
請求項１において、
前記複数のストレージノードは、前記送受信した互いの測定結果を比較し、自身とクライアントとの情報網距離が小さいほうから所定の数以内であったときに、ニアノードであることを登録することを特徴とするクラスタストレージシステムの運用方法。
【請求項３】
請求項１において、
前記ニアノードに送信されたデータは、当該データが格納されていたファーノードを示す情報を有しており、
前記データを受信した前記ニアノードは、前記クライアントが前記ネットワークから切断されたことを検知すると、前記データが有する情報が示す前記ファーノードへ前記データを送信することを特徴とするクラスタストレージシステムの運用方法。
【請求項４】
請求項１において、
前記複数のストレージノードは、前記互いに送受信した測定結果から自身が前記クライアントに最も近いストレージノードである場合には、前記クライアントに通知し、
前記クライアントは、前記通知を受信し、新規データを作成した場合には当該新規データを前記通知を送信したクラスタノードに格納することを特徴とするクラスタストレージシステムの運用方法。
【請求項５】
請求項１において、
前記複数のクラスタストレージは、互いに容量負荷の情報を送受信し、容量負荷表を作成し、
前記容量負荷表に記載された容量負荷が最も小さいストレージノードは、前記クライアントに通知し、
前記クライアントは、前記通知を受信し、新規データを作成した場合には当該新規データを前記通知を送信したクラスタノードに格納することを特徴とするクラスタストレージシステムの運用方法。
【請求項６】
請求項１において、
前記ニアノードは、クライアントから通知されたオブジェクトの特徴メタデータに基づき自身のデータベースエンジンを用いて自ストレージノード内のオブジェクトを検索し、
前記ファーノードから前記オブジェクトを受信したときに、前記検索したオブジェクト以外のオブジェクトを前記ファーノードに送信することを特徴とするクラスタストレージシステムの運用方法。
【請求項７】
請求項１において、
前記複数のストレージノードは、クライアントのストレージシステムへの接続を検出ていないときに、他のストレージノードから前記情報プログラムによる情報網距離測定を受けた場合に、自身をアローンノードであることを登録し、
前記アローンノードは、情報網距離プログラムを用いて、自ストレージノードを除く他のストレージノードとの情報網距離の測定を行い、自ストレージノードに最も近いニアノードを自身に記憶し、
前記アローンノードは、クライアントから通知されたオブジェクトの特徴メタデータに基づき自身のデータベースエンジンを用いて自ストレージノード内のオブジェクトを検索し、前記記憶したニアノードのストレージノードに、前記検索したオブジェクトを送信することを特徴とするクラスタストレージの運用方法。
【請求項８】
請求項７において、
前記アローンノードは、前記情報網距離プログラムを用いて、自ストレージノードを除く他のストレージノードとの情報網距離の測定を行ったときに前記ニアノードが見つからない場合には、前記前記ファーノードに仲介依頼信号を送信し、
前記仲介依頼信号を受信したファーノードは、前記特徴メタデータを前記アローンノードに転送し、
前記特徴メタデータを受信したアローンノードは、自ストレージノード内のオブジェクトを検索し、前記仲介依頼信号の送信先のファーノードのストレージノードに、前記検索したオブジェクトを送信し、
前記オブジェクトを受信したファーノードは、前記記憶したニアノードのストレージノードに、前記アローンノードから受信したオブジェクトを送信することを特徴とするクラスタストレージの運用方法。
【請求項９】
オブジェクトを格納するストレージ手段と、
前記ストレージに格納されたオブジェクトを特徴メタデータに基づき検索する検索手段と、
ネットワーク接続するためのネットワークインターフェースと、
クライアントの前記ネットワークへの接続の有無を検出するクライアント検出手段と、
ネットワーク上のクライアントまたは他のストレージノードとの情報網距離を測定する情報網距離測定手段とを備えたストレージノードであって、
当該ストレージノードが接続しているネットワークにクライアントが接続されたことを検出すると、前記クライアントとの距離を測定し、
前記測定した結果を前記ネットワークに接続された他のストレージノードと送受信し、所定の条件に従い自身をニアノードまたはファーノードとして登録し、
前記ファーノードとして登録した場合には、他のストレージノードとの情報網距離を測定し、測定の結果に基づいてニアノードを選択して記憶し、
前記クライアントから受信した特徴メタデータに基づいて自身の前記ストレージ手段内のオブジェクトを検索し、
前記検索したオブジェクトを前記記憶したニアノードに送信することを特徴とするストレージノード。
【請求項１０】
請求項９において、
前記測定結果を送受信したストレージノードのうち、前記クライアントから情報網距離が近いほうから所定の順位以内であるときに、自身をニアノードとして登録し、
前記所定の順位をこえていた場合には、自身をファーノードとして登録することを特徴とするストレージノード。
【請求項１１】
請求項９において、
前記ニアノードとして登録した場合には、ファーノードから送信されたオブジェクトを受信し、前記ストレージ手段内に格納し、
前記クライアントが前記ネットワークから離れたことを検出すると、格納中の前記オブジェクトの更新の有無に基づいて、前記オブジェクトを前記ファーノードに返送するまたは破棄することを特徴とするストレージノード。
【請求項１２】
請求項１０において、
前記測定結果を送受信したストレージノードのうち、前記クライアントから情報網距離が最も近い場合に、新規オブジェクトを自ストレージノードに送信するように前記クライアントに通知することを特徴とするストレージノード。
【請求項１３】
請求項１０において、
ニアノードとして登録した場合に、他のニアノードと容量負荷を送受信して容量負荷表を作成し、
前記容量負荷が最も小さいニアノードであった場合に、新規オブジェクトを自ストレージノードに送信するように前記クライアントに通知することを特徴とするストレージノード。
【請求項１４】
請求項９において、
前記ファーノードとして登録した場合には、
前記クライアントから受信した特徴メタデータに基づいて自身の前記ストレージ手段内のオブジェクトを検索し、
オブジェクトをファーノードから受信したときに、前記検索に基づいてオブジェクトを選択し、前記受信したオブジェクトの送信元のファーノードへ、前記選択したオブジェクトを送信することを特徴とするストレージノード。
【請求項１５】
請求項９において、
前記クライアントのネットワークへの接続を検出せずに、ファーノードが情報網距離測定をする信号を検出した場合には、
自身をアローンノードとして登録し、
他のストレージノードとの情報網距離を測定し、測定の結果に基づいてニアノードを選択して記憶し、
受信した特徴メタデータに基づいて自身の前記ストレージ手段内のオブジェクトを検索し、
前記検索したオブジェクトを前記記憶したニアノードに送信することを特徴とするストレージノード。
【請求項１６】
請求項１５において、
他のストレージとの情報網距離を測定し、測定対象となるニアノードが検出できないときには、
受信した特徴メタデータに基づいて自身の前記ストレージ手段内のオブジェクトを検索し、
ファーノードに、前記検索したオブジェクト及び当該オブジェクトをニアノードに転送するように依頼する仲介依頼信号を、ファーノードに送信することを特徴とするストレージノード。
【請求項１７】
クライアントが接続可能なネットワークと、前記ネットワークに接続された複数のストレージノードとを備え、
前記複数のストレージノードは、
オブジェクトを格納するストレージ手段と、
前記ストレージに格納されたオブジェクトを特徴メタデータに基づき検索する検索手段と、
ネットワーク接続するためのネットワークインターフェースと、
クライアントの前記ネットワークへの接続の有無を検出するクライアント検出手段と、
ネットワーク上のクライアントまたは他のストレージノードとの情報網距離を測定する情報網距離測定手段とを、それぞれ有するクラスタストレージシステムにおいて、
クライアントの前記ネットワークへの接続を検出したときに、前記複数のストレージノードは、情報網距離プログラムを用いて、当該クライアントとの情報網距離の測定を行い、
前記複数のストレージノードは、前記測定の結果を互いに送受信し、所定の条件に従い前記クライアントに近いストレージノードにニアノードであることを登録し、残りのストレージノードにファーノードであることを登録し、
前記ファーノードは、情報網距離測定プログラムを用いて、他のストレージノードとの情報網距離の測定を行い、それぞれの自ストレージノードに最も近いニアノードを自身に記憶し、
前記ストレージノードは、オブジェクトの特徴メタデータを受信し、
前記ファーノードは、前記オブジェクトの特徴メタデータに基づき自身のデータベースエンジンを用いて自ストレージノード内のオブジェクトを検索し、前記記憶したニアノードのストレージノードに、前記検索したオブジェクトを送信することを特徴とするクラスタストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
クラスタストレージシステムにおいて、アクセス性能を向上させる技術に関する。
【背景技術】
【０００２】
近年、情報の電子化が進むにつれ電子化情報の蓄積量が爆発的に増大しつつある。これに伴って情報管理コストの増加が今後益々大きな問題となってくることが予想される。かような状況下で、情報の管理コストを抑制するため、ネットワーク接続機能を有するストレージノードによって、情報の管理を一元化するNetwork Attached Storage(NAS)やStorage Area Network(SAN)といったストレージシステムが広く普及している。
【０００３】
これらのNASやSANのようなネットワークストレージの運用方法として、クライアントの移動に伴いクライアントが作成した全てのデータを別の高速アクセス可能なサーバに移動させ、クライアントとストレージサーバ間のデータアクセスを最適化する技術が開示されている（例えば特許文献１の従来技術参照）。
【０００４】
【特許文献１】特開2003-140930号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１では、クライアントが有する全てのデータの転送という大規模なデータ転送に耐えうるネットワーク基盤を有することとクライアントの移動頻度が比較的低いことの2点を仮定している。すなわち特許文献１に記載の発明を実施するためにはネットワーク基盤の設備に経済的コストを必要である。また、クラスタストレージシステムが十分負荷に耐えうるネットワーク基盤を有していてもクライアントの移動が比較的多い民生のクラスタストレージシステムへの適用においては効果を得られないという問題を有している。
【０００６】
本発明は、データ転送速度の高くないネットワークを使用する場合でも、クライアントの移動頻度が比較的多い場合でも適用できるストレージノード、クラスタストレージシステム及びその運用方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
従来技術の課題を解決するため、本発明は必要なオブジェクトをn (nは2以上の整数)台のストレージノードに分散して配置し、クライアント接続時にクライアントから十分近い範囲にあるm台(mは１以上かつn≧m)を満たす整数)ストレージノードに集約する。具体的には以下の(1)のクラスタストレージシステムと(2)の運用方法を利用する。
【０００８】
(1) クラスタストレージシステム。
管理ホストとn台のストレージノードによって構成される、クラスタストレージシステム。該管理ホストは前記オブジェクトを特徴付けるメタデータと前記オブジェクトとの関連付け情報を保持及びメタデータによりオブジェクトを検索する関連付け手段を有し、前記ストレージノードはオブジェクトを格納する情報格納手段と、クライアントから受け付けた検索条件を関連付け手段に入力するとともに、前記オブジェクトを前記クライアントに出力または前記クライアントから受領する入出力手段と、他のノードとの情報網距離を測定する情報網距離測定手段を有する。
【０００９】
(2) オブジェクトをクライアントから近い位置に集約するクラスタストレージ運用方法。
該ストレージノードが、クライアントから検索条件を受け付けたとき、該検索条件に合致する自ストレージノード内のオブジェクトを該関連付け手段を用いて検索し、該検索の結果と前記距離情報管理手段の管理する情報に基づいて、自ストレージノードに格納されたオブジェクトを他のストレージノードに転送するクラスタストレージ運用方法。
【００１０】
(1)に示したクラスタストレージシステムを(2)に示した方法で運用することで、従来手法に比べ安価なネットワーク基盤においてもクライアントから情報網距離の観点において近いストレージノードにオブジェクトを集約し、クラスタストレージシステムの性能を向上させることができる。
【発明の効果】
【００１１】
本発明によれば、適用するクラスタストレージシステムのネットワーク基盤が安価な場合でも、またクライアントが頻繁に移動する場合でも、クライアントが必要とするオブジェクトをあらかじめクライアントから高速にアクセスできるストレージノードに集約することで高速なオブジェクトアクセスを実現する。また特に本発明は、ネットワーク通信速度が比較的変わりやすく、信頼性が比較的低い無線ネットワーク基盤を用いたクラスタストレージシステムへの適用に特に適している。
【発明を実施するための最良の形態】
【００１２】
本発明によるクラスタストレージシステムの構成及び動作例を以下詳細に説明する。なお、本明細書において同じ参照番号が割り当てられた構成要素はすべて同じ構成要素である。
【実施例１】
【００１３】
図1は本発明によるクラスタストレージシステム100の構成の一例である。
図1において、クラスタストレージシステム100は101はクライアント、103はストレージノード、105はネットワーク、107はオブジェクトである。クライアント101はネットワーク105に対して着脱可能であり、図1ではクライアント101はネットワーク105から切り離された状態となっている。また、ネットワーク105に接続された各ストレージノード103は全て、クライアント101のオブジェクト107へのアクセスを許可しているものとする。この許可方法は、クライアント101もしくはストレージノード103の機器識別子をストレージノード103が有するデータベースエンジン353(図３)に登録することによるホワイトリスト認証を用いても良いし、ネットワーク105を占有しネットワーク105に接続された全ての機器は自由に利用できるようにした構成でもよい。ネットワーク105の横線はネットワーク基盤を示し、縦線はクライアント101およびストレージノード103からネットワーク基盤までの経路を表す。また、経路の長さはクライアント101におけるその経路の情報網距離を示している。
【００１４】
ここで情報網距離について説明する。情報網距離dは、オブジェクト取得の速度を示す尺度として、レイテンシlと伝送路の伝送速度b及び平均オブジェクトサイズmを用いてd=l+m/bと定義したものである。厳密にはレイテンシlと伝送速度bは独立の関係ではないが、ここではレイテンシlへの伝送速度bの影響は十分小さいと仮定している。平均利用オブジェクトサイズmとはクライアントがオブジェクトを利用するのに必要なオブジェクトサイズを表す尺度である。平均利用オブジェクトサイズはクライアントが一般的に利用するオブジェクトの性質とオブジェクトサイズによって決定される値であり、クライアントの性質により決まる値とする。この情報網距離dが小さければ小さいほどストレージノードにアクセス要求を行ってからクライアントが実際に処理を開始できるまでの時間が短いことを示す。つまりストレージシステムの運用において、クライアントとオブジェクトを格納しているストレージまでの情報網距離dが小さいことが望ましい。オブジェクトには大きく分けてブロック型オブジェクトとストリーム型オブジェクトの2種類がある。ブロック型オブジェクトはテキストファイルやプログラムで、オブジェクトの先頭から末尾までクライアントが保持することで利用可能なオブジェクトである。一方、ストリーム型オブジェクトは音声や動画ファイルである。ストリーム型オブジェクトはエンコードに必要なオブジェクトの一部分だけクライアントが保持することで利用可能なオブジェクトである。これらのオブジェクトの性質から一般にブロック型オブジェクト平均オブジェクトサイズが大きく、一方ストリーム型オブジェクトの平均オブジェクトサイズは十分小さい。情報網距離は平均オブジェクトサイズが大きい場合は伝送速度bに支配され、逆に十分小さい場合はレイテンシlに支配される。つまり情報網距離はクライアントが利用するオブジェクトの性質の違いを吸収した総合的なオブジェクトの取得しやすさを表す尺度といえる。オブジェクトの取得において重要な情報網距離は、経路障害やストレージノードの負荷、処理能力などの視覚的に観測不可能な要因により変化する。このため、単純な物理的直線距離において近い・遠いというだけではオブジェクトの取得しやすさを評価できない。
以降、本明細書においてネットワーク構成を図示する場合に、この情報網距離に基づいた表記を用いることとし、近い・遠いといった距離の尺度も情報網距離に基づいて評価する。実際の運用において、この情報網距離に基づいて各クライアントがアクセスするオブジェクトを格納するストレージまでのをなるべく短く運用しなければ見かけのクライアントの処理が遅くなったり、この見かけの処理時間を短縮するためにクライアントのデータ処理能力を高める必要が生じる結果経済的な損失が発生する。
【００１５】
クライアント101はオブジェクト107を新規作成または再生または編集する機器であり、具体的にはパーソナルコンピュータや音楽再生機能つき携帯電話、デジタルカメラなどである。ストレージノード103はクライアント101が作成したオブジェクト107及びメタデータを蓄積する装置である。このメタデータとはオブジェクト107の特徴を表すデータである。たとえばオブジェクト名や作成時間であり、GPSなどの高性能なメタデータ管理機能を有するクライアント101では位置情報などもメタデータとして抽出する。
【００１６】
図2はクライアント101の構成の一例である。クライアント101はユーザインターフェース201とMPU 203とメモリ205とネットワークインターフェース207から構成される。ユーザインターフェース201は、ディスプレイなどの出力装置211とキーボードなどの入力装置213から構成され、利用者にオブジェクト107を出力したり、利用者が命令を入力するためのインターフェースである。MPU 203はメモリ205に格納されているプログラムを実行、処理するための装置である。クライアント101においてMPU203はオブジェクト処理プログラム251を実行することで画像や動画データなどのオブジェクト107の再生や編集を行い、メタデータ管理プログラム253を実行することでオブジェクト107のメタデータの抽出及び管理を行う。ネットワークインターフェース207はネットワーク105に接続されたストレージノード103とオブジェクト107やそのメタデータをやり取りするためのインターフェースである。クライアント101の動作例を説明する。まず、クライアント101はネットワークインターフェース207を用いてストレージノード103からオブジェクト107を取得、もしくはユーザインターフェース201とオブジェクト処理プログラム251を利用してオブジェクト107を新規作成する。次に取得したオブジェクト107をオブジェクト処理プログラム253とユーザインターフェース201を用いて再生または編集する。その後、メタデータ管理プログラム253を用いてメタデータを付与し、ネットワークインターフェース207を用いてネットワーク接続された外部ストレージノード103にオブジェクト107及びそのメタデータを送信してクライアント101の動作は終了する。
【００１７】
図3はストレージノード103の構成の一例である。本実施例では管理ホスト(図示せず)を置かず、オブジェクト107およびそのメタデータの管理はストレージノード103で行うものとして構成例を示す。ストレージノード103はMPU 203とメモリ205とネットワークインターフェース207とストレージ301から構成される。MPU 203はメモリ 205に格納された情報網距離測定プログラム351を用いてクライアント101及び他のストレージノード103との経路間の情報網距離の測定を行ったり、メモリ205に格納されたファイルシステム352を用いてストレージ301内のオブジェクト格納部 311に格納されたオブジェクト107を管理している。さらにメモリ205に格納されたデータベースエンジン353を用いてストレージ301内のメタデータ格納部 313に格納されたメタデータの管理や、数値データ順位付けプログラム354を用いて情報網距離などの数値データの順位付けを行う。ストレージノード103の動作例を説明する。ストレージノード103の動作はクライアント101からの要求が格納要求か受信要求かによって大きく異なる。格納要求の場合は、クライアント101からオブジェクト107とそのメタデータがストレージノード103に送信される。ファイルシステム352を用いて受信したオブジェクト107をオブジェクト格納部311に格納し、データベースエンジン353を用いて受信したメタデータをメタデータ格納部313に格納して一連の動作を終了する。一方受信要求の場合、クライアント107からクエリと出力先情報がストレージノード103に送信される。このクエリとはオブジェクト107を特定するメタデータである。ストレージノード103はデータベースエンジン353に受信したクエリを入力することで必要なオブジェクト107及び付随するメタデータを検索する。その後、オブジェクト107及び付随するメタデータをネットワークインターフェース207を用いて出力先情報により指定されたクライアント101あるいは他のストレージノード103に送信する。
【００１８】
本実施例以外の様態においては情報網距離測定プログラム351を用いた情報網距離測定・管理機能やファイルシステム352を用いたオブジェクト107へのアクセス機能をクライアント101もしくは管理ホストなどに与えても良い。これらのストレージノード103以外がこれらの機能を保持する様態においては、クライアント101は管理ホストにクエリを送信し、クライアント101のファイルシステム352によりクライアント101がストレージノード103に格納されたオブジェクト107に直接アクセスするなどの手段を取る。しかしながらストレージノード103に対するオブジェクト107取得手段が異なったとしても、結局クライアント101はネットワーク105を通じてストレージノード103からオブジェクト107を取得することに変わりは無い。したがって、クライアント101からオブジェクト107を保持するストレージノード103までの情報網距離が短くオブジェクトに高速にアクセスできることが望ましい。
【００１９】
以降、本発明で実現される、クライアント101から情報網距離が短いストレージノード103に目的のオブジェクト107をあらかじめ移動しておく方法について説明する。
【００２０】
本発明の特徴は、クライアント101接続時にストレージノード103を情報網距離の観点においてクライアント101に近いか遠いか判断し、クライアント101に近いストレージノード103の利用率を向上させることで、ストレージシステム100全体の性能を向上させることにある。以降、クライアント101に近いストレージノード103をニアノード103a、それ以外のノードをファーノード103bと呼ぶ。図1の状態からクライアント101がネットワーク105に接続し、クラスタストレージシステム100に参加した状態を図4に示す。クライアント101がクラスタストレージシステム100に参加したとき、以下の手順でニアノード103a及びファーノード103bの選出が行われる。ここで、ニアノード103aはn(nは2以上の整数)台のストレージノード103のうちクライアント101から近い位置にあるm(mは1以上かつn≧mを満たす整数)台と定義し、ファーノード103bはクラスタストレージシステム100内においてニアノード103a以外の(n-m)台のストレージノード103と定義する。本実施例ではn=5,m=2として動作を説明する。
【００２１】
クライアント101がネットワーク105に接続したとき、クライアント101から近い範囲401にあるストレージノード103がニアノード103a、それ以外のストレージノード103がファーノード103bとなる。その後、各ファーノード103bは自身から最も近いニアノード103aを特定する。ニアノード103a選出方法を詳細に説明する。クライアント101がネットワーク105に接続したときクライアントはネットワークへの接続信号403を全てのストレージノード103に送信する。この接続信号403にはクライアント101の識別子とクライアント101のネットワーク105上におけるアドレスが含まれている。接続信号403を受けたストレージノード103はクライアント101との情報網距離を情報網距離測定プログラム351を用いて測定し、測定結果を他のストレージノード103に通知する。各ストレージノード103は測定した情報網距離を他のストレージノード103とクライアント101の情報網距離を情報網距離測定プログラム351を用いて比較し、自身の情報網距離が上位m位に入っているか判定)する。上位m位である判断したストレージノード103はニアノード103aとなり、これら以外のストレージノード103はファーノード103bとなる。また1位のニアノード103a、すなわちクライアント101に最も近いストレージノード103は、自身のオブジェクト107送受信に必要な情報をクライアント101に通知する。本明細書における実施例では、クライアント101が新規作成したオブジェクト107はクライアント101に最も近いニアノードに一時的ないしは永続的に格納される。このため、この動作によりクライアント101が最も近いニアノード103aを把握しておく必要がある。ニアノード103a選出の後、ファーノード103bは他のストレージノード103との距離を測定するために距離測定要求を周囲のストレージノード103に送信する。このときニアノード103aは距離測定要求に応答して送信元に返信するが、ファーノード103bは距離測定要求を受信しても応答しない。この手順により、ファーノード103bは全てのニアノード103aの情報網距離を収集し、これらの中で最も近いニアノード103aを特定する。この動作により、ファーノード103bとニアノード103a間の情報網距離が最短となる組み合わせで転送を行うため、オブジェクト107の転送が高速になる。
【００２２】
以上は本発明によるクラスタストレージシステム100の共通の動作である。
前記動作により、クライアント101から比較的近い範囲にあるストレージノード103を選択した。前記の範囲にあるストレージノード103に目的のオブジェクトがあるならば、クライアント101は高速にオブジェクト107へアクセスできる。以降、この近い範囲へオブジェクト107を集約する動作について説明する。このオブジェクト107集約動作は実施の様態により異なるため、それぞれ説明する。
【実施例２】
【００２３】
オブジェクト107集約動作がファーノード103bからニアノード103aへのオブジェクトコピーである様態について説明する。
図5は図4に示したクラスタストレージシステム100にクライアント101が接続した状態からニアノード103aにオブジェクト107をコピーによって集約する動作を説明する図である。クライアント101は必要とするオブジェクト107のクエリ501を、自身がニアノード103aであるかファーノード103ｂであるか認識した各ストレージノード103に通知する。クライアント101からのクエリ501を受けた各ストレージノード103はデータベースエンジン353を用いてオブジェクト107を検索する。さらに、各ファーノード103bはクエリ501に該当したオブジェクト107をコピーし、実施例1の方法により各ファーノード103bが特定したニアノード103aに送信する(503)。以上の手順により、クライアント101の必要とするオブジェクト107がクライアント101から近い範囲にあるニアノード103aに集約される。クライアント101はニアノード103aのオブジェクト107にアクセスすることで、高速にオブジェクト107を取得することができる。また、クライアント101により新規作成されたり、クライアント101内の記憶装置からストレージシステム100に移動させたオブジェクト107は、クライアント101に最も近いニアノード103aに格納する。本発明によるクラスタストレージシステム100においてクライアント101は多様な位置からクラスタストレージシステム100に接続する場合には、最も近いニアノード103aは分散して選出されるためオブジェクト107の分散配置状態を実現できる。
【００２４】
次に図5で説明したオブジェクト107がニアノードに集約された状態からクライアント101がネットワーク105から切断601したときの動作を図6を用いて説明する。クライアント101がネットワーク105から切断したとき、オブジェクト107を集約したニアノード103aは自身のオブジェクト107に対して以下のいずれかの操作を行う。
新規作成されたオブジェクト107aは自身にそのまま格納する。
更新が発生したオブジェクト107bは元のファーノード103bに返信し更新する。
更新が発生しなかったオブジェクト107cは破棄する。
【００２５】
前記オブジェクト操作により、クラスタストレージシステム100全体のオブジェクト107の整合性を最低限のオブジェクト107の移動によって確保する。クライアント101切断時の動作を詳細に説明する。まずクライアント101はネットワーク105から切断する際、ネットワーク切断信号を全てのストレージノード103に通知する。クライアント101がネットワーク105から切断したことを検知する方法として、定期的に接続信号を発生させ、一定期間接続信号を確認できなかった場合にクライアント101がネットワーク105から切断したと判定する方法もある。クライアント101のネットワーク切断を検知したニアノード103aは、まず新規作成されたオブジェクト107aがあるか判定する。新規作成されたオブジェクト107aがあれば自身のストレージ301にそのまま格納する。次にクライアント接続時のオブジェクト集約動作において、他のファーノード103bから受信したオブジェクト107があるか判定する。受信したオブジェクト107は、送信元であるファーノード103ｂを特定する情報を有している。受信したオブジェクト107がある場合、さらにそのオブジェクト107が更新の発生したオブジェクト107bか判定する。更新の確認はオブジェクト107の受信時刻と更新時刻を比較する方法などで行う。他のファーノード103bから受信したオブジェクト107に更新が発生している場合、元のオブジェクト107bにも同様の更新が必要になるため、オブジェクト107bを元のファーノード103bに返信603し、ファーノード103bの該当するオブジェクト107を更新する。一方オブジェクト107に更新が発生していない場合、元のオブジェクト107を更新する必要が無いため、返信せずに破棄する。以上、クライアント101切断後のオブジェクト107の各処理が終わった段階でニアノード103a・ファーノード103bの区別を無くし、クライアント101とのセッションを終了する。
【実施例３】
【００２６】
本実施例では、クライアント101が新規作成したオブジェクト107aをストレージノード103に格納時にストレージ容量負荷に基づいた平衡機能を有する様態について説明する。
【００２７】
図5のオブジェクト107がニアノード103aに集約された状態からクライアント101がネットワーク105から切断したときの動作を図7を用いて説明する。クライアント101がネットワーク105から切断したとき、全てのストレージノード103は自身の容量負荷を他のストレージノード103に通知する。そして各ストレージノード103はクラスタストレージシステム100に接続された全てのストレージノード103の容量負荷を表701にまとめる。本実施例では便宜上ノードIDを図7におけるストレージノード103の左から順に付与する。ノードIDは、ストレージノード103の製造時に付与される固有の識別子でもよいし、ネットワーク105に接続したときに付与される識別子でもよい。これを図中のストレージノード103に付記して表現する。図7において最も容量負荷の低いストレージノード103は一番左のノードID 1番ストレージノード103である。実施例2ではクライアント101の切断時に、新規作成されたオブジェクト107aをクライアント101に最も近いニアノード103aaが格納したが、本実施例では新規作成オブジェクトを最も容量負荷の小さいストレージノード 1番に送信するようにストレージノード 1番からクライアント101に通知してあり、ストレージノード 1番は新規作成オブジェクトを受信して格納する。クラスタストレージシステム100の運用によっては、クライアント101の接続位置が変わらない場合がある。このとき実施例2記載の新規オブジェクト107a格納方法では、常に一つのストレージノード103に対して新規オブジェクト107aを格納することとなり、1つのストレージノード103に集中的に容量負荷がかかってしまう。このように大きな容量負荷のかかったストレージノード103aが他のクライアント100の接続によりニアノード103aとして判定された場合、オブジェクト集約動作を実現できないことがある。本実施例記載の新規オブジェクト107a格納動作により本発明によるクラスタストレージシステム100における局所的かつ恒久的な容量負荷を低減することができ、クラスタストレージシステム100の利用効率を向上することができる。一方、新規オブジェクト107a以外でクライアント100接続時に集約されたオブジェクト107については、実施例2と同様にクライアント101接続時のオブジェクト集約動作において、他のファーノード103bから受信したオブジェクト107があるか判定する。受信したオブジェクト107がある場合、さらにそのオブジェクト107が更新の発生したオブジェクト107bか判定する。更新の確認はオブジェクト107の受信時刻と更新時刻を比較する方法などで行う。他のファーノード103bから受信したオブジェクト107に更新が発生している場合、元のオブジェクト107bにも同様の更新が必要になるため、オブジェクト107bを元のファーノード103bに返信603し、ファーノード103bの該当するオブジェクト107を更新する。一方オブジェクト107に更新が発生していない場合、元のオブジェクト107を更新する必要が無いため、返信せずに破棄する。以上、クライアント101切断後のオブジェクト107の各処理が終わった段階でニアノード103a・ファーノード103bの区別を無くし、クライアント101とのセッションを終了する。
【実施例４】
【００２８】
本実施例ではオブジェクト集約時にオブジェクトの交換を行う様態を説明する
実施例2および3記載のオブジェクト集約動作が発生すると、ニアノード103aの容量負荷はファーノード103bに比べ高くなる。このため、オブジェクト107の配置に偏りがある、もしくはクラスタストレージシステム100全体の容量負荷が高い場合、ニアノード103aにオブジェクト107を集約できないことがある。本実施例では、ニアノード103aからファーノード103bへ不必要なオブジェクト107を返信することにより、局所的なニアノード103aの容量負荷の上昇を抑制することができる。また、このオブジェクト107の交換を同時交換とすることが望ましい。ここで言う同時交換とはピアツーピア接続のように送信側と受信側の区別を行わない接続を行った状態で、オブジェクト107を受信分だけ送信する交換手法を言う。同時交換を行うことで、瞬間的な容量負荷の増加を抑制できるため、交換対象のオブジェクト107が巨大な場合でも容量負荷の増大を抑制しながらオブジェクト集約動作を実行することができる。以降、オブジェクトの交換を行うオブジェクト集約動作を詳細に説明する。
【００２９】
図8は図4のクライアント101がクラスタストレージシステム100に接続した状態からのオブジェクト集約動作を説明する図である。クライアント101は必要とするオブジェクト107のクエリ501を各ストレージノード103に通知する。各ストレージノード103は、クライアント101から通知されたクエリ501から自身の持つオブジェクト適合度リスト(図示せず)を生成し、これを他のストレージノード103に通知する。オブジェクト107とクエリ501の適合度とは、たとえばクエリ501に含まれるメタデータq件のうちオブジェクト107に合致したメタデータ数h件のときh/qで計算される値である。全てのストレージノード103は、他のストレージノード103から送られてきたオブジェクト適合リストを合わせることによって、クラスタストレージシステム100全体におけるオブジェクト107の適合度リスト801を保持する。ファーノード103bは、上位r位以内のオブジェクト107dを保持している場合、オブジェクト107dをコピーし、自身から最も近いニアノード103aに送信する。ニアノード103aは受信した適合率の高いオブジェクト107dを自分自身に格納し、 それとともに適合率の高いオブジェクト107dを受信するニアノード103aは自身の持つオブジェクト107のうち、適合度が上位r位より小さい、すなわち適合率の低いオブジェクト107eを交換する形で返信する。このとき返信する適合率の低いオブジェクトの量は、受信する適合度の高いオブジェクトの量や、ニアノード103a自身の容量負荷などに基づいて決定する。以上が実施例4における、クライアント101接続時のオブジェクト集約動作である。
【００３０】
さらにクライアント101がネットワーク105から切断するときの動作を説明する。図9は図8 のオブジェクト107が集約された状態からクライアント101がネットワーク105から切断するときの動作を説明する図である。ストレージノード103はクライアント101がネットワーク105から切断されたことを検知すると、他のストレージノード103からオブジェクト107を受信したファーノード103bは、受信したオブジェクト107を元のストレージノード103に返信する。このオブジェクト107返信動作により、オブジェクト107が分散配置された状態を保持する。ニアノード103aにおける新規作成オブジェクト107aは実施例2記載の方法でクライアント101から最も近いニアノード103aaが格納してもよいし、実施例3記載の方法でクラスタストレージシステム100のストレージノード103のうち最も容量負荷の小さいストレージノード103に格納してもよい。また、ファーノード103bから集約したオブジェクト107は、実施例2および3記載の方法により、更新されたオブジェクト107bは元のストレージノード返信し、更新の発生しなかったオブジェクト107cは破棄する。
【実施例５】
【００３１】
本実施例ではネットワーク105にメッシュ型ネットワーク1005を利用する様態を説明する。図10はメッシュ型ネットワーク1005を適用したクラスタストレージシステム1000である。このようなメッシュ型ネットワーク1005とはたとえば無線ネットワークである。無線ネットワークは、電波の届く範囲ならばどこでも接続可能であり、距離や障害物の影響で通信の品質が変化しやすい。すなわちクライアント101の接続位置が変わりやすく、クライアント101とストレージノード103の情報網距離が変化しやすいネットワーク105であるといえる。またメッシュ型のネットワーク1005においては、クライアント101と直接通信できないストレージノード103cが他のストレージノード103を介することによってストレージシステム1000に接続する場合がある。
【００３２】
以降、クライアント101と直接通信できないストレージノード103をアローンノード103cと呼ぶ。アローンノード103cが存在するネットワーク1005における、オブジェクト集約動作について説明する。
【００３３】
まず、クライアント101がストレージシステム1000に接続した時点で、本発明におけるニアノード特定動作により、クライアント101と直接通信できるストレージノード103についてニアノード103a及びファーノード103bを特定する。ただし、この時点でアローンノード103cは、自身がニアノード103aかファーノード103bか認識していない。
クライアント101と直接通信できないという特徴から、アローンノード103cは必ずファーノード103bである。すなわちストレージシステム1000において本発明を適用し効果を得るにはアローンノード103cがファーノード103bであることを認識し、自身に最も近いニアノード103abを特定しオブジェクト107を集約できればよい。
【００３４】
以降、アローンノード103cがファーノード103bであることを認識し、最も自身に近いニアノード103abを特定し、オブジェクト107を集約する方法について説明する。
【００３５】
実施例1記載の方法でファーノード103bであることを認識したストレージノード103はそれぞれ、自身に最も近いニアノード103aを検出するためにネットワーク1005に接続した全てのストレージノード103に情報網距離測定要求を送信する。実施例1ではこの要求にはニアノード103aのみが応答したが、本実施例ではクライアント101の接続信号を受信していないストレージノード103、すなわちアローンノード103cもこれに応答する。この動作により、ファーノード103bはアローンノード103c存在することを認識するとともに、アローンノード103cは自身がファーノードの一種であるアローンノード103cであることを認識する。
【００３６】
アローンノード103cは自身がファーノード103bであることを認識し、ネットワーク1005に接続した全てのストレージノード103に情報網距離測定要求を送信する。そして、このアローンノード103cと直接通信することが可能なニアノード103aがこの要求に応答し、アローンノード103cは自身から最も近いニアノード103aを特定する。
【００３７】
この動作によりアローンノード103cは自身がファーノード103bであることを認識し、ファーノード103bと同様の方法で自身から最も近いニアノード103aを特定する。
【００３８】
また、アローンノード103cは最も近いニアノード103aに自身がアローンノードであることを通知し、アローンノード103cからオブジェクトを集約されるニアノード103abは、オブジェクト集約動作時にクライアント101から受信するクエリ501をアローンノード103cに仲介して送信する。クエリ501を受信したアローンノードは103cは自身の持つオブジェクト107のうちクエリ501に適合度の高いオブジェクト107aを前記動作で特定した最も近いニアノード103aに送信する。結果、クライアント101が必要とするクエリに適合度の高いオブジェクト107aがニアノード103aに集約され、クラスタストレージシステム1000におけるオブジェクトアクセスが高速化される。
【実施例６】
【００３９】
本実施例ではアローンノード103cと直接通信できるニアノード103aが存在しないメッシュ型ネットワーク1005に本発明を適用する様態を説明する。図11はニアノード103aとアローンノード103cが直接通信できないメッシュ型ネットワーク1005を適用したクラスタストレージシステム1000である。ストレージシステム1000では図10の場合と異なり、アローンノード103cと通信できるニアノード103aが存在しないため、実施例5記載のアローンノード103cによるニアノード103a選出動作に応答するストレージノード103が存在しないことを意味している。かような状況ではアローンノード103cを検知したファーノード103bbが仲介ノードとして動作する。仲介ノードとはクライアント101の要求をアローンノード103cに送信するとともに、アローンノード103cからのオブジェクト107を自身の選出したニアノード103aに送信するファーノード103bである。
【００４０】
以下、アローンノード103cに格納されたオブジェクト107に高速アクセスするため、ファーノード103bが仲介ノード103bbとなるニアノード103a特定動作について詳細に説明する。アローンノード103cは実施例5記載のアローンノード103c特定動作により、自身がアローンノード103cであることを認識する。そして、実施例5と同様にアローンノード103cはオブジェクト107を集約するニアノード103aを特定するため、情報網距離測定要求を送信する。この情報網距離測定要求はニアノード103aのみが応答するため、アローンノード103cに接続するニアノード103aが存在しない場合、アローンノード103cへの応答がない。一定時間応答がない場合アローンノード103cはファーノード103bのニアノード103a特定動作において、情報網距離測定要求を送信したファーノード103bまでの103b情報網距離を測定する。測定の結果、アローンノード103cに最も近いファーノード103bbを特定し、アローンノード103ｃは103bbに仲介依頼信号を送信する。そして仲介依頼信号を受信したファーノード103bbは仲介ノード103bbとなる。そして、アローンノード103ｃは仲介ノード103ｂｂにクエリに適合度が高いオブジェクトを仲介ノード103ｂｂに送信し、仲介ノード103ｂｂが自身のオブジェクトを送信するまたは送信したニアノード103aに、アローンノード103ｃから受信したオブジェクトも送信する。
【００４１】
この仲介ノードにより、クライアント101及びニアノード103aと直接通信できないストレージノード103cに存在するオブジェクト107にもクライアント101がアクセスできるようになる。
【００４２】
以降、実施例1から3を適用することで、オブジェクト集約動作を実現できる。
【図面の簡単な説明】
【００４３】
【図１】本発明によるストレージシステムの初期状態の一例である。
【図２】本発明におけるクライアントの構成例である。
【図３】本発明におけるストレージノードの構成例である。
【図４】クライアントがネットワークに接続したときのネットワーク構成例である。
【図５】実施例2におけるオブジェクト集約動作例である。
【図６】実施例2におけるクライアント切断時動作例である。
【図７】実施例3におけるクライアント切断時動作例である。
【図８】実施例4におけるオブジェクト集約動作例である。
【図９】実施例4におけるクライアント切断時動作例である。
【図１０】実施例5におけるアローンノード認識動作例である。
【図１１】実施例6における仲介ノード認識動作例である。
【符号の説明】
【００４４】
100,1000: クラスタストレージシステム
101: クライアント
103: ストレージノード
103a: ニアノード
103b: ファーノード
103c: アローンノード
105: ネットワーク
107：オブジェクト
1005: メッシュ型ネットワーク
【図１】
2009151403.tif 000003
【図２】
2009151403.tif 000004
【図３】
2009151403.tif 000005
【図４】
2009151403.tif 000006
【図５】
2009151403.tif 000007
【図６】
2009151403.tif 000008
【図７】
2009151403.tif 000009
【図８】
2009151403.tif 000010
【図９】
2009151403.tif 000011
【図１０】
2009151403.tif 000012
【図１１】
2009151403.tif 000013