Comparativo: ZFS vs Btrfs para snapshots, replicação e retenção incremental em VPS com containers Docker — prós e contras práticos

Por · Publicado em · 9 min de leitura

Placas e componentes eletrônicos sobre fundo escuro, com cabos metálicos e conectores visíveis
Placas e cabos eletrônicos em painel, sugerindo infraestrutura de TI Foto: Mikhail Nilov / Pexels

Este comparativo: ZFS vs Btrfs para snapshots, replicação e retenção incremental em VPS com containers Docker explica, de forma prática, como cada filesystem lida com copy-on-write, send/receive e políticas de retenção. Você verá impactos em RAM e I/O, integração com Docker e cenários recomendados. O objetivo é ajudar você a escolher com critérios claros e reduzir risco na operação.

Critérios de escolha focados em VPS com Docker

Em VPS, você quer snapshots consistentes, replicação incremental confiável e retenção simples de manter. Tudo isso sem consumir muita RAM e sem degradar o I/O dos containers.

ZFS e Btrfs são copy-on-write. Isso permite snapshots rápidos e compressão com checksums de dados e metadados. Porém, cada um tem custos, limitações e ferramentas diferentes.

Antes de decidir, enquadre o problema. O que mais pesa no seu ambiente? Replicação entre regiões? RAM reduzida? Bases de dados em containers? Kernel imutável da VPS?

  • Consistência do snapshot: impacto em bancos e filas.
  • Replicação incremental: retomada após falhas de rede.
  • Retenção: rotação diária/semanal sem scripts frágeis.
  • RAM disponível: efeito do ARC no ZFS e caches em Btrfs.
  • Operabilidade: tooling, monitoramento e recuperação.
  • Compatibilidade com kernel e storage driver do Docker.

Snapshots e retenção: como cada filesystem trabalha

ZFS usa datasets. Snapshots são instantâneos e baratos, pois só gravam deltas. Dá para aplicar políticas de retenção com convenções de nome e scripts, e proteger snapshots com "holds" para evitar exclusão acidental.

Btrfs usa subvolumes. Snapshots também são rápidos e espaço-eficientes. O particionamento por subvolume ajuda a isolar o que vai para snapshot, como /var/lib/docker/volumes/projeto.

Em ambos, retenção incremental é política de negócio: defina janelas horárias, diárias e semanais e automatize limpeza. Combine com backup offsite para cenários de ransomware ou desastre; veja a base de segurança em checklist de segurança para VPS Linux.

Para volumes quentes, coordene snapshots com a aplicação. Em bancos, prefira hooks que forcem flush de páginas ou janelas consistentes. Assim você reduz risco de recuperação lenta.

Replicação incremental: ZFS send/receive e btrfs send

ZFS oferece send/receive incremental maduro. Funciona bem para replicar entre VPS, com recursos como bookmarks e retomada de envios interrompidos. Quem usa criptografia nativa pode replicar em modo "raw", sem decifrar o dataset.

Btrfs possui btrfs send, inclusive incremental entre snapshots ancestrais. Na prática, a ferramenta resolve bem a replicação de subvolumes. O ecossistema é menor, e a retomada de transferências costuma exigir wrappers externos.

Em qualquer opção, controle o escopo. Replicar apenas os volumes persistentes dos containers reduz janelas e tráfego. Use nomes de snapshot previsíveis para automatizar incrementais. Para uma alternativa baseada em blocos+objeto, confira LVM snapshots + Restic em S3.

Valide periodicamente uma restauração. Replicação sem testes de restore é risco operacional. Tenha um playbook claro para montar volumes e subir containers no destino.

Performance, RAM e estabilidade em VPS

ZFS entrega recursos avançados, mas consome RAM com o ARC. Em VPS pequenas, ajuste o limite de cache para evitar pressão de memória nos containers. Compressão lz4 ajuda a reduzir I/O sem penalizar muito a CPU.

Btrfs tende a ser mais leve em memória. Também oferece compressão transparente e checksums. O comportamento sob carga aleatória depende do layout de subvolumes e do padrão de escrita dos containers.

Copy-on-write impacta bancos de dados. Em Btrfs, é comum desativar CoW em diretórios específicos quando a prioridade é latência, mas você perderá checksums nesses caminhos. Em ZFS, afinar recordsize e atime pode ajudar em bancos.

Em VPS, a camada de armazenamento do provedor define o teto de IOPS e latência. O filesystem não corrige limites físicos. Meça e monitore antes de ativar recursos pesados como deduplicação global, que raramente compensa em VPS. Para dimensionamento do host, veja como escolher o tamanho certo de VPS.

  • Ajuste compressão por dataset/subvolume conforme o workload.
  • Evite deduplicação inline em ZFS em VPS pequenas.
  • Monitore latência de fsync e flush em volumes de bancos.
  • Teste workloads reais, não apenas benchmarks sintéticos.

Integração com Docker: drivers e layout de volumes

Docker usa overlay2 por padrão em ext4/xfs. Tanto ZFS quanto Btrfs podem ser o filesystem subjacente e, ainda assim, você pode snapshotar datasets/subvolumes que contêm volumes do Docker.

Usar o storage driver nativo do Docker para ZFS ou Btrfs integra snapshots ao ciclo de imagens, mas adiciona complexidade operacional. Muitos times preferem overlay2 e mantêm snapshots no nível do filesystem para os volumes persistentes.

Organize o layout para refletir serviços. Crie datasets/subvolumes por aplicação ou por volume crítico. Separe dados transitórios de persistentes para snapshots menores e replicações mais rápidas.

Agende scrubs e colete métricas de I/O. Integre alarmes quando o backlog de replicação crescer. Isso evita surpresas durante janelas de manutenção.

  • Separe /var/lib/docker/volumes por projeto crítico.
  • Exclua caches e artefatos efêmeros dos snapshots.
  • Use nomes de snapshot com timestamp e janela (ex.: hourly-...).
  • Automatize pré/pós-snapshot para consistência de apps sensíveis.

Confiabilidade e recuperação: checksums, scrub e testes

ZFS e Btrfs mantêm checksums de dados e metadados. Scrubs periódicos detectam e corrigem corrupção silenciosa quando há redundância. Mesmo em disco único, o scrub ajuda a identificar problemas cedo.

Recuperação depende de bons snapshots e documentação. Tenha receita para montar o dataset/subvolume replicado, restaurar permissões e reanexar volumes aos containers.

Planeje janelas de verificação. Restaure em um ambiente isolado e valide serviços. Ajuste retenção a partir dessas simulações. Para cobrir desastre e ransomware, complemente com backups incrementais e criptografados em S3.

  • Programe scrubs em baixa carga.
  • Faça restore de amostra mensalmente.
  • Versione scripts de snapshot/replicação.
  • Audite exclusões e proteja snapshots importantes com holds.

Tabela comparativa: o que muda na prática

Abaixo, um resumo objetivo das diferenças mais relevantes para snapshots, replicação e retenção incremental em VPS com Docker.

Critério ZFS Btrfs
Snapshots Datasets com COW; holds e clones facilitam fluxos Subvolumes com COW; simples e rápidos
Replicação incremental send/receive maduro, bookmarks e retomada de envios btrfs send incremental; retomada depende de wrappers
Criptografia Nativa com opção de send "raw" Sem criptografia nativa; use dm-crypt/fscrypt
Checksums e scrub Checksums completos; scrub agendável Checksums completos; scrub e balance disponíveis
RAM ARC pode consumir bastante; ajustável Tende a usar menos RAM
Deduplicação Inline disponível, alto custo; raramente vale em VPS Sem dedup global nativa; ferramentas externas
Integração Docker Driver zfs existe; muitos preferem overlay2 + datasets Driver btrfs existe; overlay2 + subvolumes é comum
Ferramentas e ecossistema Amplo tooling e práticas consolidadas Ferramentas estão maduras para o básico
Ajustes para bancos recordsize, atime, compressão por dataset CoW por diretório; trade-off de checksums
Adequação a VPS pequena Exige cuidado com ARC e features pesadas Encaixa bem quando a RAM é limitada

Recomendações por cenário

Se a prioridade é replicação incremental robusta entre VPS e você precisa criptografia nativa com envio raw, ZFS costuma ser a escolha mais direta.

Se a VPS tem pouca RAM e você quer simplicidade com snapshots por subvolumes e compressão leve, Btrfs tende a ser mais prático.

Para bancos em containers, avalie o impacto de COW. Em Btrfs, desativar COW por diretório sacrifica checksums. Em ZFS, ajuste recordsize e compressão ao perfil de escrita.

Quando a infraestrutura impõe kernel imutável ou impede módulos externos, a presença de Btrfs no kernel facilita. Se ZFS está disponível e suportado, ele oferece tooling mais amplo.

Para retenção incremental de longo prazo, combine snapshots locais com backup offsite baseado em incrementais. Isso reduz janela de perda e cobre desastres físicos.

  • Comece pequeno: datasets/subvolumes dedicados aos volumes críticos.
  • Automatize snapshots e limpeza com janelas horárias/diárias.
  • Monitore latência e uso de RAM após habilitar compressão.
  • Valide um restore completo antes de padronizar a estratégia.

Perguntas frequentes

Posso usar ZFS ou Btrfs em qualquer VPS?

Você precisa de acesso root e kernel com suporte. Em alguns provedores, módulos externos podem ser restritos. Btrfs já está no kernel. ZFS depende de módulo compatível com o kernel da imagem usada.

Qual impacta mais a RAM: ZFS ou Btrfs?

ZFS tende a usar mais RAM por causa do ARC. Em VPS pequenas, limite o cache e evite recursos pesados como deduplicação. Btrfs costuma ser mais leve em memória na configuração padrão.

Devo usar o driver zfs/btrfs do Docker ou overlay2?

Para simplificar, muitos usam overlay2 e fazem snapshots no nível do filesystem para os volumes persistentes. Os drivers zfs/btrfs integram snapshots ao Docker, mas adicionam complexidade operacional.

Bancos em containers funcionam bem com COW?

Funciona, mas exige ajustes. Em Btrfs, desativar COW por diretório reduz latência, porém remove checksums. Em ZFS, ajuste recordsize e compressão ao padrão de escrita do banco para minimizar impacto.

Snapshots substituem backups offsite?

Não. Snapshots são ótimos para recuperação rápida local e replicação. Backups offsite cobrem desastres e ransomware. Use ambos: snapshots frequentes e cópias incrementais cifradas para armazenamento externo.

Como definir retenção incremental eficiente?

Adote janelas simples, como hourly-diária-semanal, e nomes previsíveis de snapshot. Automatize limpeza e confirme mensalmente um restore de amostra. Ajuste a política a partir de métricas de uso e testes.

Precisa definir snapshots e replicação para sua VPS com Docker?

Vamos revisar workloads, layout de volumes e políticas de retenção e montar uma estratégia prática com ZFS ou Btrfs.

Falar sobre sua estratégia de snapshots

Veja também