Systemd — новая система инициализации от разработчиков Red Hat и Novell

30 апреля 2010 года

Леннарт Поттеринг (Lennart Poettering), создатель звукового сервера PulseAudio, работающий в компании Red Hat, при участии разработчиков из компаний Novell, IBM, Intel и Nokia, подготовил прототип принципиальной новой системы инициализации для Linux - systemd (Архивная копия от 6 мая 2010 на Wayback Machine), нацеленной на более интенсивную параллелизацию выполнения сервисов на этапе загрузки.

На первом этапе выполнения инициализации в systemd осуществляется анализ конфигурации и построение плана выполнения инициализации, в котором учитываются не только вызываемые из скриптов программы, но и открываемые файлы, создаваемые сетевые сокеты и обращения к устройствам. Иными словами, если системы инициализации подобные Upstart как правило оперируют зависимостью между сервисами (события вида запустить B, после выполнения A), то systemd отталкивается от готовности ресурсов, учитывается такие дополнительные сущности, как сокеты и готовность устройств. Например, если один сервис требует создания канала связи вторым сервисом, вместо последовательного запуска сервисов, вначале может быть организован канал (шина) для обмена данными между сервисами, а потом одновременно запущены оба сервиса.

После построения плана выбирается наиболее оптимальный вариант параллельного запуска сервисов и сокращается повторный вызов программ (например, awk в процессе инициализации запускается около 92 раза, grep - 77 раз) и повторное обращения к типовым ресурсам (например, чтение значения таймера или получение параметров сетевого интерфейса). Процессы вызываются только при необходимости, т.е. например, CUPS не будет запущен до того, как локально или удаленно не будет обращения к сервису печати. Кроме обслуживания процесса загрузки, systemd выполняет также такие функции как управление процессами в системе и обеспечение корректной работы системы с новым динамически подключаемыми устройствами.

Базовым элементом systemd являются "юниты", которые связаны между собой и имеют определенный тип. Каждый юнит может требовать для своей работы другие юниты, конфликтовать с юнитами, определять возможность запуска только после или до определенного юнита (директивы конфигурации Requires, Conflicts, Before, After, Wants). Например, устройство может зависеть от сервиса, который должен быть запущен сразу после доступности устройства. Из типов юнитов определены:

  • Сервисы: стандартные демоны, которые могут быть запущены и остановлены. В роли сервисов также могут выступать классические SysV-скрипты инициализации.
  • Сокеты: точки привязки к сетевым или файловым сокетам, позволяющие построить ассоциацию с определенным сервисом. Например, в через сокет-юнит может быть задан сетевой порт, при обращении к которому автоматически должен быть вызвать определенный сервис (аналог inetd).
  • Устройства: элементы дерева устройств, которые могут обрабатываться с помощью udev.
  • Точки монтирования: задают используемые файловые системы, которые встречаются в /etc/fstab;
  • Точки автоматического монтирования (automount): определяет какую ФС смонтировать при обращении к заданной директории.
  • Цели: логические юниты для логической группировки юнитов. Например, multi-user.target идентичен run-level 5, bluetooth.target приводит к инициализации подсистемы bluetooth.
  • Снапшоты: логические юниты для запоминания и восстановления определенного состояния системы.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «systemd — новая система инициализации от разработчиков Red Hat и Novell», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.