[Script] Backup a quente das vm's rodando no XenServer

Citrix XenServer
Avatar do usuário
Elton
Administrator
Administrator
Mensagens: 1259
Registrado em: 10 Jun 2013 12:44
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por Elton »

Boa Tarde Marcelo,

coloquei o script em produção mais nos dois dias que ele está rodando dia 02 e 03 ele só fez backup de 3 vms entretanto tenho 5 e as 5 estão ligadas.


segue o erro que apresenta aonde pode ver que ele fez o backup certinho de 3 vms mais de outras duas dá erro.

Código: Selecionar todos

[root@xenserver-tzepdunq ~]# cat  /tmp/xen_back.mail
Resumo das ações realizadas em xenserver-tzepdunq

/mnt/teste/03-08-2014/xenserver-tzepdunq não existe, criando agora

 Gerando lista das VMs rodando no Host
Ubuntu (Servidor Programadores)
Own Cloud-30-06-2014
Ubuntu (Servidor Programadores - Rentalsite)
zentyal
Genialis
SpaceGhost (Redundancia)
Listagem das VMs concluida com sucesso

Criando snapshot de Ubuntu (Servidor Programadores)
Snapshot da vm Ubuntu (Servidor Programadores) criado com sucesso

Convertendo o snapshot 83ac7626-c891-aa32-0f13-0675adef9507 da vm Ubuntu (Servidor Programadores) para Template
Conversão do snapshot 83ac7626-c891-aa32-0f13-0675adef9507 da vm Ubuntu (Servidor Programadores) realizado com sucesso

Exportando UUID=83ac7626-c891-aa32-0f13-0675adef9507
Processo de conversão do snapshot 83ac7626-c891-aa32-0f13-0675adef9507 e backup da vm Ubuntu (Servidor Programadores) finalizado com sucesso

Removendo UUID=83ac7626-c891-aa32-0f13-0675adef9507
Remoção do snapshot 83ac7626-c891-aa32-0f13-0675adef9507 da vm Ubuntu (Servidor Programadores) ocorreu com sucesso



Criando snapshot de Own Cloud-30-06-2014
Snapshot da vm Own Cloud-30-06-2014 criado com sucesso

Convertendo o snapshot a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e da vm Own Cloud-30-06-2014 para Template
Conversão do snapshot a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e da vm Own Cloud-30-06-2014 realizado com sucesso

Exportando UUID=a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e
Processo de conversão do snapshot a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e e backup da vm Own Cloud-30-06-2014 finalizado com sucesso

Removendo UUID=a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e
Remoção do snapshot a9ea7dd1-5cb7-b28c-df9d-ce7aa038f95e da vm Own Cloud-30-06-2014 ocorreu com sucesso



Criando snapshot de Ubuntu (Servidor Programadores - Rentalsite)
Ocorreu um erro ao tentar fazer snapshot da vm Ubuntu (Servidor Programadores - Rentalsite)

Convertendo o snapshot  da vm Ubuntu (Servidor Programadores - Rentalsite) para Template
Ocorreu um erro ao tentar converter o snapshot  da vm Ubuntu (Servidor Programadores - Rentalsite) em um Template

Exportando UUID=
Processo de conversão do snapshot  para backup da vm Ubuntu (Servidor Programadores - Rentalsite) não pode ser realizado

Removendo UUID=
Ocorreu um erro ao tentar remover  vinculado a vm Ubuntu (Servidor Programadores - Rentalsite)



Criando snapshot de zentyal
Snapshot da vm zentyal criado com sucesso

Convertendo o snapshot 5cbaa139-5f81-3a0c-865c-590d34de8c93 da vm zentyal para Template
Conversão do snapshot 5cbaa139-5f81-3a0c-865c-590d34de8c93 da vm zentyal realizado com sucesso

Exportando UUID=5cbaa139-5f81-3a0c-865c-590d34de8c93
Processo de conversão do snapshot 5cbaa139-5f81-3a0c-865c-590d34de8c93 e backup da vm zentyal finalizado com sucesso

Removendo UUID=5cbaa139-5f81-3a0c-865c-590d34de8c93
Remoção do snapshot 5cbaa139-5f81-3a0c-865c-590d34de8c93 da vm zentyal ocorreu com sucesso



Criando snapshot de Genialis
Ocorreu um erro ao tentar fazer snapshot da vm Genialis

Convertendo o snapshot  da vm Genialis para Template
Ocorreu um erro ao tentar converter o snapshot  da vm Genialis em um Template

Exportando UUID=
Processo de conversão do snapshot  para backup da vm Genialis não pode ser realizado

Removendo UUID=
Ocorreu um erro ao tentar remover  vinculado a vm Genialis



Criando snapshot de SpaceGhost (Redundancia)
Ocorreu um erro ao tentar fazer snapshot da vm SpaceGhost (Redundancia)

Convertendo o snapshot  da vm SpaceGhost (Redundancia) para Template
Ocorreu um erro ao tentar converter o snapshot  da vm SpaceGhost (Redundancia) em um Template

Exportando UUID=
Processo de conversão do snapshot  para backup da vm SpaceGhost (Redundancia) não pode ser realizado

Removendo UUID=
Ocorreu um erro ao tentar remover  vinculado a vm SpaceGhost (Redundancia)
sabe o que pode ser man..
Editado pela última vez por Elton em 03 Ago 2014 16:33, em um total de 1 vez.


"Colaborar atrai amigos, competir atrai inimigos ..."

Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por marceloleaes »

O xentools está instalado nas vms mencionadas ?

Este é um pré requisito minimo.
"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

Avatar do usuário
Elton
Administrator
Administrator
Mensagens: 1259
Registrado em: 10 Jun 2013 12:44
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por Elton »

Boa Tarde Marcelão,

Descobri o erro kkkk

Error code: SR_BACKEND_FAILURE_44
Error parameters: , There is insufficient space,
+ SNAPSHOT=
+ '[' 1 -eq 0 ']'
+ echo -e 'Ocorreu um erro ao tentar fazer snapshot da vm SpaceGhost (Redundancia) \n'
Ocorreu um erro ao tentar fazer snapshot da vm SpaceGhost (Redundancia)


O SR estava sem espaço deletei uma vm e liberou espaço e agora está indo de boas.... vamos deixar rolando...
"Colaborar atrai amigos, competir atrai inimigos ..."

Avatar do usuário
tacioandrade
Administrator
Administrator
Mensagens: 110
Registrado em: 10 Jun 2013 22:03
Localização: Vitória da Conquista - Ba
Idade: 34
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por tacioandrade »

Galera acabei de pegar o Script do Marcelo e adicionar a Opção de remover os backups com mais de N dias, pois precisava disso e não possuía nessa versão. Ela não está tão elegante como deveria estar, porem parece estar funcionando, pelo menos nos meus testes, irei coloca-la em produção essa semana qualquer coisa aviso se tiver problemas.
#!/bin/bash
# Script para backup a quente das vm's do XenServer
# E-tab Tecnologia - [email protected]
# 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 ;)
# Editado por Tácio Andrade para adição da opção de remoção de arquivos antigos, para isso altere a variável
# "DIASARMAZENAMENTOBACKUP" abaixo para a quantidade de dias que deseja manter os backups

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="[email protected]"
ADMIN="[email protected]"
ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME no dia $BACKDATE"
SMTP="smtp.gmail.com:587"
USUARIO="[email protected]"
SENHA="senhadomail"
DIASARMAZENAMENTOBACKUP=7


# Defina aqui o diretório onde serão salvos os backups
BACKDIR=/mnt/backup/$BACKDATE/$HOSTNAME

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

if [ -d $BACKDIR ]
then
echo "Diretório de backup já existe"
echo "$BACKDIR Exists" >> /tmp/xen_back.mail
else
echo "Diretório de backup não existe, criando agora."
echo "$BACKDIR não existe, criando agora" >> /tmp/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' > /tmp/xen_back1
echo -e "\n Gerando lista das VMs rodando no Host" >> /tmp/xen_back.mail
cat /tmp/xen_back1 >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

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

echo "Criando snapshot de $VM"
echo "Criando snapshot de $VM" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template"
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Exportando $SNAPSHOT da vm $VM"
echo "Exportando UUID=$SNAPSHOT" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Removendo $SNAPSHOT da vm $VM"
echo "Removendo UUID=$SNAPSHOT">> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi
echo -e "\n" >> /tmp/xen_back.mail
done

# Remove os backups antigos
ANTIGOS=$(find $BACKDIR/* -ctime +$DIASARMAZENAMENTOBACKUP)
echo -e "Os arquivos $ANTIGOS foram removidos" >> /tmp/xen_back.mail
rm -fr $ANTIGOS

/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

Avatar do usuário
tacioandrade
Administrator
Administrator
Mensagens: 110
Registrado em: 10 Jun 2013 22:03
Localização: Vitória da Conquista - Ba
Idade: 34
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por tacioandrade »

Galera nova modificação no script, em um ambiente que possuo, existe uma VM com MUITO HD e que não precisa de backup (por ela conter principalmente cache e não dados que necessitam de backup), por esse motivo precisei fazer uma modificação no script para que o mesmo só faça backup das VMs que eu desejo.
Ele está com um problema, toda vez que criar uma nova VM e quiser fazer o backup dela, terei que executar um comando novamente para atualizar a lista de maquinas a fazer backup, porem para mim é melhor isso do que perder quase 500GB de espaço a cada backup só com conteúdo desnecessário.

Código: Selecionar todos

#!/bin/bash 
# Script para backup a quente das vm's do XenServer
# E-tab Tecnologia - [email protected]
# 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 ;)
# Editado por Tácio Andrade:
# Modificação 01: Remoção de backups antigos, para isso altere a variável "DIASARMAZENAMENTOBACKUP" 
#                 abaixo para a quantidade de dias que deseja manter os backups.
# Modificação 02: Agora ela não faz o backup de todas as VMs rodando, ela faz o backup das que tiverem
#                 o nome no arquivo /tmp/VMsParaBackup. Para atualizar o arquivo com o nome de todas as VMs
#                 rodando no momento (e depois remover as que não deseja backup), rode o comando:
#                 xe vm-list power-state=running|grep name-label| grep -v "Control domain on host:"  | sed 's/     name-label ( RW): //g' > /tmp/VMsParaBackup

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="[email protected]"
ADMIN="[email protected]"
ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME no dia $BACKDATE"
SMTP="smtp.gmail.com:587"
USUARIO="[email protected]"
SENHA="senhadomail"
DIASARMAZENAMENTOBACKUP=7


# Defina aqui o diretório onde serão salvos os backups
BACKDIR=/mnt/backup/$BACKDATE/$HOSTNAME

echo -e "Resumo das ações realizadas em $HOSTNAME \n" > /tmp/xen_back.mail
 
if [ -d $BACKDIR ]
   then
      echo "Diretório de backup já existe"
      echo "$BACKDIR Exists" >> /tmp/xen_back.mail
   else
      echo "Diretório de backup não existe, criando agora."
      echo "$BACKDIR não existe, criando agora" >> /tmp/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' > /tmp/VMsParaBackup
echo -e "\n Gerando lista das VMs a seren backupeadas" >> /tmp/xen_back.mail
cat /tmp/VMsParaBackup >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi
 
VMLIST=`cat /tmp/VMsParaBackup | wc -l`
COUNT=0
until [ $VMLIST = $COUNT ]
do
COUNT=`expr $COUNT + 1`
VM=`gawk FNR==$COUNT /tmp/VMsParaBackup`
 
echo "Criando snapshot de $VM"
echo "Criando snapshot de $VM" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi 

echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template"
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi 
 
echo "Exportando $SNAPSHOT da vm $VM"
echo "Exportando UUID=$SNAPSHOT" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi 
 
echo "Removendo $SNAPSHOT da vm $VM"
echo "Removendo UUID=$SNAPSHOT">> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi 
echo -e "\n" >> /tmp/xen_back.mail
done

# Remove os backups antigos
ANTIGOS=$(find $BACKDIR/* -ctime +$DIASARMAZENAMENTOBACKUP)
echo -e "Os arquivos $ANTIGOS foram removidos" >> /tmp/xen_back.mail
rm -fr $ANTIGOS

/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.mail

exit 0
Espero que esse novo update ajude a muitas outras pessoas.

Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por marceloleaes »

Boa  ;)
"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

tonycalipsu
Newbie
Newbie
Mensagens: 1
Registrado em: 10 Jan 2015 14:12
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por tonycalipsu »

Boa tarde galera,
Sou novo no forum e gostaria de agradecer as info aki são de primeira.
Coloquei pra rodar o scrip de backup do marceloleaes, funfou quase perfeito se não fosse pelo fato de não mandar email.
Já instalei o sendmail mas não consigo mandar email.
Meu email é do gmail e usa smtp com autenticação na porta 465.
Tem como dar uma ajuda?

Avatar do usuário
tacioandrade
Administrator
Administrator
Mensagens: 110
Registrado em: 10 Jun 2013 22:03
Localização: Vitória da Conquista - Ba
Idade: 34
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por tacioandrade »

Tony o Gmail não funciona pois o sendEmail no Xen por falta de libs não envia se o servidor necessitar de SSL ou algo assim. Segundo meu teste se não me engano o único que funcionou foi o Yahoo, teste lá depois e me fale. =)

Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por marceloleaes »

Depende disto , o mesmo vale para o Endian

Código: Selecionar todos

yum install perl perl-Net-SSLeay perl-IO-Socket-SSL
Porém recomendo testar em homologação antes de aplicar no de produção
Editado pela última vez por marceloleaes em 04 Mar 2015 12:23, em um total de 1 vez.
"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

Avatar do usuário
jotaherre
Newbie
Newbie
Mensagens: 2
Registrado em: 25 Jul 2015 23:46
Localização: Fortaleza - Ceará
Idade: 30
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por jotaherre »

Bom dia, amigos!!

Muito obrigado pela contribuição de vocês. O backup está redondo há três meses!! Muito o brigado!
As oportunidades multiplicam-se à medida que são agarradas. - Sun Tzu

Avatar do usuário
jotaherre
Newbie
Newbie
Mensagens: 2
Registrado em: 25 Jul 2015 23:46
Localização: Fortaleza - Ceará
Idade: 30
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por jotaherre »

tacioandrade escreveu: Galera acabei de pegar o Script do Marcelo e adicionar a Opção de remover os backups com mais de N dias, pois precisava disso e não possuía nessa versão. Ela não está tão elegante como deveria estar, porem parece estar funcionando, pelo menos nos meus testes, irei coloca-la em produção essa semana qualquer coisa aviso se tiver problemas.
#!/bin/bash
# Script para backup a quente das vm's do XenServer
# E-tab Tecnologia - [email protected]
# 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 ;)
# Editado por Tácio Andrade para adição da opção de remoção de arquivos antigos, para isso altere a variável
# "DIASARMAZENAMENTOBACKUP" abaixo para a quantidade de dias que deseja manter os backups

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="[email protected]"
ADMIN="[email protected]"
ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME no dia $BACKDATE"
SMTP="smtp.gmail.com:587"
USUARIO="[email protected]"
SENHA="senhadomail"
DIASARMAZENAMENTOBACKUP=7


# Defina aqui o diretório onde serão salvos os backups
BACKDIR=/mnt/backup/$BACKDATE/$HOSTNAME

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

if [ -d $BACKDIR ]
then
echo "Diretório de backup já existe"
echo "$BACKDIR Exists" >> /tmp/xen_back.mail
else
echo "Diretório de backup não existe, criando agora."
echo "$BACKDIR não existe, criando agora" >> /tmp/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' > /tmp/xen_back1
echo -e "\n Gerando lista das VMs rodando no Host" >> /tmp/xen_back.mail
cat /tmp/xen_back1 >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

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

echo "Criando snapshot de $VM"
echo "Criando snapshot de $VM" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template"
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Exportando $SNAPSHOT da vm $VM"
echo "Exportando UUID=$SNAPSHOT" >> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi

echo "Removendo $SNAPSHOT da vm $VM"
echo "Removendo UUID=$SNAPSHOT">> /tmp/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" >> /tmp/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" >> /tmp/xen_back.mail
fi
echo -e "\n" >> /tmp/xen_back.mail
done

# Remove os backups antigos
ANTIGOS=$(find $BACKDIR/* -ctime +$DIASARMAZENAMENTOBACKUP)
echo -e "Os arquivos $ANTIGOS foram removidos" >> /tmp/xen_back.mail
rm -fr $ANTIGOS

/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
Amigo, valew pela contribuição, mas eu precisei criar uma nova variável: 

No lugar de $BACKDIR, coloquei $DELBACKUP recebendo /mnt/backup
Quando coloquei apenas $BACKDIR nada foi excluído, pois ele vai procurar arquivos antigos em "/mnt/backup/$BACKDATE/$HOSTNAME"

Ficou assim:

# Configurações para o envio de emails
REMETENTE="[email protected]"
ADMIN="[email protected]"
ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME no dia $BACKDATE"
SMTP="smtp.gmail.com:587"
USUARIO="[email protected]"
SENHA="senhadomail"
DIASARMAZENAMENTOBACKUP=7
DELBACKUP=/mnt/backup
...
...
...
# Remove os backups antigos
ANTIGOS=$(find $DELBACKUP/* -ctime +$DIASARMAZENAMENTOBACKUP)
echo -e "Os arquivos $ANTIGOS foram removidos" >> /tmp/xen_back.mail
rm -fr $ANTIGOS
As oportunidades multiplicam-se à medida que são agarradas. - Sun Tzu

Avatar do usuário
tacioandrade
Administrator
Administrator
Mensagens: 110
Registrado em: 10 Jun 2013 22:03
Localização: Vitória da Conquista - Ba
Idade: 34
Contato:
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por tacioandrade »

jotaherre escreveu: Bom dia, amigos!!

Muito obrigado pela contribuição de vocês. O backup está redondo há três meses!! Muito o brigado!
Fico feliz aqui também está rodando desde quando postei a modificação do script aqui no forum e só tranquilidade.

Avatar do usuário
Elton
Administrator
Administrator
Mensagens: 1259
Registrado em: 10 Jun 2013 12:44
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por Elton »

O meu está rodando até na versão nova 6.5... redondo...
"Colaborar atrai amigos, competir atrai inimigos ..."

Winkler
Newbie
Newbie
Mensagens: 1
Registrado em: 22 Ago 2015 22:22
Localização: Guarapuava
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por Winkler »

Olá, o Script está rodando 100% no meu server, mas não consegui fazer importação em outro servidor.

Código: Selecionar todos

[root@xenserver-hp ~]# xe vm-import filename=/root/xp.xva sr-uuid=1d321210-f5c0-0388-f27d-106e33e969bb 
The uuid you supplied was invalid.
type: SR
uuid: 1d321210-f5c0-0388-f27d-106e33e969bb
Pela interface gráfica vai 100% de um para outro. Posso estar errando na uuid? uuid da storage ou vm? kkk

Alguma dica. Obrigado
Editado pela última vez por Winkler em 22 Ago 2015 22:57, em um total de 1 vez.
"Alteri ne facias quod tibi fieri non vis"

andrali
Newbie
Newbie
Mensagens: 1
Registrado em: 23 Ago 2015 09:56
Status: Offline

Re:[Script] Backup a quente das vm's rodando no XenServer

Mensagem por andrali »

Marcelo bom dia,
Como faço para fazer o backup somente de uma VM,?
Onde tenho que alterar no script?

Obrigado,

Luiz

Responder

Voltar para “XenServer”