Infra - Exchange Server
Conceitos sobre a arquitetura de armazenamento do Exchange Server
Neste artigo iremos mostrar o conceito de armazenamento do Exchange Server, sabendo estes conceitos fica fácil de trabalhar um Disaster Recovery, utilizar de forma correta o backup, saber em qual tipo de discos os diferentes arquivos devem ficar, em suma planejar melhor uma implementação e manutenção de sucesso do Exchange Server System.
por Anderson PatricioNeste artigo iremos mostrar o conceito de armazenamento do Exchange Server, sabendo estes conceitos fica fácil de trabalhar um Disaster Recovery, utilizar de forma correta o backup, saber em qual tipo de discos os diferentes arquivos devem ficar, em suma planejar melhor uma implementação e manutenção de sucesso do Exchange Server System.
Um pouco de história..
Antes de conversarmos sobre a arquitetura de armazenamento, vamos ver as versões existentes do ESE (Extensible Storage Engine). O ESE é multi-usuário, usa o método ISAM (indexed sequential access method), gerenciamento de tabelas com uma linguagem de manipulação de dados (DML Data Manipulation Language) e DDL (data definition language). O ESE permite que as aplicações armazenem registro e criem índices para acesso destes registros de diversas maneiras.
O ESE é uma engine (motor) sofisticada baseada em transações. A transação é uma série de operações também conhecidas como unidades atômicas (indivisíveis). Todas operações de uma transação são completas e salvas na base caso isto ocorra não vai nenhuma operação. Exemplo: uma operação envolvendo a movimentação de uma mensagem da Caixa de Entrada para a os Ítens Excluídos. A mensagem será apagada de uma pasta e adicionado em outro, depois disso as propriedades das pastas são atualizadas. Se ocorrer um erro neste processo, não é interessante para você aparecer a cópia da mensagem na Caixa de Entrada e nos Itens Excluídos.
O ESE trabalha para prevenir este tipo de problema, para uma transação ser confirmada na base do Exchange o ESE valida todas operações dentro da transação, ficando desta forma a base íntegra e com informações válidas.
O ESE é responsável pela estrutura da database e gerenciamento de memória. Como a escrita em memória é muito mais rápida que a escrita em disco, em torno de 200.000 vezes! o ESE faz cache da base em memória e faz a transferências destas informações em páginas de 4kb (entrada/saída). O ESE atualiza as páginas em memória e depois escreve e/ou atualiza dos dados no disco. A última versão da database está sempre em memória nunca em disco devido ao design do produto, quando paramos corretamente o serviço do Information Store, ele limpa todas as páginas em memória e adicionado ao arquivo da database com isto temos uma base consistente.
Abaixo relacionamos as versões existentes do ESE:
-
ESE97 é a engine utilizada no Exchange 5.5
-
ESENT é a engine utilizado pelo Active Directory e vários outros componentes do Microsoft Windows. Ps.: A implementação do ESENT no Active Directory utiliza arquivos de log e 10MB ao contrário dos 5MB comumente utilizados.
-
ESE98 é a engine utilizada no Exchange 2000 e Exchange Server 2003
Nota: ESE no passado era referenciada como JET Blue que não é a mesma tecnologia utilizada no Microsoft Access (Jet Red).
Os arquivos que compõe o universo da base do Exchange Server
O Exchange Server armazena a base de dados em dois arquivos: arquivos com a extensão .edb e .stm. Juntos eles formam a base de dados do Exchange. Um exemplo: o padrão do exchange é o default mailbox store que vem quando o produto é instalado, ele usa o priv1.edb e priv1.stm.
O arquivo .EDB é uma database ESE e ele usado para armazenar mensagens MAPI e anexos, também conhecido como database baseada em MAPI. Por sua vez o arquivo .stm armazena conteúdo nativo de Internet, este conteúdo é escrito em formato nativo, não é necessário converter messages e outros itens para o formato do Exchange (como nas versões Exchange 5.5 e anteriores).O arquivo .stm também é um database ESE, referenciada como database de streaming.
Ambos os arquivos .edb e .stm funcionam como um par, uma assinatura da database de 32bits (número randômico combinado com a data da criação dos arquivos) é adicionado ao cabeçalho de ambos os arquivos. O esquema interno para as páginas .stm são armazenadas no arquivo .edb
O Exchange Server usas transações para controlar as mudanças que ocorrem com as databases dentro de um mesmo storage group. Estas transações são armazenadas dentro de um arquivo de log, para depois serem armazenados na database. Este gerenciamento de transações é feito pelo serviço Microsoft Exchange Information Store (Store.exe). Qualquer entrada do arquivo de log ainda não adicionado a database também é considerado parte da atual database do Exchange, então podemos resumir que o conjunto dos arquivos .edb e .stm mais os arquivos de transação .log formam a base do Exchange Server, como mostra a figura:
Este são os dois tipos de databases disponíveis no Exchange Server 2003:
-
Private store databases: Este tipo armazena caixas de usuários
-
Public store databases: Este tipo armazena hierarquia de Pastas Públicas
Storage Groups
Cada Storage Group possui um conjunto de logs e alguns arquivos auxiliares (arquivos temporários da database, .chk arquivo de checkpoint, e logs reservados) para todas as databases (arquivos .edb e .stm) contidas no storage group. O Exchange Server 2003 suporta múltiplas storage groups e cada storage group suporta múltiplas mailboxstore, o número de storage groups e mailbox store depende da versão do Exchange. Mas o número na versão enterprise é até 4 storage groups e até 5 databases por storage group, totalizando 20 databases por servidor.
Podemos visualizar graficamente as storage groups, mailbox store e logs da seguinte forma:
Em cada storage group, cada .edb e .stm representam um mailbox store ou public folder store. Podemos perceber também que os logs fiquem em nível de storage group. Os outros arquivos encontrados são os seguintes:
Arquivo | Função |
<Prefixo LOG>xxx.chk | Este é o arquivo de checkpoint (exemplo e00.chk) ele é responsável por determinar quais transações dos arquivos de log já foram gravadas na database. Ele é atualizado quando uma transação é feita com sucesso na database. Ele não necessário para acrescentar dados a database mas é útil no recovery porque eles sabem onde exatamente está a próxima transação que será gravada como também sabe todas informações que já foram gravadas na database. |
Exx.log | É o
arquivo corrente de transação do storage group. Ele fornece ao ESE a habilidade
de gerenciar informações armazenadas com mais velocidade. O ESE armazena as
novas transações, como a entrada de uma mensagem, juntamente na memória em cache
e no arquivo de transação de log. Estas informações são escritas linearmente
neste arquivo, sempre ao final do arquivo, depois de um determinado tempo as
transações são armazenadas na database.
Por padrão o primeiro storage group utiliza o prefixo E00 sendo o arquivo E00.log, ele é utilizado por todos os mailbox e public folders stores de um storage group. |
<Log Prefix>XXXXX.log | Têm
exatamente 5.242.880 bytes (5MB). O arquivo atual de log E00.log quando atinge
os 5MB ele é renomeado no formato <log prefixo>XXXXX.log, onde XXXXX é um
número hexadecimal que pode ir de 00000 até FFFFF.
Depois desta operação é criado um novo arquivo Exx.log. |
Res1.log e Res2.log | Estes são os arquivos de log reservados do storage group. Eles são utilizados em uma situação de emergência. Caso ocorra falta de espaço em disco para escrever as operações que estão localizadas na memória o Exchange Server utiliza estes dois arquivos Res1.log e Res2.log para gravar as operações restantes da memória e desmontar as bases em segurança. |
Tmp.edb | Este é um arquivo temporário utilizado para processar as transações. O arquivo tmp.edb contém informações que são apagadas quando todos os armazenamentos de um storage group são desmontados ou o serviço Exchange Information Store é parado. |
<arquivo>.edb | É database do tipo rich-text para as mailbox stores e public folder stores. O arquivo de database para a private store padrão é chamado Priv1.edb. |
<arquivo>.stm | É a database do conteúdo nativo internet. Geralmente o nome do arquivo é o mesmo do arquivo de database rich-text com a extensão .stm. Ex.: O arquivo .stm para private store padrão é o priv1.stm. |
Trabalhando com os arquivos na prática
Vamos ver agora na prática os arquivos que conversamos nos tópicos anteriores e algumas dicas referentes a cada tópico.
Gerenciamento de mailbox store (arquivos .edb e .stm)
É fácil encontrarmos os arquivos, podemos move-los
-
Abrir o Exchange System Manager
-
Expandir Administrative Groups
-
Expandir <Administrative Group>
-
Expandir Servers
-
Expandir <Servidor>
-
Expandir <Storage Group>
-
Clicar com o botão direito na mailboxstore desejada e pedir Properties
Boas práticas:
-
Utilização de raid 5 para as databases do Exchange Server
-
Backup íntegro destes arquivos
-
Manter estes arquivos em discos separados do arquivo de paginação (pagefile.sys), partição de root (c:) e partição de sistema (WINNT)
Gerenciamento de Storage Groups (arquivos .log, .chk)
Agora vamos abordar onde gerenciamos os arquivos de log, na própria interface do Exchange conseguimos visualizar o prefixo, em nosso exemplo abaixo é o E00.
-
Abrir o Exchange System Manager
-
Expandir Administrative Groups
-
Expandir <Administrative Group>
-
Expandir Servers
-
Expandir <Servidor>
-
Botão direito em <Storage Group> e clique em Properties
Boas Práticas:
-
Ficar em disco Raid 1, devido a escrita linear dos arquivos
-
Os arquivos de log crescem constantemente devemos ter uma política de backup on-line para remoção dos arquivos já gravados na database
-
Em certos casos podemos utilizar o Enable circular logging que não armazena os arquivos de log, todos os arquivos de log que já foram escritos na database são sobrescritos. A recuperaçao utilizando este método baseado em arquivos de log não é possível.
Conclusão
Mostramos aqui como o Exchange trabalha com seus arquivos de armazenamento como também as funções das extensões .edb, .stm, .log, .chk que ajudam na administração e continuidade do produto.
- Migrando e removendo o Exchange 2007 para Exchange 2010Exchange Server
- Migrando (e removendo) o Exchange 2007 para Exchange 2010Exchange Server
- Foto no Outlook 2010Exchange Server
- Exchange UM Test PhoneExchange Server
- Integrando o OCS ao Exchange UMOCS / LCS