terça-feira, 1 de março de 2011

Snapshots no Hyper-V

O conceito de snapshot nem sempre é um coisa clara pra todo mundo. Bom, então vai uma definição simples:
Snapshot vem do ingles (der.. óbvio), que significa fotografia. E é isso que ele é, uma fotografia. Você faz um snapshot e grava um momento no "tempo" e você pode visualiza-lo sempre que desejar, bem como você faria com uma fotografia.

Na informática eles são de grande utilidade para testes de aplicações em máquinas virtuais. E o hyper-v assim como outras soluções de virtualização trás esse recurso. Porém tem alguns detalhes, que você não deve encontrar muito facilmente em documentações. Na internet cita mais a utilidade e as vantagens do recurso, porém não descreve como funciona.
Como eu tive esse dificuldade vou expor o que pude concluir após muitos testes, respondendo as minhas próprias perguntas...
1. Ao tirar um snapshot da VM (online) o que acontece, qual o impacto?Diretamente não tem nenhum impacto, ele irá criar um AVHD diferencial na pasta que foi definida para snapshots da VM que você selecionou. Não há nenhum pausa na VM, nenhum queda de serviço, totalmente transparente. E a VM para de crescer no VHD original, tudo que acontecer nela será gravado no AVHD diferencial. Inclusive é criado um novo arquivo de configurações pra ela. Unico risco, se o local definido pro snapshot não comportar o crescimento da mesma, ela irá PAUSAR.
2. O que acontece quando se "Aplica" o snapshot?A VM volta (ou vai) ao momento do tempo que você criou o determinado snapshot.
3. Qual o impacto de aplicar um snapshot na VM online? (esse é importante)Ela pausa! Restaura para o ponto definido e continua funcionando, e as alterações são gravadas no VHD ou AVHD correspondente ao Snapshot. Esse processo demora segundos.
4. O que acontece quando se Exclui um snapshot?Perde tudo! Brincadera... hehe. Ao excluir um snapshot, entende-se que você não precisa mais recuperar aquele momento no tempo, porém ele é necessário para os momentos posteriores. (você rasga a foto do ex-marido, mas nem por isso os filhos de vocês não deixam de existir). Para que mantém a consistencia da VM, é necessário fazer um "merge" com o ponto imediatamente posterior. Mas isso não é feito online. É necessário que você desligue, ou "salve" a VM. Irá aparecer no status "Merging (0%~100%). Quando sumir esse status é por que o merge foi concluído. Após isso você pode ligar/restaurar a máquina novamente e o momento que estiver aplicado será o "atual". E o AVHD correspondente será excluído.
5. O que acontece quando exclui a "Sub Arvore de Snapshot"É feito merge de tudo. Excluindo todos os snapshots, "o estado atual é o estado que deve seguir", exemplo bom, você precisava fazer uma instalação "monstro" na VM, e não tinha certeza das consequencias, porém fez e deu tudo certo. Agora a VM está "rodonda". Porém está com varios snapshots, e "crescendo" fora do VHD que foi definido pra ela. Exclui todos os snapshot e desligar ou salva a VM. E ela vai voltar a ser um VHD integro porém com todas as alterações que ocorreram enquanto os existiam os snapshots.

Observação sobre o merge: Cuidado ao programar uma parada para que o merge seja feito. Isso pode ser um processo demorado. Imagina que você fez muuuitas alterações e a sua VM cresceu 50 gb desde que o snapshot foi feito. É 50gb que ele vai ter que integrar ao arquivo original, e demora mais que uma cópia normal de arquivo.
6. Se exportar a VM que tem varios snapshots, o que acontece?Vai tudo junto. Ao exportar uma VM com o Hyper-V, tudo é exportado. VHDs arquivos de configuração, e os possíveis snapshots exatamente da forma que estão. O "export" do Hyper-V é o backup mais fiél que se pode ter de uma VM.

7. (esse é boa) O que acontece se DELETAR uma VM do console de gerenciamento e a mesma tem vários snapshots?
Se você tem alguma experiencia com Hyper-V deve saber que ao deletar uma máquina do console, apenas os arquivos de configuração são deletados. O VHD permanece. Mas no caso com snapshots temos um VHD e "n" AVHDs. Dessa forma, o que acontece é o seguinte: O Hyper-V faz um merge com os AVHDs dos snapshots, mas de tudo? não! Apenas do snapshot que está aplicado, e seus anteriores consequentemente!!! Isto é se você tem 5 snapshots e o n° 3 está aplicado. E você deletar a VM do gerenciador. O VHDs que restará é o merge do "Original + 1 + 2 + 3", e os 4 e 5 serão descartados.