Limitar o uso do disco de log de transações do Openldap

4

O Openldap (especificamente versão 2.4) armazena o histórico de transações nos arquivos de log por padrão no diretório de dados do ldap (então /var/lib/ldap/log.########### ). Atualmente, esses arquivos de log ocupam muito espaço, nunca são removidos automaticamente e crescem infinitamente. A remoção manual de logs antigos funciona bem, mas eu gostaria de limitar a quantidade de logs que o slapd mantém automaticamente.

MEU CENÁRIO

Eu sei que esses logs de transação são usados para recuperar o ldap no caso de uma falha catastrófica. No meu cenário, o ldap é regularmente limpo e preenchido por meio de um script (isso não é usado para contas de login do sistema). Por isso, não preciso me preocupar com a recuperação, no caso de uma falha, é aceitável executar o script novamente. Por outro lado, o wipe regular / população de ldap inclui muitas transações, então esses logs de transação se acumulam rapidamente.

LOGROTATE

logrotate tem potencial aqui, mas se o log de transações mais recente for removido, o slapd não será iniciado (ele reclamará sobre a necessidade de executar a recuperação). Porque eu não posso confiar nos nomes de log (porque slapd mantém muitos logs pequenos, incrementando o número do arquivo de log como vai) Eu gostaria de usar as configurações de banco de dados Berkeley que cria esses logs. Posso contar com as datas de acesso / criação (a data de modificação mais recente é o log de transações mais recente), mas ainda prefiro usar Berkeley, se possível.

DB_CONFIG

As configurações dos logs de transações são controladas pelas configurações de banco de dados de Berkeley em /var/lib/ldap/DB_CONFIG . O exemplo DB_CONFIG que vem com o openldap especifica algumas configurações de log de transação:

set_lg_regionmax 262144
set_lg_bsize 2097152

De acordo com a documentação da Oracle sobre Berkeley:

set_lg_regionmax: Set the size of the underlying logging area of the
Berkeley DB environment, in bytes. The log region is used to store 
filenames, and so may need to be increased in size if a large number of 
files will be opened and registered with the specified Berkeley DB 
environment's log manager.

Portanto, isso parece apenas definir o tamanho do arquivo que rastreia os arquivos de log de transações.

set_lg_bsize: Set the size of the in-memory log buffer, in bytes. 

Isto parece controlar quanto de RAM é alocado para o buffer de transação.

Os arquivos log.########### no diretório de dados do ldap são todos 10485760 bytes, o que parece corresponder muito a set_lg_bsize ( 10485760 / 5 = 2097152 = set_lg_bsize ), embora eu não tenha certeza se isso é uma coincidência.

Minha interpretação disso é que $lg_bsize do histórico de transações é armazenado na memória por vez. Quando esse limite é excedido, ele envia um pouco do histórico de transações para o arquivo de log mais recente e cria um novo log se o log atual atingir um determinado tamanho.

DB_LOG_AUTOREMOVE

De acordo com a documentação da Berkeley, os logs de transação podem ser removidos configurando o sinalizador DB_LOG_AUTOREMOVE no DB_CONFIG .

DB_LOG_AUTOREMOVE: If set, Berkeley DB will automatically remove log 
files that are no longer needed. 

No entanto, quando adicionei isso ao DB_CONFIG :

set_flags DB_LOG_AUTOREMOVE

e reiniciado slapd Não notei diferença. Eu removi os logs de transações antigos e executei o script de preenchimento do ldap que possuí, e consegui acumular 290MB nos logs de transações. Ainda não parece estar limitando os logs. A razão para isso pode estar relacionada à frase: that are no longer needed

Pergunta real

Como se configura a remoção automática dos logs de transação de slapd usando o arquivo Berkeley DB DB_CONFIG ?

    
por Centimane 05.10.2016 / 19:14

0 respostas