terça-feira, 25 de outubro de 2011
Desvendando o snapshot da VMware
Antes de aprofundarmos no assunto snapshot precisamos entender como funciona o acesso ao disco de uma máquina virtual. Para cada disco de uma máquina virtual existem dois arquivos relacionados, um é pequeno e serve para definir a geometria do disco (número de cilindros, setores e cabeças) de forma que a BIOS da VM saiba como utilizar o disco. O outro é aonde os dados são efetivamente armazenados. Este disco pode ser visto como uma matriz de blocos:
![]() |
FIGURA 1 |
Na imagem abaixo podemos ver claramente a diferença entre os dois arquivos, apesar de ambos terem a extensão ‘.vmdk’, repare que o arquivo no qual os dados são efetivamente armazenados possui também a expressão ‘-flat’ junto ao seu nome.
![]() |
FIGURA 2 |
É nesse arquivo ‘-flat.vmdk’ que ocorrem as operações de I/O (leitura e escrita) da máquina virtual, portanto quando fazemos um snapshot, este arquivo passa a ser utilizado apenas para leitura e um outro arquivo é criado para armazenar as alterações que são feitas após a criação do snapshot.
![]() |
FIGURA 3 |
Com a criação do snapshot dois novos arquivos são criados para cada disco da máquina virtual. A lógica é a mesma para os discos originais, ou seja, um arquivo armazena as configurações do disco (.vmdk) e o outro armazena os dados em si (-delta.vmdk).
![]() |
FIGURA 4 |
O arquivo ‘-delta.vmdk’ funciona como um arquivo de log, ou seja, ele cresce a medida que alterações vão sendo feitas na máquina virtual. O tamanho inicial deste arquivo é de 16MB, e ele cresce nessa mesma proporção. Por isso não podemos dizer que o snapshot é uma cópia do disco virtual original da VM. Quando alteramos algum bloco no ‘.vmdk’ da VM esta alteração é aplicada no arquivo ‘-delta.vmdk’. Se este mesmo bloco for alterado novamente, apenas uma atualização é feita no arquivo do snapshot. Dessa forma podemos afirmar que o tamanho máximo que um arquivo ‘-delta.vmdk’ pode atingir é o mesmo do ‘.vmdk ‘ original. A velocidade com que este arquivo vai crescer depende da quantidade de escrita em disco que a VM produz.
Quando mais de um snapshot é criado numa máquina virtual, novos arquivos ‘-delta.vmdk’ são criados e o arquivo ‘-delta.vmdk’ anterior se torna somente leitura. Cada arquivo ‘-delta.vmdk’ pode atingir o mesmo tamanho do arquivo ‘-flat.vmdk’ original daVM.
![]() |
FIGURA 5 |
Além do arquivo ‘-delta.vmdk’, existem outros arquivos que estão relacionados com a utilização de ‘snapshots’:
*.vmsd – este arquivo é utilizado para armazenar informações e metadados sobre os ‘snapshots’. É um arquivo de texto que guarda informações do tipo: nome do snapshot, UID, nome do arquivo do disco, etc. É criado juntamente com a máquina virtual, mas mantêm-se com 0 bytes até o momento em que é feito o primeiro snapshot. Sempre que um novo snapshot é feito este arquivo é “populado”. Repare que na FIGURA 2 este arquivo encontra-se com 0 bytes e na FIGURA 4, após a criação de um snapshot, o mesmo encontra-se com 454 bytes. Abaixo segue um exemplo do conteúdo deste arquivo:
![]() |
FIGURA 6 |
*.vmsn – este é o arquivo de estado do snapshot, nele é armazenado o estado exato em que a máquina virtual se encontrava no momento em que o snapshot foi feito. O tamanho deste arquivo depende se no momento da criação do snapshot a opção para preservar a memória da VM estava marcada, se sim, o arquivo será alguns megabytes maior do que a quantidade de memória alocada para a VM. Se não, o arquivo será bem pequeno. No exemplo acima o snapshot foi feito com a opção para preservar a memória marcada por isso o arquivo possui cerca de 4GB, como pode ser notado na FIGURA 4.
Como disse anteriormente, o snapshot mantém a VM exatamente no mesmo estado em que ela se encontrava quando o mesmo foi feito. Isso inclui:
Estado da memória: todo o conteúdo existente na memória RAM da VM (neste caso é necessário que a VM esteja ligada e que a opção “Snapshot the virtual machine’s memory” esteja marcada).
Estado das configurações: todas as configurações da máquina virtual.
Estado do disco: o estado dos discos virtuais da VM.
Além disso, o snapshot captura o“Power State” da máquina virtual, ou seja, se fizermos um snapshot com a máquina desligada, quando revertermos este snapshot a VM voltará desligada.
Há ainda uma opção chamada “Quiesce guest file system ...”, esta opção é muito utilizada por softwares de backup, pois garante a integridade da VM no momento em que o snapshot é realizado.
![]() |
FIGURA 7 |
A imagem acima exibe a tela de criação de um snapshot quando feito através do Vsphere Client. Também é possível fazer a criação do snapshot através da linha de comando.
Algumas considerações sobre a utilização de snapshots e porque eles não devem ser utilizados como uma forma de backup:
- Conforme explicado anteriormente, o disco virtual original da VM passa para o estado ‘somente leitura’ e um novo disco é criado para armazenar as alterações realizadas. Apesar das operações de escrita ocorrerem somente no novo disco, as operações de leitura podem ocorrer em ambos os discos, impactando no desempenho da máquina virtual;
- Impacto no desempenho da LUN na qual o snapshot é criado, devido ao fato que toda vez que o arquivo ‘-delta.vmdk’ é incrementado uma operação de lock/unlock é executada pelo host no qual a máquina virtual se encontra;
- Risco de perda de dados no caso de o snapshot precisar ser destruído;
- Os snapshots podem crescer a ponto de encher um datastore.
Portanto, com base nas considerações levantadas anteriormente, devemos ter em mente que o snapshot deve ser usado apenas para situações temporárias, como por exemplo, na realização de um backup ou na aplicação de um patch ou update.
Depois de fazer o que tínhamos pra fazer devemos decidir o que fazer com este snapshot. As seguintes opções estão disponíveis:
- Aceitar as alterações que foram realizadas (Consolidate)
- Destruir as alterações que foram feitas (Revert)
- Adicionar um novo snapshot
No VSphere 5 a opção “Consolidate” foi adicionada de forma mais explícita no menu da máquina virtual, conforme mostrado na imagem abaixo:
![]() |
FIGURA 8 |
![]() |
FIGURA 9 |
A opção ‘Delete All’ deve ser usada no caso em que houver mais de um snapshot e as alterações de todos eles devam ser consolidadas.
Quando optamos por estas opções (Consolidate ou Delete) estamos aceitando as alterações que foram feitas na máquina virtual durante o período em que o snapshot esteve presente e permitindo que o “merge” seja feito entre o arquivo de log do snapshot (-delta.vmdk) e o disco virtual original da VM (-flat.vmdk). O vmkernel varre o arquivo de log e sobrescreve o .vmdk original com os dados mais recentes. A figura abaixo exemplifica bem essa situação:
![]() |
FIGURA 10 |
Pode ocorrer de o arquivo de log do snapshot ficar muito grande, dificultando a consolidação com o disco original. Neste caso, o vmkernel automaticamente faz um novo snapshot da VM, para que o arquivo de log possa ser utilizado apenas para a leitura e consolidação. Este snapshot feito automaticamente pelo vmkernel é chamado de Consolidate Helper Snapshot (CHS).
Existe também a possibilidade de não ficarmos satisfeitos com as alterações que foram realizadas na VM após a criação do snapshot. Pense por exemplo numa aplicação mal sucedida de um determinado patch de atualização, neste caso temos a opção de retornar a máquina virtual para o ponto em que ela estava no momento que o snapshot foi realizado, descartando assim todas as alterações que haviam sido realizadas.
![]() |
FIGURA 11 |
O VSphere Client oferece duas opções para voltarmos um snapshot. A primeira é a opção “Revert to Current Snapshot” (veja na FIGURA 8). Esta opção volta a máquina virtual para o estado em que snapshot mais próximo, ou seja, o mais recente, estava. Caso exista mais de um snapshot, o recomendado é utilizar a segunda opção, conhecida como “Go to”. Esta é acessada através do Snapshot Manager (FIGURA 9) e permite que você escolha para qual snapshot deseja retornar. Como no nosso exemplo temos apenas um snapshot, as duas opções teriam o mesmo resultado.
Quem quiser aprofundar um pouco mais sobre o assunto pode dar uma conferida nos textos que utilizei como base para este post:
http://www.vmdamentals.com/?p=76
http://www.vmdamentals.com/?p=332http://www.vmdamentals.com/?p=76
http://www.daemonchild.com/vsphere-snapshots
http://searchvmware.techtarget.com/tip/How-VMware-snapshots-work
http://searchvmware.techtarget.com/tip/Deleting-virtual-machine-snapshots-without-wasting-disk-space
Assinar:
Postar comentários (Atom)
Excelente artigo! Parabéns pela iniciativa... abs!
ResponderExcluirObrigado Fabian!
ResponderExcluirAmigo, simplesmente fantástico esta postagem, agora sim compreendi e muito o snapshot do vmware.
ResponderExcluirParabéns pelo blog, favoritei ele!
Valeu Ruy!
ResponderExcluirParabéns pelo artigo, muito bom!!!
ResponderExcluirGostei do artigo, explicou de forma fácil e eficiente!
ResponderExcluirMesmo após um certo tempo de publicação, li o artigo e realmente gostaria de parabenizá-lo!!! Excelente! Muito, mas muito mesmo, esclarecedor!!! Abs!
ResponderExcluirMuito bom!
ResponderExcluirEsclareceu tudo, estou aplicando a técnica e o artigo me será muito útil!
;)
Poxa, parabéns cara! Muito claro e esclarecedor mesmo! É isso que falta hoje em dia, objetividade e clareza, saber passar a informação de forma simples e clara é pra poucos.
ResponderExcluirMuito interesante e util.
ResponderExcluirObrigado.
Mario Fontes
Mandou super bem, eu esta com dúvida quanto ao Consolidate.
ResponderExcluirMuito bom, parabéns!!
ResponderExcluirUm tópico antigo, porém muito atual, dissertado com muita clareza e objetividade... Parabéns
ResponderExcluirParabéns pelo texto... bastante esclarecedor.
ResponderExcluirMeus parabéns, gostei muito da postagem e espero poder ler outras com tanta riqueza de detalhes.
ResponderExcluirExecelente, entendi melhor o funcionamento snapshot. Parabéns abs
ResponderExcluirParabens excelente artigo!
ResponderExcluirTexto muito objetivo, que faciltou bastante o entendimento do assunto.
Muito bom o texto, finalmente um artigo decente sobre snapshot.
ResponderExcluirParabéns pelo conteúdo.
ResponderExcluirEstou com uma dificuldade e gostaria de ajuda. Possuo uma VM (W7) precisa que quando ela inicie mantenha o data/hora desejado e não sincronize com a do pc, é possível fazer isso?
ResponderExcluirGrato
Diego,
ExcluirTem sim.
Segue os passos abaixo:
Clica com o botão direito na máquina virtual que quer configurar e clica em "Edit Settings";
Vai na aba "Options";
Seleciona "VMware Tools";
Na seção "Advanced", desmarca a caixa de seleção "Synchronize guest time with host"
Muito boa explicação, sanou todas as minhas dúvidas sobre o assunto, obrigado!
ResponderExcluirA versão gratuita do vmware tem snapshot ?
ResponderExcluirObrigado!
[]'s
Sim.
ExcluirParabéns pelo post meu caro, foi de grande valia, mas ainda tenho uma dúvida: como faço para criar uma máquina virtual que seria espelho de uma outra? O cenário é esse: tenho 6 atendentes, não quero ter que criar uma máquina para cada um, repetindo instalação do windows, configuração de ambiente, etc,etc... Já tenho uma maquina virtual pronta que chamei de "Agente1". Gostaria de criar as demais espelhadas nessa.
ResponderExcluirEsse tipo de configuração é conhecida como Linked Clones e está disponível apenas na solução de VDI da VMware. Existem alguns artigos na internet que mostram como fazer isso através de scripts Powercli.
ExcluirBom dia! Você pode criar uma VM e transforma-la em "template", e depois utilizar ela.
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirWanderson, o artigo está explicando justamente isso! rsrs
ExcluirTiago, minha pergunta se estendeu a outros ambientes, não só em "Vmware", como a própria restauração do sistema, no Windows e programas como "rollback rx".O artigo explica como funcionam as "snapshots" de uma forma técnica(do meu ponto de vista leigo), se restringindo a ambientes virtuais e sem responder ao que perguntei: como é possível clonar todo um disco, de forma que a cópia tenha uma proporção absurdamente menor que o original e em tão pouco tempo? Se puder responder de uma forma descomplicada, agradeço, pois se a resposta estiver no artigo, eu não encontrei(não consegui entender)! rsrs Obrigado!
ExcluirObrigado Thiago.
ResponderExcluirPosso deletar um snapshot com a VM ligada?
ResponderExcluirPosso deletar um snapshot com a máquina virtual ligada?
ResponderExcluirPode sim.
ExcluirParabéns! Bem explicado!
ResponderExcluirOlá, uso o VMWare e tenho uma Máquina Virtual do Windows 7. Após algumas utilizações, tenho na pasta VIRTUAL MACHINES-WINDOWS 7 PROFESSIONAL várias arquivos ocupando muito espaço. Gostaria de saber o que pode ser APAGADO sem prejudicar a execução do Windows 7. Eis os arquivos: Windows 7 Professional.vmdk com 5.74GB; Windows 7 Professional-000001.vmdk com 24.6GB; Windows 7 Professional-000002.vmdk e Windows 7 Professional-000003.vmdk com 448MB e 446MB respectivamente; Windows 7 Professional-Snapshot1.vmem e Windows 7 Professional-Snapshot2.vmem com 2GB cada; Windows 7 Professional-Snapshot1.vmsn e Windows 7 Professional-Snapshot2.vmsn com 2MB cada e, Windows 7 Professional.vmxf, Windows 7 Professional.vmx, Windows 7 Professional.vmsd e Windows 7 Professional.nvram com alguns KBytes. Obrigado.
ResponderExcluirKleber, esses arquivos são referentes a sua maquina virtual Windows 7, se apagar terá certamente problemas. Conforme explicação do Thiago, deixa os 2 arquivos .vmdk , da uma olhada no arquivo: Windows 7 Professional.vmdk , que ele deve ser o arquivo onde tem as informações do seu disco de dados.
ExcluirAlguém, por favor, pode me explicar como isso se aplica a outros ambientes semelhantes, não só em "Vmware", como a própria restauração do sistema, no Windows e programas como "rollback rx" e "Comodo Time Machine".Como é possível clonar todo um disco, de forma que a cópia tenha uma proporção absurdamente menor que o original e em tão pouco tempo? Se puderem responder de uma forma descomplicada, agradeço! :D
ResponderExcluirEssa duvida em relação ao espaço eu tinha até ler o link: http://technet.microsoft.com/en-us/library/cc785914%28WS.10%29.aspx
ExcluirTiago, me tira uma duvida por favor, antes de mais nada parabens pelo artigo.
ExcluirEu queria saber se por alguma fatalidade eu tiver somente os arquivos do snapshot, eu consigo reestabelecer a maquina? Exemplo, por algum acidente os 2 arquivos da maquina forem deletados e eu ter somente o .vmdk do snapshot e o -delta.vmdk, eu conseguiria ligar a maquina virtual? Eu uso programas de backup pra esxi e sei que eles usam o snapshot para backup. Eu queria entender operacionalmente, a partir do momento que um snapshot esta sendo gerado então, e o arquivo original passa a ser de leitura, eu consigo manipula-lo ? Exemplo copiar ele pra algum lugar, visto que a maquina estara ligada I/O em outro disco (-delta). Me entendeu?
Paulo, obrigado pelo link. Eu não consegui achar ele em português, mas deu pra entender alguns pontos, como por exemplo, a questão do congelamento do sistema(o que reforça a ideia de "fotografia do sistema"), apesar de realmente não ter ficado claro como há possibilidade de se fazer um clone exato de um disco, reduzindo-se drasticamente a necessidade de espaço e tempo e ainda havendo chance de se copiar os arquivos inteiros dessa "fotografia".
ExcluirExcelente artigo, Tiago. Parabéns!! Bastante didático e direto! Valeeeu
ResponderExcluirParabéns!
ResponderExcluirGostei muito da explicação! Simples e objetivo.
Vou começar a seguir este seu blog (y)
Olá! Parabens pelo artigo! Por favor, gostaria de sua ajuda no seguinte assunto: Eu acabei excluindo um snapshot de uma data intermediaria no ESXi e soh tenho 40GB livre! Vi num artigo que isso nao pode ser feito, que existe uma sequencia certa, e que se reinicar ele não subira mais. O que eu devo fazer agora??
ResponderExcluirParabéns pelo post.
ResponderExcluirTiago, excelente artigo! Mais uma vez, PARABÉNS!
ResponderExcluirAlguém conhece uma forma de backupear uma VM que está no Sphere Exsi? A minha idéia é caso a máquina atual "morra" eu possa utilizar este backup da máquina inteira upando, sem ter que instalar,atualizar,configurar e etc.. ? Alguém sabe ??
Thiago boa tarde!
ResponderExcluirTenho uma maquina virtual e não sei como criei este snapshot e agora não consigo copiar esta maquina virtual , ou seja, não consigo passar a Vm para nenhuma outra maquina ela lê pelo Hd externo pois esta salva nele mas quando estou copiando chega nesse arquivo snapshot e não copia poderia me ajudar?
Ótimo material.
ResponderExcluirCordialmente;
Claudir
Martinez, isso vale também para o Citrix Xcenter?Abs meu amigo. Jullima
ResponderExcluirFala Jullima!! Só na boa?
ExcluirCara, não sei te falar isso. Não conheço muito bem de Citrix.
Abs!
Bom dia.
ResponderExcluirRealizamos uma atualização em um server ha mais ou menos 20 dias, e esquecemos de deletar o snapshot. Quantos dias posso manter o snapshot e qual metodo mais seguro para deletar esse Snap?
Gostaria de saber como faço para agendar o snapshot para que faça essa tarefa pelomenos 2 vezes por dia e apague quando ultrapassar o limite de 14 snapshot semanal?
ResponderExcluirisso é backup...
ExcluirAlguém, por favor, pode me explicar como isso se aplica a outros ambientes semelhantes, não só em "Vmware", como a própria restauração do sistema, no Windows e programas como "rollback rx" e "Comodo Time Machine".Como é possível clonar todo um disco, de forma que a cópia tenha uma proporção absurdamente menor que o original e em tão pouco tempo? Se puderem responder de uma forma descomplicada, agradeço! :D
ResponderExcluirExiste alguma forma de abrir o arquivo vmdk-delta via Windows? Eu até consegui com uma ferramenta chamada DiskInternals VMFS Recovery, porém para recuperar os arquivos precisa de serial.
ResponderExcluirParabéns pela iniciativa e pela qualidade da explicação
ResponderExcluirParabéns pelo artigo. Uso VMWare há bastante tempo, mas sempre se prende um pouco mais com artigos com esta qualidade. Sua maneira clara e objetiva, unida às imagens, facilitam muito o entendimento. Um abraço.
ResponderExcluirboa tarde
ResponderExcluirestou com uma problema cliquei na função para restaurar snapshots so que a maquina voltou para o estado nativo, tinha um banco de dados e aplicaçoes nessa vm, todavia nao consigo abriri pq a maquina voltou para o estado atual, alguem poderia me ajudar?