Настройка 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 в сайте клиента, а затем — в других сайтах с учетом приоритета; если приоритет не задан, внутри сайта порядок случайный.

Управление 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" \
        "\\\\fileserver1.elles.inno.tech\\documents"
  5. Добавьте целевые папки. Например:

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

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

  8. При необходимости настройте разрешения, определяющие видимость папки в пространстве имен для пользователей и групп, с помощью подкоманд 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.