Распределенная файловая система DFS (Distributed File System) используется в сетях Microsoft для удобства организации доступа к общим сетевым папкам (файловым ресурсам), и (опционально) репликации данных между серверами. DFS позволяет объединить разрозненные сетевые папки, хранящиеся на разных файловых серверах в общую структуру, которая для пользователей выглядеть как единое виртуальное дерево каталогов, доступное по общему UNC пути. Даже при изменении физического местоположения целевой папки, это не повлияет на доступ пользователей к ней.
Реализация DFS в Windows Server основана на двух службах:
- DFS namespace – служба для объединения файловых ресурсов с разных серверов в единое логическое пространство имен DFS. Каждое пространство имен для пользователя выглядит как сетевая папка с подпапками. Пространство имен DFS может содержать сетевые папки с разных серверов, физическая структура и местоположение которых скрыто от пользователей.
- DFS Replication – служба позволяет организовать репликацию (синхронизацию) файлов между папок на серверах в пространстве имен DFS с целью организации высокой доступности и согласованности файлов. При изменении файла на одном из серверов, репликация DFS передает партнерам только измененные части файла.
В этой статье мы покажем, как настроить DFS и репликацию в Windows Server 2025 (в предыдущих версиях Windows Server все настраивается аналогично).
Установка DFS и создание пространства имен DFS в Windows Server
Служба DFS namespace доступна во всех редакция Windows Server. Установить ее можно через консоль Server Manager (File and Storage Services -> File and iSCSI Services -> DFS Namespace) или с помощью PowerShell:
Install-WindowsFeature FS-DFS-Namespace, RSAT-DFS-Mgmt-Con

После установки роли можно создать новое пространство имен DFS
- Откройте консоль управления DFS (
dfsmgmt.msc
). - Щелкните New Namespace в правой панели Actions

- Укажите имя сервера, который будет содержать пространство имен DFS (это может быть как контроллер домена, так и рядовой сервер).

- Укажите имя пространства имен (оно будет исопльзоватся для доступа клиентами). Например Public.
- Нажмите кнопку Edit Settings и настройте права доступа к корневому каталогу пространства имен. Обычно тут указывается, что доступ к сетевой папке разрешен Всем (Everyone), в этом случае фактические права доступа проверяются на уровне файловой системы NTFS. Также здесь указывается локальный путь к каталогу DFS (по умолчанию C:DFSRootsPublic).

- Далее нужно выбрать тип пространства имен. Это может быть Domain-based namespace (доменное пространство имен) или Stand-alone namespace (отдельное пространство имен). Domain-based namespace обладает ряд преимуществ, но для его работы нужен, собственно домен Active Directory и права администратора домена (либо наличие делегированных прав на создание доменных пространств имен DFS).

Для доступа к Stand-alone DFS namespace используется имя сервера
\ServerNamePublic
, а для доступа к доменному DFS нужно указывать имя домена (
\DomainNamePublic
).
Чтобы пользователи при доступе к DFS каталогу видели только те папки, к которым у них есть доступ, откройте свойства нового пространства и включите опцию Enable access based enumeration for this namespace (подробнее о Access-Based Enumeration в Windows).

Вывести все корневые DFS namespace в домене:
dfsutil domain winitpro.ru

Добавим новую сетевую папку в иерархию созданного ранее DFS namespace:
- Выберите его в консоли и щелкните New Folder

- Укажите название нового каталога и его фактический путь к нему (в формате UNC)

Проверьте, что теперь добавленный сетевой каталог доступен пользователям из проводника Windows через пространство имен DFS:
\winitpropublicDocs

Пользователи могут открывать файлы из каталога, добавленного в DFS, не зная на каком сервере они находятся фактически. Такой сетевой каталог пользователи могут подключить в виде сетевого диска по его пути в DFS.
Для повышения отказоустойчивости и доступности пространства имен DFS в него можно добавить дополнительные сервер (Add Namespace Server).
Настройка DFS репликации в Windows Server
С помощью репликации DFS-R можно организовать синхронизацию содержимого сетевых папок в пространстве имен DFS между серверами и высокую доступность (в случае недоступности одного из серверов, клиенты автоматически перенаправляются на сервер-реплику). Также в сценариях с филиалами это позволяет обеспечивать пользователям доступ к актуальным версиям файлов, синхронизированных из головного офиса и уменьшать нагрузку на WAN каналы.
На всех серверах, которые будут участвовать в группе репликации DFS нужно установить роль FS-DFS-Replication:
Install-WindowsFeature FS-DFS-Replication, RSAT-DFS-Mgmt-Con
В консоли DFS Managment выберите нужный вам DFS Namespace, щелкните ПКМ по каталогу, для которого хотите создать реплику и выберите Add Folder Target. 
Укажите полный (UNC) путь к сетевому каталогу другого сервера, в котором будет храниться реплика.

На вопрос хотите ли вы создать группу репликации отвечаем Yes.

Запустится мастер настройки репликации. Проверьте имя группы репликации и каталог.

Выберите primary сервер, который будет источником данных при инициальной (первичной) репликации.

Выберите тип топологии (соединения) между членами группы репликации. В нашем примере выбираем Full Mesh (все со всеми).

Затем можно указать расписание репликации и нужно ли включать ограничение на максимально доступную полосу для трафика репликации DFS (bandwidth throttling). В современных интерсетях, даже соединенных через WAN каналы, как правило можно оставить постоянную репликацию с использование всей доступной полосы.

Если нужно, настроить расписание репликации и максимальную полосу пропускания, можно задать в настройках группы репликации в ветке Replication.

Подождите некоторое время, чтобы прошла первоначальная репликация на другие сервера группы DFS репликации. Либо выполните команду для принудительного запуска репликации:
Sync-DfsReplicationGroup -GroupName "wintpro.rupublicdocs" -SourceComputerName "w-fs01" -DestinationComputerName "s-fs02" -DurationInMinutes 15
Служба DFS репликации может игнорировать некоторые файлы. Как правило, не нужно реплицировать временные файлы приложений, которые создаются программами. Откройте свойства DFS папки на вкладке Replicated Folder. Обратите внимание, что по умолчанию включен фильтр для файлов с расширениями
~*, *.bak, *.tmp.
Вы можете отредактировать этот список и добавить свои типы файлов, которые нужно исключать из репликации DFS.

Обратите внимание, что в корне каждой DFS папки на диске появляется скрытый каталог DFSRPrivate. Этот системный каталог, в котором хранятся внутренние данные и метаданные репликации DFS.

Здесь находятся такие служебные папки, значение которых нужно знать администратора DFS:
- Staging – временное хранилище для файлов, которые находятся в процессе репликации. Размер этой папки по умолчанию 4Гб. Квота создается в настройках DFS папки на вкладке Staging. Если размер файла для репликации больше, чем квота Staging, такой файл будет передан в несколько этапов.

- PreExisting — файлы, которые уже существовали в папке до начала репликации и были сохранены системой
- ConflictAndDeleted – содержит удалённые и конфликтные с точки зрения репликации файлы. В эту папку перемещаются файлы, когда несколько пользователей изменили один и тот же файл. Файл в DFS пересматривается последней версией, а более старая версия отправляется в папку ConflictAndDeleted, откуда ее может восстановить администратор.
- Delete – содержит удаленные объекты
Кроме Event Viewer (Applications and Services Logs -> DFS Replication), логи службы DFS можно найти в папке
%windir%debugDFSR*.log
.
Рассмотрим полезные команды для мониторинга и получения статуса репликации:
Вывести информацию о файлах, которые находятся в процесс репликации DFS:
Get-DfsrState -ComputerName SRV02 | FT FileName,UpdateState,Inbound, SourceComputerName

Статистику по очередям репликации DFS:
dfsrdiag replicationstate /all
количество файлов, которые находятся в процессе репликации между серверами:
Get-DfsrBacklog -SourceComputerName SRV01 -DestinationComputerName SRV02| select FileName,FullPathName
dfsrdiag backlog /SMem:SRV01 /RGName:Rep_Folder /RFName:share /RMem:SRV02
Если один из партнёров по репликации находится более 60 дней офлайн, после возвращения его в сеть репликация автоматически не восстановится. На нем появится ошибка с кодом 4012, указывающий что превышен максимальный срок и нужно вывести сервер из группы репликации. Чтобы не выводить его из DFS, можно увеличить срок в параметре MaxOfflineTimeInDays.
DFS репликация хороша для редко изменяемых файлов или когда только один сервер активный (а остальные read-only), поскольку в таких сценариях снижается риск конфликтов и проблем с синхронизацией. При частых параллельных изменениях одного файла на нескольких серверах возможны конфликты, которые трудно корректно разрешить автоматическими средствами DFS.