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.