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

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

▶ マイクロソフト コーポレーションの特許一覧

特許5734855永続予約を介する共有書込みアクセスのリソースアービトレーション
<>
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000002
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000003
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000004
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000005
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000006
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000007
  • 特許5734855-永続予約を介する共有書込みアクセスのリソースアービトレーション 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5734855
(24)【登録日】2015年4月24日
(45)【発行日】2015年6月17日
(54)【発明の名称】永続予約を介する共有書込みアクセスのリソースアービトレーション
(51)【国際特許分類】
   G06F 9/52 20060101AFI20150528BHJP
【FI】
   G06F9/46 472Z
【請求項の数】6
【全頁数】14
(21)【出願番号】特願2011-527861(P2011-527861)
(86)(22)【出願日】2009年8月19日
(65)【公表番号】特表2012-503249(P2012-503249A)
(43)【公表日】2012年2月2日
(86)【国際出願番号】US2009054304
(87)【国際公開番号】WO2010033335
(87)【国際公開日】20100325
【審査請求日】2012年8月10日
(31)【優先権主張番号】12/233,862
(32)【優先日】2008年9月19日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500046438
【氏名又は名称】マイクロソフト コーポレーション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ラザセカル ダス
(72)【発明者】
【氏名】デイビッド エー.ディオン
【審査官】 井上 宏一
(56)【参考文献】
【文献】 米国特許出願公開第2003/0065782(US,A1)
【文献】 特開2000−222373(JP,A)
【文献】 特表2005−534081(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 −9/54
(57)【特許請求の範囲】
【請求項1】
複数のノード及び記憶機構を備えるサーバクラスタ環境において、前記記憶機構のオーナーシップを存続させるため、前記複数のノードのうち前記記憶機構を所有する所有ノードによって実行される方法であって、
前記所有ノードが前記記憶機構を独占的に所有していることを表すオーナーキーを前記記憶機構のデータ構造に書込むことによって、前記オーナーキーを前記記憶機構に関連付けるステップと、
前記複数のノードのうち前記記憶機構を所有しない少なくとも1つの非所有ノードによる前記記憶機構に対する読取り又は書込みアクセスを、前記少なくとも1つの非所有ノードの共有キーが前記記憶機構のデータ構造に含まれるかどうかに基づいて許可するステップであって、各共有キーは、該共有キーを前記データ構造に挿入したノードの識別情報を含む、ステップと、
前記記憶機構を所有しない非所有ノードによる前記記憶機構のオーナーシップを取得しようとするチャレンジから、前記記憶機構のオーナーシップを防御するステップであって、前記非所有ノードによって、前記記憶機構のオーナーシップを取得するための予約キーが前記記憶機構の前記データ構造に登録されたかどうかを判定し、前記非所有ノードによって前記予約キーが前記記憶機構のデータ構造に登録された場合、前記所有ノードのオーナーキーを、当該予約キーに替えて前記記憶機構のデータ構造に書き込むことによって、前記オーナーシップを防御するステップ
を含む、方法。
【請求項2】
前記記憶機構のデータ構造は、複数の共有キーを含み、前記方法は、
前記読取り又は書込みアクセスを許可するステップの前に、前記複数のノードのうち前記サーバクラスタ環境において有効なノードを示すクラスタメンバーシップデータを取得するステップを含み、
前記読取り又は書込みアクセスを許可するステップは、前記識別情報と前記クラスタメンバーシップデータとに基づいて、前記記憶機構のデータ構造内の各共有キーが前記有効なノードの共有キーであるか判断することを含む、請求項1に記載の方法。
【請求項3】
前記読取り又は書込みアクセスを許可するステップは、前記有効なノードとして識別されなかったノードの共有キーを、前記記憶機構のデータ構造から削除することを含む、請求項2に記載の方法。
【請求項4】
記憶機構と、該記憶機構のオーナーシップを取得するよう試みる機構を含む複数のノードとを備えたサーバクラスタ環境において動作するシステムであって、
前記複数のノードのうち前記記憶機構のオーナーシップを所有する所有ノードを備え、
前記所有ノードは、前記記憶機構を独占的に所有していることを表すオーナーキーを前記記憶機構のデータ構造に書込むように構成され、
前記所有ノードは、前記複数のノードのうちのいずれかの他のノードによって行われる前記オーナーシップを所得しようとするチャレンジから、前記オーナーシップを防御することであって、前記他のノードによって、前記記憶機構のオーナーシップを取得するための予約キーが前記記憶機構のデータ構造に登録されたかどうかを判定し、前記他のノードによって前記予約キーが前記記憶機構のデータ構造に登録された場合、前記所有ノードのオーナーキーを、当該予約キーに替えて前記記憶機構のデータ構造に書き込むことによって、前記オーナーシップを防御し、
前記複数のノードのうち前記記憶機構のオーナーシップを所有していない非所有ノードは、該非所有ノードの共有キーを前記記憶機構のデータ構造に書込み、前記所有ノードは、非所有ノードによる前記記憶機構への読取り及び書込みアクセスを許可するかどうかを、前記非所有ノードの共有キーが前記データ構造内に含まれるかどうかに基づいて判断するように構成され、前記データ構造内の各共有キーは、該共有キーを前記データ構造に書き込んだ非所有ノードの識別情報を含む、システム。
【請求項5】
前記記憶機構のデータ構造は、複数の共有キーを含み、
前記所有ノードは、前記読取り及び書込みアクセスを許可するかどうかの判断の前に、前記複数のノードのうち前記サーバクラスタ環境において有効なノードを示すクラスタメンバーシップデータを取得し、
前記読取り及び書込みアクセスを許可するかどうかを判断することは、前記識別情報と前記クラスタメンバーシップデータとに基づいて、前記記憶機構のデータ構造内の各共有キーが前記有効なノードの共有キーであるかどうかを判断することを含み、前記有効なノードとして識別されなかったノードの共有キーは、前記データ構造から削除される、請求項4に記載のシステム。
【請求項6】
前記非所有ノードは、
前記複数のノードのうちのいずれかの他のノードが既に前記記憶機構のオーナーシップを有するかどうかを判定し、
前記複数のノードのうちのいずれかの他のノードが前記記憶機構のオーナーシップを有する場合、当該非所有ノードの予約キーを前記記憶機構のデータ構造に関連付け、
所定の時間の間に当該非所有ノードの予約キーが前記他のノードによって削除されなかった場合、前記他のノードから前記記憶機構のオーナーシップを取得する、請求項4に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、永続予約を介する共有書込みアクセスのリソースアービトレーションに関する。
【背景技術】
【0002】
サーバクラスタは、一般に、サーバ(ノード)のグループであり、そのサーバ(ノード)は、何れかのサーバが停止する場合、クラスタの他のサーバが停止したサーバの動作を透過的に引き継ぐ、すなわち、アプリケーションを再開して、重大な中断が発生することなく、クライアントに使用可能な状態を維持するように配置されている。このオペレーションはフェイルオーバー又はフェイルオーバークラスタリングと一般に称される。
【0003】
クラスタにおいて、各記憶装置(ハードディスクドライブ)は、1つのノードによって所有されている。オーナーノードは、適切に動作している場合、他のノードによるオーナーシップのチャレンジに対して記憶装置のオーナーシップを防御するので、オーナーが停止する場合、別のノードがオーナーシップを引き継ぐことができる。
【0004】
かかるチャレンジ−ディフェンスモデルを実装するために、米国特許第7,277,952号に開示されているように、永続予約オーナーシップアルゴリズムが使用されている。しかしながら、この永続予約オーナーシップアルゴリズムは、シェア‐ナッシングモデルを実装している。そのシェア‐ナッシングモデルにおいて、ディスクを所有しているノードは、独占的なオーナーシップとディスクに対する完全なアクセスをディスクに有し、一方、他のノードはリード‐オンリーアクセスを有する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
(関連する特許出願第12/147,956号において記載された)クラスタ共有記憶ボリューム技術の1つの態様によれば、他の正常なクラスタノードは、共有されたクラスタディスクに対して同時に書込むことができる必要がある。その為、クラスタに適切に参加していないいかなるノードをも除きつつ、正常なノードに対する記憶装置のアクセスを許可する方法が必要とされている。
【課題を解決するための手段】
【0006】
本発明の概要は、代表的な概念の選択を単純化した形態にて紹介するために提供されており、その単純化された形態は、以下に詳細な説明でさらに説明されている。本発明の概要は、特許請求の範囲に記載された発明の重要な特色若しくは本質的な特徴を特定するよう意図されていないし、又は、特許請求の範囲に記載された発明の範囲を限定するように用いられるよう意図されていない。
【0007】
簡略して、本明細書に記載された発明の種々の態様は、サーバクラスタにおけるオーナーノードが、記憶機構(例えば、ディスク又は他の記憶装置)を独占的に所有し、さらに、非所有ノードが記憶機構に対する共有読取りアクセス及び書込みアクセスを有するよう許可する技術を指向している。1つの態様において、1つのノードは、永続予約機構を介して記憶機構のオーナーシップを保持するオーナーノードを含む。記憶機構は、記憶機構に関連付けられたレジスタテーブルにキーを関連づける(例えば、書込みをする)。非所有ノードは共有されたキーをレジスタテーブルに関連づける。オーナーノードは、クラスターメンバーシップデータに対する共有キーを有効化し、有効でないと判断された全てのキーを差し替える(例えば、削除する)ので、無効なノードは、もはや記憶機構に対するアクセス権を有さない。
【0008】
1つの態様において、オーナーノードは、オーナーシップに対するチャレンジを防御する。非所有ノードは、チャレンジングキーを記憶機構に書込みし、ディフェンス時間の間、待機する。オーナーノードが適切に動作している場合、それはディフェンス時間中にチャレンジキーを検知し、それを差し替えて、オーナーシップを保持する。オーナーノードが適切に動作していない場合、オーナーノードがディフェンス時間中にチャレンジを防御することができないので、チャレンジングノードが新規なオーナーになる。
【0009】
他の利点は、添付図面とともに考慮すると、以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0010】
本願発明は、実施例として図示されており、同様の参照番号は図面の同様の要素を示す添付図面に限定されない。
図1A図1Aは、共有ディスクを有するサーバクラスタ環境における例示的要素を表すブロック図である。
図1B図1Bは、共有ディスクを有するサーバクラスタ環境における例示的要素を表すブロック図である。
図2図2は、永続予約を介してリソースアービトレーション及び共有書込みディスクアクセスを達成する例示的要素を示すブロック図である。
図3図3は、クラスタ共有ボリュームを予約し及び/又はクラスタ共有ボリュームにアクセスするためになされる例示的ステップを示すフロー図である。
図4図4は、クラスタ共有ボリュームを予約し及び/又はクラスタ共有ボリュームにアクセスするためにSCSI環境においてなされる例示的ステップを示すフロー図である。
図5図5は、クラスタ共有ボリュームを予約し及び/又はクラスタ共有ボリュームにアクセスするためにSCSI環境においてなされる例示的ステップを示すフロー図である。
図6図6は、本願発明の様々な態様が組み入れられ得るコンピューティング環境の例示的実施例を示す図である。
【発明を実施するための形態】
【0011】
本明細書に記載された技術の様々な態様が、読取りアクセス及び書込みアクセスを共有することを含み、クラスタノードが他のノードを用いて(例えば、記憶ボリュームとして構成された)ディスクに対するアクセスを共有するよう許可することに指向されている。一般に、(実際にディスクタイプの記憶装置であるかどうかに関わらず本明細書において「ディスク」又は「ハードディスク」とも称される)記憶装置は、単一のクラスタノードによって所有されている。しかしながら、本明細書に記載されているように、他のノードからの読取り及び書込み入出力(I/O)動作に対する限定は、除かれている。これにより、クラスタにおけるあらゆるノード上で駆動するクラスタ化されたアプリケーション及びサービスは、共有されたあらゆるボリューム上のデータにアクセスすることが可能となる。
【0012】
1つの例示的実装において、かかる共有は、ノードがSCSI永続予約(PR:Persistent Reservation)を所有されたディスクを用いて登録するよう許可することよって可能にされる。特に、オーナーノードは、独占的PRキーを登録してそのオーナーシップを主張し、残りのノードの各々は、「共有された」PRキーを登録する。「共有された」PRキーは、そのノードの識別子として暗号化される。一般に、有効なノードの共有PRは、別のノードによって所有されているとき、ディスクに対するそのノードの読取り及び書込みアクセスを許可する。共有PRキーを登録したノードが、もはや有効でなくなる場合(例えば、停止するか又は無効と考えられる場合)、オーナーノードは、そのノードの共有PRキーを消去するので、ディスクに対する無効なノードからの更なる入出力が防止される。
【0013】
1つの例示的実装において、この技術は、マイクロソフト(登録商標)NTFSをファイルシステムとして使用するマイクロソフト(登録商標)Windows(登録商標)サーバフェイルオーバクラスタリング及びSCSIディスクと共に動作する。しかしながら、これらは実施例にすぎないことが理解される。実際、他の環境、ファイルシステム及び/又は記憶技術が本明細書に記載された技術のうちの1つ以上の態様を実装するのに使用され得る。そういうものとして、本願発明は、本明細書に記載された特定のあらゆる実施例、態様、概念、構造、機能、又は、例示に限定されない。むしろ、本明細書に記載された実施例、態様、概念、構造、機能、又は、例示のいずれもが、非限定的であり、本発明は、一般的にコンピューティング、クラスタリング、及びデータアクセスにおいて利益及び利点を提供する様々な手法において実装され得る。
【0014】
図1Aにおいて、クラスタ環境の簡略化されたブロック図が示されている。クラスタ環境は、N0、N1、及びN2の3つのノードを含み、各々はディスク100乃至102をそれぞれ所有している。クラスタノードは、SCSI、ファイバーチャネル、ISCSI、又は、他の高速通信リンクを介してクラスタのディスクに通常接続されている。
【0015】
尚、図1Aは1つの可能な構成のみを示しており、1つのノードが1つのディスクを所有しなくてもよく、1つのノードは、1つより多いディスクを所有してもよい。例えば、図1Bにおいて、ノードN2は停止している(又は何らかの理由で通信していない)ので、ノードN0は、概略的に以下に説明するように、予約機構110を介してディスク102のオーナーシップを取得している。他のノードN1及びN2は、概ね同一の予約機構111及び112をそれぞれ有する。
【0016】
ディスクを所有するノードが、そのディスクに対する共有アクセスを提供するようにするために、複数のクラスタノードからの並列アクセスを可能にする変更された予約体系が、提供され得る。このために、図2に概略的に示すように、(ノードN1等の)各ノードは、予約機構111を含むクラスタディスクドライバ220(例えば、カーネルドライバを含むクラスタディスクシステム)を含む。以下に説明するように、(例えば、ブロック222によって表された)別のノードの類似のクラスタディスクドライバは、予約機構/アルゴリズムに参加して、ディスク101にアクセスする。一方、所有ノードのクラスタディスクドライバN1は、予約機構/アルゴリズムに参加して、オーナーシップを保持し且つ保護する。例示されたクラスタディスクドライバ220は、以下で説明するように、クラスタサービス要素224と共に動作する。
【0017】
背景技術として、米国特許第7,277,952号に開示されている従来の永続予約オーナーシップアルゴリズムは、シェア‐ナッシングモデルを実装する、すなわち、ディスクを所有しているノードは、独占的オーナーシップと完全なアクセスを有するものの、他のノードはリード‐オンリーアクセスを有する。オーナーシップは、(PRキーと称される)予約キーをディスクの上のPR予約テーブル内で使用して、書込み‐独占的レジスタント‐オンリー永続予約(Write-Exclusive, registrants-only persistent reservation)を設けることによって、オーナーノードによって主張される。所有ノードは、PRレジスタテーブルを周期的(例えば、デフォルト設定で3秒毎に)にチェックすることによって、このオーナーシップを保持し/防御し、(所有ノードがクラッシュする場合には引き継ぐために)他のノードは、それら自身のキーをPRレジスタテーブルに登録することによってオーナーシップを取得しようと試みる。所有ノードが動作可能であり、それ自身のPRキーをテーブル内で見出す場合、動作を全く取る必要はない。しかしながら、それが、PRレジスタテーブルにおけるそれ自身のキー以外のいずれかのキーを見出す場合には、所有ノードはそのキーを差し替える(すなわち、動作可能でない場合、それをテーブルから削除する。チャレンジングノードのキーは残存するので、現行のオーナーのPR予約をそれ自身と差し替えることによって、オーナーシップを引き継ぐ)。安定的であり且つ機能的なクラスタの下では、ディスクのPR予約テーブルは1つのキーを有し、そのPRレジスタテーブルはM個のキー(同じオーナーノードからのそれらのすべて)を有する。尚、Mは、MPIOシステムのディスクに対する入出力パスの数であり、非MPIOシステムに対しては、Mは1である。
【0018】
クラスタ共有ボリュームに設けられたディスクに対して、この永続予約アルゴリズムは、本明細書に記載されるように変更されて、クラスタにおけるノードが安全な方法で読取り‐書込みモードにおいて実質的に同時的にディスクにアクセスすることができるよう許可する。クラスタの外部のマシンは、クラスタ共有ボリュームディスクに対するアクセスを有していない。
【0019】
図2に概略的に示すように、物理的ディスクリソース226は、クラスタにおける共有ディスクを管理し、他の動作中に、クラスタ化されたディスクが安全にアクセスされ且つ不正行為から保護されるよう確実になし、さらに、同一の共有ディスクに対する実質的に同時のアクセスを円滑にする。これは、本明細書に記載されているように、共有永続予約(PR)キー及びクラスタメンバーシップの認識を使用することによって達成される。
【0020】
クラスタ共有ボリュームディスク予約アルゴリズムに関して、1つの例示的実装において、(例えば、クラスタサービス224の)ディスク制御マネージャ228は、物理的ディスクリソース226に呼びかけして、クラスタ化されたディスク101に対して新規の予約ポリシを設定する。特に、クラスタ化されたディスク101は、オーナーシップの上述した概念に違反することなく、他のノードからの読取り‐書込み入出力を許可する必要がある。このために、オーナーノードはディスクの制御を維持し、しかし、共有PRキー230を介して1ノードあたりのベースで入出力ポリシを緩和する。この共有PRキー機構/予約アルゴリズム111の下では、N‐ノードクラスタにおけるクラスタ共有ボリュームディスク101は、そのレジスタテーブル240においてN*M個のキーを有する。ここで、Mは、MPIO設定におけるノードからディスクに対する入出力パスの数であり、非MPIOシステムに対しては、Mは1である。オーナーノードは、レジスタテーブル232においてM個のキーを有し、予約テーブル242において1つのキー、PRキー231を有する。テーブルは、物理的に分離されている必要はなく、いかなる方法においても維持され得る、実際に、レジスタテーブルは、何らかの指示(例えば、フラグ又は順序付け)を含み得る。何らかの指示に関して、キーが(物理的に存在する必要がない)予約テーブル242“内”に存在する。
【0021】
よって、1つの態様が、クラスタディスクに対するアクセスを制御するアルゴリズムを提供して、これにより、クラスタに参加するすべてのクラスタノードがそのディスクに対して読取り‐書込みアクセスを有する。尚、これにより、クラスタにおけるすべてのノードに対するクラスタディスク上の読取り‐書込みアクセスが許可される。そして、優良な他のクラスタノードに対する可読取り‐書込み入出力アクセスを許可しつつ、それは、現行のアルゴリズムの安全なプロパティを維持する。また、それにより、ライブネス及び性能プロパティ、並びに、ディスクが所有され且つ最大で1つのクラスタノードで制御される概念が維持される。
【0022】
本明細書に記載されているように、非オーナーノードは、共有PRキーをディスクPRレジスタテーブル240に挿入する。共有キーは、すべてのノードによって共有されているのではなく、むしろ、それは、このキーを挿入するノードがディスク101に対する読取り‐書込みアクセスを他のノードと共有することを表している。キーを挿入したノードの識別子(ID)は、キーに暗号化される。したがって、N‐ノードクラスタにおけるこのアルゴリズムによって仲裁されたディスク101は、レジスタテーブル240にN個の共有PRキーを有するであろう。一実施例において、第1のキーは、オーナーノードによって挿入された独占的(PR)キー231である。残りのN−1個のキーは、非オーナーノードによって挿入された共有PRキーである。
【0023】
所有ノードは、PRレジスタテーブル240に対し周期的にクエリを実行して、キーを評価する。キーが共有キーである場合、オーナーはキーを挿入したノードのIDをキーから抽出する。ノードが有効である場合(クラスタにおいて「優良な状態」である場合)、オーナーは、キーがレジスタテーブル240に残存することを許可する。ノードが優良な状態でない場合、オーナーはキーを差し替えて、それをレジスタテーブル240から削除する。
【0024】
キーが共有キーでない場合、オーナーシップは取得しようとなされている。オーナーはかかるキーを差し替えるので、それをレジスタテーブル240から削除する。
【0025】
図3は、例えば、図2の例示された要素を介して実装される1つのかかるアルゴリズムの例示的ステップを示す概要的フロー図である。ステップ300を介して表されるような何れかの非オーナーノードに対しても、ディスク制御マネージャ228は、物理的ディスクリソース226を要求して、共有PRキー230をレジスタテーブル240に挿入する(ステップ302)。このキーは、ノード間において共有されておらず、むしろ、それを表すノードがオーナーノード及び他のあらゆるノードと共にディスクに対する読取り‐書込みアクセスを共有していることを示している。ノードの識別子(例えば、Nodeld)は、この共有PRキー230の一部である。
【0026】
オーナーノード上において、例示的ステップ300を介して区別されるように、ステップ304は、物理的ディスクリソース226にクラスタノードメンバーシップデータ254を知らせる。これは、物理的ディスクリソース226をクラスタにおいてアクティブなノードを表す単純なビットマスクを介して達成され得る(例えば、通常すべてのノードであるが、必ずしもすべてでない)。物理的ディスクリソース226は、このメンバーシップデータ254をクラスタディスクドライバ220に転送する。
【0027】
ステップ306によって表されるように、オーナーノード上のクラスタディスクドライバ220が、レジスタテーブル240における(それ自身の独占的PRキーを除く)1つ以上のスペアキーを参照するとき、クラスタディスクドライバ220は、ステップ308によって表されるように、クラスターメンバーシップデータ254に対してそれらキーの各々のNodeldを照合する。キーが有効である場合(ステップ310)、キーは、レジスタテーブル240に残存するよう許可され、そうでなければ、それは差し替えられる(ステップ312)。ステップ314は、他のキーの確認を繰り返す。各ノードが共有ボリュームアクセスに参加するN‐ノードクラスタとともに、N−1個のかかる共有PRが存在する。
【0028】
図4及び5は、SCSIコマンド環境に関してさらに詳細に説明する例示的フロー図を含む。ステップ402及び404は、ノードの予約機構への入力であり、その入力は、(例えば、ランダムに作成された数を含む)PR_キー及び(例えば3秒のデフォルト値を有する)ユーザ設定可能な間隔を含む。
【0029】
ステップ406は、予約の前に実行される登録を試みることを表している。登録が成功した場合(ステップ408)、予約の試みが、ステップ410においてなされる。予約が成功した場合、プロセスは、図5に進み、以下で説明するように、予約を維持する。そうでなければ、プロセスは、ステップ414に分岐して、永続予約アービトレーションを実行する。
【0030】
ステップ414はレジスタテーブルを読み取る。PR登録が一つだけ存在し且つ独占レジスタントオンリーのタイプである場合、このノードによって取得しようとする試みがなされるオーナーが存在する。機構は、オーナーシップを取得しようとする前に、2倍の間隔の間待機する。この間隔によって、オーナーノードはチャレンジを防御することを許可される。ステップ422は、チャレンジに対応する。
【0031】
図5は、ステップ502及び504後にノードがレジスタテーブルにおいてPRキーを検知する場合の永続予約に関する様々な維持の態様を表している、リストアップされていない場合、それは、別のノードのキーに取り替えられて、別の時間に取得しようと試みる必要がある。他のキーが全くリストアップされてない場合(ステップ506)、防御する必要はなく、プロセスは終了する。そうでなければ、プロセスは、ステップ518に進み、以下で説明するように、予約を維持する。
【0032】
ステップ508は、ステップ506で検知された他のキーが、有効なノードからの共有キーであるかどうかを評価する。そうでない場合、それは、ステップ510において差し替えられる。これにより、いずれかの無効なノードのディスクアクセス権利が削除される。ステップ512において成功しない場合、このプロセスを駆動するノードは、それを削除する能力を有しておらず、プロセスを終了せしめる。成功した場合、プロセスは、ステップ514に継続する。
【0033】
ステップ514は、ノードがオンラインに留まっており動作を継続することになっているかどうかを評価することを表している。尚、オンラインにある状態で終了する要求は、ユーザモードディスクリソースからいかなる時間においても生じ得るし、ステップ514は1つの論理フローを表している。オフラインで動作する場合、ステップ516は、ノードの予約を削除するために実行される。
【0034】
ステップ518は、特定の時間の間に待機した後に予約が残存することを確実にし、いかなるチャレンジング予約に対しても予約を防御するプロセスの通常の継続を表している。
【0035】
例示的なオペレーティング環境
図6は、図1A乃至5の実施例が実装され得る適切なコンピューティング及びネットワーク環境600の実施例を図示している。コンピューティングシステム600は好適なコンピューティング環境の1つの例にすぎない。本発明の使用又は機能性の範囲に関していかなる制限をも課すように意図されていない。コンピューティングシステム600は、例示的オペレーティング環境600に示された要素のうちいずれか1つ若しくは組合せに関連するいかなる依存関係又は要求をも有するものとして解釈されるべきでない。
【0036】
本発明は、多数の汎用若しくは専用コンピューティングシステム環境又は構成を用いて動作可能である。本発明を用いて使用に好適であり得る周知のコンピューティングシステム、環境及び/又は構成の例は、パーソナルコンピュータ、サーバー・コンピュータ、携帯型若しくはラップトップデバイス、携帯情報端末、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステム若しくはデバイスのいずれをも含む分散コンピューティング環境等を含むがこれらに限定されない。
【0037】
本発明は、コンピュータによって実行されるプログラムモジュール等のコンピュータ実行ファイル命令に関する一般的内容で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データを実装するルーチン、プログラム、オブジェクト、要素、データ構造等を含む。本発明の実施形態は、分散コンピューティング環境においても実行され得る。分散コンピューティング環境において、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される。分散コンピューティング環境においては、プログラムモジュールは、メモリ記憶装置を含むローカル記憶デバイス及びリモートメモリ記憶媒体に設けられ得る。
【0038】
図6を参照すると、本発明の様々な態様を実装する例示的システムは、コンピュータ610の形態の汎用コンピューティングデバイスを含み得る。コンピュータ610の要素は、処理ユニット620、システムメモリ630、及び、システムメモリを含む様々なシステム要素を処理ユニット620に接続するシステムバス621を含み得るが、これらに限定されない。システムバス621は、メモリバス若しくはメモリコントローラ、周辺バス、及び種々のバスアーカテクチャのいずれをも使用するローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。限定ではなく、例として、かかるアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロチャンネルアーキテクチャ(MCA:Micro Channel Architecture)バス、エンハンストISA(EISA:Enhanced ISA)バス、ビデオエレクトロニクス規格制定委員会(VESA:Video Electronics Standards Association)ローカルバス、及びメザニン・バスとしても知られるペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バスを含む。
【0039】
コンピュータ610は、種々のコンピュータ読取可能媒体を通常含む。コンピュータ読取可能媒体は、コンピュータ610によりアクセスされ得る全ての利用可能な媒体であり得るし、揮発性媒体及び不揮発性媒体、脱着可能媒体及び脱着不可能媒体の双方を含む。限定ではなく、例として、コンピュータ読取可能媒体はコンピュータ記憶媒体及び通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、若しくは他のデータ等の情報を記憶する全ての方法若しくは技術において実装された揮発性若しくは不揮発性の脱着可能媒体及び脱着不可能媒体を含み得る。
コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は、所望の情報を記憶するのに使用され且つコンピュータ610からアクセスされ得るあらゆる他の媒体を含むがこれらに限定されてない。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は伝送波若しくは他の転送機構等の変調されたデータ信号における他のデータを通常具現化し、いかなる情報配信媒体をも含む。「変調されたデータ信号」とい用語は、信号の情報をエンコードするような方法で設定され又は変化された特性のうち1つ以上を有する信号を意味している。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体と、音響媒体、RF媒体、赤外線媒体及び他の無線媒体等の無線媒体とを含む。上記のいずれの組み合わせも、コンピュータ可読媒体の範囲内に含まれ得る。
【0040】
システムメモリ630は、読取専用メモリ(ROM)631及びランダム・アクセス・メモリ(RAM)632等の揮発性メモリの及び/又は不揮発性メモリの形態のコンピュータ記憶媒体を含む。基本ルーチンを含む基本入出力システム633(BIOS)は、例えば、スタートアップ時に、コンピュータ610内の要素間の情報を転送するのに役立ち、ROM631内に通常記憶される。RAM132は、データ及び/又プログラムモジュールを通常含む。そのデータ及び/又プログラムモジュールは、即座にアクセス可能であり、そして/又は、処理ユニット620によってオン動作されている。限定ではなく、例として、図6は、オペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、及びプログラムデータ637を図示している。
【0041】
コンピュータ610は、他の脱着可能/脱着不可能・揮発性/不揮発性コンピュータ記憶媒体をも含み得る。単に例として、図6は、脱着不可能不揮発性磁気媒体に対して読み取るか又は書き込むハードディスクドライブ641、脱着可能不揮発性磁気ディスク652に対して読み取るか或いは書き込む磁気ディスクドライブ651、及び、CD−ROM又は他の光学媒体等の脱着可能不揮発性光ディスク656に対して読み取り又は書き込む光ディスクドライブ655を図示している。例示的な動作環境で使用可能である他の脱着可能/脱着不可能・揮発性/不揮発性コンピュータ記憶媒体は、磁気カセットテープ、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオ・テープ、ソリッドステートのRAM、ソリッドステートのROM等を含むがこれらに限定されない。ハードディスクドライブ641は、インタフェース640等の脱着不可能なメモリインタフェースを介してシステムバス621に通常接続されており、磁気ディスクドライブ651及び光ディスクドライブ655は、インタフェース650等の脱着可能なメモリインタフェースによってシステムバス621に通常接続されている。
【0042】
先に説明し且つ図6に示したドライブ及びそれらと関連付けられたコンピュータ記憶媒体は、コンピュータ610に対するコンピュータ読取可能な命令、データ構造、プログラムモジュール及び他のデータを記憶する。図6において、例えば、ハードディスクドライブ641は、オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、及びプログラムデータ647を記憶するものとして示されている。尚、これら要素は、オペレーティングシステム634、アプリケーションプログラム635、他のプログラムモジュール636、及びプログラムデータ637と同一又は異なり得る。オペレーティングシステム644、アプリケーションプログラム645、他のプログラムモジュール646、及びプログラムデータ647は、本明細書においては異なる数だけ与えられており、それらは異なるコピーであることを最小に示すためである。ユーザは、マウス、トラックボール若しくはタッチパッドと一般的に称されるタブレット若しくは電子ディジタイザ664、キーボード662及びポインティングデバイス661等の入力装置を介してコマンドと情報をコンピュータ610に入力し得る。図6に図示されていないが、他の入力装置は、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ等を含み得る。これら装置及び他の入力装置は、システムバスに結合されたユーザ入力インタフェース660を介して処理ユニット620に多くの場合には接続されているが、パラレルポート、ゲームポート若しくはユニバーサルシリアルバス(USB)等の他のインタフェース及びバス構造によって接続され得る。また、モニタ691又は他のタイプの表示デバイスがビデオインターフェース690等のインタフェースを介してシステムバス621に接続されている。また、モニタ691は、タッチスクリーンパネル等と集積化され得る。尚、モニタ及び/又はタッチスクリーンパネルは、コンピューティングデバイス610がタブレットタイプのパーソナルコンピュータ等に組み入れられたハウジングに物理的に接続され得る。さらに、コンピューティングデバイス610等のコンピュータは、周辺出力インタフェース694等を介して接続され得るスピーカ695及びプリンタ696等の他の周辺出力装置を含み得る。
【0043】
コンピュータ610は、リモートコンピュータ680などの1つ以上のリモートコンピュータへの論理接続を使用して、ネットワークでつながれた環境において動作し得る。リモートコンピュータ680は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス又は他の共通ネットワークノードであり得る。ただし、図6にはメモリ記憶装置181だけが示されている。図6に示された論理接続は、1つ以上のローカルエリアネットワーク(LAN)671及び1つ以上の広域ネットワーク(WAN)173を含むが、他のネットワークも含み得る。かかるネットワーク環境は、会社内ネットワーク、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいては一般的である。
【0044】
LANネットワーク環境において用いられると、コンピュータ610は、ネットワークインタフェース又はアダプター670を介してLAN671に接続されている。WANネットワーク環境において用いられると、コンピュータ610は、インターネット等のWAN673上で通信を確立するモデム672又は他の手段を通常は含む。内臓の又は外付けのモデム172が、ユーザ入力インタフェース660又は他の適切な機構を介してシステムバス621に接続され得る。インタフェース及びアンテナを含むような無線のネットワーク要素674が、アクセスポイント若しくはピアコンピュータ等の適切なデバイスを介してWAN又はLANに接続され得る。ネットワーク化された環境においては、コンピュータ610に対して示されたプログラムモジュール又はその部分は、リモートメモリ/記憶装置に記憶され得る。限定ではなく、例として、図6は、リモートアプリケーションプログラム685をメモリデバイス681上に常駐するものとして示している。図示されたネットワーク接続は例示的であり且つコンピュータ間の通信リンクを確立する他の手段が使用され得ることが十分理解され得る。
【0045】
(例えば、コンテンツの補助ディスプレイのための)補助サブシステム699は、ユーザインタフェース660を介して接続されて、コンピュータシステムの主要部分が低出力状態にある場合であっても、プログラムコンテンツ、システムステータス及びイベント通知等のデータがユーザに提供されるよう許可し得る。補助サブシステム699は、モデム672及び/又はネットワークインタフェース670に接続されて、主要処理装置620が低出力状態にある間、これらのシステム間の通信を可能になし得る。
【0046】
むすび
本発明は様々な変更及び代替的構成を受けられ得るものの、特定の図示された実施形態が、図面に示され且つ詳細に上述された。しかしながら、本発明を開示された特定の形態に制限する意図は全くなく、逆に、発明の精神及び範囲内にあるすべての変更、代替的構成及び均等物を含むよう意図されていることが理解されるべきである。
図1A
図1B
図2
図3
図4
図5
図6