Настройка 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\namespace1\documents, а вторым — \\fileserver1.elles.inno.tech\namespace1\documents.

  2. Клиент направляет запрос по протоколу SMB2 на выбранный целевой файловый сервер для доступа к общей папке.
    Например, для папки documents запрос будет направлен на \\fileserver2.elles.inno.tech\namespace1\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\namespace1\documents).

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

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

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

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

Управление DFSN

Управление функциональностью DFSN может выполняться с помощью отдельного клиента, предназначенного для администрирования пространств имен. Такой клиент предоставляет интерфейс для взаимодействия с выбранным сервером DFSN, через который выполняется получение метаданных и внесение изменений. Управление не требует прямого доступа к каждому файловому серверу: операции выполняются централизованно через сервер DFSN, который отвечает за хранение и обработку метаданных (Рис. 3).

dfsn management
Рис. 3. Схема управления DFSN

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

Управляющий клиент отправляет RPC-запросы серверу DFSN. Сервер обрабатывает эти запросы и выполняет чтение или обновление метаданных пространств имен.

Поддерживаются следующие сценарии управления:

  • просмотр, создание, удаление и изменение атрибутов пространства имен;

  • добавление и удаление серверов DFSN, обслуживающих пространство имен;

  • просмотр, добавление, удаление и изменение общих папок в пространстве имен;

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

Ограничения

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

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

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

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

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

Для успешной настройки пространства имен 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>" -U Administrator

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

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

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

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

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

    Например:

    samba-tool dfsn root create "\\\\elles.inno.tech\\namespace1" "\\\\dfsnserver01.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" \
        "\\\\dfsnserver02.elles.inno.tech\\dfsroot"
  4. Создайте папки. Например:

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

    samba-tool dfsn folder target create "\\\\elles.inno.tech\\namespace1\\documents" "\\\\fileserver02.elles.inno.tech\\shared\\documents"
  6. При необходимости настройте параметры перенаправления. Например, измените время нахождения данных о перенаправлениях в кэше клиентов:

    samba-tool dfsn root set "\\\\elles.inno.tech\\namespace1" \
        --ttl=900
  7. Убедитесь, что запросы клиентов к ресурсам в пространстве имен выполняются успешно.

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

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

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

Кэш доменных имен содержит NetBIOS- и DNS-имена локального домена, всех доверенных доменов в лесу и доменов в доверенных лесах.

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

Данные в кэше обновляются с контроллера домена с FSMO-ролью PDC Emulator или другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен:

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

  • периодически, с интервалом, установленным параметром smbd:dnrc_refresh_interval_s в конфигурации Эллес (по умолчанию интервал обновления составляет 12 часов).

Таким образом, изменения в именах доменов, а также изменения, вызванные добавлением или удалением доменов, попадают в кэш через промежуток времени, указанный в параметре smbd:dnrc_refresh_interval_s, а также после запуска или перезапуска службы smbd.

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

Например:

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

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

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

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

Данные в кэше обновляются с контроллера домена с FSMO-ролью PDC Emulator или другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен:

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

  • периодически, с интервалом, установленным параметром smbd:dcrc_refresh_interval_s в конфигурации Эллес (по умолчанию интервал обновления составляет 10 минут).

Таким образом, изменения в именах контроллеров домена, а также изменения, вызванные добавлением или удалением контроллеров домена, попадают в кэш через промежуток времени, указанный в параметре smbd:dcrc_refresh_interval_s, а также после запуска или перезапуска службы smbd.

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

Например:

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

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

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

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

Данные в кэше обновляются с контроллера домена с FSMO-ролью PDC Emulator или другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен:

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

  • периодически, с интервалом, установленным параметром smbd:dsrc_refresh_interval_s в конфигурации Эллес (по умолчанию интервал обновления составляет 10 минут).

Таким образом, изменения в именах серверов, а также изменения, вызванные добавлением или удалением серверов, попадают в кэш через промежуток времени, указанный в параметре smbd:dsrc_refresh_interval_s, а также после запуска или перезапуска службы smbd.

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

Например:

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

Кэш сайтов (Target Site Cache)

В кэше сайтов имена корневых серверов пространств имен и контроллеров домена сопоставляются с именами сайтов на основе их текущих IP-адресов.

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

Данные в кэше обновляются с контроллера домена с FSMO-ролью PDC Emulator или другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен:

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

  • периодически, с интервалом, установленным параметром smbd:tsc_refresh_interval_s в конфигурации Эллес (по умолчанию интервал обновления составляет 12 часов).

Таким образом, изменения в именах сайтов, перемещения серверов и контроллеров домена между сайтами, а также изменения, вызванные добавлением или удалением сайтов, попадают в кэш через промежуток времени, указанный в параметре smbd:tsc_refresh_interval_s, а также после запуска или перезапуска службы smbd.

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

Например:

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

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

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

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

Данные в кэше обновляются с контроллера домена с FSMO-ролью PDC Emulator или другого контроллера домена, если контроллер домена с FSMO-ролью PDC Emulator недоступен:

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

  • периодически, с интервалом, установленным параметром smbd:mc_refresh_interval_s в конфигурации Эллес (по умолчанию интервал обновления составляет 1 час);

  • при изменении метаданных.

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

Например:

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

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

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

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

  • кэш не пуст, но запрашиваемых данных в нем нет — в зависимости от состояния флага, контролируемого параметром конфигурации 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.