· 16 мин чтения

DFS Namespaces и Replication в Windows Server: что мы делаем у клиентов

DFS Namespaces и Replication в Windows Server: что мы делаем у клиентов

Привет! Я Семёнов Евгений Сергеевич, руководитель АйТи Фреш. Мы сегодня разберёмся с Distributed File System (DFS). Знаете, это та технология, о которой многие слышали, но, по нашему опыту, далеко не каждый умеет её настроить как следует. Мой стаж в профессии – 15 лет. За это время я внедрил DFS у пары десятков клиентов: от небольших фирм на 10 человек до крупных распределённых компаний с тремя филиалами, раскиданными по разным городам. В этой статье поделюсь только своим практическим опытом: какие задачи DFS решает, как правильно спроектировать пространство имён и репликацию. И, самое главное, расскажу, на какие типичные ошибки чаще всего наступают начинающие администраторы.

Зачем вообще DFS, если есть просто шары?

Знаете, чаще всего мне говорят: «Да у нас уже есть файловый сервер, и всё прекрасно работает». И, честно говоря, я соглашусь. Для маленького офиса на 5 человек DFS, пожалуй, действительно ни к чему. Но что происходит, когда вдруг появляется второй сервер? Или открывается новый офис? А может, вам нужно перенести огромную шару с одной машины на другую, не останавливая работу ни на минуту? Вот тут-то без DFS становится, мягко говоря, очень неудобно. И даже больно!

Что DFS даёт на практике:

Архитектура DFS: что под капотом

Итак, технически DFS — это две независимые роли. Часто они, конечно, работают рука об руку:

Обычно, в типовых проектах, мы разворачиваем Domain-based Namespace, добавляя к нему два-три DFSR-таргета. Standalone? Эту конфигурацию я использую, только если клиент категорически против Active Directory. А такое в 2026 году, вы же понимаете, бывает ну очень редко.

Что нужно перед установкой DFS

Чек-лист, без которого я не начинаю:

  1. Нам нужна Active Directory. Причём, с уровнем функциональности леса 2008 R2 или выше — это критично для DFSR, особенно если объектов много.
  2. Потребуется минимум один сервер 2019/2022 года на роль Namespace Server. Но знаете что? Мы всегда советуем ставить два или даже три. Зачем? Для надёжной отказоустойчивости — так спокойнее.
  3. Не обойтись без серверов-таргетов. Им требуется дисковое пространство под сами данные, и обязательно заложите ещё 20% запаса на staging area DFSR. Это просто необходимо для стабильной работы.
  4. Стабильное сетевое подключение между серверами — это база. А если у вас есть филиалы с медленными каналами? Тогда обязательно, просто обязательно настройте ограничение полосы пропускания для DFSR. Причём по расписанию, чтобы не мешать днём.
  5. Очень важно чётко понимать объёмы. Сколько файлов у вас вообще есть? Каков их средний размер? Как часто они меняются? И что не менее важно, кто и откуда с ними работает? Ответьте на эти вопросы.
  6. Крайне важно решить вопрос с правами NTFS ЗАРАНЕЕ. Многие забывают: DFS их вообще не трогает! Права остаются ровно такими, какими были на исходных шарах. Так что, это ваша зона ответственности.

Установка DFS Namespaces и DFS Replication

На Windows Server 2022 DFS ставится как через Server Manager, так и через PowerShell. Последний вариант, кстати, намного быстрее:

# На сервере, который будет Namespace Server
Install-WindowsFeature -Name FS-DFS-Namespace -IncludeManagementTools

# На серверах, которые будут хранить данные
Install-WindowsFeature -Name FS-DFS-Replication -IncludeManagementTools

# Проверяем установленные роли
Get-WindowsFeature -Name FS-DFS-* | Where-Object Installed

Никакой перезагрузки не требуется, обе роли поднимаются на горячую. Дальше открываем DFS Management (dfsmgmt.msc) и начинаем создавать пространство имён.

Создание Domain-based Namespace

Через GUI:

  1. Итак, в DFS Management ищите Namespaces, затем 'New Namespace'.
  2. Выбираем наш будущий Namespace Server. Ну, например, FS01.
  3. Указываем имя — например, Files. Получится \\company.local\Files.
  4. Выбираем Domain-based namespace и Mode 2008 (это дефолт для современных лесов, поддерживает access-based enumeration и до 50 000 папок).
  5. Всё, готово! Namespace создан. Можно приступать к добавлению папок.

То же самое через PowerShell:

# Создание domain-based namespace
New-DfsnRoot -TargetPath "\\FS01\Files" -Type DomainV2 -Path "\\company.local\Files"

# Добавляем второй namespace server для отказоустойчивости
New-DfsnRootTarget -TargetPath "\\FS02\Files" -Path "\\company.local\Files"

# Добавляем папку (link) в namespace
New-DfsnFolder -Path "\\company.local\Files\Documents" -TargetPath "\\FS01\Documents$"

# Добавляем второй target к этой папке
New-DfsnFolderTarget -Path "\\company.local\Files\Documents" -TargetPath "\\FS02\Documents$"

Настройка DFS Replication между серверами

DFSR оперирует группами репликации (Replication Group). Внутри каждой такой группы мы задаём, какие папки реплицировать и, конечно, по какому расписанию. Настроим максимально простой сценарий: репликация папки Documents между серверами FS01 в Москве и FS02 в Новосибирске.

Через DFS Management:

  1. Replication → New Replication Group.
  2. Multi-purpose replication group.
  3. Имя — DocumentsReplication.
  4. Добавляем серверы FS01 и FS02.
  5. Для двух серверов топология — только Full mesh. Это надёжно.
  6. Сперва для тестов мы даём полную полосу пропускания, чтобы всё проверить как следует, быстро и эффективно. А потом, конечно же, ограничим её до нужных параметров, чтобы не мешать основным процессам.
  7. Главным у нас будет FS01 — он выступает в роли primary member. Именно с этого сервера начнётся репликация, и все изменения будут передаваться на FS02.
  8. Папка для репликации — D:\Documents на FS01.
  9. На FS02 указываем локальный путь — D:\Documents, и оставляем Disabled на старте, чтобы первая полная репликация прошла.

Конечно, через PowerShell. Я это обычно включаю в скрипт автоматизации. Смотрите:

$RGName = "DocumentsReplication"
$Folder = "Documents"

# Создаём группу репликации
New-DfsReplicationGroup -GroupName $RGName

# Добавляем серверы
Add-DfsrMember -GroupName $RGName -ComputerName FS01,FS02

# Добавляем папку
New-DfsReplicatedFolder -GroupName $RGName -FolderName $Folder

# Указываем локальный путь на каждом сервере
Set-DfsrMembership -GroupName $RGName -FolderName $Folder -ComputerName FS01 \
    -ContentPath "D:\Documents" -PrimaryMember $true -Force

Set-DfsrMembership -GroupName $RGName -FolderName $Folder -ComputerName FS02 \
    -ContentPath "D:\Documents" -Force

# Создаём двунаправленное подключение
Add-DfsrConnection -GroupName $RGName -SourceComputerName FS01 -DestinationComputerName FS02

Расписание и ограничение полосы пропускания

Это, наверное, самый частый недочёт у админов, с которым мы сталкиваемся: запускают DFSR с full bandwidth и потом искренне удивляются, почему канал между офисами лежит. Ну а что тут непонятного? Между Москвой и регионом канал обычно, дай бог, 50–200 Мбит. Если в полночь по нему гоняются 200 ГБ изменений за день, то, конечно, утром вся контора сидит без интернета. Как иначе-то?!

Итак, как же это разрулить? Заходите в DFS Management, дальше в Replication Group, потом в Connections. Там кликаете правой кнопкой мыши и выбираете Schedule and Bandwidth. Обычно я выставляю вот такие значения:

Через PowerShell:

# Ограничить пропускную способность 16 Mbit с 9 до 19 в будни
Set-DfsrConnectionSchedule -GroupName "DocumentsReplication" \
    -SourceComputerName FS01 -DestinationComputerName FS02 \
    -ScheduleType Custom -BandwidthDetail @{
        Monday = @{Hour9_19 = 16; Hour19_24 = "Full"}
        # ... аналогично для остальных дней
    }

Как работает разрешение конфликтов

Когда один и тот же файл изменили на двух серверах одновременно, DFSR применяет правило «last writer wins». Побеждает версия с более поздним timestamp (с точностью до 100 нс). Проигравший файл не удаляется, а переименовывается с уникальным GUID и кладётся в специальную папку DfsrPrivate\ConflictAndDeleted на сервере, который этот файл проиграл.

А если вдруг понадобится восстановить ту самую «проигравшую» версию файла, это можно сделать вручную. Для этого есть утилита Conflict and Deleted Manifest:

# PowerShell: показать все конфликтные файлы
Get-DfsrPreservedFiles -ComputerName FS02 -FolderName "Documents"

# Восстановить конкретный файл
Restore-DfsrPreservedFiles -ComputerName FS02 -FolderName "Documents" \
    -FileName "Report.docx" -Path "D:\Restore"

У папки ConflictAndDeleted есть свой лимит, своя квота. Обычно это 660 МБ или 4 ГБ, зависит от размера самой реплицируемой папки. Что происходит дальше? Старые файлы просто вытесняются. Но если у клиента идёт ОЧЕНЬ активная работа с общими файлами, мы на нашей практике часто увеличиваем эту квоту до 50 ГБ. Тогда она работает как такая «короткая корзина» для экстренного восстановления, когда всё горит.

Миграция SYSVOL с FRS на DFSR

Вы не поверите, но до сих пор мне периодически попадаются домены 2003/2008, где SYSVOL реплицируется через этот древний FRS! И что самое интересное — админ боится мигрировать. Зря! Очень зря! Процедура эта давно отработана, занимает, как правило, всего один вечер. А без неё вы, между прочим, не сможете поднять функциональный уровень леса. Есть смысл оттягивать?

Шаги через dfsrmig.exe, запускать, конечно, с PDC Emulator:

# Проверяем текущее состояние
dfsrmig /getmigrationstate
# Должно быть: All Domain Controllers have migrated to the Start state (0).

# Переходим в Prepared (state 1)
dfsrmig /setglobalstate 1
# Ждём, проверяем
dfsrmig /getmigrationstate

# Когда все DC синхронизировались — Redirected (state 2)
dfsrmig /setglobalstate 2
# Ждём окончания

# Финал — Eliminated (state 3), удаляет FRS
dfsrmig /setglobalstate 3

Важный момент: между сменой состояний я всегда жду минимум 24 часа. Особенно это критично на больших доменах, чтобы все DC успели гарантированно среплицироваться. Если вдруг что-то пошло не так? Не беда. На этапах Prepared и Redirected ещё можно откатиться обратно. Но имейте в виду: после Eliminated — это точка невозврата, FRS будет удалён окончательно.

Мониторинг и диагностика DFS

На каждый DFS-сервер мы в Zabbix обязательно ставим несколько проверок. Без них никуда:

Собрал для вас список полезных команд для диагностики. Поверьте, это мой личный мастхэв, постоянно ими пользуюсь в работе.

# Проверить состояние всех DFSR-членов
Get-DfsReplicationGroup | Get-DfsrMember

# Backlog файлов между двумя серверами
Get-DfsrBacklog -GroupName "DocumentsReplication" -FolderName "Documents" \
    -SourceComputerName FS01 -DestinationComputerName FS02

# Состояние реплицируемой папки
Get-DfsrState -ComputerName FS02

# Тест разрешения путей DFSN
dfsutil /pktinfo
dfsutil diag viewdfspath \\company.local\Files\Documents

Лучшие практики, которые я вынес из 15 лет

  1. Не складывайте в DFSR файлы баз данных. SQL, 1С, Postgres — нет. DFSR не умеет реплицировать открытые файлы по дельте, и у вас будут постоянные конфликты. Для баз — Always On Availability Groups или специализированная репликация.
  2. Не реплицируйте папку Outlook OST. Файлы кэша почты по 50 GB, активно меняются, генерируют постоянный поток — убивают канал и базу DFSR.
  3. Включайте RDC только на медленных каналах. На локальной гигабитной сети RDC создаёт лишнюю нагрузку на CPU и не даёт выигрыша.
  4. Регулярно делайте Health Report. В DFS Management → Replication → Create Diagnostic Report. Пробегайте отчёт раз в месяц.
  5. Антивирус на сервере с DFSR требует исключений. Папка контента + папка DfsrPrivate + база ESE. Иначе AV открывает файлы, DFSR пытается их синхронизировать, начинаются конфликты.
  6. Защита от шифровальщиков. DFSR честно среплицирует зашифрованные файлы на все таргеты. Поэтому DFSR — это не бэкап, нужна отдельная стратегия с теневыми копиями и off-site бэкапами.
  7. Документируйте схему репликации. Через год вы забудете, какая папка куда реплицируется. Я веду в Confluence таблицу: Replication Group → Folder → Members → Schedule.

Кейс: DFS для торговой компании с 4 филиалами

В декабре 2025 года к нам обратилась крупная торговая компания. У них головной офис в Москве, плюс филиалы в Питере, Краснодаре и Екатеринбурге — в каждом по 12–18 рабочих мест. Картина до нашего прихода была типичная: каждый филиал жил на своём, отдельно стоящем файловом сервере. Документы? Обменивались ими по почте, в чатах. Итог? Куча версий одного и того же договора, и, как водится, никто не понимает, какая из них актуальная. Целая головная боль, согласитесь?

Всего за три недели мы развернули для них единую DFS-инфраструктуру. Да, именно так!

Всего через полгода эта же компания выросла до пяти филиалов. И как быстро мы справились с добавлением нового? Всего два часа! Установили таргет, добавили в namespace, дождались первой синхронизации. Никаких лишних телодвижений. А что самое приятное – на рабочих местах пользователей вообще ничего не пришлось менять!

Нужно развернуть или починить DFS у вас в офисе?

Кстати, я лично готов выехать к вам на аудит инфраструктуры в Москве, а также в радиусе 50 км от МКАД. Могу спроектировать DFS именно под ваши уникальные задачи, развернуть все Namespaces и DFSR, а при необходимости обучить ваших администраторов. И всё это – без каких-либо обязательств с вашей стороны.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по DFS

В чём разница между DFS Namespaces и DFS Replication?
Namespaces создают единое имя \\company.local\Files, за которым прячутся реальные шары на разных серверах. Replication копирует данные между серверами по дельте RDC.
Можно ли использовать DFSR без домена?
Нет, DFSR требует Active Directory. Альтернативы для рабочих групп: Robocopy с расписанием, Resilio Sync, Syncthing.
Какой максимальный размер реплицируемой папки в DFSR?
На Windows Server 2012 R2+ теоретического лимита нет. Практически 100 TB и миллион файлов работают, дальше начинаются проблемы.
Что делать при конфликте имён в DFSR?
DFSR разрешает по timestamp: побеждает более позднее изменение. Проигравший файл переименовывается и кладётся в ConflictAndDeleted.
Как мигрировать SYSVOL с FRS на DFSR?
Через dfsrmig.exe в 4 этапа: state 0 → 1 → 2 → 3. Между состояниями ждём окончания репликации.

Подпишитесь на рассылку ITfresh

Раз в неделю мы делимся реально ценными, практическими гайдами. Они будут полезны любому руководителю IT и, конечно, сисадмину. О чём пишем? Безопасность, 1С, сложные миграции, резервные копии — и, конечно, лайфхаки, взятые прямо из наших реальных проектов. То, что сам используешь каждый день.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.