As capturas instantâneas da VM do Hyper-V crescem continuamente conforme as gravações são feitas no HDD?

2

(Observe que, embora essa questão seja especificamente sobre o Hyper-v, estou realmente interessado em uma resposta de instantâneo de VM generalizada, a menos que a resposta específica para Hyper-v não se aplique a essa explicação geral.)

Eu trabalho em uma grande empresa com infra-estrutura de VM de tamanho decente (alguns milhares de VMs). Um dos meus engenheiros de servidor está me dizendo que eles não permitem o salvamento de instantâneos de VM por muito tempo - eles permitirão que um instantâneo seja considerado um fallback antes de fazer uma alteração significativa em uma VM, mas precisam ser excluídos em breve depois (alguns dias mais ou menos, uma vez que temos certeza de que nossas mudanças não quebraram nada).

Estou bem com esse procedimento - não espero que os snapshots sirvam como proxy para backups reais etc. E posso respeitar o desejo deles de economizar espaço no ambiente. O que eu discordo é o seu raciocínio. Ele diz que a razão pela qual eles precisam apagá-los é que "os snapshots podem crescer sem limites, toda vez que você grava no HDD, ele grava dados adicionais no snapshot, sem limite. Isso é diferente de quando você provisiona o HDD virtual original, onde você pode especificar um tamanho máximo. Você não pode especificar um tamanho máximo para um instantâneo. "

Pelo que entendi, as imagens de instantâneos são DELTA da imagem de disco principal. Por exemplo, se eu tiver um bloco na imagem original que se pareça com:

0101 0101 0101

... e eu reescrevo a seção intermediária da seguinte forma:

0101 1111 0101

... então o instantâneo armazena apenas a DIFERENÇA entre os dois (além de alguma sobrecarga da estrutura de dados que, tenho certeza, adiciona complexidade, mas não significativa de uma perspectiva de armazenamento). Além disso, eu entendo que se eu fosse reescrever esses blocos de volta ao estado original, o delta então descartaria esse bloco (para que futuras leituras daquele bloco fossem lidas para a imagem original).

(Eu não sei muito sobre como o instantâneo armazena a diferença - tenho certeza de que existem estruturas muito complexas que são necessárias para manter tudo organizado. Estou interessado apenas no princípio de que ele armazena a diferença , mas não um "histórico de execução" de alterações.

Ele diz que os instantâneos não funcionam assim - ele diz que se eu tiver um bloco de dados, eu mudo, e então eu mudo de volta, que CADA vez que eu fizer isso, o instantâneo vai crescer, eventualmente comendo muito espaço em disco.

Entendi que um instantâneo nunca poderia exceder o tamanho da imagem original (por exemplo, se você invertesse literalmente cada bit no HDD, o delta armazenaria isso), talvez com um tamanho de sobrecarga constante. Ele parece pensar que isso não é verdade, que um instantâneo de VM irá crescer sem limites conforme mais e mais gravações forem feitas no disco rígido virtual.

Estou errando algo sobre como os instantâneos da VM funcionam?

    
por loneboat 30.08.2018 / 18:32

1 resposta

2

Seus engenheiros estão seguindo uma boa prática, mas pelos motivos errados. Você está correto em dizer que o VHDX (ou qualquer tecnologia de disco virtual que esteja sendo usada) irá:

  • Reutilizar blocos escritos para reescrever e escrever tudo novo
  • Ter um limite de tamanho físico igual ao tamanho máximo configurado para o disco virtual pai. O motivo pelo qual você não pode especificar um tamanho máximo para uma captura instantânea é porque o VHDX pai já a especificou.

No entanto, não tenho conhecimento de nenhum mecanismo que descarte deltas previamente gravados se o bloco for retornado ao seu estado original. A sobrecarga de desempenho de executar um algoritmo de diferença em blocos de origem e delta vs. manter um registro simples de gravações em bloco seria substancial mesmo em uma escala relativamente pequena.

A menos que a VM tenha uma grande quantidade de rotatividade de discos, você provavelmente não verá seu instantâneo crescer horrivelmente.

Uma VM com um único instantâneo também não tem perda significativa de desempenho, embora eu não veja isso em nenhum lugar.

Os instantâneos têm três problemas muito reais:

  • Problemas ambientais podem resultar em discos AVHDX órfãos
  • A cada minuto que o instantâneo existe, ele se move ao longo do espectro de "valioso" para "passivo"
  • Os dados não são duplicados

Além disso, mesmo que um instantâneo não possa crescer verdadeiramente ilimitado, imagine um ambiente sem controles em instantâneos. Um único instantâneo poderia, teoricamente, crescer para dobrar o tamanho alocado de seus pais. Acredito que a Microsoft tenha instituído um limite máximo de 50 snapshots por VM, mas apenas como uma opção "OK, agora você está apenas sendo bobo", à prova de falhas, não porque a tecnologia exija isso. Portanto, o limite superior teórico para uma VM é 51x tamanho alocado. Embora isso não seja uma coisa que provavelmente acontecerá, você pode ver como até mesmo ter algumas VMs com vários instantâneos pode causar dor de cabeça aos administradores de armazenamento. Certamente serve em favor de instituir uma limitação razoável de uso de instantâneos.

Problemas ambientais para instantâneos

Muitas coisas podem se encaixar como causa raiz de problemas nessa categoria. Todos eles se resumem a um problema fundamental: se o VHDX pai é modificado em qualquer forma, o AVHDX é completamente invalidado e totalmente inútil. Se a VM proprietária estiver ligada, essas modificações devem ser proibitivamente difíceis. Mas, se a VM proprietária estiver desativada, o VHDX pai será apenas um arquivo. O Hyper-V ou seus outros sistemas não saberão que nada está errado até que você tente acessar o AVHDX filho.

Quanto mais tempo o snapshot existir, maior a probabilidade de algo dar errado, especialmente em um ambiente com vários administradores. Se uma VM tiver vários instantâneos, os problemas serão potencialmente compostos.

Este problema não é particular para instantâneos; esses problemas podem ocorrer com qualquer sistema de diferenciação de disco virtual.

Instantâneos desvalorizam com a idade

Este é realmente o principal motivo para não manter os instantâneos por muito tempo. Como você supôs corretamente, o mecanismo de diferenciação não não mantém um registro histórico de mudanças; somente a alteração mais recente em um bloco é mantida. Portanto, você tem apenas a máquina virtual como existe agora no formulário pós-instantâneo e a VM como existia quando a captura instantânea foi obtida. Você pode reverter para o antigo ou manter o novo. Não há meio termo.

Por razões de argumentação (e porque isso aconteceu), digamos que você tenha um pequeno ambiente do Exchange que seja executado em uma única máquina virtual. Você tira um instantâneo antes de atualizar do Exchange 2013 para o Exchange 2016. E, em seguida, permite que ele seja executado por um ano. Que bom é esse instantâneo? Você voltaria a isso? Cuidado para adivinhar quanto tempo essa mesclagem vai demorar quando você excluí-lo?

Instantâneos não duplicam dados

O objetivo de um instantâneo é rapidamente encaixar uma máquina virtual em um ponto no tempo. Isso é feito modificando diretamente o estado da máquina virtual. Em nenhum momento faz uma duplicata dos dados. Se o AVHDX estiver danificado, somente o pai conterá informações válidas e quaisquer alterações feitas desde a perda do instantâneo. Se o VHDX pai estiver danificado, os dois arquivos serão inúteis. Além disso, não tenho conhecimento de nenhuma ferramenta que possa mergulhar em um AVHDX e extrair apenas dados alterados. Portanto, para manter estados diferentes durante um período de tempo significativo, o backup é sua melhor opção. Não é tão rápido nem conveniente trabalhar com um instantâneo, mas trata de todos os outros problemas.

    
por 10.09.2018 / 17:21