KVM

Instantáneas de invitados de KVM con Libvirt

Instantáneas de invitados de KVM con Libvirt
Las máquinas virtuales tienen muchos casos de uso, uno de los cuales es la capacidad de las máquinas virtuales para usarse como máquinas de prueba. Puede experimentar dentro de una máquina virtual, aplicar parches y probar actualizaciones antes de hacer lo mismo en sus sistemas de producción o en su estación de trabajo. También puede usar máquinas virtuales desechables, que carecen de datos personales o confidenciales, para pruebas de malware como lo hace la mayoría de la comunidad de seguridad, solo asegúrese de que la red de la máquina virtual esté aislada de su host y LAN.

Sin embargo, se vuelve tedioso reinstalar el sistema operativo dentro de su VM una y otra vez. Impide su flujo de trabajo y, por lo tanto, necesita una forma confiable de:

  1. Tome una instantánea de su máquina virtual en cualquier momento dado.
  2. Tenga un mecanismo para usar la instantánea para revertir su VM a un estado de trabajo anterior.

Anteriormente hablé sobre cómo funcionan las instantáneas en VirtualBox y esta vez quería discutir las instantáneas dentro de Libvirt. Usaré QEMU-KVM como hipervisor de backend para mi instalación de Libvirt. Su caso puede diferir, pero la funcionalidad y la interfaz generales no deberían ser muy diferentes, ya que libvirt hace todo lo posible para estandarizar la interfaz frontend.

Si no está familiarizado con libvirt y qemu-kvm, aquí hay una guía sobre cómo puede configurar KVM en Debian.

Crear una instantánea

Hay varias formas de tomar y administrar instantáneas de su VM. Las aplicaciones GUI como virt-manager y oVirt ofrecen la funcionalidad e incluso puede escribir scripts personalizados para interactuar con la API de libvirt que administra toda la gama de instantáneas por usted.

Sin embargo, usaré la interfaz de línea de comandos virsh para mostrar cómo puede administrar sus máquinas virtuales y sus instantáneas. Esta utilidad viene con casi todas las instalaciones de libvirt predeterminadas y debería estar disponible en una amplia gama de distribuciones.

Para los comandos a continuación, asegúrese de reemplazar el nombre de mi VM, VM1, con el nombre real de su VM. Libvirt a menudo se refiere a máquinas virtuales y contenedores como Dominios. Por lo tanto, si ve un mensaje de error que sugiere, por ejemplo, "especificar el nombre de dominio", debe proporcionar el nombre de su máquina virtual como uno de los argumentos del comando. Use el siguiente comando para enumerar todas las VM bajo la administración de Libvirt.

$ virsh list --todos

Para tomar una instantánea de una máquina virtual, simplemente ejecute:

$ virsh snapshot-create VM1

Y para enumerar todas las instantáneas de una VM determinada, use el comando:

$ virsh lista de instantáneas VM1
Estado de hora de creación de nombre
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 corriendo

Puedes ver que se crea la instantánea. De forma predeterminada, el nombre de la instantánea es su marca de tiempo de creación (el número de segundos desde la época de UNIX). La columna Hora de creación muestra la hora de creación de forma legible por humanos y la columna Estado muestra el estado de la máquina virtual cuando se tomó una instantánea. Mientras se estaba ejecutando esta máquina virtual, el estado de la instantánea también se está 'ejecutando', pero eso no significa que la instantánea en sí se esté ejecutando. No cambiará con el tiempo. Esta función también se conoce como instantánea en vivo y es bastante valiosa ya que le permite tomar una instantánea de su VM sin ningún tiempo de inactividad. Los invitados de KVM, al menos, funcionan bien con instantáneas en vivo.

Sin embargo, ciertas cargas de trabajo requieren que detenga la máquina virtual antes de que se realice una instantánea. Esto garantiza que los datos de la instantánea sean coherentes y que no haya ningún archivo a medio escribir ni datos faltantes. Si la carga de trabajo que se ejecuta en su VM tiene un IO alto, probablemente deba apagar la VM antes de crear la instantánea. Creemos uno de esta manera.

$ virsh apagar VM1

El dominio VM1 se está cerrando

$ virsh snapshot-create VM1

Se creó la instantánea de dominio 1556533868

[correo electrónico protegido]: ~ # virsh snapshot-list VM1
Estado de hora de creación de nombre
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 corriendo
1556533868 2019-04-29 16:01:08 +0530 cierre
 
$ virsh iniciar VM1
Se inició el dominio VM1

Si desea asignar un nombre a las instantáneas que no sea la marca de tiempo, use el comando:

$ virsh snapshot-create-as VM1 --name snap1
Estado de hora de creación de nombre
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 corriendo
1556533868 2019-04-29 16:01:08 +0530 cierre
snap1 2019-05-02 22:27:48 +0530 en ejecución

Obviamente, no tiene que nombrarlo snap1, puede elegir cualquier nombre conveniente.

Revertir desde una instantánea

Tomar una instantánea no sirve de nada si no puede volver a ella. En caso de que necesite volver a una instantánea, simplemente use el comando:

$ virsh instantánea-revertir $ VMName $ instantánea-nombre

El nombre puede ser la marca de tiempo o el nombre asignado por el usuario dado a la instantánea.

Asegúrese de que no haya datos importantes en su VM actual, o si hay algo importante, luego tome una instantánea de su VM actual y luego vuelva a una instantánea anterior.

Beneficios de QCOW2

El mecanismo de copia en escritura de los archivos qcow2 permite que cada instantánea ocupe un espacio muy pequeño. El espacio ocupado por una instantánea aumenta con el tiempo a medida que la imagen en ejecución difiere de la instantánea. Por lo tanto, siempre que no reescriba muchos datos, sus instantáneas solo ocuparán unos pocos MB de almacenamiento.

También significa que las instantáneas también son muy rápidas. Dado que, el mecanismo de copia en escritura solo necesita marcar la marca de tiempo cuando se tomó la instantánea. Los bloques de datos escritos en el archivo qcow2 después de la instantánea no le pertenecen, pero los más antiguos sí. Es tan simple como eso. Mi banco de pruebas usa un disco duro de 5400 RPM que de ninguna manera está en el pico de su rendimiento, aún toma menos de unos segundos tomar una instantánea en vivo de una máquina virtual en este disco.

Conclusión

Al igual que con la mayoría de las utilidades relacionadas con libvirt y virsh, la funcionalidad de instantáneas proporciona una interfaz muy flexible con características de nivel empresarial como instantáneas en vivo junto con los beneficios del mecanismo de copia en escritura.

La convención de nomenclatura predeterminada también facilita que los scripts de shell eliminen periódicamente las instantáneas antiguas y las reemplacen por otras más nuevas. Uno de mis artículos más antiguos sobre instantáneas de OpenZFS y políticas de instantáneas también se puede aplicar a su invitado KVM. Para obtener más información sobre la utilidad virsh snapshot, puede utilizar el comando virsh help snapshot. La página de ayuda es muy pequeña, precisa y fácil de entender.

Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...
Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....