GNU/Linux >> Tutoriales Linux >  >> Linux

Administre máquinas virtuales KVM con el programa Virsh

Virsh , abreviatura de Vir tual Sh ell, es una interfaz de usuario de línea de comandos para administrar máquinas invitadas virtuales. Virsh le permite crear, enumerar, editar, iniciar, reiniciar, detener, suspender, reanudar, apagar y eliminar máquinas virtuales. Actualmente es compatible con KVM, LXC, Xen, QEMU, OpenVZ, VirtualBox y VMware ESX. En esta guía, analizaremos cómo administrar KVM máquinas virtuales con interfaz de usuario de gestión Virsh en Linux.

Asegúrese de haber instalado la utilidad KVM y Virsh en su máquina Linux. Las siguientes guías explican cómo instalar KVM en sistemas basados ​​en DEB y RPM.

  • Instalar y configurar KVM en Ubuntu 20.04 servidor sin cabeza
  • Instalar y configurar KVM en el servidor CentOS 8
  • Instalar y configurar KVM en OpenSUSE Tumbleweed

1. Administre máquinas virtuales KVM con el comando Virsh

Si es nuevo en Virsh y KVM, es mejor comenzar leyendo el manual de ayuda. Le dará una idea básica de cómo usar Virsh.

1.1. Obtener ayuda

Ingrese el siguiente comando para ver la lista de comandos disponibles junto con una breve descripción:

$ virsh help

Verá una extensa lista de comandos virsh disponibles para administrar máquinas virtuales KVM desde la línea de comandos.

No tienes que memorizar todo. Simplemente lea la descripción de un comando que desee ejecutar y utilícelo.

Los comandos se agrupan en las siguientes secciones:

  • Gestión de dominios,
  • Supervisión de dominio,
  • Host e Hipervisor,
  • Punto de control,
  • Interfaz,
  • Filtro de red,
  • Redes,
  • Dispositivo de nodo,
  • Secreto,
  • Instantánea,
  • Copia de seguridad,
  • Conjunto de almacenamiento,
  • Volumen de almacenamiento,
  • Virsh mismo.

Cada sección contiene los comandos relacionados con un conjunto particular de tareas. Puede ver la sección de ayuda de un grupo, por ejemplo Redes , como a continuación:

$ virsh help Networking

Verá comandos relacionados con las tareas de red:

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy                    destroy (stop) a network
    net-dhcp-leases                print lease info for a given network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-event                      Network Events
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine a persistent network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID
    net-port-list                  list network ports
    net-port-create                create a network port from an XML file
    net-port-dumpxml               network port information in XML
    net-port-delete                delete the specified network port

También puede mostrar la sección de ayuda de un comando específico. Por ejemplo, voy a mostrar la sección de ayuda de "net-name" comando:

$ virsh help net-name
  NAME
    net-name - convert a network UUID to network name

  SYNOPSIS
    net-name <network>

  OPTIONS
    [--network] <string>  network uuid

1.2. Listar máquinas virtuales

Para ver la lista de máquinas virtuales invitadas en modo de ejecución o suspensión, ejecute el siguiente comando:

$ virsh list
Id Name State
--------------------

Como puede ver, no hay invitados en modo de ejecución o suspensión.

Puede usar el --inactive opción para listar invitados inactivos.

Para ver todas las máquinas invitadas, ejecute:

$ virsh list --all
 Id   Name            State
--------------------------------
 -    centos8-uefi    shut off
 -    nginx_centos8   shut off

Como puede ver en el resultado anterior, tengo dos máquinas virtuales, a saber, "centos8-uefi" y "nginx_centos8". Ambos están apagados.

1.3. Iniciar Máquinas virtuales

Para iniciar una máquina virtual, por ejemplo "centos8-uefi", ejecute:

$ virsh start centos8-uefi

Verá una salida como la siguiente:

Domain centos8-uefi started

Para verificar si la VM se está ejecutando, use "list" comando:

$ virsh list
 Id   Name           State
------------------------------
 1    centos8-uefi   running

1.4. Guardar máquinas virtuales

Para guardar el estado actual de una VM en ejecución, ejecute:

$ virsh save centos8-uefi centos8-save

Domain centos8-uefi saved to centos8-save

Este comando detiene al invitado llamado "centos8-uefi" y guarda los datos en un archivo llamado "centos8-save". Esto tomará unos momentos dependiendo de la cantidad de memoria en uso por su máquina invitada.

1.5. Restaurar máquinas virtuales

Para restaurar el estado previamente guardado de una VM, simplemente especifique el nombre del archivo como se muestra a continuación:

$ virsh restore centos8-save 
Domain restored from centos8-save

Verifique si la VM se restauró usando el comando "list":

$ virsh list
 Id   Name           State
------------------------------
 4    centos8-uefi   running

1.6. Reiniciar máquinas virtuales

Para reiniciar una máquina virtual en ejecución, ejecute:

$ virsh reboot centos8-uefi
Domain centos8-uefi is being rebooted

1.7. Suspender/Pausar máquinas virtuales

Para suspender una máquina virtual en ejecución, haga lo siguiente:

$ virsh suspend centos8-uefi 
Domain centos8-uefi suspended

Verifíquelo con el comando "list":

$ virsh list
 Id   Name           State
-----------------------------
 1    centos8-uefi   paused

1.8. Reanudar máquinas virtuales

Para reanudar la máquina virtual en pausa, ejecute:

$ virsh resume centos8-uefi 
Domain centos8-uefi resumed

1.9. Detener máquinas virtuales activas

Para detener a la fuerza una VM activa y dejarla en estado inactivo, ejecute:

$ virsh destroy centos8-uefi
Domain centos8-uefi destroyed

También puede detener la VM con gracia en lugar de forzarla como se muestra a continuación:

$ virsh destroy centos8-uefi --graceful
Domain centos8-uefi destroyed

1.10. Apagar máquinas virtuales

Para apagar una máquina virtual en ejecución, haga lo siguiente:

$ virsh shutdown centos8-uefi
Domain centos8-uefi is being shutdown

1.11. Recuperar volcado XML de máquinas virtuales

Para mostrar el archivo de configuración XML de una máquina virtual en la salida estándar, ejecute:

$ virsh dumpxml centos8-uefi

Este comando mostrará los detalles completos de configuración (software y hardware) de la máquina virtual:

También puede exportar el volcado XML a un archivo en lugar de simplemente mostrarlo en la salida estándar como se muestra a continuación:

$ virsh dumpxml centos8-uefi > centos8.xml

Este comando volcará el archivo XML "centos8-uefi" en un archivo llamado "centos8.xml" y lo guardará en el directorio de trabajo actual.

1.12. Crear máquinas virtuales con volcado XML

Puede crear una nueva máquina invitada virtual utilizando el XML existente de invitados creados anteriormente. Primero, cree un volcado XML como se muestra arriba y luego cree una nueva VM usando el archivo XML como se muestra a continuación:

$ virsh create centos8.xml 
Domain centos8-uefi created from centos8.xml

Este comando creará una nueva VM y la iniciará de inmediato. Puede verificarlo usando el comando:

1.13. Editar archivo de configuración XML de máquinas virtuales

Si desea realizar algún cambio en una máquina invitada, simplemente puede editar su archivo de configuración y realizar los cambios que desee. Los invitados se pueden editar mientras corren o mientras están desconectados.

$ virsh edit centos8-uefi

Este comando abrirá el archivo en su editor predeterminado que configuró con la variable $EDITOR.

1.14. Habilitar el acceso a la consola para máquinas virtuales

Después de crear máquinas invitadas KVM, puede acceder a ellas a través de SSH, cliente VNC, Virt-viewer, Virt-manager y consola web Cockpit, etc. Sin embargo, no puede acceder a ellas mediante el comando "virsh console". El comando de la consola se usa para conectar la consola serie virtual para el invitado. Para acceder a los invitados KVM usando el comando "consola virsh", debe habilitar el acceso a la consola serie en la máquina invitada. Consulte la siguiente guía para habilitar el acceso a la consola virsh:

  • Cómo habilitar el acceso a la consola Virsh para invitados KVM

1.15. Cambiar el nombre de las máquinas virtuales

Si alguna vez quiso cambiar el nombre de una máquina virtual, consulte la siguiente guía.

  • Cómo cambiar el nombre de la máquina virtual invitada KVM

1.16. Mostrar ID de dominio de máquinas virtuales

Para encontrar el ID de dominio de una máquina virtual invitada en ejecución, ejecute:

$ virsh domid centos8-uefi
2

Tenga en cuenta que el invitado debe estar ejecutándose para obtener su ID de dominio.

1.17. Mostrar el nombre de dominio de las máquinas virtuales

Para obtener el nombre de dominio de una máquina virtual en ejecución, ejecute:

$ virsh domname <domain-id or domain-uuid>

Ejemplo:

$ virsh domname 2
centos8-uefi

Aquí, 2 es la identificación del dominio.

1.18. Mostrar UUID de máquinas virtuales

Para encontrar el UUID de la máquina invitada, ejecute:

$ virsh domuuid <domain-name or domain-id>

Ejemplo:

$ virsh domuuid centos8-uefi

O,

$  virsh domuuid 2

Salida de muestra:

de4100c4-632e-4c09-8dcf-bbde29170268

1.19. Mostrar detalles de máquinas virtuales

Para mostrar la información de una máquina invitada, use el nombre de dominio, la identificación de dominio o el uuid de dominio como se muestra a continuación:

$ virsh dominfo centos8-uefi

O,

$ virsh dominfo 2

O,

$ virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268

Salida de muestra:

Id:             -
Name:           centos8-uefi
UUID:           de4100c4-632e-4c09-8dcf-bbde29170268
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

1.20. Mostrar información del host KVM

Para obtener la información de su sistema host, ejecute:

$ virsh nodeinfo

Salida de muestra:

CPU model:           x86_64
CPU(s):              4
CPU frequency:       1167 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         8058840 KiB

1.21. Mostrar información de la CPU virtual

Para mostrar la información de la CPU virtual, ejecute:

$ virsh vcpuinfo <domain-id or domain-name or domain-uuid>

Ejemplo:

$ virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy

VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy

1.22. Encuentra la dirección IP de las máquinas virtuales

Encontrar la dirección IP de una máquina virtual no es gran cosa. Si tiene acceso a la consola de la máquina virtual, puede encontrar fácilmente su dirección IP usando el comando "ip". Sin embargo, también es posible identificar la dirección IP de una VM KVM sin tener que acceder a su consola. La siguiente guía explica cómo encontrar la dirección IP de una máquina virtual KVM.

  • Cómo encontrar la dirección IP de una máquina virtual KVM

1.23. Eliminar máquinas virtuales

Si ya no desea una máquina virtual, simplemente elimínela como se muestra a continuación:

$ virsh destroy centos8-uefi
$ virsh undefine centos8-uefi

El primer comando detendrá a la fuerza la máquina virtual si ya se está ejecutando. Y el segundo comando lo anulará y lo eliminará por completo.

También puede utilizar las siguientes opciones para eliminar los volúmenes de almacenamiento y las instantáneas.

--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)

2. Administrar redes virtuales

Espero que haya aprendido a administrar máquinas virtuales KVM con el comando Virsh en Linux. Esta sección enumera los comandos importantes para administrar redes virtuales KVM en Linux utilizando la utilidad de línea de comandos virsh.

2.1. Listar redes virtuales

Para obtener una lista de las redes virtuales disponibles, ejecute:

$ virsh net-list 
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

Como puede ver, solo tengo una red virtual que es la predeterminada.

2.2. Mostrar detalles de la red virtual

Para ver los detalles de una red virtual, ejecute:

$ virsh net-dumpxml default

Reemplace "predeterminado" con el nombre de su red en el comando anterior.

Salida de muestra:

<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.3. Iniciar redes virtuales

Para iniciar una red inactiva, ejecute:

$ virsh net-start <Name-Of-Inactive-Network>

Para iniciar automáticamente una red:

$ virsh net-autostart <network-name>

2.4. Crear volcado XML de redes virtuales

Para crear el archivo de configuración XML de una red virtual existente, ejecute:

$ virsh net-dumpxml default > default.xml

El comando anterior creará la configuración XML de la red "predeterminada" y la guardará en un archivo llamado "default.xml" en el directorio actual.

Puede ver el archivo XML usando el comando cat:

$ cat default.xml 
<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.5. Crear nuevas redes virtuales a partir de un archivo XML

Para crear una nueva red virtual utilizando un archivo XML existente e iniciarlo de inmediato, ejecute:

$ virsh net-create <Name-of-XMLfile>

Si desea crear una red a partir de un archivo XML pero no desea iniciarla automáticamente, ejecute:

$ virsh net-define <Name-of-XMLfile>

2.6. Desactivar redes virtuales

Para desactivar una red activa, ejecute:

$ virsh net-destroy <network-name>

2.7. Eliminar redes virtuales

Para eliminar una red virtual, desactívela primero como se muestra arriba y luego ejecute:

$ virsh net-undefine <Name-Of-Inactive-Network>

Virsh tiene muchos comandos y opciones. Aprender a usar la herramienta de línea de comandos de Virsh a fondo es suficiente para configurar un entorno virtual completo en Linux. No necesita ninguna aplicación GUI.

Para obtener más detalles, consulte las páginas man de virsh.

$ man virsh

3. Administre invitados KVM gráficamente

Recordar todos los comandos virsh es casi imposible y también innecesario. Si le resulta difícil realizar todas las tareas de administración de KVM desde la línea de comandos, puede probar las herramientas gráficas de administración de KVM, como Virt-manager y Cockpit.

  • Administre máquinas virtuales KVM mediante la consola web Cockpit
  • Cómo administrar máquinas virtuales KVM con Virt-Manager

Conclusión

Si sabe cómo administrar máquinas virtuales KVM con la interfaz de usuario de administración de Virsh en Linux, está a mitad de camino para administrar un entorno de virtualización de nivel empresarial. Configurar KVM y administrar máquinas virtuales KVM usando el comando virsh es muy importante para todos los administradores de Linux.

Imagen destacada de Elias Sch. de Pixabay.


Linux
  1. Cómo crear una instantánea de una máquina virtual KVM con Virsh Command

  2. Administre KVM (QEMU) con Kimchi (interfaz web)

  3. Máquinas virtuales semanales, con scripts de compilación

  4. Cómo cambiar el nombre de la máquina virtual KVM con virsh

  5. ¿Cómo administrar la red empresarial de máquinas Linux?

Cómo cambiar el nombre de la máquina virtual invitada KVM

Cómo exportar e importar máquinas virtuales KVM en Linux

Cómo instalar KVM y administrar máquinas virtuales en Ubuntu 20.04

Cómo administrar máquinas virtuales en KVM usando Virt-Manager

Gestión de máquinas virtuales KVM con Cockpit Web Console en Linux

Cómo crear y administrar máquinas virtuales en KVM