XenServer: Snapshots

  En esta lección comentaremos los conceptos necesarios para entender el servicio de snapshots (instantáneas) para máquinas virtuales que provee XenServer. Posteriormente practicaremos con los diferentes tipos de snapshots que pueden realizarse, y sus aplicaciones.

MA icono manual(ACCEDE AQUÍ AL INDICE DEL MANUAL DE CITRIX XENSERVER)

CONTENIDO DE LA LECCION

  • ¿Qué son los snapshots en XenServer?
  • Caso práctico
  • Regular Snapshots
  • Quiesced Snapshots
  • Snapshots with memory
  • Recuperación de un snapshot
  • Eliminación de snapshots
  • Otras utilidades de un snapshot
  • Regular snapshots con powershell en XenServer

¿Qué son los snapshots en XenServer?

   El mecanismo de toma de snapshots de una máquina virtual obtiene una instantánea de su almacenamiento y sus metadatos, es decir, su configuración, incluidas las vif conectadas. Esto permite, si fuese necesario, volver a tener la máquina virtual exactamente al mismo estado que estaba cuando se tomó dicho snapshot.

XenServer permite obtener tres tipos de snapshots:

  • Regular: se puede obtener en todo tipo de máquinas virtuales. Es el snapshot “básico”.
  • Quiesced: utiliza el sistema Volume Shadow Copy Service (VSS) de Windows, lo que permite realizar snapshots completamente consistentes. Esto es de gran utilidad en aplicaciones como SQL Server. Los sistemas operativos de cliente Windows 2000, XP y Vista no están soportados.
  • With memory: también captura la memoria física (RAM). Por tanto, la máquina virtual debe estar en ejecución o suspendida.

Caso práctico

   A medida que se van desarrollando los cursos en L023 Formación, se plantea la posibilidad de tener una instantánea de las máquinas virtuales a medida que se avanza con las lecciones. De esta manera, se pueden revertir las máquinas virtuales a una lección anterior si fuese necesario. Para ello, se realizarán snapshots de las máquinas virtuales cuando se acaba cada lección o cuando se va a realizar alguna operación “peligrosa” en ellas, como instalación de actualizaciones en el sistema operativo invitado.

 

Regular Snapshots

   Para realizar un regular snapshot desde XenCenter, se elige la máquina virtual (vamos a ejecutarlo sobre la máquina virtual VIRT001) en el panel izquierdo y en el derecho se selecciona la pestaña “Snapshots”. En ella, al hacer clic en “Take Snapshot…”  se abre la ventana de opciones para tomar el snapshot. Se debe introducir un nombre para el snapshot y opcionalmente una descripción.

 

   Por último, al hacer clic en “Take Snapshot”, se realizará el proceso de captura.

   Con el comando xe, para obtener un regular snapshot de la máquina virtual VIRT002, ejecutaremos desde una sesión ssh en el pool master el comando xe vm-snapshot:

[root@l023xse01 ~]# xe vm-snapshot vm=dd7c244b-7d45-4509-6117-f1215eef58eb new-name-label=”snap_reg_virt002_01″ new-name-description=”Snapshot regular de la máquina virtual VIRT002 pre update”

   Donde el parámetro vm es el uuid de la máquina virtual, new-name-label el nombre que queremos dar al snapshot y new-name-description la descripción opcional para ese snapshot.

   El comando devuelve el resultado:

0f9a32ef-c830-ff57-677c-72f7ba85a486

que es el uuid del snapshot realizado.

   Podemos comprobar la existencia de ambos snapshot ejecutando, por ejemplo en la misma sesión, el comando xe snapshot-list:

[root@l023xse01 ~]# xe snapshot-list

Resultado:

uuid ( RO)                : 63822669-535d-46ee-26b9-d155ce1a9161
name-label ( RW): snap_reg_virt001_01
name-description ( RW): Snapshot regular de la máquina virtual virt001 pre update

uuid ( RO)                : 0f9a32ef-c830-ff57-677c-72f7ba85a486
name-label ( RW): snap_reg_virt002_01
name-description ( RW): Snapshot regular de la máquina virtual VIRT002 pre update

 

Quiesced Snapshots

   Para poder tomar un snapshot quiesced primero debemos preparar la máquina virtual. Por supuesto, se deben tener instaladas las XenServer Tools. Dentro de la máquina virtual, en el directorio de instalación de las XenServer Tools (normalmente C:Program Files (x86)CitrixXenTools), se debe ejecutar el fichero install-XenProvider.cmd.

 

   Después ya se puede ejecutar desde XenCenter, del mismo modo que el regular snapshot del anterior apartado, el quiesced snapshot. Sólo se debe marcar el check “Quiesce the VM before taking the snaphot (Windows only)” en la ventana “Take Snapshot”.

 

   Para tomar el quiesced snapshot utilizando el comando xe, se debe ejecutar el comando xe vm-snapshot-with-quiesce. Tomaremos un quiesce snapshot de la máquina virtual VIRT009 (Windows Server 2012 R2), estando dicha máquina virtual en ejecución. Para ello, desde una sesión ssh como usuario root en el pool master, ejecutamos:

[root@l023xse01 ~]# xe vm-snapshot-with-quiesce vm=cdb62af0-b233-8883-67d1-d19c20ccd649 new-name-label=”snap_qui_virt009_01″ new-name-description=”Snapshot quiesce de la máquina virtual VIRT009 pre update”

Resultado:

b71dcd62-26f3-10d9-e62b-d48b8472d14a

 

Snapshots with memory

  Desde XenCenter, se puede obtener un snapshot with memory desde la misma ventana que los anteriores, pero marcando el check “snapshot the virtual machine´s disks and memory”.

 

Para obtenerlo con el comando xe, se debe ejecutar xe vm-checkpoint. Por ejemplo, si queremos realizar un snapshot with memory de la máquina virtual VIRT004, ejecutamos desde una sesión ssh como root en el pool master:

[root@l023xse01 ~]# xe vm-checkpoint vm=b530f36c-cf17-22dd-7e64-cfb904a57cda new-name-label=”snap_mem_virt004_01″ new-name-description=”Snapshot with memory de la máquina virtual VIRT004 pre update”

Resultado:

f6ae76e2-d8de-68d7-6545-b1e618584732

Recuperación de un snapshot

   El objetivo de tomar snapshots de máquinas virtuales es, principalmente, poder revertir el estado de la máquina virtual al momento en el que se tomó alguna de sus instantáneas.

   Para poder hacer esto desde XenCenter, en la propia pestaña “Snapshots” de la máquina virtual en cuestión, se puede seleccionar el snapshot a utilizar y hacer clic en “Revert To…”.

   Como ejemplo, seguiremos estos pasos para revertir la máquina virtual VIRT001 al snapshot “snap_reg_virt001_01”. Al hacer clic en “Revert To””…” aparece un mensaje de advertencia, en el que se informa que el estado actual de la máquina virtual se perderá, y se ofrece mediante un check (“Take a snapshot of the VM´s current state and then  revert”) la posibilidad de guardar dicho estado actual antes de revertir la máquina virtual.

 

   En cualquier caso, al hacer clic en “Yes” la máquina virtual volvería a estar exactamente igual que cuando se tomó el snapshot.

   Para realizar la misma operación con la utilidad xe, se debe utilizar el comando xe snapshot-revert, utilizando como argumento el uuid del snapshot al que se quiere revertir la máquina virtual. Los pasos serían:

1.- Abrimos una conexión ssh como root al pool master.

2.- Obtenemos el uuid de la máquina virtual VIRT001 con el comando xe vm-list:

[root@l023xse01 ~]# xe vm-list name-label=VIRT001 params=uuid

Resultado:

uuid ( RO)    : 7c39955f-458c-3669-a5f5-72edd6c1fc34

3.- Obtenemos el listado de snapshots disponibles para la máquina virtual VIRT001:

[root@l023xse01 ~]# xe snapshot-list snapshot-of=7c39955f-458c-3669-a5f5-72edd6c1fc34

Resultado (la máquina virtual sólo dispone de un snapshot):

uuid ( RO)                : 63822669-535d-46ee-26b9-d155ce1a9161
name-label ( RW): snap_reg_virt001_01
name-description ( RW): Snapshot regular de la máquina virtual virt001 pre update

 

4.- Revertimos la máquina virtual al snapshot “snap_reg_virt001_01” con el comando xe snapshot-revert:

[root@l023xse01 ~]# xe snapshot-revert snapshot-uuid=63822669-535d-46ee-26b9-d155ce1a9161

 

Eliminación de snapshots

   Si un snapshot ya no es necesario (por ejemplo, si el snapshot se tomó antes de instalar una actualización en el sistema operativo invitado, y después de aplicarla se ha comprobado que las aplicaciones de la máquina virtual funcionan correctamente), puede eliminarse con el comando xe snapshot-uninstall.

   Eliminaremos el snapshot snap_reg_virt001_01 de la máquina virtual VIRT001 utilizado anteriormente. Para ello, desde una sesión ssh como root en el pool master, ejecutamos:

[root@l023xse01 ~]# xe snapshot-uninstall snapshot-uuid=63822669-535d-46ee-26b9-d155ce1a9161

   XenServer nos imprime una advertencia:

The following items are about to be destroyed
VM : 63822669-535d-46ee-26b9-d155ce1a9161 (snap_reg_virt001_01)
VDI: 7d1582ba-aa63-473f-886c-8cffc0e72161 (VIRT001_0)
Type ‘yes’ to continue

   Debemos escribir “yes” si estamos seguros de la operación:
yes
All objects destroyed

 

Otras utilidades de un snapshot

   En la pestaña “Snapshots” de una máquina virtual, si seleccionamos un snapshot y hacemos clic en “Actions”, o si sobre el mismo snapshot accedemos con el botón derecho del ratón a su menú contextual observaremos que XenServer nos permite realizar más operaciones aparte de revertir la máquina virtual a dicho snapshot.

 

Estas operaciones son muy útiles:

  • “New VM from snapshot…”: nos permite crear una nueva y diferente máquina virtual a partir del estado capturado en el snapshot.
  • “Save as a Template…”: creará una plantilla basada en el estado capturado en el snasphot, a partir de la cual se podrán crear nuevas máquinas virtuales.
  • “Export to File…”: exportará a una fichero xva el estado de la máquina virtual capturado en el snapshot.

Regular snapshots con powershell en XenServer

   Para poder utilizar cmdlets powershell específicos de XenServer es necesario instalar en la máquina Windows desde la que se quiera hacer uso de ellos el snap-in XenServerPSSnapIn (ver la lección 3 de este mismo manual, “Administración con XenCenter, consola, xe CLI y PowerShell”, en la sección “Powershell”).

   Vamos a obtener un regular snapshot de la máquina virtual VIRT001 desde powershell. Los pasos necesarios son:

1.- Desde una consola powershell, importar el snap-in XenServerPSSnapIn:

PS C:windowssystem32> Add-PSSnapin XenServerPSSnapIn

2.- Conectar con el pool master:

PS C:windowssystem32> Connect-XenServer -Server l023xse01

En la ventana de autenticación conectamos como root.

3.- Obtener el snapshot:

PS C:windowssystem32> Invoke-XenVM -VM VIRT001 -XenAction Snapshot -NewName snap_reg_virt001_01

MA icono siguiente Siguiente: Lección 17 – XenServer: Métricas de Rendimiento y Alertas