Обнародование Canonical недавно вышла новая версия менеджера контейнеров LXD 5.0 и виртуальная файловая система LXCFS 5.0, поскольку эта новая ветка 5.0 классифицируется как версия с долгосрочной поддержкой и в которой обновления будут формироваться до июня 2027 года.
LXC используется как среда выполнения для запуска в виде контейнеров, который включает в себя библиотеку liblxc, набор утилит (lxc-create, lxc-start, lxc-stop, lxc-ls и др.), шаблоны для создания контейнеров и набор привязок для различных языков программирования. Изоляция осуществляется с помощью штатных механизмов ядра Linux.
Механизм пространства имен используется для изоляции процессов, ipc, сетевой стек uts, идентификаторы пользователей и точки монтирования cgroups используются для ограничения ресурсов. Функции ядра, такие как профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и возможности, используются для снижения привилегий и ограничения доступа.
Помимо LXC, LXD также использует компоненты из проектов CRIU и QEMU.. Если LXC — это низкоуровневый инструментарий для манипулирования отдельными контейнерами на уровне, то LXD предоставляет инструменты для централизованного управления контейнерами, развернутыми в многосерверном кластере.
LXD реализован как фоновый процесс который принимает запросы по сети через REST API и поддерживает различные серверные части хранилища (дерево каталогов, ZFS, Btrfs, LVM), моментальные снимки с отслеживанием состояния, динамическую миграцию запущенных контейнеров с одной машины на другую и инструменты для контейнеров хранения образов. LXCFS используется для имитации псевдо-FS-контейнеров /proc и /sys, а виртуализированное представление cgroupfs — для того, чтобы контейнеры выглядели как обычная автономная система.
Основные новости LXD 5.0
В представленной новой версии LXD 5.0 возможность горячего подключения и отключения USB-накопителей и устройств. В виртуальной машине новый диск обнаруживается новым устройством, появляющимся на шине SCSI, а устройство USB обнаруживается путем генерации события «горячего» подключения USB.
В возможность запуска LXD даже при невозможности установить сетевое соединение, например, из-за отсутствия необходимого сетевого устройства. Вместо того, чтобы показывать ошибку при запуске, LXD теперь запускает столько сред, сколько может в текущих условиях, а остальные среды запускаются после установления сетевого подключения.
В LXD 5.0 появился новый новая роль участников кластера: ovn-chassis, предназначенный для кластеров, использующих Open Virtual Network (OVN) для сетевого взаимодействия (при назначении роли ovn-chassis серверы могут быть назначены в качестве маршрутизаторов OVN).
Еще одно важное изменение: предложен оптимизированный способ обновления содержимого разделов хранилища. В предыдущих версиях обновление заключалось в первом копировании экземпляра контейнера или раздела, например, с использованием функции отправки/получения в zfs или btrfs, после чего созданная копия синхронизировалась с помощью запуска программы rsync.
Для повышения эффективности обновления виртуальной машины, новая версия использует расширенную логику миграции, где, если исходный и конечный серверы используют одну и ту же группу хранения, моментальные снимки и операции отправки/получения используются автоматически вместо rsync.
Из других изменений, которые выделяются:
- Логика идентификации среды в cloud-init была переработана: 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.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.