Migração de Máquina Virtual do Citrix XenServer para 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. ?

Rolar para cima