KVM (máquina virtual basada en kernel) es la solución de virtualización (Hypervisor tipo 1) incluida en el núcleo de Linux, que, por defecto, se usa junto con QEMU, el software UserSapace que realmente realiza la emulación de sistemas invitados (Hypervisor tipo 2). En un tutorial anterior, vimos cómo crear y administrar máquinas virtuales KVM desde la línea de comando; En este artículo, en cambio, aprenderemos cómo crear y administrar instantáneas de sistemas de invitados utilizando herramientas como Virsh y Virt-Manager.
En este tutorial aprendemos cómo crear instantáneas de sistemas invitados emulados con QEMU/KVM, utilizando Virsh y Virt-Manager.
En este tutorial aprenderás:
- ¿Cuál es la diferencia entre instantáneas internas y externas?
- Cómo crear, eliminar y volver a instantáneas internas usando Virsh o Virt-Manager
- Cómo enumerar las instantáneas asociadas con un dominio
- Cómo obtener información sobre una instantánea
- Cómo eliminar una instantánea interna
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Independiente de la distribución |
Software | Virsh, virt-gerager |
Otro | Privilegios administrativos si trabaja en la sesión del sistema QEMU/KVM |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo Comando $: requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Introducción
Una instantánea es básicamente una "imagen congelada" del disco, la memoria y el estado de los dispositivos asociados con un dominio, tomado en un momento específico en el tiempo. Las instantáneas son muy útiles: se pueden crear, por ejemplo, antes de realizar una tarea peligrosa potencial en el sistema, para tener una manera fácil de volver a un estado de pozo conocido.
Para crear instantáneas de sistemas de invitados al usar QEMU/KVM, podemos usar Virsh (la interfaz principal para administrar dominios desde la línea de comando) o gráficamente, con Virt Manager. Existen dos tipos de instantáneas: interno y externo. Las instantáneas internas son el valor predeterminado: se incrustan en la imagen del disco utilizada para el sistema de invitados y usan la técnica de vaca (copia en escritura): básicamente, cuando algo debe cambiarse, primero se copia a la instantánea, que los nuevos datos está escrito. La instantánea externa, por otro lado, se almacenan en archivos separados y funcionan de una manera diferente. En este tutorial nos centraremos en el primero.
Creación de instantáneas con Virsh
Se puede crear una instantánea del sistema cuando se ejecuta un invitado o cuando se apaga. Básicamente, hay dos formas en que podemos crear una instantánea con Virsh: utilizando el
creación de instantáneas
o el instantánea-create-as
comandos. La diferencia entre los dos es que El primero crea una instantánea con las propiedades especificadas en un archivo XML, mientras este último crea una instantánea de los argumentos. En aras de este tutorial utilizaremos el último enfoque. Supongamos que tenemos un dominio llamado "Fedora36" en funcionamiento. Para crear una instantánea de este dominio llamado "Snapshot-0", utilizando "Primera instantánea" como descripción, usaríamos el siguiente comando:
$ virsh snapshot-create-as Fedora36 Snapshot0-Descripción "Primera instantánea"
Si todo va como se esperaba, el sistema debe responder con:
Instantánea de dominio Fedora36-Snapshot0 creado
Usamos el instantánea-create-as
Comando Virsh y aprobado el nombre del dominio que queremos crear una instantánea del primer argumento y el nombre que queremos usar para la instantánea como la segunda. Finalmente, usamos el --descripción
opción para proporcionar una breve descripción para la instantánea. Si no se proporciona un nombre para la instantánea, se genera al azar; La descripción, en cambio, es opcional. Desde que creamos la instantánea cuando el sistema se estaba ejecutando, tanto el disco como el estado de memoria se incluyeron en ella.
Crear una instantánea con Virt-Manager
Un método alternativo para crear instantáneas internas es usar la aplicación Virt-Manager. Para usar este método, en el visor de máquina virtual, simplemente haga clic en el botón resaltado en la captura de pantalla a continuación:
Una vez que hagamos clic en el botón, se abrirá una nueva ventana. En la interfaz podremos visualizar y administrar las instantáneas asociadas con el dominio. Para agregar una instantánea, simplemente hacemos clic en el botón "Plus" ubicado en la esquina inferior izquierda, proporcionamos un nombre y una descripción para la instantánea, y finalmente hacemos clic en el botón "Finalizar":
En la captura de pantalla anterior, puede ver que hay una casilla de verificación junto al nombre existente de "Snapshot0". Esto se debe a que es la instantánea actualmente en uso. Más adelante en el tutorial veremos cómo recuperar información sobre instantáneas.
Volver a una instantánea interna
Supongamos que hicimos cambios en nuestro sistema de invitados y no estamos satisfechos con él. Como creamos una instantánea, podemos volver fácilmente a ella y Todos los cambios que realizamos desde que se creó se perderán. Para volver a un estado de instantánea usando Virsh, usamos revertir la instantánea
. Para volver a la "Snapshot0" que creamos en el ejemplo anterior, ejecutaríamos:
$ Virsh Snapshot-Revertir Fedora36 Snapshot0
Acabamos de proporcionar el nombre del dominio invitado como primer argumento, y el nombre de la instantánea como el segundo. Como alternativa, volver a la actual instantánea sin especificar su nombre, ejecutaríamos:
$ Virsh Snapshot-Revertir Fedora36-Corriente
Para volver a una instantánea utilizando la interfaz Virt-Manager, simplemente seleccionamos la instantánea a la que queremos volver en la lista, que haga clic en el botón "Reproducir":
Eliminar una instantánea interna
Eliminar una instantánea interna es bastante fácil. Todo lo que tenemos que hacer es usar el fragmento de la instantánea
Virsh submand, especificando, nuevamente, el dominio y el nombre de la instantánea que queremos eliminar. Para eliminar la "Snapshot0", por ejemplo, ejecutaríamos:
$ Virsh Snapshot-Delete Fedora36 Snapshot0
El sistema debe responder con:
Instantánea de dominio Snapshot0 eliminada
Para eliminar una instantánea con Virt-Manager, la seleccionamos en la lista y hacemos clic en el botón "Eliminar". Se nos pedirá que confirme nuestra elección:
Recuperar una lista de instantáneas existentes con Virsh
Como vimos en los ejemplos anteriores, la lista de las instantáneas disponibles para ciertos invitados es fácilmente visible cuando se usa Virt-Manager, pero cómo recuperarla de la línea de comando, cuando se usa Virsh? El lista de instantáneas
Sub comando, logremos exactamente esa tarea. Para enumerar todas las instantáneas asociadas con el dominio "Fedora36", ejecutaríamos:
$ Virsh Snapshot List Fedora36
En este caso, la salida producida por el comando es la siguiente:
Nombre Estado de tiempo de creación ---------------------------------------------- ---- Snapshot0 2022-07-28 17:53:51 +0200 Running
Por defecto, la salida se compone de tres columnas que informan información sobre el nombre de la instantánea, su tiempo de creación y el estado que tenía el dominio cuando se tomó la instantánea.
Obtener información sobre una instantánea
Para obtener información sobre una instantánea específica que utilizamos instantánea
y aprobar el nombre del dominio como primer argumento, y el nombre de la instantánea que queremos examinar como segundo. Para obtener información sobre "Snapshot0", ejecutaríamos:
$ Virsh Snapshot-Info Fedora36 Snapshot0
La salida producida por el comando debe parecer similar a la siguiente:
Nombre: Snapshot0 Dominio: Fedora36 Actual: Sí Estado: Ubicación de la ejecución: Padre interno: - Niños: 0 Descendientes: 0 Metadatos: Sí
Entre las otras cosas que podemos ver que la instantánea es la actualmente en uso, su ubicación es "interna" (como dijimos anteriormente, las instantáneas también pueden ser "externos"), y no tiene hijos ni descendientes.
Otro comando Virsh que podemos usar para recuperar información sobre una instantánea es
instantánea-dumpxml
. Se usa para mostrar el Xml representando la estructura de la instantánea. Como en el caso anterior, necesitamos especificar el dominio y el nombre de la instantánea como argumentos del comando: $ Virsh Snapshot-Dumpxml Fedora36 Snapshot0
Eliminar una instantánea
Si estamos seguros de que no necesitamos una instantánea y queremos eliminarla, podemos usar el fragmento de la instantánea
Comando Virsh. Como de costumbre, especificamos el nombre del dominio al que pertenece la instantánea y el nombre de la instantánea que queremos eliminar. Para eliminar la instantánea "Snapshot0" que utilizamos en los ejemplos anteriores que ejecutaríamos:
$ Virsh Snapshot-Delete Fedora36 Snapshot0
Si todo va como se esperaba, deberíamos recibir un mensaje como el siguiente:
Instantánea de dominio Snapshot0 eliminada
Conclusiones
Las instantáneas son una característica realmente importante: representan una imagen del estado de un sistema emulado en un punto específico en el tiempo, y podemos usarla para restaurar el sistema a un estado de pozo conocido en caso de que algo salga mal. Cuando se usa qemu/kvm en Linux, existe dos tipos de instantáneas: interno y externo. En este tutorial nos centramos en el primero, pronto hablaremos sobre el segundo, y veremos cuáles son las diferencias entre los dos.