Tabla de Contenidos

Gestión de máquinas virtuales KVM mediante virsh

Introducción

En esta sección se explican de manera rápida los comandos de gestión de las máquinas virtuales KVM que pueden ser invocados a través de la interfaz de administración remota virsh.

Conexión de virsh

La conexión al servidor KVM de máquinas virtuales utilizando la interfaz de administración de línea de comando virsh puede realizarse de manera local como se muestra a continuación.

$ virsh -c qemu:///system

O de manera remota a través de la red de datos. En este caso es necesario especificar la dirección IP o nombre FQDN del servidor de máquinas virtuales. Es preferible utilizar adicionalmente el servicio de SSH para garantizar la seguridad de la información transmitida.

$ virsh -c qemu+ssh://SERVIDOR/system

Métodos de ejecución de los comandos virsh

Los comandos de la interfaz de administración virsh pueden ejecutarse directamente en ella como se muestran a continuación en esta sección, para esto se debe realizar una conexión previa con la consola.

Por ejemplo:

$ virsh -c qemu+ssh://SERVIDOR/system

    virsh # start DOMINIO

Una forma mas rápida es obviando el paso de la conexión como se muestra a continuación. Esta modalidad es útil si sólo se desea ejecutar un unico comando en la consola virsh.

$ virsh -c qemu+ssh://SERVIDOR/system start DOMINIO

Listar las máquinas virtuales

Este procedimiento permite listar las máquinas virtuales que se encuentren activas en el servidor.

virsh # list

El modificador --inactive permite listar únicamente las máquinas virtuales apagadas.

virsh # list --inactive

El modificador --all permite listar las máquinas registradas en el servidor independiente de su estado de ejecución.

virsh # list --all

Iniciar a una máquina virtual

Para iniciar la ejecución de una máquina virtual se debe utilizar la opción start y el nombre de la misma (dominio).

virsh # start DOMINIO

Apagar a una máquina virtual

La opción shutdown envía un mensaje de apagado (limpio) al sistema operativo. Es el método preferido para apagar las máquinas virtuales sin correr riesgos de pérdidas o corrupción de las mismas.

virsh # shutdown DOMINIO

En caso de requerirse un apagado urgente (forzado) puede utilizarse la opción destroy que equivale a desconectar el cable de alimentación eléctrico de la máquina.

virsh # destroy DOMINIO

Inicio automático de máquinas virtuales

Para configurar a una máquina virtual para que se inicie automáticamente tan pronto como el servicio KVM se encuentre disponible es necesario utilizar la opción autostart.

virsh # autostart DOMINIO

Reiniciar una máquina virtual

Para reiniciar una máquina virtual actualmente en ejecución puede utilizarse la combinación de opciones shutdown/start o puede utilizarse la opción resumida reboot.

virsh # reboot DOMINIO

Registrar una máquina virtual

Es posible registrar a una nueva máquina virtual si de esta se cuenta con el archivo de especificación (comúnmente bajo /etc/libvirt/qemu/) y con las imágenes de sus discos duros (según corresponda). Para hacer esto es necesario utilizar la opción define.

virsh # define DOMINIO

Por defecto se espera que el achivo XML con la especificación de la máquina virtual tenga igual nombre que el dominio con la extensión .xml. Si desea utilizarse un nombre diferente al del archivo puede utilizarse el modificador --file para especificar su ruta.

Obtener especificación actual de una máquina virtual

Para obtener la especificación actual (opciones de configuración utilizadas) de una máquina virtual registrada en el servidor se debe utilizar la opción dumpxml.

virsh # dumpxml DOMINIO

Eliminar una máquina virtual

Para remover el registro de una máquina virtual en el servidor se debe utilizar la opción undefine, esta eliminar el archivo de especificación de la máquina virtual ubicado por defecto bajo /etc/libvirt/qemu/.

virsh # undefine DOMINIO

Este procedimiento no remueve las imágenes de los discos duros asociados a la máquina virtual eliminada. Si se desea hacer esto automáticamente se deberá incluír el modificador --remove-all-storage.

Suspender una máquina virtual

Para suspender temporalmente a una máquina virtual en ejecución se debe utilizar la opción suspend.

virsh # suspend DOMINIO

Despertar una máquina virtual

Para despertar a una máquina virtual que se encuentra temporalmente suspendida se debe utilizar la opción resume.

virsh # resume DOMINIO

Guardar el estado de una máquina virtual

Es posible guardar el estado actual (snapshot) de una máquina virtual para poder volver a trabajar con él posteriormente. Para almacenar este estado es necesario utilizar la opción save especificando una ubicación para su información.

virsh # save DOMINIO /ruta/para/SNAPSHOT

Restaurar el estado de una máquina virtual

Es posible restaurar el estado (snapshot) de una máquina virtual guardado previamente para continuar con su uso. Para recuperar este estado es necesario utilizar la opción restore especificando la ruta en donde este fue almacenado.

virsh # restore /ruta/para/SNAPSHOT

Montar un sistema de archivos en una máquina virtual

Para montar un sistema de archivos del servidor de máquinas virtuales (incluyendo imágenes ISO) en una máquina virtual se debe utilizar la opción attach-disk especificando su ruta de orígen (anfitrión) y su punto de montaje (invitado).

virsh # attach-disk DOMINIO /ruta/imagen.iso /media/MONTAJE

Desmontar un sistema de archivos de una máquina virtual

Para desmontar un sistema de archivos externo de una máquina virtual se debe utilizar la opción detach-disk especificando el dispositivo a desmontarse.

virsh # detach-disk DOMINIO DISPOSITIVO

Clonar una máquina virtual en SSH

Antes de clonar una máquina virtual (como imagen), se necesita tener apagado la actual por cualquier cosa.

Para verificarlo, entramos a la consola y escribimos:

virsh list --all

Y esto saldrá por pantalla:

Id Name State
----------------------------------
- debianPrueba shut off

Esto indica que la máquina que queremos clonar está apagada.

virt-clone -o debianPrueba -n copiadebianPrueba -f /var/lib/libvirt/images/copiadebianPrueba.img

Una vez creada el clon de la nueva máquina virtual se tiene que realizar algunos cambios dentro de la nueva máquina virtual (la clonada):

Ayuda:

Para prender la nueva máquina virtual, escribimos en la consola:

virsh start copiadebianPrueba

Para acceder a la nueva máquina virtual, escribimos en la consola:

virt-viewer --connect=qemu:///system copiadebianPrueba

Posteriormente:

Editar la nueva MAC address. Para conseguir la nueva MAC Address tenemos que crear el xml de la nueva máquina virtual. Para hacerlo escribimos en la consola:

virsh dumpxml copiadebianPrueba > /tmp/copiadebianPrueba.xml. Ahí dentro se tiene la nueva MAC. 

Ahora en la nueva máquina virtual escribimos en la consola

vim /etc/udev/rules.d/70-persistent-net.rules. 

Te va a aparecer dos lineas. La primera se tiene que eliminar y la segunda linea se tiene que controlar la MAC address es la misma que el que esta en el archivo xml que recién creamos. También se tiene que verificar que la interfaz corresponde a la misma que está configurada

vim /etc/sysconfig/network

Cambiar el hostname.

Clonar una máquina virtual en KVM GUI

1.- Entramos al gestor de maquinas virtuales KVM
2.- Nos conectamos al hypervisor de Errekalde
3.- Seleccionamos la máquina a clonar
4.- Con el botón derecho damos al botón de clonar
5.- Nos saldrá una nueva ventana en la que deberemos especificar nombre para la máquina nueva, el entorno de red con una nueva MAC, y la imagen a clonar
6.- Aceptamos y se pondrá en marcha el proceso de clonación
7.- Una vez la tengamos clonada, hay que modificar datos de conexión en la nueva:

Hostname, MAC e IP

Algunas veces al clonar servidores Linux nos podemos encontrar con este tipo de errores:

ifup eth0

Activando interfaz eth0: El dispositivo eth0 no parece estar presente, retrasando la inicialización.

En este caso estamos tratando con un CentOS 6.4 x64. Este error es debido a que al clonar el servidor o importarlo, el entorno de virtualización nos ha asignado una MAC diferente a la que teníamos anteriormente. CentOS detecta la nueva MAC como si se tratase de un nuevo dispositivo, y nos lo añade al UDEV. El UDEV nos permite trabajar de forma más eficaz con equipos con muchos dispositivos (en lugar de tener una lista interminable en el /dev).

Tenemos pues que seguir estos sencillos pasos:

– Primero accedemos al fichero de configuración de Udev :

vi /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x8086:0x100f (e1000) SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:0c:29:42:29:eb”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth0”

# PCI device 0x8086:0x100f (e1000) SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:0c:29:5a:bb:48”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth2”

Como podemos ver en este ejemplo disponemos de dos tarjetas, la eth0 corresponde al servidor original, mientras que la eth2 se ha creado al iniciar el clon y disponer de una nueva MAC. Simplemente comentaremos la eth0 (o eliminamos la línea) y pondremos que la eth2 es en realidad la eth0. Quedaria algo asi:

# PCI device 0x8086:0x100f (e1000) #SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:0c:29:42:29:eb”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth0”

# PCI device 0x8086:0x100f (e1000) SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?*”, ATTR{address}==“00:0c:29:5a:bb:48”, ATTR{type}==“1”, KERNEL==“eth*”, NAME=“eth0”

- A continuación debemos editar nuestro fichero de configuración de la eth0, ya que en este fichero constará aun como MAC la de la primera tarjeta:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

- Una vez realizados los cambios simplemente reiniciamos el servicio.

service network restart

Recursos

  1. Añadir disco fisico a máquina virtual
    https://www.tecmint.com/manage-kvm-storage-volumes-and-pools/