Controle de versão para imagens de discos virtuais

2

Existe algum sistema existente para rastrear eficientemente o histórico de versões de uma imagem de disco virtual?

Essencialmente, eu tenho uma imagem de disco que é usada como um sistema de arquivos raiz "template" para testar programas. Ocasionalmente, preciso fazer alterações (por exemplo, instalar pacotes), mas na maioria das vezes é somente leitura. Eu preciso ser capaz de manter o histórico completo de alterações (principalmente para que eu possa reverter se algo der errado, mas eu também preciso procurar uma revisão mais antiga por data e hora para reproduzir um teste anterior).

Eu gostaria que o histórico fosse armazenado em algum tipo de formato incremental, já que na maioria das vezes as alterações que estou fazendo são muito pequenas (e a imagem de disco completa é enorme).

Eu gostaria que cada revisão fosse armazenada em um arquivo separado, para facilitar o backup com o rsync.

Gostaria de poder excluir facilmente as revisões antigas que não são mais necessárias.

Eu gostaria que a revisão mais recente fosse armazenada como algo próximo a um arquivo simples, ou seja, o desempenho de leitura deveria ser O (1), independente de quantas revisões mais antigas existem.

Ah, e é necessário que uma VM use com segurança a imagem de disco (em modo somente leitura) enquanto faço modificações; "committing" tem que ser uma operação atômica.

(Obviamente espero que haja algumas compensações entre esses critérios; estou apenas tentando dar uma ideia do que estou procurando.)

O desempenho para as operações reais de "controle de versão" é comparativamente sem importância; correção e estabilidade, por outro lado, são cruciais.

Atualmente, estou usando o kvm / qemu, com imagens de disco do qcow2, mas estaria interessado em saber sobre outras opções.

Eu posso ver como eu mesmo poderia escrever um sistema de controle de versão como esse, usando o qemu-img com backup de arquivos e rebasing, mas existe algum conjunto de ferramentas que funcione para esse propósito?

    
por floppusmaximus 18.09.2014 / 22:57

3 respostas

1

Parece que o VAGRANT ( link ) pode ser uma boa opção para suas necessidades. O Vagrant trabalha com vários mecanismos de VM (por exemplo, virtualbox, vmware, link de verificação acima ).

Algumas vantagens incluem:

  • É compatível com sistemas VCS (arquivo de texto único)
  • Plataforma cruzada - windows, linux, mac
  • Extremamente fácil de compartilhar com qualquer pessoa, em qualquer lugar
  • Fornece ambiente de teste consistente

Indo em frente

Primeiro instale o vagrant e, digamos, o virtualbox.

Em seguida, você descreve sua máquina virtual em um único VagrantFile que pode ser gerado usando:

vagrant init ubuntu/trusty64 [1]

Então você terá um arquivo descritor para o seu sistema operacional preferido. Se preferir, edite alguns endereços IP, portas, pacotes e pastas compartilhadas no VagrantFile.

Quando terminar, execute:

vagrant up

e você tem uma máquina virtual com a qual você pode fazer login usando:

vagrant ssh

Personalização

Se isso não for suficiente e você tiver requisitos muito específicos além dos recursos do vagrant, há muitas VMs vagantes pré-configuradas com sistemas de gerenciamento de configuração, como cfengine ou chef, ou fantoche ou o que for você prefere.

[1] Há muitos vms vagrant pré-configurados por aí, dê uma olhada no ( link ).

    
por 19.09.2014 / 00:50
1

Se você estiver executando somente imagens linux amd64 e ficaria feliz com contêineres em vez de virtualização completa, talvez o Docker ( link ) seja possível opção.

    
por 19.09.2014 / 01:02
0

Verifique isso:

Virtualbox: Disco de vários anexos link

What happens when you assign a master disk to a VM, is that the VM creates a differencing disk, where all writes go. The master disk will be used for reading, for whatever is not overwritten on the differencing disk. Over time, the differencing disk, that is local to every VM, will grow, and a large number of the original files will be overwritten by updates. This is not essential, the concept is not about saving disk space.

Veja o link para mais informações.

    
por 19.05.2015 / 21:15