20150116-221004.jpg

Salvataggio e ripristino di una VM libvirt (parte II)

Torniamo per completare quanto lasciato in sospeso nella precedente puntata.

Cominciamo con la definizione del metodo per eseguire il backup (seguirà quello per il ripristino) di una specifica VM individuata per id di dominio. Collocheremo questo (e quello per il ripristino) in una funzione bash che invocheremo nel programma principale che costruiremo attorno a questo nucleo applicando una qualche interfaccia per avere lista di domini su cui operare e così invocare ciclicamente la funzione.

Per operare il backup di una VM dobbiamo considerare la sua definizione e ogni immagine disco: nel caso più semplice avremo almeno due files: il file di definizione e una immagine disco. Ipotizzando di voler usare tar quale sistema di archiviazione è opportuno costruire un file con elencate tutte queste sorgenti (files) da sottoporre a l’opzione -T. Questo metodo è il più efficiente nell’ipotesi di utilizzo del comando tar, in quanto operazioni di aggiunta successiva di file in archivio su file compresso non sono consentite direttamente e comunque queste operazioni necessitano la rilettura dell’intero archivio per il posizionamento in coda dei nuovi elementi. Intollerabile.

Quindi cominciano con il produrre il file di definizione di un dominio:

virsh dumpxml "$1" > /tmp/${1}.xml

Nell’ipotesi di collocare questo in una funzione, $1 rappresenta l’unico argomento fornito a questa. Adottiamo /tmp come storage per pulizia.

Aggiungiamo questo file al costruendo file-elenco per tar:

echo "/tmp/${1}.xml" >/tmp/backup.files

Sfruttiamo il file di definizione del dominio per ritrovare i percorsi e nomi dei file di immagini disco appartenenti al dominio, e aggiungiamo questi nel file-elenco:

	grep 'source file=' /tmp/${1}.xml | egrep 'img|vdi|vmkd|qcow|qcow2' | cut -d\' -f2 >>/tmp/backup.files

A questo punto non ci resta che procedere ad archiviare il tutto sfruttando il nome del dominio come nome dell’archivio e soprattutto usando il file-elenco preparato prima:

	tar cz -f ${1}.tar.gz -T /tmp/backup.files

Non ci resta che pulire i files temporanei:

	rm /tmp/${1}.xml /tmp/backup.files

Ed il backup è concluso.

Nella prossima parte descriveremo il processo inverso e qualche suggerimento per costruire un buon programma principale per eseguire il tutto nel mondo reale.

Lascia un commento

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