Новая версия systemd 213 с поддержкой службы синхронизации времени

После двух месяцев разработки Леннарт Поттеринг (Lennart Poettering) представил выпуск системного менеджера systemd 213. Systemd сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd. Наиболее существенные изменения:

В состав включён новый фоновый процесс «systemd-timesyncd», предназначенный для организации синхронизации системного времени по сети. В отличие от других пакетов синхронизации времени, systemd-timesyncd включает реализацию клиента SNTP и рассчитан только на запрос времени от NTP-сервера и синхронизацию локальных системных часов на основе полученных данных. Подобный подход позволил существенно упростить код systemd-timesyncd, так как не пришлось добавлять полноценную серверную поддержку NTP, ограничившись только минимальной клиентской реализацией NTP. Процесс выполняется с минимальными привилегиями (запускается под отдельным пользователем и группой «systemd-timesync») и активируется только при наличии сетевого соединения. В процессе синхронизации данные о расхождении времени системных часов сохраняются на диск, что позволяет откорректировать их работу на ранней стадии загрузки, до того как появится возможность отправить запрос к NTP-серверу по сети. Добавлен фоновый процесс systemd-resolved, который работает совместно с systemd-networkd и обеспечивает поддержание настроек в файле resolv.conf на основании данных DHCP и статической конфигурации DNS для сетевых интерфейсов. В будущем планируется добавить в systemd-resolved функции простого локального кэша DNS и mDNS с поддержкой DNSSEC; Для команд «systemctl list-timers» и «systemctl list-sockets» реализована опция »--recursive», позволяющая отобразить юниты выбранного типа в том числе для всех локальных контейнеров; В сервисных юнитах обеспечена поддержка новых директив «RebootArgument=» и «FailureAction=». Через «RebootArgument=» ядру можно передать аргументы, используемые после перезагрузки, инициированной с «StartLimitAction=». «FailureAction=» позволяет указать операцию, которая будет вызвана при сбое сервиса; Обновлён мини-сервис hostnamed, используемый для изменения имени хоста. Сервис теперь может обслуживать имена ядра, выпуска и версии шины. Файл /etc/hostname теперь имеет более высокий приоритет по сравнению с данными об имени хоста, полученными через DHCP; В bootchart, инструмент мониторинга скорости загрузки, добавлено отображение на графиках информации о cgroup; Для сервисов добавлена опция «CPUQuota=», при помощи которой могут быть выставлены атрибуты cgroup для установки CPU-квоты для планировщика CFS. В итоге, сервис не сможет потребить больше процессорного времени, чем определено лимитом в процентном соотношении, даже если система простаивает; В systemd-networkd добавлена поддержка туннелей IPIP и SIT; Добавлена новая опция ядра «fsck.repair=», позволяющая при загрузке управлять выполнением fsck для требующих проверки ФС. Парсер ini-файлов теперь игнорирует секции, начинающиеся с «X-», что позволяет создавать в юнит-файлах специфичные для внешних приложений расширенные секции; Включен по умолчанию интегрируемый с networkd инструмент systemd-networkd-wait-online, вносящий задержку для network-online.target до момента настройки сетевого соединения; Добавлены новые опции «StartupCPUShares=» и «StartupBlockIOWeight=», работающие по аналогии с «CPUShares=» и «BlockIOWeight=», но применяемые только на стадии запуска системы.

© OpenNet