В доменных службах Active Directory (AD DS) Windows Server 2019 не добавилось новых функциональных уровней домена и леса, что в свою очередь обеспечивает превосходную совместимость с контроллерами домена на базе Windows Server 2016. Но в самих внутренних процессах контроллера домена, а именно в размере хранилища версий ESE (ESE Version Store), произошли изменения, о которых я сегодня расскажу.
Доменные службы Active Directory (AD DS), также известные как службы каталога NT (NT Directory Service, NTDS), используют технологию Extensible Storage Engine (ESE) для обеспечения собственной базы данных.
Один из компонентов всех экземпляров базы данных ESE известен как хранилище версий (Version Store). Хранилище версий (Version Store) – это расположенное в памяти временное хранилище, где ESE хранит моментальные снимки (Snapshots) базы данных, создаваемых во время открытия транзакций. Это позволяет базе данных откатывать транзакции и возвращать базу данных к предыдущему состоянию в случае, когда транзакция не может быть успешно завершена. Когда хранилище версий переполняется, новые транзакции не могут быть созданы в базе данных, что приводит к завершению работы NTDS с ошибкой (Halt).
Ранее, до Windows Server 2019 для определения размера хранилища версий использовался алгоритм, впервые представленный вместе с Active Directory в Windows 2000. Когда служба NTDS появилась впервые, для вычисления размера хранилища версий использовался комплексный алгоритм. Данный алгоритм использует в расчетах размер простого указателя машины, число процессоров, размер страницы хранилища версий (основанный на потреблении, что не корректно для 64-ех битных операционных систем), максимальное число разрешенных одновременных вызовов RPC, максимальное число разрешенных сессий ESE разрешенных в потоке и так далее.
Так как хранилище версий размещается в памяти, это значит, что наиболее важный фактор в определении оптимального размера хранилища версий ESE – это объем физической памяти на машине. И самое забавное, что объем памяти – это, видимо, единственная переменная, не учтенная в выражении.
На сегодняшний день способ расчета, который Active Directory использует для вычисления размера хранилища версий, устарел. Оригинальный алгоритм был разработан в то время, когда на всех машинах запускались 32-ух битные версии Windows, а самые производительные серверы обладали одним или двумя гигабайтами оперативной памяти.
В результате, много клиентов обращались в поддержку Microsoft с ошибками на контроллерах домена, что могло быть вызвано или, по крайней мере усиленно, слишком маленьким размером хранилища версией ESE. Более того, клиенты зачастую не решаются увеличивать размер хранилища версий ESE по умолчанию через параметр реестра “EDB max ver pages (increment over the minimum)”, так как это сложная тема, требующая более тщательного исследования и работы с документацией, которая не всегда доступна.
Теперь, в Windows Server 2019, алгоритм существенно упрощен.
Когда NTDS впервые запускается, размер хранилища версий ESE вычисляется как 10% от объема физической оперативной памяти, с минимальным размером в 400 Мб и максимальным в 4 Гб.
Одинаковый алгоритм расчета применяется как к физическим машинам, так и к виртуальным. В случае, когда виртуальная машина использует динамическую память, вычисление основывается на начальном размере памяти (Staring RAM), назначенном виртуальной машине. Параметр реестра “EDB max over pages (increment over the minimum)” по-прежнему может быть использован для увеличения объема, сверх расчета по умолчанию (при необходимости даже сверх 4 Гб). Параметр реестра использует блоки (Buckets), не байты. Блок хранилища версий – это 32 Кб на всех 64-ех битных системах (на 32-ух битных системах размер блока составляет 16 Кб, но Microsoft более не поддерживает 32-ух битные серверные операционные системы). Соответственно, если добавить 5000 блоков, установив запись реестра в значение 5000 (Decimal), тогда 156 Мб будет добавлено к размеру хранилища версий по умолчанию. Минимальный размер в 400 Мб был выбран для обратной совместимости, так как при использовании старого алгоритма, размер хранилища версий по умолчанию для контроллера домена с одним 64-ех битным процессором составляет примерно 410 Мб, вне зависимости от объема оперативной памяти (не существует способа назначить меньше 400 Мб, аналогично предыдущим версиям Windows Server). Преимущество нового алгоритма заключается в линейном увеличении размера хранилища версий в соответствии с объемом оперативной памяти контроллера домена, чего раньше не было.
Значения по умолчанию:
Физическая память на контроллере домена | Размер хранилища версий ESE по умолчанию |
---|---|
1GB | 400MB |
2GB | 400MB |
3GB | 400MB |
4GB | 400MB |
5GB | 500MB |
6GB | 600MB |
8GB | 800MB |
12GB | 1.2GB |
24GB | 2.4GB |
48GB | 4GB |
128GB | 4GB |
Новый алгоритм расчета в результате гарантирует больший размер хранилища версий ESE для контроллеров домена с объемом оперативной памяти больше 4 Гб, по сравнению со старым алгоритмом. Это значит, что больше пространства хранилища версий будет выделено для обработки транзакций базы данных и меньше проблем будет возникать из-за недостаточного размера.
Обратите внимание, что данное улучшение присутствует только в Windows Server 2019 и на данный момент не планируется его перенос на предыдущие версии Windows Server.
Также следует заметить, что данное улучшение применяется только к Active Directory и не применяется к другим приложениям, которые используют базу данных ESE, таким как Exchange и другие.
P.S. Такие подробности, как правило, не раскрываются в публичных источниках, тем не менее, спасибо Ryan Ries за его оригинальный пост, который лег в основу этой статьи.
Ранее я уже записывал веб-касты, раскрывающие разные аспекты работы с доменными службами Active Directory. Их вы можете найти у меня на сайте в разделах по Windows Server 2008, Windows Server2012 и Windows Server 2016.
Ближайшее время я опубликую уже записанный веб-каст “Обновление доменных служб Active Directory (AD DS) до Windows Server 2019”, где продемонстрирую переход на использование контроллеров домена под управлением Windows Server 2019.
Комментариев нет:
Отправить комментарий