El hecho de que admita una gran variedad de tecnologías no significa que deba estar familiarizado con todos ellas. Puede concentrarse en una tecnología como KVM y construir su experiencia Libvirt en torno a eso. Este artículo intentará dar una crítica integral de la tecnología de la experiencia personal del autor con él.
Para entender de lo que Libvirt es capaz 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 antes mencionadas usan libvirt en el backend y proporcionan una interfaz fácil de usar, ya sea una línea de comando o GUI.
Arquitectura
Libvirt está diseñado para trabajar con cualquier hipervisor y ha crecido a lo largo de los años para trabajar con una amplia gama de hipervisores. El demonio libvirt expone una API que puede ser utilizada por aplicaciones como Virt-Manager o Virsh (e incluso sus scripts de Python personalizados). Las solicitudes de usuario son recibidas por la API. Estas solicitudes podrían ser algo como crear un invitado de KVM, o mostrarme la memoria utilizada por un contagante LX, etc.
El demonio libvirt luego delega la solicitud al controlador de hipervisor de libvirt apropiado. Este controlador comprende e implementa todos los detalles de una tecnología de virtualización dada y lleva a cabo las instrucciones en consecuencia.
Hay una clase diferente de controladores para manejar el almacenamiento e incluso redes de máquinas virtuales.
Piscinas y volúmenes
Las máquinas virtuales necesitan mucho almacenamiento. La tecnología de almacenamiento en sí es muy variable de hipervisor a hipervisor. VMware utiliza su propio formato VMDK, a Qemu le gusta usar QCOW2, también hay imágenes de disco en bruto y las imágenes LXC también son una historia diferente. Además, desea 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 usar libvirt en una variedad de casos de uso diferentes desde un solo servidor doméstico hasta una solución de virtualización escalable de grado empresarial.
En Libvirt Vernacular, un solo 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 un volumen. Los medios de almacenamiento utilizados en el host para almacenar un grupo de volúmenes asociados se conocen como piscina. Puede usar un servidor NFS como 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 piscinas diferentes. Primero es/var/lib/libvirt/imágenes y/var/lib/libvirt/boot. Los volúmenes para una sola VM se pueden dividir en múltiples piscinas. Por ejemplo, almaceno todas las imágenes de la nube limpia y los ISO del instalador del sistema operativo en el grupo/var/lib/libvirt/boot y para máquinas virtuales individuales se instala en archivos de imagen almacenados en/var/lib/libvirt/imágenes.
Incluso puede tener una sola piscina para una sola máquina virtual, o puede dividir las piscinas para las instantáneas, 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 VM, 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 sobre dónde viven estos archivos de configuración, puede ir a/etc/libvirt/y encontrar sus hipervisores en cuestión del directorio. El directorio principal/etc/libvirt/en sí contiene muchas configuraciones globales como controladores (E.G QEMU.conf y lxc.conf) y su configuración y el comportamiento predeterminado de libvirt.
Para observar la configuración específica de componentes individuales como las máquinas virtuales, grupos y volúmenes, debe ir a los directorios correspondientes. Para los invitados de Qemu esto es/etc/libvirt/qemu
root@deb:/etc/libvirt/qemu# ls -al
Total 24
DRWXR-XR-X 4 raíz de raíz 4096 21 de abril 10:39 .
DRWXR-XR-X 6 raíz de raíz 4096 28 de abril 17: 19 ..
DRWXR-XR-X 2 Root Root 4096 Abr 21 10:39 AutoStart
DRWXR-XR-X 3 Root Root 4096 14 de abril 13:49 Redes
-RW ------- 1 raíz raíz 3527 Abr 20 19:10 VM1.xml
-RW ------- 1 raíz raíz 3527 Abr 20 19:09 VM2.xml
El directorio de AutoStart contendrá enlaces simbólicos a VM1.XML y VM2.XML Si ha confiado las máquinas virtuales a AutoStart cuando el sistema host Boots ($ Virsh AutoStart VM1).
Del mismo modo, la red/etc/libvirt/qemu/contiene configuraciones para la red predeterminada de un invitado de QEMU. El/etc/libvirt/Storage contiene XML que definen los grupos de almacenamiento.
Si está interesado en configurar su propio host de virtualización, un buen lugar para comenzar será este artículo donde muestre cómo instalar invitados de QEM-KVM en un host de Debian utilizando libvirt y herramientas relacionadas.
Después de eso, puede comenzar a jugar con Virsh CLI y ver y administrar entidades como Domain (Libvirt llama a las máquinas virtuales de invitados un dominio) Redes, grupos de almacenamiento y volúmenes. Esto lo hará lo suficientemente cómodo con la tecnología que puede pasar a otros conceptos como instantáneas y filtro de red. Espero que este artículo demuestre ser un buen punto de partida para ti.