Proxmox VE con ZFS Mirroring: Snapshot, Scrubbing e Backup su NAS
Guida ingegneristica per allestire un nodo Proxmox VE a tolleranza di guasto: storage ZFS mirror a due unità, prevenzione del bit-rot, snapshot atomici e replicazione su storage esterno.
1. Creazione del Pool ZFS in Mirror (RAID1)
In un homelab su Mini PC o server torre, la configurazione ottimale per il sistema operativo e i dischi VM è il Mirroring a due dischi (2-way mirror). Offre il doppio delle IOPS in lettura rispetto a un disco singolo e tempi di ricostruzione (resilver) brevissimi.
Identifica prima i codici univoci dei dischi via terminale Proxmox:
ls -l /dev/disk/by-id/
Crea il pool ZFS specificando l'allineamento dei settori a 4K (ashift=12 per moderni SSD e HDD AF):
zpool create -f -o ashift=12 rpool-data mirror \
/dev/disk/by-id/nvme-Samsung_SSD_980_1TB_S64BNF0R123456 \
/dev/disk/by-id/nvme-Samsung_SSD_980_1TB_S64BNF0R654321
Abilita la compressione trasparente LZ4, che velocizza le letture/scritture riducendo lo spazio occupato:
zfs set compression=lz4 rpool-data
zfs set atime=off rpool-data
2. Ottimizzazione della RAM (ZFS ARC Tuning)
Per impostazione predefinita, ZFS assegna fino al 50% della memoria RAM host alla cache di lettura ARC (Adaptive Replacement Cache). Nei server homelab con 32 o 64 GB di RAM, questo può portare le VM a esaurire la memoria (OOM Killer).
Limita la cache ARC (ad esempio a 8 GB) creando il file /etc/modprobe.d/zfs.conf:
# Imposta limite ARC: 8589934592 byte = 8 GB
options zfs zfs_arc_max=8589934592
options zfs zfs_arc_min=2147483648
Aggiorna il ramdisk iniziale per applicare le modifiche al boot:
update-initramfs -u -k all
3. Integrità Dati: Scrubbing Automatico e SSD TRIM
Il comando scrub legge ogni blocco dati confrontandolo con il relativo checksum. Schedula un controllo bisettimanale tramite cron o systemd timer:
# Esegui scrub manuale per test
zpool scrub rpool-data
# Monitora lo stato di avanzamento
zpool status rpool-data
Se utilizzi dischi SSD o NVMe, abilita il TRIM automatico per prevenire il decadimento delle prestazioni di scrittura delle celle flash:
zpool set autotrim=on rpool-data
4. Backup Esterno su NAS (NFS / SMB)
Gli snapshot locali non proteggono da guasti alla scheda madre, picchi di tensione o furto dell'hardware. La regola del backup 3-2-1 impone l'esportazione su storage di rete esterno.
Passaggio 1: Aggiungere lo Storage su Proxmox VE
- Nell'interfaccia web di Proxmox, naviga su Datacenter → Storage → Add → NFS (o SMB).
- ID:
nas-backup-storage - Server: IP del tuo NAS (es.
192.168.1.50) - Export:
/share/ProxmoxBackup - Content: Seleziona VZDump backup file.
Passaggio 2: Configurare il Job di Backup Pianificato
In Datacenter → Backup → Add:
- Node: All (o il tuo nodo specifico)
- Storage:
nas-backup-storage - Selection Mode: All Guests
- Schedule:
03:00ogni notte - Compression: ZSTD (il miglior compromesso tra velocità elevatissima e compressione eccellente)
- Retention Policy: Keep Last 7, Keep Daily 7, Keep Weekly 4.
❓ Domande Frequenti (FAQ Tecniche)
Perché usare ZFS Mirror invece del classico hardware RAID in Proxmox?
ZFS protegge nativamente dal bit-rot calcolando checksum crittografici su ogni blocco. In caso di rottura del server, puoi spostare i due dischi su qualsiasi altra scheda madre generica e importare il pool con zpool import in 5 secondi.
Qual è la differenza tra Snapshot ZFS e Backup VZDump?
Lo snapshot ZFS è istantaneo, locale e non consuma spazio finché i file non cambiano: serve per ripristini rapidi prima di un aggiornamento. Il backup VZDump su NAS invece copia tutti i dati su un hardware fisico distinto, indispensabile in caso di disastro totale.
Quanta RAM richiede ZFS su Proxmox VE?
ZFS richiede circa 2-4 GB di base per il kernel e l'hypervisor, più 1 GB di ARC per ogni Terabyte di pool dati. È fondamentale limitare zfs_arc_max per evitare che ZFS entri in conflitto con la RAM allocata alle macchine virtuali.