Lëshimi i ZFS on Linux 0.8.0, një implementim i ZFS për kernelin Linux

Pas pothuajse dy vjet zhvillimi u paraqit lëshimi ZFS on Linux 0.8.0, 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 do të jenë të gatshme 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 pyzfs, 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

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster