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!
Excelente artigo! Muito bem explicado.
Valeu, Jorge! Obrigado pela visita!
Muito bom Wesley.
Valeu, John
Parabéns Wesley, muita gente tem dúvidas sobre os Snapshots que estão claramente explicadas nesse artigo!!!