Inicialização automática de VMs no XenServer 7.

A partir das novas versões adotadas pelo Xen Server foi desabilitada a inicialização automática de VMs ao reinicializar o host. Neste artigo vamos demostrar como iniciar as máquinas virtual de forma automática ao reiniciar nosso Xen Server.


CONSIDERAÇÕES

Iremos utilizar o Xen Server 7, última versão adotada no momento da elaboração deste artigo. Vamos levar em consideração que já possua um servidor Xen instalado e configurado, além de possuir uma VM ativa para realizar os testes.


1) CRIAÇÃO DE SCRIPT.

Para que possamos iniciar nossas VMs de forma automática, precisamos criar um script. Este script será responsável por iniciar nossas máquinas virtuais assim que o host iniciar. Vamos criar um arquivo dentro do diretório “/etc/init.d” de nosso Xen Server, conforme ilustrado abaixo.

touch /etc/init.d/inicia-vms

Antes de editar nosso novo arquivo, precisamos saber qual o UUID da(s) VM(s) armazenada(s) em nosso host que desejamos iniciar automaticamente. Para isso, execute o comando conforme ilustrado abaixo.

xe vm-list

Ao executar o comando, será mostrado em tela todas as VMs disponíveis em seu Xen. Copie o UUID de todas as VMs que deseja realizar a inicialização automática conforme ilustrado abaixo.

Acesse o arquivo criado com seu editor de preferência,  insira o conteúdo ilustrado abaixo, salve e saia do arquivo.

Nota: Neste script fiz a implementação de um arquivo de log, isso lhe auxiliará na identificação de possíveis erros.

#!/bin/sh
#Incia as VMs.
######################################################################### 
#' Criado por: Rafael Oliveira #
# Fone:(27) 99981-4409 #
# e-mail: faelolivei@gmail.com #
#########################################################################

echo "==============================================================================" > /var/log/inicia-vms.log
sleep 60
data=`date +%c` # Data e hora atual.
echo "1) Iniciando VM Ubuntu1 em ${data}." >> /var/log/inicia-vms.log
xe vm-start uuid=84a09501-a30b-f22c-2021-35b1bc208f6d &>> /var/log/inicia-vms.log
if [ $? -eq 0 ]; then {
 echo "A VM foi iniciada com sucesso!" >> /var/log/inicia-vms.log
 echo "------------------------------------------------------------------------------" >> /var/log/inicia-vms.log
} else {
 echo "Problemas na inicialização da VM, verifique o arquivo de log." >> /var/log/inicia-vms.log
 echo "==============================================================================" >> /var/log/inicia-vms.log
} fi;

echo "==============================================================================" >> /var/log/inicia-vms.log
sleep 45
data=`date +%c` # Data e hora atual.
echo "2) Iniciando VM Ubuntu2 em ${data}." >> /var/log/inicia-vms.log
xe vm-start uuid=9056c9f7-f93f-2f74-ef43-baffff45e33b &>> /var/log/inicia-vms.log
if [ $? -eq 0 ]; then {
 echo "A VM foi iniciada com sucesso!" >> /var/log/inicia-vms.log
 echo "------------------------------------------------------------------------------" >> /var/log/inicia-vms.log
} else {
 echo "Problemas na inicialização da VM, verifique o arquivo de log." >> /var/log/inicia-vms.log
 echo "==============================================================================" >> /var/log/inicia-vms.log
} fi;

echo "==============================================================================" >> /var/log/inicia-vms.log
sleep 45
data=`date +%c` # Data e hora atual.
echo "3) Iniciando VM WinServer2008R2 em ${data}." >> /var/log/inicia-vms.log
xe vm-start uuid=2a5a4e18-fa86-3290-bc3a-3b29e62b8d6c &>> /var/log/inicia-vms.log
if [ $? -eq 0 ]; then {
 echo "A VM foi iniciada com sucesso!" >> /var/log/inicia-vms.log
 echo "------------------------------------------------------------------------------" >> /var/log/inicia-vms.log
} else {
 echo "Problemas na inicialização da VM, verifique o arquivo de log." >> /var/log/inicia-vms.log
 echo "==============================================================================" >> /var/log/inicia-vms.log
} fi;

echo "==============================================================================" >> /var/log/inicia-vms.log
exit 0

Para que nosso script funcione, precisamos dar poder de execução ao mesmo. Para isso, execute o comando conforme ilustrado abaixo.

chmod 755 /etc/init.d/inicia-vms

2) ADICIONANDO O SCRIPT A INICIALIZAÇÃO DO XEN.

Para que seja possível inciar nosso script na inicialização do XenServer, vamos precisar adiciona-lo a alguma runlevel do sistema. Para o nosso exemplo, queremos que o mesmo seja inicializado no “runlevel 5” ou “graphical.target”. Muitos comandos Linux são desabilitados por padrão no XenServer, um destes comandos é o “update-rc.d” comando normalmente utilizado para adicionar scripts a inicialização. Uma alternativa é habilitar os repositórios do CentOS no Xen e realizar a instalação do mesmo, ou realizar a configuração de forma manual. Neste artigo iremos utilizar a forma manual. Para isso, execute o comando conforme ilustrado abaixo.

ln -s /etc/init.d/inicia-vms /etc/rc5.d/S51inicia-vms

Agora vamos verificar se nosso script está habilitado na inicialização, confira se o link foi criado corretamente conforme comando ilustrado abaixo.

ls -laF /etc/rc5.d/

Pronto, agora já podemos realizar o teste, reinicie seu Xen Server e aguarde suas máquinas virtuais serem capazes de inicializar automaticamente assim que o Xen estiver em execução.


CONCLUSÃO

Neste artigo foi demostrado de uma maneira simples, fácil e objetiva, como habilitar a inicialização automática de VMs hospedadas em um Xen Server 7.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 46 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

4 respostas

  1. Rafael, muito legal o seu script, mas, estou com um problema.
    Se eu executo o script (./inicia-vms) as vms inciam normalmente.
    Quando eu coloco pra inciar junto com o sistema, que é o objetivo rs, ele só inicia a primeira VM e não mostra nada nos log´s. Tem uma ideia de como posso resolver isto?
    Obs.: Já aumentei o tempo de inicialização e não resolveu.

    Obrigado por compartilhar.

    1. Bom dia Nicomedis! Que bom que gostou, fico feliz em poder contribuir. Referente ao seu problema creio que está relacionado ao UUID das máquinas virtuais que deseja startar. Você precisa informar no script todos as VMs que deseja inicializar. Provavelmente só informou o UUID da primeira. Att,

  2. Otimo tutorial,

    Tiver que alterar o sleep da primeira VM, aparentemente o servidor ainda não tinha iniciado por completo e não iniciava as primeiras maquinas.

    Primeiro sleep ficou em 180.

    Att Lucas.

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!