Postgresql 9.6 sobre BTRFS. Boa ou má ideia?

1

Estou apenas preparando uma máquina VM (executando o Proxmox onver) para executar um postgresql 9.6 em um Ubuntu 16.04 LTS. Este postgres seria usado para lidar com bancos de dados Jira / FisheEye / Confluence para uma pequena empresa. Normalmente, somos alguns usuários ao mesmo tempo, portanto, não precisamos ajustá-lo para desempenho / escalabilidade extremos.

Bem, o caso é que usamos o BTRFS nos servidores para nos ajudar a lidar com o problema de adicionar espaço extra a uma VM quando necessário, além de ativarmos a compactação lzo. Além disso, usamos o btrok para lidar com backups de subvolumes do BTRFS para outra máquina.

Eu tenho dúvidas se poderia ser uma boa idéia usar o BTRFS para manipular os arquivos DB do postgresql, pois seria muito útil no caso de precisarmos expandir o espaço do disco rígido virtual, mas eu li sobre o desempenho ruim do postgresql sobre o BTRFS ( em especial se o datacow não estiver desativado.

Alguém tem experiência com essa situação?

    
por Zardoz89 27.07.2017 / 09:37

1 resposta

3

A resposta geral : má ideia. Você pode ler alguns detalhes sobre isso aqui . Longa história curta é que o mecanismo COW do BTRFS causará inconsistências de desempenho para a carga de trabalho OLTP normal

A melhor resposta : em certos casos, eu usaria. Por que e como:

  • Você só pode notar diferenças reais de desempenho se realmente estressar o sistema de arquivos e executar um trabalho realmente pesado para o FS nesse banco de dados. É improvável que aconteça para o JIRA e o Confluence com cargas de trabalho normais (supondo que você não trabalhe em uma empresa com milhares de desenvolvedores, etc.), especialmente se você ajustar o & configure seu caching corretamente. Além disso, considerando que você deseja ativar a compactação, não parece que o desempenho de IO seja sua principal preocupação:).
  • Considerando o bullet anterior, a capacidade de gerenciamento, a boa integração em suas ferramentas e ambiente atuais e o conhecimento existente sobre as tecnologias que você está usando devem definitivamente superar o fato de que, em cargas de trabalho muito maiores, outros sistemas de arquivos fornecem melhor desempenho.
  • Eu também consideraria ajustar tudo adequadamente para compensar: executar na memória flash, fazer o alinhamento de dados adequado (controladores físicos < - > particionamento < - > FS < - > DB), faça o FS adequado (o BTRFS requer mais manutenção do que o seu ext4 extintor) e a manutenção e ajuste do DB.

Espero que ajude.

Nota : Um usuário sugeriu que o COW pode ser desativado para o BTRFS para volumes / pastas específicos e desconsiderei o fato. De fato, pode ser desabilitado, mas se você fizer isso, por que você ainda usaria o BTRFS? - Porque você ainda pode usar o COW no resto do sistema de arquivos e todos os outros recursos interessantes (como snapshots e outras coisas) sem o impacto de desempenho para o virtualbox e o postgres? Claro, não faz sentido para o servidor de banco de dados puro usar o BTRFS e desabilitar o COW. Mas para máquina / servidor de propósito geral? Ele permite que você use todos os recursos interessantes (RAID1, ...) sem perda de desempenho. Então, ganha-ganha em meus olhos.

    
por 27.07.2017 / 10:11