分散ファイル システム : 物理記憶域の論理的見解

概要
Microsoft® 分散ファイル システム (以下 DFS) は、ネットワーク上のデータの検索および管理を容易にするネットワーク サーバー コンポーネントです。DFS は、さまざまなコンピュータ上のファイルを単一の名前空間に統合します。DFS を使用することで、複数のファイル サーバーおよびネットワーク上にあるファイル サーバーについて、共有の単一の階層的なビューを簡単に作成できます。

Microsoft Distributed File System Version 4.1 for Microsoft&reg Windows NT&reg Server 4.0 (英語版) は、Microsoft の Web サイト https://www.microsoft.com/ntserver (英語版) からダウンロードできます。このリリースには、Microsoft&reg Windows&reg 95 (以下 Windows 95) オペレーティング システムの DFS クライアントと拡張セキュリティ署名が含まれています。また、Microsoft&reg Windows&reg 2000 (以下 Windows 2000) には、ディレクトリ サービス対応の、DFS への拡張機能も含まれています。このホワイト ペーパーでは、DFS テクノロジについて、Windows 2000 用のバージョンも含めて説明します。

トピック

はじめに はじめに
DFS の概要 DFS の概要
DFS の技術面の概要 DFS の技術面の概要
ディレクトリ サービスを利用する ディレクトリ サービスを利用する
付録 1: DFS プログラミング インターフェイス 付録 1: DFS プログラミング インターフェイス
付録 2: CIFS の仕様 付録 2: CIFS の仕様
付録 3: ディレクトリ サービス オブジェクト 付録 3: ディレクトリ サービス オブジェクト
詳細情報 詳細情報

はじめに

Distributed File System (DFS) for the Microsoft&reg Windows NT&reg Server (以下 Windows NT Server) と Microsoft&reg Windows&reg 2000 Server (以下 Windows 2000 Server) オペレーティング システムは、ネットワーク上のデータの検索および管理を容易にするネットワーク サーバー コンポーネントです。DFS はさまざまなコンピュータ上のファイルを単一の名前空間に統合するための手段です。DFS を使用することで、複数のファイル サーバーおよびネットワーク上のファイル サーバーについて共有の単一の階層的なビューを簡単に作成できます。ディレクトリ構造がそれぞれ異なる、多数のファイル サーバーの物理ネットワークではなく、重要なファイル サーバーとファイル サーバー共有すべてを含む少数の論理ディレクトリが表示されます。各共有は、実際にどのサーバー上にあるかということには関係なく、ディレクトリにおける最も論理的な位置に表示されます。

DFS とサーバーおよび共有との関係は、ファイル システムとハード ディスクの関係と同じです。ファイル システムはディスク上のセクタ コレクションへの統一された名前付け規則によるアクセスを提供します。DFS はサーバー、共有、およびファイルのコレクションへの統一された名前付け規則とマッピングを提供します。したがって、DFS を使用すると、ファイル サーバーおよびそれらの共有を論理的な階層に整理することができ、大企業の場合は情報リソースの管理と使用を大幅に簡易化することができます。さらに、DFS は単一のファイル プロトコルに制限されません。クライアントがネイティブ サーバーと共有をサポートしていれば、DFS は使用しているファイル クライアントに関係なく、サーバー、共有、およびファイルのマッピングをサポートすることができます。

DFS はさまざまなサーバー ボリュームや共有について、名前の透過性を提供します。DFS によって、管理者は単一の階層的なファイル システムを作成し、その内容を組織の WAN 全体に分散することができます。つまり、DFS は共有の共有と見なすことができます。

従来は、UNC (汎用名前付け規則) でファイル情報にアクセスするには、ユーザーまたはアプリケーションが物理サーバーや共有を指定する必要がありました (つまり、ユーザーやアプリケーションは \\Server\Share\Path\Filename と指定する必要がありました)。UNC を直接使うこともできますが、通常、UNC はドライブ文字にマップされます。たとえば x: は \\Server\Share にマップされます。このため、ユーザーはアクセスするデータにリダイレクトされたドライブ マッピングを指定する必要がありました (たとえば、copy x:\Path\More_ path\U..\Filename)。

ネットワークの規模が拡大し、企業が既存の記憶域をイントラネットなどのために内部的にも外部的にも使用し始めると、個々の共有に単一のドライブ文字をマッピングしていたのでは対応しきれなくなります。さらに、ユーザーは UNC 名を直接使用できるため、データベースが格納されている場所の多さにユーザーが対応しきれなくなる可能性もあります。

DFS は、サーバーおよび共有を簡単でわかりやすい名前空間にリンクできるようにすることで、これらの問題を解決します。この新しい DFS ボリュームでは、共有をほかの Windows 共有に階層的に接続することができます。DFS は物理記憶域を論理的な表示にマップするため、データの物理位置がユーザーおよびアプリケーションにとって透過になるという利点があります。

次の表は、DFS の機能とその利点の詳細な説明です。

機能

説明

利点

共有ネットワーク リソースのカスタム階層ビュー

共有を互いにリンクすることで、管理者は 1 つの巨大なハード ドライブのように動作する単一の階層的なボリュームを作成することができます。個々のユーザーは、独自の DFS ボリュームを作成することができます。DFS ボリュームはほかの DFS ボリュームと統合することもでき、これらは DFS 間リンクと呼ばれます。

管理者がカスタマイズできる、簡素化されたネットワーク共有のビューが提供されます。

柔軟なボリューム管理

DFS ボリュームを構成する個々の共有は、そのボリューム名前空間の残りの部分に影響を与えずにオフラインにすることができます。

管理者は、ユーザーに対する論理表示に関係なく、物理ネットワークの共有を管理することができます。

グラフィカルな管理ツール

各 DFS ルートの管理には、簡単に使えるグラフィカルな管理ツールを使用します。このツールを使用して、参照、ボリュームの設定、変更、DFS 間リンク、およびリモート DFS ルートの管理を行うことができます。

教育を受ける必要がないため、熟練した常勤のサーバー管理者の必要がありません。

データの高可用性

読み取り専用の共有の複数のコピーを同じ論理 DFS 名にマウントして、データにアクセスするための代替場所を提供します。コピーの 1 つが利用できなくなっても、別のコピーが自動的に選択されます。

サーバー、ディスク ドライブ、またはファイルで障害が発生した場合でも、重要な業務データは常に利用可能になります。

負荷分散

複数のディスク ドライブまたはサーバーにある読み取り専用共有の複数のコピーを同じ論理 DFS 名にマウントすることで、ドライブやサーバー間の負荷分散を制限することができます。ユーザーがファイルを DFS ボリュームから要求すると、DFS を構成するネットワーク共有の 1 つが透過的に参照されます。

複数のディスク ドライブまたはサーバー間でファイル アクセスを自動的に分散することで、負荷が分散されてピーク時の応答速度が向上します。

名前の透過性

エンド ユーザーはデータの物理位置を気にせずに、論理名前空間を参照できます。エンド ユーザーの視点での DFS 名前空間には影響を与えずに、物理データを任意のサーバーに再配置し、論理 DFS 名前空間を再設定することができます (つまり、データの場所が変更されたことに、ユーザーが気がつくことはありません)。

管理の柔軟性が増します。管理者は、ユーザーによるデータへのアクセスに影響を与えることなく、サーバーやディスク ドライブ間でネットワーク共有を移動することができます。

Windows NT セキュリティ モデルとの統合

管理上の問題やセキュリティ上の問題はありません。DFS ボリュームに接続しているユーザーは、その共有で許可されている適切な権限を持っているファイルへのアクセスだけを許可されます。

既存の Windows NT セキュリティ モデルを使用することにより、管理が容易になり、アクセスがセキュリティで保護されます。

Windows NT Workstation 4.0 に統合された DFS クライアントが Windows 95 および Windows 98 でも利用可能

DFS Windows NT Workstation クライアントは、Windows NT Workstation 4.0 に統合されています。この SMB リダイレクタとの統合により、DFS の追加機能が完全に操作可能になります。メモリの必要性や標準的なクライアント アクセスのパフォーマンスには影響ありません。

DFS の機能を使用するのに、クライアント システムにリソースを追加する必要がありません。

インテリジェント クライアント キャッシュ

DFS ボリュームは、公開されている何百または何千もの共有に接続することができます。クライアント ソフトウェアは、ユーザーが DFS で公開されている情報のどの部分にアクセスするのかを想定していません。結果として、公開されているディレクトリに初めてアクセスした場合、情報をローカルにキャッシュします。次回、クライアントが DFS 名前空間の同じ部分にアクセスする場合は、新しく紹介を取得するのではなく、キャッシュされている紹介にアクセスします。

ネットワーク ボリュームの複雑な階層に優れたパフォーマンスでアクセスすることができます。

Windows 95 および Windows 98 クライアント

Windows NT Workstation 4.0 に付属の DFS 対応 Windows NT Workstation リダイレクタだけでなく、DFS には Windows 95 および Windows 98 ユーザーによる DFS 名前空間の参照を許可するサービスも含まれています。DFS の最新リリースでは、Windows クライアントはサーバーベースのゲートウェイ (たとえば、Windows NT Server に含まれている Microsoft Gateway Services for NetWare など) を通じて 非 SMB ボリュームにのみアクセスできます。

Windows 95 および Windows 98 ユーザーも DFS の利点を享受できます。

ほかのネットワーク ファイル システムとの相互運用

Windows NT Workstation のリダイレクタからアクセス可能なボリュームであれば、DFS 名前空間に含めることができます。これにはクライアント リダイレクタまたはサーバーベースのゲートウェイ テクノロジを使用できます。

管理者は、さまざまなネットワーク ファイル システムを統合した単一の階層を作成できます。

 

ページのトップへ ページのトップへ

DFS の概要

DFS は、絶えず変化するサーバー構成の管理の複雑さを軽減する便利なツールを提供します。古いサーバーを廃棄した場合は、複数のサーバーをより強力なサーバーに統合したり、増加し続ける記憶域の要求に応じて新しいサーバーをオンラインにしたりします。原則的には、管理者は管理するサーバー数をできるだけ少なくする必要があります。また、新しいテクノロジを利用可能になったときに簡単に対応できるようにしなければなりません。

DFS を使用することで、管理者は複数のファイル サーバーおよびファイル共有にわたる階層的なディレクトリを作成できます。DFS には簡単に使える管理ツールがあり、これを使うことでネットワーク管理者は DFS ディレクトリを簡単に作成、維持できます。また、DFS にはスクリプトを作成できるコマンド ライン管理ツールもあります。DFS はどの管理タスクでも新しいツールが必要ないため、管理が簡単です。ファイル セキュリティは、Windows NT Server のセキュリティ モデルと Windows エクスプローラを使用して管理します。

dfsnt01

図 1: DFS 管理者による DFS ボリュームの管理

DFS を使用することで、ネットワーク マネージャはサーバーの置き換えを簡単に行えます。DFS ディレクトリ ツリーの各ノードには、ファイル共有を示す論理名が割り当てられています。DFS ノードを新しいサーバーを示すように切り替え、古いサーバーをオフラインにすることができます。DFS ディレクトリ ツリーは変化しないため、ユーザーは異なるサーバーを使用していることには気がつきません。

DFS によって、グループ、部署、または企業内の複数のファイル サーバーおよびファイル共有を含む単一のディレクトリ ツリーを簡単に作成できます。ユーザーは、多数のファイル サーバーおよびファイル 共有にわたる単一のディレクトリを使用して、ネットワークを参照し、必要なデータやファイルを簡単に探すことができます。DFS のサブディレクトリには、実際のファイル サーバーやファイル共有の名前に関係なく、論理的で分かりやすい名前を割り当てることができるため、DFS ディレクトリは簡単に参照することができます。

dfsnt02

図 2: 図 1 で示した DFS ボリュームの参照

DFS ディレクトリを使用することで、関連するファイル共有すべてを単一の DFS ディレクトリ ツリーにまとめることができます。サーバーレベルの DFS ディレクトリは、階層的な DFS ディレクトリにまとめることができます。ただし、ファイル パスは 半角で 260 文字までに制限されます。

DFS では、Windows 95、Windows 98、および Windows NT Workstation に含まれているファイル検索ツールや、ワープロ ソフトウェアでも、DFS ディレクトリ ツリー内の任意のサーバー上にある特定のファイルを検索できるため、データおよびファイルを簡単に見つけることができます。

Windows 95、Windows 98、および Windows NT Workstation で DFS を使うと、大規模な分散ネットワークを簡単に使用できるようになります。別の物理ファイル サーバーへの複数の固定ネットワーク接続を扱う必要はありません。各ユーザーに必要なのは、DFS ツリーへの 1 つまたは複数の固定ネットワーク接続だけです。

また、DFS では互いに代替になる複数のボリュームを示すことで、データの可用性を向上することもできます。あるボリュームを使用できない場合、DFS は要求を別のボリュームに回します。クライアント アクセスを複数の代替ネットワーク共有にわたって均等に分散できるため、DFS ボリュームへの可用性が向上するだけでなく、負荷分散の実行という利点もあります。1 つのボリュームに 300 人のユーザーがアクセスを要求する場合、DFS は複数のサーバー上のコピーにユーザーを分けて、負荷を分散することができます。

DFS は名前の透過性を利用してサーバー ボリュームと共有を単一の名前空間に透過的にリンクします。これは、集中管理によってネットワークの成長および管理を単純化することができるため、管理者にとって役に立ちます。

名前の透過性によって、ユーザーは情報が物理的に格納されている場所を知る必要がなくなります。これは、情報を格納する領域が多数ある大規模な組織で特に便利です。DFS によって、ユーザーは、実際に保存されている場所 (または、コンピュータ) を知る必要なく、わかりやすい階層内で特定の情報を見つけることができます。

DFS の場所の透過性によって、サブディレクトリに記憶域を追加できるため、新しいコンピュータへのアップグレードの負担が軽減されます。ユーザーがサーバーや共有の名前を知っておく必要がないため、管理者はユーザーにデータの見つけ方を再教育することなく (または、アプリケーションおよびショートカットを再設定することなく)、ユーザーの情報を別のサーバーに物理的に移動することができます。新しいサーバーや高性能のサーバーを、名前を変えずに追加することができます。DFS では共有を複数のサーバーにわたって使用することができます。したがって、新しいコンピュータを共有内で新しいディレクトリとして表すことができます。

DFS はインターネットおよびイントラネット ソリューションの展開を容易にします。Web マスタは、論理 DFS ディレクトリを作成し、そこに各部署の Web サーバーの既定の Web ページをメイン インターネットまたはイントラネット Web のサブディレクトリとして含めることができます。これによって、各部署またはグループがそれぞれのイントラネット コンテンツおよびアプリケーションの制御を保持しながら、ユーザーには単一の統一されたインターネット サイトまたはイントラネットを提供することができます。

DFS は Windows NT Server に組み込まれている Internet Information Server と併せて使用します。最初のページが物理的に別のサーバーに移動されても、管理者が DFS をそれに併せて再設定すれば、DFS 内に格納されている他のページへの HTML リンクを更新する必要はありません。したがって、ユーザーはインターネット ページを公開することができます。そのページをホストしているサーバーが削除され、ページを別の場所で再公開した場合でも、そのページを示すリンクはすべて再設定の必要がありません。

dfsnt03

図 3: DFS サービスの Windows へのインストール

DFS のサポートは、Windows NT Workstation 4.0 に既に含まれており、Windows 95 および Windows 98 へのサポートは DFS のリリースに含まれています。DFS は、個々の物理サーバーへの複数の固定ネットワーク接続の必要がないため、Windows 95、Windows 98、および Windows NT Workstation デスクトップで簡単に使えます。また、ワークステーションの共有は、サーバーベースの DFS ボリュームに含まれるため、他のユーザーとのデスクトップ ファイルの共有が簡単になり、ネットワーク管理者が企業のファイルの保守をデスクトップで行うのにも役立ちます。さらに、Windows NT Client for DFS では、\\Server\Share レベルで Net Use を実行できます。

DFS では、企業レベルでのバックアップなどのファイル保守タスクも簡単になります。多数のサーバーにわたって単一の DFS ツリーを作成することができるため、バックアップ ソフトウェアは、DFS に含まれているサーバーや共有の数に関係なく、この 1 つのツリーだけでバックアップを作成することができます。DFS を使用して、エンド ユーザーのシステムのデータのバックアップも簡単に作成することができます。Windows 95、Windows 98、および Windows NT Workstation システムは DFS ツリー内で "リーフ" になるため、ネットワーク マネージャがバックアップするユーザーのデスクトップのすべてのディレクトリを DFS ツリーに含めることができます。DFS によって簡易化されるその他のファイル保守タスクには、ネットワーク全体にわたるウイルスのスキャンや、Microsoft Index Server などの検索ツールで使用するためのデータのコンテンツ インデックスの作成などがあります。

DFS は現在利用できるバックアップ ユーティリティのほとんどに対して透過であるため、復元する場合は、DFS ツリーが適切な場所にあるように注意する必要があります。

ページのトップへ ページのトップへ

DFS の技術面の概要

DFS ルート
DFS ルートは、開始点、および他の共有に対してホストとして機能するローカル共有です。DFS 名前空間には、任意の共有リソースを公開することができます。

DFS ボリュームにアクセスする
DFS ボリュームには、標準 UNC 名を使用してアクセスします。

\\Server_Name\Dfs_Share_Name\Path\File

ここで Server_Name は、ホスト DFS コンピュータの名前です。Dfs_Share_Nameは、DFS のルートとして指定された共有にマップします。Path\File は、任意の有効な Win32&reg パス名です。ドライブは Net Use を使用して、DFS 内の任意の場所に接続や切断を行うことができます。DFS は、UNC 名と実際にファイルやディレクトリをホストしているサーバーおよび共有間の間接的なレベルを提供します。

DFS に含まれる共有は、DFS のクライアントによってアクセス可能なサーバーでホストされます。これには、ローカル ホストの共有、Windows NT サーバーまたはワークステーションの共有、あるいはクライアント ソフトウェア (NetWare、Banyan など) を使用して Windows NT にアクセス可能な共有が含まれます。

ディレクトリ サービスに対応している DFS のバージョンでは、DFS ボリュームには、フォールト トレラント名とそのドメイン名の両方を使用してアクセスすることもできます。

\\Fault_Tolerant_Name\Dfs_Share_Name\Path\File

\\Domain_Name\Fault_Tolerant_Name\Path\File

ここで、Fault_Tolerant_Name は管理者が DS 内に格納されている DFS ボリュームを指定するために選択する名前です (ルート レベルでフォールト トレランスを提供しているコンピュータのグループなど)。Domain_Name\Volume は、Windows ディレクトリ サービスの標準ボリューム オブジェクトの名前です。

DFS ボリュームをホストする
ネットワークは、それぞれが個別の名前を持つ複数の DFS ボリュームをホストできます。 Windows NT 4.0 または Windows 2000 サーバーであれば、DFS サービスを実行し、DFS ボリュームをホストすることができます。Windows NT 4.0 リリースの DFS の 場合は、サーバーでホストできる DFS は 1 つだけです。Windows NT ベースのオペレーティング システムの場合は、今後のリリースでアーキテクチャ上の制限がなくなり、複数の DFS ボリュームをホストできるようになります。

典型的な DFS シナリオでは、DFS ボリュームは組織全体にわたる複数サーバーのリンク ボリュームで構成されます。たとえば、銀行業界のある組織に文書処理のニーズに対応する従業員のグループがあるとします。このグループには、組織の各部署および支店で保存されている文書にアクセスする必要があります。ローカルでホストされている単一の DFS ボリュームがあれば、これらのサーバーおよび文書処理情報を保存するために通常使用する特定の共有だけを接続できます。次の表に典型的な DFS を示します。

UNC 名

マップ先

説明

\\Server\Public

\\Server\Public

組織の DFS のルート

\\Server\Public\Intranet

\\IIS\Root

イントラネット起動ポイントへの接続

\\Server\Public\Intranet\ CorpInfo

\\Marketing\Info\ Corporate_HTML

部署のイントラネット コンテンツへの接続

\\Server\Public\Users

\\Server\Public\Users

ホーム ディレクトリのコレクション

\\Server\Public\Users\ Bob

\\Server\Public\Users

企業の開発サーバー上にある Users ディレクトリから Bob のディレクトリへの接続

\\Server\Public\Users\ Bob\Java_Apps

\\Bob1\Data\ Java_Apps

Bob の開発ディレクトリから Bob の個人的なワークステーションの 1 つへの接続点

\\Server\Public\Users\ Bob\Java_Apps

\\Bob2\Backups\ Java_Apps

代替ボリューム: 手動で管理される Bob の作業データのバックアップ

\\Server\Public\Users\ Ray

\\Server\Public\Users

ダウンレベル ボリューム: 非 SMB ボリューム (NetWare や NFS など) への接続

 

次の図 4 は、上記の表の情報を階層図で示しています。

dfsnt04

図 4: 典型的な DFS

図 4 は、上記の接続の表を示しているだけでなく、次の重要な例も示しています。

  • 接続後の接続

  • 代替ボリューム

  • ダウンレベル ボリューム

以下では、これらについて詳しく説明します。

接続後の接続
これは子接続を持つ接続です。このように設定する方法は 2 とおりあります。DFS 間リンクと中間レベル接続です。

DFS 間リンク ( スタンドアロン サーバー )
ある DFS ボリュームを別の DFS ボリュームに結合することができます。たとえば、組織内の個々の部署は、業務上のニーズに合わせて論理名前空間を設定し、管理することができます。企業の DFS ボリュームは、すべての部署の DFS ボリュームと互いにリンクできます。DFS 間リンクによって、接続を通過する際に DFS ルートとして参照するサーバーが変更されます。エンド ユーザーには透過ですが、DFS クライアントは新しい DFS ルートから紹介を受け取ります。

中間レベル接続 ( ディレクトリ サービス対応バージョンのみ )
これは、DFS 間リンクを必要としない、無制限の階層的な接続をサポートするため、今後の DFS リリースで予定されている機能です。すべての紹介は、元の DFS ルートによって解決され、障害ポイントを減らし、深く入れ子になったパスの解決に必要な紹介の数を最小限にします。

代替ボリューム
組織内で 2 つ (またはそれ以上の) 共有が、ある 1 つの共有の複製物である場合に、ボリュームを有効に利用するには、DFS 名前空間で 1 つのポイントにこれらの共有をマウントすることができます。

DFS は、保存されているデータが 2 つの共有間で複製されているかどうかの確認は行いません。DFS の複製物は、同期化または複製されたデータの代替ソースとして見なされる必要があります (複製は手動でも自動でもできます)。内容が複製されていない場合でも、代替ボリュームは読み取り専用シナリオで利用できます。読み取り専用シナリオでは、データの書き込みはすべての代替ボリュームにわたり、物理的な名前付けによって行われます。

DFS では、所定の接続点に対して 32 個まで代替ボリュームを使用できます。DFS ツリー内のポイントで作成できる接続数には制限はありません。

ダウンレベル ボリューム
Windows NT Server 4.0 以降のボリュームであれば、DFS ボリュームをホストし、DFS 間リンクとして関係付けることができます。他のボリュームはすべて "ダウンレベル" として見なされます。ダウンレベル ボリュームは、DFS ボリュームで公開できますが、DFS をホストしたり他のボリュームに結合することはできません。ダウンレベル ボリュームには、Windows NT Workstation (すべてのバージョン)、Windows 98、Windows 95、Windows for Workgroups、およびクライアントのリダイレクタが利用できるすべての非 Microsoft 共有が含まれます。Windows 95 および Windows 98 の DFS 対応クライアントはすべてのアップレベル ボリュームおよび SMB (Microsoft) ダウンレベル ボリュームの紹介を取得しますが、非 SMB ボリュームとはネゴシエートできません。

PKT (Partition Knowledge Table) には、すべての接続点の情報が含まれています。これは付録 1 に記載の DFS Admin API によって管理されます。

dfsnt05

図 5: PKT (Partition Knowledge Table)

図 5 に示すように、PKT は、論理 DFS 名前空間を物理紹介にマップします (代替ボリュームは、単一接続の一覧として表示されます)。

DFS クライアントが接続を参照する場合、まずローカルにキャッシュされている PKT エントリを探します。紹介を解決できない場合は、クライアントは DFS ルートに問い合わせます。それでも紹介を解決できない場合は、エラーが発生します。紹介を適切に解決できた場合は、クライアントはその紹介をローカルの表のエントリに追加します。

DFS クライアントが PKT から紹介を取得すると、その紹介は 5 分間キャッシュされます。クライアントが紹介を再利用した場合は、Time-to-Live (TTL) は更新されます。それ以外の場合は、キャッシュは無効になります。特定の紹介に対する代替ボリュームが存在する場合、すべての代替ボリュームがクライアントに渡され、キャッシュされます。クライアントは使用する紹介を無作為に選択します。

DFS 対応のリダイレクタ、SMB サーバー、および DFS ドライバは共同で機能し、パスベースの操作を実際にファイルまたはディレクトリをホストしているサーバー/共有にルーティングし直します。このために定義された新しいトランザクション SMB 2 個、パブリック管理 API 7 個、プライベート API 10 個があります。これらについては、付録 2 で説明されています。

スタンドアロン DFS ボリュームでは、紹介プロセスがリーフ (ダウンレベル ボリュームなど、接続にならないポイント) または DFS 間リンクのいずれかに達するまでにさらに深いレベルに進むことはありません。DFS 間リンクに達すると、接続のもう一方の側で紹介プロセスが開始され、論理名前空間のさらに先に進んで紹介を解決します。

ディレクトリ サービス対応バージョンの DFS では、接続への接続が許可されています (DFS 間リンクは必要ありません)。この場合、紹介プロセスは、要求されたパスから解決できる最も長い ("\" を最も多く含む) 紹介を明示的に探します。これによって、最終目的のファイルを単一の紹介で解決することができます。

dfsnt06

図 6: Trans2_Dfs_Get_Referral のプロセス

図 6 では、ディレクトリ \Scratch and \My_Tree は他のサーバーへの接続を表しています。Windows NT 4.0 の場合は、DFS 間リンクを使用しなければ不可能です。この場合、2 つの紹介操作が必要になります。

前の 2 つの節で説明したように、紹介はパフォーマンスを考慮してローカルにキャッシュされ、代替が利用できる場合は、すべての代替がクライアントに提供されます。クライアントは使用する紹介を任意に選択します。ディレクトリ対応バージョンの DFS では、クライアントがサイト内で利用可能な代替を選択するように、サイトに基づいて行われます。

代替の中から紹介が選択されると、セッションのセットアップが実行されます (前の接続が存在しない場合は、資格情報が新しいサーバーに渡されます)。選択した紹介が失敗した場合は、フェールオーバー処理が開始します。フェールオーバーの所要時間および影響は、失敗した時点でクライアントが何を実行していたか、またどのようにして失敗したかによって異なります。

シナリオ #1
クライアントが代替ボリュームを参照しています。代替をホストしているコンピュータの電源が切れるか、または何らかの理由でネットワークから完全に切断されます。フェールオーバーを行うには、クライアントはまずホストしているコンピュータが存在していないことを確認することが必要です。これに要する時間は、クライアントが使用しているプロトコルによって異なります。多くのプロトコルは低速で疎接続の WAN リンクのために、プロトコル自体がタイムアウトするまでの再試行カウントは最大 2 分にもなる可能性があります。コンピュータの電源が切れたりコンピュータが切断されると、DFS はすぐに別の代替を選択します。ローカル キャッシュに使用できる代替がない場合は、DFS クライアントは管理者が PKT エントリを変更していないかどうかを調べるため DFS ルートに問い合わせます。ルートで利用できる代替がないと、失敗になります。それ以外の場合は、DFS は新しい代替を選択し、セッションのセットアップを開始します。

シナリオ #2
クライアントが代替ボリュームを参照しています。代替をホストしているコンピュータで、代替をホストしているハード ディスクが失われるか、または共有が無効になります。この状況で、代替をホストしているサーバーは、まだクライアントの要求に応答しています。新しい代替へのフェールオーバーはほぼ即座に行われます。

シナリオ #3
クライアントがファイルを開いています。代替をホストしているコンピュータの電源が切れるか、または何らかの理由でネットワークから完全に切断されます。このシナリオでは、シナリオ #1 での説明と同じプロトコル フェールオーバー処理が実行されますが、前の代替からのファイル ロックを保持していたアプリケーションで変更を検出し、新しいロックを確立する必要があります。

新しくファイルを開こうとすると、シナリオ #1 で説明した処理と同じフェールオーバー処理がトリガされます。既に開いているファイルで操作を行うと、適切なエラーが表示され、失敗します。

シナリオ #4
クライアントがファイルを開いています。代替をホストしているコンピュータで、代替をホストしているハード ディスクが失われるか、または共有が無効になります。このシナリオでは、シナリオ #2 で説明した即座のフェールオーバー処理が実行されますが、前の代替からのファイル ハンドルを保持していたアプリケーションで変更を検出し、新しいハンドルを確立する必要があります。

DFS では、セッションのセットアップ時に、また、システム全体で統一されていない ACL を使用して、セキュリティ問題の特別な処理を行うことができます。

セッションの設定
各接続が初めて通過およびキャッシュされると、DFS 対応クライアントは接続のもう一方の側にあるサーバーとセッションのセットアップを確立します。DFS に接続するためにユーザーがあらかじめ提供した資格情報が使用されます (たとえば、Net Use * \\Server\Dfs_Share /u:domain\User)。ユーザーが資格情報を提供しなかった場合、ユーザーが自分のワークステーションにログオンするときにキャッシュされた資格情報が使用されます。

ACL
ファイル ACL は個々の物理共有で管理されます。システム全体の ACL を DFS ルートから管理する方法や、ACL を代替ボリューム間で統一する方法はありません。これにはいくつかの理由があります。

  • ユーザーは物理リソースに対して直接 Net Use を実行できるため、集中管理された論理 ACL データベースは迂回される可能性があります。

  • 論理 DFS ボリュームは、他のネットワーク オペレーティング システムのリーフを含むことができるだけでなく、FAT および NTFS ボリュームにまたがることができます。NTFS ボリュームから始まり、FAT に移行し、NTFS に戻り、最終的に NetWare ボリュームに移行する、継承された拒否 ACL を合理的に設定する方法はありません。

  • 論理名前空間を移動して ACL を適切に設定するツールには、疎接続あるいは信頼性の低いネットワークで ACL が待ち行列に入って更新されたことを確認するために、複雑なメッセージおよびトランザクション エンジンが必要です。

  • Windows 2000 で利用できる記憶域のクォータには、ユーザーが割り当てられている記憶域を超過した場合に、確立する可能性のあるすべてのボリュームのあらゆるユーザーの記憶域について、タリーを行うことが追加で必要になります。

DFS のバイナリ コンポーネント

説明

DfsAdmin.exe

管理 UI ツール

DfsSrv.exe

DFS のサーバー側サービス (PKT を管理)

DfsUI.dll

DfsAdmin が使用するコール

Dfs.sys

DFS サービスが使用する DFS ドライバ (紹介を渡す場合など)

DfsInit.exe

DFS を初期化する起動時間 (サーバーのみ)

DfsSetup.dll

ネットワーク コントロール パネル (インストール時にも使用)

 

dfsnt07

図 7: さまざまなバイナリ コンポーネントを示すブロック アーキテクチャ

DfsCMD.exe と呼ばれるユーティリティを使用すると、スクリプト コマンドで DFS を変更することもできます。

ここでは、DFS を使用してアプリケーションを記述する開発者向けに、空き領域、接続、ファイル システム、およびバックアップと復元に関するヒントを示します。

空き領域
ボリューム上で利用可能な記憶域の空き領域を調べる場合、GetDiskFreeSpace 関数を使用すると、DFS ボリュームのルートで利用できる領域が返されます。ツリー全体にわたって、各接続間で利用可能な空き領域の合計を調べることはできません。GetDiskFreeSpaceEX は新しい関数で、名前空間内で指定した地点で利用可能な領域を返します。この関数を使用すると、接続のもう一方の側の空き領域を調べることができます。この結果は、代替ボリュームがマウントされているかどうか、また代替ボリュームが同じ記憶装置を使用しているかどうかによって異なります。

接続
DFS では、ワークステーションおよびサーバーを接続点として等しく扱うため、Windows NT ワークステーションに接続できるのは 10 クライアントまでに限られています。これは、DFS で公開されている Windows NT ワークステーションに 10 件の接続がすでに確立していると、そのワークステーション上の共有にアクセスすることができないことを意味します (これらの接続がプライベート DFS を使用しているかどうかには関係ありません)。スタンドアロン サーバーの場合は制限はありません。DFS ルートをホストできるのは Windows NT Server だけですが、ネットワーク経由でアクセスできる共有またはボリュームであれば、DFS 名前空間に含めることができます。

ファイル システム
DFS は常に Windows NT Server 4.0 または Windows 2000 Server のいずれかで、FAT または NTFS の形式でホストされます。接続を超えるたびに、あるファイル形式から別のファイル形式に変更することができます。ダウンレベル ボリュームでは、Windows NT から、固有の形式でフォーマットされた異なるセキュリティ モデルを持つ代替 NOS に変更することもできます。異なる物理サーバーへの接続のもう 1 つの効果には、論理サブディレクトリ間でネットワーク アドレスを変更できることがあります (これはユーザーおよびアプリケーションには透過です)。

バックアップと復元
DFS では、ボリュームをネットワーク上のすべての記憶域を含めて作成することができます。したがって、単一の名前空間ですべての記憶域のバックアップを行うことができます。バックアップ ソリューションは、DFS トポロジに対応している必要があります。たとえば、物理サーバーが存在しないときに論理名前空間の一部を復元する場合は、その事実を認識し、データへの対応を判別できる必要があります。この場合、サーバーが一時的にダウンしていると仮定して、復元操作を待ち行列に入れ、内容を別の場所に移動し、論理名前空間を自動的に再設定するか、または操作をキャンセルすることができます。

ページのトップへ ページのトップへ

ディレクトリ サービスを利用する

DFS では、以下の新機能を利用します。

  • 既存の管理情報を保存するディレクトリ サービス。

  • DFS 情報の更新および照会のためのプロトコルとしての LDAP。

  • DFS でルートレベルのフォールト トレランスを実現するためのディレクトリ サービス ストア。

  • DFS ルートに含まれるすべてのコンピュータの、DFS 構造での同期状態を維持するためのディレクトリ サービス。

  • インテリジェント レプリカ選択を提供するためのディレクトリ サービス サイト トポロジ。

  • 代替ボリュームを相互に同期化するためのコンテンツ複製サービス。

dfsnt08

図 8: 情報の記憶域

ディレクトリ サービス オブジェクトの詳細については、後述の「付録 3: ディレクトリ サービス オブジェクト」を参照してください。

ページのトップへ ページのトップへ

付録 1: DFS プログラミング インターフェイス

Microsoft Platform SDK には、これらのインターフェイスに関する完全なマニュアルが含まれています。このインターフェイスは、DFS の Windows NT 4.0 バージョンと Windows 2000 バージョンの両方に適用されます。

以下の関数は、分散ファイル システム (DFS) ツリー構造に、接続点、つまりサーバー共有へのリンクを新しく作成するか、または既存の接続点に共有を追加します。

NetDfsAdd(

LPWSTR DfsEntryPath,

// 追加したいボリュームまたは記憶域への DFS エントリ パス

LPWSTR ServerName,

// 記憶域をエクスポートするサーバー名

LPWSTR 0,

// 記憶域の既存の共有名

LPWSTR Comment,

// ボリュームまたは記憶域についてのオプションのコメント

DWORD Flags,

// フラグなしの場合はゼロ

);

 

パラメータ
}DfsEntryPath

[入力] DFS ツリー構造の接続点の汎用名前付け規則 (UNC) パス名を指定する、ヌルで終わる Unicode 文字列へのポインタ。文字列は以下の形式になります。

Dfsname\sharename\path-to-junction-point

ここで、Dfsname は DFS ルート ボリュームをホストする Windows NT のサーバー名です。sharename は、DFS ホスト サーバーで公開されている共有名です。path-to-junction-point は、物理的に共有されているボリュームへの UNC ネットワーク パス名を指定します。

ServerName

[入力] 接続点が参照する記憶域サーバー名を指定する、ヌルで終わる Unicode 文字列へのポインタ。

ShareName

[入力] 接続点が参照する記憶域サーバーの共有名を指定する、ヌルで終わる Unicode 文字列へのポインタ。

Comment

[入力] 接続点に関連するオプションのコメントを含む、ヌルで終わる Unicode 文字列へのポインタ。

Flags

[入力] フラグ値を指定します。このパラメータを値 DFS_ADD_VOLUME に設定すると、接続点が既に存在する場合はこの関数は失敗に終わります。このパラメータを 0 に設定すると、接続点が存在しない場合は新しい接続点が作成されます。存在する場合は、既存の接続点に新しい共有が追加されます。

戻り値
NERR_Success は成功を表します。Win32 API エラー値は失敗を表します。

関連項目 NetDfsEnum、NetDfsRemove

次の関数は、分散ファイル システム (DFS) ツリー構造の接続点から共有を削除します。指定された共有が、接続点に関連付けられている最後の共有である場合は、この関数は接続点も削除します。

NetDfsRemove(

LPWSTR DfsEntryPath,

// // ボリュームまたは記憶域への DFS エントリ パス

LPWSTR ServerName,

// 記憶域をエクスポートするサーバー名

LPWSTR ShareName,

// 記憶域をエクスポートする共有名

);

 

パラメータ
DfsEntryPath

[入力] DFS ツリー構造の接続点の汎用名前付け規則 (UNC) パス名を指定する、ヌルで終わる Unicode 文字列へのポインタ。文字列は以下の形式になります。

Dfsname\sharename\path-to-junction-point

ここで、Dfsname は DFS ルート ボリュームをホストする Windows NT のサーバー名です。sharename は、DFS ホスト サーバーで公開されている共有名です。path-to-junction-point は、物理的に共有されているボリュームへの UNC ネットワーク パス名を指定します。

ServerName

[入力] 接続点が参照する記憶域サーバー名を指定する、ヌルで終わる Unicode 文字列へのポインタ。

ShareName

[入力] 接続点が参照する記憶域サーバーの共有名を指定する、ヌルで終わる Unicode 文字列へのポインタ。

戻り値
NERR_Success は成功を表します。Win32 API エラー値は失敗を表します。

関連項目 NetDfsAdd、NetDfsEnum

次の関数は、指定された分散ファイル システム (DFS) ツリー構造のすべての接続点を列挙します。この関数は接続点に関する情報を、Level パラメータで指定された情報のレベルに基づいて返します。

NetDfsEnum(

LPWSTR DfsName,

// 列挙する対象の DFS 名。

DWORD Level,

// 要求する情報のレベル。

DWORD PrefMaxLen,

// 情報のみ、ただし -1 は "すべて取得" を表します。

LPBYTE* Buffer,

// API はバッファを割り当て、要求された情報をバッファで返します。

LPDWORD EntriesRead,

// 返されるエントリ数。

LPDWORD ResumeHandle,

// 最初の呼び出しでは 0 である必要があります。後続の呼び出しで再使用されます。

);

 

パラメータ
DfsName

[入力] DFS ルート ボリュームをホストする Windows NT サーバー名を指定する、ヌルで終わる Unicode 文字列へのポインタ。

Level

[入力] 要求する情報レベルを指定します。このパラメータは以下の値のいずれかになります。

説明

1

DFS ボリューム名を返します。buffer パラメータには DFS_INFO_1 構造体配列が含まれています。

2

DFS ボリューム名とボリューム情報を返します。buffer パラメータには、DFS_INFO_2 構造体配列が含まれています。

3

DFS 名、ボリューム情報、およびネットワーク パス情報が返されます。buffer パラメータには DFS_INFO_3 構造体配列が含まれています。

 

PrefMaxLen

[入力] この列挙型関数呼び出しで返される、適切な最大バイト数を指定します。

Buffer

[出力] 要求した情報構造を含むバッファのアドレスへのポインタ。

EntriesRead

[出力] 実際に列挙された接続点の数を含む DWORD へのポインタ。

ResumeHandle

[入出力] 列挙の継続に使用されるハンドルを含む DWORD へのポインタ。ハンドルは、最初の呼び出しでは 0 であり、後続の呼び出しで変更されないことが必要です。

戻り値

NERR_Success は成功を表します。Win32 API エラー値は失敗を表します。

備考
ResumeHandle パラメータを 0 に設定してこの関数を呼び出すと、列挙を開始します。ほかの接続点に関する情報を取得するには、この関数の前回の呼び出しで返された ResumeHandle パラメータ値を使用して関数を呼び出します。

この関数は情報構造バッファに必要なメモリを割り当てます。メモリのサイズは PrefMaxLen パラメータで指定したサイズより大きいサイズになります。

関連項目 DFS_INFO_1、DFS_INFO_2、DFS_INFO_3、DFS_STORAGE_INFO、NetDfsAdd、NetDfsRemove

次の関数は、指定した分散ファイル システム (DFS) ツリー構造の接続点に関する情報を取得します。この関数は、サーバーおよび共有に固有の情報や接続点に固有の情報を返すことができます。

NetDfsGetInfo(

LPWSTR DfsEntryPath,

// ボリュームへの DFS エントリ パス。

LPWSTR ServerName OPTIONAL,

// 記憶域をエクスポートするサーバー名。

LPWSTR ShareName OPTIONAL,

// 記憶域をエクスポートする共有名。

DWORD Level,

// 要求する情報のレベル。

LPBYTE* Buffer,

// API はバッファを割り当て、要求された情報をバッファで返します。

);

 

パラメータ
DfsEntryPath

[入力] DFS ツリー構造の接続点の汎用名前付け規則 (UNC) パス名を指定する、ヌルで終わる Unicode 文字列へのポインタ。文字列は以下の形式になります。

Dfsname\sharename\path-to-junction-point

ここで、Dfsname は DFS ルート ボリュームをホストする Windows NT のサーバー名です。sharename は、DFS ホスト サーバーで公開されている共有名です。path-to-junction-point は、物理的に共有されているボリュームへの UNC ネットワーク パス名を指定します。

ServerName

[入力] 接続点が参照する記憶域サーバー名を指定する、ヌルで終わる Unicode 文字列へのポインタ。このパラメータはオプションです。

ShareName

[入力] 接続点が参照する記憶域サーバーの共有名を指定する、ヌルで終わる Unicode 文字列へのポインタ。このパラメータはオプションです。

Level

[入力] 要求する情報レベルを指定します。このパラメータは以下の値のいずれかになります。

説明

1

DFS ボリューム名を返します。buffer パラメータには DFS_INFO_1 構造体配列が含まれています。

2

DFS ボリューム名とボリューム情報を返します。buffer パラメータには、DFS_INFO_2 構造体配列が含まれています。

3

DFS 名、ボリューム情報、およびネットワーク パス情報が返されます。buffer パラメータには DFS_INFO_3 構造体配列が含まれています。

100

DFS ボリュームまたはサーバーに関するコメントを返します。buffer パラメータには、DFS_INFO_100 構造体が含まれています。

 

Buffer

[出力] 要求した情報構造体を含むバッファのアドレスへのポインタ。

戻り値
NERR_Success は成功を表します。Win32 API エラー値は失敗を表します。

備考
ServerName パラメータと ShareName パラメータを両方指定すると、この関数はそのサーバーおよび共有に固有の情報を返します。パラメータを指定しなかった場合は、この関数はその接続点全体に固有の情報を返します。

関連項目 DFS_INFO_1、DFS_INFO_2、DFS_INFO_3、DFS_INFO_100、DFS_STORAGE_INFO、NetDfsEnum

次の関数は、情報を指定された分散ファイル システム (DFS) ツリー構造の接続点に関連付けを行います。この関数は、特定のサーバーおよび共有に関する情報または接続点全体に固有の情報を設定することができます。

NetDfsSetInfo(

LPWSTR DfsEntryPath,

// ボリュームへの DFS エントリ パス

LPWSTR ServerName OPTIONAL,

// 記憶域をエクスポートするサーバー名

LPWSTR ShareName OPTIONAL,

// 記憶域をエクスポートする共有名

DWORD Level,

// 設定する情報のレベル

LPBYTE Buffer,

// 情報を保持するバッファ

);

 

パラメータ
DfsEntryPath

[入力] DFS ツリー構造の接続点の汎用名前付け規則 (UNC) パス名を指定する、ヌルで終わる Unicode 文字列へのポインタ。文字列は以下の形式になります。

Dfsname\sharename\path-to-junction-point

ここで、Dfsname は DFS ルート ボリュームをホストする Windows NT のサーバー名です。sharename は、DFS ホスト サーバーで公開されている共有名です。path-to-junction-point は、物理的に共有されているボリュームへの UNC ネットワーク パス名を指定します。

ServerName

[入力] 接続点が参照する記憶域サーバー名を指定する、ヌルで終わる Unicode 文字列へのポインタ。このパラメータはオプションです。

ShareName

[入力] 接続点が参照する記憶域サーバーの共有名を指定する、ヌルで終わる Unicode 文字列へのポインタ。このパラメータはオプションです。

Level

[入力] 要求する情報レベルを指定します。このパラメータは以下の値のみをとります。

説明

100

DFS ボリュームまたはサーバーに関するコメントを返します。buffer パラメータには、DFS_INFO_100 構造体が含まれています。

 

buffer

[入力] 情報構造を含むバッファへのポインタ。

戻り値
NERR_Success は成功を表します。Win32 API エラー値は失敗を表します。

備考
ServerName パラメータと ShareName パラメータを両方指定すると、この関数はそのサーバーおよび共有に固有の情報を返します。パラメータを指定しなかった場合は、この関数はその接続点全体に固有の情報を返します。

関連項目 DFS_INFO_100、NetDfsEnum

説明

NERR_DfsInternalCorruption (NERR_BASE+560)

DFS サービスが管理する内部データベースが壊れています。

NERR_DfsVolumeDataCorrupt (NERR_BASE+561)

DFS サービスが管理する内部データベースのレコードが壊れています。

NERR_DfsNoSuchVolume (NERR_BASE+562)

DfsEntryPath パラメータに適合するボリュームがありません。

NERR_DfsVolumeAlreadyExists (NERR_BASE+563)

指定した名前の DFS ボリュームが既に存在しています。

NERR_DfsAlreadyShared NERR_BASE+564)

指定したサーバー共有が既に存在します。

NERR_DfsNoSuchShare (NERR_BASE+565)

指定したサーバー共有は、指定のボリュームをサポートしていません。

NERR_DfsNotALeafVolume (NERR_BASE+566)

この操作は非リーフ DFS ボリュームでは無効です。

NERR_DfsLeafVolume (NERR_BASE+567)

この操作は DFS リーフ ボリュームでは無効です。

NERR_DfsVolumeHasMultipleServers(NERR_BASE+568)

ボリュームに複数のサーバーが存在するため、DFS サービスはこの操作を完了できません。

NERR_DfsCantCreateJunctionPoint (NERR_BASE+569)

DFS サービスはこの接続点を作成することができません。

NERR_DfsServerNotDfsAware (NERR_BASE+570)

サーバーが DFS 対応ではありません。DFS サーバー ソフトウェアがインストールされていないか、または分散ファイルサービスが手動で終了されています。

NERR_DfsBadRenamePath (NERR_BASE+571)

名前の変更を指定したターゲット パスは無効です。

NERR_DfsVolumeIsOffline (NERR_BASE+572)

指定した DFS ボリュームはオフラインです。

NERR_DfsNoSuchServer (NERR_BASE+573)

指定したサーバーは、この DFS ボリュームのサーバーではありません。

NERR_DfsCyclicalName (NERR_BASE+574)

DFS 名で循環が検出されました。

NERR_DfsNotSupportedInServerDfs (NERR_BASE+575)

この操作は、サーバーベースの DFS ではサポートされていません。これはドメインベースの DFS でのみサポートされています。

NERR_DfsInternalError (NERR_BASE+590)

DFS 内部エラーが発生しました。

 

ページのトップへ ページのトップへ

付録 2: CIFS の仕様

共通インターネット ファイル システム (CIFS) は、インターネットで使用する標準リモート ファイル システム アクセス プロトコルを定義し、ユーザーのグループがインターネット上または企業のイントラネット内で共同作業を行ったり、文書を共有できるようにします。CIFS は、Windows および UNIX などのその他の一般的なオペレーティング システムに組み込まれたネイティブ ファイル共有プロトコルに基づくオープンなクロスプラットフォーム テクノロジです。DFS は CIFS 仕様の一部として扱われます。

Windows NT LAN Manager 0.12 以降のプロトコル言語は、分散ファイル システム操作をサポートしています。分散ファイル システムでは、このプロトコルで複数のサーバーおよび共有にわたる単一で一貫性のあるファイル名前付け方法を使用することができます。採用されている分散ファイル システム モデルは、紹介ベース モデルです。このプロトコルはクライアントが紹介を受け取る方式を指定します。

クライアントは、サーバーに既知の DFS 内で SMB パスの解決を求めていることをサーバーに示すフラグを、要求 SMB ヘッダーに設定できます。サーバーは要求された名前を要求の TID が示すローカル ディレクトリ ツリー内にあるファイルに解決しようとし、正常に処理を進めます。要求のパス名を異なるシステムのファイルに解決する場合、サーバーは STATUS_DFS_PATH_NOT_COVERED を返します。

サーバーは、要求のパス名を解決するために必要な DFS 名前空間に関する部分をサポートしていません。クライアントは、詳細情報を得るためにこのサーバーからの紹介を要求する必要があります。

クライアントは、問題の DFS パス名を含む TRANS2_DFS_GET_REFERRAL 要求で紹介を求めます。サーバーからの応答には、クライアントの対処方法が示されます。このプロトコルでは、サーバーによる DFS のトポロジ情報の格納方法や管理方法は指定されません。

DFS パス名は、前述のファイル名について説明した標準に従います。DFS 共有にアクセスする DFS 対応クライアントは、すべての名前ベース SMB ヘッダーで FLAGS2 ビットを 12 に設定する必要があります。これは、サーバーがそれに含まれるパス名を分散ファイル システムの名前空間内で解決する必要があることを示します。パス名は、サーバー名および共有名を含めた完全ファイル名であることが必要です。サーバーが DFS 名をローカル記憶域に解決できる場合は、ローカル記憶域にアクセスします。サーバーで、DFS 名が実際はほかのサーバーの共有にマップしていると判断されると、そのパス名へのアクセスは失敗し、次のエラーが返されます。

STATUS_PATH_NOT_COVERED (SMB ステータス コード 0xC0000257)

このエラーが返されると、DFS 対応クライアントは、サーバーに REFERRAL を要求します (TRANS2_GET_DFS_REFERRAL を参照)。紹介の要求には完全なファイル名が必要です。

要求への応答には、試行するサーバーおよび共有名のリストと、サーバーの共有リストに結合されている要求ファイル名の一部が含まれています。紹介の ServerType フィールドが 1 (SMB サーバー) に設定されている場合、クライアントは、もう一度 SMB で FLAGS2 ビットを 12 ビットに設定して、リストのサーバー共有の 1 つに、"元の" ファイル名で要求を再送信する必要があります。ServerType フィールドが 1 ではない場合、クライアントは、リストのサーバーの 1 つに要求を再送信する前に、サーバー共有に結合しているファイル名の一部を削除する必要があります。

紹介要求への応答は、StorageServers ビット セットを含まない応答を導き出すことがあります。この場合、クライアントは StorageServers ビット セットを含む紹介応答を得るまで、リストのサーバーのいずれかに "紹介要求" を再送信する必要があります。StorageServers ビット セットを含む紹介応答を取得すると、クライアントはリスト内のサーバー共有のいずれかに要求 SMB を再送信できます。

StorageServers ビット セットを含む紹介応答を取得してリストのサーバー共有のいずれかに要求を再送信した後、サーバーから STATUS_PATH_NOT_COVERED を返されて要求に失敗した場合、紹介を与えるサーバーが管理している DFS 名前空間のビューと、紹介にリストされているサーバーとの間には矛盾があります。この場合、クライアントはこの矛盾している紹介を与えたサーバーに TRANS2_REPORT_DFS_INCONSISTENCY SMB を使用して通知することができます。

クライアントはこの要求を送って、サーバーに REQUESTFILENAME をこのファイルの代替名に変換するように求めます。サーバーが CAP_DFS 機能に含まれる NEGOTIATE SMB に応答した場合、この要求はサーバーに送られます。要求の TID は IPC$ であることが必要です。SMB ヘッダーの FLAGS2 を BIT15 に設定し、UNICODE 要求であることを示しておく必要があります。

クライアントの要求

説明

WordCount

15

TotalDataCount

0

SetupCount

1

Setup[0]

TRANS2_GET_DFS_REFERRAL

パラメータ ブロックの符号化

説明

USHORT MaxReferralLevel

分かっている紹介の最新バージョン番号

WCHAR RequestFileName;

紹介を求められたファイルの DFS 名

応答データ ブロック

説明

USHORT PathConsumed;

REQUESTFILENAME バイト数。

USHORT NumberOfReferrals;

この応答に含まれている紹介数。

USHORT Flags;

ビット 0: REFERRALS のサーバーは TRANS2_GET_DFS_REFERRAL を処理できます。
ビット 1: REFERRALS のサーバーは要求されたファイルに対する記憶域を保持している必要があります。

REFERRAL_LIST Referrals[]

このファイルの紹介セット。

UNICODESTRINGE Strings

バージョン 2 の紹介によって示される文字列を REFERRALS に保持するために使用されます。

 

サーバーからの応答には、クライアントがどこに依頼を再送信してファイルへのアクセスを取得するのかを示す REFERRALS のリストが含まれています。応答の PATHCONSUMED はサーバーが使用した REQUESTFILENAME の文字数をクライアントに示します。クライアントはファイル アクセスのために紹介の 1 つを選択すると、対象のサーバーに名前を送信する前に、先頭にある PATHCONSUMED に対応する文字を REQUESTFILENAME の前から削除することが必要です。パス名の一部を削除する必要があるかどうかは、次に示すように個々の紹介によって指定されます。

FLAGS は紹介への対処方法を示しています。BIT0 がクリアされている場合、REFERRALS リストのエンティティには REQUESTFILENAME の記憶域があります。BIT0 が設定されている場合、REFERRALS リストのエンティティには REQUESTFILENAME のさらなる紹介情報があります。さらに解決するには、TRANS2_GET_DFS_REFERRAL 要求が REFERRALS リストのエンティティに送られる必要があります。

個々の紹介のフォーマットには、バージョンおよび長さに関する情報が含まれ、クライアントは理解できない紹介はスキップすることができます。MaxReferralLevel は、クライアントが理解できる紹介の最新バージョンをサーバーに示します。すべての紹介には統一された要素があるため、MAXREFERRALLEVEL は情報のみです。REFERRALS の各要素の詳細は以下のとおりです。

REFERRAL_LIST の要素

 

USHORT VersionNumber

紹介要素のバージョン

USHORT ReferralSize

紹介要素のサイズ

 

定義されている紹介要素のバージョンは以下のとおりです。

バージョン 1 の紹介要素のフォーマット

 

USHORT ServerType

紹介を扱う "ノード" の種類。

  • 不明

    SMB サーバー
    Netware サーバー
    ドメイン

USHORT ReferralFlags

紹介を説明するフラグ
01 - "ノード" に REQUESTFILENAME を送信する前に PATHCONSUMED 文字を削除します。

UNICODESTRING Node

次にアクセスするエンティティの名前。

 

バージョン 2 の紹介要素のフォーマット

 

USHORT ServerType

紹介を扱う "ノード" の種類。

  • 不明

    SMB サーバー
    Netware サーバー
    ドメイン

USHORT ReferralFlags

紹介を説明するフラグ。
01 - "ノード" に REQUESTFILENAME を送信する前に PATHCONSUMED 文字を削除します。

ULONG Proximity

サーバーからクライアントへの距離を示すヒント。0 はクライアントに最も近いサーバーを示し、数が増えるほど "遠い" サーバーであることを示します。数は "この" 特定の SMB でリストされているサーバー内でのみ有効です。

ULONG TimeToLive

クライアントが紹介をキャッシュできる秒数。

USHORT DfsPathOffset

REQUESTFILENAME の PATHCONSUMED バイト数に一致した、紹介の先頭からのバイト数で表した DFS パスのオフセット。

USHORT DfsAlternatePathOffset

REQUESTFILENAME の PATHCONSUMED バイト数に一致した、紹介の先頭からのバイト数で表した DFS パスの代替名 (8.3 形式) のオフセット。

USHORT NetworkAddressOffset

紹介の先頭からのバイト数で表した、次にアクセスするエンティティのオフセット。

 

SMB プロトコルでは、紹介選択ポリシーは指定されません。

Distributed Name Resolution アルゴリズムの一部として、DFS クライアントは紹介サーバー (紹介を渡すサーバー) と記憶域サーバー (紹介サーバーによってクライアントがリダイレクトされるサーバー) 間で矛盾する情報を検出できます。このような矛盾が検出された場合は、DFS クライアントは、オプションでこの SMB を紹介サーバーに送り、紹介サーバーが修正操作を行えるようにします。

クライアントの要求

説明

WordCount

15

MaxParameterCount

0

SetupCount

1

Setup[0]

TRANS2_REPORT_DFS_INCONSISTENCY

パラメータ ブロックの符号化

説明

UNICODESTRING RequestFileName;

紹介を求められたファイルの DFS 名

 

この要求のデータ部分には、エラーになると予想される紹介要素 (バージョン 1 フォーマットのみ) が含まれています。これらは TRANS2_GET_DFS_REFERRAL 応答で説明したように符号化されています。サーバーが成功を返した場合は、クライアントは TRANS2_GET_DFS_REFERRAL 要求をこのサーバーに再送信して新しい紹介を取得できます。DFS 情報が自動的に修復される必要はありません。クライアントはさらに誤った紹介を受け取る場合に備えておく必要があります。また、この要求と TRANS2_GET_DFS_REFERRAL 要求の間でループが発生しないようにする必要があります。

SMB ヘッダーの FLAGS2 を BIT15 に設定し、これが UNICODE 要求であることを示す必要があります。

ページのトップへ ページのトップへ

付録 3: ディレクトリ サービス オブジェクト

ここでは、DFS 関連の情報を格納するためのディレクトリ内の構造について説明します。これらのオブジェクトはすべて、付録 1 で説明したパブリック API で操作することができます。

以下のオブジェクトは、ある組織内のすべての DFS コンテナのホルダです。

Common-Name=Dfs-Configuration
Admin-Display-Name=Dfs-Configuration
Admin-Description=Dfs-Configuration
Object-Class=Class-Schema
Comment:Holds all Fault-tolerant DFS configurations
LDAP-Display-Name=dfsConfiguration
Governs-ID=1.2.840.113556.1.5.42
Structural Class
Rdn-Att-Id=Common-Name
Schema-ID-GUID={8447f9f2-1027-11d0-a05f-00aa006c33ed}
Default-Security-Descriptor=O:CO G:CG
D:(A;;GA;;;DA)(A;;GA;;;SY)(A;;GA;;;CO)
Subclass of:Container
System-Only=FALSE
Poss-Superiors=Configuration

以下は、個々の DFS コンテナ オブジェクトです。このオブジェクトには、すべての接続情報だけでなく、ルートレベルに含まれるコンピュータすべてのメタデータも含まれています。

Common-Name=FT-Dfs
Admin-Display-Name=FT-Dfs
Admin-Description=FT-Dfs
Object-Class=Class-Schema
Comment:Defines a single Fault-tolerant DFS configuration - MilanS
LDAP-Display-Name=fTDfs
Governs-ID=1.2.840.113556.1.5.43
Structural Class
Rdn-Att-Id=Common-Name
Schema-ID-GUID={8447f9f3-1027-11d0-a05f-00aa006c33ed}
Default-Security-Descriptor=O:CO G:CG
D:(A;;GA;;;DA)(A;;GA;;;SY)(A;;GA;;;CO)
Subclass of:Container
System-Only=FALSE
Poss-Superiors=Dfs-Configuration
Must Contain:PKT
Must Contain:PKT-Guid
Must Contain:Remote-Server-Name

以下のオブジェクトには、特定の DFS ボリュームのすべての接続情報のテーブルが含まれています。この情報は、NetDfsEnum 関数で取得します。

Common-Name=PKT
Admin-Display-Name=PKT
Admin-Description=PKT
Object-Class=Attribute-Schema
Attribute-ID=1.2.840.113556.1.4.206
OM-Syntax=4
Attribute-Syntax=String(Octet)
LDAP-Display-Name=pKT
Single-valued
System-Only=FALSE
Schema-ID-GUID={8447f9f1-1027-11d0-a05f-00aa006c33ed}

システム レベル オブジェクトは、任意のフォールト トレラント DFS ボリュームに対してルートをホストするコンピュータ間での整合性を維持するように、管理目的で使用します。

Common-Name=PKT-Guid
Admin-Display-Name=PKT-Guid
Admin-Description=PKT-Guid
Object-Class=Attribute-Schema Attribute-ID=1.2.840.113556.1.4.205
OM-Syntax=4
Attribute-Syntax=String(Octet)
LDAP-Display-Name=pKTGuid
Single-valued
System-Only=FALSE
Range 16 to 16
Schema-ID-GUID={8447f9f0-1027-11d0-a05f-00aa006c33ed}

特定のフォールト トレラント DFS のルートに含まれているすべてのコンピュータの複数値リストです。

Common-Name=Remote-Server-Name
Admin-Display-Name=Remote-Server-Name
Admin-Description=Remote-Server-Name
Object-Class=Attribute-Schema Attribute-ID=1.2.840.113556.1.4.105
OM-Syntax=64
Attribute-Syntax=String(Unicode)
LDAP-Display-Name=remoteServerName
Multi-valued
System-Only=FALSE
Schema-ID-GUID={bf967a12-0de6-11d0-a285-00aa003049e2}

ページのトップへ ページのトップへ

詳細情報

Windows NT および Windows 2000 の最新情報については、Microsoft TechNet、または Web サイト https://www.microsoft.com/japan/windows/ の Windows NT Server をご覧ください。

© 1999 Microsoft Corporation. All right reserved.

本書に記載されている情報は、発行時点で議論されている問題点に関する Microsoft Corporation の最新の見解を示しています。Microsoft は変化する市場状況に対処しなければならないため、本書の内容を Microsoft の確約事項として解釈してはならず、Microsoft は発行日以降に提示された情報の精度についてはいかなるものであれ保証致しません。

本書は、情報の通知のみを目的としており、Microsoft は本書に記載されている情報について明示的にも暗黙的にも一切の保証を致しません。

Microsoft、Active Directory、BackOffice、Windows、Windows NT は米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名および製品名は、各社の商標および登録商標です。

Microsoft Corporation. One Microsoft Way. Redmond, WA 98052-6399 USA

ページのトップへ ページのトップへ