10 novembre 2023

Qu’est-ce que Systemd ?

Systemd : le standard de gestion des services Linux et son caractère indispensable pour les administrateurs système.

Systemd

Systemd est un mécanisme de gestion et de service, communément appelé « démon système ». Cela est devenu critique dans RHEL7 et versions ultérieures, assumant la responsabilité d'initialiser et d'activer les ressources système et les démons du serveur au démarrage et pendant l'exécution du système. En termes simples, systemd démarre et gère toutes sortes de processus et de services sous Linux. Techniquement, il s'agit d'un programme d'initialisation qui amène le système à un état défini en activant tous les services et processus activés dans cet état, en utilisant des fichiers de configuration pour savoir quels services et processus sont activés dans chaque état.

Evolution des systèmes d'initialisation jusqu'à Systemd

systemd est le successeur des programmes d'initialisation SysVinit et Upstart. SysVinit, créé dans les années 80 pour les systèmes « UNIX System V », a longtemps été le standard jusqu'à RHEL5. Ce programme a défini six états du système, appelés niveaux d'exécution, et a mappé tous les processus et services à ces niveaux. Cependant, SysVinit était destiné à un environnement statique et ne gérait pas bien les périphériques enfichables à chaud, tels que les clés USB.

Upstart a été développé en remplacement de SysVinit pour fonctionner dans un environnement plus flexible. Il offrait des avantages tels que la gestion des services basée sur les événements, le démarrage asynchrone des services et le redémarrage automatique des services en panne. Contrairement à SysVinit, Upstart n'utilisait pas de niveaux d'exécution, mais des événements système pour démarrer et arrêter les services.

sysvinit

L'histoire de SysVinit commence dans les années 80, lorsqu'il a été introduit pour les systèmes « UNIX System V ». À cette époque, cela représentait une avancée majeure dans la gestion des systèmes d’exploitation UNIX. SysVinit est resté la norme pour plusieurs systèmes d'exploitation, y compris ceux basés sur Linux tels que Red Hat Enterprise Linux (RHEL) jusqu'à la version 5, publiée en 2007. Son rôle était d'organiser le processus de démarrage du système en six états système ou niveaux d'exécution, chacun représentant un état différent de fonctionnement du système, depuis un démarrage complet jusqu'à un état de récupération ou de maintenance. Cependant, SysVinit présentait des limites importantes : il était conçu pour un environnement système plus statique et ne gérait pas efficacement les nouveaux développements tels que les périphériques hot-plug.

Parvenu

En réponse aux limitations de SysVinit, Upstart a été développé, introduit pour la première fois dans Ubuntu en 2006. Upstart était une tentative de moderniser le processus de démarrage, en introduisant des concepts tels que la gestion des services basée sur les événements et le démarrage de services asynchrone. Cela signifiait que les services pouvaient être démarrés ou arrêtés en réponse à des événements spécifiques, plutôt que dans un ordre défini comme dans SysVinit. La capacité d'Upstart à redémarrer automatiquement les services en panne et à mieux gérer les appareils enfichables à chaud constitue une nette amélioration par rapport à son prédécesseur. Cependant, Upstart avait aussi ses limites, notamment dans la gestion de dépendances complexes entre services.

Systemd

Enfin, systemd est devenu le successeur d'Upstart et SysVinit. Développé par Lennart Poettering et Kay Sievers de Red Hat, systemd a été publié pour la première fois en 2010 et adopté par Fedora en 2011. Cela représente un changement radical dans la manière dont Linux gère le processus de démarrage et la supervision des services. Systemd introduit une approche plus intégrée et dynamique, gérant non seulement le démarrage des services mais également les sessions utilisateur, les points de montage, les sockets et autres ressources système. Avec des fonctionnalités telles que le démarrage parallèle des services, la résolution des dépendances et la gestion avancée via des groupes de contrôle, systemd a redéfini l'efficacité et la flexibilité dans la gestion des systèmes Linux modernes.

Ces transitions, de SysVinit vers Upstart puis vers systemd, reflètent l'évolution continue des systèmes d'exploitation Linux et la recherche de solutions de plus en plus performantes et adaptées aux besoins d'un environnement en évolution rapide.

Caractéristiques et avantages de Systemd

Systemd, le programme d'initialisation moderne, est utilisé par la plupart des développeurs Linux, notamment RedHat (depuis la version 7) et Ubuntu (depuis la version 15.04). Ce système est plus complexe et offre de nombreuses fonctionnalités et outils pour gérer les services, les appareils, les sockets, les points de montage, les zones d'échange, les types de lecteurs, les cibles et bien plus encore.

Les avantages de systemd incluent plusieurs fonctionnalités importantes :

  1. Démarrage des services en mode parallèle: Systemd est capable de démarrer des services simultanément au lieu de le faire séquentiellement. Cette approche parallèle réduit considérablement le temps de démarrage du système, améliorant ainsi les performances globales. Plusieurs services peuvent être démarrés en même temps, à condition qu'ils n'aient aucune dépendance les uns sur les autres, optimisant ainsi l'utilisation des ressources système.
  2. Résolution automatique des dépendances: Systemd gère intelligemment les dépendances entre les différents services. Il identifie et résout automatiquement ces dépendances, garantissant que les services sont démarrés dans le bon ordre. Cela élimine le besoin de configurations manuelles complexes, rendant le processus de démarrage plus efficace et moins sujet aux erreurs.
  3. Possibilité de redémarrer les processus: Systemd a la capacité de surveiller et de redémarrer automatiquement les services qui s'arrêtent de manière inattendue. Cela garantit une plus grande stabilité du système, car les services critiques peuvent être rapidement restaurés sans intervention humaine, minimisant ainsi les temps d'arrêt.
  4. Suivi des processus et association via des groupes de contrôle Linux (cgroups): Systemd utilise des groupes de contrôle pour organiser et gérer efficacement les processus. Cela permet d'allouer des ressources telles que le processeur et la mémoire à des groupes spécifiques de processus, améliorant ainsi la gestion des ressources et isolant les processus les uns des autres, ce qui augmente la sécurité et la stabilité du système.
  5. Prise en charge matérielle moderne: Systemd offre une large prise en charge du matériel moderne, y compris les périphériques enfichables à chaud tels que les clés USB et les disques externes. Cela signifie que systemd peut gérer dynamiquement ces appareils lorsqu'ils sont connectés ou déconnectés, améliorant ainsi la convivialité et la flexibilité du système.
  6. Démarrage du démon sur demande: Avec systemd, les démons peuvent être démarrés à la demande, sans qu'il soit nécessaire de redémarrer le service déjà en cours d'exécution. Ceci est particulièrement utile pour les services qui n'ont pas besoin de fonctionner en continu, mais uniquement lorsque cela est nécessaire, réduisant ainsi l'utilisation des ressources système.
  7. Création d'instantanés de l'état du système en cours d'exécution: Systemd vous permet de créer des instantanés de l'état actuel du système. Ces instantanés peuvent être utilisés pour restaurer l'état du système à un point antérieur, une fonctionnalité utile en cas d'erreurs ou de dysfonctionnements.
  8. Enregistrement des événements: Enfin, systemd fournit un mécanisme de journalisation avancé, qui vous permet de suivre et d'analyser tous les événements liés aux services et processus système. Ceci est essentiel pour le débogage et pour assurer la sécurité et le fonctionnement optimal de votre système.

Ces fonctionnalités font de systemd un outil polyvalent et puissant pour gérer les systèmes d'exploitation Linux modernes, améliorant considérablement la gestion, la sécurité et les performances des services et processus système.

Le concept d'unité dans Systemd

Dans systemd, le concept « d’Unité » représente l’un des piliers fondamentaux sur lesquels repose cette technologie. Une unité dans systemd est un objet qui représente un service, un processus, une ressource ou un point de montage au sein du système. Chaque unité est décrite par un fichier de configuration, qui spécifie comment systemd doit gérer le service ou la ressource correspondant. Ces fichiers de configuration sont clairs, structurés et facilement lisibles et se trouvent généralement dans /etc/systemd/system ou /lib/systemd/system.

unité système

Les unités de systemd sont classées en différents types, chacun ayant un objectif spécifique. Les types les plus courants comprennent :

  1. Unités de service: Ils gèrent les services système, tels que les serveurs Web ou les bases de données. Ils sont identifiés par des fichiers portant l'extension .service.
  2. Unités de prise: Utilisés pour gérer les sockets réseau et IPC, ils permettent la communication inter-processus. Ils sont représentés par des fichiers .socket.
  3. Unités de périphérique: Représentent les périphériques matériels et sont créés dynamiquement en réponse aux périphériques matériels détectés par le système. Ils sont identifiés par des fichiers .device.
  4. Unités de montage: Gérer les points de montage dans le système de fichiers, correspondant aux fichiers .mount.
  5. Unités cibles: Ils fournissent un mécanisme de regroupement de différentes unités, facilitant la gestion d'ensembles complexes de dépendances et le démarrage coordonné des services. Les fichiers .target représentent ces groupes.

Chaque unité peut avoir une série de directives qui définissent comment elle doit se comporter. Ces directives peuvent inclure, par exemple, l'ordre dans lequel les services doivent être démarrés, les dépendances entre différents services ou les actions à entreprendre en cas de panne d'un service. Le système systemd analyse ces fichiers de configuration au démarrage du système ou lorsqu'un administrateur demande de démarrer, d'arrêter ou de redémarrer une unité.

L'introduction des unités dans systemd a considérablement simplifié la gestion des services et des ressources sous Linux, rendant le processus plus évolutif, gérable et compréhensible. Cette approche modulaire et unitaire permet aux administrateurs d'avoir un contrôle plus granulaire sur le comportement des services et les relations entre eux, conduisant à une gestion du système plus efficace et plus flexible.

Systemd comme chien de garde au lieu de superviseur

Systemd offre une fonctionnalité de surveillance intégrée, qui permet aux administrateurs système de l'utiliser comme alternative aux outils externes tels que Supervisord pour surveiller et gérer les services. Le concept de chien de garde dans systemd est basé sur la capacité de surveiller activement les services et les processus, en les redémarrant automatiquement en cas de panne ou d'arrêt inattendu. Cela se traduit par une plus grande résilience et stabilité du système.

La principale caractéristique de systemd en tant que chien de garde est son intégration native avec l'écosystème Linux. Contrairement à Supervisord, qui nécessite une configuration et une gestion séparées, systemd fait déjà partie intégrante de la plupart des distributions Linux modernes, offrant une solution unifiée pour démarrer, superviser et gérer les services.

Pour utiliser systemd comme chien de garde, les administrateurs peuvent profiter de plusieurs directives dans les fichiers de configuration des unités de service. Ceux-ci incluent des options telles que Restart=, qui définit les conditions et la fréquence à laquelle un service doit être redémarré en cas de panne, et WatchdogSec=, qui définit une minuterie pour le chien de garde. Lorsqu'un service ne signale pas d'activité dans le délai spécifié par WatchdogSec=, systemd intervient automatiquement pour tenter de restaurer le service.

Cette fonctionnalité fait de systemd non seulement un initialiseur de système, mais également un outil puissant pour maintenir la stabilité et la fiabilité des services critiques. Avec systemd, les administrateurs peuvent mettre en place des systèmes d'auto-réparation, où les services sont constamment surveillés et maintenus en état de fonctionnement sans nécessiter d'intervention manuelle fréquente. En ce sens, systemd agit comme une protection intégrée, augmentant la disponibilité du système et réduisant les temps d'arrêt potentiels causés par des pannes ou des erreurs de service.

Le rejet initial de Systemd par la communauté Linux

L’introduction de systemd dans le monde Linux n’a pas été unanimement accueillie avec enthousiasme. Au lieu de cela, il s'est heurté à une résistance significative de la part d'une partie de la communauté Linux. Ce rejet était en grande partie dû à des préoccupations concernant la complexité et la centralisation des fonctionnalités introduites par systemd, rompant avec l'approche Unix traditionnelle consistant à « faire une chose et la faire bien ». Certains utilisateurs et développeurs considéraient systemd comme une usurpation de l'approche Linux traditionnelle, avec son système intégré gérant de nombreux aspects du système d'exploitation, qui étaient auparavant gérés par une variété d'outils modulaires plus petits. De plus, l'adoption rapide de systemd par de nombreuses distributions Linux majeures a suscité des inquiétudes quant à la diminution de la diversité et du choix dans le paysage Linux.

La montée de Devuan comme alternative pour les vétérans.

En réponse à la dissidence croissante contre systemd, une nouvelle distribution Linux appelée Devuan est née (dont nous avons parlé dans cet article). Devuan Linux : alternative centrée sur la liberté au système d'exploitation Debian). Lancé en 2014, Devuan est apparu comme un fork de Debian, l'une des distributions Linux les plus populaires, spécifiquement pour offrir une alternative sans système. L'objectif principal de Devuan était de conserver l'héritage de l'initialisation traditionnelle, en offrant aux utilisateurs la liberté de choix et une expérience moins complexe que systemd. Cette distribution a particulièrement attiré les utilisateurs Linux traditionnels, ceux qui préfèrent l'approche modulaire et décentralisée de l'administration système. Devuan s'est révélé particulièrement attrayant pour les débutants sous Linux, qui recherchent un système d'exploitation simple et moins complexe, et pour ceux qui souhaitent avoir davantage de contrôle manuel sur divers aspects de leur système d'exploitation.

Guide de commandes de SysVinit à Systemd

La transition de SysVinit vers systemd a conduit à des changements importants dans la gestion des services et des processus dans les systèmes Linux. Pour les administrateurs système et les utilisateurs habitués aux commandes SysVinit, l'adaptation à systemd peut sembler un défi au début. Ce guide est conçu pour faciliter cette transition en fournissant une comparaison directe entre les commandes SysVinit traditionnelles et leurs équivalents systemd. Cette comparaison aidera les utilisateurs à mieux comprendre comment les commandes familières ont été transformées et comment elles peuvent être utilisées dans le nouveau système. Vous trouverez ci-dessous un tableau qui illustre la syntaxe des commandes SysVinit et de leurs homologues dans systemd, facilitant ainsi la mise à jour de vos compétences et la compréhension du nouveau paradigme de gestion des systèmes.

Commandes liées aux services

commentaires sysvinit Systemd
Démarrer un service service dummy start systemctl start dummy.service
Arrêter un service service dummy stop systemctl stop dummy.service
Redémarrer un service service dummy restart systemctl restart dummy.service
Recharger un service service dummy reload systemctl reload dummy.service
Vérifier l'état d'un service service dummy status systemctl status dummy.service
Démarrez un service au démarrage s'il est déjà en cours d'exécution service dummy condrestart systemctl try-restart dummy.service
Activer un service au démarrage chkconfig dummy on systemctl enable dummy.service
Désactiver un service au démarrage chkconfig dummy off systemctl disable dummy.service
Vérifier si un service est activé au démarrage chkconfig dummy systemctl is-enabled dummy.service
Créez un nouveau fichier de service ou modifiez la configuration chkconfig dummy --add systemctl daemon-reload

Niveaux d'exécution – Niveaux d'exécution

commentaires sysvinit Systemd
Arrêt du système 0 runlevel0.target, poweroff.target
Mode utilisateur unique 1, s, single runlevel1.target, rescue.target
Multi-utilisateur 2 runlevel2.target, multi-user.target
Multi-utilisateur avec réseau 3 runlevel3.target, multi-user.target
Expérimental 4 runlevel4.target, multi-user.target
Multi-utilisateur, avec réseau, mode graphique 5 runlevel5.target, graphical.target
Redémarrer 6 runlevel6.target, reboot.target
Coque d'urgence emergency emergency.target
Passer au niveau d'exécution/cible multi-utilisateurs telinit 3 systemctl isolate multi-user.target (OU systemctl isolate runlevel3.target)
Définir une cible multi-utilisateur au prochain démarrage sed -i 's/id:3:initdefault:/id:5:initdefault:/' /etc/inittab ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Vérifier le niveau d'exécution actuel runlevel systemctl get-default
Changer le niveau d'exécution par défaut sed -i 's/id:3:initdefault:/id:5:initdefault:/' /etc/inittab systemctl set-default multi-user.target

Diverses commandes

commentaires sysvinit Systemd
Arrêt du système halt systemctl halt
Arrêt du système poweroff systemctl poweroff
Riavvio du système reboot systemctl reboot
Suspension du système pm-suspend systemctl suspend
Hibernation pm-hibernate systemctl hibernate
Suivez le fichier journal du système tail -f /var/log/messages o tail -f /var/log/syslog journalctl -f

Nouvelles commandes Systemd

commentaires Systemd
Exécutez une commande systemd sur un hôte distant systemctl -H user@host
Vérifiez l'heure de démarrage systemd-analyze o systemd-analyze time
Tuez tous les processus liés à un service systemctl kill dummy
Obtenez des journaux des événements d'aujourd'hui journalctl --since=today
Nom d'hôte et autres informations sur l'hôte hostnamectl
Date et heure du système avec fuseau horaire et autres informations timedatectl

Ce tableau n'est pas exhaustif, mais couvre les commandes les plus couramment utilisées, fournissant une référence pratique pour les utilisateurs passant de SysVinit à systemd. Avec ce guide, l’objectif est de rendre le processus de transition aussi fluide et intuitif que possible.

Conclusion et conseils

Dans le monde vaste et en constante évolution des systèmes d'exploitation Linux, Systemd n'est pas seulement une tendance, mais une transformation fondamentale qui a redéfini la gestion des services et des processus sous Linux. Pour les administrateurs système, l’apprentissage et la maîtrise de Systemd ne sont plus des options, mais des incontournables.

Le passage de l'ancien sysvinit au Systemd, plus moderne et polyvalent, n'est pas seulement une étape technologique, mais aussi un saut qualitatif dans les compétences requises des professionnels de l'informatique. La plupart des distributions Linux modernes, de Debian à Fedora, d'Ubuntu à CentOS, s'appuient désormais sur Systemd pour la gestion des services. Cela fait passer l’aiguille d’un système d’initialisation traditionnel, que beaucoup connaissent et utilisent depuis des années, à un écosystème plus complexe et plus puissant, où les compétences Systemd deviennent essentielles.

L'apprentissage de Systemd n'est pas seulement un investissement pour maintenir votre pertinence professionnelle ; c'est également l'occasion d'explorer de nouvelles méthodes d'optimisation des performances, de gestion des ressources et d'automatisation dans les environnements Linux.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

INFORMATIONS

Managed Server Srl est un acteur italien leader dans la fourniture de solutions système GNU/Linux avancées orientées vers la haute performance. Avec un modèle d'abonnement peu coûteux et prévisible, nous garantissons que nos clients ont accès à des technologies avancées en matière d'hébergement, de serveurs dédiés et de services cloud. En plus de cela, nous proposons des conseils système sur les systèmes Linux et une maintenance spécialisée en SGBD, sécurité informatique, Cloud et bien plus encore. Nous nous distinguons par notre expertise dans l'hébergement de CMS Open Source de premier plan tels que WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart et Magento, soutenus par un service d'assistance et de conseil de haut niveau adapté aux administrations publiques, aux PME et à toutes tailles.

Red Hat, Inc. détient les droits de Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale d'AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de The FreeBSD Foundation ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt. Oracle Corporation détient les droits sur Oracle®, MySQL® et MyRocks® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; REDIS® est une marque déposée de Redis Labs Ltd. F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB. Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited. Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal®. Amazon Web Services, Inc. détient les droits sur AWS® ; Google LLC détient les droits sur Google Cloud™ et Chrome™ ; Microsoft Corporation détient les droits sur Microsoft®, Azure® et Internet Explorer® ; La Fondation Mozilla détient les droits sur Firefox®. Apache® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée du groupe PHP. CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV. Hetzner Online GmbH détient les droits sur Hetzner® ; OVHcloud est une marque déposée d'OVH Groupe SAS ; cPanel®, LLC détient les droits sur cPanel® ; Plesk® est une marque déposée de Plesk International GmbH ; Facebook, Inc. détient les droits sur Facebook®. Ce site n'est affilié, sponsorisé ou autrement associé à aucune des entités mentionnées ci-dessus et ne représente en aucune manière aucune de ces entités. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées appartiennent à leurs titulaires. MANAGED SERVER® est une marque déposée au niveau européen par MANAGED SERVER SRL, Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italie.

Retour en haut de page