Introdução ao oVirt

Virtualização de DataCenter usando oVirt

A Virtualização de datacenter traz consigo inúmeras vantagens como redução de custos e flexibilidade. Nesse contexto, oVirt figura como um alternativa de código aberto capaz de gerenciar esse novo modelo de datacenter. O presente artigo aborda a virtualização de datacenter com um grande foco em oVirt tanto do ponto de vista teórico de sua arquitetura quanto prático com um guia simples de instalação, configuração e exemplo de uso.

Fernando Granha Jeronimo, Software Engineer, Linux Technology Center - IBM

Fernando Granha JeronimoFernando Granha Jeronimo formou-se em engenharia de computação na UNICAMP assim como na Telecom Paristech (França). Atualmente, trabalha como Engenheiro de Software no LTC Brasil com projetos de gerência de Virtualização e Cloud.
Perfil My Developer Works



Paulo de Rezende Pinatti, Staff Software Engineer, Linux Technology Center - IBM

Paulo de Rezende PinattiEngenheiro de software na IBM com 10 anos de experiência em computação, atualmente trabalha no desenvolvimento de ferramentas para sistemas de virtualização (Openstack, oVirt). Formado em Ciência da Computação, já trabalhou no desenvolvimento de toolkits de instalação e configuração de Linux em máquinas IBM POWER, boot loaders, desenvolvimento para web, administração de sistemas, e outros.
Perfil My Developer Works



11/Jun/2013

Introdução

O poder da virtualização já é bem conhecido quando se trata de "multiplexar" os recursos de apenas uma máquina física, porém quando aplicado a um conjunto maior de máquinas as vantagens saltam aos olhos. Para extrair o melhor dessa configuração com múltiplas máquinas virtualizadas o oVirt foi criado. Ele destina-se ao gerenciamento do que é conhecido por Virtualização de datacenter, que em poucas palavras, é um datacenter tradicional em que os workloads rodam em máquinas virtuais.

A virtualização traz flexibilidade e em um datacenter virtualizado um workload não esta mais atrelado a uma máquina física. Com features como live migration, migração de máquinas virtuais sem a necessidade de desligá-las, essa flexibilidade é maximizada. Um exemplo interessante se dá no caso da necessidade de desligamento de um host físico para manutenção: com essa feature basta migrar suas máquinas virtuais para outro host evitando qualquer downtime.

Outro conhecido problema em datacenters tradicionais no qual a virtualização é capaz de ajudar bastante é na má utilização dos recursos. Nesse tipo de datacenter, uma máquina física não permite redistribuição de recursos: uma vez que a máquina esteja com 50% de carga os outros 50% não podem ser realocados para outra máquina. Com a virtualização, esses 50% podem ser direcionados para outra VM que necessite daquele recurso. Esse agrupamento de maquinas físicas em mesmo servidor, mas agora rodando em VMs, é conhecido como consolidação de servidor. Com a consolidação, o custo total de aquisição do datacenter pode ser reduzido, já que provavelmente um número menor de máquinas físicas conseguirá suprir a necessidade de todos os antigos usuários.

Os desdobramentos da taxa de utilização de recursos aliada ao live migration são múltiplos. Quando o datacenter está com pouca carga, é possível migrar as VMs para um conjunto mínimo de hosts e desligar o restante dos hosts economizando energia. Sistemas de gerenciamento de datacenter conseguem lidar com políticas de escalonamento de VM em hosts. No caso do exemplo precedente seria uma política de Power Saving. Em outra situação, poderia ser interessante alocar as VMs de forma a distribuir a carga de processamento igualmente entre os hosts, evitando sobrecargas e, migrações desnecessárias. Essa política é conhecida com Even Distribution.

Para finalizar, vemos que à medida que o número de máquinas físicas aumenta, o problema torna-se cada vez mais intratável. Por isso, é de suma importância ter um software de gerência que vai coletar informações de saúde (de host, VMs e storage) e realizar muitas operações de forma automatizada.

O projeto Ovirt está em ativo desenvolvimento pela comunidade open source e serve como base para o produto Red Hat Enterprise Virtualization (RHEV). Pode-se fazer um paralelo entre o Fedora, que é a versão upstream da distribuição RHEL, com o oVirt, também upstream, e o RHEV.


Termos Técnicos

Segue abaixo um resumo dos termos técnicos empregados nesse artigo:

  • Máquina Virtual (VM): no contexto desse artigo, aborda-se a máquina virtual de sistema capaz de rodar um sistema operacional completo. No caso do KVM as arquiteturas do guest e do host são as mesmas. Para maiores detalhes a respeito da taxonomia de máquinas virtuais, consulte o livro Virtual Machines .
  • Host: máquina real cujos recursos de hardware são compartilhados entre as máquinas virtuais guest.
  • Guest: são instâncias de máquinas virtuais que rodam na máquina host com o auxilio do hypervisor e VMM
  • Virtual Machine Monitor (VMM): alguns autores tratam os termos VMM e hypervisor como sinônimos, entretanto há outros que fazem uma diferenciação. Para os últimos, VMM é o componente responsável por prover a abstração do hardware, e cada VM precisa de seu próprio VMM.
  • Hypervisor: controla os recursos de hardware do host e o escalonamento de máquinas virtuais. Nesse sentido ele é muito semelhante a um sistema operacional específico para só rodar VMs. É justamente por isso que em alguns casos utiliza-se um sistema operacional tradicional em seu lugar.

Arquitetura do oVirt

Para uma melhor compreensão do oVirt, sua arquitetura será abordada ressaltando-se a comunicação entre seus diversos componentes. Sendo uma solução de gerência de virtualização, ele deve lidar com vários componentes de base do datacenter como máquinas físicas e storage assim como as máquinas virtuais. Isso requer uma pilha elaborada de software, por esta razão o oVirt divide as responsabilidades entre várias camadas.

Começando pelo nível mais baixo, o host, ele necessita de uma pilha de software para oferecer recursos básicos de virtualização como gerenciamento da memória dos guests e compartilhamento de I/O. Essa camada de software é conhecida como hypervisor. Pode-se criar um hypervisor especificamente para uma plataforma de virtualização ou pode-se tirar proveito de um sistema operacional existente já que ele provê muitas das funcionalidades necessárias. No caso do oVirt, ele usa um sistema operacional Linux como base. Nesse sistema de base, ainda é necessário um conjunto de software que vai de fato executar a máquina virtual chamado Virtual Machine Monitor (VMM). O VMM é uma combinação do KVM, um módulo de kernel que tira proveito do suporte a virtualização em hardware do processador, e o Qemu que é uma máquina virtual completa que emula dispositivos de I/O além de prover tradução dinâmica de binários em caso do processador não suportar KVM.

Figura 1. Componentes base do host

Agora podemos rodar uma VM da forma mais simples possível e em um único host. Entretanto há ainda outros recursos no host que gostaríamos de controlar e, ademais, gostaríamos de lidar com o ciclo de vida de uma VM (criação, destruição, pausa) de uma forma mais alto nível. Além disso, como é corriqueiro em datacenters, grande volumes da dados são armazenados separadamente em storages que podem ser de vários tipos (ex: iSCSI e FC). Na arquitetura do oVirt, os discos das VMs têm que ser armazenados em um storage controlado por ele. Sendo assim, a parte de gerência de storage é fundamental para o datacenter virtualizado. Tendo esses dois pontos em mente, o oVirt optou por criar um pilha de software chamada Virtual Desktop and Server Manager (VDSM). O VDSM é majoritariamente responsável por gerenciar o storage e o ciclo de vida das VMs. Para o gerenciamento das VMs, ele optou por usar a libvirt, que é uma biblioteca capaz de interagir com múltiplas soluções de virtualização de uma forma padronizada e ainda lidar com outros recursos como rede.

Figura 2. Host gerenciado pelo VDSM

Cada host que rodará uma máquina virtual no oVirt deve ter o VDSM instalado. Todas essas funcionalidades não podem ficar restritas ao ambiente de um único host, por isso o VDSM também age como um servidor expondo as funcionalidades a um potencial nó de gerência.

O VDSM provê os mecanismos para cada host individualmente, porém é necessário um nó central para coordenar tudo, estabelecendo políticas e tomando ações automatizadas. Esse nó de gerência é conhecido como oVirt Engine, ou simplesmente Engine. Ele é a inteligência e a memória do datacenter. Informações de que VM está rodando em qual host, qual o estado de cada VM, de cada storage, isso tudo está armazenado em sua base de dados. Para executar suas ações automáticas ou manter o estado do datacenter, o Engine faz chamadas à API do VDSM nos hosts.

Figura 3. Componentes da solução oVirt


Instalação

Explicaremos agora a instalação do oVirt em um sistema Fedora que é o sistema de referência da comunidade. Por ser o sistema de referência, há vários pacotes rpm que facilitam bastante a instalação.

Instalando o Engine: nó de gerência

O primeiro passo para instalar o Engine é configurar o repositório de pacotes do oVirt.

Isso pode ser feito instalando o pacote:

rpm -i http://www.ovirt.org/releases/ovirt-release-fedora.noarch.rpm

Instalaremos agora o meta pacote ovirt-engine que depende de todos os componentes necessários à instalação do nó de gerência tais como o sistema web e a parte de backend:

yum install ovirt-engine

Com o Engine instalado, agora é necessário configurar alguns de seus parâmetros. Para isso basta rodar o script engine-setup, que fará algumas perguntas simples como o nome de domínio, tipo de storage para o primeiro datacenter, senhas para o Engine e o banco de dados postgres.

engine-setup

No caso da versão 3.1 do oVirt, existe uma pergunta que merece esclarecimento que é a respeito do ISO Domain. Trata-se de um NFS export através do qual o Engine disponibiliza imagens ISO para as VMs utilizarem. Responda não pois esse passo será realizado posteriormente.

Should the installer configure NFS share on this server to be used as an ISO Domain? 
['yes'| 'no']  [yes] : no

Se precisar realizar uma reinstalação, não se esqueça de rodar antes o script de limpeza:

engine-cleanup

Instalando o VDSM: nó host

Há duas formas de se instalar um host no oVirt.

  • Instalar o oVirt Node, que é uma distribuição mínima baseada em Fedora, especialmente criada para ser um nó host
  • Instalar os pacotes do VDSM em um hostcom Fedora já instalado

Como no primeiro caso a imagem da distribuição vem com tudo que é necessário, não detalharemos sua instalação aqui. Basicamente é como instalar um sistema normal. ISOs do oVirt Node prontas para instalação podem ser encontradas em http://resources.ovirt.org/releases/stable/iso/.

Já no caso de um sistema Fedora, é necessário instalar os pacotes do VDSM assim como configurar uma bridge usada pelo oVirt.

De forma análoga ao Engine, instale o repositório do oVirt:

rpm -i http://www.ovirt.org/releases/ovirt-release-fedora.noarch.rpm

Se estiver usando o Network Manager é necessário pará-lo e desabilitá-lo:

systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

Uma bridge de nome ovirtmgmt deve ser criada sobre a interface física que se deseja usar. Crie o arquivo '/etc/sysconfig/network-scripts/ifcfg-ovirtmgmt' com o conteúdo abaixo se desejar receber as configurações de rede via DHCP (você pode optar por uma configuração estática):

DEVICE=ovirtmgmt
TYPE=Bridge
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
NETBOOT=yes
BOOTPROTO=dhcp
ONBOOT=yes

Em seguida adicione a interface física desejada, suponha que seja a eth0, à bridge criando o arquivo '/etc/sysconfig/network-scripts/ifcfg-eth0'. Não se esqueça de modificar o endereço MAC (HWADDR) para corresponder ao da sua placa:

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
HWADDR=ff:ff:ff:ff:ff:ff
BRIDGE=ovirtmgmt
NM_CONTROLLED=no

Inicie o serviço de rede e deixe-o habilitado:

service network start
chkconfig network on

Instale os pacotes do VDSM:

yum install vdsm vdsm-cli

Habilite e reinicie o serviço do VDSM.

chkconfig vdsmd on
service vdsmd restart

Ativando host e storage

Antes de rodar uma máquina virtual, há dois passos que precisam ser feitos:

  • Adicionar o host com o VDSM ao Engine
  • Configurar o storage que armazenará o disco da VM

Para adicionar o host ao Engine, basta ir à aba de Hosts no webadmin e clicar em "new". Aparecerá um popup peguntando o nome da máquina, endereço e senha de root. É muito comum que servidores tenham algum sistema de gerência capaz de realizar operações como ligar e desligar. O oVirt é capaz de lidar com diversos tipos de Power Management tais como RSA e BladeCenter.

Outros dois parâmetros essenciais na hora de adicionar o host são o datacenter e o cluster em que o host será incluído. A escolha do datacenter determinará o tipo de storage utilizado. Além disso, o oVirt agrupa hosts com processadores compatíveis em clusters de tal forma que a live migration seja possível. Se você acabou de instalar o oVirt muito provavelmente não terá que lidar com essas escolhas agora, já que ele vem com apenas um datacenter e um cluster padrão.

Figura 4. Adicionar novo host

Vamos ao segundo passo, que é a configuração do storage. Assumiremos que ele é do tipo NFS, por se tratar de uma configuração mais simples.

Crie um diretório para o storage e configure corretamente o proprietário e o grupo:

mkdir -p ${caminho_para_storage}
groupadd --gid 36 kvm
useradd --uid 36 --gid 36 vdsm --no-create-home --shell /sbin/nologin
chown vdsm:kvm ${caminho_para_storage}

Edite o arquivo exports para incluir o caminho do storage:

emacs /etc/exports

Adicione uma linha em que a primeira coluna contém o caminho e a segunda o ip/máscara e a configuração (ajuste o caminho e o ip/máscara conforme sua configuração).

<caminho_para_storage> 192.168.0.1/24(rw,all_squash,anonuid=36,anongid=36)

Recarregue as configurações do /etc/exports:

service nfs restart

Agora com o storage configurado é necessário adicioná-lo ao Engine. De forma análoga a feita para o host, vá a aba Storage e clique em "New Domain". Basta escolher o datacenter ao qual o storage será adicionado e seu tipo (crie um storage do tipo Data e outro do tipo ISO). Devemos informar o export path como mostrado abaixo:

endereço:caminho_para_storage

Figura 5. Adicionar novo storage


Carregando uma ISO

Para poder instalar um sistema operacional nas máquinas virtuais vamos fazer o upload de uma imagem ISO para o ISO domain criado anteriormente. Uma vez que a imagem esteja carregada no oVirt é possível associá-la a um drive de CDROM virtual na VM, como veremos posteriormente.

Para enviar uma ISO ao oVirt, você pode copiar o arquivo ISO diretamente para o NFS export configurado para o ISO domain, ou usar o utilitário do pacote ovirt-iso-uploader. A vantagem de utilizar o pacote é que você pode enviar a imagem ISO a partir de qualquer sistema Fedora. Para isso, instale o pacote e crie o usuário vdsm no sistema:

yum -y install ovirt-iso-uploader
groupadd --gid 36 kvm
useradd --uid 36 --gid 36 vdsm --no-create-home --shell /sbin/nologin

Em seguida, execute o comando engine-iso-uploader informando o nome do ISO domain, o usuário para autenticação, o endereço do Engine, e o caminho no sistema de arquivos onde se encontra a ISO que será enviada:

engine-iso-uploader --iso-domain=Iso_NFS --user=admin@internal \
--engine=endereço_ovirt_engine upload Fedora-17-x86_64-Live-Desktop.iso

Informe a senha do usuário admin e aguarde pelo upload do arquivo. Para verificar se o mesmo está disponível, vá até a interface de gerenciamento do Engine, selecione a aba Storage, depois o ISO domain correspondente (Iso_NFS neste exemplo). Na parte inferior, selecione a aba Images. A imagem recém carregada deve estar listada.

Figura 6. Lista de imagens ISO

Clique aqui para ver a figura ampliada

Rodando uma VM

Estamos com a infraestrutura preparada para provisionar uma VM. Basta ir a aba "Virtual Machines" e criar seu servidor ou desktop. Por ser bem estruturada, a interface do oVirt é bem clara e de fácil uso.

Figura 7. Adicionar nova VM

Na aba General, informe o nome, uma descrição opcional, quantidade de memória RAM e número de processadores disponíveis. Para instalarmos um sistema na VM, vamos ativar um drive de CDROM virtual utilizando a imagem ISO carregada anteriormente. Para isso, vá até a aba Boot Options. Em seguida, selecione a opção Attach CD e o nome do arquivo. Marque o segundo boot device como CDROM para que a VM faça o boot a partir do CDROM e o instalador da distro possa ser iniciado. Clique em OK quando pronto.

Figura 8. Ativar CDROM virtual

A VM está quase pronta para uso. É necessário adicionar um disco virtual no qual o sistema será instalado. Para isso, na aba de Virtual Machines escolha na parte inferior a aba Virtual Disks e clique em Add. Especifique um tamanho para o disco (20GB é suficiente) e na opção Format, escolha Thin Provision, que permite um melhor uso de espaço no storage. Clique OK e sua VM está pronta para ser ativada.

Selecione a VM a partir da lista de VMs e clique no ícone de ativação, conforme indicado na figura abaixo.

Figura 9. Botão ativar VM

Clique aqui para ver a figura ampliada

Para ter acesso ao console da VM, você precisa ter o plugin Spice para o navegador Firefox instalado (em sistemas Fedora, trata-se do pacote spice-xpi). Uma vez que a VM esteja ativa, o ícone de console ficará disponível. Clique sobre ele e o client Spice abrirá uma janela com acesso à VM.

Figura 10. Botão console da VM

Clique aqui para ver a figura ampliada

A partir desse ponto, é como trabalhar com uma máquina física. Proceda com a instalação normalmente.

Conclusão

O oVirt é um projeto de código aberto de gerência de virtualização capaz de alavancar a flexibilidade de alocação assim como maximizar a utilização de recursos dentro do datacenter. Além disso, quando o número de máquinas tanto físicas quanto virtuais aumenta, a gerência do datacenter virtualizado torna-se quase impraticável sem a ajuda de uma pilha sofisticada de software sendo o oVirt uma ótima alternativa suportada pela comunidade.

Referências

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=932959
ArticleTitle=Introdução ao oVirt
publish-date=06112013