Spoločnosť Canonical vydala novú verziu správcu kontajnerov LXD 5.0 a virtuálneho súborového systému LXCFS 5.0. Kód LXD je napísaný v programovacom jazyku Go a je šírený pod licenciou Apache 2.0. Verzia 5.0 je zaradená medzi vydania s dlhodobou podporou — aktualizácie budú poskytované do júna 2027.
Na beh kontajnerov sa používa nástroj LXC, ktorý zahŕňa knižnicu liblxc, súbor utilít (lxc-create, lxc-start, lxc-stop, lxc-ls atď.), šablóny na vytváranie kontajnerov a súbor prepojení pre rôzne programovacie jazyky. Izolácia sa vykonáva prostredníctvom štandardných mechanizmov jadra Linuxu. Pre izoláciu procesov, sieťového zásobníka ipc, uts, identifikátorov používateľov a bodov montovania sa používa mechanizmus priestorov názvov (namespaces). Pre obmedzenie zdrojov sa používajú cgroups. Pre zníženie privilégii a obmedzenie prístupu sú využívané možnosti jadra, ako sú profily Apparmor a SELinux, politiky Seccomp, Chroots (pivot_root) a capabilities.
Okrem LXC využíva LXD aj komponenty z projektov CRIU a QEMU. Kým je LXC nízkoúrovňový nástroj na manipuláciu na úrovni jednotlivých kontajnerov, LXD poskytuje prostriedky na centralizované riadenie kontajnerov nasadených v klastri pozostávajúcom z viacerých serverov. LXD je implementovaný ako proces na pozadí, ktorý prijíma požiadavky cez sieť prostredníctvom REST API a podporuje rôzne backendy úložiska (strom adresárov, ZFS, Btrfs, LVM), snímky so stavmi, živú migráciu bežiacich kontajnerov z jedného stroja na druhý a prostriedky na uchovávanie obrazov kontajnerov. LXCFS sa používa na simuláciu v kontajneroch pseudo-FS /proc a /sys a virtualizovaného zobrazenia cgroupfs, aby kontajnery vyzerali ako bežný nezávislý systém.
Kľúčové vylepšenia:
- Možnosť hot-plugovania a odpojenia diskov a USB zariadení. V virtuálnom stroji je nový disk rozpoznávaný prostredníctvom objavenia nového zariadenia na sbine SCSI, zatiaľ čo USB zariadenie — generovaním udalosti USB hotplug.
- Pridaná možnosť spustenia LXD aj v prípade, že nie je možné nadviazať sieťové pripojenie, napríklad z dôvodu nedostatku potrebného sieťového zariadenia. Namiesto zobrazenia chyby pri spustení LXD teraz spúšťa maximálny možný počet prostredí vzhľadom na aktuálne podmienky, pričom ostatné prostredia sa spúšťajú po nadviazaní sieťového pripojenia.
- Pridaná nová rola členov klastra — ovn-chassis, určená pre klastry používajúce OVN (Open Virtual Network) na sieťovú interakciu (priradením roly ovn-chassis je možné vyčleniť servery na vykonávanie funkcií smerovačov OVN).
- Navrhnutý optimalizovaný režim aktualizácie obsahu sekcií úložiska. V predchádzajúcich vydaniach sa aktualizácia uskutočňovala tak, že sa najprv inštancia kontajnera alebo sekcia skopírovala, napríklad pomocou funkčnosti send/receive v zfs alebo btrfs, po čom sa vytvorená kópia synchronizovala prostredníctvom spustenia programu rsync. Na zvýšenie efektivity aktualizácie virtuálních strojů v novom vydaní bola zapojená pokročilá logika migrácie, pri ktorej, ak zdrojový a cieľový server používajú jeden zásobník úložiska, sa namiesto rsync automaticky aplikujú snapshoty a operácie send/receive.
- Prepracovaná logika identifikácie prostredí v cloud-init: namiesto názvov prostredí sa ako instance-id teraz používa UUID.
- Pridaná podpora zachytávania systémového volania sched_setscheduler, umožňujúca neprivilegovaným kontajnerom meniť priority procesov.
- Realizovaná možnosť lvm.thinpool_metadata_size, ktorá riadi veľkosť metadát v thinpool.
- Prepracovaný formát súboru so sieťovými informáciami pre lxc. Pridaná podpora údajov o viazaní rozhraní, sieťových mostoch, VLAN a OVN sieti.
- Zvýšené požiadavky na minimálne verzie komponentov: Linuxové jadro 5.4, Go 1.18, LXC 4.0.x a QEMU 6.0.
- V LXCFS 5 pridali podporu unified hierarchy cgroup (cgroup2), realizované /proc/slabinfo a /sys/devices/system/cpu, pre zostavovanie bol použitý nástroj meson.
Zdroj: opennet.ru
