Perguntas e respostas do ExchangeLogs de transações, Cmdlets, gerenciamento remoto e muito mais

KC Lemson and Nino Bilic

P: Por que a equipe diminuiu o tamanho do log de transação para 1 MB no Microsoft® Exchange Server 2007?

R: Bem, no Exchange 2007 temos esse ótimo recurso chamado envio de log, que é a tecnologia por trás de vários recursos novos chamados LCR (Replicação contínua local) e CCR (Replicação contínua em cluster). Quando esse recurso está ativado em um nível SG (Grupo de armazenamento), os logs de transação SG são copiados do SG de produção em execução para o SG de cópia. Os logs do SG de cópia são reproduzidos no banco de dados para atualizá-lo. Isso obviamente é uma explicação simplificada do que ocorre, mas dá uma idéia geral.

O problema é que os logs de transação não podem ser enviados para o SG de cópia a não ser que log esteja fechado no SG de produção. Em outras palavras, o log e00 (log atual no primeiro grupo de armazenamento) não pode ser enviado até ser concluído, fechado e renomeado. Além disso, há configurações que controlam quantos logs podem estar por trás desse processo visto que existe uma transação entre disponibilidade e desempenho. (Essas configurações estão disponíveis ao executar o cmdlet Set-MailboxServer no Shell de gerenciamento do Exchange. O arquivo de ajuda fornece detalhes sobre os parâmetros exatos necessários.)

Para encurtar a história, diminuímos o tamanho do log de transação para minimizar a quantidade de dados que pode estar fora de sincronização entre duas cópias do Grupo de armazenamento. Isso acontece, podemos dizer, quando a unidade de disco rígido do banco de dados de produção falha e é necessário tomar alguma ação para iniciar o SG a partir da cópia. Logs de transações menores permitem uma menor perda de dados.

No entanto, não podemos garantir que você perderá apenas 1 MB de dados. Como se tratam de logs de transação, é possível que o arquivo de log de 1 MB perdido contenha, por exemplo, uma transação COMMIT para 5 MB de dados. Nesse caso, você estaria perdendo esses 5 MB de dados na cópia (embora talvez tenha recebido cinco logs com os dados propriamente ditos, o último log com um pequeno bit de dados e a transação COMMIT necessária são fundamentais).

Por fim, você deve avaliar se este é um risco aceitável para suas necessidades de negócios. Uma pequena perda de dados com o tempo de recuperação de apenas alguns minutos pode ser perfeitamente aceitável em comparação à horas do trabalho de restauração. Esse assunto certamente será abrangido em mais detalhes em outras edições!

P: Agora que os logs de transação estão menores, poderemos “executá-los” mais rápido?

R: Em se tratando do Exchange, “executar” refere-se aos nomes dos logs de transação. No Exchange Server 2003, nos logs de transação são nomeados da seguinte maneira:

E nn fffff.log

O nn é o prefixo que varia de acordo com o SG. Como nn será o mesmo durante toda a vida do SG, o número de logs de transação com nomes exclusivos que podem ser criados para o grupo de armazenamento é basicamente o valor “fffff”, que é aproximadamente um milhão de logs (nota: coloque cor de rosa no canto da boca e gargalhe como louco). Alguns de nossos clientes têm executado até esse limite em servidores de email ocupados.

A partir do Exchange Server 2000, fornecemos um hotfix para exibir um evento no log de aplicativo quando esse limite for atingido. (Acesse support.microsoft.com/kb/896001 para obter mais informações.)

Bem, com esse problema a menos, o que acontece no Exchange 2007? Acabamos de dizer que os logs de transação de 5 MB (o tamanho nas versões anteriores do Exchange) foram reduzidos para 1 MB (o tamanho no Exchange 2007). Isso significa que apenas um quinto dos dados podem ser executados com nomes exclusivos de log de transação?

A resposta é não. No Exchange 2007, o nome dos logs de transação está no seguinte formato:

E nn ffffffff.log

Observe que podemos trabalhar com logs “ffffffff” em comparação a apenas “fffff” nas versões anteriores do Exchange. Devido à matemática interna do ESSE (Mecanismo de armazenamento extensível), o Exchange 2007 não pode criar todos os logs “ffffffff”. Em vez disso, são criados logs “7fffffec”, que ainda é um número muito grande (se não acreditar, converta esse valor de hexadecimal em decimal).

O que isso significa em termos práticos? Em termos práticos, isso quer dizer que com o Exchange 2007 você pode criar aproximadamente 2048 vezes mais logs do que nas versões anteriores do Exchange. Vamos considerar logs com um quinto do tamanho:

2048 / 5 = 409.6

Como você pode ver, o novo esquema de nomeação de logs pode manipular 409 vezes mais dados do que o antigo! E lembre-se que isso é por SG, não por servidor, visto que cada grupo de armazenamento terá um prefixo de arquivo de log diferente (como e00, e01 e assim por diante). Já dissemos que é possível criar 50 SGs por servidor na versão Enterprise do Exchange 2007? Não acreditamos que alguém executará mais logs de transação em breve!

P: Como posso gerenciar meus servidores Exchange 2007 remotamente?

R: Existem algumas opções para gerenciar os servidores Exchange 2007 remotamente. Primeiramente, é possível instalar as ferramentas de gerenciamento do Exchange 2007 em um computador separado do servidor Exchange, contanto que o computador esteja executando a versão de 32 bits ou de 64 bits do Windows Server® 2003 Service Pack 1 (SP1) ou posterior, o Windows Server 2003 R2 ou o Windows XP SP2 ou posterior. Observe que a instalação de qualquer função do servidor (acesso do cliente, caixa de correio, margem e assim por diante) no hardware de 32 bits não é suportada nos ambientes de produção, mas é suportada para a instalação das ferramentas de gerenciamento em um computador de 32 bits. Observe também que por ser a versão inicial do Exchange Server 2007, as ferramentas de gerenciamento não são suportadas no Windows Vista™.

Em algumas organizações, o departamento de TI cria um único servidor para ser o servidor de gerenciamento, instalando todas as ferramentas necessárias para vários produtos nesse servidor. Em seguida, os administradores que precisam usar essas ferramentas acessam o servidor de gerenciamento através do servidor terminal para realizarem a administração remota. Em outras configurações, os usuários instalam as ferramentas de gerenciamento em suas próprias áreas de trabalho.

Do console ou do shell, é possível realizar operações nos servidores de sua organização. No console, os servidores são visíveis para que seja possível realizar operações em qualquer um de forma remota. No shell, muitas tarefas suportam um sinalizador de filtragem como -server se desejar abranger uma operação em um único servidor. No entanto, existem algumas exceções para os comandos que devem ser executados localmente, como o comando Get-NetworkConnectionInfo.

P: Em sua última coluna, você disse quanto de RAM é recomendado para um servidor Exchange 2007. Que dizer sobre o tamanho do arquivo da página?

R: Para evitar possíveis erros fora da memória virtual nos servidores Exchange 2007, recomendamos as seguintes diretrizes para determinar o tamanho do arquivo da página do seu sistema.

Se o servidor tiver menos de 8 GB de RAM, o tamanho mínimo do arquivo da página deve ser o valor da RAM mais 10 MB. Assim, se o servidor tem 4 GB de RAM, o tamanho mínimo seria 4 GB mais 10 MB. No entanto, o tamanho recomendado de arquivo da página é o valor da RAM multiplicado por 1,5. Portanto, para o servidor de 4 GB, o ideal seria 6 GB.

Além disso, o tamanho mínimo do arquivo da página é calculado da mesma maneira para um servidor com mais de 8 GB de RAM, isto é, o valor da RAM mais 10 MB. No entanto, o tamanho recomendado é recomendado de modo diferente. Basicamente, em um servidor com mais de 8 GB de RAM, você deve multiplicar apenas 1,5 vez o valor da RAM caso obtenha erros fora da memória virtual com arquivos de página menores.

Observe que os erros mencionados nesse caso não têm nada a ver com a fragmentação da memória virtual (um problema com os servidores Exchange 2000 e Exchange 2003). Esses são erros instantâneos reais registrados pelo sistema que indicam se o tamanho do arquivo da página está aumentando ou se o arquivo é muito pequeno.

P: Gostaria de saber como usar o Shell de gerenciamento do Exchange, mas nunca usei uma linha de comando para administrar meus sistemas antes. Por onde começo?

R: Primeiro, vamos começar com alguns princípios básicos. Cada cmdlet do Shell de gerenciamento do Exchange é composto por apenas um verbo e um substantivo. Existem apenas alguns verbos úteis usados pelo Shell de gerenciamento do Exchange: “Get” é usado para recuperar propriedades de objetos, “Set” para alterar propriedades de um objeto, “New” para criar novos objetos e assim por diante. Os substantivos do Shell de gerenciamento do Exchange incluem muitos conceitos que todos os administradores do Exchange já conhecem (por exemplo, Mailbox, Contact, Queue e OWAVirtualDirectory). Há também novos conceitos no Exchange Server 2007 (como TransportRule, StorageGroupCopy e UMAutoAttendant). Desse modo, na prática, um cmdlet básico seria parecido com New-Mailbox (para criar uma caixa de correio) ou Get-Mailbox (para recuperar uma lista de caixas de correio da organização).

No entanto, a maioria dos cmdlets precisará de mais especificações sobre o que exatamente você está tentando realizar. Se desejar alterar uma propriedade de uma caixa de correio, por exemplo, deverá especificar a caixa de correio e a propriedade. Isso é feito com parâmetros. Se New-Sandwich fosse um cmdlet, os parâmetros poderiam ser -NumberOfTomatoSlices 4, -Bread Wheat e uma variedade de outras opções similares que especificam em mais detalhes a forma do sanduíche (-FlufferNutter $true-ahhhh yum).

Após entender a divisão verbo-substantivo, é possível usar a exposição da linha de comando no assistente EMC (Console de gerenciamento do Exchange) para se familiarizar com as operações realizadas por cada cmdlet. No EMC, execute o assistente para criar um novo usuário. No final do assistente, após a conclusão da operação, você verá uma cópia do comando executado pelo assistente no escopo (veja a Figura 1). Pressione Ctrl + C para copiar o conteúdo dessa caixa de diálogo e colar o cmdlet no Bloco de notas e reunir seus próprios arquivos em lote simples.

Figure 1 Command-line exposure for creating a new user

Figure 1** Command-line exposure for creating a new user **(Clique na imagem para aumentar a exibição)

Se desejar praticar usando cmdlets (mas sem causar danos), um belo truque é colocar -WhatIf no final do comando. Ao fazer isso, o sistema informará o que faria executando o comando sem fazer nenhuma alteração real no sistema.

Após se familiarizar com cmdlets básicos como *-Mailbox, você provavelmente tentará alguns outros. Para localizar mais cmdlets, use o cmdlet Get-ExCommand. Uma lista de todos os cmdlets de gerenciamento do Exchange será exibida. (Isso deve ser feito durante a execução do Shell de gerenciamento do Exchange. Basta abrir o Microsoft Command Shell ou o Windows PowerShell™ não permitirá a realização desta tarefa ou de qualquer outra tarefa de gerenciamento do Exchange.) A lista é enorme, portanto, use a correspondência de curingas para encontrar o que está procurando. Por exemplo, Get-ExCommand *database* retornará uma lista de todos os cmdlets do Exchange que têm “database” (banco de dados) no nome, como Dismount-Database, Move-DatabasePath e New-MailboxDatabase.

Se você souber parte do substantivo que está procurando, percorra as opções. Por exemplo, digite Get-Mailbox e pressione a tecla Tab para percorrer todos os cmdlets com mailbox no substantivo do nome da tarefa. É possível inclusive combinar a correspondência de curingas e a conclusão de tabulação. Por exemplo, é possível digitar Get-*Mailbox* e percorrer as opções possíveis.

Outro truque simples é usar prompts. Cada cmdlet tem um conjunto de parâmetros que são necessários por padrão (os parâmetros básicos necessários para realizar a operação). Os cmdlets “Get”, como Get-Mailbox, não precisam de nenhum parâmetro. Por padrão, Get-Mailbox retorna uma lista de todas as caixas de correio da organização inteira. (A lista terá no máximo 1000, por padrão. Para alterar esse máximo, digite Get-Mailbox -ResultSize 2000, por exemplo.) Cmdlets que criam ou modificam objetos (como Set ou New) solicitam as informações necessárias sobre o objeto que deseja criar ou modificar. Se New-Mailbox for executado, por exemplo, o shell solicitará a senha, o banco de dados, o nome, entre outras informações individualmente.

Para saber mais sobre os parâmetros possíveis de um determinado cmdlet, use o sistema de ajuda: Help Move-DatabasePath. (Também é possível digitar apenas Move-DatabasePath, Move-DatabasePath -? e assim por diante; tentamos abranger as bases.) A ajuda fornecerá uma descrição do cmdlet e uma lista dos parâmetros junto com a finalidade de cada um. A ajuda também pode ser acessada com o cmdlet Get-Help. (Não é bom digitar apenas Get-Help? Você não gostaria que algum conhecido seu pudesse executar esse cmdlet no mundo real?)

Outra maneira de descobrir possíveis parâmetros de um cmdlet é usar a conclusão de tabulação nos nomes dos parâmetros. Digite Get-Mailbox -S e pressione Tab para percorrer os possíveis parâmetros que começam com S.

E, obviamente, existe o extenso sistema de ajuda. Se você não encontra o que está procurando offline, não se esqueça de conferir regularmente o conteúdo de ajuda atualizado em go.microsoft.com/fwlink/?linkid=79421 e o guia de referência rápida em go.microsoft.com/fwlink/?linkid=64647.

Tudo isso é iniciado com o Console de gerenciamento do Exchange, mas essas informações raramente cobrem a superfície do poder e da flexibilidade da linha de comando. Falaremos mais sobre isso em colunas futuras.

P: No ESM (Gerenciador do sistema Exchange) do Exchange Server 2003, podíamos ver facilmente o tamanho da caixa de correio de todos os usuários. Esse recurso parece que não existe mais no Exchange 2007. É possível fazer isso no Exchange 2007?

R: No novo console do Exchange 2007, é possível obter o tamanho de uma caixa de correio na página de propriedades gerais da própria caixa de correio. Se desejar essa informação para vários usuários, use o Shell de gerenciamento do Exchange.

Se executar Get-MailboxStatistics, os dados de um servidor inteiro serão obtidos (não apenas de um banco de dados específico). Por padrão, o tamanho não é mostrado, é necessário executar o cmdlet com Format-List para obter o tamanho:

get-mailboxstatistics | format-list

Talvez seja ainda melhor escolher o que deseja ver e produzi-lo em uma tabela. Nesse exemplo, obtivemos o nome de exibição da caixa de correio, o tamanho total do item, o tamanho total do item excluído e o banco de dados no qual a caixa de correio está:

Get-MailboxStatistics | Select-Object 
displayname,totalitemsize,
totaldeleteditemsize,databasename 
| Format-Table

Dependendo das informações que está procurando, poderá usar formatações diferentes para a saída. Nesse exemplo, Format-Table funciona melhor do que Format-List

KC Lemson é gerente-chefe de programa na equipe do Exchange Server. Seu número PIN ATM é 0000, não gaste tudo isso em um só lugar.

Nino Bilic, chefe técnico, gasta seu tempo livre colecionando cheques de US$ 1.000 de Bill em agradecimento ao encaminhamento de seu email.

© 2008 Microsoft Corporation e CMP Media, LLC. Todos os direitos reservados. A reprodução parcial ou completa sem autorização é proibida..