Як стиснути базу даних 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 можна перейти до її обслуговування за допомогою утиліти 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)
  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, тому що фізично база даних AD сама по собі не реплицируется на всі контролери домену (докладніше про реплікацію Active Directory)