Что отличает systemd от других систем инициализации?

23

Это не совсем официально, но похоже, что systemd приходит в Debian, и после прочтения некоторых горячих обсуждений в списке рассылки по этому решению, мне интересно узнать о поляризационной природе systemd среди пользователей Linux. Я использую системы Debian (sysvinit) и Gentoo (OpenRC) и не знаю ничего конкретного о systemd, хотя, похоже, он мне подходит.

Я видел этот связанный вопрос, спрашивающий о плюсах и минусах systemd vs upstart, но прошло 3 года с тех пор, как этот вопрос был опубликован, и я уверен, что за это время все изменилось.

Мой вопрос: как systemd сравнивается с другими системами инициализации?

  • Что отличает его - что он может сделать, чего не могут другие системы инициализации?
  • Есть ли что-то, что можно потерять при переходе на него с другой системы инициализации?
  • Как администрирование systemd отличается от других?
Casey
источник
1
С Gentoo вы можете иметь руки на опыт Systemd и это работает довольно легко!
Одна вещь, которая меня особенно интересует, это пользовательские сессии. Они работают довольно хорошо прямо сейчас, за некоторыми заметными исключениями. Это то, что я чувствую, на самом деле игнорируется большинством других систем инициализации.
Крис Даун
@ChrisDown, запуск / остановка системы и управление ее сервисами - это фундаментальная функциональность, которую лучше тесно интегрировать (поэтому «попытка панацеи» - плохая ошибка). Кроме того, над этим работают не только Леннарт, но и люди из всех дистрибутивов.
vonbrand
@ChrisDown, пожалуйста, не будь смешным. systemdтеперь не включает в себя веб-сервер и не будет делать это никогда, а также не считывает QR в дорожной карте. Пожалуйста, проверьте, что это такое, учтите, что, как мы говорим, все важные дистрибутивы (за исключением Ubuntu на данный момент) используют его по умолчанию (люди с открытым исходным кодом, как правило, бешено независимы, никакое «давление» не заставит их сделать это, если они не верю, что это лучшая альтернатива).
vonbrand
В настоящее время даже RHEL7 поставляется с systemd. Заставляет меня задуматься, когда ад Py3kстанет интерпретатором Python по умолчанию в дистрибутивах.
Yegle

Ответы:

26

Вероятно, все, что вы хотите знать, находится здесь на страницах « Использование системы инициации дебатов », которые проект Debian собрал вокруг, принимая решение о том, с какой initsystem идти. На этой странице есть отдельная ссылка на каждый из вариантов initsystems.

Для начинающих по Systemd на этой странице есть почти все, что нужно знать, чтобы начать с ним, RHEL7: Как начать с Systemd .

Дополнительные ресурсы, которые я нашел полезными для лучшего понимания двух основных вариантов, я также прочитал на страницах Википедии о соответствующих технологиях:

Проект Gentoo также поддерживает хорошее сравнение некоторых ключевых функций различных компонентов:

Мой ответ на ваши вопросы

Q # 1: Как systemd сравнивается с другими системами инициализации?

Это очень сложный вопрос для ответа на вопросы SE, поэтому я бы предпочел обратиться к различным источникам, на которые я ссылался выше. Я скажу это все же. Читая большую часть статей об systemdальтернативах, он пытается рассмотреть многие аспекты недостатков предыдущих инструментов, используемых для запуска служб в системах Linux. Он имеет очень хорошо продуманную конструкцию и пытается обеспечить его очень модульным способом.

системные компоненты

   ss системных компонентов

Итак, IMO, я бы сказал, что он очень выгодно сравнивается как с точки зрения усилий в его дизайне, исполнения этого дизайна, так и принятия его несколькими более крупными дистрибутивами Linux.

Q # 2: Что отличает его - что он может сделать, чего не могут другие системы инициализации?

Есть много вещей, которые sytemdмогут сделать то, что не могут другие системы. Вероятно, 3 из его самых сильных особенностей:

  1. логирование
  2. Ограничение ресурсов
  3. Работа с демонами, которые разветвляются

1. ведение журнала

На фронте ведения журнала, systemdустановила новую систему ведения журнала под названием «Журнал», служба называется systemd-journald.service. Это отдельная тема, вы можете прочитать больше об этом здесь, в этой статье под названием: Введение в журнал . Вот пример пользователя, "harald", вошедшего в систему.

_SERVICE=systemd-logind.service
MESSAGE=User harald logged in
MESSAGE_ID=422bc3d271414bc8bc9570f222f24a9
_EXE=/lib/systemd/systemd-logind
_COMM=systemd-logind
_CMDLINE=/lib/systemd/systemd-logind
_PID=4711
_UID=0
_GID=0
_SYSTEMD_CGROUP=/system/systemd-logind.service
_CGROUPS=cpu:/system/systemd-logind.service
PRIORITY=6
_BOOT_ID=422bc3d271414bc8bc95870f222f24a9
_MACHINE_ID=c686f3b205dd48e0b43ceb6eda479721
_HOSTNAME=waldi
LOGIN_USER=500

2 и 3. Ограничение ресурсов и демоны, которые разветвляются

systemdздесь используется новый подход, cgroupsзаключающийся в использовании для ограничения и ограничения ресурсов любых услуг, которые требуют разветвления или ограничения доступа к ресурсам.

выдержка

У Systemd есть очень умное решение проблемы отслеживания демонов, которые работают, что, по совпадению, в то же время обрабатывает ограничение ресурсов. Если Upstart использует ptrace для отслеживания разветвления, systemd запускает каждого демона в контрольной группе (требуется Linux 2.6.24 или новее), из которой он не может выйти с разветвлением. Это позволяет легко ограничивать ресурсы как для разветвляющихся, так и для не разветвляющихся демонов, поскольку для такого рода вещей были созданы контрольные группы.

Источник: Daemon Showdown: Выскочка против Рунита против Системда против Цирка против Бога

Вопрос № 3: Есть ли что-то потерять при переключении на него с другой системы инициализации?

Вероятно, самая большая оговорка при переходе на systemd через Upstart или sysV init - это принятие множества новых сложностей. В Systemd много движущихся частей, и он чрезвычайно богат функциями, и с этими дополнительными возможностями вы, вероятно, потратите немало времени на то, чтобы понять, как все это работает.

Q # 4: Как администрирование systemd отличается от других?

Как указано в моем ответе на вопрос № 3. Я повторю здесь снова. Там, где sysV init был довольно тривиальным, чтобы научиться управлять и перемещаться в течение нескольких часов или дней, Upstart, скорее всего, займет у вас неделю или больше, чтобы освоить скорость, в то время как systemd, вероятно, займет у вас гораздо больше времени, я ожидаю, что потребуется несколько недели, чтобы получить достаточно поверхностных знаний об этом, где я смогу одновременно создавать свои собственные .serviceфайлы и останавливать / запускать службы с той же легкостью, с которой я теперь наслаждаюсь с помощью sysV init.

Ссылки

SLM
источник
@Caleb, проблема очень сложная, и, кроме того, очень деликатная для многих. Я верю, что ответ в порядке
vonbrand
@Caleb - да, пожалуйста, спасибо за отзыв.
SLM