Backup de VMs ligadas do XEN Server

Este documento descreve a criação de Snapshots das máquinas virtuais ligadas do Xen Server e como exportar para um arquivo .xva, que é a extensão "padrão" que o virtualizador Xen usa.

[ Hits: 45.357 ]

Por: Túlio Ramos Barbosa em 24/10/2016


Termos essenciais



Nesta seção, para tentar sanar o máximo de dúvidas possíveis, vou tentar explicar da forma mais simples possível alguns termos que precisamos saber para melhor entendimento desta documentação.

Snapshot: é uma expressão em inglês que significa "foto instantânea" ou "registro instantâneo", ou seja, é uma "foto" com o estado atual de alguma coisa, no nosso caso, a máquina virtual.

Máquina Virtual: é uma implementação de ambiente computacional onde pode-se instalar e executar um sistema operacional. A máquina virtual emula um computador físico comum, onde as requisições de CPU, memória, disco, rede e outros hardwares são gerenciados pela camada de virtualização, que traduz essas requisições para o hardware original.

Virtualizador: software de virtualização ou programa que permite emular instruções de uma determinada plataforma. Exemplo: VMWare, Oracle VM Virtual Box, XEN Server, Hyper-V, entre outros.

Network Attched Storage (NAS): é uma unidade dedicada exclusivamente ao armazenamento de arquivos em uma rede de computadores. São muito utilizados em empresas que necessitam de um servidor interno para guardar documentos e outros itens que são compartilhados. No meu caso, é onde serão armazenados os arquivos .xva.

O trabalho feito manualmente - Exportação

Antes de tudo, gostaria de mostrar algumas imagens de como o trabalho é feito manualmente, desde a criação do snaphot, passando pela exportação do mesmo para um disco .xva, até a importação deste disco de volta para o XEN Server, que no caso é o procedimento de restore (restauração). Para facilitar, o exemplo será feito com imagens em links:
Neste caso, vamos usar como como exemplo a máquina chamada "Debian". Ao clicarmos com o botão direito, vai aparecer essa janela e vamos escolher a opção "Take a Snapshot...".

Em seguida, vai aparecer esta janela que vamos colocar alguns dados, como nome do Snapshot, descrição e vamos marcar se queremos o Snapshot do disco apenas, ou do disco e memória da máquina virtual.
Ao clicar em "Ok", o snapshot será criado em mais ou menos 5 segundos, dependendo das configurações da VM.

Em seguida, na aba "Snapshot", da máquina virtual, já conseguiremos ver o snapshot que acabamos de criar. Após isso, aperte com o botão direito em cima dele e escolha a opção "Export to file...", onde será aberta uma janela para podermos escolher onde ficará salvo o arquivo do disco .xva, como mostra a imagem do link abaixo:
Após isso, espere até que o processo seja finalizado, sempre monitorando o progresso em "Notifications > Events", que ficam na parte inferior do painel principal do Citrix.

O trabalho feito manualmente - Importação

O processo de importação é mais simples do que o de exportação. Para trazer de volta uma VM ou se quiser restaurá-la em outro Xen, clique com o botão direito na conexão com o Xen que você deseja e escolha a opção "Import...", como mostra a imagem abaixo.
E preencha os dados que o programa pede, como nome, configurações de rede, entre outros. Preste bastante atenção na aba "Location", pois é aqui que você escolhe qual vai ser o destino da máquina Virtual.

Depois, monitore o andamento clicando em "Notifications" e depois em "Events", que ficam na parte inferior esquerda do painel principal do Citrix.

Página anterior     Próxima página

Páginas do artigo
   1. Exportação de Snapshot online das Máquinas Virtuais do Xen Server
   2. Termos essenciais
   3. Importação via linha de comando
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Backups com Amazon S3

Utilizando criptografia LUKS em discos externos

Bacula Server 7.0.3 com PostgreSQL no Debian

Empacotando Cliente Copy no Slackware - Como ganhar 20 GB de armazenamento em nuvem

Aumentando Resize (Tamanho) do HD Virtual VMDK - Debian 8 Jessie

  
Comentários
[1] Comentário enviado por JJSantos em 25/10/2016 - 00:16h

Vou testar

[2] Comentário enviado por paulomenor em 31/10/2016 - 15:32h


Testei seu código, a única parte que não funcionou foi a parte em que faz a exclusão do snapshot.
Tenho um pool com 4 servidores, xenserver versão 6,5 e todas vms estão em um storage.
Sabe me dizer se tem mais algum parâmetro?

[3] Comentário enviado por trbarbosa em 01/11/2016 - 09:18h

paulomenor, aqui funciona normalmente, mas acho que pra você conseguir excluir um snapshot precisa executar os dois comandos abaixo em ordem:

xe template-param-set is-a-template=false ha-always-run=false uuid=<UUID_do_Snapshot>

e depois:

xe vm-uninstall uuid=<UUID_do_Snapshot> force=true

Tente isso aí e dê uma resposta, qualquer coisa estamos à disposição.

Abraço.

[4] Comentário enviado por pbonfanti em 08/11/2016 - 08:35h

Muito boa a matéria , eu tenho um script de backup que uso aqui mas o seu é mais limpo, e eu estava no processo de parar a vm para backup, como você citou.
Aproveito a deixa para comentar um problema que eu tenho, em que uma das vms é um sistema legado que roda em ubuntu muito antigo, em que o xenserver-tools não instala. Nesse caso especifico ao tentar rodar comandos xen para esta vm o hipervisor inteiro congela (hang_task_timeout), de modo que se torna necessário resetar o equipamento, que é servidor de produção aqui, hospedando oito servidores diferentes para a rede interna, como dhcp,squid, apache, mysql, etc...
Até o momento o meu script precisa logar na vm problemática via ssh e rodar dentro dela o 'shutdown -h now' e só em seguida executar os comandos para as vms compatíveis.
Pelo fato de eu usar a linha de comando com uma certa frequencia os meus name-label não possuem espaço, o que facilita o seu método, como meus serviços não atendem a internet e são criticos apenas em horario comercial, o vm-shutdown durante a noite não é tão critico, então ficam algumas duvidas...
- O processo de snapshot tem alguma vantagem no meu caso? (mais ra&#7765;ido ou mais seguro por exemplo) ou a vantagem se refere apenas a disponibilidade do serviço mais próxima de 24/7 ?
- Você conhece algum método intuitivo e seguro de identicar no xenserver, quais recursos como discos e interfaces virtuais de rede , estão ativos e ligados a vms de produção (não snapshots ou orfãos ), devo ter cometido alguns erros na implementação e a identificação de uuid não é muito intuitiva para detectar essas coisas. Desde já agradeço.

[5] Comentário enviado por trbarbosa em 08/11/2016 - 09:46h

pbonfanti, não é que o processo de snapshot tenha alguma vantagem, fazer o snapshot é um dos passos pra realizar o backup das suas máquinas. Quando você fala em método intuitivo e seguro para identificar no XEN Server o uso de discos e interfaces de rede, você fala em modo texto ou pela GUI?? Se for por linha de comando, ainda não parei para estudar isso.

Qualquer dúvida, estamos à disposição.

Abraço.

[6] Comentário enviado por murilocsilva em 24/05/2017 - 09:14h

Bom dia, tenho dois servidores Xenserver 6.5 e um script de backup automático que consegui na internet e adaptei para minha rede, funciona bem faz o snapshot de todas as maquinas ligadas depois converte em .xva. Tudo agendado no crontab..
segue o script...

#!/bin/bash
# Script para backup a quente das vm's do XenServer
# E-tab Tecnologia - marcelo.leaes@e-tab.com.br
# O funcionamento do script é simples. Ele cria um snapshot, converte para template e remove o snapshot
# O envio de emails depende do SendEmail baixe de http://caspian.dotconf.net/menu/Software/SendEmail/
# Jamais rode este script antes de testar seu funcionamento em um host de homologação antes ;)
# Modificado em 01/07/2014 por Murilo Cesar da Silva

PATH=/opt/xensource/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export PATH

BACKDATE=`date +%d-%m-%Y`

# Configurações para o envio de emails
# REMETENTE="backups@seudominio.com.br"
# ADMIN="suporte@seudominio.com.br"
# ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME"
# SMTP="smtp.seudominio.com.br"
# USUARIO="usuario.smtp@seudominio.com.br"
# SENHA="senhadomail"

# Defina aqui o diretório onde serão salvos os backups
BACKDIR=/defina-aqui-seu-diretorio-de-backup/$BACKDATE/$HOSTNAME

echo -e "Resumo das ações realizadas em $HOSTNAME \n" > /home/xen_back.mail

if [ -d $BACKDIR ]
then
echo "Diretório de backup já existe"
echo "$BACKDIR Exists" >> /home/xen_back.mail
else
echo "Diretório de backup não existe, criando agora."
echo "$BACKDIR não existe, criando agora" >> /home/xen_back.mail
mkdir -p $BACKDIR
fi

echo "Gerando lista das VMs rodando no Host"
xe vm-list power-state=running|grep name-label| grep -v "Control domain on host:" | sed 's/ name-label ( RW): //g' > /home/xen_back1
echo -e "\n Gerando lista das VMs rodando no Host" >> /home/xen_back.mail
cat /home/xen_back1 >> /home/xen_back.mail

if [ $? -eq 0 ]
then
echo -e "Listagem das VMs concluida com sucesso \n"
echo -e "Listagem das VMs concluida com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao obter listagem do Host \n"
echo -e "Ocorreu um erro ao obter listagem do Host \n" >> /home/xen_back.mail
fi

VMLIST=`cat /home/xen_back1 | wc -l`
COUNT=0
until [ $VMLIST = $COUNT ]
do
COUNT=`expr $COUNT + 1`
VM=`gawk FNR==$COUNT /home/xen_back1`

echo "Criando snapshot de $VM"
echo "Criando snapshot de $VM" >> /home/xen_back.mail
SNAPSHOT=`xe vm-snapshot vm="$VM" new-name-label="$VM"-$BACKDATE new-name-description="Snapshot Temporário" `

if [ $? -eq 0 ]
then
echo -e "Snapshot da vm $VM criado com sucesso \n"
echo -e "Snapshot da vm $VM criado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar fazer snapshot da vm $VM \n"
echo -e "Ocorreu um erro ao tentar fazer snapshot da vm $VM \n" >> /home/xen_back.mail
fi

echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template"
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template" >> /home/xen_back.mail
xe template-param-set is-a-template=false uuid=$SNAPSHOT

if [ $? -eq 0 ]
then
echo -e "Conversão do snapshot $SNAPSHOT da vm $VM realizado com sucesso \n"
echo -e "Conversão do snapshot $SNAPSHOT da vm $VM realizado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar converter o snapshot $SNAPSHOT da vm $VM em um Template \n"
echo -e "Ocorreu um erro ao tentar converter o snapshot $SNAPSHOT da vm $VM em um Template \n" >> /home/xen_back.mail
fi

echo "Exportando $SNAPSHOT da vm $VM"
echo "Exportando UUID=$SNAPSHOT" >> /home/xen_back.mail
xe vm-export vm=$SNAPSHOT filename=$BACKDIR/"$VM".xva compress=true

if [ $? -eq 0 ]
then
echo -e "Processo de conversão do snapshot $SNAPSHOT e backup da vm $VM finalizado com sucesso \n"
echo -e "Processo de conversão do snapshot $SNAPSHOT e backup da vm $VM finalizado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Processo de conversão do snapshot $SNAPSHOT para backup da vm $VM não pode ser realizado \n"
echo -e "Processo de conversão do snapshot $SNAPSHOT para backup da vm $VM não pode ser realizado \n" >> /home/xen_back.mail
fi

echo "Removendo $SNAPSHOT da vm $VM"
echo "Removendo UUID=$SNAPSHOT">> /home/xen_back.mail
xe vm-uninstall uuid=$SNAPSHOT force=true

if [ $? -eq 0 ]
then
echo -e "Remoção do snapshot $SNAPSHOT da vm $VM ocorreu com sucesso \n"
echo -e "Remoção do snapshot $SNAPSHOT da vm $VM ocorreu com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar remover $SNAPSHOT vinculado a vm $VM \n"
echo -e "Ocorreu um erro ao tentar remover $SNAPSHOT vinculado a vm $VM \n" >> /home/xen_back.mail
fi
echo -e "\n" >> /home/xen_back.mail
done

/usr/local/bin/sendEmail -f $REMETENTE -t $ADMIN -u "$ASSUNTO" -o message-file="/tmp/xen_back.mail" -s $SMTP -xu $USUARIO -xp $SENHA

rm -rf /tmp/xen_back*

exit 0

[7] Comentário enviado por taryk em 27/06/2017 - 10:55h

muito bom o tutorial!!
mais na hora de importa a maquina remotamente ta dando um erro.

The VM could not be imported.
msg: INTERNAL_ERROR: [ Unix.Unix_error(Unix.ECONNRESET, "read", "") ]

se alguem ja passou por isso e poder ajuda agradeço!

[8] Comentário enviado por doomk em 18/08/2017 - 15:38h

Parabéns pelo artigo!

[9] Comentário enviado por robertogmj em 17/08/2020 - 14:30h

Primeiramente obrigado,
estou precisando de um sistema para backup automático aqui na empresa e o seu artigo ajudou muito, mesmo sendo de 2016 e estando em 2020, foi um bom ponto de partida, digo ponto de partida porque as VMs daqui não são usadas com frequencia entao estaria desperdiçando espaço em disco e tráfego backupeando cópias identicas todos os dias, vou tentar modificar o seu script para fazer uma verificação se teve alguma alteração da cópia anterior e somente se sim copiar para o servidor de backup. estilo "cp -vur ... ..."

Até aproveitar e perguntar, sabe no disco onde é localizado os arquivos das VMs, digo os discos virtuais que criamos quando criamos um VM nova, saberia em qual pasta ficam salvos?

Vlw Obrigado novamente.

[10] Comentário enviado por trbarbosa em 19/08/2020 - 09:30h


[9] Comentário enviado por robertogmj em 17/08/2020 - 14:30h

Primeiramente obrigado,
estou precisando de um sistema para backup automático aqui na empresa e o seu artigo ajudou muito, mesmo sendo de 2016 e estando em 2020, foi um bom ponto de partida, digo ponto de partida porque as VMs daqui não são usadas com frequencia entao estaria desperdiçando espaço em disco e tráfego backupeando cópias identicas todos os dias, vou tentar modificar o seu script para fazer uma verificação se teve alguma alteração da cópia anterior e somente se sim copiar para o servidor de backup. estilo "cp -vur ... ..."

Até aproveitar e perguntar, sabe no disco onde é localizado os arquivos das VMs, digo os discos virtuais que criamos quando criamos um VM nova, saberia em qual pasta ficam salvos?

Vlw Obrigado novamente.


Não lembro mais, faz pouco mais de dois anos que não trabalho com TI. Boa sorte.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts