He hablado varias veces de VirtualBox (La verdad es que me gustaba y me gusta) pero retorne a mis orígenes de Qemu (lo usaba para poder correr Windows en mi Linux) ahora dopado con KVM y la librería libvirt (Virtual Machine Manager) le he encontrado muchas ventajas, por lo que hemos decidido crear esta serie de POST con las ventajas, así como sus características y conocer algo mas de Qemu con libvirt.
Las mejoras que hemos encontrado en frente a VirtualBox son:
- Mas rápido, esa es la sensación.
- El redimensionamiento de las ventanas (maquina Virtual) es mas practico.
- Se dispone de un redireccionamiento sencillo de USB, antes era un dolor, y ademas funciona muy bien.
- La utilización de “” como API de gestión nos permite disponer de un entorno unificado con soporte a varios sistemas de virtualización (LXC, VirtualBOX, VMWare, etc.)
De todo ello hablaremos basándonos en “virt-manager” y a su vez comentaremos en muchas ocasiones como realizar las operaciones desde la linea de comando que a veces puede sernos útil, y comandos del qemu que nos ayudan por ejemplo a crear imágenes, montar las imagenes en nuestro sistema sin necesidad de levantar la maquina (ejemplo poder realizar un análisis forense) entre otras.
Los sistemas soportados por “libvirt” son:
- Xen
- Qemu
- KVM (hipervisor tipo 1(bare-metal) en nuestro kernel de Linux que utilizaremos)
- LXC (contenedores Linux que usaremos y contaremos en otro POST)
- VirtualBox
- VMWare ESX y Workstation
- OpenVZ, UML,
Qemu puede trabajar en modo emulación completa o en modo usuario lo que permite ejecutar maquinas de otras arquitecturas distintas a la nativa. Disponemos de varios comandos para ejecutar maquina, crear imágenes de disco, migrar, etc. que no comentaremos en este momento.
Nosotros ejecutaremos Qemu con el soporte KVM que nos dará una virtualización completa (por lo que se cargara en nuestro kernel (kvm.ko “/dev/kvm”) siempre que nuestra CPU permita la virtualización.
cat /proc/cpuinfo | egrep "vmx|svm" | uniq # ya sea de Intel “vmx o de AMD “svm

Nuestra capa de gestión sera “libvirt”, que podrá utilizarse desde comando con el comando “virsh” y gráficamente “virt-manager” y estos llamaran a libvirt para que esta se conecte al supervisor correspondiente.
En nuestro caso sera QEMU (qemu://) pero como se comento disponemos de otros como :
- lxc:// para contenedores LXC
- vbox:// conecta a VirtualBox con su API
- vmware://
Antes de meternos en la parte de administración comentaremos los directorios y ficheros principales en los que se configuran las maquinas así como las redes y almacenamientos.
- /etc/libvirt/ Directorio principal de LibVirt
- libvirtd.conf Configuración principal
- qemu.conf Configuración de conexión Qemu
- lxc.conf Configuración de conexión LXC
- /etc/libvirt/qemu/ Directorio de configuración de las maquinas virtuales Qemu
- /etc/libvirt/storage/ Directorio de configuración de los almacenamientos.
- /etc/libvirt/networks/ Directorio de configuración de redes.