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 ossacliou 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.
ZFS ou LVM-thin no Proxmox: comparação rápida
| ZFS mirror | LVM-thin | |
|---|---|---|
| Redundância | Sim: espelha os dois NVMe; um pode falhar sem perda de dados | Não por conta própria: cada pool fica em um disco (ou depende de RAID externo) |
| Integridade | Checksum de todos os blocos e correção automática pelo espelho | Sem checksum de dados |
| Snapshots / clones | Sim | Sim |
| Compressão | Sim (lz4/zstd, normalmente economiza espaço) | Não |
| Replicação entre servidores Proxmox | Sim (Storage Replication) | Não |
| Uso de RAM | Usa RAM para o cache ARC | Praticamente nenhum |
| Desempenho bruto | Muito bom; um pouco de overhead em escrita | Muito 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).
Pré-requisitos
- Acesso root (shell ou interface web).
- NVMe livres. Liste-os com
lsblk -o NAME,SIZE,MODEL,SERIAL,MOUNTPOINTels -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
- 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.
- Name:
- Ou pelo shell, usando os nomes estáveis de
/dev/disk/by-id/(não use/dev/nvme0n1, que pode mudar):
Ozpool 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--sparse 1equivale a marcar Thin provision: os discos das VMs só ocupam o espaço realmente escrito. - Agende a verificação. No Debian/Proxmox o pacote
zfsutils-linuxjá 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.
- 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. - Ou pelo shell:
Deixar uma pequena folga no grupo de volumes ajuda o LVM a crescer os metadados do thin pool se for preciso.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
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.
- Veja o uso atual:
(o valorarc_summary | head -40 cat /sys/module/zfs/parameters/zfs_arc_max0significa "padrão do ZFS"). - 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 - Se o sistema do Proxmox estiver instalado em ZFS, atualize o initramfs e reinicie:
update-initramfs -u -k all reboot - 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 nvmemostrastate: ONLINE, o tipomirror-0e os dois NVMe com0 0 0nas colunas de erro.pvesm statuslista o novo storage comoactive.- Em Datacenter → Storage o storage aparece com o conteúdo "Disk image, Container".
- Após o ajuste do ARC,
arc_summarymostra 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.
