(Tenga en cuenta que, si bien esta pregunta trata específicamente sobre Hyper-v, en realidad estoy interesado en una respuesta generalizada de instantáneas de VM, a menos que la respuesta específica para Hyper-v no se aplique a una explicación tan general).
Trabajo en una gran empresa con una infraestructura de VM de tamaño decente (unos pocos miles de VM). Uno de mis ingenieros de servidores me dice que no permiten guardar instantáneas de VM durante mucho tiempo; permitirán que se tome una instantánea como alternativa antes de realizar un cambio significativo en una VM, pero que deben eliminarla en breve. después (unos días más o menos, una vez que estemos seguros de que nuestros cambios no alteraron nada).
Estoy de acuerdo con ese procedimiento: no espero que las instantáneas sirvan como proxy para copias de seguridad reales, etc. Y puedo respetar su deseo de conservar espacio en el entorno. Con lo que no estoy de acuerdo es con su razonamiento. Dice que la razón por la que necesitan eliminarlas después es que "las instantáneas pueden crecer sin límites, cada vez que escribes en el HDD, se escriben datos adicionales en la instantánea, sin límite. Esto es diferente de cuando aprovisionas el HDD virtual original, donde puede especificar un tamaño máximo. No puede especificar un tamaño máximo para una instantánea.
Según tengo entendido, las imágenes instantáneas son un DELTA de la imagen del disco principal. Por ejemplo, si tengo un bloque en la imagen original que se parece a:
0101 0101 0101
... y luego reescribo la sección central así:
0101 1111 0101
... entonces la instantánea solo almacena la DIFERENCIA entre los dos (más cierta sobrecarga de estructura de datos que estoy seguro agrega complejidad, pero no es significativa desde la perspectiva del almacenamiento). Además, entiendo que si tuviera que irvolver a escribiresos bloques regresan a su estado original, el delta luego descartará ese bloque (de modo que las lecturas futuras de ese bloque leerán la imagen original).
(No sé mucho sobre CÓMO la instantánea almacena la diferencia; estoy seguro de que hay estructuras muy complejas que son necesarias para mantener todo organizado. Solo me interesa el principio de que SÍ almacena la diferencia, pero no un "historial continuo" de cambios).
Dice que las instantáneas no funcionan así; dice que si tengo un bloque de datos, lo cambio y luego lo vuelvo a cambiar, que CADA vez que haga esto, la instantánea crecerá y eventualmente consumirá una gran cantidad de Espacio del disco.
Tenía entendido que una instantánea nunca podría exceder el tamaño de la imagen original (por ejemplo, si volteaba literalmente cada bit del disco duro, el delta lo almacenaría), tal vez también con un tamaño superior constante. Parece pensar que esto no es cierto, que una instantánea de VM crecerá ilimitadamente a medida que se realicen más y más escrituras en el disco duro virtual.
¿Estoy entendiendo mal algo sobre cómo funcionan las instantáneas de VM?
Respuesta1
Sus ingenieros están siguiendo una buena práctica, pero por motivos equivocados. Tiene razón en que el VHDX (o cualquier tecnología de disco virtual que se esté utilizando):
- Reutilice bloques escritos al reescribir en lugar de escribir completamente nuevo
- Tener un límite de tamaño estricto igual al tamaño máximo configurado para el disco virtual principal. La razón por la que no puede especificar un tamaño máximo para una instantánea es porque el VHDX principal ya lo ha especificado.
Sin embargo, no conozco ningún mecanismo que descarte los deltas escritos previamente si el bloque regresa a su estado original. La sobrecarga de rendimiento de ejecutar un algoritmo de diferencia en bloques fuente y delta versus mantener un registro simple de escrituras de bloques sería sustancial incluso a una escala relativamente pequeña.
Sin embargo, a menos que la VM tenga una gran cantidad de rotación de discos, probablemente no verás que su instantánea crezca horriblemente.
Una máquina virtual con una única instantánea tampoco tiene ninguna pérdida de rendimiento significativa, aunque no veo que eso se mencione en ninguna parte.
Las instantáneas tienen tres problemas muy reales:
- Los problemas ambientales pueden provocar que los discos AVHDX queden huérfanos
- Cada minuto que existe la instantánea, se mueve a lo largo del espectro desde "valiosa" hacia "responsable".
- Los datos no están duplicados.
Además, aunque una instantánea no puede crecer de manera verdaderamente ilimitada per se, imagine un entorno sin controles sobre las instantáneas. En teoría, una sola instantánea podría crecer hasta duplicar el tamaño asignado a su padre. Creo que Microsoft instituyó un límite estricto de 50 instantáneas por máquina virtual, pero solo como una especie de mecanismo a prueba de fallas de "Está bien, ahora estás siendo tonto", no porque la tecnología lo requiera. Por lo tanto, el límite superior teórico para una máquina virtual es 51 veces el tamaño asignado. Si bien eso no es algo que probablemente suceda alguna vez, puede ver cómo incluso tener algunas máquinas virtuales con múltiples instantáneas podría causarles un dolor de cabeza a sus administradores de almacenamiento. Sin duda, favorece la institución de una limitación razonable del uso de instantáneas.
Problemas ambientales de las instantáneas
Muchas cosas podrían encajar como causa raíz de los problemas en esta categoría. Todos se reducen a un problema fundamental: si el VHDX principal se modifica encualquierDe esta manera, el AVHDX queda completamente invalidado y es completamente inútil. Si la máquina virtual propietaria está encendida, dichas modificaciones deberían ser prohibitivamente difíciles. Pero, si la VM propietaria está apagada, entonces el VHDX principal es solo un archivo. Hyper-V o sus otros sistemas no sabrán que algo anda mal hasta que intente acceder al AVHDX secundario.
Cuanto más tiempo exista la instantánea, mayor será la probabilidad de que algo salga mal, especialmente en un entorno con varios administradores. Si una máquina virtual tiene varias instantáneas, los problemas pueden agravarse.
Este problema no es exclusivo de las instantáneas; Estos problemas pueden ocurrir con cualquier sistema de diferenciación de discos virtuales.
Las instantáneas se devalúan con la edad
Esta es realmente la razón principal para no conservar las instantáneas por mucho tiempo. Como supuso correctamente, el mecanismo de diferenciación nonomantener un registro histórico de cambios; sólo se conserva el cambio más reciente realizado en un bloque. Por lo tanto, solo tiene la máquina virtual tal como existe ahora en forma posterior a la instantánea y la VM tal como existía cuando se tomó la instantánea. Puede volver al antiguo o conservar el nuevo. No hay término medio.
Por el bien del argumento (y porque esto ha sucedido), digamos que tiene un pequeño entorno Exchange que se ejecuta en una sola máquina virtual. Toma una instantánea antes de actualizar de Exchange 2013 a Exchange 2016. Y luego la deja funcionar durante un año. ¿De qué sirve esa instantánea? ¿Volverías a ello? ¿Te importaría adivinar cuánto tiempo llevará esa fusión cuando la elimines?
Las instantáneas no duplican datos
El propósito de una instantánea es retroceder rápidamente una máquina virtual a un momento determinado. Lo hace modificando directamente el estado de la máquina virtual. En ningún momento realiza un duplicado de los datos. Si el AVHDX está dañado, solo el padre tendrá información válida y se perderán todos los cambios realizados desde la instantánea. Si el VHDX principal está dañado, ambos archivos son inútiles. Además, no conozco ninguna herramienta que pueda sumergirse en un AVHDX y extraer solo los datos modificados. Por lo tanto, para mantener diferentes estados durante un período de tiempo significativo, la copia de seguridad es su mejor opción. No es tan rápido ni tan conveniente trabajar con él como una instantánea, pero soluciona todos los demás problemas.