BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

FreeBSD auf ZFS installieren

Möchte man FreeBSD auf ZFS installieren, so ist das noch nicht über die Installationsroutine möglich. Unter http://www.ish.com.au/solutions/articles/freebsdzfs findet man ein Anleitung wie man FreeBSD trotzdem auf ZFS installieren kann. Hier eine kleine Zusammenfassung: Um FreeBSD auf ZFS zu installieren, muss man mindestens FreeBSD 7 einsetzen. Man erstellt zuerst mit sysinstall einen Slice über die ganze Festplatte und anschliessend ein Label so, dass die Partition a 512 MB gross ist, und als / gemountet wird. Auch die Swappartition wird bereits erstellt. Im Rest des Slices wird eine Partition gelabelt, welche nicht formatiert und gemountet wird. In / wird dann ein minimal FreeBSD installiert.

Danach wird das installierte System im Single User Mode gestartet und die / Partition schreibend gemountet:

# mount -w / 
Nun kann auf dem freien Speicherplatz ein ZFS-Pool erstellt werden:

# zpool create tank /dev/ad0s1d
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

Danach können die Dateisysteme für /usr, /var und /tmp erstellt werden:

# zfs create tank/usr
# zfs create tank/var
# zfs create tank/tmp

Mit folgendem Eintrag in der /etc/rc.conf wird das ZFS Kernelmodul beim Booten geladen:

# echo 'zfs_enable="YES"' >> /etc/rc.conf

Nun kann der Inhalt der root-Partition auf das ZFS-Dateisystem verschoben werden:

# find -x / | cpio -pmd /tank
471416 blocks

Da FreeBSD noch nicht von ZFS booten kann, muss die bestehende UFS-Partition als boot-Partition verwendet werden:

# rm -rf /tank/boot
# mkdir /tank/bootdir
# cd /tank
# ln -s bootdir/boot boot

In der /tank/etc/fstab muss nun der Eintrag für die UFS boot-Partition geändert werden:

/dev/ad4s1a  /bootdir        ufs     rw      1       1 

Nun muss in der /boot/loader.conf eingetragen werden, dass das ZFS root-Dateisystem beim Booten geladen werden soll:

# echo 'zfs_load="YES"' >>  /boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:tank"' >> /boot/loader.conf

Zum Schluss müssen noch die ZFS-Mountpoints für /usr, /var und /tmp konfiguriert werden und dabei sichergestellt werden, dass /tank nicht gemountet wird, da dies nun das root-Dateisystem ist:

# zfs set mountpoint=/tmp tank/tmp
# zfs set mountpoint=/usr tank/usr
# zfs set mountpoint=/var tank/var
# zfs set mountpoint=legacy tank

Jetzt sind alle Einstellungen gemacht und FreeBSD kann neu gestartet werden:

# shutdown -r now

Falls man möchte, können nun nicht gebrauchte Dateien aus der UFS boot-Partition gelöscht werden:

# cd /bootdir
# chflags noschg var/empty
# rm -rf usr var tmp COPYRIGHT home compat media mnt proc bin cdrom dev dist etc lib libexec root sbin sys

Mehr Informationen dazu findet man im FreeBSD wiki: http://wiki.freebsd.org/ZFSOnRoot

Eine kleine Einführung in ZFS auf FreeBSD findet man hier: http://www.chruetertee.ch/blog/archive/2007/05/26/zfs-auf-freebsd.html

Related Entries:
ZFS-Statistiken anzeigen
ZFS-Installation mit Hilfe von mfsBSD
FreeBSD nur auf ZFS installieren
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
Comments (5)  Permalink

Comments

hoschi @ 12.02.2008 21:00 UTC
Danke für diesen tollen Eintrag! Hat mir sehr geholfen.
grUNIX @ 30.09.2008 13:25 UTC (Trackback)
In diesem Blog wurde schon oftmals über ZFS berichtet, geschrieben und diskutiert. Aber auch andere Blogs beschäftigen sich ausgiebig mit ZFS unter FreeBSD und bieten dazu gleich noch Beispiele an wie sich was umsetzen lässt. Daher soll das Wort Bea
pagan @ 13.05.2009 12:29 UTC
Erst mal vielen Dank fuer diesen tollen Beitrag.
Weare es ach moeglich einen solchen Beitrag zfs only Systeme zu machen.
Beat @ 14.05.2009 07:22 UTC
Ich bin zur Zeit gerade an einem Artikel über ein reines ZFS System ohne UFS-Hilfspartition am schreiben. Ich hoffe, dass ich diesen am Wochenende fertig habe.
Hidden @ 18.10.2012 05:47 UTC
Kleine Anmerkung noch:
Mit FreeBSD 9.0 kann auch ein Erfolg nach der Methode vermeldet werden.
Wenn man in die Rootpartition /dev/ad0s1a kernel.tgz + base.tgz installiert, dann sind 512MB zu knapp. Mit 1GB gab es keine Probs.

Ein Eintrag in der /tank/etc/fstab mu:sste vermutlich:
"/dev/ad0s1a /bootdir ufs rw 1 1 "
heiszen.
No new comments allowed (anymore) on this post.