Como o instantâneo da máquina virtual funciona?

16

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

Posso capturar instantaneamente uma VM, reinstalar em um sistema operacional diferente e, em seguida, fazer uma restauração e, de alguma forma mágica, em segundos, minha antiga VM está de volta perfeitamente no estado em que estava anteriormente.

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

Matias Nino
fonte

Respostas:

16

Quando você cria um instantâneo, todas as alterações feitas na imagem inicial do disco virtual não são realmente feitas na própria imagem, mas são gravadas em um novo arquivo de disco (instantâneo). Essa ação é muito rápida, porque não há necessidade de copiar toda a imagem do disco virtual, porque funciona com base no princípio de cópia (apenas alterada, ou seja, os blocos gravados são gravados na imagem da captura instantânea). Observe que a imagem da captura instantânea aumenta à medida que você altera mais e mais dados na imagem original do disco virtual (que permanece como estava no momento em que você tirou a captura instantânea). Provavelmente será muito menor que a imagem original, mas, na pior das hipóteses, será exatamente do mesmo tamanho (se todos os blocos forem alterados).

Há duas ações que você pode executar com esta nova imagem de instantâneo:

  1. Descartar instantâneo : ação muito rápida. O gerenciador de máquina virtual simplesmente exclui o arquivo de imagem da captura instantânea e retorna o controle para a imagem original do disco ou para algumas das capturas instantâneas anteriores
  2. Mesclar snapshot : o gerenciador de máquinas virtuais mescla blocos alterados (ou seja, imagem de snapshot) com a imagem original. Essa ação levará um tempo, dependendo de quantos blocos da imagem original foram alterados. Novamente, o pior cenário é que toda a imagem original será substituída 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 fazer referência ao bloco nesse (primeiro) instantâneo. Dessa forma, você pode ter muitos instantâneos que pode descartar ou mesclar com facilidade.

ipozgaj
fonte
11
descartar instantâneo, como qualquer processo de exclusão de imagem, pode ser bastante lento, se você tiver a opção de apagar após excluir ativada. É um recurso de segurança que limpa o espaço usado por uma imagem ou instantâneo limpo antes de ser liberado para ser usado por outras VMs; caso contrário, usando a leitura de bloco de baixo nível, pode ser possível ler os dados que a VM anterior usou. E qualquer solução de virtualização que não tem esse recurso tem uma enorme falha de segurança nele
dyasny
Tentei explicar o cenário de criação de vários instantâneos e como as alterações em cada instantâneo são mantidas. Veja esta breve explicação sobre o funcionamento do VMware instantâneos: cubicrace.com/2012/02/...
Piyush Chordia
5

Com um instantâneo, seu software de virtualização deve acompanhar quatro itens: estado da CPU, RAM, configuração (quantas placas de rede na VM?) E disco. Estou ignorando as três primeiras coisas, porque 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 instantâneo 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 host. Para fazer uma captura instantânea, o software da máquina virtual pega o disco da VM em um determinado momento, preserva-o, abre um novo arquivo de disco vazio e executa um esquema de cópia na gravação a cada acesso subsequente ao disco.

Digamos que seu arquivo de disco seja BigVM.disk. Você captura instantânea e agora o software da VM renomeia seu disco para BigVM-s1.disk e 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 do 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 o mesmo setor retornará os dados do BigVM.disk em vez do instantâneo original contido no BigVM-s1.disk. O BigVM-s1.disk contém o estado do disco rígido da sua VM a partir do seu instantâneo, enquanto o BigVM.disk contém todos os diffs do seu disco desde esse instantâneo.

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

kbyrd
fonte
2

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

Ian Kelling
fonte
1

Pelo menos nos instantâneos do VMware, o que acontece é que o instantâneo é basicamente um sinal para o VMX iniciar um novo ponto de verificação para gravações de disco e estado da máquina. Dependendo se a sua VM está desligada ou ligada, a restauração do instantâneo pode simplesmente envolver apenas nuking tudo o que aconteceu após esse ponto de verificação. Caso contrário, todos os setores de disco da sua VM serão copiados na gravação, o que significa que quando você executa uma restauração de hot snapshot, é necessário reescrever os setores que foram alterados desde a captura do snapshot. É por isso que é mais rápido.

joshk0
fonte
-1

É melhor explicar o trabalho nos snapshots da VMware e seu interno: http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html

Piyush Chordia
fonte
3
Bem-vindo ao ServerFault! Embora o vínculo com o material de referência externo seja incentivado, também esperamos que cada resposta seja concluída, mesmo que seus links sejam quebrados no futuro. Você pode editar esta resposta e adicionar detalhes adicionais.
quer