jueves, 4 de septiembre de 2008

VirtualBox: Snapshots (combinar, fusionar o integrar)

Cuando trabamos con máquinas virtuales en VirtualBox, hay que tener claro que trabajamos con dos subconjuntos de archivos. Por un lado, tenemos los archivos que contienen las imágenes propiamente dichas de la máquina virtualizada (los archivos con extensión vdi; un archivo vdi por cada máquina virtual). Si no trabajamos con el concepto de snapshot, aquí se queda la cosa. Lo que hay que tener cuidado es que en el momento que creamos snapshots (instantáneas de la máquina virtual a las que podemos volver), todos los cambios que se hagan a partir de ahora en esa máquina virtual ya no se almacenan en el archivo vdi (padre o raiz) correspondiente, si no en otro archivo (también con extensión vdi) independiente asociado a cada snapshot que tomemos. Para tener esto claro, lo mejor es ir a la pantalla de preferencias de VirtualBox,

donde comprobamos que distingue entre la ubicación de los 'VDI files' padres, y las 'Machines'. En esta última ruta creará una subcarpeta por cada máquina virtual que tengamos, y dentro de ésta, una subcarpeta 'snapshot' donde se guardará un archivo por cada snapshot que saquemos de esa máquina virtual. Mejor verlo visualmente, porque así explicado resulta un 'galimatías':


Pero el motivo de la entrada era recoger un duda que siempre que trabajo con los snapshots de Virtualbox se me plantea:

¿Qué ocurre cuando, después de sacar un snapshot y trabajar con él durante un tiempo, decidimos que en lugar de descartarlo para trabajar con el estado anterior de la máquina (que suele ser lo habitual), queremos combinar o fusionar (merge) la imagen en disco del snapshot con la imagen en disco padre (o la imagen en disco del snapshot anterior, si tenemos varios snapshots anidados)?

Pues para ello seleccionamos el snapshot que queremos fusionar, y ejecutamos la orden 'Discard snapshot' usando el botón de la barra de herramientas correspondiente:


De esta manera conseguimos combinar (referido a la imagen en disco) el contenido del snapshot seleccionado con el vdi o snapshot anterior. Digamos que es una manera de 'dar por bueno' todo el trabajo realizado en el snapshot (en argot de sistema de control de versiones, es como si después de hacer un 'branch', hiciésemos un 'merge' dentro del 'trunk').

2 comentarios:

Fede Agostini dijo...

Que pasa si se hizo un snapshot y en lugar de usar el "estado actual" se usa ese snapshot como disco.
Y ahora se necesita unificar, que puede pasar??

jmunin dijo...

No sé si te he entendido bien:
- tienes una vdi raíz.
- en un momento dado sacas un snapshot (lo que genera un vdi independiente al anterior).
- haces cambios dentro de esa máquina virtual (instalas programas, generas documentos, etc), que se van guardando en el vdi del snapshot.

Y ahora viene tu pregunta. Entiendo que si no quieres usar el estado actual, quieres descartarlo. Para ello ejecutarías la orden 'Restore snapshot', en lugar de 'Discard/Delete snapshot'.
Una vez descartados los cambios realizados a partir del snapshot, si quieres unificar el snapshot con el vdi anterior (snapshot si lo hubiese, de lo contrario con el vdi raíz) ejecutaríamos ahora sí la orden 'Discard/Delete snapshot'.