Настройка репликации DFS. Страж файлового дерева: развертываем распределенную файловую систему DFS

Данные можно реплицировать как в пределах локальной сети, так и через глобальную WAN сеть. Технология DFSR была спроектирована с расчетом на медленные WAN сети и работает столь же надежно через Интернет, как и в пределах одного здания.
Возникает вопрос- чем же эта функция по сути отличается от пространства имен DFS? Основное ее отличие- это наличие функции Алгоритма дифференциальной компрессии -- Remote differential compression algorithm (RDC), который применяется для репликации изменений. Основная идея этого алгоритма состоит в том, что реплицируются только измененные части файла. Например, если есть большой текстовый документ, и мы добавили несколько страниц в середину документа, то только эти несколько страниц и будут переданы по сети во время следующего сеанса синхронизации. Тем самым наиболее предпочтительней использовать репликацию DFS в медленных сетях, например для репликации одной (нескольких) папок между удаленно расположенными офисами с медленными каналами.
Репликация данных устойчива к проблемам с сетью. Если связь с удаленной машиной прервется, то репликация, разумеется, остановится. Но как только сеть будет снова работать, то репликация начнется с того места, где она прервалась.
Рассмотрим пошаговую инструкцию настройки репликации DFS. Первое что необходимо сделать - .
После этого создаем группу репликации (группа репликации - это набор серверов, именуемых членами, которые участвуют в репликации одной или нескольких реплицируемых папок. Реплицируемая папка - это папка, для которой поддерживается синхронизация на каждом из членов), для этого нажимаем правой кнопкой мыши на «Репликации» , выбираем «Новая группа репликации…»

В типе реплицируемой группе репликации, рекомендую указать «Универсальная группа репликации» , поскольку этот тип является более гибким в использовании в дальнейшем.


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


Затем указываем сервера, которые будут входить в группу репликации (их может быть два и более).


В окне выбора топологии указываем тип топологии подключения, читая комментарии под каждым типом выберите, подходящий для вас и нажмите «Далее» . В данном примере используется «Полная сетка» .


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


В окне «Основной член репликации» указываем сервер на котором хранятся данные.


В следующем окне указываем папку, которую необходимо реплицировать.


Затем указываем папку на которую необходим реплицировать (на другом сервере).


После этого просматриваем все указанные настройки и если все указанно верно, нажимаем «Создать» .


Теперь в категории «Репликации» видим созданную репликацию Common .

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

Служба Microsoft Dfs предоставляет великолепную возможность обеспечить пользователям простой доступ к данным, хранящимся на удаленных компьютерах. С помощью Dfs можно просматривать папки и обращаться к ним как к отдельному множеству общих каталогов через знакомую, унифицированную иерархию даже в тех случаях, когда ресурсы расположены в различных доменах или на разных физических носителях. Тех, кто не пользуется службой Dfs, опасаясь ее сложности, хочу обрадовать: бояться нечего - настройка Dfs интуитивно понятна, а применение вызывает еще меньше затруднений. В этой статье я объясню принцип работы данной службы и познакомлю читателей с типичной настройкой. Начав использовать службу Dfs, обычно администраторы вскоре уже не могут понять, как это раньше пользователи обходились без нее.

Принцип работы Dfs

Основным элементом структуры данной службы является общий каталог, который представляет собой корень иерархии Dfs. При помощи Dfs эти сетевые каталоги формируют последовательное отдельное пространство имен. Клиентские системы используют хорошо знакомые понятия, такие как подключенный диск или путь UNC (Universal Naming Convention), для подключения к корню Dfs. После подключения клиента структура Dfs выступает в роли обычного общего каталога, содержащего подкаталоги, по которым пользователи могут перемещаться. Каждый подкаталог, доступный из корня Dfs, на самом деле представляет собой ссылку на общий каталог (источник ссылки) в любой точке сети. Dfs автоматически направляет клиента, который обращается к сетевой папке, к реальному месту расположения данных. Как показано на экране 1, папки, которые видит пользователь, представляют собой переадресацию пользователей службой Dfs к разным общим каталогам на серверах A, Б и В. В роли источника ссылки может выступать любая система, использующая сетевую файловую систему, к которой можно обратиться через путь UNC, например системы с Windows, Novell NetWare и UNIX или Linux (то есть машины с файловой системой NFS).

Служба Dfs позволяет задействовать корни двух видов: автономные и интегрированные в Active Directory (AD). Они различаются способами хранения данных Dfs. В случае автономных корней иерархия Dfs, состоящая из различных ссылок на сетевые каталоги, хранится в локальном реестре сервера Dfs. Этот способ хранения информации не предполагает возможности ее дублирования на других серверах Dfs, то есть, если единственный сервер Dfs, содержащий корень Dfs, становится недоступен, иерархия Dfs оказывается полностью недоступной для всех клиентов сети. В случае недоступности сервера Dfs клиенты по-прежнему могут обращаться к общим каталогам на серверах напрямую. Они лишь не смогут задействовать службу Dfs для доступа к ресурсам. Придется использовать автономные корни Dfs, если система не содержит службу AD или если администраторы системы Dfs не являются администраторами домена и поэтому не могут получить достаточно прав (то есть получить доступ к объекту DFS-Configuration в контейнере System раздела AD для домена) для управления системой Dfs.

Система Windows 2000 Server и более поздние версии также поддерживают корни Dfs, интегрированные с AD (известные еще как доменные корни Dfs или отказоустойчивые корни Dfs). При использовании интегрированных корней информация Dfs хранится преимущественно в AD, хотя действующие серверы Dfs тоже содержат копии данных в памяти, чтобы минимизировать количество обращений сервера Dfs к контроллерам домена (DC) и таким образом снизить нагрузку на сеть со стороны службы Dfs. Интегрированные в AD корни можно использовать только тогда, когда сервер Dfs является членом домена. Однако сервер Dfs не обязан быть контроллером домена. По существу, следует задействовать автономные корни Dfs в случае отсутствия домена AD, необходимости разместить более 5000 ссылок или же если сеть содержит унаследованные клиентские системы. Более подробная информация о различиях между автономными и интегрированными в AD корнями Dfs приведена во врезке .

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

Настройка Dfs

Теперь, когда мы изучили важнейшие понятия системы Dfs, можно приступать к ее настройке. Первая задача - создать корень Dfs. Для этого существует два способа: использование в Microsoft Management Console (MMC) оснастки Distributed File System и запуск приложения dfsutil.exe из командной строки. В данной статье мы рассмотрим оснастки, что чуть проще для новичков по сравнению с dfsutil.exe. Ознакомившись с Dfs, вы, возможно, захотите использовать dfsutil.exe, например, в сценарии, заполняющем ссылками иерархию Dfs. Тогда нужно иметь в виду, что в системах Windows Server 2003, Standard Edition и Windows 2000 Server сервер может содержать лишь один корень Dfs. Серверы Windows Server 2003, Enterprise Edition и Windows Server 2003, Datacenter Edition могут работать с неограниченным числом корней Dfs.

Чтобы создать новый корень Dfs с помощью оснастки Distributed File System, необходимо выполнить следующие шаги:

  1. Запустить оснастку Distributed File System (пункт находится в папке Administrative Tools меню Start).
  2. Щелкнуть правой кнопкой мыши по заголовку Distributed File System в корне дерева в панели и выбрать пункт New Root (если используется система Windows 2003) или New DFS root (для Windows 2000 Server). Последующие шаги используют диалоговые окна системы Windows 2003, хотя сам процесс почти полностью повторяет процесс для оболочки Windows 2000 Server.
  3. В окне приветствия нажать кнопку Next.
  4. Выбрать тип создаваемого корня (доменный или автономный). Нажать Next.
  5. Если выбран доменный корень Dfs, потребуется ввести имя домена, который будет хранить информацию службы Dfs. Если выбран автономный корень, следует ввести имя сервера, который будет хранить соответствующую информацию. Нажмите Next.
  6. Если на шаге 4 выбран доменный корень, программа попросит выбрать сервер, который будет содержать корень Dfs. Следует указать сервер и нажать кнопку Next.
  7. Ввести имя нового корня и любые комментарии, которые помогут при его идентификации, после чего нажать Next. Введя имя корня, вы увидите, как это имя будет выглядеть в качестве имени общего каталога в формате UNC, как показано на экране 2. Например, для доменного общего каталога Dfs имя пути имеет структуру имя доменаимя каталога. Если на данный момент общего каталога не существует, нужно выбрать локальную папку на системе в качестве общего каталога. Этот каталог не содержит реальных данных; вместо этого он включает объекты-ссылки, указывающие на физическое расположение данных. Необходимо выбрать папку для использования в качестве общего каталога и щелкнуть Next.
  8. В окне подтверждения нажать кнопку Finish.
Экран 2. Указание нового корня Dfs

В этой точке клиенты могут подсоединяться к пространству имен Dfs, используя путь UNC dfstest.testshared. Им не нужно ничего знать о том, какие серверы содержат элементы Dfs. Клиенты, использующие систему Windows NT 4.0+Service Pack 6a (SP6a) или более поздние версии, могут подсоединяться к доменному пространству имен Dfs. Клиенты, использующие оболочку Windows 98, могут обращаться к автономным пространствам имен Dfs, но должны иметь установленное расширение, клиента службы AD, чтобы подключаться к пространству имен домена. Среда загрузки Microsoft Windows Preinstallation Environment (WinPE) может обращаться лишь к автономным пространствам имен Dfs.

Чтобы воспользоваться преимуществом отказоустойчивости доменного пространства имен Dfs, необходимы по крайней мере два сервера Dfs, поддерживающих одно пространство имен. Чтобы настроить второй хост-сервер Dfs, следуйте приведенным ниже инструкциям:

  1. В оснастке Distributed File System щелкните правой кнопкой по созданному корню и выберите пункт New Root Target.
  2. Введите имя сервера, который послужит дополнительным хостом Dfs для пространства имен. Имейте в виду, что имя общего каталога (например, shared), которое система Dfs будет использовать для содержания этой копии, уже задано и не может быть изменено. Нажмите Next.
  3. Если каталога с таким именем на указанном сервере не существует, система предложит выбрать папку для использования в этом качестве либо можно создать новую папку, а потом выбрать ее. Выберите папку и нажмите Next.
  4. В результирующем окне нажмите кнопку Finish.

Корень Dfs теперь будет отображать множество серверов, которые действуют как корневые объекты пространства имен, как показано на экране 3. Клиенты могут подключаться к пространству имен и направляться на один из его корневых объектов. Однако пользователи, обратившиеся к корневому объекту, увидят лишь пустую папку, так как еще не задано ни одной ссылки. Следующим шагом будет добавление нескольких ссылок и источников ссылок, которые будут направлять клиентов к нужным данным.

Экран 3. Просмотр источников корня Dfs

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

  1. Щелкните правой кнопкой мыши на корне Dfs и выберите пункт New Link из контекстного меню.
  2. Введите имя ссылки (то есть имя папки, которую будет видеть клиент) и имя общего каталога, в который ссылка будет направлять клиента. Это имя можно изменить или добавить позднее. Также можно ввести комментарий и определить период времени, в течение которого клиенты будут хранить информацию по источнику, до повторного обращения к серверу Dfs, как показано на экране 4.
  3. Нажмите кнопку ОК.

Теперь, когда клиенты попадут в пространство имен Dfs, они будут видеть папку. При открытии этой папки пользователь будет перенаправлен в общий каталог и сможет просмотреть его содержимое.

Предположим, у нас имеется папка с документами на сервере в удаленном офисе. Вместо того чтобы создавать отдельную ссылку на эту папку (например, LondonDocuments), можно добавить еще один источник к существующей ссылке. Настройка множества источников ссылки - еще один способ обеспечить отказоустойчивость. Если один из источников ссылки недоступен, система Dfs может направить пользователя к другой копии данных. Чтобы добавить дополнительный источник к существующей ссылке, следуйте приведенным ниже инструкциям.

  1. Щелкните правой кнопкой мыши по ссылке и выберите пункт New Target из контекстного меню.
  2. Укажите путь к новому каталогу, который также послужит источником для данной ссылки. Можно дополнительно включить дублирование данных, поставив флажок в поле Add this target to the replication set, как показано на экране 5. Дополнительная информация о дублировании приведена во врезке «Настройка дублирования данных на основе службы Dfs».
  3. Нажмите кнопку OK.

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

Как мы убедились, для одной ссылки может существовать множество источников. Эта возможность вызывает очевидный вопрос: не будет ли наличие разнообразных данных в различных источниках ссылки означать, что система Dfs может произвольным образом направлять клиентов к различным источникам ссылки и клиенты будут видеть различные файлы? Так как источники ссылки представляют собой разные каталоги на отдельных серверах, специального механизма для постоянной синхронизации их содержания не существует. Следовательно, вполне возможна ситуация, когда различные источники ссылки будут иметь разное содержание. В таком случае клиент обратится к папке, получит доступ к данным, но, вернувшись к той же папке позднее, возможно, будет отправлен к другому источнику ссылки и увидит совершенно другой набор данных. Однако этот сценарий маловероятен. Мои пояснения по теме приведены во врезке . К счастью, оболочка Windows 2000 Server и более поздние реализации системы Dfs содержат службу File Replication Service (FRS), которую контроллеры домена задействуют для постоянной синхронизации своих общих каталогов Sysvol. Система Dfs использует службу FRS для синхронизации источников ссылки, которые являются частью доменного пространства имен. Служба FRS предоставляет различные возможности дублирования, такие как непрерывное дублирование, которое позволяет дублировать изменения в режиме, близком к реальному времени, и дублирование в определенное время суток. Система Windows 2003 R2 будет содержать новую версию службы FRS специально для службы Dfs. Инструкции по настройке дублирования файлов на основе системы Dfs приводятся во врезке . Если используется автономный корень Dfs и требуется синхронизация, для решения этой задачи необходимо средство синхронизации файлов, такое как служба Robocopy из пакета Windows Resource Kit.

Как мы выяснили, система Dfs заметно упрощает доступ к общим ресурсам для конечных пользователей и, при действующей службе AD, предоставляет методы повышения отказоустойчивости. Для оптимальной работы системы Dfs в конкретной компании потребуется решить, какие файлы необходимо дублировать, и, если нужно, отладить механизм перенаправления. Я привел самую существенную информацию, которой следует владеть перед началом работы с Dfs. Дополнительные сведения по этой теме можно найти на Web-сайте Microsoft?s Distributed File System and File Replication Services по адресу http://www.microsoft.com//windowsserver2003/ technologies/fileandprint/file/dfs/default.mspx .

Такие разные корни

Каждый тип корня Dfs имеет свои преимущества и ограничения. Важно помнить, что, в отличие от интегрированной в Active Directory (AD) службы DNS, доменные корни Dfs не обязаны находиться на контроллерах домена (DC); они могут содержаться на любом сервере, который является членом домена и использует Windows 2000 Server или более поздние версии. При запуске и через определенные интервалы времени (по умолчанию один раз в течение часа) серверы Dfs просто обращаются к эмуляторам PDC домена, чтобы получить последние данные о пространстве имен Dfs. Эти периодические запросы могут оказаться узким местом при доступе к ресурсам. Кроме того, они накладывают ограничение в 16 копий корней при реализации Dfs, а значит, нельзя будет иметь более 16 корней для одного пространства имен, так как синхронизация между серверами Dfs становится все более сложной при каждом изменении структуры Dfs (т. е. при добавлении новой ссылки или ее источника). Исключением из этого правила является реализация Dfs в системе Windows Server 2003, которая имеет новый режим масштабирования корней, обычно позволяющий серверам Dfs обращаться к любому DC в домене, а не только к эмулятору PDC.

Другое ограничение доменных корней Dfs заключается в том, что вся структура Dfs (в том числе ссылки, источники ссылок и корневые серверы) хранится в отдельном объекте, который необходимо дублировать на всех контроллерах домена при малейших изменениях в структуре Dfs. Вам это не напоминает дублирование членства в группе в системах Windows 2000 Server? Для корректного выполнения дублирования Microsoft рекомендует иметь максимальный размер объекта Dfs не более 5 Mбайт (около 5000 ссылок). Средняя реализация Dfs имеет около 100. Если требуется разместить более 5000 ссылок, следует обдумать варианты разделения пространства имен Dfs на множество пространств имен или использование автономных корней Dfs, для которых рекомендованный лимит составляет 50 000 ссылок. Другой способ минимизировать объем, используемый системой Dfs в AD, - ограничить число комментариев, приводимых для ссылок, так как они тоже хранятся в объекте Dfs службы AD. Тем не менее нужно помнить, что подобное пространство имен Dfs вряд ли будет часто меняться. После настройки начальной конфигурации системы Dfs она останется достаточно статичной и не будет дублироваться часто.

Настройка дублирования на основе Dfs

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

  1. Щелкнуть правой кнопкой мыши по ссылке и выбрать пункт меню Configure Replication.
  2. На экране приветствия мастера Configure Replication Wizard нажать кнопку Next.
  3. Программа попросит выбрать источник, который станет оригиналом для дублирования. Если имеется общий каталог, содержащий данные, которые необходимо дублировать в другие папки, следует выбрать его в качестве оригинала. Нажмите кнопку Next.
  4. Необходимо будет выбрать топологию, используемую при дублировании. По умолчанию установлена кольцевая топология, которая подходит для большинства сетей. Если сетевое окружение более сложное, можно рассмотреть использование других топологических схем, таких как «издатель - подписчики», взаимная пересылка и схема, настраиваемая пользователем. Выбранная топология должна соответствовать топологии имеющейся глобальной сети; в идеале топология дублирования службы FRS должна соответствовать схеме сети. К примеру, если сеть включает один центральный офис и множество подключенных к нему филиалов, топологическая схема «издатель - подписчики» будет наилучшим выбором. Нажмите Finish.

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

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

Настройка перенаправления в Dfs

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

Заданное по умолчанию поведение системы Dfs (перенаправление клиента на произвольный альтернативный источник ссылки), если она не может найти локальный источник, может быть неэффективным. Например, если система Dfs не находит локальный источник в Далласе, она может перенаправить клиента к источнику в Лондоне, хотя в Нью-Орлеане существует еще один источник, соединение с которым реализовано через более быстрый канал. Однако настройки Dfs можно регулировать, обеспечивая более эффективное перенаправление запросов пользователей. Можно настроить Dfs таким образом, что система будет направлять клиентов только к источникам ссылок, размещенным в локальном окружении пользователей. Для активизации этого режима, названного Restricted Same-site Target Selection, следует запустить команду Dfsutil и указать параметр /insite:

dfsutil /root: /insite /enable

Недостаток данного режима заключается в том, что в случае, если система Dfs не может обнаружить локальный источник, пользователи просто не смогут получить доступ к ресурсу.

С другой стороны, если на контроллерах домена и серверах Dfs используется оболочка Windows 2003, можно задействовать режим Least-Expensive Target Selection. В этом режиме, если локальный источник ссылки недоступен, система Dfs перенаправляет клиента на источник, соединение с которым даст наименьшую нагрузку на полосу пропускания; Dfs использует для этого стоимость межсайтовых соединений, описанных в AD. Режим Least-Expensive Target Selection минимизирует использование медленных соединений и позволяет клиентам быстрее получать доступ к сетевым каталогам. Чтобы активировать режим Least-Expensive Target Selection, нужно запустить команду:

/sitecosting /enable

Специалист по продуктам Microsoft в компании Geniant. Имеет сертификат MCSE и звание MVP.

Q зачем нужна DFS?

A для организации единого структурированного отказоустойчивого файлопомоечного пространства в организации. вместо зоопарка непонятных шар и дисков имеем единый корень (который можно мапить пользователям как диск, например), в котором мы можем создавать удобную нам структуру в виде виртуальных папок (хоть вложенных, хоть вперемешку с реальными), к которым, в удобном нам виде, мы и цепляем сетевые шары, физически расположенные на разных серверах. люди, человеки, один сетевой диск - это пипец как удобно по сравнению с колхозом, что есть у большинства!

Q интегрировать ли пространство имен в Active Directory (Domain Based DFS Namespace) или использовать автономные (stand-alone DFS namespace)?

A интегрированное пространство имен DFS хранится в AD (бэкапится, соответственно, "за компанию". вы ведь делаете резервные копии Active Directory? ;) и позволяет иметь несколько namespace серверов, т.е. имеет встроенный механизм отказоустойчивости (fault tolerance). Stand Alone DFS NS встроенных механизмов не имеет (отказоустойчивость в них достигается с помощью использования кластеризации). Microsoft рекомендует использовать domain based DSF в случае, если количество линков (виртуальных папок) не больше 5,000. Stand Alone DFS же рекомендуют ограничивать 50,000 линков. это не жесткое ограничение, это рекомендации (после превышения цифры, вроде как должна начать падать производительность). т.е. в итоге получаем, что stand alone выгодно использовать в маленькой сети, например, если нет AD или, наоборот, в случае экстремально большой файлопомойки, в остальных же случаях выгоднее использовать интегрированное пространство имен DFS.
PS: еще некоторые несознательные буржуи пишут "Standalone DFS root do not have any DFS shared folders in the root level and only one level of DFS link is possible", но я не совсем понимаю что это означает.

Q какие механизмы отказоустойчивости в domain based DFS?

A информация корня DFS хранится в Active Directory (в случае, если у вас нескольких контроллеров домена резервирование получается и тут) и реплицируется на серверы пространств имен DFS (которых тоже может быть много). линки (вируальные папки, которые вы создаете в DFS Root и к которым монтируете физические шары) могут иметь несколько (не обязательно 2, можно и больше) источников-шар, данные в которых реплицируются между собой.

Q что такое репликация DFS и какая она бывает

A механизм синхронизации содержимого нескольких источников DFS.
бывает: FRS (File Replication Service) - обычная репликация;)
DFSR (Distributed File System Replication) - модная репликация, появившаяся в Windows Server 2003R2 и 2008. использует RDC (разностное сжатие, т.е. передается только изменения в файле, а не изменившийся файл целиком, как это было в FRS. в общем, для наших дохлых каналов очень полезная штука). замечу, что репликация DFS асинхронная, т.е. некоторое время источники не согласованы.

Q на что нужно обратить внимание после развертывания DFS

A на расположение и безопасность папки DFSRPrivate в каждом источнике (служит для хранения реплицируемой информации, удаленных и конфликтных с точки зрения репликации файлов). по умолчанию хранится в самой папке-источнике с правами, наследуемыми "сверху" (вообще странно, на technet"е написано, что только администраторы будут иметь доступ. может в 2008R2 что-то поправили). если у вас в пределах папки-источника права безопасности разные (что само по себе с точки зрения архитектуры файлопомойки несколько коряво), то люди могут получить доступ туда, куда не надо. плюс, шаловливые ручонки кулибиных радости не добавят.

Q что за папка "DFSRPrivate\Staging" и как правильно выбрать ее размер?

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

Q что за папка "DFSRPrivate\Conflict and Deleted"

A так как одновременно несколько пользователей могут изменить один и тот же файл, работает принцип "кто последний записал файл, того и тапки". файл-неудачник отправляется в эту папку, а в ConflictandDeletedManifest.xml появится соответствующая запись. так же, при наличии галки "хранить удаленные файлы в папке конфликтов" там будут храниться файлы удаленные пользователями (очень удобно восстанавливать). так что на размер я бы не скупился.

Q какие основные проблемы с репликацией DFS?

A Большинство проблем с репликацией DFS у меня возникали из-за File Screening (ограничение на разрешенные расширения файлов) и Disk Quotas (ограничение на размер папки). особенно в случае первичной репликации. с дисковыми квотами всё понятно, за ними надо следить (учитывая что директория DFSRPrivate вместе со "Staging" и "Conflict and Deleted" по умолчанию находится в самой папке источнике), то с File Screening полный гемор - нужно или выносить папку DFSRPrivate в место, где нет ограничений (что не удобно) или пытаться делать исключения на папки "DFSRPrivate" (а она скрытая. гыгы) или временно отключать запреты (в первичном источнике тоже! иначе файл не попадет в Staging на источнике и не реплицируется) или удалять все файлы пользователей, попадающие под запрещающие фильтры (напомню, что файл скрининг запрещает только создание новых файлов определенных расширений, а не их наличие. т.е. если файлы уже есть и мы включаем запрещающие правила в screening, то файлы, подпадающие под фильтры, нельзя создать-изменять, но можно читать-удалять. вот мы и получим при попытке репликации ошибку, когда служба попытается записать в папку Staging запрещенный реплицируемый файл, file screening ругнется ошибкой "нет места на диске", на чем вся репликация и встанет).

Q где хранятся подробные логи репликации?

A кроме eventlog"a в %windir%\debug\DFSR*.log.gz - архивные, и %windir%\debug\DFSR*.log - актуальный.

Q Какие есть тонкости в работе DFS?

A1 хотя и допускается монтировать одно пространство имен, как папку в другое пространстве имен, на практике при монтировании stand alone DFS Windows Server 2003 в папку другого, интегрированного в AD DFS Windows Server 2008, сей авангардизм приводил к BSOD"у при заходе в такую папку с компа с Windows XP ;) видимо, буржуи имели в виду, что можно сращивать только разные domain based DFS namespaces.

A2 когда выпадает первичный из источников папки в DFS, при заходе на него с Windows XP происходит задержка, равная времени кэширования структуры DFS (по дефолту 300 секунд, насколько я помню). если зайти с Windows Vista/7/2008, то задержки нет. как пишут буржуи, связанно с переписанными в новых windows"ах сетевых протоколах. так что полноценный auto failover, при наличии клиентов XP, не получится, нужно пользоваться немножко другими средствами или отключать источники вручную (например, на случай плановой остановки одного из серверов).

A3 так как репликация в DFS асинхронная, какие-либо базы данных держать в папке с двумя и более реплицируемыми источниками не стОит. в момент перехода между источниками она рассинхронизируется.

Q что бы еще такого сделать с DFS?

A включить ABE (Access Based Enumeration) в свойствах каждой шары - эта технология позволяет скрыть от пользователя папки, к которым у него нет доступа. полезно по многим причинам - и не раздражаем пользователя кучей папок, в которые он не сможет зайти (у него будут видны только те папки, к которым у него есть доступ), и не выдаем какую-либо косвенную информацию (мало кого не насторожит папка "План сокращения персонала в три раза") и делает навигацию по файлопомойке удобнее.

Q как вообще войти в DFS после создания? ;)

A в случае Doman Based DFS Namespace - "\\DomainName\DFSRootName" в адресной строке Explorer"a, в случае Stand Alone - как в обычную шару - "\\ServerName\DFSRootName". мапить можно как обычную шару - "net use Z: \\DOMAIN.Local\MyCoolDFS\" и "net use Z: \\Server\MyCoolDFS\" соответственно.

30 июня 2011 в 09:55

Опытные мелочи-10, или «DFS и отказоустойчивость»

  • Системное администрирование

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

Для начала повторю свои эмпирические убеждения о том, что не стоит устраивать файловый кластер, средствами DFS. Не для этих целей DFS создавалась. И чтобы расставить все точки над I вот мои аргументы:

  • В механизме работы DFS нет способа определить какая реплика файла является правильной.
  • При наличие нескольких реплик в одном сайте, DFS сама выбирает куда отправить пользовательский запрос, на реплику А или на реплику Б, ориентируясь при этом, судя по всему по загруженности сервера-хранилища. (Есть некоторые настройки порядка выбора реплики, но сути они не меняют: если в пределах сайта несколько реплик, то выбор конкретной из них может быть непредсказуем.
  • Эти нюансы позволяют смоделировать ситуацию, когда пользователь А обратится на реплику А и будет работать там с данными, а пользователь Б обратится на реплику Б и будет там работать с данными. В результате будут образованы ДВЕ ветки измененных данных, и DFS не будет знать какие данные правильные, а просто выберет те, которые последние по времени изменения. Можете себе представить что будет твориться в этой ситуации с файловым хранилищем, или того хуже, с базами данных
  • Ну и стоит отметить то, что репликация открытых файлов может задерживаться на неопределенное время. Самый простой пример - это пользователи, которые не закрывают офисные документы уходя домой.
Все вышеописанное позволяет сказать что DFS лучше всего подходит для передачи данных в филиалы, синхронизации редкоизменяемых данных (приказы, рапоряжения, архивы) и подобных задач. Однако можно поступить чуть хитрее и задействовать DFS, возможно не совсем обычным, но тем не менее полезным способом.

Можно построить на базе DFS своего рода онлайн-реплику, которая не будет работать основное время (а значит бОльшая часть проблем с синхронизацией данных не проявится), и которую можно будет включить, в случае отказа основной реплики.
Выглядеть это может например вот так:
Здесь (на примере папки Department) создано две реплики одной папки, настроена группа репликации и задания репликации (все это делается мастером настройки и не вызовет у вас никаких проблем). Самый смак идеи в том, что одна из ссылок на сервера хранилища - отключена, т.е. реплика есть, репликация между серверами проходит как задано, но пользователи, обращающиеся через DFS в эту папку будут перенаправляться исключительно на первый, активный сервер.

Второй сервер будет реплицировать данные по мере возможности, и будет как бы «на подхвате». В случае какой-то нештатной ситуации, можно будет произвести рокировку и включить линк уже на второй сервер, а линк на первый - выключить и пользователи снова попадут к своим родным данным, которые будут настолько актуальны, насколько DFS-репликация была способна сделать (на практике это от полной актуальности, т.е. состояния 0,5-2 сек давности, до 2-3 дней в случае с открытыми файлами, которые не реплицируются пока не будут закрыты, т.е. разблокированы приложением).

Казалось бы здорово! Срочно побежали делать эту супер-систему! Но кроме всех хороших моментов, есть и не очень хорошие:

  • Потребуется минимум двукратный запас по месту на каждом томе для скрытой папки DfsrPrivate (служебная папка для репликации данных). Учитывая двойные расходы на хранение данных (на обоих серверах хранится одно и то же, причем в один момент времени работают только с одним) это уже не выглядит столь заманчивым, т.к. места под такую отказоустойчивость нужно отвести минимум в 4 раза больше чем самих данных
  • У пользователей иногда могут наблюдаться тормоза в момент работы с DFS. Точных причин мне понять так и не удалось, но всегда это было следствием наличия нескольких реплик, и ненулевой нагрузки на сеть. Как только реплика оставалась одна - тормоза становились исчезающе малы. Это совершенно точно не было связано с работающей репликацией, очень было похоже на какие-то проблемы с резолвингом DFS-имен.
  • Чтобы пользователи увидели новую реплику, на которую вы их переключили в «час Х», им скорее всего придется перегрузить компьютеры, в противном случае они будут пытаться идти по старому пути.
  • Автоматическое переключение на работающую реплику - я не сделал, т.к. стандартных методов для этого нет, а писать чудо-скрипт в ситуации когда сама технология имеет столько минусов, показалось мне безрассудством.
Как видите в описанном примере кроме довольно весомых плюсов. есть также и немаленькие минусы, поэтому расставляйте приоритеты, взвешивайте ЗА и ПРОТИВ, и решайте сами как поступать в вашей конкретной ситуации.

Кстати, по словам знающих, в среде Windows Server 2008 (R2) DFS (и особенно ее служба репликации) была кардинально улучшена, и, возможно, часть проблем была успешно решена. Попробуйте - может быть там предложенная схема будет работать куда лучше.

Продолжение следует.

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

Для начала повторю свои эмпирические убеждения о том, что не стоит устраивать файловый кластер, средствами DFS. Не для этих целей DFS создавалась. И чтобы расставить все точки над I вот мои аргументы:

  • В механизме работы DFS нет способа определить какая реплика файла является правильной.
  • При наличие нескольких реплик в одном сайте, DFS сама выбирает куда отправить пользовательский запрос, на реплику А или на реплику Б, ориентируясь при этом, судя по всему по загруженности сервера-хранилища. (Есть некоторые настройки порядка выбора реплики, но сути они не меняют: если в пределах сайта несколько реплик, то выбор конкретной из них может быть непредсказуем.
  • Эти нюансы позволяют смоделировать ситуацию, когда пользователь А обратится на реплику А и будет работать там с данными, а пользователь Б обратится на реплику Б и будет там работать с данными. В результате будут образованы ДВЕ ветки измененных данных, и DFS не будет знать какие данные правильные, а просто выберет те, которые последние по времени изменения. Можете себе представить что будет твориться в этой ситуации с файловым хранилищем, или того хуже, с базами данных
  • Ну и стоит отметить то, что репликация открытых файлов может задерживаться на неопределенное время. Самый простой пример - это пользователи, которые не закрывают офисные документы уходя домой.
Все вышеописанное позволяет сказать что DFS лучше всего подходит для передачи данных в филиалы, синхронизации редкоизменяемых данных (приказы, рапоряжения, архивы) и подобных задач. Однако можно поступить чуть хитрее и задействовать DFS, возможно не совсем обычным, но тем не менее полезным способом.

Можно построить на базе DFS своего рода онлайн-реплику, которая не будет работать основное время (а значит бОльшая часть проблем с синхронизацией данных не проявится), и которую можно будет включить, в случае отказа основной реплики.
Выглядеть это может например вот так:
Здесь (на примере папки Department) создано две реплики одной папки, настроена группа репликации и задания репликации (все это делается мастером настройки и не вызовет у вас никаких проблем). Самый смак идеи в том, что одна из ссылок на сервера хранилища - отключена, т.е. реплика есть, репликация между серверами проходит как задано, но пользователи, обращающиеся через DFS в эту папку будут перенаправляться исключительно на первый, активный сервер.

Второй сервер будет реплицировать данные по мере возможности, и будет как бы «на подхвате». В случае какой-то нештатной ситуации, можно будет произвести рокировку и включить линк уже на второй сервер, а линк на первый - выключить и пользователи снова попадут к своим родным данным, которые будут настолько актуальны, насколько DFS-репликация была способна сделать (на практике это от полной актуальности, т.е. состояния 0,5-2 сек давности, до 2-3 дней в случае с открытыми файлами, которые не реплицируются пока не будут закрыты, т.е. разблокированы приложением).

Казалось бы здорово! Срочно побежали делать эту супер-систему! Но кроме всех хороших моментов, есть и не очень хорошие:

  • Потребуется минимум двукратный запас по месту на каждом томе для скрытой папки DfsrPrivate (служебная папка для репликации данных). Учитывая двойные расходы на хранение данных (на обоих серверах хранится одно и то же, причем в один момент времени работают только с одним) это уже не выглядит столь заманчивым, т.к. места под такую отказоустойчивость нужно отвести минимум в 4 раза больше чем самих данных
  • У пользователей иногда могут наблюдаться тормоза в момент работы с DFS. Точных причин мне понять так и не удалось, но всегда это было следствием наличия нескольких реплик, и ненулевой нагрузки на сеть. Как только реплика оставалась одна - тормоза становились исчезающе малы. Это совершенно точно не было связано с работающей репликацией, очень было похоже на какие-то проблемы с резолвингом DFS-имен.
  • Чтобы пользователи увидели новую реплику, на которую вы их переключили в «час Х», им скорее всего придется перегрузить компьютеры, в противном случае они будут пытаться идти по старому пути.
  • Автоматическое переключение на работающую реплику - я не сделал, т.к. стандартных методов для этого нет, а писать чудо-скрипт в ситуации когда сама технология имеет столько минусов, показалось мне безрассудством.
Как видите в описанном примере кроме довольно весомых плюсов. есть также и немаленькие минусы, поэтому расставляйте приоритеты, взвешивайте ЗА и ПРОТИВ, и решайте сами как поступать в вашей конкретной ситуации.

Кстати, по словам знающих, в среде Windows Server 2008 (R2) DFS (и особенно ее служба репликации) была кардинально улучшена, и, возможно, часть проблем была успешно решена. Попробуйте - может быть там предложенная схема будет работать куда лучше.

Продолжение следует.