Управляемое хранилище в Exchange Server

Управляемое хранилище — это название процессов хранилища сведений (также известного как Хранилище) в Exchange Server 2016 г. и Exchange Server 2019 г. Введенное в Exchange Server 2013 г. управляемое хранилище использует модель контроллера или рабочего процесса, которая обеспечивает изоляцию процессов хранения и ускоряющую отработку отказа базы данных. Управляемое хранилище также использует механизм кэширования статической базы данных, который заменяет алгоритм динамического буфера в предыдущих версиях Exchange.

Многопроцессная модель, используемая Управляемым хранилищем, состоит из следующих процессов на сервере почтовых ящиков:

  • Процесс контроллера службы с одним хранилищем для всего сервера Exchange (Microsoft.Exchange.Store.Service.exe, также известный как MSExchangeIS).

  • Один рабочий процесс для каждой подключенной базы данных (Microsoft.Exchange.Store.Worker.exe). После подключения базы данных создается экземпляр нового рабочего процесса, который обслуживает только эту базу данных. После отключения базы данных ее рабочий процесс завершается.

Например, если на сервере почтовых ящиков подключено 40 баз данных почтовых ящиков, для управляемого хранилища будет запущен 41 процесс: по одному для каждой базы данных и по одному для контроллера процесса службы хранилища. Контроллер процессов хранилища отслеживает работоспособность всех рабочих процессов хранилища на сервере. Принудительное или неожиданное завершение Microsoft.Exchange.Store.Service.exe приводит к немедленной отработке отказа всех активных копий базы данных на сервере.

Управляемое хранилище также тесно интегрировано со службой репликации Microsoft Exchange (MSExchangeRepl.exe) и Active Manager. Процесс контроллера, рабочие процессы и служба репликации работают вместе, чтобы обеспечить большую доступность и надежность, как описано в следующем списке.

  • Процесс службы репликации Microsoft Exchange (MSExchangeRepl.exe):

    • Отвечает за выдачу операций подключения и отключения в Store.

    • Инициирует действие восстановления при сбоях хранилища или базы данных, о чем сообщают магазин, подсистема расширяемого хранилища (ESE) и управляемые средства реагирования на доступность.

    • Обнаруживает непредвиденные сбои базы данных.

    • Предоставляет административный интерфейс для задач управления.

  • Хранение процесса или контроллера службы (Microsoft.Exchange.Store.Service.exe):

    • Управляет временем существования каждого рабочего процесса на основе операций подключения и отключения, полученных от службы репликации.

    • Обрабатывает входящие запросы от диспетчера управления службами Windows.

    • Регистрирует элементы сбоя при обнаружении проблем с рабочим процессом в хранилище (например, зависание или непредвиденный выход).

    • Завершает хранение рабочих процессов в ответ на событие отработки отказа.

  • Рабочий процесс хранилища (Microsoft.Exchange.Store.Worker.exe):

    • Отвечает за выполнение операций RPC для почтовых ящиков в базе данных.

    • Экземпляр конечной точки RPC в рабочем процессе — это GUID базы данных.

    • Предоставляет кэш базы данных для базы данных.

Алгоритм кэширования статической базы данных

Управляемое хранилище использует простой и простой алгоритм для определения кэша базы данных по сравнению с динамическим выделением буфера , который использовался в предыдущих версиях Exchange. Память, выделенная для каждого кэша базы данных (т. е. каждого рабочего процесса хранилища), основана на количестве локальных копий базы данных и настроенном значении параметра MaximumActiveDatabases в командлете Set-MailboxServer (значение по умолчанию — $null или пусто). Если значение MaximumActiveDatabases больше, чем количество текущих копий базы данных, то вычисление кэша основано на количестве копий базы данных.

Статический алгоритм выделяет память для кэша ESE каждого рабочего процесса хранилища в зависимости от объема физического ОЗУ, установленного на сервере. Это относится к целевому объекту максимального кэша базы данных. 25 % от общего объема памяти сервера выделяется кэшу ESE и называется целевым размером кэша сервера.

Примечание.

Вы можете переопределить целевой размер кэша сервера и, следовательно, объем памяти, выделенный хранилищу для кэша ESE, с помощью msExchESEParamCacheSizeMax атрибута объекта InformationStore в Active Directory (настроенное значение — количество 32 КБ страниц, выделяемых во всех процессах хранилища).

Для активных и пассивных копий выделяется статический объем этого кэша. Рабочий процесс хранилища выделяется только при обслуживании активной копии базы данных. Для копий пассивных баз данных выделяется 20 % максимального целевого кэша. Остальную часть резервирует хранилище и выделяет ее для рабочих процессов при переходе базы данных из пассивного в активное состояние.

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

Пример вычислений кэша базы данных

Ниже приведены примеры вычислений кэширования баз данных, основанных на памяти и конфигурации базы данных сервера почтовых ящиков.

Пример 1

Конфигурация сервера почтовых ящиков:

  • 48 ГБ памяти

  • Две активные базы данных и две пассивные базы данных

  • Параметр MaximumActiveDatabases: не настроен

Объем кэша базы данных составляет 3 ГБ для каждого активного рабочего процесса копирования базы данных и 0,6 ГБ для каждого пассивного рабочего процесса копирования базы данных. Вот как вычисляются эти значения:

  • Целевой размер кэша сервера: 25 % объема памяти: 48 ГБ * 0,25 = 12 ГБ.

  • Целевой максимальный размер кэша базы данных. Разделите целевой размер кэша сервера на общее количество активных и пассивных баз данных: 12 ГБ / 4 базы данных = 3 ГБ.

  • Память, используемая для пассивных копий базы данных: 20 % целевого объекта максимального кэша базы данных: 3 ГБ * 0,20 = 0,6 ГБ.

Из 12 ГБ памяти, назначенной целевому размеру кэша сервера:

  • 7,2 ГБ будет использоваться рабочими процессами базы данных.

  • Хранилище сведений зарезервирует 4,8 ГБ для двух пассивных копий базы данных на случай, если они станут активными. В этом случае они будут использовать максимальный целевой кэш размером 3 ГБ.

Пример 2

Конфигурация сервера почтовых ящиков:

  • 48 ГБ памяти

  • Две активные базы данных и две пассивные базы данных

  • Параметр MaximumActiveDatabases : 2

Объем кэша базы данных составляет 5 ГБ для каждого активного рабочего процесса копирования базы данных и 0,2 ГБ для каждого пассивного рабочего процесса копирования базы данных. Вот как вычисляются эти значения:

  • Целевой размер кэша сервера: 25 % объема памяти: 48 ГБ * 0,25 = 12 ГБ.

  • Целевой максимальный размер кэша базы данных. Разделите целевой размер кэша сервера на сумму:

    • Количество активных баз данных

    • 20 % от числа пассивных баз данных

    12 ГБ / (2A + (2P * 0,20)) = 5 ГБ

  • Память, используемая для пассивных копий базы данных: 20 % целевого значения максимального кэша базы данных: 5 ГБ * 0,20 = 1 ГБ.

Из 12 ГБ памяти, назначенной целевому размеру кэша сервера:

  • 12 ГБ будет использоваться рабочими процессами базы данных

  • Хранилище сведений не будет зарезервировано памяти для двух пассивных копий базы данных, так как они не могут стать активными копиями (параметр MaximumActiveDatabases настроен со значением 2, а на сервере уже есть 2 активные копии базы данных).