2. ZFS beállítása
A ZFS a fájlrendszer, a Sun egyik nagy találmánya, amelyet 2005 elején dobtak be a nagy közösbe, az OpenSolaris részeként lett nyílt forrású CDDL licenc alatt. Miért a ZFS a fájlrendszer? Lássuk.
| A ZFS és az UFS összehasonlítása: ZFS bevetés közben |
2.1. Finomhangolás
A ZFS támogatás jelenleg néhány beállítást igényel a rendszer részéről, így a /boot/loader.conf fájlba fel kell vennünk az alábbit:
vm.kmem_size_max=1536M vm.kmem_size=1536M vfs.zfs.arc_max=256M vfs.zfs.vdev.cache.size=24M
A ZFS betöltéséhez pedig szükséges:
zfs_enable="YES"
Ezek után egy újraindítás célszerű, egyrészt rövidebb idő, mint beállítani a megfelelő paramétereket parancssorból, másrészt ellenőrzésképp célszerű megtenni.
2.2. ZFS kötetek és fájlrendszerek
A telepítéskor létrehoztunk egy /bpool és egy /dpool helyre csatolt fájlrendszert, ezeket csatoljuk le majd töröljük ki az /etc/fstab fájlból (előtte írjuk le az eszközök neveit, mert arra szükségünk lesz). Ezekből ZFS kötet (pool) lesz, a kötet a ZFS egyik alapegysége, egy ZFS kötethez bármikor hozzáadhatunk új eszközt, kivehetünk belőle eszközt, kijelölhetünk tartalék eszközt, ésatöbbi. A kötetek kezelésére a zpool parancs szolgál. A fentebb megejtett újraindítás után újra belépve létre kell hozni a megfelelő ZFS köteteket:
freebsd# zpool create bpool da0s2d
freebsd# zpool create dpool da0s2e
freebsd# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
bpool 7.94G 110K 7.94G 0% ONLINE -
dpool 210G 110K 210G 0% ONLINE -
freebsd# zpool status
pool: bpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
bpool ONLINE 0 0 0
da0s2d ONLINE 0 0 0
errors: No known data errors
pool: dpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
dpool ONLINE 0 0 0
da0s2e ONLINE 0 0 0
errors: No known data errors
A bpool kötetre kerül a /usr, a /var és a /tmp fájlrendszer. A fájlrendszer a ZFS másik egysége, amelyet zfs parancs segítségével tudunk macerálni. Hozzuk létre az említett fájlrendszereket:
freebsd# zfs create bpool/tmp freebsd# zfs create bpool/usr freebsd# zfs create bpool/var freebsd# zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 182K 7.81G 21K /bpool bpool/tmp 18K 7.81G 18K /bpool/tmp bpool/usr 18K 7.81G 18K /bpool/usr bpool/var 18K 7.81G 18K /bpool/var dpool 105K 207G 18K /dpool
Ezen beállítások után ismét újra kell indítanunk a telepített rendszert, de most single-user módban kell ezt megejteni (a FreeBSD menüben a negyedik pont). A single-user módban a ZFS kötetek nincsenek felcsatolva, jobban mondva egyetlen fájlrendszer sincs felcsatolva, még a / is csak olvasható módon.
| A ZFS a hostid alapján keresi meg a saját köteteit, ezért ha hostid nélkül kezdenénk neki a ZFS felhasználásnak, akkor látszólag elvesznek a köteteink, ekkor ki kell adnunk a `zpool import -a` parancsot, hogy beimportálja azokat. |
Nézzük meg, hogy minden rendben van-e:
# /etc/rc.d/hostid start Setting hostuuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Setting hostid: 0xFFFFFFFF. # /etc/rc.d/zfs start # zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 182K 7.81G 21K /bpool bpool/tmp 18K 7.81G 18K /bpool/tmp bpool/usr 18K 7.81G 18K /bpool/usr bpool/var 18K 7.81G 18K /bpool/var dpool 105K 207G 18K /dpool
A ZFS érdekessége, hogy nem kell a fájlrendszer használatához /etc/fstab bejegyzés, ezt maga a fájlrendszer tárolja. Ha megvan minden, amire szükségünk van, akkor másoljuk át a hivatkozott fájlrendszereket, nevezzük át a régi helyén (biztos-ami-biztos), majd adjunk meg új csatolási pontot a ZFS fájlrendszereknek:
# cp -Rp /tmp/ /bpool/tmp/ # cp -Rp /usr/ /bpool/usr/ # cp -Rp /var/ /bpool/var/ # mount -u / # mv /tmp /tmp.install # mv /usr /usr.install # mv /var /var.install # zfs set mountpoint=/tmp bpool/tmp # zfs set mountpoint=/usr bpool/usr # zfs set mountpoint=/var bpool/var # df -h Filesystem Size Used Avail Capacity Mounted on /dev/da0s2a 3.9G 377M 3.2G 10% / devfs 1.0K 1.0K 0B 100% /dev bpool 6.8G 0B 6.8G 0% /bpool dpool 207G 0B 207G 0% /dpool bpool/tmp 6.8G 0B 6.8G 0% /tmp bpool/usr 7.0G 214M 6.8G 3% /usr bpool/var 6.9G 70M 6.8G 1% /var # exit
Az eredeti, de átnevezett könyvtárakat akár megtarthatjuk, ha van helyünk elég, mivel ZFS probléma esetén van még egy rescue rendszerünk.
2.3. A ZFS előnyei röviden
Nos, kicsit fésüljük meg a ZFS fájlrendszeren lévő könyvtárakat, első körben hozzunk létre egy snapshot-ot, amely a telepítéskori állapotot tartalmazza:
freebsd# zfs snapshot bpool/usr@install freebsd# zfs snapshot bpool/var@install freebsd# zfs snapshot bpool/tmp@install freebsd# zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 214M 7.60G 18K /bpool bpool/tmp 23K 7.60G 23K /tmp bpool/tmp@install 0 - 23K - bpool/usr 214M 7.60G 214M /usr bpool/usr@install 0 - 214M - bpool/var 262K 7.60G 244K /var bpool/var@install 17K - 244K - dpool 105K 207G 18K /dpool
Ezek a pillanatfelvételek nem foglalnak felesleges helyet, csak a jelenkori állapotot rögzítik, célszerű ezt megtenni (később újabb snapshot készíthető, ha újabb stabil állapotba kerül a rendszer). Egy létrehozott snapshot önmagában kevés a boldogsághoz, ha használni is szeretnénk, akkor klónozni kell:
freebsd# zfs clone bpool/usr@install bpool/usr_at_install freebsd# df -h Filesystem Size Used Avail Capacity Mounted on [...] bpool/usr_at_install 7.8G 214M 7.6G 3% /bpool/usr_at_install freebsd# zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 214M 7.60G 19K /bpool bpool/tmp 23K 7.60G 23K /tmp bpool/tmp@install 0 - 23K - bpool/usr 214M 7.60G 214M /usr bpool/usr@install 38K - 214M - bpool/usr_at_install 0 7.60G 214M /bpool/usr_at_install bpool/var 278K 7.60G 244K /var bpool/var@install 33.5K - 244K - dpool 105K 207G 18K /dpool
A ports tartalma jól tömöríthető, ezért kevesebb helyet foglal, ha tömörített ZFS fájlrendszeren tároljuk:
freebsd# zfs create bpool/usr/ports freebsd# zfs set compression=gzip-9 bpool/usr/ports
Ugyanezt tehetjük a forrásokkal, amelyekből majd fordítjuk a végleges FreeBSD rendszert:
freebsd# rm -R /usr/src freebsd# zfs create bpool/usr/src freebsd# zfs set compression=gzip-9 bpool/usr/src
Hozzunk létre és másoljuk át a /usr/local fájlrendszert is, de ezt nem fontos tömöríteni, illetve egy új ZFS fájlrendszert a FreeBSD fordításához szükséges /usr/obj csatolási pontra.
freebsd# rm -R /usr/local freebsd# zfs create bpool/usr/local freebsd# cp -Rp /bpool/usr_at_install/local/ /usr/local/ freebsd# zfs create bpool/usr/obj
Ha mindez megvan, célszerű egy újraindítást is megejteni, hogy lássuk minden helyesen működik-e. Ez túlzott biztonságnak tűnhet, de ha egy későbbi újraindításkor problémával szembesül az operációs rendszer, akkor nem biztos, hogy pont a közelében leszünk...
Azonban még nem végeztünk a ZFS kapcsán, érdemes körülnézni, hogy mi mennyi helyet foglal:
# zfs list NAME USED AVAIL REFER MOUNTPOINT [...] bpool/usr 1.61G 2.24G 442M /usr bpool/usr@install 848M - 1.26G - bpool/usr/local 78.9M 2.24G 78.9M /usr/local bpool/usr/obj 18K 2.24G 18K /usr/obj bpool/usr/ports 133M 2.24G 133M /usr/ports bpool/usr/src 151M 2.24G 151M /usr/src [...] # df -h Filesystem Size Used Avail Capacity Mounted on [...] bpool/usr 2.7G 442M 2.2G 16% /usr bpool/usr/local 2.3G 79M 2.2G 3% /usr/local bpool/usr/obj 2.2G 0B 2.2G 0% /usr/obj bpool/usr/ports 2.4G 133M 2.2G 5% /usr/ports bpool/usr/src 2.4G 151M 2.2G 6% /usr/src [...]
Hm... van itt ellentmondás bőven. A ZFS szerint a /usr 1.6GBájtot foglal el, a df szerint pedig csak 442MBájtot illene. A különbséget megtaláljuk a bpool/usr@install nevű snapshot-ban, hiszen ez továbbra is tárolja a fájlokat, amelyeket töröltünk, és egy másik ZFS fájlrendszerbe másoltunk vissza... mivel minden jó és szép, töröljük és hozzuk létre újra a snapshot-ot:
# zfs destroy bpool/usr@install cannot destroy 'bpool/usr@install': snapshot has dependent clones use '-R' to destroy the following datasets: bpool/usr_at_install # zfs destroy bpool/usr_at_install # zfs destroy bpool/usr@install # zfs snapshot bpool/usr@install # zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 808M 3.12G 18K /bpool bpool/tmp 45K 3.12G 23K /tmp bpool/tmp@install 22K - 23K - bpool/usr 805M 3.12G 442M /usr bpool/usr@install 0 - 442M - bpool/usr/local 78.9M 3.12G 78.9M /usr/local bpool/usr/obj 18K 3.12G 18K /usr/obj bpool/usr/ports 133M 3.12G 133M /usr/ports bpool/usr/src 151M 3.12G 151M /usr/src bpool/var 1.39M 3.12G 1.22M /var bpool/var@install 172K - 265K - dpool 105K 1.95G 18K /dpool
Rögtön több helyünk lett... ![]()
Előző fejezet Tartalomjegyzék Következő fejezet
Auth Gábor auth.gabor@javaforum.hu
