zfs - zwei Pools mit verschachtelten Mountpunkten und widersprüchlicher Mountreihenfolge

7

Ich habe ein Problem beim automatischen Bereitstellen separater Pools mit verschachtelten Mountpunkten. Ich verwende ZfsOnLinux 0.6.2.

Die Situation ist derzeit wie folgt:

zpool1      ---> /var
zpool1/log  ---> /var/log
zpool1/mail ---> /var/mail

Jetzt muss ich einen separaten zpool für db hinzufügen. Um die Verzeichnishierarchie konsistent zu halten, habe ich darüber nachgedacht:

zpool2      ---> /var/db

Das Problem ist nun, dass zpool1 beim ersten Mounten von zpool2 nicht gemountet werden kann (dies ist logisch).

Gibt es eine Möglichkeit, die Mount-Reihenfolge von Pools zu erzwingen, um das Mounten von zpool2 in zpool1 zu ermöglichen, abgesehen von der Verwendung der Legacy-Mount-Option? So etwas wie Zpools Abhängigkeit? Oder sollte ich solche verschachtelten Mounts um jeden Preis vermeiden?

Paweł Rumian
quelle
Gute Frage. Ich bin nicht sicher ...
ewwhite
1
Setzen Sie den Mount-Punkt möglicherweise auf "Legacy" und fügen Sie ihn zu / etc / fstab hinzu, der in der angegebenen Reihenfolge bereitgestellt wird. Ist das Ubuntu?
Mark Wagner
@ MarkWagner, es ist Gentoo. Aber ich würde es vorziehen, keine älteren Mount-Optionen zu verwenden und von zfs Automounting zu profitieren ...
Paweł Rumian
Ich kann nicht lesen. Es tut uns leid.
Mark Wagner

Antworten:

5

Anstatt zpool2als zu /var/dbmontieren, montieren Sie es als /zpool2oder /dboder was auch immer für Sie sinnvoll ist.

Dann machen Sie /var/dbeinen Symlink zu /db.

MikeyB
quelle
Alternativ können Sie anstelle von Symlink ein Bindmount ausführen. Einige Softwareprogramme möchten, dass einige Verzeichnisse ehrliche Verzeichnisse anstelle von Symlinks sind.
Pepoluan
2
Ein Bind-Mount verursacht das gleiche Problem - das /varmuss gemountet werden, bevor der Bind-Mount erstellt werden kann.
MikeyB
Ich befürchtete, dies wäre die einzige Lösung ... Ich dachte nur an eine andere Problemumgehung: Erstellen von Datasets für alle Verzeichnisse in /var, Festlegen von Mountpunkten für zpool1und zpool2an noneund Mounten nur der Datasets. Sollte das funktionieren? Der Nachteil ist natürlich, dass ich separate Datensätze für alle Verzeichnisse in /var/...
Paweł Rumian
Warum denkst du, sind Symlinks so schlecht? Sie sind nicht. Hören Sie auf, besessen davon zu sein, die Dinge perfekt zu machen.
MikeyB
Ja, ich habe immer versucht, die Dinge perfekt zu polieren, und Symlinks schienen die Entropie zu erhöhen;) Ich denke, Sie haben jedoch Recht ...
Paweł Rumian
4

Sie können die Mountpoint-Eigenschaften des Dateisystems auf festlegen legacyund /etc/fstabzum Definieren verwenden.

Auf diese Weise können Sie die Reihenfolge definieren, in der sie bereitgestellt werden.

Bearbeiten: Ich habe gerade bemerkt, dass Sie bereits über den Legacy-Ansatz nachgedacht haben. Es könnte jedoch der einzige sein.

jlliagre
quelle
1

Innerhalb desselben Pools bestimmt die Zusammensetzung der Mount-Pfade die Mount-Reihenfolge. Innerhalb eines Pools sortiert Zfs die zu mountenden Dateisysteme nach ihren jeweiligen Mountpunktpfaden, wodurch die richtige Mountreihenfolge garantiert wird.

Wenn zwei oder mehr Pools beteiligt sind, gibt es keine ähnliche Möglichkeit, die Mount-Reihenfolge zwischen den Pools automatisch festzulegen.

Mit anderen Worten, Zfs verfügt über einen integrierten Mechanismus, der sicherstellt, dass bei jeder Mount-Point-Komposition die fs-s in der richtigen Reihenfolge bereitgestellt werden. Es gibt jedoch keine ähnliche Möglichkeit, diese Garantie zu übernehmen, wenn mehrere Pools beteiligt sind.

Wenn Pool2 über ein Dateisystem verfügt, das so eingerichtet ist, dass es auf einem Bereitstellungspunkt bereitgestellt wird, der durch das erstmalige Bereitstellen eines fs in pool1 verfügbar gemacht wird, muss der Administrator sicherstellen, dass pool1 tatsächlich zuerst bereitgestellt wird. ZB: Es muss ein Skript erstellt werden. Die Antwort lautet also "Erwarten Sie nicht, dass sich das von selbst regelt".

Gonzo
quelle
0

Vielleicht könnte die Verwendung von Root unter ZFS helfen.

Ich verwende ZFS unter FreeBSD mit zwei Pools und verschachtelten Mountpunkten. Der erste Pool (ssd) ist der Pool, in dem sich das Root-Dateisystem befindet, wie auch die meisten anderen Dateisysteme. Der zweite Pool (HDD) wird für Dateisysteme mit großen Datenmengen verwendet, die an bestimmten Speicherorten bereitgestellt werden.

Ich glaube, aufgrund des Root-Dateisystems werden alle Dateisysteme aus dem SSD-Pool zuerst und die Dateisysteme aus dem HDD-Pool an zweiter Stelle gemountet.

Ich hatte noch nie Probleme mit diesem Setup. Dies ist jedoch ein Produktionsserver, und ich starte ihn nicht zu oft neu.

Marián Černý
quelle