Sobre o autor.

Cristiano Alves é Consultor em Linux, Analista de TI (Infraestrutura), Administrador de Redes, e Instrutor de treinamentos em Linux, com experiência em Linux como suporte, ministrando treinamentos, implantação e auditoria em data center desde 1997. Trabalhou, em 2005, na Season Consultoria e Treinamentos em Informática, onde era como monitor, ministrou, em 2006, treinamentos no DCTA (Departamento de Ciência e Tecnologia Aeroespacial - São José dos Campos, SP). Entre 2007 e 2008 participou como voluntário de obra cristã social denominada Escola Cristã, onde realizou uma inclusão digital com a filosofia do software livre. Até junho de 2015 atuou como Analista de Infraestrutura no UOL, junto ao time de Engenharia de Data center.


domingo, 8 de janeiro de 2012

Xen Hypervisor - Slackware (Instalação, configuração e network bridge)

Na postagem anterior, abordamos sobre a compilação, instalação e configuração do kernel 3.1.6, por já trazer nativo suporte a paravirtualização Xen.

Esta postagem abordaremos a instalação da versão mais atual do do Xen Hypervisor, a versão 4.1.2, qual eu disponibilizarei aqui para download o pacote de instalação para o Slackware na sua primeira revisão:
xen-4.1.2_x86-r1.txz.

Para ampliar, clique sobre a figura.
Conforme a figura acima, vemos que o Xen Hypervisor foi instalado (installpkg). A instalação cria o script /etc/rc.d/rc.xenhd, responsavel pela inicialização dos principais serviços do Xen, porém, ao iniciar o serviço (start), é verificado o erro dizendo que não existe o arquivo  
/proc/xen/capabilities. Ao verificar o kernel instalado (uname -a), verificamos que o novo kernel, qual terminamos de instalar é exatamente o que está sendo usado pelo sistema.
Afinal, por que o serviço do hypervisor não foi inicializado?

Para ampliar, clique sobre a figura.
Foi verificado, conforme a figura acima, que:
  1. Ao listar tudo o que tem a seqüência de caracteres "xen" no diretório /boot, a instalação do Xen criou também as imagens de inicialização do Xen.
  2. Foi instalado, então, o GNU Grub, multiboot loader. (Vide considerações na postagem anterior)
  3. Foi instalado o Grub boot loader no setor MBR do disco rígido principal (/dev/sda)
Nota.: A versão do GNU Grub instalada foi a 1.99, qual disponibilizarei também o pacote de instalação Slackware para download aqui.

Para ampliar, clique sobre a figura.
Depois de instalado o Grub, foi gerado (grub-mkconfig) dentro de /boot/grub o arquivo de configuração (grub.cfg). Notamos que o comando detecta todas entradas de imagens de kernel existentes e gera o arquivo.
Notamos também que, ele encontra cinco entradas referentes ao kernel que instalamos. Por que? São justamente as cinco imagens referentes a inicialização do sistema com o suporte ao Xen.

Para ampliar, clique sobre a figura.
Aqui estão as entradas referentes ao kernel, qual compilamos, instalamos e configuramos na postagem anterior (vi /boot/grub/grub.cfg). Foram feitas apenas algumas edições necessárias, conforme mostra a figura acima.

Para ampliar, clique sobre a figura.
Aqui estão as entradas referentes ao Xen, editadas conforme mostra a figura acima. Foi atribuída ao dom0 aproximadamente metade da memória física presente nesta máquina.
Ao terminar a edição do arquivo, fechamos, salvando as alterações, reinstalamos o boot loader no MBR, conforme o passo de número 3 do tópico de instalação do Grub e mais uma vez reinicializaremos a máquina. Mas antes disto, deve ser adicionada a /etc/fstab a seguinte entrada:

xenfs            /proc/xen        xenfs       defaults         0   0

Obs.: Ao reinicializar a máquina, ao apresentar o menu do GNU Grub, deverá ser acessado o menu Xen 4.1.2, e em seguida o submenu Slackware Linux 13.37, with Xen (3.1.6-smp).


Para ampliar, clique sobre a figura.
Após reinicializado a máquina com suporte ao dom0 Xen, mais uma vez foi verificada a versão do kernel em execução e foram seguidos os seguintes passos, conforme mostra a figura acima:

  1. Foram inicializados os principais serviços do xen;
  2. Foras listadas as informações sobre o ¹ domínio virtual (dom0);
  3. Foi inicializado o ² xend;
Notas.: ¹ Ao tentar listar o(s) domínio(s) virtual(is) presente(s), o sistema retorna uma mensagem de erro, e pergunta se o xend está sendo executado, assim, só foi possível listar após a inicialização do xend; ² O serviço do xend (/etc/rc.d/rc.xend) fica disponível somente depois que são inicializados os demais serviços em /etc.rc.d/rc.xenhd.

Para ampliar, clique sobre a figura.

Quando o rc.xend é inicializado, ele executa o script padrão network-bridge que:

  1. Cria uma nova bridge chamada xenbr0;
  2. Derruba a eth0 padrão;
  3. Copia para a interface virtual veth0 os endereços IP e  MAC da eth0;
  4. Renomeia a interface eth0 padrão para peth0;
  5. Renomeia também a interface virtual veth0 para eth0;
  6. Vincula peth0 e vif0.0 para a bridge xenbr0;
  7. Faz subir a bridge, peth0, eth0 e vif0.0.
Nota.: A figura acima mostra que além do nome da bridge padrão ter sido baseado no da interface eth1, a peth1 obteve o endereço MAC da mesma. Por que? A partir da versão 3.3 do Xen se o nome da interface conectada é ethX, o nome da bridge padrão será pethX. Desta forma, como o hardware usado para as demonstrações desta postagem usa uma conexão sem fio na interface eth1, o nome da bridge padrão criada ficou peth1, e como a interface caiu, foi perdido também o roteamento com a internet porque a bridge peth1 assumiu o papel de eth1. 

Como aqui esta sendo usado IP dinâmico, e peth1 requer IP fixo, a solução encontrada foi a seguinte:

Criação do script /etc/xen/scripts/network-multi-bridge com o código abaixo:

Para ampliar, clique sobre a figura.
Após fechar e salvar o script acima, encontrar a linha (network-script network-bridge) em /etc/xen/xend-config.sxp, retirar o comentário, e substituir o nome de script pelo do criado acima. Desta forma, a linha ficara assim:

(network-script network-multi-bridge)

Obs.: Não esquecendo de tornar o script criado executável:


bash-4.1# chmod +x /etc/xen/scripts/network-multi-bridge


Para ampliar, clique sobre a figura.
Após fechar e salvar as alterações em /etc/xen/xend-config.sxp, e reiniciar-mos o rc.xend, notamos uma alteração nas interfaces de rede, conforme mostra a figura acima, sendo restabelecido o roteamento com a internet para eth1.


Para finalizar-mos, fizemos mais o seguinte:

Acessamos /etc/rc.d/rc.xenhd e retiramos o comentário das linhas abaixo:

      echo "Starting Xen Hypervisor: /etc/init.d/xend"
  /etc/rc.d/rc.xend start
 
Acrescentamos a /etc/rc.d/rc.local as linhas abaixo, quais serão responsáveis por inicializar o serviço em tempo de inicialização do sistema:

# Start Xen common services
/etc/rc.d/rc.xenhd start


Obs.: É recomendável que as linhas sejam acrescentadas no inicio do script.

E acrescentamos a /etc/rc.d/rc.0 a entrada abaixo antes da entrada referente ao apache web server, qual será responsável por parar o serviço ao desligar o sistema:

# Stop Xen common services
if [ -x /etc/rc.d/rc.xenhd ]; then
/etc/rc.d/rc.xenhd stop
fi



Tudo, até aqui.

Assim, continuaremos a sessão de postagens sobre o Xen com a instalação do Solaris paravirtualizado.


Saudações a todos.



Referências:

Xen Hypervisor Project

Xen: Add a Network Bridge for eth1 - I Do Linux Enterprise Linux Tips and Tricks.




Nenhum comentário: