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 ella. 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:

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 usar aplicaciones como virt-manager o virsh (e incluso sus scripts personalizados de Python). La API recibe las solicitudes de los usuarios. Estas solicitudes podrían ser algo así como crear un invitado KVM o mostrarme la memoria utilizada por un controlador LX determinado, 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 VM y proporcionarles un medio de almacenamiento diferente, como un servidor NFS, un conjunto de datos ZFS o simplemente un directorio. Esto le permite utilizar 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 la lengua vernácula libvirt, 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 grupo. Puede usar 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 el grupo de arranque / var / lib / libvirt / boot y para las máquinas virtuales 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 archivos de configuración en sí viven en formato XML. Te encontrarás emitiendo comandos como:

$ virsh dumpxml VM1
$ virsh edit 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 su directorio de hipervisores afectados. El directorio padre / etc / libvirt / contiene muchas configuraciones globales como controladores (por ejemplo, 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 root root 4096 Apr 21 10:39 .
drwxr-xr-x 6 root root 4096 Apr 28 17:19 ..
drwxr-xr-x 2 root root 4096 Apr 21 10:39 autostart
drwxr-xr-x 3 root root 4096 Apr 14 13:49 networks
-rw——- 1 root root 3527 Apr 20 19:10 VM1.xml
-rw——- 1 root root 3527 Apr 20 19:09 VM2.xml

El directorio de inicio automático contendrá enlaces simbólicos a VM1.xml y VM2.xml si ha configurado las VM para que 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á 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 un dominio ), redes, grupos de almacenamiento y volúmenes. Esto hará que se sienta lo suficientemente cómodo con la tecnología 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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux