Dauerhafte Einhängungen: die eine Zeile, die eine Maschine am Starten hindern kann
Die von Hand gemachte Einhängung verschwindet nach einem Neustart, und sie dauerhaft zu machen führt über eine Datei, die entscheidet, ob die Maschine startet. Eine kaputte Zeile dort hält nicht einen Dienst an, sondern die Maschine.
AtlasPVE ·
Dieser Eintrag beantwortet
- proxmox fstab dauerhafte einhängung
- proxmox platte nach neustart weg
- proxmox startet nicht fstab
- was ist nofail
- proxmox nfs einhängung dauerhaft
Du hängst eine Platte oder einen Netzspeicher von Hand ein, und es funktioniert. Du startest die Maschine neu, und es ist weg.
Die Lösung liegt nahe: eine Zeile in die Liste der beim Start einzuhängenden Dinge eintragen. Und genau dort beginnt die Gefahr.
Diese Datei ist nicht wie die anderen
Die meisten Konfigurationsdateien auf dem Server verhindern, wenn sie kaputt sind, dass ein Dienst arbeitet. Ist diese Datei kaputt, startet die Maschine womöglich nicht.
Das Ergebnis lautet nicht "der Dienst ist ausgefallen", sondern "das System ist in eine Wiederherstellungsshell gefallen". Und an diesem Punkt kannst du dich nicht mehr aus der Ferne verbinden; du brauchst Tastatur und Bildschirm oder eine physische Konsole.
Die Unwucht, die niemandem auffällt
Eine kaputte Netzwerkkonfiguration ist ärgerlich: du verlierst den Fernzugriff. Doch die Maschine startet weiterhin.
Eine kaputte Einhängezeile kann die Maschine gar nicht erst starten lassen.
Und dennoch gehen die Leute beim Bearbeiten der Netzwerkdatei weit vorsichtiger vor. Die Reihenfolge der Gefahr ist der Intuition entgegengesetzt, und es ist die Intuition, die falsch liegt.
Drei Regeln
Prüfe die Struktur vor dem Schreiben. Eine Zeile braucht mindestens drei Felder: Quelle, Ziel und Dateisystemtyp. Eine Zeile mit fehlenden Feldern bereitet jedem Werkzeug Ärger, das die Datei liest.
Schreibe atomar. Ein halb fertiges Schreiben ist in dieser Datei schlimmer als gar keines: übrig bleibt eine abgeschnittene Datei, und die Maschine versucht, mit ihr zu starten.
Lass eine fehlende Platte die Maschine nicht als Geisel nehmen. Nutze für Netzspeicher und Wechselplatten die Möglichkeit, den Start fortzusetzen, wenn das Einhängen scheitert. Dass eine Sicherungsplatte nicht angesteckt ist, ist kein Grund dafür, dass der Server nicht startet.
Die Prüffalle: eine abstürzende Prüfung ist kein Bestehen
Die allgemeinste Lehre dieses Artikels steht hier, und sie gilt nicht nur für diese Datei.
Es gibt ein Standardwerkzeug, um diese Datei zu prüfen. Auf einer echten Maschine gemessen kam dies heraus: das Werkzeug stürzt ab, wenn es eine Zeile mit weniger als drei Spalten sieht. Es fliegt also genau dann auseinander, wenn es die fehlerhafte Form sieht, die es fangen soll.
Dass ein Prüfwerkzeug abstürzt, heißt nicht, dass die Prüfung bestanden wurde. Die richtige Antwort ist nicht "kein Problem", sondern "konnte nicht geprüft werden".
Ein Verfahren, das diese Unterscheidung nicht trifft, segnet die gefährlichste Datei in ihrem schwächsten Moment ab.
Die zweite Falle: nicht jede Beschwerde ist ein Fehler
Dasselbe Prüfwerkzeug kann zweierlei sagen, und beides zu verwechseln, schafft ein neues Problem.
Ein Formatfehler heißt, die Datei ist nicht lesbar. Das ist wirklich gefährlich, und das Schreiben sollte zurückgenommen werden.
Eine inhaltliche Beschwerde ist etwas anderes: Dinge wie "Ziel beim Start nicht erreichbar" oder "unbekannter Dateisystemtyp". Diese beschädigen die Datei nicht und können berechtigt sein. Eine Zeile für ein noch nicht angeschlossenes Gerät einzutragen, ist üblich und richtig; die Möglichkeit, den Start fortzusetzen, gibt es genau dafür.
Eine Prüfung, die beides in denselben Korb wirft, weist eine brandneue, völlig gültige Zeile zurück. Mit anderen Worten: ein übertrieben strenges Tor macht die Arbeit unmöglich und treibt die Leute dazu, das Tor abzuschalten.
Was Atlas tut
In Atlas geht jedes Schreiben in diese Datei durch eine einzige Tür. Jede Zeile wird vor dem Schreiben strukturell geprüft, das Schreiben erfolgt atomar, und nach dem Schreiben wird die Datei zurückgelesen und überprüft; erscheint das erwartete Ergebnis nicht, wird der vorige Zustand wiederhergestellt.
Beide obigen Fallen werden bewusst behandelt. Das äußere Prüfwerkzeug gilt nur als zweitrangiges Signal: stürzt es ab, lautet das Ergebnis nicht "sauber", sondern "konnte nicht geprüft werden". Und Formatfehler und inhaltliche Beschwerden werden getrennt behandelt; nur ein Formatfehler führt zur Rücknahme, während inhaltliche Beschwerden nicht verschluckt, sondern dem Aufrufer gemeldet werden.
Die Notwendigkeit dieser Unterscheidung wurde ebenfalls durch Messen gefunden: in der ersten Fassung führten beide zur Rücknahme, und in diesem Zustand wurde sogar eine brandneue, völlig gültige Zeile abgewiesen.
Eine ehrliche Anmerkung zur Geschichte: das Produkt schrieb früher aus acht verschiedenen Stellen in diese Datei, und an keiner wurde geprüft, ob das Geschriebene gültig war; an zweien wurde die ganze Datei nicht atomar überschrieben. Im selben Produkt wurde die Netzwerkdatei, die die Maschine nicht am Starten hindern kann, atomar geschrieben. Die gefährlichere Datei war also die weniger geschützte. Es wurde gemessen und hinter eine Tür gebracht.
Quellen
Die eigene Dokumentation von Proxmox. Auf Englisch, und sie hat in dieser Sache das letzte Wort.