![ZFS-Pool mit zwei abwechselnden Betriebssystemen nutzen](https://rvso.com/image/154469/ZFS-Pool%20mit%20zwei%20abwechselnden%20Betriebssystemen%20nutzen.png)
Ich wechsele von einer alten Ubuntu-Installation zu einer neuen. Während der Umstellung möchte ich denselben Pool des alten und des neuen Betriebssystems verwenden können.
Das neue Betriebssystem befindet sich auf einer anderen Festplatte. Ich wähle das Betriebssystem während des Bootvorgangs aus. Zu einem bestimmten Zeitpunkt wird immer nur ein Betriebssystem den Pool verwenden.
Ist das überhaupt möglich? Riskiere ich eine Datenbeschädigung oder den Verlust des gesamten Pools?
Antwort1
Solange der Pool beim Herunterfahren exportiert wird und immer nur von einem System gleichzeitig verwendet wird,was Sie besprechen, sollte unproblematisch sein.
ZFS wirklich, wirklich,Wirklichmag es nicht, wenn derselbe Pool von mehreren Systemen gleichzeitig verwendet wird, auch nicht im schreibgeschützten Modus ( -o readonly=on
gegeben an zpool import
), aber das scheint auf Ihre Situation nicht zuzutreffen.
Um die Kompatibilität zwischen den beiden Versionen zu gewährleisten, sollten Sie unbedingtnichtauszuführen zpool upgrade
oder zfs upgrade
insbesondere von der neueren Installation. Beides kann zu einem Verlust des Zugriffs auf den Pool oder das Dateisystem führen, wenn die ältere Installation ausgeführt wird, aber keines davon sollte zu einem Verlust des Pools oder des Dateisystems führen, wenn ein System ausgeführt wird, das die aktualisierte ZFS-On-Disk-Version unterstützt.
zpool upgrade
Wenn Sie mit dem Upgrade fertig sind, können Sie den Pool bei Bedarf mit und/oder auf das neueste Festplattenformat und die neuesten Funktionen aktualisieren zfs upgrade
.
Antwort2
Vorausgesetzt, Sie möchten den Pool als Datenspeicher verwenden und nicht das System-Root darin ausführen, ist alles in Ordnung.
Ich habe derzeit zwei Systeme installiert, eines auf einer EXT4-Partition und das andere in einem ZFS-Datensatz mit sudo zfs set mountpoint=/ tank/my/dataset
.
Der Zugriff auf diesen Pool vom EXT4-System aus ist mühsam, da zfs mount -a
das Mounten auf Root fehlschlagen würde. Hier sind also stattdessen drei Möglichkeiten.
Für beide Möglichkeiten müssen Sie den Pool importieren, ohne ihn automatisch zu mounten.
sudo zpool import tank -N
A) Ändern der Eigenschaft
sudo mkdir /mnt/mydataset
sudo zfs set mountpoint=/mnt/mydataset tank/my/dataset
sudo zfs mount tank/my/dataset
# [do stuff in /mnt/mydataset]
# ...
sudo zfs unmount tank/my/dataset
# restore mountpoint so that the other system is able to boot from it
sudo zfs set mountpoint=/ tank/my/dataset
B) Vermeidenzfs mount
Wenn Sie das Hin- und Hersetzen des Einhängepunkts lästig finden, funktioniert meiner Erfahrung nach auch Folgendes. Keine Garantie dafür, wie hackig das ist.
sudo mkdir /mnt/mydataset
sudo mount -t zfs -o zfsutil tank/my/dataset /mnt/mydataset
# [do stuff in /mnt/mydataset]
# ...
sudo umount /mnt/mydataset
Beachten Sie, dass ich einige Probleme hatte, als ich diese Option B) verwendete, um ein Chroot-System zu verwenden /mnt/mydataset
und dann die ZFS-Befehle des anderen Systems zu verwenden. Ich weiß nicht, ob diese Probleme zusammenhängen. Solange Sie nichts Ähnliches tun, sollte es aber kein Problem geben.
C) Altroot
altroot
Sie können die Eigenschaft am Pool angeben .
Altroot
Alternatives Stammverzeichnis. Wenn festgelegt, wird dieses Verzeichnis allen Einhängepunkten innerhalb des Pools vorangestellt. Dies kann verwendet werden, wenn ein unbekannter Pool untersucht wird, dessen Einhängepunkte nicht vertrauenswürdig sind, oder in einer alternativen Startumgebung, in der die typischen Pfade nicht gültig sind. ist
altroot
keine dauerhafte Eigenschaft. Sie ist nur gültig, während das System aktiv ist. Die Standardeinstellung für altroot ist using,cachefile = none
dies kann jedoch durch eine explizite Einstellung überschrieben werden.