KVM

Kernel-based Virtual Machine o KVM, es una solución para implementar virtualización completa con Linux. Está formada por un módulo del núcleo (con el nombre kvm.ko) y herramientas en el espacio de usuario, siendo en su totalidad software libre.

KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc.

El KVM posee una herramienta virsh con el cual se puede crear, eliminar, ejecutar, detener y administrar máquinas virtuales desde la línea de comandos, utilizando esta herramienta. Virsh es especialmente útil para administradores avanzados de Linux.

Instalación
sudo apt-get install virsh

Conexión
La conexión puede ser local o remotamente:

$ virsh connect qemu:///system Connecting to uri: qemu:///system

Lista de VMs
Con este comando se puede visualizar las máquinas virtuales disponibles, es decir, que estén encendidas. $ virsh list Id Name                State -- 1 ejemploVM                  running

Y, para visualizar todas las máquinas, encendidas o apagadas:

$ virsh list --all Id Name                State -- 1 ejemploVM                  running 1 ejemploVMapagada          off

Creación de Máquina Virtual
Las Máquinas virtuales gestionadas por virsh se crean mediante la descripción de la máquina virtual en un archivo XML, e importar el archivo XML en virsh.

Puede exportar el XML de una máquina virtual existente:

$ virsh dumpxml ejemploVM > /tmp/ejemploVMxml Connecting to uri: qemu:///system

Una vez que tenga un archivo XML que describe la nueva máquina virtual que se desea crear, importar a virsh y ejecutarla de inmediato:

$ virsh create /tmp/ejemploVM.xml Connecting to uri: qemu:///system Domain foo_new created from /tmp/foo_new.xml $ virsh list Connecting to uri: qemu:///system Id Name                State -- 3 ejemploVM              running

Alternativamente, si desea definirlo, pero no ejecutarlo, se podría haber usado:

$ virsh define /tmp/ejemploVM.xml

Trabajar con una máquina virtual en ejecución
Una vez que una máquina virtual está en ejecución, puede administrar de muchas formas diferentes, como por ejemplo:

$ virsh start ejemploVM

$ virsh reboot ejemploVM

$ virsh shutdown ejemploVM

$ virsh suspend ejemploVM

$ virsh resume ejemploVM

También puede afectar a la memoria, adjuntar dinámicamente los dispositivos, interfaces, modificar la configuración de red, etc Esta guía en esta página wiki no es claramente incompleta. Para una descripción completa de los comandos virsh, consulte:

$ man virsh

Consola
A veces, es útil para conectar a la consola de una máquina virtual en ejecución, para obtener información de depuración, etc

$ virsh console ejemploVM Connected to domain ejemploVM Escape character is ^]

Para ver los detalles de una determinada máquina virtual:

$ virsh dumpxml ejemploVM

Estos se pueden guardar en un archivo, modificar y volver a importar utilizando:

$ virsh define ejemploVM

Eliminar Máquina Virtual
Para eliminar una máquina virtual, primero por terminado (si está activo), y luego anular la definición que:

$ virsh destroy ejemploVM $ virsh undefine ejemploVM