Выпуск systemd 219 с поддержкой расширенных возможностей Btrfs

Леннарт Поттеринг (Lennart Poettering) представил выпуск системного менеджера systemd 219, в котором наиболее значительные улучшения отмечены в networkd и механизмах обеспечения работы изолированных контейнеров, а также добавлена поддержка подразделов и снапшотов Btrfs, в поставку включен демон systemd-importd и представлен новый API sd-hwdb. Systemd сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd.

Наиболее существенные изменения:

Представлен новый API «sd-hwdb.h», предоставляющий средства для обращения к БД с метаданными оборудования (udev hwdb). Старый интерфейс libudev теперь является надстройкой над sd-hwdb. Для получения информации из базы оборудования и обновления БД из командной строки добавлена новая утилита systemd-hwdb. При копировании файлов в процессе работы компонентов systemd внутри, для разделов Btrfs теперь применяется операция клонирования метаданных («reflink»), без создания дубликата содержимого; В systemd-nspawn добавлена опция »--ephemeral» для создания одноразовых контейнеров. Возможность позволяет запустить контейнер в снапшоте Btrfs и удалить данный снапшот после завершения работы контейнера. Например, так можно поступить при проведении экспериментов, не ограничивая ФС доступом только для чтения, но не сохраняя какие-либо изменения. Другим применением может быть запуск контейнера поверх корневой ФС хост-системы без влияния на базовую систему; В systemd-nspawn добавлена опция »--template», позволяющая передать путь к дереву директорий, которые будут использованы в качестве шаблона для создания начинки контейнера. При использовании шаблонов директория контейнера, путь к которой передаётся через опцию »--directory», формируется на лету при первом запуска контейнера с применением возможностей файловой системы Btrfs; В утилиту machinectl добавлены команды «copy-from» и «copy-to» для копирования файлов из работающих контейнеров в окружение хост-системы и обратно, а также команда «bind» для монтирования директорий хост-системы в пространство локальной ФС контейнера; Представлен новый фоновый процесс «systemd-importd», позволяющий организовать загрузку образов контейнеров в форматах tar, raw, qcow2 и dkr и их размещение в директории /var/lib/machines для запуска через nspawn. Для проверки валидности загружаемых образов контейнеров используется GPG. Если образ поставляется в сжатом видео осуществляется его автоматическая распаковка. Для запроса образов в machinectl представлены новые команды «pull-tar», «pull-raw» и «pull-dkr». Например, при помощи данной функции можно быстро загрузить и запустить контейнеры на базе готовых образов Fedora и Ubuntu Cloud. Возможность поддерживается только на системах с Btrfs; В machinectl добавлена команда «list-images» вывода списка образов контейнеров, доступных в /var/lib/machines, а также данных об их размере. Если директория размещена в разделе Btrfs и включены квоты, то будет выведена информация о квотах. Для показа детальных сведения об образе в machinectl добавлена команда «image-status». В machinectl реализован эффективный механизм клонирования образов контейнеров, применяемый при использовании Btrfs, а также добавлены новые команды для удаления и переименования образов, и пометки их как доступными только для чтения; В machinectl добавлена новая команда «start», позволяющая запустить контейнер в виде сервиса. Например, команда «machinectl start foo» функционально эквивалентна «systemctl start systemd-nspawn at foo.service», но более удобна для ввода; Директория /var/lib/containers объявлена устаревшей и заменена на var/lib/machines, в которой, в том числе, могут размещаться загрузочные образы для qemu/kvm. Таким образом, термин «machines» в systemd распространяется не только на контейнеры, но и на виртуальные машины. При запуске systemd-nspawn с опцией »-M», но без определения директории (--directory) или образа (--image), теперь производится автоматический поиск в /var/lib/machines подходящей запрошенному контейнеру корневой директории, подраздела или дискового образа; Представлен новый юнит machines.target, который можно использовать для группировки всех контейнеров и виртуальных машин, которые запускаются в системе в качестве сервисов; В networkd добавлена поддержка сбора анонсов от сетевого оборудования по протоколу LLDP (Link Layer Discovery Protocol); В systemd-run добавлена опция »-t» (»--pty»), позволяющая запустить процесс как системный сервиc, но сохранить возможность интерактивного управления им через терминал. В том числе, можно запустить «systemd-run -t /bin/bash» без создания отдельного сеанса входа; Для создания подразделов Btrfs в tmpfiles добавлен новы тип строк «v»; В systemd-nspawn обеспечено монтирование для каждого контейнера большей части дерева cgroupfs в режиме только для чтения, за исключением принадлежащего контейнеру поддерева в иерархии name=systemd; Для файлов с логами journald теперь устанавливается флаг FS_NOCOW, который позволяет увеличить производительность при размещении данных в Btrfs, благодаря сокращению фрагментации; В systemd реализована поддержка сохранения файловых дескрипторов отдельных сервисов в обработчике PID 1, что позволяет сохранить закреплённые за сервисом файловые десктипторы после его перезапуска; В networkd в файлах .network обеспечена возможность настройки параметров перенаправления пакетов (IPv4/IPv6) и маскаридинга (IPv4) в привязке к сетевым интерфейсам, которые включены по умолчанию для интерфейсов veth, используемых в контейнерах. Таким образом запуск контейнера с опцией »--network-veth» приведёт к автоматической настройке маршрутизации для доступа к сетям хост-системы из контейнера; В networkd обеспечена возможность настройки IPv6-адресов для локальных интерфейсов по аналогии с IPv4, В секциях »[Match]» теперь можно использование масок и перечисления нескольких элементов через пробел; В systemd-nspawn добавлена опция »--port» (»-p»), позволяющая привязать сервис в контейнере к сетевому порту хост-системы, т.е. запущенный в контейнере сервис, будет доступен как будто это обычный сервис на хост-системе; В базу параметров оборудования udev, для манипуляторов мышь, помимо ранее представленных данных о DPI, добавлены сведения о параметрах прокрутки. Также добавлена поддержка информации о типах тачпадов; В networkd добавлена поддержка создания сетевых устройств «ipvlan», «gretap», «ip6gre», «ip6gretap» и «ip6tnl»; В systemd-tmpfiles добавлен новый тип строк «a» для привязки ACL к файлам; В systemd-nspawn обеспечено автоматическое монтирование раздела /tmp с использованием tmpfs; При нажатии Ctrl-Alt-Del более семи раз за интервал в две секунды теперь выполняется немедленная перезагрузка. Кроме того, можно отметить проект openwrt-systemd, в рамках которого развивается набор компонентов и патчей для использования systemd в дистрибутиве OpenWRT, вместо поставляемого по умолчанию системного менеджера procd.

© OpenNet