Кампанія Canonical апублікавала рэліз мэнэджара кантэйнераў LXD 5.0 і віртуальнай ФС LXCFS 5.0. Код LXD напісаны на мове Go і распаўсюджваецца пад ліцэнзіяй Apache 2.0. Ветка 5.0 аднесена да выпускаў з працяглай падтрымкай - абнаўленні будуць фармавацца да чэрвеня 2027 года.
У якасці runtime для запуску як кантэйнераў выкарыстоўваецца інструментар LXC, у склад якога ўваходзіць бібліятэка liblxc, набор утыліт (lxc-create, lxc-start, lxc-stop, lxc-ls і да т.п.), шаблоны для пабудовы кантэйнераў і набор біндзінгаў для розных моў праграмавання. Ізаляцыя ажыццяўляецца пры дапамозе штатных механізмаў ядра Linux. Для ізаляцыі працэсаў, сеткавага стэка ipc, uts, ідэнтыфікатараў карыстачоў і кропак мантавання выкарыстоўваецца механізм прастор імёнаў (namespaces). Для абмежавання рэсурсаў прымяняюцца cgroups. Для зніжэння прывілеяў і абмежаванні доступу задзейнічаны такія магчымасці ядра, як профілі Apparmor і SELinux, палітыкі Seccomp, Chroots (pivot_root) і capabilities.
Акрамя LXC у LXD таксама прымяняюцца кампаненты ад праектаў CRIU і QEMU. Калі LXC з'яўляецца нізкаўзроўневым інструментаром для маніпуляцыі на ўзроўні асобных кантэйнераў, то LXD дае сродкі для цэнтралізаванага кіравання кантэйнерамі, разгорнутымі ў кластары з некалькіх сервераў. LXD рэалізаваны ў выглядзе фонавага працэсу, які прымае запыты па сетцы праз REST API і які падтрымлівае розныя бэкенды сховішчаў (дрэва дырэкторый, ZFS, Btrfs, LVM), снапшоты са зрэзам стану, live-міграцыю якія працуюць кантэйнераў з адной машыны на іншую і сродкі для захоўвання выяў кантэйнераў. LXCFS ужываецца для сімуляцыі ў кантэйнерах псеўда-ФС /proc і /sys, а віртуалізаванага ўяўлення cgroupfs для надання кантэйнерам выгляду звычайнай незалежнай сістэмы.
Ключавыя паляпшэнні:
- Магчымасць гарачага падлучэння і адключэнні дыскаў і USB-прылад. У віртуальнай машыне новы дыск вызначаецца праз з'яўленне новай прылады на шыне SCSI, а USB-прылада – генерацыяй падзеі USB hotplug.
- Дадзеная магчымасць запуску LXD нават ва ўмовах немагчымасці ўзняцця сеткавага злучэння, напрыклад, з-за адсутнасці неабходнай сеткавай прылады. Замест высновы памылкі пры запуску LXD зараз запускае максімальна магчымае ў бягучых умовах лік асяроддзяў, а астатнія асяроддзі запускаюцца пасля таго як будзе наладжана сеткавае злучэнне.
- Дададзена новая роля чальцоў кластара - ovn-chassis, прызначаная для кластараў, выкарыстоўвалых OVN (Open Virtual Network) для сеткавага ўзаемадзеяння (праз прысваенне ролі ovn-chassis можна вылучыць серверы для выканання функцый маршрутызатараў OVN).
- Прапанаваны аптымізаваны рэжым абнаўлення змесціва раздзелаў сховішча. У мінулых выпусках абнаўленне зводзілася да таго, што спачатку асобнік кантэйнера або частка капіяваўся, напрыклад, праз ужыванне функцыянальнасці send/receive у zfs або btrfs, пасля чаго створаная копія сінхранізавалася праз запуск праграмы rsync. Для павышэння эфектыўнасці абнаўлення віртуальных машын у новым выпуску задзейнічана прасунутая логіка міграцыі, пры якой у выпадку, калі зыходны і мэтавы сервер выкарыстоўваюць адзін пул захоўвання, замест rsynс аўтаматычна прымяняюцца снапшоты і аперацыі send/receive.
- Перапрацаваная логіка ідэнтыфікацыі асяродкаў у cloud-init: замест імён асяроддзяў у якасці instance-id зараз выкарыстоўваецца UUID.
- Дададзена падтрымка перахопу сістэмнага выкліку sched_setscheduler, якая дазваляе непрывілеяваным кантэйнерам змяняць прыярытэты працэсаў.
- Рэалізаваная опцыя lvm.thinpool_metadata_size, якая кіруе памерам метададзеных у thinpool.
- Перапрацаваны фармат файла з сеткавай інфармацыяй для lxc. Дададзена падтрымка дадзеных аб звязванні інтэрфейсаў, сеткавых мастах, VLAN і OVN-сеткі.
- Падвышаныя патрабаванні да мінімальных версій кампанентаў: ядро Linux 5.4, Go 1.18, LXC 4.0.x і QEMU 6.0.
- У LXCFS 5 дададзеная падтрымка ўніфікаванай іерархіі cgroup (cgroup2), рэалізаваны /proc/slabinfo і /sys/devices/system/cpu, для зборкі задзейнічаны інструментар meson.
Крыніца: opennet.ru