Pesquisar este blog

terça-feira, 18 de outubro de 2011

XenServer – Backup automático de VMs

Pessoal aqui vai um texto muito interessante sobre o Xenserver que foi extraido de : http://olamundo.org/posts/xenserver-backup-automatico-de-vms/  em : 18/10/2011 - 10:41
Criado por  em 7 de outubro de 2009

Olá Mundo! 
Quem me conhece sabe que não vou gastar um post inteiro com saudações. No máximo uma palavra: Cheguei!
Pronto! Vamos direto ao assunto…

Segue aqui um passo a passo para fazer backup automático de suas máquinas virtuais no XenServer 5.5. Isso deve funcionar em versões anteriores também.
Nesses script, trocamos a turbina do avião com ele voando. :) Ou seja, as VMs não param.

1º Passo: Decobrir quais as VMs existentes.
vms="$(xe vm-list | grep "name-label" | grep -v "Control domain"
| tr -s " " | cut -d " " -f 5)"
Perceba que tive que fazer um filtro inverso para “Control domain”, pois se você usa Pool de hardware aparecem essas “VMs” fantasmas que na verdade representam o controlador.
2º Passo: Definir variáveis.
# Diretorio onde sera feito o backup. Pode ser via NFS...
dirBack=/backup
#Separador de campo para o "for". Previne erros no caso de espaços
# no nome das VMs
IFS="
"
#Inicio do for. Cada loop faz backup de uma VM.
for vm in $(echo $vms)
do
#Cria uma variavel data com o formato da data que quero pra compor
# o nome do arquivo de backup
time=$(date --date "now" +%d_%m_%y_%H:%M)
#Agora componho o nome do arquivo de backup
snapName=$vm-bk-$time
3º Passo: Criar snapshot e obter UID.
#Aqui crio um snapshot. Ele eh necessario para não precisar
# parar a VM. O backup eh feito com ela em producao.
ID=$(xe vm-snapshot vm=$vm new-name-label=$snapName &&
        {
        logger -t "XenBackup" -s "$vm - OK Passo 1"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 1"
        echo 1
        })
#Na criacao do snap acima, a variavel ID recebe o UID do
# snap.No caso de erro, ela recebe "1"
#O logger joga o log joga no /var/log/messages

#Abaixo faço um teste pra checar se deu erro.
if [ "$ID" == "1" ]
then
        exit 1
fi
4º Passo: Transformar o Snapshot em VM.
#Pra essa tarefa, uso o ID obtido no passo anterior.
xe template-param-set is-a-template=false uuid=$ID &&
        {
        logger -t "XenBackup" -s "$vm - OK Passo 2"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 2"
        exit 2
        }
5º Passo: Exportar VM para o DIR de backup.
#Perceba o uso das variaveis. Nao vah se perder ;)
xe vm-export vm=$snapName  filename=$dirBack/$snapName
        {
        logger -t "XenBackup" -s "$vm - OK Passo 3"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 3"
        exit 3
        }
6º Passo: Remover VM.
Agora que a VM criada a partir do SnapShot já foi exportada, podemos descartá-la:
xe vm-uninstall vm=$snapName force=true
        {
        logger -t "XenBackup" -s "$vm - OK Passo 4"
        }||{
        logger -t "XenBackup" -s "$vm - ERR Passo 4"
        exit 4
        }
7º Passo: Plus!
Pra economizar espaço (e economiza muito), vamos “gzipar” a VM:
gzip $dirBack/$snapName
       {
       logger -t "XenBackup" -s "$vm - OK Passo 5"
       }||{
       logger -t "XenBackup" -s "$vm - ERR Passo 5"
       exit 5
       }
#Fala a verdade, voce jah ia esquecer de encerrar o "for"...
done
exit 0
 
em : 18/10/2011 - 10:41
Criado por