特許第6334643号(P6334643)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

<>
  • 特許6334643-SMB2スケールアウト 図000002
  • 特許6334643-SMB2スケールアウト 図000003
  • 特許6334643-SMB2スケールアウト 図000004
  • 特許6334643-SMB2スケールアウト 図000005
  • 特許6334643-SMB2スケールアウト 図000006
  • 特許6334643-SMB2スケールアウト 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6334643
(24)【登録日】2018年5月11日
(45)【発行日】2018年5月30日
(54)【発明の名称】SMB2スケールアウト
(51)【国際特許分類】
   G06F 15/00 20060101AFI20180521BHJP
   G06F 13/00 20060101ALI20180521BHJP
【FI】
   G06F15/00 420B
   G06F13/00 351M
【請求項の数】20
【全頁数】18
(21)【出願番号】特願2016-204949(P2016-204949)
(22)【出願日】2016年10月19日
(62)【分割の表示】特願2014-529877(P2014-529877)の分割
【原出願日】2012年9月7日
(65)【公開番号】特開2017-79064(P2017-79064A)
(43)【公開日】2017年4月27日
【審査請求日】2016年10月19日
(31)【優先権主張番号】13/228,818
(32)【優先日】2011年9月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(72)【発明者】
【氏名】クルーズ,デーヴィッド・エム
(72)【発明者】
【氏名】ロヴィンガー,ダニエル・イー
(72)【発明者】
【氏名】ジョリー,トーマス・イー
(72)【発明者】
【氏名】ピンカートン,ジェームズ・ティー
(72)【発明者】
【氏名】ジョージ,マシュー
(72)【発明者】
【氏名】バッテパティ,ルーペシュ・シー
(72)【発明者】
【氏名】シャーン,ミンドン
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2000−163369(JP,A)
【文献】 特開2010− 9090(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/00
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
持続的ハンドルを提供するためのコンピュータシステムであって、
少なくともクラスタ内の第1のサーバおよび第2のサーバを備え、当該第1のサーバ及び第2のサーバが、サーバクラスタの一部であり、
前記第1のサーバが、
前記第2のサーバとの先に確立された(established)セッションを特定するセッションセットアップ要求を含む接続要求を、クライアントから受信し、
前記第2のサーバに、前記先に(previously)確立されたセッションのオーナーシップ要求を送信する
ように構成され、
前記第2のサーバが、
前記第1のサーバから、セッションセットアップ要求を含む、前記オーナーシップ要求を受信し、
前記オーナーシップ要求の受信に応じて、前記先に(previously)確立されたセッションに関連する1つ又は複数のリソースについての保留中操作が存在しないことを保証し(ensure)、
保留中操作が存在しない場合に、前記先に(previously)確立されたセッションを無効にする、
ように構成されている、
コンピュータシステム。
【請求項2】
前記セッションを無効にすることが、少なくとも、
前記先に確立されたセッションに関連する、少なくとも1つのオープンハンドルをクローズすること、及び、
前記先に確立されたセッションに関連する前記1つ又は複数のリソースにおける、少なくとも1つのロックを解除すること、
の1つを含む、
請求項1に記載のコンピュータシステム。
【請求項3】
前記第2のサーバが、更に、前記先に確立されたセッションのオーナーシップを、前記第1のサーバに転送するように構成される、
請求項2に記載のコンピュータシステム。
【請求項4】
前記先に確立されたセッションを転送することが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースのオーナーシップを、前記第1のサーバに転送することを含む、請求項3に記載のコンピュータシステム。
【請求項5】
前記先に確立されたセッションを転送することが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースを、前記第1のサーバに転送することを含む、請求項3に記載のコンピュータシステム。
【請求項6】
保留中操作が存在しないことを保証することが、少なくとも、
1つ又は複数の保留中操作を完了させること、及び、
前記1つ又は複数の保留中操作をキャンセルすること、
の1つを含む、
請求項1に記載のコンピュータシステム。
【請求項7】
サーバクラスタ環境において、先に確立されたセッションを転送するための方法であって、サーバクラスタ環境が、複数のノードを含むものであり、当該方法が、
前記サーバクラスタ内の第1のノードが、前記サーバクラスタ内の第2のノードからオーナーシップ要求を受け取って、前記先に確立されたセッションを、第2のノードに転送するステップであって、オーナーシップ要求が、セッションセットアップ要求を含むものと、
オーナーシップ要求を受信することに応じて、前記サーバクラスタ内の第1のノードが、前記先に確立されたセッションに関連する、1つ又は複数のリソースに対する保留中操作が存在するかを判断するステップと
保留中操作が存在しないときに、前記サーバクラスタ内の第1のノードが、前記先に確立されたセッションを無効とするステップと
を含む方法。
【請求項8】
前記先に確立されたセッションを転送する要求が、セッション識別子を含み、当該セッション識別子が、前記先に確立されたセッションを識別するために用いられる、請求項7に記載の方法。
【請求項9】
前記先に確立されたセッションに関連する前記1つ又は複数のリソースの保留中操作が存在するときに、前記保留中操作が完了することを待機するステップ、を更に含む、請求項7に記載の方法。
【請求項10】
前記先に確立されたセッションに関連する前記1つ又は複数のリソースに対して保留中操作が存在するときに、当該保留中操作を解除するステップを更に含む、請求項7に記載の方法。
【請求項11】
前記先に確立されたセッションを無効するステップが、少なくとも、
前記先に確立されたセッションに関連する、少なくとも1つのオープンハンドルをクローズするステップ、及び、
前記先に確立されたセッションに関連する前記1つ又は複数のリソースにおける、少なくとも1つのロックを解除するステップ
の1つを含む、
請求項7に記載の方法。
【請求項12】
前記先に確立されたセッションのオーナーシップを、第2のノードに転送するステップを更に含む、請求項7に記載の方法。
【請求項13】
前記先に確立されたセッションを転送するステップが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースのオーナーシップを、前記第2のノードに転送するステップを含む、請求項12に記載の方法。
【請求項14】
前記先に確立されたセッションを転送するステップが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースを、第1のノードに転送するステップを含む、請求項12に記載の方法。
【請求項15】
コンピュータによって実行可能な命令を記憶するコンピュータ記憶装置であって、当該命令が、複数のノードを含むサーバクラスタ内の少なくとも1つのノードによって実行されたときに、
前記サーバクラスタ内の第1のノード前記サーバクラスタ内の第2のノードからオーナーシップ要求を受け取って、先に確立されたセッションを、第2のノードに転送するステップであって、オーナーシップ要求が、セッションセットアップ要求を含むものと
オーナーシップ要求を受信することに応じて、前記サーバクラスタ内の第1のノードが、先に確立されたセッションに関連する、1つ又は複数のリソースに対する保留中操作が存在するかを判断するステップと
保留中操作が存在しないときに、前記サーバクラスタ内の第1のノードが、先に確立されたセッションを無効とするステップと
を含む方法を実行する、コンピュータによって実行可能な命令を記憶するコンピュータ記憶装置
【請求項16】
前記先に確立されたセッションを転送する要求が、セッション識別子を含み、当該セッション識別子が、前記先に確立されたセッションを識別するために用いられる、請求項15に記載のコンピュータ記憶装置
【請求項17】
前記先に確立されたセッションを無効にするステップが、少なくとも、
前記先に確立されたセッションに関連する、少なくとも1つのオープンハンドルをクローズするステップ、及び、
前記先に確立されたセッションに関連する前記1つ又は複数のリソースにおける、少なくとも1つのロックを解除するステップ
の1つを含む、
請求項15に記載のコンピュータ記憶装置
【請求項18】
前記先に確立されたセッションのオーナーシップを、第2のノードに転送するステップを更に含む、請求項15に記載のコンピュータ記憶装置
【請求項19】
前記先に確立されたセッションを転送するステップが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースのオーナーシップを、前記第2のノードに転送するステップを含む、請求項18に記載のコンピュータ記憶装置
【請求項20】
前記先に確立されたセッションを転送するステップが、前記先に確立されたセッションに関連する前記1つ又は複数のリソースを、第1のノードに転送するステップを含む、請求項18に記載のコンピュータ記憶装置
【発明の詳細な説明】
【技術分野】
【0001】
本願発明の一実施例は、例えば、SMB2スケールアウトに関する。
【背景技術】
【0002】
[0001]サーバクラスタは、一般に、クライアントにフェイルオーバー、および情報の高い可用性を提供するに用いられる。従来、クラスタ環境は、クライアントサーバプロトコルに従って設計されており、クライアントは、サーバに接続してサーバに利用可能なリソースにアクセスする。従来のクラスタ化環境では、環境を構成する相異なるサーバが、相異なるファイルシステムにアクセスすることがある。共通のファイルシステムにアクセスできないことにより、従来のファイルシステムクラスタの機能性が制限されている。
【0003】
[0002]諸実施形態は、これらおよび他の考慮すべき事柄に関して作成されたものである。また、比較的具体的な問題について論じているが、諸実施形態は、背景において特定されたこれらの具体的な問題を解決することに限定すべきでないことを理解されたい。
【0004】
[0003]この概要は、「発明を実施するための形態」の項でさらに後述する概念の選択を簡略化した形態で紹介するために与えられる。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定するように意図するものでも、また特許請求される主題の範囲を決定する際の助けとして使用すべきであるように意図するものでもない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願発明の一実施例は、例えば、SMB2スケールアウトに関する。
【課題を解決するための手段】
【0006】
[0004]本開示の諸実施形態は、スケールアウトされたクラスタ化環境を提供し、ここで、ファイルシステムが、クラスタ内の各ノードがクラスタ内に常駐するすべてのリソースにアクセスできるように論理的にクラスタ化され得る。ファイルシステムは、クラスタ化環境内の各ノードにアクセスできるので、クライアントは、クライアントがどのノードに接続するかに関係なく、クラスタのリソースにアクセスすることができる。そのような環境により、クライアントには、クラスタ化環境に接続している際の選択肢が与えられる。クライアントは、サーバクラスタに効率的に接続するように、スケーリングされたクラスタノードの柔軟性を活用することができる。
【0007】
[0005]他の諸実施形態では、スケーリングされたクラスタ化環境により、クライアントは、クライアントが接続を確立する実際のノードに関係なく、クラスタにわたってリソースにアクセスすることが可能になる一方、一旦クライアントがノードとの接続を確立すると、クライアントは、クラスタ環境のそのときのノード間で転送される状態情報の量を抑えるために、同じノードとのその接続を維持しようと試みる。
【0008】
[0006]しかしながら、いくつかの事例では、クライアントは、同じノードとの接続を維持できないこともあるが、スケーリングされたクラスタ化環境内の異なるノードに接続することが求められる。さらなる環境では、スケーリングされたクラスタ環境は、あるノードから別のノードへのクライアントの移動を容易にするために、セッション情報、状態情報、およびまたはハンドルを格納し、維持することを行う。クラスタのノードは、クライアント接続の移動を容易にするために、相互間でそのような情報を通信できる。
【0009】
[0007]諸実施形態は、コンピュータ処理、コンピューティングシステムとして、またはコンピュータプログラム製品もしくはコンピュータ可読媒体などの製造物品として実装可能である。コンピュータプログラム製品は、コンピュータシステムによって読取り可能な、かつコンピュータ処理を実行するための命令のコンピュータプログラムを符号化するコンピュータストレージ媒体とすることができる。コンピュータプログラム製品はまた、コンピューティングシステムによって読取り可能な、かつコンピュータ処理を実行するための命令のコンピュータプログラムを符号化する搬送波における伝搬信号とすることができる。
【0010】
[0008]非限定的な包括的でない諸実施形態を以下の図を参照して説明する。
【図面の簡単な説明】
【0011】
図1】[0009]本明細書に説明される諸実施形態を実施するのに使用され得るシステムを示す図である。
図2】[0010]クライアントが、サーバクラスタに接続する際、実行することができる方法の一実施形態の図である。
図3】[0011]クライアントが、クラスタ化環境内のノード間で接続を転送する際、実行することができる方法の一実施形態の図である。
図4】[0012]持続的ハンドルを維持および転送するためにクラスタ化環境内のノードによって実行される方法の一実施形態の図である。
図5】[0013]先に確立されたセッションのオーナーシップを要求するためにクラスタ化環境内のノードによって実行される方法の一実施形態の図である。
図6】[0014]諸実施形態を実施するのに適しているコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【0012】
[0015]様々な実施形態は、本明細書の一部を形成し具体的な例示的実施形態を示す、添付の図面を参照して以下により完全に説明される。しかしながら、諸実施形態は、多数の相異なる形態で実施可能であり、本明細書に記述される実施形態に限定されるものと見なすべきではなく、むしろ、これらの実施形態は、本開示が完全であり十分であるように、かつ当業者に実施形態の範囲を十分に伝えるように与えられるものである。諸実施形態は、方法、システムまたはデバイスとして実施可能である。したがって、諸実施形態は、ハードウェアの実装形態、全体としてソフトウェアの実装形態、またはソフトウェアおよびハードウェアの側面を組み合わせた実装形態の形をとり得る。そのため、以下の詳細な説明は、限定する意味で解釈すべきではない。
【0013】
[0016]図1は、本明細書に開示される実施形態のいくつかを実施するのに使用され得るシステム100を示している。システム106は、1つまたは複数のノードを含んでいる例示的なクラスタ化システムとすることができる。クラスタ化システムの一例は、図1に示す、1つまたは複数のサーバを備えたサーバクラスタである。システム100は、クライアント102および104と、サーバクラスタ106とを含む。クライアント102および104は、ネットワーク108を介してサーバクラスタ106と通信する。諸実施形態では、ネットワーク108は、インターネット、WAN、LAN、または当技術分野に知られている任意の他のタイプのネットワークであってもよい。サーバクラスタ106は、クライアント102および104におけるアプリケーションによってアクセスされるリソースを格納する。クライアント102および104は、クラスタ106におけるリソースにアクセスするようにクラスタ106とのセッションを確立する。図1では、クライアント102および104のみがクラスタ106と通信するように示されているが、他の諸実施形態では、サーバクラスタ106からの情報にアクセスする2つ以上のクライアントが存在することもある。諸実施形態では、クライアント102および104は、SMB2
プロトコルに従って、サーバクラスタ106にアクセスすること、またはサーバクラスタ106と通信することが可能である。
【0014】
[0017]図1に示すように、サーバクラスタ106は、クラスタ106において格納された情報についての高い可用性と冗長性の両方をもたらす1つまたは複数のノード、例えば、サーバ106A、106B、および106Cを含む。サーバクラスタ106の1つまたは複数のノードは、インターネット、WAN、LANなどのネットワーク、または当技術分野に知られている任意の他のタイプのネットワークを介して相互に通信することができる。諸実施形態では、クラスタ106は、クライアント102および104によってアクセスされるファイルシステム、データベース、または他の情報を有することができる。図1には3つのサーバが示されているが、他の諸実施形態では、クラスタ106が、4つ以上のサーバを含むことも、または2つ以下のサーバを含むこともある。
【0015】
[0018]諸実施形態では、サーバクラスタ106は、スケールアウトされたサーバクラスタである。諸実施形態では、スケールアウトされたサーバクラスタは、サーバクラスタ内の各ノード(例えば、サーバ106A、106B、および106C)によってアクセス可能なファイルシステム108を含む。一例として、スケールアウトされたクラスタでは、ファイルシステムは、ファイルシステムを構成する1つまたは複数のディスクが、サーバクラスタ内の各サーバから見えるように、論理的にクラスタ化される。そのような環境では、スケーリングされたサーバクラスタは、クラスタ内のノードにわたってリソースの共有化を可能にする。1つのそのような実施形態では、サーバクラスタ106は、サーバクラスタ106内の各サーバがアクセスできる1つまたは複数のデータストアを含んだ中央データリポジトリを含む。そのような実施形態では、中央リポジトリにリソースを格納することにより、各サーバは、ファイルシステムにアクセスすることが可能になる。別の実施形態では、共有ファイルシステムは、サーバクラスタ106内の各サーバのローカルファイルシステムにわたってリソースを複製することによって実現可能である。そのような諸実施形態では、当技術分野に知られているデータを複製するいずれのやり方も、クラスタを構成するサーバにわたってクラスタリソースを複製するのに用いることができる。
【0016】
[0019]サーバクラスタ106など、スケールアウトされたサーバクラスタ内に論理的にクラスタ化されたファイルシステムを含めることにより、従来のサーバクラスタでは利用できない追加の機能性が提供される。一実施形態では、論理的にクラスタ化されたファイルシステムは、クラスタ化環境の一部である各ノードが、この環境におけるいずれのリソースにもアクセスすることができることを確実にする。諸実施形態では、リソースは、クラスタ化環境において提供されるアプリケーション、ファイル、オブジェクト、データ、または任意の他のタイプのリソースとすることができる。これにより、クライアントは、クライアントがどのノード(例えば、サーバ106A、106B、および/または106C)との接続を確立するかに関係なく、ファイルシステムにおけるいずれのリソースにもアクセスする、かつ/またはそうでなければ、操作することが可能になる。諸実施形態では、ファイルサーバ106は、名前解決機構を使用して共通の名前で、あらゆるノードを登録することができる。名前解決機構の非限定的な例は、ドメインネームシステム(DNS)である。例えば、サーバクラスタ106は、DNSサーバ(図1には示さず)における共通の名前でサーバ106A、106B、および106Cを登録することができる。DNSサーバは、サーバクラスタ106の一部であっても、またはサーバクラスタ106の外部にあってもよい。
【0017】
[0020]クライアントは、サーバクラスタ106内のサーバにアクセスしようと試みる際、名前解決機構にアクセスして、サーバのアドレスを取得することができる。例えば、クライアントは、DNSサーバとコンタクトをとって、サーバクラスタ106内のサーバのアドレスを取得することができる。サーバシステムは、共通の名前ですべてのサーバを登
録済みであるので、DNSサーバは、サーバクラスタ106を構成する各サーバ(例えば、サーバ106A、106B、および106C)のアドレスのリストを返信することができる。諸実施形態では、アドレスは、IPアドレス、URL、URI、または当技術分野に知られている任意の他のタイプのアドレスとすることができる。複数のアドレスが返信されるので、クライアントには、どのサーバと接続するかの選択肢が与えられる。諸実施形態では、クライアントは、サーバから受信するリスト内の第1のアドレスに接続するように選択することが可能である。いくつかの事例では、クライアントは、第1のアドレスによって特定された第1のサーバ(例えば、サーバ106A)に接続することがうまくいかない場合がある。サーバクラスタ106内の各サーバは、同様の機能性をクライアントに提供できるので、クライアントは、サーバクラスタ106内の別のサーバに接続するように決めることが可能である。クライアントは、第1のサーバに首尾よく接続することができない場合、所定の期間、待機した後、名前解決機構から受信したアドレスのサブセット(例えば、サーバ106Bおよびサーバ106C)に接続し、上首尾である接続を選ぶように1つまたは複数の要求を発することができる。1つまたは複数の要求は、並行して行われてもよく、この場合、クライアントは、上首尾な接続が確立される第1のサーバに接続することができる。
【0018】
[0021]アドレスのリストの具体的な順序付けは、上記に規定したが(例えば、第1のリストのアドレスとしてサーバ106A)、当業者には、アドレスのリストはいずれの順序であってもよいことが認識されよう。諸実施形態では、ラウンドロビン技法が、名前解決機構とともに用いられることがあり、例えば、DNSラウンドロビンは、ネットワークにわたって負荷バランスを行うのに活用され得る。複数のクライアント(例えば、クライアント102および104)がサーバクラスタ106に同時に接続することがあるので、ラウンドロビン技法は、相異なるクライアントに与えられる第1のアドレスが変わることを確実にする。したがって、初期接続要求は、クラスタ化環境のすべてのノードにわたって広められる。さらには、クライアントは、アドレスのサブセットをランダムに選定することができ、第1のサーバとの接続における試みが失敗した後、追加の訂正要求を発し、それによって、追加の負荷バランスの仕組みがもたらされる。
【0019】
[0022]諸実施形態では、一旦クライアントがサーバクラスタ106内のサーバに接続されると、クライアントは、同じサーバに接続されたままでいることを確実にし得る。各サーバ(例えば、サーバ106A、106B、および106C)は、論理的にクラスタ化されたファイルシステムを共有するが、クライアントのセッション状態は、それが接続されているサーバによってハンドリングされ得る。したがって、サーバにわたって状態同期トラフィックを最小限にするために、クライアントは、同じサーバに接続されたままでいることを確実にし得る。例えば、クライアント102がサーバ106Aに接続される場合、クライアント102は、その接続およびリソース使用量のすべて(例えば、オープンファイル)がサーバ106Aに関するものであることを確実にするように試みることができる。そのような諸実施形態では、クライアント102は、サーバ106Aへのその接続を失った場合、サーバクラスタ106に再接続する際、サーバ106Bまたは106Cではなく、サーバ106Aに再接続するように試みることになり、それによって、サーバクラスタ106内の相異なるサーバ間のセッション状態を転送する必要性が抑えられる。諸実施形態では、クライアントは、接続を失うと、同じサーバに再接続するように試みるので、サーバは、クライアントとの通信を失った後でも、クライアントのセッション状態を維持することが可能である。例えば、クライアント102がサーバ106Aとの接続を失った場合、サーバ106Aは、クライアント102のセッション状態を維持することが可能である。クライアント102がその接続を再確立する際、セッション状態の持続性により、クライアント102は、サーバ106Aとの再接続時にそのセッション情報(例えば、状態情報)を再使用することが可能になる。
【0020】
[0023]しかしながら、いくつかの状況では、クライアントがサーバクラスタ106内の単一のサーバとその接続を維持することは効率的でないことも、または可能でないこともある。例えば、サーバノード障害、所与のサーバとの失われた接続、もしくはサーバの負荷バランス、パッチなどの管理上の動作、または任意の他のタイプの管理上の動作は、クライアントが同じノードに再接続することを不可能にする可能性がある。ノードの変更を容易にするために、サーバクラスタ106は、クライアントによってアクセスされるリソースへの持続的ハンドルをサポートすることが可能である。持続的ハンドルにより、クライアントは、第2のノードに接続する際、第1のノードにおいて確立済みのハンドルを再開することが可能になる。例えば、クライアント102がその初期接続をサーバ106Aからサーバ106Cへと変更する場合、クライアント102によってサーバ106Aにおいて使用されたハンドルは、サーバ106Cに転送され得る。
【0021】
[0024]諸実施形態では、サーバクラスタ106は、持続的状態ストアを用いて、持続的ハンドルを提供することが可能である。例示的な持続的状態ストアは、サーバクラスタ106の1つまたは複数のノード内に存在し得るレジュームキーマネージャである。しかしながら、当業者には、任意のタイプのキャッシュまたはデータストアをサーバクラスタ106が利用して、持続的ハンドルを容易にし得ることが認識されよう。一実施形態では、サーバクラスタ106は、集中型持続的状態ストアを備える。そのような諸実施形態では、サーバクラスタ106内の単一のノード(例えば、サーバ106B)は、クライアントセッションのためのオープンハンドルの持続的状態を維持する。そのような諸実施形態では、その全体が参照によって本明細書に組み込まれている2011年9月9日に出願された「Clustered Client Failover(クラスタ化されたクライアントフェイルオーバー)」(代理人整理番号第14917.1840US01号)という名称の同一出願人による同時係属中の米国特許出願第13/228,732号に記載されている無効化技法など、先のセッションの無効化ロジックを用いることによって、クライアントが1つのノードから別のノードに切り替える(例えば、サーバ106Aから106Cへの切替えの)たびに、クライアントセッションの一部であるハンドルのオーナーシップは、ノード間で転送され得る(例えば、サーバ106Aからサーバ106Cにオーナーシップが転送される)。他の諸実施形態では、ハンドルのオーナーシップは、ハンドルごとにクライアントによって明示的に転送され得る。
【0022】
[0025]別の実施形態では、持続的状態ストアは、分散型状態ストアであってもよい。そのような諸実施形態では、持続的状態ストアは、サーバクラスタ106のノードにわたって分布され得る。そのような諸実施形態では、各ノードは、持続的状態ストアを格納することができる。クラスタワイド状態複製アルゴリズムは、分散型状態ストアにわたって状態を複製するために使用され得る。そのような諸実施形態では、サーバクラスタ106は、ノードのサブセットが機能しない場合には、状態情報を維持する。
【0023】
[0026]上述のように、スケーリングされたクラスタの各ノードは、論理的にクラスタ化されたファイルシステムに接続される。複数のクライアントが同じリソースにアクセスする際の競合を回避するために、サーバクラスタ106は、1つまたは複数のノード(例えば、106A、106B、および/または106C)に、リソースに対する便宜的ロックまたはリースを採る能力を与えることによって、分散された状態解決法を行うことが可能である。諸実施形態では、共有リーダは、複数のリーダがクラスタの複数のノードにおける同じファイルにアクセスできるようにするRH便宜的ロックを使用することによって、サポートされ得る。さらなる諸実施形態では、書込みロックもまた、サーバクラスタ106によってサポートされ得る。
【0024】
[0027]本明細書に説明されているように、当業者には、スケーリングされたサーバクラスタは、スケーリングされていないサーバクラスタでは利用できない追加の機能性をもた
らすことが認識されよう。追加の機能性の具体的な例は、図1に関して与えられたが、当業者には、これらは、スケーリングされたサーバクラスタによってもたらされる利点および機能性の非限定的な例であることが認識されよう。
【0025】
[0028]図2は、クライアントが、クラスタ化環境に接続する際、実行することができる方法200の一実施形態である。例えば、クライアント102(図1)などのクライアントは、方法200を用いて、クラスタ化環境に接続する際、どのノード(例えば、106A、106B、および/または106C)との接続を確立すべきであるかを判定することができる。フローは動作202から開始し、ここで、クライアントは、DNSサーバなどの名前解決機構からアドレスリストを受信する。図1に関して論じたように、諸実施形態では、クラスタ化環境内の各ノードは、クライアントに類似の機能性を提供でき得る。したがって、クライアントは、クライアントがどのノードに接続するかに関係なく、首尾よく、所望の動作を実行する、またはクラスタ化環境内の所望のリソースにアクセスすることができる。
【0026】
[0029]フローは動作204へと続き、ここで、クライアントは、動作202で受信したアドレスのリスト内の第1のアドレスによって特定された第1のノードに接続しようと試みる。クライアントは、動作204で、第1のアドレスによって特定されたノードに初期接続要求を送信することによって、第1のノードに接続しようと試みることができる。しかしながら、当業者には、動作203でノード(例えば、サーバ)との接続を試みるいかなるやり方も認識されよう。諸実施形態では、クライアントは、動作206によって示されるように、所定の期間、第1の試みが成功するのを待つことができる。しかしながら、クラスタ化環境内のいずれのノードもクライアントに代わっていずれのリソースにアクセスできるので、クライアントは、第1の試みが失敗した場合、または長い時間かかっている場合、他のサーバクラスタに試み要求を発することができる。動作206には、所定の期間、クライアントが待つことが記載されているが、その時間は、クライアントによって動的に決定され得る。
【0027】
[0030]別の実施形態では、サーバに接続する第1の試みが上首尾になり得る一方で、ノードはクラスタ化環境のリソースにアクセスできないことがある。例えば、アドレスのリストは、不正確なアドレス、またはもはやクラス化環境の一部ではないノードのアドレスを含んでいる場合がある。さらなる実施形態では、エラーにより、クラスタ化環境リソースへのノードのアクセスが妨げられる場合がある。クライアントは、そのような状況を特定するために必要なロジックを使用することができる。これらの状況では、クライアントは、障害時の上首尾な試みを処理し、方法200の実行を継続することができる。
【0028】
[0031]第1の試みが失敗すると、または期間が満了した後、フローは動作208へと続き、ここで、クライアントは、アドレスのリストからアドレスのサブセットをランダムに選定する。諸実施形態では、サブセットアドレスをランダムに選定することより、クラスタ化環境に負荷バランスの利点がもたらされ、それは、複数のクライアントがたった1回でそのノードと接続しようとする試みを可能にする。各クライアントが接続すべきノードのサブセットをランダムに選定する場合、より良い接続バランスがクラスタ化環境にわたって確立され得る。しかしながら、他の諸実施形態では、クライアントは、ランダムにサブセットを選定しなくてもよく、リストに登場する順序でアドレスを選定してもよい。さらなる諸実施形態では、クライアントは、動作208でアドレスのリストのサブセットを選定するのではなく、リスト内のすべてのアドレスを選定してもよい。
【0029】
[0032]フローは動作210へと続き、ここで、クライアントは、選定されたサブセット内のアドレスによって特定された1つまたは複数のノードに接続しようと試みる。一実施形態では、クライアントは、動作210で並行して複数のノードに接続しようと試みるこ
とができ、それによって、接続処理の速度が上がる。諸実施形態では、クライアントは、動作210で相異なるノードに1つまたは複数の追加の接続要求を送信することができるが、動作204に関して説明したように、接続を試みるいずれのやり方も、本明細書に説明される諸実施形態とともに用いることができる。
【0030】
[0033]フローは動作212へと続き、ここで、クライアントは、上首尾な接続の指示を受信する。諸実施形態では、この指示は、クライアントがノードに接続できることを示した、クライアントがノードから受信するメッセージとすることができる。諸実施形態では、クライアントは、動作210で並行の試みを行う場合、動作212で、クライアントに首尾よく応答する第1のノードに接続しようと決めることができる。他の諸実施形態では、クライアントは、クラスタ化環境内の相異なるノードから上首尾な試みの複数の指示を受信することができる。そのような諸実施形態では、クライアントは、どのノードに接続すべきかを選択することができる。さらなる諸実施形態では、これらの指示は、ノードの現在の負荷など、ノードについての性能を提供することができる。クライアントは、そのような情報を使用して、どのノードへの接続を確立すべきかを判定することができる。例えば、クライアントは、より軽い負荷、具体的なハードウェア構成などを有するノードに接続することを選択することができる。一旦クライアントがノードを選定すると、フローは動作214へと進み、クライアントは、そのノードに接続する。
【0031】
[0034]ノードに接続した後、クライアントは、このノードとのセッションを確立し、クラスタ化環境内のリソースにアクセスできる。図1に関して説明したように、クライアントは、一旦ノードへの接続を確立すると、同じノードとのその接続を維持しようと試みる。これにより、クライアントが1つのノードから別のノードに接続を転送する際に発生し得る状態情報の伝送が抑えられる。そのような諸実施形態では、クライアントが、例えば、ネットワーク障害またはクライアントクラッシュなどのエラーを起因として、ノードとの接続を切った場合、クライアントは、エラーからの回復後、同じノードに再接続しようと試みることがある。
【0032】
[0035]しかしながら、クライアントが同じノードに再接続することは必ずしもできるとは限らない。例えば、ノードに障害が生じた場合、クライアントは、ノードとの接続性を失った場合、またはノードが管理上の目的で(例えば、負荷バランスの要件、ノードのパッチなどを起因として)利用可能でない場合、クライアントは、その接続を異なるノードを介してクラスタ化環境へ再確立することができる。図3は、クライアントがクラスタ化環境内のノード間の接続を転送する際に行うことができる方法300の一実施形態である。
【0033】
[0036]フローは動作302から開始し、ここで、クライアントは、新規ノードとの接続が求められていることを判定する。例えば、ネットワークまたはノードの障害を起因としてノードとの接続を失うと、クライアントは、クラスタ化環境内の同じノードに再接続することはできないと判定することができる。別の実施形態では、クライアントは、ノードからの性能情報を受信することができる。性能情報に基づいて、クライアントは、より良いサービスをクライアントに提供することができる別のノードに接続を転送するように決めることができる。例えば、クライアントは、ノードが重いトラフィック状態に置かれていることを示す情報を受信することができる。そのような状況では、クライアントは、別のノードに再接続することが求められていないこともあるが、任意選択で、性能上の理由でそうするように決めてもよい。同様に、ノードからの性能情報を受信せずに、例えば、ノードが要求を実行するのにどれだけ長くかかるのかを監視することによって、クライアントは、自身でこの情報を判定してもよい。
【0034】
[0037]別の実施形態では、ノードは、クライアントがその接続をクラスタ内の異なるノ
ードに転送することを求めることができる。例えば、ノードがパッチまたは負荷バランスの目的でオフラインにしようとしている場合、ノードは、その接続を異なるノードに転送するようにクライアントに求めることができる。そのような諸実施形態では、ノードは、クライアントがその接続を転送しなくてはならないことを示すメッセージをクライアントに送信することができる。そのような通信を実行する諸実施形態は、その全体が参照によって本明細書に組み込まれている2011年3月29日に出願された「Providing a Witness Service(ウィットネスサービスの提供)」という名称の同一出願人による同時係属中の特許出願(米国特許出願第13/074,920号)に記載されている。
【0035】
[0038]ノード間の接続転送が求められていることが判定された後、フローは動作304へと続く。動作304で、クライアントは、クラスタ化環境内の異なるノードに接続しようと試みる。例えば、クライアントは、クラスタ化環境内の1つまたは複数のノードに接続要求を送信することができる。諸実施形態では、クライアントは、方法200に関して説明したステップのすべてまたはサブセットを実行することによって、クラスタ化環境内の第2のノードに接続することができる。別の実施形態では、クライアントは、クラスタ化環境によって特定のノードに接続するように指向されてもよい。首尾よく試みがなされると、フローは動作306へと続き、クライアントは、クラスタ化環境内の第2のノードに接続する。
【0036】
[0039]しかしながら、クライアントは、先に確立されたセッションを既に有するので、セッションは、異なるノードに転送可能である。動作308で、クライアントは、第2のノードにセッションセットアップ要求を送信する。諸実施形態では、セッションセットアップ要求は、クライアントが先に接続を確立したことを示すセッション識別子を含んだメッセージとすることができる。図5に関してさらに論じるように、セッションセットアップ要求の受信に応答して、第2のノードは、先に確立された接続のオーナーシップを取ることができる。方法300には、慎重なステップとしてセッションセットアップ要求を送信することが記載されているが、当業者には、クライアントは、動作304で第2のノードに接続する要求とともにセッションセットアップ要求またはセッション識別子を送信してもよいことが認識されよう。
【0037】
[0040]スケールアウトされたクラスタ化環境に接続する際、クライアントが用いることができる方法についてこれまで説明してきたが、次に、本開示では、そのような環境内の1つまたは複数のノードによって用いられ得る機能性について説明する。図4は、クラスタ化サーバ環境内の持続的ハンドルを維持し、転送するように、クラスタ化環境内のノードによって実行される方法400の一実施形態である。例えば、方法400は、サーバ106A、106B、および106Cなど、クラスタ化サーバ環境(例えば、サーバクラスタ106)の一部であるサーバによって実行可能である。フローは動作402から開始し、ここで、ノードは、クライアントからの接続要求を受諾し、それによって、ノードとクライアントとの間の接続が確立される。初期接続は、クライアントがこのノードに対して、またはクラスタ化環境内の別のノードに対して先に確立された接続を有していないことを示している。諸実施形態では、ノードは、クライアントの接続要求の一部としてクライアントからセッションセットアップ要求を受信しないとき、またはクライアントとの接続を確立した後間もなく、クライアントとの接続を確立していることを判定することができる。
【0038】
[0041]フローは動作404へと続き、ここで、ノードは、クライアントとのセッションを作成する。動作404で、ノードは、そのセッションにセッション識別子を割り当てることができる。セッション識別子は、クラスタ化環境内のすべてのノードにわたってグロバール一意識別子(GUID)とすることができる。セッションを作成すると、ノードは
、クライアントに代わってリソースを割り当て、かつ/またはリソースへの動作を実行することができる。そうする際、例えば、状態情報などのセッション情報が作成され得る。ノードは、セッション情報を格納することができる。状態情報に加えて、ノードは、1つまたは複数のハンドルを格納することができる。例えば、クライアントがファイルを開く場合、ファイルに対するハンドルが、クライアントに提供され得る。ノードは、セッション情報と一緒に、またはセッション情報に加えて、ハンドルを格納することができる。
【0039】
[0042]フローは動作406へと続き、ここで、ノードは、クライアントへのその接続性を失う。例えば、クライアントは、エラー(例えば、ネットワーク接続のクラッシュまたは損失)に悩まされることがある。クライアントが再接続し得ることを予想して、サーバは、動作408でセッションおよび/または情報を維持することになる。例えば、ノードは、セッションおよび/または状態情報をローカルメモリに、集中型持続的ストアに、または分散型状態ストアに書き込むことができる。前述したように、クライアントは、単一のノードとの接続を維持しようと試みることになる。諸実施形態では、クライアントは、エラーから回復後、ノードに再接続することができる。再接続すると、ノードは、クライアントが、例えば、クライアントからセッション識別子を受信することによって、先に確立された状態を既に有することを特定することができる。そのような諸実施形態では、維持されたセッション状態により、クライアントは、その先に確立されたセッションを継続することが可能になる。
【0040】
[0043]しかしながら、ある状況においては、クライアントは、ノードに再接続できないこともある。そうではなく、クライアントは、クラスタ化環境内の異なるノードに再接続することができる。そのような状況の下で、フローは動作410へと続き、ここで、ノードは、クラスタ化環境内の別のノードからセッション情報を転送するための要求を受信する。諸実施形態では、別のノードは、クライアントについてのセッションを再確立するために、セッション情報のオーナーシップを要求し、このクライアントは、オーナーシップを要求するノードに接続される。セッションオーナーシップの要求は、方法400を実行するノードが、所有する、かつ/または維持する先に確立されたセッションを特定するために使用することができるセッション識別子を含み得る。
【0041】
[0044]セッションオーナーシップの要求を受信すると、フローは動作412へと続き、ここで、ノードは先に確立されたセッションと関連付けられるリソースに対して実行される未処理の入力/出力(I/O)操作が存在しないことを確実にする。諸実施形態では、未処理のI/O操作が存在する場合、ノードは、これらの操作が完了するのを待ってから、動作414へと進む。他の諸実施形態では、ノードは、動作410でセッションリソースに対する保留中のI/O操作をキャンセルしてもよい。ノードは、保留中のI/O操作を待つことも、および/またはキャンセルすることもでき、リソース完全性を維持する。
【0042】
[0045]ノードが、すべてのI/Oが完了した(またはキャンセルされた)ことを確実にした後、フローは動作414へと続く。動作414で、ノードは、先の確立されたセッションを無効にする。セッションを無効にすることは、セッションの一部である任意のオープンハンドルをクローズすることを含むことができる。他の諸実施形態では、セッションを無効にすることは、リソースに存在し得る任意のロックを解除することを含み得る。諸実施形態では、セッションの無効化はまた、図1に関して説明した無効化ロジックを含み得る。さらには、諸実施形態では、単一のステップの無効化が、実行されてもよく、ここで、ノードは、ノードが各ファイルハンドルを個々に無効にする必要性をなくすために、先に確立されたセッションについてのすべてのハンドルおよび/またはロックを無効にする。
【0043】
[0046]先に確立されたセッションが無効にされた後、フローは動作416へと続き、こ
こで、ノードは、セッションのオーナーシップを要求側ノードに転送する。諸実施形態では、セッションのオーナーシップの転送は、セッションに関連するすべての関連リソースのオーナーシップを転送することを含み得る。動作416で転送され得る例示的リソースはファイルハンドルであるが、他のリソースのオーナーシップも、動作416で転送することができる。さらなる諸実施形態では、セッションに関連するリソースのオーナーシップを転送することは、1つのノードから別のノードへのリソースの転送を含み得る。効率性のため、すべてのセッション情報は、動作416でまとめて転送することができ、それによって、ノード間に必要な通信の数が抑えられる。
【0044】
[0047]図5は、先に確立されたセッションのオーナーシップを要求するために、クラスタ化環境内のノードによって実行される方法500の一実施形態である。例えば、方法400は、サーバ106A、106B、および106Cなど、クラスタ化サーバ環境(例えば、サーバクラスタ106)の一部であるサーバによって実行可能である。フローは動作502から開始し、ここで、ノードは、クライアントの接続を確立する。例えば、ノードは、動作502でクライアントから接続要求のための要求を受信することができる。ノードは、接続要求を受諾し、クライアントに接続することができる。
【0045】
[0048]フローは動作504へと続き、ここで、ノードは、クライアントがクラスタ化環境内の別のノードとのセッションを先に確立したことを特定する。諸実施形態では、ノードは、クライアントからセッションセットアップ要求を受信することができる。セッションセットアップ要求は、接続要求とともに、またはクライアントに接続後、受信され得る。諸実施形態では、セッションセットアップ要求は、先に確立された接続を特定するセッション識別子を含んでいる。
【0046】
[0049]フローは動作506へと続き、ここで、ノードは、クライアントの先に確立されたセッションを現在所有する、クラスタ化環境内の第2のノードにオーナーシップ要求を送信する。オーナーシップ要求は、先のセッションと関連付けられたハンドルを無効にし、かつセッション情報をノードに転送する命令を含んでいることができる。諸実施形態では、オーナーシップ要求は、セッションセットアップ要求および/または動作504で受信したセッションidを含み得る。
【0047】
[0050]フローは動作508へと続き、ここで、ノードは、先に確立されたセッションについてのセッションおよび/または状態情報を受信する。諸実施形態では、セッションおよび/または状態情報は、第2のノードから、中央リポジトリから、またはクラスタ環境内の別の場所から受信可能である。別の実施形態では、動作508でセッションおよび/または状態情報を受信するのではなく、ノードは、動作508で集中型リポジトリ内に常駐するセッションおよび/または状態情報にアクセスすることが許可され得る。次いで、フローは動作510へと続き、ここで、ノードは、受信したかつ/またはアクセスしたセッションもしくは状態情報を使用して、クライアントのセッションを再確立し、クライアントがクラスタ化環境内のリソースにアクセスし続けることを可能にする。
【0048】
[0051]方法300〜500は、単に諸実施形態により実行可能な動作フローのいくつかの例にすぎない。諸実施形態は、図3図5に関して上記に与えた具体的な説明に限定するものでなく、追加の動作を含み得る。さらには、示されている動作のステップは、他のステップに組み合わせられても、かつ/または再構成されてもよい。さらには、より少ないステップまたは追加のステップが、図3図5に説明されている方法と共に使用されても用いられてもよい。
【0049】
[0052]図6は、本明細書に説明されている諸実施形態を実施するために使用され得る汎用コンピュータシステム600を示している。コンピュータシステム600は、コンピュ
ーティング環境のほんの一例にすぎず、コンピュータおよびネットワークのアーキテクチャの使用または機能性の範囲についていかなる限定をも提案するように意図されるものでない。また、コンピュータシステム600は、例示的なコンピュータシステム600に示されている構成要素のうちのいずれかのものまたは構成要素の組合せに関連する何らかの依存性または要件を有するものと解釈すべきものでもない。諸実施形態では、システム600は、図1に関して上述したクライアントおよび/またはサーバとして使用され得る。
【0050】
[0053]システム600は、そのもっとも基本的な構成では、典型的には、少なくとも1つの処理装置602およびメモリ604を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ604は、揮発性であっても(RAMなど)、非揮発性であっても(ROM、フラッシュメモリなど)、または何らかの組合せであってもよい。このもっとも基本的な構成は、図6に破線606で示されている。システムメモリ604は、本明細書に開示されるスケーリングされたクラスタ環境の方法につながるための命令などの命令620、およびストレージ608などのストレージとともにファイルストレージシステムに格納され得るセッション状態情報などのデータ622を格納する。
【0051】
[0054]本明細書に使用されるコンピュータ可読媒体という用語は、コンピュータストレージ媒体を含み得る。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために、任意の方法および技術で実装される揮発性および不揮発性の、取外し可能および取外し不可能な媒体を含み得る。システムメモリ604、取外し可能なストレージおよび取外し不可能なストレージ608はすべて、コンピュータストレージ媒体の例(例えば、メモリストレージ)である。コンピュータストレージ媒体として、RAM、ROM、電気的消去可能なリードオンリメモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または情報を格納するために使用可能な、かつコンピューティングデバイス600によってアクセス可能な任意の他の媒体を挙げることができるが、これらに限定されるものではない。任意のそのようなコンピュータストレージ媒体は、デバイス600の一部とすることができる。コンピューティングデバイス600はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デイバスなどの入力デバイス(複数可)614を有することもできる。ディスプレイ、スピーカ、プリンタなどの出力デバイス(複数可)616もまた含められ得る。前述のデバイスは、例であり、他のデバイスも使用可能である。
【0052】
[0055]本明細書に使用されるコンピュータ可読媒体という用語はまた、通信媒体を含み得る。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の輸送機構など、変調されたデータ信号における他のデータによって具現化可能であり、任意の情報送達媒体を含んでいる。用語「変調されたデータ信号」は、信号内の情報を符号化するようなやり方で、1つまたは複数の特性が設定または変更された信号を説明することができる。限定するものではないが、例として、通信媒体は、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体、ならびに音響、無線周波数(RF)、赤外線、および他のワイヤレス媒体など、ワイヤレス媒体を含み得る。
【0053】
[0056]本発明の諸実施形態は、システムオンチップ(SOC)を介して実施可能であり、ここで、図6に示されている構成要素の各々または多くは、単一の集積回路上に集積化され得る。そのようなSOCデバイスは、1つまたは複数の処理装置、グラフィック装置、通信装置、システム可視化装置、および様々なアプリケーション機能を含み得、それらのすべては、単一の集積回路としてチップ基板上に集積化される(または焼かれる)。リソースへの継続的なアクセスを可能にすることに関して本明細書に説明されている機能は
、SOCを介して動作する際、単一の集積回路(チップ)上のコンピューティングデバイス/システム600の他の構成要素と集積化される特定用途向けのロジックを介して動作し得る。
【0054】
[0057]本明細書全体を通じて、具体的に説明された特徴、構造、または特性が少なくとも1つの実施形態に含まれていることを意味する「1つの実施形態」または「一実施形態」について参照がなされている。したがって、そのようなフレーズの使用では、まさに1つの実施形態というよりも複数の実施形態が示されている場合がある。さらには、説明された特徴、構造、または特性は、1つまたは複数の実施形態において、ならんかの適切なやり方で組み合わせることも可能である。
【0055】
[0058]しかしながら、当業者には、諸実施形態が、具体的な詳細のうちの1つまたは複数がなくても、または他の方法、リソース、情報などを用いて実施可能であることが認識できる。他の事例では、よく知られている構造、リソース、または動作については、単に諸実施形態の態様を曖昧にしないようにするために詳細に図示または説明していない。
【0056】
[0059]例示的な諸実施形態および適用例を図示し説明してきたが、諸実施形態は、上述の正確な構成およびリソースに限定されるものでないことを理解すべきである。当業者に明らかな様々な修正、変更、および変形は、特許請求される諸実施形態の範囲から逸脱することなく、本明細書に開示される方法ならびにシステムの構成、動作、および詳細において行われ得る。
図1
図2
図3
図4
図5
図6