Canonical har offentliggjort en ny version af containerstyringssystemet LXD 5.20, som er bemærkelsesværdig for ændringen af licensen for projektet og introduktionen af kravet om at underskrive en CLA-aftale om overdragelse af ejerskabsrettigheder til koden, når ændringer modtages i LXD. Licensen for koden tilføjet til LXD af medarbejdere fra Canonical er ændret fra Apache 2.0 til AGPLv3, mens koden fra eksterne bidragydere, som Canonical ikke har ejerskabsretter til, forbliver under Apache 2.0. Da Canonical ikke har mulighed for at ændre licensen for hele LXD-koden, vil projektet nu blive leveret under blandede betingelser - en del af koden under AGPLv3 og en del under Apache 2.0. Overgangen til den nye licens forklares med ønsket om at ensrette licensen med andre serverprodukter fra Canonical, der bruger AGPLv3.
Koden fra gamle versioner forbliver som før tilgængelig under Apache 2.0-licensen, men alle ændringer, der gælder de re-licensierede komponenter, vil kun blive offentliggjort under AGPLv3-licensen, hvilket ikke vil tillade Incus at overføre ændringer fra LXD uden at ændre deres kodebase til AGPLv3-licensen. Licenserne Apache 2.0 og AGPLv3 har ensidigt kompatibilitet, der betyder, at kode under Apache 2.0 kan inkluderes i kode under AGPLv3, men ikke omvendt. Ændringen betyder en fuldstændig ophør af samarbejdet mellem LXD- og Incus-projekterne, da overførsel af ændringer fra LXD til Incus forhindres af den nye licens, mens overførslen fra Incus til LXD forhindres af nødvendigheden af at underskrive CLA-aftalen, som udviklerne af Incus ikke har tænkt sig at underskrive.
En særpræg ved AGPLv3-licensen er indførelsen af yderligere begrænsninger for applikationer, der muliggør driften af netværkstjenester. Ved brug af AGPL-komponenter i arbejdet med netværkstjenester er udvikleren forpligtet til at give brugeren kildekoden til alle ændringer, der er foretaget i disse komponenter, selvom det underliggende software, som tjener som grundlag for tjenesten, ikke distribueres og kun bruges internt i infrastrukturen til at organisere driften af tjenesten. AGPL-licensen pålægger også copyleft-betingelser, dvs. for at inkludere AGPL-kode fra LXD i sit projekt, skal kodebasen til eget projekt re-licenseres under AGPL-licensen.
LXD giver værktøjer til centraliseret styring af containere og virtuelle maskiner, der er implementeret i et cluster af flere servere. LXD er implementeret som en baggrundsproces, der modtager anmodninger over netværket via REST API og understøtter forskellige backends for lager (mappehierarki, ZFS, Btrfs, LVM), snapshots af tilstande, live-migrering af kørende containere fra en maskine til en anden og værktøjer til opbevaring af containerbilleder. LXC-værktøjet bruges som runtime til at starte containere og inkluderer biblioteket liblxc, en række værktøjer (lxc-create, lxc-start, lxc-stop, lxc-ls osv.), skabeloner til oprettelse af containere og et sæt bindings til forskellige programmeringssprog. Isolation sker ved hjælp af standardmekanismerne i Linux-kernen (navnerum, cgroups, Apparmor, SELinux, Seccomp). Foruden LXC anvendes der også komponenter fra projekterne CRIU og QEMU i LXD.
Blandt de nye funktioner tilføjet i LXD 5.20:
- Under oprettelsen af lagringspuljer baseret på Cephfs er det nu muligt at oprette metadata og data for OSD-puljer (Object Storage Daemon) ved hjælp af parametrene cephfs.create_missing, cephfs.meta_pool og cephfs.data_pool. For eksempel: lxc storage create mypool cephfs source=cephfs \ cephfs.create_missing=true \ cephfs.data_pool=xyz_data \ cephfs.meta_pool=xyz_meta
- I LXD snap-pakken er der tilføjet mulighed for at indstille boot-prioriteter fra forskellige diske ved brug af security.csm-tilstand i EDK2-firmware.
- Der er tilføjet en fejlsøgningstilstand (boot.debug_edk2=true) til EDK2 UEFI-firmware til diagnosticering af opstartsproblemer virtual machines. Fejlloggen gemmes i filen $LXD_DIR/logs//edk2.log.
- Godkendelseskoden er blevet omstruktureret til en modulær basis, hvilket gør det muligt at understøtte OpenFGA ud over TLS-certifikatgodkendelse og Canonical RBAC.
- For at kompilere LXD kræves nu mindst version 1.20 af Go-sproget.
- Understøttelsen af Shiftfs er blevet fjernet. Til mapping af bruger-id'er bør der anvendes montering med idmap, som understøttes for Ext4, XFS, Btrfs, ZFS og Cephfs.
- Understøttelsen af UEFI-firmwares med størrelse 2MB er blevet fjernet (der skal anvendes firmwares med størrelse 4MB).
- Fra koden i Incus-forken er understøttelsen af oprettelse af lagre baseret på NVMe-teknologi blevet overført. For at angive disktype er der tilføjet en ny konfigurationsparameter "io.bus", som som standard er indstillet til "virtio-scsi". Når værdien ændres til "nvme", vil lagermediet i den virtuelle maskine blive vist som NVMe SSD.
- Fra koden i Incus-forken er understøttelsen af varm tilslutning og varm frakobling (hot-plug/hot-remove) af filstier eller enkelte partitioner, der er videresendt fra værtsmiljøet, blevet overført. Tidligere krævede en sådan videresendelse ved hjælp af virtio-fs-driveren eller 9p-FS, at den virtuelle maskine blev stoppet. For at omgå denne begrænsning er QEMU's evne til varm tilslutning af PCI-enheder og montering af stien i gæstesystemet gennem incus-agent blevet aktiveret.
- Enhedsidentifikatoren org.linuxcontainers.lxd er blevet omdøbt til com.canonical.lxd (for at bevare bagudkompatibiliteten er understøttelse af den gamle identifikator bevaret).
Kilde: opennet.ru
