Artigo original publicado em 1° de junho de 2012, sexta-feira
Nos últimos meses, recebemos relatórios sobre crescimento excessivo da pasta Itens Recuperáveis (que muitos chamam de Caçamba, apesar se não usarmos mais esse termo). Existem dois cenários principais que podem colaborar com esse crescimento excessivo.
A Recuperação de Item Individual e Retenção de Litígio permitem a preservação dos dados na caixa de correio. Se você não tiver familiaridade com esses recursos, veja minha postagem anterior Recuperação de Item Individual no Exchange 2010 para saber mais.
Além de reter dados na caixa de correio, tanto a Recuperação de Item Individual quanto a Retenção de Litígio permitem o controle de versões. Basicamente, quando um item é alterado, é feita uma cópia na gravação (COW) para preservar sua versão original. O item original é colocado na pasta Itens Recuperáveis\Versões. Essa pasta não fica exposta aos usuários.
Considerando que o Exchange 2010 inclui uma alteração na maneira como os clientes conectam e acessam dados relacionados à caixa de correio, a atividade de cópia na gravação ocorre na camada XSO (Objeto do Sistema Exchange) no servidor de Acesso para Cliente.
O comportamento da cópia na gravação pode gerar crescimento excessivo. Constatamos o seguinte cenário de uso do Microsoft Outlook como principal causa da cópia na gravação excessiva:
Puxa, que coisa!
Como os anexos fazem parte da mensagem, não faz sentido criar uma cópia para cada anexo no item. Basicamente, quando você salva um item com anexo, o Outlook executa estes recursos:
A cópia na gravação estava ocorendo com SaveAttachment e SaveMessage. Fuçando o código, constatamos que a chamada para SaveAttachment por fim chama o método Flush (uma técnica que o cliente usa para sincronizar o estado com o servidor) na mensagem à qual ele está associado depois que o anexo é salvo. Era essa chamada Flush que estava sinalizando ao código da cópia na gravação para que fosse executado.
Após análise detalhada, percebemos que a lógica da cópia na gravação é disparada na chamada Flush any. Essa foi uma descoberta fantástica porque o Flush pode ser iniciado em muitos cenários, possivelmente resultando na causa dos milhares de eventos de cópia na gravação que vários clientes testemunharam em seus ambientes.
O Log de Versões de Calendários é o processo pelo qual alterações no calendário feitas em uma caixa de correio são salvas mediante a cópia na gravação. O Log de Versões de Calendários foi introduzido no Exchange 2010 para ajudar a resolver e reparar os problemas de confiabilidade dos calendários.
O design do Log de Versões de Calendários serve para criar um log sempre que um item de calendário é alterado. Esses logs fornecem um histórico da reunião. Você pode usar o cmdlet Get-CalendarDiagnosticLog para examinar o histórico e determinar quais clientes executaram uma ação destrutiva. O segundo uso do Log de Versões de Calendários é feito pelo Assistente para Reparo de Calendário, que usa os logs ao tentar determinar o histórico de um determinado item de calendário para fins de detecção de inconsistência.
O Log de Versões de Calendários é habilitado por padrão nas caixas de correio do Exchange 2010. Você pode desabilitar ou habilitar esse recurso em uma caixa de correio com a propriedade CalendarVersionStoreDisabled. Observe que o nome da propriedade é CalendarVersionStoreDisabled, por isso o valor padrão de $false significa que o Log de Versões de Calendários é habilitado por padrão. Dependendo da configuração da caixa de correio, um processo diferente é seguido para armazenar cópias dos itens de calendário:
Devido ao problema mencionado de como a lógica da cópia na gravação não fez distinção entre as operações Flush e Save, o Log de Versões de Calendários, em alguns casos, poderia consumir uma alta porcentagem da cota da pasta Itens Recuperáveis (e, se você lembrar, o limite de aviso é de 20GB e a cota irreversível é de 30GB).
Se o tamanho da pasta for maior do que RecoverableItemsWarningQuota, o Log de Versões de Calendários será desabilitado para a caixa de correio. O valor RecoverableItemsWarningQuota que é usado depende das configurações da caixa de correio:
Quando o Log de Versões de Calendários está desabilitado, o seguinte evento é gerado no log de eventos Aplicativo no servidor de Acesso para Cliente:
ID de Evento: 5003 Fonte: Armazenamento de Camada Intermediária do MSExchange Categoria da Tarefa: CopyOnWrite Nível: Informações Descrição: caixa de correio do usuário <legacyExchangeDN> excedeu a cota de aviso da caçamba. O log de calendários foi desabilitado para a caixa de correio.
E não é só isso que estamos fazendo. Não vou entrar em detalhes nesta etapa inicial de desenvolvimento, mas estamos trabalhando para melhorar ainda mais o Log de Versões de Calendários para minimizar o impacto desse recurso em sua implantação. Quando eu puder contar mais novidades, vou escrever neste blog.
Ross Smith IV Gerente Principal do ProgramaExperiência do cliente Exchange
Esta é uma postagem de blog traduzida. Consulte o artigo original em Holy COW! Changes to Recoverable Items versioning in Exchange 2010 SP2 RU3