Kompania Canonical publikoi versionin e ri të sistemit të menaxhimit të kontejnerëve LXD 5.20, e cila shquhet për ndryshimin e licencës së projektit dhe përpara se të nënshkruhet marrëveshja CLA për transferimin e të drejtave të pronësisë mbi kodin kur pranojnë ndryshime në LXD. Licenca për kodin e shtuar në LXD nga punëmarrësit e Canonical është ndryshuar nga Apache 2.0 në AGPLv3, ndërsa kodi i kontribuesve të tjerë, mbi të cilin Canonical nuk ka të drejta pronësore, mbetet nën Apache 2.0. Duke qenë se Canonical nuk ka mundësi të ndryshojë licencën për të gjithë kodin LXD, projekti tani do të ofrohet me kushte të përziera - një pjesë e kodit nën AGPLv3 dhe një pjesë nën Apache 2.0. Kalimi në licencën e re shpjegohet me dëshirën për të unifikuar licencën me produktet e tjera serverike të Canonical, të cilat përdorin AGPLv3.
Kodi i versioneve të vjetra, ashtu siç ishte, mbetet i disponueshëm nën licencën Apache 2.0, por të gjitha ndryshimet në komponentët e ripërcaktuar do të publikohet vetëm nën licencën AGPLv3, e cila nuk do t'i lejojë forkut Incus të transferojë ndryshime nga LXD pa e çuar bazën e tij të kodit në licencën AGPLv3. Licencat Apache 2.0 dhe AGPLv3 kanë një përputhshmëri njëanshme, e cila rezulton në faktin se kodi nën licencën Apache 2.0 mund të përfshihet në kodin nën licencën AGPLv3, por jo anasjelltas. Ndryshimi do të thotë një ndërprerje të plotë të bashkëpunimit midis projekteve LXD dhe Incus, pasi transferimi i ndryshimeve nga LXD në Incus pengohet nga licenca e re, dhe nga Incus në LXD kërkesa për nënshkrimin e marrëveshjes CLA, të cilën zhvilluesit e Incus nuk kanë ndërmend ta nënshkruajnë.
Karakteristika e licencës AGPLv3 është se sjell kufizime shtesë për aplikacionet që sigurojnë funksionimin e shërbimeve rrjet. Kur përdoren komponentë AGPL në funksionimin e shërbimeve rrjet, zhvilluesi është i detyruar të ofrojë përdoruesit kodin burimor të të gjitha ndryshimeve të bëra në këto komponentë, edhe nëse softueri që është baza e shërbimit nuk shpërndahen dhe përdoret vetëm në infrastrukturën e brendshme për organizimin e funksionimit të shërbimit. Licenca AGPL gjithashtu vendos kushte copyleft, domethënë, për të përfshirë kodin AGPL nga LXD në projektin tuaj, baza e kodit të projektit tuaj duhet të ri-licencohet nën licencën AGPL.
LXD ofron mjete për menaxhimin qendror të kontejnerëve dhe makinave virtuale, të implementuara në një klaster të disa serverësh. LXD implementohet si një proces sfondor që pranon kërkesa përmes rrjetit nëpërmjet REST API dhe mbështet disa backend të ruajtjes (strukturë drejtorish, ZFS, Btrfs, LVM), snapshot-e me prerje të gjendjes, migrimin e drejtpërdrejtë të kontejnerëve në punë nga një makinë në tjetrën dhe mjete për ruajtjen e imazheve të kontejnerëve. Si runtime për ekzekutimin e kontejnerëve përdoret mjeti LXC, i cili përfshin bibliotekën liblxc, një grup utilitarësh (lxc-create, lxc-start, lxc-stop, lxc-ls etj.), modele për ndërtimin e kontejnerëve dhe një grup lidhjesh për gjuhë të ndryshme programimi. Izolimi realizohet përmes mekanizmave standarde të kernelit Linux (hapësira e emrave, cgroups, Apparmor, SELinux, Seccomp). Përveç LXC, në LXD përdoren gjithashtu komponentët nga projektet CRIU dhe QEMU.
Ndër mundësitë e reja që u shtuan në LXD 5.20:
- Gjatë krijimit të grupeve të ruajtjes në bazë të Cephfs, u ofrua mundësia për të krijuar metadata dhe të dhëna për grupet OSD (Object Storage Daemon), duke përdorur parametrat cephfs.create_missing, cephfs.meta_pool dhe cephfs.data_pool. Për shembull: lxc storage create mypool cephfs source=cephfs \ cephfs.create_missing=true \ cephfs.data_pool=xyz_data \ cephfs.meta_pool=xyz_meta
- Në paketën snap të LXD, në firmen EDK2 u shtua mundësia për të konfiguruar prioritetin e boot-it nga disqe të ndryshme kur përdoret moda security.csm.
- Në firmen EDK2 UEFI u shtua një mod i depurimit (boot.debug_edk2=true) për diagnostikimin e problemeve gjatë boot-it makinat virtuale. Log-u i depurimit ruhet në skedarin $LXD_DIR/logs//edk2.log.
- Kodi i autorizimit është transferuar në një bazë modulare, duke mundësuar mbështetje për OpenFGA përveç autorizimit me certifikata TLS dhe Canonical RBAC.
- Për kompaktimin e LXD tani kërkohet të paktën versioni 1.20 i gjuhës Go.
- Mbështetja për Shiftfs është hequr. Për mapimin e identifikatorëve të përdoruesve duhet të përdoret montimi me idmap, që mbështetet për Ext4, XFS, Btrfs, ZFS dhe Cephfs.
- Mbështetja për firmen UEFI, me përmasë 2MB është hequr (duhet të përdoren firma me përmasë 4MB).
- Nga kodi i fork-ut Incus është transferuar mbështetje për krijimin e depozitave që përdorin teknologjinë NVMe. Për të specifikuar llojin e diskut është shtuar një parametër i ri konfigurimi "io.bus", i cili është vendosur në vlerën "virtio-scsi" si parazgjedhje. Kur ndryshohet vlera në "nvme", disku në makinë virtuale do të duket si NVMe SSD.
- Nga kodi i fork-ut Incus është transferuar mbështetje për lidhjen dhe çlidhjen e nxehtë (hot-plug/hot-remove) të rrugëve të skedarëve ose të pjesëve të veçanta, të cilat kalojnë nga mjedisi i host-it. Më parë, ky kalim përmes drejtuesit virtio-fs ose FS 9p kërkonte ndalimin e makinës virtuale. Për të shmangur këtë kufizim, është përdorur aftësia e QEMU për lidhjen e nxehtë të pajisjeve PCI dhe montimin e rrugës brenda sistemit mysafir përmes incus-agent.
- Identifikuesi i pajisjes org.linuxcontainers.lxd është ribërë në com.canonical.lxd (për të ruajtur përputhshmërinë e prapme, mbështetja për identifikuesin e vjetër është ruajtur).
Burimi: opennet.ru
