Servidores Virtuales: Debian GNU/Linux

Un hipervisor (en inglés hypervisor) o monitor de máquina virtual (virtual machine monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados, en el caso de paravirtualización) en una misma computadora.
Lo primero que debemos de comprobar es que nuestra CPU soporta la virtualización y si se encuentra activa. El siguiente comando chequea el sistema tanto Intel como AMD:
egrep -c '(svm|vmx)' /proc/cpuinfo
En mi caso el comando devuelve un valor mayor a 0 por lo tanto es compatible con el proceso:
pi@overclock:~$ egrep -c '(svm|vmx)' /proc/cpuinfo
8
pi@overclock:~$ free -h
total used free shared buff/cache available
Mem: 31G 5,3G 25G 196M 535M 25G
Swap: 15G 0B 15G
También recomiendo disponer de más de 4Gb de RAM para no generar excesiva carga en la memoria SWAP. Realizada esta breve introducción pasemos a la acción.
KVM
KVM es una solución de virtualización completa para Linux en hardware x86 que contiene extensiones de virtualización (Intel VT o AMD-V). Consiste en un módulo de kernel cargable (kvm.ko), que proporciona la infraestructura de virtualización principal y un módulo específico del procesador (kvm-intel.ko o kvm-amd.ko).
Dependencias
Vamos a proceder a instalar el software necesario:
sudo apt-get update && \
sudo apt-get -y install qemu-kvm libvirt-clients \
libvirt-daemon libvirt-daemon-system bridge-utils libguestfs-tools \
genisoimage virtinst libosinfo-bin virt-manager
Permisos de usuario
Ahora debemos de agregar nuestro usuario a los grupos virtuales y los recargamos al sistema:
sudo adduser $USER libvirt && \
sudo adduser $USER libvirt-qemu && \
sudo adduser $USER kvm && \
newgrp libvirt && \
newgrp libvirt-qemu && \
newgrp kvm
Comprobamos que este correctamente incluido:
pi@overclock:~$ groups $USER
pi : pi adm tty dialout cdrom floppy sudo audio dip video plugdev netdev kvm libvirt libvirt-qemu
Red Bridge
Vamos a comprobar el acceso a la red desde KVM:
pi@overclock:~$ sudo virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default inactive no yes
Como en nuestro servior ya disponemos de una red bridge (br0), vamos a configurar debidamente KVM para que tenga acceso. Para ellos vamos a crear un fichero de puente:
nano /home/$USER/.bridged.xml
Y agregamos el contenido:
<network>
<name>br0</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
Guardamos los cambios (Ctrl+O), salimos del editor de texto (Ctrl+X), activamos los cambios:
sudo virsh net-define --file /home/pi/.bridged.xml && \
sudo virsh net-autostart br0 && sudo virsh net-start br0
Y comprobamos la configuración de KVM:
pi@overclock:~$ sudo virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
br0 active yes yes
default inactive no yes
Llegados a este punto recomiendo reiniciar el servidor para activar los cambios:
sudo reboot
Tras el renicio ya tendremos el sistema totalmente preparado para trabajar con KVM.
Desde el entorno gráfico podras crear maquinas virtuales sencillamente con el gestor instalado y tambien desde terminal.
pi@overclock:~$ sudo virsh list --all
Id Name State
----------------------------------------------------
1 D10KVM running
- win10pro shut off
Y listo!