Separando os meta-arquivos do Cyrus Imap

Por padrão, o Cyrus Imap armazena as mensagens e meta-arquivos na mesma estrutura de diretório, o armazenamento de mensagens é constituído por diversos arquivos pequenos que não são acessados tão frequentemente, uma mensagem é acionada somente quando o usuário abre a mesma, os meta-arquivos são separados em arquivos por caixa postal (pasta): header, index, cache, expunge e squat, sendo os três primeiros para indexação e recuperação dos cabeçalhos das mensagens, o expunge para controle de remoção atrasada se essa opção estiver habilitada, o arquivo squat contém uma indexação específica para pesquisa de mensagens, com ganho de 20 a 30% em relação a indexação padrão para operações que envolvam pesquisa, sendo o maior dos meta-arquivos, se a mensagem não estiver referenciada neste arquivo será recuperada através da indexação normal, porém com desempenho inferior.

Sabendo que os meta-arquivos são acessados com mais frequência e ocupam um espaço relativamente pequeno, cerca de 10% para toda a estrutura de caixas postais do usuário (esse resultado foi obtido a partir e estudos com implementações reais até 1000 usuários), é uma boa estratégia configurar o Cyrus Imap para separar esses arquivos em meta-partições que utilizam discos mais rápidos para obter um melhor desempenho das operações de I/O no servidor IMAP.

A partir da versão 2.3 essa configuração é possível utilizando os parâmetros metadata do Cyrus Imap, como conceito, cada partição pode ter somente uma meta-partição e a definição de quais arquivos serão separados é global, ou seja, é definido quais meta-arquivos ficarão separados em meta-partição e essa configuração é compartilhada para todas as partições.

Vejamos o exemplo abaixo com as configurações no arquivo /etc/imapd.conf :

metapartition_files: header index cache expunge squat

metapartition-default: /var/spool/cyrus

metapartition-splitmeta: /var/spool/splitmeta/metadata

partition-default: /var/spool/cyrus/

partition-splitmeta: /var/spool/splitmeta/partition

Vemos que com o parâmetro metapartion_files estamos definindo que todos os 5 meta-arquivos devem ser armazenados na meta-partição, neste cenário já temos uma partição em funcionamento, a partição default que é a padrão do Cyrus Imap e precisamos separar os meta-arquivos das caixas postais já existentes.

Como a configuração de separação de meta-arquivos é global, precisamos informar que os meta-arquivos da partição default estão localizados no mesmo diretório da estrutura de mensagens, como pode ser visto nos parametros partition-default e metapartition-default, já para a nova partição, nomeada splitmeta os meta-arquivos serão armazenados em outro diretório, definido com a diretiva metapartition-splitmeta, onde “slipmeta” deve ser substituído com o nome de cada partição do servidor IMAP.

Após efetuar as modificações execute o comando abaixo para criar a estrutura necessária para a nova partição e meta-partição:

su -s /bin/bash – cyrus -c ‘/usr/lib/cyrus/bin/mkimap /etc/imapd.conf

Será necessário efetuar o reload do serviço do Cyrus Imap para utilizar as novas configurações:

/etc/init.d/cyrus-imapd restart

Para movimentar os usuários para a nova partição é necessário utilizar o comando rename na shell do Cyrus (cyradm) conforme abaixo, durante a movimentação para a nova partição os meta-arquivos serão separados na meta-partição:

cyradm> renamemailbox user/fabio user/fabio splitmeta

Com este comando estamos movimentando o usuário fabio com toda sua estrutura de caixas postais para a nova partição splimeta.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s