Как сжать базу данных Active Directory | Windows для системных администраторов

Как сжать базу данных Active Directory

Как известно, база  Active Directory  хранится в файле NTDS.DIT, размер которого может отличаться на разных контроллерах домена. Причина в том, что Active Directory- это служба каталога с мульти-мастерной независимой моделью, где изменение может произойти на любом  контроллере домена, и со временем эти изменения должны реплицироваться на остальные контроллеры домена. И т.к. изменения реплицируются между контроллерами домена, а не между базами данных, это означает, что размер файлов базы данных Active Directory  на различных контроллерах может отличаться.

В Windows 2000 и Windows Server 2003 служба Directory Services (DS) выполняют online-дефрагментацию каждые 12 часов в рамках процесса сбора мусора в базе (garbage-collection) Этот вид дефрагментации лишь перемещает данные внутри файла  базы данных (NTDS.DIT) и не уменьшает размер файла, это означало, что при запущенной службе Active Directory файл базы данных сжать нельзя.

Если же произвести офлайн дефрагментацию файла NTDS.DIT на контроллере домена при остановленной службе Active Directory, то размер файла NTDS.DIT может быть существенно уменьшен.

Однако стоит отметить – что дефрагментация файла NTDS.DIT – это абсолютно не обязательная процедура, т.к. в процессе работы механизмы Windows автоматически обеспечивают целостность и производительность базы AD, вычищая из нее удаленные объекты с истекшим сроком захоронения (tombstone lifetime). Офлайн дефрагментация файла NTDS.DIT, скорее всего не даст прироста в скорости выполнения запросов AD, единственная цель офлайн дефрагментации базы AD – возможность сэкономить место на диске.

Итак, чтобы сжать базу Active Directory необходимо остановить службу Active Directory Domain services. В Windows 2008 и выше достаточно просто остановить службу ADDS (net stop ntds), в Windows 2003 придется перезагрузить контроллер домена, и при загрузке загрузиться в режиме восстановления каталога (Directory Services Restore Mode), нажав  F8 и выбрав DSRM.

Как сжать базу Active Directory

После остановки базы данных Active Directory можно перейти к ее обслуживанию  с помощью утилиты NTDSUTIL (я уже описывал как с помощью этой команды можно выполнить  анализ базы данных Active Directory)

  1. В командной строке наберите: ntdsutil
  2. Затем files
  3. Если появится ошибка, что «Active Instance not being set», для выбора инстанса базы AD наберите  Activate Instance NTDS
  4. Затем выполните команду compact to c:\compactntds
  5. В результате запустится сжатие файла базы AD, а на экран будет выведен индикатор выполнения процесса
  6. После окончания процесса сжатия появится инструкция, с действиями которые необходимо выполнить далее (инструкции зависят от вашей конфигурации и местоположения файла NTDS.DIT)compress active directory - net  stop ntds
  7. Скопируйте сжатый файл NTDS.DIT в каталог с оригинальным файлом NTDS.DIT, например: copy “c:\compactntds\ntds.dit” “D:\ADDS\ntds.dit”
  8. Удалите старые логи из каталога NTDS.DIT: del /q c:\windows\NTDS\*.log
  9. Запустите службу ADDS (Windows Server 2008) или перезагрузите контроллер домена (Windows 2003/2000) для нормального запуска контроллера домена

Сжать базу данных active directory

Примечание: Процесс сжатия базы данных Active Directory достаточно прост. Но учтите, что эту операцию необходимо выполнить на всех контроллерах домена, на которых вы хотите уменьшить размер базы данных Active Directory, т.к. физически база данных AD сама по себе не реплицируется на все контроллеры домена (подробнее про репликацию Active Directory)
Еще записи по теме: Active Directory
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 4

Оставить комментарий
  1. Владимир | 18.09.2013

    У  вас опечатка в «Active Instance NTDS», должно быть Activate Instance NTDS

    Ответить
    • itpro | 18.09.2013

      Спасибо за внимательность :) Текст поправил!

      Ответить
  2. Евгений | 27.03.2014

    Спасибо за информацию! У меня несколько вопросов:
    1) Насколько данная процедура опасна для БД или полностью безопасна т.к. БД как бы перестраивается в новое место, верно?
    2) Если у меня 3 контроллера домена (размеры БД 14Гб, 13Гб и 6Гб), то производить данную процедуру надо поочерёдно выключая каждый?
    3) Чем обусловлен такой большой размер БД на моих домен контроллерах если Вы пишите что онлайн дефрагментация вычищает из БД удаленные объекты с истекшим сроком захоронения (tombstone lifetime). Очищает т.е. не удаляет?

    Ответить
    • itpro | 27.03.2014

      1) Операция достаточно безопасна. По крайней мере на моей практике проблем со сжатием базы не возникало. Чтобы подстраховаться можете предварительно создать резервную копию файла ntds.dit
      2) Да — операция проводится индивидуально на каждом контроллере домена (независимо)
      3) Размер вашей базы конечно довольно большой…. Тут все зависит от размеров домена, использования дополнительных полей в AD, храните ли вы в учетках фотографии и т.д. Например, у меня для домена на 500-700 пользователей размер базы порядка 150Мб (процедура сжатия базы проводилась где-то полгода назад)

      Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.4MB/0.01111 sec