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:
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:
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. ?