Pesquisa de site

Como criar e instalar máquinas virtuais convidadas no XenServer – Parte 5


Continuando a avançar com a série XenServer, este artigo abordará a criação dos próprios convidados reais (geralmente chamados de máquinas virtuais).

Atualização: Em maio de 2016, a Citrix lançou a nova versão da plataforma XenServer 7. Para instalação siga: Nova instalação do XenServer 7.

Este artigo presumirá que todos os artigos anteriores que abordam rede, aplicação de patches e armazenamento foram concluídos. Felizmente, nenhuma nova terminologia precisa ser discutida e a criação dos convidados pode começar!

Revisão do sistema

Neste ponto, muita coisa foi configurada neste host XenServer. Isso servirá como uma rápida revisão sobre o que foi configurado e em qual artigo o tema foi discutido.

  1. XenServer 6.5 foi instalado no servidor
    1. https://linux-console.net/citrix-xenserver-installation-and-network-configuration-in-linux/
  2. Todos os patches do XenServer 6.5 foram aplicados
    1. https://linux-console.net/install-xenserver-patches-in-linux/
  3. Equipes de interface de rede e VLANs foram criadas
    1. https://linux-console.net/xenserver-network-lacp-bond-vlan-and-bonding-configuration/
  4. Repositórios de armazenamento iSCSI e ISO foram criados para armazenar arquivos de instalação do sistema operacional e os discos rígidos virtuais usados pelos convidados
    1. https://linux-console.net/xenserver-create-and-add-storage-repository/

Criação de convidados virtuais no XenServer

Esta parte do guia contará com instaladores ISO para realmente inicializar a máquina convidada recém-criada e instalar um sistema operacional. Certifique-se de revisar o quarto artigo para obter informações sobre como criar um repositório ISO.

O XenServer vem com uma série de modelos que podem ser usados para provisionar rapidamente um convidado virtual. Esses modelos fornecem opções comuns para o sistema operacional escolhido. As opções incluem itens como espaço no disco rígido, arquitetura da CPU e quantidade de memória RAM disponível, entre outras opções.

Estas opções podem ser modificadas manualmente posteriormente, mas por enquanto um modelo simples será usado para ilustrar seu uso. Para obter a lista de modelos disponíveis, o comando tradicional 'xe' pode receber diferentes argumentos para solicitar ao sistema que retorne os modelos disponíveis.


xe template-list

É provável que este comando retorne muitos resultados. Para tornar a saída mais fácil de ler, sugere-se que a saída seja canalizada para ‘less’ da seguinte forma:


xe template-list | less

Isso permitirá uma análise mais fácil dos modelos disponíveis para localizar as informações de UUID necessárias. Este artigo funcionará com o Debian 8 Jessie, mas exigirá o uso do modelo Debian 7 Wheezy mais antigo até que a Citrix lance o novo modelo .

Selecionar Debian 7 não afetará nada na operação do sistema operacional real. (A captura de tela abaixo usou o UUID no comando para cortar parte da saída normal).


xe sr-list name-label=”Tecmint iSCSI Storage”

Com este UUID, todas as informações iniciais para configurar este convidado foram obtidas. Como acontece com quase tudo no XenServer, outro comando ‘xe’ será usado para provisionar o novo convidado.


xe vm-install template=”Debian Wheezy 7.0 (64-bit)” new-name-label="TecmintVM" sr-uuid=bea6caa4-ecab-8509-33a4-2cda2599fb75

O UUID destacado é o UUID do convidado recém-provisionado. Existem algumas etapas de manutenção da casa que podem tornar as coisas mais fáceis no futuro. A primeira é fornecer um rótulo de nome para o VDI recém-criado e a segunda é modificar qualquer uma das especificações de hardware padrão fornecidas pelo modelo.

Para ver por que seria importante nomear o VDI, dê uma olhada no que o sistema atribuirá automaticamente ao VDI quando provisionado usando os seguintes comandos ‘xe’:


xe vbd-list vm-name-label=TecmintVM – Used to get the VDI UUID
xe vdi-list vbd-uuids=2eac0d98-485a-7c22-216c-caa920b10ea9    [Used to show naming issue]

Outra opção disponível é reunir as duas informações com o seguinte comando:


xe vm-disk-list vm=TecmintVM

A parte em amarelo é a preocupação. Para muitas pessoas, esse problema é menor, mas para fins de manutenção, um nome mais descritivo é desejado para acompanhar a finalidade deste VDI específico. Para renomear este VDI específico, o UUID na saída acima é necessário e outro comando ‘xe’ precisa ser criado.


xe vdi-param-set uuid=90611915-fb7e-485b-a0a8-31c84a59b9d8 name-label="TecmintVM Disk 0 VDI"
xe vm-disk-list vm=TecmintVM

Isso pode parecer trivial de definir, mas por experiência própria, evitou um problema sério ao desanexar um repositório de armazenamento de um XenServer e tentar anexá-lo a outro XenServer. Neste cenário específico, um backup de metadados de todas as informações do convidado não pôde ser restaurado no novo XenServer e, felizmente, ao nomear o VDI em cada um dos convidados, o mapeamento adequado do convidado para seu VDI pôde ser feito simplesmente pelo rótulo de nome.

A próxima etapa de manutenção deste artigo é fornecer mais recursos a esse hóspede em particular. Conforme provisionado, esse convidado terá apenas cerca de 256 MiB (Mebibytes) de memória. Para a maioria dos convidados isso não é suficiente, por isso é benéfico saber como aumentar a memória disponível de um convidado. Como acontece com qualquer coisa no XenServer, isso pode ser feito com comandos ‘xe’.


xe vm-param-list uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e | grep -i memory

A caixa em verde acima indica que a maior quantidade de memória que esse convidado em particular poderia ter é de cerca de 256 MiB. Para fins de teste, isso seria aceitável, mas para qualquer tipo de sistema de uso pesado, isso seria insuficiente.

Para modificar esse valor para dar ao convidado acesso a mais RAM, um simples comando ‘xe’ pode ser emitido com o convidado desligado. Neste exemplo, a quantidade de memória RAM a ser fornecida a esta máquina será representada em bytes, mas será igual a 2 Gibibytes de memória RAM.


xe vm-memory-limits-set dynamic-max=2147483648 dynamic-min=2147483648 static-max=2147483648 static-min=2147483648 name-label=TecmintVM

Observe que isso reservará dois GiB de RAM para este convidado o tempo todo.

Agora este convidado específico está pronto para ter um sistema operacional instalado. No artigo anterior sobre repositórios de armazenamento, um compartilhamento Samba foi adicionado a este XenServer para armazenar arquivos do instalador ISO. Isso pode ser confirmado com o seguinte comando ‘xe’:


xe sr-list name-label=Remote\ ISO\ Library\ on:\ //<servername>/ISO

Certifique-se de substituir <servername> pelo nome do servidor Samba adequado para o ambiente no qual esta configuração está ocorrendo. Assim que o XenServer for confirmado para ver o repositório de armazenamento ISO, um CD-ROM virtual precisa ser adicionado ao convidado para inicializar o arquivo ISO. Este guia assumirá que o Debian Net Installer ISO existe no repositório de armazenamento ISO.


xe cd-list | grep debian


xe vm-cd-add vm=TecmintVM cd-name=debian-8-netinst.iso device=3
xe vbd-list vm-name-label=TecmintVM userdevice=3

Os comandos acima listam primeiro o nome do ISO Debian. O próximo comando adicionará um dispositivo CD-ROM virtual ao convidado TecmintVM e atribuirá a ele o ID do dispositivo 3.

O terceiro comando é usado para determinar o UUID do CD-ROM recém-adicionado para continuar configurando o dispositivo para inicializar o ISO do Debian.

O próximo passo é tornar o CD-ROM inicializável e também instruir o convidado a instalar um sistema operacional a partir do CD-ROM.


xe vbd-param-set uuid=3836851f-928e-599f-dc3b-3d8d8879dd18 bootable=true
xe vm-param-set uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e other-config:install-repository=cdrom

O primeiro comando acima configura o CD-ROM para ser inicializável usando seu UUID destacado em verde na captura de tela acima. O segundo comando instrui o convidado a usar o CD-ROM como método de instalação do sistema operacional. O UUID do convidado Tecmint está destacado em amarelo na captura de tela acima.

A última etapa na configuração do convidado é anexar uma interface de rede virtual (VIF). Isto é especialmente importante para este método de instalação já que o instalador da Rede Debian está sendo usado e precisará extrair pacotes dos repositórios Debian.

Olhando novamente para o artigo de rede do XenServer, uma VLAN especial já foi criada para este convidado e era a VLAN 10. Usando 'xe' a interface de rede necessária pode ser criada e atribuída a este convidado.


xe network-list name-description="Tecmint test VLAN 10"
xe vif-create vm-uuid=6eab5bdd-c277-e55d-0363-dcfd186c8e8e network-uuid=cfe987f0-b37c-dbd7-39be-36e7bfd94cef device=0

O primeiro comando é usado para obter o UUID da rede criada para este convidado. O próximo comando é usado para criar um adaptador de rede para o convidado e conectar o adaptador de rede à rede adequada.

Parabéns! Neste ponto, a máquina virtual está pronta para inicializar e instalar! Para iniciar o convidado, emita o seguinte comando ‘xe’.


xe vm-start name-label=TecmintVM

Se o terminal não produzir nenhum erro, o convidado foi iniciado com sucesso. O início adequado do convidado pode ser confirmado com o seguinte comando ‘xe’:


xe vm-list name-label=TecmintVM

Agora a grande questão. Como acessar o instalador? Essa é uma pergunta válida. O método aprovado pela Citrix é usar o XenCenter. O problema aqui é que o XenCenter não roda em Linux! Portanto, existe uma solução alternativa para que os usuários não precisem criar uma estação especial do Windows simplesmente para acessar o console de um convidado em execução.

Este processo envolve a criação de um túnel SSH do computador Linux para o host XenServer e, em seguida, o encaminhamento de porta de uma conexão VNC através desse túnel. É muito inteligente e funciona maravilhosamente bem, mas este método pressupõe que o usuário pode acessar o XenServer via SSH.

A primeira etapa é determinar o número de domínio do convidado no XenServer. Isso é feito através do uso de vários comandos diferentes.


xe vm-list params=dom-id name-label=TecmintVM
xenstore-read /local/domain/1/console/vnc-port

A ordem desses comandos é importante! O primeiro comando retornará um número necessário para o segundo comando.

A saída de ambos os comandos é importante. A primeira saída indica o ID do domínio em que o convidado está sendo executado; 1 neste caso. O próximo comando requer esse número para determinar a porta VNC da sessão do console convidado. A saída deste comando fornece a porta VNC que pode ser usada para conectar o vídeo deste convidado específico.

Com as informações acima obtidas, é hora de mudar para uma estação Linux e conectar-se ao XenServer para visualizar a sessão do console deste convidado. Para fazer isso, um túnel SSH será criado e o encaminhamento de porta será configurado para direcionar uma conexão VNC local através do túnel SSH. Esta conexão será feita a partir de uma estação de trabalho Linux Mint 17.2, mas deverá ser semelhante para outras distribuições.

A primeira etapa é garantir que o cliente OpenSSH e o xtightnvcviewer estejam instalados no host Linux. No Linux Mint isso pode ser feito com o seguinte comando:


sudo apt-get install openssh-client xtightvncviewer

Este comando instalará os utilitários necessários. A próxima etapa é criar um túnel SSH para o host XenServer e configurar o encaminhamento de porta para a porta VNC determinada anteriormente no host XenServer (5902).


ssh -L <any_port>:localhost:<VM_Port_Above> root@<server> -N
ssh -L 5902:localhost:5902 root@<servername> -N

A opção '-L' diz ao ssh para encaminhar a porta. A primeira porta pode ser qualquer porta acima de 1024 que não esteja em uso na máquina Linux Mint. O 'localhost:5902' indica que o tráfego deve ser encaminhado para a porta localhost remota 5902 neste caso é a porta XenServer VNC do TecmintVM.

O 'root@' são as credenciais de login para SSH no host XenServer. Finalmente, o '-N' diz ao SSH para simplesmente abrir uma conexão de encaminhamento de porta. Usando o comando ‘lsof’, o túnel pode ser visualizado na saída.


sudo lsof -i | grep 5902

Aqui o túnel é configurado e escuta conexões. Agora é hora de abrir uma conexão VNC com o convidado no XenServer. O utilitário instalado é ‘xvncviewer’ e a conexão ssh para encaminhar o tráfego para o XenServer está escutando em ‘localhost:5902’ para que o comando apropriado possa ser construído.


xvncviewer localhost:5902

Voilá! Existe a sessão do console do TecmintVM executando o Debian Network Installer aguardando o início do processo de instalação. Neste ponto, a instalação prossegue como qualquer outra instalação do Debian.

Até agora, tudo com o XenServer foi feito via interface de linha de comando (CLI). Embora muitos usuários do Linux gostem da CLI, existem utilitários para simplificar o processo de gerenciamento de hosts e pools XenServer. O próximo artigo desta série abordará a instalação dessas ferramentas para usuários que desejam usar sistemas gráficos em vez de CLI.