Como funciona o snapshot de máquinas virtuais?

16

Tendo usado o software de geração de imagens de unidade por mais de uma década, acho incompreensível que as Máquinas Virtuais possam ser instantâneas e restauradas em questão de segundos, enquanto a geração de imagens de unidade geralmente leva horas.

Eu posso capturar instantaneamente uma VM, reinstalar em outro sistema operacional e fazer uma restauração e, de forma mágica, em segundos, minha VM antiga é perfeitamente compatível com o estado em que ela estava anteriormente.

Como isso pode acontecer? O que o host da VM realmente faz para a VM que torna isso possível?

    
por Matias Nino 07.06.2009 / 22:50

5 respostas

16

Quando você cria um instantâneo, todas as alterações feitas na imagem de disco virtual inicial não são realmente feitas na própria imagem, mas são gravadas em um novo arquivo de disco (instantâneo). Esta ação é tão rápida porque não há necessidade de copiar toda a imagem do disco virtual, porque ela funciona no princípio copiar na gravação (somente modificados, ou seja, os blocos gravados são gravados na imagem instantânea). Observe que a imagem de instantâneo cresce à medida que você altera mais e mais dados na imagem de disco virtual original (que permanece como estava no momento em que você tirou a foto). Provavelmente será muito menor que a imagem original, mas no pior dos casos será exatamente o mesmo tamanho (se todos os blocos foram alterados).

Existem duas ações que você pode fazer com essa nova imagem de instantâneo:

  1. Descartar instantâneo : ação muito rápida. O gerenciador de máquinas virtuais simplesmente exclui o arquivo de imagem de captura instantânea e retorna o controle para a imagem de disco original ou para alguns dos instantâneos anteriores
  2. Mesclar instantâneo : o gerenciador de máquina virtual mescla blocos alterados (isto é, imagem de instantâneo) com a imagem original. Essa ação levará tempo dependendo de quantos blocos da imagem original foram alterados. Novamente, o pior cenário possível é que toda a imagem original será sobrescrita caso todos os blocos da imagem original tenham sido gravados após a criação de um instantâneo.

Todos os procedimentos descritos acima também funcionam para vários instantâneos. Nesse caso, a imagem original pode ser um instantâneo e o próximo instantâneo pode referenciar o bloco nesse (primeiro) instantâneo. Desta forma, você pode ter muitos instantâneos que você pode descartar ou mesclar com facilidade.

    
por 07.06.2009 / 23:05
5

Com um instantâneo, seu software de virtualização precisa acompanhar quatro coisas: estado da CPU, RAM, configuração (quantas placas de rede na VM?) e disco. Eu estou ignorando as três primeiras coisas porque elas não são grandes quantidades de dados, o software pode apenas fazer cópias das estruturas de dados relativamente pequenas e armazená-las em um arquivo. Então, isso deixa apenas o snapshot do disco para explicar.

Primeiro, o que a VM vê como um disco rígido é realmente apenas um conjunto de arquivos no sistema de arquivos do host. Para fazer um snapshot, o software da máquina virtual pega o disco da VM em um determinado ponto no tempo, preserva-o, abre um novo arquivo de disco vazio e faz um copy-on-write com todos os acessos subsequentes ao disco.

Digamos que seu arquivo de disco seja BigVM.disk. Você faz um instantâneo e agora seu software VM renomeia seu disco para BigVM-s1.disk e, em seguida, cria um novo BigVM.disk vazio. Quando sua VM está em execução, todas as solicitações de leitura passam pelo BigVM.disk. Se esse arquivo não tiver uma entrada para a parte do disco que sua VM deseja, os dados de BigVM-s1.disk serão retornados. Em uma gravação, os dados são gravados em BigVM.disk em vez de BigVM-s1.disk. Uma leitura futura para esse mesmo setor retornará os dados do BigVM.disk em vez do instantâneo original contido no BigVM-s1.disk. BigVM-s1.disk contém o estado do disco rígido da sua VM a partir do seu snapshot, enquanto o BigVM.disk contém todos os diffs para o seu disco desde o snapshot.

O que acontece quando você reverte para um instantâneo antigo? O software da VM elimina o conteúdo do BigVM.disk e inicia novamente, com um novo BigVM.disk vazio que ainda aponta no BigVM-s1.disk.

    
por 07.06.2009 / 23:08
2

É apenas gravar as diferenças nos arquivos alterados a partir do momento da captura instantânea, não do disco completo da máquina virtual. Como o diff e o patch do unix, exceto uma versão mais sofisticada que difere em um nível binário e conhece outros detalhes da sua máquina virtual.

    
por 07.06.2009 / 23:04
1

Pelo menos em instantâneos VMware, o que acontece é que o instantâneo é basicamente um sinal para o VMX iniciar um novo ponto de verificação para gravações em disco e estado da máquina. Dependendo se sua VM está desligada ou ativada, a restauração do instantâneo pode envolver apenas a desativação de tudo que aconteceu depois desse ponto de verificação. Caso contrário, todos os setores de disco da sua máquina virtual se tornarão copy on write, o que significa que, quando você executa uma restauração de hot instantâneos, ela só precisa reescrever os setores que foram alterados desde que você tirou a captura instantânea. Então é por isso que é mais rápido.

    
por 07.06.2009 / 23:04
-1

Trabalhar com os instantâneos do VMware e seu conteúdo interno é melhor explicado pelo link

    
por 14.12.2012 / 06:10