Выпуск 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.