Pas pothuajse dy vjet zhvillimi lëshimi , implementimi i një sistemi skedash ZFS, i që është prezantuar si një modul për kernelin Linux. Funksionaliteti i modulit është verifikuar me kernela Linux nga 2.6.32 deri në 5.1. Pakot e gatshme për instalim do të përgatiten së shpejti për distribucione kryesore të Linux, duke përfshirë Debian, Ubuntu, Fedora, RHEL/CentOS. Moduli ZFS on Linux tashmë është i integruar në distribucionet Debian, Ubuntu, Gentoo, Sabayon Linux dhe ALT Linux.
Kështu në kuadër të ZFS on Linux është përgatitur një implementim i komponentëve të ZFS, të lidhur me funksionimin si të sistemit të skedave ashtu edhe të menaxherit të volumit. Në veçanti, janë implementuar komponentë si: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) dhe ZPL (ZFS POSIX Layer). Shtesë, projekti ofron mundësinë për të përdorur ZFS si një backend për sistemin e skedave të klasterit Lustre. Përvojat e projektit janë bazuar në kodin origjinal të ZFS, i importuar nga projekti OpenSolaris dhe i zgjeruar me përmirësime dhe korrigjime nga komuniteti Illumos. Projekti po zhvillohet me pjesëmarrjen e punonjësve të Laboratorit Kombëtar Livermore nëpërmjet një kontrate me Ministrinë e Energjisë të SHBA-ve.
Kodi shpërndahet nën licencën e lirë CDDL, e cila është e papajtueshme me GPLv2, e cila nuk lejon integrimin e ZFS on Linux në degën kryesore të kernelit Linux, pasi përzierja e kodit nën licencat GPLv2 dhe CDDL është e papranueshme. Për të shmangur këtë papajtueshmëri licencash, është vendosur që produkti të shpërndahet tërësisht nën licencën CDDL si një modul që mund të shkarkohet veçmas nga kernel. Stabiliteti i bazës së kodit ZFS on Linux vlerësohet si krahasues me sistemet e tjera të skedave për Linux.
Ndryshimet kryesore:
- ĂshtĂ« shtuar mbĂ«shtetje e integruar pĂ«r enkriptimin e tĂ« dhĂ«nave tĂ« ruajtura nĂ« nivelin e sistemit tĂ« skedave dhe pjesĂ«ve. Si rregull, algoritmi aes-256-ccm pĂ«rdoret pĂ«r enkriptim. PĂ«r ngarkimin e çelzave tĂ« enkriptimit Ă«shtĂ« ofruar komandĂ« «zfs load-key»;
- ĂshtĂ« realizuar mundĂ«sia e transferimit tĂ« tĂ« dhĂ«nave tĂ« koduara gjatĂ« ekzekutimit tĂ« komandave "zfs send" dhe "zfs receive". Kur pĂ«rdoret mundĂ«sia "-w", tĂ« dhĂ«nat e koduara nĂ« rezervuar transferohen nĂ« njĂ« rezervuar tjetĂ«r siç janĂ«, pa dekodim ndĂ«rmjetĂ«s. GjatĂ« kĂ«tij kopjimi, tĂ« dhĂ«nat mbeten tĂ« mbrojtura nga çelĂ«si i palĂ«s dĂ«rguese, gjĂ« qĂ« lejon pĂ«rdorimin e kĂ«tij mĂ«nyre pĂ«r kopjime rezervĂ« nĂ« sisteme tĂ« pasigura (nĂ«se pala marrĂ«se komprometohet, pa çelĂ«sin, sulmuesi nuk do tĂ« mund tĂ« ketĂ« qasje nĂ« tĂ« dhĂ«na);
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r eliminimin e disqeve primare nga rezervuari i ruajtjes, tĂ« cilat janĂ« lidhur si si tĂ« veçanta ashtu edhe si pjesĂ« e pasqyrĂ«s. Eliminimi realizohet me komandĂ«n "zpool remove". GjatĂ« procesit tĂ« eliminimit, tĂ« dhĂ«nat nga disku qĂ« pĂ«rjashtohet kopjohen nĂ« disqet primare qĂ« mbeten nĂ« rezervuar;
- ĂshtĂ« shtuar komandĂ« "zpool checkpoint" pĂ«r tĂ« ruajtur gjendjen aktuale tĂ« rezervuarit me mundĂ«sinĂ« pĂ«r tĂ« rikthyer ndryshimet e mĂ«tejshme nĂ« momentin e ruajtur (krijohet njĂ« snapshot i gjithĂ« rezervuarit). Kjo mundĂ«si e paraqitur mund tĂ« jetĂ« e dobishme gjatĂ« ekzekutimit tĂ« punĂ«ve komplekse administrative qĂ« potencialisht mund tĂ« rrezikojnĂ« funksionimin normal (pĂ«r shembull, aktivizimi i flagjeve pĂ«r funksionalitete tĂ« reja ZFS ose pastrimi i tĂ« dhĂ«nave);
- ĂshtĂ« shtuar komandĂ« "zpool trim", qĂ« lejon tĂ« informohen disqet e pĂ«rdorura nĂ« rezervuar pĂ«r sektorĂ«t qĂ« nuk pĂ«rdoren mĂ«. PĂ«rdorimi i operacionit TRIM ofron mundĂ«sinĂ« pĂ«r tĂ« shkuar mĂ« pĂ«rpara nĂ« efikasitetin e punĂ«s sĂ« SSD-ve dhe pĂ«r tĂ« parandaluar degradimin e performancĂ«s sĂ« tyre. PĂ«r aktivizimin e procesit tĂ« vazhdueshĂ«m tĂ« transferimit tĂ« komandave TRIM, Ă«shtĂ« propozuar njĂ« pronĂ« e re "autotrim";
- ĂshtĂ« shtuar komandĂ« "zpool initialize" pĂ«r inicializimin e tĂ« gjithĂ« hapĂ«sirĂ«s disk tĂ« pa ndarĂ«, e cila siguron gatishmĂ«rinĂ« e menjĂ«hershme pĂ«r pĂ«rdorim, pa uljen e performancĂ«s gjatĂ« aksesit tĂ« parĂ« (pĂ«r shembull, nĂ« vendosjen e ruajtjeve virtuale, si VMware VMDK);
- Shtuar mbështetje për llogaritjen dhe kuotat në nivel projekti, që plotëson kuotat e mëparshme në nivel përdoruesi dhe grupi. Në thelb, projektet janë një hapësirë e veçantë objektesh, të lidhur me një identifikues të veçantë (project ID). Lidhja përcaktohet përmes operacionit 'chattr -p' ose përmes trashëgimisë së atributeve. Për menaxhimin e projekteve, janë paraqitur komandat 'zfs project' dhe 'zfs projectspace', që lejojnë krijimin e projekteve dhe caktimin e kufijve për hapësirën e disku.
- Shtuar mundësinë e krijimit të skripteve Lua për automatizimin e punëve të ndryshme me ZFS. Skriptet nisin në mjedise të veçanta të izoluar përmes komandës 'zpool program';
- Implementuar një bibliotekë të re , që ofron një API të qëndrueshëm për administrimin e ZFS nga aplikacione në gjuhën Python. Biblioteka është një mbështetje për libzfs_core dhe ofron një grup identik funksionesh, por aplikon tipe më të afërta me Python;
- Siguruar kompatibilitetin e mjeteve arcstat, arcsummary dhe dbufstat me Python 3. Mjetet arcstat.py, arc_summary.py dhe dbufstat.py janë rinomuar në variante pa zgjerimin '.py';
- Shtuar mbështetje për ndërfaqen e bërthamës Linux Direct IO (O_DIRECT), që lejon qasje në të dhëna pa buferim dhe duke anashkaluar cache-in;
- Paraqitur optimizime të performancës:
- Përshpejtuar operacionet e komandave 'scrub' dhe 'resilver' përmes ndarjes në dy faza (caktuar një fazë të veçantë për skanimin e metadatat dhe përcaktimin e vendndodhjeve të blloqeve me të dhëna në disk, gjë që lejon një verifikim të mëtejshëm duke përdorur lexim të rregullt të të dhënave);
- Shtuar mbështetje për klasat e alokimit të të dhënave (Allocation classes),
të cilat lejojnë përfshirjen në grup të SSD-ve relativisht të vogla dhe përdorimin e tyre për ruajtjen e vetëm llojeve të caktuara të blloqeve të përdorura shpesh, siç janë metadat, të dhënat DDT dhe blloqet e vogla me skedarë; - Rritur performancën e komandave për administrim, siç janë
'zfs list' dhe 'zfs get', përmes ruajtjes në cache të metadatatve të nevojshme për funksionimin e tyre; - Shtuar mbështetje për paralelizimin e operacioneve të alokimit të blloqeve përmes nisjes së proceseve të veçanta 'allocator' për çdo grup metaslab. Në sistemet standarde, është vërejtur një rritje performancë në nivelin 5-10%, por në ato të mëdha (8 128 GB SSD, 24 core NUMA, 256 GB RAM) rritja e operacioneve të alokimit të blloqeve mund të arrijë deri në 25%;
- Shtuar mundĂ«sia e ekzekutimit tĂ« vonuar tĂ« komandĂ«s «resilver» (rikonstruktimi i shpĂ«rndarjes sĂ« tĂ« dhĂ«nave duke marrĂ« parasysh ndryshimet nĂ« konfigurimin e ruajtĂ«sve) â nĂ«se gjatĂ« nisjes sĂ« njĂ« operacioni tĂ« ri, operacioni i mĂ«parshĂ«m ende nuk ka pĂ«rfunduar, atĂ«herĂ« menaxheri i ri do tĂ« fillojĂ« tĂ« ekzekutohet vetĂ«m pas pĂ«rfundimit tĂ« punĂ«s sĂ« operacionit tĂ« mĂ«parshĂ«m;
- Në regjistrin ZIL (ZFS Intent Log) janë bërë optimizime që lejojnë krijimin dhe përpunimin e blloqeve, kur ka blloqe që tashmë po përpunohen nga ruajtësi;
- Koha e regjistrimit të ndarjeve (zvol) në sistem është reduktuar. Kur puli përmban një numër të madh të ndarjeve, ato tani bëhen të disponueshme menjëherë pas ekzekutimit të «zpool import»;
- Shtuar mbështetje për përshpejtimin harduerik të llogaritjes së hash-it SHA256 dhe operacioneve të enkriptimit AES-GSM duke përdorur çipet e pajtueshme me teknologjinë Intel QAT (Quick Assist Technology). Shtuar mbështetje për mjete të përshpejtimit harduerik të çipsetit Intel C62x dhe CPU Atom C3000.
Burimi: opennet.ru
