Teletransporte no VirtualBox

teleport_1-VirtualBox

Seguindo com a promessa de apresentar os recursos que a interface gráfica do VirtualBox finge não existir* que é o live migration, ou teletransporte, de máquinas virtuais. E no caso específico dele está presente desde a versão 3.1.0 que data do segundo semestre de 2009.

Aj, já que precisava apagar algumas máquinas virtuais que estavam no MacBook, aproveitei para brigar com o Grab e capturar as telas diretamente nele. 🙂

Mas o que é teletransporte?

O nome deste recurso é live migration e ele consiste na capacidade de transferir uma máquina virtual de um hospedeiro para outro sem a necessidade de desligamento da mesma. Ou seja, você trocar uma máquina virtual de hospedeiro sem a interrupção do serviço que ela oferece e, consequentemente, sem que seus usuários percebam que isto aconteceu.

Ele é suportado com este nome por  gerenciadores como Hyper-V, KVM e Xen e por um “apelido” no vSphere (chamado de vMotion) e no VirtualBox (onde é o Teleporting).

Alguns detalhes a observar

No caso do VirtualBox há alguma limitação e alguns detalhes devem ser considerados para o teletransporte:

  1. A máquina virtual não deve possuir instantâneos;
  2. As máquinas virtuais de origem e de destino devem ter mesma configuração e
  3. As máquinas virtuais devem compartilhar o armazenamento.

Os dois primeiros até são fáceis de compreender mas e sobre esta coisa de mesmo armazenamento?

Sendo bem direto: “devem usar a mesma imagem de disco”. Considere um ambiente em que os hipervisores (e suas máquinas virtuais) utilizam um mesmo repositório na rede (via CIFS, iSCSI, NFS etc) para guardar os arquivos, imagens de disco usadas pelas máquinas virtuais inclusive.

Diga-se de passagem o VirtualBox não irá reclamar ou interromper o processo caso elas não sejam a mesma. Executará o teletransporte tranquilamente mas rapidamente você saberá que alguma coisa deu errado! 🙂

Preparando um exemplo

Para exemplificar vou fazer um teletransporte dentro do mesmo host (sem paciência pra configurar NFS, SFTP ou coisas do gênero agora) usando uma máquina virtual de origem, a “Ubuntu_64”, e fazendo uma cópia dela para ser a de destino, a “Ubuntu_64 Clone” e colocando nas duas a mesma imagem de disco.

Isto dá pra fazer pelo gerenciador:

teleport_2-storage

Mas para ilustrar melhor como elas foram configuradas:

$ vbinfo Ubuntu_64 | grep vdi
SATA (0, 0): /Users/giovanni/VirtualBox VMs/Ubuntu_64/Ubuntu_64.vdi 
(UUID: 5cd8a7fc-65b0-4faf-820c-4ea4f5b48de8)
$ vbinfo Ubuntu_64\ Clone | grep vdi
SATA (0, 0): /Users/giovanni/VirtualBox VMs/Ubuntu_64/Ubuntu_64.vdi 
(UUID: 5cd8a7fc-65b0-4faf-820c-4ea4f5b48de8)

Sim, este tipo de configuração é permitida no VirtualBox.

Um pra subir!

O procedimento é bem simples, habilite uma máquina virtual para receber o conteúdo de uma outra via teletransporte usando:

$ VBoxManage modifyvm «máquina virtual» \
  --teleporter on \
  --teleporterport «porta TCP» \
  --teleporterpassword «senha»

Obviamente que quebrei a linha para deixá-la mais legível, o primeiro campo é o nome da máquina virtual ou seu UUID, a porta TCP é a porta na qual a máquina virtual de origem conectará — preciso recomendar que seja acima de 1024 e não utilizada por um serviço em execução? Por último a senha, é simplesmente a senha que será usada autenticar o teletransporte.

Se por um acaso indicar a máquina virtual errada, ou apenas mudar de ideia, desfaça a ação com:

$ VBoxManage modifyvm «máquina virtual» --teleporter off

Sem mais enrolação, “um pra subir”:

$ VBoxManage modifyvm Ubuntu_64\ Clone --teleporter on
  --teleporterport 64000 --teleporterpassword ubuntu64

Eu usei a porta 64000 e a senha super original “ubuntu64”. Ao iniciar esta máquina virtual ela simplesmente ficará aguardando o teletransporte.

Energizando

Neste instante a situação é a seguinte, máquina virtual de origem, a “Ubuntu_64”, está em execução enquanto que a de destinho, a “Ubuntu_64 Clone”, aguarda faz 4 minutos o início do teletransporte:

teleport_3-esperando

Sendo assim basta iniciar o processo com o comando:

$ VBoxManage controlvm "Ubuntu_64" teleport --host 127.0.0.1
--port 64000 --password ubuntu64
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

E pressionar «Enter» para “energizar”! 🙂

Não é como na televisão, não há o som e nem efeito especial mas quando o indicador alcançar 100% a máquina virtual “Ubuntu_64” será terminada e desaparecerá da tela e seu conteúdo aparecerá na janela da “Ubuntu_64 Clone”:

teleport_4-teleportada

Basta comparar o conteúdo das janelas para ver que pouca coisa mudou no conteúdo do htop, a transferência é rápida pois envolve somente o “estado” da máquina virtual.

O mais crítico em tamanho, o “disco rígido”, já é igual em ambos os lados.

Terminando

Já que tudo ocorreu bem no teletransporte basta finalizá-lo com:

$ VBoxManage modifyvm Ubuntu_64\ Clone --teleporter off

Senão, ela voltará a aguardar por um teletransporte da próxima vez que for ligada.

Sei que este é um exemplo bem simples, aliás igual a vários que estão disponíveis pela Internet, apenas descrevei um pouco mais. Porém é suficiente para demonstrar como funciona deste recurso literalmente desconhecido dentro do VirtualBox.

Anúncios

3 comentários sobre “Teletransporte no VirtualBox

  1. Pingback: Teletransporte no VirtualBox - Peguei do

  2. Pingback: Teletransporte em ação | giovannireisnunes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s