Majdnem két év fejlesztés után kiadás , a ZFS fájlrendszer megvalósítása, mint a Linux kernel modulja. A modul működését a Linux 2.6.32 és 5.1 közötti kernellel ellenőrizték. A kész telepítőcsomagok hamarosan a legnagyobb Linux disztribúciókhoz, beleértve a Debiant, Ubuntut, Fedorát, RHEL/CentOS-t. A ZFS on Linux modul már beépítve van a Debian, Ubuntu, Gentoo, Sabayon Linux és ALT Linux disztribúciókba.
A ZFS on Linux keretében megvalósításra került a ZFS összetevői, amelyek a fájlrendszer működésével és a kötetkezelő működésével kapcsolatosak. Különösen megvalósították az alábbi összetevőket: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) és ZPL (ZFS POSIX Layer). Ezenkívül a projekt lehetővé teszi a ZFS használatát backendként a Lustre klaszteres fájlrendszerhez. A projekt fejlesztése az OpenSolarisból importált eredeti ZFS kód alapján történt, amelyet az Illumos közösség fejlesztései és javításai bővítettek ki. A projekt a Livermore-i Nemzeti Laboratórium munkatársainak részvételével fejlődik az Egyesült Államok Energiaügyi Minisztériumának szerződése alapján.
A kód a CDDL nyílt licenc alatt terjeszthető, amely nem kompatibilis a GPLv2-vel, így nem lehetséges a ZFS on Linux integrálása a Linux kernel alapbranchéba, mivel GPLv2 és CDDL licenc alatt álló kód keverése nem megengedett. E licenc inkompatibilitás megkerülése érdekében úgy döntöttek, hogy a terméket teljes egészében CDDL licenc alatt terjesztik, mint külön letölthető modult, amely a kerneltől külön érkezik. A ZFS on Linux kódalap stabilitása más Linux fájlrendszerekhez hasonlítva értékelhető.
Főbb változások:
- Beépített támogatás került a tárolt adatok titkosítására a fájlrendszer és a partíciók szintjén. A titkosítás alapértelmezetten az aes-256-ccm algoritmust használja. A titkosítási kulcsok betöltésére a „zfs load-key” parancsot javasolják;
- Megvalósult a titkosított adatok átvitelének lehetősége a „zfs send” és „zfs receive” parancsok végrehajtása során. A „-w” opció megadásával a medencében már titkosított adatok átkonvertálás nélkül kerülnek át egy másik medencébe. Ilyen másolás során az adatok védettek a küldő fél kulcsával, ami lehetővé teszi e mód használatát megbízhatatlan rendszereken történő biztonsági mentésekhez (a címzett kompromittálódása esetén a támadó a kulcs hiányában nem férhet hozzá az adatokhoz);
- Hozzáadtuk a támogatást a tároló medencéhez csatlakoztatott, akár egyenként, akár tükörként csatlakoztatott elsődleges tárolók eltávolításához. Az eltávolítás a „zpool remove” parancs segítségével történik. Az eltávolítási folyamat során a kizárt tárolóról az adatok átmásolásra kerülnek a medencében maradó elsődleges tárolókra;
- Hozzáadtuk a „zpool checkpoint” parancsot a medence aktuális állapotának rögzítésére, lehetővé téve a későbbi változások visszaállítását a mentett időpontra (az egész medencéről készül egy pillanatfelvétel). Ez a lehetőség hasznos lehet potenciálisan veszélyes komplex adminisztratív műveletek során, amelyek normál körülmények között visszafordíthatatlan változásokhoz vezetnének (például a ZFS új funkcióinak aktiválása vagy az adatok törlése);
- Hozzáadtuk a „zpool trim” parancsot, ami lehetővé teszi a tárolt meghajtók számára, hogy értesüljenek azokról a szektorokról, amelyeket már nem használnak. A TRIM művelet alkalmazása növeli az SSD-meghajtók hatékonyságát, és megakadályozza teljesítményük degradációját. Az állandó háttérfolyamatok engedélyezéséhez új „autotrim” tulajdonság került bevezetésre;
- Hozzáadtuk a „zpool initialize” parancsot az összes ki nem osztott lemezterület inicializálásához, ami azonnali használatra készíti azt, anélkül, hogy teljesítménycsökkenés lépne fel az első hozzáférés során (például virtualizált tárolók, mint a VMware VMDK elhelyezésekor);
- Hozzáadva a projekt szintű számviteli és kvóta támogatása, kiegészítve a korábban elérhető felhasználói és csoport szintű kvótákat. Lényegében a projektek egy különálló objektumtér, amely egy egyedi azonosítóval (project ID) van összefüggésben. Az összekapcsolás a ‘chattr -p’ parancs segítségével vagy az attribútumok öröklődése révén történik. A projektek kezeléséhez a ‘zfs project’ és ‘zfs projectspace’ parancsok állnak rendelkezésre, amelyek lehetővé teszik a projektek létrehozását és a lemezterület határok meghatározását;
- Lehetővé vált Lua-scriptek létrehozása a ZFS-sel végzett különböző feladatok automatizálására. A scriptek speciális elszigetelt környezetekben futnak a ‘zpool program’ paranccsal;
- Megvalósult egy új könyvtár , amely stabil API-t biztosít a ZFS adminisztrálásához Python nyelvű alkalmazásokból. A könyvtár a libzfs_core fölé épül, és azonos funkciókészletet kínál, de Python számára megfelelőbb adatmódokat alkalmaz;
- Biztosítva van az arcstat, arcsummary és dbufstat segédprogramok kompatibilitása Python 3-mal. Az arcstat.py, arc_summary.py és dbufstat.py segédprogramok kiterjesztés nélküli változataira lettek átnevezve;
- Hozzáadva a Linux kernel Direct IO (O_DIRECT) interfész támogatása, amely lehetővé teszi az adatok elérését pufferelés nélkül és a cache megkerülésével;
- Teljesítményoptimalizálások kerültek bemutatásra:
- A ‘scrub’ és ‘resilver’ parancsok működése felgyorsult a két fázisra történő felosztás révén (külön fázis lett elkülönítve a metaadatok beolvasására és az adatok helyének meghatározására a lemezen, lehetővé téve a további ellenőrzést szekvenciális adatolvasás alkalmazásával);
- Hozzáadva az elhelyezési osztályok (Allocation classes) támogatása,
amelyek lehetővé teszik a viszonylag kis SSD-meghajtók beépítését a poolba, és azok használatát csak bizonyos gyakran használt blokktípusok tárolására, mint például a metaadatok, DDT adatok és kis fájlok blokkjai; - Növelve a vezérlési parancsok teljesítményét, mint például
a ‘zfs list’ és ‘zfs get’, az az szükséges metaadatok gyorsítótárazásának köszönhetően; - Hozzáadva a blokkelosztási műveletek párhuzamosításának támogatása a külön folyamatok ‘allocator’ elindításával minden metaslab csoporthoz. Átlagos rendszereken 5-10% nyereség figyelhető meg, de nagy rendszereken (8 128 GB SSD, 24 magos NUMA, 256 GB RAM) a blokkelosztási műveletek nyeresége elérheti a 25%-ot;
- Hozzáadva a "resilver" parancs késleltetett végrehajtásának lehetősége (az adatok elosztásának rekonstrukciója a tárolókonfiguráció változásainak figyelembevételével) — ha új művelet kezdetén a korábbi még nem fejeződött be, akkor az új feldolgozó csak a korábbi befejezése után kezd el működni;
- Az ZIL (ZFS Intent Log) naplóba optimalizálások kerültek, amelyek lehetővé teszik blokkok létrehozását és feldolgozását, miközben a tároló még más blokkokat dolgoz fel;
- Sürgetett a zvol részlegek nyilvántartásának ideje a rendszerben. Amikor egy tároló nagy számú részt tartalmaz, azok mostantól azonnal elérhetők a „zpool import” végrehajtása után;
- Hozzáadva a SHA256 hash számításának és AES-GSM titkosítási műveletek hardveres gyorsításának támogatása Intel QAT (Quick Assist Technology) chip támogatásával. Hozzáadva az Intel C62x chipset és Atom C3000 CPU hardveres gyorsító eszközeinek támogatása.
Forrás: opennet.ru
