Software-RAID gebaut, neu gestartet, Speicher weg: das Verbund wird beim Start nicht zusammengesetzt

Die Platten sind in Ordnung und die Daten liegen da, aber der Speicher fehlt. Was fehlt, liegt nicht auf den Platten: es ist der Eintrag, der dem System sagt, den Verbund beim Start zusammenzusetzen.

AtlasPVE ·

Dieser Eintrag beantwortet

  • proxmox software raid mdadm
  • proxmox raid verbund startet nicht mit
  • proxmox speicher nach neustart verschwunden
  • wird mdadm von proxmox unterstützt
  • proxmox raid oder zfs

Sie haben die Platten zusammengefasst, der Verbund kam hoch, der Speicher erschien, Sie haben Daten darauf geschrieben. Alles hat funktioniert.

Dann haben Sie die Maschine neu gestartet, und der Speicher ist weg.

Die Platten sind in Ordnung. Die Daten liegen noch da. Es fehlt etwas anderes.

Ein Verbund liegt nicht auf den Platten, er liegt in der Aufbauanweisung

Mehrere Platten als einen einzigen Speicher zu zeigen ist keine Eigenschaft, die auf den Platten sitzt. Bei jedem Start muss das System jene Platten finden und wieder zusammensetzen.

Es gibt einen Eintrag, der ihm sagt wie. Ohne diesen Eintrag wird der Verbund vielleicht nicht zusammengesetzt. Selbst wenn doch, kann er unter einem anderen Namen hochkommen, was auf dasselbe hinausläuft: Ihr Speicher zeigt auf den alten Namen und dort ist nichts.

Das Problem lautet also nicht "die Daten sind verloren", sondern "der Weg zu den Daten wurde beim Start nicht gebaut". Das klingt weniger beängstigend, aber im Moment der Panik fühlen sich beide gleich an.

Die Haltung von Proxmox selbst

Das gehört ehrlich gesagt: der eingebaute und unterstützte Weg bei Proxmox ist ZFS. Verlangen Sie bei der Installation eine Plattenspiegelung, bekommen Sie genau das.

Klassisches Software-RAID funktioniert, ist aber nicht der Weg, den die Installation für Sie einrichtet. Das heißt, wenn Sie es wählen, liegt es an Ihnen, dafür zu sorgen, dass die Schritte für den Aufbau beim Start richtig gemacht wurden.

Es gibt trotzdem Fälle, in denen es sinnvoll ist: Sie haben bereits einen Verbund und ziehen ihn um, Ihr Controller-Aufbau entspricht nicht dem, was ZFS erwartet, oder der Speicher der Maschine ist für ZFS knapp. Das sind echte Gründe. Ohne einen solchen Grund zu wählen heißt, sich selbst später Arbeit zu machen.

Die Regel: ein Verbund, der keinen Neustart gesehen hat, zählt nicht als Verbund

Das ist der praktischste Satz dieses Artikels.

Starten Sie nach dem Aufbau des Verbunds absichtlich einmal neu, solange nichts davon abhängt. Kommt der Speicher zurück, kommt er unter demselben Namen zurück, ist der Inhalt sichtbar?

Dasselbe haben wir im Artikel über Warnmeldungen in diesem Wiki geschrieben: ein ungetesteter Alarm ist kein Mechanismus, sondern eine Hoffnung. Für einen Verbund gilt es genauso. Ein Verbund, der keinen Neustart überstanden hat, ist ein Verbund, von dem Sie glauben, dass er funktioniert.

Die Namensfalle

Die zweite häufige Falle: der Verbund wird zusammengesetzt, aber unter einem anderen Namen als beim letzten Mal.

Ihre Speicherdefinition zeigt auf den alten Namen, also ist der Speicher wieder unsichtbar. Diesmal steht der Verbund, aber niemand schaut ihn an.

Die Lösung ist, den Speicher nicht über den Namen, sondern über die Identität anzubinden. Namen können sich ändern, Identitäten nicht.

Was Atlas macht

Wenn Atlas einen Verbund aufbaut, schreibt es auch den Starteintrag, und es zeigt auf dem Bildschirm diese Warnung: schlägt dieser Schritt fehl, wird der Verbund beim Start möglicherweise nicht zusammengesetzt und der Speicher wird unsichtbar.

Die Warnung stimmte. Aber eine Zeit lang hob sie sich selbst auf.

Zum Erzeugen des Eintrags wurde das systemeigene Werkzeug aufgerufen. Es wurde gemessen, und dabei kam heraus: wenn gar kein Verbund vorhanden ist, beendet sich dieses Werkzeug mit Code null und gibt nichts aus. Es sagt also "erfolgreich" und reicht Ihnen nichts.

Das Ergebnis: es wurde nichts geschrieben, aber der Schritt wurde als erfolgreich verbucht. Genau das, was die Warnung eben beschrieben hatte, geschah dem Benutzer, während der Bildschirm alles als in Ordnung zeigte.

Die Korrektur bestand aus zwei Teilen. Das erwartete Format wurde durch Messen bestimmt statt geraten, und passt die Ausgabe nicht zu diesem Format, gilt der Schritt als gescheitert. Leere Ausgabe ist ebenfalls ein Fehlschlag. Und damit derselbe Verbund nicht zweimal geschrieben wird, werden sowohl der Gerätepfad als auch die Identität geprüft.

Die allgemeine Lehre

Der Satz, auf den es hier ankommt, lautet: "der Befehl war erfolgreich" und "die Arbeit wurde erledigt" sind nicht dasselbe.

Ein Rückgabewert sagt Ihnen, ob das Werkzeug gelaufen ist. Er sagt Ihnen nicht, ob das Ergebnis zustande kam. Wenn der ganze Zweck eines Schrittes darin besteht, eine Wirkung zu erzeugen, ist das zu Prüfende nicht der Zustand des Werkzeugs, sondern die Wirkung selbst.

Es gibt in diesem Wiki zwei weitere Artikel derselben Familie. Im Artikel über verwaiste Platten wurde eine leere Antwort von einer ausbleibenden Antwort getrennt. Im Artikel über den Servernamen ging es um die Gefahr, einen plausibel aussehenden Standardwert an die Stelle des Unbekannten zu setzen. Dies ist der dritte: einen Rückgabewert an die Stelle eines nie festgestellten Ergebnisses zu setzen.

Alle drei sind Gesichter desselben Fehlers: das Programm behauptet etwas, das es nicht überprüft hat.

Quellen

Die eigene Dokumentation von Proxmox. Auf Englisch, und sie hat in dieser Sache das letzte Wort.

Verwandte Einträge

Wie sieht das in Atlas aus?

Zur Produktseite