Principale > Blog sul backup e sul ripristino > Perché eseguire il backup delle VM QEMU: metodi, configurazione e best practice
Aggiornato 21st Aprile 2025, Rob Morrison

Perché eseguire il backup delle macchine virtuali QEMU?

Le macchine virtuali sono la spina dorsale di quasi tutte le moderne infrastrutture IT e le macchine virtuali basate su QEMU sono una scelta popolare negli ambienti virtuali. La creazione di backup adeguati di questi ambienti virtuali non è solo una raccomandazione, ma è in genere una parte obbligatoria di qualsiasi piano di continuità operativa e di ripristino di emergenza. I backup correttamente gestiti diventano la rete di sicurezza di un’azienda quando l’hardware si guasta (e non esiste hardware infallibile).

Gli ambienti virtuali presentano vantaggi unici rispetto all’hardware fisico nella creazione di backup efficienti e coerenti. Per quanto riguarda QEMU, si tratta di un emulatore gratuito e open source che utilizza la traduzione binaria dinamica per emulare il processore di un computer. QEMU può emulare una varietà di architetture di computer, gestire sistemi operativi guest e persino supportare molte opzioni hardware diverse. Inoltre, QEMU funziona facilmente come back-end di emulazione di dispositivi o hypervisor per macchine virtuali, il che lo rende molto interessante per un’ampia gamma di utenti.

Le macchine virtuali QEMU incorporano sistemi operativi personalizzati, dati applicativi critici e configurazioni preziose. La perdita di un ambiente di questo tipo comporta in genere la perdita di ore o giorni di lavoro di installazione e configurazione, oltre a potenziali interruzioni delle operazioni aziendali, del servizio clienti e conseguenze potenzialmente anche peggiori. Pertanto, queste informazioni devono essere protette e i backup sono spesso considerati uno dei modi più affidabili e versatili per farlo.

La maggior parte dei quadri normativi in materia di conformità richiede ora l’esecuzione di backup, compresi quadri specifici per la conservazione dei dati. Se a ciò si aggiunge il fatto che i backup possono anche proteggere le informazioni dagli attacchi ransomware, è facile capire perché questo argomento è così importante.

L’investimento in adeguate strategie di backup delle VM offre numerosi vantaggi: riduzione dei tempi di inattività, miglioramento della continuità operativa e la tranquillità generale derivante dalla consapevolezza che i dati sono recuperabili dopo praticamente qualsiasi tipo di disastro. L’architettura aperta di QEMU rende inoltre più flessibili le strategie di backup, consentendo di utilizzare sia semplici approcci basati su file che soluzioni incrementali complesse. Questo articolo esplora i backup QEMU, esaminando diversi metodi, processi di configurazione e potenziali best practice.

Metodi di backup per QEMU

Esistono diversi tipi di backup che possono essere utilizzati per proteggere le macchine virtuali QEMU, ciascuno con i propri vantaggi e svantaggi. La soluzione di backup e ripristino più efficace per una situazione specifica dipenderà dalle prestazioni e dai requisiti di sicurezza dell’azienda, dalle politiche, dai vincoli di archiviazione e da altri fattori, rendendo irrealistico identificare una soluzione di backup che sia migliore in ogni situazione.

Di seguito, l’articolo esplora le principali strategie di backup che si sono dimostrate efficaci negli ambienti QEMU.

Backup completo

I backup completi devono acquisire tutte le informazioni in una posizione specifica in una sola volta, l’intero disco virtuale con tutti i suoi file di configurazione e altre informazioni VM ad esso associate. In altre parole, un backup completo crea una replica completa e autonoma di una VM, rendendola facilmente ripristinabile senza richiedere alcun altro set di backup.

La combinazione di semplicità e velocità di ripristino è senza dubbio il vantaggio principale dei backup completi. Un backup completo elimina la necessità di ricomporre diversi componenti di backup per ripristinare le informazioni in caso di disastro: è sufficiente ripristinare il backup completo e continuare le attività aziendali. Si tratta di un metodo particolarmente utile per proteggere le VM più critiche dell’ambiente, dove il costo dei tempi di inattività è significativamente più elevato rispetto al costo dello storage.

Detto questo, i backup completi richiedono una notevole quantità di spazio di archiviazione e larghezza di banda di rete per essere eseguiti. Esiste inoltre il rischio che le informazioni vengano duplicate più volte, a causa della mancanza di granularità nei backup completi, rendendoli ancora meno efficienti in termini di archiviazione. Pertanto, gli ambienti con capacità di archiviazione limitata troverebbero i backup completi poco pratici come unica strategia, e lo stesso vale per le VM generalmente di grandi dimensioni.

Backup incrementale

I backup incrementali possono essere considerati una via di mezzo tra le due metodologie di backup. Una volta completato un backup completo, tutti i backup incrementali successivi acquisiscono solo le informazioni che sono state modificate dall’ultimo backup (di qualsiasi tipo). In questo modo, i backup diventano molto più efficienti in termini di spazio di archiviazione ed esponenzialmente più veloci rispetto ai backup completi.

L’approccio di backup incrementale di QEMU utilizza il “tracciamento dei blocchi sporchi” tramite bitmap per monitorare quali blocchi sono stati modificati dall’ultimo backup. Questo meccanismo aiuta a ridurre al minimo l’impatto del backup sulle prestazioni del sistema, creando al contempo una catena di file di backup gestibili che rappresentano lo stato completo della VM.

Detto questo, è nel processo di ripristino che i vantaggi dei backup incrementali diventano un po’ meno evidenti. Ogni processo di ripristino richiede l’elaborazione sia del backup completo originale che di ogni singolo file incrementale in una sequenza specifica. È necessario prestare particolare attenzione alla gestione di queste catene per garantire che non vi siano file danneggiati o collegamenti mancanti che possano compromettere l’intera strategia di backup.

I backup incrementali sono ancora abbastanza diffusi nella maggior parte degli ambienti in cui l’efficienza dello storage e finestre di backup più brevi sono una priorità.

Backup differenziale

I backup differenziali, invece, offrono un equilibrio tra i metodi di backup completo e incrementale. Una volta creato il backup completo iniziale, ogni operazione differenziale successiva acquisirà tutte le modifiche apportate dal backup originale.

Rispetto ai backup incrementali, i backup differenziali offrono un processo di ripristino molto più semplice, poiché sono necessari solo il backup completo e l’ultimo backup differenziale. Di conseguenza, i processi di ripristino che utilizzano backup differenziali sono più veloci e prevedibili, in netto contrasto con il lento processo di ricostruzione di lunghe catene incrementali. I backup differenziali sono un buon compromesso per gli ambienti di medie dimensioni che richiedono sia semplicità di ripristino che efficienza di archiviazione.

Il problema più grande con i backup differenziali è semplicemente il passare del tempo. Con il passare del tempo dall’ultimo backup completo, ogni file differenziale successivo cresce, a volte rivaleggiando con la dimensione originale di un backup completo se è passato troppo tempo. Di conseguenza, i backup differenziali sono in genere più efficaci quando ci sono backup completi regolari che reimpostano la linea di base per i backup differenziali e mantengono l’efficienza operativa.

Come impostare il backup incrementale in QEMU?

L’implementazione del backup incrementale in QEMU è particolarmente interessante, poiché è spesso il metodo preferito per gestire questo tipo di virtualizzazione. Ancora una volta, una configurazione e un’implementazione corrette richiedono una conoscenza approfondita dei vari meccanismi sottostanti, argomento che verrà trattato nel prossimo articolo. In questo articolo vengono illustrati tre passaggi importanti del processo: la creazione dell’infrastruttura di backup iniziale, l’utilizzo di libvirt per la gestione dei backup e la definizione di procedure coerenti per le operazioni regolari future.

Creazione del processo di backup iniziale

La creazione del backup completo iniziale con tracciamento bitmap è la base di qualsiasi strategia di backup incrementale futura in QEMU. Si tratta di un passaggio molto importante che crea un punto di riferimento per tutti i backup futuri.

Il processo in questione non è particolarmente difficile, ma in alcune situazioni può risultare complesso. Il primo passo consiste nel creare una bitmap persistente per tracciare i blocchi modificati su un disco virtuale. Questa bitmap può essere trattata come la memoria di QEMU, in modo che QEMU sappia quali settori del disco sono stati modificati dall’ultima operazione di backup.

Un comando eseguibile per abilitare la bitmap (nel monitor QEMU) dovrebbe essere simile al seguente: block-dirty-bitmap-add drive0 backup-bitmap persistent=on

Una volta stabilita la bitmap, è il momento di eseguire il backup completo iniziale tenendo presente la VM in esecuzione. Questo comando specifico deve includere solo le configurazioni minime indispensabili: posizione di destinazione, formato, ecc.

drive-backup drive0 sync=full target=/backup/path/vm-base.qcow2 format=qcow2
Questo esempio crea un file di backup di base utilizzando il formato qcow2, che funge da punto di partenza per la catena incrementale. È fondamentale archiviare questa immagine di base in un ambiente sicuro, poiché il suo danneggiamento può compromettere tutti i backup incrementali che la utilizzano come punto di partenza.

Utilizzo di Libvirt per gestire le operazioni di backup

Libvirt è un insieme di librerie e software open source che fornisce una gestione centralizzata per una varietà di hypervisor diversi, tra cui QEMU, Xen, KVM, LXC, VMware e altri. Libvert è costituito da un demone, un’API e utilità da riga di comando per gestire tale API.

Libvirt contribuisce a migliorare la gestione dei backup QEMU utilizzando un livello API coerente che astrae le numerose complessità dell’ambiente. Libvirt è un potente toolkit in grado di migliorare le attività dell’hypervisor fornendo funzionalità di automazione e una struttura flessibile, entrambe necessarie per eseguire operazioni che altrimenti dovrebbero essere eseguite tramite sequenze di comandi manuali.

La prima cosa da fare dopo aver tentato di configurare i backup libvirt in QEMU è verificare che l’installazione corrente supporti le funzionalità di backup incrementale (tutte le versioni superiori alla 6.0.0 dovrebbero supportarle). Il comando corretto per verificare la versione di libvirt è il seguente:

$ virsh –version
Successivamente, configurare il file XML del dominio per includere le definizioni di backup necessarie. Il file XML del dominio corrente può essere visualizzato con:
$ virsh dumpxml vm_name > vm_config.xml
Una volta estratto il file, modificare la configurazione per includere elementi di backup come questo:
<domain>

<backup>
<disks>
<disk name=’vda’ backup=’yes’ type=’file’>
<target file=’/backup/path/incremental1.qcow2’/>
</disk>
</disks>
</backup>

</domain>
Una volta modificata la configurazione, è possibile eseguire l’operazione di backup con il seguente comando:
$ virsh backup-begin vm_name –backupxml vm_config.xml
La capacità della funzionalità di checkpoint di Libvirt di gestire il coordinamento su più dischi, se necessario, può essere estremamente preziosa per gli utenti.
$ virsh checkpoint-create vm_name checkpoint_config.xml

Guida passo passo per eseguire un nuovo backup incrementale

Una volta completati tutti i processi di configurazione di base, è possibile eseguire backup incrementali regolari utilizzando la seguente sequenza di comandi:

  1. Per bloccare il file system guest (se l’agente guest è già configurato):
$ virsh qemu-agent-command your_vm_name ‘{“execute”:“guest-fsfreeze-freeze”}’
  1. Per creare un nuovo backup incrementale specificando il bitmap di tracciamento:
drive-backup drive0 sync=incremental bitmap=backup-bitmap \

target=/path/to/backup/vm-incremental-$(date +%Y%m%d).qcow2 format=qcow2

  1. Per sbloccare il file system guest e riprendere le normali operazioni:
$ virsh qemu-agent-command vm_name ‘{“execute”:“guest-fsfreeze-thaw”}’
  1. Per reimpostare il bitmap di tracciamento delle modifiche in preparazione al ciclo di backup successivo:
block-dirty-bitmap-clear drive0 backup-bitmap
  1. Per verificare il completamento e la documentazione del backup:
$ qemu-img info /backup/path/vm-incremental-$(date +%Y%m%d).qcow2
  1. Per testare regolarmente l’integrità del backup e garantirne la recuperabilità:
$ qemu-img check /backup/path/vm-incremental-$(date +%Y%m%d).qcow2

Questo particolare flusso di lavoro riesce a bilanciare efficienza e completezza, riducendo al minimo l’impatto sui carichi di lavoro in esecuzione e garantendo anche una catena di backup affidabile per potenziali scenari di ripristino di emergenza.

Cosa sono i comandi QMP per il backup incrementale?

Il QEMU Machine Protocol, spesso denominato QMP, offre un’interfaccia basata su JSON per il monitoraggio e il controllo programmatico di varie istanze QEMU. Per quanto riguarda specificamente le operazioni di backup, QMP è in grado di fornire un controllo preciso, particolarmente utile per l’automazione o l’integrazione con soluzioni di backup personalizzate. I seguenti comandi possono essere eseguiti utilizzando direttamente il monitor QEMU o utilizzando script per creare operazioni pianificate:

Introduzione ai comandi QMP di base

I comandi QMP utilizzano una struttura JSON coerente per facilitare attività quali lo scripting e l’automazione. Lo scripting e l’automazione forniscono un controllo dettagliato sui meccanismi interni di QEMU senza accesso diretto all’interfaccia della console di un hypervisor.

Per accedere alla modalità QMP mentre QEMU è in esecuzione, connettersi al socket del monitor QEMU e inizializzare la connessione nel modo seguente:

$ socat UNIX:/path/to/qemu-monitor-socket –
{“execute”: “qmp_capabilities”}

Alcuni dei comandi più utili per le operazioni di backup includono:

  • block-dirty-bitmap-add per il tracciamento delle modifiche;
  • drive-backup per l’esecuzione dei backup; e
  • transaction per varie attività di raggruppamento, ecc.

Ciascuno di questi comandi accetta anche una serie di parametri specifici in JSON:

{“execute”: “block-dirty-bitmap-add”,
“arguments”: {“node”: “drive0”, “name”: “backup-bitmap”, “persistent”: true}}
Le risposte strutturate di QMP sono perfette per l’analisi delle risorse di programmazione. Ogni comando produce un oggetto JSON che rappresenta il successo o il fallimento dell’operazione e fornisce numerosi dettagli rilevanti. Un approccio così strutturato rende la gestione degli errori degli script di backup automatizzati molto più efficace, una caratteristica preziosa in qualsiasi ambiente di produzione.

Come creare un nuovo backup incrementale utilizzando QMP

La creazione di backup incrementali utilizzando QMP è una sequenza logica di operazioni che acquisisce solo i blocchi modificati, mantenendo la coerenza dei dati. Utilizza inoltre il tracciamento bitmap per ridurre al minimo la durata e le dimensioni del backup, proprio come negli esempi precedenti.

Se non è sempre presente, la creazione di un bitmap di tracciamento deve essere eseguita una sola volta prima di un backup completo. Ecco come procedere:

{“execute”: “block-dirty-bitmap-add”,
“arguments”: {“node”: “drive0”, “name”: “backup-bitmap”, “persistent”: true}}
Una volta creata la bitmap, è necessario utilizzare drive-backup per eseguire un backup completo utilizzando i parametri necessari:
{“execute”: “drive-backup”,
“arguments”: {“device”: “drive0”, “sync”: “full”,
“target”: “/path/to/vm-base.qcow2”, “format”: “qcow2”}}
Qualsiasi backup incrementale successivo modifica questa sequenza solo in modo minore, sostituendo full con incremental nei tipi di backup e facendo riferimento al bitmap di tracciamento creato sopra per acquisire solo i blocchi modificati:
{“execute”: “drive-backup”,
“arguments”: {“device”: “drive0”, “sync”: “incremental”, “bitmap”: “backup-bitmap”,
“target”: “/path/to/vm-incr-20250407.qcow2”, “format”: “qcow2”}}

Comprendere le immagini di backup e le bitmap

La relazione tra le immagini di backup e le bitmap sporche costituisce la base tecnica per backup incrementali efficienti in QEMU. Il mantenimento di catene di backup pulite è possibile solo con una corretta comprensione di queste relazioni.

Le immagini di backup creano relazioni padre-figlio tra i file qcow2 in modo che ogni backup incrementale possa fare riferimento al suo predecessore. Interroga la catena di backup di qualsiasi immagine qcow2 con il seguente comando QMP:

{“execute”: “query-block”,
“arguments”: {“query-backing-chain”: true}}

Lo stesso comando può essere utilizzato anche per visualizzare le bitmap esistenti su un’unità specifica modificando uno degli argomenti:
{“execute”: “query-block”,
“arguments”: {“filter-node-name”: “drive0”}}
La coerenza delle bitmap deve essere mantenuta con attenzione durante le operazioni di backup per creare catene incrementali affidabili. Una volta completato un backup incrementale, si consiglia di cancellare anche la bitmap per iniziare a tracciare tutte le modifiche da zero per la potenziale operazione successiva:
{“execute”: “block-dirty-bitmap-clear”,
“arguments”: {“node”: “drive0”, “name”: “backup-bitmap”}}

Un’operazione di ripristino come questa segna il completamento di un singolo ciclo di backup e prepara il sistema anche per l’esecuzione del ciclo successivo.

Problemi comuni e risoluzione dei backup incrementali di QEMU

Tutta la pianificazione del mondo potrebbe non essere sufficiente per evitare che le operazioni di backup QEMU incontrino ostacoli o problemi. Sapere come diagnosticarli e risolverli in modo efficiente è fondamentale e può fare la differenza tra piccoli inconvenienti e perdite sostanziali di dati. Questa sezione affronta alcune delle sfide più comuni che gli amministratori devono affrontare in relazione alle soluzioni di backup incrementale.

“Bitmap non trovata”

Gli errori “Bitmap non trovata” derivano solitamente da problemi di persistenza della bitmap. Affinché il tracciamento incrementale sia coerente con QEMU, le bitmap devono persistere anche dopo il riavvio della VM. Il flag persistent=on deve essere utilizzato quando si crea ogni nuova bitmap, poiché non è possibile modificare l’impostazione di persistenza della bitmap esistente se non ricreandola da zero.

“Permesso negato”

Gli errori di autorizzazione sono piuttosto comuni nelle operazioni di backup, specialmente in ambienti con regole di sicurezza complesse. Esiste un comando di test che può essere eseguito per assicurarsi che il processo QEMU abbia il permesso di scrivere nella destinazione del backup:

$ sudo -u libvirt-qemu touch /path/to/backup/test-write.tmp

$ rm /path/to/backup/test-write.tmp

Se questo test fallisce, l’unica soluzione è regolare manualmente i permessi o la proprietà su una directory di backup.

“Dispositivo bloccato”

Se alcune operazioni hanno blocchi esclusivi sul dispositivo di destinazione, le operazioni di backup potrebbero fallire con il messaggio “dispositivo bloccato”. Tali blocchi possono verificarsi durante gli snapshot o i processi di backup simultanei e l’unico modo per evitarli è elencare in anticipo i processi di backup attivi per poter individuare manualmente potenziali conflitti:

block-job-list

È anche possibile annullare determinate operazioni, se opportuno, con il seguente comando:
block-job-cancel job-id

Catene di backup danneggiate

Il danneggiamento delle catene di backup è particolarmente problematico in questo contesto, poiché rende immediatamente inutilizzabili tutti i backup incrementali successivi. L’approccio migliore per il ripristino in situazioni come queste è creare un nuovo backup completo e stabilire una nuova catena per ricominciare da capo:

drive-backup drive0 sync=full target=/path/to/backup/new-base.qcow2 format=qcow2

Stati delle applicazioni incoerenti

L’incoerenza può interrompere il processo di backup e causare backup incompleti o danneggiati. In tal caso, la risoluzione esatta dipende dal nucleo del problema, quindi non esiste una soluzione unica per ogni problema.

Ad esempio, se un’applicazione stava eseguendo operazioni di scrittura durante il backup, è possibile che i backup contengano solo dati parzialmente scritti. Questo problema può essere risolto solo arrestando tutte le VM associate prima di eseguire le operazioni di backup e sbloccandole successivamente con questi comandi:

$ virsh qemu-agent-command vm-name ‘{“execute”:“guest-fsfreeze-freeze”}’
# Eseguire le operazioni di backup
$ virsh qemu-agent-command vm-name ‘{“execute”:“guest-fsfreeze-thaw”}’

Esaurimento dello spazio su disco

L’esaurimento dello spazio su disco può interrompere le operazioni di backup, lasciando file di backup incompleti. Tali file consumano solo spazio di archiviazione: nella loro forma incompleta non hanno alcun valore di recupero. Il monitoraggio dello spazio è un altro livello di comandi che dovrebbe essere implementato negli script di backup per impedire l’avvio di qualsiasi operazione quando lo spazio disponibile scende al di sotto di una certa soglia.

$ df -h /backup/path/ | awk ‘NR==2 {print $5}’ | sed ‘s/%//’

È opportuno prendere in considerazione l’implementazione di processi di pulizia regolari per rimuovere i file di backup parziali.

“Immagine non in formato qcow2”

Le operazioni di backup possono fallire con errori “Immagine non in formato qcow2”, anche se il formato corretto è stato specificato in precedenza. Tali problemi si verificano spesso quando si tenta di eseguire backup incrementali quando le immagini di base sono memorizzate in un formato incompatibile.

Questo problema può essere risolto verificando prima il formato dell’immagine di base:

$ qemu-img info /backup/path/base-image.qcow2

Una volta verificato il formato, l’immagine in questione può essere convertita in qcow2, avviando una nuova catena di backup con il seguente comando:
$ qemu-img convert -O qcow2 original-image.raw /backup/path/converted-base.qcow2
Una risoluzione efficace dei problemi inizia sempre con una registrazione complessa. La registrazione dettagliata delle operazioni di backup è fondamentale per acquisire informazioni dettagliate quando si verificano vari errori o problemi:
$ QEMU_MONITOR_DEBUG=1 virsh backup-begin vm-name backup-xml.xml
Tali registri si rivelano preziosi nella diagnosi di problemi complessi che altrimenti sarebbero praticamente irrisolvibili.

Metodi di backup per l’esecuzione di macchine virtuali QEMU

Esistono diverse differenze degne di nota nei due approcci alla gestione dei backup QEMU trattati in questo articolo.

Il primo è con l’aiuto dei comandi del monitor QEMU: vengono eseguiti direttamente attraverso la console del monitor QEMU utilizzando una sintassi basata su testo e sono tipicamente utilizzati per eseguire manualmente varie attività. Sebbene sia vero che libvirt offre alcune funzionalità per assistere l’automazione, la sua idea di base è ancora più vicina alla natura dei comandi diretti del monitor QEMU.

Il secondo utilizza QMP, o QEMU Machine Protocol, un sistema progettato per interazioni programmatiche accessibile tramite una connessione socket. È perfetto per lo scripting, l’automazione e la sequenzializzazione dei backup con tutti i suoi comandi e risposte in formato JSON.

La loro funzionalità è essenzialmente la stessa; si tratta solo di interfacce diverse per accedere alle stesse funzionalità di QEMU.

Entrambi questi approcci offrono diversi modi per creare un backup di una VM in esecuzione in QEMU. Alcune di queste possibilità sono già state esplorate, come il dirty block tracking, le funzionalità di freezing/thawing dell’agente guest di QEMU e la funzionalità checkpoint di libvirt.

Un’alternativa che non è stata ancora menzionata è la funzionalità external snapshot. È spesso considerata uno degli approcci più semplici per lavorare con macchine virtuali in esecuzione, creando un nuovo file overlay verso il quale vengono reindirizzate tutte le operazioni di scrittura, mentre l’immagine del disco originale viene conservata così com’è per il processo di backup. Un comando per utilizzare questo metodo è simile al seguente:

$ virsh snapshot-create-as –domain vm-name snap1 –diskspec vda,file=/path/to/overlay.qcow2 –disk-only
Una volta completato l’intero processo di backup, è importante eseguire il commit di tutte le modifiche dal file overlay all’immagine di base in modo specifico:
$ virsh blockcommit vm-name vda –active –pivot
Va inoltre notato che alcune soluzioni di backup di terze parti offrono funzionalità di integrazione con QEMU che forniscono una serie di funzionalità aggiuntive: gestione centralizzata, compressione, deduplicazione, supporto per il backup di VM attive, ecc. Queste soluzioni sfruttano l’API di QEMU aggiungendo i propri livelli di orchestrazione e ottimizzazione dello storage. Per chiarire meglio l’argomento, possiamo prendere una di queste soluzioni ed esplorarne le funzionalità in modo più dettagliato, che è esattamente ciò che fa l’articolo qui sotto con Bacula Enterprise.

Tutti questi metodi di backup hanno i loro vantaggi distintivi e contesti di produzione in cui superano gli altri, come ad esempio:

  • Tracciamento dei blocchi sporchi con backup incrementali: uno degli approcci più equilibrati, che offre un impatto minimo sulle prestazioni e un’elevata efficienza; un’ottima opzione per ambienti di produzione con limitazioni della finestra di backup e VM di dimensioni ragionevolmente grandi.
  • Integrazione di guest agent (freezing/thawing): un’opzione comune per applicazioni con un elevato numero di transazioni e server di database che richiedono la completa coerenza dei dati, anche a costo di brevi finestre di downtime durante i backup.
  • Funzionalità di checkpoint: forniscono il ripristino più completo, ma a costo di un elevato utilizzo di risorse, il che le rende l’opzione preferita negli ambienti di sviluppo e nei sistemi critici in cui il sovraccarico aggiuntivo è giustificato dalla conservazione dello stato dell’applicazione.
  • Snapshot esterni: ottimi in ambienti che richiedono backup con una configurazione minima o nulla, rendendoli perfetti in macchine virtuali di piccole e medie dimensioni con una tolleranza sufficiente per brevi rallentamenti.
  • Soluzioni di backup di terze parti: offrono la migliore esperienza per le aziende con un gran numero di macchine virtuali e host, ponendo l’accento sulla gestione centralizzata e sulle funzionalità avanzate per giustificare i costi elevati delle licenze.

API di backup QEMU e strumenti di integrazione

Il ricco ecosistema API di QEMU offre sia agli sviluppatori che agli amministratori un accesso programmatico approfondito a funzionalità di virtualizzazione versatili. Tali API fungono da base per le operazioni di backup, fornendo interfacce coerenti e astraendo le complessità della gestione di più ambienti di macchine virtuali.

Block Device Interface è il cuore delle funzionalità di backup di QEMU. Consente operazioni di gestione dei dischi virtuali, incluse, ma non solo, le funzionalità di backup e snapshot spiegate sopra. Questa interfaccia può supportare operazioni quali la gestione delle bitmap, blockdev-backup e drive-backup tramite QMP e QEMU monitor. Queste funzioni di basso livello sono perfette anche per gli sviluppatori che creano soluzioni di backup personalizzate, offrendo un controllo granulare su praticamente ogni aspetto del processo di backup.

L’API libvirt è un’altra opzione popolare in questo contesto, che avvolge le interfacce native di QEMU con un livello di astrazione standardizzato in grado di operare anche su hypervisor diversi. Come accennato in precedenza, libvirt aiuta a semplificare le operazioni di backup con funzioni di alto livello in grado di gestire automaticamente vari dettagli sottostanti. Ad esempio, la funzione virDomainBackupBegin() può gestire tutti gli aspetti dell’avvio di un backup incrementale, dal tracciamento delle bitmap alle snapshot temporanee.

Per quanto riguarda gli sviluppatori Python, i binding libvirt-python possono essere utilizzati come punto di accesso relativamente conveniente al set di strumenti di backup di QEMU. I binding forniscono l’API libvirt completa in sintassi Python, rendendo gli script di automazione molto più leggibili e facili da mantenere. Ecco come apparirebbe un semplice script di backup in Python:

import libvirt
conn = libvirt.open(‘qemu:///system’)
dom = conn.lookupByName(‘vm-name’)
dom.backupBegin(backup_xml, None)
La natura standardizzata di queste API crea un ricco ecosistema di soluzioni di backup di terze parti per espandere le funzionalità esistenti di QEMU. Esistono molti strumenti diversi che possono sfruttare queste API per creare esperienze di backup ricche di funzionalità, semplificando al contempo molte delle complessità tecniche esaminate in questo articolo. Il resto dell’articolo esplora le caratteristiche essenziali delle soluzioni di backup QEMU di terze parti, utilizzando Bacula Enterprise per illustrare come una soluzione di backup può funzionare con il set di funzionalità originale di QEMU.

Caratteristiche essenziali in una soluzione di backup QEMU

Alcune funzionalità chiave distinguono le soluzioni di backup robuste dagli approcci di base ai processi di backup. Le funzionalità essenziali come quelle menzionate di seguito dovrebbero garantire che una strategia di backup QEMU rimanga affidabile, efficiente e recuperabile in una vasta gamma di ambienti di virtualizzazione.

I meccanismi di coerenza dei dati sono la caratteristica più importante di qualsiasi soluzione di backup competente in questo contesto. Una soluzione di backup dovrebbe essere facilmente integrabile con l’API guest agent di QEMU o offrire plugin propri sensibili alle applicazioni per garantire la coerenza del database. La capacità di coordinarsi con le applicazioni in esecuzione può aiutare a creare backup in uno stato pulito e recuperabile senza alcun danneggiamento durante la transazione. Ove applicabile, dovrebbero essere prese in considerazione anche soluzioni avanzate per casi d’uso specifici dello storage che vanno oltre i cicli di congelamento-scongelamento, rendendo possibile la gestione separata degli stati delle transazioni di applicazioni specifiche.

Una gestione efficiente dello storage è un altro punto importante per soluzioni di backup complete, con caratteristiche comuni quali deduplicazione, compressione, conservazione automatizzata e altro ancora. Gli approcci incrementali permanenti offrono finestre di backup minime e un consumo di storage ridotto grazie al tracciamento intelligente delle modifiche. In questo contesto, la verifica automatizzata su base regolare è praticamente obbligatoria, per testare l’integrità e la recuperabilità dei backup ogni volta che è possibile, al fine di garantire che i backup siano sempre validi e completi.

L’orchestrazione e la pianificazione sono entrambe incredibilmente importanti per ambienti più complessi, trasformando le procedure di backup manuali in processi affidabili e automatizzati senza la necessità di creare script complessi. In questo caso sono praticamente indispensabili una limitazione intelligente delle risorse, la gestione delle dipendenze e opzioni di pianificazione flessibili. Oltre a queste funzionalità di base, qualsiasi soluzione di backup competente per QEMU dovrebbe includere meccanismi completi di reporting e alerting, nonché l’integrazione con i sistemi di monitoraggio esistenti e il supporto RBAC per un migliore controllo degli accessi.

Tutte queste caratteristiche diventano sempre più importanti man mano che l’infrastruttura aziendale virtuale cresce sia in termini di dimensioni che di complessità, trasformando il backup da un processo tecnico a un’applicazione aziendale con requisiti di governance specifici e responsabilità definite.

Come eseguire il backup di QEMU con Bacula?

Bacula Enterprise è in grado di fornire un supporto completo per gli ambienti QEMU utilizzando il suo modulo di virtualizzazione, oltre ad altre funzionalità. Bacula combina la natura open source dell’ambiente con una gestione centralizzata, un supporto premium e un controllo granulare su praticamente ogni processo. Una combinazione così incredibile di parametri lo rende una soluzione privilegiata per le grandi aziende con esigenze di infrastruttura virtuale diversificate.

La configurazione di Bacula per i backup QEMU inizia con l’installazione del Bacula File Daemon sugli host hypervisor. Il daemon deve essere configurato per accedere alle istanze QEMU con l’aiuto di libvirt, rendendo possibili sia i backup completi che quelli incrementali senza potenziali casi di corruzione dei dati.

Una configurazione di base per questi backup è memorizzata nel file di configurazione di Bacula Director, dove gli utenti possono definire i processi di backup da eseguire su VM specifiche:

Job {
Name = “QEMU-VM-Backup”
JobDefs = “DefaultJob”
Client = qemu-host-fd
Pool = VMPool
FileSet = “QEMU-VMs”
}
FileSet {
Name = “QEMU-VMs”
Include {
Options {
signature = MD5
compression = GZIP
}
Plugin = “qemu: VM=vm-name”
}
}
Una configurazione come questa sfrutta il plugin QEMU di Bacula per gestire automaticamente tutte le complessità e le sfumature di questo processo di backup (incluso il tracciamento bitmap).

Una delle caratteristiche più potenti di Bacula è l’uso di un approccio basato su cataloghi per le funzionalità di ripristino multi-VM. Bacula è in grado di conservare metadati dettagliati di ogni backup e tutte le relazioni tra di essi quando necessario. In questo modo è possibile eseguire un ripristino preciso a un punto nel tempo senza dover tracciare manualmente le catene di backup o le dipendenze di ripristino.

Per il disaster recovery, Bacula utilizza le sue funzionalità di recupero Bare Metal per ripristinare interi hypervisor e tutte le loro configurazioni VM e immagini disco. Le tracce di audit complete e le impostazioni di conservazione di Bacula sono particolarmente utili nelle aziende con requisiti di conformità rigorosi.

Le numerose funzionalità enterprise di Bacula, combinate con la sua architettura aperta, lo rendono un’opzione interessante per le aziende che richiedono solide funzionalità di backup QEMU in grado di scalare da distribuzioni su singolo server a vasti ambienti multi-datacenter.

Domande frequenti

Quali sono i diversi metodi per eseguire il backup di una macchina virtuale QEMU?

Le macchine virtuali QEMU dispongono di diversi metodi per creare backup, tra cui backup completi, backup incrementali, backup differenziali e snapshot esterni.

  • I backup completi acquisiscono l’intera VM, ma richiedono uno spazio di archiviazione considerevole.
  • I backup incrementali utilizzano il tracciamento dei blocchi sporchi per monitorare in modo efficiente i blocchi modificati, ma sono difficili da ripristinare.
  • I backup differenziali sono una via di mezzo tra i due, ma non sono particolarmente universali nella loro gamma di casi d’uso.
  • Gli snapshot esterni reindirizzano le operazioni di scrittura su file temporanei mentre viene eseguito il backup dell’immagine di base.

È possibile eseguire il backup di una macchina virtuale QEMU in esecuzione senza tempi di inattività?

Sì, QEMU supporta il backup live delle VM in esecuzione utilizzando i propri meccanismi, come il tracciamento dei blocchi sporchi o gli snapshot esterni. Per una coerenza ottimale, gli amministratori utilizzano spesso agenti guest per congelare brevemente il file system per i backup critici, garantendo l’integrità dei dati delle applicazioni, ma rendendo tali backup inaccettabili per specifici tipi di attività.

Qual è il ruolo della funzione snapshot di QEMU nelle soluzioni di backup?

Gli snapshot QEMU creano acquisizioni puntuali dello stato corrente della VM che fungono da base per diverse strategie di backup. Lo stato degli snapshot interni viene memorizzato nel file originale, mentre gli snapshot esterni reindirizzano le operazioni di scrittura a file overlay separati. Gli snapshot consentono inoltre di abilitare varie funzioni utili, quali rollback, clonazione, migrazione e altro ancora.

L’utilizzo di una soluzione di backup e ripristino ad alta sicurezza per proteggere gli ambienti QEMU offre in genere anche una protezione da un unico pannello di controllo per l’intero ambiente IT di un’organizzazione, il che è molto vantaggioso. Offre inoltre molte più funzionalità di monitoraggio, reporting, conformità, sicurezza e praticità, spesso necessarie per le aziende di medie e grandi dimensioni. Ci auguriamo che queste informazioni vi siano state utili. Per ulteriori informazioni, visitate il sito www.baculasystems.com.

Informazioni sull'autore
Rob Morrison
Rob Morrison è il direttore marketing di Bacula Systems. Ha iniziato la sua carriera nel marketing IT con Silicon Graphics in Svizzera, ottenendo ottimi risultati in vari ruoli di gestione del marketing per quasi 10 anni. Nei 10 anni successivi, Rob ha ricoperto anche diverse posizioni di gestione del marketing in JBoss, Red Hat e Pentaho, assicurando la crescita della quota di mercato di queste note aziende. Si è laureato all'Università di Plymouth e ha conseguito una laurea ad honorem in Digital Media and Communications e ha completato un programma di studi all'estero.
Lascia un commento

Il suo indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *