Este script pretende fazer backup de máquinas virtuais QEMU/KVM/libVirt. Este requer o KVM 2.1+, pois ele usa o modo de bloqueio em tempo real. Isso significa que os dados no disco instantâneo são revertidos para o original ao final do backup.
Script Bpipe
# # FileSet Include (bacula-dir.conf) # # Plugin = "\|/etc/bacula/kvm_bpipe.sh" # # DOMAIN=`virsh list --all | tail -n -2 | head -n -1 | awk '{print $2}'` for d in $DOMAIN; do TARGETS=`virsh domblklist "$DOMAIN" --details | grep ^file | grep -v cdrom | awk '{print $3}'` IMAGES=`virsh domblklist "$DOMAIN" --details | grep ^file | awk '{print $4}'` for t in $TARGETS; do virsh snapshot-create-as --domain $DOMAIN --name backup --no-metadata -atomic --disk-only --diskspec $t,snapshot=external >/dev/null done for t in $IMAGES; do NAME=`basename "$t"` echo "bpipe:/mnt/$NAME.bkp:cat $t:dd of=/tmp/$NAME.bkp" echo "bpipe:/mnt/$NAME.xml.bkp:virsh dumpxml $DOMAIN:dd/tmp/$NAME.xml.bkp" done done
Script ClientRunAfterJob
# # KVM Backup Job (bacula-dir.conf) # # ClientRunAfterJob = "/etc/bacula/kvm_commit.sh" # DOMAIN=`virsh list --all | tail -n -2 | head -n -1 | awk '{print $2}'` BACKUPIMAGES=`virsh domblklist "$DOMAIN" --details | grep ^file | awk '{print $4}'` for t in $TARGETS; do virsh blockcommit "$DOMAIN" "$t" --active --pivot >/dev/null if [ $? -ne 0 ]; then echo "Could not merge changes for disk $t of $DOMAIN. VM may be in invalid state." exit 1 fi done
Fonte
https://gist.github.com/cabal95/e36c06e716d3328b512b
Disponível em: PortuguêsEnglish (Inglês)Español (Espanhol)