m4nifest0-tech

Cerca nel sito

Storage e backup

Strategia di backup 3-2-1 con Proxmox Backup Server e un NAS

Come applicare la regola 3-2-1 con Proxmox Backup Server: datastore, retention, verifica, cifratura, copia off-site, test di ripristino e checklist finale.
Pubblicato il Aggiornato il 7 min di letturaLivello: Intermedio

Un backup che risiede sullo stesso sistema dei dati, oppure che nessuno ha mai provato a ripristinare, è soltanto un'ipotesi. Proxmox Backup Server (PBS) offre backup incrementali, deduplicati e verificabili, ma la protezione reale dipende da come si organizzano le copie e da quanto spesso se ne dimostra l'utilizzabilità. Lo schema 3-2-1 descritto qui combina PBS, un NAS e una sede remota, per Proxmox VE 8 e 9.

La regola 3-2-1

La regola prescrive almeno tre copie dei dati (l'originale e due backup), su due tipi di supporto diversi, con una copia fuori sede. Ogni vincolo copre un guasto diverso: più copie proteggono dall'errore su una di esse, supporti diversi evitano un difetto comune (controller, firmware, credenziali amministrative), la copia remota copre incendio, furto e allagamento. Un'estensione diffusa, la 3-2-1-1-0, aggiunge una copia offline o immutabile contro il ransomware e zero errori dopo la verifica.

Architettura

Lo schema supera il minimo: dati originali, datastore PBS locale, copia sul NAS e copia fuori sede.

Flusso dei dati
Nodi Proxmox VE (VM e container)                   copia 1, dati originali
        |  job di backup, cifratura lato client
        v
PBS locale, datastore sui dischi del server        copia 2, supporto A
        |  sync job
        +-----> NAS (secondo PBS)                  copia 3, supporto B
        |  sync job attraverso VPN
        +-----> PBS remoto in un'altra sede        copia 4, fuori sede

Il PBS va installato su hardware separato dai nodi che protegge: la documentazione sconsiglia di installarlo sull'hypervisor, e una VM dello stesso cluster cadrebbe insieme ai dati. Il datastore usa un file system locale (ext4, XFS o ZFS) su dischi veloci; una condivisione di rete non è tra le configurazioni previste.

Il NAS, cioè il secondo supporto, si integra in due modi:

  • Secondo PBS sul NAS, se può ospitare una VM o un container: riceve i dati con un sync job e mantiene deduplicazione, verifica e cifratura.
  • Condivisione NFS o SMB, se il NAS offre solo file: si aggiunge in Proxmox VE come storage per i file di backup e i nodi vi scrivono con un secondo job vzdump. Gli archivi sono completi, senza deduplicazione, e occupano più spazio, ma sono indipendenti da PBS.

Datastore e job di backup

Il datastore si crea dall'interfaccia web (Administration, Storage / Disks) o da riga di comando, su un percorso già montato.

Sul PBS
proxmox-backup-manager datastore create datastore-principale /mnt/datastore/principale

In Proxmox VE lo storage PBS si aggiunge da Datacenter, Storage, Add, Proxmox Backup Server, indicando indirizzo, utente dedicato, datastore e impronta del certificato. Il job si crea da Datacenter, Backup: modalità snapshot, pianificazione giornaliera, notifica in caso di errore.

Retention, garbage collection e verifica

Sono tre operazioni distinte, da pianificare insieme:

  • Prune applica la retention e rimuove i metadati degli snapshot in eccesso, senza liberare spazio.
  • Garbage collection elimina i blocchi non più referenziati. Per sicurezza considera rimovibili solo i blocchi non usati da oltre 24 ore circa, quindi lo spazio si libera con ritardo.
  • Verify rilegge i blocchi e ne controlla l'integrità. La documentazione raccomanda di riverificare tutti i backup almeno una volta al mese; il job si crea nella scheda Verify Jobs del datastore.
Sul PBS
proxmox-backup-manager prune-job create prune-giornaliero --store datastore-principale --schedule daily --keep-daily 7 --keep-weekly 4 --keep-monthly 6
proxmox-backup-manager datastore update datastore-principale --gc-schedule 'sat 03:00'

Le regole keep-* si applicano in ordine e ciascuna considera solo i backup più vecchi di quelli già coperti dalle precedenti: keep-daily 7 conserva l'ultimo backup di ciascuno degli ultimi sette giorni in cui ne esistono. I valori sono un punto di partenza da adattare. Conviene definire la retention in un solo punto, preferibilmente nel prune job del PBS: regole diverse su Proxmox VE e su PBS rendono incerto che cosa verrà cancellato.

Cifratura lato client

PBS supporta la cifratura AES-256-GCM lato client: i dati lasciano il nodo già cifrati e il server non conosce la chiave. Si abilita nello storage PBS in Proxmox VE (scheda Encryption), generando una chiave automatica; Proxmox VE la conserva in /etc/pve/priv/storage/<ID-STORAGE>.enc, leggibile solo da root.

Pericolo

Senza la chiave i backup cifrati sono irrecuperabili. Una chiave presente soltanto sul cluster va persa insieme al cluster, cioè proprio quando serve. Subito dopo la creazione la si copia fuori dai nodi: gestore di password, chiavetta in un luogo sicuro e copia cartacea generata con proxmox-backup-client key paperkey. Una chiave master RSA opzionale aggiunge a ogni backup una copia cifrata della chiave; la parte privata va custodita offline.

I backup cifrati restano tali anche nei sync job: il PBS remoto conserva dati opachi, quindi un disco sottratto o un server fuori sede compromesso non espone il contenuto.

Sync verso un PBS remoto

Il sync job copia i backup da un datastore a un altro. Il PBS remoto si registra come Remote (Configuration, Remotes) con indirizzo, utente e impronta del certificato. Dalla versione 3.3 il job può girare in modalità push: è il PBS di partenza a collegarsi a quello remoto, quindi la sede principale non deve accettare connessioni in ingresso. In modalità pull è la destinazione a collegarsi alla sorgente.

Sul PBS locale (modalità push, Remote già registrato)
proxmox-backup-manager sync-job create sync-fuori-sede --store datastore-principale --remote pbs-remoto --remote-store datastore-remoto --sync-direction push --schedule daily

Importante

L'API di PBS (porta 8007) non va esposta a Internet: il sync passa dal tunnel VPN tra le sedi, come descritto in WireGuard: accesso remoto e VPN site-to-site. L'utente del Remote deve avere solo i privilegi necessari al sync: un utente dedicato, non l'amministratore.

Attenzione

L'opzione --remove-vanished propaga le cancellazioni: se è attiva, un backup eliminato sulla sorgente, per errore o da un attaccante, sparisce anche dalla destinazione. Per la copia fuori sede conviene lasciarla disattivata e affidare la retention remota a un prune job proprio.

Il test di ripristino

Un backup non testato non è un backup. La prova non verifica soltanto l'integrità dei dati, ma anche chiavi, credenziali, documentazione e tempi. Tre livelli, con scadenze indicative:

  • File singolo (mensile). Nella scheda Backups dello storage PBS, in Proxmox VE, il pulsante File Restore permette di sfogliare un backup e scaricare un file.
  • VM completa (trimestrale). Si ripristina un backup con un nuovo ID e indirizzi di rete univoci, poi si controllano avvio e coerenza dell'applicazione.
  • Scenario di disastro (annuale). Partendo dalla sola copia fuori sede, dalla chiave e dalla documentazione, si ricostruisce un nodo vuoto e si ripristinano i servizi critici, annotando i tempi.
Su un nodo di prova
pvesm list <STORAGE_PBS> --content backup
qmrestore <STORAGE_PBS>:backup/vm/<VMID_ORIGINE>/<TIMESTAMP> <NUOVO_VMID> --storage <STORAGE_DESTINAZIONE> --unique 1

Il primo comando elenca gli snapshot, il secondo ne ripristina uno. Prima del primo avvio si scollega la scheda di rete della copia (opzione Disconnect nella scheda Hardware) per evitare conflitti di indirizzo con la VM originale. L'esito di ogni prova va registrato: data, backup usato, tempo impiegato, problemi riscontrati.

Checklist finale

  • Esistono almeno tre copie dei dati, su due supporti diversi, di cui una fuori sede.
  • Il PBS gira su hardware separato dai nodi protetti.
  • I job di backup segnalano gli errori; retention, garbage collection e verify job sono pianificati, con la retention definita in un solo punto.
  • La chiave di cifratura è copiata fuori dal cluster e la sua posizione è documentata.
  • Il sync fuori sede passa da VPN, con un utente dedicato e remove-vanished disattivato.
  • Lo spazio libero dei datastore è monitorato (si veda Prometheus e Grafana in un container LXC).
  • I bind mount dei container, esclusi dai backup di vzdump, hanno una protezione a parte (si veda Container LXC non privilegiati e bind mount).
  • I test di ripristino sono in calendario e il loro esito viene registrato.

Articoli correlati