Wie kann ich die Reihenfolge festlegen, in der Dateisysteme automatisch bereitgestellt werden?

14

Ich brauche eine bestimmte Zeile /etc/fstab, um immer nach zwei anderen Zeilen gemountet zu werden:

# Always mount these first
UUID=fdf38dd4-9e9d-479d-b830-2a6989958503 / ext4 noatime,discard,errors=remount-ro 0 1
UUID=2b548eb8-fa67-46ce-a998-91d587dba62f /home/.hdd ext4 errors=remount-ro 0 2

# Always mount this second
none /home/ak aufs br:/home/.ssd/ak=rw:/home/.hdd/ak=rw 0 0

Das derzeitige Verhalten besteht darin, die Reihenfolge der letzten beiden Zeilen auf unvorhersehbare Weise umzukehren. Wie kann ich die erforderliche Reihenfolge festlegen?

ændrük
quelle
4
Mögliche Problemumgehung (ungetestet): Konfigurieren Sie die letzte als noautound mounten Sie in rc.local?
jg-faustus
@ jg-faustus Danke, die Problemumgehung scheint erfolgreich zu sein.
ændrük
@ jg-faustus Dieses Kopfgeld endet bald und Ihre Problemumgehung kommt einer Antwort am nächsten. Wenn du es unten postest, gebe ich dir die +50.
ændrük,

Antworten:

17

Eine Möglichkeit besteht darin, die Bereitstellung zu verschieben, bis /etc/fstabsie abgeschlossen ist. Auf diese Weise haben Sie die volle Kontrolle über die Reihenfolge der Bereitstellung.

Fügen Sie einfach noautodie Mount-Optionen in fstab hinzu und mounten Sie in rc.local.

Laut Manpage werden mount -adie Einträge fstabnacheinander eingehängt, während sie durch Hinzufügen der -FOption ('fork') parallel eingehängt werden. Es scheint, dass der Standard-Boot 'fork' verwendet, vermutlich um die Boot-Zeit zu verkürzen. Ich denke also, dass das (halb-) manuelle anschließende Montieren der einfachste Weg ist, die Kontrolle über die Mount-Reihenfolge zurückzugewinnen.

jg-faustus
quelle
4

Ich könnte überlegen, ein Skript einzurichten , mit dem die zweiten Datenträger nach dem Aufruf des Mount-Skripts gemountet werden. In Ubuntu ist initd der Dienst, der alle Komponenten Ihres Betriebssystems startet, und er heißt upstart .

Es ist ereignisbasiert, was bedeutet, dass es während des Startvorgangs nach Ereignissen sucht / wartet und diese ausgibt. Wie in diesem Beitrag hervorgehoben , versucht der initd-Dienst, Dinge parallel zu machen, was wahrscheinlich Ihre Probleme verursacht. Sie können Ihr Skript also so einstellen, dass es sofort ausgeführt wird, nachdem der Ladevorgang abgeschlossen wurde.

Die Mount-Skripte werden im Verzeichnis / etc / init / gespeichert. Ich würde dort auch Ihr zusätzliches Mount-Skript hinzufügen. Schauen Sie sich diese Beschreibung des Startvorgangs an. Diese Seite wird Ihnen wahrscheinlich dabei helfen, am schnellsten mit Ihrem eigenen Skript fertig zu werden.

Sie müssen einen Anfang für einen Abschnitt in Ihrem eigenen Skript haben. In diesem Abschnitt erfahren Sie, wie Sie einen Job starten, nachdem ein anderer beendet wurde.

Ich bin immer noch dabei, wie ich meine eigenen Start-up-Skripte selbst erstellen kann, daher kann ich nicht hilfreicher sein. Wenn Sie eine funktionierende Lösung finden, senden Sie diese bitte hier zurück.

Nelaaro
quelle
4

Ubuntu nutzt mountallbeim Booten nicht mount -a. Mountall wartet darauf, dass die zugrunde liegenden Geräte angezeigt werden, und hängt dann die fs sofort auf ihnen ein, es sei denn, die fs, unter der es gemountet wird, wurde noch nicht gemountet. Dann wartet es auf diese fs.

Sie sollten in der Lage sein, die gewünschte Reihenfolge zu erhalten, indem Sie die Einhängepunkte der 3 Dateisysteme so einstellen, dass sie untereinander gestapelt sind. Anstatt alle drei in /home/.something zu mounten, platzieren Sie den ersten in /home/.x und den zweiten in /home/.x/.y und den dritten in /home/.x/.y/ .z.

Psusi
quelle
3

Systemd hat jetzt eine Abhängigkeitsoption hinzugefügt, die die Reihenfolge der Ladevorgänge erzwingt. In deinem Fall füge die fstab Argumente hinzu:

x-systemd.requires-mounts-for=/,x-systemd.requires-mounts-for=/home/.hdd

Die noauto-Option funktioniert nicht, wenn Sie über andere bereitgestellte Dateisysteme bereitstellen müssen. In meinem Fall hat das oben beschriebene Verfahren funktioniert. Weitere Informationen finden Sie unter commit https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823 .

techimperial
quelle
1

Entsprechend könnte man fstabdie showthroughOption das sein, wonach Sie suchen. Setzen Sie es auf / home / ak und prüfen Sie, ob es funktioniert.

Es ist möglich dass mount beim Mounten von Dateisystemen während des Bootvorgangs eine Verzweigung auftritt. In diesem Fall ist die Reihenfolge, in der Ihre Partitionen bereitgestellt werden, nicht definiert.

Scott Severance
quelle
1
showthroughhabe das problem nicht gelöst.
ændrük