ZFS-FUSE
Írta: Szabó Tamás Zoltán
2010. december 8.
Ez az oldal a ZFS fájlrendszert és a Linux FUSE alrendszeren való használatát mutatja be.
1 Története
A ZFS-t a Sun Microsystems fejlesztette ki saját Solaris rendszerére, amelynek tervezésénél az addigi fájlrendszerek problémáit próbálták kiküszöbölni egy funkciókban gazdag, új felépítésű fájlrendszerrel. Először 2005-ben jelent meg a Sun OpenSolaris nevű operációs rendszerében. Elnevezése eredetileg a Zettabyte File System rövidítése, ami a lehetséges méretére vonatkozik, ugyanis 264 byte méretű lehet egy fájlrendszer maximális mérete, és a legtöbb fájlrendszerhez köthető méretkorlát legalább zettabyte nagyságrendű, ami jelenleg a gyakorlatban korlátlan méretet jelent.
2010-ben az Oracle megvásárolta a Sun Microsystems-et, ezzel – egyéb Sun termékek mellett – a Solaris is az Oracle tulajdonába került.
A ZFS fejlődése során folyamatosan bővül, ezért a fejlődés lépcsőihez inkrementális verziószámot rendelnek. Külön kap verziószámot a pool és a fájlrendszer.
A fájlrendszer verziója jelenleg 5-nél tart, míg a poolé 31-nél. A pool fejlődésének lépcsői verziószámok szerint az alábbiak:
- adatstruktúrák definiálása
- metaadat-replikáció
- melegtartalék, dupla paritású RAID-Z (RAID-Z2)
- zpool history: eltárolja minden poolhoz a rajta végzett adminisztrációs műveleteket, például létrehozás, eszköz hozzáadása.
- röptömörítés a gzip algoritmusával
- bootfs pool attribútum: megadható a poolon belül az elsődleges boot fájlrendszer
- ZFS Intent Log (ZIL)
- a fájlrendszer adminisztrációjának joga root jogosultsággal nem rendelkező felhasználóknak is delegálható
- kvóta rendszer bővítése: beállítható, hogy a helyfoglalási kvótába beletartozzanak-e a leszármazott fájlrendszerek (snapshotok és klónok)
- cache device támogatása: operatív memória és diszk-rendszer közé vezet be további cache-réteget
- hibakeresés és újraszinkronizálás teljesítményének javítása
- snapshot attribútumok támogatása
- új, helyfoglalással kapcsolatos fájlrendszer attribútumok hozzáadása (usedby* attribútumok)
- az aclinherit attribútum passthrough-x értékkel bővítése: ez az attribútum a jogosultságok öröklését szabályozza újonnan létrehozott könyvtár vagy fájl esetén
- felhasználóra és csoportra megadható, helyfoglalásra vonatkozó attribútumok hozzáadása(userused, userquota, groupused, groupquota)
- Csak egy javítást tartalmaz, amely Comstar SCSI vezérlőkkel való használat esetén okozott gondot
- tripla paritású RAID-Z (RAID-Z3)
- zfs hold parancs bevezetése: segítségével a felhasználó explicit módon változtathatja egy snapshot referenciaszámlálóját.
- Csak javítást tartalmaz log vdev eltávolítása kapcsán felmerülő problémákra
- röptömörítés a zle algoritmusával
- blokkszintű deduplikáció támogatása
- zfs send és receive: segítségével egy fájlrendszer replikálható vagy snapshot készíthető róla egy másik poolban, mint amihez a fájlrendszer tartozik.
- ZIL-el kapcsolatos módosítások
- rendszerattribútumok támogatása
- hibakereséssel és újraszinkronizálással kapcsolatos statisztikák fejlesztése
- snapshot törlésének gyorsítása
- snapshot létrehozásának gyorsítása
- több virtuális eszköz egyidejű cseréjének támogatása
- RAID-Z teljesítményének növelése
- titkosítás támogatása
- fájlrendszerek listázásának gyorsítása
2 Tulajdonságai
2.1 Adatintegritás
Minden blokk integritását egy ellenőrző kóddal védi a fájlrendszer, amelyet a blokkra mutató pointer mellé tárol el. Az ellenőrző kód beállítástól függően lehet 32 bites vagy 256 bites. Bár a diszkek hibajavító kódolást használnak, előfordulhatnak a diszken kívül átviteli hibák, amik hatására a beolvasott adat megsérül. Ennek valószínűsége nagy, kritikus adatmennyiséget kezelő rendszereknél már nem elhanyagolható.
2.2 128 bites fájlrendszer
Gyakorlatilag korlátlan: legtöbb méretkorlát legalább 248 nagyságú.
2.3 Storage pool
A ZFS architektúrája eltér a hagyományos fájlrendszerekétől, ugyanis egy logikai kötetkezelőt is tartalmaz.
A fájlrendszer virtuális eszközöket definiál (virtual device, röviden vdev). A vdev-eket két fő csoportra lehet osztani:
- Egyszerű vdev: Blokkeszközök, reguláris fájlok
- Összetett, redundanciát biztosító vdev-ek: RAID-Z tömb, mirror.
Egy összetett vdev több egyszerű vdevből építhető fel.
Egy vagy több virtuális eszközből pool építhető, egy poolon több ZFS is létrehozható. Egy fájlrendszer fájlok csoportját jelenti a poolon, ennek köszönhetően egy fájlrendszer méretét nem kell előre megadni. A ZFS fájlrendszert nevezik még dataset-nek is.
2.4 Hotspare
Poolokhoz melegtartalék rendelhető, amely egy diszk meghibásodása esetén átveszi a hibás diszk helyét.
2.5 Copy-on-write tranzakciókezelés
Egy blokkot a fájlrendszer nem helyben módosít, hanem a következő módszerrel:
- új blokkot foglal le, ebbe írja a módosított adatot
- minden, az eredeti blokkra közvetlenül vagy indirekten hivatkozó metaadat-blokkokból olyan új példányokat hoz létre, ami a módosított adatot tartalmazó blokkra mutat
- frissíti a superblock-ot (ezt itt uberblock-nak is nevezik) is, ez atomi művelet
Mivel az utolsó művelet atomi, ezért a superblock mindig egy konzisztens struktúrára mutat.
Az overhead csökkentése érdekében a szinkron írásokhoz úgynevezett szándéknaplót (ZFS Intent Log, röviden ZIL) és tranzakciócsoportokat használ.
Intent log esetén az adatot először naplóba írja, majd a tranzakciócsoport kiírásakor írja ki a helyére.
Három tranzakciócsoportot használ:
- open: aktív tranzakciók csoportja, ezek végezhetnek írás műveleteket
- quiescing: azok a tranzakciók, amelyek már nem végeznek írás műveletet, de a módosításaik még nincsenek a diszkre kiírva
- syncing: ebbe a csoportba kerülnek azok a tranzakciók, amelyek módosításainak a kiírása folyamatban van.
2.6 Snapshot
A copy-on-write mechanizmust használja ki, vagyis hogy a fájlrendszer módosításnál mindig új blokkba írja a módosított tartalmat. Snapshot esetén a régi adatokat tartalmazó blokkot nem szabadítja fel, hanem snapshotként jelöli meg, ez a felszabadításnál olcsóbb művelet is, mint snapshot nélkül.
2.7 Clone
Fájlrendszer klónozása. Klónozni csak egy fájlrendszer snapshotjából lehet. Létrehozásakor mindkét fájlrendszer ugyanazokat a blokkokat használja. Ha valamelyikben módosítás történik, akkor ahhoz copy-on-write mechanizmus segítségével új blokk jön létre a módosított fájlrendszerhez, a régi blokkot megtartja.
2.8 Automatikus csíkozás
A poolban lévő eszközöket RAID-0-szerűen csíkozza. Új diszk esetén a csíkozás automatikus kiterjed rá, a copy-on-write mechanizmus segítségével az írások során egyenletesen lesz szétosztva az adat a diszkek közt.
2.9 Változó blokkméret
A blokkméretet automatikusan változtatja 512 byte és 128 kbyte között, az optimális értéket a terhelés alapján próbálja kiszámítani. Tömörítés esetén a legkisebb blokkméretet használja, amibe az eredeti blokk tömörített formája belefér.
Extenteket nem használ, mert nagy méretük nem ideális copy-on-write és ellenőrző összegek használatára.
2.10 Adaptív bájtsorrend
Az adatokat mindig natív bájtsorrendben írja ki, mellé jelzi, hogy az little-endian vagy big-endian. Olvasáskor ha az adott architektúra más sorrendet használ, akkor a beolvasott adatot átalakítja a saját formátumára.
2.11 Deduplikáció
A blokk ellenőrző összeg felhasználásánál íráskor képes detektálni az azonos tartalmú blokkokat a blokkokhoz tartozó ellenőrző összegekből felépített adatbázis alapján.
2.12 Live data scrubbing
Időnként automatikusan vagy manuálisan elindul egy adatellenőrzés a poolon. Ha hibát talál, akkor kijavítja automatikusan, ha lehetséges.
2.13 RAID-Z
A RAID5-höz hasonlóan csíkozott paritást használ, de a RAID-5 megoldásával ellentétben az írás -- pl. tápvesztés miatti -- félbeszakadása a ZFS-nél nem vezet inkonzisztenciához. A Sun ajánlása alapján legfeljebb kilenc diszket ajánlott egy RAID-Z konfigurációban használni, ha ennél többet szeretnénk, akkor érdemes kisebb RAID-Z csoportokra felosztani ezeket. Lehet dupla (RAID-Z2) és tripla (RAID-Z3) paritású konfigurációt is választani. Előbbi a RAID-6-hoz hasonló, két hiba javítására, utóbbi három hiba javítására képes.
2.14 Transzparens titkosítás
Aránylag új a ZFS-ben, a ZFS/FUSE megvalósítás nem támogatja.
Fájlrendszerenként állítható, swap és dump is titkosítható ZFS Volume használatával. Boot fájlrendszeren nem használható.
2.15 Transzparens tömörítés
LZJB, GZIP és ZLE tömörítési eljárásokat támogat. A tömörítés használat közben be- és kikapcsolható, a változtatás csak az újonnan kiírt adatokat érinti.
2.16 Adaptive Replacement Cache
Újabb gyorsítótár-kezelés, ami az elterjedt LRU-nál (Least Recently Used) jobban teljesít.
2.17 Egyéb tulajdonságok
- Posix és NFSv4 ACL modellek támogatása
- A poolok egyszerűen mozgathatóak gépek között exportálással és importálással
- Intelligens prefetch: például stream szolgáltatás esetén hasznos
- Pipeline I/O: A logikai kötetkezelő legalsó rétege. Minden, a diszkre kiírt vagy beolvasott adat ezen a csővezetéken halad át(ez az úgynevezett ZIO). Ez a műveleteket csővezetékbe szervezi, ezzel próbálja növelni a párhuzamosíthatóságot. Ilyen műveletek például az ellenőrző kód számítása és a tömörítés.
- Dinamikus metaadat-allokáció
- Prioritásos belső I/O ütemező
- Minden metaadatot legalább két példányban tárol. Ez írásnál overheadet okoz, de egyrészt javítja a megbízhatóságot, másrészt olvasásnál növelheti is a teljesítményt.
- Nincs töredezettség-mentesítő eszköz hozzá, pedig copy-on-write használata miatt sok írásnál töredezetté válhat a fájlrendszer.
3 Operációs rendszerek
A ZFS elsődleges platformja a Sun saját operációs rendszere, a Solaris/OpenSolaris.
Mivel nyílt forráskódú, ezért további rendszerekbe is bekerült:
FreeBSD 8.0 óta támogatja a zpool v13-at, a 8.1 a v14-et.
A NetBSD ZFS port fejlesztés alatt áll.
A Linux kernelbe hivatalosan az eredeti kód nem kerülhet bele, mivel a ZFS kódja CDDL licenc alatt érhető el, ami nem kompatibilis a Linux GPL licenszével. A kernelbe csak egy olyan ZFS driver reimplementáció kerülhet bele, amelynek kódja GPL kompatibilis. Ilyen megvalósításon dolgozik például a http://zfsonlinux.org/ projekt.
Linuxon a ZFS alternatívája lehet a btrfs, amely tervek szerint a ZFS-hez hasonló funkcionalitással fog rendelkezni. Ez azonban még fejlesztés alatt áll, éles használatra nem alkalmas.
Linuxra készül egy natív kernel-space és egy userspace verzió, utóbbi a Linux kernel FUSE interfészét használja.
A FUSE előnye a kernel-space megvalósítással szemben, hogy a fájlrendszer kódjának nem kell GPL kompatibilisnek lennie, valamint a driver összeomlása nem okozza az egész rendszer leállását, cserébe viszont kisebb teljesítménnyel bír.
4 ZFS/Linux-FUSE
A forráskód letölthető a http://zfs-fuse.net oldalról. Ez tartalmazza a userspace driver-t, programkönyvtárakat és userspace eszközöket. Ez az írás a 0.6.9-es verziót mutatja be, amely a ZFS 23-as verzióját támogatja.
4.1 Telepítés
A használatához legalább 2.6-os verziójú FUSE-t támogató kernel szükséges. A függőségek és SCons telepítése után lefordítani a következő parancsokkal lehet:
root@home:/# cd src root@home:/# scons
Ha sikeresen lefordult, telepíteni a következő paranccsal lehet:
root@home:/# scons install
4.2 ZFS/FUSE daemon indítása
Mivel a fájlrendszer driver user-space, ezért használatához egy daemon processz indítása szükséges:
root@home:/# zfs-fuse
4.3 ZFS eszközök
A fuse-zfs telepítése után az alábbi fontosabb eszközöket kapjuk:
- zpool: poolok adminisztrációja
- zfs: ZFS fájlrendszerek adminisztrációja
- zdb: ZFS debugger, verziószám lekérdezése
4.4 Poolok adminisztrációja
4.4.1 Pool létrehozása
Összefűzés RAID-0-szerűen:
zpool create -m <csatolási pont> <pool név> <vdev lista>
Egy példa:
zpool create pool1 /dev/sda2 /dev/sda3
Itt létrehoztuk a pool1 nevű ZFS pool-t a /dev/sda2 és /dev/sda3 blokkeszközökre. Ekkor létrejön a pool és csatolódik a /pool1 alá:
root@home:~# mount pool1 on /pool1 type fuse (rw,allow_other) ...
Az -m kapcsolóval más mount pontot is meg lehet adni, alapértelmezetten a gyökérbe csatol.
Az új pool önálló fájlrendszerként is használható, de a ZFS lehetőségei nem használhatóak így ki. Ha létrehozunk erre a poolra egy ZFS fájlrendszert, akkor azt a pool könyvtárába csatolja.
RAID-Z konfiguráció létrehozása:
zpool create <pool név> raidz <vdev lista>
Itt a raidz az egyszeres paritást jelenti. Lehet ezen kívül raidz2 és raidz3 (a megfelelő fájlrendszer-verziók esetén), ez dupla, illetve tripla paritást jelent. Előbbihez legalább három, utóbbihoz legalább négy eszköz szükséges.
A vdev-eknek azonos méretűeknek kell lenniük. Ha nem azok, akkor az -f kapcsoló megadásával hozható létre a pool. Ebben az esetben minden vdev-en csak akkora helyet használ fel, ami a legkisebb vdev mérete.
Példa dupla paritású RAID-Z építése /dev/sd[abc]1 eszközökre
zpool create pool1 raidz2 /dev/sda1 /dev/sdb1 /dev/sdc1
Tükrözés használata (mint RAID-1):
zpool create <pool név> mirror <vdev lista>
Itt a vdev-eknek azonos méretűeknek kell lenniük. Ha nem azok, akkor az -f kapcsoló megadásával hozható létre a pool. Ebben az esetben a mirror mérete a legkisebb vdev mérete lesz.
Lehetőség van egy létrehozott pool virtuális eszközéhez utólag mirrort rendelni a következő módon:
zpool attach <pool neve> <tükrözendő vdev a poolban> <új mirror vdev>
Itt ha a tükrözendő vdev nincs raid-z vagy mirror konfigurációban, akkor létrejön egy új mirror a parancsban megadott két eszközből. Ha a tükrözendő vdev már egy mirrornak a része, akkor ehhez a mirrorhoz fogja hozzáadni a vdev-et. Példa: Létrehozunk egy pool1 nevű egyszerű poolt a /zfs/vdev1.dat fájlból:
root@home:~# zpool create pool1 /zfs/vdev1.dat
root@home:~# zpool status pool: pool1 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 /zfs/vdev1.dat ONLINE 0 0 0 errors: No known data errors
Ezután hozzáadunk egy tükröt, ami a /zfs/vdev2.dat fájl lesz:
root@home:~# zpool attach pool1 /zfs/vdev1.dat /zfs/vdev2.dat
root@home:~# zpool status pool: pool1 state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Dec 17 01:55:22 2010 config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 /zfs/vdev1.dat ONLINE 0 0 0 /zfs/vdev2.dat ONLINE 0 0 0 75K resilvered errors: No known data errors
A status kimenetében jól látható, hogy létrejött egy mirror és újraszinkronizálta azt.
Ezután hozzáadunk egy új eszközt a tükörhöz a következő paranccsal:
root@home:~# zpool attach pool1 /zfs/vdev1.dat /zfs/vdev3.dat
root@home:~# zpool status pool: pool1 state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Dec 17 02:01:25 2010 config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 /zfs/vdev1.dat ONLINE 0 0 0 /zfs/vdev2.dat ONLINE 0 0 0 /zfs/vdev3.dat ONLINE 0 0 0 84K resilvered errors: No known data errors
Melegtartalék használata a poolban:
zpool create <pool név> <vdev lista> spare <tartalék vdev-ek>
Log eszköz használata:
zpool create <pool név> <vdev lista> log <vdev eszköz>
Összetettebb példa: Hozzunk létre pool1 néven a /dev/sda2 és /dev/sdb3 blokkeszközökre egy RAID-Z konfigurációt /zfs.log naplófájllal és /zfs.spare tartalékkal. Utóbbi kettő reguláris fájlok.
root@home:/# zpool create pool1 raidz /dev/sda2 /dev/sdb3 log /zfs.log spare /zfs.spare
4.4.2 Pool törlése
zpool destroy <pool név>
Ez törli a megadott poolt és felszabadítja a használt eszközöket. Előtte le kell csatolnia a rajta létrehozott fájlrendszereket, így a művelet csak akkor sikeres, ha nem használja semmi a fájlrendszert vagy ha -f kapcsolót használjuk.
4.4.3 Poolok listázása
root@home:/# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT pool1 3,88G 81K 3,87G 0% 1.00x ONLINE -
Ez kilistázza az összes olyan észlelt poolt, amit az adott verziójú ZFS driver kezelni tud.
4.4.4 Poolok állapotai
root@home:/# zpool status pool: pool1 state: ONLINE scrub: scrub completed after 0h0m with 0 errors on Wed Dec 8 00:18:31 2010 config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 sda2 ONLINE 0 0 0 sda3 AVAIL
Ez információkat ad a pool állapotáról, például a legutóbbi scrub hibakeresés eredménye és a poolban lévő eszközök állapota.
4.4.5 Pool frissítés
zpool upgrade -a
Ha van olyan pool a rendszerben, ami a jelenleginél régebbi ZFS verziójú, akkor ezzel a paranccsal frissíteni lehet a verzióját.
4.4.6 Pool importálás és exportálás
Pool importálása:
zpool import -d <könyvtár>
Pool exportálása:
zpool export <poolnév>
4.4.7 Scrub indítása
zpool scrub <pool név>
Ez elindít egy hibakeresést a megadott nevű poolon. A hibakeresés eredménye a zpool status paranccsal kérdezhető le.
Az első paranccsal kereshetőek a megadott könyvtárban poolok, a másodikban egy pool exportálható. Exportálás után a pool mozgathatóvá válik, nem használható és nem látható a zpool-al importálásig. Csak olyan poolt lehet exportálni, amin nincs mountolt fájlrendszer. A -D kapcsolóval törölt (destroyed) pool is importálható. Az -a kapcsolóval egyidejűleg keres és importálja a megtalált poolokat.
Példa:
root@home:/# zpool export pool1 # Exportáljuk a pool1-et
root@home:/# zpool import -a -d /dev
Ez utóbbi megkeresi a blokkeszközök alapján a poolokat és importálja azokat.
4.4.8 Device cseréje
Lehetőség van a poolban egy eszköz lecserélésére, például tartalékra.
Példa: a pool1-ben kicseréljük a /dev/sda3 eszközt /dev/sda4-re:
root@home:/# zpool offline pool1 /dev/sda3 Bringing device /dev/sda3 offline root@home:/# zpool replace pool1 /dev/sda3 /dev/sda4
4.5 ZFS adminisztráció
Egy fájlrendszert a következő módon azonosítunk: <pool név>/<fájlrendszer név>
Fájlrendszer létrehozása:
zfs create <létező pool>/<új fájlrendszer neve>
Példa:
root@home:/# zfs create pool1/fs1
Itt létrehozunk a pool1-en egy fs1 nevű fájlrendszert. A létrehozott fájlrendszer rögtön csatolva is lesz a /pool1/fs1 pontra.
Létrehozás attribútum megadásával:
zfs create -o <attribútum>=<érték> <létező pool>/<új fájlrendszer neve>
Átnevezés:
zfs rename <régi név> <új név>
Fájlrendszer törlése:
zfs destroy <fájlrendszer azonosító>
Létező fájlrendszer csatolása:
zfs mount <pool név>/<fájlrendszer név>
Lecsatolás:
zfs umount <pool név>/<fájlrendszer név>
Fájlrendszer-attribútumok beállítása és lekérdezése: Egy fájlrendszerhez számos attribútum tartozik, például tömörítsen-e.
Lekérdezés:
zfs get <attribútum> <fájlrendszer azonosító>
Attribútum értékének módosítása:
zfs set <attribútum>=<új érték> <fájlrendszer azonosító>
Példa: tömörítés lekérdezése:
root@home:/# zfs get compression pool1/fs1 NAME PROPERTY VALUE SOURCE pool1/fs1 compression gzip local
A legtöbb attribútum használat közben módosítható, de néhány attribútumot csak létrehozásnál lehet megadni.
Fontosabb fájlrendszer-attribútumok és lehetséges értékeik:
- Létrehozás után módosítható attribútumok:
- Csak olvasható mód: readonly = on | off
- Tömörítés: compression = on | off | lzjb | gzip | gzip-[1-9] | zle
- Másolatok számának beállítása: copies = [1-3] . Ebben az esetben az adatokat több másolatban tárolja, ha lehetséges, akkor külön eszközön. Ez nem azonos a pool szintű mirror-al, mert itt nem garantált több eszköz esetén sem az, hogy ugyanazon adat replikái különböző eszközökre kerülnek. Ezen kívül ha mirrorba különböző méretű eszközöket teszünk, akkor a nagyobb eszközökön kihasználatlan hely marad, míg Copies esetén minden eszközt teljesen ki lehet használni. Különbség továbbá az, hogy ez a tulajdonság online módon változtatható és csak az újonnan kiírt adatokra vonatkozik, ezért előállhat olyan eset, hogy különböző adatok különböző számú másolatban tárolódnak egy fájlrendszeren belül.
- Deduplikáció: dedup = on, off
- Hozzáférési idő használata: atime = on | off
- Adatintegritás-ellenőrzés: checksum = on | off | fletcher2 | fletcher4 | sha256 . Ezt nem ajánlott kikapcsolni, alapértelmezetten be van kapcsolva, fletcher4 algoritmus az alapértelmezett.
- Végrehajtás engedélyezése a fájlrendszeren: exec = on | off
- Fájlrendszerméret-korlátozás: quota = <méret> | none
- Setuid engedélyezése: setuid = on | off
- Bővített attribútumok engedélyezése: xattr = on | off
- Titkosítás (jelenlegi fuse-zfs verzió még nem támogatja!): encryption = on | off
- Létrehozás után nem módosítható attribútumok:
- fájlnév case sensitivity: casesensitivity = sensitive | insensitive | mixed
- Unicode fájlnevek normalizálásának algoritmusa: normalization = none | formC | formD | formKC | formKD . Ha engedélyezzük, akkor a fájlneveken végzett összehasonlító műveletek esetén a fájlneveket unicode kódolásúnak értelmezi és ezek normalizált alakjait hasonlítja össze. Kikapcsolása esetén összehasonlításnál nem értelmezi kódolás szerint a fájlneveket.
- Csak UTF-8 karakterek engedélyezése: utf8only = on | off . Ha be van kapcsolva, akkor visszautasít olyan fájlneveket, ami az UTF-8 karakterkészletében nem szereplő karaktert tartalmaz. Kikapcsolása esetén nem értelmezi a fájlneveket.
Snapshotok: Snapshot létrehozása:
zfs snapshot <fájlrendszer azonosító>@<snapshot név>
Példa: Egy 201012 nevű, majd egy 201012_2 nevű snapshotot hozunk létre az fs1 fájlrendszerről:
root@home:/# zfs snapshot pool1/fs1@201012
root@home:/# zfs snapshot pool1/fs1@201012_2
A snapshotokat a következő paranccsal lehet kilistázni táblázatos formában:
root@home:/# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT pool1/fs1@201012 21K - 13,4M - pool1/fs1@201012_2 20K - 13,4M -
Korábbi snapshot visszaállítása:
zfs rollback <fájlrendszer azonosító>@<snapshot név>
Példa: Állítsuk vissza az fs1 fájlrendszert a 201012 nevű snapshotra:
root@home:/# zfs rollback pool1/fs1@201012
Klónozás:
Egy fájlrendszernek csak egy snapshotjából lehet klónt létrehozni:
zfs clone <fájlrendszer azonosító>@<snapshot név> <klónozott fájlrendszer neve>
Példa: hozzuk létre fs1-nek a 201012 snapshotból készített klónját
root@home:/# zfs clone pool1/fs1@201012 pool1/fs1clone
Ekkor létrejön a pool1-ben a klónozott fájlrendszer:
root@home:/# ls fs1 fs1clone
Egy klón fájlrendszer függetlenné tehető a snapshot-tól a következő paranccsal, így a snapshot törölhető, egyébként a klón törléséig ez nem tehető meg:
root@home:/# zfs promote pool1/fs1clone
4.6 ZFS Volume
Egy poolhoz nem csak fájlrendszer, hanem ZFS kötet is hozzárendelhető, amelyet blokkeszközként érhetünk el. Ez a funkció a 0.6.9-es verziójú ZFS/FUSE-ban még nincs megvalósítva.
Létrehozás:
# zfs create -V <kötet méret> <pool név>/<kötet név>
Ekkor létrejön a kötet a /dev/zvol könyvtárban.
5 Irodalomjegyzék
Angol Wikipédia cikk
ZFS/FUSE projekt weboldala
http://www.sun.com/bigadmin/features/articles/zfs_part1.scalable.jsp
http://hub.opensolaris.org/bin/view/Community+Group+zfs/source
http://blogs.sun.com/roch/entry/the_new_zfs_write_throttle
http://www.solarisinternals.com/wiki/index.php/ZFS_Performance
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
http://hub.opensolaris.org/bin/view/Community+Group+zfs/1