A ZFS egy helyi fájlrendszer és logikai kötetkezelő, amelyet a Sun Microsystems Inc. hozott létre az adatok elhelyezésének, tárolásának és visszakeresésének irányítására és ellenőrzésére a vállalati szintű számítástechnikai rendszerekben.
A ZFS fájlrendszert és kötetkezelőt adatintegritás, nagyfokú skálázhatóság és beépített tárolási funkciók jellemzik, mint például:
- Replikáció – valamiről másolat (másolat) készítésének folyamata.
- Deduplikáció – olyan folyamat, amely megszünteti az adatok felesleges másolatait és csökkenti a tárolási többletköltséget.
- Tömörítés – az adatok ábrázolásához szükséges bitek számának csökkentése.
- Snapshotok – egy adott időpontban lévő adatok referenciajelöléseinek összessége.
- Klónok – valaminek az azonos másolata.
- Adatvédelem – a fontos információk megóvásának folyamata a sérüléstől és/vagy elvesztéstől.
A ZFS története
A Sun mérnökei 2001-ben kezdték el a ZFS fejlesztését a vállalat Unix-alapú Solaris operációs rendszeréhez (OS). A Sun 2005-ben a ZFS forráskódját közös fejlesztési és terjesztési licenc (CDDL) alatt adta ki a nyílt forráskódú OpenSolaris operációs rendszer részeként. A Sun és más gyártók képviselőiből álló fejlesztői közösség a nyílt forráskód továbbfejlesztésén dolgozott, és a ZFS-t további operációs rendszerekre, köztük a FreeBSD-re, a Linuxra és a Mac OS X-re portolta.
A ZFS-t is tartalmazó OpenSolaris nyílt forráskódú projekt azután ért véget, hogy az Oracle Corp. 2010-ben felvásárolta a Sun-t, és védjeggyel védette a ZFS kifejezést. Az Oracle mérnökei továbbra is fejlesztik és bővítik a Solaris ZFS funkcióit. Az Oracle a saját ZFS kódját használja az Oracle Solaris, az Oracle ZFS Storage Appliance és más Oracle technológiák alapjaként.
A fejlesztői közösség egy új nyílt forráskódú projektet indított OpenZFS néven, amely az OpenSolaris végleges kiadásában a ZFS forráskódján alapul. A nyílt közösség az OpenZFS kód új funkcióin, javításain és hibajavításain dolgozik. Az OpenZFS-t támogató operációs rendszerek közé tartozik az Apple OS X, a FreeBSD, az illumos (amely az OpenSolarison alapul), valamint az olyan Linux-változatok, mint a Debian, a Gentoo és az Ubuntu. Az OpenZFS minden Linux-disztribúción működik, de csak néhány kereskedelmi forgalmazó biztosítja a disztribúciója részeként. Az OpenZFS-re épülő kereskedelmi termékekkel rendelkező vállalatok közé tartozik a Cloudscaling, a Datto, a Delphix, a Joyent, a Nexenta, a SoftNAS és a Spectra Logic.
A ZFS és az OpenZFS általában olyan vállalatok számára vonzó, amelyeknek nagy mennyiségű adatot kell kezelniük és biztosítaniuk kell az adatok integritását. A felhasználók közé tartoznak a tudományos intézmények, nemzeti laboratóriumok, kormányzati ügynökségek, pénzügyi cégek, távközlési, valamint média- és szórakoztatóipari vállalatok.
A ZFS eredetileg a Zettabyte File System rövidítése volt, de a zettabyte szónak már nincs jelentősége a fájlrendszerrel összefüggésben. A ZFS 128 bites fájlrendszerként 256 kvadrillió zettabájtig skálázható.
Hogyan működik a ZFS
A ZFS-t úgy tervezték, hogy egyetlen szerveren fusson, esetleg több száz, ha nem több ezer csatlakoztatott tárolómeghajtóval. A ZFS összevonja a rendelkezésre álló tárhelyet, és az összes lemezt egyetlen egységként kezeli. A felhasználó további tárolómeghajtókat adhat hozzá a poolhoz, ha a fájlrendszernek további kapacitásra van szüksége. A ZFS nagymértékben skálázható, és támogatja a nagy maximális fájlméretet.
A ZFS a metaadatok legalább két példányát tárolja minden egyes adat lemezre írása esetén. A metaadatok olyan információkat tartalmaznak, mint például a lemezszektorok, ahol az adatokat tárolják, az adatblokkok mérete és az adat bináris számjegyeinek ellenőrző összege. Amikor egy felhasználó hozzáférést kér egy fájlhoz, egy ellenőrző összeg algoritmus számítást végez annak ellenőrzésére, hogy a lekérdezett adatok megegyeznek-e a lemezre írt eredeti bitekkel. Ha az ellenőrző összeg ellentmondást észlel, megjelöli a rossz adatot. Tükrözött tárolóközponttal vagy a RAID ZFS-változatával rendelkező rendszerekben a ZFS képes a helyes másolatot a másik meghajtóról lekérni és a sérült adatkópiát megjavítani.
A ZFS-t általában copy-on-write fájlrendszernek nevezik, bár az Oracle redirect on write-ként írja le. Amikor a ZFS adatokat ír a lemezre, nem írja felül a helyükön lévő adatokat. A ZFS egy új blokkot ír a lemez egy másik pontjára, és frissíti a metaadatokat, hogy az újonnan írt blokkra mutasson, miközben megtartja az adatok régebbi verzióit is.
A valódi copy-on-write fájlrendszer egy adatblokk pontos másolatát készítené el egy külön helyre, mielőtt felülírná az eredeti blokkot. Az adatok felülírása előtt a rendszernek be kellene olvasnia a blokk korábbi értékét. Egy copy-on-write fájlrendszer három I/O műveletet – olvasás, módosítás és írás – igényel minden egyes adatíráshoz. Ezzel szemben a redirect-on-write rendszer csak egy I/O műveletet igényel, ami nagyobb hatékonyságot és nagyobb teljesítményt tesz lehetővé.
A ZFS népszerű választás a hálózathoz kapcsolt tárolórendszerekben, ahol az NFS fut a fájlrendszer tetején, valamint a virtuális szerverkörnyezetekben. Egy másik gyakori telepítési forgatókönyv egy fürtözött fájlrendszer, például a General Parallel File System (GPFS) vagy a Lustre rétegzése a ZFS tetejére, hogy lehetővé tegye a további kiszolgálócsomópontokra történő skálázást. Az OpenStack-felhasználók a ZFS-t a Cinder tömbtároló és a Swift objektumtároló mögöttes fájlrendszereként telepíthetik.
A ZFS legfontosabb jellemzői
Snapshotok és klónok: A ZFS és az OpenZFS nagy hatékonysággal és sebességgel készíthet point-in-time másolatokat a fájlrendszerről, mivel a rendszer megtartja az adatok összes másolatát. A pillanatfelvételek a fájlrendszer megváltoztathatatlan másolatai, míg a klónok módosíthatók. A pillanatképek és a klónok a Solaris ZFS-sel a rendszerindítási környezetekbe integrálódnak, lehetővé téve a felhasználók számára, hogy visszaálljanak egy pillanatképre, ha a rendszer javításakor vagy frissítésekor valami baj történik. A ZFS másik potenciális előnye a zsarolóprogramok elleni helyreállítási technika.
RAID-Z: A RAID-Z lehetővé teszi ugyanazon adatok több helyen történő tárolását a hibatűrés és a teljesítmény javítása érdekében. A rendszer az elveszett meghajtón lévő adatokat a rendszer többi meghajtóján tárolt információk felhasználásával rekonstruálja. A RAID-Z a RAID 5-höz hasonlóan minden meghajtón csíkozza a paritásinformációkat, hogy a tárolórendszer akkor is működőképes legyen, ha az egyik meghajtó meghibásodik. A RAID-Z esetében azonban a csíkozott adatok teljes blokkok, amelyek mérete változó. Bár a RAID-Z-t általában a RAID 5-höz hasonlítják, néhány műveletet másképp hajt végre, hogy megoldja a hagyományos RAID egyes régóta fennálló problémáit. Az egyik probléma, amelyet a RAID-Z megold, az úgynevezett írási lyuk effektus, amikor a rendszer nem tudja meghatározni, hogy áramkimaradás vagy katasztrofális rendszerszünet miatt mely adat- vagy paritásblokkokat írták a lemezre. A hagyományos RAID-ot használó rendszerek gyártói általában szünetmentes tápegység vagy dedikált hardver használatával oldják meg ezt a problémát.
A RAID-Z2 a RAID 6-hoz hasonlóan támogatja két tárolóegység elvesztését, a RAID-Z3 pedig három tárolóegység elvesztését is elviseli. A felhasználóknak lehetőségük van a meghajtók csoportos elrendezésére, mint a hagyományos RAID esetében. Például egy két hat meghajtóból álló csoportot tartalmazó, RAID-Z3-ként beállított rendszer mindkét csoportban elviseli három meghajtó elvesztését.
Tömörítés: Az inline adattömörítés a ZFS és az OpenZFS beépített funkciója, amely csökkenti az adatok tárolásához szükséges bitek számát. A ZFS és az OpenZFS mindegyike számos tömörítési algoritmust támogat. A felhasználóknak lehetőségük van a soron belüli tömörítés engedélyezésére vagy letiltására.
Deduplikáció: Az inline adatdeduplikáció a ZFS és az OpenZFS beépített funkciója, amely a tárolási hatékonyságot a redundáns adatok kiküszöbölésével teszi lehetővé. A ZFS és az OpenZFS úgy találja meg a duplikált adatokat, hogy megnézi a blokk ellenőrző összegét, amelynek mérete változhat. A felhasználók engedélyezhetik vagy letilthatják az inline deduplikációt.
ZFS send/receive: A ZFS és az OpenZFS lehetővé teszi a fájlrendszer pillanatfelvételének elküldését egy másik kiszolgáló csomópontra, lehetővé téve a felhasználó számára az adatok replikálását egy különálló rendszerre, például biztonsági mentés vagy felhőalapú tárolóba történő adatmigráció céljából.
Biztonság: A ZFS és az OpenZFS támogatja a delegált jogosultságokat és a finomabb hozzáférés-vezérlési listákat annak kezelésére, hogy ki végezhet adminisztrációs feladatokat. A felhasználóknak lehetőségük van a ZFS-t csak olvashatóvá tenni, így az adatok nem módosíthatók. Az Oracle támogatja a titkosítást a ZFS-ben a Solaris rendszeren.
ZFS előnyei és korlátai
A ZFS integrálja a fájlrendszert és a kötetkezelőt, így a felhasználóknak nem kell külön eszközöket és parancskészleteket beszerezniük és megtanulniuk. A ZFS gazdag funkciókészletet és adatszolgáltatásokat kínál ingyenesen, mivel az Oracle operációs rendszerbe van beépítve. A nyílt forráskódú OpenZFS szabadon elérhető. A fájlrendszer bővíthető meghajtók hozzáadásával a tárolóállományhoz. A hagyományos fájlrendszereknél a kapacitás növeléséhez a lemezpartíciót át kell méretezni, és a felhasználóknak gyakran kötetkezelő termékekre van szükségük a segítségükre.
A ZFS egyetlen szerveren való futtatásra korlátozódik, szemben az elosztott vagy párhuzamos fájlrendszerekkel, mint például a GPFS és a Lustre, amelyek több szerverre skálázhatók.
A ZFS által kínált gazdag funkciókészlet bonyolulttá teheti a szoftver használatát és kezelését. Az olyan funkciók, mint például a ZFS integrált ellenőrző összeg algoritmusai további feldolgozási teljesítményt igényelhetnek és befolyásolhatják a teljesítményt.
A Linux közösségben a ZFS kód és a bináris kernelmodulok újraelosztásával kapcsolatban különböző vélemények vannak a licenceléssel kapcsolatban. A Red Hat például problémásnak tartja a CDDL alatt védett kód terjesztését az általános nyilvános licenc (GPL) alatt védett kóddal együtt. Ezzel szemben az Ubuntut forgalmazó Canonical úgy határozott, hogy megfelel a CDDL és a GPL licenc feltételeinek.
ZFS vs. OpenZFS
Az Oracle ZFS és a nyílt forráskódú OpenZFS ugyanabból a ZFS forráskódból származik. Külön-külön az Oracle és a nyílt forráskódú közösség bővítéseket tett hozzá és jelentős teljesítményjavításokat hajtott végre a ZFS-hez, illetve az OpenZFS-hez. Az Oracle ZFS frissítései saját fejlesztésűek és csak az Oracle technológiáiban érhetők el. A nyílt forráskódú OpenZFS frissítései szabadon hozzáférhetők.
Az Oracle által a ZFS-hez 2010 óta végrehajtott fejlesztések listája a következőket tartalmazza:
- titkosítás;
- támogatás a tömörített adatoknak az operációs rendszer újraindításai közötti megőrzéséhez az L2 adaptív helyettesítő gyorsítótárban (ARC);
- indítható Extensible Firmware Interface címkék, amelyek támogatást nyújtanak a 2 TB-nál nagyobb méretű fizikai lemezekhez és virtuális lemezkötetekhez;
- alapértelmezett felhasználói és csoportkvóták; és
- pool/fájlrendszer felügyelet.
A nyílt forráskódú közösség által az OpenZFS-hez készített frissítések listája a következőket tartalmazza:
- kiegészítő tömörítési algoritmusok;
- resumable send/receive, amely lehetővé teszi, hogy egy hosszú ideig futó ZFS küldési/fogadási művelet újrainduljon a rendszer megszakadásának pontjáról;
- compressed send/receive, amely lehetővé teszi, hogy a rendszer tömörített adatokat küldjön egyik ZFS-poolból a másikba anélkül, hogy az adatokat a küldő csomópontról a célpontra történő mozgáskor dekomprimálni/visszatömöríteni kellene;
- kompresszált ARC, amely lehetővé teszi a ZFS számára, hogy a tömörített adatokat a memóriában tartsa, így a gyorsítótárban nagyobb munkaadat-készlet áll rendelkezésre; és
- maximális blokkméret növelése 128 KB-ról 16 MB-ra a teljesítmény javítása érdekében a nagy fájlokkal való munka során, valamint az adatok gyorsabb helyreállítása meghajtóhiba utáni helyreállításkor.