Como Snapshots funcionam?

Olá, pessoal!

Uma das funcionalidades mais usadas e conhecidas de qualquer hypervisor é o famoso Snapshot, ou então Checkpoint no Hyper-V. Independente do nome, é uma função que não apenas utilizamos no dia-a-dia, como muitas ferramentas de backup profissionais utilizam como recurso para gerar um backup de uma VM (VEEAM, por exemplo). Pois bem, meu objetivo é detalhar alguns pontos interessantes de como funciona o snapshot no ESXi e como as ferramentas de backup utilizam esse recurso em seu favor para gerar backups.

Antes de começar, o mais importante: SNAPSHOT NÃO É BACKUP!

Estranho dizer isso sendo que ferramentas de backup utilizam o snapshot para funcionar, certo? Sim, elas utilizam, mas de forma controlada e apenas por um breve momento durante a execução do backup. Após o término o snapshot é deletado e a VM sempre ficará sem nenhum resquício da operação. Quando a VMware diz que snapshot não é backup, ela diz que você não deve tirar snapshots em todo o seu ambiente e deixar largado lá pra quando precisar, pois isso pode gerar indisponibilidade da VM com o passar do tempo.

  • Criando um snapshot

Acredito que todos sabem como criar um snapshot no ESXi, mas é bom entender alguns pontos nesse processo:

– Snapshot the virtual machine memory

 

Criando o snapshot com essa opção marcada, além de garantir que teremos uma “foto” de todos os dados do disco e configurações da VM, estamos garantindo que teremos também uma foto da memória da VM, ou seja, tudo que estiver sendo executado naquele momento em memória irá para o snapshot através de um dump gerado pelo hypervisor. Em caso de reversão do snapshot a VM volta exatamente para o ponto em que o snapshot foi tirado, com todos os programas abertos, etc.

 

Se você escolher criar o snapshot sem essa opção, em caso de reversão do snapshot a VM voltará desligada porque ela não sabe o que estava na memória do sistema operacional naquele momento, logo, o sistema precisa ser iniciado novamente.

 

Importante ressaltar que existe uma diferença clara no tempo para o snapshot ser criado quando você escolhe entre as duas opções. Se você criar o snapshot com memória vai demorar um pouco mais para finalizar o processo, pois tudo que está em memória também deve ser gravado. Agora, se você criar o snapshot sem a opção de memória o processo é praticamente instantâneo.

Outra questão interessante é que quando utilizamos a opção de memória, por um breve período de tempo (de 5 a 30 segundos), a VM ficará congelada o que a VMware chama de Fast Suspend Resume. Apesar de ser rápido, lembre-se que quanto mais memória, mais informação vai ser gravada e, logicamente, mais tempo vai demorar. Leve isso em consideração ao utilizar essa opção.

 

Agora uma dica pessoal: use sempre o snapshot com memória. Mesmo que exista esse pequeno intervalo de parada ele é praticamente imperceptível e eu prefiro voltar a VM no estado em que ela se encontrava.

 

– Quiesce guest file system (Needs VMware Tools installed)

 

 

Criando o snapshot com essa opção marcada, é utilizado o VSS do VMware Tools para “preparar” a máquina para um estado de backup. Ou seja, aplicações que sofrem constante modificação e guardam informação na memória (SQL, Exchange) serão avisadas que irá ocorrer um backup e qualquer dado na memória será escrito em disco para aí então ocorrer o snapshot. Isso garante que o snapshot esteja íntegro em caso de reversão. Você só pode utilizar essa opção caso a VM tenha o VMware Tools instalado, caso contrário o processo não irá funcionar.

  • Criei o snapshot, e agora?

Agora vamos entender como ficam nossos VMDKs após a criação do snapshot. Se verificarmos a máquina virtual, veremos que o disco mudou:

 

 

Toda vez que criamos um snapshot, é criado um novo VMDK para VM. Todos os dados a partir do momento do snapshot são gravados nesse novo disco com a nomenclatura “00000X”.vmdk. Se criarmos um novo snapshot, será criado o disco “0000002”.vmdk e assim sucessivamente, como podemos ver a seguir:

 

 

Na mesma imagem podemos ver mais dois arquivos que tem relação com os snapshots: .VMSD e .VMSN

 

VMSD: Toda a informação do snapshot é guardada nesse arquivo. Ele age como uma database com as informações do snapshot. Costuma ser bem pequeno.

VMSN: Este é o arquivo com o estado da memória que foi gravado durante a criação do snapshot. Toda vez que tiramos um novo snapshot, é criado um novo arquivo incrementando o número no final do nome. Se tivermos uma máquina com dois o mais snapshots, teremos o número de arquivos VMSN igual ao número de snapshots, conforme a imagem acima onde tenho dois snapshots na VM.

  • Entendi como funciona, como reverto?

Após o término do snapshot, em Snapshot Manager, teremos a seguinte estrutura:

 

 

A tela é autoexplicativa. Se selecionarmos “Snapshot1” e clicarmos em “Go To”, a reversão é executada e a VM volta para o ponto do snapshot. Podemos também clicar em “Delete All” e remover todos os snapshots. Nesse caso, ocorrerá a consolidação da VM, ou seja, o delta VMDK (aquele com 00000X, criado pelo snapshot) é consolidado com o VMDK original, aplicando todas as mudanças que ocorreram após a criação do snapshot. Muita atenção há alguns detalhes desse processo:

  • Se o snapshot for grande a consolidação pode demorar horas;
  • Não interrompa de forma nenhuma a consolidação, pois isso pode corromper o VMDK de uma forma que seja impossível recuperá-lo;
  • Durante a consolidação a performance da VM pode cair bastante;

Isso é o básico sobre snapshot, tem muito conteúdo sobre o assunto na internet porque é uma função bem útil de qualquer hypervisor. Recomendo bastante ler sobre o processo na documentação de cada fabricante, porque apensar da ideia ser a mesma pra todos a forma como funciona varia de fabricante para fabricante.
Segue alguns links sobre o assunto na documentação de alguns fabricantes:
Hyper-V: Checkpoints and Snapshots Overview

VMware: Understanding VM snapshots in ESXi / ESX

XenServer: Understanding Snapshots
Qualquer dúvida, sintam-se à vontade de falar nos comentários ou me contatar nas redes sociais.
Até breve!

5 Comments