20150212-215729.jpg

Salvataggio e ripristino di una VM libvirt (parte III)

Concludiamo questa serie di articoli fornendo il codice per il ripristino e qualche suggerimento che renda la nostra implementazione di un sistema di backup pratica e portabile.

Iniziamo con la procedura di ripristino.
Dato il nome del file di archivio, iniziamo ad espanderlo (con utenza amministrativa): questo collocherà i files dei dischi virtuali nel percorso originale (ripristiniamo il percorso assoluto collocando la radice delle operazioni di tar con l’opzione -C) ed il file XML di definizione della macchina virtuale in /tmp (per costruzione del backup).

tar xz -C / -f "$1"

Il nome del file di descrizione è il nome della macchina virtuale (ancora per costruzione del backup) ed è parte del nome dell’archivio: quindi estraiamo da questo il nome della macchina virtuale che stiamo ripristinando e con questo ricaviamo il nome del file di descrizione:

fname="$(basename $1)"
vmname=${fname%%.tar.gz}

Quindi se confermiamo l’esistenza del file di descrizione possiamo importare la macchina inviando l’XML allo stdout della console amministrativa di libvirt (virsh):

	if [ -f /tmp/${fname}.xml ]
	then
		echo define /tmp/${name%%.tar.gz}.xml | virsh
        fi

Questo rende nuovamente disponibile la macchina virtuale.

Come vi avevo promesso, ora qualche suggerimento per rendere il tutto un prodotto.

Dapprima racchiudiamo in funzioni la procedura di salvataggio e ripristino: chiamiamole backup() e restore().
Il codice presentato in queste puntate non necessita di modifiche, ed i parametri che dovevano essere per un ipotetico comando saranno ora per le funzioni: nome di macchina per backup(), nome file archivio per restore().

A questo punto creiamo un file per la nostra applicazione; diciamo libvirt-utils.sh.
Poniamo in questo le nostre funzioni e aggiungiamo il seguente codice:

case $(basename $0) in
virbackup)
  backup "$1"
  ;;
virestore)
  restore "$1"
  ;;
*)
  [ ! -f /sbin/virbackup ] && cp $0 /sbin/virbackup
  [ ! -f /sbin/virestore ] && ln /sbin/virbackup /sbin/virestore 
  ;;
esac

Lanciate almeno una volta lo script senza parametri come amministratore: avrete installati due nuovi programmi: virbackup e virestore ! Lo script originale potrà anche essere rimosso o meglio collocato nella vostra “cassetta degli attrezzi”.

Buona virtualizzazione e buon salvataggio e ripristino a tutti !