Wann ist ein Neustart erforderlich?

27

Gibt es außer der Aktualisierung des Kernels Änderungen an einem Linux-System, die einen Neustart erfordern? Ich weiß, dass es Situationen gibt, in denen ein Neustart die Dinge einfacher macht, aber gibt es Situationen, die nur mit einem Neustart erreicht werden können?

Zur Verdeutlichung: Ich denke an ein typisches Desktop- oder Serversystem, bei dem keine Hardwarefehlfunktion vorliegt.

Kennzeichen
quelle
3
Alles kann ohne Neustart durchgeführt werden. Selbst das Ändern des Kernels kann mit ksplice durchgeführt werden, sodass Sie Ihren Kernel im laufenden Betrieb austauschen können. Das einzige, was Sie berücksichtigen müssen, ist die Tatsache, dass es sehr komplex sein kann, alles ohne Neustart zu machen
Kiwy
4
Ihre Frage ist sehr weit gefasst, denn "Linux-System" kann viele sehr unterschiedliche Dinge bedeuten.
Zrin
Auch "Änderungen" können ganz unterschiedliche Situationen bedeuten. Ist die Wiederherstellung von einer ausgefallenen Festplatte, die Teil eines MD-Spiegels ist, eine solche Änderung? Wenn ja, ist - leider - manchmal ein Neustart erforderlich, da beispielsweise einige Festplattenfehler (auf einigen Festplattencontrollern) dazu führen können, dass das System nicht mehr reagiert. Aber Sie fragen wahrscheinlich nicht nach solchen "Änderungen" ...
Zrin
3
@Kiwy Technisch gesehen ändert ksplice den Kernel nicht . Mit Ksplice kann ein laufender Kernel gepatcht werden, während er ausgeführt wird. Möglicherweise denken Sie an kexec , mit dem ein neues Kernel-Image "über" einen laufenden Kernel im Speicher geladen werden kann.
Thomas Nyman
Das erinnert mich daran, dass Windows XP (über das ich nie hinausgegangen bin) niemals einen Neustart ansieht, auch wenn es nur den IE8 (oder eine beliebige Nummer) aktualisiert hat, der seit der Installation von Windows 4 Jahre lang nicht mehr geöffnet war, und daher ein Download erforderlich ist Browser.
Shahbaz

Antworten:

44

Ein paar Dinge fallen mir ein:

  • Erholen Sie sich von einer Kernel-Panik

    Eine Kernel-Panik kann per Definition nicht behoben werden, ohne den Kernel neu zu starten.

  • Erholen Sie sich von Hängen, die Sie ohne Terminalzugriff verlassen

    Wenn das System nicht reagiert und Sie nicht in der Lage sind, Befehle zur Wiederherstellung abzusetzen, können Sie möglicherweise nur einen Neustart durchführen. Normalerweise möchten Sie manuelles Aus- und Einschalten vermeiden. In solchen Situationen unterstützt der Linux-Kernel Magic SysRq , mit dessen Hilfe der Computer im Notfall neu gestartet werden kann.

    Solange die CONFIG_MAGIC_SYSRQOption in der Kernelkonfiguration aktiviert und die kernel.sysrq sysctlOption aktiviert ist, können Sie Befehle mit magischen SysRq-Tastenkombinationen direkt an den Kernel senden:

    Beachten Sie, dass Alt+ SysRqunten bedeutet, dass Sie gedrückt halten und Alt dann gedrückt halten SysRq (normalerweise die PrintScrnTaste).

    1. Alt+ SysRq+ r: Kontrolle der Tastatur wieder
    2. Alt+ SysRq+ e: Senden SIGTERMan alle Prozesse, mit der Ausnahme init, ihnen eine Chance zu geben , sanft zu beenden
    3. Alt+ SysRq+ i: SIGKILLan alle Prozesse senden , außer dass initsie zum Beenden gezwungen werden
    4. Alt+ SysRq+ s: Versuch synchronisieren alle Dateisysteme montiert
    5. Alt+ SysRq+ u: Remount alle Dateisystem schreibgeschützt
    6. Alt+ SysRq+ b: Neustart oder

      Alt+ SysRq+ o: Herunterfahren

    Eine Mnemonik für die magischen SysRq-Tastenkombinationen, um einen ordnungsgemäßen Neustart zu versuchen, lautet:

    " R eboot E ven I f S ystem U tterly B roke "

    Für Headless-Server gibt es sogar ein iptables-Ziel, das Remote-SysRq-Sequenzen über ein Netzwerk ermöglicht.

  • Wiederherstellen aus dem nicht bootfähigen Zustand

    Wenn das System bereits in einen Zustand versetzt wurde, in dem ein regulärer Start nicht möglich ist (z. B. aufgrund eines fehlgeschlagenen System-Upgrades, eines beschädigten Dateisystems usw.), besteht die einzige Möglichkeit, auf eine Wiederherstellungskonsole auf dem System zuzugreifen, möglicherweise in einem Neustart Verwenden geeigneter Startzeitoptionen.

  • Ändern Sie die Kernelparameter für die Startzeit

    Einige Kernel-Parameter (z. B. auditzum Aktivieren / Deaktivieren der Kernel-Überwachung) können nur festgelegt werden, wenn der Kernel beim Booten geladen wird.

Thomas Nyman
quelle
3
"Reboot Even If System Utterly Broke" Ich bevorzuge diese Frage nur für den Fall, aber ich glaube nicht, dass ich das jemals vergessen werde.
embedded.kyle
1
Es ist möglicherweise erwähnenswert, dass Sie mit einem Kexec aus einer Panik herauskommen und einen vollständigen Neustart vermeiden können. Dies gilt auch für das Verlassen des nicht bootfähigen Zustands. (Sie sind keineswegs dasselbe, zumindest auf einem x86-System). Jedoch +1 für den Rest dieser Antwort.
Vality
@Vality Danke für deinen Kommentar. Ob mit kexec ein Neustart verbunden ist, hängt möglicherweise in gewissem Umfang von der jeweiligen Sichtweise ab. In der kdump-Dokumentation wird beispielsweise kexec-on-panic als Neustart beschrieben, bei dem das Speicherimage des Systemkerns erhalten bleibt. Was den nicht bootbaren Zustand angeht, habe ich auch Dinge wie eine falsche Bootloader-Konfiguration (z. B. Fehler beim Laden des Kernels an erster Stelle) in Betracht gezogen, bei denen Kexec nicht hilft. Angesichts der Art der Frage halte ich Meinungsverschiedenheiten in Bezug auf die Semantik für unvermeidlich.
Thomas Nyman
@ThomasNyman Vielen Dank für Ihre ausführliche Antwort und die Frage, die Sie für richtig halten. Ich denke, über Kexec zu sprechen wird die Dinge für die Zielgruppe oder diese Frage wahrscheinlich unnötig komplizieren. Und Sie machen auch einen guten Punkt in Bezug auf Bootloader-Fehler.
Vality
Ich hatte noch nie bemerkt, dass der kleine SysRq unter Druck steht! Das ist fantastisch. Ich wünschte, ich hätte das gewusst, als ich das Programmieren von Kernelmodulen lernte!
Shahbaz
2

Ich kann mir zwei Mal überlegen, wo ich einen Neustart durchführen möchte:

  1. Wenn ich sicherstellen muss, dass das System im richtigen Zustand hochgefahren werden kann.

    Ich habe einmal an einem System gearbeitet, auf dem ein Dämon konfiguriert war, während er lief. Nachdem es einige Jahre lief, führte ein Stromausfall zu einem Neustart, aber der Daemon war nicht Teil des Startvorgangs und niemand hatte eine Ahnung, wie es Jahre zuvor konfiguriert worden war. Das System war tagelang außer Betrieb, als wir herausfanden, wie wir es neu konfigurieren sollten.

    Tatsächlich ist ein Neustart die einzige Möglichkeit, um sicherzustellen, dass Ihr System nach einem Stromausfall ordnungsgemäß neu gestartet wird.

  2. Wenn eine Systembibliothek aktualisiert wurde.

    Angenommen, in einer Bibliothek, die mit vielen Apps / Servern auf dem System gemeinsam genutzt wird, wurde eine schwerwiegende Sicherheitslücke entdeckt. Sie können die Bibliothek ohne Neustart aktualisieren, aber wie viele Prozesse werden noch ausgeführt, wenn die unsichere Bibliothek geladen ist? Sie können alles mit der alten Bibliothek mühsam neu starten (wenn Sie es herausfinden können), aber das ist fehleranfällig und kann länger dauern als nur ein Neustart.

    Ein Neustart ist der beste Weg, um sicherzustellen, dass nicht noch alle laufenden Prozesse die alte, fehlerhafte Bibliothek verwenden.

Gabe
quelle
Es gibt bessere Möglichkeiten, alle Binärdateien abhängig von einer bestimmten Bibliothek zu finden, wenn Sie einen guten Paketmanager verwenden. Es fällt mir ein, wie aus Gentoo revdep-rebuilt.
Spidey
1
@Spidey: Wie stellen Sie sicher, dass nach dem Neuerstellen dieser Binärdateien keine alten Prozesse mit der Buggy-Bibliothek ausgeführt werden?
Gabe
1
Woher wissen Sie, welche Daemons die betreffenden Bibliotheken geladen haben?
Gabe
1
@Gabe Sie können beispielsweise überprüfen, bei welchen Prozessen die Bibliotheken ihrem Speicherbereich zugeordnet sind, lsofbevor Sie die Bibliotheken aktualisieren.
Thomas Nyman
1
@Gabe Sicher, und obwohl ich der Meinung bin, dass dies ein guter Grund für einen Neustart ist, fragt das OP ausdrücklich nicht , in welchen Fällen ein Neustart praktischer ist, sondern wann ein Neustart unbedingt erforderlich ist .
Thomas Nyman
0

Wenn Sie geplante Änderungen in der Softwarekonfiguration meinen und davon ausgehen, dass die Hardware einwandfrei funktioniert (ich habe sie noch nicht gesehen) und die Software fehlerfrei ist (Sie wissen ...), dann würde Sie nur ein Fehler im Kernel oder ein Treiber dazu zwingen neustarten. :)

Davon abgesehen ... Ich bin mir nicht sicher, ob es möglich wäre, zu ersetzen, initohne in den Einzelbenutzermodus zu wechseln und etwas zu zaubern, was sich im Wesentlichen nicht wesentlich von einem Neustart unterscheidet.

Zrin
quelle