Релиз systemd 228
Состоялся очередной выпуск системного менеджера systemd 228. Из изменений можно отметить расширение средств динамической генерации юнитов через bus API, поддержку задания времени в формате UTC, возможность сжатия логов методом LZ4, средства для использования квот в Btrfs, проведение чистки устаревших технологий, введение ограничения для борьбы с fork-бомбами.
Основные изменения:
- В system.conf добавлен новый параметр DefaultTasksMax, определяющий значение по умолчанию для применения ограничений по числу процессов в группах, лимитированных сgroup-контроллером ресурсов «pids». По умолчанию выставлено значение 512, т.е. без явного изменения настроек сервис не сможет породить более 512 одновременно работающих процессов или нитей. Для всех сервисов, порождающих большое число процессов или нитей требуется явно указать параметр TasksMax. Для снятия ограничения следует использовать значение «infinity».
По аналогии в logind.conf реализован параметр UserTasksMax, определяющий максимальное число процессов, которое одновременно может запустить один пользователь. По умолчанию число процессов для одного пользователями лимитировано в 4096. Для nspawn лимит повышен до 8192. Изменения действуют только при наличии контроллера ресурсов «pids», активированного в ядре Linux (появился в ядре 4.3). Основная задача введения новых ограничений — защита системы от fork-бомб;
- Серия опций, которые раньше допускались только в unit-файлах, теперь доступны и для временно создаваемых юнитов с установкой через шину обмена сообщениями (bus API). Среди доступных для динамических юнотов свойств: SyslogIdentifier=, SyslogLevelPrefix=, TimerSlackNSec=, OOMScoreAdjust=, EnvironmentFile=, ReadWriteDirectories=, ReadOnlyDirectories=, InaccessibleDirectories=, ProtectSystem=, ProtectHome=, RuntimeDirectory=;
- Для временных юнитов, создаваемых налету через bus API, представлена возможность передачи файловых дескрипторов для их использования в качестве STDIN/STDOUT/STDERR;
- Реализована поддержка создания временных slice-юнитов через bus API;
- Возможность указания времени с учётом часового пояса (ранее время задавалось только в привязке к локальному часовому поясу) и точности в доли секунд. Параметры часового пояса задаются через указания времени в формате UTC (суффикс UTC + смещение часового пояса). Расширенный формат времени может применяться как для привязки ко времени в юнитах (OnCalendar=), так и при формировании запросов через journalctl (--since, --until);
- В journalctl добавлена опция »--sync», позволяющая инициировать принудительный сброс на диск буферизированных в памяти логов;
- Официально обеспечена поддержка сжатия файлов журнала и core-дампов с использованием алгоритма LZ4;
- В systemd-tmpfiles добавлены новые типы строк «q» и «Q», которые аналогичны типу «v», за исключением установки базовой иерархии квот Btrfs;
- При использовании Btrfs задаваемые в systemd-tmpfiles типы строк «v», «q» и «Q» теперь создают обычную директорию, вместо отдельного подраздела, что решает проблемы с использованием chroot () в директориях для временных файлов;
- В systemd-detect-virt добавлена опция »--chroot» для выявления исполнения в chroot-окружении;
- В различные связанные с памятью параметры управления ресурсами (например, LimitAS) добавлена поддержка суффиксов K, M, G для обозначения килобайт, мегабайт и гигабайт. Для параметров связанных со временем по аналогии добавлена поддержка суффиксов min, h, day и т.п. для обозначения минут, часов, дней и т.п.;
- В systemd-nspawn добавлена опция »--network-veth-extra» для определения дополнительных виртуальных Ethernet-интерфейсов для связи между хостом и контейнером;
- Добавлена новая настройка для запуска сервисов — «PassEnvironment=», позволяющая импортировать выбранные переменные окружения из блока переменных PID1 в окружение сервиса;
- Параметр ядра net.unix.max_dgram_qlen теперь по умолчанию переопределяется в 512 вместо выставляемого ядром значения 16, что позволяет обойти проблемы с блокировкой сокетов AF_UNIX/SOCK_DGRAM из-за заполнения очереди при одновременном запуске большого числа сервисов;
- Из кодовой базы удалены все привязки к /etc/mtab, который теперь не является звеном, необходимым для работы systemd. Поддержка /etc/mtab также прекращена в наборе util-linux 2.27.1, что окончательно перевело /etc/mtab в разряд устаревших файлов конфигурации;
- Удалена поддержка юнитов с типом ».snapshot», которые признаны бесполезными и не используемыми на практике;
- Удалена поддержка зависимостей с типами «RequiresOverridable=» и «RequisiteOverridable=», которые усложняют реализацию и мешают автоматической конвертации. Данные опции использовались очень редко, и подобная функциональность реализуется через вызов «systemctl --mode=ignore-dependencies»;
- Изменено поведение опции «IPForward=» в networkd, которая теперь не предназначена для привязки настроек к отдельным сетевым интерфейсам и представляет только возможность глобального включения перенаправления пакетов (изменение внесено для унификации с настройками IPv6, так как для IPv6 нет возможности привязать перенаправление к интерфейсам);
- Изменено поведение спецификаторов форматирования %u, %U, %h и %s в unit-файлах, в которые теперь подставляются значения, основанные на фактических парамерах пользователя, под которым работает экземпляр systemd, а не на формальном значении, указанном в директиве «User=» (например, пользователь может быть сменён при запуске с опцией »--user»).
© OpenNet