Neste artigo, vamos demonstrar como migrar VMs (maquinas virtuais) do Citrix Xen server para o Proxmox. O Xenserver da Citrix é um moderno ambiente de gerenciamento de maquinas virtuais; ele é muito utilizado por pequenas, médias e grandes empresas a bastante tempo, tanto por sua robustez como pela facilidade de uso. Grande parte de suas funcionalidades eram gratuitas, pelo menos até o fim de 2017, quando a Citrix restringiu na versão free do produto, algumas funcionalidades bem importantes, como o uso de Alta Disponibilidade e o tamanho máximo do Pool para no máximo 3 Hosts. O detalhamento destas restrições podem ser vistos no blog da Citrix, neste link:
Não trabalho a algum tempo com esta ferramenta, na época ela ainda estava na versão 6. Não me agradava a ideia de ter que gerenciar os nós de virtualização através de uma aplicação que somente rodava no Windows (O XenCenter) e também existia uma limitação grande de hardware suportado para o produto, na época. Procurei uma alternativa e encontrei o Proxmox. Utilizo o Proxmox desde a versão 3 e atualmente (no momento que escrevo este post) ele está na versão 5.2.
O Proxmox é um ambiente de gerenciamento de maquinas virtuais e também containers. Usa como sistema Operacional o Debian e traz consigo todo o grande leque de suporte de hardware da distribuiçao. Suporta inúmeros tipos de storages inclusive o avançado e moderno Ceph; trabalha com clusters e com alta disponibilidade (com no mínimo 3 nós) tem uma boa documentação além de cursos em portguês. Isso inclui o curso que eu elaborei da ferramenta disponível aqui. Por fim o Proxmox trabalha utilizando de fundo o Qemu/KVM, que é um módulo muito conceituado de virtualização.
Notei que devido as restrições impostas pela Citrix ao final de 2017, muitas pessoas estão buscando a migração de seu ambiente para ferramentas que tenham recursos similares ao Citrix XenServer porém sem limitações. Caso sua escolha tenha sido pelo Proxmox, espero contribuir de algum modo, demonstrando como fazer a migração de uma maquina virtual Windows e outra Linux do Xenserver para o Proxmox.
Além da explicação abaixo, criamos um tutorial/vídeo, mostrando na prática como fazer.
Pré requisitos:
Você deve antes de migrar a maquina virtual, remover os snapshots e qualquer programa de guest instalado. Estes programas são aqueles da propria Citrix para aprimorar o desempenho da maquina virtual, utilizando drivers específicos.
A lógica em torno da migração:
Não é a maquina virtual em si que é migrada, mas apenas o seu disco virtual, ou seja, antes de migrar, você deve criar no Proxmox uma maquina virtual com as mesmas características da presente no Citrix XenServer. O disco virtual migrado vai sobrepor o disco virtual criado automaticamente durante a criação da VM no Proxmox.
Capturando o disco virtual da VM no XenServer:
O disco virtual da maquina virtual no Xen deve ser exportado para um arquivo do tipo VHD. Na minha instalação do Xen, o storage utilizado foi do tipo LVM, então a unidade de volume lógico pertencente a VM que deve ser exportado.
Para identificar qual o caminho da unidade lógica, você deve usar o comando:
# xe vdi-list
e depois o comando
# lvdisplay
Você deve comparar o campo uuid pertencente a VM da saida do comando 'xe', com o campo LV Name da saída do comando lvdisplay. Ao encontrar um que seja igual, você pode conferir o tamanho do disco. O campo LV Path indica o caminho da unidade de volume lógico.
Descoberto o caminho do disco de sua maquina virtual na qual quer fazer a exportação do disco, hora de ativar a unidade e fazer a exportação. (COM A VM DESLIGADA)
Para ativar o volume:
# lvchange -ay /dev/CAMINHO_DESCOBERTO_NO_COMANDO_ANTERIOR
Para exporta-lo para um arquivo local:
# dd if=/dev/CAMINHO_DESCOBERTO_NO_COMANDO_ANTERIOR of=/tmp/HardDisk_NOMEDAVM.vhd
Feita a exportação, você deve copiar o disco virtual para o servidor Proxmox. Você pode fazer isso utilizando o comando scp por exemplo, ou fazer de outra forma.
Você pode fazer estas etapas de exportação do disco, compactação e transferência, a partir de um comando apenas. Fique livre para utiliza-lo.
# dd if=/dev/CAMINHO_DESCOBERTO_NO_COMANDO_ANTERIOR | gzip -c | ssh root@IP_PROXMOX dd of=/DIRETORIO_DESTINO_PROMOX/HardDisk_NOMEDAVM.vhd.gz
Já no servidor Proxmox, com a VM com os mesmos recursos que a original criada o ID dela deve ser anotado, no caso de VMs Windows, no tipo de disco, esccolha o tipo IDE, tive problema ao utilizar discos migrados utilizando o tipo SATA.
Ainda no servidor Proxmox, você vai primeiro converter o tipo do disco virtual de VHD para RAW com o comando abaixo, (mas primeiro não esqueça de descompactar o arquivo caso o tenha compactado para transferência, com o comando gunzip):
Tenha em mente que aquele 301, é um ID da VM que eu criei, a sua vai ter outro ID.
# qemu-img convert ./HardDisk_NOMEDAVM.vhd -O raw ./vm-301-disk-1.raw
Agora você tem o disco migrado em um formato reconhecido pelo Proxmox. O que você vai fazer com este arquivo, depende do tipo de storage que tem disponível. Vamos trabalhar com dois tipos, o tipo local e o tipo LVM local. Aqui caberia uma explicação mais detalhada sobre os tipos de storages no Proxmox mas isso é um assunto bem grande e não entra no escopo da migração. De forma bem resumida, os storages locais permitem discos virtuais em formato de arquivo, assim como aquele que acabamos de criar, o .raw, também permite arquivos do tipo qcow2 e outros. Os storages locais LVM, são similiares ao storage local XenServer e armazenam os discos virtuais em unidades lógicas LVM. Também existe o tipo zfs que segue a mesma logica do LVM.
Se você utiliza storage local LVM:
Nese caso, o arquivo migrado, que aqui chamamos de vm-301-disk-1.raw deve popular o volume lógico que ja foi criado quando você criou a VM no Proxmox.
Primeiro, identifique qual o caminho do volume lógico através do comando:
# lvdisplay
Diferente do Xen, o ID da VM esta no nome do volume lógico, o que facilita a busca
Depois popule o volume lógico. Faça isso com o comando (Claro que você deve trocar o ?ID? e ? pelo nome correto da unidade lógica pesquisada no comado anterior.):
# dd if=/caminho_do_arquivo_raw/vm-301-disk-1.raw of=/dev/StorageLVM/vm-?ID?-disk-?
Pronto, agora você ja pode iniciar sua VM no Proxmox
Se você utiliza storage local, sem LVM:
Então você irá trabalhar diretamente com o arquivo .raw, nesse caso, identifique onde esta o arquivo que foi automaticamente gerado ao criar a VM. Por padrão fica em /var/lib/vz/images/ID_DA_VM/
Basta você mover o arquivo de disco virtual migrado .raw para cima do disco que foi criado automaticamente.
# mv /caminho_do_arquivo_raw/vm-301-disk-1.raw /var/lib/vz/images/ID_DA_VM/arquivo.raw
E pronto novamente, você já pode iniciar sua maqina virtual, agora no Proxmox
Observações bem importantes:
. Ao criar as VMs no Proxmox, o tamanho do disco deve ser igual ao tamanho do disco da VM no XerServer ( aba Storage do Xencenter)
. Ao criar as VMs no Proxmox, selecionando um Storage do tipo local, você deve selecionar o tipo raw, do contrário terá que converter a imagem VHD para o modelo selecionado.
. VMs com mais de um disco seguem a mesma lógica, você deve criar mais de um disco na VM do Proxmox e substuir pelos discos migrados, vindos do XenServer.
Ficou com alguma duvida ou precisa de alguma Consultoria? Entre em Contato que iremos lhe ajudar!
Referências consultadas:
https://xenserver.org/blog/entry/xenserver-7-3-changes-to-the-free-edition.html
https://techblog.jeppson.org/2018/01/migrate-xenserver-proxmox/
https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#VMware_to_Proxmox_VE_.28KVM.29
https://wiki.archlinux.org/index.php/disk_cloning
Deixe seu comentário:
Confira também:
Adequações a LGPD - Lei Geral de Proteção de Dados
Agora somos Parceiro Oficial da Proxmox
Artigo - Usando Storage Distribuído com Proxmox e Ceph.