• Pool verkleinern

    From Kai Richter@2:240/77 to Alle on Sun Jan 11 15:15:52 2026
    Hallo Echo!

    Ich habe ein selbstgemachtes Home NAS von Debian auf FreeBSD 15 migriert. Unter Linux lief eine 250GB boot Platte mit zwei Daten Platten unter LVM.

    Vermutlich wegen BIOS trouble (Installer konnte nicht von 512GB USB Sticks booten) und weil ich mich mit EFI Boot insbesondere bei FreeBSD nicht auskenne, habe ich eine "normale" Installtion mit dem Installer einer neuen 4TB Platte gemacht.

    Die habe ich bestimmt gut ein Dutzend mal wiederholt, weil es mir nicht gelungen ist eine kleine ZFS Partition anzulegen. Die "AUTO" Funktionen des Installers reissen die komplette Platte an sich, selbst wenn ich die Partitionierung vorher richtig angelegt habe.

    Ursprünglich wollte ich ein raidz1 auf einer HDD aufbauen. Auf Grund der ZFS Pool Management Einschränkungen (im Vergleich zu LVM) habe ich dazu vier Paritionen anlegen wollen, die ich dann schrittweise durch echte HDD ersetzt hätte, soweit ich die Daten aus dem LVM verschoben hätte.

    Weil das nicht ging, habe ich mich notgedrungen wenigstens für einen mirror entschieden, weil man diesen mit einem ZFS Pool anfangen kann und den Mirror nachträglich hinzufügen kann.

    Damit ich auch das System einfach mit in den Mirror bekomme, habe ich mich für ZFS-on-root entschieden. Ich könnte den Mirror einfach attachen, nur leider hat die Bootplatte 4TB und die vorhandenen Platten haben jeweils 3TB.

    Einen neuen Pool einrichten und die Datasets mit zfs send|receive rüberschieben bekomme ich hin, aber das allein dürfte für legacy boot wohl nicht reichen.

    Lange Rede, kurze Frage: Wie bekomme ich die 3TB ohne Installer bootfähig mit ZFS-on-root?

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Attention visitor, speed limit on this planet: mach 5 (2:240/77)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Mon Jan 12 07:34:08 2026
    Am 11 Jan 26 15:15:52 schrob Kai Richter an Alle zum Thema
    <Pool verkleinern>

    Lange Rede, kurze Frage: Wie bekomme ich die 3TB ohne Installer
    bootfaehig mit ZFS-on-root?

    zpool set bootfs auf das zu bootende Filesystem setzen, falls d send/receive das nicht mitgenommen hat, gpart bootcode fuer den loader aufrufen und /boot/loader.conf anpassen, wenn Du den neuen Pool nicht umbenennst.
    Genauer steht's hier: https://it-notes.dragas.net/2024/09/16/moving-freebsd-installation-new-host-vm/

    Ich wuerde den Bootloder installieren, beim bisherigen Pool das bootfs entfernen und dann beide Pools mit dem export-Kommando umbenennen, so dass der neue so heisst wie frueher der alte.


    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Mon Jan 12 18:53:30 2026
    Hello Kai!

    11 Jan 26 15:15, Kai Richter wrote to Alle:

    Lange Rede, kurze Frage: Wie bekomme ich die 3TB ohne Installer
    bootfähig mit ZFS-on-root?

    Ich weiß, daß Dir das jetzt keine Hilfe ist, aber trotzdem danke für die Bestätigung meiner bisherigen Vorgehensweise, root lieber auf UFS zu installieren und von diesem ganzen root-on-zfs Krams lieber genauso die Finger zu lassen wie von der automatischen Partitionierung des Installers. Ich habe ja noch nicht einmal die Problemstellung nachvollziehen können...


    Regards,
    Gerrit

    ... 6:53PM up 402 days, 2 hrs, 9 users, load averages: 0.54, 0.44, 0.48

    --- msged/fbsd 6.3 2021-12-02
    * Origin: So come and try to tell me (2:240/12)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Tue Jan 13 15:28:18 2026
    Hallo Gerhard!

    Am 12 Jan 26, Gerhard Strangar schrieb an Kai Richter:

    Lange Rede, kurze Frage: Wie bekomme ich die 3TB ohne Installer
    bootfaehig mit ZFS-on-root?

    gpart bootcode fuer den loader aufrufen

    Das war der Part den ich übersehen habe, Danke.

    Ich wuerde den Bootloder installieren, beim bisherigen Pool das
    bootfs entfernen und dann beide Pools mit dem export-Kommando
    umbenennen, so dass der neue so heisst wie frueher der alte.

    Hm, es soll doch ein Mirror bootfähig werden. Da müsste der Pool Name doch identisch sein? Ach halt, die Anleitung ging ja von system duplication aus.

    Ich werde das bei Gelegenheit mal in der VM durchspielen.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Stirb jung! Am Besten vor der Pupertaet. (2:240/77)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Wed Jan 14 06:44:15 2026
    Am 13 Jan 26 15:28:18 schrob Kai Richter an Gerhard Strangar zum Thema
    <Pool verkleinern>

    Hm, es soll doch ein Mirror bootfaehig werden. Da muesste der Pool Name doch identisch sein?

    Ich dachte, Du wolltest von pool1 mit 2*4 TB auf pool2 mit 2*3 TB wechseln, Aber zpool create wird sich weigern, den neuen Pool so zu nennen, wie den bereits importieren. Und selbst wenn nicht, spaetestens zfs send und receive mit zwei gleichnamigen Pools duerfte unnoetig umstaendlich sein, falls es ueberhaupt geht.



    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Thu Jan 15 00:37:08 2026
    Tach Gerhard!

    Am 12 Jan 26, Gerhard Strangar schrieb an Kai Richter:

    Ich wuerde den Bootloder installieren, beim bisherigen Pool das bootfs entfernen und dann beide Pools mit dem export-Kommando umbenennen, so
    dass der neue so heisst wie frueher der alte.

    Ich bekomme es in einer VM nicht hin. Mir fällt schon mal auf, das ein
    "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem mbr in
    /boot/ gleicht.

    Und ich bekomme es nicht hin von der installer shell oder der live-cd den zpool schreibend zu mounten. Der Installer hat auch nicht wie in allen Dokus zu finden vfs.root.mountfrom in der loader.conf eingefügt.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Ihr... Ihr... Boah, ihr Praktiker ey! (2:240/77)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Mon Jan 19 08:54:38 2026
    Hallo Gerhard!

    Am 14 Jan 26, Gerhard Strangar schrieb an Kai Richter:

    Hm, es soll doch ein Mirror bootfaehig werden. Da muesste der Pool
    Name doch identisch sein?

    Ich dachte, Du wolltest von pool1 mit 2*4 TB auf pool2 mit 2*3 TB wechseln, Aber zpool create wird sich weigern, den neuen Pool so zu nennen, wie den bereits importieren. Und selbst wenn nicht,
    spaetestens zfs send und receive mit zwei gleichnamigen Pools duerfte unnoetig umstaendlich sein, falls es ueberhaupt geht.

    Geht nicht, habs probiert. Sogar ein pool copy geht nicht. Ich hatte zuerst mit syncoid (sanoid) ein pool/pool copy versucht, aber soweit ich mich jetzt eingelesen habe, kann dass verwendete zfs send|receive kein overwrite.

    Wenn man näher drüber nachdenkt, dann wird das sogar ganz logisch, weil ZFS ein copy on write System ist. Schaut man auf die zfs send arguments, dann kann das nur snapshots übertragen.

    Ohne destination pool gibt es kein Ziel zum kopieren. Legt man den destination pool an, kann man ihn nicht überschreiben und damit gibt es zwei unterschiedliche Ausgangspunkte, womit ein snapshot nicht an den gleichen Ausgangspunkten ansetzen kann und folglich nicht funktionieren wird.

    Die Lösung ist eigentlich einfach. Wenn man den pool nicht überschreiben kann, dann muss er neu kopiert werden, an einem Ort an dem er noch nicht existiert. Man legt also ein neues leeres dataset an und schon kann man einen pool dort hinein kopieren (syncoid -r pool1 pool2/inbound).

    Im zweiten Schritt schiebt man einfach die datasets ein Verzeichnis höher. Das geht dann mit zfs rename. In der Folge besteht dann das dataset am richtigen Platz und könnte dann mit weiteren zfs send|receive oder syncoid aktuell gehalten werden.

    Das ist zumindest mein Teilerfolg des Wochenendes. Sobald der neue pool jedoch allein System steht, bootet er nicht. Vermutlich habe ich irgendwo einen Zwischenschritt übersehen oder vergessen.

    Hilfreich war das arch-handbook/boot 1.2, weil dort screenshots der boot stages zu sehen sind. Es hängt jetzt im boot2 und der nächste Schritt wäre den loader zu laden. Für den loader habe ich die Befehle gefunden, nur was der boot2 so kann ist mir nicht ersichtlich.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Es heisst Schlafittchen, hat nix mit Schnee zu tun. (2:240/77)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Thu Jan 15 06:39:24 2026
    Am 15 Jan 26 00:37:08 schrob Kai Richter an Gerhard Strangar zum Thema
    <Pool verkleinern>

    Ich bekomme es in einer VM nicht hin. Mir faellt schon mal auf, das ein
    "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem mbr in
    /boot/ gleicht.

    Wenn Du den Bootloader suchst, dann vermutlich in /dev/da0p1, mach mal gpart show.

    Und ich bekomme es nicht hin von der installer shell oder der live-cd
    den zpool schreibend zu mounten. Der Installer hat auch nicht wie in
    allen Dokus zu finden vfs.root.mountfrom in der loader.conf eingefuegt.

    zfs set readonly=off pool/filesystem?



    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Thu Jan 15 20:32:03 2026
    Hello Kai!

    15 Jan 26 00:37, Kai Richter wrote to Gerhard Strangar:


    Ich bekomme es in einer VM nicht hin. Mir fällt schon mal auf, das
    ein
    "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem mbr in
    /boot/ gleicht.

    Es ist 2026, und Du installierst einen MBR von ca. 1983, seriously?


    Regards,
    Gerrit

    ... 8:32PM up 405 days, 3:39, 9 users, load averages: 0.82, 0.72, 0.58

    --- msged/fbsd 6.3 2021-12-02
    * Origin: Ideas of lust and dying (2:240/12)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Wed Jan 21 16:07:18 2026
    Hallo Gerhard!

    Am 15 Jan 26, Gerhard Strangar schrieb an Kai Richter:

    Ich bekomme es in einer VM nicht hin. Mir faellt schon mal auf,
    das ein "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem
    mbr in /boot/ gleicht.

    Wenn Du den Bootloader suchst, dann vermutlich in /dev/da0p1, mach mal gpart show.

    Ich wollte wissen welchen MBR und welchen Bootloader der Installer benutzt, um genau denselben händisch zu installieren. Bootloader auf GPT und ZFS on Root sollte gptzfsboot sein, soweit bin ich schon. Befehlszeile um den protected mbr und loader zu installieren habe ich auch, in der boot2 stage sollte der dann hier liegen:

    zfs:tank/ROOT/default:/boot/gptzfsboot
    invalid format

    Hm. Syntax sollte eigentlich passen:

    [zfs:pool/filesystem:][/path/to/loader]

    boot2 Fehler lautet: can't find /boot/zfsloader

    Habe eben nochmal auf meinem 14rel Server nachgesehen, beide Dateien sind vorhanden. Grübel... Vor die Stirn Patsch, Wald vor Bäumen... Natürlich...

    Ich habe boot und loader verwechselt. Wenn man von gpt zfs booten will, dann klingt gptzfsboot ja irgendwie passend. Aber gptzfsboot ist das Image welches in die freebsd-boot Partition geschrieben wird und gehört zur boot2 stage.

    Die boot2 stage lädt dann den loader, welcher im ZFS Pool liegt; und dieser heisst dann bei ZFS auch zfsloader.

    Der korrekte Befehl für die boot2 stage lautet nach der Syntax:

    zfs:tank/ROOT/default:/boot/zfsloader

    Yeah, es fluppt! Der kopierte Pool bootet.

    Und ich bekomme es nicht hin von der installer shell oder der
    live-cd den zpool schreibend zu mounten.

    zfs set readonly=off pool/filesystem?

    Ich hatte noch nicht mal den pool ro sichtbar in / bekommen. zpool import hat den zwar geholt, aber keinen mount ausgeführt. Im live-cd System ist auch / ro. Und darin enthalten auch /mnt. Um da nicht weiter rumzufrickeln und mir "mount" gezeigt hat das /tmp als tmpfs eingerichtet ist, habe kurzerhand mkdir /tmp/pool angelegt und dann konnte ich mit "zpool import -R /tmp/root tank" auch den Pool voll rw mounten. Damit gibt es auch Zugriff auf bootfs= und mit

    zpool set bootfs=/tank/ROOT/default tank

    bootet die VM jetzt klaglos durch als wäre sie schon immer von der zweiten Platte gelaufen. Jetzt könnte ich glatt die Platte per remote ssh austauschen. Hm, nee, lieber doch nicht. ;)

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Chamber's empty, time to reload. (2:240/77)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Wed Jan 21 17:59:20 2026
    Grüß Dich, Gerrit!

    Am 15 Jan 26, Gerrit Kuehn schrieb an Kai Richter:

    Ich bekomme es in einer VM nicht hin. Mir fällt schon mal auf,
    das ein "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem
    mbr in /boot/ gleicht.

    Es ist 2026, und Du installierst einen MBR von ca. 1983, seriously?

    a) war das der Installer und ich habe nur ausgelesen (if=) und
    b) warum nicht, ich benutze ja auch ein Betriebssystem von ca. 1993.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Dein Unsinn ist meine Vernunft. (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Thu Jan 22 20:51:36 2026
    Hello Kai!

    21 Jan 26 17:59, Kai Richter wrote to Gerrit Kuehn:

    Ich bekomme es in einer VM nicht hin. Mir fällt schon mal auf,
    das ein "dd if=/dev/da0 bs=512 count=1 of=my-mbr" sich mit keinem
    mbr in /boot/ gleicht.

    Es ist 2026, und Du installierst einen MBR von ca. 1983, seriously?

    a) war das der Installer und ich habe nur ausgelesen (if=) und
    b) warum nicht, ich benutze ja auch ein Betriebssystem von ca. 1993.

    Wenn Du meinst.


    Regards,
    Gerrit

    ... 8:51PM up 412 days, 3:58, 9 users, load averages: 0.63, 0.45, 0.43

    --- msged/fbsd 6.3 2021-12-02
    * Origin: Is serving every man (2:240/12)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Thu Jan 22 05:59:12 2026
    Am 19 Jan 26 08:54:38 schrob Kai Richter an Gerhard Strangar zum Thema
    <Pool verkleinern>

    Geht nicht, habs probiert. Sogar ein pool copy geht nicht.

    Wie soll das auch gehen? Du musst doch die Eigenschaften des Pools definieren. Und dann kopierst Du die Dateisysteme darin. Was das Tool macht, weiss ich nicht, aber ich wuerde jeweils einen snaposhot anlegen und dann zfs send -R dieser_snapshot |zfs receive neuerpool/dateisystem, mehr wird das Tool auch nicht machen.



    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)