Canonical heeft een nieuwe versie van het LXD-containerbeheersysteem gepubliceerd, versie 5.20. Deze versie is opmerkelijk vanwege de wijziging van de projectlicentie en de introductie van de noodzaak om een CLA-overeenkomst te ondertekenen voor de overdracht van eigendomsrechten op de code bij het accepteren van wijzigingen in LXD. De licentie voor de code die door Canonical-medewerkers aan LXD is toegevoegd, is gewijzigd van Apache 2.0 naar AGPLv3, en de code van externe bijdragers waarvoor Canonical geen eigendomsrechten heeft, blijft onder Apache 2.0. Omdat Canonical de licentie voor de gehele LXD-code niet kan wijzigen, wordt het project nu onder gemengde voorwaarden opgeleverd: deels onder AGPLv3 en deels onder Apache 2.0. De overgang naar een nieuwe licentie wordt verklaard door de wens om de licentie te integreren met andere Canonical-serverproducten die AGPLv3 gebruiken.
De code van oude releases blijft beschikbaar onder de Apache 2.0-licentie, zoals voorheen, maar wijzigingen in de componenten met een nieuwe licentie worden alleen gepubliceerd onder de AGPLv3-licentie. Dit voorkomt dat de Incus-fork wijzigingen van LXD kan overzetten zonder de codebase over te zetten naar de AGPLv3-licentie. De Apache 2.0- en AGPLv3-licenties hebben eenzijdige compatibiliteit, wat erop neerkomt dat code onder de Apache 2.0-licentie kan worden opgenomen in code onder de AGPLv3-licentie, maar niet andersom. Deze wijziging betekent een volledig einde aan de samenwerking tussen de LXD- en Incus-projecten, aangezien de nieuwe licentie het overzetten van wijzigingen van LXD naar Incus verhindert. Bovendien is er van Incus naar LXD een CLA-overeenkomst nodig, die de Incus-ontwikkelaars niet van plan zijn te ondertekenen.
Een bijzonder kenmerk van de AGPLv3-licentie is de introductie van aanvullende beperkingen voor applicaties die de werking van netwerkdiensten waarborgen. Bij het gebruik van AGPL-componenten in de werking van netwerkdiensten is de ontwikkelaar verplicht de gebruiker de broncode van alle wijzigingen in deze componenten te verstrekken, zelfs als de onderliggende software van de dienst niet gedistribueerd is en uitsluitend wordt gebruikt in de interne infrastructuur om de werking van de dienst te organiseren. De AGPL-licentie stelt ook copyleft-voorwaarden: om AGPL-code van LXD in uw project op te nemen, moet de codebase van uw eigen project opnieuw worden gelicentieerd onder de AGPL-licentie.
LXD biedt tools voor gecentraliseerd beheer van containers en virtuele machines die zijn geïmplementeerd in een cluster van meerdere servers. serversLXD is geïmplementeerd als een achtergrondproces dat netwerkverzoeken accepteert via een REST API en verschillende opslagbackends ondersteunt (directory tree, ZFS, Btrfs, LVM), snapshots met state slices, live migratie van draaiende containers van de ene machine naar de andere, en tools voor het opslaan van containerimages. De LXC-toolkit wordt gebruikt als runtime voor het starten van containers. Deze toolkit omvat de liblxc-bibliotheek, een set hulpprogramma's (lxc-create, lxc-start, lxc-stop, lxc-ls, enz.), templates voor het bouwen van containers en een set bindings voor verschillende programmeertalen. Isolatie wordt bereikt met behulp van standaard kernelmechanismen. Linux (namespaces, cgroups, Apparmor, SELinux, Seccomp). Naast LXC maakt LXD ook gebruik van componenten uit de CRIU- en QEMU-projecten.
De in LXD 5.20 toegevoegde functies zijn onder meer:
- Bij het aanmaken van Cephfs-gebaseerde storagepools is het nu mogelijk om metadata en data voor OSD-pools (Object Storage Daemon) te creëren met behulp van de parameters cephfs.create_missing, cephfs.meta_pool en cephfs.data_pool. Bijvoorbeeld: lxc storage create mypool cephfs source=cephfs \ cephfs.create_missing=true \ cephfs.data_pool=xyz_data \ cephfs.meta_pool=xyz_meta
- Het LXD snap-pakket heeft de mogelijkheid toegevoegd om de opstartprioriteit vanaf verschillende schijven te configureren bij gebruik van de security.csm-modus in de EDK2-firmware.
- Er is een debugmodus (boot.debug_edk2=true) toegevoegd aan de EDK2 UEFI-firmware voor het diagnosticeren van opstartproblemen. virtuele machinesHet debuglogbestand wordt opgeslagen in het bestand $LXD_DIR/logs/. /edk2.log.
- De autorisatiecode is modulair opgebouwd, waardoor naast autorisatie met TLS-certificaten en Canonical RBAC ook ondersteuning voor OpenFGA mogelijk is.
- LXD heeft nu minimaal Go 1.20 nodig om te compileren.
- Shiftfs-ondersteuning verwijderd. Voor gebruikers-ID-toewijzing moeten koppelingen met idmap worden gebruikt, wat wordt ondersteund voor Ext4, XFS, Btrfs, ZFS en Cephfs.
- Ondersteuning voor UEFI-firmware met een grootte van 2 MB is verwijderd (u moet firmware met een grootte van 4 MB gebruiken).
- Ondersteuning voor het aanmaken van opslag op basis van NVME-technologie is overgenomen uit de Incus-forkcodebase. Er is een nieuwe configuratieparameter "io.bus" toegevoegd om het schijftype te specificeren, dat standaard is ingesteld op "virtio-scsi". Wanneer u de waarde wijzigt naar "nvme", wordt de schijf in de virtuele machine zichtbaar als een NVME SSD.
- Hot-plug/hot-remove-ondersteuning voor bestandspaden of individuele partities die vanuit de hostomgeving worden doorgestuurd, is overgenomen uit de Incus-forkcodebase. Voorheen vereiste dit doorsturen met behulp van de virtio-fs driver of FS 9p het stoppen van de virtuele machine. Om deze beperking te omzeilen, wordt de QEMU-functionaliteit voor het hot-pluggen van PCI-apparaten en het koppelen van het pad binnen het gastsysteem via incus-agent gebruikt.
- De apparaat-ID org.linuxcontainers.lxd is hernoemd naar com.canonical.lxd (om achterwaartse compatibiliteit te behouden, wordt de oude ID nog steeds ondersteund).
Bron: opennet.ru
