
Ich versuche zu verstehen, wie ZFS funktioniert, wenn ich beispielsweise einen Snapshot erstelle. Wenn ich die ZFS-Liste auf dem Computer verwende, erhalte ich einige Einhängepunkte und einige Pfade. Zum Beispiel erhalte ich so etwas:
rpool/ROOT/s10x_u10_wos_17b 5.3gb 58.2gb 5.3gb /
Ich bekomme als Einhängepunkt die Wurzel /
.
Mein erster Gedanke war, dass die eigentliche Datei vorhanden ist, aber als ich zum /rpool
Verzeichnis navigierte, gab es kein ROOT-Verzeichnis. Nach einigem Nachdenken sah ich, dass es /rpool/ROOT
tatsächlich auf Legacy gemountet ist, also muss es irgendwo anders sein.
Könnte jemand erklären, wo sich die Dateien befinden, wenn es im Legacy-Modus gemountet wird, und vielleicht auch, warum dieser Legacy-Modus verwendet wird?
Antwort1
Ich verstehe den Zweck des alten Einhängepunkts nicht.
ZFS bietet eine hierarchische Struktur von Datensätzen innerhalb eines Pools. In Ihrem Fall haben Sie einen Pool mit dem Namen rpool
und mindestens die folgenden Datensätze:
rpool
rpool/ROOT
rpool/ROOT/s10x_u10_wos_17b
Jeder dieser Datensätze ist häufig ein Dateisystem (es kann aber stattdessen auch ein Volume/Blockgerät sein).
Da es sich bei jedem dieser Datensätze wahrscheinlich um ein vollständiges/unabhängiges Dateisystem handelt, kann jeder auch unabhängig gemountet oder nicht gemountet sein.
Standardmäßig mountet ZFS untergeordnete Datasets an ihrem logischen Speicherort innerhalb des übergeordneten Datasets. Wenn das rpool
Dataset bei gemountet ist /rpool
(d. h. Standard), würden Sie feststellen, dass das rpool/ROOT
Dataset bei gemountet ist /rpool/ROOT
usw.
Dies wird durch die mountpoint
Eigenschaft gesteuert – führen Sie sie aus, zfs get -rt filesystem mountpoint
um den aktuellen Wert für jeden Datensatz anzuzeigen.
- Wenn der Wert ein Pfad ist, wird ZFS den Datensatz automatisch unter diesem Pfad mounten, wenn der Pool importiert wird. Die Standardeinstellung (wie oben erwähnt) besteht darin, das Dateisystem unter dem übergeordneten Pfad zu mounten.
- Wenn der Wert ist
none
, wird ZFS das Dateisystem nicht mounten und das Dateisystemkann nichtkann mit beiden montiert werdenmount
. - Wenn der Wert ist
legacy
, mountet ZFS das Dateisystem nicht, Sie können abermount
und verwendenumount
, um den Mountpunkt des Dateisystems manuell zu verwalten. Sie können auch verwenden,/etc/fstab
um das automatische Mounten zu steuern.
In Ihrer Situation rpool/ROOT/s10x_u10_wos_17b
ist der Datensatz hier gemountet /
(d. h. es ist Ihr Root-Dateisystem). Um dies zu erreichen, können Sie es entweder festlegen mountpoint=/
und ZFS die Dinge erledigen lassen oder mountpoint=legacy
es explizit festlegen und mounten.
Da es sich hierbei um Ihr Root-Dateisystem handelt, ist die Verwaltung durch ZFS keine wirkliche Option und Sie müssen den Einhängepunkt explizit angeben.
Daher rpool/ROOT/s10x_u10_wos_17b
hat mountpoint=legacy
.
Antwort2
Der Legacy-Mountpoint wird normalerweise verwendet, wenn die Dateisysteme mithilfe von gemountet werden fstab
.
Aus der FreeBSD-Handbuchseite:
Bei Bedarf können ZFS-Dateisysteme auch mit herkömmlichen Tools (mount(8), umount(8), fstab(5)) verwaltet werden. Wenn der Einhängepunkt eines Dateisystems auf „Legacy“ gesetzt ist, unternimmt ZFS keinen Versuch, das Dateisystem zu verwalten, und der Administrator ist für das Einhängen und Uneinhängen des Dateisystems verantwortlich.