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 (Compilação, instalação e configuração de um kernel compatível com o Xen)

Na postagem anterior abordamos passo a passo a instalação do FreeBSD sobre uma vm através do VirtualBox.

Está postagem abre uma sessão de outras postagens, quais abordarão a instalação e configuração do Xen Hypervisor, assim como a instalação do Solaris através da paravirtualização em Xen.

Empresas que procuram aumentar a utilização de servidores, otimizar soluções já implementadas, reduzir tanto a complexidade, como o custo total do patrimônio alocado estão adotando a virtualização de servidores. O Xen hypervisor é, além de ser o único com technologia "open source",  a mais rápida e mais segura solução de virtualização de infraestrutura disponível atualmente, suportando uma vasta gama de sistemas operacionais como convidados, tais como o Windows®, Solaris®, dentre outros.

A instalação do Xen sobre o Slackware será o centro desta postagem, assim, antes de entrar-mos nos detalhes técnicos, quero aqui colocar algumas considerações:

  • O kernel passou a dá suporte nativo ao Xen a partir da versão 3.x, e a versão nativa contida no Slackware 13.37 é a 2.6.37.6;
  • Como o Xen é um software de paravirtualização, ele usa uma imagem de inicialização, qual é utilizada junto com a imagem do kernel, sendo que o Grub oferece melhor suporte do que o Lilo, e o Slackware sempre trouxe o Lilo como o seu boot loader nativo, e nem disponibiliza o Grub em seu disco de instalação;
  • Até o momento, muito raramente serão encontrados pacotes de instalação do Xen hypervisor para o Slackware disponíveis na rede, porém o fonte disponibilizado no pŕoprio site da suporte ao recurso "DESTDIR".
Bem, após as considerações acima, entraremos agora nos detalhes técnicos.

Iniciaremos fazendo o download da versão estável mais atual do kernel, a versão 3.1.6;

Agora iremos descompactar o nosso novo kernel, lembrando que a localização padrão para os fontes do kernel é sempre em /usr/src:

bash-4.1# tar -jxvf linux-3.1.6.tar.bz2 --directory=/usr/src/

Obs.: A opção --directory já encaminha o fonte do kernel direto para caminho desejado.

Para ampliar, clique sobre a figura.
Conforme a figura acima, foram seguidos os seguintes passos, após descompactado o fonte do kernel para o caminho específico:

  1. Foi acessado o diretório onde localizam-se os fontes dos kernels (/usr/src/);
  2. Foi removido (rm) o link simbólico vinculado ao fonte do kernel corrente;
  3. Foi criado o link simbólico (ln -s) vinculado já ao novo kernel (3.1.6);
  4. Foi acessado o diretório onde localizam-se os fontes do novo kernel através do link simbílico(/usr/src/linux);
  5. Foi expandido (zcat) o config do kernel corrente para o caminho do novo kernel, mantendo assim, as configurações anteriores para a compilação do kernel 3.1.6;
  6. Foi feita uma atualização do .config (oldnoconfig) com base no disponibilizado pelo kernel corrente, definindo todos as novas implementações como n, adicionalmente às atualizações das dependências...
Para ampliar, clique sobre a figura.
 ... E ao acessar o menu de configuração do novo kernel (menuconfig), o primeiro a ser feito foi definir o suporte para memórias grandes para 64 Gb (Processor type and features - High emory Support), caso contrário, não aparecerão as opções de suporte para o Xen. (Figura acima);

Para ampliar, clique sobre a figura.
Conforme a figura acima, foi habilitado o suporte para sistemas convidados paravirtualizados...

Para ampliar, clique sobre a figura.
... E ao acessar-mos o seu submenu, habilitamos o suporte para sistemas convidados Xen, dentre outros conforme mostrado na figura acima;

Para ampliar, clique sobre a figura.
Retornando ao menu anterior (Processor type and features), foi habilitado também o recurso, conforme mostra a figura acima.

Para ampliar, clique sobre a figura.
Retornando ao menu principal, conforme mostra a figura acima, acessamos a opção de suporte a barramentos...

Para ampliar, clique sobre a figura.
... E habilitamos o suporte ao PCI frontend para Xen.

Para ampliar, clique sobre a figura.

Para ampliar, clique sobre a figura.
Retornando ao menu principal, conforme mostram as figuras acima, acessamos a opção de suporte a dispositivos de hardware, em seguida o submenu de dispositivos de bloco (Block devices)...

Para ampliar, clique sobre a figura.
... Encontradas as opções sobre o Xen, habilitamos o suporte nativo a dispositivos de blocos virtuais do Xen, e o beckend habilitamos como módulo (M), conforme mostrado na figura acima.

Para ampliar, clique sobre a figura.
Retornando ao menu anterior, conforme mostra a figura acima, acessamos a opção de suporte a dispositivos de rede...

Para ampliar, clique sobre a figura.
... Encontradas as duas opções sobre o Xen, habilitamos os suportes da mesma forma que fizemos em Block devices, conforme mostrado na figura acima.

Para ampliar, clique sobre a figura.
Retornando ao menu anterior, conforme mostra a figura acima, acessamos a opção de suporte a dispositivos de caractere...

Para ampliar, clique sobre a figura.
... E habilitamos o suporte ao console do Xen conforme mostra a figura acima.

Para ampliar, clique sobre a figura.
Retornando ao menu anterior, conforme mostra a figura acima, acessamos a opção de suporte ao Watchdog Timer...

Para ampliar, clique sobre a figura.
... E habilitamos o suporte ao Watchdog do Xen conforme mostra a figura acima.

Para ampliar, clique sobre a figura.

Para ampliar, clique sobre a figura.
 Retornando ao menu anterior, conforme mostram as figuras acima, acessamos a opção de suporte a recursos gráficos, e em seguida ao submenu de suporte para frame buffer...

Para ampliar, clique sobre a figura.
... E habilitamos o suporte ao frame buffer virtual do Xen.

Para ampliar, clique sobre a figura.
Retornando ao menu anterior, conforme mostra a figura acima, acessamos a opção de suporte a drivers do Xen...

Para ampliar, clique sobre a figura.
... E habilitamos o suporte nativo a todos os drivers virtuais do Xen, exceto o driver "User-space grant reference allocator", qual  habilitamos como módulo (M), conforme mostrado na figura acima.

Para ampliar, clique sobre a figura.
E para finalizar esta etapa, retornando ao menu anterior, conforme mostra a figura acima, habilitamos o suporte a drivers de virtualização.

Retornamos ao menu principal, saímos do menu de configurações para o novo kernel, e salvamos as alterações de forma que foram escritas no .config.
Agora compilaremos o suporte a todos os recursos marcados como nativos (*) ao novo kernel, com o comando abaixo:

bash-4.1# make all

Obs.: ¹ O procedimento referente ao comando acima dura cerca de 60 minutos até a sua finalização; ² Caso o usuário queira habilitar mais algum recurso nativo ( * ), ou como módulo (M) no novo kernel, pode faze-lo, mas com muito critério, e cuidado para que a imagem de inicialização do kernel não fique grande de mais, provocando instabilidade, e até a não inicialização do sistema (kernel panic).
Finalizada a compilação dos módulos marcados como nativos, instalamos todos os módulos para o caminho de instalação dos mesmos, com o comando abaixo:

bash-4.1#  make modules_install

Finalizando mais uma etapa, instalamos o kernel para o seu caminho de instalação (/boot) com o comando abaixo:

bash-4.1#  make install

Obs.: Com o comando acima, serão criados os arquivos de imagem do kernel (vmlinuz), e o System.map, e logo em seguida será executado o lilo para a atualização das entradas do kernel no boot loader. Foi também criado o arquivo /etc/rc.d/rc.modules do novo kernel.

Para ampliar, clique sobre a figura.
Conforme a figura acima, foram seguidos os seguintes passos, após instalação do kernel:
  1. Foi acessado o diretório onde se encontram os serviços do Slackware;
  2. Foi feita uma cópia (cp) do script de inicialização dos módulos extras dentro do kernel do Linux, sendo renomeado conforme a versão do kernel, qual foi instalada (3.1.6-smp);
  3. Foi removido o script rc.modules com nome genérico, gerado pela instalação do novo kernel;
  4. Foi criado o link simbólico (rc.modules), apontando para o script do novo kernel (rc.modules-3.1.6-smp);
  5. Foi renomeado (mv) o arquivo de imagem do novo kernel do Linux conforme a versão do kernel, qual foi instalada (vmlinuz-3.1.6-smp);
  6. Foi renomeado também o arquivo System.map do novo kernel conforme a sua versão, qual foi instalada (System.map-3.1.6-smp);
  7. Foi feita uma cópia do arquivo de configuração (.config) do novo kernel, sendo renomeado conforme a versão, qual foi instalada (config-3.1.6-smp);
  8. Foi criado o link simbólico (vmlinuz), apontando para a imagem do novo kernel (vmlinuz-3.1.6-smp);
  9. Foi criado o link simbólico (System.map), apontando para o arquivo do novo kernel (System.map-3.1.6-smp);
  10. Foi criado o link simbólico (config), apontando para o arquivo de configuração do novo kernel (config-3.1.6-smp). Obs.: Não esquecer de remover o link simbólico /boot/config vinculado ao kernel corrente antes de criar o do novo kernel. 
     
Para ampliar, clique sobre a figura.
Conforme mostra a figura acima, encontramos a entrada padrão de inicialização do Slackware, e logo abaixo fui adicionada, por segurança, a entrada de inicialização com o kernel antigo, caso hajam problemas na inicialização com o novo kernel outrora compilado e instalado.

Para ampliar, clique sobre a figura.
Após fechado o arquivo /etc/lilo.conf salvando com a entrada do kernel antigo, foi reinstalado o lilo.



Tudo, até aqui.



Assim, continuaremos com a sessão de postagens sobre o Xen.



Aproveito para desejar a todos melhores votos para 2012.

Saudações.




Nenhum comentário: