Обслуживание базы данных Active Directory
Одним из важных элементов управления службой Active Directory является обслуживание базы данных Active Directory. При нормальных обстоятельствах вам редко придется управлять базой данных Active Directory напрямую, потому что регулярное автоматическое управление поддерживает «здоровье» вашей базы данных во всех ситуациях. Эти автоматические процессы включают онлайновую дефрагментацию базы данных Active Directory, а также процесс сборки мусора, очищающий удаленные элементы. Для тех редких случаев, когда вы действительно будете напрямую управлять базой данных Active Directory, Windows Server 2003 включает инструмент Ntdsutil.
Сборка мусора
Один из автоматических процессов, который обычно используется для обслуживания базы данных Active Directory, — это сборка мусора. Сборка мусора - это процесс, который выполняется на каждом контроллере домена каждые 12 часов. В процессе сборки мусора восстанавливается свободное пространство в пределах базы данных Active Directory.
Процесс сборки мусора начинается с удаления объектов-памятников (tombstone) из базы данных. Объекты-памятники являются остатками объектов, которые были удалены из Active Directory. При удалении учетной записи пользователя она не удаляется немедленно. Вместо этого атрибут isDeleted этой записи устанавливается на true, она помечается как объект-памятник, и большинство атрибутов этого объекта удаляются. Остается несколько атрибутов, необходимых для идентификации объекта: как глобально-уникальный идентификатор (GUID), идентификатор SID, порядковый номер обновлений (USN) и отличительное имя. Этот объект-памятник затем реплицируется на другие контроллеры домена в домене. Каждый контроллер домена поддерживает копию объекта-памятника до тех пор, пока не истечет срок его службы. По умолчанию срок службы объекта-памятника установлен на 60 дней. В следующий раз, когда процесс сборки мусора будет запущен после истечения срока службы объекта-памятника, этот объект будет удален из базы данных.
После удаления объектов-памятников процесс сборки мусора удаляет все ненужные файлы с журналами транзакций. Всякий раз, когда делается изменение в базе данных Active Directory, оно записывается в журнал транзакций, а затем передается в базу данных. Процесс сборки мусора удаляет все журналы транзакций, которые не содержат непере-данных в базу данных транзакций.
Процесс сборки мусора выполняется на каждом контроллере домена с двенадцатичасовым интервалом. Можно изменять этот интервал, модифицируя атрибут garbageCollPeriod в глобальном для предприятия объекте DS конфигурации (NTDS). Чтобы изменить эти параметры настройки, можно использовать инструмент Adsiedit.msc. Откройте ADSI Edit (Редактирование ADSI) из диалогового окна Run (Выполнить) и выберите объект CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=f orestname. Затем найдите атрибут garbageCollPeriodи установите его значение так, чтобы оно удовлетворяло вашим требованиям. В большинстве случгмвв вам не придется1 изменять эту установку. На рисунке 14-7 показан этот атрибут в инструменте ADSI Edit.
Рис. 14-7. Атрибут garbageCollPeriod в инструменте ADSI Edit
Онлайновая дефрагментация
Заключительный шаг в процессе сборки мусора — это онлайновая дефрагментация базы данных Active Directory. Она освобождает место в пределах базы данных и перестраивает расположение хранящихся объектов Active Directory в пределах базы данных так, чтобы улучшить ее эффективность. Во время нормального функционирования база данных Active Directory оптимизирована так, чтобы можно было делать изменения в ней как можно быстрее. При удалении объекта из Active Directory страница базы данных, на которой он хранится, загружается в память компьютера, и объект удаляется с этой страницы. При добавлении объектов к Active Directory они записываются на страницу базы данных без учета оптимизации последующего поиска этой информации. После нескольких часов активного внесения изменений в базу данных способ хранения данных перестает быть оптимизированным. База данных может содержать пустые страницы, страницы, на которых удалены некоторые элементы. Объекты Active Directory, которые логически должны храниться вместе, могут храниться на нескольких различных страницах, расположенных по всей базе данных.
Процесс онлайновой дефрагментации чистит базу данных и возвращает ее в оптимизированное состояние. Если некоторые записи были удалены с какой-либо страницы, то записи, находящиеся на других страницах, перемещаются на нее для оптимизации хранения и поиска информации. Те объекты, которые логически должны храниться вместе, перемещаются на одну и ту же страницу базы данных или на смежные. Одно из ограничений процесса онлайновой дефрагментации состоит в том, что он не сокращает размер базы данных Active Directory. Если вы удалили большое количество объектов из Active Directory, то онлайновая дефрагментация создаст много пустых страниц, которые она не сможет удалить. Для этого используется процесс автономной дефрагментации.
Процесс онлайновой дефрагментации выполняется каждые 12 часов как часть процесса сборки мусора. Когда процесс онлайновой дефрагментации закончен, в журнал службы каталога записывается событие, указывающее, что процесс завершился успешно. На рисунке 14-8 показан пример такого сообщения в журнале регистрации событий.
Рис. 14-8. Сообщение журналаслужбыкаталога, указывающеенауспешную онлайновуюдефрагментацию
Автономная дефрагментация базы данных Active Directory
Как говорилось выше, процесс онлайновой дефрагментации не может сократить размер базы данных Active Directory. При нормальных обстоятельствах это не является проблемой, потому что страницы базы данных, которые очищены в процессе онлайновой дефрагментации, просто снова используются по мере добавления новых объектов к Active Directory. Однако, в некоторых случаях, можно использовать автономную дефрагмен-тацию для сокращения полного размера базы данных. Например, если вы удаляете GC-каталог из контроллера домена, нужно выполнить автономную дефрагментацию в базе данных, чтобы очистить место, которое ис-пользовалось в базе данных для хранения информации GC. Потребность в автономной дефрагментации существует в среде, состоящей из нескольких доменов, где GC каталог может стать очень большим.
Чтобы выполнить автономную дефрагментацию, выполните следующие шаги.
- Сделайте резервную копию информации Active Directory на контроллер домена (см. гл. 15).
- Перезагрузите контроллер домена. Во время загрузки сервера нажмите клавишу F8, чтобы отобразить меню дополнительных параметров Windows. Выберите режим Directory Services Restore (Восстановление службы каталога) (Только для контроллеров домена с системой Windows).
- Войдите в систему, используя учетную запись Administrator (Администратор). Используйте пароль, который вы вводили как пароль режима восстановления службы каталога, когда назначали контроллер домена.
- Откройте командную строку и напечатайте ntdsutil.
- В командной строке утилиты Ntdsutil напечатайте files.
- В командной строке утилиты File Maintenance (Обслуживание файлов) напечатайте info. Эта опция отображает текущую информацию о пути и размере базы данных Active Directory и ее журналов.
- Напечатайте compact to drive:\directory. Выберите диск и каталог, которые имеют достаточно места для хранения всей базы данных. Если название пути каталога содержит пробелы, путь должен быть заключен в кавычки.
- Процесс автономной дефрагментации создает новую базу данных по имени Ntds.dit в указанном вами месте. По мере копирования базы данных в новое место она дефрагментируется.
- Когда дефрагментация закончена, напечатайте дважды quit, чтобы возвратиться к приглашению ко вводу команды.
- Скопируйте дефрагментированный файл Ntds.dit поверх старого файла Ntds.dit в место расположения базы данных Active Directory.
- Перезагрузите контроллер домена.
Примечание. Если вы дефрагментировали базу данных, потому что было удалено много объектов из Active Directory, вы должны повторить эту процедуру на всех контроллерах домена.
Управление базой данных Active Directory с помощью утилиты Ntdsutil
Утилиту Ntdsutil можно использовать не только для дефрагментации базы данных своей службы Active Directory в автономном режиме, но и для управления базой данных Active Directory. Инструмент Ntdsutil выполняет несколько низкоуровневых задач, возникающих при восстановлении базы данных Active Directory. Все опции восстановления базы данных являются неразрушающими, т.е. средства восстановления будут пробовать исправить проблему, возникшую в базе данных Active Directory, только не за счет удаления данных.
Восстановление журналов транзакций
Восстановить журналы транзакций означает заставить контроллер домена заново запустить работу журнала транзакций. Эта опция автоматически выполняется контроллером домена, когда он перезапускается после принудительного выключения. Вы можете также выполнять мягкое восстановление, используя инструмент Ntdsutil.
Примечание. В главе 15 подробно описывается, как используется журнал транзакций в Active Directory.
Чтобы восстановить журнал транзакций, выполните следующие действия.
- Перезагрузите сервер и выберите загрузку в режиме восстановления службы каталога. Это требуется для работы инструмента Ntdsutil.
- Откройте командную строку и напечатайте ntdsutil.
- В командной строке утилиты Ntdsutil напечатайте files.
- В командной строке File Maintenance напечатайте recover.
Запуск опции восстановления всегда должен быть первым шагом при любом восстановлении базы данных, это гарантирует, что база данных совместима с журналами транзакций. Как только восстановление закончится, можно выполнять другие опции базы данных, если это необходимо.
Проверка целостности базы данных
Проверка целостности базы данных означает, что база данных проверена на низком (двоичном) уровне на предмет ее искажений. Процесс проверяет заголовки базы данных и все таблицы на непротиворечивость. Поскольку во время этого процесса проверяется каждый байт базы дан-
ных, то работа с большой базой данных требует много времени. Чтобы выполнить проверку целостности, напечатайте integrityв командной строке File Maintenance утилиты Ntdsutil.
Семантический анализ базы данных
Семантический анализ базы данных отличается от проверки целостности тем, что он не исследует базу данных на двоичном уровне. Вместо этого проверяется непротиворечивость семантики базы данных Active Directory. Семантический анализ базы данных исследует каждый объект в базе данных для гарантии того, что каждый объект имеет GUID, правильный SID и правильные репликационные метаданные.
Чтобы сделать семантический анализ базы данных, выполните следующие действия.
- Откройте командную строку и напечатайте ntdsutil.
- В командной строке утилиты Ntdsutil напечатайте semanticdatabaseanalysis.
- В командной строке Semantic Checker (Проверка семантики) напечатайте verboseon. Эта установка конфигурирует утилиту Ntdsutil для выведения на экран дополнительной информации при выполнении семантической проверки.
- В командной строке Semantic Checker напечатайте go.
Примечание. Если вы использовали Active Directory в системе Windows 2000, то, возможно, видели, что Windows 2000 включает опцию Repair (Восстановление). Эта опция, выполняющая потенциально разрушающее восстановление базы данных Active Directory, отсутствует в системе Windows Server 2003.
Перемещение базы данных и места расположения журналов транзакций
Инструмент Ntdsutil может также использоваться для перемещения базы данных Active Directory и журналов транзакций. Например, если журналы транзакций и база данных находятся на одном и том же жестком диске, вы можете переместить один из компонентов на другой жесткий диск. Если жесткий диск, содержащий файл базы данных, заполнится, нужно будет переместить базу данных.
Чтобы переместить базу данных и журнал транзакций в новое место, выполните следующие действия, когда сервер находится в режиме восстановления службы каталога.
- Откройте командную строку и напечатайте ntdsutil.
- В командной строке Ntdsutil напечатайте files.
- Чтобы увидеть, где находятся файлы в настоящее время, в командной строке Ntdsutil напечатайте info. Эта команда покажет места расположения файлов базы данных и всех журналов регистрации.
- Чтобы переместить файл базы данных, в командной строке File Maintenance напечатайте movedbtodirector, где dirеctorу задает новое место для файлов. Эта команда перемещает базу данных в указанное место и реконфигурирует системный реестр так, чтобы обращаться к файлу по его правильному месту расположения.
- Чтобы переместить журнал транзакций, в командной строке File Maintenance напечатайте movelogstodirectory.