FreeBSD installálás már szerepelt egy előző leírásban, tükrözve is. A leírásban azonban a FreeBSD natív filerendszere, az UFS testesítette meg a használt fájlrendszer típust. Ez egy kiforrott fájlrendszer, és a geom keretrendszerrel a tükrözés is könnyedén megoldható. Azonban a ZFS, mint fájlrendszer sok szempontból rengeteg újdonságot hozott a fájlrendszerek világába. A ZFS-ről már Misi cimborám írt egy átfogó cikket, ezért ennek a jellegzetességeit itt nem tárgyalnám ki. A FreeBSD már a 7.0-ás stabil verziótól tartalmazza a ZFS támogatást, beleértve a ZFS kötetről történő bootolást is. Ennek fényében számomra nehezen érthető, hogy a telepítő – eltérően pl. a Solarisétól – miért nem tartalmazza a lehetőséget a ZFS-re történő telepítésre. Ám nem kell kétségbe esnünk: nem lehetetlen a dolog. A most következő írásban bemutatom, hogyan tudjuk a FreeBSD 9.0-ás verzióját teljes egészében ZFS-t használó fájlrendszeren telepíteni.
FreeBSD install – full ZFS mirror poolon
Környezet
– virtual PC (Oracle Virtualbox 4.1.22)
– 2 db 6GB-os diszk
– 1 CPU
– 1024MB RAM
– FreeBSD 9.0 operációs rendszer
A cél a FreeBSD 9.0 OS-t telepíteni ZFS fájlrendszeren, a két rendelkezésre álló diszkünk tükörbe rendezésével.
A telepítés lépései
Mint említettem, kis trükközésre lesz szükségünk, mivel az OS támogatja a ZFS-t minden szempontból, azonban a telepítő sajnos NEM. Ezért a következőt fogjuk tenni.
– NEM megyünk végig a telepítő szokásos lépésein, hanem az install médiáról való bootolás után „kidobjuk” magunkat a Live-CD shelljébe
– itt a diszkjeinket GPT partíciós sémával fogjuk partícionálni, cimkézni majd a boot-code-t installáljuk kézzel a bootszektorba
– megkreáljuk a szükséges pool-okat, majd a fájlrendszereket (beleértve a swap-et is)
– és a telepítő-felületet kihagyva kézzel fogjuk a szükséges rendszercsomagokat installálni
– végül néhány utólagos lépést elvégzünk (root pass, stb.)
Ez talán így elsőre kicsit ijesztően hangzik, de a lépések során láthatóvá válik, hogy bár sokat kell gépelni, de logikusak a lépések. Vágjunk is bele.
1., Hozzuk létre a partíciós sémát!
Bootoljunk az install médiáról, ami ebben az esetben NEM lehet a boot-only média, mivel az nem tartalmazza a rendszercsomagokat (mivel az internetről szedné le, nekünk viszont helyben kellenek).


# gpart create -s gpt ada0
# gpart add -b 34 -s 94 -t freebsd-boot ada0
# gpart add -t freebsd-zfs -l disk0 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

# gpart create -s gpt ada1
# gpart add -b 34 -s 94 -t freebsd-boot ada1
# gpart add -t freebsd-zfs -l disk1 ada1
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

2., Most kreáljuk meg a ZFS poolunkat, úgy, hogy a két diszk tükrözve kerüljön bele.
# zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
3., Majd állítsuk be a boot filerendszert és tulajdonságait.
# zpool set bootfs=zroot zroot
# zfs set checksum=fletcher4 zroot
# zfs set mountpoint=/mnt zroot

4., Most exportáljuk és importáljuk a poolt, a zroot.cache-t pedig a /var/tmp alá tesszük.
# zpool export zroot
# zpool import -o cachefile=/var/tmp/zpool.cache zroot

# zfs create zroot/usr
# zfs create zroot/usr/home
# zfs create zroot/var
# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
# zfs create -o exec=off -o setuid=off zroot/var/db
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
# zfs create -o exec=off -o setuid=off zroot/var/empty
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
# zfs create -o exec=off -o setuid=off zroot/var/run
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

# zfs create -V 1G zroot/swap
# zfs set org.freebsd:swap=on zroot/swap
# zfs set checksum=off zroot/swap

# chmod 1777 /mnt/tmp
# cd /mnt
# ln -s usr/home home
# chmod 1777 /mnt/var/tmp

8., A tulajdonképpeni install most következik, hiszen eddig csak előkészítettünk mindent, de rendszerfile még nem került a fájlrendszerre.
# sh
# cd /usr/freebsd-dist
# export DESTDIR=/mnt
# for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz; do (cat $file | tar –unlink -xpJf – -C ${DESTDIR:-/}); done
Ez a fileseteket ki fogja csomagolni a megfelelő könyvtárakba. Jó esetben nem lesz kimenete, csak a promptot fogjuk visszakapni. Itt sem muszáj persze mindent feltenni, az src.txz ill. a ports.txz pl. később online forrásból is feltehető, mint up-to-date csomag.
9., A zpool.cache-t másoljuk a boot könyvtár megfelelő helyére (ez NAGYON FONTOS! , ha kihagyod, valószínűleg kezdheted előlről!)
# cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
10., Hozzuk létre az rc.conf, a loader.conf fileokat és egy fstab-ot, ez utóbbit üres tartalommal.
# echo ‘zfs_enable=”YES”‘ >> /mnt/etc/rc.conf
# echo ‘zfs_load=”YES”‘ >> /mnt/boot/loader.conf
# echo ‘vfs.root.mountfrom=”zfs:zroot”‘ >> /mnt/boot/loader.conf
# touch /mnt/etc/fstab

# zfs set readonly=on zroot/var/empty
# zfs umount -af
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/var zroot/var
Igazság szerint készen vagyunk! Nincs más hátra, mint rebootolni a kész rendszert (előtte persze az install médiát eltávolítjuk!).
Bootoláskor ha ilyet látunk, akkor valamit már jól csináltunk :)

Ellenőrzések
# zpool list




# zfs list

Összegzés
Bár kicsit talán hosszadalmasnak tűnik, és bonyolultnak, a lépések logikailag szerintem átláthatóak. A fenti leírást alkalmazva egy teljesértékű, tükrözött ZFS poolon futó operációs rendszert sikerült feltelepítenünk. A ZFS, csakúgy, mint más OS, pl. Solaris alatt ugyanúgy működik és használható. A storage pool jelenlegi verziószáma a FreeBSD 9.0-ben 28, filerendszeré pedig 5. A ZFS filerendszer memória igénye csakúgy, mint akárhol másutt, magasabb az átlagosnál, így 1GB RAM legyen tesztkörnyezetben is az a minimum, ahol ezt a filerendszert használjuk. Cserébe egy nagyon sokoldalú, nagyszerű lehetőségekkel felvértezett, stabil fájlrendszert használhatunk FreeBSD telepítésünkön.
Ez szuper!
Ambar nem ertem, install menube, miert nem lehetett implementalni :)
A lenyeg, hogy Tamas, megint nagyszeru cikket hoztal ossze.
Pont ma olvastam, hogy SSD poolok kezelesehez uj patch-et olvasztanak a rendszerbe, es TRIM support is lesz bennuk.
http://hup.hu/cikkek/20120927/zfs_trim_tamogatas_a_freebsd_head_ben
Köszönöm szépen! Ha lenne SSD-m, azon is szívesen tolnék egy tesztinstall, főleg sebességek vizsgálata miatt. De majd… :)