(57)【要約】  記憶ボリュームがサーバクラスタのクラスタノードによって共有される技術が示されている。１つの実施例では、各ノードは当該ノードからのボリュームへの共有アクセスを提供するリダイレクタを含む。リダイレクタはファイルシステムメタデータ要求をアプリケーション等から第１（例えば、ＳＭＢ）の通信パスを介して所有ノードに送り、ファイルシステム読み取り及び書き込みデータを記憶装置にダイレクトダイレクトブロックレベルＩ／Ｏ等の第２の高速通信パスを介して送る。所有ノードは、記憶装置と関連づけられた登録テーブルにキーを書き込む永続予約機構を介して記憶装置の所有権を維持する。非所有ノードは共有キーを書き込む。共有ノードはクラスタメンバシップデータに対して共有キーを確認し、有効と思えないキーを無効にする（削除する）。また、アクセスを制御するためのセキュリティ機構が示されている。
2011526038.tif 000002
【特許請求の範囲】
【請求項１】
サーバクラスタ環境において、複数のノードと、前記複数のノードに連結された記憶装置とを備え、
前記記憶装置は前記複数のノードのうちのいずれか１に取り付けられたボリュームを含み、他の各ノードは当該ノードから前記ボリュームへの共有アクセスを提供するリダイレクタを含むことを特徴とするシステム。
【請求項２】
前記ボリュームが取り付けられているノードは前記記憶装置の所有ノードを備え、他の各ノードは非所有ノードを備え、前記所有ノードは前記記憶装置の所有権を維持するための機構を含むことを特徴とする請求項１記載のシステム。
【請求項３】
前記記憶装置の所有権を維持するための前記機構は、前記記憶装置と関連付けられた登録テーブルに所有権を示すキーを書き込む永続予約機構を備え、各非所有ノードは前記登録テーブルに共有キーを書き込むことを特徴とする請求項２記載のシステム。
【請求項４】
前記所有ノードはクラスタメンバシップデータに対して共有キーを確認し、前記クラスタメンバシップデータに基づいて有効でないと思えるキーを無効にすることを特徴とする請求項３記載のシステム。
【請求項５】
前記リダイレクタは、第１の通信パスを介してファイルシステムメタデータ要求を前記所有ノードに送り、前記第１の通信パスに比べて高速通信パスを備える第２の通信パスを介して、前記ボリュームに少なくともいくつかのファイルシステム読み取り及び書き込みデータを送ることを特徴とする請求項１記載のシステム。
【請求項６】
前記リダイレクタは、Ｉ／Ｏ要求を受け取るルートインスタンスと、Ｉ／Ｏデータをドライバに転送するルートインスタンスに連結された転送インスタンスとを備えることを特徴とする請求項１記載のシステム。
【請求項７】
前記リダイレクタは、ファイルシステム読み取り及び書き込みデータを前記第１の通信パス又は前記第２の通信パスを介して送るかを、少なくとも１つの現在の状態に基づいて選択的に判別することを特徴とする請求項６記載のシステム。
【請求項８】
前記リダイレクタは、アプリケーションの仮想ハンドルを、前記ボリュームによって用いられる実際のファイルシステムハンドルに変換するためのハンドルテーブルを維持し、前記ボリュームが他のノードの記憶装置に移動する場合、前記仮想ハンドルを変更することなく前記実際のファイルシステムハンドルを変更することを特徴とする請求項６記載のシステム。
【請求項９】
ファイルにアクセスするために用いられる、グループデータ又は特権データ、又はグループデータ及び特権データの両方に対応する情報を含むトークンを用いるセキュリティコンポーネントを更に備えることを特徴とする請求項１記載のシステム。
【請求項１０】
前記ボリュームは、どのノードがファイル名を提供するかと無関係である単一の名前空間に対応するファイル名を介してアクセスされることを特徴とする請求項１記載のシステム。
【請求項１１】
コンピューティング環境において、
クラスタの第２のノードに取り付けられたボリュームに向けられたＩ／Ｏ要求を、前記クラスタの第１のノードで受信するステップと、
前記Ｉ／Ｏ要求が前記ボリュームに対するダイレクトＩ／Ｏによって対処され得るか否かを判定することを含み、ダイレクトＩ／Ｏによって対処され得る場合、ダイレクトＩ／Ｏを介して前記Ｉ／Ｏ要求を前記ボリュームにリダイレクトし、対処されない場合、前記Ｉ／Ｏ要求を、ネットワークプロトコルを介して前記Ｉ／Ｏ要求に対処する前記第２のノードにリダイレクトすることにより前記Ｉ／Ｏ要求を処理するステップと
を含むことを特徴とする方法。
【請求項１２】
前記第２のノードはボリュームに対応する記憶装置を所有し、
永続予約機構を介して前記第２のノードで前記記憶装置の所有権を維持するステップを更に含むことを特徴とする請求項１１記載の方法。
【請求項１３】
前記Ｉ／Ｏ要求がダイレクトＩ／Ｏによって対処され得るか否かの判定は、
前記Ｉ／Ｏ要求がメタデータ又は読み取り／書き込みデータに対応するか否かの判定、
前記Ｉ／Ｏ要求がバッファリングされているＩ／Ｏ又はバッファリングされていないＩ／Ｏに対応するか否かの判定、又は、
前記Ｉ／Ｏ要求がメタデータ又は読み取り／書き込みデータに対応するか否かの判定、及び前記Ｉ／Ｏ要求がバッファリングされているＩ／Ｏ又はバッファリングされていないＩ／Ｏに対応するか否かの判定の両方を含むことを特徴とする請求項１１記載の方法。
【請求項１４】
前記Ｉ／Ｏ要求を処理するステップは、
ホストバスアダプタ故障を検出して、前記Ｉ／Ｏ要求がダイレクトＩ／Ｏによって対処され得るか否かを判定するステップと、
前記Ｉ／Ｏ要求を中止するステップと、代替のパスに切り替えるステップと、
前記Ｉ／Ｏ要求を再開させるステップと
を含むことを特徴とする請求項１１記載の方法。
【請求項１５】
前記Ｉ／Ｏ要求がダイレクトＩ／Ｏによって対処され得るか否かの判定は、ダイレクトＩ／Ｏ通信パスの状態の判定、又は抑制状態に基づいてネットワークプロトコルを介してＩ／Ｏデータを通信するか否かの判定を含むことを特徴とする請求項１１記載の方法。
【請求項１６】
前記要求はダイレクトＩ／Ｏによって対処され、
前記Ｉ／Ｏ要求が前記Ｉ／Ｏ要求に対応するファイルのブロック割り当てを変更することができる種類であるか否か判定するステップと、
変更できる種類である場合、前記ファイルのブロック割り当てを得るステップと
を更に含むことを特徴とする請求項１１記載の方法。
【請求項１７】
アプリケーションの仮想ハンドルを実際のファイルハンドルに変換するためのハンドルテーブルを維持するステップと、
前記ボリュームに対応する記憶装置を所有するノード又は前記ボリュームに対応する前記記憶装置を所有するノードのホストバストアダプタの故障を検出するステップと、
前記ボリュームが他のノードの記憶装置に移動する場合、前記仮想ハンドルを変更することなく前記実際のファイルシステムハンドルを変更するステップと
を更に含むことを特徴とする請求項１１記載の方法。
【請求項１８】
前記Ｉ／Ｏ要求はファイルを作成又は開くために使用されるメタデータに対応し、
前記ファイルへのアクセスを許可するためにセキュリティ情報を処理するステップを更に含むことを特徴とする請求項１１記載の方法。
【請求項１９】
コンピュータ実行可能な命令を有する１以上のコンピュータ読み取り可能なメディアであって、前記命令はコンピュータに、
記憶装置に対応するクラスタ共有ボリュームを有するクラスタ内の当該記憶装置の所有権を永続するステップであって、
共有の記憶装置と関連づけられるデータ構造内に所有者キーを書き込み、クラスタメンバシップデータに対して前記データ構造内の共有キーを評価するステップと、
前記クラスタメンバシップデータを介してクラスタメンバとして識別されないクラスタノードに対応するいずれかのキーを無効にするステップと
を含む、ステップを実行させることを特徴とするコンピュータ読み取り可能なメディア。
【請求項２０】
前記コンピュータ実行可能な命令は、前記共有キーを使用して、前記クラスタ共有ボリュームへのアクセスを許可するか否かを判定するステップを更に含むことを特徴とする請求項１９記載のコンピュータ読み取り可能なメディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタ共有ボリュームに関する。
【背景技術】
【０００２】
サーバククラスタは一般に、いずれかのサーバが故障しても、クラスタの他のサーバがその故障したサーバの動作を透過的に引き継ぐ、すなわち故障したサーバのアプリケーションを再開して、重大な中断なしにクライアントにサービスを提供し続ける、サーバ（ノード）のグループである。この動作は一般に、フェイルオーバー（障害迂回）又はフェイルオーバークラスタリングと称される。
【０００３】
現在、フェイルオーバークラスタリングは「非共有」記憶モデルを用い、そのモデルでは各記憶ユニット（例えば、ディスク又はその一部）を１つのノードが所有する。そして、記憶ユニットを所有するノードだけが、ＬＵＮ(Logical Unit Number：論理ユニット番号）によって参照される特定の記憶ユニットに入力／出力（Ｉ／Ｏ）を行うことができる。ＬＵＮは１以上のボリュームを表す。
【０００４】
このモデルでは、アプリケーションが開始する前にディスクをオンライン状態にし、アプリケーションが終了した後にオフライン状態にすることを保証するために、アプリケーション及びディスクリソースは、アプリケーションリソースとディスクリソースとの間に明白な従属関係を有する共通のグループ（ＬＵＮに対応するフェイルオーバーのユニット）の一部である。その結果として、Ｍｉｃｒｏｓｏｆｔ(登録商標)  ＳＱＬ  Ｓｅｒｖｅｒ、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅ  Ｓｅｒｖｅｒ、及びＭｉｃｒｏｓｏｆｔ  Ｆｉｌｅ  Ｓｅｒｖｉｃｅｓ等のクラスタ化されたアプリケーションがこのＩ／Ｏモデルに制約され、それにより同一のディスクへのアクセスを必要とするすべてのアプリケーションが、同一のクラスタノードで動作される必要がある。
【０００５】
しかしながら、アプリケーションのフェイルオーバー及び再開始動作はボリュームの取り外し及び再取り付けのために要する時間によって制限される。更に、非共有モデルは、実際の使用状況で要求される比較的多くのＬＵＮにより、取り付けた記憶装置の高い管理コストをもたらす可能性がある。例えば、保存されたファイルがＳＡＮ(storage area network)上に保存される場合に、若干より粒度の細かいフェイルオーバーを有するように、多くのＬＵＮをＳＡＮ上で形成する必要がある。これは、同時に同一のＬＵＮに依存する全てのアプリケーションをフェイルオーバーさせる必要性のためである。１つのノードだけが特定の時間にＬＵＮへのアクセスを有するので、同一のＬＵＮにあるアプリケーションが異なるノードにフェイルオーバーすることができない。
【発明の概要】
【０００６】
本概要は、以下の「発明を実施するための形態」でさらに説明される概念から選択したものを簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題の重要な特徴または本質的な特徴を特定することを意図するものでも、特許請求の範囲に記載されている主題の範囲を決定する際の一助として使用することを意図するものでもない。
【０００７】
簡潔に言うと、本明細書で説明される構成の様々な態様は、記憶ボリュームがクラスタノードによって共有される技術を対象としている。一実施例では、各ノードは、そのノードからボリュームへの共有アクセスを提供するファイルＩ／Ｏリダイレクタを含む。
【０００８】
一態様では、１つのノードは所有ノードを備え、所有ノードは、記憶装置の所有権を、その記憶装置と関連付けられた登録テーブルにキーを書き込む永続的予約機構を介して維持する。所有していないノードは登録テーブルに共有キーを書き込む。所有ノードはクラスタメンバシップデータに対して共有キーを確認し、有効とは思えない任意のキーを無効にする（例えば、削除する）。
【０００９】
一態様では、リダイレクタは、ファイルシステムメタデータ要求を第１の通信パスを介して記憶装置を所有するノードに送り、少なくともいくつかのファイルシステム読み取り及び書き込みデータをその記憶装置に、第１の通信パルスと比較して高速通信パスを備える第２の通信パスを介して送る。例えば、より低速のパスはＳＭＢ等のネットワークプロトコルに基づき、一方、より高速のパスは記憶装置に送られたダイレクトブロックレベルＩ／Ｏとすることができる。
【００１０】
その他の利点は、図面を共に用いて、次の詳細な説明から明らかにすることができる。
【図面の簡単な説明】
【００１１】
本発明が例示の目的で示されるが、添付の図面には限定されない。図面では、同様の参照符号により同様の要素を示す。
【図１】クラスタ共有ボリュームを有するサーバクラスタリング環境における例示のコンポーネントを表すブロック図である。
【図２】クラスタ共有ボリュームクラスタリング環境におけるノード内の例示のコンポーネントを示すブロック図である。
【図３】クラスタ共有ボリュームを予約及び／又はアクセスするための例示のステップを示すフロー図である。
【図４】例示のクラスタ共有ボリュームリダイレクタインスタンスを示すブロック図である。
【図５】クラスタ共有ボリュームリダイレクタを介する例示の読み取り及び書き込み操作を示すブロック図である。
【図６】（例えば）クラスタ共有ボリューム上のリモートファイルのファイル作成要求を処理する場合に、クラスタ共有ボリュームリダイレクタによって行われる例示のステップを示すフロー図である。
【図７】（例えば）クラスタ共有ボリュームに読み取り／書き込みＩ／Ｏを転送することに関して、クラスタ共有ボリュームリダイレクタによって行われる例示のステップを示すフロー図である。
【図８】ノード上のセキュリティサポートを提供するために動作するクラスタ認証マネージャモジュールを示すブロック図である。
【図９】クラスタ共有ボリュームについてセキュリティに関連する例示のステップを示すブロック図である。
【図１０】本発明の様々な態様を組み込むことができる例示のコンピューティング環境を示す図である。
【発明を実施するための形態】
【００１２】
本明細書で説明される技術の様々な態様は、一般的にクラスタ共有ボリュームを対象としている。クラスタ共有ボリュームによれば、一般にサーバノードのクラスタで動作するクラスタアプリケーション及びサービスは、クラスタの任意のノードからそれらのデータにアクセスすることができる。理解されるように、ディスクリソースが同一のグループアプリケーションに置かれることを必要とされないこと、および明白な従属関係の必要性を除去することを含め、１または複数のクラスタ共有ボリュームの利用により非共有モデルを改善する。
【００１３】
容易に理解されるように、クラスタ共有ボリューム技術により簡易化されたＳＡＮ管理が可能となり（例えば、かなり少ないＬＵＮが必要とされる）、ディスク空間利用を改善し（例えば、１つのＬＵＮをいくつかのアプリケーションによって共有することができる）、バッファリングされたファイル、バッファリングされていないファイル、及びメモリマッピングされたファイルのためにサポートを提供する。同時に、この技術はファイルのための単一の名前空間、根本的なボリュームフェイルオーバー又は管理の移動に関するＩ／Ｏフォールトトレランス(fault-tolerance)、及びローカルファイルシステムと互換性があるＩ／Ｏ能力を提供する。更に、本明細書で説明される技術は、クラスタ内のどこからでもファイルシステムアクセスを要求するクラスタアプリケーションのために、拡張性があるフォールトトレラントソルーションを提供する。理解されるように、一般に、クラスタリングサービスは、クラスタのノードの間でのディスクの配置及び関連するボリュームの取り付けを扱い、以下に説明されるようにダイレクトＩ／Ｏ機構を介してなど、メタデータファイル操作及び読み取り／書き込みＩ／Ｏ操作を扱う。
【００１４】
理解されるように、一実施例において、クラスタ共有ボリューム技術は、「ローカル」及び「リモート」ＮＴＦＳファイルシステムの組み合わせを備える、拡張性なフォールトトレラント分散ファイルシステムを、クラスタのあらゆるところから透過的なファイルアクセスを要求するクラスタアプリケーションに提供する。クラスタ共有ボリューム技術は、クラスタリングサービスに、クラスタのノードの間でのディスクの配置及び関連するファイルシステムボリュームの取り付け、ブロックアロケーション及びファイルシステムに対するファイルロッキングを含むメタデータファイル操作、ＳＭＢプロトコル及びリモートファイルサーバサービス、及びダイレクトＩ／Ｏ機構を介する読み取り／書き込みＩ／Ｏ操作を委譲する。
【００１５】
一実施例において、クラスタ共有ボリューム技術は、ファイルシステムやＳＡＮ技術のように、Ｍｉｃｒｏｓｏｆｔ  ＮＴＦＳを用いたＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  Ｓｅｒｖｅｒ  Ｆａｉｌｏｖｅｒ  Ｃｌｕｓｔｉｎｇと協働するが、それらは例である。実際には、他の環境、ファイルシステム及び／又は記憶技術を用いて、本明細書で説明されている技術の１以上の態様を実施することができる。本発明は本明細書で説明されている特定の実施形態、態様、コンセプト、構成、機能又は例に限定されない。むしろ、本明細書で説明されている特定の実施形態、態様、コンセプト、構成、機能又は例のいずれも限定ではなく、一般に、コンピューティング、クラスタリング及びデータアクセスにおいて利益及び利点を与える様々な方法で本発明を用いることができる。
【００１６】
図１を参照すると、クラスタアプリケーション及びサービスがクラスタのノードからそれらのデータにアクセスすることができるクラスタ共有ボリューム環境の簡単なブロック図が示されている。概して、図１はノードＡ１０２、ノードＢ１０３及びノードＣ１０４からなる３つのノードクラスタを示している。（ＳＡＮディスクの）ＮＴＦＳボリューム／ディスク１０６がそのノードのいずれか１つ、すなわち、この例ではノードＢ１０３に取り付けられている（図１には示していないが、１以上の他の共有ボリュームがノードＢ又は他のノードに取り付けられても良い）。明確さ及び簡潔さのために、ノードＣ１０４の内部コンポーネントはノードＡ１０２と同様であるので、本明細書では図示及び説明しない。
【００１７】
ノードＡ１０２で動作しているアプリケーションがクラスタ共有ボリューム１０８のそれのファイルデータにアクセスすることを可能にするために、例示のアーキテクチャは、ミニリダイレクタ１１０を介して部分的にノードＡ１０２にボリューム１０８を公開する。例えば、ミニディレクタは、ＳＭＢ(Server Message Block)プロトコルに基づいている。このミニディレクタは後述するように、ノードＢ１０３のサーバファイルシステムドライバ１１１と通信する。更に、クラスタ共有ボリュームリダイレクタ１１２は、処理Ａ１１４で図１に表されているように、１以上のアプリケーション及びその他（例えば、サービス）からのファイルシステムＩ／Ｏをインターセプトして、適切に送り出す。ノードＢ１０３には同様のクラスタ共有ボリュームリダイレクタ１１３及び処理Ｂ１１５が示されている。
【００１８】
一実施例において、処理Ａ１１４によって作成されたＩ／Ｏ要求は、クラスタ共有ボリュームリダイレクタ１１２によってインターセプトされる。メタデータに対するＩ／Ｏ要求は、ミニリダイレクタ１１０を介してリモートサーバＦＳＤ（ファイルシステムドライバ）に送信される。しかしながら、典型的なネットワーク共有とは違って、データ（読み取り及び書き込み）Ｉ／Ｏ要求は、クラスタ共有ボリュームリダイレクタ１１２によって、ローカル記憶装置ドライバ１１８を介してディスク１０６に直接送信される。すなわちこの例ではノードＢ１０３は関与しない。クラスタノードは一般的に、クラスタの記憶ユニットにＳＣＳＩ、ファイバチャンネル、ＩＳＣＳＩ又は他の高速通信リンクを介して（装置が取り付けられたノードを介することと同様に、例えばこの例では、ＳＭＢリンクを介してリモートサーバＦＳＤ（ファイルシステムドライバ）に）接続される。このＮＴＦＳベースの例においては、サーバファイルシステムドライバ１１７は、ノードＢのリダイレクタ１１３及びＮＴＦＳファイルシステムドライバ１２１を介して、記憶装置ボリューム１０８にアクセスする。このように、ノードＡは、自身のローカル記憶装置ドライバ１１８及びリモート記憶装置ドライバ１１９を介して、記憶装置ボリューム１０８にアクセスすることができる。
【００１９】
理解されるように、このメタデータアクセスのためのＳＭＢと読み取り及び読み出しデータのためのダイレクトＩ／Ｏとの組み合わせは、大幅な性能改善を提供する。しかしながら、ＳＭＢリンクは、ダイレクトＩ／Ｏデータリンクが機能しない場合、又は、例えば、不均衡を調整するためにディスクボリューム１０８のノードＡの利用を意図的に抑える場合など、読み取り及び書き込みＩ／Ｏデータを送るクラスタ共有ボリュームリダイレクタ１１２に対してそれでも選択的に有効である。よって、リダイレクタは、少なくとも１つの現在の状態に応じて、読み取り及び書き込みＩ／Ｏデータのための通信パスを選択しても良い。
【００２０】
本明細書で例示されたクラスタ共有ボリューム技術は、多数のクラスタノードからボリュームへの同時アクセスを可能にする変化した予約方式（altered reservation scheme）と共に、共有ディスクを扱う現存のクラスタリングサービス機構に依存する。この目的を達成するために、各ノードはカーネルドライバを備えるクラスタディスクドライバ（例えば、cluster disk.sys）を含む。後述するように、記憶装置ボリューム１０８についてのリモートノードのクラスタディスクドライバ（例えば、１３０）は、装置ボリューム１０８にアクセスするために予約機構／アルゴリズムに加わり、一方、所有するノードのクラスタディスクドライバ１３１は、装置所有権を維持して保護するために予約機構／アルゴリズムに加わる。例示のクラスタディスクドライバ１３０及び１３１は、クラスタサービス１４０及び１４１とそれぞれ協働して、永続的な予約技術を利用するアルゴリズムを用いる。
【００２１】
背景技術として、米国特許番号７,２７７,９５２で説明される従来の永続的予約所有権アルゴリズムは非共有モデルを実施しており、すなわち、ディスクを所有するノードは排他的所有権及びフルアクセス権を有する一方、他のノードは読み取り専用のアクセス権を有する。所有権は、予約キー（ＰＲキーと称する）を用いる書き込みが登録者のみとされた永続的な予約をディスクのＰＲ予約テーブルに配置することにより、所有者ノードによって主張される。所有するノードは、ＰＲ登録テーブルを周期的に（例えば、初期値の３秒毎に）調べることにより、この所有権を維持／保持する。他のノードは、ＰＲ登録テーブルに自身のキーを登録することにより（所有しているノードがクラッシュした場合に引き継ぐために）所有権に挑戦する。所有しているノードが動作可能であり、テーブルに自身のＰＲキーだけを見つける場合、行うべき動作はない。しかしながら、ＰＲ登録テーブルに自身以外のキーを見つける場合、所有するノードはそのキーを無効にする（例えば、テーブルからそのキーを除去する、所有するノードが動作可能でない場合、挑戦するノードのキーはそのまま残り、それにより挑戦するノードが、自身のキーにより現在の所有者のＰＲ予約を無効にすることにより所有権を引き継ぐ）。安定した機能的なクラスタ下においては、１つのディスクのＰＲ予約テーブルは１つのキーを有し、それのＰＲ登録テーブルはＭ個のキー（同一の所有者ノードからのそれらの全て）を有している。ここで、ＭはＭＰＩＯシステムのディスクへのＩＯパスの数である。非ＭＰＩＯシステムについては、Ｍは１である。
【００２２】
クラスタ共有ボリュームに割り当てられたディスクについて、この永続的予約アルゴリズムを修正して、クラスタのノードが読み取り−書き込みモードで、安全な方法で基本的に同時に、ディスクにアクセスすることを可能にする。クラスタの外の装置は、クラスタ共有ボリュームディスクへのアクセス権を持たない。
【００２３】
図２に概して表されるように、物理ディスクリソース２２０はクラスタ内の共有ディスクを管理し、他の動作では、同一の共有ディスクに基本的に同時にアクセスすることを可能にすることを含め、クラスタディスクが安全にアクセスされ、破損から保護されることを保証する。これは共有永続的予約（ＰＲ）キー及びクラスタメンバシップの情報を用いることにより達成される。
【００２４】
クラスタ共有ボリュームディスク予約アルゴリズムについて、一実施例では、（例えば、クラスタサービス２４０の）ディスク制御マネージャ２２２は、物理ディスクリソース２２０を呼び出して、クラスタディスク２０８に対する新たな予約ポリシーを設定する。更に、クラスタディスク２０８は、上記した所有権のコンセプトに違反することなく、他のノードからの読み取り−書き込みＩ／Ｏを可能にする必要がある。この目的を達成するために所有者ノードはディスクの制御を保持するが、共有ＰＲキー２２６を介してノード当たりベースでＩ／Ｏポリシーを緩和する。この共有ＰＲキー機構／予約アルゴリズム２２８の元では、Ｎ番目のノードクラスタのクラスタ共有ボリュームディスク２０８は、その登録テーブルにＮ＊Ｍ個のキーを有する。ここで、ＭはＭＰＩＯ構成においてノードからディスクへのＩ／Ｏパスの数であり、非ＭＰＩＯシステムではＭは１である。所有者ノードは登録テーブル２３２にＭキーを有し、予約テーブルに１つのキーを有する。
【００２５】
図３は図２の例示のコンポーネントを介して実施されるアルゴリズムの例示のステップを示すフロー図である。ステップ３００を介して非所有者ノードとされると、ディスク制御マネージャ２２２は、物理ディスクリソース２２０に、共有ＰＲキー２２６を登録テーブル２３２に挿入するよう要求する（ステップＳ３０２）。このキーはノード間では共有されないが、むしろこのキーが表すノードが、ディスクへの読み取り−書き込みアクセスを共有することを、所有者ノード及びいくつかの他のノードと共に示す。ノードの識別子（例えば、ノードＩｄ）はこの共有ＰＲキー２２６の一部である。
【００２６】
所有者ノードでは、例示のステップ３００を介して区別されると、ステップ３０４により、クラスタノードメンバシップデータ２５４を物理ディスクリソース２２０に知らせる。これはクラスタ内のボリュームを共有する動作中のノードを表す、単一のビットマスクを介して達成され得る（例えば、一般的に全てのノードであるが、必ずではない）。物理ディスクリソース２２０は、メンバシップデータ２５４をクラスタディスクドライバ２３１に送る。
【００２７】
ステップ３０６によって表されるように、所有権ノード上のクラスタディスクドライバ２３１が登録テーブル２３２に１以上のエクストラキー（自身の排他的ＰＲキー以外）を見つけると、ステップ３０８によって表されるように、クラスタディスクドライバ２３１は、クラスタメンバシップデータ２５４に対してそれらキーの各々のノードＩｄを確認する。キーが有効であれば（ステップ３１０）、そのキーが登録テーブル２３２に残ることが許可され、そうでないと無効にされる（ステップ３１２）。ステップ３１４は他のキーのために検証を繰り返し、各ノードが共有ボリュームアクセスに参加するＮ番目のノードクラスタではＮ−１のそのような共有ＰＲキーがある。
【００２８】
共有ボリュームアクセスポイントに関連する態様においては、ファイルの各々がノードから見たとき同一の名称及びパスを有するように、クラスタ共有ボリューム環境は一貫性があるファイル名前空間を提供する。この目的を達成するために、クラスタ共有ボリューム環境によって管理されるＮＴＦＳボリュームは、クラスタ共有ボリュームルートディレクトリ下でディレクトリ及びサブディレクトリとしてそれら自身を明示する。例えば、１つの形式において、クラスタ共有ボリュームは次のように表すことができる。
<%systemdrive>:＼clusterStorage＼Vol1
<%systemdrive>:＼clusterStorage＼Vol2
<%systemdrive>:＼clusterStorage＼VolN
【００２９】
なお、アーキテクチャは、例えば、特にその目的のためにクラスタノード上に作られた非システムドライブ又はＲＡＭＤＩＳＫベースのドライブのクラスタ共有ボリュームルートを公開する可能性を許可する。結果として、アクセスされているノードとは無関係に、同一パス及びファイル名称を用いてファイルを識別することができる（「位置独立」）。一実施例においては、クラスタ共有ボリュームルートディレクトリの名前を変更しても良く、マッピングのボリュームディレクトリの名前を、アプリケーションにより適合するよう、管理者が変更しても良い。
【００３０】
一実施例において一般に、各ノードに設けられたクラスタ共有ボリュームリダイレクタは、ディスクが取り付けられているところに無関係に、クラスタ共有ディスク又はディスクにシームレスアクセスを与える能力を備える。クラスタ共有ボリュームリダイレクタは、システム又は通信（例えば、ホストバスアダプタ）が故障の場合にディスクが１つのシステムから他のシステムにフェイルオーバーしているとき（短い停止とは別に）非中断の応答を提供することができる。
【００３１】
クラスタ共有ボリュームリダイレクタ２１２は、ディスク制御マネージャ２２２による配置決定を容易にするためにディスク当たりのアクセス統計データを収集しても良い。これはＮＴＦＳフィルタドライバとして実施され得る。また、クラスタ共有ボリュームリダイレクタ２１２は、リモート共有に対するファイルアクセスを可能にし、及びクラスタ共有ボリューム（ディスク）２０８へのＩ／Ｏを監視することもできる。そのＩ／Ｏは、ボリュームが取り付けられたサーバに、透過的にリダイレクトされる。内部的に、クラスタ共有ボリュームアクセスポイント（例えば、C:＼cluster shared volume＼VoIN)は、タイプ連結ポイント(type junction point)又はシンポリックリンク(symbolic link)のＮＴＦＳリパースポイント(reparse points)であっても良い。ボリュームがローカルとして取り付けられる場合、その連結ポイントはローカルボリュームデバイスオブジェクト、例えば、＼??＼Volume{...}を示す。ボリュームがリモートとして取り付けられる場合、同一のシンポリックリンクは、＼＼<Remote Virtual Node's IP Address>＼<ShareName>を示す。ShareNameはクラスタディスクリソースがボリューム毎に作る共有を示す。
【００３２】
図４に示されるように、クラスタ共有ボリュームリダイレクタドライバ２１２は、いくつかの異なるインスタンス（例えば、４１２1−４１２3又は４１２4）を管理することができる。クラスタ共有ボリュームリダイレクタルートインスタンス４１２1は、クラスタ共有ボリュームルートをホストとするボリューム４０８に接続する。そのルートインスタンスは、ローカルアクセス用の転送インスタンス例えば、４１２2又はリモートアクセス用の転送インスタンス例えば、４１２3に、例えば、ＭＵＰ(Multiple UNC Provider)／ＲＤＢＳＳ(Redirected Drive Buffering Subsystem)との結びつきを介して連結している。なお、図４において、記憶スタックは分かり易くするために省略している。
【００３３】
一般に、クラスタ共有ボリュームリダイレクタルートインスタンス４１２1は、必要に応じてＩ／Ｏのインターセプト、ファイルハンドルの仮想化、プリンシパル識別の獲得及びＩ／Ｏの転送のための能力を有する。クラスタ共有ボリュームリダイレクタ転送インスタンス４１２2又は４１２3は、Ｉ／Ｏを適切なボリュームスタックに入れるために用いられる。クラスタ共有ボリュームリダイレクタ転送インスタンス４１２4は、ファイルを固定し、クライアントに成りすます能力を有する。なお、転送インスタンス及びサーバインスタンスは論理的に区別できるエンティティであるけれども、効率のためにそれらをノード上の同一のインスタンスとして実施しても良い。
【００３４】
クラスタ共有ボリューム環境によれば、アプリケーションが様々なファイルシステム構造物、例えば、ファイル、ディレクトリ、リンク等にアクセスすることができる。クラスタ共有ボリュームは、例えば、バッファリングされた、バッファリングされていない、及びマッピングされたメモリなど、様々な種類のファイルに対して高速パスＩ／Ｏ操作を構築する。そのようなリモートファイルの全体のＩ／Ｏ性能は、ローカルファイルシステムのＩ／Ｏ性能と同様である。
【００３５】
図５は、リモートファイルに対するCreateFile要求を扱う場合に、クラスタ共有ボリュームリダイレクタドライバによって行われる例示のステップを示し、入力されたパスに対する適切な転送インスタンスを検索することを表すステップ５０２で始まる。ステップ５０４は、クライアントのセキュリティ識別を獲得することを表す。
【００３６】
ステップ５０６は、転送インスタンスにCreateFile要求を送り、拡張したCreateFile属性に識別情報をセットする。ステップ５０８は、クラスタネームオブジェクト（ＣＮＯ）なりすましとのＳＭＢ接続を介してＩ／Ｏを発する。なお、クラスタの名称を表すコンピュータアカウントはＣＮＯによって参照される。このアカウントは、クラスタについての主セキュリティコンテキストである。ステップ５１０はCreateFileから拡張した属性を削除することを表し、ステップ５１２はクライアントのなりすましのステップを表す。
【００３７】
ステップ５１４はCreateFile要求をスタック下方に転送する。その動作がステップ５１６で評価されて成功したならば、ステップ５１８はファイルを固定する（成功しない場合はエラーに対処する、例えば、再試行、戻ったエラーコード等を用いて）。ステップ５２０は、例えば、修正したサーバファイルシステムドライバ（例えば、Server.sys)を介してそのファイル範囲を問い合わせる（例えば、どのようにファイルがマッピングされるのか識別する）。
【００３８】
ステップ５２２では、読み取り書き込み要求（図６及び図７について後述される）について、Ｉ／Ｏをディスクに直接発することができる（ステップ５２４）。例えば、読み取り／書き込み操作がファイルについて起きるときはいつも、クラスタ共有ボリュームフィルタドライバはファイルの論理ブロック割り当て、ＬＵＮにおけるボリュームのブロックオフセット、及びＬＵＮのドライバ番号を用い、Ｉ／Ｏ操作を未加工の(raw)ディスクセクタ読み取り／書き込み操作に変換して、それをローカルＮＴデバイススタックに送る。
【００３９】
ステップ５２６によって表されるように、ユーザがファイルサイズ及び／又は論理ブロック割り当てを変更するファイルに対するＩ／Ｏを発するときはいつも、クラスタ共有ボリュームフィルタドライバは、ファイルのブロック割り当てをリロードする（ステップ５２８）。
【００４０】
図６及び図７はクラスタ共有ボリュームリダイレクタ読み取り／書き込みＩ／Ｏ操作を例示している。なお、図６において記憶スタックは分かり易くするために省略されている。特に、クラスタ共有ボリューム環境はフォールトトレランスを備え、透過的に、ノード、ネットワーク及び通信（例えば、ホストバスアダプタ）の故障に対処する。これは仮想ハンドルテーブル５２０（図２）及びクラスタＮｅｔＦＴフォールトトレランスＴＣＰ／ＩＰドライバの使用によってクラスタ共有ボリュームリダイレクタにおいて達成され得る。
【００４１】
ＮｅｔＦＴは、各ホストで仮想サブネットに対する仮想アダプタを公開するクラスタネットワークフォールトトレランスＴＣＰ／ＩＰ  ＮＤＩＳミニポートドライバである。また、その物理ネットワークアダプタは各ホストでＩＰ層に対して公開される。ＮｅｔＦＴドライバは、最も有効であると思われる物理ネットワークパスを通り抜けて、仮想サブネットでパケットを転送する。フォールトトレランス通信を得るために、クラスタ共有ボリュームリダイレクタは、仮想サブネット上のインターフェースに結合する。そのボリュームがリモートとして取り付けられる場合、同一のシンボリックリンクは＼＼<Remote Virtual Node's IP Address>＼<ShareName>を示す。ここで、Remote Virtual Node IP Addressはクラスタ内仮想ＩＰアドレスを示す。
【００４２】
アプリケーションはクラスタ共有ボリュームの物理的位置と関連させる必要がない。なぜならば、ディスクボリュームがノード故障として、又は負荷バランス、ネットワーク管理組織、サービス、管理等の他の理由のために移動される可能性があるからである。アプリケーションの観点から他のノードへのディスクの移動をマスクするために、クラスタ共有ボリュームに存在するファイルについてアプリケーションによって開かれるハンドル毎に、クラスタ共有ボリュームリダイレクタ２１２は、例えば、仮想ハンドルテーブル２５０（図２）において、ファイルへのハンドルを内部に維持する。通信（例えば、ホストバスアダプタ）故障又はノード故障時に、クラスタ共有ボリュームリダイレクタ２１２は、その内部（実際の）ハンドルを閉じ及び再び開く。一方、アプリケーション（仮想の）ハンドルが有効な状態で残る。ホストバスアダプタ故障の場合には、異なる通信パスが用いられる（例えば、ダイレクトＩ／Ｏに代わってＳＭＢ）。ノード故障の場合には、ハンドルは新しい所有者ノードを示して再び開かれる（なお、クラスタインフラストラクチャは、ノード故障の検出及び連続的なディスクフェイルオーバーのための能力を有する。）ディスクが移動する場合、クラスタ共有ボリュームリダイレクタ２１２は、アプリケーションには透過的に、自身の仮想ハンドルテーブル２５０を更新する。
【００４３】
通常の場合には、アプリケーションによって開始される操作毎に、クラスタ共有ボリュームフィルタドライバ２１２は、図６及び図７のＩ／Ｏ転送のための例示のステップで示されるように、内部（実際の）ハンドルに基づいて操作をリダイレクトする。特に、ステップ７０２によって表されるように、アプリケーションが仮想ハンドルでＩ／Ｏ操作を開始し、バッファリングされていないＩ／Ｏをファイルに使用するとき（ステップ７０４）、ステップ７０６でブロック変換が行われ、Ｉ／Ｏがデバイスに直接送られる。ダイレクトＩ／Ｏ故障の場合には（ステップ７０８）、ステップ７０９は、ディスク制御マネージャ２２２に故障を示す。ステップ７１０は、そのディスク制御マネージャが回復動作をし終えることを待つことを表す。その後、ステップ７１１がＩ／Ｏを再び発する。そのような故障の一般的な種類は、通信（例えば、ホストバスアダプタ）の故障又は所有者ノード故障を含む。
【００４４】
代わりにバッファリングされているＩ／Ｏが使用される場合、ステップ７０４はステップ７１２に分岐する。ステップ７１２では、ディスクがどこに連結されているか、すなわちリモート又はローカルかに応じて、Ｉ／ＯをＮＴＦＳ又はＳＭＢリダイレクタに送る。なお、ステップ７０４は、状態ベースのルーティングを表しても良い。例えば、ダイレクトＩ／Ｏパスが故障である又は意図的な抑制が望まれている場合、ネットワークプロトコルベース（例えば、ＳＭＢ）の通信パスが用いられる。リダイレクトされたＩ／Ｏの故障の場合には（ステップ７１４）、ステップ７１６は、Ｉ／Ｏをブロックし、その故障をディスク制御マネージャに知らせ、ディスク制御マネージャがそれの回復動作をし終えることを待つ。その後、ステップ７１８がＩ／Ｏを再び発する。
【００４５】
Ｉ／Ｏはファイルのブロック割り当てを変更することができる種類のリダイレクトされたＩ／Ｏでも良く（例えば、リサイズ）、一方、ハンドルはダイレクトＩ／Ｏのためにマークされている。もしそうならば、ステップ７２０によって評価されるように、ステップ７２２は、ファイルのブロック割り当てをリロードする。
【００４６】
図８及び図９の例に一般的に表される、セキュリティに関連する態様を参照すると、権限を有するクライアントは、クラスタ共有ボリューム環境で公開されているボリュームにアクセスすることができる。ユーザドメインアカウントや、LocalSystem及びLocalServer等の選択ローカルビルトインアカウント下で動作しているクライアント（処理及びサービス）がサポートされる。ノード間のネットワーク通信を横断するとき、ローカルユーザ識別に代わってクラスタ識別（ＣＮＯ）が用いられ、続いてその元のユーザ識別がリモートノードにおいて回復される。その結果、クライアントアプリケーションはネットワーク境界に気が付かず、ローカルであるとしてリソースにアクセスする。このモデルは適切なネットワークアクセスチェックを備え、別のクラスタノードからの要求だけがアクセスを有する。
【００４７】
一実施例において、クラスタ権限マネージャ又はＣＡＭ（図８の８８０又は８８１）は、各ノードでＳＳＰ／ＡＰ(Security Support Provider/Authentication Package)として、それぞれのＬＳＡ(Local Security Authority)サービス（図８の８８２又は８８３）内で動作するモジュールを備える。例えば、ＣＡＭ８８０は、複写されたＷｉｎｄｏｗｓログオンセッション及びユーザセキュリティアクセストークンをクラスタ共有ボリュームに対して提供しても良い。
【００４８】
ＣＡＭ８８０は、元のセキュリティアクセストークンからグループデータ及び特権データを取り出し、その情報を用いて目的のマシーンにおいてネットワークトークンを再構築する。これは委任、認証情報、又はドメインコントローラへのアクセスを要求することなく行われ、それにより性能を改善し、セキュリティ委任がドメインポリシーで禁止されている環境における動作を可能にする。
【００４９】
一実施例において、グループ情報及び特権情報は「クラスタチケット」と称されるブロブに保存される。ＮＴＬＭトークン及びローカルシステムトークン（例えば、LocalService又はNetworkService）等の元のノードにおいてトークンを複写するためにクラスタチケット使用し得ることを除いて、クラスタチケットはケルベロス(Kerberos)チケットに類似する。
【００５０】
クラスタチケットは全てのクラスタノードにより共有されるキーによって暗号化され保護される。一実施例において、このキーはクラスタ形成／加入処理の間に安全な方法で作成され送信されるセッションキーである。
【００５１】
動作において、図９の例示のステップによって一般に表されるように、ステップ９０２では、アプリケーションはプリンシパル「Ａ」のトークンを用いてファイルを作成する／開く。ステップ９０４では、クラスタ共有ボリュームリダイレクタ１１２は、ＣＡＭ８８０に接触し、ＣＡＭ８８０はトークン「Ａ」情報を組み込むクラスタチケットを生成する。また、ＣＡＭ８８０はＣＮＯトークンを作成する。
【００５２】
ステップ９０６では、ＣＮＯトークンに成りすましながら、クラスタ共有ボリュームリダイレクタは、ＳＭＢにおいてファイルを作成し／開く（なお、一実施例において、ＣＮＯは「ＮＴＦＳルート」共有へのフルアクセス権を有する唯一のプリンシパルである）。クラスタチケットは、Ｆｉｌｅ  Ｅｘｔｅｎｄｅｄ  Ａｔｒｉｂｕｔｅｓ（ファイル拡張属性）に組み込まれる（ステップ９０６）。
【００５３】
ステップ９０８では、（他のノード上の）クラスタ共有ボリュームリダイレクタ１１３は、クラスタチケットを抽出し、それのＣＡＭ８８１を呼び出してプリンシパル「Ａ」のネットワークトークンを生成する。クラスタ共有ボリュームリダイレクタ１１３は、ＣＮＯネットワークトークンをプリンシパル「Ａ」のネットワークトークンで置き換え、それにより、ＮＴＦＳを介してファイルにアクセスする。セキュリティチェックの一部として、共有永続予約キーを評価して、要求するノードがまだ有効なメンバであることを保証するようにしても良い。
【００５４】
（例示的な動作環境）
図１０は図１〜図９の例を実施することができる適切なコンピューティング及びネットワーキング環境１０００の例を示している。コンピューティングシステム環境１０００は適切なコンピューティング環境の一例に過ぎず、本発明の使用又は機能の範囲について何らかの限定を提示するつもりではない。例示的動作環境１０００に示されたコンポーネントのいずれか１又は組み合わせに関連する従属又は要求を有するようにコンピューティング環境１０００が解釈されるべきでない。
【００５５】
本発明は多くの他の一般的な目的又は特定の目的のコンピューティングシステム環境又は構成で動作する。本発明の使用のために適した良く知られたコンピューティングシステム、環境、及び／又は構成の例は、限定されないが、上記のシステム又は装置のいずれかを含むパーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置又はラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者向け家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、分散コンピューティング環境等を含む。
【００５６】
本発明はプログラムモジュール等のコンピュータ実行可能なインストラクション（命令）の一般的なコンテキストに示され、コンピュータによって実行されても良い。一般に、プログラムモジュールは特定のタスクを実行し、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、通信ネットワークを介してリンクがされているリモート処理装置によってタスクが実行される分散コンピューティング環境において本発明が実施されても良い。分散コンピューティング環境において、プログラムモジュールはメモリ記憶装置を含むローカル及び／又はリモートコンピュータ記憶メディア（媒体）に配置されても良い。
【００５７】
図１０に関して、本発明の様々な態様を実施するための例示的システムがコンピュータ１０１０の形で一般目的のコンピューティング装置を含んでも良い。コンピュータ１０１０のコンポーネントは、限定されないが、処理ユニット１０２０、システムメモリ１０３０、及びシステムバス１０２１を含んでも良い。システムバス１０２１はシステムメモリを含む様々なシステムコンポーネントを処理ユニット１０２０に連結している。システムバス１０２１は様々なバスアーキテクチャのいずれかを用いるメモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含む様々な種類のバス構造のいずれかであれば良い。例として、限定はされないが、そのようなアーキテクチャはＩＳＡ(Industry Standard Architecture)バス、ＭＣＡ(Micro Channel Architecture)バス、ＥＩＳＡ(Enhanced ISA)バス、ＶＥＳＡ(Video Electronics Standards Architecture)バス、Ｍｅｚｚａｎｉｎｅバスとして知られたＰＣＩ(Peripheral Component Interconnect)バスを含む。
【００５８】
コンピュータ１０１０は、様々なコンピュータ読み取り可能なメディアを一般に含む。コンピュータ読み取り可能なメディアはコンピュータ１０１０がアクセスすることができ、揮発性及び不揮発性のメディアと、取り外し可能及び取り外し不能なメディアとの両方を含む有効なメディアであることができる。例としては、限定されないが、コンピュータ読み取り可能なメディアはコンピュータ記憶メディア及び通信メディアを備える。コンピュータ記憶メディアはコンピュータ読み取り可能命令、データ構造、プログラムモジュール又は他のデータ等の情報の記憶のための方法又は技術において実施される揮発性及び不揮発性メディアと、取り外し可能及び取り外し不能メディアとを含む。コンピュータ記憶メディアは、限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術装置、ＣＤ−ＲＯＭ、ディジタルバーサタイルディスク（ＤＶＤ）又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を保存するために用いられかつコンピュータ１０１０によってアクセスすることができる他のメディアを含む。通信メディアは一般に、搬送波又は他の搬送機構等の変調されたデータ信号内に、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール又は他のデータを組み込み、情報配達メディアを含む。その「変調されたデータ信号」はその信号内の情報を符号化するような方法で設定又は変更された特性の１以上を有する信号を意味する。例としては、限定されないが、通信メディアは、有線ネットワーク又はダイレクト有線接続等の有線メディアと、音響、ＲＦ、赤外線及び他の無線メディア等の無線メディアとを含む。また、上記のいずれかの組み合わせをコンピュータ読み取り可能なメディアの範囲内に含んでも良い。
【００５９】
システムメモリ１０３０は、ＲＯＭ（リードオンリメモリ）１０３１及びＲＡＭ（ランダムアクセスメモリ）１０３２等の揮発性及び／又は不揮発性メモリの形でコンピュータ記憶メディアを含む。スタートアップ間等のコンピュータ１０１０内のエレメント間の情報を伝達するために役立つ基本ルーチンを含む基本入力／出力システム１０３３（ＢＩＯＳ）が一般にＲＯＭ１０３１には保存されている。ＲＡＭ１０３２は処理ユニット１０２０によって直ちにアクセスすることができる及び／又は現在動作されているデータ及び／又はプログラムモジュールを一般に含む。例としては、限定されないが、図１０はオペレーティングシステム１０３４、アプリケーションプログラム１０３５、他のプログラムモジュール１０３６及びプログラムデータ１０３７を示している。
【００６０】
また、コンピュータ１０１０は他の取り外し可能／取り外し不能で揮発性／不揮発性コンピュータ記憶メディアを含む。単なる例としては、図１０は取り外し不能で不揮発性の磁気メディアから読み取りそれに書き込むハードディスクドライブ１０４１、取り外し可能で不揮発性の磁気ディスク１０５２から読み取りそれに書き込む磁気ディスクドライブ１０５１、及びＣＤ−ＲＯＭ又は他の光メディア等の取り外し可能で不揮発性の光ディスク１０５６から読み取りそれに書き込む光ディスクドライブ１０５５を示している。例示的な動作環境での使用が可能な他の取り外し可能／取り外し不能で揮発性／不揮発性コンピュータ記憶メディアは、限定されないが、磁気テープカセット、フラッシュメモリカード、ディジタルバーサタイルディスク、ディジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等を含む。ハードディスクドライブ１０４１は一般に、インターフェース１０４０等の取り外し不能メモリインターフェースを介してシステムバス１０２１に接続され、磁気ディスクドライブ１０５１及び光ディスクドライブ１０５５は一般に、インターフェース１０５０等の取り外し可能メモリインターフェースによってシステムバス１０２１に接続されている。
【００６１】
上述されかつ図１０で示されたドライブ及びそれに関連したコンピュータ記憶メディアは、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール及びコンピュータ１０１０用の他のデータの記憶を提供する。図１０において、例えば、ハードディスクドライブ１０４１はオペレーティングシステム１０４４、アプリケーションプログラム１０４５、他のプログラムモジュール１０４６及びプログラムデータ１０４７を保存するとして示している。なお、それらのコンポーネントはオペレーティングシステム１０３４、アプリケーションプログラム１０３５、他のプログラムモジュール１０３６及びプログラムデータ１０３７と同一であっても又は異なっても良い。オペレーティングシステム１０４４、アプリケーションプログラム１０４５、他のプログラムモジュール１０４６及びプログラムデータ１０４７は本明細書では少なくとも異なっていることを示すために異なる番号が与えられている。ユーザは、タブレット又は電子デジタイザ１０６４、マイクロホン１０６３、キーボード１０６２、及びマウス、トラックボーメ又はタッチパッドと共通に称されるポインティング装置１０６１等の入力装置を介してコンピュータ１０１０に命令及び情報を入力することができる。図１０に示されていない他の入力装置はジョイスティック、ゲームパッド、サテライトディッシュ、スキャナー等を含んでも良い。それら及び他の入力装置は、システムバスに連結されているユーザ入力インターフェース１０６０を介して処理ユニット１０２０に度々接続される。ユーザ入力インターフェース１０６０は、パラレルポート、ゲームポート又はＵＳＢ(ユニバーサルシリアルバス)等の他のインターフェース及びバス構造によって接続されても良い。また、モニタ１０９１又は他の種類の表示装置は、ビデオインターフェース１０９０等のインターフェースを介してシステムバス１０２１に接続されている。モニタ１０９１はタッチスクリーンパネル等と合体されても良い。なお、モニタ及び／又はタッチスクリーンパネルは、タブレット型のパーソナルコンピュータ内のように、コンピューティング装置１０１０が組み込まれたハウジングに物理的に連結されても良い。加えて、コンピューティング装置１０１０等のコンピュータは、出力周辺インターフェース１０９４等を介して接続され得るスピーカ１０９５、プリンタ１０９６等の他の周辺出力装置を含んでも良い。
【００６２】
コンピュータ１０１０はリモートコンピュータ１０８０等の１以上のリモートコンピュータと論理接続部を用いてネットワーク化環境で動作しても良い。リモートコンピュータ１０８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置又は他の共通ネットワークノードであっても良く、メモリ記憶装置１０８１だけが図１０では示されているが、一般にコンピュータ１０１０と関連して上述されたエレメントの多く又は全てを含む。図１０に示された論理接続部は１以上のＬＡＮ（ローカルエリアネットワーク）１０７１及び１以上のＷＡＮ（ワイドエリアネットワーク）１０７３を含むが、他のネットワークを含んでも良い。そのようなネットワーク化環境はオフィス、企業規模のコンピュータネットワーク、イントラネット及びインターネットにおいて普通である。
【００６３】
ＬＡＮネットワーク化環境において用いられるとき、コンピュータ１０１０はネットワークインターフェース又はアダプタ１０７０を介してＬＡＮ１０７１に接続される。ＷＡＮネットワーク化環境において用いられるとき、コンピュータ１０１０は一般にインターネット等のＷＡＮ１０７３を介して通信を確立するためのモデム１０７２又は他の手段を含む。モデム１０７３は、内部又は外部にあっても良く、ユーザ入力インターフェース１０６０又他の適した機構を介してシステムバス１０２１に接続することができる。インターフェース及びアンテナを備える等の無線ネットワーク化コンポーネント１０７４は、アクセスポイント又はピアコンピュータ等の適切な装置を介してＷＡＮ又はＬＡＮに接続されても良い。ネットワーク化環境において、コンピュータ１０１０又はその一部に関連して示されたプログラムモジュールはリモートメモリ記憶装置に保存されても良い。例としては、限定されないが、図１０はメモリ装置１０８１に存在するとしてリモートアプリケーションプログラム１０８５を示している。当然であるが、示されたネットワーク接続部は例示であり、コンピュータ間の通信リンクを確立するための他の手段を用いても良い。
【００６４】
補助サブシステム１０９９（例えば、コンテンツの補助表示用）は、コンピュータシステムの主たる部分が低電力状態にあってもプログラムコンテンツ、システム状態、イベント通知等のデータがユーザに提供され得るようにユーザインターフェース１０６０を介して接続されても良い。補助サブシステム１０９９は、主たる処理ユニット１０２０が低電力状態にあるとき、それらのシステム間の通信を可能にするためにモデム１０７２及び／又はネットワークインターフェース１０７０に接続されても良い。
結論
【００６５】
本発明は様々な変更及び代替構成を受け入れることができるが、本発明の一部の実施形態は図面で示され、上記のように詳細に説明された。しかしながら、開示された特定の形式に本発明を限定する意向でなく、逆に本発明は全ての変更、代替構成、及び本発明の精神及び範囲に入る等価物を含んでいることが理解されるべきである。
【図１】
2011526038.tif 000003
【図２】
2011526038.tif 000004
【図３】
2011526038.tif 000005
【図４】
2011526038.tif 000006
【図５】
2011526038.tif 000007
【図６】
2011526038.tif 000008
【図７】
2011526038.tif 000009
【図８】
2011526038.tif 000010
【図９】
2011526038.tif 000011
【図１０】
2011526038.tif 000012
【国際調査報告】
2011526038.tif 000013
2011526038.tif 000014