Компания 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), моментни снимки с резюме на състоянието, жива миграция на работещи контейнери от една машина на друга и средства за съхранение на образи на контейнери. 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. За повишаване на ефективността на обновлението на виртуални машини в новата версия е активирана усъвършенствана логика на миграция, при която, ако изходният и целевият сървър използват едно и също хранилище, вместо rsync автоматично се прилагат снапшотове и операции 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
