1

Тема: Выпуск 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.


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

2

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

Лень читать очередную простыню про systemd, лучше бы написали:
1. Какие еще компоненты системы (кроме udev, про него все в курсе) переписаны Леннартом & Co?
2. С какими версиями библиотек, в частности glib, работает/собирается?

3

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

Чудненько.

4

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

Рано они его в энтерпрайз засунули ой рано.

5

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

Энтерпрайз вроде не жалуется.

6

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

Vascom, "энтерпрайз"- это в первую очередь получение прибыли любыми доступными способами. Просто почему-то захотелось напомнить))

7

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

Это скорее уж капитализм, в котором мы все живём.

8

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

Vascom, пока еще не все, пока живы лоди поколения 60-70-х, пока еще в сердцах и умах живет мир СПО таким, каким я застал его в начале XXI века, в первом десятилетии. Эх, жаль, девяностые, самое начало я пропустил...

9

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

verg пишет

Представлен новый API "sd-hwdb.h"

Прощай, udev ac

verg пишет

В systemd-nspawn добавлена опция "--ephemeral" для создания одноразовых контейнеров

И самоуничтожающиеся скрипты не нужны. Кому это надо — очевидно.

verg пишет

В machinectl добавлена новая команда "start", позволяющая запустить контейнер в виде сервиса. Например, команда "machinectl start foo" функционально эквивалентна "systemctl start systemd-nspawn at foo.service", но более удобна для ввода;

# cd /; rm -f /sbin/systemctl; ln -s /sbin/systemctl /sbin/systemd/{start,stop,status}
# cat << EOF >> /etc/profile.d/systemd.sh
"if [ $(id -u) -eq 0 ]; then
   PATH=\"$PATH:/sbin/systemd\"
   fi"
EOF
^D 
# chmod +x /etc/profile.d/systemd.sh
# . /etc/profile.d/systemd.sh
$ cat /sbin/systemctl
#!/bin/sh

case $0 in
    start) exec /usr/libexec/systemd/systemctl start "$@" ;;
     stop) exec /usr/libexec/systemd/systemctl stop "$@";;
   status) exec /usr/libexec/systemd/systemctl status "$@";;
esac

10

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

Да, очевидно. Это нужно для одноразовых задач, когда после выполнения контейнер надо удалить.

11

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

Vascom пишет

Это нужно для одноразовых задач

Да это же почти готовая дыра в системе.

12

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

Ага, пользуйся. Найдешь дыру - прославишься.

13 (17.02.2015 22:28:13 отредактировано lone_wolf)

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

Vascom пишет

Энтерпрайз вроде не жалуется.

ну это не совсем так, у меня товарищ сейчас работает в крупной хостинг компании, так вот когда мы в последний раз с ним виделись на мой вопрос про его отношение к systemd я услышал очень сильную нецензурную речь. А так да у systemd есть свои плюсы не спорю, я с ним практически не работал (всё никак руки не доходят поставить centos 7), вот но вот идея привязки интерфейсов на основании физического расположения на мат-плате мне понравилась, да имена не привычные зато есть уверенность что имена всегда будет правильно присвоены.

14

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

lone_wolf пишет

имена всегда будет правильно присвоены.

Что, udev так не может? Не поверю ни за что.

15

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

Ну раньше не мог видимо, всегда давал имя eth0 любой первой обнаруженной проводной сетевой карте.

16

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

# udevadm info --query=all --path=/sys/class/net/eth0 
P: /devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/eth0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/eth0
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=AR8151 v2.0 Gigabit Ethernet
E: ID_MODEL_ID=/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0
E: ID_VENDOR_FROM_DATABASE=Qualcomm Atheros
E: ID_VENDOR_ID=0x1969
E: IFINDEX=2
E: INTERFACE=eth0
E: SUBSYSTEM=net
E: UDEV_LOG=3
E: USEC_INITIALIZED=6897066
# udevadm info --query=all --path=/sys/class/net/wlan0 
P: /devices/pci0000:00/0000:00:1c.5/0000:07:00.0/net/wlan0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.5/0000:07:00.0/net/wlan0
E: DEVTYPE=wlan
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=AR9287 Wireless Network Adapter (PCI-Express)
E: ID_MODEL_ID=/sys/devices/pci0000:00/0000:00:1c.5/0000:07:00.0
E: ID_VENDOR_FROM_DATABASE=Qualcomm Atheros
E: ID_VENDOR_ID=0x168c
E: IFINDEX=3
E: INTERFACE=wlan0
E: SUBSYSTEM=net
E: UDEV_LOG=3
E: USEC_INITIALIZED=8302329

Чьи тапки будут, если шина сканируется методом «дальше в лес»?

17

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

yars пишет

Что, udev так не может? Не поверю ни за что.

Может, я как бы больше чем с 2 сетёвками серваки не настраивал, хотя вру был 1 сервер с 3 сетёвками на старом аспе байкал настроенный предыдущим админом работал как танк. А так я насчет того что слетают имена я слышал только в случаях когда сетёвок было много (ну в моём понимании от 3)

18 (23.02.2015 04:27:57 отредактировано AntiduPb)

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

verg пишет

В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd.

Вот из за этого я перестал использовать Debian на серверах и перешел на Gentoo. Раньше, Gentoo была только на моих личных десктопах.
Если и Gentoo скатится на умолчальное пользование systemd вместо OpenRC... на десктопе будет слака, на серверах BSD какая нибудь... я даже не хочу это представлять!  ak

19

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

yars пишет

Что, udev так не может? Не поверю ни за что.

факт, путаница имеет место. а уж если там какой нибудь VF/PF то стандартные механизмы вообще офигевают