Share via


Repositório Gerenciado

Aplica-se a: Exchange Server 2013

Todas as versões anteriores do Exchange Server, de Exchange Server 4.0 a Exchange Server 2010, deram suporte à execução de uma única instância do processo do Repositório de Informações (Store.exe) na função de servidor caixa de correio. Essa única instância da Loja hospeda todos os bancos de dados no servidor: ativo, passivo, defasado e recuperação. Nas arquiteturas anteriores do Exchange, há pouco, se houver, isolamento entre os diferentes bancos de dados hospedados em um servidor de caixa de correio. Um problema com um único banco de dados de caixa de correio tem o potencial de afetar negativamente todos os outros bancos de dados e falhas resultantes de uma corrupção na caixa de correio podem afetar o serviço para todos os usuários cujos bancos de dados estão hospedados nesse servidor.

Outro desafio com uma única instância da Store em versões anteriores do Exchange é que o ESE (Mecanismo de Armazenamento Extensível) escala bem para núcleos de processador de 8 a 12, mas além desse limite, problemas de comunicação entre processadores e sincronização de cache levam a uma escala negativa. Dado os servidores maiores de hoje, com mais de 16 sistemas principais disponíveis, isso significaria impor o desafio administrativo de gerenciar a afinidade de 8 a 12 núcleos para ESE e usar os outros núcleos para processos não armazenados (por exemplo, Assistentes, Search Foundation, Disponibilidade Gerenciada etc.). Além disso, a arquitetura anterior restringiu a expansão para o processo store.

O processo Store.exe evoluiu consideravelmente ao longo dos anos à medida que Exchange Server evoluiu, mas como um único processo, em última análise, sua escalabilidade é limitada e representa um único ponto de falha. Devido a esses limites, Store.exe se foi no Exchange 2013 e substituído pela Loja Gerenciada.

Repositório Gerenciado

A Loja Gerenciada é o nome dos processos do Repositório de Informações (também conhecido como Store) no Exchange Server 2013. A Loja Gerenciada usa um modelo de processo de controlador/trabalho que fornece isolamento do processo de armazenamento e failover de banco de dados mais rápido. A Loja Gerenciada também inclui um novo mecanismo de cache de banco de dados estático que substitui o algoritmo de buffer dinâmico em versões anteriores do Exchange Server. No modelo multiprocessado usado pela Loja Gerenciada, há um único processo de controlador de serviço de repositório (nesse caso, Microsoft.Exchange.Store.Service.exe também conhecido como MSExchangeIS) e um processo de trabalho (nesse caso, Microsoft.Exchange.Store.Worker.exe) para cada banco de dados montado. Quando um banco de dados é montado, um novo processo de trabalho é instanciado que atende apenas a esse banco de dados. Quando um banco de dados é desmontado, o processo de trabalho desse banco de dados é encerrado.

Por exemplo, se você tiver 40 bancos de dados montados em um servidor, haverá 41 processos em execução para a Loja Gerenciada, um para cada banco de dados e um para o controlador de processo de serviço da loja.

O controlador de processo de serviço da loja é fino e confiável, mas se ele morrer ou for encerrado, todos os processos de trabalho morrerão (eles detectarão que o processo do controlador de serviço se foi e sairá). O controlador de processo do repositório monitora a integridade de todos os processos de trabalho do repositório no servidor. Uma terminação forçada ou inesperada do Microsoft.Exchange.Store.Service.exe causa um failover imediato de todas as cópias de banco de dados ativas. A Loja Gerenciada também é fortemente integrada ao Serviço de Replicação do Microsoft Exchange (MSExchangeRepl.exe) e ao Active Manager. O processo do controlador, os processos de trabalho e o serviço de Replicação funcionam juntos para fornecer maior disponibilidade e confiabilidade:

  • Processo de serviço de Replicação do Microsoft Exchange (MSExchangeRepl.exe)

    • Responsável pela emissão de operações de montagem e desmontagem para a Loja

    • Inicia a ação de recuperação em falhas de armazenamento ou banco de dados relatadas pela Loja, pelo Mecanismo de Armazenamento Extensível (ESE) e pelos respondentes de Disponibilidade Gerenciada

    • Detecta falhas inesperadas do banco de dados

    • Fornece a interface administrativa para tarefas de gerenciamento

  • Armazenar processo/controlador de serviço (Microsoft.Exchange.Store.Service.exe)

    • Gerencia cada tempo de vida do processo de trabalho com base nas operações de montagem e desmontagem recebidas do serviço de Replicação

    • Manipula solicitações de entrada do Gerenciador de Controle de Serviços do Windows

    • Logs falham itens quando o trabalho do repositório processa problemas detectados (por exemplo, travamento ou saída inesperada)

    • Encerra processos de trabalho do repositório em evento de failover de resposta

  • Processo de trabalho da loja (Microsoft.Exchange.Store.Worker.exe)

    • Responsável pela execução de operações RPC para caixas de correio em um banco de dados

    • A instância de ponto de extremidade do RPC no processo de trabalho é o GUID do banco de dados

    • Fornece cache de banco de dados para um banco de dados

Algoritmo de cache de banco de dados estático

O algoritmo de cache de banco de dados conhecido como alocação de buffer dinâmico que foi introduzido no Exchange Server 5.5 e também usado pelo Repositório de Informações no Exchange 2000 Server, Exchange Server 2003, Exchange Server 2007 e Exchange Server 2010, também se foi do Exchange 2013. O Exchange 2013 usa um algoritmo simples e simples para determinar o cache de banco de dados. A Loja Gerenciada não realoca mais dinamicamente o cache entre bancos de dados quando ocorre failover, o que simplifica muito o gerenciamento interno de cache. Em vez disso, a memória alocada para cada cache de banco de dados (por exemplo, cada processo de trabalho do repositório) é baseada no número de cópias de banco de dados locais e no valor de MaximumActiveDatabases, se configurado. Se o valor de MaximumActiveDatabases for maior que o número de cópias de banco de dados atuais, o cálculo do cache será baseado no número de cópias de banco de dados.

O algoritmo estático usado pelo Exchange 2013 aloca memória para o cache ESE de cada processo de trabalho do repositório com base na RAM física. Essa memória é conhecida como destino máximo de cache de um banco de dados. 25% da memória total do servidor é alocada para o cache ESE. Essa proporção de memória é chamada de Destino de Tamanho do Cache do Servidor.

Observação

O Destino de Tamanho do Cache do Servidor e, portanto, a quantidade de memória alocada no cache Store for ESE, pode ser substituído usando o atributo msExchESEParamCacheSizeMax do objeto InformationStore no Active Directory (o valor configurado é o número de 32 páginas KB a serem alocadas em todos os processos de armazenamento).

Uma quantidade estática desse cache é alocada para cópias ativas e passivas. O processo de trabalho do repositório será alocado somente no Destino máximo do Cache ao atender uma cópia de banco de dados ativo. As cópias de banco de dados passivo são alocadas em 20% do Destino máximo do Cache. O restante é reservado pela Loja e alocado para o processo de trabalho se o banco de dados passar de passivo para ativo.

O Destino máximo do Cache é calculado apenas na inicialização da Loja. Portanto, se você adicionar ou remover bancos de dados ou cópias de banco de dados, será necessário reiniciar o serviço de controlador da Loja (MSExchangeIS) para que o cache possa ser ajustado de acordo. Se o serviço não for reiniciado, os bancos de dados recém-criados terão um destino de tamanho de cache menor do que os bancos de dados criados antes da inicialização do serviço. Nesse caso, a soma dos destinos de tamanho do cache do banco de dados provavelmente excederá o Destino de Tamanho do Cache do Servidor até que o MSExchangeIS seja reiniciado.

Cálculos de cache de banco de dados de exemplo

Abaixo estão exemplos de cálculos de cache de banco de dados que se baseiam na configuração de memória e banco de dados de um servidor de caixa de correio.

Exemplo 1

Neste exemplo, o servidor mailbox tem 48 GB de memória e hospeda dois bancos de dados ativos e dois bancos de dados passivos. Além disso, o parâmetro MaximumActiveDatabases não está configurado. Nessa configuração, a quantidade de cache de banco de dados é de 3 GB para cada processo de trabalho de cópia de banco de dados ativo e 0,6 GB para cada processo de trabalho de cópia de banco de dados passivo. Veja como esses valores foram obtidos.

Para obter o Destino de Tamanho do Cache do Servidor, multiplique a quantidade de memória em 25%:

48 GB X 25% = 12 GB

Para obter o Destino de Cache Máximo do Banco de Dados, divida o Destino de Tamanho do Cache do Servidor pelo número total de bancos de dados ativos e passivos:

12 GB / 4 bancos de dados = 3 GB

Para determinar a quantidade de memória usada para as cópias passivas do banco de dados, multiplique o Destino de Cache Máximo do Banco de Dados por 20%:

3 GB X 20% = 0,6 GB

Dos 12 GB de memória atribuídos ao Destino de Tamanho do Cache do Servidor, 7,2 GB serão usados por processos de trabalho de banco de dados e 4,8 GB serão reservados pela Repositório de Informações para as duas cópias de banco de dados passivos caso se tornem cópias ativas. Nesse caso, eles usarão o destino máximo do cache de 3 GB.

Exemplo 2

Neste exemplo, o servidor mailbox também tem 48 GB de memória e hospeda dois bancos de dados ativos e dois bancos de dados passivos; no entanto, o parâmetro MaximumActiveDatabases é configurado com um valor de 2. Nessa configuração, a quantidade de cache de banco de dados é de 5 GB para cada processo de trabalho de cópia de banco de dados ativo e 0,2 GB para cada processo de trabalho de cópia de banco de dados passivo. Veja como esses valores foram obtidos.

Para obter o Destino de Tamanho do Cache do Servidor, multiplique a quantidade de memória em 25%:

48 GB X 25% = 12 GB

Para obter o Destino de Cache Máximo do Banco de Dados, divida o Destino de Tamanho do Cache do Servidor pelo número total de bancos de dados ativos mais o número total de bancos de dados passivos multiplicados em 20%:

12 GB / (2A + (2P X 20%)) = 5 GB

Para determinar a quantidade de memória usada para as cópias passivas do banco de dados, multiplique o Destino de Cache Máximo do Banco de Dados por 20%:

5 GB X 20% = 1 GB

Dos 12 GB de memória atribuídos ao Destino de Tamanho do Cache do Servidor, 12 GB estarão em uso por processos de trabalho de banco de dados e nenhuma memória será reservada pela Repositório de Informações para as duas cópias de banco de dados passivos porque elas não podem se tornar cópias ativas nessa configuração (porque MaximumActiveDatabases está configurada com um valor de 2, e já há duas cópias de banco de dados ativos no servidor).