Standardmäßig wird systemd beim geringsten Fehler in eine Notfall-Shell verschoben. Wenn beispielsweise eine der Bereitstellungen bei fstab aus irgendeinem Grund fehlschlägt, kann das System sofort nicht mehr gestartet werden. Ich verwalte Dutzende verschiedener Produktionssysteme und habe dieses Verhalten als sehr schädlich empfunden. (Eigentlich denke ich, dass es ein großer Designfehler ist, aber das ist eine persönliche Meinung).
Ich möchte die Ausfallsicherheit des Systemstarts erhöhen. Optimalerweise sollte das System immer hochfahren, fehlende Treiber, Halterungen usw. sollten die Notfall-Shell nicht löschen (stattdessen nur Warnung anzeigen), es sei denn, der angegebene Fehler würde die Anmeldung der Konsole absolut unmöglich machen. Was ausgeführt werden kann, sollte ausgeführt werden.
Ich weiß, dass systemd automatisch * .mount-Dateien aus / etc / fstab generiert und ich könnte die Option nofail mit einem kleinen Timeout für x-systemd.device verwenden (oder die relevanten .mount-Dateien selbst definieren). Allerdings würde es mein Problem nicht lösen. Ich möchte das System widerstandsfähiger machen. Das "Patchen" von fstab jedes Mal ist nicht sehr praktisch und ich bin mir nicht sicher, wie viele andere mögliche "Probleme" existieren, die mein System nur deshalb nicht bootfähig machen würden Einige Entwickler hielten es irgendwo für wichtig genug.
In gewisser Weise möchte ich die Kontrolle über meinen Computer wiedererlangen und systemd nicht entscheiden lassen, welches Problem ernst genug ist, um den Startvorgang zu unterbrechen. Ist es möglich?
quelle
Antworten:
Es sind buchstäblich nur Mount-Fehler, das ist alles, was Sie ändern müssten.
Der Brief Ihrer Anfrage wäre also trivial zu beantworten. Erstellen Sie eine Drop-In-Datei:
Ich glaube, dies wird kein neues Problem hinzufügen, das über das hinausgeht, unter dem Linux Sysvinit bereits gelitten hat, als es dieses Szenario mit teilweisem Ausfall zugelassen hat.
Sie haben jedoch auch auf die Frage hingewiesen, wie lange systemd warten soll, bis die angegebenen Blockgeräte verfügbar sind. Ich sehe keine Möglichkeit, dies zu konfigurieren, ohne einen Ersatz für den gesamten fstab-Generator bereitzustellen. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Wenn Sie hier eine große Menge weniger verbreiteten Codes ausgeben, ist es unwahrscheinlich, dass dies die Systemstabilität erhöht. Ich denke, die nächste Lösung wäre, den vorhandenen fstab-Generator zu patchen. Es ist nicht sehr komplex, ich vermute, Sie könnten damit durchkommen / mit bedeutenden Änderungen Schritt halten.
Wenn Ihre Distribution ein in sich geschlossenes
mountall
Sysvinit-Skript hätte, könnten Sie versuchen, dies einzubinden. Aber das wird den Startvorgang erheblich verändern - es ist eigentlich eher eine Abzweigung. Ich würde diesen Ansatz nicht empfehlen./unix//a/393711/29483
quelle
[Unit]\nOnFailure=
in meine nofail.conf setzen. Es scheint möglich zu sein, die Wartezeit in /etc/systemd/system.conf zu konfigurieren (über die generische Option DefaultTimeoutStartSec). Meine Systeme sind normalerweise schnell genug, die 90er scheinen sowieso ein Overkill zu sein. Diese Lösung scheint vielversprechend zu sein.OnFailure=
in/lib/systemd/system/local-fs.target
statt/etc/systemd
(Ubuntu 16.04 auf AWS)[Unit]
vorher aufgenommen habenOnFailure=
.Deaktivieren Sie die automatische Bereitstellung eines Dateisystems, das für den Startvorgang nicht unbedingt erforderlich ist, indem Sie
noauto
dem/etc/fstab
Eintrag eine Bereitstellungsoption hinzufügen :zu:
Mounten Sie das Dateisystem nach dem Start mithilfe einer Zeile in
/etc/rc.local
:In diesem Beispiel wird NFS verwendet, es gilt jedoch auch für LUNs, die von einem Dateiserver importiert wurden.
quelle
Versuchen Sie das vielleicht?
quelle