Canonical heeft een nieuwe versie van het containerbeheersysteem LXD 5.20 gepubliceerd, die opvalt door de wijziging in de licentie van het project en de invoering van de verplichting tot het ondertekenen van een CLA-overeenkomst voor de overdracht van eigendomsrechten op de code bij het aanvaarden van wijzigingen in LXD. De licentie op de code die aan LXD is toegevoegd door medewerkers van Canonical, is gewijzigd van Apache 2.0 naar AGPLv3, terwijl de code van externe bijdragers, waarvoor Canonical geen eigendomsrechten heeft, onder Apache 2.0 blijft. Aangezien Canonical niet in staat is de licentie voor de hele LXD-code te wijzigen, zal het project nu worden geleverd onder gemengde voorwaarden: een deel van de code onder AGPLv3 en een deel onder Apache 2.0. De overgang naar de nieuwe licentie wordt verklaard door de wens om de licentie te uniformeren met andere serverproducten van Canonical die AGPLv3 gebruiken.
De code van oude releases blijft zoals voorheen beschikbaar onder de Apache 2.0-licentie, maar alle wijzigingen die in de opnieuw gelicentieerde componenten worden aangebracht, zullen alleen onder de AGPLv3-licentie worden gepubliceerd. Dit maakt het voor de fork Incus onmogelijk om wijzigingen van LXD over te nemen zonder hun codebasis onder de AGPLv3-licentie te brengen. De Apache 2.0- en AGPLv3-licenties hebben een eenzijdige compatibiliteit, wat betekent dat code onder de Apache 2.0-licentie kan worden opgenomen in code onder de AGPLv3-licentie, maar niet andersom. Deze wijziging betekent een volledige stopzetting van de samenwerking tussen de projecten LXD en Incus, omdat de nieuwe licentie de overdracht van wijzigingen van LXD naar Incus belemmert, terwijl de noodzaak om het CLA-overeenkomst te ondertekenen dat de ontwikkelaars van Incus niet van plan zijn te doen, een obstakel vormt voor wijzigingen van Incus naar LXD.
Een kenmerk van de AGPLv3-licentie is de invoering van extra beperkingen voor applicaties die netwerksystemen faciliteren. Bij het gebruik van AGPL-componenten voor netwerksystemen is de ontwikkelaar verplicht de gebruiker de broncode van alle aangebrachte wijzigingen aan deze componenten te verstrekken, zelfs als de onderliggende software niet wordt verspreid en uitsluitend intern wordt gebruikt voor de werking van de dienst. De AGPL-licentie legt ook copyleft-voorwaarden op, wat betekent dat om AGPL-code van LXD in hun project op te nemen, de codebasis van hun eigen project onder de AGPL-licentie moet worden herlicentieerd.
LXD biedt middelen voor centrale beheersing van containers en virtuele machines, die zijn uitgerold in een cluster van meerdere servers. LXD is geĆÆmplementeerd als een achtergrondproces dat verzoeken via het netwerk accepteert via REST API en verschillende opslagbackends ondersteunt (directorystructuur, ZFS, Btrfs, LVM), snapshots met statusopnames, live-migratie van actieve containers van de ene machine naar de andere en middelen voor het opslaan van containerbeelden. Voor het uitvoeren van containers wordt de LXC-toolkit gebruikt, die de liblxc-bibliotheek, een set hulpprogramma's (lxc-create, lxc-start, lxc-stop, lxc-ls, enz.), sjablonen voor het bouwen van containers en een set bindings voor verschillende programmeertalen omvat. Isolatie wordt gerealiseerd met behulp van standaardmechanismen in de Linux-kernel (namespaces, cgroups, Apparmor, SELinux, Seccomp). Naast LXC worden in LXD ook componenten van de projecten CRIU en QEMU gebruikt.
Onder de nieuwe functies die zijn toegevoegd in LXD 5.20:
- Bij het creƫren van opslagpools op basis van Cephfs is de mogelijkheid toegevoegd om metadata en gegevens voor OSD-pools (Object Storage Daemon) te creƫren met 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
- In de snap-package van LXD is in de EDK2-firmware de mogelijkheid toegevoegd om de opstartprioriteit van verschillende schijven in te stellen bij gebruik van de modus security.csm.
- In de EDK2 UEFI-firmware is een debugmodus (boot.debug_edk2=true) toegevoegd voor het diagnosticeren van opstartproblemen virtuele machines. De debuglog wordt opgeslagen in het bestand $LXD_DIR/logs/<instance_name>/edk2.log.
- De autorisatiecode is omgezet naar een modulaire basis, waardoor ook ondersteuning voor OpenFGA is toegevoegd naast autorisatie via TLS-certificaten en Canonical RBAC.
- Voor het compileren van LXD is nu minimaal versie 1.20 van de Go-taal vereist.
- Ondersteuning voor Shiftfs is verwijderd. Voor het mappen van gebruikersidentificaties dient gebruik te worden gemaakt van een montage met idmap, die wordt ondersteund voor Ext4, XFS, Btrfs, ZFS en Cephfs.
- Ondersteuning voor UEFI-firmware van 2MB is verwijderd (firmware van 4MB is vereist).
- De codebasis van de Incus-fork heeft ondersteuning gekregen voor het creƫren van opslag op basis van NVME-technologie. Voor het specificeren van het type schijf is er een nieuwe configuratieparameter 'io.bus' toegevoegd, die standaard is ingesteld op 'virtio-scsi'. Wanneer de waarde wordt gewijzigd naar 'nvme', zal de opslag in de virtuele machine zichtbaar zijn als NVME SSD.
- De codebasis van de Incus-fork heeft ondersteuning gekregen voor hot-plugging en hot-removing van bestandspaden of afzonderlijke partities die vanuit de hostomgeving zijn doorgegeven. Eerder vereiste deze doorvoer, via de virtio-fs-stuurprogramma of de 9p FS, het stoppen van de virtuele machine. Om deze beperking te omzeilen, is de hot-plugging mogelijkheid van PCI-apparaten in QEMU ingezet, evenals het monteren van het pad binnen het gastensysteem via incus-agent.
- De apparaatsidentificator org.linuxcontainers.lxd is hernoemd naar com.canonical.lxd (de ondersteuning voor de oude identificator is behouden voor achterwaartse compatibiliteit).
Bron: opennet.ru
