Марк Минаси (www.minasi.com/gethelp) – старший редактор журнала Windows IT Pro, сертифицированный системный инженер по продуктам Microsoft

Система Windows Server 2003 — очень хороший продукт. На самом деле настолько хороший, что очень многие специалисты до сих пор не перевели свою службу каталогов Active Directory с версии 2003 на 2008 или 2008 R2. По крайней мере, такое объяснение я слышал от многих людей, которые интересуются, как можно добавить первый контроллер домена версии 2008/2008 R2. :

* проверка и «очистка» вашей службы каталогов Active Directory на основе версии 2003, перед началом перехода на версию Windows Server 2008 или 2008 R2;

* обновление схемы, группы и других элементов Active Directory при помощи программ Adprep и adprep32;

* удаление службы репликации файлов (FRS), визави папки Sysvol, с помощью приложения dfsrmig позволяющее начать использование механизмов DFS-R и забыть о FRS;

* перемещение любых общих ресурсов службы DFS из FRS в DFS-R; на самом деле это сложнее, чем должно быть, если вы переходите с версии 2003 на R2.

Готовы двигаться дальше от версии 2003? Давайте преодолеем первое препятствие.

Шаг нулевой: не всякий лес можно обновить

Учтите, что вы не сможете добавить контроллер домена версии 2008 и R2 в лес, который находится в режиме Mixed Mode для версии 2000 или в режиме Interim Mode для версии 2003. Если вы не уверены, в каком режиме работы находится лес в данный момент, откройте оснастку Active Directory Domains and Trusts, щелкните правой кнопкой мыши по значку с надписью Active Directory Domains and Trusts а затем нажмите кнопку Raise forest functional level. В открывшемся диалоговом окне отобразится текущий режим работы леса, как на приведенном экране.

 

Просмотр режима работы леса
Экран. Просмотр режима работы леса

В данном случае вы видите, что я работаю с лесом в режиме 2008 R2. Если у вас есть лес версии 2000, работающий в режиме Mixed Mode, или лес версии 2003, работающий в режиме Interim Mode, это означает, что в какой-то момент в вашей сети присутствовали контроллеры домена версии NT4. И если это так, то, возможно, пришло время пожелать им всего хорошего. Как только их не станет, можно перевести лес версии 2000 в режим Native Mode, а лес версии 2003 в режим Forest Functional Level, и тогда можно начать думать о внедрении контроллеров домена версии 2008 или R2.

Шаг первый: проверьте трубы с помощью Repadmin

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

Как правило, добавление первого контроллера домена версии 2008/08R2 — безопасный процесс, однако если в каталоге AD есть нерешенные проблемы, попытка добавить первый контроллер домена 2008/08R2 будет равносильна попытке больного астмой пробежать марафон в сезон цветения. Я часто сталкиваюсь со службами каталогов AD, которые работают уже на протяжении семи лет и кажутся вполне нормальными, но не являются таковыми. Может быть, один из контроллеров домена почему-то «пропал с радаров», с точки зрения других контроллеров домена, но этот контроллер домена не знает, что он вне пределов досягаемости, и, возможно, даже исходит из того, что это они все пропали, и решает взять командование на себя. Может быть, папка Sysvol перестала реплицироваться на контроллере домена, потому что в версии 2003 она выключает саму себя, если «видит» меньше гигабайта свободного места на своем томе, причем без предупреждения. И есть целый ряд столь же несерьезных причин, из-за которых папка Sysvol «самоустраняется», и это один из основных факторов, из-за которых стоит переводить домен хотя бы в режим работы 2008, поскольку в этот момент вы сможете послать «последний привет» старой транспортной системе Sysvol (FRS) и перейти на использование DFS-R. Но эту историю мы рассмотрим позже. Или вдруг ваш сервер с ролью мастера схемы выключен и никто не заметил, потому что вы действительно не меняете схему так часто, а ведь существует необходимость изменить схему, прежде чем вы сможете добавить свой первый контроллер домена версии 2008/08R2.

Если прибегнуть к аналогии системы слива воды в туалете и уподобить трубам пути репликации AD, то прежде чем пытаться установить в некоторые из туалетов сиденья с подогревом и спрей-очиститель (то есть функции AD), давайте просто включим слив во всех туалетах и убедимся, что трубы не протекают, прежде чем нагружать систему. Если что-то не в порядке с AD, прежде чем изменять компоненты, давайте выясним, в чем дело, и сразу исправим ошибки. А где же тогда кнопка слива воды? Ее функции выполняет лучший инструмент репликации AD на свете — Repadmin.

На случай, если вы не используете Repadmin, поясню, что данный инструмент впервые был реализован в качестве компонента пакета Resource Kit еще в системах Server 2000 и 2003, а затем в версии 2008 встроен в операционную систему. Repadmin — инструмент командной строки, поэтому попробуйте его запустить в системе, в которой установлено данное приложение, открыв командную строку и введя команду:

Repadmin /syncall dcname

где dcname — это имя сервера контроллера домена, с которого вы работаете. Например, если я авторизовался на машине с именем DC64.bigfirm.com, следует ввести команду:

repadmin /syncall dc64

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

repadmin /syncall.

но эта команда перестала работать в версии 2008, если мне не изменяет память. В любом случае, давайте проанализируем, что действительно делает данный инструмент. Параметр /syncall дает указание: «связаться со всеми партнерами репликации и попросить их рассказать обо всем, что изменилось с тех пор, как их в последний раз спрашивали». Теперь, учитывая, что системы, построенные на платформе 2003 SP1 или более новых версиях, производят опрос своих партнеров каждые 15 секунд, а более ранние версии систем выполняют проверку каждые пять минут, и вполне вероятно, что ваш контроллер домена не узнает ничего нового от своих партнеров, но это не имеет значения. Важно только одно — убедиться, что «команда выполнена успешно». Поверьте мне, нет более приятных слов для администратора. Опять же, нам на самом деле все равно, что было доставлено – важно, чтобы трубы были чистыми, а успешное выполнение команды подтверждает это.

Но что же мы реплицировали? Любопытно, что мы, по существу, реплицировали схему, и опять же, учитывая, что схема изменяется не сильно, у нас не было причин для репликации чего-то большего. Точнее, мы реплицировали «контекст именования конфигурации» — сочетание схемы и своего рода «краткого обзора» по лесу – объекты, которые, как и схема, не так уж часто меняются, в отличие от списка доменов, ролей FSMO и контроллеров домена в лесу.

Далее проделайте данную операцию на каждом контроллере домена в лесу. Мы собираемся изменить схему, но схема — это атрибут леса, а не домена, поэтому мы хотим быть на 100 % уверены, что каждый контроллер домена в лесу желает и в состоянии принять изменения схемы.

Работа с проблемными контроллерами домена

Все ли ваши контроллеры домена справились? Если да, то у нас есть и другие тесты, которые нужно попробовать, и я расскажу о них чуть позже. Но что если запуск Repadmin выявил сбой на определенном контроллере домена или на двух? В таком случае найдите минутку и локализуйте неисправный контроллер домена. Если у вас есть три контроллера домена с именами DC1, DC2 и DC3 и контроллер DC3 неисправен, то три команды Repadmin покажут хотя бы один сбой. Однако при детальном рассмотрении будет видно, что при запуске инструмента на контроллере DC1 репликация работает с контроллером DC2, но не с DC3, а на контроллере DC2 Repadmin успешно выполняется для DC1 и возвращает ошибку при обращении к DC3, и все попытки репликации от DC3 возвращают ошибку. Все это так или иначе указывает на контроллер DC3.

Когда вы выясните, что проблемы возникают на контроллере DC3, у вас есть несколько вариантов. Вы можете потратить некоторое время, пытаясь узнать, что с ним не так. Если вы пойдете по этому пути и получите результат, то превосходно, снимаю шляпу, но позвольте мне открыть вам маленький секрет: обычно не стоит тратить много времени на один проблемный контроллер домена. Один из лучших ремонтных и диагностических инструментов в AD — это DCPROMO. Если у меня неполадки с контроллером домена, я предпочитаю запустить DCPROMO для «отключения контроллера домена», а затем запустить его снова, чтобы попытаться повторно контроллер включить. Иногда это полностью решает проблему, и можно продолжать работать. Однако бывают случаи, когда использование DCPROMO не помогает, но при этом данный инструмент оставляет в папке \Windows\logs очень полезные файлы журналов, которые могут помочь уяснить суть проблемы.

В любом случае, мой совет все тот же: не начинайте переход на версию 2008 или 08R2, пока все контроллеры домена не будут нормально работать. Так что если у вас есть контроллер домена, который просто не может выполнять репликацию, удалите его из службы каталогов AD. Поскольку контроллер не может выполнять репликацию, самый безопасный способ удаления состоит из трех этапов:

— отсоедините контроллер домена от сети;

— запустите Dcpromo / forceremoval;

— на контроллере с системой версии 2003 используйте утилиту NTDSUTIL, чтобы выполнить «очистку метаданных» и удалить контроллер из каталога AD. Как это делается, описано в книге Mastering Windows Server 2003 и в статье Microsoft Knowledge Base 230306. Если, с другой стороны, у вас уже есть хотя бы один контроллер домена с системой Windows Server 2008, то все, что вам нужно сделать, это запустить оснастку Active Directory Users and Computers на данном сервере, заглянуть в подразделение контроллеров домена, найти неисправный контроллер домена, а затем щелкнуть правой кнопкой мыши и удалить его. Да, это так просто. Вот одна из причин, почему я люблю версии 2008 и 2008 R2.

В любом случае, мы делаем одно и то же: вырываем контроллер домена из Active Directory с корнем. Как только его не станет, запустите тесты Repadmin снова и все должно быть в порядке. В конце концов, необходимо повторно попробовать запустить DCPROMO на неисправных серверах, чтобы сделать их снова контроллерами домена, но для начала предлагаю поместить первый контроллер домена 2008/2008R2 в лес. И перед этим давайте проведем еще один тест.

Репликация контекста именования доменов

До сих пор мы использовали инструмент Repadmin, чтобы проверить, корректно ли все контроллеры домена в нашем лесу реплицируют «контекст именования конфигурации». Я предложил вам сделать это в начале, потому что контекст именования конфигурации содержит схему, а мы собираемся обновить ее. Фраза «контекст именования», кстати, по сути, означает «база данных», и как я уже сказал, контекст именования конфигурации является относительно небольшой частью общих сведений о лесе. Каждый домен в лесу также имеет собственный контекст именования, так что если у вашего леса есть, скажем, пять доменов, то у вас в лесу имеется шесть контекстов именования: по одному для каждого домена, и один контекст именования конфигурации для всего леса. Служба DNS также может иметь что-то вроде контекста именования, но в данном случае нам не нужно беспокоиться об этом.

Прежде чем ввести в домен новый контроллер, необходимо быть уверенным не только в том, что контекст именования конфигурации реплицируется без проблем, но и в том, что контекст именования домена, куда мы собираемся добавить наш первый контроллер версии 2008 или R2, успешно реплицируется. В настоящее время в 99,9% случаев у меня не возникает проблем, поскольку если контекст именования конфигурации реплицируется нормально, то и контекст именования домена реплицируется нормально, но удостовериться все равно не помешает. Команда Repadmin, которая активирует репликацию контекста именования контроллера домена, выглядит так:

repadmin /syncall dcname LDAP-name-of-domain

Как вы знаете, многие инструменты AD требуют, чтобы вы не писали имя своего домена в формате UK.bigfirm.com, а вместо этого использовали именование в формате LDAP (dc=UK,dc=bigfirm,dc=com). Допустим, вы запустили Repadmin на контроллере домена, который называется Surry.uk.bigfirm.com. В этом случае нужно ввести команду:

repadmin /syncall surry dc=uk,dc=bigfirm,dc=com

Операцию следует повторить на всех контроллерах в домене и удалить все проблемные контроллеры. После того как вы все это сделаете, можно переходить к следующему шагу, использованию утилиты ADPREP.

Реорганизация Sysvol

Ранее я упомянул, что считаю разумным немного «постучать по шинам» леса, прежде чем думать о добавлении новой версии контроллера домена, и что, на мой взгляд, хорошей базовой проверкой была бы принудительная репликация «контекста именования конфигурации» леса, базы данных, содержащей структуру AD леса (схему), его контроллеров домена и доменов, с помощью команды наподобие следующей:

repadmin /syncall dc1

Эта команда предписывает контроллеру домена dc1 попытаться провести репликацию со своими партнерами. О чем я не упомянул, так это о том, что если у вас используется более одного сайта в AD, то вы, возможно, захотите добавить параметр /e, например:

repadmin /syncall dc1 /e.

Видите ли, параметр /syncall вынуждает контроллер домена, на котором вы используете команду, выполнять репликацию со своими партнерами только в рамках того сайта, в котором он находится, пропуская репликации с любыми контроллерами домена из других сайтов. Параметр /е дает указание: «проведи репликацию с удаленными партнерами по репликации, если таковые имеются». Мощный инструмент этот Repadmin, не так ли? Поверьте мне, даже если вы работаете с AD уже много лет, всегда Repadmin позволяет узнать что-то новое.

Данная процедура применима для репликации не только контекста именования конфигурации, но и всего домена. Например, команда

repadmin /syncall dc1 /e dc=bigfirm, dc=com

предписывает серверу DC1 (контроллер домена в домене с именем bigfirm.com) выполнить репликацию со всеми своими партнерами, локальными и удаленными.

Время проверить Sysvol

Давно ли вы проверяли папку Sysvol? Как известно, она является общим ресурсом, который вы обнаружите на любом контроллере домена, ресурсом, который содержит файлы, необходимые для контроллеров домена – «глыбы» компонентов объектов групповой политики (GPO) и «мелкие камушки» шаблонов групповых политик (GPT), а также сценариев регистрации.

Архитектура Sysvol является встроенной реализацией распределенных файловых служб (DFS), имеющих нескольких хозяев, а это означает, что если у вас есть четыре контроллера домена, названные DC1, DC2, DC3 и DC4, то вы можете положить файл в любой из четырех экземпляров Sysvol, и механизмы DFS гарантируют, что в итоге копия этого файла будет храниться в каждом из трех других экземпляров папки Sysvol. Благодаря тому, что вы можете ввести новый файл в семейство папок Sysvol, данная архитектура считается «имеющей нескольких хозяев». Альтернативой была бы система (в данному случае она не используется), в которой можно было бы добавлять новый файл для всех папок Sysvol только с одного контроллера домена — это была бы система «с одним мастером». Как вы знаете, контроллеры домена действуют подобным образом при внесении изменений в учетные записи AD, и, конечно, можно создать новую учетную запись пользователя на любом контроллере домена, и скоро она появится на всех контроллерах.

Одним из досадных различий между репликацией каталога AD и репликацией папки Sysvol является отсутствие такого инструмента как Repadmin для репликации Sysvol. Ситуация немного лучше в системе Server 2008, но, увы, не существует надежного способа принудительного выполнения репликации папки Sysvol по каналам распределенной сети между контроллерами версий 2000 и 2003, по крайней мере для систем версии ниже 2003 SP2. Если Вы перезапустите службу File Replication Service в системах версии 2000 или 2003, то локальная репликация Sysvol, а иногда и репликация по каналам WAN, могут быть выполнены немедленно, но в случае с WAN относительно скорости нет никаких гарантий. В версиях 2003 SP3 и выше предусмотрена команда, которая позволяет провести репликацию между исходным контроллером домена (DC3, в данном примере) и целевым контроллером домена (DC2), которая выглядит так:

ntfrsutl.exe forcerepl DC2 /r «Domain System Volume (SYSVOL share)» /p DC3

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

Зайдите на контроллер домена. В папке Sysvol создайте файл. Обычный текстовый файл подойдет. Назовите его <имя контроллера домена>.txt. Например, на контроллере домена с именем dc6.bigfirm.com создайте файл в папке Sysvol с именем dc6.txt. Если хотите более подробно, то войдите на контроллер домена и откройте окно командной строки. Командная строка имеет повышенные привилегии, если вы работаете в системе Server 2008 или более новой версии. Затем введите команду:

copy con \\servername\Sysvol\domainname\servername.txt

Таким образом, в случае контроллера домена с именем DC6 в домене с именем bigfirm.com нужно ввести:

copy con \\dc6\sysvol\bigfirm.com\dc6.txt

Далее введите любой текст и в конце нажмите клавишу F6 (или Ctrl-Z). Вы увидите сообщение:

1 file(s) copied.

Хочется думать, что миллионы программистов, работающие в компании Microsoft, способны написать код, содержащий логический оператор: «если количество скопированных файлов равно 1, то показать сообщение «<количество> file copied», а в противном случае показать сообщение «<количество> files copied»». С выходом каждой новой версии Windows я продолжаю надеяться, но безрезультатно.

Итак, вы создали небольшой текстовый файл, имя которого указывает на контроллер домена, на котором он был создан. Повторите процедуру для каждого контроллера домена и подождите немного. Или, как вариант, используйте команду ntfrsutl. Затем зайдите на каждый контроллер домена и просмотрите папку Sysvol, там должны быть файлы с именами всех контроллеров домена. Если какого-то файла нет, проведите небольшую диагностику. Если файл dc4.txt с контроллера DC4 нигде не появился, то, вероятно, на контроллере DC4 есть проблемы.

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

Предварительная подготовка AD

Прежде чем вы сможете установить свой первый контроллер домена версии 2008 R2 или 2008, вам придется подготовить к этому событию лес и домен. Лес будет сильнее затронут в данном процессе, как и в любом потенциально возможном сценарии, в котором нам приходится изменять структуру каталога AD и «схему». Напомню, что для каждого домена в лесу не используется отдельная схема — есть только одна схема на весь лес, а это значит, что если вы работаете в домене us.bigfirm.com и в том же лесу есть домен sweden.bigfirm.com, то из вежливости стоит предупредить скандинавов о предстоящем изменении схемы.

Слабым звеном в процессе обновления каталога AD версии 2003 до версии 2008 или 2008 R2 является то, что вы должны выполнить первую часть подготовки, когда обновляется схема, с особого контроллера домена, который представляет собой мастер схемы (кроме тех случаев, когда у вас используется удаленный рабочий стол). Это единственный контроллер домена в вашем лесу, с которого вы можете изменить схему. В тех случаях, когда вы не знаете, какой из контроллеров домена является мастером схемы, выполните команду netdom query fsmo с одного из контроллеров домена. Это еще одна причина быть вежливым со шведами — у них может быть мастер схемы. Как только вы окажетесь на контроллере домена, который является мастером схемы для вашего леса, войдите в систему под учетной записью с правами администратора предприятия. Затем перейдите в папку Sources на установочном DVD Server 2008/2008R2, где вы найдете папку с именем ADPrep. Откройте командную строку – в версии 2008 она имеет повышенные привилегии — и перейдите к этой папке. Затем введите либо команду

adprep /forestprep

либо

adprep32 /forestprep

На установочных DVD-дисках систем Server 2008 и R2 присутствуют оба этих приложения, потому что если система Server 2008 поставляется как в 32-разрядной, так и в 64-разрядной версиях, то система Windows Server 2008 R2 поставляется только в 64-разрядной версии. Таким образом, так как система Server 2008 R2 может быть только 64-разрядной, все исполняемые файлы, которые поставляются вместе с ним, должны работать только с 64-разрядным процессором. В этом-то и проблема, потому что, если у вас используются контроллеры домена на основе Server 2003 SP2, велика вероятность, что контроллеры домена (и мастер схемы, в частности) работают на 32-разрядной версии системы Server, которая не сможет запустить 64-разрядную версию инструмента adprep.exe. Вот почему в папке Sources\Adprep на образе установочного DVD для 64-разрядной версии вы увидите не только файл adprep.exe, но и приложение adprep32.exe, которое, как вы уже, наверное, догадались, является версией инструмента ADPrep, поддерживающей работу с 32-разрядным процессором.

В любом случае, после выполнения приложения Adprep /ForestPrep или adprep32/ ForestPrep ваш мастер схемы получит новую схему, которая позволит размещать контроллеры домена на платформе R2. Напомним, что это единственный контроллер домена, который знает об этой новой схеме на данный момент, поэтому не помешало бы распространить эти изменения на другие контроллеры домена в лесу. Я предпочитаю делать это немедленно, заходя на каждый контроллер домена и запуская команду Repadmin /syncall снова, но на этот раз с ключом /P (да, с заглавной буквы P), который сообщит контроллеру домена, на котором вы запускаете команду: «не спрашивай партнеров, что у них нового, сообщи им, что твоя конфигурация является самой новой». На контроллере домена с именем DC6 я бы ввел команду

repadmin /syncall /e /P dc6.

Затем я перешел бы к его партнерам по репликации и выполнил бы эту команду снова, но опять же вам придется заменить dc6 на имя того контроллера домена, на котором вы работаете. Можно увидеть партнеров контроллера домена по репликации, введя команду

repadmin /showrepl domaincontrollername

После того как вы распространите новую схему по всему лесу, необходимо выполнить еще одну процедуру, прежде чем вы сможете установить свой первый контроллер домена версии 2008 или 2008 R2, — выполнить команду Adprep /DomainPrep. Действие ключа /DomainPrep для разных версий системы Server различно, но в основном при использовании данного ключа создаются новые группы и меняются разрешения для объектов, связанных с AD. Когда разработчики Microsoft выпустили систему Windows NT 3.1, они решили сознательно сделать ее в некоторых аспектах небезопасной, потому что уязвимые места давали системе NT обратную совместимость с операционными системами Windows for Workgroups и OS/2 LAN Manager. Это было не оптимальным решением, но оно было удачным с точки зрения «заставить-пользователей-купить-NT». Со временем уязвимости были устранены, так как стало очевидным, что рынок не нуждается в них.

Теперь перейдите к инфраструктуре FSMO в своем домене — в отличие от мастера схемы, она уникальна для каждого домена — и зарегистрируйтесь в системе. Аналогично, используя файлы из папки Sources \Adprep, запустите приложение Adprep с ключом /DomainPrep из командной строки:

adprep32 /domainprep

или

adprep /domainprep

Все, начиная с этого момента, вы готовы добавить свой первый контроллер домена версии R2 или 2008, запустив на выбранной машине команду DCPROMO.