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 szerkesztés

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 szerkesztés

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 szerkesztés

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 nevű 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 szerkesztés

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 szerkesztés

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 szerkesztés

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 szerkesztés

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 szerkesztés

  1. 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.
  2. 2018. júniusban.
  3. Ubuntu 16.04 Root on ZFS (GitHub) a 3. résztől: rendszer install ZFS root fájlrendszerrel

Források szerkesztés

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:

További információk szerkesztés