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
.confdella 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
| Formato | Tipo | Spazio iniziale | Snapshot | Performance |
|---|---|---|---|---|
| QCOW2 | Thin | Solo spazio usato | ✅ | Buona |
| RAW | Thick | Spazio 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