(57)【要約】  種々の実施形態が、クラウドネットワークにおいて分散ネットワークファイルシステムを提供する方法及び装置を提供し、その分散ネットワークファイルシステムは、アクセスされるファイル及びアクセスロケーションから独立しているクラウドストレージ内性能保証を提供する。クライアントのアクセスロケーション及び決定された最大アクセス帯域幅に基づき、かつファイルアクセスパターンの知識を必要としないファイル配置方式を用いて、クライアントのファイルシステムがプロビジョニングされる。
2015512534.tif 000002
【特許請求の範囲】
【請求項１】
分散ファイルシステムを提供するための装置であって、装置は、
データストレージと、
データストレージに通信可能に接続されるプロセッサとを備え、プロセッサは、
複数のクライアントロケーションを決定することであって、複数のクライアントロケーションはストレージネットワーク内の複数のストレージノード内に格納される複数のファイルに関連付けられ、複数のクライアントロケーションは複数の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、
複数の関連付けられる通信チャネルの複数のアクセス帯域幅を決定することと、
複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルのストレージをプロビジョニングすることとを実施するように構成される、分散ファイルシステムを提供するための装置。
【請求項２】
複数のファイルのストレージをプロビジョニングすることが、
複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のファイルにファイルチャンキング及びファイルレプリケーションストレージ機構を適用することであって、ファイルチャンキング及びファイルレプリケーションストレージ機構は複数のファイルを複数のファイルチャンクとして格納することを指定する、適用することと、
複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルチャンクの配置を決定することと、
複数のエッジノードの選択部分ごとに、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のクライアントロケーションの選択部分のそれぞれから受信されるファイルアクセス要求に応答してアクセスされることになる複数のストレージノードのうちの少なくとも１つを決定することであって、複数のエッジノードの選択部分は複数のクライアントロケーションの選択部分に関連付けられる、決定することとを実施するようにプロセッサを構成することを含む、請求項１に記載の装置。
【請求項３】
複数のファイルのストレージをプロビジョニングすることが、
複数の第２のクライアントロケーションを決定することであって、複数の第２のクライアントロケーションはストレージネットワーク内の複数のストレージノード内に格納される複数の第２のファイルに関連付けられ、複数の第２のクライアントロケーションは複数の第２の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、
複数の第２の関連付けられる通信チャネルの複数の第２のアクセス帯域幅を決定することと、
複数の第２のクライアントロケーション、複数の第２のアクセス帯域幅及びクライアントサービス保証に基づいて、ストレージネットワーク内の複数の第２のファイルのストレージのプロビジョニングを拒否することとを実施するようにプロセッサを更に構成することを含む、請求項２に記載の装置。
【請求項４】
複数のファイルのストレージをプロビジョニングすることが、
複数のクライアントロケーションに関連付けられる複数のエッジノードを決定することと、
複数のファイルに少なくとも１つのファイルストレージ機構を適用することと、
複数のストレージノードからの複数のファイルのアクセスを指定するアクセス情報によって複数のエッジノードを更新することとを実施するようにプロセッサを構成することを含む、請求項１に記載の装置。
【請求項５】
分散ファイルシステムを提供するための装置であって、装置は、
データストレージと、
データストレージに通信可能に接続されるプロセッサとを備え、プロセッサは、
複数のクライアントロケーションから、ストレージネットワーク内の複数のストレージノード内に格納される複数のファイルへアクセスするための複数の要求を受信することであって、複数のクライアントロケーションはクライアント及び複数のファイルに関連付けられる、受信することと、
ストレージコントローラから、複数のファイルにアクセスする方法を指定するアクセス情報を受信することと、
第１のクライアントロケーションからの第１のファイルへのアクセス要求を受信することと、
第１のファイルを格納する複数の決定されたストレージノードと、決定されたストレージノードへの複数の通信経路とを決定することであって、決定はクライアント、アクセス情報及び第１のファイルに基づく、決定することと、
決定された通信経路を介して決定されたストレージノードから第１のファイルを検索することとを実施するように構成され、
複数のクライアントロケーションは第１のクライアントロケーションを含み、
複数のストレージノードは複数の決定されたストレージノードを含む、分散ファイルシステムを提供するための装置。
【請求項６】
決定されたストレージノードが、複数のファイルに関連付けられるクライアントに基づいて固定される、請求項５に記載の装置。
【請求項７】
分散ファイルシステムを提供するためのシステムであって、システムは、
複数のクライアントロケーションであって、複数のロケーションはそれぞれ複数のクライアントのうちの１つに関連付けられる、複数のクライアントロケーションと、
複数の関連付けられる通信チャネルを介して、複数のクライアントロケーションに通信可能に接続される複数のエッジノードと、
複数のエッジノードに通信可能に接続される複数のストレージノードであって、複数のストレージノードは複数のファイルを格納し、複数のファイルの少なくとも一部はそれぞれ複数のクライアントのうちの１つに関連付けられる、複数のストレージノードと、
エッジノードに通信可能に接続されるストレージコントローラとを備え、ストレージコントローラは、
複数の決定されたクライアントロケーションを決定することと、
関連付けられる複数の通信チャネルの複数のアクセス帯域幅を決定することと、
複数の決定されたクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のストレージノード内の複数のファイルのストレージをプロビジョニングすることとを実施するように構成される、分散ファイルシステムを提供するためのシステム。
【請求項８】
分散ファイルシステムを提供するための方法であって、方法は、
データストレージに通信可能に接続されるプロセッサにおいて、複数のクライアントロケーションを決定することであって、複数のクライアントロケーションはストレージネットワーク内の複数のストレージノード内に格納される複数のファイルに関連付けられ、複数のクライアントロケーションは複数の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、
データストレージと協働するプロセッサによって、複数の関連付けられる通信チャネルの複数のアクセス帯域幅を決定することと、
データストレージと協働するプロセッサによって、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルのストレージをプロビジョニングすることとを含む、分散ファイルシステムを提供するための方法。
【請求項９】
複数のファイルのストレージをプロビジョニングするステップが、
複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のファイルにファイルチャンキング及びファイルレプリケーションストレージ機構を適用することであって、ファイルチャンキング及びファイルレプリケーションストレージ機構は複数のファイルを複数のファイルチャンクとして格納することを指定する、適用することと、
複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルチャンクの配置を決定することと、
複数のエッジノードの選択部分ごとに、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のクライアントロケーションの選択部分のそれぞれから受信されたファイルアクセス要求に応答してアクセスされることになる複数のストレージノードのうちの少なくとも１つを決定することであって、複数のエッジノードの選択部分は複数のクライアントロケーションの選択部分に関連付けられる、決定することとを含む、請求項８に記載の方法。
【請求項１０】
ファイルチャンキングストレージ機構を適用するステップが、複数のファイルにわたって実質的に均一なファイルチャンキング比を適用することを含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は包括的にはクラウドネットワークにおいて分散ネットワークファイルシステムを提供するための方法及び装置に関する。
【背景技術】
【０００２】
本節は、本発明をより深く理解するのを容易にするのに役に立つ場合がある態様を導入する。したがって、本節において述べることはこの観点から読まれるべきであり、従来技術内にあるもの、又は従来技術内にないものについて認めるものと理解されるべきではない。
【０００３】
いくつかの知られているファイルシステムでは、企業ネットワークに接続されるネットワーク付属ストレージを有することによって、ファイルアクセスが達成される。他の知られている分散ネットワークファイルシステムでは、異なるストレージサーバにわたってファイルをストライピングすることによって、ファイルアクセスが達成される。
【発明の概要】
【課題を解決するための手段】
【０００４】
種々の実施形態が、クラウドネットワークにおいて分散ネットワークファイルシステムを提供する方法及び装置を提供し、その分散ネットワークファイルシステムは、アクセスされるファイル及びアクセスロケーションから独立しているクラウドストレージ内性能保証を提供する。ファイルアクセスパターンの知識を必要とすることなく、クライアントのアクセスロケーション及び決定された最大アクセス帯域幅に基づくファイル配置方式を用いて、クライアントのファイルシステムがプロビジョニングされる。有利には、その分散ファイルシステムは、ストレージがアクセス可能であることを確実にするサービスプロバイダを必要とすることなく、すべての公開されたアクセスロケーションからストレージへの高速、ユビキタス、かつ保証付きアクセスを可能にする。
【０００５】
一実施形態では、分散ファイルシステムを提供するための装置が提供される。その装置は、データストレージと、データストレージに通信可能に接続されるプロセッサとを含む。プロセッサは、複数のクライアントロケーションを決定することであって、複数のクライアントロケーションはストレージネットワーク内の複数のストレージノード内に格納される複数のファイルに関連付けられ、複数のクライアントロケーションは複数の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、複数の関連付けられる通信チャネルの複数のアクセス帯域幅を決定することと、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルのストレージをプロビジョニングすることとを実施するようにプログラミングされる。
【０００６】
いくつかの実施形態では、複数のファイルのストレージのプロビジョニングは、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のファイルに、ファイルチャンキング及びファイルレプリケーションストレージ機構を適用することであって、ファイルチャンキング及びファイルレプリケーションストレージ機構は複数のファイルを複数のファイルチャンクとして格納することを指定する、適用することと、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルチャンクの配置を決定することと、複数のエッジノードの選択部分ごとに、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のクライアントロケーションの選択部分のそれぞれから受信されたファイルアクセス要求に応答してアクセスされることになる複数のストレージノードのうちの少なくとも１つを決定することであって、複数のエッジノードの選択部分は複数のクライアントロケーションの選択部分に関連付けられる、決定することとを実施するようにプロセッサを更にプログラミングすることを含む。
【０００７】
いくつかの実施形態では、ファイルチャンキングストレージ機構を適用することは、複数のファイルにわたって均一なファイルチャンキング比を適用することを含む。
【０００８】
いくつかの実施形態では、複数のファイルのストレージのプロビジョニングは、複数の第２のクライアントロケーションを決定することであって、複数の第２のクライアントロケーションはストレージネットワーク内の複数のストレージノード内に格納される複数の第２のファイルに関連付けられ、複数の第２のクライアントロケーションは複数の第２の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、複数の第２の関連付けられる通信チャネルの複数の第２のアクセス帯域幅を決定することと、複数の第２のクライアントロケーション、複数の第２のアクセス帯域幅及びクライアントサービス保証に基づいて、ストレージネットワーク内の複数の第２のファイルのストレージのプロビジョニングを拒否することとを実施するようにプロセッサを更にプログラミングすることを含む。
【０００９】
いくつかの実施形態では、複数のファイルのストレージのプロビジョニングは、複数の第２のクライアントロケーション及び複数の第２のアクセス帯域幅に基づいてクライアントサービス保証を拡縮することと、複数の第２のクライアントロケーション及び複数の第２のアクセス帯域幅に基づいてストレージノード内の複数の第２のファイルのストレージをプロビジョニングすることとを実施するようにプロセッサを更にプログラミングすることを含む。
【００１０】
いくつかの実施形態では、複数のファイルのストレージのプロビジョニングは、複数のクライアントロケーションに関連付けられる複数のエッジノードを決定することと、複数のファイルに少なくとも１つのファイルストレージ機構を適用することと、ストレージネットワーク内の複数のストレージノードから複数のファイルにアクセスするためのアクセス情報によって複数のエッジノードを更新することとを実施するようにプロセッサをプログラミングすることを含む。
【００１１】
いくつかの実施形態では、複数のファイルのストレージのプロビジョニングは、ストレージネットワーク内の複数の通信経路を決定することを実施するようにプロセッサを更にプログラミングすることを含み、複数の通信経路は、複数のエッジノードと複数のストレージノードとの間の関連付けられる通信経路を規定する。
【００１２】
いくつかの実施形態では、少なくとも１つのストレージ機構はファイルチャンキング及びファイルレプリケーションを含み、ファイルチャンキングは複数のファイルのそれぞれを最大でｐ個のチャンクに分割し、ファイルチャンキング比は複数のファイルにわたって均一であり、ファイルレプリケーションはｒ個のレプリケーショングループを作成し、各レプリケーショングループは複数のストレージノードのうちの１つ又は複数を含む。
【００１３】
いくつかの実施形態では、ファイルチャンクは、チャンクｉｄに基づいて、レプリケーショングループ内のストレージノード内に格納される。
【００１４】
いくつかの実施形態では、同じチャンクｉｄを有するすべてのファイルチャンクがレプリケーショングループ内の同じストレージノード内に格納される。
【００１５】
第２の実施形態では、分散ファイルシステムを提供するための装置が提供される。その装置は、データストレージと、データストレージに通信可能に接続されるプロセッサとを含む。プロセッサは、複数のクライアントロケーションから、ストレージネットワーク内の複数のストレージノード内に格納される複数のファイルにアクセスするための複数の要求を受信することであって、複数のクライアントロケーションはクライアント及び複数のファイルに関連付けられる、受信することと、ストレージコントローラから、複数のファイルにアクセスする方法を指定するアクセス情報を受信することと、第１のクライアントロケーションから第１のファイルへのアクセス要求を受信することと、第１のファイルを格納する複数の決定されたストレージノード、及び決定されたストレージノードへの複数の通信経路を決定することであって、その決定は、クライアント、アクセス情報及び第１のファイルに基づく、決定することと、決定された通信経路を介して、決定されたストレージノードから第１のファイルを検索することとを実施するようにプログラミングされる。ただし、複数のクライアントロケーションは第１のクライアントロケーションを含み、複数のストレージノードは複数の決定されたストレージノードを含む。
【００１６】
いくつかの実施形態では、決定されたストレージノードは、複数のファイルに関連付けられるクライアントに基づいて固定される。
【００１７】
第３の実施形態では、分散ファイルシステムを提供するためのシステムが提供される。そのシステムは、複数のクライアントロケーションであって、複数のロケーションはそれぞれ複数のクライアントのうちの１つに関連付けられる、複数のクライアントロケーションと、複数の関連付けられる通信チャネルを介して、複数のクライアントロケーションに通信可能に接続される複数のエッジノードと、複数のエッジノードに通信可能に接続される複数のストレージノードであって、複数のストレージノードは複数のファイルを格納し、複数のファイルのうちの少なくとも一部はそれぞれ複数のクライアントのうちの１つに関連付けられる、複数のストレージノードと、エッジノードに通信可能に接続されるストレージコントローラとを含む。ストレージコントローラは、複数の決定されたクライアントロケーションを決定することと、関連付けられる複数の通信チャネルの複数のアクセス帯域幅を決定することと、複数の決定されたクライアントロケーション及び複数のアクセス帯域幅に基づいて複数のストレージノード内の複数のファイルのストレージをプロビジョニングすることとを実施するようにプログラミングされる。
【００１８】
第４の実施形態では、複数のファイルのストレージをプロビジョニングするための方法が提供される。その方法は、複数のクライアントロケーションを決定することであって、複数のクライアントロケーションはストレージネットワーク内の複数のストレージノードに格納される複数のファイルに関連付けられ、複数のクライアントロケーションは複数の関連付けられる通信チャネルを介してストレージネットワーク内の複数のエッジノードに通信可能に接続される、決定することと、複数の関連付けられる通信チャネルの複数のアクセス帯域幅を決定することと、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいてストレージノード内の複数のファイルのストレージをプロビジョニングすることとを含む。
【００１９】
いくつかの実施形態では、複数のファイルのストレージをプロビジョニングするステップは、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のファイルにファイルチャンキング及びファイルレプリケーションストレージ機構を適用することであって、ファイルチャンキング及びファイルレプリケーションストレージ機構は複数のファイルを複数のファイルチャンクとして格納することを指定する、適用することと、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、ストレージノード内の複数のファイルチャンクの配置を決定することと、複数のエッジノードの選択部分ごとに、複数のクライアントロケーション及び複数のアクセス帯域幅に基づいて、複数のクライアントロケーションの選択部分のそれぞれから受信されたファイルアクセス要求に応答してアクセスされることになる複数のストレージノードのうちの少なくとも１つを決定することであって、複数のエッジノードの選択部分は複数のクライアントロケーションの選択部分に関連付けられる、決定することとを含む。
【００２０】
いくつかの実施形態では、ファイルチャンキングストレージ機構を適用するステップは、複数のファイルにわたって均一なファイルチャンキング比を適用することを含む。
【００２１】
添付の図面において種々の実施形態が例示される。
【図面の簡単な説明】
【００２２】
【図１】クラウドネットワーク内に分散ネットワークファイルシステム１００の一実施形態を含むクラウドネットワークを示す図である。
【図２】ストレージコントローラ２２０によってプロビジョニングされる分散ネットワークファイルシステム２００内のファイルにアクセスする機能ブロックを示す概略図である。
【図３】ストレージコントローラが図１の分散ネットワークファイルシステム１００又は図２の分散ネットワークファイルシステム２００をプロビジョニングするための方法３００の一実施形態を示す流れ図である。
【図４】エッジノードがクライアントロケーションからのファイル要求に応じるための方法４００の一実施形態を示す流れ図である。
【図５】ストレージコントローラが図３のステップ３６０に示されるようにストレージシステムをプロビジョニングするための方法５００の一実施形態を示す流れ図である。
【図６】図１のエッジノード１４０若しくは図２のエッジノード２４０、又は図１のストレージコントローラ１２０若しくは図２のストレージコントローラ２２０のうちの１つのような種々の装置６００の一実施形態を示す概略図である。
【発明を実施するための形態】
【００２３】
理解するのを容易にするために、実質的に同じ若しくは類似の構造、又は実質的に同じ若しくは類似の機能を有する要素を指示するために同じ参照番号が使用されている。
【００２４】
その説明及び図面は本発明の原理を例示するにすぎない。したがって、当業者が、本明細書において明示的に説明又は図示されないが、本発明の原理を具現し、本発明の範囲内に含まれる種々の構成を考案できることは理解されよう。さらに、本明細書において列挙されるすべての例は主に、本発明の原理、及び本発明人が当該技術分野を発展させることに寄与する概念を読者が理解するのを助けるための教育的な目的だけを明確に意図しており、そのような具体的に列挙される例及び条件には限定されないと解釈されるべきである。さらに、本明細書において用いられるときに、「又は（若しくは）」という用語は、他に指示されない限り、非排他的な「又は（若しくは）」（例えば、「又は他の方法では」又は「又は代替形態では」）を指している。また、いくつかの実施形態を１つ又は複数の他の実施形態と組み合わせて、新たな実施形態を形成することができるので、本明細書において説明される種々の実施形態は必ずしも相互に排他的ではない。
【００２５】
種々の実施形態が、クラウドネットワークにおいて分散ネットワークファイルシステムを提供する方法及び装置を提供し、その分散ネットワークファイルシステムは、アクセスされるファイル及びアクセスロケーションから独立しているクラウドストレージ内性能保証を提供する。クライアントのアクセスロケーション及び決定された最大アクセス帯域幅に基づき、かつファイルアクセスパターンの知識を必要としないファイル配置方式を用いて、クライアントのファイルシステムがプロビジョニングされる。
【００２６】
図１は、クラウドネットワーク内に分散ネットワークファイルシステム１００の一実施形態を含むクラウドネットワークを示す。分散ネットワークファイルシステム１００は、１つ又は複数のクライアントロケーション１１０−０１−１１０−０６（まとめて、クライアントロケーション１１０）と、ストレージコントローラ１２０と、ストレージネットワーク１３０とを含む。１つ又は複数のクライアントロケーション通信チャネル１１５−０１−１１０−０９（まとめて、クライアントロケーション通信チャネル１１５）及びストレージコントローラ通信チャネル１２５がクライアントロケーション１１０及びストレージコントローラ１２０をそれぞれストレージネットワーク１３０に接続する。ストレージネットワーク１３０は、１つ又は複数のネットワークデバイス１６０−０１−１６０−０６（まとめて、ネットワークデバイス１６０）又は１つ又は複数のリンク１７５−０１−１７５−０４（まとめて、リンク１７５）を介して１つ又は複数のストレージノード１５０−０１−１５０−０５（まとめて、ストレージノード１５０）に相互接続される１つ又は複数のエッジノード１４０−０１−１４０−０７（まとめて、エッジノード１４０）を含む。ストレージコントローラ１２０は、ストレージノード１５０内のファイルの配置を決定し、エッジノード１４０に、クライアントロケーション１１０からのファイルのアクセスを指示するためのアクセス情報を与える。
【００２７】
クライアントロケーション１１０は、１つ又は複数のクライアントのための１つ又は複数のロケーションを含むことができる。図１に示されるように、クライアントＡはクライアントロケーション１１０−０２及び１１０−０３を有し、クライアントＢはクライアントロケーション１１０−０１及び１１０−０５を有し、クライアントＣはクライアントロケーション１１０−０４及び１１０−０６を有する。３つのクライアントとして表されるが、任意の数のクライアントが存在することができること、及び各クライアントが２つのクライアントロケーションを有するように表されるが、各クライアントは任意の数のクライアントロケーションを含むことができることは理解されたい。クライアントロケーション１１０は、クライアントロケーション通信チャネル１１５のうちの１つ又は複数を介してファイルを送信又は受信することができる任意のタイプ又は数の通信デバイスを含むことができる。例えば、通信デバイスは、シンクライアント、スマートフォン、パーソナル若しくはラップトップコンピュータ、サーバ、ネットワークデバイス、タブレット、テレビジョンセットトップボックス、メディアプレーヤなどとすることができる。通信デバイスは、処理及び格納のようなタスクの一部を実行するのに、例示的なシステム内の他のリソースを頼る場合があるか、又はタスクを独立して実行できる場合がある。クライアントロケーションは、同じ地理的ロケーションを共有することができる（例えば、クライアントＢ１１０−０１及びクライアントＡ１１０−０２は同じ建物内に存在することができる）ことは理解されたい。
【００２８】
本明細書において用いられるときに、「ファイル」という用語は、特定のクライアント（例えば、クライアントＡ）によって管理される任意のクライアントコンテンツを意味し、クライアントロケーション通信チャネル１１５を介して送信又は受信することができる任意のコンテンツを含むように広く理解されるべきである。例えば、ファイルは、従来のファイル、パケット、パケットストリーム、デジタルドキュメント、ビデオ若しくは画像コンテンツ、ファイルブロック、データオブジェクト、上記の任意の部分などを含むことができる。
【００２９】
クライアントロケーション通信チャネル１１５は、関連付けられるエッジノード１４０を介して、クライアントロケーション１１０とストレージネットワーク１３０との間の通信接続を提供する。詳細には、クライアントロケーション通信チャネル（例えば、１１５−０２）は、クライアントロケーション（例えば、１１０−０２）とエッジノード（例えば、１４０−０１）との間で保証されたサービスレベルを提供する。保証されたサービスレベルは、最大帯域幅保証を含むことができる。クライアントロケーションは同じ物理的クライアントロケーション通信チャネルを共有できることは理解されたい。例えば、クライアントＢ１１０−０１及びクライアントＡ１１０−０２は、クライアントＢ１１０−０１のためのＶＰＮトンネル及びクライアントＡ１１０−０２のための第２のＶＰＮトンネルを用いて、高速広帯域接続を共有することができる。
【００３０】
通信チャネル１１５及び１２５並びにリンク１７５は、ワイヤレス通信（例えば、ＬＴＥ、ＧＳＭ(登録商標)、ＣＤＭＡ、ブルートゥース）、フェムトセル通信（例えば、ＷｉＦｉ）、パケットネットワーク通信（例えば、ＩＰ）、ブロードバンド通信（例えば、ＤＯＣＳＩＳ及びＤＳＬ）、ストレージ通信（例えば、ファイバチャネル、ｉＳＣＳＩ）などの１つ又は複数の通信チャネルを介して通信することをサポートする。単一の接続として表されるが、通信チャネル１１５及び１２５並びにリンク１７５は、任意の数又は組み合わせの通信チャネルとすることができることは理解されたい。
【００３１】
ストレージコントローラ１２０は、ストレージノード１５０内のファイルの配置を決定し、エッジノード１４０に、クライアントロケーション１１０からのファイルのアクセスを指示するためのアクセス情報を与える任意の装置とすることができる。詳細には、ストレージノード１５０内のファイルの配置は、決定されたアクセスロケーション（例えば、クライアントロケーション１１０のうちの１つ又は複数）及び決定されたアクセス帯域幅（例えば、クライアントロケーション（例えば、１１０−０２）及びエッジノード（例えば、１４０−０１）を相互接続する１つ又は複数のクライアントロケーション通信チャネルの帯域幅保証）に基づく。ここでは、１つのストレージコントローラだけが示されるが、システム１００は更に多くのストレージコントローラを含むことができることは理解されたい。
【００３２】
ストレージネットワーク１３０は、１つ若しくは複数のネットワークデバイス１６０又は１つ若しくは複数のリンク１７５を介して、１つ又は複数のストレージノード１５０に相互接続される１つ又は複数のエッジノード１４０を含む。
【００３３】
ストレージネットワーク１３０において４つのリンク１７５−０１−１７５−０４のみが番号を付されるが、エッジノード１４０、ストレージノード１５０及びネットワークデバイス１６０を相互接続するすべてのリンクがリンク１７５の構成要素であり、明確にするために残りの番号が省略されていることは理解されたい。ストレージネットワーク１３０が任意の数のエッジノード１４０、ストレージノード１５０及びネットワークデバイス１６０、並びに任意の数及び構成のリンク１７５を含むことができることはさらに理解されたい。さらに、ストレージネットワーク１３０が、ＬＴＥ、ＧＳＭ、ＣＤＭＡ、１つ又は複数のローカルエリアネットワーク（ＬＡＮ）、１つ又は複数のワイヤレスローカルエリアネットワーク（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）などを含む、任意の組み合わせ及び任意の数のワイヤレスネットワーク、有線ネットワーク又はフェムトセルネットワークを含むことができることは理解されたい。
【００３４】
エッジノード１４０は、クライアントロケーション１１０のうちの１つに対して、ストレージネットワーク１３０へのゲートウエイとしての役割を果たす任意の装置とすることができる。詳細には、エッジノード１４０のうちの１つが、ファイル要求（例えば、１１５−０２を介して受信されるファイル読出し又は書込み要求）を受信し、要求されたファイルを格納する１つ又は複数のストレージノード１５０にファイルアクセス要求を送信する。ここでは、７つのエッジノードが示されているが、システム１００は、それより少ない、又はそれより多くのエッジノードを含むことができることは理解されたい。
【００３５】
ストレージノード１５０はファイルを格納し、従来のストレージサービスを提供する。ストレージノード１５０は、任意の適切なストレージデバイスとすることができ、任意の数のストレージデバイスを含むことができる。含まれる１つ又は複数のストレージデバイスは同種又は異種とすることができ、及び／又は互いに局在することができるか、又は地理的に散在することができる。ここでは、５つのストレージノードが示されているが、システム１００は、それより少ない、又はそれより多くのストレージノードを含むことができることは理解されたい。
【００３６】
ネットワークデバイス１６０は、ストレージネットワーク１３０を通して、要求及びファイルをルーティングする。ネットワークデバイス１６０は、ルータ、スイッチ、ハブ、ブリッジなどを含む任意の適切なネットワークデバイスとすることができる。含まれる１つ又は複数のネットワークデバイスは同種又は異種とすることができ、及び／又は互いに局在することができるか、又は地理的に散在することができる。ここでは、６つのネットワークデバイスが示されているが、システム１００は、それより少ない、又はそれより多くのネットワークデバイスを含むことができることは理解されたい。
【００３７】
いくつかの実施形態では、クライアントロケーション１１０のうちの１つ又は複数が、従来の仮想プライベートネットワークサービスを利用する企業ロケーションであり、クライアントロケーション通信チャネル１１５のうちの１つ又は複数がＶＰＮトンネルである。
【００３８】
いくつかの実施形態では、ストレージコントローラ１２０は、ストレージネットワーク１３０の一部とすることができる。この実施形態の更なる実施形態では、エッジノード１４０のうちの１つ又は複数がストレージコントローラ１２０の機能性を提供することができる。
【００３９】
いくつかの実施形態では、ストレージコントローラ１２０は、データレプリケーション及びデータチャンキングのようなファイルストレージ機構を利用する。有利には、ファイルストレージ機構は、ストレージネットワーク１３０内の輻輳ボトルネックを緩和することができる。第１のファイルストレージ機構、すなわち、データレプリケーションは、異なるストレージノード１５０においてファイルの複数のコピーを格納することによって、ネットワーク負荷を種々のリンクにわたって分散させることを含む。有利には、データレプリケーションを用いることによって、ファイルアクセス要求からの負荷を、ストレージノード１５０、ネットワークデバイス１６０及びリンク１７５のようなストレージネットワーク１３０の種々の部分にわたってプロビジョニングすることができる。第２のファイルストレージ機構、すなわち、データチャンキングは、１つのファイルを、異なるストレージノードに格納することができるいくつかの小さなチャンクに分割することを含む。その後、ファイルが要求されるとき、すべてのチャンクがユーザにダウンロードされる。有利には、チャンキングによって、ファイルアクセス要求からの負荷を、ストレージネットワーク１３０にわたって分散できるようになる。
【００４０】
図２は、ストレージコントローラ２２０によってプロビジョニングされる分散ネットワークファイルシステム２００においてファイルチャンク２８０−０１−２８０−０４（まとめて、ファイルチャンク２８０）にアクセスする機能ブロックを概略的に示す。そのシステムは、１つのクライアント（例えば、クライアントＡ）を含み、そのクライアントは、３つのクライアントロケーション２１０−０１−２０１−０３（まとめて、クライアントロケーション２１０）を有する。クライアントロケーション２１０は、それぞれのクライアントロケーション通信チャネル２１５−０１−２１５−０３（まとめて、クライアントロケーション通信チャネル２１５））を介して、それぞれのエッジノード２４０−０１−２４０−０３（まとめて、エッジノード２４０）と通信する。エッジノード２４０は、関連付けられる通信経路２８５−０１−２８５−０６（まとめて、通信経路２８５）を介して、ストレージノード２５０−０１−２５０−０４（まとめて、ストレージノード２５０）と通信する。
【００４１】
クライアントロケーション２１０は、図１に示されるように、ストレージネットワーク２３０内のファイルにアクセスするクライアントＡの３つの例示的なロケーションである。
【００４２】
クライアントロケーション通信チャネル２１５は、図１に示されるように、クライアントロケーション２１０をそれぞれのエッジノード２４０と通信可能に接続する３つの例示的なクライアントロケーション通信チャネルである。
【００４３】
ストレージコントローラ２２０は、図１に示されるように、ストレージネットワーク２３０内のクライアントのファイル（例えば、ファイルチャンク２８０）をプロビジョニングする。
【００４４】
エッジノード２４０及びストレージノード２５０は、図１に示されるように機能する。
【００４５】
ファイルチャンク２８０は、クライアントのファイルの少なくとも一部を示す。この例では、ファイルチャンク２８０は、ストレージネットワーク２３０内の２つのクライアントファイルＰ及びＱのストレージを表す。この例では、データレプリケーション及びデータチャンキングが用いられる。最初に、ファイルは２つのセグメントにチャンキングされ、各チャンクが２つのロケーションに複製される。図示されるように、ファイルＰはセグメントＰ１及びＰ２にチャンキングされ、チャックＰ１はストレージノード２５０−０１及び２５０−０４に格納され、チャンクＰ２はストレージノード２５０−０２及び２５０−０３に格納される。
【００４６】
通信経路２８５は、エッジノード２４０を関連付けられるストレージノード２５０に通信可能に接続する。例えば、エッジノード２４０−０１は通信経路２８５−０１を介してストレージノード２５０−０１に通信可能に接続され、通信経路２８５−０２を介してストレージノード２５０−０２に通信可能に接続される。詳細には、通信経路２８５−０１−２８５−０６は、ファイルチャンク（例えば、ファイルチャンク２８０−０１のうちのファイルチャンクＰ１）を検索するために、エッジノード（例えば、２４０−０１）がストレージノード（例えば、２５０−０１）にアクセスするためにストレージコントローラ２２０によってプロビジョニングされる通信経路（例えば、２８５−０１）の適切なネットワークデバイス及びリンク（例えば、図１のネットワークデバイス１６０及びリンク１７５）を含む。
【００４７】
いくつかの実施形態では、ストレージネットワーク２３０内に格納されるファイルチャンク２８０は、１組のファイルを表す。システム内の１組のファイルは動的な場合があることは理解されたい。
【００４８】
図３は、ストレージコントローラ（例えば、図１のストレージコントローラ１２０又は図２のストレージコントローラ２２０）が、図１の分散ネットワークファイルシステム１００又は図２の分散ネットワークファイルシステム２００をプロビジョニングするための方法３００の一実施形態を示す流れ図を表す。その方法は、（ｉ）クライアントアクセスロケーション（ステップ３２０）及び（ｉｉ）アクセス帯域幅（ステップ３３０）を決定することを含む。その際、その方法を実行する装置は、ファイルアクセスパターンの予備知識を必要とすることなく、決定されたアクセスロケーション及びアクセス帯域幅に基づいて、ストレージネットワーク（図１のストレージネットワーク１３０又は図２のストレージネットワーク２３０）をプロビジョニングする（ステップ３６０）。
【００４９】
方法３００において、ステップ３２０は、図１のクライアントロケーション１１０又は図２のクライアントロケーション２２０のようなアクセスロケーションを決定することを含む。詳細には、指定されたクライアントのファイルのためのアクセス要求が生じるクライアントロケーションが決定される。例えば、図１のクライアントＡのクライアントファイルの場合、決定されたクライアントロケーションは１１０−０２及び１１０−０３とすることができる。同様に、図２のクライアントＡのファイルの場合、決定されたクライアントロケーションは２１０−０１−２１０−０３とすることができる。クライアントロケーションによっては（例えば、この例の場合、図２のクライアントロケーション２１０−０２）、ファイルにアクセスしない場合があり、それゆえ、決定されたクライアントロケーションでない場合があることは理解されたい。
【００５０】
方法３００において、ステップ３４０は、決定されたクライアントロケーションとそれぞれの１つ又は複数のエッジノードとの間のアクセス帯域幅を決定することを含む。図１を参照すると、クライアントロケーション通信チャネル１１５−０２、１１５−０３及び１１５−０４は、ＶＰＮサービスのための帯域幅保証があらかじめネゴシエートされているＶＰＮトンネルとすることができる。同様に、図２を参照すると、クライアントロケーション通信チャネル２１５−０１−２１５−０３は、ＶＰＮサービスのための帯域幅保証があらかじめネゴシエートされているＶＰＮトンネルとすることができる。その場合に、決定されたアクセス帯域幅は、あらかじめネゴシエートされた帯域幅保証に基づくことができる。
【００５１】
方法３００において、ステップ３６０は、決定されたクライアントアクセスロケーション及び決定されたアクセス帯域幅に基づいて、クラウドベースストレージシステム１００をプロビジョニングすることを含む。詳細には、図２を参照すると、１つ又は複数のファイルストレージ機構が決定され、決定されたクライアントロケーション（例えば、クライアントロケーション２１０−０１−２１０−０３）に対して、その方法を実行する装置は：（ｉ）オプションで、選択された各クライアントロケーションがそこを介してストレージネットワーク（例えば、ストレージネットワーク２３０）にアクセスすることになる１つ又は複数のエッジノード（例えば、エッジノード２４０）を決定し、（ｉｉ）ファイルに１つ又は複数のファイルストレージ機構を適用し（例えば、ファイルをファイルチャンク２８０にチャンキングし、複製して、どのファイルチャンクがどのストレージノード（例えば、ストレージノード２５０）に格納されるかを決定し）、（ｉｉｉ）オプションで、決定されたクライアントロケーション又はエッジノードのそれぞれがクライアントファイルにアクセスすることになる経路（例えば、通信経路２８５）を決定し、（ｉｖ）オプションで、アクセス通信情報によって適切なエッジノード（例えば、エッジノード２４０）を更新する。上記のステップ（ｉ）において決定された１つ又は複数のエッジノードは、クライアントロケーションに地理的に最も近いエッジノードとすることができるか、又はあらかじめ選択されたエッジノード（例えば、商談中に決定される）とすることができることは理解されたい。これらの実施形態のうちのいくつかでは、ステップ（ｉ）における決定は、あらかじめ選択された１つ又は複数のエッジノードを検索することを含むことができる。
【００５２】
有利には、ファイルにアクセスするクライアントユーザに対して帯域幅を保証する、クライアント（図１又は図２のクライアントＡ）専用の仮想ストレージを作成するために、ストレージノード（例えば、図１のストレージノード１５０又は図２のストレージノード２５０）の一部をプロビジョニングすることによって、企業グレードのサービスを提供することができる。
【００５３】
いくつかの実施形態では、ステップ３２０は、ファイルチャンクを検索するエッジノード（例えば、エッジノード２４０−０１）に最も近いストレージノード（例えば、ストレージノード２５０−０１及び２５０−０２）を選択することを含む。いくつかの他の実施形態では、それより離れている場合がある特定のストレージノードにトンネリングすることのような、他の方式が、エッジノードに最も近いわけでないストレージノードを選択する場合がある。
【００５４】
ステップ３６０のいくつかの実施形態では、ファイルストレージ機構は、チャンキング及びレプリケーションを含む。有利には、これらの機構は、アクセスオブリビアス方式（ａｃｃｅｓｓ  ｏｂｉｌｉｖｉｏｕｓ  ｓｃｈｅｍｅ）を可能にする場合がある。これらの実施形態のいくつかでは、ストレージネットワーク（例えば、図２のストレージネットワーク２３０）内に格納される各ファイルは最大でｐ個のチャンクにチャンキングされ、これらの各チャンクがｒ回複製され、ストレージネットワーク内に最大でｐ×ｒ個のファイルチャンクを作成する。これらの実施形態のうちのいくつかでは、チャンキング比はファイルチャンクにわたって実質的に均一である。例えば、図２を参照すると、サイズ（Ｐ１）／サイズ（Ｐ２）の比「ｒ」はサイズ（Ｑ１）／サイズ（Ｑ２）の比に実質的に等しい。有利には、エッジノードとストレージノードとの間の通信経路のトラフィックの比（例えば、「２８５−０１上のトラフィック」／「２８５−０２上のトラフィック」）は、実際のファイルアクセスパターンを気にせず（ｏｂｌｉｖｉｏｕｓ）にストレージをプロビジョニングする比「ｒ」を近似することができる。
【００５５】
ステップ３６０のいくつかの実施形態では、アクセス通信情報は、エッジノードがどのストレージノードからファイルチャンクを検索すべきかを指示することを含む。例えば、図２を参照すると、クライアントロケーション２１０−０１から生じる要求に対して、エッジノード２４０−０１は、２つのファイルチャンクＰ１及びＰ２をストレージノード２５０−０１及び２５０−０２からそれぞれ検索するように指示される。
【００５６】
ステップ３６０のいくつかの実施形態では、アクセス通信は、ファイルチャンクを検索する際にエッジノードが使用すべきアクセス通信経路を指示することを含む。例えば、図２を参照すると、クライアントロケーション２１０−０１から生じる要求に対して、エッジノード２４０−０１は、２つのファイルチャンクＰ１及びＰ２を、アクセス通信経路２８５−０１及び２８５−０２をそれぞれ用いてストレージノードから検索するように指示される。
【００５７】
ステップ３６０のいくつかの実施形態では、プロビジョニングは、ファイルストレージ機構の適用中に、従来のフェイルオーバ技法、回復技法、負荷バランシング技法又は冗長技法を組み込むことを含む。これらの実施形態において、ファイルストレージ機構の適用は、保証されたサービスレベル（例えば、保証された帯域幅）に違反しないように、これらの技法を組み込む。
【００５８】
有利には、ユーザアクセスパターン、アクセスロケーション及び実際のアクセスされるファイルに関する予備知識を用いることなくファイルへの保証されたアクセスを提供するようにファイルを保管するために１組のストレージノードを選択することによって、そのシステム（例えば、図１の分散ネットワークファイルシステム１００）は以下のことを可能にする。
【００５９】
○動的なユーザ要求に合わせてファイル配置を変更する必要がないので、アクセスオブリビアスである。クライアントロケーションに新たなユーザが参加することができ、帯域幅需要が保証されたサービス限度内にある限り、新たなクライアントファイルをクラウド内に取り込むことができる。
【００６０】
○ストレージノードボトルネック及びストレージネットワークリンクボトルネックが、アクセスされるクライアントファイルから独立している。
【００６１】
○システムが、アクセスパターンの変化に合わせ性能要件を満たすために、アクセスパターンを常に監視しクライアントファイルを入れ替える必要がないので、コスト効率が良い。
【００６２】
○ファイルアクセスパターンの予備知識を必要とすることなく、加入許可判断が必要とされる性能保証を与えることができるので、新クライアント加入許可を効率的に判断することができる。
【００６３】
図４は、エッジノード（例えば、図２のエッジノード２４０−０１−２４０−０３のうちの１つ）がクライアントロケーション（例えば、図２のクライアントロケーション２１０−０１−２１０−０３のうちの１つ）からのファイル（例えば、図２のファイルＰ又はＱ）要求に応じるための方法４００の一実施形態を示す流れ図を表す。その方法は、ストレージコントローラからアクセスパラメータを受信することを含む（ステップ４２０）。その後、その方法を実行する装置は、そのアクセスパラメータを用いて、要求されたファイル（ステップ４４０）の１つ又は複数のストレージロケーションを決定し（ステップ４６０）、決定されたストレージロケーションから要求されたファイルを検索する（ステップ４８０）。
【００６４】
方法４００において、ステップ４２０は、ストレージコントローラ（例えば、図２のストレージコントローラ２２０）からアクセスパラメータを受信することを含む。詳細には、アクセスパラメータは、要求側クライアントロケーション（例えば、図２のクライアントロケーション２１０）に対して、ファイルが存在する１つ又は複数のストレージノード（例えば、図２のストレージノード２５０）を指定する。いくつかの実施形態では、アクセスパラメータは、クライアントファイルを検索する際に使用する通信経路（例えば、図２の通信経路２８５）も指定する。
【００６５】
方法４００において、ステップ４４０は、クライアントロケーションからクライアントファイルへのアクセス要求を受信することを含む。詳細には、図２を参照すると、エッジノード（例えば、エッジノード２４０−０１）は、クライアントロケーション（例えば、クライアントロケーション２１０−０１）から、クライアントロケーション通信チャネル（例えば、２１５−０１）を介して、ファイル（例えば、ファイルＰ）へのアクセス要求を受信するゲートウエイとしての役割を果たす。
【００６６】
方法４００において、ステップ４６０は、受信されたアクセスパラメータを用いて、要求されたクライアントセグメント（例えば、図２のファイルＰ）が格納される１つ又は複数のストレージノード（例えば、図２のストレージノード２５０）を決定することを含む。
【００６７】
方法４００において、ステップ４８０は、決定された１つ又は複数のストレージノードからファイルを検索することを含む。詳細には、図２を参照すると、エッジノード（例えば、エッジノード２４０−０１）は、決定された１つ又は複数のストレージノード（例えば、ストレージノード２５０−０１及び２５０−０２）からファイルのチャンク（例えば、２８０−０１のＰ１及び２８０−０２のＰ２）を検索し、再構成されたファイルを、クライアントロケーション（例えば、クライアントロケーション２１０−０１）の要求側ユーザに送達する。
【００６８】
ステップ４２０のいくつかの実施形態では、その方法を実行するエッジノードは、エッジノードを、クライアントファイルを含む１つ又は複数のストレージノードに案内する、クライアント（例えば、図２のクライアントＡ）ごとのテーブルを維持管理する。
【００６９】
ステップ４２０のいくつかの実施形態では、その方法を実行するエッジノードは、エッジノードを、クライアントファイルを検索する際に使用されるべき１つ又は複数のアクセス通信経路に案内する、クライアントごとのテーブルを維持管理する。
【００７０】
ステップ４６０のいくつかの実施形態では、特定のクライアント（例えば、図１及び図２のクライアントＡ）のためにエッジノードがアクセスする１つ又は複数のストレージノードは、アクセスされるクライアントファイルに関係なく固定される。
【００７１】
図５は、図３のステップ３６０において示されるように、ストレージコントローラ（例えば、図１のストレージコントローラ１２０）がストレージシステムをプロビジョニングするための方法５００の一実施形態を示す流れ図を表す。その方法は、チャンクサイズを決定すること（ステップ５２０）と、１つ又は複数のストレージノード内のチャンクの配置を決定すること（ステップ５３０）と、選択されたエッジノードに対して、１つ又は複数のアクセスストレージノードを決定すること（ステップ５４０）とを含む。また、その方法を実行する装置は、オプションで、新たなクライアントの加入を許可することができるか否かを判断し（ステップ５６０）、オプションで、拡張サービスが利用可能である場合には（ステップ５６５）、保証された速度を増減する（５７０）。拡張サービスによれば、拡縮された保証サービスレベルを用いて、新たなクライアントの加入を許可できるようになる。また、その方法を実行する装置は、決定に基づいて、１つ又は複数のエッジノード及び１つ又は複数のストレージノードをプロビジョニングすることもできる（ステップ５８０）。
【００７２】
方法５００において、ステップ５２０は、チャンクサイズを決定することを含む。詳細には、クライアントファイルのためのチャンクサイズは、図３に示されるように決定される。
【００７３】
方法５００において、ステップ５３０は、図３に示されるように、１つ又は複数のストレージノード内のファイルチャンクの配置を決定することを含む。
【００７４】
方法５００において、ステップ５４０は、１つ又は複数の選択されたエッジノードに対して、１つ又は複数のアクセスストレージノードを決定することを含む。詳細には、クライアントファイルを含む１つ又は複数のストレージノード（例えば、図１のストレージノード１５０及び図２のストレージノード２５０）は、選択されたエッジノード（図１のエッジノード１４０及び図２のエッジノード２４０）に関連付けられる。
【００７５】
方法５００は、オプションで、ステップ５６０を含む。ステップ５６０は、新たなクライアントの加入を許可することができるか否かを判断することを含む。詳細には、ファイルのための任意のアクセスパターンを処理するために利用可能な十分な帯域幅が存在する場合には、クラウドサービスプロバイダによって新たなクライアントの加入が許可される。新たなクライアントの加入を許可できる場合には、その方法はステップ５８０に進み、許可できない場合には、その方法はステップ５６５に進む。
【００７６】
方法５００は、オプションで、ステップ５６５を含む。ステップ５６５は、クライアント加入を許可できるようにするために、要求側クライアントのサービス保証を調整することができるか否かを判断することを含む。サービス保証を調整できる場合には、その方法はステップ５７０に進み、調整できない場合には、その方法は終了する（ステップ５９５）。実施形態によっては、拡張サービスが提供されない場合があることは理解されたい。これらの実施形態では、新たなクライアントの加入が許可されないと判断される場合には、ステップ５６０は終了する場合がある（ステップ５９５）。
【００７７】
方法５００は、オプションで、ステップ５７０を含む。ステップ５７０は、クライアント加入を許可できるようにするために、要求側クライアントのサービス保証を拡縮することを含む。例えば、ファイルのための任意のアクセスパターンを処理するために利用可能な十分な帯域幅が存在する場合には、例えば、その帯域幅が最大保証帯域幅の９０％である場合には、最大保証帯域幅が９０％まで縮小される。
【００７８】
方法５００において、ステップ５８０は、図３に示されるように、１つ又は複数のエッジノード及び１つ又は複数のストレージノードをプロビジョニングすることを含む。
【００７９】
新たに追加されるクライアントを参照しながら説明されるが、その方法は、クライアントのストレージプロビジョニングを更新することにも適用できることは理解されたい。これらの実施形態では、ステップ５６０は、更新されたクライアントストレージ要件を満たすことができるか否かを判断し、満たすことができない場合には、更新されたクライアントストレージ要件を低減することができるか、又は以前のクライアントストレージ要件に戻すことができる。
【００８０】
ステップ５２０、５３０又は５４０のいくつかの実施形態では、ストレージノードのロケーションは固定され、知られている。
【００８１】
方法５００のいくつかの実施形態では、ステップ５２０、５３０、５４０又は５７０は同時に決定することができる。例えば、ステップ５２０、５３０及び５４０において決定されるパラメータは同じアルゴリズムにおいて解くことができ、ステップ５７０の倍率はその結果に基づくことができる。
【００８２】
方法５００のいくつかの実施形態では、ステップ５６５及び５７０は同時に実行することができる。例えば、クライアントが拡縮を許すか否かの判断は、倍率に基づくことを必要とする場合がある。
【００８３】
ステップ５２０、５３０又は５４０のいくつかの実施形態では、エッジノード（例えば、図１のエッジノード１４０又は図２のエッジノード２４０−０１−２４０−０３のうちの１つ）においてクライアントファイルがアクセスされる場合がある最大速度には上限がある。これらの実施形態のうちのいくつかでは、上限は、クライアントロケーション通信チャネル（例えば、図１のクライアントロケーション通信チャネル１１５又は図２のクライアントロケーション通信チャネル２１５−０１−２１５−０３のうちの１つ）の容量である。有利には、あらかじめネゴシエートされたクライアントロケーション通信チャネル帯域幅保証を用いることによって、クライアント（例えば、図１又は図２のクライアントＡ）は、異なるクライアントロケーション通信チャネルにおいて帯域幅の割合を増やすか、又は減らすことによって、サービスレベルを再びネゴシエートできるようになる。
【００８４】
ステップ５２０、５３０又は５４０のいくつかの実施形態では、アクセス通信経路（例えば、図２の通信経路２８５−０１−２８５−０６）が従来の最短経路ルーティング技法を用いて決定される。これらの実施形態のうちのいくつかでは、ストレージネットワーク（例えば、図１のストレージネットワーク１３０及び図２のストレージネットワーク２３０）内の各リンク「ｅ」（例えば、図１のリンク１７５のうちの１つ）は、リンク容量ｃ（ｅ）と、最短経路計算のために用いられるリンク重みメトリックｗ（ｅ）とを有する。リンクｅの容量は、そのリンク上で同時に利用可能な容量である。これは、元のリンク容量から、リンクｅを用いてデータにアクセスするのを認められたすべてのクライアント（例えば、図１のクライアントＡ、クライアントＢ及びクライアントＣ）のために行われた帯域幅予約を減らした容量である。
【００８５】
いくつかの実施形態では、ステップ５６０は、新たに追加されたクライアント又は更新されたクライアント（例えば、図１のクライアントＡ）の追加された帯域幅要件に基づいて、ストレージネットワークのリンク（例えば、図１のストレージネットワーク１３０のリンク１７５）のリンク容量を更新することを含む。
【００８６】
いくつかの実施形態では、ステップ５６０は、帯域幅要件を満たすことができるか否かを判断することを含む。これらの実施形態のうちのいくつかでは、帯域幅要件は、ファイルをダウンロード又はアップロードするための要件である。これらの実施形態のうちのいくつかでは、クライアント（例えば、図１及び図２のクライアントＡ）と、クラウドストレージプロバイダとの間にサービス品質の同意が存在する。例えば、サービス品質の同意は、ファイルを一定の時間内にダウンロードすることができることを保証することができるか、又はファイルがダウンロードされる最小速度を指定することができる。
【００８７】
これらの実施形態のうちのいくつかでは、エッジノード（例えば、図１のエッジノード１４０のうちの１つ）における全帯域幅要件を決定する際に式Ｅ．１を用いることができる。
【００８８】
【数１】
2015512534.tif 000003
式［１］において、Ｒｆはファイル「ｆ」のためのダウンロード速度を表し、
【００８９】
【数２】
2015512534.tif 000004
は時刻ｔにおいてエッジノード「ｕ」に送信されるファイルｆへの要求数を表す。Ｄｕはエッジノード「ｕ」における最大ダウンロード速度を表す。
【００９０】
いくつかの実施形態では、ステップ５２０、５３０及び５４０は、従来の古典的な最適化技法を用いて線形計画問題を解くことを含む。従来の古典的な最適化技法は、所望の目標又は目的を最も良好に達成する動作を決定することを伴う。目標又は目的を最も良好に達成する動作は、目的関数の値を最大化又は最小化することによって決定することができる。いくつかの実施形態では、目的関数の目標又はメトリックは、最大リンク利用率を最小限に抑えることとすることができる。
【００９１】
その問題は以下のように表すことができる。
【００９２】
以下を最適化する：
［Ｅ．２］ｙ＝ｆ（ｘ１，ｘ２，．．．，ｘｎ）
以下を前提とする：
【００９３】
【数３】
2015512534.tif 000005
【００９４】
ただし、式Ｅ．２は目的関数であり、式Ｅ．３はその解法に課せられる１組の制約を構成する。ｘｉ変数、ｘ１，ｘ２，．．．，ｘｎは１組の決定変数を表し、ｙ＝ｆ（ｘ１，ｘ２，．．．，ｘｎ）はこれらの決定変数に関して表される目的関数である。目的関数は最大化又は最小化できることは理解されたい。
【００９５】
ステップ５２０、５３０又は５４０のいくつかの実施形態では、線形計画問題を用いる第１の実施形態は、ファイルを同じ数のチャンクに分割することと、ファイルを「ｒ」回複製することとを含む。いくつかの実施形態では、ファイル全体がチャンキングされるのを確実にするために、制約Σｋβｋ＝１が適用される。その制約において、βｋはチャンクｋ内にある各ファイルの断片を表す。いくつかの実施形態では、各ファイルが最大でｐ個のチャンクに分割されるのを確実にするために、制約βｋ≧１／ｐも適用される。
【００９６】
第１の実施形態のいくつかの実施形態では、チャンク「ｋ」の各レプリカ「ｊ」が同じストレージノード内に配置される。例えば、図２を参照すると、ストレージノード２５０−０１は、ファイルＰ及びＱのｊ＝１のレプリカに対してｋ＝１のチャンクを含み、ストレージノード２５０−０２は、ファイルＰ及びＱのｊ＝１のレプリカに対してｋ＝２のチャンクを含む。
【００９７】
第１の実施形態のいくつかの実施形態では、線形計画決定変数は、チャンクのサイズ、及び各チャンクの各レプリカが配置されるストレージノードのロケーションである。ストレージノードの数を表すために｜Ｃ｜を、各チャンクの複製回数を表すために「ｒ」を用いるとき、
【００９８】
【数４】
2015512534.tif 000006
個の取り得るレプリケーショングループ「Ｇ」が存在する。ただし、Ｇｊはレプリケーショングループｊ内の１組ｒ個のストレージノードを表す。これらの実施形態のうちのいくつかでは、チャンクｋがレプリケーショングループＧｊ内に格納される場合には、各ストレージノード「ｃ」∈Ｇｊは、すべてのファイルのチャンクｋを格納する。表記を簡単にしておくために、チャンクｉｄ及びレプリケーショングループｉｄは同じである。例えば、チャンクｊはレプリケーショングループＧｊ内に格納される。
【００９９】
第１の実施形態のいくつかの実施形態では、エッジノード「ｕ」がレプリケーショングループｊからのファイルの断片βｊにアクセスする（例えば、ダウンロード又はアップロードする）とき、そのアクセスは、エッジノードｕに最も近いストレージノード「ｃ」∈Ｇｊから行われる。その場合に、エッジノードｕは、すべてのｃ’∈Ｇｊの場合に｜ＳＰ（ｃ；ｕ）｜≦｜ＳＰ（ｃ’；ｕ）｜であるように、ストレージノード「ｃ」∈Ｇｊからのファイル断片βｊにアクセスする。この式において、ＳＰ（．．．；．．．）は、エッジノード−ストレージノード対間の最短経路を表す。同様に、ＳＰ（Ｇｊ；ｕ）を用いて、ＳＰ（ｃ；ｕ）内の１組のリンクを表す。ただし、ストレージノードｃは、エッジノードｕに最も近い、Ｇｊ内のストレージノードである。ファイルチャンクを含む最も近いストレージノードからのクライアントデータにアクセスすることは、同じレプリケーショングループ内の複数のストレージノードからのファイルにアクセスすることができる場合を解くように拡張できることは理解されたい。
【０１００】
各エッジノードはレプリケーショングループｊからのすべてのファイルの断片βｊにアクセスするので、時刻ｔにおけるレプリケーショングループｊからエッジノードｕへの全フロー速度は
【０１０１】
【数５】
2015512534.tif 000007
である。ただし、
【０１０２】
【数６】
2015512534.tif 000008
は時刻ｔにおいてエッジノードｕに送信されるファイルｆのコピー数を表す。式［１］から、以下の式を表すことができる。
【０１０３】
【数７】
2015512534.tif 000009
【０１０４】
式［４］及び［５］において、βｊはファイル断片を表し、Ｒｆはファイル「ｆ」のためのダウンロード速度を表し、
【０１０５】
【数８】
2015512534.tif 000010
は時刻ｔにおいてエッジノード「ｕ」に送信されるファイルｆへの要求数を表す。Ｄｕはエッジノード「ｕ」における最大ダウンロード速度を表す。
【０１０６】
式［４］及び［５］から、レプリケーショングループｊからエッジノードｕにプロビジョニングされることになる総容量はβｊＤｕによって上限を課せられる。Ｈ（ｅ）を、リンクｅを用いてファイルにアクセスする１組の（レプリケーショングループ、エッジノード）対を表す（すなわち、Ｈ（ｅ）＝｛（Ｇｊ；ｕ）：ｅ∈ＳＰ（Ｇｊ；ｕ）｝）とすると、リンクｅ上の最大フローは
【０１０７】
【数９】
2015512534.tif 000011
になる。選択された１組の（レプリケーショングループ、エッジノード）対（すなわち、Ｈ（ｅ））は、選択されたエッジノードのための決定されたストレージノードを指定することは理解されたい（例えば、ステップ５４０）。
【０１０８】
第１の実施形態のいくつかの実施形態では、線形計画問題の目的は、λによって表される最大リンク利用率を最小限に抑えるために、ファイルがいかにチャンキングされるか（ステップ５２０）、及びこれらのチャンクがどこに複製されるか（ステップ５３０）を決定することである。これらのパラメータを決定する線形計画問題は、以下のようにすることができる。
【０１０９】
［Ｅ．６］  ｍｉｎλ
【０１１０】
【数１０】
2015512534.tif 000012
【０１１１】
【数１１】
2015512534.tif 000013
【０１１２】
【数１２】
2015512534.tif 000014
【０１１３】
式［６］−［９］において、βｊはファイル断片を表し、Ｄｕはエッジノード「ｕ」における最大ダウンロード速度を表し、λは最大リンク利用率を表し、ｃ（ｅ）はリンクｅの帯域幅容量を表し、ただし、ｅは１組のリンクＥの構成要素であり、ｊはチャンク番号及びレプリケーショングループ番号を表し、Ｇｊはストレージノードのレプリケーショングループを表し、Ｈ（ｅ）はリンクｅを用いてファイルにアクセスする１組の（レプリケーショングループ、エッジノード）対を表し、ｐはチャンクの最大数を表す。
【０１１４】
その場合に、第１の実施形態では、決定されたチャンクサイズ（ステップ５２０）はβｊであり、１つ又は複数のストレージノード内のチャンクの決定された配置（ステップ５３０）はＧによって与えられ、ただし、レプリケーショングループＧｊごとに、各ストレージノードｃ∈Ｇｊがすべてのファイルのチャンクｊを格納し、選択されたエッジノードごとの決定されたアクセスストレージノード（ステップ５４０）は、Ｈ（ｅ）内の１組のレプリケーショングループ−エッジノード対（すなわち、（Ｇｊ，ｕ））によって与えられる。
【０１１５】
さらに、第１の実施形態では、最小の最大リンク利用率から、クライアント加入許可決定（ステップ５６０）を導出することができる。λ≦１である場合には、アクセスオブリビアスサービス保証によってクライアントの加入を許可することができる。λ＞１である場合には、サービス保証を拡縮できる（ステップ５６５）とストレージコントローラが判断しない限り、アクセスオブリビアスサービス保証によってクライアントの加入を許可することはできない。アクセスオブリビアスサービス保証によってクライアントの加入を許可できるようにするために、各エッジノードｕにおいてλによってサービス保証を縮小することができる（ステップ５７０）。例えば、サービス保証が最大ダウンロード速度のようなアクセス速度である場合には、各エッジノードｕにおいて、最大ダウンロード速度をＤｕ／λに低減することができる。
【０１１６】
ストレージノードのいずれかにおけるストレージ総量制約が、付加的な制約を追加することによって線形計画定式化に組み込まれ得る場合があることは理解されたい。
【０１１７】
特定の順序において主に図示及び説明されるが、方法３００、４００及び５００に示されるステップは任意の適切な順序において実行できることは理解されたい。さらに、１つのステップによって識別されるステップは、その順序内の１つ又は複数の他のステップにおいて実行される場合もあるか、又は２つ以上のステップの共通の動作が一度だけ実行される場合がある。
【０１１８】
種々の上記の方法のステップはプログラミングされたコンピュータによって実行できることは理解されたい。本明細書において、いくつかの実施形態は、機械又はコンピュータ可読であり、機械実行可能又はコンピュータ実行可能命令プログラムを符号化するプログラムストレージデバイス、例えば、データ記憶媒体を含むことも意図しており、それらの命令は上記の方法のステップのうちのいくつか又はすべてを実行する。プログラムストレージデバイスは、例えば、デジタルメモリ、磁気ディスク及び磁気テープのような磁気ストレージ媒体、ハードドライブ、又は光学可読データストレージ媒体とすることができる。それらの実施形態は、上記の方法のステップを実行するようにプログラミングされたコンピュータを含むことも意図している。
【０１１９】
図６は、図１のエッジノード１４０若しくは図２のエッジノード２４０、又は図１のストレージコントローラ１２０若しくは図２のストレージコントローラ２２０のうちの１つのような種々の装置６００の一実施形態を概略的に示す。装置６００は、プロセッサ６１０と、データストレージ６１１と、Ｉ／Ｏインターフェース６３０とを含む。
【０１２０】
プロセッサ６１０は、装置６００の動作を制御する。プロセッサ６１０はデータストレージ６１１と協働する。
【０１２１】
データストレージ６１１は、必要に応じて、ルーティング情報などのプログラムデータを格納することができる。データストレージ６１１は、プロセッサ６１０によって実行可能なプログラム６２０も格納する。
【０１２２】
プロセッサ実行可能プログラム６２０は、Ｉ／Ｏインターフェースプログラム６２１、プロビジョニングプログラム６２３、又はクライアントファイルサービスプログラム６２５を含むことができる。プロセッサ６１０が、プロセッサ実行可能プログラム６２０と協働する。
【０１２３】
Ｉ／Ｏインターフェース６３０は、必要に応じて、上記のように、図１の通信チャネル１１５、１２５又は１７５、及び図２のリンク通信経路２８５を介しての通信をサポートするために、プロセッサ６１０及びＩ／Ｏインターフェースプログラム６２１と協働する。
【０１２４】
プロビジョニングプログラム６２３は、上記のように、図３の方法３００のステップ又は図５の方法５００のステップを実行する。
【０１２５】
クライアントファイルサービスプログラム６２５は、上記のように、図４の方法４００のステップを実行する。
【０１２６】
いくつかの実施形態では、プロセッサ６１０は、プロセッサ／ＣＰＵコアのようなリソースを含むことができるか、Ｉ／Ｏインターフェース６３０は任意の適切なネットワークインターフェースを含むことができるか、又はデータストレージ６１１はメモリ若しくはストレージデバイスを含むことができる。さらに、装置６００は、１つ若しくは複数のサーバ、プロセッサ、メモリ、ネットワークインターフェース若しくはストレージデバイスのような構成要素からなるブレードのような、任意の適切な物理的ハードウェア構成とすることができる。これらの実施形態のうちのいくつかでは、装置６００は、互いに遠隔しているクラウドネットワークリソースを含むことができる。
【０１２７】
いくつかの実施形態では、装置６００は仮想マシンとすることができる。これらの実施形態のうちのいくつかでは、仮想マシンは、異なる機械からの構成要素、又は地理的に散在する構成要素を含むことができる。例えば、データストレージ６１１及びプロセッサ６１０は２つの異なる物理的機械内に存在する場合がある。
【０１２８】
プロセッサ実行可能プログラム６２０がプロセッサ６１０上で実施されるとき、プログラムコードセグメントはプロセッサと組み合わせて、特定の論理回路と同じように動作する特有のデバイスを提供する。
【０１２９】
例えば、プログラム及びロジックがデータストレージ内に格納され、かつメモリがプロセッサに通信可能に接続される実施形態に関して本明細書において図示及び説明されるが、そのような情報は、任意の他の適切な態様で（例えば、任意の適切な数のメモリ、ストレージ又はデータベースを用いて）、任意の適切な構成のデバイスに通信可能に接続される任意の適切な構成のメモリ、ストレージ又はデータベースを用いて、任意の適切な組み合わせの１つ若しくは複数のメモリ、１つ若しくは複数のストレージ又は１つ若しくは複数の内部若しくは外部データベース内に情報を格納して、又は任意の適切な数のアクセス可能内部メモリ、ストレージ又はデータベースを用いて、そのような情報を格納できることは理解されたい。その場合に、本明細書において参照されるデータストレージという用語は、１つ若しくは複数のメモリ、１つ若しくは複数のストレージ又は１つ若しくは複数のデータベースのすべての適切な組み合わせを含むことを意図している。
【０１３０】
説明及び図面は、本発明の原理を例示するにすぎない。したがって、当業者が、本明細書において明示的に説明又は図示されないが、本発明の原理を具現し、本発明の趣旨及び範囲内に含まれる種々の構成を考案することができることは理解されよう。さらに、本明細書において列挙されるすべての例は主に、本発明の原理、及び本発明人が当該技術分野を発展させることに寄与する概念を読者が理解するのを助けるための教育的な目的だけを明確に意図しており、そのような具体的に列挙される例及び条件に限定されないと解釈されるべきである。さらに、本発明の原理、態様及び実施形態を列挙する本明細書のすべての陳述、及びその具体例は、その均等物を含むことを意図している。
【０１３１】
「プロセッサ」と呼ばれる任意の機能ブロックを含む、図面に示される種々の要素の機能は、専用ハードウェア、及び適切なソフトウェアに関連してソフトウェアを実行することができるハードウェアを使用して与えることができる。プロセッサによって与えられるとき、それらの機能は、単一の専用プロセッサによって、又は単一の共有プロセッサによって、又はそのうちのいくつかが共有される場合がある複数の個別のプロセッサによって与えることができる。「プロセッサ」又は「コントローラ」という用語を明示的に使用しても、ソフトウェアを実行することができるハードウェアだけを指していると解釈されるべきではなく、限定はしないが、デジタルシグナルプロセッサ（ＤＳＰ）ハードウェア、ネットワークプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ソフトウェアを記憶するためのリードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、不揮発性ストレージを暗に含む場合がある。他のハードウェア、すなわち、従来のハードウェア又はカスタムハードウェアも含まれる場合がある。同様に、図に示される任意のスイッチは概念にすぎない。その機能は、プログラムロジックの動作を通して、専用ロジックを通して、プログラム制御と専用ロジックとのやりとりを通して、或いは手動で実行することができ、特定の技法は、文脈からより具体的に理解されるように、実施者によって選択可能である。
【０１３２】
本明細書における任意のブロック図は、本発明の原理を具現する例示的な回路の概念的表示を表すことは理解されたい。同様に、任意の流れ図、フロー図、状態遷移図、擬似コードなどは、コンピュータ可読媒体内で実質的に表現される場合があり、かつコンピュータ又はプロセッサが明示されても、されなくても、そのようなコンピュータ又はプロセッサによって実行される、種々のプロセスを表すことは理解されたい。
【図１】
2015512534.tif 000015
【図２】
2015512534.tif 000016
【図３】
2015512534.tif 000017
【図４】
2015512534.tif 000018
【図５】
2015512534.tif 000019
【図６】
2015512534.tif 000020
【国際調査報告】
2015512534.tif 000021
2015512534.tif 000022
2015512534.tif 000023