GAT技術ブログ

株式会社ギブ・アンド・テイクの技術ブログ

GAT技術ブログ

【Windows Server】DFS(分散ファイルシステム)とは?仕組み・権限管理・アクセスフローを解説


はじめに(この記事で分かること)

この記事では、Microsoft Windows Server の DFS(Distributed File System:分散ファイルシステム)について解説します。

業務で Windows サーバーの DFS について調査・構築する機会があり、得た知見をシリーズ記事としてまとめました。第 1 回の本記事では概念と仕組みを解説し、続く記事では Amazon EC2 を使った実際の構築と動作検証などを扱います。

この記事を読むと分かること:

  • DFS の 2 つのコンポーネント(DFS-N・DFS-R)の役割と違い
  • クライアントから DFS へのアクセスフロー
  • DFS 環境における権限管理の仕組み

本記事は「DFS の紹介および構築してみた」シリーズの第 1 回です。


DFS(分散ファイルシステム)とは?

Microsoft DFS(Distributed File System)は、複数のサーバーに分散しているファイル共有を、利用者に対して「1 つのフォルダ」として見せる仕組みです。

DFS は以下の 2 つの独立した技術で構成されています。この 2 つを組み合わせることで、「ユーザーには 1 つのフォルダに見せつつ、裏側では複数サーバーで冗長化・同期する」という仕組みが完成します。

※ DFS の名前空間に \\corp.example.com\Public\Shared でアクセスする例。

(上図はクライアントから DFS へのアクセスフローを ①〜⑤ のステップで示しています。各ステップの詳細は「上図(①〜⑤)のアクセスフロー詳解」セクションで解説します。)

コンポーネント 役割 動作の概要
DFS-N(名前空間) 複数の共有フォルダを 1 つの仮想ツリーにまとめる \\corp.example.com\Public のようなドメイン名でアクセスでき、裏側で実際のサーバー(\\FileServer01\Share 等)へ誘導される
DFS-R(レプリケーション) 複数サーバー間でフォルダの内容を同期・冗長化する マルチマスター方式を採用し、全ノードが対等なマスターとして機能する。RDC(Remote Differential Compression)を用いて差分のみを同期し帯域を節約する。

上図(①〜⑤)のアクセスフロー詳解

上図の DFS にアクセスするまでの流れについて、以下で各ステップごとに詳しく解説します。

① クライアント PC が DNS サーバーに問い合わせる

クライアント PC が \\corp.example.com\Public\Shared へアクセスしようとすると、まず corp.example.com を管理している DC(Domain Controller:ドメインコントローラー)の場所を特定するために、社内 DNS サーバーへ問い合わせを行います。

② 最適な DC の IP アドレスを特定する(DC Locator)

クライアント PC は、Active Directory の「DC Locator(ドメインコントローラーロケーター)」という仕組みを使って、自身に最も近い DC を特定します。

クライアントは、Active Directoryによってサイトごとに事前登録された「サイト固有のSRVレコード」をDNSサーバーに問い合わせることで、自身と同じサイト内(例:東京拠点のユーザーには東京の DC、大阪拠点のユーザーには大阪の DC)にある最適な DC の IP アドレスを取得します。

③ クライアント PC が DC(名前空間サーバー)にリフェラル要求を送信する

取得した DC の IP アドレスに対し、クライアント PC は SMB プロトコルで「名前空間 Public\Shared の接続先(フォルダターゲット)のリストをください」というリクエストを送ります。これをリフェラル要求と呼びます。

ドメインベース DFS 名前空間では、名前空間の構成情報が Active Directory 上に保存されます。技術的にはドメイン内のメンバーサーバーを名前空間サーバーに指定することも可能ですが、DC が名前空間サーバーを兼ねる構成が一般的であるため、本フロー図では DC がその役割を兼ねている前提で記述しています。

④ DC が AD サイト情報に基づいてリフェラルを返却する

リフェラル要求を受けた DC は、ユーザー PC と各ファイルサーバーの IP アドレスを AD(Active Directory サイトとサービス)に登録された「サブネット」情報と照合し、それぞれの所属サイトを特定します。

その後、サイト情報と「ターゲット紹介の順序」設定に基づいて優先順位をつけた接続先リスト(リフェラル)を生成し、クライアント PC へ返却します。クライアント PC はこのリストを一定時間キャッシュします。

ターゲット紹介の順序には 3 種類あります:

  1. ランダムな順序:クライアントと同一サイトにあるターゲットをランダムな順序でリストの先頭に並べ、別サイトのターゲットはその後に並べる
  2. 最低コスト:同一サイトのターゲットを先頭に配置し、別サイトのターゲットを Active Directory で設定された「サイト間リンクコスト」が低い順に並べる
  3. クライアントサイト外のターゲットを除外:クライアントと同一サイトにあるターゲットのみをリストに含め、別サイトのターゲットはリストから完全に除外する

参考:Microsoft Learn「ターゲット紹介の順序付けメソッドを設定する」

⑤ クライアント PC がファイルサーバーへ直接 SMB 接続する

クライアント PC はリスト先頭のファイルサーバーへ SMB 接続(445 番ポート)を直接開始します。このとき、DFS 名前空間サーバー(DC)は経由しません。先頭のサーバーがダウンしている場合は、リストの次のサーバーへ自動フェイルオーバーします。

参考:Microsoft Learn「How DFS Works」(DFS アーキテクチャとリフェラルプロセスの詳細)


DFS-R(レプリケーション)の仕組み

単なるファイルコピーではない

DFS-R は各サーバーが持つ「履歴管理用データベース」と「転送用の一時領域」を連携させて動作します。

上図は DFS-R の内部動作を ①〜⑧ のステップで示しています。左側が送信側(DFS サーバー 1 号機)、右側が受信側(DFS サーバー 2 号機)の処理です。以下で各ステップを解説します。

① ファイル変更の検知(NTFS USN ジャーナル監視)

Windows の NTFS ファイルシステムは「USN(Update Sequence Number)ジャーナル」と呼ばれる変更ログを持っています。DFS-R はこのジャーナルを常時監視し、レプリケート対象フォルダ内でファイルが変更・追加・削除されると即座に検知します。

② ESE データベースでのハッシュ照合

ファイルの変更を検知すると、ESE(Extensible Storage Engine)と呼ばれる Microsoft のストレージエンジンで構築された専用データベースを参照し、実際に変更が生じているかをハッシュ値で確認します。

データベースは以下の情報などを管理します。

  • ファイルごとの一意の ID
  • 更新回数を示す「バージョンベクトル」
  • 内容を符号化した「ハッシュ値」
  • NTFS の変更ログ「USN ジャーナル」の監視結果

参考:Microsoft Learn「DFS Replication FAQ」(ファイル ID・バージョンベクトル・ハッシュ値の詳細)

参考:Microsoft Learn「MSFT_DfsrIdRecordInfo class」(ファイル ID・バージョンベクトルの仕様)

参考:Microsoft Learn「How FRS uses the USN change journal」(USN ジャーナルの詳細)

③ RDC(差分圧縮)による差分生成

データベースのハッシュ値を照合し、ファイル全体ではなく「変更されたデータブロック(差分)」だけを抽出します。この技術を RDC(Remote Differential Compression)と呼びます。

たとえば、100 MB を超えるような大容量のテキストログや CSV ファイルの一部が更新された場合、RDC の差分検出アルゴリズムにより、ファイル全体を再転送するのではなく、変更が生じたブロックデータのみを抽出します。これにより、ネットワークに流れるデータ量を最小限に抑えることができます。

④ ステージング領域への配置(送信側)

抽出した差分データを圧縮し、送信側のステージング領域(一時的な作業用フォルダ)に格納します。

⚠️ 注意:デフォルトのステージング領域は 4GB です。扱うファイルが大きい場合は、容量を事前に拡張しておかないとレプリケーションが停止することがあります。送信側・受信側の両方に適用されます。

参考:Microsoft Learn「レプリケートされたフォルダーに必要な最小ステージング領域の決定方法」

⑤ ネットワーク転送(RPC / TCP)

ステージング領域に格納された差分データのみを、RPC / TCP を使って相手サーバーへ転送します。ファイル全体ではなく差分のみを送るため、帯域幅の消費を大幅に抑えられます。

⑥ ステージング領域での受信(受信側)

受信側サーバーは転送されてきた差分データを、受信側のステージング領域に一時的に格納します。

⑦ ESE データベースの更新(受信側)

受信した内容をもとに、受信側の ESE データベースを更新します。具体的には、バージョンベクトルを更新し、ハッシュ値を再計算・登録します。

⑧ NTFS ボリュームへの展開・適用

ステージング領域に格納された差分データを実際のファイルに反映します。これで受信側のファイルが最新の状態になります。

マルチマスター方式とデータ競合

DFS-R は初期設定時にプライマリを決めますが、一度同期が完了すると全サーバーが対等なマスターになります。この仕組みをマルチマスター方式と呼びます。

削除の扱い: 削除操作も「更新情報」として全拠点に伝播します。どこかの拠点でファイルを削除すると、同期が完了次第、全拠点から消えます。

競合の解決: 複数の拠点で同時に同じファイルを更新した場合、DFS-R は「最後のライターが優先(Last Writer Wins)」というアルゴリズムで競合を解決します。負けた側のファイルは隠しフォルダ DfsrPrivate\ConflictandDeleted に一定期間保管されます。

表示設定で「隠しファイル」を表示するだけでは不十分で、「保護されたオペレーティング システム ファイルを表示しない (推奨)」のチェックを外す必要があります。

以下のとおりチェックを外すと、DfsrPrivate が表示されます。


DFS 環境での権限管理(SMB と NTFS の二重構造)

DFS は独自の権限を持たず、Windows Server の標準機能を使って権限を制御します。権限制御には以下の 2 つのレイヤーがあります。

① SMB 共有権限

ネットワーク経由でサーバーへ「入れるかどうか」を決める入り口の権限です。

  • 設定場所:各ファイルサーバーの共有設定
  • 指定できる権限の種類:フルコントロール・変更・読み取りの 3 種類。SMB 権限と NTFS 権限が両方設定されている場合、より制限の厳しい方が適用されます。

参考:Microsoft Learn「共有フォルダーのアクセス許可の管理」

SMB 共有権限は、フォルダを右クリック → プロパティ → 「共有」タブ → 「詳細な共有」から設定できます。

実際の構築では、フォルダごとに手動で設定するのではなく、グループポリシー(GPO)を使って複数サーバーへ SMB 共有を一括で作成・設定できます。

次回以降の記事で、実機での構築手順とあわせてご紹介します。

② NTFS アクセス権

ファイルシステムのプロパティ(セキュリティタブ)から設定する、データそのものに対する権限です。

  • 役割:「読み取り」「書き込み」「削除」などの絶対的な権限を定義する
  • 指定できる権限の種類:フルコントロール・変更・読み取りと実行・フォルダの内容の一覧表示・読み取り・書き込み・特殊なアクセス許可の 7 種類
  • 適用範囲:ネットワーク越しのアクセスだけでなく、サーバーへ直接ログオンした際にも適用される
  • 実務での設計:部署ごとのアクセス制限は NTFS 権限で制御するのが標準的

NTFS アクセス権は、フォルダを右クリック → プロパティ → 「セキュリティ」タブから設定できます。

複数の DFS レプリカサーバーに同じ NTFS 権限を適用する場合、GPO を使った集中管理が有効です。

こちらの具体例も、次回の構築編で併せて解説します。


DFS 環境でのデータ重複排除

DFS 環境では、Windows Server の「データ重複排除(Data Deduplication)」機能を併用できます。DFS 自体の機能ではなく、Windows Server の機能との組み合わせです。

重複排除を有効にしても、ファイルの実体は変わらないため DFS-R のレプリケーションはトリガーされません。各レプリカサーバーで個別に重複排除を有効化できます。

参考:Microsoft Learn「データ重複除去の相互運用性」


まとめ

この記事では DFS の基礎として以下を解説しました。

  • DFS は 2 つのコンポーネントで構成:DFS-N(名前空間)でアクセスを仮想化し、DFS-R(レプリケーション)でデータを複数サーバー間で同期する
  • マルチサイト環境での自動ルーティング:① DNS 解決→② 最適な DC の特定(DC Locator)→③リフェラル要求→④ AD サイト情報に基づく応答→⑤ファイルサーバーへ直接 SMB 接続という 5 ステップで動作する
  • DFS-R はマルチマスター方式:全サーバーが対等に同期し合い、削除は全拠点に伝播する
  • 競合は Last Writer Wins:同時更新の競合はファイルシステムレベルで最後に保存した内容が優先される
  • 権限は SMB+NTFS の二重構造:DFS 自体は権限を持たず、実サーバーの SMB 権限と NTFS 権限が適用される

次回の記事では、実際に AWS EC2 環境で Active Directory を構築し、DFS をインストールする手順を解説します。