¿Cómo funciona la instantánea de la máquina virtual?

16

Después de haber utilizado el software de imágenes de disco durante más de una década, me parece alucinante que las máquinas virtuales se puedan tomar instantáneas y restaurar en cuestión de segundos, mientras que la imagen de disco a menudo lleva horas.

Puedo hacer una instantánea de una VM, reinstalarla en un sistema operativo diferente, luego hacer una restauración y de alguna manera mágica, en cuestión de segundos, mi VM anterior vuelve a estar perfectamente en el estado en el que estaba anteriormente.

¿Cómo puede suceder esto? ¿Qué hace realmente el host VM a la VM que hace esto posible?

Matias Nino
fuente

Respuestas:

16

Cuando crea una instantánea, todos los cambios realizados en la imagen inicial del disco virtual no se realizan en la imagen en sí, sino que se escriben en un nuevo archivo de disco (instantánea). Esta acción es tan rápida porque no hay necesidad de copiar la imagen completa del disco virtual, ya que funciona en el principio de copia en escritura (solo cambia, es decir, los bloques escritos se escriben en la imagen instantánea). Tenga en cuenta que la imagen de la instantánea crece a medida que cambia más y más datos en su imagen de disco virtual original (que permanece como estaba en el momento en que tomó la instantánea). Probablemente será mucho más pequeño que la imagen original, pero en el peor de los casos será exactamente del mismo tamaño (si se cambiaron todos los bloques).

Hay dos acciones que puede realizar con esta nueva imagen instantánea:

  1. Descartar instantánea : acción muy rápida. El administrador de máquina virtual simplemente elimina el archivo de imagen de instantánea y devuelve el control a la imagen de disco original o algunas de las instantáneas anteriores
  2. Combinar instantánea : el administrador de máquina virtual combina los bloques modificados (es decir, la imagen de la instantánea) con la imagen original. Esta acción llevará tiempo dependiendo de cuántos bloques de la imagen original hayan cambiado. Una vez más, el peor de los casos es que toda la imagen original se sobrescribirá en caso de que todos los bloques de la imagen original se hayan escrito después de la creación de una instantánea.

Todos los procedimientos descritos anteriormente también funcionan para múltiples instantáneas. En ese caso, la imagen original puede ser una instantánea, y la siguiente instantánea puede hacer referencia al bloque en esa (primera) instantánea. De esta manera, puede tener muchas instantáneas que puede descartar o fusionar con facilidad.

ipozgaj
fuente
1
la instantánea de descarte, como cualquier proceso de eliminación de imágenes, en realidad puede ser bastante lenta, si tiene activada la función de borrar después de borrar. Es una característica de seguridad para limpiar el espacio utilizado por una imagen o una instantánea limpia antes de que otras máquinas virtuales puedan usarla, de lo contrario, utilizando la lectura de bloque de bajo nivel, es posible leer los datos que la VM anterior utilizó. Y cualquier solución de virtualización que no tenga esta característica tiene una gran falla de seguridad
dyasny
Intenté explicar el escenario de creación de múltiples instantáneas y cómo se conservan los cambios con cada instantánea. Vea esta breve explicación sobre el funcionamiento de las instantáneas de VMware: cubicrace.com/2012/02/…
Piyush Chordia
5

Con una instantánea, su software de virtualización debe realizar un seguimiento de cuatro cosas: estado de la CPU, RAM, configuración (¿cuántas tarjetas de red en la VM?) Y disco. Estoy ignorando las tres primeras cosas porque no son grandes cantidades de datos, el software solo puede hacer copias de las estructuras de datos relativamente pequeñas y almacenarlas en un archivo. Entonces, eso deja solo la instantánea del disco para explicar.

En primer lugar, lo que la VM ve como un disco duro es realmente solo un conjunto de archivos en el sistema de archivos del host. Para hacer una instantánea, el software de la máquina virtual toma el disco de la VM en un determinado momento, lo conserva, abre un nuevo archivo de disco vacío y realiza un esquema de copia en escritura con cada acceso posterior al disco.

Digamos que su archivo de disco es BigVM.disk. Usted toma una instantánea y ahora su software VM cambia el nombre de su disco a BigVM-s1.disk, luego crea un nuevo BigVM.disk vacío. Cuando su VM se está ejecutando, todas las solicitudes de lectura pasan por BigVM.disk. Si ese archivo no tiene una entrada para la parte del disco que desea su VM, se devuelven los datos de BigVM-s1.disk. En una escritura, los datos se escriben en BigVM.disk en lugar de BigVM-s1.disk. Una lectura futura en ese mismo sector devolverá los datos de BigVM.disk en lugar de la instantánea original contenida en BigVM-s1.disk. BigVM-s1.disk contiene el estado del disco duro de su VM a partir de su instantánea, mientras que BigVM.disk contiene todos los diferenciales de su disco desde esa instantánea.

¿Qué sucede cuando vuelves a una instantánea anterior? El software VM desecha el contenido de BigVM.disk y comienza de nuevo, con un nuevo BigVM.disk vacío que todavía apunta a BigVM-s1.disk.

kbyrd
fuente
2

Solo está escribiendo las diferencias en los archivos modificados desde el momento de la instantánea, no en el disco completo de la máquina virtual. Como unix diff y patch, excepto una versión más sofisticada que difiere a nivel binario y conoce otros detalles de su máquina virtual.

Ian Kelling
fuente
1

Al menos en las instantáneas de VMware, lo que sucede es que la instantánea es básicamente una señal para que VMX inicie un nuevo punto de control para las escrituras en disco y el estado de la máquina. Dependiendo de si su VM está apagada o encendida, la restauración de la instantánea puede implicar simplemente destruir todo lo que sucedió más allá de ese punto de control. De lo contrario, todos los sectores de disco de su VM se convierten en copia al escribir, lo que significa que cuando realiza una restauración de instantánea en caliente, solo tiene que reescribir los sectores que han cambiado desde que tomó la instantánea. Por eso es más rápido.

joshk0
fuente
-1

Trabajar en las instantáneas de VMware y su interno se explica mejor en http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html

Piyush Chordia
fuente
3
¡Bienvenido a ServerFault! Aunque se recomienda vincular a material de referencia externo, también esperamos que cada respuesta esté completa, incluso si sus enlaces se rompen en el futuro. Es posible que desee editar esta respuesta y agregar detalles adicionales.
Skyhawk