Replica ZFS in Proxmox: perché lo spazio su disco sembra “esplodere”?

Molti utenti che iniziano a sperimentare la replica ZFS in ambienti Proxmox si trovano davanti a una situazione curiosa: una VM da 700 GB sembra occupare oltre 1,2 TB di spazio su ogni nodo. Ma come è possibile? In questo articolo analizziamo le cause reali, sfatiamo alcuni miti e offriamo strumenti pratici per monitorare e ottimizzare lo spazio.

🧠 Cos’è la replica ZFS in Proxmox?

La replica ZFS in Proxmox è un meccanismo che consente di copiare i dischi virtuali (vDisks) di una VM da un nodo a un altro, sfruttando le potenzialità di ZFS:

  • Replica incrementale basata su snapshot temporanei
  • Trasferimento solo dei blocchi modificati
  • Nessuna copia automatica del file .conf della VM (serve manualmente o via HA)

📦 Perché lo spazio occupato è maggiore della dimensione della VM?

1. Overhead ZFS

ZFS non memorizza solo i dati, ma anche:

  • Metadati per ogni blocco
  • Checksum per l’integrità
  • Struttura interna dei dataset
  • Intent log (ZIL) e cache (ARC/L2ARC)

Ogni disco virtuale è un dataset ZFS, quindi l’overhead si moltiplica.

2. Scritture reali vs spazio nominale

Una VM da 700 GB può scrivere molti più dati nel tempo (log, swap, file temporanei). ZFS conserva i blocchi modificati, anche se il file originale è stato cancellato.

3. Snapshot manuali

Se l’utente crea snapshot manuali e non li elimina, ZFS conserva i blocchi differenziali, aumentando lo spazio usato.

4. Snapshot di replica

Proxmox crea snapshot temporanei per la replica, con nomi tipo:

__replicate_<VMID>-<replicaID>_<timestamp>__

Questi snapshot non vengono conservati a lungo, ma se la replica è frequente o fallisce, possono accumularsi temporaneamente.

5. Compressione inefficace

Se ZFS ha compression=off o i dati sono poco compressibili (es. video, immagini), lo spazio occupato sarà vicino al reale.

🔍 Come analizzare lo spazio occupato

Ecco alcuni comandi utili da eseguire via terminale:

zfs get compression,compressratio rpool/data/subvol-100-disk-0

Verifica se la compressione è attiva e quanto è efficace.

zfs list -o name,used,refer,mountpoint

Confronta lo spazio totale usato con quello referenziato.

zfs get usedbysnapshots rpool/data/subvol-100-disk-0

Controlla quanto spazio è occupato dagli snapshot.

zfs list -t snapshot

Visualizza tutti gli snapshot attivi.

🧊 QCOW2 vs RAW: impatto sullo spazio

FormatoTipoSpazio inizialeSnapshotPerformance
QCOW2ThinSolo spazio usato✅Buona
RAWThickSpazio pieno❌Ottima

Su ZFS, anche i dischi RAW possono essere “thin” grazie alla compressione e ai blocchi sparsi, ma QCOW2 è nativamente più flessibile.

✅ Conclusione

Se vedi uno spazio ZFS occupato superiore alla dimensione della VM, non è un bug: è il risultato di come ZFS gestisce i dati, la replica e la protezione. Per tenere sotto controllo lo spazio:

  • Monitora gli snapshot manuali
  • Verifica la compressione
  • Analizza i blocchi modificati
  • Evita di duplicare VM con ID diversi che puntano agli stessi dischi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *