Репликация общих папок — это процесс, при котором содержимое и иерархия общих папок реплицируются на несколько серверов для обеспечения эффективной работы и отказоустойчивости. Когда несколько баз данных общих папок, расположенных на различных серверах, поддерживают одно дерево общих папок, Microsoft Exchange использует репликацию общих папок для обеспечения синхронизации баз данных. Содержимое общих папок находится только в хранилищах Exchange, настроенных на хранение реплики определенной папки. Содержимое и иерархия реплицируются по отдельности. В каждой из баз данных общих папок содержится копия иерархии, включающая списки других баз данных общих папок, в которых хранятся реплики содержимого каждой из папок. Реплики содержимого существуют только в указанных базах данных общих папок. Дополнительные сведения о настройке репликации общих папок см. в разделе Настройка репликации общих папок.

Базы данных общих папок реплицируют два типа сведений общих папок.

Процесс репликации общих папок

При изменении общей папки или ее содержимого база данных общих папок, содержащая реплику измененной общей папки, отправляет в другие базы данных общих папок, содержащие реплику общей папки, описательное сообщение электронной почты. Чтобы уменьшить нагрузку на сеть, в одно электронное сообщение Exchange включается информация о нескольких изменениях. Объем данных в этих сообщениях зависит от предела, установленного для сообщений репликации. Если в каком-то сообщении этот предел превышается, оно отправляется как отдельное сообщение репликации. Exchange маршрутизирует эти сообщения репликации таким же образом, как и другие сообщения электронной почты. Дополнительные сведения о маршрутизации общих папок см. в разделе Маршрутизация сообщений в общие папки.

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

Базовая процедура репликации иерархии и содержимого

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

Основной процесс репликации общих папок

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

  1. Пользователь изменяет общую папку.

  2. Изменение сохраняется в локальной базе данных общих папок.

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

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

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

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

  4. База данных общих папок присваивает обновлению номер изменения.

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

  5. База данных общих папок упаковывает обновление в сообщение репликации. Номера изменений всех обновлений в сообщении называются набором номеров изменений (CNSet).

    Наряду с обновлениями база данных общих папок упаковывает сведения из записей папок, находящихся в таблице состояний репликации, включая наборы номеров изменений, ранее добавленные к реплике. Дополнительные сведения о таблице состояний репликации см. в подразделе «Таблица состояний репликации» далее в этом разделе.

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

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

    Для доставки сообщений репликации база данных общих папок использует компоненты внутренней маршрутизации Exchange. База данных не пытается разделять сообщения репликации на основании сведений о топологии. Если изменяется содержимое папки, у которой имеется пять реплик, база данных создает одно сообщение репликации и направляет его во все пять баз данных, хранящих эти реплики. Способ маршрутизации и доставки сообщений определяют компоненты маршрутизации.

  8. База данных общих папок получает сообщение репликации.

  9. База данных общих папок, получившая сообщение репликации, распаковывает из него сведения об обновлении и состоянии.

  10. База данных сравнивает номера изменений новых обновлений со списком уже хранящихся номеров изменений, а затем определяет те из них, которые не были получены ранее.

  11. База данных применяет новые обновления к репликам соответствующих папок.

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

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

Сообщения репликации

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

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

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

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

Типы сообщений репликации общих папок и их использование

Тип сообщения* Использование

Иерархия (0x2)

Реплицирует изменения иерархии из локальной базы данных общих папок во все остальные базы данных общих папок, поддерживающие эту иерархию. Несмотря на то, что Exchange обрабатывает изменения иерархии отдельно от изменений в репликах содержимого, иерархия обрабатывается так, как если бы она была еще одной папкой. В некоторых сообщениях о событиях и других операциях Exchange обращается к иерархии как к папке 1-1.

Содержимое (0x4)

Реплицирует изменения содержимого из одной реплики во все другие реплики содержимого этой папки. Сообщение содержимого содержит только сведения, относящиеся к одной папке.

Запрос на обратную засыпку (0x8)

Запрашивает у другой базы данных данные, отсутствующие в наборах номеров изменений. Сюда входят номера изменений иерархии и содержимого.

Ответ обратной засыпки (0x80000002 или 0x80000004)

Отправляет данные, отсутствующие в наборах номеров изменений, в базу данных, запросившую пропущенные изменения.

Состояние (0x10)

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

Запрос состояния (0x20)

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

Таблица состояний репликации

Для отслеживания состояния каждой реплики в базе данных каждая база данных общих папок обслуживает таблицу состояний репликации. В таблице состояний репликации хранятся указанные ниже сведения.

  • Основные сведения, необходимые для создания обновлений каждой из реплик.

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

  • Группы обновлений, примененных ко всем остальным известным репликам папки. Номера изменений определяют обновления в каждой из групп. Набор номеров изменений для всех обновлений в группе называется набором номеров изменений (CNSet). Сведения об обновлении передаются из одной базы данных в другую в рамках процесса репликации.

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

Пример данных таблицы состояний репликации для сервера А

Реплика Данные

Папка «Проекты» на сервере А

(локальная реплика)

Последнее отправленное обновление: A-100

Папка «Проекты» на сервере В

Получено A-100

Получено B-50

Пример данных таблицы состояний репликации для сервера В

Реплика Данные

Папка «Проекты» на сервере А

Получено A-100

Получено B-50

Папка «Проекты» на сервере В

(локальная реплика)

Последнее отправленное обновление: B-50

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

Запросы на обратную засыпку и сообщения обратной засыпки

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

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

Оповестить базу данных общих папок о пропущенных обновлениях, обратную засыпку которых необходимо осуществить, могут следующие события:

  • Сведения о состоянии в полученном сообщении репликации указывают на то, что реплика в базе данных общих папок, отправившей сообщение, содержит обновления, отсутствующие в получившей базе данных. Получившая база данных определяет номера отсутствующих обновлений и сохраняет их в своем массиве обратной засыпки.

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

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

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

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

Тип запроса Содержимое существует в базе данных на локальном сайте Active Directory Содержимое существует в базе данных на удаленном сайте Active Directory

Первоначальная обратная засыпка

6 часов

12 часов

Первая повторная попытка обратной засыпки

12 часов

24 часов

Последующие повторные попытки обратной засыпки

24 часов

48 часов

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

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

  1. Сортировка в соответствии с состоянием серверов. Неработающие или недоступные серверы переносятся в конец списка.

  2. Сортировка в соответствии с предпочтением сервера обратной засыпки (если имеется). Exchange проверяет в Active Directory объект базы данных общих папок на наличие предпочтительного сервера обратной засыпки. Этот параметр используется редко. В большинстве случаев, когда Exchange выбирает сервер обратной засыпки автоматически, процесс обратной засыпки выполняется с максимальной эффективностью. Для большинства развертываемых систем Exchange предпочтительный сервер обратной засыпки не требуется. Если в развернутой системе требуется предпочтительный сервер обратной засыпки, служба технической поддержки Майкрософт может предоставить сценарий, назначающий такой сервер.

  3. Сортировка в соответствии со стоимостью передачи (от минимальной к максимальной). Серверы в одной группе маршрутизации обладают приоритетом по сравнению с серверами удаленных узлов Active Directory.

  4. Сортировка в соответствии с версией Exchange (от более новых к более старым).

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

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

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

Запросы состояния и сообщения о состоянии

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

База данных общих папок отправляет запросы состояния в указанных ниже ситуациях.

  • База данных получает уведомление о внесении изменений в список баз данных, в которых хранятся реплики папки. Например, при добавлении базы данных в список или удалении базы данных из списка, Exchange реплицирует данное изменение при помощи сообщений обновления иерархии. В таком случае база данных отправляет запрос состояния, на который должны ответить все базы данных, содержащие реплики данной папки.

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

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

Для указания текущего состояния определенной папки, хранящейся в отправляющей базе данных, база данных общих папок отправляет другой базе данных сообщение состояния в указанных ниже ситуациях.

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

    • База данных, получившая запрос состояния, присутствует в запросе в списке баз данных, которые обязаны ответить.

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

  • Прошло 24 часа после получения самого последнего обновления для папки, после чего обновления не приходили. Всякий раз, когда база данных получает обновление для определенной папки, таймер устанавливается в значение 24 часа. Данное сообщение состояния отправляется в другие базы данных общих папок, хранящие реплики обновленной папки.

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

Примеры циклов репликации

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


добавить реплику общих папок в иерархию

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

  1. Работая на сервере ExServ01, администратор добавляет ExServ01 в список реплик папки.

  2. Сервер ExServ01 отправляет сообщение иерархии.

  3. Сервер ExServ02 добавляет ExServ01 в локальную копию списка реплик папки.

  4. Сервер ExServ01 отправляет серверу ExServ02 запрос состояния.

  5. Сервер ExServ02 отправляет серверу ExServ01 сообщение о состоянии, которое содержит полный набор номеров изменений папки (CNSet).

  6. Сервер ExServ01 определяет полное отсутствие содержимого папки и вносит соответствующие записи в массив обратной засыпки.

  7. Если по истечении времени ожидания обратной засыпки содержимое все еще отсутствует, ExServ01 создает запрос на обратную засыпку и отправляет его серверу ExServ02.

  8. Сервер ExServ02 составляет сообщения с содержимым и отправляет их серверу ExServ01.

  9. Сервер ExServ01 использует входящие сообщения с содержимым для обновления содержимого папки и соответствующих сведений для отслеживания.

  10. Если выясняется, что номера изменений все еще отсутствуют, ExServ01 ожидает 24 часа, а затем отправляет обновленный запрос на обратную засыпку. Если доступен сервер, отличный от ExServ02, сервер ExServ01 может отправить запрос этому серверу.

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


Удаление реплики из базы данных общих папок

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

  1. Работая на сервере ExServ01, администратор удаляет сервер ExServ01 из списка реплик папки.

  2. Сервер ExServ01 помечает свою реплику (копию папки на сервере ExServ01) как ожидающую удаления.

    Клиенты больше не могут получать доступ к папке с использованием этой базы данных.

  3. Сервер ExServ01 отправляет сообщение иерархии.

  4. Сервер ExServ02 обновляет свою копию списка реплик папки, отражая состояние ожидания удаления папки на сервере ExServ01.

    Сервер ExServ02 больше не отправляет клиентов, ищущих данную папку, на сервер ExServ01.

  5. Сервер ExServ01 отправляет серверу ExServ02 запрос состояния.

  6. Сервер ExServ02 отправляет серверу ExServ01 сообщение о состоянии. Если реплика на сервере ExServ02 устарела, ExServ02 вносит в массив обратной засыпки соответствующие записи. В течение пяти минут сервер ExServ02 отправляет серверу ExServ01 соответствующий запрос на обратную засыпку.

  7. Сервер ExServ01 проверяет, чтобы реплика папки на сервере ExServ02 содержала всю информацию, которую содержит реплика, ожидающая удаления. Если это не так, ExServ01 отправляет соответствующие обновления содержимого и возвращается к действию 5. В противном случае ExServ01 переходит к действию 8.

    Данный процесс предотвращает потерю содержимого при удалении одной реплики, пока существуют другие реплики.

  8. Сервер ExServ01 устанавливает для реплики пометку «удалить сейчас». Во время следующего цикла обслуживания реплика будет удалена с сервера ExServ01.

  9. Сервер ExServ01 отправляет сообщение иерархии.

  10. Сервер ExServ02 удаляет сервер ExServ01 из своей копии списка реплик папки.

Рекомендации по внедрению репликации

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

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

Репликация общих папок и непрерывная репликация

Непрерывная репликация и репликация общих папок — два принципиально различных способа репликации, встроенных в Exchange. Из-за ограничений совместимости непрерывной репликации и репликации общих папок существует специальное руководство для комбинирования репликации общих папок с непрерывной репликацией. См. это руководство в разделах Планирование кластерной непрерывной репликации, Планирование локальной непрерывной репликации и Резервная непрерывная репликация.

Дополнительные сведения

Дополнительные сведения об общих папках см. в разделе Работа с общими папками.

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

Дополнительные сведения об управлении базами данных общих папок см. в разделе Управление базами данных общих папок.



Последовательность событий при удалении реплики из базы данных общих папок
Последовательность событий при добавлении реплики в базу данных общих папок