В статье «Окно в мир AD» (опубликованной в №7 Windows 2000 Magazine/RE за 2001 г. - прим. ред.) я рассказал о том, как с помощью утилиты Repadmin из комплекта ресурсов Microsoft Windows 2000 Server Resource Kit отыскивать партнеров контроллера домена по репликации и как использовать в запросах соглашения, принятые разработчиками протокола доступа к каталогам Lightweight Directory Access Protocol (LDAP). Однако Repadmin «умеет» и кое-что еще, например заставлять упомянутых партнеров по репликации выполнять процедуру синхронизации.

Допустим, у нас есть два контроллера доменов - ds1 и ds2, - и оба они входят в домен acme.com. Мы хотим запустить сценарий, который наилучшим образом выполняется в том случае, когда на контроллерах доменов хранятся согласованные копии каталога Active Directory (AD). Поэтому требуется синхронизировать копии каталога, хранящиеся на контроллерах ds1 и ds2. Поскольку служба AD предусматривает лишь считывание изменений баз каталога, произошедших на других контроллерах, для синхронизации содержимого двух контроллеров домена требуется инициализировать два события. Во-первых, контроллер ds1 должен занести в свою базу все изменения, произошедшие в базе контроллера ds2, а во-вторых, необходимо дать команду контроллеру домена ds2 внести изменения, которые были сделаны на контроллере ds1. Необходимо, чтобы произошли оба эти события, ибо другие контроллеры домена уже могут иметь измененные копии ds1 или ds2.

Команда контроллеру домена направить запрос на получение обновления с другого контроллера дается с помощью следующей синтаксической конструкции:

repadmin /sync	
	 /force

Термин Namingcontext применяется в протоколе LDAP для обозначения конкретной базы данных, которую необходимо реплицировать. Так, в соответствии со стандартом LDAP, контекст именования домена AD up-town.acme.com таков: dc=uptown,dc=acme,dc=com. Термин DestinationDC-name обозначает DNS-имя контроллера домена, направляющего запрос. Таким образом, в команде, предписывающей контроллеру домена ds1 принять изменения, внесенные в копию каталога AD, хранящуюся в контроллере ds2, вместо «destinationDCname» следует указать «ds1.acme.com».

Последний параметр этой конструкции - sourceDCGUID. Вместо него нужно указать глобально уникальный идентификатор (globally unique ID, GUID) контроллера домена, с которым будет синхронизировать свои данные контроллер ds1. Получить эту информацию можно с помощью переключателя /showreps утилиты Rep-admin. В ответ Repadmin выведет на экран несколько строк данных, и одна из первых строк будет выглядеть примерно так, как показано на Рисунке 1. Часть строки после двоеточия - это и есть идентификатор GUID указанного контроллера домена. Если бы этим контроллером домена был контроллер ds2, мы могли бы с помощью приведенной в Листинге 1 команды уведомить контроллер домена ds1 о необходимости принять нужную для репликации информацию о домене acme.com у контроллера домена ds2. По ответу команды (который может быть примерно таким: Sync from 8e90169a-dbf4-461b-97f5-1535085b9c04 to dun.win2ktest.com completed successfully) можно заключить, успешно ли завершилась процедура репликации.

objectGuid : 8e90169a-dbf4-461b-97f5
-1535085b9c04

Рисунок 1. Так может выглядеть строка ObjectGUID, генерируемая утилитой Repadmin.

Листинг 1. Синхронизация с конкретным контроллером.
repadmin /sync dc=acme, ds1.acme.com 8e90169a-
dbf4-461b-97f5-1535085b9c04 /force

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

repadmin /syncall	
 /force

Если необходимо, чтобы контроллер домена ds1 принял изменения у всех партнеров по репликации, нужно ввести с клавиатуры следующую конструкцию:

repadmin /syncall ds1.acme.com
dc=acme,dc=com /force

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

В течение 15 мин с момента подключения к сети нового контроллера домена на нем будет активизирована внутренняя программа проверки целостности Knowledge Consistency Checker (KCC), ответственная за выбор партнеров по репликации. Если не хочется ждать, можно форсировать запуск программы KCC с помощью следующей команды:

repadmin /kcc 

где DCname - это DNS-имя данного контроллера домена.

Марк Минаси - редактор Windows NT Magazine, MCSE. С ним можно связаться по адресу: mark@minasi.com.