É necessário um sistema de arquivos Linux mais lento/em cache

É necessário um sistema de arquivos Linux mais lento/em cache

Eu sei que parece estranho, mas preciso de um sistema de arquivos mais lento ou em cache.

Eu tenho muitos firewalls que fazem syslog de seus dados para um par de VMs Linux que gravam esses arquivos em seus discos formatados ext3 'locais' (na verdade, FC SAN conectados) e também encaminham as mensagens para nossos servidores Splunk.

O problema é que o servidor syslog está gravando essas mensagens syslog como centenas, às vezes milhares, de pequenas gravações de aproximadamente 4k por segundo em nosso FC SAN - que pode lidar com essa carga de trabalho agora, mas nosso tráfego de FW crescerá em pelo menos um fator de 5.000% (realmente) nos próximos meses e isso será um problema para a SAN, quero corrigir a causa raiz antes que seja um problema.

Portanto, preciso de ajuda para descobrir uma maneira de fazer com que essas gravações sejam armazenadas em cache ou retidas de alguma forma nos discos 'físicos', para que as VMs disparem gravações maiores, mas menos frequentes - não há como evitar essas gravações, mas há não há necessidade de fazer tantos pequenos.

Eu olhei para as várias opções do ext3, definindo noatime e nodiratime, mas isso não afetou muito o problema. Obviamente estou investigando outros sistemas de arquivos, mas pensei em descartar isso caso outros tenham o mesmo problema no futuro.

Ah, e não posso simplesmente encaminhar essas mensagens para o Splunk, nossa equipe de firewall insiste que elas estejam em seu formato original para fins de diagnóstico.

Responder1

Talvez commita opção de montagem ext3 possa ajudá-lo? Por exemplo, commit=60liberaria todos os dados e metadados apenas uma vez por minuto.

Aviso obrigatório: isso pode levar à perda de dados de até um minuto (se você passar o valor commit=60).

Responder2

Sistema de arquivos: desative as barreiras de gravação se seus dispositivos as estiverem usando e desative as atualizações periódicas em geral.

Mas é provável que você também possa ajustar seu syslog às custas de uma maior perda de dados no caso de um evento de falha (energia, etc.).

Exemplo de diretivas de syslog-ng(que podem não ser o que você está usando):

  • flush_lines()Especifica quantas linhas são liberadas para um destino por vez. Syslog-ng espera que esse número de linhas se acumule e as envia em um único lote.

  • flush_timeout()Especifica o tempo que o syslog-ng espera que as linhas se acumulem em seu buffer de saída. Consulte a opção flush_lines para obter mais informações.

O destino, neste caso, é um arquivo em disco.

informação relacionada