Root auf zfs umstellen

friedel

Member
Hallo,

ich habe ein altes FreeBSD-10.3 System, mit GPT und ufs, das ich gerne auf zfs umstellen würde.
Die Einrichtung erfolgte mit dem Installer per Auto-Partitionierung. Somit liegen in ada0:
p1 freebsd-boot
p2 freebsd-ufs /
p3 freebsd-swap

Es gibt genug freien Speicher, um root aufzunehmen, weshalb ich folgendes probierte:

Code:
gpart add -t freebsd-ufs -i 99 -s [ROOT-SIZE] ada0 
init 1
dump -D /dev/null -0auf /dev/ada0p99 /dev/ada0p2
gpart set -a bootonce -i 99 ada0

Ziel war, eine Kopie zu ziehen, und von dieser dann zu booten. Diese Partition (p99) wollte ich dann einige Zeit testen, und das alte root (p2), wenn alles gut geht, löschen und zu zfs wandeln um dann p99 wieder nach p2 zu kopieren.

Das Problem ist, dass der dump schon nicht funkitioniert! Ich hatte mir eingebildet, dass man auch auf devices dumpen kann, aber auch mit vorherigem newfs auf p99 geht nichts.

Was geht, ist der dump in ein file (root.dump) und ein restore auf p99. Booten lässt sich diese Partition aber trotzdem nicht.
Ich habe testweise ein zweites FreeBSD installiert (p4 boot / p5 root) wobei komischerweise
Code:
gpart set -a bootonce -i 4 ada0
nicht funktioniert. Stattdessen muss ich p5 angeben, dann kann ich in das zweite System booten.

Gibt es eine Möglichkeit, den bootloader (p1) eine andere Partition booten zu lassen, oder brauche ich dafür zwangsläufig eine zweite/neue freebsd-boot?

Ein zweite Möglichkeit, die ich erwogen habe, war /usr und /etc zu dumpen, dann eine Neuinstallation und restore der alten /usr und /etc ins neue zfs System.

Das Problem ist, dass das Booten mit einem Installtionsmedium nicht ganz einfach ist. Daher wollte ich gerne das laufende System verschieben.

Bin für jeden Tip dankbar

Fn
 
Willst du das Alles auf einer einzigen Platte veranstalten?
Mein gut gemeinter Tipp: nimm (mindestens) eine weitere Festplatte dazu und mach externe Backups vorher.

Was genau erwartest du dir denn vom ZFS? Auf einer einzelnen Platte sind die Vorteile etwas eingeschränkt.
 
Hallo Rakor,

danke für Deine Antwort.

Ich erwarte mir einen Geschwindigkeitsgewinn.
Wie Du von, "auf der Platte ist genug Platz, um root zu kopieren" auf "nimm (mindestens) eine weitere Platte dazu" kommst, ist mir nicht ganz klar.

Genug Platz kann ich auch noch weiter präzisieren: Es gibt mehr nicht allozierten Speicher, als insgesamt vom OS belegt wird. Die Frage nach einer weiteren Platte stellt sich damit für mich nicht.

Gruss

Fn
 
Ok, dann lass mich ausholen.
Was du vor hast birgt ein sehr hohes Risiko deine Daten zu verlieren. Daher möchte ich davon abraten. Ein Backup zu haben (auf einer losgelösten Platte) ist hier sowieso Pflicht. Alles andere ist fahrlässig, oder die Daten sind unwichtig. In zweitem Falle würde ich einfach neu aufsetzen.

Wenn du nun eine "alte" Platte (also die im Rechner) und eine "neue" Platte (eine auf die du das System umziehen willst) hast ist das etwas weniger komplex. Und Platten hat man ja iA heute ja rumliegen oder kosten nicht die Welt.

Dann solltest du dich mal etwas informieren ob deine Ziele möglich sind. Ich lese irgendwie, dass du nur eine Platte hast. In dem Setup wird dir ZFS keine Geschwindigkeitsvorteile bringen. ZFS ist komplex und grundsätzlich ressourcenhungrig. Auf entsprechend potenter Hardware mit mehreren Platten kann es aber einige sehr nette Vorteile bringen.

Auf nur einer Platte hast du mehr Overhead als auf UFS. Du erhältst Vorteile wie Snapshots. Aber den eigentlich "heißen Scheiss" von ZFS wirst du nicht sehen können. Wenn es sich nicht um ein Notebook handelt denk über mindestens zwei Platten als Mirror nach, dazu ggf noch ne schnelle SSD als ZIL und du wirst Spaß haben (wenn dein Rechner genug Bums hat).
 
lz4 Komprimierung sollte auch bei nur einem Massenspeichermedium mit ZFS gehen. Bei langsamen Massenspeicher wie Festplatten und heutzutage meist schneller CPU sollte das eigentlich dann schon mal Vorteile bringen. Zu wenig RAM sollte es aber nicht haben, der ARC mag gerne RAM und bedient sich dann auch.

FreeBSD Handbook, Abschnitt 19.4.10. Compression: https://www.freebsd.org/doc/handbook/zfs-zfs.html
 
Hallo Rakor,

danke für Deinen Input, aber ich fürchte, wir reden aneinander vorbei. Wenn ich Dir erkläre, dass ich keine zweite Platte einzubauen gedenkte, konterst Du mit "besser noch eine dritte"?

Ich habe hier leider keine ungenutzte und zuverlässig funktionierende Festplatte rumliegen - die müsste ich extra anschaffen und das fertig konfigurierte System genügt, so wie es im Moment ist, den Ansprüchen. Die Frage ist, ob ein Wechsel von ufs auf zfs einen Vorteil bringt, und wie der zu bewerkstelligen ist.

Ich bin sicher nicht der erste, der sich diese Frage stellt! Bei einem anderen Hersteller gab es so ein Programm, das hiess convert.exe ( https://technet.microsoft.com/en-us/library/bb456984.aspx ) ;-)

Was ist mit dem dump Befehl? Was mache ich da falsch? Ich habe auch versucht, als -f ile "-" zu nehmen und dump zu restore zu pipen, was aber zu einer broken pipe führte.

Im singel user is / ro. Kann ich dann sicher dd'en? Und wie kann ich mein ge-dd'es, oder ge-dump'es root booten? Was ist mit boot0 passiert? Früher konnte der mehrere verschiedene OS booten. Was ist mit anderen Bootloadern? Lilo finde ich nicht mehr, auf grub wird in den ports immer wieder als broken hingewiesen und wenn ich auf einem nackten Basis-System grub über pkg installieren will, kommt der Hinweis, dass zusätzliche 630MB benötigt werden. Mehr als das komplette Basis-System, für den Bootloader?

Gruss

Fn
 
Hallo,
Bin für jeden Tip dankbar
Die Frage ist, ob ein Wechsel von ufs auf zfs einen Vorteil bringt,
Vorteile bekommst du im Bereich Snapshots, Jail Management, Backup und Restore.
... und wie der zu bewerkstelligen ist.
Ich würde nicht lange rumbasteln und zuerst mal ein Backup machen. Danach kannst du mit PKG alle installierten Pakete rausziehen. Das System komplett platt machen und mit ZFS neu installieren. Danach die Liste der Pakete wieder ins System einspielen und $HOME zurückkopieren. Die Befehle dazu findest du in diesem Posting [1].

Gruss

[1] https://www.bsdforen.de/threads/libreoffice-5-3-3_1.33547/#post-292031
 
Die FreeBSD Werkzeuge dump und restore für UFS arbeiten auf Blockdevice Ebene, dürften dann wohl eher nicht dafür gedacht sein, Daten von einem Dateisystem (UFS2) auf ein Dateisystem anderer Art (ZFS) zu übertragen. ZFS hat ja ebenfalls seine eigenen Backup Werkzeuge send und receive.
 
Machs, wie @foxit sagt. Ist am einfachsten.

Wenn du wirklich am offenen Herzen operieren willst:
Code:
gpart add -t freebsd-zfs -i 99 -s [ROOT-SIZE] ada0
zpool create zroot ada0p99
zfs create -p zroot/ROOT/default
zpool set bootfs=zroot/ROOT/default
zfs mount -o mountpoint=/newroot zroot/ROOT/default
Die Kommandos habe ich jetzt aus dem Kopf getippt, irgendwas hab ich bestimmt wieder vergessen oder falsch im Kopf. Also nicht blind abtippen! Ggf. willst du noch weitere Datasets für home, var, etc. anlegen. Dann dein System mit rsync kopieren.

Als letztes musst du noch Stage2 des Bootloaders austauschen. Aktuell müsste in ada0p1 /boot/gptboot installiert sein, du brauchst aber /boot/gptzfsboot:
Code:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

Natürlich kannst du dann dein UFS System nicht mehr starten, ohne den Bootloader wieder zu ändern. Also solltest du ein USB-Stick/CD mit einem Installer parat haben, falls etwas schief geht.
 
restore(8) kann auch auf ZFS wiederherstellen. Unter der Bedingung, dass auf dem Quelldateisystem keine Posix-ACL genutzt wurden. Wenn man nachlesen muss, was Posix-ACL sind, benutzt man sie auch nicht. ;)
 
Kleine Frage (Da ich einen neuen Laptop habe der endlich von UEFI bootet und das auch mich sehr interessiert): Wenn man von der CD in den livecd Mode bootet ist / ro. Wenn man ein zfs auf einer Platte erstellt, (aus dem Kopf getippt)
Code:
zpool create zroot /dev/ada0p5
kann /zroot nicht angelegt werden. In älteren Anleitungen wird auf fixit verwiesen. Kann man ein overlayfs im ram mit mdconfig erstellen damit / rw wird? Ich hab dann versucht mit mdconfig ein tmpfs zu erstellen und dann dort zroot erstellt. Nur die ganzen Mounts wollen alle /zroot haben. Gibt es hier einen Workaround? Wie macht der Installer das?
 
@schorsch_76:
Code:
zpool create -R /tmp/tmpzroot zroot /dev/ada0p5

Damit setzt du das "altroot" Property, welches temporär den Mountpoint für den zpool ändert. Beim nächsten Mount des zpools wird dann nach /zroot gemountet.
 
Ich fürchte, ich habe mich missverständlich ausgedrückt. Mein Plan war, das bestehende System quasi zu spiegeln und dann vor dem Bootloader den altbekannten boot0 Screen zu bekommen, mit

F1: alt OS
F2: neu OS

Aber ich fürchte, ich habe da von Anfang an einen Denkfehler gehabt. boot0 funktioniert gar nicht mit gpt, oder?
Gibt es eine andere Möglichkeit? Grub2 installiert gleich die binutils und gcc mit, das finde ich nicht so geschmeidig, und lilo gibt es anscheinend gar nicht mehr?

Gruss

Fn
 
Du denkst viel zu kompliziert. Ich würde:
  • Wenn möglich die Festplatte komplett leer räumen. Wenn das nicht geht, alles bis auf die die derzeitige Rootpartition löschen und die mit gparted Live-CD auf das Minimum schrumpfen, sowie ans Ende der Festplatte verschieben. Damit bekommst du Platz am Anfang der Platte.
  • Du bootest eine FreeBSD Installations-CD, klickerst den Installer durch und wählst bei der Partitionierung die Shell. Da lagst du im freien Speicherplatz eine EFI-Partition (zum Booten), eine Swap-Partition (sagt der Name) und eine ZFS-Partition (für das System) an. Du erstellst einen einen neuen zpool, legst das System darin auf ein Boot Environment.
  • Nach der Installation startest du das neue System, erstellst ein neues Boot Enviroment und kopierst das alte System darein. Anschließend löscht du die Partition des alten System, vergrößerst die ZFS-Partition in den nun freien Speicherplatz und dann den zpool.
Das ist nun recht abstrakt und immer noch Gebastel, aber du sparst dir zumindest schon mal so eklige Dinge wie Bootmanager.
 
ich selbst finde es immer ein wenig doof, wenn jemand etwas antwortet und die eigentliche Frage umgeht aber stattdessen mit alternativen Vorschlägen aufwartet.
Manchmal ist das aber weit mehr, als nur gut gemeint. Es kann einfach vernünftig sein.

Was mir auffällt ist, dass es nun um zwei Mal "fast ähnliche Probleme" geht und wir wissen (oder habe ich es übersehen) bei der Eingangsfrage von friedel noch immer nicht, welche HW da benutzt wird. Nur daraus kann man ableiten, ob sich das Experiment ZFS überhaupt lohnen kann. Ich nehme mal den WorstCase: 32 Bit CPU.
Andererseits gibt es heute Rechner mit Anschlüssen nach außen, die recht schnelle Speichermedien erlauben. Man muss Daten ja nicht unbedingt mit Gewalt auf der gleichen Platte hin- und herschieben und es sollte ja in jedem Fall vor derartigen Experimenten ein Backup vorhanden sein. Man kann sich dabei sehr leicht eine blutige Nase holen und ob es das Wert ist?
Der Stolperstein ist definitiv das anschließende Booten.
Die Daten hin und herschieben ist (sollte) eher einfach sein.
Ich erzähle gerne von meinem PC, der Platten an einem eingebauten Raid-Controller hat, dessen Funktion ich über das eigene BIOS lahm gelegt habe, als ich auf ZFS umstellte. Ich glaube, ich habe den Bootloader schon ein dutzend Mal neu geschrieben und unterschiedliche Platten probiert, es geht einfach nicht. Mit UFS hatte ich den Raid.Controller in Betrieb und da funktionierte alles gut. ich boote nun von einem USB-Stick über den alten boot(0). Ich hatte noch so einen auf einem Stick. Das wäre vielleicht auch ein Tip für dich an dieser Stelle.
ZFS ist sau gut. Ich liebe es immer mehr, bin aber lange Jahre nur Nutzer seiner Raid-Funktion gewesen und habe damit auch gut gelebt.
Die zusätzlichen Funktionen erkauft man sich mit einem recht hohen Ressourcen-Bedarf. Ich würde mir das auch heute noch überlegen und je nach Rechner entscheiden. Aber auch mit ZFS hat man keine Redundanz und irgendwie muss man sich ein Backup außerhalb der einen Platte anlegen. Da ist es nicht anders, als mit UFS auch.
Wenn es rein ums Spielen damit geht, kann das auch auf einem billigen Stick passieren oder vielleicht gleich mit mehreren. Dazu muss man nicht gleich das System komplett umstellen.

Zum Beispiel ist mein PC ein fast zehn Jahre alter Core2-duo oder wie das hieß mit 8G RAM und ich habe vier kleine Platten in einem ZFS-Mirror darin hängen und fühle mich damit manchmal schon ein wenig schlapp, einfach unter-motorisiert. Früher sagte man, Mindestvoraussetzung für ZFS ist 4G RAM und 64Bit CPU. Das ist sehr am unteren Rand. Ich würde das den Bedarf alleine für ZFS nennen. Heutige Desktop-Anwendungen wollen wenigstens den gleichen Speicherbedarf, wenn man nicht an Grenzen stoßen will. Auf 64 Bit natürlich. Auf 32 Bit sieht das ganz anders aus, aber da kannst du ZFS auch total vergessen.

Es wäre also nicht verkehrt, tatsächlich die eigentliche Frage mal zunächst ruhen zu lassen und erst zu klären, bei welcher HW und für welche Anwendung die Umstellung auf ZFS erfolgen soll. Dann kann man viel besser abschätzen, ob das überhaupt sinnvoll ist.
 
Hallo Friedel,

dieses boot0 [1] geht nur bei MBR. 446 Byte = Bootloader auf MBR Platten. Ich denke dass @Yamagi 's Lösung die beste sein wird wenn du zwei unterschiedliche FreeBSD Varianten mit BSD Bordmitteln und ohne Grub booten willst.

Bei GPT/UEFI ist die EFI Partition der zentrale Knackpunkt des Starts. Hier kannst du auch per UEFI Startmenü unterschiedliche Betriebsysteme starten. Das ist dann von deiner Hardware abhängig aber doch ähnlich.

[1] https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/boot-introduction.html
[2] https://www.freebsd.org/cgi/man.cgi?query=uefi&sektion=8
[3] https://wiki.freebsd.org/UEFI
 
ich selbst finde es immer ein wenig doof, wenn jemand etwas antwortet und die eigentliche Frage umgeht aber stattdessen mit alternativen Vorschlägen aufwartet.
Manchmal ist das aber weit mehr, als nur gut gemeint. Es kann einfach vernünftig sein.

Mag sein, aber nehmen wir doch nur so zum Spass mal an, dass ich zwar nach Lust und Laune rebooten, aber keine neuen Speichermedien applizieren kann. Die Idee ist also, das System komplett zu kopieren, so dass man ein Fallback hat. Dann kann man das "Hintere" System booten, dass sich hoffentlich exakt so, wie das alte verhält, das "Vordere" platt machen und im freien Speicher ein zfs für root einrichten um anschließend root wieder von hinten nach vorne, ins neue zfs zu kopieren. Das war der Plan! Swap und boot muss / will ich dafür gar nicht anfassen. Unsicher bin ich mir z. B. auch, ob die alte boot-Partition überhaupt in der Lage ist, das neue zfs-root zu booten?

pit234a schrieb:
Was mir auffällt ist, dass es nun um zwei Mal "fast ähnliche Probleme" geht und wir wissen (oder habe ich es übersehen) bei der Eingangsfrage von friedel noch immer nicht, welche HW da benutzt wird. Nur daraus kann man ableiten, ob sich das Experiment ZFS überhaupt lohnen kann.

Ziemlich genau das, was Du hast, aber sogar nur mit 4GB RAM.

pit234a schrieb:
Die zusätzlichen Funktionen erkauft man sich mit einem recht hohen Ressourcen-Bedarf. Ich würde mir das auch heute noch überlegen und je nach Rechner entscheiden.
Dachte ich auch immer, aber laut Sun ist die Minimalanforderung *nur* 700-800MB RAM und ich gehe davon aus, dass das meint, dass man dann immer noch ein nutzbares System hat, und sich das nicht nur auf den Betrieb von zfs bezieht?


pit234a schrieb:
Früher sagte man, Mindestvoraussetzung für ZFS ist 4G RAM und 64Bit CPU. Das ist sehr am unteren Rand. Ich würde das den Bedarf alleine für ZFS nennen.
Genau, "Früher sagte man", aber ich dachte, dass sei inzwischen besser geworden (s.o.)?

Gruss

Fn
 
Hallo Friedel,

dieses boot0 [1] geht nur bei MBR.

Klare Aussage, danke. Hatte ich auch befürchtet.

schorsch_76 schrieb:
Ich denke dass @Yamagi 's Lösung die beste sein wird wenn du zwei unterschiedliche FreeBSD Varianten mit BSD Bordmitteln und ohne Grub booten willst.

Problem ist, keine *efi da! Nur BIOS. Ohne Grub hab ich gar nicht gesagt, aber ich weiss nicht, wofür ich den kompletten gcc und die binutils brauche, wenn ich mir nur das bin per pkg install-ieren will?

Daneben bin ich auch für jeden anderen Bootmanager zu haben, der in Frage kommt und funktioniert.

Gruss

Fn
 
Ohne Grub hab ich gar nicht gesagt, aber ich weiss nicht, wofür ich den kompletten gcc und die binutils brauche, wenn ich mir nur das bin per pkg install-ieren will?
GRUB ist ja GNU-Software und lässt sich als solche nur mit dem gcc bauen. Daher linkt es gegen die gcc-Runtime. Um die zu bekommen muss er gcc nachziehen, was wiederum binutils nachzieht.
 
Klare Aussage, danke. Hatte ich auch befürchtet.



Problem ist, keine *efi da! Nur BIOS. Ohne Grub hab ich gar nicht gesagt, aber ich weiss nicht, wofür ich den kompletten gcc und die binutils brauche, wenn ich mir nur das bin per pkg install-ieren will?

Daneben bin ich auch für jeden anderen Bootmanager zu haben, der in Frage kommt und funktioniert.

Gruss

Fn

Hallo Friedel,
ZFS und @Yamagi 's Lösung geht auch mit MBR und reinen BSD Utils. Das zieht nur beadm aus den Ports mit. Das geht wieder nur mit ZFS.

Gruß
Georg
 
Code:
CPU 0:  8.6% user,  0.0% nice,  1.2% system,  0.0% interrupt, 90.2% idle
CPU 1:  7.8% user,  0.0% nice,  2.0% system,  0.8% interrupt, 89.4% idle
Mem: 525M Active, 1301M Inact, 1007M Laundry, 4086M Wired, 142M Buf, 950M Free
ARC: 1962M Total, 1078M MFU, 498M MRU, 1456K Anon, 33M Header, 351M Other
     1314M Compressed, 2586M Uncompressed, 1.97:1 Ratio
Swap:
Das ist eine Ausgabe aus meinem laufenden System, das ziemlich wenig zu tun hat, aber schon einige Zeit am Laufen ist. Mach dir vielleicht selbst mal einen Reim auf diese Zahlen.
Was ich nicht erklären möchte ist, dass ZFS auf einem System wie deinem versagen wird. Ich habe einen ähnlichen Server mit 4G RAM und nutze dort noch älteres ZFS und das geht auch super gut. Der hat aber auch keine großartigen Rechenaufgaben. Es laufen nur kleine Dienste und davon nicht sehr viele. Wenn ich zwanzig intensive Seiten mit Firefox ansehe und mehrere LibreOffice Dokumente mit viel Grafik drin bearbeite und dann noch mit Gimp drei Bilder bearbeiten muss, dann bin ich unter Umständen schon froh mit ausreichend RAM dafür, weil sonst der Datenverkehr zur Platte das alles sehr verlangsamt.
Die neueren Versionen von ZFS sind sehr viel sparsamer geworden. mein Eindruck ist es, dass sie vor allem nicht mehr so schnell sterben, wenn sie mal weniger Speicher haben. Open-ZFS, also das, was FreeBSD nutzt, ist angeblich da noch besser, als das von SUN.
Ein wenig spielt da natürlich auch die Art der Nutzung mit rein. Mit einem Spiegel und vier Platten, wie bei mir, muss ZFS ein klein wenig mehr arbeiten und bei größeren Datenmengen gilt das ebenfalls.
Funktionieren, ohne zu sterben, das ist die eine Seite. Ausreichend Performance, um damit auch wirklich Spaß zu haben, das ist eine andere Sache und ich habe noch kein Dateisystem gehabt, das einen derartigen Aufwand betreibt und sich wirklich bis auf die Ebene auswirkt, wo ein Nutzer das wahrnehmen kann. Ein Dateisystem, das die Performance in den Keller zieht.
Ein direkter Vergleich ist schon schwer, ich habe nur einen indirekten. Auf meinem PC hatte ich zuvor FreeBSD auf UFS und mit zwei Platten im HW-Raid. Nun habe ich neueres FreeBSD mit ZFS und erst seit ich vier Platten als einen Spiegel drin habe, ist die Arbeit wieder ähnlich flüssig, wie ich sie von vorher gewohnt war. Es mag zusätzliche Gründe dafür geben, aber UFS ist meiner Ansicht nach in Sachen Performance immer noch der Hit und kommt gleich hinter EXT4.
Es gibt aber auch Leute, die auf ihren P4 ein ZFS setzen und keinen Unterschied bemerken. Weiß der Kuckuck, was da alles rein spielt. Ich hatte zuvor auch immer nur aus den Ports installiert und nutze nun nur noch Pakete. Es gibt also eben mehr als einen Unterschied zwischen früher und heute und dass ich nun ZFS nutze, ist nur einer von vielen. Die Dateisystembenchmarks beim Lesen und Schreiben sehen übrigens nicht falsch aus. Ich vermute, dass es einfach der viele Speicher und Verwaltungsaufwand ist, den ZFS mitbringt.

Aber, ZFS ist super und bietet einige Vorteile und du solltest es unbedingt auch haben. Aber auch gut überlegen, ob sich der Aufwand bei deiner Konstellation überhaupt lohnen kann.

Wie gesagt, ich sehe den KasusKnaxus beim Booten. Da will ich mich aber raus halten. Ich habe es selbst noch nicht geschafft, von einem ZFS zu booten. Die alte Kiste boote ich noch aus UFS (gemischter Betrieb, was damals auch abgeraten wurde) und meinen PC, der nicht wirklich jünger ist, den boote ich vom Stick über boot(0). Nicht, weil ich das so möchte, sondern weil es nach der Installation nicht funktionierte und ich es auch im Nachhinein nicht repariert bekam. Das soll natürlich nicht für dich auch gelten. Ich will nur erklären, weshalb ich mich lieber raus halte, denn das Handbuch kannst du auch selbst lesen und aus der Praxis habe ich da nichts zu vermelden.
 
Zurück
Oben