(57)【特許請求の範囲】
【請求項１】
複数の記憶ユニットを含む共有記憶システムと、
前記共有システムに動作可能に接続されたノードであって、該ノードに動作可能に接続されている各記憶ユニットを特定し、前記ノードによる前記記憶ユニットの少なくとも１つに対するアクセスをマスクするようにプログラムされ、前記複数の記憶ユニットを特定する１または複数のワールドリストを用いたプログラム可能なデータ構造を含むノードであって、前記データ構造に含まれる排他リストの少なくとも一部に基づいて決定された前記ノードによる前記記憶ユニットの少なくとも１つに対するアクセスをマスクし、前記排他リストからの削除により、前記記憶ユニットの少なくとも１つが前記ノードによってアクセスできるように構成された前記ノードと
を備えたことを特徴とするシステム。
【請求項２】
前記１または複数のワールドリストは、前記共有記憶システムの前記記憶ユニットが前記ノードの範囲内にあるか否かを特定し、前記ノードは、前記１または複数のワールドリストに基づいて記憶ユニットへのアクセスをマスクすることを特徴とする請求項１に記載のシステム。
【請求項３】
前記１または複数のワールドリストは、プログラム可能な永続的データに対応する少なくとも一部分を含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記１または複数のワールドリストは、プログラム可能な一時的データに対応する別の部分をさらに含むことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ノードは、前記１または複数のワールドリストに基づいて前記ノードと記憶ユニットとの間に通信チャネルを提供する前記ノード内のプログラム可能なリンクの生成および削除の少なくとも１つをさらにプログラムされていることを特徴とする請求項２に記載のシステム。
【請求項６】
前記プログラム可能なリンクは、前記ノードに関連付けられた装置オブジェクトと対応する記憶ユニットとを含み、前記装置オブジェクトは、前記１または複数のワールドリストに基づいてインスタンス生成されることを特徴とする請求項５に記載のシステム。
【請求項７】
前記プログラム可能なリンクは、前記ノードに動作可能に関連付けられた装置オブジェクトと、前記記憶ユニットの１つに動作可能に関連付けられた高レベルの装置オブジェクトとの間に通信経路を提供するプログラム可能な接続を含み、前記通信経路は、前記１または複数のワールドリストに従ってマスクされることを特徴とする請求項５に記載のシステム。
【請求項８】
前記ノードは、前記ノードのマスキング基準を特定するプログラム可能な一時的データ構造とプログラム可能な永続的データ構造の少なくとも１つをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項９】
前記共有記憶システムは、前記ノードを前記複数の記憶ユニットに動作可能に接続する記憶領域ネットワークをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
複数の装置と、
前記複数の装置の各々を、複数のノードの各々に接続する少なくとも１つのバスとを備え、
前記複数のノードの各々は、前記複数の装置の各々を特定するようにプログラムされ、前記複数のノードの各々は、オブジェクトのインスタンス生成されたリストを含むプログラム可能なデータ構造を有し、該プログラム可能なデータ構造に従って前記複数の装置の少なくとも１つへの前記ノードによるアクセスをマスクすることであって、前記データ構造に含まれる排他リストに基づいて前記ノードによる前記複数の装置の少なくとも１つに対するアクセスをマスクし、前記排他リストからの削除により、前記複数の装置の少なくとも１つを、前記ノードにアクセスできるようにプログラム可能であることを特徴とするシステム。
【請求項１１】
対応するノードの前記プログラム可能なデータ構造は、前記複数の装置の各々が、前記対応するノードの範囲内にあるか否かを特定し、前記対応するノードは、それに関連付けられた前記プログラム可能なデータ構造に基づいて装置へのアクセスをマスクすることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記対応するノードの前記プログラム可能なデータ構造は、前記対応するノードに関連してマスクされるべき少なくとも１つの装置を特定するプログラム可能な永続的データを含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記対応するノードの前記プログラム可能なデータ構造は、前記対応するノードに関連してマスクされるべき少なくとも１つの装置を特定するプログラム可能な一時的データを含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記対応するノードの前記プログラム可能なデータ構造は、前記対応するノードに関連してマスクされるべき装置を特定するプログラム可能な永続的データとプログラム可能な一時的データとを含むことを特徴とする請求項１１に記載のシステム。
【請求項１５】
前記複数のノードの各々は、前記プログラム可能なデータ構造に基づいて前記対応するノード内のプログラム可能なリンクの追加および削除の少なくとも１つをさらにプログラムされ、前記プログラム可能なリンクは、前記対応するノードと前記複数の装置の１つとの間に通信チャネルを提供することを特徴とする請求項１１に記載のシステム。
【請求項１６】
前記プログラム可能なリンクは、前記対応するノードと前記複数の装置のうちの対応する１つとに関連付けられた装置オブジェクトを含み、該装置オブジェクトは、前記プログラム可能なデータ構造に基づいてインスタンス生成されることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記プログラム可能なリンクは、前記対応するノードに動作可能に関連付けられている装置オブジェクトと、前記複数の装置の１つに動作可能に関連付けられている高レベルの装置オブジェクトとの間のプログラム可能な通信経路を含み、該通信経路は、前記対応するノードの前記プログラム可能なデータ構造に従ってマスクされることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記ノードは、前記ノードに対するマスキング基準を特定するプログラム可能な一時的データ構造とプログラム可能な永続的データ構造の少なくとも１つをさらに含むことを特徴とする請求項１０に記載のシステム。
【請求項１９】
前記複数の装置の少なくともいくつかは、記憶域ネットワークを介して前記ノードと動作可能に接続されている共有記憶システムの記憶ユニットであることを特徴とする請求項１０に記載のシステム。
【請求項２０】
共有記憶システムの複数の記憶ユニットへのアクセスを管理するシステムであって、
前記複数の記憶ユニットに動作可能に接続することができるノードであって、前記複数の記憶ユニットの各々が前記ノードに関連してマスクされるか否かを示すプログラム可能なデータ構造を有し、該プログラム可能なデータ構造は、少なくとも１つのワールドリストおよび範囲制御リストを含み、該範囲制御リストは、前記複数の記憶ユニットの各々を特定する排他リストを含み、該排他リストに特定された前記記憶ユニットの少なくとも１つの削除により、前記ノードに関連して前記記憶ユニットの少なくとも１つをマスクしないように構成されたノードと、
前記複数の記憶ユニットの少なくとも１つに関連して前記ノードによるアクセスをマスクするために、プログラム命令に応じて前記プログラム可能なデータ構造を選択的に修正するインタフェースと
を備えたことを特徴とするシステム。
【請求項２１】
前記ノードの前記プログラム可能なデータ構造は、前記ノードに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するプログラム可能な永続的データを含むことを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記ノードの前記プログラム可能なデータ構造は、前記ノードに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するプログラム可能な一時的データを含むことを特徴とする請求項２０に記載のシステム。
【請求項２３】
前記ノードの前記プログラム可能なデータ構造は、前記ノードに関連してマスクされる記憶ユニットを特定するプログラム可能な永続的データとプログラム可能な一時的データとを含むことを特徴とする請求項２０に記載のシステム。
【請求項２４】
前記ノードは、前記プログラム可能なデータ構造の変更に応じて前記ノードと対応する記憶ユニットとの間に通信チャネルを提供するプログラム可能なリンクの追加および削除の少なくとも１つをさらにプログラムされていることを特徴とする請求項２０に記載のシステム。
【請求項２５】
前記プログラム可能なリンクは、前記ノードと前記対応する記憶ユニットとに関連付けられた装置オブジェクトを含み、該装置オブジェクトは、前記プログラム可能なデータ構造に基づいてインスタンス生成されることを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記プログラム可能なリンクは、前記ノードに動作可能に関連付けられている装置オブジェクトと、前記対応する記憶ユニットに動作可能に関連付けられている高レベルのオブジェクトとの間のプログラム可能な通信経路を含み、該通信経路は、前記プログラム可能なデータ構造に応じて変わることを特徴とする請求項２４に記載のシステム。
【請求項２７】
１または複数のオブジェクトのインスタンス生成されたリストを含むプログラム可能なデータ構造の少なくとも一部に基づいて、ノードに動作可能に接続されている記憶ユニットを特定するステップと、
少なくとも１つの選択された記憶ユニットに関連して前記ノードによるアクセスをマスクするステップであって、前記データ構造に含まれる排他リストを用いて、該排他リストに特定された少なくとも１つの選択された記憶ユニットの削除により、前記ノードに関連してマスクしないステップと
を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な記憶媒体。
【請求項２８】
ノードに動作可能に接続されている記憶ユニットを特定するステップと、
選択された記憶ユニットを示す前記ノードにおいてプログラム可能なデータ構造を生成するステップであって、該プログラム可能なデータ構造は、１または複数のオブジェクトのインスタンス生成されたリスト、ワールドリストおよび範囲制御リストを含むステップと、
前記プログラム可能なデータ構造に基づいて前記記憶ユニットの少なくとも１つに関連して前記ノードによるアクセスをマスクするステップと、
前記範囲制御リストに含まれる排他リストに特定された前記記憶ユニットの少なくとも１つの削除に基づいて、前記記憶ユニットの少なくとも１つをマスクしないステップと
を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な記憶媒体。
【請求項２９】
前記ノードに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するデータを、前記ノードの永続的メモリに記憶するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３０】
前記ノードに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するデータを、前記ノードの一時的メモリに記憶するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３１】
前記永続的メモリと前記一時的メモリの少なくとも１つに記憶されている前記データに基づいて前記プログラム可能なデータ構造を規定するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項３０に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３２】
前記ノードに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するデータを前記ノードの永続的メモリに記憶するステップと、前記永続的メモリに記憶されている前記データに基づいて前記プログラム可能なデータ構造を規定するステップとを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３３】
前記プログラム可能なデータ構造の変更に応じて、前記ノードと前記記憶ユニットの対応する１つとの間のプログラム可能なリンクを追加または削除するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３４】
前記プログラム可能なリンクは、前記ノードと前記複数の記憶ユニットの前記対応する１つとに関連付けられた装置オブジェクトを含み、前記プログラム可能なデータ構造に基づいて前記装置オブジェクトをインスタンス生成するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項３３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３５】
前記プログラム可能なリンクは、前記ノードに動作可能に関連付けられている装置オブジェクトと、前記記憶ユニットの１つに動作可能に関連付けられている高レベルの装置オブジェクトとの間のプログラム可能な通信経路を含み、前記プログラム可能なデータ構造の変更に応じて、前記通信経路を追加または削除するステップを実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３６】
複数のコンピュータによる複数の共有記憶ユニットへのアクセスを管理する方法であって、
少なくとも１つのワールドリストを含む１または複数のプログラム可能なデータ構造を利用して、前記複数の記憶ユニットを特定するステップと、
前記複数のコンピュータの少なくとも１つによる前記複数の記憶ユニットの少なくとも１つへのアクセスをマスクするステップと、
前記１または複数のプログラム可能なデータ構造に含まれる排他リストに特定された前記複数の記憶ユニットの少なくとも１つの削除に基づいて、前記複数のコンピュータの少なくとも１つによるアクセスを提供するステップと
を備えたことを特徴とする方法。
【請求項３７】
記憶ユニットが前記少なくとも１つのコンピュータに関連してマスクされるべきか否かのマスキング基準を示すプログラム可能なデータ構造を、前記少なくとも１つのコンピュータで記憶するステップをさらに含み、前記マスクするステップは、前記プログラム可能なデータ構造に基づいて実行されることを特徴とする請求項３６に記載の方法。
【請求項３８】
前記少なくとも１つのコンピュータに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するデータを、前記少なくとも１つのコンピュータの永続的メモリに記憶するステップをさらに含むことを特徴とする請求項に３７記載の方法。
【請求項３９】
前記少なくとも１つのコンピュータに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定するデータを、前記少なくとも１つのコンピュータの一時的メモリに記憶するステップをさらに含むことを特徴とする請求項に３８記載の方法。
【請求項４０】
前記永続的メモリと前記一時的メモリの少なくとも１つに記憶されている前記データに基づいて前記プログラム可能なデータ構造を規定するステップをさらに含むことを特徴とする請求項３９に記載の方法。
【請求項４１】
前記少なくとも１つのコンピュータに関連してマスクされる前記複数の記憶ユニットの少なくとも１つを特定する永続的および一時的データの少なくとも１つを、前記少なくとも１つのコンピュータに記憶するステップと、永続的および一時的データの前記少なくとも１つに基づいて前記プログラム可能なデータ構造を規定するステップとをさらに含むことを特徴とする請求項３７に記載の方法。
【請求項４２】
前記少なくとも１つのコンピュータにおいて、前記プログラム可能なデータ構造の変更に応じて、前記少なくとも１つのコンピュータと対応する記憶ユニットとの間に通信チャネルを提供するプログラム可能なリンクを追加または削除するステップをさらに含むことを特徴とする請求項３７に記載の方法。
【請求項４３】
前記プログラム可能なリンクは、前記少なくとも１つのコンピュータと前記複数の記憶ユニットの対応する１つとに関連付けられた装置オブジェクトを含み、前記プログラム可能なデータ構造に基づいて前記少なくとも１つのコンピュータにおいて前記装置オブジェクトをインスタンス生成するステップをさらに含むことを特徴とする請求項４２に記載の方法。
【請求項４４】
前記プログラム可能なリンクは、前記少なくとも１つのコンピュータに動作可能に関連付けられた装置オブジェクトと、前記記憶ユニットの１つに動作可能に関連付けられた高レベルの装置オブジェクトとの間のプログラム可能な通信経路を含み、前記プログラム可能なデータ構造の変更に応じて前記通信経路を追加または削除するステップをさらに含むことを特徴とする請求項４２に記載の方法。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、一般に、装置へのアクセスを制御することに関し、より詳細には、ホストシステムに動作可能に接続された１または複数の装置へのホストシステムによるアクセスをプログラムで管理するシステムおよび方法に関する。
【０００２】
（背景技術）
競争力を維持し、技術的な変更に対処するために、コンピュータシステムは、益々強力に、さらに複雑化している。この主な誘因は、大規模なデータベースの応用、およびよりデータ集約的な応用である。システムが複雑さを増すにつれて、改良されたデータ記憶と通信機能に対する需要も高まってきた。コンピュータのアーキテクチャは、従来、記憶装置が取り付けられているホストコンピュータまたはノードによって、記憶装置が「所有される」という原則に基づいていた。最近では、コンピュータのアーキテクチャのモデルは、より多くの知能をデータ記憶装置およびチャネルに移動して、データ伝送および記憶を容易にする。
【０００３】
チャネルとネットワークは、典型的には、プロセッサ間およびプロセッサと周辺装置との間で使用されるデータ通信トポロジの２つの基本的な種類である。「チャネル」は、通信装置間に直接またはスイッチされたポイント・ポイント接続を実現する。このチャネルの主なタスクは、最も遅延を少なくして可能な限り最高のデータ転送率でデータを転送することである。チャネルは、典型的には、ハードウェアで簡単なエラー訂正を実行する。「ネットワーク」は、対照的に、ノード間の対話をサポートする固有のプロトコルを有する分散したノード（例えば、ワークステーション、大容量記憶装置など）の集合体である。典型的には、各ノードは、伝送媒体を争奪し、ネットワーク上のエラー状態を認知することができなければならず、そのエラー状態から復帰するために必要とされるエラー管理を提供する必要がある。
【０００４】
通信相互接続の複合タイプは、ファイバチャネルであり、チャネルとネットワーク技術の両方の利点を結合することを試みる。ファイバチャネルプロトコルは、American National Standard for Information Systems（ＡＮＳＩ）の下で開発され、採用されている。換言すれば、ファイバチャネルは、ワークステーション、スーパーコンピュータ、および様々な周辺装置間での並行した通信を可能にする交換プロトコルである。ファイバチャネルによって提供される全体的なネットワーク帯域幅は、およそ秒速１テラビットになる場合がある。ファイバチャネルは、双方向同時に秒速１ギガビット超の速度でフレームを伝送することができる。光ファイバおよび銅ケーブルの両方を介して、ＩＰ（Internet Protocol）、ＳＣＳＩ（Small Computer System Interface）、ＨＩＰＰＩ（High Performance Parallel Interface）、およびＩＰＩ（Intelligent Peripheral Interface）などの既存のプロトコルに従って、コマンドおよびデータを転送することもできる。
【０００５】
ファイバチャネルの発展および標準化は、データ記憶に関して重大な影響を有している。ファイバチャネルは、他の従来型データ記憶トポロジよりも、より高速のアクセスと、さらに遠距離（例えば、１０ｋｍ超）のアクセスとを可能にする。ファイバチャネルによって装置間の距離をさらに延長することができるので、記憶装置を遠隔に配置することによって、災害復帰状況において利点を有する。ファイバチャネルが重大な関心をよせるある特定のデータ記憶のアリーナ（arena）は、共有記憶システムであり、複数のホストが関連付けられた記憶装置のネットワークに対するアクセスを共有することができる記憶領域ネットワーク（ＳＡＮ：Storage Area Network）などである。
【０００６】
典型的なＳＡＮアーキテクチャは、複数の記憶システムと論理的に分離されたネットワークから構成されている。記憶システムは、ディスク、テープなどの事実上いかなるタイプの記憶装置も含むことができる。ネットワーク部分は、アダプタ、配線、ブリッジ、ハブ、スイッチ、およびディレクタ（directors）を含む。換言すれば、アダプタは、サーバおよび周辺装置をネットワークの配線（例えば、光ファイバまたは他の配線）に取り付ける。ブリッジは、例えば、ＳＣＳＩからファイバチャネルへ、一方のプロトコルから他方のプロトコルに変換する。ハブ、スイッチ、およびディレクタは、典型的なＳＡＮデータバスに中央接続点とルーティング機能を提供する。ＳＡＮ環境によって、複数の記憶装置は、複数のホストマシンによってアクセスすることができる共有記憶プールとみなすことができる。複数の装置が、同時に所与の記憶装置に対するアクセスを要求する場合があるので、ＳＡＮの記憶装置に対するアクセスを管理する際に問題が発生する場合がある。
【０００７】
ハードウェアベースのスイッチングアーキテクチャは、ＳＡＮに接続された記憶装置に対するアクセスを選択的に制御することを提案してきた。例えば、ファイバチャネルスイッチを、ＳＡＮにおける個々のファイバチャネルノードの機能を制限するゾーンを生成し、相互に、および関連付けられた記憶装置と通信するのに使用する。複数の記憶装置が論理ユニットのアレイ（例えば、キャビネット内）として構成されている記憶装置のアーキテクチャでは、別の手法でハードウェアベースのＬＵＮマスキングを実施する。ＬＵＮマスキングでは、スイッチが使用され、通常ＳＡＮにおいて、ホストマシンと関連付けられた記憶装置に対応する選択された論理ユニットとの間のアクセスを制御する。例えば、ファイバチャネルスイッチは、特定のコマンドがどのファイバチャネルノードおよびどの論理ユニット番号を対象とするかを決定し、論理ユニット番号レベルでマスキングを実行する。
【０００８】
しかしながら、ハードウェアのスイッチを制御するために使用するインタフェースに関して不十分な標準しか開発されていないので、大部分のシステムではＬＵＮマスキングを有効に実施することは困難な場合がある。具体的には、各記憶装置およびホストマシンの管理インタフェースは、通常、製造業者によって異なる。従って、システムが異なる製造業者による記憶装置および／またはホストマシンを備えているとき、異なるインタフェースが、要求される。さらに、ハードウェア自体（例えば、スイッチおよびキャビネット）は、それらを共有記憶用に使用することを要求する、小規模な組織にとっては、法外に高価な場合がしばしばある。同様に、ＳＡＮシステムに接続されている様々なホストマシンが、様々なオペレーティングシステムを使用する場合には、様々なマシンが同じ記憶装置（または論理ユニット）に同時にアクセスを試みると問題が発生する場合がある。加えて、複数のホストが同じ記憶装置に接続されている場合、各ホストによる装置の定期的な監視によるなど、ファイルシステムが破損する確率が高まる。
【０００９】
（発明の開示）
本発明は、ノードと、記憶ユニットなどの１または複数の関連付けられた装置との間のアクセスを、プログラムで管理するシステムおよび方法に関する。ノードに１または複数のデータ構造をプログラムして、関連付けられた装置がノードの範囲内にあるか否かを示すことができる。ノードの範囲は、ノードのデータ構造に基づいて決定されるが、これはデータ構造をプログラムで修正することによって動的に変更することができる。
【００１０】
本発明の一態様によれば、ノードに取り付けられた装置を特定するためにインタフェースが使用される。例えばノードは、ノードに取り付けられた装置を示す第１のデータ構造を有する。ノードは、関連付けられた装置がノードに関係して隠蔽されるか露出されるかを示す第２のデータ構造も有する。例えば、第２のデータ構造は、どの装置がノードの範囲内にあるかを示す包含リストの形式であっても、および／またはどの特定された装置がノードの範囲内にないかを示す排他リストであってもよい。プログラムされたインタフェースを使用して、選択された方法で第２のデータ構造を修正することができる。従って、選択され取り付けられた装置は、動的にノードの範囲に入れ、および／または出すことができる。共有記憶システムでは、インタフェースは、共有記憶装置の管理を単純化し、装置の競合を軽減する。本発明によって構成されているノードのブートタイムを低減することができる。オペレーティングシステムは、ノードの第２のデータ構造に基づいて関連付けられた装置へのアクセスと実装とを必要とするからである。
【００１１】
本発明の別の態様によれば、ノード上の１または複数のコントローラを、複数のターゲット記憶ユニットを有する共有記憶システムに動作可能に結合することができる。各コントローラは、プログラム可能なデータ構造を使用し、これは、コントローラに対して機能的に露出または隠蔽されるべきノードに動作可能に取り付けられた、関連付けられた装置を規定する。データ構造は、永続的および／または一時的な構成要素を含むことができる。一時的および／または永続的構成要素を、所定の方法で使用されるインタフェースによって修正することができる。装置オブジェクトは、コントローラのデータ構造によって規定されるように、関連付けられた装置ごとにコントローラで生成される。各装置オブジェクトは、クラスドライバなどの高レベルのオブジェクトにリンクされ、コントローラからのコマンドに応じて関連付けられた装置の動作を制御する。
【００１２】
本発明の別の態様によれば、関連付けられた装置に対する装置オブジェクトは、ノードのデータ構造に対する変更に基づいて、動的に削除（または追加）される。例えば、装置オブジェクトが削除されると、高レベルの装置オブジェクト（例えば、クラスドライバ）は、各々の装置オブジェクトに対してロードされず、対応する装置は、最早ノードの範囲内にはない。従って、従来型の通信機構（例えば、読み取りおよび／または書き込みコマンド）は、装置と通信することが禁止される。しかしながら、第２のノードに対する装置オブジェクトを、関連付けられた装置に対して生成し（例えば、第２のノードのデータ構造をプログラムで修正することによって）、第２のノードと関連付けられた装置との間に通信チャネルを確立することができる。この方法で、本発明の一態様を使用して、１組の相互接続されたノード間で装置をプログラムでスワップすることを容易にすることができる。
【００１３】
本発明のさらに別の態様によれば、装置オブジェクトと関連付けられた装置の高レベルの装置オブジェクトとの間のリンクは、関連付けられた装置がノードのデータ構造によって特定されるか否かによって動的に切断または追加することができる。装置オブジェクトと高レベルの装置オブジェクトとの間のリンクが切断されるとき、関連付けられた装置は、最早ノードの範囲内にはなく、関連付けられた装置へのノードによるアクセスはブロックされる。新しい高レベルの装置オブジェクトを生成し、装置オブジェクトにリンクして、ノードのデータ構造のプログラムによる変更に応じるなどして、ノードに対して関連付けられた装置を露出することができる。
【００１４】
（本発明を実行するためのモード）
本発明は、ノードと、記憶の機能単位などの１または複数の関連付けられた装置との間のアクセスをプログラムで管理するシステムおよび方法に関する。１または複数のデータ構造を、ノードにプログラムして、関連付けられた装置がノードの範囲内にあるか否かを特定することができる。ノードの範囲は、各関連付けられた装置がノードに関連して機能的に露出されているか隠蔽されているかを規定する。ノードの範囲を、本発明の一態様にかかるデータ構造をプログラムで修正することによって動的に変更することができる。
【００１５】
図１は、本発明にかかるマスキングを実施するようにプログラムすることができるシステム１０の簡略化されたブロック図である。システムは、バス１４を介して複数の装置１６、１８、２０および２２に動作可能に結合されるノード１２を含む。ノードは、クライアントマシン、ワークステーション、サーバ、または他のマシンなどのコンピュータである。装置１６、１８、２０、および２２は、ノード１２と関連して使用することのできる記憶の機能単位（例えば、ハードディスクドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、テープ）、または他の周辺装置の形態とすることができる。バス１４は、ノード１２と記憶装置１６、１８、２０、および２２との間でデータ通信を可能にするネットワーク、チャネルまたは他の接続手段の形態とすることができる。
【００１６】
本発明の一態様によると、ノード１２は、関連付けられたデータ構造を有するコントローラ２４を含み、これは、１または複数のプログラム可能なリストなど、ノードによって使用されるマスキングパラメータを決定するための範囲基準を規定する。特に別の方法で記され、または文脈によって異なる解釈が要求されない限り、本明細書および頭記の特許請求の範囲で使用する「マスキング」という用語は、最も広義に解釈されるべきであり、この用語のこのような解釈は、頭記の特許請求の範囲に含まれる点を意図することを理解し認識されたい。例えば、ノードに関する装置を「マスクする」ということは、その装置をノードの範囲内に入れること、およびその装置をノードの範囲から出すことの両方を含むことができる。装置がノード１２の範囲内にない場合、装置がノードのソフトウェアの上層に対して隠蔽されているので、ノードと装置との間の通信はブロックされる。対照的に、装置がノード１２の範囲内にある場合、ノードは、適切な通信プロトコルを使用して装置にアクセスすることができる。
【００１７】
図２ａ〜２ｃは、ノード１２のオペレーティングシステム（例えば、ドライバスタック）の特徴を表す機能ブロック図であり、これを、ノードとノードに動作可能に結合されている装置（図示せず）との間の通信経路をマスクするようにプログラムし、および／または構成することができる。図２ａを参照すると、ノード１２は、例えば、ＳＣＳＩバスアダプタであるホストバスアダプタ２８を含む。ホストバスアダプタ２８は、関連付けられたバスを介してノード１２とノードに動作可能に接続された装置との間の通信経路またはチャネルを管理するように構成されおよび／またはプログラムされたコントローラ３０を含む。具体的には、コントローラ３０は、バスに接続された装置の装置オブジェクト３２ａ、３２ｂ、３２ｃ（「装置オブジェクト３２」という）を生成する。各装置オブジェクト３２は、例えば装置の位置（例えば、論理ユニット番号）と装置の動作特性とを含めて、装置を特定する機能的な装置オブジェクトである。本明細書で使用される装置という用語は、例えば、ハードウェア装置または記憶装置に関連付けられたデータ記憶の論理ユニットなどの装置の機能単位に相当するように、広義に解釈されるよう意図されることを理解されたい。
【００１８】
別の高レベルの装置オブジェクト３４ａ、３４ｂ、３４ｃ（「高レベルの装置オブジェクト３４」という）は、各々の装置オブジェクト３２ａ、３２ｂ、３２ｃに対してロードされる。各高レベルの装置オブジェクト３４ａ、３４ｂ、３４ｃは、３６ａ、３６ｂ、３６ｃで示された動作可能なリンクを介して、各々の装置オブジェクトに関連付けられる。高レベルの装置オブジェクト３４は、例えば、クラスドライバなどの物理的装置オブジェクトであり、これは、ノード１２のコントローラ３０の要求に応じて、対応する装置に適切なコマンドを提供しまたは提供されることによって、関連付けられた装置の動作を制御する。高レベルの装置オブジェクト３４が関連付けられた装置オブジェクト３２にロードされリンクされると、対応する装置は、ノードの範囲内にある（例えば、ノードは、対応する装置にアクセスすることができる）。
【００１９】
ノード１２、またはより具体的にコントローラ３０は、装置とノードとの機能上の関係を示す情報を記憶するデータ構造４０を含む。一例として、データ構造４０の一態様は、コントローラのバスに動作可能に接続されているすべての装置を特定するデータベースまたはリスト４２（以下、「ワールドリスト４２」という）に相当する。ワールドリスト４２は、本発明に関して、ノード１２に関連して機能的に露出および隠蔽される装置を含む。データ構造４０の別の一態様は、インスタンス生成される装置オブジェクトを有するすべての装置を特定するデータベースまたはリスト４４である。すなわち、オブジェクトのインスタンス生成されたリスト４４は、装置オブジェクト３２が存在するコントローラ３０（または、ノード１２）に動作可能に接続されている装置を特定する。
【００２０】
データ構造４０の第３の態様は、範囲制御データ構造４６であり、適切にはノード１２に対するマスキング基準の作業マップを記憶しているリスト（以下、「範囲制御リスト４６」という）の形式をとる。範囲制御リスト４６は、プログラム可能であり、マスキング基準を修正して、システムのブートを必要とせずに、選択された装置を動的にノード１２の範囲内に入れおよび／または範囲外に出すようにすることができる。マスキング基準は、例えば、排他リスト、包含リスト、またはその両方を含むことができる。リスト（包含または排他）を、いかなる形式のデータ構造により構成することができる。包含リストは、ノードの範囲内にある装置を規定する（その論理ユニット番号または他の識別特性に従うことにより）。対照的に排他リストは、ノードの範囲内にない装置を特定する。すなわち、排他リストにないすべての装置は、ノードの範囲内にある。従って、排他リストが使用される場合、新しい装置がノード１２に動作可能に結合されると、その装置を、例えばＰＮＰ（Plug-n-Play）制御を使用して、ノードに対して露出する。マスキング規準を包含リストと排他リストのどちらの形式で提供するかは、一般的に言って設計の選択の問題である。システム構成およびマスキングが実施されているという理由に応じて、それぞれに利点を有するからである。
【００２１】
簡約化のため、以下の例は、包含リストの装置がノードの範囲内である包含リストとして範囲制御リスト４６を記述する。しかしながら、本明細書に記載の原理は、包含リストと排他リストの両方に同等に適用可能であることを理解されたい。さらに、範囲制御リスト４６は、ノードのコントローラ３０に動作可能に関連付けられているように記載されているが、他のデータ記憶構成を使用することもできることを理解されたい。例えば、共通の範囲制御データ構造を、ノード１２に対して維持し、ノード１２に関連してどの装置がマスクされるかを広くグロ示すことができる。別法として、範囲制御リストは、バスごとに別個に維持することもできる。
【００２２】
本発明の一態様によれば、２つの種類の包含（および／または排他）リストを、範囲制御リスト４６、すなわち永続的包含リスト４８と一時的包含リスト５０とに動作可能に関連付けることができる。「永続的」および「一時的」という用語は、各々のリストの記憶特性に関する。例えば、一時的包含リストは、システムのリブートまたは対応するコントローラのディスエーブルでは存続しない。例えば、一時的リスト５０は、ＲＡＭなどのノードの一時的メモリ（例えば、揮発性記憶装置）に記憶され、システムが実行中でありコントローラ３０がイネーブルされている限り維持される。永続的包含リスト４８は、システムのリブートまたはクラッシュ、並びに電力損失やコントローラ３０またはノード１２がディスエーブルされたときなど、類似の状況で存続できることが好ましい。例えば、永続的リストは、システムレジストリなどの永続的メモリ（例えば、不揮発性記憶装置）に記憶される。永続的および一時的包含リスト４８、５０は、各々プログラム可能であり、例えば、管理者または高レベルのサービスが選択されたリストを修正し、その結果ノード１２の範囲を動的に変更することができる。いくつかのインタフェース（例えば、ＡＰＩ（Application Program Interface））が提供されて、例えば、選択された複数のリストの内容を閲覧し、または選択されたリストの内容をプログラムで変更することができる。
【００２３】
一例として、本発明に関して、SET_INCLUSION_LISTインタフェース（またはＡＰＩ）などのインタフェース６０が提供されて、ノード１２に関連する装置のプログラムによるマスキングをイネーブルする。高レベルのアプリケーション（またはサービス）または管理者などのエージェントは、インタフェース６０を使用して、包含（および／または排他）リストを修正する。インタフェース６０によって、１または複数の装置の対応する識別データが、適切な包含リスト（永続的または一時的）から削除（または追加）される。高レベルのアプリケーションまたはシステム管理者によってインタフェース６０に提供された命令は、リストに対する変更の種類および範囲を決定する。
【００２４】
特定の装置がノード１２の範囲内にあるか否かを制御することに加え、範囲制御リストを完全に削除することが望ましい場合もあり、範囲制御リストに関連付けられたマスキング特性が、システムの動作に影響を与えないようにする（例えば、マスキングがまったく試みられないように）。このような操作を、例えば包含リストに対して実施するためには、CLEAR_INCLUSION_LISTインタフェース７０などの適切なインタフェースまたはＡＰＩを提供することができる。管理者（手動で）または高レベルのアプリケーション（開始された操作）は、どの包含リスト（または複数の包含リスト）が削除されるべきかを示すことによってインタフェース７０を使用することができる。このインタフェース７０の効果は、範囲制御リストの種類に従って決定される。例えば、１つのリストだけが存在し、そのリストがCLEAR_INCLUSION_LISTインタフェースを使用して削除される場合、システムは、例えばシステムで見えるすべての装置を露出することができるデフォルトの動作に戻る。別法として、混合している範囲制御リストがある場合（例えば、包含リストと排他リストの両方がある場合）、システムの動作は、どちらのリストが削除されているかに従って変わる。例えば、包含リストがインタフェースを介して削除される場合、排他リストで特定されたすべての装置は、排除される。排他リストが混合リストから削除される場合、包含リストで特定されるすべてが包含される。ノードの範囲を修正する操作は、例えば、以下に記載の手法の１つによって行われる。すなわち、装置オブジェクト自体を削除または追加することもでき（例えば、図２Ｂを参照）、または装置オブジェクトと各々のクラスドライバとの間のリンクを切断または作成することができる（例えば、図２Ｃを参照）。
【００２５】
包含（または排他）リストの現在の状態を決定するために、ノード、管理者またはアプリケーションは、GET_INCLUSION_LISTインタフェース８０などの別のインタフェースを使用して、現在の包含リスト（一時的および／または永続的）を示す情報を戻すこともできる。GET_INCLUSION_LISTインタフェース８０は、あらゆるアプリケーションまたはユーザによって、ノードにおいてアクセスすることができる。
【００２６】
別のインタフェースQUERY_ATTACHED_DEVICES９０を使用して、コントローラに取り付けられた装置のリストを、各々の装置の識別特性と共に戻すことができる。例えば、ＳＣＳＩ照会に応じた照会データの取り出しに基づくことができ、ノードに関連付けられたあらゆるユーザまたはアプリケーションによって、これにアクセスすることができる。
【００２７】
図２ｂは、本発明の特定の一態様によって、装置がノード１２の範囲内にあるか否かを制御するために使用することができる手法の機能図を示す。プライムシンボル（’）を付した類似の参照番号は、図２ａに関して既に特定された対応する構成要素を示す。具体的には、この手法は、関連付けられた装置オブジェクト３２ｃ’を操作すること（例えば、追加することまたは削除すること）に関し、関連付けられた装置に関連するノードでマスキングを実施する。一例として、現在露出されている装置をノード１２’の範囲から削除するために、特定の装置に関連付けられた装置オブジェクト（例えば３２ｃ’）が削除される。これは、装置オブジェクト３２ｃ（図２ａ）の欠損を示す参照文字３２Ｘによって図２ｂに示される。装置オブジェクトの削除を、例えば、SET_INCLUSION_LISTインタフェース６０’を使用することによって開始して、選択された装置を包含リストから削除することができる。範囲制御リスト４６’は、包含リストに変更を組み込む。インタフェース６０’は、ＰＮＰモジュールまたは専用インタフェース（図示せず）に指示して、各々の装置オブジェクトを削除する。装置オブジェクト３２ｃの削除によって、対応するクラスドライバ３４ｃ（図２ａ）を削除またはアンロードする。装置は、インスタンス生成されたオブジェクト４４’のリストからも削除される。装置には装置オブジェクトもクラスドライバも関連付けられていないので、ノード１２に関連付けられたあらゆる高レベルオブジェクトまたはドライバを通して装置と通信することのできる有用なチャネルはなく、従って、装置へのノードによるアクセスは完全にブロックされる。
【００２８】
現在露出されていない装置をノード１２の範囲内に入れるために、装置オブジェクト３２は、その装置のノードでプログラムにより生成される。図２ｂを参照すると、これは、例えば、SET_INCLUSION_LISTインタフェース６０’を使用する高レベルアプリケーションまたは管理者によって実施され、その装置の適切な識別データを包含リストに追加することができる。インタフェース６０’は、ＰＮＰ制御または他のインタフェースに指示し、その装置の装置オブジェクトを追加する。その装置のクラスドライバ３４ｃは、ロードされ、装置オブジェクト３２ｃに動作可能にリンクされる（図２ａ参照）。その装置を、例えば、ノードと装置との間に通信チャネルを確立中であるという理由に基づいて、永続的または一時的包含リスト４８’、５０’に追加することができる。装置オブジェクト３２ｃが作成されると、その装置を、インスタンス生成されたオブジェクト４４のリストに追加する。追加中の装置がシステムにとって新しい装置である場合、これをワールドリスト４２にも追加することができる。
【００２９】
管理者または高レベルアプリケーションまたはモジュールは、CLEAR_INCLUSION_LISTインタフェース７０’を使用して、範囲制御リストを削除することができる。上記のように、装置がノード１２の範囲内に入れられるか、この範囲から出されるかは、そのリストが包含リストか排他リストかによって異なる。
【００３０】
図２ｃは、本発明によって、装置がノード１２”の範囲内にあるか否かをプログラムで制御するために、ノード１２”で使用することができる別の手法の機能図である。ダブルプライムシンボル（”）を付した類似の参照番号は、図２ａに関して既に特定された対応する構成要素を示す。この手法では、ノードと装置との間の通信チャネルを、装置オブジェクト３２”と、その装置の対応する高レベルの装置オブジェクト３４”との間の動作可能なリンク３６”を制御することによってマスクすることができる。再度図２ａを参照すると、例えば、装置に対して装置オブジェクト３２ｃと対応するクラスドライバ３４ｃとが存在する場合、その装置を、装置オブジェクトとクラスドライバとの間のリンク３６ｃを動的に切断する（または削除する）ことによって、ノード１２の範囲から出すことができる。これは、リンク３６ｃ（図２ａ）の欠損を示す参照番号３６Ｘによって図２ｃに示される。ノードの範囲内にはないが既にワールド４２”の一部である装置を、例えば、図２ａに示すように装置オブジェクト３２ｃと装置のクラスドライバ３４ｃとの間にリンク３６ｃを追加することによって、ノード１２”の範囲に入れることができる。
【００３１】
マスキングは、図２ｂに関して記載した手法と類似の方法で実施することができる。すなわち管理者または高レベルのアプリケーションは、SET_INCLUSION_LISTインタフェース６０”などの適切なインタフェースを使用して、包含リスト（一時的５０”または永続的４８”）を修正する。範囲制御リスト４６”は、各々の包含リストに変更を組み込む。インタフェース６０”は、専用インタフェースまたはＰＮＰ制御に指示して、装置がノードに関連して機能的に隠蔽され、または露出されているかによってリンク３６”を追加または切断する。ノード１２”に関連して露出されるべき装置（例えばシステムに接続されている新しい装置）に対して、装置オブジェクトもクラスドライバも作成されていない場合、既に図２ａに関して示し、記載したように、対応する装置オブジェクト３２ｃとクラスドライバ３４ｃとが作成され、リンクされる。各装置オブジェクト３２に関連付けられたフラグを、論理値（ＴＲＵＥまたはＦＡＬＳＥ）にセットして、装置オブジェクトがノードの範囲内にある可視の装置に相当するか否かを示すことができる。
【００３２】
図３は、ノード１１０が複数のバス１３０および１４０を介して複数のターゲット装置１２０に動作可能に結合されるシステム環境１００の一例を示す。ノード１１０は、ノードと各ターゲット装置の間に通信経路（チャネル）を確立し、制御するために、各々のバス１３０、１４０と動作可能に関連付けられたコントローラ１５０、１６０を含む。各ターゲット装置１２０は、それに関連付けられたターゲットアドレスを有し、１または複数の論理ユニット１７０を含む。論理ユニット１７０は、例えば、各々のターゲット装置１２０の機能的記憶ユニットにインタフェースを提供する。各論理ユニット１７０は、関連付けられた論理ユニット番号（または他の識別特性）を有する。ノード１１０およびコントローラ１５０と１６０は、図２Ａ〜２Ｃに関して示し、記載したノードおよびコントローラと同様に機能するように構成される。具体的には、ノード１１０は、ノードの範囲内にある１または複数の論理ユニットを特定するシステムレジストリに記憶されている永続的包含リストを含むことができる。
【００３３】
システムブートまたは初期化中に、永続的包含リストが使用され、ノード１００と、リストによって示される各装置１２０または論理ユニット１７０との間に通信経路またはチャネルを確立する。一例として、初期化中にノード１１０またはコントローラ１５０および１６０は、システムレジストリに記憶されている永続的包含リストに基づいて範囲制御リストをセットする。永続的リストが提供されていない場合、ノードは、既定値により、ノードに動作可能に接続されているすべての装置を機能的に露出するか、または装置を露出しないように構成することができる。以下の例では、初期の永続的包含リストが提供されていると想定している。
【００３４】
各コントローラ１５０、１６０は、バスをスキャンし、各ターゲット装置に関連付けられた論理ユニット番号を決定するために、各々のバス１３０、１４０上の各ターゲット１２０に照会を送る。コントローラ１５０および１６０は、追加の照会を実行して、各論理ユニットに関連付けられた装置の種類を決定し、例えばシリアル番号などの各論理ユニットの特定の識別データを取得することができる。各コントローラ１５０、１６０は、さらに、その範囲制御リストをチェックして、識別データに基づいて、装置または論理ユニットがリストの範囲内にあるか否かを判定する。論理ユニットがコントローラの範囲内にある場合、その論理ユニットの装置オブジェクトが生成され、装置オブジェクトに関連付けられた適切なフラグをセットすることによって、その論理ユニットを可視であるとしてマーク付けすることができる。各装置オブジェクトに関連付けられた論理ユニット特性も、インスタンス生成されたオブジェクトのリストに追加される。しかしながら、論理ユニットがノード１１０の範囲内にない場合、対応する装置オブジェクトは生成されない。しかしながら、どちらの場合でも、各論理ユニットの識別特性は、ノード１１０のワールドリストに追加される。このプロセスは、各バス１３０、１４０の各ターゲット装置１２０の各論理ユニット１７０がそれに応じて処理されるまで反復される。
【００３５】
システムのブートなどのある種の環境下では、範囲制御リストからすべての項目が削除されるヌル範囲制御リストをプログラムでセットすることが望ましい場合がある。例えば、ヌル包含リストによって、すべての装置１２０または論理ユニット１７０は、ノード１１０の範囲から削除される。対照的に、ヌル排他リストによって、バスに取り付けられているすべての装置が範囲に含まれる。このような状況では、ノード１１０は、包含リスト（永続的または一時的）で特定されたいかなる装置をも有さず、従って、範囲制御リストによって特定される装置はない。コントローラが包含リストを有しない場合、バススキャン中にバスに動作可能に接続されている装置のチェックは実行されない。これは大幅にブートタイムを軽減する。固有の装置の動作を検証し、または装置に関連付けられたファイルシステムをチェックするために手順を実施することは必須ではないからである。ブートタイムを、ノードの包含リストを最初にプログラムすることによって低減することができ、比較的少数の装置だけを特定して、ノードの範囲内に装置がほとんどないようにする（例えば、システムがＳＡＮ環境などの大量のデータ記憶に取り付けられている場合）。経路過負荷と装置競合とが軽減される。
【００３６】
図４は、複数のノード２０２と２０４とがそれぞれに接続２０６と２０８を介して共有記憶システム２１０に接続されている本発明にかかるシステム構成の一例２００の機能図である。共有記憶システム２１０は、例えば、複数の記憶ユニット２２０ａ、２２０ｂ、２２０ｃ、２２０ｄおよび２２０ｅ（「記憶ユニット２２０」という）に動作可能に結合されているＳＡＮ２１２を含む。各記憶ユニット２２０は、例えばディスク、テープ、またはいかなる他の形態の記憶媒体（光または電子）であってもよい。
【００３７】
ＳＡＮ２１２は、例えば、アダプタ、ブリッジ、ハブ、スイッチおよびディレクタの構成を含み、記憶ユニット２２０とノード２０２および２０４との間のルーティングおよび接続を制御する。すなわちアダプタは、ノードまたはサーバと周辺装置をＳＡＮ２１２の配線（例えば、光ファイバまたは他の配線）に取り付ける。ブリッジは、ファイバチャネルからＩＰ、またはＳＣＳＩからファイバチャネルのように、１のプロトコルから別のプロトコルに変換する。ハブ、スイッチおよびディレクタは、ＳＡＮデータバスに中央接続点とルーティング機能とを提供する。システムの帯域幅とデータ転送率を高めるために、ＳＡＮ２１２は、ファイバチャネル構造を使用して、記憶ユニット２２０とノード２０２および２０４とを含めてクロスポイントスイッチ構成で装置を接続することができる。
【００３８】
任意選択の通信リンク２３０をノード２０２と２０４の間に提供して、ノード間の通信を可能にすることができる。通信リンク２３０は、ネットワーク（ＬＡＮ、ＷＡＮ）、遠隔通信リンク、またはノード２０２と２０４および／またはそのユーザがそれによって通信することができる他の機構の形態であってよい。通信リンクは、プロセス間通信プロトコル（例えばＩＰ、ＨＩＰＰＩ、ＶＩ）をいくつでも使用してＳＡＮ上で実行することもできる。
【００３９】
一例として、ノード２０２および２０４は、記憶ユニット２２０に対してファイバチャネルを使用するＳＡＮ２１２に対する通信リンク２０６および２０８を介してＳＣＳＩプロトコル使用する。各ノード２０２、２０４は、包含リストおよび／または排他リストなどのデータ構造を含むようにプログラムされ、どの記憶ユニット２２０が各々のノードの範囲内にあるかを規定する。データ構造は、永続的および／または一時的リストを含むことができる。高レベルのアプリケーションまたはエージェントは、どの記憶ユニットが各ノードの範囲内にあり、または各ノードの範囲内にないかに関して管理を実行する。上記のように、各ノードの包含リストをプログラムで修正して、ノードの各々と選択された記憶ユニットとの間のアクセスを動的にマスクすることができる。
【００４０】
例えば、ノード２０２は、記憶ユニット２２０ａを含んでいる包含リストを有することができ、ノード２０４は、記憶ユニット２２０ｂと２２０ｃを含んでいる包含リストを有することができる。ノード２０２が記憶ユニット２２０ｂにアクセスする前に、ノード２０４は、所有権を放棄するよう指示される。これは、インタフェース（SET_INCLUSION_LIST）を使用する高レベルのアプリケーションまたは管理者によって実施され、記憶ユニット２２０ｂをノード２０４の包含リストから削除することができる。この方法で包含リストを修正することによって、範囲制御リスト内に対応する変更が生じる。インタフェースまたはＰＮＰ制御を使用して、図２ａ〜２ｃに関して示し記載した実施態様の１つに従うなどして、装置オブジェクトレベルでノード２０４による記憶ユニット２２０ｂへのアクセスをブロックすることができる。記憶ユニット２２０ｂがノード２０４の範囲内にない場合、ノード２０４（またはそのユーザ）は、記憶ユニットの所有権が解放されていることを示す通信リンク２３０を介してノード２０２と通信することができる。管理者または高レベルのアプリケーションは（通信リンク２３０を介してノード２０２またはノード２０４で）、インタフェース（例えば、SET_INCLUSION_LIST）を使用して、ノード２０２の包含リストに記憶ユニット２２０ｂを追加することができる。範囲制御リストは、それに従って修正される。インタフェースは、別のインタフェースまたはＰＮＰ制御手段に指示し、記憶ユニット２２０ｂに対応する装置オブジェクトを追加する適切なコマンドを発行することにより、装置２２０ｂをノード２０２の範囲に入れ、および／または、装置オブジェクトを記憶ユニット２２０ｂの対応するクラスドライバにリンクする。ノード２０２の装置オブジェクトが適切なクラスドライバにリンクされているので、各々の記憶ユニット２２０ｂへのアクセスがイネーブルされる（例えば、装置がノード２０２の範囲内にある）。ノード２０２と２０４による他の記憶ユニット２２０に関連するアクセスを、同様の方法でプログラムによりマスクすることができる。
【００４１】
管理者は、例えば、各ノードの要求に見合った適切な記憶のレベルを、各ノード２０２、２０４に提供することができる。加えて、各ノード２０２、２０４は、同じ記憶ユニット２２０にアクセスするようにプログラムされて、システム２００全体による記憶の要求を低減することができる。その結果、複数のノードに対する複製データを記憶する必要はない。この方法でアクセスをマスキングすることは、複数のノードが１つの記憶ユニットに対して同時にアクセスを試みることができる経路過負荷と装置競合とを軽減する。
【００４２】
図５は、複数のクライアントノード３０２および３０４が、ＬＡＮまたはＷＡＮなどの従来型ネットワーク・インフラストラクチャ３１０を介して、複数のサーバノード３０６および３０８にリンクされている本発明にかかる別のシステム構成３００の一例である。サーバノード３０６および３０８は、共有記憶システム３１８に動作可能に結合されている。具体的には、サーバノード３０６および３０８は、ＳＡＮ３３０を介して複数の記憶ユニット３２０ａ、３２０ｂ、３２０ｃ、３２０ｄおよび３２０ｅ（「記憶ユニット３２０」という）に結合され、ＳＡＮ３３０は、ファイバチャネル構造のトポロジを含むことができる。
【００４３】
本発明の一態様によれば、クライアントノード３０２および３０４のそれぞれは、包含および／または排他リストの形式により、１または複数のプログラム可能なデータ構造を含み、どの記憶ユニット３２０がクライアントノードの各々の範囲内にあるかを規定する。上記のように、データ構造は、一時的および／または永続的包含リストの形式であってよい。データ構造は、各々のクライアントノードの範囲内に記憶ユニットがないことを示すヌル包含リストに対応することもできる。サーバノード３０６、３０８のそれぞれは、選択された記憶ユニットへのアクセスをさらに制御するために包含（または排他）リストを含むようにプログラムすることもできることを理解されたい。本発明によれば、１または複数の記憶ユニットを、適切なインタフェースを使用することによって、各ノード３０２、３０４、３０６、３０８に関連して動的にマスクし、各々のノードの包含リストから１または複数の記憶ユニットをプログラムで追加または削除することができる。
【００４４】
一例として、クライアントノード３０２は、記憶ユニット３２０ａと３２０ｃを示す包含リストを有し、ノード３０４は、ヌル包含リスト（例えば、バス上のすべての装置がその範囲から排除される）を有する。ノード３０４が装置ユニット３２０ｃにアクセスするために、装置ユニットは、その包含リストに追加される（またはその排他リストから削除される）。これは、例えば、インタフェース（SET_INCLUSIOTN_LIST）を使用する高レベルアプリケーションまたは管理者によって実施され、記憶ユニット３２０ｃをノード３０４の包含リストに追加することができる。追加は、記憶ユニットがどの包含リスト（一時的または永続的）に追加されるかによって永続的である場合と一時的である場合とがある。この方法で包含リストを修正することによって、ノード３０４の範囲制御リストに対応する変更がもたらされる。ＰＮＰ制御は、例えば、記憶ユニットに対する装置オブジェクトを生成するように指示される（まだ１つも存在しないと仮定すると）。装置オブジェクトは、コマンド命令を記憶ユニット３２０ｃに伝達する（例えばねＩ／Ｏ要求に応じて読み込みまたは書き込みコマンドを提供する）ために通信経路を介してクラスドライバにリンクされる。
【００４５】
ユニットを他のノード３０４に露出する前に、ノード３０２の範囲から記憶ユニット３２０ｃを出すことが望ましい場合もある。従って、サーバノード３０６または３０８またはクライアントノード３０４の１つが、ネットワーク・インフラストラクチャ３１０を介してクライアントノード３０２と通信することができ、ノード３０２による記憶ユニットへのクセスをプログラムでマスクすることによって、ノード３０２が、記憶ユニット３２０ｃの所有権を放棄することを要求することができる。インタフェース（SET_INCLUSION_LIST）を使用して、本明細書に記載の実施態様のどれかに従うことにより、クライアントノード３０２でマスキングを開始することができる。記憶ユニット３２０ｃが、クライアントノード３０２に対して機能的に隠蔽されているので、複数のノードが装置に同時にアクセスする場合に発生する可能性のある経路過負荷と起こりうる競合とが軽減される。
【００４６】
図６は、共有記憶システム４２０の複数の記憶ユニット４１０ａ、４１０ｂ、４１０ｃ、４１０ｄ、および４１０ｅ（「記憶ユニット４１０」という）へのアクセスを動的に管理するための、本発明にかかるマスキングを使用することができるインターネットベースのシステム４００の一例を示す。複数のインターネットサーバ４３０および４４０は、インターネット４５０に動作可能に結合されている。各サーバ４３０、４４０は、各サーバに物理的に関連付けられた各々の記憶装置４６０、４６２を含む。サーバ４３０および４４０は、例えば、電子商取引のインターネットサーバに相当し、これは、注文を受け取り、業務の特定領域について取引処理の予め選択された態様を実行するする。別のサーバ４７０は、追加の取引処理またはデータ管理（例えば、データマイニングなど）を実行するためのマスタサーバであり、インターネットサーバ４３０、４４０の各々から取得した取引データに基づく。マスタサーバ４７０は、サーバによって排他的に所有される記憶装置４７２を含む。すべてのサーバ４３０、４４０および４７０は、共有記憶システム４２０のＳＡＮ４７４を介して、記憶ユニット４１０に動作可能に結合されている。
【００４７】
本発明によれば、各サーバ４３０、４４０、４７０は、データ構造を含むようにプログラムされており、各々のサーバのマスキング規準を特定する包含および／または排他リストの形式などである。上記のように、リストは、特定の記憶装置が、各々のサーバの範囲に含まれるべきか否かを特定する永続的および／または一時的リストを含むことができる。記憶ユニット４１０を、本発明の一態様によって、サーバ４３０、４４０、４７０の１つのデータ構造にプログラムで追加すること、またはそこから削除することができ、各々のサーバに関連して記憶ユニットを動的にマスクする。
【００４８】
一例として、インターネットサーバ４３０は、インターネットビジネスの第１の領域に関連して、インターネット４５０から注文を受け取って処理するためのサーバに相当する。サーバ４３０は、記憶装置４６０に関連付けられたそれに取引データを記憶することができるが、そのデータをさらに処理するために追加のドライブ空間を要求する。共有記憶システム４２０は、記憶ユニット４１０ｂなどの十分な記憶領域を提供して、アプリケーション集約型データ処理を実行する。記憶ユニット４１０ｂにアクセスするために、サーバは、プログラムにより記憶ユニットをサーバ４３０の範囲内に入れる。
【００４９】
本発明によれば、管理者または高レベルアプリケーションによるインタフェース（SET_INCLUSION_LIST）を使用して、記憶ユニット４１０ｂをサーバ４３０の選択された包含リスト（例えば、一時的または永続的）に追加することができる。サーバ４３０の範囲制御リストは、一時的包含リストへの変更に従って修正される。さらに、専用インタフェースまたはＰＮＰ制御は、記憶ユニット４１０ｂをサーバ４３０の範囲内に入れるために活動化され、例えば、図２ａ〜２ｃに関して示し記載された例示の実施態様の１つに従う。記憶ユニット４１０ｂがインターネットサーバ４３０の範囲内にある場合、サーバは、サーバによって装置が所有される際には、記憶ユニットを使用して取引データを処理して記憶することができる。処理が完了すると、サーバ４３０は、記憶ユニット４１０ｂの所有権を放棄することができ、例えば、インタフェース（SET_INCLUSION_LIST）を使用して記憶ユニットを一時的包含リストから削除することによる。
【００５０】
上記の例では、記憶ユニット４１０ｂは、特定の目的すなわちデータの処理または他のマシンへの転送などのためにアクセスされているので、この記憶ユニットを、一時的包含リストに追加することができる。従って、サーバ４３０またはその関連付けられたコントローラが、処理中にクラッシュした場合、その一時的包含リスト上の記憶ユニットは、サーバ４３０の範囲内にはあり続けない。代わりに、サーバは、そのような記憶ユニットの所有権を再調整し、その取引データの処理を続行する必要がある。
【００５１】
サーバ４３０（そのユーザ）は、通信リンク４８０を介してマスタサーバ４７０（またはそのユーザ）と通信することができ、サーバ４３０が、記憶ユニット４１０ｂへのアクセス権を放棄したこと、およびマスタサーバ４７０が、記憶ユニットをその包含リストに追加するなどによって、記憶ユニット４１０ｂの所有権を取得することができることを教える。プログラムされた命令は、マスタサーバ４７０でSET_INCLUSITON_LISTインタフェースを開始するために通信に付随して、記憶ユニット４１０ｂをマスタサーバの包含リストに追加することができる。あらゆる通信モードを使用して、インターネットサーバ４３０に関する情報および記憶ユニット４１０ｂで提供されるデータを、マニュアルまたは自動化された機構、配線または無線などを含み、伝達することができることが理解されよう。マスタサーバ４７０は、プログラムによりその範囲内に記憶ユニット４１０ｂを入れた後、データを処理して、マスタサーバ４７０が排他的に所有する追加メモリ４７２にそのデータを記憶し、そのデータを記憶ユニット４１０ｂに保持することができ、またはそのデータの所有権を調整した後で、記憶ユニット４１０の異なる１つに転送することができる。サーバ４４０は、通信リンク４８２を介してマスタサーバ４７０と通信して、サーバ４４０に関する状況情報を提供し、関連する記憶ユニット４１０に関する状況情報および／または命令を提供することができる。
【００５２】
有利には、大量のデータを、個々のインターネットサーバマシン４３０および４４０によって構築し、マスタサーバ４７０による処理のために、共有記憶システム４２０の記憶ユニット４１０に転送することができる。マスタサーバ４７０は、例えば、システム４００全体のファイルサーバとして使用することができる。さらにこの方法は、選択されたデータのバックアップコピーを効率的に作成するために使用することができ、このデータは、ＳＡＮのロジスティックな制約に基づいて遠隔に配置された記憶ユニット４１０で維持することができる。例えば、ファイバチャネルは、記憶装置とそのような装置にアクセスすることができるホストコンピュータとの間が少なくとも１０キロメートルまで可能である。
【００５３】
本発明の様々な態様にある状況を提供するために、図７および以下の記述は、本発明の様々な態様を実施することができる適切なコンピューティング環境の簡単で一般的な説明を提供することを意図している。本発明は、上記で様々なシステム構成のホストコンピュータまたはノードで実行されるコンピュータプログラムのコンピュータ実行可能命令の一般的文脈によって記載したが、当業者ならば、本発明は、他のプログラムモジュールと共に実施することもできることを理解するだろう。一般に、プログラムモジュールには、特定タスクを実行し、または特定の抽象データ型を実施するルーチン、プログラム、構成要素、データ構造などが含まれる。さらに当業者ならば、本発明の方法を、１または複数の関連付けられた装置に動作可能に結合することができる単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、並びにパーソナルコンピュータ、ハンドヘルドコンピュータ装置、マイクロプロセッサベースの、またはプログラム可能な家庭電化製品などを含めて他のコンピュータシステム構成によって実行することができるということを理解するだろう。本発明の例示の態様は、ある種のタスクが通信ネットワークを介してリンクされた遠隔処理装置によって実行される分散型コンピューティング環境で実行することもできる。しかしながら、本発明の態様のすべてではないにしろ一部は、複数のプロセッサが複数の共有記憶ユニット（例えば、セグメント化されたディスク記憶領域）に動作可能に関連付けられている場合などに、スタンドアロンコンピュータで実行することができる。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよび遠隔記憶装置に配置することができる。しかしながら、本発明にかかるマスキングは、本明細書に記載のマスキング機能を提供するために、各コンピュータまたはノードの低レベル（例えば、ドライバスタック）で実施されることを理解されたい。
【００５４】
図７を参照すると、本発明の様々な態様を実施するシステム５００の一例は、処理ユニット５０４と、システムメモリ５０６と、システムメモリを含む様々なシステム構成要素を処理ユニット５０４に結合するシステムバス５０８とを含む従来型サーバコンピュータ５０２を含む。処理ユニット５０４は、これに限定はしないが、Intel x86、Intel社製またはCyrix、ＡＭＤおよびNexgenを含めた他社製のPentium（登録商標）および互換のマイクロプロセッサ、Digital社製のAlpha、MIPS Technology社、ＮＥＣ社、ＩＤＴ社、Siemens社および他社製のＭＩＰＳ、ＩＢＭおよびMotorola社製のPowerPCを含む様々な市販のプロセッサのどれであってもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサのアーキテクチャを、処理ユニット５０４として使用することができる。
【００５５】
システムバス５０８は、メモリバスまたはメモリコントローラ、周辺バス、およびいくつか例を挙げるとＰＣＩ、ＶＥＳＡ、Microchannel、ＩＳＡおよびＥＩＳＡなどの様々な従来型バスアーキテクチャのいずれかを使用するローカルバスを含む様々な種類のバス構造のいずれであってもよい。システムメモリ５００は、読み取り専用メモリ（ＲＯＭ）５１０およびランダアクセスメモリ（ＲＡＭ）５１２を含む。起動中などにサーバコンピュータ５０２内の素子間で情報を転送することを支援する基本ルーチンを含んでいる基本入出力システム（ＢＩＯＳ）は、ＲＯＭ５１０に記憶される。
【００５６】
サーバコンピュータ５０２は、ハードディスクドライブ５１４、例えば取り外し可能ディスク５１８から読み取りまたはそこに書き込む磁気ディスクドライブ５１６、例えばＣＤ−ＲＯＭディスク５２２を読み取るため、または他の光媒体から読み取り、またはそこに書き込みをする光ディスクドライブ５２０をさらに含む。ハードディスクドライブ５１４、磁気ディスクドライブ５１６、および光ディスクドライブ５２０は、各々ハードディスクドライブインタフェース５２４、磁気ディスクドライブインタフェース５２６、および光ドライブインタフェース５２８によってシステムバス５０８に接続される。ドライブおよびそれらに関連付けられたコンピュータ可読媒体は、サーバコンピュータ５０２にデータ、データ構造、コンピュータ実行可能命令などの不揮発性記憶領域を提供する。上記のコンピュータ可読媒体の説明は、ハードディスク、取り外し可能な磁気ディスク、およびＣＤを示しているが、当業者には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、Bernoulliカートリッジなどのコンピュータによって読み取り可能な他のタイプの媒体を、例示の操作環境で使用することができ、さらにそのような媒体のいずれもが、本発明の方法を実施するためのコンピュータ実行可能命令を含むことができるということを理解されたい。さらにサーバコンピュータ５０２の一部を形成する装置５１４〜５２２の各々は、サーバコンピュータによって「所有される」とみなされる。しかしながら、そのような装置は別法として、サーバコンピュータと他のコンピュータを本発明によるマスキングを使用するようにプログラムして、サーバコンピュータ５０２から遠隔に配置し、１または複数の他のコンピュータによって共有することができることを理解されたい。
【００５７】
複数のプログラムモジュールは、オペレーティングシステム５３０、１または複数のアプリケーションプログラム５３２、他のプログラムモジュール５３４、およびプログラムデータ５３６を含むドライブおよびＲＡＭ５１２に記憶することができる。例示のコンピュータのオペレーティングシステム５３０は、例えば「Microsoft Windows（登録商標） 2000」サーバオペレーティングシステムだが、本発明は他のオペレーティングシステムまたは他のオペレーティングシステムの組合せによって実施することができることを理解されたい。
【００５８】
ユーザは、キーボード５３８およびマウス５４０などのポインティングデバイスによって、サーバコンピュータ５０２にコマンドおよび情報を入力することができる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどを含むことができる。これらおよび他の入力装置は、システムバス５０８に結合されているシリアルポートインタフェース５４２を介して処理ユニット５０４に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースによって接続することもできる。モニタ５４４または他のタイプの表示装置を、ビデオアダプタ５４６などのインタフェースを介してシステムバス５０８に接続される。モニタの他に、コンピュータは、通常、スピーカ、プリンタなどの他の周辺出力装置（図示せず）も含む。
【００５９】
サーバコンピュータ５０２は、ＳＡＮ５５２を介して、共有記憶システム５５０に動作可能に結合することができる。例えば、サーバコンピュータ５０２は、記憶インタフェースまたはアダプタ５５４を介してＳＡＮ５５２に接続される。サーバコンピュータ５０２が適切な記憶アダプタを介して共有記憶システム５５０に直接的に結合することができるので、ＳＡＮはそれが任意選択であることを示すために破線で示してある。
【００６０】
サーバコンピュータ５０２は、遠隔クライアントコンピュータまたはノード５６０などの１または複数の遠隔コンピュータへの論理接続を使用してネットワーク接続した環境で動作することができる。遠隔コンピュータ５６０は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイスまたは他の共通ネットワークノードであってよく、典型的には、サーバコンピュータ５０２に関して記載された要素の多くまたはすべてを含むが、簡約化の目的から図７には記憶装置５６２しか示さない。さらに遠隔コンピュータ５６２は、その遠隔コンピュータ５６２に動作可能に関連付けられた１または複数の装置に対して、本発明にかかるマスキングを使用するようにプログラムされ、サーバコンピュータ５０２の一部またはＳＡＮ５５２を介してサーバコンピュータに接続された共有記憶システム５５０を含むことができる。図７に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）５６４とワイドエリアネットワーク（ＷＡＮ）５６６とを含む。このようなネットワーク接続環境は、オフィス、企業規模のコンピュータネットワーク、インターネットおよびイントラネットではよくあることである。
【００６１】
ＬＡＮネットワーク接続環境で使用される場合、サーバコンピュータ５０２は、ネットワークインタフェースまたはアダプタ５６８を介してローカルネットワーク５６４に接続される。ＷＡＮネットワーク接続環境で使用される場合、サーバコンピュータ５０２は、典型的には、モデム５６６を含むか、またはＬＡＮ上の通信サーバに接続されるか、またはインターネットなどのＷＡＮ５６６を介して通信を確立するための他の手段を有する。内蔵であっても外付けであってもよいモデム５７０は、シリアルポートインタフェース５４２を介してシステムバス５０８に接続される。ネットワーク接続した環境では、サーバコンピュータ５０２に対して記述されたプログラムモジュールまたはその一部は、遠隔記憶装置５６２および／または共有記憶装置５５０に記憶することができる。図示したネットワーク接続は一例であり、コンピュータ間に通信を確立する他の手段も使用することができることが理解されよう。
【００６２】
コンピュータプログラミングの当業者の慣例によって、本発明は、特記しない限りサーバコンピュータ５０２または遠隔コンピュータ５６０などのコンピュータによって実行することができる作用および動作の記号表記を参照して記載した。このような作用および動作は、コンピュータで実行中のものとして示す場合がある。作用と記号によって表された動作は、電子信号の表現の結果として変換または低減をもたらすデータビットを表す電子信号の処理ユニット５０４による操作と、メモリでのデータビットの維持が、メモリシステム（システムメモリ５０６、ハードドライブ５１４、フロッピー（登録商標）ディスク５１８、ＣＤ−ＲＯＭ５２２、および共有記憶システム５５０を含めて）に位置づけられて、コンピュータシステムの動作並びに信号の他の処理をそれによって再構成または変更することを含むと理解されよう。そのようなデータビットが維持されるメモリ位置は、そのデータビットに対応する特定の電子的、磁気的、または光学特性を有する物理的位置である。
【００６３】
上記の操作環境例とシステム構成例とに鑑みて、本発明にかかるマスキング方法は、図８〜９ｃに示す流れ図を参照するとさらによく理解されるだろう。これらの図面に示した例示的な方法は、図３に示したシステム構成と類似のシステム構成に関して記載されている。すなわち、各ターゲットが１または複数の論理ユニット（ＬＵ）をさらに含んだ状態で、各ターゲット装置は、関連付けられたバスアドレス（ファイバチャネルノードに相当する）を有する。各ＬＵは、ターゲット装置の一部（例えば、セグメントまたはディスク）などの関連付けられた装置の対応する態様にインタフェースを提供する。各ＬＵは、関連付けられた論理ユニット番号（ＬＵＮ）、または各々のターゲット装置の論理ユニットを特定する他の識別特性を有する。この例では、ノードは、システムレジストリに記憶することができる永続的包含リストを含むようにプログラムされていると想定している。この永続的包含リストは、ノードの範囲内に最初にどの装置があるべきかを特定する。簡約化の目的から、以下の記述では、包含リストのみを使用しているようにマスキング方法を記載するが、本発明では排他リストを別法として、または追加として実施することもできる。各ノードを、本発明によって図８−９ｃに示す方法を実施するようにプログラムすることができることを理解されたい。
【００６４】
図８を参照すると、ノードに動作可能に接続されている複数のターゲット装置のそれぞれに対してノードに関するマスキング規準を最初に確立するための方法が示されている。プロセスは、システムまたはノードが例えばシステムブートで初期化されるステップ７００から開始する。ブート直前にはノードの範囲内に装置はない。プロセスは、永続的包含リストがメモリからロードされるステップ７１０に進む。次にステップ７２０において、範囲制御リストは、この永続的包含リストに基づいて規定される。プロセスは、ステップ７２０から、ノードが、この状況では第１のバスであるノードに関連付けられた次のバスにアクセスするステップ７２４に進む。プロセスは次いで、そのバスに動作可能に結合された各ターゲット装置に関する照会を実行する。
【００６５】
ステップ７３０において、ノードは、スキャンされているバスに関連付けられた次のターゲットのアドレスを取得またはロードする。次に、そのノードに動作可能に接続されたターゲット装置（ステップ７４０）に関する照会がなされる。具体的には、ＳＣＳＩコマンドプロトコルを使用することのできる照会コマンドが、スキャンされているバスの現在のターゲットの論理ユニット０にアドレス指定される。各ターゲット装置は、ターゲット装置に関連付けられた他のＬＵに関する照会などの、基本コマンドに応答することができる少なくとも１つの論理ユニット０を含む。次にステップ７５０において、リポートＬＵＮコマンドが、スキャンされている現在のバスの現在のターゲット装置の論理ユニット０に送られる。これによって論理ユニット０は、そのターゲットに関連付けられたすべてのＬＵのリストを提供することによって応答する。何らかの理由で、ＬＵを特定するリポートがステップ７５０での照会に応答して提供されなかった場合、ノードは、ターゲット装置に関連付けることができるすべての潜在的なＬＵのスキャンを実行することができる。プロセスは次いで、各々のターゲット装置のＬＵに関連する追加の照会を実行するために、ノードが第１の論理ユニット番号をキャッシュするステップ７６０に進む。
【００６６】
ステップ７７０において、一般照会が、現在のターゲットに関連付けられたキャッシュ済みのＬＵに対してなされる。この照会は、例えば、ＬＵによって表される装置の種類または構成に関する情報（例えば、その装置が何であるか）の要求を含むことができる。次にステップ７８０において、別の照会がなされ、その装置のシリアル番号などの、ＬＵによって表される装置に関連付けられた識別特性またはデータを取得する。装置を特定するために十分な情報が収集されると、プロセスはステップ７９０に進むことができる。
【００６７】
ステップ７９０において、特定されたＬＵがノードの範囲内（データ構造）にあるか否かに関して判定がなされる。この例では、ステップ７２０に従って、永続的包含リストによって特定された装置によって範囲が規定される。ＬＵがノードの範囲内にない場合、プロセスは、ワールドリストにそのターゲット装置の識別特性を記憶することによって、ターゲット装置のＬＵがワールドに追加されるステップ８００に進む。範囲内にない装置に関連付けられたフラグを、任意選択で論理ＦＡＬＳＥにセットすることができる（例えば、visible=FALSE）。この例では、ＦＡＬＳＥがデフォルト状態なので、フラグを明示的にセットする必要はない。
【００６８】
しかしながら、ステップ７９０で特定されたＬＵがノードの範囲内にある場合、プロセスは、フラグが論理ＴＲＵＥ（例えば、visible=TRUE）にセットされるステップ８１０に進む。プロセスは、ステップ８１０から、対応する装置オブジェクトが作成されるステップ８２０に進む。装置オブジェクトの作成は、例えば、専用インタフェースまたはＰＮＰ制御を使用して実施することができる。装置オブジェクトは、現在のターゲットの現在のＬＵに動作可能に関連付けられている。ステップ８４０で装置に対して装置オブジェクトが作成されたので、装置に対応する識別データが、インスタンス生成されたオブジェクトのリストに追加される（図２ａ〜２ｃ参照のこと）。プロセスは次いで、装置に対する識別特性がワールドリストに追加されるステップ８００に進む。プロセスは次いで、ステップ８５０に進む。
【００６９】
ステップ８５０では、現在のターゲット装置が照会を行うことができる追加のＬＵを含むか否かについて判定がなされる。追加のＬＵが存在する場合、プロセスは、次のＬＵＮがキャッシュされるステップ８６０に進む。プロセスは次いで、次のＬＵＮに対して上記ステップを反復するためにステップ７７０に戻る。ステップ８５０で追加のＬＵが１つも存在しないという判定に達すると（例えば、現在のターゲットのすべてのＬＵＮが処理済みである）、プロセスは、ステップ８７０に進む。ステップ８７０において、スキャンされているバスに関連付けられた追加のターゲット装置が１つでもあるか否かについて判定がなされる。この判定が追加のターゲットがバスに接続されていることを示す肯定的な判定である場合、プロセスは、ノードが現在のバスに接続されている次のターゲット装置のアドレスを取得するステップ７３０に戻る。プロセスは次いで、ターゲット装置の各ＬＵに対して反復される。
【００７０】
ステップ８７０での判定が、追加のターゲット装置がバスに関連付けられていないことを示す否定的な判定である場合、プロセスはステップ８８０に進む。ステップ８８０において、追加のバスがノードに動作可能に関連付けられているか否かに関して判定がなされる。バスがまだスキャンされ処理されていない場合、プロセスは、アクセスされる次のバスが上記プロセスに従ってスキャンされるステップ７２４に戻る。ステップ８８０での判定がノードに接続されたすべてのバスが既に処理済みであることを示す否定的な判定である場合、プロセスはステップ８８４に進む。ステップ８８４において、各装置オブジェクトに対するクラスドライバに対応する高レベルの装置オブジェクトが、ステップ８２０で生成された各装置オブジェクトにロードされ、動作可能にリンクされる。これは、例えば、バススキャンの結果（例えば、どの装置がマスクされるべきかを含む）をＰＮＰ制御に通知することによって実施することができる。ＰＮＰ制御は、高レベルのデバイスドライバにコマンドを発行して、ノードの範囲内にあるよう既に選択されている各々の新しい装置オブジェクトに取り付ける。ステップ８８４から、プロセスはステップ８９０で終了する。このような方法を実施することによって、永続的包含リストは、各装置が初期ノードの範囲内にあるか否かを規定する。残りの装置はノードの範囲内にはなく、従って、これらはノードに対して機能的に隠蔽されている。しかしながら、すべての動作可能に取り付けられている装置は、ワールドに含まれる。排他リストを使用することができ、リスト上で特定された装置はノードの範囲外にあり、他の装置のすべてはノードの範囲内にあるということを理解されたい。
【００７１】
図９ａ〜９ｃは、ノードに関連付けられたマスキング規準をプログラムで修正するための方法を一例として示す流れ図である。これは、図２ａ〜２ｃに関して開示されたようなSET_INCLUSION_LISTインタフェースを使用に応答することができる。図９ａを参照すると、プロセスは、本明細書に記載のSET_INCLUSION_LISTインタフェースなどのインタフェースを活動化することによって、ステップ９５０から開始される。このインタフェースは、例えば、入出力制御などのＳＣＳＩコマンドであってよい。適切な構成データが、インタフェースを使用するときに提供され、ノードに関連してマスクされるべき装置、並びに永続的および／または一時的リストに対して変更がなされているか否かを特定する。上記のように、このインタフェースは、システム管理者などにより手動で活動化することができ、または高レベルのアプリケーションまたはインテリジェントエージェントなどにより開始された動作であってもよい。
【００７２】
ステップ９５０から、プロセスは、提供されたインタフェース特性に基づいて適切な包含リスト（一時的および／または永続的）が修正されるステップ９６０に進む。次にステップ９７０において、新しい包含リストが、ステップ９６０で提供された変更を含む適切なメモリに記憶される。一例として、永続的包含リストに変更がなされた場合、改定されたリストは、システムレジストリなどの適切な不揮発性メモリに記憶される。一時的包含リストになされた変更は、例えば、システムが実行中である限り、またはコントローラがイネーブルされたままである限り所定の場所に存続する揮発性メモリに記憶される。プロセスは次いで、範囲制御リストが包含リストに対してなされた変更に対応するように更新されるステップ９８０に進む。範囲制御リストは、一時的または永続的リストに対応するオブジェクトを含むことができ、または揮発性メモリに記憶された両方のリストの作業コピーを含むこともできることを理解されたい。ステップ９８０から、プロセスは、範囲制御リストになされた改定に応じて１または複数の装置のマスキングを実施するためにステップ９９０に進む。図９ｂおよび９ｃは、マスキング方法の２つの可能な実施態様を対象としている（ステップ９９０）。
【００７３】
図９ｂは、図２ｂとそれに伴う記載に対応しているマスキング方法を記載している。マスキングは、ノードに関連する選択された装置の露出または隠蔽に対応することができるので、マスキングプロセスを開始するステップ９９０の後の第１ステップ１０００は、装置がノードの範囲内にあるべきか否かを判定することに相当する。これは例えば、修正されたリストが包含リスト（ノードの範囲内にある装置を示す）か排他リスト（ノードの範囲から除外されるべき装置を示す）かに基づいている。この判定は、リストが追加の装置を含めるかまたは既存の装置を削除するように改定されているかに基づいている。装置がノードの範囲内にあることを示すマスキングデータを仮定すると、プロセスは、ステップ１０１０に進む。
【００７４】
ステップ１０１０において、装置オブジェクトが上記のように装置のノードで作成される。次にステップ１０２０において、装置オブジェクトに関連付けられたフラグが、論理ＴＲＵＥにセットされる（例えば、visible=TRUE）。プロセスは次いで、インスタンス生成されたオブジェクトのリストが、作成されたばかりの装置オブジェクト（ステップ１０１０）に対応する装置の識別データを含むように改定されるステップ１０３０に進む。ステップ１０３０から、プロセスは、追加の装置がマスクされるべきか否かを判定するためにステップ１０５０に進む。判定が、追加装置がマスキングを必要としていることを示す肯定的な判定の場合、プロセスは、マスクされるべき次の装置のＬＵおよび／または他の識別データを取得するためにステップ１０６０に進む。ステップ１０６０から、プロセスはステップ１０００に戻る。
【００７５】
ステップ１０００において、装置がノードの範囲から排除されるべきであることをマスキングデータが示している場合、プロセスはステップ１０７０に進む。ステップ１０７０において、マスクされている装置に対応する装置オブジェクトは除去される。これは、例えば、装置オブジェクトの除去を実現する専用インタフェースまたはＰＮＰ制御によって実施することができる。次にステップ１０８０において、装置オブジェクトに関連付けられたフラグを、論理ＦＡＬＳＥ（例えば、visible=FALSE）にセットすることができる。プロセスは次いで、装置オブジェクトがインスタンス生成されたオブジェクトのリストから除去されるステップ１０９０に進む。その結果、装置は、ノードに対して機能的に隠蔽される。プロセスは次いで、追加のマスキングがまだ必要とされているか否かを判定するためにステップ１０５０に進む。ステップ１０５０での判定が否定的な判定である場合、プロセスは、ノードの範囲内にあるべき各々の装置オブジェクトにクラスドライバがロードされ、動作可能にリンクされるステップ１１００に進む。上記のように、これは、ＰＮＰ制御からさらに高いレベルのドライバに対するコマンドに応じて実施され、VISIBLEフラグ状態に基づいて、適切な装置オブジェクトに取り付けることができる。クラスドライバが装置オブジェクトにロードされ、リンクされると、その装置はノードの範囲内にある。ステップ１１００から、マスキングプロセスはステップ１１１０で終了する。
【００７６】
図９ｃは、本発明によって実施することができる別のマスキング方法を示す。このマスキングの態様は、図２ｃに対して示し、記載した手法に全般的に対応している。プロセスは、所定のマスキングプロセスの開始に応答してステップ９９０で開始される。プロセスは次いで、マスクされている装置がノードの範囲内にあることを示すマスキングデータか否かについて判定がなされるステップ１２００に進む。分析によって、装置がノードの範囲内にあることが判明すると、プロセスはステップ１２１０に進む。
【００７７】
ステップ１２１０で、ノードの範囲に入れられた装置が新しい装置か否か（まだワールドの一部でないか否か）に関して判定がなされる。これは、装置に対応する識別データのノードによって維持されるワールドリストをチェックすることによって、またはインスタンス生成されたオブジェクトのリストをチェックすることによって判定することができる。本発明のこの態様によって、装置オブジェクトとそれが対応するクラスドライバとの間のリンクが切断またはブロックされ、たとえ装置オブジェクトがノードの範囲内になくても、装置オブジェクトは存続するということを想起されたい。従って装置オブジェクトは、ワールドの装置ごとに作成される。ステップ１２１０での判定が、装置が新たに追加された装置であることを示す肯定的な判定である場合、プロセスはステップ１２２０に進む。
【００７８】
ステップ１２２０−１２５０は、図８ｂのステップ１０１０〜１０４０とほぼ同一である。すなわちステップ１２２０で、装置オブジェクトは、ＰＮＰまたは専用インタフェースを使用して、装置のノードで作成される。プロセスは次いで、装置オブジェクトに関連付けられたフラグが、論理ＴＲＵＥ（例えば、visible=TRUE）にセットされるステップ１２３０に進む。次にステップ１２４０において、インスタンス生成されたオブジェクトのリストが、追加中の装置に対する識別データを含めるように改定される。ステップ１２４０から、プロセスは、追加の装置がマスキングを必要としているか否かを判定するためにステップ１２６０に進む。追加の装置がマスキングを必要としている場合、プロセスは、装置に関連付けられた次のＬＵまたは他の識別データがロードされるステップ１２７０に進む。
【００７９】
先のステップ１２１０での判定が、ノードの範囲に入れられている装置がシステムに新たに追加されるものではないことを示す否定的な判定である場合、プロセスはステップ１２８０に進む。ステップ１２８０において、装置に関連付けられた既存の装置オブジェクトが配置され、対応するフラグ状態が論理ＴＲＵＥにセットされる（例えば、visible=TRUE）。プロセスは次いで、装置オブジェクトが対応するクラスドライバにリンクされるステップ１２９０に進む。装置オブジェクトを対応するクラスドライバにリンクするこの機能的な態様を、ＰＮＰ制御によって、または各々の装置オブジェクトにリンクするためにより高いレベルのクラスドライバに適切なコマンドを発行する専用インタフェースによって処理することができる。ステップ１２９０から、プロセスは、追加の装置がマスクされるべきか否かを判定するためにステップ１２６０に進む。
【００８０】
先のステップ１２００で、装置がノードの範囲から削除されるべきであることを示すマスキングデータであると判定された場合、プロセスはステップ１３００に進む。ステップ１３００において、装置オブジェクトに関連付けられたフラグは、論理ＦＡＬＳＥにセットされる（例えば、visible=FALSE）。プロセスは次いで、装置オブジェクトとそれに対応するクラスドライバの間のリンクが切断されるステップ１３１０に進む。削除を、例えば、適切なインタフェースまたはＰＮＰ制御によって要求される削除として処理することができる。リンクを切断した結果、装置は、ノードの範囲から完全に削除され、ノードのコントローラによるアクセスはブロックされる。クラスドライバへ直接行く通信経路を保護するために追加のステップを取ることができ、ノードと装置との間の通信経路がブロックされる。ステップ１３１０から、プロセスは、上記のように図９ｃの方法に従って、追加の装置がマスキングを必要としているか否かを判定するためにステップ１２６０に進む。追加のマスキングが必要とされない場合、プロセスは、ノードの範囲内にあるべき各装置オブジェクトにクラスドライバがロードされ、動作可能にリンクされるステップ１３２０に進む（例えば、visible=TRUEに従って）。ステップ１３２０から、プロセスは、プロセスが終了するステップ１３３０に進む。
【００８１】
図９ｂおよび９ｃの方法を別個のマスキング手法として記載したが、マスキングの一方の種類は、他方よりも望ましい場合があるので、所与のノードを、両方のタイプのマスキングを実施するようにプログラムし、および／または構成することができることを理解されたい。さらに、１または複数のノードに動作可能に接続されたＳＡＮ環境など、本明細書に記載のプログラムによるマスキングに伴ってハードウェアベースのＬＵＮマスキングを使用することもできる。本発明によるＬＵＮマスキングに対するプログラムによる手法によって、ハードウェア構成が可能でない場合でも、所与のノードは１または複数の関連付けられた装置に対するアクセスを有効かつ動的にマスクすることができる。さらに、このプログラムによるマスキングの手法は、リブートを必要とせずにノード内で構成の変更を動的に行うことを可能にする。その結果、複数の相互接続されたホストは、記憶ユニットまたは他の共有記憶装置をプログラムでスワップすることができる。
【００８２】
上記に記載したものは本発明の一例である。当然ながら、本発明を説明する目的で構成要素または方法のすべての想定可能な組合せを記載することは不可能であるが、当業者ならば本発明の多くのさらなる組合せおよび並べ替えが可能であることを理解するだろう。従って本発明は、頭記の特許請求の趣旨および範囲内に包含されるすべてのそのような代替形態、修正形態および変形形態を包含することを対象としている。
【００８３】
（産業上の応用範囲）
本発明は、コンピュータサイエンスの分野に産業上の応用範囲を有する。
【図面の簡単な説明】
【図１】  本発明にかかるシステムの概略ブロック図である。
【図２ａ】  第１のシステム状態を示す本発明にかかるプログラムされたシステムの機能ブロック図である。
【図２ｂ】  本発明の一態様にかかる第２のシステム状態を示す図２ａのシステムの機能ブロック図である。
【図２ｃ】  本発明の別の一態様による装置の第３のシステム状態を示す図２ａのシステムの機能ブロック図である。
【図３】  本発明に従って構成することができる、複数のバスを介して複数のターゲットに結合されるノードを示すシステムの機能ブロック図である。
【図４】  本発明にかかる共有記憶システムに結合されている複数のノードを有するシステムのブロック図である。
【図５】  本発明にかかるネットワークを介して共有記憶システムに結合されている複数のノードを有するシステムのブロック図である。
【図６】  本発明にかかる共有システムに結合されている複数のノードを有するインターネットベースシステムのブロック図である。
【図７】  本発明に従って構成されているシステムの操作環境の一例である。
【図８】  本発明にかかるノードのマスキング基準を初期化する方法を示す流れ図である。
【図９ａ】  本発明にかかる装置に関連するノードによるアクセスをマスクする方法を示す流れ図である。
【図９ｂ】  本発明の一態様にかかる図９ａのプロセスの部分をさらに詳細に示す流れ図である。
【図９ｃ】  本発明の別の一態様にかかる図９ａのプロセスの部分をさらに詳細に示す流れ図である。
【図１】
0003965052.tif 000002
【図２ａ】
0003965052.tif 000003
【図２ｂ】
0003965052.tif 000004
【図２ｃ】
0003965052.tif 000005
【図３】
0003965052.tif 000006
【図４】
0003965052.tif 000007
【図５】
0003965052.tif 000008
【図６】
0003965052.tif 000009
【図７】
0003965052.tif 000010
【図８】
0003965052.tif 000011
【図９ａ】
0003965052.tif 000012
【図９ｂ】
0003965052.tif 000013
【図９ｃ】
0003965052.tif 000014