ZFS ou LVM-thin no Proxmox: o que muda e como ver o seu

Não sabia se meu Proxmox usa ZFS ou LVM-thin. Como descobrir com pvesm status, o que cada um oferece, quanto de RAM o ZFS pede e quando vale trocar.

Publicado
Leitura
5 min
Testado em
Proxmox VE 9.2
Neste post

Uma confissão: não sei se o SSD do meu Proxmox está em ZFS ou em LVM-thin. Instalei faz tempo, funciona, e nunca precisei saber. Até começar a planejar o cluster com dois nós, quando descobri que a replicação entre nós do Proxmox só funciona com ZFS.

Então fui atrás de entender a diferença de verdade e como descobrir o que cada instalação usa. Este post junta as duas coisas, com o que diz a documentação oficial do Proxmox.

Como descobrir o que você usa #

Comece por aqui, porque leva um minuto. No shell do host Proxmox:

pvesm status

O comando lista os storages, com o tipo de cada um. Na instalação padrão aparecem dois:

  • local, do tipo dir, que guarda ISOs, templates e backups em /var/lib/vz;
  • o storage dos discos dos containers e VMs, que é local-lvm (tipo lvmthin) ou local-zfs (tipo zfspool).

Para ver a configuração completa:

cat /etc/pve/storage.cfg

Numa instalação com LVM, a documentação mostra este trecho:

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

E numa instalação com ZFS:

zfspool: local-zfs
        pool rpool/data
        sparse
        content images,rootdir

Se aparecer lvmthin, é LVM-thin. Se aparecer zfspool, é ZFS. Na interface web, a mesma informação está em Datacenter > Storage.

Por que a maioria cai no LVM-thin #

O instalador do Proxmox usa ext4 por padrão. Escolhendo ext4 ou xfs, ele monta o disco com LVM: um grupo de volumes pve, com um volume para o sistema (root), um para swap e um pool data, que vira o local-lvm. O ZFS só entra se você escolher na hora da instalação.

Ou seja, quem clicou em “próximo” sem mexer no sistema de arquivos está com LVM-thin. É o meu palpite para o meu caso, mas vou conferir antes de afirmar.

O que é LVM-thin #

LVM-thin é thin provisioning: o disco de um container pode ser declarado maior do que o espaço que existe de verdade, porque o espaço só é ocupado quando os dados são gravados.

O que ele oferece, pela documentação:

  • snapshots e clones eficientes;
  • pouco uso de memória: não há cache próprio disputando RAM com os containers;
  • simplicidade: não há nada para ajustar.

O que ele não oferece:

  • checagem de integridade dos dados (detectar corrupção silenciosa);
  • compressão nem replicação entre nós.

O que é ZFS #

ZFS é sistema de arquivos e gerenciador de volumes ao mesmo tempo. A lista de recursos é longa; os que mais importam num homelab:

  • checksums em tudo: detecta corrupção silenciosa e, com redundância, corrige sozinho;
  • snapshots baratos e rápidos;
  • compressão transparente;
  • RAID por software (espelho, RAID-Z) sem controladora;
  • replicação entre nós do Proxmox, que exige ZFS local.

O custo é memória. A documentação do Proxmox diz que o ZFS depende muito de RAM e pede pelo menos 8 GB para começar, com a regra de 2 GiB de base mais 1 GiB por TiB de armazenamento.

O cache do ZFS (o ARC) usa memória do host. Desde o Proxmox VE 8.1, o instalador limita o ARC a 10% da memória, até 16 GiB, gravando isso em /etc/modprobe.d/zfs.conf. Para mudar o limite de forma permanente, a documentação mostra:

# /etc/modprobe.d/zfs.conf: limite de 8 GiB
options zfs zfs_arc_max=8589934592

Se a raiz do sistema estiver em ZFS, rode update-initramfs -u -k all depois e reinicie.

Lado a lado #

LVM-thinZFS
Padrão do instaladorSim (com ext4 ou xfs)Não, precisa escolher
SnapshotsSimSim
Checagem de integridadeNãoSim
CompressãoNãoSim
Replicação entre nósNãoSim
RAID por softwareNão (seria outro nível)Sim
Uso de memóriaBaixoAlto (ARC)
ComplexidadeBaixaMaior

Qual eu escolheria #

Para um nó, um disco e pouca memória, LVM-thin resolve bem. Um disco só não aproveita a redundância do ZFS, e a memória fica livre para os containers.

Para cluster com replicação, vários discos ou dados que precisam de integridade, ZFS é o caminho. A replicação do Proxmox só existe para ZFS local.

No meu caso, o ThinkCentre tem 24 GB de RAM, como contei no post sobre o M720q no homelab. Com o limite padrão de 10%, o ARC ficaria em cerca de 2,4 GB, o que cabe. O que me faz pensar em ZFS é o cluster: sem ele, não há replicação.

Trocar depois não é simples #

Não existe botão para converter um storage de LVM-thin para ZFS no mesmo disco. O caminho usual é:

  1. fazer backup de todos os containers e VMs;
  2. reinstalar o Proxmox escolhendo ZFS, ou criar o ZFS num disco novo;
  3. restaurar os backups no storage novo.

Num nó novo é bem mais fácil: basta escolher ZFS na instalação. É uma decisão para tomar antes de comprar a segunda máquina.

Resumindo #

  • Descubra o seu com pvesm status: lvmthin ou zfspool.
  • LVM-thin é o padrão: simples, leve, com snapshots. Acompanhe o uso do pool.
  • ZFS traz integridade, compressão e replicação, mas pede memória e cuidado com o hardware.
  • Um nó e um disco: LVM-thin basta. Cluster com replicação: ZFS.
  • Trocar depois é backup, reinstalação e restauração.

Na próxima vez que eu abrir o shell do Proxmox, o primeiro comando vai ser o pvesm status.

Fontes e documentação