LXD 5.0 llega con mejoras, optimizaciones y mas
Canonical dio a conocer hace poco el lanzamiento de la nueva versión del administrador de contenedores LXD 5.0 y el sistema de archivos virtual LXCFS 5.0, siendo esta nueva rama 5.0 clasificada como una versión de soporte a largo plazo y en la cual las actualizaciones se formarán hasta junio de 2027.
LXC se utiliza como runtime para el lanzamiento como contenedores, que incluye la biblioteca liblxc, un conjunto de utilidades (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), plantillas para crear contenedores y un conjunto de enlaces para varios lenguajes de programación. El aislamiento se lleva a cabo utilizando los mecanismos regulares del kernel de Linux.
El mecanismo de espacios de nombres se utiliza para aislar procesos, el ipc, la pila de red uts, las identificaciones de usuario y los puntos de montaje cgroups se utilizan para limitar los recursos. Las características del kernel, como los perfiles de Apparmor y SELinux, las políticas de Seccomp, Chroots (pivot_root) y las capacidades se utilizan para reducir los privilegios y restringir el acceso.
Además de LXC, LXD también utiliza componentes de los proyectos CRIU y QEMU. Si LXC es un conjunto de herramientas de bajo nivel para la manipulación a nivel de contenedores individuales, LXD proporciona herramientas para la gestión centralizada de contenedores implementados en un clúster de varios servidores.
LXD se implementa como un proceso en segundo plano que acepta solicitudes a través de la red a través de una API REST y admite varios backends de almacenamiento (árbol de directorios, ZFS, Btrfs, LVM), instantáneas de estado, migración en vivo de contenedores en ejecución de una máquina a otra y herramientas para contenedores de almacenamiento de imágenes. LXCFS se usa para simular los contenedores /proc y /sys pseudo-FS, y la vista virtualizada de cgroupfs para hacer que los contenedores parezcan un sistema independiente normal.
Principales novedades de LXD 5.0
En esta nueva versión que se presenta de LXD 5.0 se destaca la capacidad para conectar y desconectar en caliente unidades y dispositivos USB. En una máquina virtual, un nuevo disco se detecta por la aparición de un nuevo dispositivo en el bus SCSI, y un dispositivo USB se detecta generando un evento USB hotplug.
Se proporciona la capacidad de iniciar LXD incluso si es imposible establecer una conexión de red, por ejemplo, debido a la falta de un dispositivo de red necesario. En lugar de mostrar un error al iniciar, LXD ahora inicia tantos entornos como puede en las condiciones actuales, y el resto de los entornos se inician después de que se establece la conexión de red.
En LXD 5.0 se ha agregado una nueva función de los miembros del clúster: ovn-chassis, destinada a los clústeres que usan OVN (Open Virtual Network) para la interacción de red (al asignar la función ovn-chassis, los servidores se pueden asignar para que actúen como enrutadores OVN).
Otro de los cambios que se destaca, es que se propone un modo optimizado para actualizar el contenido de las particiones de almacenamiento. En versiones anteriores, la actualización consistía en copiar primero una instancia o partición de contenedor, por ejemplo, utilizando la funcionalidad de envío/recepción en zfs o btrfs, después de lo cual la copia creada se sincronizaba ejecutando el programa rsync.
Para mejorar la eficiencia de la actualización de máquinas virtuales, la nueva versión utiliza una lógica de migración avanzada, en la que, si los servidores de origen y de destino utilizan el mismo grupo de almacenamiento, las instantáneas y las operaciones de envío/recepción se utilizan automáticamente en lugar de rsync.
De los demás cambios que se destacan:
- La lógica de identificación del entorno en cloud-init se ha rediseñado: UUID ahora se usa como ID de instancia en lugar de nombres de entorno.
- Se agregó soporte para conectar la llamada al sistema sched_setscheduler para permitir que los contenedores sin privilegios cambien las prioridades del proceso.
- Se implementó la opción lvm.thinpool_metadata_size para controlar el tamaño de los metadatos en thinpool.
- Formato de archivo de información de red rediseñado para lxc. Se agregó compatibilidad con enlaces de interfaz, puentes de red, VLAN y OVN.
- Mayores requisitos para las versiones mínimas de los componentes: Linux kernel 5.4, Go 1.18, LXC 4.0.x y QEMU 6.0.
- LXCFS 5 agregó soporte para una jerarquía cgroup unificada (cgroup2), implementó /proc/slabinfo y /sys/devices/system/cpu, y usó el kit de herramientas meson para el ensamblaje.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.