Настройка DFSN

Эллес поддерживает функциональность Distributed File System Namespaces (DFSN), предоставляя инструменты для работы с пространствами имен и их метаданными, а также обработки запросов клиентов и выдачи им перенаправлений на ресурсы общего доступа.

См. описание доступных подкоманд samba-tool в разделе «Администрирование DFSN».

Общие сведения

Технология DFSN предоставляет единое виртуальное представление для папок общего доступа, размещенных на разных файловых серверах. Конечный пользователь обращается к ресурсам в этом виртуальном представлении, не зная их фактического расположения. Виртуальное представление формируется в виде пространства имен.

Существуют два типа пространств имен:

Доступ пользователей к ресурсам в пространствах имен осуществляет через обслуживающие их серверы DFSN.

Пространство имен состоит из папок, представляющих собой ссылки на целевые папки, в которых хранятся каталоги и файлы. Одна папка может указывать на несколько целевых папок, расположенных на разных файловых серверах. В этом случае клиент получает оптимальный вариант доступа: либо подключение к ближайшему файловому серверу с точки зрения сетевой топологии и доступности, либо равномерное распределение нагрузки между доступными файловыми серверами.

Для оптимального доступа к целевым папкам используется механизм формирования перенаправлений (реферальных ссылок). При обращении к папке сервер пространства имен возвращает клиенту список доступных целевых ресурсов. Конечный ресурс выбирается с учетом доступности, принадлежности к сайту в соответствии с топологией сети, настройками приоритета и стоимости межсайтовых связей.

Обмен данными при работе DFSN выполняется по протоколу SMB2.

Автономные пространства имен

Автономное пространство имен обслуживается одним сервером DFSN. Все запросы клиентов на доступ к общим папкам обрабатываются этим сервером напрямую, без взаимодействия с контроллерами домена. Метаданные пространства имен в службе каталогов не сохраняются.

standalone namespace
Рис. 1. Схема доступа клиента к общей папке в автономном пространстве имен

Порядок взаимодействия:

  1. Клиент отправляет запрос по протоколу SMB2 на сервер DFSN, используя UNC-имя вида \\<FQDN сервера DFSN>\<пространство имен>\<имя папки> (например, \\dfsnserver01.elles.inno.tech\namespace1\documents). Сервер DFSN возвращает список доступных целевых ресурсов, отсортированный в порядке уменьшения доступности.
    Например, если клиент и файловый сервер 2 находятся в одном сайте, а файловый сервер 1 — в другом, то первым в списке будет \\fileserver2.elles.inno.tech\documents, а вторым — \\fileserver1.elles.inno.tech\documents.

  2. Клиент направляет запрос по протоколу SMB2 на выбранный целевой файловый сервер для доступа к общей папке.
    Например, для папки documents запрос будет направлен на \\fileserver2.elles.inno.tech\documents.

Клиенты используют кэширование: при повторных обращениях к общей папке по имени пространства имен запросы на сервер DFSN могут не выполняться, а доступ происходит напрямую к целевому файловому серверу.

Доменные пространства имен

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

Метаданные доменного пространства имен хранятся в контейнере DFS-Configuration, расположенном в объекте System доменного раздела.

Пример:

CN=Namespace1,CN=Namespace1,CN=Dfs-Configuration,CN=System,DC=elles,DC=inno,DC=tech

Объект метаданных пространства содержит:

  • информацию об общих папках (каждая папка может ссылаться на несколько целевых ресурсов);

  • сведения о целевых папках на файловых серверах.

domain based namespace
Рис. 2. Схема доступа клиента к общей папке в доменном пространстве имен

Порядок взаимодействия:

  1. Клиент обращается к общей папке по UNC-имени вида \\<FQDN ресурсного домена>\<пространство имен>\<имя папки> (например, \\elles.inno.tech\namespace1\documents).
    Если в кэше клиента нет актуальных данных о сервере DFSN, выполняется запрос по протоколу SMB2 к контроллеру домена для поиска оптимального сервера DFSN.
    В ответ возвращается список серверов DFSN, отсортированный по оптимальности. Клиент выбирает первый в списке и кэширует его.

  2. Клиент отправляет запрос по протоколу SMB2 выбранному серверу DFSN с путем к общей папке.

  3. Если у сервера DFSN нет кэшированных данных о целевых файловых серверах, он выполняет запрос по протоколу LDAP к контроллеру домена для получения метаданных пространства имен. Запрошенные данные сохраняются в кэше сервера.

  4. Клиент отправляет запрос по протоколу SMB2 на целевой файловый сервер (например, для папки documents запрос будет направлен на \\fileserver2.elles.inno.tech\documents).

Дополнительно при поиске сервера DFSN клиент взаимодействует с контроллерами домена:

  1. Если доменное имя ресурса отсутствует в кэше, клиент выполняет запрос по протоколу SMB2 к текущему контроллеру домена для поиска домена ресурса.
    В ответ возвращается список доменов в текущем и доверенных лесах.

  2. Если контроллер домена ресурса отсутствует в кэше, клиент выполняет запрос по протоколу SMB2 к текущему контроллеру домена для поиска контроллера в домене ресурса.
    В ответ сначала возвращаются контроллеры в сайте клиента, затем — в других сайтах с учетом приоритета; если приоритет не задан, внутри сайта порядок случайный.

  3. Если сервер DFSN в домене ресурса отсутствует в кэше, клиент выполняет запрос по протоколу SMB2 к найденному контроллеру домена.
    В ответ сначала перечисляются серверы DFSN в сайте клиента, а затем — в других сайтах с учетом приоритета; если приоритет не задан, внутри сайта порядок случайный.

Ограничения

В текущей версии Эллес:

  • по умолчанию работа ведется с доменными пространствами имен в режиме Windows Server 2008;

  • не обеспечивается синхронизация содержимого между целевыми папками;

    Для этой цели должны использоваться сторонние инструменты (см., например, описание способов настройки синхронизации каталога SYSVOL в разделе «Репликация каталога SYSVOL»).

  • поддерживается только одноуровневая модель именования общего ресурса (share);

    Имя любого общего ресурса должно быть одного уровня вложенности: оно не должно содержать разделителей (\), то есть путь к ресурсу на сервере должен быть плоским, без подкаталогов.

    Пример допустимого пути:

    \\server\shared_folder

    Пример недопустимого пути (содержит вложенные сегменты, что выходит за пределы поддерживаемой модели):

    \\server\shared\folder\subfolder

    Фактически каждый общий ресурс интерпретируется как конечная точка пространства имен, а не как путь. Попытка использовать вложенную структуру приведет к некорректной работе пространства имен или отказу при создании объекта.

  • корневой общий ресурс (root target share) используется исключительно для хранения служебных метаданных.

    Корневой каталог пространства имен (например, \\elles.inno.tech\dfsroot) является системным контейнером и не предназначен для хранения пользовательских данных.

    Текущая реализация не обеспечивает сохранность файлов, размещенных непосредственно в корне пространства имен. При изменении конфигурации DFSN (добавление/удаление папок, изменение структуры) или при перезапуске сервиса inno-samba содержимое корневого каталога может быть полностью перезаписано или очищено.

    Пример недопустимой структуры:

    \\elles.inno.tech\dfsroot\
      ├── file1.txt (запрещено!)
      └── file2.txt (запрещено!)

    Размещение пользовательских файлов в корне пространства имен приводит к их безвозвратной потере и рассматривается как нарушение модели эксплуатации DFSN в реализации Эллес.

Предварительные требования

Для успешной настройки пространства имен DFSN должны быть выполнены следующие требования:

  1. Сервер Эллес введен в домен в роли контроллера домена.

  2. Клиенты введены в домен и корректно разрешают DNS-имена серверов, которые будут использоваться в качестве серверов пространства имен, и файловых серверов, где размещаются целевые папки.

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

    • права локального администратора на сервере Эллес, на котором будет выполняться настройка;

    • при настройке доменного пространства имен — права доменного администратора (член группы Domain Admins).

  4. На файловых серверах созданы и настроены общие папки с требуемым набором разрешений.

Настройка работы Эллес в роли сервера DFSN

Если требуется, чтобы экземпляр Эллес в роли сервера DFSN обслуживал пространство имен, выполните следующие действия по настройке:

  1. Подготовьте на сервере корневой каталог пространства имен и задайте требуемые разрешения. Например:

    sudo mkdir -p /srv/elles/dfsroot
    sudo chown root:root /srv/elles/dfsroot
    sudo chmod 0755 /srv/elles/dfsroot
  2. Добавьте корневой каталог в конфигурационный файл Эллес smb.conf:

    [global]
        ...
        host msdfs = yes (1)
        ...
    [dfsroot]
        comment = DFS namespace root
        path = /srv/elles/dfsroot (2)
        msdfs root = yes (3)
        ...

    Описание параметров в примере:

    1 Включение поддержки функциональности DFSN на сервере Эллес (значение по умолчанию). Эллес работает в роли сервера пространства имен DFSN с корневым каталогом, указанным в параметре path в комбинации с параметром msdfs root = yes, и отвечает на запросы клиентов к ресурсам общего доступа.
    2 Путь в файловой системе сервера, к которому привязан общий ресурс.
    3 Признак того, что описываемый в разделе общий ресурс является корневым каталогом пространства имен DFSN.
  3. Проверьте корректность внесенных изменений:

    samba-tool testparm

Внесенные в конфигурацию изменения применяются автоматически через 5 секунд после сохранения файла smb.conf.

Настройка пространства имен

Чтобы настроить пространство имен:

  1. Создайте корневой каталог пространства имен:

    samba-tool dfsn root create "\\\\<domain_name>\\<namespace_name>" "\\\\<target_host>\\<target_path>"

    В подкоманде:

    • domain_name — имя домена, в котором настраивается пространство имен;

    • namespace_name — имя пространства имен;

    • target_host — NetBIOS-имя или полное доменное имя сервера, который будет обслуживать пространство имен;

    • target_path — путь к каталогу на сервере, в котором будут размещаться ссылки на общие ресурсы.

    Например:

    samba-tool dfsn root create "\\\\elles.inno.tech\\namespace1" "\\\\dc01.elles.inno.tech\\dfsroot"
  2. Убедитесь, что пространство имен создано корректно. Например:

    samba-tool dfsn root get "\\\\elles.inno.tech\\namespace1"
  3. Добавьте при необходимости другие серверы для обслуживания пространства имен. Например:

    samba-tool dfsn root target create "\\\\elles.inno.tech\\namespace1" \
        "\\\\dc02.elles.inno.tech\\dfsroot"
  4. Создайте папки. Например:

    samba-tool dfsn folder create "\\\\elles.inno.tech\\namespace1\\documents" \
        "\\\\fs01.elles.inno.tech\\documents"
  5. Добавьте целевые папки. Например:

    samba-tool dfsn folder target create "\\\\elles.inno.tech\\namespace1\\documents" "\\\\fs02.elles.inno.tech\\documents"
  6. Убедитесь, что запросы клиентов к ресурсам в пространстве имен выполняются успешно.

  7. При необходимости настройте разрешения, определяющие видимость папки в пространстве имен для пользователей и групп, с помощью подкоманд samba-tool dfsn access.
    Например, чтобы назначить разрешения, используйте подкоманду samba-tool dfsn access grant:

    samba-tool dfsn access grant "\\\\elles.inno.tech\\namespace1\\documents" "ELLES\\User1","ELLES\\Group1"
    См. подробнее в подразделе «Управление доступом».

Настройка кэширования на контроллере домена Эллес

Кэширование используется для хранения в памяти контроллера домена Эллес часто запрашиваемых данных о доменах, контроллерах доменов, серверах пространств имен, сайтах и метаданных пространств имен. Это снижает задержки при обращении клиентов к ресурсам в доменных пространствах имен.

Все кэши заполняются данными от контроллера домена с FSMO-ролью PDC Emulator или от другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен.

Обновление кэшей выполняется:

  • при запуске и перезапуске службы smbd;

  • периодически — с интервалом, заданным соответствующим параметром smbd:<имя_кэша>_refresh_interval_s;

  • для некоторых кэшей — дополнительно при изменении соответствующих данных.

Параметры настраиваются в разделе global файла smb.conf.

Кэш доменных имен (Domain Name Referral Cache, DNRC)

Содержит NetBIOS- и DNS-имена:

  • локального домена;

  • всех доверенных доменов текущего леса;

  • доменов в доверенных лесах.

Используется для определения доменов, в которых клиент имеет доступ к общим ресурсам в пространствах имен (см. схему маршрутизации).

Параметр, задающий интервал обновления: smbd:dnrc_refresh_interval_s.

Значение по умолчанию: 12 часов (43200 секунд).

Пример изменения значения в smb.conf:

[global]
      ...
      smbd:dnrc_refresh_interval_s = 28800
      ...

Кэш контроллеров домена (Domain Controller Referral Cache, DCRC)

Содержит NetBIOS- и DNS-имена контроллеров доменов для доменов из кэша доменных имен.

Используется для определения контроллеров домена, которые могут выдать клиенту перенаправления на серверы, обслуживающие пространство имен, где размещается запрошенный клиентом ресурс (см. схему маршрутизации).

Параметр, задающий интервал обновления: smbd:dcrc_refresh_interval_s.

Значение по умолчанию: 10 минут (600 секунд).

Пример изменения значения в smb.conf:

[global]
      ...
      smbd:dcrc_refresh_interval_s = 1200
      ...

Кэш серверов домена (Domain Server Referral Cache, DSRC)

Содержит NetBIOS- и DNS-имена серверов — хостов пространств имен для доменов из кэша доменных имен.

Используется для определения серверов, обслуживающих пространство имен, где размещается запрошенный клиентом ресурс (см. схему взаимодействия).

Параметр для настройки интервала обновления отсутствует.

Записи удаляются:

  • если не обновлялись более 5 минут (300 секунд);

  • количество записей для серверов с известным доменом превышает 1000;

  • количество записей для серверов без определенного домена превышает 1000.

Удаляется запись с самым ранним временем обращения (наиболее устаревшая запись).

Кэш подсетей сайтов (Subnet Site Cache, SSC)

Сопоставляет корневые серверы пространств имен и контроллеры домена с сайтами на основе IP-адресов.

Используется для определения сайта, где находится корневой сервер пространства имен или контроллер домена, который может выдать клиенту перенаправление на сервер, обслуживающий пространство имен с запрошенным клиентом ресурсом (см. схему взаимодействия).

Параметр, задающий интервал обновления: smbd:ssc_refresh_interval_s.

Значение по умолчанию: 12 часов (43200 секунд).

Пример изменения значения в smb.conf:

[global]
      ...
      smbd:ssc_refresh_interval_s = 28800
      ...

Кэш сайтов клиентов (Client Site Cache, CSC)

Сопоставляет клиентов (компьютеры или пользователи) с сайтами на основе IP-адресов и сетевых атрибутов.

Используется для определения оптимального сервера для обслуживания запроса с учетом расположения клиента (см. схему маршрутизации).

Параметр для настройки интервала обновления отсутствует.

Записи удаляются:

  • если не обновлялись более 5 минут (300 секунд);

  • количество записей для клиентов с известным сайтом превышает 1000;

  • количество записей для клиентов без определенного сайта превышает 1000.

Удаляется запись с самым ранним временем обращения (наиболее устаревшая запись).

Кэш стоимости маршрутов между сайтами (Site Cost Cache, SCC)

Хранит информацию о стоимости маршрутов между сайтами.

Используется для определения оптимального сервера для обслуживания запроса с учетом расположения клиента (см. схему маршрутизации).

Параметр, задающий интервал обновления: smbd:scc_refresh_interval_s.

Значение по умолчанию: 12 часов (43200 секунд).

Пример изменения значения в smb.conf:

[global]
      ...
      smbd:scc_refresh_interval_s = 28800
      ...

Кэш метаданных (Metadata Cache)

Содержит информацию о пространствах имен, обслуживающих их серверах, папках, целевых папках и настройках, определенных в пространствах имен.

Используется при непосредственной обработке запроса клиента (см. схему взаимодействия).

Параметр, задающий интервал обновления: smbd:mc_refresh_interval_s.

Значение по умолчанию: 1 час (3600 секунд).

Пример изменения значения в smb.conf:

[global]
      ...
      smbd:mc_refresh_interval_s = 1800
      ...

Сводная таблица кэшей DFSN на контроллере домена Эллес

Кэш Назначение Что хранит Где используется Параметр обновления Интервал по умолчанию /
ограничения

Domain Name Referral Cache
(DNRC)

Определение домена, где расположен ресурс

NetBIOS- и DNS-имена локального домена, доверенных доменов леса и доверенных лесов

Выбор домена

smbd:dnrc_refresh_interval_s

12 ч (43200 с)

Domain Controller Referral Cache
(DCRC)

Выбор контроллера домена

Список контроллеров для доменов из DNRC

Выдача клиенту перенаправления на контроллер домена

smbd:dcrc_refresh_interval_s

10 мин (600 с)

Domain Server Referral Cache
(DSRC)

Выбор сервера пространства имен DFSN

Серверы — хосты доменных пространств имен DFSN

Определение сервера, обслуживающего пространство имен

Отсутствует

Ограничения:

  • время нахождения записи в кэше — 5 мин (300 с);

  • количество записей для серверов с известным доменом — 1000;

  • количество записей для серверов без определенного домена — 1000

Subnet Site Cache
(SSC)

Привязка серверов и контроллеров домена к сайтам

Соответствие IP → сайт для контроллеров домена и корневых серверов DFSN

Выбор сервера с учетом сайта

smbd:ssc_refresh_interval_s

12 ч (43200 с)

Client Site Cache
(CSC)

Привязка клиента к сайту

Соответствие клиент → сайт

Выбор оптимального сервера для клиента

Отсутствует

Ограничения:

  • время нахождения записи в кэше — 5 мин (300 с);

  • количество записей для клиентов с известным сайтом — 1000;

  • количество записей для клиентов без определенного сайта — 1000

Site Cost Cache
(SCC)

Учет стоимости маршрутов между сайтами

Стоимости маршрутов между сайтами

Маршрутизация между сайтами

smbd:scc_refresh_interval_s

12 ч (43200 с)

Metadata Cache
(MC)

Обработка структуры пространства имен DFSN

Пространства имен, серверы, папки, целевые папки, настройки

Непосредственная обработка запроса

smbd:mc_refresh_interval_s

1 ч (3600 с)

Обновление кэшей при отсутствии данных

Запрос данных из кэша может приводить к следующим результатам:

  • кэш пуст — в этом случае вызывается функция обновления кэша и запрос повторяется;

  • кэш не пуст, но запрашиваемых данных в нем нет — в зависимости от состояния флага, контролируемого параметром конфигурации dfs:refresh_cache_on_cache_miss:

    • если флаг установлен (dfs:refresh_cache_on_cache_miss = yes), вызывается функция обновления кэша и запрос повторяется;

    • если флаг не установлен (dfs:refresh_cache_on_cache_miss = no; по умолчанию), запрос завершается ошибкой.

Чтобы установить флаг, добавьте параметр dfs:refresh_cache_on_cache_miss со значением yes в раздел global в конфигурационном файле smb.conf:

[global]
      ...
      dfs:refresh_cache_on_cache_miss = yes
      ...

Чтобы вернуться к поведению по умолчанию, удалите параметр из файла smb.conf или задайте в нем значение no.

Отключение функциональности DFS

По умолчанию на сервере Эллес функциональность DFS, частью которой является реализация DFSN, включена.

Чтобы отключить ее, добавьте параметр host msdfs со значением no в раздел global в конфигурационном файле smb.conf:

[global]
      ...
      host msdfs = no
      ...

Для применения изменения требуется перезагрузить сервис inno-samba.

Чтобы вернуться к поведению по умолчанию, удалите параметр из файла smb.conf или задайте в нем значение yes.

В случае отключения функциональности DFS (host msdfs = no) на сервере Эллес:

  • перестанет работать:

    • пространства имен DFS (автономные и доменные);

    • перенаправление клиентов на другие ресурсы DFS (механизм DFS referrals);

    • DFS-ссылки вида msdfs:server\share;

    • обслуживание объектов msDFS-Linkv2 (если сервер функционирует в роли контроллера домена);

  • продолжит работать:

    • обычные SMB-ресурсы (\\server\share);

    • SYSVOL;

    • репликация SYSVOL сторонними средствами (rsync и др.);

    • все функции контроллера домена, кроме DFS.

Чтобы вернуться к поведению по умолчанию, удалите параметр из файла smb.conf или задайте в нем значение no.

Настройка серверов пространства имен

Серверы пространства имен DFSN поддерживают ряд глобальных параметров.

Настройка выполняется в конфигурационном файле Эллес smb.conf и применяется на уровне сервера.

В текущей версии Эллес доступны следующие параметры:

  • dfs:use_fqdn — определяет формат сохранения имен в новых объектах (namespace targets и folder targets); возможные форматы — FQDN или NetBIOS;

  • dfs:prefer_logon_dc — определяет, следует ли отдавать приоритет целевому ресурсу, размещенному на контроллере домена, через который клиент аутентифицировался в домене (контроллер домена входа), при формировании перенаправлений (реферальных ссылок).

Оба параметра являются глобальными (раздел global в smb.conf), имеют логический тип и по умолчанию установлены в no.

Для применения изменений в их значениях требуется перезапустить сервис inno-samba.

Формат имени

По умолчанию при сохранении имен в новых объектах (namespace targets и folder targets) используются NetBIOS-имена.

В некоторых средах (например, в средах с несколькими доменами, при наличии DNS-маршрутизации или при отсутствии поддержки NetBIOS) может потребоваться использовать полные доменные имена (FQDN).

Чтобы использовать FQDN вместо NetBIOS-имен:

  1. Добавьте параметр dfs:use_fqdn со значением yes в раздел global в конфигурационном файле smb.conf:

    [global]
          ...
          dfs:use_fqdn = yes
          ...
  2. Сохраните файл конфигурации и перезапустите сервис inno-samba.

Чтобы вернуться к поведению по умолчанию, удалите параметр из файла smb.conf или задайте в нем значение no.

При использовании значения yes необходимо обеспечить корректную работу DNS-разрешения для всех FQDN, включаемых в перенаправления (реферальные ссылки). В случае некорректной настройки DNS клиенты не смогут разрешать имена серверов и устанавливать подключения к целевым ресурсам.

Приоритет контроллера домена входа

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

Это позволяет:

  • снизить межсайтовый сетевой трафик;

  • повысить производительность в распределенных инфраструктурах;

  • обеспечить более предсказуемое поведение клиентов при выборе целевого ресурса.

Чтобы при формировании списка перенаправлений сервер пространства имен DFSN ставил первым в списке целевой ресурс на контроллере домена, через который клиент аутентифицировался в домене:

  1. Добавьте параметр dfs:prefer_logon_dc со значением yes в раздел global в конфигурационном файле smb.conf:

    [global]
          ...
          dfs:prefer_logon_dc = yes
          ...
  2. Сохраните файл конфигурации и перезапустите сервис inno-samba.

Чтобы вернуться к поведению по умолчанию, удалите параметр из файла smb.conf или задайте в нем значение no.