Introdução

Umas das tarefas mais interessantes para se praticar com Exchange Server, com certeza é a migração de plataforma. Muitos clientes que possuem a plataforma Exchange Server 2007 estão migrando para o Exchange Server 2010, enfim, mas o que quero dizer é, precisaremos executar milhares de move-mailbox.

Por várias vezes visualizei ambientes enormes, hardware poderosos, DC’s em x64 dentre outros poderosos itens de hardware, porém seus administradores, não conheciam o MRS Configuration File e com isto não conseguiam expandir o poder de migração de seus servidores, sendo assim geravam imensas filas de aguardo (QUEUE) e as migrações eram lentas e levavam muito tempo para serem finalizadas.



Porque isto acontece? Ao trabalharmos com os valores no modelo Default do MRS Configuration File, somos limitados pela configuration do MRS (Mailbox Replication Service), para isto vamos customizar o MRS Configuration File.

Onde encontro o MRS Configuration File?

O arquivo de configuração do MRS (Mailbox Replication Service) esta disponível dentro dos servidores CAS (Client Access Server), no seguinte local:

“Unidade”:\Program Files\Microsoft\Exchange Server\V14\Bin

Na imagem abaixo podemos visualizar o diretório default para o MRS Configuration File.





Dentro do diretório localize o arquivo idêntico ao selecionado na imagem demonstrada acima, o nome do arquivo do MRS é MSExchangeMailboxReplication.exe.Config.


Nota: Quando visualizar o arquivo por default o nome do arquivo estará como MSExchangeMailboxReplication.exe, porém ao visualizar a coluna TYPE poderá visualizar que este arquivo é um arquivo CONFIG File e não um executável.

Como editar o MRS Configuration File?

Primeiro lugar você precisa entender com o MRS Configuration File funciona, baseado no arquivo  MSExchangeMailboxReplication.exe.Config podemos editar este arquivo, preferencialmente com o Notepad.

Após abrir o MSExchangeMailboxReplication.exe.Config  com o notepad, podemos dividir o arquivo em três partes:

  1. Códigos do MRS (XML code)
  2. Instruções de Customização do MRS
  3. Valores do MRS

Vamos focar nossa atenção nas duas últimas opções, sendo assim abaixo existe um exemplo de Instrução de Customização do MRS, logo abaixo:

Exemplo de Instrução de Customização do MRS

MRS Configuration File

<!-- Mailbox Replication Service configuration

    Setting Name - Default, MinValue, MaxValue

    MaxRetries - 60, 0, 1000

    MaxCleanupRetries - 5, 0, 100

    RetryDelay - 00:00:30, 00:00:10, 00:30:00

    MaxMoveHistoryLength - 2, 0, 100

    MaxActiveMovesPerSourceMDB - 5, 0, 100

    MaxActiveMovesPerTargetMDB - 2, 0, 100

    MaxActiveMovesPerSourceServer - 50, 0, 1000

    MaxActiveMovesPerTargetServer - 5, 0, 1000

    MaxTotalMovesPerMRS - 100, 0, 1024

    FullScanMoveJobsPollingPeriod - 00:10:00, 00:03:00, 1.00:00:00

    MinimumTimeBeforePickingJobsFromSameDatabase - 00:00:04, 00:00:00, 01:00:00

    ServerCountsNotOlderThan - 00:10:00, 00:00:00, 01:00:00

    MRSAbandonedMoveJobDetectionTime - 01:00:00, 01:00:00, 12:00:00

    BackoffIntervalForProxyConnectionLimitReached - 00:30:00, 00:00:30, 1.00:00:00

    DataGuaranteeCheckPeriod - 00:00:10, 00:00:01, 02:00:00

    DataGuaranteeTimeout = 00:30:00, 00:00:00, 12:00:00

    DataGuaranteeLogRollDelay = 00:01:00, 00:00:00, 12:00:00

    EnableDataGuaranteeCheck = false, false, true

    DisableMrsProxyCompression = false, false, true

    DisableMrsProxyBuffering = false, false, true

    MinBatchSize = 100, 2, 1000

    MinBatchSizeKB = 256, 16, 16384

  -->


Neste exemplo podemos visualizar as seguintes informações: nome da configuração, valor default, valor minímo e valor máximo das configurações.

Baseado nestes valores podemos estudar o melhor cenário para nossa implementação e fazer as configurações de acordo com nossa necessidade.

Customizando valores do MRS

Agora que conhecemos os valores que o MRS nos dá suporte, podemos customizar estes valores, para termos uma migração Move-Mailbox mais performática e principalmente estável. Vale ressaltar que conhecer o hardware para o qual a solução foi especificada é pré-requisito para que você tenha sucesso em sua implementação.

No exemplo acima, podemos visualizar vários valores, porém gostaria de destacar algumas variáveis que deverão ser alteradas para termos um processo melhor.

Nome da Propriedade


Descrição

MaxRetries


Esta propriedade especifica o número máximo de vezes que o MRS irá tentar executar uma tarefa depois de encontrar uma falha. Pode-se  especificar um valor de 0 a 1000. O valor padrão é 60

RetryDelay


Esta propriedade especifica a quantidade de tempo que o MRS irá esperar, antes de tentar executar uma tarefa novamente após uma falha. Pode-se  especificar um valor de 0:00:10 (10 segundos) até 0:30:00 (30 minutos). O valor padrão é 0:00:30 (30 segundos).

MaxMoveHistoryLength


Esta propriedade especifica o número máximo de histórico que será mantido dentro da caixa postal no momento da movimentação. Pode-se especificar um valor de 0 a 100. O valor padrão é de 02 para o histórico.

MaxActiveMovesPerSourceMDB


Esta propriedade especifica o número total de tarefas que o MRS poderá realizar ao mesmo tempo em um Database de Origem simultaneamente. O valor padrão é 05, mas podemos especificar valores na range de 0 à 100.

MaxActiveMovesPerTargetMDB


Esta propriedade especifica o número total de tarefas que o MRS poderá realizar ao mesmo tempo em um Database de Destino simultaneamente. O valor padrão é 02, mas podemos especificar valores na range de 0 à 100.

MaxActiveMovesPerSourceServer


Esta propriedade especifica o número total de tarefas MRS pode realizar, que incluem o servidor como origem de dados. Você pode especificar um valor de 0 a 1000. O valor padrão é de 50 movimentos simultâneos.

MaxActiveMovesPerTargetServer


Esta propriedade especifica o número total de tarefas MRS pode realizar, que incluem o servidor como destino de dados. Você pode especificar um valor de 0 a 1000. O valor padrão é de 50 movimentos simultâneos.

MaxTotalMovesPerMRS


Esta propriedade especifica o número total de tarefas que uma única instância do MRS pode executar de cada vez. Você pode especificar um valor de 0 a 1000. O valor padrão é 100 movimentos simultâneos.

FullScanMoveJobsPollingPeriod


Esta propriedade especifica quantas vezes cada instância da MRS verifica se existem novas tarefas de trabalho. Você pode especificar um valor de no mínimo  00:03:00 (3 minutos), até o valor máximo de  1.00:00:00 (1 dia). O valor padrão é 0:10:00 (10 minutos).

 

Exemplo de Customização do MRS

Os valores no exemplo abaixo foram customizados baseados nas seguintes variáveis:

  • Processamento dos Servidores (Ambiente Novo e Ambiente Antigo)
  • Memória dos Servidores (Ambiente Novo e Ambiente Antigo)
  • Disco / Storage dos Servidores (Ambiente Novo e Ambiente Antigo)
  • Número de Servidores CAS (Ambiente Novo)
  • Tamanho médio de Caixas Postais a serem migradas (Ambiente Antigo)

Baseado nas variáveis acima, podemos pré-estipular quais campos deverão ser modificados para termos uma maior performance no move-mailbox.

Nota: Quando fizer uma alteração em um MRS configuration File, cuide para que todos os servidores CAS deste mesmo site, tenham a mesma configuração.

MRS Configuration File

  <MRSConfiguration

    MaxRetries = "60"

    MaxCleanupRetries = "5"

    MaxStallRetryPeriod = "00:15:00"

    RetryDelay = "00:00:30"

    MaxMoveHistoryLength = "2"

    MaxActiveMovesPerSourceMDB = "150"

    MaxActiveMovesPerTargetMDB = "150"

    MaxActiveMovesPerSourceServer = "500"

    MaxActiveMovesPerTargetServer = "500"

    MaxTotalMovesPerMRS = "400"

    FullScanMoveJobsPollingPeriod = "00:03:00"

    MinimumTimeBeforePickingJobsFromSameDatabase = "00:00:04"

    ServerCountsNotOlderThan = "00:10:00"

    MRSAbandonedMoveJobDetectionTime = "01:00:00"

    BackoffIntervalForProxyConnectionLimitReached = "00:30:00"

    DataGuaranteeCheckPeriod = "00:00:10"

    DataGuaranteeTimeout = "00:30:00"

    DataGuaranteeLogRollDelay = "00:01:00"

    EnableDataGuaranteeCheck = "true"

    DisableMrsProxyCompression = "false"

    DisableMrsProxyBuffering = "false"

    MinBatchSize = "100"

    MinBatchSizeKB = "256" />

</configuration>


Após estas configurações não esqueça todos os servidores CAS dentro deste mesmo site, deverão ter os valores configurados idênticos.

O arquivo pode ser alterado e após isto o MRS entenderá os novos valores customizados e irá trabalhar com as alterações efetuadas.

Até mais,
Rover Marinho
Twitter: @rovermarinho
Blog: http://rovermarinho.wordpress.com