Qu'est-ce qui distingue systemd des autres systèmes init?

23

Ce n'est pas tout à fait officiel, mais il semble que systemd arrive sur Debian et après avoir lu une partie de la discussion animée sur la liste de diffusion sur cette décision, je suis curieux de la nature polarisante de systemd parmi les utilisateurs de linux. J'exécute des systèmes Debian (sysvinit) et Gentoo (OpenRC) et je ne connais rien de concret à propos de systemd, bien qu'il semble que cela vienne à ma rencontre.

J'ai vu cette question connexe poser les avantages et les inconvénients de systemd vs upstart, mais cela fait 3 ans que cette question a été publiée et je suis sûr que les choses ont changé depuis.

Ma question est: comment systemd se compare-t-il aux autres systèmes init?

  • Qu'est-ce qui le distingue - que peut-il faire que les autres systèmes init ne puissent pas faire?
  • Y a-t-il quelque chose à perdre en y passant d'un autre système d'initialisation?
  • Comment l'administration de systemd se compare-t-elle aux autres?
casey
la source
1
Avec Gentoo , vous pouvez avoir une main sur l' expérience de systemd et l' ont en cours d' exécution assez facilement!
Une chose qui m'intéresse particulièrement est les sessions utilisateur. Ils fonctionnent assez bien en ce moment, à quelques exceptions notables près. C'est quelque chose qui, selon moi, a vraiment été négligé par la plupart des autres systèmes d'initialisation.
Chris Down
@ChrisDown, démarrer / arrêter le système et gérer ses services sont des fonctionnalités fondamentales qu'il vaut mieux intégrer étroitement (ainsi, la "tentative de panacée" est une mauvaise interprétation erronée). De plus, ce n'est pas seulement Lennart seul, ce sont les gens de toutes les distributions qui y travaillent.
vonbrand
@ChrisDown, s'il vous plaît ne soyez pas ridicule. systemdn'inclut pas de serveur Web et ne le fera plus jamais, et la lecture de QR n'est pas dans la feuille de route. S'il vous plaît allez vérifier de quoi il s'agit, considérez que comme nous parlons toutes les distributions importantes (sauf Ubuntu pour l'instant), utilisez-le par défaut (les gens open source ont tendance à être enragés et indépendants, aucune "pression" ne les poussera à le faire s'ils ne le font pas). croyez pas que ce soit la meilleure alternative).
vonbrand
De nos jours, même RHEL7 est livré avec systemd. Me fait me demander quand l'enfer Py3kdeviendra l'interpréteur par défaut de python dans les distributions.
yegle

Réponses:

26

Tout ce que vous voulez savoir se trouve probablement ici sur les pages " Debate Init System To Use " que le projet Debian a rassemblées pour prendre la décision de quel initsystem utiliser. Dans cette page est un lien séparé vers chacun des choix des initsystems.

Pour une introduction sur Systemd, cette page contient à peu près tout ce que vous devez savoir pour commencer, RHEL7: Comment démarrer avec Systemd .

Ressources supplémentaires que j'ai trouvées utiles pour mieux comprendre les 2 principaux choix. J'ai également lu les pages Wikipédia sur les technologies respectives:

Le projet Gentoo maintient également une belle comparaison de certaines des fonctionnalités clés à travers les différents initsytems:

Ma réponse à vos questions

Q # 1: Comment systemd se compare-t-il aux autres systèmes init?

C'est une question très difficile à résoudre dans l'espace d'une réponse SE donc je préfère m'en remettre aux différentes sources que j'ai référencées ci-dessus. Je dirai ceci cependant. En lisant la plupart des articles sur systemdles alternatives, il essaie de traiter de nombreux aspects de ce qui était déficient dans les outils précédents utilisés pour démarrer des services sur des systèmes Linux. Il a une conception très bien pensée et essaie de le fournir de manière très modulaire.

composants systemd

   ss de composants systemd

Donc, l'OMI, je dirais qu'il se compare très favorablement à la fois en termes d'effort dans sa conception, d'exécution de cette conception et d'adoption de celle-ci par plusieurs grandes distributions Linux.

Q # 2: Qu'est-ce qui le distingue - que peut-il faire que les autres systèmes init ne peuvent pas faire?

Il y a beaucoup de choses que sytemdles autres systèmes peuvent faire. Probablement 3 de ses caractéristiques les plus fortes sont:

  1. Enregistrement
  2. Limitation des ressources
  3. Gérer les démons qui bifurquent

1. journalisation

Sur le front de l'exploitation forestière, systemda institué un nouveau système d'enregistrement appelé le "Journal", le service est appelé systemd-journald.service. Il s'agit de son propre sujet, vous pouvez en savoir plus ici dans cet article intitulé: Présentation du Journal . Voici un exemple d'un utilisateur, "harald", qui se connecte.

_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. Limitation des ressources et démons qui bifurquent

systemdutilise ici une nouvelle approche consistant à utiliser cgroupsà la fois pour contenir et limiter les ressources de tous les services qui nécessitent une fourche ou une limitation de l'accès aux ressources.

extrait

Systemd a une solution très intelligente au problème du suivi des démons qui se bifurquent, ce qui arrive par hasard pour gérer la limitation des ressources en même temps. Là où Upstart utilise ptrace pour regarder le forking, systemd exécute chaque démon dans un groupe de contrôle (nécessite Linux 2.6.24 ou plus récent) dont il ne peut pas s'échapper avec n'importe quel volume de forking. Cela permet de limiter facilement les ressources, à la fois pour les démons forking et non-forking, car les groupes de contrôle ont été créés pour ce genre de chose.

Source: Daemon Showdown: Upstart vs Runit vs Systemd vs Circus vs God

Q # 3: Y a - t-il quelque chose à perdre en passant d'un autre système d'initialisation à celui-ci?

La plus grande mise en garde contre le passage à systemd via Upstart ou sysV init est probablement d'avoir à accepter de nombreuses nouvelles complexités. Systemd a beaucoup de pièces mobiles et est extrêmement riche en fonctionnalités et avec ces capacités supplémentaires, vous passerez probablement beaucoup de temps à comprendre comment tout cela fonctionne.

Q # 4: Comment l'administration de systemd se compare-t-elle aux autres?

Comme indiqué dans ma réponse ci-dessus à Q # 3. Je réitère ici encore. Là où sysV init était assez trivial pour apprendre à gérer et à naviguer en quelques heures à quelques jours, Upstart vous mettra probablement une semaine ou plus pour vous mettre à jour, tandis que systemd vous prendra probablement beaucoup plus de temps, je prévois d'en prendre plusieurs semaines pour acquérir suffisamment de connaissances superficielles à ce sujet, où je pourrai à la fois produire mes propres .servicefichiers, pour arrêter / démarrer des services avec la même facilité que j'apprécie maintenant avec sysV init.

Les références

slm
la source
@Caleb, le problème est très complexe, et d'ailleurs un sujet délicat pour de nombreuses personnes. Je crois que la réponse est OK en l'état
vonbrand
@Caleb - yup, vous êtes les bienvenus, merci pour les commentaires.
slm