Gibt es eine Möglichkeit, einen Linux-Computer über SSH neu zu starten, wenn das Root-Dateisystem nicht funktioniert?

15

Genau wie eine Neugier; Auf einem Linux-Computer ist ein Fehler aufgetreten, sodass das Root-Dateisystem als "64Z" angezeigt wird. Einige Befehle funktionieren, wie z. B. top, dfund kill, andere, wie z. B. reboot, haben "Befehl nicht gefunden" (da das Root-Dateisystem nicht gelesen werden kann) und chmodeinen Segmentierungsfehler.

Gibt es eine Möglichkeit, das System trotzdem neu zu starten, dh ohne das rebootProgramm? Ich habe versucht kill -PWR 1(SIGPWR an init zu senden), aber dies schien nichts zu tun.

Meistens ist es eine akademische Neugier. Der Labmate, der die Arbeit mit großen Datenbanken ausgeführt hat, die den Fehler verursacht hat, wird den Computer bald physisch neu starten.

gatoatigrado
quelle
Hoffentlich rettet mich das nächste Mal das Problem ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado
Haben Sie gesehen, dass das Problem mit der Root-Fs eine Kernel-Panik ausgelöst hat?
Hanan N.

Antworten:

25

Versuchen Sie, mit dem magischen sysrq-Schlüssel neu zu starten:

echo b > /proc/sysrq-trigger

Weitere Informationen finden Sie in der Dokumentation zum Wiki oder zum Kernel .

eilen
quelle
1
Vielen Dank! Dadurch wurde das System neu gestartet. (Was auch immer mit dem Root-Dateisystem passiert ist, scheint leider nicht wiederherstellbar zu sein ... traurig).
gatoatigrado
5

Ein RAC (Remote Access Card) oder iLO (Integrated Lights-Out) oder MP (Management Processor) bietet Ihnen die Möglichkeit, Ihren Server zurückzusetzen.

Wenn Sie beispielsweise einen Dell PowerEdge mit einer RAC-Karte (DRAC) haben, können Sie den Server über ssh aus- und wieder einschalten:

ssh drac "racadm serveraction powercycle"

Die andere Möglichkeit besteht darin, die Web-GUI für RAC / iLO zu verwenden und dort dasselbe zu tun.

Auch dafür gibt es einen offenen Standard: IPMI.

Nils
quelle
3

Noch interessanter als die @ Rush-Antwort ist die Möglichkeit, das System neu zu starten (und vieles mehr), selbst wenn das System überhaupt nicht auf die Tastatur reagiert. Es muss jedoch auf ICMP-Pakete (Ping) geantwortet werden.

Sehen Sie hier für die vollständige Dokumentation und Anweisungen, wie das realisieren.

Hanan N.
quelle
4
Wie wäre es, wenn Sie statt nur eines Links eine kurze Beschreibung der Anweisungen / Zusammenfassung der Prinzipien geben?
Kizzx2
Sie müssen ein wenig Setup für diesen Ansatz tun, aber auf jeden Fall eine gute Idee.
gatoatigrado
Das hört sich interessant an - birgt es aber kein erhebliches Sicherheitsrisiko? Das Ermöglichen eines Neustarts eines Servers über ein einzelnes ICMP-Paket scheint ein Denial-of-Service-Angriff zu sein, der darauf wartet, ausgeführt zu werden.
BGVAUGHAN
@bgvaughan: Sie haben Recht, und unter dem Link, den ich oben angegeben habe, gibt es die Vor- und Nachteile, und einer davon ist die Sicherheit, obwohl Sie einschränken können, wer das kann.
Hanan N.
2

Am einfachsten ist es normalerweise, den Runlevel zu ändern.

Unter Linux können Sie Folgendes tun:

Prompt# init 6

Weitere Informationen finden Sie hier: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm

Patrick
quelle
1
Dies wird in dieser Situation nicht funktionieren. Der Befehl init befindet sich in / sbin (zumindest in Ubuntu), daher ist ein Zugriff auf das Dateisystem erforderlich.
Sonnig
1

Dies erfordert eine vorherige Einrichtung. Wenn Sie jedoch daran gewöhnt sind, einen Computer zum Absturz zu bringen (z. B. weil Sie auf diesem Computer eine Low-Level-Entwicklung durchführen), möchten Sie möglicherweise einen Watchdog einrichten , dh einen Kernel oder Benutzer-Tasks, der diesen automatisch neu startet, wenn es reagiert nicht mehr. Linux kann einen Hardware-Watchdog (falls vorhanden) oder einen Software-Watchdog (falls vorhanden) verwenden.

Gilles 'SO - hör auf böse zu sein'
quelle