Manter e sincronizar uma VM do VirtualBox entre dois computadores separados

13

Eu tenho uma VM do VirtualBox que possui um projeto no qual estou trabalhando. Eu gostaria de poder usar esta VM em dois computadores separados, para poder trabalhar nela onde estava naquele momento. Eu já vi respostas sobre transferência, clonagem e backup de VMs, mas nada sobre ter duas cópias e mantê-las sincronizadas.

Qual é a maneira mais fácil (menos etapas ou mais simples) ou melhor (menor risco de problemas) de manter uma única imagem de VM em vários computadores?

Idealmente, prefiro não executar a VM a partir de uma unidade USB, pois um dos dois computadores tem muito poucas portas USB, mas se for melhor, eu aceito (eu não tenho certeza se existem problemas na execução de uma VM a partir de uma unidade USB). No entanto, eu planejaria usar uma unidade USB para transferir arquivos entre computadores.

rsgoheen
fonte

Respostas:

10

Eu acho que você tem duas opções aqui: a primeira é definir (nas instalações do Virtualbox nos dois computadores) a pasta onde as VMs são armazenadas em algum tipo de disco rígido portátil ou remoto; se os computadores que você usará estiverem conectados juntos em uma rede, você poderá usar uma pasta compartilhada; caso contrário, receio que a única solução seja um pendrive USB ou um disco rígido externo. Para definir a pasta, vá para File > Preferences > General > Default Machine Folder. A velocidade da chave USB pode ser um limite para o desempenho geral.

A segunda solução, que também exige um pendrive ou algo semelhante (mas apenas para transportar os arquivos da VM), é exportar e importar manualmente a VM desejada toda vez que você precisar carregá-la. Você pode fazer isso selecionando a VM e seguindo com File > Export Appliancee File > Import Appliance. Ao exportar, um arquivo com o formato .ova será criado, é um arquivo que contém todos os arquivos necessários para usar a VM. Ao importá-lo em outra instalação, você terá a mesma VM no segundo computador. Dessa forma, você está usando o pendrive para simplesmente carregar seus arquivos, que quando reimportados serão armazenados e acessados ​​no seu computador, portanto, a velocidade do USB não é uma preocupação.

Sekhemty
fonte
5

Diante do mesmo problema e acho que o resolvi.

Digamos que você tenha duas máquinas, A e B. Crie / prepare sua vm em A. Depois disso, tire um instantâneo ou crie um clone vinculado (as duas obras, mas as etapas adicionais diferem, fornecerão uma, você poderá resolver a outra)

Agora, verifique se você possui um Virtualbox recém-instalado em B. Copie as VMs ~ / .VirtualBox e ~ / VirtualBox de A para B com um USB (considerando que elas estão em sites distantes)

Agora, se você escolher a maneira de instantâneo, sincronize a pasta ~ / VirtualBox VMs / YourVM / Snapshots até que fique grande o suficiente. Se ficar maior, crie outro instantâneo em A e copie a pasta YourVM para B por uma vez e sincronize apenas esse novo arquivo de instantâneo na pasta Snapshots.

Se você tirar uma foto instantânea ou criar um clone vinculado em A ou B, esse ritual será interrompido, seja avisado.

Testado em 5.0.20

Malkocoglu
fonte
resposta muito intrigante. você faria isso ainda hoje ou existe uma maneira melhor?
l
4

Eu sei que este segmento tem um ano, mas é um dos principais resultados de pesquisa no google para a questão de compartilhar uma VM entre dois locais.

O VirtualBox permite que você se conecte remotamente a uma VM em execução usando o RDP. Se você não deseja que a VM funcione continuamente, crie uma maneira de iniciá-la remotamente.

Há uma opção para "Permitir várias conexões", para que você nem precise se desconectar de um local antes de conectar-se a outro.

Se você não conseguir hospedar sua própria VM, uma rápida pesquisa no Google encontrou fornecedores que hospedarão suas imagens VirtulaBox para você.

Eu nunca tentei tudo isso ...

cjpembo
fonte
4

Acho que a resposta da Sekhemty é a única maneira de fazer o que você deseja.

Mas por que sua máquina virtual precisa ser movida? Por que não apenas mover seu (s) projeto (s)? Configure seu projeto em um git particular e apenas empurre e puxe conforme necessário.

Outro método para tentar, se você precisar manter a consistência da máquina e mudar bastante, seria usar uma configuração de vagrant e chef / fantoche. Isso funciona usando um chef (que é uma jóia de rubi) e uma marionete (não usei marionetes) para dizer ao vagrant o que você deseja que sua VM inclua e instale.

Ele funciona usando um script, usando chef ou fantoche, e o vagrant lê esse script ao iniciar a VM. Se você quiser que algo seja instalado, adicione-o ao script e, se ainda não estiver lá, será instalado quando você "vagar"! Levei um tempo para me acostumar, uma curva de aprendizado bastante acentuada, mas é muito eficiente quando você se acostuma e significa que você só precisa mover um arquivo de script em vez de uma VM inteira.

http://red-badger.com/blog/2013/02/21/automating-your-infrastructure-with-vagrant-chef-from-development-to-the-cloud/

boundless08
fonte
2
Não se trata apenas do código (que entra em um repositório) e da configuração; é porque a VM é o meu ambiente de desenvolvimento. Comecei a usar o VirtualBox para trabalhar no Ubuntu em um computador com Windows. Isso me proporcionaria um ambiente de desenvolvimento consistente quando é menos conveniente mover o ambiente do que seria mover uma cópia dele.
rsgoheen
Bem, então vagabundo e chef / fantoche parece ser o melhor. Dessa forma, se você precisar alterar algo no seu ambiente de desenvolvimento, não há necessidade de exportar e importar sua VM, basta adicionar o que você instalou ao seu script e o vagrant o criará na sua VM na inicialização. É muito útil também para ter diferentes instâncias de compilações de desenvolvedores, pois o vagrant funciona com uma "base-box (OS)" e constrói sobre o que o script também diz, para que você possa ter vários ambientes de teste, mas usando apenas o espaço de um.
boundless08
2

Você pode sincronizar as imagens da máquina virtual entre seus dois computadores.

Alexander
fonte
2
Um pouco mais de detalhes faria dessa uma resposta melhor. Você pode elaborar?
Dave M
2

Seguindo o princípio do KISS, depois que as VMs são registradas e as configurações são ajustadas, apenas rsynco *.vdiarquivo é exibido enquanto os dois lados são desligados.

rsync -aPh <path-to-vm>/<diskname>.vdi <remote>:<path-to-vm>/

Naturalmente, não há como "mesclar" conflitos, portanto, você deve ser disciplinado sobre como fazer alterações na VM e espelhar essas alterações.

Enquanto isso, você pode colocar a maioria dos seus dados pessoais em um NAS, para que eles estejam sempre atualizados e acessíveis em todas as máquinas. Além disso, você pode montar discos .vdi adicionais para conter a partição swap ou outro armazenamento temporário para não aumentar o tamanho do seu sistema .vdi.

Se você estiver no Windows, instale o cygwin (ou msys2) para o programa ssh e rsync.

T Nierath
fonte
1

Uma solução possível, dependendo do seu caso de uso, é uma variação na resposta do cjpembo.

Se os dois computadores separados estiverem na mesma LAN no mesmo local, poderá ser possível executar uma VM em um servidor ESXi ou similar e usar a função de console remoto das ferramentas de gerenciamento (ou mesmo SSH) para acessar dos dois outros computadores.

Obviamente, se um dos computadores com os quais você deseja usar a VM for um laptop que se movimentará, isso possivelmente não será uma solução, especialmente se você precisar compartilhar uma grande quantidade de dados entre o "host" e o "convidado" ambientes.

Se a VM é relativamente independente, os recursos do console remoto da VMware são bastante eficientes; portanto, a menos que você precise da reprodução de vídeo na VM, ela pode funcionar bem o suficiente, mesmo remotamente, para ser boa o suficiente.

Michael Firth
fonte
0

Consegui isso usando um ssd externo no disco usb c. A VM estará localizada no disco ssd e referenciada na minha configuração de caixa virtual nos dois laptops. Peguei um modelo USB 3.1 Gen2 tipo C (10 Gbps), 540 MB / s e o desempenho está bom.

Med Ali Difallah
fonte