• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

ZFS-rootpool mit altroot mounten ?

pit234a

Well-Known Member
Themenstarter #1
ich bin gerade dabei, ein FreeBSD zu installieren und habe offenbar etwas "verkonfiguriert", was nun dazu führt, dass mein System immer wieder restartet. Auch im Single-User-Mode passiert das.
Deshalb habe ich nun ein Live-System gebootet und will von dem aus die Konfigurationen auf meinem ZFS-Pool (sagen wir er heißt POOL) ändern, also hauptsächlich in den Bereichen unter /etc.

Wenn ich nun meinen Pool mit altroot importiere, erhalte ich nicht alle Datasets gemountet. Es fehlt zB POOL/var, was aber noch leer ist. Vorhanden sind indessen POOL/usr, POOL/usr/home, POOL/usr/ports usw. Mit Vorhanden meine ich, dass die Datasets jeweils auf MountPoint/usr, MountPoint/usr/home usw eingebunden sind und ich die enthaltenen Daten auch erreichen kann.
Was mir aber wichtig ist, wäre genau der Ursprung des Ganzen, also das, was wohl in dem Dataset POOL/ROOT/default liegt. Das ist nach zfs list auch richtig dem gewünschten MountPoint übergeben, aber es ist offenbar nicht gemountet und ich sehe keine MountPoint/etc, die ich mir ja wünschen würde.

Es gibt ein MountPoint/POOL, aber darin ist auch nichts, alles leer.

Nun hoffe ich, dass ich einfach etwas übersehen habe und nur irgendeinen Schalter umlegen muss, den ihr mir nennen könnt.
 

pit234a

Well-Known Member
Themenstarter #2
ich krieg es nicht hin.

Was ich nun versucht habe, ist das Zuweisen von gezielten Mountpoints für einzelne Datasets mit zfs set und anschließendem gezielten mounten dieser Datasets mit mount -t zfs...

Das funktioniert auch so weit, aber, was ich für das entscheidende Dataset gehalten hatte, nämlich POOL/ROOT/default enthält nicht meine geänderten Daten, sondern so etwas wie einen tatsächlichen Default. Es gibt also eine /etc/rc.conf, aber da steht quasi nichts drin, jedenfalls keine meiner Änderungen.

Die beiden nächsten Kandidaten waren dann POOL/ROOT und einfach nur POOL und diese zeigen nach einem gezielten mount jeweils leere Verzeichnisse.

Was mich hier besonders ärgert, ist der Umstand, dass das doch nahezu ein Standard-Problem sein müsste und dass ich einfach partout nichts gescheites darüber finden kann. Bei anderen Leuten scheint das auf Anhieb zu funktionieren und sie können ihren Fehler ausbügeln.

Ah, gerade geht es. Ich habe nach einem frischen import nochmal den POOL/ROOT/dafault "übergemountet" mit mount -t zfs und das bringt mir nun meine Dateien.
 

peterle

Forenkasper
#3
Besser verständlich ist deine Frage sicherlich, wenn Du uns zeigst, wie Du deinen Pool angelegt hast und wie das Zeug genau aussieht.

Code:
man zfs
... z.B. ist aus meiner Erinnerung heraus sehr ergiebig.
 

pit234a

Well-Known Member
Themenstarter #4
natürlich, ohne die man zfs und zpool und das aufgeblätterte Handbuch käme ich da gar nicht weiter. Dazu braucht man diese befehle ja als schnöder Endanwender zu selten.
Der Rechner läuft ja nun wieder und installiert gerade vor sich hin. Derzeitig sieht das so aus:
Code:
pit@Celsius:~ % zfs list
NAME  USED  AVAIL  REFER  MOUNTPOINT
PitPool  6,62G  119G  88K  /PitPool
PitPool/ROOT  5,99G  119G  88K  none
PitPool/ROOT/default  5,99G  119G  5,99G  /
PitPool/usr  646M  119G  88K  /usr
PitPool/usr/home  132K  119G  132K  /usr/home
PitPool/usr/ports  646M  119G  646M  /usr/ports
PitPool/usr/src  88K  119G  88K  /usr/src
PitPool/var  88K  119G  88K  /var
Das ist quasi ein vom System-Installer automatisch gebauter Pool, dem ich nur einen eigenen Namen gegeben habe und nachträglich einige Datasets entfernte, die ich nicht benötige.
In diesem Pool liegt /etc und dort wollte ich einen Fehler in einer oder mehreren Conf wieder gut machen. Man sieht, dass PitPool/ROOT/default auf / zu liegen kommt und das ist nun auch im laufenden System nicht anders.
Was ich dann versuchte, war aus dem Live-System (eine laufende memstick-image) ein neues Verzeichnis anlegen (unterhalb von /tmp, damit es beschreibbar sein kann) und danach den Pool importieren, etwa:
Code:
# zpool import -R /tmp/mnt PitPool
Das funktionierte auch, aber ohne alles unter / zu zeigen, was ich erwartet hatte. Es gab also kein /tmp/mnt/etc.
Ich experimentierte dann damit, den einzelnen Datasets neue mountpoints über zfs set zu geben und diese manuell über mount -t zfs dorthin einzubinden. Das sollte ebenfalls funktionieren, brachte aber das merkwürdige Ergebnis, dass es nun zwar ein /etc gab, darin aber nicht meine geänderten configs auftauchten.
Erst, nachdem ich den Pool wieder frisch importiert hatte und danach nochmal ein mount -t zfs PitPool/ROOT/default /tmp/mnt/a oder so machte (das Verzeichnis hatte ich zuvor mittels zfs set bereits geändert), erschienen meine gesuchten Dateien und ich konnte meine Fehler leicht beseitigen.