GNU/Linux >> Tutoriales Linux >  >> Linux

8 subcomandos virsh de Linux para administrar máquinas virtuales en la línea de comandos

El shell virtual, o virsh, es una utilidad de línea de comandos flexible para administrar máquinas virtuales (VM) controladas por libvirt, que es un conjunto de herramientas y una API para administrar plataformas de virtualización. Es la herramienta de administración predeterminada para máquinas virtuales basadas en kernel (KVM) de Linux y también es compatible con Xen, VMware y otras plataformas.

El virsh El comando le permite administrar máquinas virtuales de forma interactiva o por lotes. También es útil para controlar máquinas virtuales desde el shell de Linux y se integra con scripts o herramientas de automatización. Usando virsh , puede conectarse rápidamente a un servidor mediante shell seguro (SSH) y realizar operaciones en sus máquinas virtuales sin acceso a una interfaz gráfica.

Cuando ejecutas virsh sin ninguna opción, intenta conectarse a un hipervisor local. Para Linux, la conexión predeterminada apunta a un sistema QEMU local para administrar máquinas KVM locales. También puede conectarse a un hipervisor remoto usando la opción -c o --connect y especificar el identificador uniforme de recursos (URI) del hipervisor remoto mediante la sintaxis de libvirt. Para obtener más información, consulte la especificación URI de libvirt.

Por defecto, virsh proporciona cientos de subcomandos y opciones que le permiten administrar todos los aspectos de su plataforma de virtualización o máquinas virtuales. En este artículo, compartiré los ocho virsh  subcomandos que uso más a menudo. Debido a la naturaleza del trabajo diario, la mayoría de estos subcomandos se aplican directamente a las máquinas virtuales (o dominios en terminología libvirt) pero virsh también tiene comandos para administrar la plataforma en sí, como agregar grupos de almacenamiento, redes y más.

lista de virus

virsh list es un comando básico que enumera todos los dominios en ejecución (VM). También puede enumerar todas las máquinas virtuales configuradas agregando --all opción. Esto es útil si desea ver todas las máquinas virtuales configuradas en el hipervisor de destino que puede usar en comandos posteriores. Por ejemplo, para enumerar todas las máquinas virtuales disponibles en un hipervisor KVM de Linux local:

# virsh list --all
 Id   Name          State
------------------------------
 3    rh8-vm01      running
 -    crc           shut off
 -    rh8-tower01   shut off

Puede utilizar el ID o el nombre de dominio como entrada para los comandos posteriores.

iniciar/reiniciar/apagar virsh

Aunque son diferentes, he agrupado el start , reboot y shutdown subcomandos porque realizan la misma operación básica de administrar el estado de energía de la VM.

Para apagar la máquina virtual rh8-vm01 (de la list comando anterior):

# virsh shutdown rh8-vm01 
Domain 'rh8-vm01' is being shutdown

# virsh list
 Id   Name   State
--------------------

Puede iniciarlo de nuevo usando el start subcomando:

# virsh start rh8-vm01 
Domain 'rh8-vm01' started

# virsh list
 Id   Name       State
--------------------------
 4    rh8-vm01   running

Mediante el uso de estos subcomandos, puede iniciar, reiniciar o apagar rápidamente una máquina virtual sin tener que iniciar una aplicación gráfica pesada.

[ También podría estar interesado en aprender a editar sshd_config usando un script Bash. ]

virsh dumpxml

El dumpxml El subcomando vuelca la configuración XML para un dominio determinado. Puede usarlo para exportar la configuración a un archivo para realizar cambios en una VM existente o usarlo como plantilla para crear otra VM con una configuración similar. Por defecto, vuelca la configuración a STDOUT , así que rediríjalo a un archivo usando operadores de redirección de shell > para guardar en un archivo:

# virsh dumpxml rh8-vm01                                                   
<domain type='kvm' id='4'>                                                                    
  <name>rh8-vm01</name>                                                                       
  <uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
  <metadata>                                                                                  
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">     
      <libosinfo:os id="http://redhat.com/rhel/8.4"/>                                         
    </libosinfo:libosinfo>                                                                    
  </metadata>                                                                                 
  <memory unit='KiB'>4194304</memory>                                                         
  <currentMemory unit='KiB'>4194304</currentMemory>    
  <vcpu placement='static'>2</vcpu>

... TRUNCATED OUTPUT ...
</domain>

Puede utilizar la salida XML en secuencias de comandos y herramientas de automatización para automatizar la creación de máquinas virtuales.

virsh domifaddr

El domifaddr El subcomando enumera todas las direcciones IP configuradas para todas las interfaces virtuales en una máquina virtual determinada. Es útil si la VM usa direcciones IP dinámicas, ya que le permite ver la dirección IP asignada y conectarse a la VM:

# virsh domifaddr rh8-vm01 
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet6      52:54:00:c8:17:6e    ipv4         192.168.122.19/24
 vnet7      52:54:00:04:4d:ac    ipv4         192.168.64.210/24

De forma predeterminada, enumera la dirección IP arrendada por un servidor DHCP. Si el hipervisor no proporciona esta información, también puede usar la opción --source agent para consultar el sistema operativo invitado (SO) directamente a través del agente de virtualización. Esto requiere un agente de virtualización instalado en el sistema operativo huésped.

edición virtual

El edit El subcomando abre la configuración XML actual en su $EDITOR predeterminado , lo que le permite realizar modificaciones en vivo en una máquina virtual:

# virsh edit rh8-vm01
<domain type='kvm'>
  <name>rh8-vm01</name>
  <uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
  <metadata>

... TRUNCATED OUTPUT ...
</domain>

Después de realizar sus modificaciones, guarde el archivo para aplicarlas. Es posible que algunas modificaciones solo surtan efecto después de reiniciar.

edición de red de virsh

La net-edit El subcomando le permite realizar modificaciones en vivo a una configuración de red virtual. Es útil para cambiar las opciones de una red virtual, como asociar una dirección MAC dada a una dirección IP usando libvirt estándar. Configuración DHCP. Es un comando más avanzado que uso regularmente. Me gusta el edit subcomando, abre el archivo de configuración en su $EDITOR predeterminado por hacer cambios. Guarde el archivo para aplicar los cambios:

# virsh net-edit --network hostonly
<network>
  <name>hostonly</name>
  <uuid>eddd03ff-5825-42ef-bc99-968bddf773c2</uuid>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:67:75:b1'/>
  <domain name='hostonly'/>
  <ip address='192.168.64.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.64.128' end='192.168.64.254'/>
    </dhcp>
  </ip>
</network>

También puede usar otros subcomandos relacionados con la red que comiencen con net- para administrar diferentes aspectos de las redes virtuales del hipervisor.

[ Descargar ahora:una guía para administradores de sistemas sobre secuencias de comandos Bash. ]

¿Qué sigue?

virsh es una utilidad poderosa y flexible que le permite administrar todos los aspectos de la virtualización de Linux y otras plataformas. Para obtener más información al respecto, consulte las páginas del manual o consulte su documentación en línea.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Generar contraseñas en la línea de comandos de Linux

  3. 8 consejos para la línea de comandos de Linux

  4. Usando la fuerza en la línea de comando de Linux

  5. Comandos Bash Bang:un truco imprescindible para la línea de comandos de Linux

Consejos para usar el comando superior en Linux

3 gestores de contraseñas para la línea de comandos de Linux

Domina la línea de comandos de Linux

Cómo buscar archivos desde la línea de comandos de Linux

Ripgrep:la herramienta de búsqueda de línea de comandos más rápida para Linux

Cuatro navegadores web para la línea de comandos de Linux