Migração de Máquina Virtual do Citrix XenServer para ProxMox

citrix-proxmox

INTRODUÇÃO

Pretendo abordar nesse tutorial a migração das máquinas virtuais do Citrix XenServer para o ProxMox. Por mais que a versão 6.2 do Citrix XenServer tenha se tornado 100% opensource, nunca fiquei 100% satisfeito com o XenCenter (ferramenta de gerenciamento do Citrix XenServer) ser disponibilizado apenas para Windows. Com isso,  fui obrigado a ter uma máquina virtual com Windows apenas para gerenciar os servidores Citrix Xen. Assim, surgiu o interesse em migrar para o KVM (Kernel-based Virtual Machine) que possui várias ferramentas de gerenciamento. Por considerar mais prática e intuitiva, a escolha feita foi pelo ProxMox VE.

 

EXPORTANDO A VM DO XENSERVER

É inegável que  XenCenter seja muito intuitivo. Mas na maioria das vezes, o procedimento de exportação de VM (Menu: VM>Export) não funciona corretamente:
citrix-export-error

A solução para contornar esse tipo de problema é a utilização do aplicativo xe.exe através do Prompt de Comando do Windows. Então:

1. Abra o Prompt de Comando do Windows;

2. Entre no diretório

C:\Users\geowany> cd "C:\Program Files (x86)\Citrix\XenCenter"

3. Importe a VM do servidor XenServer diretamente para uma unidade de armazenamento da máquina que está a executar o XenCenter com a seguinte sintaxe:

C:\Program Files (x86)\Citrix\XenCenter> xe.exe -s <XENSERVER HOST> -u root -pw "<SENHA>" vm-export vm="<NOME DA VM> filename="<CAMINHO\ARQUIVO.xva>"

4. Transferir o arquivo XVA para o servidor ProxMox (pode ser utilizado o Filezilla por exemplo).

 

CONVERTENDO A IMAGEM

O formato xva é uma especificidade da plataforma Citrix e consiste em ser um empacotamento tar contendo metadados da VM e seus blocos de disco. Como exemplo, temos a seguinte estrutura:

# tar -tvf prod-icinga.xva
---------- 0/0           30254 1969-12-31 19:00 ova.xml
---------- 0/0         1048576 1969-12-31 19:00 Ref:4/00000000
---------- 0/0              40 1969-12-31 19:00 Ref:4/00000000.checksum
---------- 0/0         1048576 1969-12-31 19:00 Ref:4/00000001
---------- 0/0              40 1969-12-31 19:00 Ref:4/00000001.checksum
---------- 0/0         1048576 1969-12-31 19:00 Ref:4/00000002
---------- 0/0              40 1969-12-31 19:00 Ref:4/00000002.checksum
---------- 0/0         1048576 1969-12-31 19:00 Ref:4/00000003
---------- 0/0              40 1969-12-31 19:00 Ref:4/00000003.checksum
---------- 0/0         1048576 1969-12-31 19:00 Ref:4/00000004

...

O arquivo ova.xml possui uma série de informações, uma por objeto na base de dados xapi. Os objetos são vinculados com referências (Ref:xxx). Os dados do disco são armazenados em partes sequenciais  com tamanho arbitrário, mas o tamanho comum é 1MiB. Para que possamos importar a VM no ProxMox, devemos converter os dados do disco através de um script em python. Dessa forma:

1. Descompacte a imagem:

# tar -xvf arquivo.xva

2. Portanto, baixe o script:

# wget http://nerdier.co.uk/xenmigrate.py

3. Converta o diretório para gerar a imagem do disco em formato raw:

# python xenmigrate.py -c Ref\:4/ disk.img

4. Converta a imagem de disco do formato raw para o formato qcow2:

# qemu-img convert disk.img -O qcow2 disk.qcow2

IMPORTANDO A VM PARA O PROXMOX

Agora que possuímos a imagem do disco em formato qcow2, podemos criar uma nova máquina virtual por meio da interface web do ProxMox. Mas atente-se para não iniciar a máquina ainda. Antes disso, substitua a imagem de disco criada pela imagem convertida:

# cp disk.img /var/lib/vz/images/<VMID>/vm-<ID>-disk-1.qcow2

Finalmente podemos iniciar a máquina!

AJUSTES NA VM
Pode ser que ocorra um problema que impede a inicialização da VM. No meu caso, aconteceu com a distribuição Debian versão 7 que foi criada no XenCenter através de template para a respectiva distribuição e versão. Para resolver o problema, basta:

1. Iniciar a VM e apertar “e” durante o boot para que possamos editar as opções do grub;

2. Na linha “linux”, remover a opção “console=hvc0” e iniciar o sistema apertando F10:
proxmox-fix-grub-debian

3. Logar na VM e editar o arquivo do grub removendo a opção “console=hvc0”:

# vim /etc/default/grub
GRUB_CMDLINE_LINUX=""

4. Atualizar o grub:

# update-grub2

5. Editar o arquivo inittab comentando a linha iniciada por “co”:

# vim /etc/inittab

6. Rebootar a VM:

# reboot

Repita os passos acima com as outras 40 VMs restantes. 😀

REFERÊNCIAS:

Convert .xva to .qcow2 (or raw)

Xen Project – Proposal: Disk import/export

Geowany Galdino escreveu 44 artigos

Assistente em Tecnologia da Informação na Universidade Federal do Acre. Licenciado em História na mesma instituição.

8 comentários em “Migração de Máquina Virtual do Citrix XenServer para ProxMox

  1. Rener comentou:

    Olá sysadmin, blz? você ainda mantem seu ambiente com o proxmox? utiliza HA? eu estou enfrentando dificuldade para deixar meu ambiente em alta disponibilidade, pois preciso de 3 servidores e tenho apenas 2 na versão 4 do proxmox segundo o Wiki não da para fazer HA… estou pensando em mudar para o XenServer 6.5 pois vi que não precisa de 3 servidores apenas um storage com um pc normal com freenas resolveria… sua mudança foi apenas pelo fato do gerenciador ser só para windows ou teve mais algum outro diferencial em comparação com XenServer

    1. Geowany Galdino comentou:

      Beleza, Rener! Ainda mantenho o sistema com o proxmox e não pretendo mudar. Cheguei a testar o HA com apenas dois nodes no proxmox mas desisti porque eu enfrentei problemas internos com a rede que deixavam a sincronização do DRDB extremamente lenta. Mas esse problema era rede mesmo, nada a ver com o proxmox que está funcionando muito bem aqui. Na época eu segui essa documentação que instrui a fazer um DRDB entre os dois nodes: https://pve.proxmox.com/wiki/Two-Node_High_Availability_Cluster . Já tentou isso?

      Quanto ao fato de eu ter migrado do Citrix XenServer para o Proxmox não foi apenas por ser obrigado gerenciar só pelo Windows, mas pela vantagem de o proxmox ser apenas um gerenciamento web do KVM (e de quebra do OpenVZ) sobre um Debian, distribuição que usei por longos anos e sei como me virar nela. Usei o Citrix XenServer por vários anos mas nunca me senti confortável nele por achar algumas tarefas um tanto arcanas. Prefiro o Proxmox pela sua documentação mas não me importaria de usar servidores com kvm+libvirtd gerenciados remotamente pelo Virt-Manager. Porém, ter uma interface web intuitiva torna tudo mais fácil pela possibilidade de delegar tarefas para outros membros da equipe.

    1. Paulo comentou:

      Cara show! vlw pela contribuição, sou debian na alma e no coração… mais tambem venho tendo um certo desconforto quanto ao Xenserver da Citrix. antes fazia minha vm direto no XEN do Debian. migrei para Xenserver da Citrix, por causa da melhor peformance e a ferramenta gerenciadora manager.
      agora conhecendo o Proxmox, ser debian ta me deixando feliz… queria saber se vc ja virutalizou um pfsense, e como ele esta rodando de boa?

      1. Geowany Galdino comentou:

        Já virtualizei o pfsense mas não consegui fazer a placa de rede da vm usar tudo da placa de rede do host. Ficava gargalando 100Mbps mesmo a eth do host sendo 1Gbps. Coloquei pra usar VIRTIO mas não deu certo. Acredito que precisa de mais alguns ajustes mas não tive tempo/paciência para testar.

  2. OYAMA BAHIA DA SILVA comentou:

    Muito bom, estou pretendendo migrar meu xenserver por dificuldade que tenho em fazer backup e agora tive problema em algumas vm que deu problema no repositório, alguns estão duplicados e o espaço ocupado e bem maior que o que tenho no storage. fora que algumas vms nao iniciaram por nao achar o repositório. Vou precisar de uma consultoria me mande seu contato oyamabahia@gmail.com

Deixe um comentário

Seu endereço de email não será publicado. Os campos com * são obrigatórios

Você pode usar estes tags e atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>