ZFS-Pool mit zwei abwechselnden Betriebssystemen nutzen

ZFS-Pool mit zwei abwechselnden Betriebssystemen nutzen

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=ongegeben 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 upgradeoder zfs upgradeinsbesondere 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 upgradeWenn 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 -adas 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/mydatasetund 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

altrootSie 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
altrootkeine dauerhafte Eigenschaft. Sie ist nur gültig, während das System aktiv ist. Die Standardeinstellung für altroot ist using, cachefile = nonedies kann jedoch durch eine explizite Einstellung überschrieben werden.

verwandte Informationen