Arquivo

Archive for the ‘Virtualização – XenServer’ Category

Criar templates no XenServer

Algumas versões do XenServer não possuem templates prontos para Distros mais novas. Em alguns casos, baseado em templates já existentes no sistema, é possível criar templates para as Distros mais novas sem necessidade de paravirtualizar a nova instalação, segue alguns exemplos:

 

– Template Debian Wheezy

 

#!/bin/bash

SQUEEZE=$(xe template-list name-label=Debian\ Squeeze\ 6.0\ \(32-bit\) –minimal)

if [[ -z $SQUEEZE ]] ; then
echo “Cant find squeeze 32bit template, is this on 6.0″
exit 1
fi

distro=”Debian Wheezy”
arches=(“32-bit” “64-bit”)
for arch in ${arches[@]} ; do
echo “Attempting $distro ($arch)”
if [[ -n $(xe template-list name-label=”$distro ($arch)” params=uuid –minimal) ]] ; then
echo “$distro ($arch)” already exists, Skipping
else

NEWUUID=$(xe vm-clone uuid=$SQUEEZE new-name-label=”$distro ($arch)”)
xe template-param-set uuid=$NEWUUID other-config:install-methods=http,ftp \
other-config:install-repository=http://ftp.debian.org/debian \
PV-args=”– quiet console=hvc0″ \
other-config:debian-release=wheezy \
other-config:default_template=true

if [[ “$arch” == “32-bit” ]] ; then
xe template-param-set uuid=$NEWUUID other-config:install-arch=”i386″
else
xe template-param-set uuid=$NEWUUID other-config:install-arch=”amd64″
fi
echo “Success”
fi

done

echo “Done”

 

– Template Ubuntu 

 

#!/bin/bash

LENNY=$(xe template-list name-label=Debian\ Lenny\ 5.0\ \(32-bit\) –minimal)

if [[ -z $LENNY ]] ; then
echo “Cant find lenny 32bit template, is this on 5.6?”
exit 1
fi

distro=”Ubuntu 10.04″
arches=(“32-bit” “64-bit”)
for arch in ${arches[@]} ; do
echo “Attempting $distro ($arch)”
if [[ -n $(xe template-list name-label=”$distro ($arch)” params=uuid –minimal) ]] ; then
echo “$distro ($arch)” already exists, Skipping
else

NEWUUID=$(xe vm-clone uuid=$LENNY new-name-label=”$distro ($arch)”)
xe template-param-set uuid=$NEWUUID other-config:install-methods=http,ftp \
other-config:install-repository=http://archive.ubuntu.net/ubuntu \
PV-args=”– quiet console=hvc0 partman/default_filesystem=ext3″ \
other-config:debian-release=lucid \
other-config:default_template=true

if [[ “$arch” == “32-bit” ]] ; then
xe template-param-set uuid=$NEWUUID other-config:install-arch=”i386″
else
xe template-param-set uuid=$NEWUUID other-config:install-arch=”amd64″
fi
echo “Success”
fi

done

echo “Done”

Anúncios

XenServer – Comandos úteis

Comandos, console…. prático, rápido, funcional…. mas se você não usa todo dia acaba esquecendo, apesar de saber que eles existem. Vou listar alguns comandos do XenServer, muito úteis, mas nem tanto utilizados.

— listar discos das vms

# xe vm-disk-list –multiple

— configurar pool para iniciar automaticamente

# xe pool-param-set uuid=uuid_pool other-config:auto_poweron=true

— configurar para vm iniciar automaticamente

# xe vm-param-set other-config:auto_poweron=true uuid=uuid_template

— Remover configuração de VM (neste caso inicialização automática)

# xe vm-param-remove param-key=auto_poweron param-name=other-config uuid=uuid_vm

— Exlcuir um template

# xe template-param-set other-config:default_template=false uuid=uuid_template

# xe template-param-set is-a-template=false uuid=uuid_template

# xe vm-destroy uuid=uuid_template

— Shutdown / Start / Export VM

xe vm-shutdown vm=nome_vm

xe vm-start vm=nome_vm

xe vm-export vm=nome_vm filename=/Caminho_arquivo.xva

— Resetar estado da vm

# xe vm-reset-powerstate uuid=<vm>

— Listar tarefas pendentes
# xe task-list

— Cancelar tarefa
# xe task-cancel uuid=<tarefa>

— Eliminar tarefas pendentes
# xe-toolstack restart

Paravirtualizar VM no XenServer

A técnica de virtualização permite que várias instâncias de sistemas operacionais sejam executadas em um único hardware. Com a crescente demanda por recursos computacionais, as empresas aderem cada vez mais a essa tecnologia buscando economia, desempenho e melhor gerenciamento dos recursos disponíveis para os negócios. A virualização é feita basicamente de duas formas:

  1. Virtualização total
    Primeira geração da virtualização, esta técnica fornece ao SO visitante uma réplica do hardware, o que apresenta algumas desvantagens. Como o conceito da virtualização diz que vários dispositivos podem funcionar a partir de um único hardware, a virtualização total utiliza implementações genéricas que funcionam na grande maioria dos dispositivos, o que pode gerar desperdício da capaciadade de hardware disponível. Outro inconveniente apresentado é o fato de as implementações terem que contornar problemas gerados pela disputa de hardware pelos Sistemas Operacionais visitantes, uma vez que o SO foi projetado para ser executado como instância única no hardware.
  2. Paravirtualização
    A segunda geração de virtualização, apresenta uma interface para as máquinas virtuais que se assemelha ao hardware real. Esta técnica prevê a alteração do kernel dos SOs visitantes com o intuito de substituir instruções não virtualizadas, o que proporciona um melhor desempenho das VMS e melhor gerenciamento sobre as mesmas.
 O objetivo deste artigo é mostrar como paravirtualizar uma VM com SO Linux, neste caso foi usado o Centos 5.7, rodando no XenServer.
 O primeiro passo é instalar o módulo do xen no guest
# apt-get install kernel-xen
As entradas referentes ao novo kernel serão adicionadas ao grub.
Após completar a instalação reinicie o servidor. É necessário gerar um novo initrd para o boot sem suporte a drivers SCSI que causam problemas com discos virtuais no XenServer:
# cd /boot
# mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk \
initrd-$(uname -r)xen-no-scsi.img $(uname -r)xen

Nota: Neste momento sugiro que seja criado um snapshot da VM para restauração caso haja algum problema no processo.

No arquivo /etc/grub/grub.conf, faça as seguintes alterações:

  • Exclua a entrada do kernel com ‘gz’ no nome;
  • Renomeie a primeira entrada module para kernel;
  • Renomeie a segunda entrada module para initrd;
  • Altere o ponteiro initrd*.img para o nome correto do arquivo gerado no passo anterior;
  • Edite a entrada ‘default=’ para o número correspondente à entrada do xenkernel. No nosso exemplo 0.
    Nota:  A contagem é baseada na posição do kernel e iniciada no número 0.

    O novo arquivo deve ficar como o da imagem:
     

Desligue a VM, não reinicie.

# Halt

No xen, é necessário alterar alguns parâmetros no registro da VM para converter para o modo boot PV. Nosso exemplo a VM é chamada ‘novavm’. No console do XenServer, execute os seguintes comandos:

# xe vm-list name-label=novavm params=uuid (retorna o UUID da vm)

# xe vm-param-set uuid=<vm-uuid> HVM-boot-policy=”” (Limpa HVM boot mode)

# xe vm-param-set uuid=<vm-uuid> PV-bootloader=pygrub (define pygrub como boot loader)

# xe vm-param-set uuid=<vm-uuid> PV-args=”console=hvc0 xencons=hvc” (define o tipo de console da vm)

# xe vm-disk-list uuid=<vm uuid> (retorna o UUID da interface do disco virtual)

# xe vbd-param-set uuid=<vbd uuid> bootable=true (define o disco como bootável)

Neste ponto a VM já pode ser iniciada. Ao completar a inicialização será necessário reconfigurar a interface de rede. Caso o console no XenCenter não funcione corretamente, feche o aplicativo e abra novamente.

Comandos executados no Xen

Para completar o processo é necessário instalar na VM o “XenServer Tools”.

No XenCenter:

  • Selecione a aba ‘Console’ da VM no XenCenter;
  • No DVD drive selecione ‘xs-tools.iso’;

Na VM, monte o drive habilitado e instale os pacotes:

# mount /dev/xvdd/media
# cd /mnt/media/Linux
# ./install.sh

Responda ‘y’ para confirmar a instalação. Após concluída a instalação, desabilitar a imagem do xentools no drive de DVD e reiniciar a VM.

Ao iniciar a VM, o ‘Virtualization Status’ na aba ‘General’ deve mostrar ‘Optimized’.

Fontes:

%d blogueiros gostam disto: