El KVM (Kernel Based Virtual Machine) es usado por qemu para la virtualización de máquinas. La creación, modificación, arranque, parada, etc.. se puede realizar de forma visual con Virtual Machine Manager, pero la opción de trabajar por linea de comandos me parece muy potente y relativamente sencilla.
Por ejemplo si queremos crear una máquina y que nos vaya preguntando que es lo que queremos podemos hacer:
[jcmolinos@ppcjuancmolinos ~]$ sudo virt-install --prompt
¿Cuál es el nombre de la máquina virtual?
prueba20
¿Cuánta RAM debería ser asignada en MB?
512
¿Qué (ruta de archivo) le gustaría utilizar para el disco?
/var/lib/libvirt/images/prueba20.img
¿Qué tan grande le gustaría que fuera el disco (/var/lib/libvirt/images/prueba20.img) en GB?
5
¿Cuál es el CDROM/ISO o URL de instalación?
/vol/home/jcmolinos/soft/centos/CentOS-6.0-i386-netinstall.iso
Empezando la instalación...
Asignando 'prueba20.img' | 5.0 GB 00:00
Creando dominio... | 0 B 00:00
La instalación del dominio continúa en progreso. Puede reconectarse a
la consola para completar el proceso de instalación.
Cuando aparece el mensaje «Creando dominio…» aparece comenzará la instalación usando el medio definido.
Además existe una completa consola para la administración en modo texto muy potente:
[jcmolinos@ppcjuancmolinos ~]$ virsh
Bienvenido a virsh, la terminal de virtualización interactiva.
Ingrese: 'help' para obtener ayuda con los comandos
'quit' para salir
Si escribimos help podemos ver la gran cantidad de comandos que existen, por comentar algunos:
virsh # create /etc/libvirt/qemu/prueba20.xml
Crea un dominio a partir de un fichero xml (los dominios son máquinas)
virsh # start prueba20
Arrancar un dominio existente.
virsh # start prueba20
Arranca una máquina virtual, para pararla de forma adecuado el SO guest tiene que tener instalado el paquete (en un linux/unix) «acpid» y se puede hacer con:
virsh # shutdown prueba20
También es posible forzar el apagado de una máquina con:
virsh # destroy prueba20
Listar los dominios existentes, arrancados o no:
virsh # list --all
Id Nombre Estado
----------------------------------
2 prueba20 ejecutando
- prueba20-clone apagado
Para obtener el número de monitor vnc para un dominio:
virsh # vncdisplay prueba20
:0
Es decir hay levantado un servidor vnc que escucha en el puerto 0 para este dominio.
Una parada ordenada del dominio se haría con:
virsh # shutdown prueba2
Aunque se podría destruir el dominio sin contenplaciones en caso de no responder con:
virsh # destroy prueba2
Es posible ver los pool donde son alojados los discos:
virsh # pool-list
Nombre Estado Inicio automático
-----------------------------------------
Almacen activo si
default activo si
Y los discos existentes en cada pool:
virsh # vol-list default
Nombre Camino
-----------------------------------------
prueba.img /var/lib/libvirt/images/prueba.img
pruebas2.img /var/lib/libvirt/images/pruebas2.img
Se pueden conocer las redes existentes con:
virsh # net-list
Nombre Estado Inicio automático
-----------------------------------------
default activo si
Obtener información del estado de la red:
virsh # net-info default
Nombre default
UUID 1f843a84-59c8-42a5-afdc-f7ba42f30439
Active: si
Persistente: si
Autoinicio: si
Bridge: virbr0
Obtener un dump del xml de configuración:
GeSHi Error: GeSHi could not find the language html (using path /var/www/html/wp-content/plugins/wp-synhighlight/geshi/geshi/) (code 2)
Para eliminar un dominio (solo su definición):
virsh # undefine prueba20-clone
Hay que tener en cuenta que el disco asociado al dominio no se borra, a no ser que se indique:
virsh # vol-delete /var/lib/libvirt/images/prueba20-clone.img
El clonado de una máquina se puede hacer con:
[jcmolinos@ppcjuancmolinos ~]$ virt-clone -o prueba20 --auto-clone
Que generará una nueva máquina con sus respectivos discos con el sufijo «-clone».
Existen comandos para trabajar con absolutamente todo: redes, snapshots, disco, pools, etc…
Realmente es muy interesante para arranques/paradas, copias de seguridad y cualquier tipo de automatización, el número de comandos es muy amplio y bastante intuitivo.