ZFS ou LVM-thin no Proxmox? Compare redundância, desempenho e uso de RAM, crie o ZFS espelhado nos NVMe e limite o cache ARC.

Para que serve

Os planos com NVMe trazem dois discos iguais (1 TB ou 2 TB cada) ao lado dos SSDs de sistema. Este artigo ajuda a decidir entre ZFS ou LVM-thin no Proxmox para guardar os discos das VMs nesses NVMe: ZFS em espelho (mirror) ou LVM-thin, e mostra como criar cada um e ajustar a memória usada pelo cache do ZFS (ARC).

Onde fica cada disco no servidor

  • SSDs de sistema: na maioria dos servidores, ficam em RAID 1 na controladora HPE Smart Array (RAID por hardware). O Proxmox enxerga um único disco lógico (modelo LOGICAL VOLUME), e o estado do espelho é consultado com o ssacli ou pelo iLO. Veja também o artigo «Como verificar o RAID da controladora HPE Smart Array (ssacli) no Linux e no Proxmox». Poucos servidores não têm a controladora e usam RAID por software também nos SSDs.
  • NVMe: não passam pela controladora e ficam sempre em RAID por software: ZFS mirror (recomendado neste artigo) ou RAID 1 com mdadm.

Para conferir: lsblk -d -o NAME,MODEL,SIZE mostra o volume da controladora e cada NVMe separadamente.

Não crie ZFS em cima de um disco lógico da controladora RAID. Nesse caso o ZFS vê um único disco, não consegue usar o espelho para corrigir os erros que detecta e fica sujeito ao cache da controladora. Use ZFS só nos NVMe (ou em discos ligados direto, sem RAID por hardware). No volume da controladora, use ext4 ou LVM/LVM-thin.

ZFS ou LVM-thin no Proxmox: comparação rápida

ZFS mirrorLVM-thin
RedundânciaSim: espelha os dois NVMe; um pode falhar sem perda de dadosNão por conta própria: cada pool fica em um disco (ou depende de RAID externo)
IntegridadeChecksum de todos os blocos e correção automática pelo espelhoSem checksum de dados
Snapshots / clonesSimSim
CompressãoSim (lz4/zstd, normalmente economiza espaço)Não
Replicação entre servidores ProxmoxSim (Storage Replication)Não
Uso de RAMUsa RAM para o cache ARCPraticamente nenhum
Desempenho brutoMuito bom; um pouco de overhead em escritaMuito próximo do disco puro

Recomendação geral: para os dois NVMe, use ZFS mirror. Você ganha tolerância a falha de disco, detecção de corrupção silenciosa e replicação. O LVM-thin faz sentido quando cada disco tem uma finalidade separada e descartável (ex.: um NVMe só para VMs de teste) ou quando você precisa de todo o espaço dos dois discos e aceita perder os dados de um deles em caso de falha (com backup em dia). Para revisar os níveis de RAID, veja também o artigo «RAID 0, 1, 5 e 10: o que é cada um e onde entra o ZFS». Se quiser LVM-thin com redundância, crie antes um RAID 1 com mdadm nos dois NVMe e monte o thin pool sobre ele (veja a Opção B).

Atenção: criar um pool ZFS ou LVM apaga todo o conteúdo dos discos escolhidos. Confirme pelo número de série que você está selecionando os NVMe certos e que nenhuma VM está usando esses discos.

Pré-requisitos

  • Acesso root (shell ou interface web).
  • NVMe livres. Liste-os com lsblk -o NAME,SIZE,MODEL,SERIAL,MOUNTPOINT e ls -l /dev/disk/by-id/ | grep nvme.
  • Se os discos já tiveram partições, limpe-os em Node → Disks → Wipe Disk.

Opção A: criar ZFS espelhado nos NVMe

  1. Pela interface (mais simples): Node → Disks → ZFS → Create: ZFS. Preencha:
    • Name: nvme
    • RAID Level: Mirror
    • Compression: on (equivale a lz4)
    • ashift: 12
    • Marque os dois NVMe e deixe Add Storage marcado.
  2. Ou pelo shell, usando os nomes estáveis de /dev/disk/by-id/ (não use /dev/nvme0n1, que pode mudar):
    zpool create -o ashift=12 -O compression=lz4 -O atime=off nvme mirror \
      /dev/disk/by-id/nvme-MODELO_SERIAL1 /dev/disk/by-id/nvme-MODELO_SERIAL2
    pvesm add zfspool nvme --pool nvme --content images,rootdir --sparse 1
    O --sparse 1 equivale a marcar Thin provision: os discos das VMs só ocupam o espaço realmente escrito.
  3. Agende a verificação. No Debian/Proxmox o pacote zfsutils-linux já faz um scrub mensal automático (segundo domingo do mês). Para rodar manualmente: zpool scrub nvme.

Opção B: criar LVM-thin em um NVMe

O LVM-thin sozinho não espelha os discos. Para manter os NVMe em RAID, crie primeiro um RAID 1 com mdadm (ex.: mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1, que apaga os dois discos) e use /dev/md2 no lugar de /dev/nvme1n1 nos comandos de shell abaixo. O RAID com mdadm não é oferecido pelo instalador nem pela interface do Proxmox, mas é o mesmo mdadm do Debian; veja também o artigo «RAID por software com mdadm: como verificar o estado, receber alertas e trocar um disco com defeito» para monitorar e trocar discos.

  1. Pela interface: Node → Disks → LVM-Thin → Create: Thinpool, escolha o disco, dê um nome (ex.: nvme1) e mantenha Add Storage marcado. Repita para o segundo disco, se quiser.
  2. Ou pelo shell:
    pvcreate /dev/nvme1n1
    vgcreate vg_nvme1 /dev/nvme1n1
    lvcreate -l 95%FREE --thinpool data vg_nvme1
    pvesm add lvmthin nvme1 --vgname vg_nvme1 --thinpool data --content images,rootdir
    Deixar uma pequena folga no grupo de volumes ajuda o LVM a crescer os metadados do thin pool se for preciso.

Ajustar a memória do ZFS (ARC)

O ZFS usa RAM livre como cache de leitura (ARC). Em instalações feitas a partir do Proxmox VE 8.1, o instalador limita o ARC a 10% da RAM, até 16 GiB. Em instalações mais antigas ou feitas sobre Debian, o padrão do ZFS pode chegar a 50% da RAM, o que reduz a memória disponível para as VMs. Uma regra prática da documentação oficial: 2 GiB de base + 1 GiB por TiB de armazenamento. Para servidores com 128–192 GB que rodam muitas VMs, de 8 a 16 GiB costuma ser um bom ponto.

  1. Veja o uso atual:
    arc_summary | head -40
    cat /sys/module/zfs/parameters/zfs_arc_max
    (o valor 0 significa "padrão do ZFS").
  2. Defina o limite de forma permanente (exemplo de 16 GiB = 16 × 1024³ bytes) em /etc/modprobe.d/zfs.conf:
    options zfs zfs_arc_max=17179869184
  3. Se o sistema do Proxmox estiver instalado em ZFS, atualize o initramfs e reinicie:
    update-initramfs -u -k all
    reboot
  4. Para aplicar sem reiniciar (vale até o próximo boot):
    echo 17179869184 > /sys/module/zfs/parameters/zfs_arc_max

Como saber se funcionou

  • zpool status nvme mostra state: ONLINE, o tipo mirror-0 e os dois NVMe com 0 0 0 nas colunas de erro.
  • pvesm status lista o novo storage como active.
  • Em Datacenter → Storage o storage aparece com o conteúdo "Disk image, Container".
  • Após o ajuste do ARC, arc_summary mostra o novo tamanho máximo.

Problemas comuns

Os NVMe não aparecem para criar o pool

O disco tem partições antigas ou assinatura de outro sistema. Use Wipe Disk na interface ou wipefs -a /dev/nvmeXn1 (apaga tudo, confira o disco antes).

Um disco do espelho falhou

zpool status mostra o pool como DEGRADED. As VMs continuam rodando no disco restante. Abra um ticket informando o número de série do disco com falha para solicitar a troca. Depois da substituição, rode zpool replace nvme <disco-antigo> /dev/disk/by-id/<disco-novo> e acompanhe o resilver com zpool status.

As VMs ficaram sem memória depois de usar ZFS

O ARC cede memória sob pressão, mas nem sempre rápido o bastante. Defina o zfs_arc_max como mostrado acima e evite alocar para as VMs toda a RAM física. Se a VM for de banco de dados, veja também o artigo «Banco de dados em VM no Proxmox: disco, cache e ZFS (volblocksize, recordsize e sync)».

O LVM-thin encheu

Com thin provisioning é possível prometer mais espaço do que existe. Se o pool chegar a 100%, as VMs travam em escrita. Acompanhe com lvs (colunas Data% e Meta%), habilite Discard nos discos das VMs e mantenha folga.

Meu servidor usa a controladora RAID

É o caso da maioria: os SSDs de sistema ficam no RAID da HPE Smart Array, e isso não impede o ZFS nos NVMe, que são ligados direto ao barramento PCIe. Se lsblk mostrar cada NVMe separadamente, use ZFS mirror neles sem problema. O que não deve ser feito é criar um pool ZFS sobre o disco lógico da controladora. Para saber se o RAID dos SSDs está saudável, use o ssacli (veja o artigo sobre a HPE Smart Array).

Perguntas frequentes

ZFS ou LVM-thin: qual é mais rápido no Proxmox?

O LVM-thin fica mais próximo do desempenho bruto do disco. O ZFS tem um pouco de overhead em escrita, mas compensa com espelhamento, checksum, compressão e replicação.

Posso usar ZFS com a controladora HPE Smart Array?

Nos NVMe, sim, porque eles não passam pela controladora. Não crie ZFS sobre um disco lógico do RAID por hardware.

Quanta RAM o ZFS usa no Proxmox?

Depende do limite do ARC. Instalações a partir do Proxmox VE 8.1 limitam a 10% da RAM (até 16 GiB); você pode fixar o valor com zfs_arc_max.

ZFS mirror substitui o backup?

Não. O espelho protege contra falha de um disco, mas não contra exclusão acidental, ransomware ou erro de configuração. Mantenha backups fora do servidor.

Precisa de ajuda?

Em caso de dúvida sobre quais discos usar ou se um disco apresentar erros, abra um ticket com a saída de lsblk e zpool status.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também