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
- man virsh
http://linux.die.net/man/1/virsh - fuente original
http://hpc.esencial.co/doku.php?id=virt:kvm:gestion_vm_virsh - Añadir disco fisico a máquina virtual
https://www.tecmint.com/manage-kvm-storage-volumes-and-pools/