Леннарт Поттеринг (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 более семи раз за интервал в две секунды теперь выполняется немедленная перезагрузка, но с корректным отмонтированием всех разделов;
  • В /etc/crypttab добавлена поддержка опции "header=".

Кроме того, можно отметить проект openwrt-systemd, в рамках которого развивается набор компонентов и патчей для использования systemd в дистрибутиве OpenWRT, вместо поставляемого по умолчанию системного менеджера procd.

Источник: http://www.opennet.ru/opennews/art.shtml?num=41680