zpool import von mehreren Rechnern kritisch?

berni51

Open-Net-FreeBSD user
Nur eine kurze Frage zum import von zpools:
Ich hab mehrere externe NAS-Laufwerke mit zfs. Normalerweise verwaltet ein Rechner all diese Laufwerke in seinem Pool.
Jetzt möchte ich einen zweiten Rechner ins Netz stellen, der redundant die NAS-Laufwerke verwalten kann. Die Konfiguration ist dafür auf beiden Rechnern identisch, auch die pool Namen und mountpoints.
Ist es unkritisch, bei Bedarf sozusagen umschalten zu können und die NAS-Laufwerke so zu importierenm, wie ichs gerade brauch? Oder ändert jeder import/export etwas an der internen Verwaltung von zfs?
Möcht ich jetzt gerade nicht einfach ausprobieren, die Speicher sind ordentlich voll. Und ein Restore vom Backup ist ja auch nicht so lustig.

Oder kann ich bei identischer Konfiguration quasi auf den import verzichten?

Berni
 
Ja, das ist unkritisch. zpool import ist im weiteren Sinne sogar genau dafür gemacht. Das ein (irgendwo zentral gespeicherter) Pool genau einem System zugeordnet ist und sich nicht mehrere Systeme in die Haare bekommen. Aus Erfahrung gesagt würde ich das Umschalten von System A auf System B aber manuell machen, denn das wirklich sicher so zu verscripten, dass ein automatisches Umschalten auch unter unschönen Bedingungen wie einem harten Crash eines der Systeme funktioniert, ist schwer und viele potentielle Probleme.
 
Du solltest vor dem Import auf jeden Fall sicher gehen, dass der Pool vorher vom anderen System sauber exportiert wurde - wenn das nicht der Fall ist, also z.B Host A den Pool noch in Verwendung hat, du den Pool aber währenddessen auf Host B importierst (das funktioniert nur mit -force!) - dann knallt's. Und zwar gewaltig. Dann brauchst du definitiv dein Backup.
 
Ich danke euch! Diese "Umschaltung" von Host A auf Host B wird ausschliesslich manuell erfolgen, sind ja auch nicht soo viele Schritte.

Aber nochmal zum export: Wenn ich Host A einfach vom Netz nehme, dann Host B starte und die pools importiere - ist auch dann vorher ein export nötig?
 
Aber nochmal zum export: Wenn ich Host A einfach vom Netz nehme, dann Host B starte und die pools importiere - ist auch dann vorher ein export nötig?
Jein :) Es ist immer besser, wenn der Pool sauber exportiert wurde. Zwingend notwendig ist es aber nicht, solange der Pool nur auf einem aktiven System importiert ist. Wobei ich mir ziemlich sicher bin, dass es bei OpenZFS nur einen aktiven Import geben kann. Ohne es jetzt ausprobiert zu haben.
 
Ich sag mal so: wenn auf dem einen Rechner plötzlich das MB abraucht, hast du ja keine andere Wahl. Du kannst ja nicht mal vorsorglich vorher einen Export durchführen.
Das ist mir selbst mehrfach passiert und machte niemals Probleme, also der geforcete Import war kein Problem.

Ein wenig anders, aber so in der Mitte zwischen den Fragen, liegt mein System auf dem USB-Stick.
OK, das würde ich vielleicht heute nicht mehr so machen, aber damals, als ich meinen Fileserver zusammen baute, konnte FreeBSD noch nicht von ZFS booten und aus diversen Gründen installierte ich das System auf einen USB-Stick und die Daten liegen auf dem ZFS-Pool auf mehreren Platten. Der USB-Stick wird durch verschiedene Maßnahmen zusätzlich geschützt, so dass darauf im Betrieb kaum zugegriffen und fast gar nicht geschrieben wird.
Trotzdem sterben die ja manchmal und deshalb habe ich mehrere Klone im Rechner liegen und tausche die dann regelmäßig im Laufe einer Wartung aus.
Das ist quasi das gleiche System, von einem anderen Stick und das schluckt den Pool sofort, weil es ja der gleiche Pool ist. Ich brauche dann vorher nicht zu exportieren und nicht eigens zu importieren.

Ich könnte mir vorstellen, dass dies für deine Konfiguration ganz ähnlich sein könnte. Also je nachdem, wie du die externen Pools überhaupt importierst.

Vorher exportieren ist sicher immer gut, aber es gibt genug Situationen, wo das eben nicht möglich ist. Deshalb gibt es das force zum Importieren.
 
Aber nochmal zum export: Wenn ich Host A einfach vom Netz nehme, dann Host B starte und die pools importiere - ist auch dann vorher ein export nötig?

Ich würde sagen ja - ein Export ist auch dann notwendig. Denn was passiert, wenn Host A wieder ans Netz kommt, und den Pool ja nach wie vor importiert hat?

Du kannst es aber einfach probieren - ein zpool kann auch in einem simplen File erstellt werden - minimale Größe ist glaub ich 100 MB, wenn ich mich nicht irre. Also so in die Richtung:
Code:
dd if=/dev/zero of=/testpool bs=1024k count=100
zpool create testpool /testpool
Das File dann via NFS für den zweiten Host freigeben, dort auch importieren, und ein wenig damit herumspielen.
Vorsicht: Der Import auf beiden Hosts geht soweit erst mal gut... wenn du den Pool aber dann auf einem der Hosts exportierst, dann knallt's. Zumindest unter Solaris ist das so, ich gehe davon aus, dass das unter OpenZFS nicht anders ist (sofern sich der Pool von einem zweiten Host zeitgleich importieren lässt - mit force sollte das funktionieren).
 
Danke für eure Informationen.
Ob OpenZFS tatsächlich nur einen aktiven Import zulässt, werde ich heute abend am Versuchsaufbau und wie von @pooltechniker beschrieben, testen.

Mein Konzept ist ja dem von @pit234a sehr ähnlich, nur dass ich anstelle mehrerer Sticks zwei kleine Cubes mit Celerons nehme. Die wiederum booten von sticks, die untereinander austauschbar und mehrfach vorhanden sind.

ZFS ist einfach klasse!
Hab gerade einen schönen Vergleich mit einem Qnap NAS. Das hat ja ein eigenes kleines Mini-Linux und kann eigentlich unglaublich viel - was mit einem gigantischen Konfigurationsaufwand verbunden ist. Dagegen ist das Anpassen von FreeBSD mit den Änderungen in rc.conf, nginx.conf, proftpd.conf, exports und .cadaverrc/.netrc wirklich ein Kinderspiel.
Dazu ist das Qnap bei Anwendung eines RAID wackelig und verliert oft einfach die Netzwerkverbindung. Schätze, dass der kleine Linux-Rechner dadrin ganz schön überlastet ist.
Wenn die Kiste ohne RAID/Mirror arbeiten darf, klappt das dagegen sehr gut, aber dann ist es eigentlich kein NAS mehr.

Berni
 
Zurück
Oben