
Noch ein weiteres Init-System? Lernen Sie Nitro kennen, ein neues Konzept der Prozessüberwachung
Die erste öffentliche Version von Nitro fügt der Welt der Init-Systeme eine weitere Option hinzu und bietet einen minimalistischen Prozess-Supervisor für Linux-Umgebungen.
Eine Übersetzung von 🇬🇧 Linuxiac.com
Die Vielfalt und die unendlichen Möglichkeiten des Linux-Ökosystems sind eine seiner stärksten Eigenschaften (oder das Haupthindernis für seine breite Akzeptanz) - je nachdem, wen Sie fragen. Aber das ist nicht unser heutiges Thema. Stattdessen schauen wir uns etwas ganz Neues an, das einen der grundlegendsten Teile eines jeden Systems berührt: den Boot-Prozess.
Ein neues Init-System namens Nitro hat seine erste öffentliche Veröffentlichung erreicht und fügt dem bereits vielfältigen Ökosystem von Prozessüberwachern für Linux, das derzeit von systemd dominiert wird, eine weitere Option hinzu. Die treibende Kraft dahinter ist Leah Neukirchen, die das systemd-freie Void Linux betreut, eine Distribution, die auf runit als Init-System setzt.
Sie hat Nitro so entworfen, dass es winzig, flexibel und einfach zu konfigurieren ist und sich auf die grundlegenden Aufgaben eines Init-Systems konzentriert: Dienste starten, sie am Laufen halten und sie neu starten, wenn sie ausfallen. Im Gegensatz zu größeren Alternativen wie systemd hält sich Nitro an ein einfaches Prozessüberwachungsmodell und bleibt dabei klein genug, um als statische Binärdatei erstellt und ausgeführt zu werden.
Zu seinen Design-Highlights gehören:
- RAM-Only-Status - Der gesamte Status wird im Speicher gehalten, so dass er auf schreibgeschützten Root-Dateisystemen sauber funktioniert.
Ereignisgesteuert - Arbeitet ohne Polling und verwendet ein effizientes ereignisgesteuertes Modell. - Deterministische Laufzeit - Keine Speicherzuweisungen nach der Ausführung, wodurch Fragmentierung und Überraschungen während der Laufzeit vermieden werden.
- Sichere Ressourcennutzung - Garantiert kein unbegrenztes Wachstum der Dateideskriptoren während der Laufzeit.
- Minimaler Fußabdruck - Wird als eine in sich geschlossene Binärdatei mit einem einzigen optionalen Hilfsprogramm für die Systemsteuerung verteilt.
- Einfache Konfiguration - Keine Build- oder Kompilierungsschritte erforderlich; Dienste sind lediglich Verzeichnisse mit Skripten.
- Robuste Überwachung - Unterstützt den automatischen, zuverlässigen Neustart von Diensten im Fehlerfall.
- Flexibilität bei der Protokollierung - Bietet Protokollierung pro Dienst, Standardeinstellungen und sogar Ketten, die über mehrere Dienste verteilt sind.
- Unabhängigkeit von der Uhrzeit - Funktioniert ohne eine korrekt eingestellte Systemuhr.
- Plattformübergreifend - Kann auch unter
FreeBSD
über "/etc/ttys" ausgeführt werden, wobei Standard-Dateideskriptoren automatisch verarbeitet werden. - Winzige statische Binärdatei - Besonders klein, wenn sie mit
musl libc
erstellt wurde.
In der Praxis tut Nitro das, was alle Init-Systeme tun müssen: Es sitzt an PID 1 und sorgt dafür, dass der Rest des Systems zum Leben erwacht und am Laufen bleibt. Der Unterschied liegt darin, dass es klein, skriptfähig und flexibel ist, ohne zusätzliche Funktionsebenen einzubauen. Okay, aber was unterscheidet es wirklich von anderen leichtgewichtigen Init-Systemen, wie rinut oder s6, zum Beispiel?
Kurz gesagt, während runit und s6 bereits leichtgewichtige Init- und Überwachungsbedürfnisse abdecken, grenzt sich Nitro ab, indem es sich auf einen deterministischen, pollingfreien Betrieb mit minimalem Laufzeit-Overhead konzentriert. Während s6 modulare Komplexität hinzufügt und runit ein pragmatisches dreistufiges Init-Design verwendet, zielt Nitro auf einen noch kleineren Fußabdruck mit eingebauter Zuverlässigkeit.
Meiner Meinung nach ist dieses neue Kind im Bereich der Initsysteme nicht dazu gedacht, komplexe Giganten wie systemd in Mainstream-Linux-Distributionen herauszufordern. Stattdessen passt es in spezielle Anwendungsfälle: leichtgewichtige Container, eingebettete Systeme und minimale Umgebungen, in denen kleine, deterministische Binärdateien großen, funktionsreichen Frameworks vorgezogen werden.
Ob es eine wirkliche Dynamik entwickeln kann, wird nur die Zeit zeigen, aber wir werden auf jeden Fall ein Auge darauf haben, wie sich dieses neue Projekt entwickelt.
Die erste Version von Nitro ist jetzt auf GitHub verfügbar, wo Sie auch detaillierte technische Informationen darüber finden können.
Comments