Creación De Máquinas Virtuales Con Qemu Y KVM
Muchas veces es necesario tener máquinas virtuales disponibles en nuestros servidores, ya sea para alojar aplicaciones web, existen aplicaciones dedicadas muy fáciles de usar como ProxMox, VMWare o VirtualBox pero, para producción de ambientes virtualizados en Linux, el estándar es Qemu con KVM.
Primero debemos comprobar los requerimientos de nuestro sistema, en este caso vamos a utilizar una distribución basada en Debian o Ubuntu.
Necesitamos saber como está nuestra red para ver las IPs en uso utilizamos el comando:
$ sudo lsof -i -P -n | grep LISTEN
Tambien debemos comprobar que los CPUs puedan utilizarse para virtualización
$ lscpu | grep Virt
Virtualization: VT-x
Para instalar los paquetes necesarios para la virtualización es mejor cambiarnos a la cuenta de root:
$ sudo su
E instalamos con apt
# apt-get install qemu qemu-kvm libvirt-clients libvirt-daemon-system
bridge-utils libguestfs-tools genisoimage virtinst libosinfo-bin
Añadimos a los usuarios necesarios al grupo que administra la virtualización
# adduser <youruser> libvirt
# adduser <youruser> libvirt-qemu
# newgrp libvirt
# newgrp libvirt-qemu
Posteriormente iniciamos el daemon de virtualización
# systemctl enable --now libvirtd
Después tenemos que configurar la red para nuestra máquina virtual para esto usaremos un puente y una configuración NAT (ya luego vemos como sacar la VM con un puerto:
Tenemos que definir el puente en las interfases del servidor
/etc/network/interfaces
:
auto br0 inet static
address XX.XX.XX.XX
netmask 255.255.255.0
gateway XX.XX.XX.254
bridge_ports eth0
bridge_stp off
bridge_fd 0
añadimos el puente
# brctl addbr brkvm
# ip addr add 192.168.56.101/24 dev brkvm
# ip link set brkvm up
Corremos la máquina virtual como
# qemu-system-x86_64 -hda biblioteca-disk.qcow2 -name biblioteca -m 6144
-cpu kvm64 -daemonize -smp 8 -vnc :0
En general en mi limitada experiencia es mejor utilizar el creador de máquinas
virtuales y configurar las redes en NAT para trabajar en ambientes controlados,
nunca me ha funcionado hacer puentes que funcionen completamente libres. Pero
puentes NAT con DHCP si y con esto funcionan o cambiando la dirección estática
de la configuración por dhcp
en lugar de static
y quitando el IP, gateway y
netmask.