Що відрізняє systemd від інших init систем?


23

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

Я бачив це пов'язане питання, що задає плюси і мінуси systemd vs upstart, але минуло 3 роки з моменту опублікування цього питання, і я впевнений, що все змінилося за той час.

Моє запитання: як systemd порівнюється з іншими системами init?

  • Що це відрізняє - що це може зробити, щоб інші системи init не могли?
  • Чи є що втратити при переході на нього з іншої системи init?
  • Як адміністрування systemd порівняно з іншими?

1
З Gentoo ви можете мати руки на досвід Systemd і це працює досить легко!

Одне, що мене особливо цікавить - це сеанси користувачів. Зараз вони працюють досить добре, за деякими помітними винятками. Це те, що, на мою думку, дійсно було знехтувано більшістю інших систем init.
Кріс Даун

@ChrisDown, запуск / зупинка системи та управління її сервісами - це основна функціональність, яку краще було б тісно інтегрувати (таким чином, "спроба панацеї" - це погана неправильна характеристика). Крім того, над цим працюють не лише Леннарт, а над цим працюють люди з усіх дистрибуцій.
vonbrand

@ChrisDown, будь ласка, не будь смішним. systemdтепер не включає веб-сервер, і це не буде робити коли-небудь, і читання QR не було в дорожній карті. Будь ласка, перевірте, про що йдеться, врахуйте, що, як ми говоримо, всі важливі дистрибутиви (крім Ubuntu наразі) використовують це як за замовчуванням (люди з відкритим кодом, як правило, буйно незалежні, ніякий "тиск" не змусить їх це зробити, якщо вони не не вірю, що це найкраща альтернатива).
vonbrand

В наші дні навіть RHEL7 приходить systemd. Змушує мене замислитися, коли чорт Py3kстане перекладачем пітонів за замовчуванням у дистрибутивах.
yegle

Відповіді:


26

Напевно, все, що ви хочете знати, знаходиться тут на сторінках " Debate Init System To Use ", яку проект Debian об'єднав навколо того, щоб прийняти рішення, з якою системою працювати. На цій сторінці є окреме посилання на кожен із варіантів систем.

Для грунтовки на Systemd ця сторінка містить майже все, що потрібно знати, щоб розпочати роботу, RHEL7: Як розпочати роботу з Systemd .

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

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

Я прийму ваші запитання

Запитання №1: Як порівняно systemd з іншими системами init?

Це дуже важке питання, яке потрібно вирішити в просторі відповіді на SE, тому я краще відкладусь до різних джерел, на які я посилався вище. Я це все-таки скажу. Читаючи більшу частину статей про systemdальтернативи, вона намагається вирішити багато аспектів того, що було недостатнім у попередніх інструментах, що використовуються для запуску сервісів у системах Linux. Він має дуже продуманий дизайн і намагається надати його дуже модульним способом.

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

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

Отже, IMO, я б сказав, що він дуже вигідно порівнюється як за зусиллями в його розробці, виконанні такої конструкції, так і щодо прийняття її кількома більшими дистрибутивами Linux.

Запитання №2: Що це відрізняє - що це може зробити, щоб інші системи init не змогли?

Є багато речей, які не 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 або новішої версії), з якої він не може вийти з будь-якої кількості розщеплення. Це дозволяє легко обмежувати ресурси, як для розмежування, так і для нечікувальних демонів, оскільки для цього було створено контрольні групи.

Джерело: Демон Розборки: Назад проти Раніта проти Сидда проти Цирка проти Бога

Q # 3: Чи є що втратити при переході на нього з іншої системи init?

Напевно, найбільший застереження щодо переходу на системний режим над Upstart або sysV init - це сприйняття багатьох нових складностей. Systemd має багато рухомих частин і надзвичайно багатий на функції, і завдяки цим додатковим можливостям ви, ймовірно, будете витрачати досить багато часу, отримуючи розуміння того, як це все працює.

Q # 4: Як адміністрування systemd порівняно з іншими?

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

Список літератури


@Caleb, це питання є дуже складним, і тим більше, що для багатьох людей чітке питання. Я вважаю, що відповідь гарна, як вона є,
фонбранд

@Caleb - так, ви дуже вітаємо, дякую за відгуки.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.