Servidores Virtuales: Debian GNU/Linux

3 minuto(s) de lectura

Debian

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

VirtualBox

VirtualBox es un software de virtualización para arquitecturas x86/amd64, desarrollado por Oracle como parte de su familia de productos de virtualización.

Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual.

Aunque prefiero usar KVM para esta labor por su integración en el Kernel de nuestro sistema, también entiendo que quizás os interese descubir diversas alternativas funcionales.

Para instalar sobre nuestra base Debian seguimos este mini-tutorial.

  • Actualizamos repositorios e instalamos las dependencias
sudo apt-get update && \
sudo apt-get -y install dkms \
module-assistant \
linux-headers-$(uname -r)
  • Descargamos la llave GPG del repositorio
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | \
sudo apt-key add -
  • Instalamos el repositorio de Virtualbox
sudo sh -c "echo 'deb https://download.virtualbox.org/virtualbox/debian buster contrib' >> \
/etc/apt/sources.list.d/virtualbox.list
  • Actualizamos repositorios e instalamos el programa
sudo apt-get update && \
sudo apt-get -y install virtualbox-6.1
  • Agregamos nuestro usuario al grupo vboxusers
sudo usermod -aG vboxusers $USER

Reiniciamos sistema y listo

sudo reboot

Y listo!