Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-windows:windows-server-2012-r2:adds:ad-domain-controller-ntds-dit-database-offline-defragmentation

Offline дефрагментация базы данных Active Directory (ntds.dit) на контроллере домена

Со временем база данных Active Directory (ntds.dit) может разрастаться до неприличных размеров, принося за собой проблемы с нехваткой места на диске контроллеров домена, а также превнося увеличенные требования к объёму оперативной памяти, необходимому для работы с данными БД. Причины у такого роста могут быть разные и мы оставим их за рамками этой статьи. Здесь мы лишь кратко рассмотрим пример offline-дефрагментации файла БД, которая может быть предпринята с целью уменьшения размера этого файла.


Планируем процедуру

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

Кроме того, предварительно требуется оценить объем свободного места на диске контроллера домена, где будет выполняться дефрагментация, так как нам может потребоваться, как максимум, двойной объём размера нефрагментированного файла ntds.dit


Останавливаем службы AD

На контроллере домена запустим командную строку с правами Администратора и выполним команду остановки службы Active Directory Domain Services (ntds). На запрос о запуске зависимых от ntds служб ответим утвердительно.

C:\>net stop ntds
The following services are dependent on the Active Directory Domain Services service. Stopping the Active Directory Domain Services service will also stop these services. Kerberos Key Distribution Center Intersite Messaging DNS Server DFS Replication Do you want to continue this operation? (Y/N) [N]: Y The Kerberos Key Distribution Center service is stopping. The Kerberos Key Distribution Center service was stopped successfully. The Intersite Messaging service is stopping. The Intersite Messaging service was stopped successfully. The DNS Server service is stopping. The DNS Server service was stopped successfully. The DFS Replication service is stopping. The DFS Replication service was stopped successfully. The Active Directory Domain Services service is stopping.. The Active Directory Domain Services service was stopped successfully.

Убедившись в том, что служба ntds успешно остановлена, переходим к процедуре дефрагментации.


Выполняем дефрагментацию

Создадим временный каталог, в который будет помещён файл базы данных AD в результате дефрагментации, так оригинальный файл ntds.dit в процессе дефрагментации не изменяется, а создаётся его копия в указанном временном каталоге. Например пусть это будет каталог C:\Temp.

В командной строке переходим в интерактивный режим работы уилиты Ntdsutil и последовательно вводим команды Activate instance ntds, Files, Compact to C:\Temp, после которых будет запущена процедура дефрагментации файла ntds.dit, а по завершению процедуры дефрагментации выходим из интерфейса утилиты два раза нажав q:

C:\>Ntdsutil
Ntdsutil: Activate instance ntds Active instance set to "ntds". Ntdsutil: Files file maintenance: Compact to C:\Temp Initiating DEFRAGMENTATION mode... Source Database: C:\Windows\NTDS\ntds.dit Target Database: C:\Temp\ntds.dit Defragmentation Status (% complete) 0 10 20 30 40 50 60 70 80 90 100 |----|----|----|----|----|----|----|----|----|----| ................................................... It is recommended that you immediately perform a full backup of this database. If you restore a backup made before the defragmentation, the database will be rolled back to the state it was in at the time of that backup. Compaction is successful. You need to: copy "C:\Temp\ntds.dit" "C:\Windows\NTDS\ntds.dit" and delete the old log files: del C:\Windows\NTDS\*.log file maintenance: q Ntdsutil: q

Обратим внимание на то, что в выводе утилиты должно фигурировать сообщение об успешном окончании процесса дефрагментации Compaction is successful.

По длительности процесс дефрагментации может занять разное время в зависимости от текущего размера файла БД и аппаратных возможностей контроллера домена. В нашем примере файл ntds.dit размером 18GB был дефрагментирован до размера в 5GB примерно за 20 минут.


Заменяем файлы БД

По окончании процесса дефрагментации утилита Ntdsutil выдала нам рекомендации о дальнейших действиях, то есть о том, что теперь мы можем заменить оригинальный файл ntds.dit на дефрагментированный. На вопрос о переписывании файла ответим утвердительно.

C:\>copy "C:\Temp\ntds.dit" "C:\Windows\NTDS\ntds.dit"
Overwrite C:\Windows\NTDS\ntds.dit? (Yes/No/All): Y 1 file(s) copied.

Также нам нужно удалить логи, относящиеся к старому недефраментированному файлу.

C:\>del C:\Windows\NTDS\*.log


Запускаем службы AD

После замены файла ntds.dit и удаления старых логов выполняем повторный запуск службы Active Directory Domain Services (ntds).

C:\>net start ntds
The Active Directory Domain Services service is starting. The Active Directory Domain Services service was started successfully.

Ну и, конечно, не забываем удалить временно созданный дефрагментированный файл ntds.dit

C:\>del C:\Temp\ntds.dit

На этом процедуру offline-дефрагментации базы данных Active Directory можно считать законченной.



Проверено на следующих конфигурациях:

Версия ОС Версия Ntdsutil
Windows Server 2012 R2 Standard EN (6.3.9600) Windows Directory Service Utilities Version 2.0

Автор первичной редакции:
Алексей Максимов
Время публикации: 17.08.2018 20:35

Обсуждение

Роман Роман , 04.09.2018 09:36
Если несколько DC,то делаем несколько раз, на каждом? Или репликация растащит сжатую базу
Алексей МаксимовАлексей Максимов, 04.09.2018 11:22
На каждом DC делаем отдельно.
Ваш комментарий:
 

microsoft-windows/windows-server-2012-r2/adds/ad-domain-controller-ntds-dit-database-offline-defragmentation.txt · Последние изменения: 18.08.2018 10:27 — Алексей Максимов