Выпуск systemd 219 с поддержкой расширенных возможностей Btrfs
17 февраля 2015 года
Леннарт Поттеринг (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.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.