FreeBSD install – full ZFS mirror poolon

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).

’Enter’, majd válasszuk a Live CD opciót!

Ezután a root login után (itt nincs jelszó most), megkapjuk a shell-t. A következő lépésben előkészítjük a diszkjeinket.

# 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

Majd –mivel mi tükrözött környezet szeretnénk- ismételjük meg a procedúrát a másik diszkünkön is!

# 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

A partíciós sémánk ezzel el is készült, beleértve a boot-code installját is. Itt hadd álljak meg egy gondolat erejéig. Emlékszünk még talán az alap FreeBSD installra, ahol megemlítésre került a GPT partíciótípus. Ez a partícionálás egy sokkal rugalmasabb módját teszi lehetővé illetőleg a létrehozható partíciók számát 128-ban maximálja. Mi itt kettő partíciót hoztunk létre, egyet a boot-nak, a többi a maradék, ennel finomabb, fájlrendszer-szintű elosztása majd a ZFS-sel fog történni.

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

Kapunk néhány üzenetet, melyeket figyelembe véve majd később megtesszük a szükséges beállításokat. Nem tudta megkreálni a mountpointot sem, mivel ez Live CD, tehát read-only. Ezenkívűl beállítottuk a boot fs-t, és a / filesystemet most az /mnt alá tettük, mivel az már foglalt a Live CD / filesysteme miatt. Később, mielőtt az install kész lenne, ezt természetesen majd módosítjuk.

 

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

5., Most következik a fájlrendszerek létrehozása  a megfelelő paraméterekkel (ez a sokat gépelős rész :) ). Itt, természetesen el lehet térni a leírtaktól az igényeinknek és elképzeléseinknek megfelelően.

# 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

6., A swap létrehozása (itt 1GB lesz) és ennek beállításai (ez ugyanis nem normál filesystemként viselkedik).

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

7., Néhány jogosultság és symlink beállítás

# 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

11., Unmountoljunk mindent , majd állítsuk be a végleges mountpointokat (nyilván minden filerendszernél, amit létrehoztunk).

# 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 :)

A sikeres újraindulás után állítsunk be egy root jelszót, adjunk hozzá nem-root jogú felhasználót, és állítsuk be a hálózatot a már ismert módon (sysinstall-lal vagy manuálisan, ahogy tetszik).

 

Ellenőrzések

# zpool list

# zpool status

# zpool get version zroot

# zfs get version zroot

# df –h
# 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.

FreeBSD install – full ZFS mirror poolon” bejegyzéshez 2 hozzászólás

  1. 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… :)

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük