libvirt

Sobre Libvirt

Sobre Libvirt
Libvirt es una de las herramientas de gestión de virtualización más populares que existen. Está compuesto por una API de administración y un demonio con el que puede interactuar con su pila de virtualización. Libvirt se esfuerza por unificar el proceso de gestión de todas las diversas tecnologías de virtualización, desde KVM hasta VMWare ESX e incluso BHyve. También puede administrar contenedores LXC e incluso algunas de las tecnologías de paravirtualización como Xen.

El hecho de que sea compatible con una gran variedad de tecnologías no significa que deba estar familiarizado con todas ellas. Puede concentrarse en una tecnología como KVM y construir su experiencia libvirt en torno a eso. Este artículo intentará ofrecer una crítica exhaustiva de la tecnología a partir de la experiencia personal del autor con ella.

Fondo

Para familiarizarse con lo que Libvirt es capaz de hacer y cómo puede usarlo en su propio sistema, puede seguir las siguientes guías:

  1. Instale KVM y Libvirt en Debian
  2. Libvirt con Python

Si ya está familiarizado con herramientas como virsh, virt-install, virt-manager, oVirt, etc., entonces ya está usando libvirt sin siquiera saberlo. Las herramientas mencionadas anteriormente usan libvirt en el backend y proporcionan una interfaz fácil de usar, ya sea una línea de comandos o una GUI.

Arquitectura

Libvirt está diseñado para funcionar con cualquier hipervisor y ha crecido a lo largo de los años para funcionar con una amplia gama de hipervisores. El demonio libvirt expone una API que pueden utilizar aplicaciones como virt-manager o virsh (e incluso sus scripts personalizados de Python). Las solicitudes de los usuarios son recibidas por la API. Estas solicitudes podrían ser algo así como crear un invitado KVM o mostrarme la memoria utilizada por un contianer LX dado, etc.

A continuación, el demonio libvirt delega la solicitud al controlador del hipervisor libvirt correspondiente. Este controlador comprende e implementa todos los detalles de una tecnología de virtualización determinada y lleva a cabo las instrucciones en consecuencia.

Hay una clase diferente de controladores para manejar el almacenamiento e incluso las redes de máquinas virtuales.

Pools y volúmenes

Las máquinas virtuales necesitan mucho almacenamiento. La tecnología de almacenamiento en sí es muy variable de un hipervisor a otro. VMWare usa su propio formato vmdk, a QEMU le gusta usar qcow2, también hay imágenes de disco sin procesar y las imágenes LXC también son una historia diferente. Además, le gustaría agrupar todas las imágenes de disco de la máquina virtual y proporcionarles un medio de almacenamiento diferente, como un servidor NFS, un conjunto de datos ZFS o simplemente un directorio. Esto le permite usar libvirt en una variedad de casos de uso diferentes, desde un único servidor doméstico hasta una solución de virtualización escalable de nivel empresarial.

En libvirt vernáculo, un único dispositivo de almacenamiento virtual asociado con cualquier VM, como el archivo de imagen qcow2, raw o vmdk de una VM o ISO montable, se conoce como volumen. El medio de almacenamiento utilizado en el host para almacenar un grupo de volúmenes asociados se conoce como piscina. Puede utilizar un servidor NFS como un grupo o un conjunto de datos ZFS, como se mencionó anteriormente. Si no tiene una solución de almacenamiento elegante, simplemente puede usar un directorio.

Por defecto, libvirt tiene dos grupos diferentes. Primero está / var / lib / libvirt / images y / var / lib / libvirt / boot. Los volúmenes de una sola máquina virtual se pueden dividir en varios grupos. Por ejemplo, almaceno todas las imágenes limpias de la nube y los ISO del instalador del sistema operativo en / var / lib / libvirt / boot pool y para las VM individuales, rootfs se instala en archivos de imagen almacenados en / var / lib / libvirt / images.

Incluso puede tener un solo grupo para una sola VM, o puede dividir los grupos aún más para instantáneas de VM, copias de seguridad, etc. Todo es muy flexible y le permite organizar sus datos según su conveniencia.

Configuraciones

Virsh es una herramienta popular para configurar todo, desde su máquina virtual, redes de máquinas virtuales e incluso almacenamiento. Los propios archivos de configuración viven en formato XML. Te encontrarás emitiendo comandos como:

$ virsh dumpxml VM1
$ virsh editar VM1

Y de manera similar, hay subcomandos como net-dumpxml y pool-edit para ver o configurar la configuración de grupos, redes, etc. Si tiene curiosidad por saber dónde se encuentran estos archivos de configuración, puede ir a / etc / libvirt / y encontrar el directorio correspondiente a los hipervisores.  El directorio principal / etc / libvirt / contiene muchas configuraciones globales como controladores (e.g qemu.conf y lxc.conf) y su configuración y el comportamiento predeterminado de libvirt.

Para ver la configuración específica de componentes individuales como VM, grupos y volúmenes, debe ir a los directorios correspondientes. Para los invitados de qemu, este es / etc / libvirt / qemu

root @ deb: / etc / libvirt / qemu # ls -al
total 24
drwxr-xr-x 4 raíz raíz 4096 21 de abril 10:39 .
drwxr-xr-x 6 raíz raíz 4096 28 de abril 17: 19…
drwxr-xr-x 2 root root 4096 21 de abril 10:39 inicio automático
drwxr-xr-x 3 root root 4096 14 de abril 13:49 redes
-rw ------- 1 raíz raíz 3527 20 de abril 19:10 VM1.xml
-rw ------- 1 raíz raíz 3527 20 de abril 19:09 VM2.xml

El directorio de inicio automático contendrá enlaces simbólicos a VM1.xml y VM2.xml si ha confiurado que las VM se inicien automáticamente cuando se inicie el sistema host ($ virsh autostart VM1).

De manera similar, / etc / libvirt / qemu / network contiene una configuración para la red predeterminada de un invitado qemu. / Etc / libvirt / storage contiene XML que definen las agrupaciones de almacenamiento.

Conclusión

Si está interesado en configurar su propio host de virtualización, un buen lugar para comenzar será este artículo donde muestro cómo instalar invitados QEMU-KVM en un host Debian usando libvirt y herramientas relacionadas.

Después de eso, puede comenzar a jugar con virsh CLI y ver y administrar entidades como Dominio (libvirt llama a las VM invitadas a dominio) redes, grupos de almacenamiento y volúmenes. Esto hará que se sienta lo suficientemente cómodo con la tecnología como para que pueda pasar a otros conceptos como instantáneas y filtro de red. Espero que este artículo sea un buen punto de partida para ti.

Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...