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 à
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 dessa 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 parâmetros 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'.
Obrigado.
Fabio S. Schmidt:
http://respirandolinux.wordpress.com