Set 272013
 

livesnapshot

Nell’articolo precedente abbiamo visto il modo d organizzare i filesystem delle VM come volumi LVM.

Ora vedremo come questo renda possibile effettuare backup a caldo delle VM in esecuzione.

Per effettuare un backup sarà sufficiente:

  • effettuare uno snapshot del volume
  • convertire lo snapshot in un immagine compressa
  • rimuovere lo snapshot

Ecco un semplicissimo script nel quale a dire il vero non sono implementati controlli sui parametri passati, ma che ha l’indubbio vantaggio di funzionare perfettamente:

#!/bin/sh

GRUPPO=/dev/immagini_kvm/
BACKUPDIR=/data/kvm/backup
VOLUME=$1

DESTINAZIONE="$BACKUPDIR/`date +%Y%m%d`-$VOLUME.qcow2"
echo "FILE IMMAGINE DI DESTINAZIONE": $DESTINAZIONE

echo "CREAZIONE SNAPSHOT $VOLUME-snap"
lvcreate --size 100G --snapshot --name $VOLUME-snap $GRUPPO$VOLUME

echo "SCRITTURA IMMAGINE"
qemu-img convert -O qcow2 -p $GRUPPO$VOLUME-snap $DESTINAZIONE

echo "RIMOZIONE SNAPSHOT"
lvremove -f $GRUPPO$VOLUME-snap

nominandolo backup_vm.sh e lanciandolo passando come parametro il nome del volume della macchina, creerà nella cartella indicata un’immagine in formato QCOW2 della stessa. Il nome del file sarà marcato con la data in modo da consentire backup successivi.

Eccolo in azione:

backup

L’immagine creata in caso di disaster-recovery sarà direttamente avviabile senza bisogno di riconvertirla in volume LVM.

Per un recupero più preciso, sarà sufficiente utilizzare la procedura vista nell’articolo precedente per ritrasformarla in volume.

Nel backup non è compresa la definizione della macchina. Io credo di poterne fare a meno perché per riavviare un’immagine di backup velocemente dovrei ricreare una VM e quindi reinserire i pochi dati che servono non sarebbe un gran lavoro.

Ma se volete le definizioni trovate solitamente i file xml relativi in /var/run/libvirt/qemu e con un’aggiunta di poche righe allo script potrete salvarli.

In alternativa potete usare il comando virsh dumpxml NOMEMACCHINA per ricavare le stesse informazioni.

E per concludere un piccolo consiglio: se decidete di giocare con gli snapshot ricordate di rimuoverli il prima possibile. Sebbene appena creati occupino pochissimo spazio, hanno la bruttissima abitudine di crescere con il tempo ad ogni variazione del filesystem originale. Non pochi fail in ambito storage sono stati provocati da disk-full a causa di snapshot dimenticati….

Fabrizio Vettore

  4 Risposte a “KVM: backup a caldo con snapshot LVM”

  1. […] Per un buon sistema di backup con snapshot (ed eventuale clonazione) a caldo leggi qui. […]

  2. Ottimo articolo complimenti.
    Una domanda ma il backup a caldo delle macchine virtuali preserva anche l’integrità dei dati e dei database di windows guest o bisogna comunque usare dei guest agent per freezare lo stato del sistema prima di effettuar egli snapshot ?
    Grazie mille per la risposta

    • Contrariamente a Vmware dove c’è la possibilità di effettuare lo snapshot anche della memoria della macchina in esecuzione, questo tipo di backup riguarda solo il disco.
      Con Windows e programmi che fanno ampio uso di caching può dare qualche problema. In questo caso suggerisco di stoppare la macchina, effettuare lo snapshot e riavviarla. Sempre se ci si può permettere di interrompere il servizio per un minuto o due 🙂
      User agent per freezare non ne ho provati perché a dire il vero in ambiente enterprise dove c’è un po’ più di budget uso Vmware + Veeam.
      Per i miei server locali uso questo metodo, ma ho solo macchine LINUX in esecuzione. Ho effettuato numerosi recuperi e non ho mai avuto grossi problemi con filesystem ext3 e ext4.

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)