h1

Storage XenMotion

20/09/2012

As próximas versões do XCP e do XenServer será possível migrar maquinas virtuais em pools diferentes e sem necessidade de storage compartilhado. Esta feature estará disponível a partir do XenServer 6.1 e XCP 1.6, ambos ainda não lançados. 

Tipos de migração

Será possível utilizar as seguintes configurações para viabilizar a migração de maquinas virtuais entre pools no XenServer e no XCP:

  • VMs armazenadas em storage compartilhado como NFS
  • VMs armazenadas em storage local, ou seja, no disco rígido do servidor físico

O conceito de pool será mantido embora não será mais necessário caso se deseje. Para obter melhor performance durante a migração da VM, a utilização de pool e storage compartilhado será mais eficiente pois não será necessário a cópia dos blocos de dados do VHD da VM. 

Características do Block Migration

  • Os disco são replicados entre os dois sites (SRs) utilizando um serviço dedicado à replicação de blocos que sabe da estrutura do disco em questão, no caso de .VHD, ele utiliza as informações já existentes no destino para acelerar a cópia.
  • O mirror é feito de maneira síncrona utilizando o plugin tapdisk mirror, o mesmo utilizado pelo sistema de local-cache.
  • Os metadados da VM a nível de pool são exportados/importados através da xapi.
  • Os metadados da VM a nível de domínio são exportados/importados através do xenopsd
  • Este processo está bem documentado neste wiki http://wiki.xen.org/wiki/CrossPoolMigrationv3

Vantagens

A arquitetura proposta apresenta as seguintes vantagens:

  • É separada a ação de espelhamento do disco da ação de cópia das páginas da memória de uma VM em execução. Neste ponto, não foi necessário alterar o libxenguest para prover o mecanismo. – Cada mecanismo tem sua responsabilidade sendo um responsável pelo gerenciamento de armazenamento e outro pelas maquinas virtuais em execução.
  • Criando um mecanismo síncrono de espelhamento, não aumenta o downtime da migração.
  • É possível utilizar o mesmo mecanismo para fazer backup/restore de maneira eficiente sem parar os serviços fazendo VM snapshot periódicos e armazenando arquivos incrementais para a tarefa, economizando assim espaço em disco para o processo de backup.

Previsão de lançamento

Como disse no inicio deste artigo, estas features estarão disponíveis no XenServer 6.1 e XCP 1.6. Existe uma preocupação por parte da da Xen.org e Citrix para alinhar o lançamento conjunto de ambos para que o suporte à falhas sejam mais eficientes e ataque ambas as soluções.

Referências:

h1

Utilizando plugins na XenAPI

19/09/2012

A XenAPI tem me surpeendido com algumas features embutidas. Recentemente precisei fazer uma chamada para gerenciar um usuário PAM/unix que é utilizado pelo sistema orquestra da globo.com como usuário da API. Anteriormente, foi elaborado uma abordagem onde, através de uma conexão ssh utilizando o modulo python pexpect para fazer a interação com o shell para a troca da senha do usuário. Vamos lá, a abordagem do ssh não é elegante mas realmente funcionava. Ficou assim por um bom tempo até que, aprendendo com o código do OpenStack, percebi uma abordagem bacana com a utilização do metodo call_plugin() da classe host da XenAPI.

Por onde começar?

O diretório /etc/xapi.d/plugins do XCP ou do XenServer é o local onde ficam os plugins. Estes plugins deverão ser necessariamente escritos em python e devem seguir o exemplo do plugin echo a seguir:


#!/usr/bin/env python
# Simple XenAPI plugin
import XenAPIPlugin, time
def main(session, args):
    if args.has_key("sleep"):
        secs = int(args["sleep"])
        time.sleep(secs)
    return "args were: %s" % (repr(args))
if __name__ == "__main__":
    XenAPIPlugin.dispatch({"main": main})

Do lado do cliente, deverá ser utilizado o metodo host.call_plugin() passando os argumentos necessário para chamar o plugin através da XenAPI.


#!/usr/bin/env python
import XenAPI
session = XenAPI.Session('http://localhost')
session.xenapi.login_with_password('root', 'ChangeMe')
pool = session.xenapi.pool.get_all()[0]
master = session.xenapi.pool.get_master(pool)
args = {}
args["arg1"] = "estes são os valores de arg1"
args["arg2"] = "estes são os valores de arg2"
hosts = session.xenapi.host.get_all()
for host in hosts:
    session.xenapi.host.call_plugin(host, "echo", "main", args)

No exemplo acima, args é declarado no formato de dicionário, que é o tipo suportado pela lib XenAPIPlugin e, como mostrado no código do plugin, os valores são retornados.

Referências:

http://xen.org/files/XenCloud/ocamldoc/apidoc.html?c=host

h1

Xen 4.0 – Lançamento mais que esperado

14/04/2010

Conforme noticiado pela Citrix, o hypervisor Xen chega à versão 4 com features avançadas e ha muito esperadas. É bom resaltar que, em termos comparativos à outros players de virtualização, seja de código aberto ou comercial, o Xen continua liderando com larga vantagem em quesitos de utilização dos recursos computacionais.

Abaixo listo e comento cada nova característica do Xen 4.0:

Melhor desempenho e escalabilidade
Suporte à 128 vCPUs por guest e suporte à até 128 CPUs e 1TB de memória por servidor físico.

Suporte à blktap2 para imagens VHD (Virtual Hard Disk)
O blktap2 é o sucessor do blktap1, um driver de backend para discos. O blktap2 permite alto desempenho para criação de snapshots e clones de VHD.

Melhora do IOMMU PCI passthru
Melhor utilização de aceleração de dispositivos de I/O em técnicas de virtualização (Intel VT-d e AMD IOMMU).

Suporte para passthru do dispositivo VGA primário
Permite à um guest HV (hadware Virtualization) utilizar diretamente a GPU do dispositivo VGA  obtendo assim altissimo desempenho para aceleração 3D.

TMEM
Melhor utilização da memória de guest PV (ParaVirtualization) como por exemplo o cache

Compartilhamento de pagina de memória
Permite para guests HV o compartilhamento de paginas de memória onde a página contenha o mesmo dado. Só para exemplificar, o Windows quando no momento do boot escreve zero em toda a memória restante e assim, caso exista um ou mais guests no mesmo servidor físico, todas as páginas iguais a zero ocupariam somente uma página e não (n). Isso serve também para guest HV Linux e qualquer página do guest HV que sejam idênticas. Como resultado, a economia de memória pode-se chegar à casa dos 30%.

Host Dom0 com pvops
Jeremy Fitzhardinge tem feito um grande trabalho desde o kernel 2.6.23 onde foi adicionado suporte para guests Xen utilizando pvops. Com o lançamento do Xen 4.0, o pvops passa também a ser utilizado pelo host dom0 sincronizando a versão do kernel (2.6.32) com os lançamentos de diversas distribuições como Suse, Debian, Ubuntu e Redhat/CentOS.

Netchannel2
Melhora a utilização da rede reduzindo o consumo de CPU deixando mais inteligente o tratamento de RX/TX no anel de I/O, suporte a multiplas filas e funcionalidades de SR-IOV.

Redimencionamento de disco
Suporte à dimencionamento de disco sem necessidade de reiniciar o guest. O Windows já tem nativamente a capacidade de detecção de alteração do tamanho do dispositivo de blocos. Nick Couchman recentemente postou alguns patches para que o Linux também tenha esta feature.

Tolerancia a falhas
O projeto Remus foi incorporado ao Xen 4.0. O Remus permite, quando o dispositivo de blocos é remoto, manter uma cópia exata do guest em outros hosts Xen remotos mantendo uma cópia transacional sincronizada de seu estado. Caso o hardware do host Xen no qual está o guest principal sofra algum problema, uma copia do guest é acionada reduzindo assim o downtime dos serviços providos pelo guest.

RAS
Hotplug de memória e CPU sem necessidade de reinicialização do guest.

Libxenlight
Uma nova biblioteca C de controle de alto nível do Xen que pode ser compartilhada entre varias ferramentas de gerenciamento Xen.

PV-USB
USB passthru paravirtualizado de alto desempenho tanto para HVM quanto para PVM com suporte à dispositivos USB 2.0.

gdbsx
Debug para arquivos guests ELF.

Suporte para Windows PV drivers
Drivers Paravirtualizados Windows WHQL-certified sendo os mesmos utilizados no XCP

Melhorias do pygrub
Suporte à grub2, sistema de arquivo ext4, compressão bzip2 e lzma para bzImages.

Este é sem dúvida um grande salto no aspecto de desempenho e novas funcionalidades do Xen. Em breve está aclopado ao XCP com funcionalidades interessantes incluidas na XenAPI toolstack.

h1

Xen Cloud Platform: Sistema Avançado para Infraestrutura de Virtualização em Nuvens

03/11/2009

Como anunciado recentemente na SearchCloudComputing.com [1], hoje o projeto xen.org anunciou [2] a nova plataforma de Cloud Computing Xen Cloud Plataform ou simplesmente XCP. Segundo Simon Crosby [3], Citrix Systems chief technology officer e fundador da XenSource, A Citrix decidiu abrir os fontes do XenServer Free como parte de seu novo projeto “Xen Cloud”. Toda a tecnologia existente no XenServer Free passará agora a fazer parte do XCP com funcionalidades como pooling, mecanismos de criação de VLANs e bonding, processos automatizados para criação de VMs, drivers paravirt homologados pela Microsoft entre tantos outros recursos de gerenciamento de cloud. A principal tecnologia, e a que a maioria dos Cloud providers tem interesse, a
XAPI Toolstack, está licenciada sob LGPL v2.1. O hypervisor será o 3.4.1 e o kernel do dom0 o 2.6.27.

No site do projeto [4] existe tudo que é necessário para fazer o deploy desde o iso para instalação do novo dom0 até manuais para instalação e gerenciamento da infraestrutura. Ainda é possível personalizar o kernel e outros itens utilizando uma VM para DDK com todas as dependências resolvidas.

[1] http://searchcloudcomputing.techtarget.com/news/article/0,289142,sid201_gci1366691,00.html
[2] http://blog.xen.org/index.php/2009/11/03/xen-org-announces-availability-of-xen-cloud-platform-0-1/
[3] http://searchservervirtualization.techtarget.com/generic/0,295582,sid94_gci1372388,00.html
[4] http://www.xen.org/products/cloud_source.html