Línea de comandos virtualización con qemu usando el KVM

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:

Source   
[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:

Source   
[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:

Source   
virsh # create /etc/libvirt/qemu/prueba20.xml

Crea un dominio a partir de un fichero xml (los dominios son máquinas)

Source   
virsh # start prueba20

Arrancar un dominio existente.

Source   
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:

Source   
virsh # shutdown prueba20

También es posible forzar el apagado de una máquina con:

Source   
virsh # destroy prueba20

Listar los dominios existentes, arrancados o no:

Source   
virsh # list --all
Id Nombre               Estado
----------------------------------
2 prueba20             ejecutando
- prueba20-clone       apagado

Para obtener el número de monitor vnc para un dominio:

Source   
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:

Source   
virsh # shutdown prueba2

Aunque se podría destruir el dominio sin contenplaciones en caso de no responder con:

Source   
virsh # destroy prueba2

Es posible ver los pool donde son alojados los discos:

Source   
virsh # pool-list
Nombre               Estado     Inicio automático
-----------------------------------------
Almacen              activo     si
default              activo     si

Y los discos existentes en cada pool:

Source   
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:

Source   
virsh # net-list
Nombre               Estado     Inicio automático
-----------------------------------------
default              activo     si

Obtener información del estado de la red:

Source   
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 /mnt/web202/b1/91/54056091/htdocs/WordPress_01/wp-content/plugins/wp-synhighlight/geshi/geshi/) (code 2)

Para eliminar un dominio (solo su definición):

Source   
virsh # undefine prueba20-clone

Hay que tener en cuenta que el disco asociado al dominio no se borra, a no ser que se indique:

Source   
virsh # vol-delete /var/lib/libvirt/images/prueba20-clone.img

El clonado de una máquina se puede hacer con:

Source   
[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.

Deja un comentario