Настройки процесса обработки и оптимизация инфраструктуры помогают улучшить производительность.
Скорость обработки GPO зависит от параметров настройки и инфраструктуры. Преимущества использования Active Directory (AD) в среде Windows известны. Среди них - наличие объектов групповой политики (Group Policy Objects, GPO), мощных инструментов управления серверами Windows 2000 и рабочими станциями Windows XP/2000. Но нередко чрезмерное увлечение передовой технологией приводит к снижению системной производительности. В процессе начальной загрузки компьютера или регистрации пользователя настройки системы и профиль пользователя могут воздействовать на десятки объектов GPO, связанных с различными уровнями иерархии AD. В результате на обработку GPO при загрузке и регистрации тратится слишком много времени.
Управляя процессом обработки GPO и оптимизируя инфраструктуру, можно свести негативные последствия к минимуму. Но для этого необходимо знать, как Windows 2000 хранит и применяет настройки GPO, как администратор может изменить параметры и построить эффективную инфраструктуру групповых политик (полагаю, что читатели уже имеют представление о применении GPO в среде AD).
Основы обработки GPO
Объекты GPO связаны с контейнерными объектами (сайтами, доменами и организационными подразделениями - OU) внутри AD, и все объекты computer и user в данном контейнере испытывают воздействие GPO. Процесс обработки GPO сложен, так как ко всем объектам computer и user должны быть применены любые GPO, связанные с доменом, родительскими и дочерними OU и сайтом, где находятся объекты. Можно связать один GPO с несколькими контейнерами, и несколько GPO - с одним контейнером. В первом случае влияние на скорость обработки объектов групповой политики незначительно, зато во втором возможны серьезные негативные последствия. Чем больше GPO необходимо применить к данному объекту computer или user, тем больше времени уйдет на загрузку компьютера или регистрацию пользователя.
Параметры GPO хранятся в двух компонентах Windows 2000: контейнере Group Policy Container (GPC) в AD и шаблоне Group Policy Template (GPT) в каталоге Sysvol на контроллерах домена (DC). В процессе создания нового GPO в оснастке Active Directory Users and Computers консоли управления Microsoft Management Console (MMC) или оснастке Active Directory Sites and Services создаются GPC и GPT, а GPO связывается с избранным контейнерным объектом. Если изменить GPO с помощью оснастки MMC Group Policy, то изменяются как GPC, так и GPT.
Обработка параметров GPC и GPT возлагается на группу библиотек DLL, называемых клиентскими расширениями. Клиентские расширения перечислены в различных подразделах HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsNTCurrentVersionWinlogon GPExtensions локальных реестров рабочих станций Windows XP/2000. В каждом подразделе с глобальным уникальным идентификатором GUID указывается имя DLL, категория групповой политики, для обработки которой используется расширение (например, Folder Redirection, Software Installation), и параметры, определяющие действия расширения. Так, параметры определяют, будет ли расширение обрабатывать GPO при подключении компьютера к контроллеру домена через медленное сетевое соединение, должно ли расширение периодически обновлять параметры политики и следует ли применять GPO, не изменившийся после последнего сеанса связи.
Клиентские расширения - основные «рабочие пчелки» GPO, но некоторые сетевые операции необходимо выполнить до их запуска. Взаимодействие по сети обычно занимает значительную часть всего времени, затрачиваемого серверами и рабочими станциями на обработку GPO. При загрузке рабочей станции Windows 2000 в домене AD выполняются следующие действия.
- Рабочая станция отправляет на DNS-сервер запрос для поиска DC на сайте рабочей станции. Точнее, рабочая станция запрашивает в DNS запись типа SRV _ldap._tcp.sitename._si-tes.dc._msdc.domain-name. В этой записи содержится имя контроллера DC (в имени сайта), который обрабатывает запросы LDAP (Lightweight Direc-tory Access Protocol) для домена.
- Рабочая станция устанавливает защищенное соединение с DC.
- Рабочая станция отправляет на DC эхозапрос, чтобы определить скорость сетевого соединения с DC (например, коммутируемое, T1). По умолчанию, медленной считается линия со скорос-тью передачи данных менее 500 кбит/с. Подробнее о том, как Windows 2000 опознает медленные линии, можно прочитать в статье "How a Slow Link Is Detected for Processing User Profiles and Group Policy" по адресу: http://support.microsoft.com/ default.aspx?scid=kb;en-us;q227260.
- Рабочая станция устанавливает привязку к AD через LDAP.
- Рабочая станция отправляет через LDAP запрос в AD и получает список всех GPO, связанных с OU рабочей станции или родительским OU.
- Рабочая станция отправляет через LDAP запрос в AD и получает список всех GPO, связанных с доменом рабочей станции.
- С помощью LDAP рабочая станция запрашивает AD и получает список всех GPO, связанных с сайтом рабочей станции.
- Рабочая станция через LDAP опрашивает GPC (в AD) и определяет путь к шаблону GPT объекта GPO (в Sysvol).
- Рабочая станция читает файл gpt.ini, расположенный в GPT каждого GPO. В этом файле указан номер текущей версии GPO.
- Клиентские расширения рабочей станции обрабатывают полученные GPO.
В этом перечне показаны только специфичные для компьютера GPO, которые применяются при начальной загрузке машины. После регистрации пользователя Windows 2000 должна обработать все GPO для этого пользователя. В ходе процедуры операционная система повторяет шаги 4-10 (для сетевой среды действия 1-3 уже выполнены).
Как повысить скорость обработки
Помимо большого числа GPO, с которыми приходится иметь дело объекту computer или user, на длительность процесса могут повлиять многочисленные действия по обработке GPO при начальной загрузке компьютера, регистрации пользователя и оформлении доступа к «рабочему столу». Еще один важный фактор, определяющий время обработки GPO, - скорость преобразования имен в DNS и поиска DC на сайте рабочей станции. Чем больше времени уходит на выполнение базовых подготовительных действий, тем длиннее процесс обработки GPO. Если машины Windows XP или 2000 не получат корректных записей типа SRV, то обработка GPO, возможно, выполнена не будет.
Даже базовые операции с объектами групповой политики иногда требуют много времени. Однако этот процесс можно ускорить с помощью некоторых параметров и функций Group Policy. Как показано на Экране 1, администратор может получить доступ к клиентским расширениям и функциям Group Policy через оснастку Group Policy. Необходимо открыть консоль Group Policy и перейти в раздел Computer Configuration, Admi-nistrative Templates, System, Group Policy. Затем следует выбрать политику в правом окне и открыть диалоговое окно Poperties политики, чтобы просмотреть и изменить ее параметры. В частности, большое значение имеют политики, которые управляют определением медленной линии, обработкой GPO независимо от версии, синхронным и асинхронным режимами.
Экран 1. Политики для управления обработкой GPO. |
Определение медленной линии. По умолчанию, клиентские расширения, которые управляют переназначением папок (Folder Redirection), установкой программ (Software Installation), сценариями (Scripts) и квотами диска (Disk Quota), не обрабатывают GPO, если рабочая станция обнаруживает медленную линию связи. Если активизировать функцию выявления медленной линии, то меньше клиентских расширений будет занято обработкой GPO, и обработка пойдет быстрее. Стандартную скорость медленной линии 500 кбит/с можно изменить с помощью политики Group Policy slow link detection (повышение порога для принудительного обнаружения медленной линии - не лучший метод ускорения обработки GPO).
Контроль версий GPO. В GPC и GPT каждого GPO указан номер версии GPO. Windows 2000 увеличивает этот номер на 1 при каждом изменении объекта групповой политики. В разделах HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindowsNT CurrentVersionGroup PolicyHistory и HKEY_CURRENT_USERSOFTWAREMicrosoft WindowsNTCurrentVersion Group PolicyHistory локальных реестров Windows XP и 2000 хранится история каждого цикла обработки GPO. По умолчанию, клиентские расширения не обрабатывают GPO, если номер версии объекта не изменился. Если номер версии GPO равен 0 (в объекте групповой политики не установлено никаких параметров), то клиентские расширения даже не попытаются применить данный GPO.
Принудительная обработка клиентс-кими расширениями всех GPO независимо от их версии увеличивает затраты времени. В папке Group Policy следует выбрать политику из правого окна, открыть диалоговое окно Properties политики и выбрать параметр активизации политики. При этом необходимо убедиться, что флажок Process even if the Group Policy objects have not changed сброшен.
Асинхронная обработка. По умолчанию, операции обработки GPO в Windows 2000 выполняются синхронно: все клиентские расширения должны завершить обработку всех GPO, назначенных для данной машины (при начальной загрузке системы), прежде чем на экране появится диалоговое окно регистрации. Когда пользователь регистрируется на компьютере с Windows 2000, клиентские расширения, обрабатывающие GPO уровня user, должны завершить работу до того, как пользователь получит доступ к рабочему столу и сможет приступить к работе. Если обработка многочисленных GPO существенно увеличивает время загрузки системы или регистрации пользователя, то можно настроить Windows 2000 на асинхронную обработку GPO (через политики Apply Group Policy for computers asynchronously during startup и Apply Group Policy for users asynchronously during logon). Однако GPO, обработка которого ко времени регистрации пользователя не завершена, может не вступить в силу до следующего сеанса. Этот пропуск может вызвать неполадки в таких категориях групповой политики, как Software Installation и Folder Redirection. В XP есть функция Fast logon optimization (быстрая оптимизация процедуры регистрации), поэтому GPO по умолчанию обрабатываются асинхронно. Таким образом, клиентские расширения компьютера с XP могут и не завершить обработку всех GPO к моменту вывода на экран окна регистрации предоставления доступа к рабочему столу. Обычно политики Software Installation и Folder Redirection вступают в силу после двух процедур регистрации.
В Windows 2000 также допускается асинхронная обработка для фонового обновления групповой политики. После начальной обработки в процессе загрузки или регистрации Windows 2000 периодически обновляет некоторые объекты, в частности, связанные с параметрами безопасности и административными шаблонами. Например, клиентское расширение, отвечающее за режим безопасности сервера или рабочей станции Windows 2000, по умолчанию обновляет все параметры GPO через каждые 90 мин. На DC стандартный период обновления - 5 мин. Периодическое обновление уменьшает ущерб, который наносят пользователи, самовольно изменяющие параметры безопасности между процедурами регистрации и перезагрузки.
Не все клиентские расширения поддерживают фоновое обновление параметров. Например, не обновляется политика Software Installation (нельзя удалить Microsoft Word, когда с ним работает другой пользователь). Кроме того, клиентские расширения не обновляют GPO, которые не изменялись. Чтобы запретить обновление GPO, следует открыть диалоговое окно Properties политики и установить флажок Do not apply during periodic background processing. Чтобы изменить общий режим фоновой обработки для компьютера, нужно активизировать и изменить политики Disable background refresh of Group Policy, Group Policy refresh interval for computers или Group Policy refresh interval for domain controllers.
Хотя фоновая обработка не оказывает существенного влияния на производительность системы, знать о ее существовании администратору необходимо. Можно активизировать протоколирование событий обработки GPO, чтобы отслеживать фоновые операции и диагностировать неполадки (подробности - во врезке «Протоколирование групповой политики»).
Расширенное управление
Методы повышения быстродействия, такие, как определение медленной линии, контроль версий GPO и асинхронная обработка, реализованы в Windows XP и 2000. Чтобы еще больше сократить время обработки GPO, можно явно задать несколько других параметров.
Отключение неиспользуемых параметров. В каждом GPO можно указать параметры, применяемые к пользователям и компьютерам. Но нет необходимости задавать оба типа параметров в одном GPO. Поэтому первая и самая простая мера повышения быстродействия - отключить неиспользуемые параметры GPO уровней computer и user. Предположим, что в процессе загрузки рабочая станция определяет, что ей предстоит обработать четыре GPO, лишь двум из которых назначена политика уровня computer. Два других объекта можно отметить как не имеющие политики уровня computer. В результате клиентским расширениям рабочей станции не придется отыскивать несуществующие параметры уровня computer, и время обработки сократится.
Чтобы отменить параметры GPO уровней computer и user, нужно открыть оснастку Active Directory Users and Computers или оснастку Active Directory Sites and Services, щелкнуть правой кнопкой мыши на контейнере, с которым связан GPO, и выбрать пункт Properties из контекстного меню. Затем следует перейти к закладке Group Policy диалогового окна Pro-perties, выбрать GPO и щелкнуть на кнопке Properties, чтобы открыть диалоговое окно Policy Properties объекта. С помощью флажков в разделе Di-sabled можно отключить неиспользуемые параметры настройки для пользователей и компьютеров. Можно выбрать оба флажка, но при этом отключается фактически весь GPO.
Назначение максимального времени ожидания. Еще один способ сократить время обработки GPO - задать максимальное время выполнения сценариев. Объекты GPO совместимы как со сценариями, выполняемыми при загрузке и завершении работы компьютера, так и со сценариями открытия и завершения сеанса пользователя. Сценарии могут быть представлены в виде любого исполняемого файла, командного файла или сценария Windows Script Host (WSH). Поскольку к данному пользователю или компьютеру можно применить несколько GPO, возможно последовательное выполнение нескольких сценариев. Но ошибки и некорректные сценарии могут привести к зависанию компьютера или бесконечным циклам. Например, системам Windows XP и 2000 может понадобиться до 10 мин для синхронной обработки GPO, и администратору будет нелегко определить причину задержки.
Чтобы избежать подобных проблем, можно задать максимальное время выполнения всех сценариев. В худшем случае зависший или зациклившийся сценарий будет работать в течение определенного времени. Однако следует помнить, что время ожидания относится к общему времени исполнения всех сценариев. Например, если назначить сценарии регистрации в каждом из десяти GPO домена AD и установить время ожидания 60 с, то все сценарии должны быть за 60 с выполнены полностью. Чтобы задать максимальное время исполнения сценария, следует открыть оснастку Group Policy, пройти по Computer Configuration, Administ-rative Templates, System, Logon (или Administrative Templates, System, Scripts в XP) и открыть диалоговое окно политики Maximum wait time for Group Policy scripts (см. Экран 2). Активизировать политику и изменить время ожидания можно на закладке Policy.
Экран 2. Назаначение максимального времени ожидания для сценариев Group Policy. |
Инфраструктура
Уменьшить или предотвратить потери времени при обработке GPO можно не только путем изменения режимов, но и с помощью хорошо спланированной инфраструктуры групповых политик. Уменьшив число создаваемых GPO, групп безопасности и кросс-доменных связей между объектами, можно ускорить обработку.
Ограничение числа GPO. Самая прос-тая мера - ограничить число GPO, обрабатываемых при запуске компьютера или регистрации пользователя. Я предлагаю для начала ограничить их число десятью, но предварительно необходимо провести испытания, так как количество объектов зависит от функций каждого из них. Следует также помнить, что в первый раз обработка GPO компьютера или пользователя отнимает больше времени, так как клиентские расширения должны применить все настройки. После завершения цикла обработки в первый раз, в дальнейшем при загрузке системы или регистрации пользователя будут обрабатываться только изменившиеся GPO (если администратор не назначил иной режим).
Ограничение групп безопасности. На обработку GPO может повлиять использование групп безопасности (локальных, глобальных и универсальных групп AD, в состав которых входят компьютеры и пользователи). С помощью групп безопасности можно фильтровать эффекты GPO - например, для применения GPO доменного уровня лишь к нескольким компьютерам или пользователям. Однако использование групп безопасности для этих целей сопряжено с большими затратами времени. Чем больше элементов управления доступом (ACE) связано с GPO, тем дольше приходится работать клиентскому расширению, чтобы определить, принадлежит ли данный компьютер или пользователь к одной из разрешенных групп. Таким образом, сократив список управления доступом (ACL), можно улучшить (или, по крайней мере, сохранить) производительность. Не следует без разбора применять ACL для фильтрации GPO для всех подряд компьютеров и пользователей. Лучше тщательно выбрать уровень привязки GPO. Желаемого результата можно добиться, привязав GPO к более низким уровням иерархии AD (например, к уровню OU вместо уровня домена).
Ограничение кросс-доменных связей. Еще один аспект инфраструктуры, который влияет на производительность, - использование GPO, связанных через границы доменов. Каждый GPO принадлежит одному домену AD, а GPC и GPT объекта расположены на контроллере этого домена. Предположим, что существует многодоменный лес AD. Можно связать GPO в одном домене (домен A) с другим доменом леса (домен B). Но если компьютер или пользователь в домене B обрабатывает GPO, расположенный в домене A, то клиентское расширение компьютера домена B должно обратиться к GPC и GPT объекта через доверительные связи внутри леса. Это более сложная операция, нежели связь с объектами GPO внутри одного домена. Более того, если компьютер из домена B не может найти контроллер домена в домене A на том же сайте AD, то, возможно, придется обратиться к DC и обработать GPO через каналы WAN.
Связей GPO через границы доменов лучше избегать. Вместо этого следует скопировать GPO из одного домена в другой. (В Windows XP и 2000 нет удобного способа копировать объекты GPO между доменами, но эти функции реализованы в инструментах независимых поставщиков.)
GPO: сложные, но мощные. Объекты GPO - мощные инструменты системного администратора Windows, но конфигурировать и наблюдать за работой GPO достаточно сложно, это может замедлить процессы загрузки системы и регистрации пользователя. Зная, как изменить поведение и инфраструктуру GPO, можно свести к минимуму связанные с ними потери производительности и максимально использовать преимущества инфраструктуры AD.
Даррен Мар-Элиа - редактор журнала Windows & NET Magazine. С ней можно связаться по адресу: dmarelia@winnetmag.net.
Протоколирование групповой политики
Администратор не имеет возможности с легкостью контролировать процесс обработки объектов групповой политики (GPO) в реальном времени. Но в Windows XP и 2000 есть полезные функции протоколирования, с помощью которых можно разобраться в рабочем цикле системы.
По умолчанию, клиентские расширения заносят некоторые высокоуровневые действия в журнал Application. Но, как правило, эти записи недостаточно подробны. Можно получить дополнительные данные, изменив реестр каждой исследуемой машины. Для этого нужно создать подраздел в разделе HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindowsNTCurrentVersion и завести в нем параметр RunDiagnosticLoggingGroupPloicy (тип REG_DWORD), присвоив ему значение 0x1. Затем следует перезапустить компьютер.
Экран A. Подробное протоколирование цикла обработки GPO. |
После того как изменения реестра вступят в силу, в журнал Application будет записываться подробная информация (см. Экран A). С ее помощью можно проследить весь цикл обработки GPO и выявить активные клиентские расширения; GPO, обрабатываемые системой; объекты, которые не обрабатываются из-за того, что их версия не изменилась; определить длительность цикла обработки. С помощью журнала удобно производить диагностику. Подробный протокол покажет, что данное клиентское расширение не может работать с конкретным GPO, и в ряде случаев определит, когда произошла ошибка. Подробное протоколирование со временем переполняет журнал событий и создает дополнительную нагрузку на систему, но оно имеет место только в процессе обработки объектов GPO, и мне пока не приходилось видеть, чтобы в результате страдала производительность всей системы.