Instalación de KVM en Linux

  Kernel-based Virtual Machine (KVM) ("Máquina virtual basada en el núcleo", en español) es una solución para implementar virtualización completa con Linux. Está formada por un módulo del núcleo (con el nombre "kvm.ko") y herramientas en el espacio de usuario, siendo en su totalidad software libre.
  KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc.
  Este programa de virtualización requiere que el equipo anfitrión posea un procesador x86, o x86_64, con soporte para virtualización. La tecnología de virtualización recibe la denominación VT en Intel y SVM en AMD. Además, puede ejecutar huéspedes (o invitados) Linux/Unix/Windows de 32 o 64 bits.
  Actualmente, KVM utiliza una versión modificada de QEMU como interfaz ("front-end", en inglés). Por otra parte, sus pruebas de rendimiento han demostrado que, para algunas cargas de trabajo, ha resultado ser más rápido que otros programas del mismo tipo, mientras que para otras, no tanto.
  Una de las características más relevantes de KVM es el "overcommit" que es el uso de memoria excediendo aún la memoria física del anfitrión.
  Para ejemplificar la explicación se utilizará un equipo informático con el sistema operativo Debian 9 como anfitrión.

INSTALACIÓN

  En primer lugar, se debe comprobar si el procesador del equipo anfitrión soporta la virtualización (aunque la mayoría de los procesadores actuales lo hacen, es posible que algunos más antiguos no), para lo que se utilizará el comando egrep --color 'vmx|svm' /proc/cpuinfo (anteponiendo sudo si no se es administrador). Debe aparecer en rojo un montón de palabras, entre ellas, las palabra "vmx" (Intel) o "svm" (AMD), lo que significa que se puede instalar sin problemas KVM; en caso contrario, mejor optar por otro programa de virtualización (Virtualbox, por ejemplo), porque con KVM sería muy lento.

  Seguidamente, se debe instalar, en el equipo anfitrión, la biblioteca de virtualización libvirt (si no la trae el sistema operativo de forma predeterminada), que proporciona una interfaz de programación de aplicaciones ["Application Programming Interface (API)", en inglés] agnóstica a hipervisores para administrar de manera segura sistemas operativos huéspedes que se ejecutan en un anfitrión. Para realizar la instalación, previamente se debe actualizar la lista de paquetes del sistema [comando apt update (anteponiendo sudo si no se es administrador)], y actualiza el propio sistema (si es necesrio) [comando apt upgrade (anteponiendo sudo si no se es administrador)]; a continación, se instala la biblioteca (y otros paquetes necesarios) mediante el comando apt install qemu-kvm libvirt-clients libvirt-daemon-system debootstrap (anteponiendo sudo si no se es administrador). Tras la instalación se puede, como buena práctica, hacer limpieza de paquetes obsoletos y/o dependencias rotas utilizando el comando apt clean && sudo apt autoclean (anteponiendo sudo si no se es administrador), aunque no es estrictamente necesario.
  A continuación, se realiza una conexión al hipervisor mediante el comando virsh --connect <nombre del anfitrión o ruta> (anteponiendo sudo si no se es administrador), por ejemplo "virsh --connect qemu:///system".
  Acto seguido, se debe añadir al usuario que utilizará la virtualización utilizando los comandos adduser <nombre del usuario> libvirt (anteponiendo sudo si no se es administrador) y adduser <nombre del usuario> libvirt-qemu (anteponiendo sudo si no se es administrador).
  Si todo ha salido correctamente, puede verse el gestor de máquinas virtuales, desde el que se puede acceder desde el propio menú del entorno gráfico de escritorio siguiendo la ruta "Herrameintas del sistema > Gestor de máquinas virtuales".



CONFIGURACIONES BÁSICAS

  A pesar de que KVM tiene su propia interfaz de red virtual, esta tiende a no funcionar demasiado bien, por lo que es conveniente, en primer lugar, configurar, en el equipo anfitrión, un puente de red para que el programa tenga conectividad.
  Primeramente, se debe saber si se tiene instalada la herramienta bridge-utils. Si no es así, se instalará mediante el comando apt install bridge-utils (anteponiendo sudo si no se es administrador).
  Para configurar un puente de red, la mejor opción es crear un archivo de red dentro de la carpeta "interfaces.d" (dentro de la ruta "/etc/network") con un nombre significativo para el tipo de red (en este ejempo será "virbr01"). Este archivo se creará editándolo  como si ya existiera mediante el comando <editor de texto a usar> <nombre del archivo a crear> (anteponiendo sudo si no se es administrador) y escribiendo dentro las siguientes líneas (se deben guardar los cambios en el archivo antes de cerrarlo):
auto <nombre del puente de red>
#allow-hotplug <nombre del puente de red>
iface <nombre del puente de red> inet static
    address <dirección IP>
    netmask <máscara de red>
    network <dirección de red>
    dns-nameservers 8.8.8.8 8.8.4.4
    # Make sure bridge-utils is installed!
    bridge_ports <nombre del falso puente de red>
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
    bridge_waitport 0


  Puede verse el archivo recién creado mediante el comando ls en el directorio correspondiente, aunque todavía no se debe activar reiniciando la red (estará desactivado hasta entonces).

  Obviamente, también hay que crear, en el mismo directorio, un archivo de configuración de red para el falso puente.  El método es el mismo que con el anterior, mas en el interior se deben escribir las siguientes líneas:
auto <nombre del falso puente>
iface <nombre del falso puente> inet manual
    pre-up /sbin/ip link add <nombre del falso puente> type dummy
    up /sbin/ip link set <nombre del falso puente> address <dirección MAC del falso puente>
    post-down /sbin/ip link delete <nombre del falso puente>
  Se debe tener en cuenta que la falsa dirección MAC debe comenzar por "52:54:00", aunque el resto sea inventado y no coincida con la MAC del equipo anfitrión. El contenido del archivo debe ser similar al de la siguiente imagen de ejemplo (el nombre del falso puente es "virbr01-dummy").
  Tras esto se reinicia el servicio de red mediante el comando systemctl restart networking (anteponiendo sudo si no se es administrador).
  Si todo ha ido bien, el puente y el falso puente aparecerán junto al resto de interfaces de red al utilizar el comando ifconfig -a (o cualquier otro que sirva para lo mismo).

  Finalmente, se reinicia el equipo anfitrión.
  Desde aquí ya es posible crear nuevas máquinas virtuales en KVM, en las que se deberá emplear el puente de red recién creado para que tengan conectividad.

  Espero que esta entrada haya sido del gusto del lector, en cuyo caso le pido que la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.