ZFS
A ZFS a Sun Microsystems által kifejlesztett (szoftver) RAID-kezelő és 128 bites fájlrendszer, mely egyben fejlett kötetkezelő is. Támogatja a deduplikációt, a tömörítést, a titkosítást, a csak olvasható snapshotok létrehozását. A snapshot klónozható írható fájlrendszerré.
Copy on write(en) módon működik,[1] amitől szabálytalan leállás esetén sem sérül meg a fájlrendszere.
Minden diszk-blokkról ellenőrző összeget tárol, ami olyankor is lehetővé teszi a hibafelismerést, ha a diszk nem jelzi a hibát.
Licence a CDDL.
Legelőször a Solaris 10-ben jelent meg. Akkor még csak opcionális fájlrendszerként szerepelt az UFS mellett. A Solaris 11-ben már ez az elsődleges fájlrendszer.
Működése
Két rétegből áll. A pool a ZFS diszkes tárterülete redundáns információkkal, hibafelismeréssel. E tárolóterületen ZFS fájlrendszereket (dataseteket) és raw diskeket (a ZFS-től független programok által használt diszkterületeket, pl. swap-ot) lehet létrehozni.
Pool
A pool a ZFS tárterülete: a diszkeket (teljes diszkeket vagy partíciókat) tartalmazza, melyek összefűzhetők és/vagy (szoftver) RAID-be köthetők. A ZFS-nek saját (a szokásoshoz hasonló) RAID megoldásai vannak, melyek támogatják a tartalék diszkek használatát is. A tartalék diszk nem pörög (az élettartam növelése érdekében): csak szükség esetén kerül használatba. A redundanciát a többi diszk adja.
A ZFS ellenőrző összegeket ír minden diszk blokkba. Ha olvasáskor az összeg nem jó, a keresett blokkot a redundáns információk segítségével helyreállítja, visszaadja az alkalmazásnak, és megpróbálja visszaírni. Ha nem sikerül, a diszket hibásnak nyilvánítja. Más szóval: a ZFS olyankor is észreveszi a diszkhibát, ha a diszk maga nem.
Ha valamelyik éles diszk meghibásodik a pool-ban, a ZFS leállítja, és a redundáns információk segítségével (általában lassabban) működik tovább. Ha van tartalék diszk, a ZFS automatikusan használatba veszi és szinkronizálja a redundáns információk alapján; ezzel visszaáll az eredeti sebesség és redundancia. A gép gazdájának annyi a dolga, hogy kicserélje a diszket, kivegye a rosszat a pool-konfigurációból, és bekonfigurálja az újat (tartaléknak vagy élesben használtnak; utóbbi esetben megkezdődik a szinkronizáció). Mindezt természetesen menet közben.
A pool területén dataset-eket és raw diszkeket lehet létrehozni. Mindkét terület fel- és lecsatolható.
Dataset
A dataset-ek ZFS fájlrendszerek. A teljes pool területét használhatják, a helyfoglalásuk kvótákkal szabályozható. Nincs eszközfájljuk(en): minden rajtuk végzett műveletet a zfs
program hajt végre, beleértve a fel- és lecsatolást(en) is (következésképp nem szerepelnek /etc/fstab
-ban: a csatolási pont az egyik dataset-tulajdonság). Ismerik a szokásos és kiterjesztett fájlrendszer-tulajdonságokat (csak olvasható, access control list, stb.), röptében tömöríthetők. Konzisztens, csak olvasható snapshot-ok hozhatók létre belőlük menet közben is, melyek menthetők, vagy átalakíthatók írható datasetté.
A datasetben gyerek-dataset hozható létre, mely automatikusan örökli a szülő tulajdonságait. Az öröklött tulajdonságok bármikor felülírhatók. A gyerek-dataset ugyanolyan dataset, mint a szülő: fel- és lecsatolható, lehet gyerek-datasetje. Ilyen módon a datasetek faszerkezetbe rendezhetők, általában az elérési útnak megfelelően.
A dataset tulajdonságának változása nem visszamenőleges. Ha pl. beállítjuk a tömörítést, a régi fájlok nem változnak, de az újakat már tömörítve tárolja a ZFS.
Raw disk
A raw diszk(en) a poolból külső programok számára kiajánlott diszkterület, mely swap-ként használható, a ZFS számára külső fájlrendszer (pl. ext4) hozható létre rajtuk, vagy erre képes alkalmazások (pl. adatbáziskezelők) közvetlenül használhatják őket. Van eszközfájljuk, a méretüket a létrehozáskor meg kell adni. Utólag a terület mérete tetszőlegesen módosítható (amíg a poolban van hely), amit a területen levő fájlrendszerrel vagy swap-pal is tudatni kell (ellentétben a dataset-tel: ott ez automatikus). Más szóval: a raw disk a hagyományos fájlrendszer-kezelést teszi lehetővé, a ZFS ez esetben csak a (beállíthatóan tömörített, deduplikált, titkosított), változtatható méretű területet adja, a pool által biztosított diszk-redundanciával.
Kvóta
A ZFS-ben kétféle kvóta van. Az egyik más fájlrendszerekben is szokásos: a felhasználó által birtokolt fájlok összterületét korlátozza. A másik a datasetek területét szabályozza.
A datasetek alaphelyzetben a zpool teljes területét használhatják. Ez nagyon kényelmessé teszi a területgazdálkodást, néha azonban szükség van szabályozásra. Ez vonatkozhatik
- a fájlrendszerre magára, vagy a fájlrendszer és a gyerek-fájlrendszerek összterületére
- lehet minimális vagy maximális érték.
A maximális korlátot a fájlrendszer nem lépheti túl. Ha már túllépte (mert a ténylegesen foglaltnál kisebb korlátot adtunk meg), akkor több fájl nem hozható benne létre.
A minimális korlát azt jelenti, hogy legalább ekkora területet biztosítani kell a fájlrendszernek (a gyerekeivel együtt vagy azok nélkül). Ezt a területet a dataset a sajátjaként lefoglalja a pool-ból, de amíg van közös hely, onnan kap területet. A saját területet akkor kezdi használni, ha másutt már nincs hely a poolban.
Minimális területre szükség lehet pl. a bejövő emaileket vagy a logokat tároló fájlrendszerben. Nem adható meg nagyobb minimális hely datasetnek, mint amennyi a poolban ténylegesen van. A minimális terület csökkenti a pool területét a többi dataset számára.
Támogatottsága
Elsősorban az Oracle Solaris 10-es valamint 11-es verziójában találkozhatunk vele, de elsődleges fájlrendszere az Illumos alapú rendszereknek (OpenIndiana, SmartOS, Illumian). Támogatják a különböző BSD verziók, a Mac OS X és a linux is.
ZFS linuxon
Linuxon a ZFS egyelőre[2] nem teszi lehetővé a ZFS fájlrendszerek titkosítását. Titkosított fájlrendszert egyelőre csak raw disk módban lehet létrehozni, más fájlrendszerekhez hasonlóan (pl. cryptsetup).
A ZFS CDDL licence miatt a ZFS nem forgalmazható bináris, csak forrás alakban. Ez azt jelenti, hogy a szokásos install és rescue CD-k és USB-k nem tartalmazzák. Ez olyankor probléma, ha már a root fájlrendszert is ZFS-ben akarjuk létrehozni.
Linuxon a ZFS-t utólag fordított kernel-modulok formájában valósították meg (dkms).
Az Ubuntu a 16.04 (LTS) verziótól kezdve támogatja a ZFS-t. Ez azonban csak a kernel-modulokat jelenti: az Ubuntu telepítőjén nincsenek fenn a ZFS-t kezelő parancsok, és a telepítő menürendszerében nem választható ki a ZFS fájlrendszer (sem root-nak, sem más fájlrendszernek). Ez azt jelenti, hogy a menüs telepítővel nem lehet ZFS root fájlrendszerű gépet telepíteni ubuntuban sem,[3] a menüs telepítő használatakor pedig utólag kell átmozgatni a hagyományos fájlrendszerből ZFS-be az oda szánt fájlokat.
Jegyzetek
- ↑ A módosított blokkot először üres helyre írja fel, és ha az írás sikerült, akkor teszi be a blokkot a fájl területére.
- ↑ 2018. júniusban.
- ↑ Ubuntu 16.04 Root on ZFS (GitHub) a 3. résztől: rendszer install ZFS root fájlrendszerrel
Források
- ZFS hivatalos honlap
- Oracle Solaris ZFS Administration Guide
- ZFS (Linux wiki)
Linuxakadémia ingyenes internetes előadások. Előadó: Czakó Krisztián.
- A ZFS alapjai (2016. március 3.)
- Stretch telepítés (2017. augusztus 15.)
- Ubuntu 18 telepítés (2018. május 2.)
- Ubuntu szerver management (2018. május 15.) diszkek a pool-ban, snapshot
Licenc:
- Bradley M. Kuhn – Karen M. Sandler: GPL Violations Related to Combining ZFS and Linux. sfconservancy.org (2016. február 25.) (Hozzáférés: 2017. szeptember 14.)
További információk
- Saját linux live CD készítése ZFS fájlrendszerrel (magyar Wikikönyvek)
Informatikai portál • összefoglaló, színes tartalomajánló lap