Lëshimi i ZFS në Linux 0.8.0, zbatimet e ZFS për kernelin Linux

Pas gati dy vitesh zhvillim prezantuar lirimin ZFS në Linux 0.8.0, një implementim i sistemit të skedarëve ZFS i paketuar si një modul për kernelin Linux. Moduli është testuar me kernel Linux nga 2.6.32 në 5.1. Paketat e gatshme të instalimit vijnë së shpejti do të përgatitet për shpërndarjet kryesore Linux duke përfshirë Debian, Ubuntu, Fedora, RHEL/CentOS. Moduli ZFS në Linux është përfshirë tashmë në shpërndarjet Debian, Ubuntu, Gentoo, Sabayon Linux dhe ALT Linux.

Si pjesë e ZFS në Linux, është përgatitur një implementim i komponentëve ZFS që lidhen si me funksionimin e sistemit të skedarëve ashtu edhe me funksionimin e menaxherit të vëllimit. Në veçanti, janë implementuar komponentët e mëposhtëm: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) dhe ZPL (ZFS POSIX Layer). Për më tepër, projekti ofron mundësinë për të përdorur ZFS si një backend për sistemin e skedarëve të grupit Luster. Puna e projektit bazohet në kodin origjinal ZFS të importuar nga projekti OpenSolaris dhe i përmirësuar me përmirësime dhe rregullime nga komuniteti Illumos. Projekti po zhvillohet me pjesëmarrjen e punonjësve të Laboratorit Kombëtar të Livermore sipas një kontrate me Departamentin e Energjisë të SHBA.

Kodi shpërndahet nën një licencë CDDL falas, e cila është e papajtueshme me GPLv2, e cila nuk lejon që ZFS në Linux të integrohet në degën kryesore të kernelit Linux, pasi përzierja e kodit nën licencat GPLv2 dhe CDDL nuk lejohet. Për të anashkaluar këtë papajtueshmëri të licencës, u vendos që të shpërndahej i gjithë produkti nën licencën CDDL si një modul i ngarkueshëm veçmas, i cili ofrohet veçmas nga bërthama. Stabiliteti i ZFS në bazën e kodeve Linux vlerësohet si i krahasueshëm me sistemet e tjera të skedarëve për Linux.

Ndryshimet kryesore:

  • U shtua mbështetje e integruar për enkriptimin e të dhënave të ruajtura në nivelin e sistemit të skedarëve dhe ndarjeve. Algoritmi i parazgjedhur i enkriptimit është aes-256-ccm. Komanda "zfs load-key" është propozuar për të ngarkuar çelësat e enkriptimit;
  • Zbatoi aftësinë për të transferuar të dhëna të koduara gjatë ekzekutimit të komandave 'zfs dërgoni' dhe 'zfs merrni'. Kur specifikoni opsionin "-w", të dhënat tashmë të koduara në grup transferohen në një grup tjetër siç është, pa deshifrim të ndërmjetëm. Me një kopjim të tillë, të dhënat mbeten të mbrojtura nga çelësi i dërguesit, i cili lejon përdorimin e këtij modaliteti për kopje rezervë në sisteme jo të besueshme (nëse marrësi është i rrezikuar, sulmuesi nuk do të jetë në gjendje të aksesojë të dhënat pa çelësin);
  • Mbështetje e shtuar për heqjen e disqeve kryesore nga një grup magazinimi, i lidhur si individualisht ashtu edhe si pjesë e një pasqyre. Heqja kryhet me komandën "zpool remove". Procesi i fshirjes kopjon të dhënat nga disku i përjashtuar në disqet kryesore të mbetura në grup;
  • U shtua komanda "zpool checkpoint" për të ruajtur gjendjen aktuale të pishinës me aftësinë për të rikthyer ndryshimet e mëtejshme në pikën e ruajtur në kohë (krijohet një fotografi e të gjithë pishinës). Ky funksion mund të jetë i dobishëm në procesin e kryerjes së punëve administrative komplekse potencialisht të rrezikshme, të cilat në kushte normale çojnë në ndryshime të pakthyeshme (për shembull, aktivizimi i flamujve për funksionalitetin e ri ZFS ose pastrimi i të dhënave);
  • Komanda "zpool trim" është shtuar për të informuar disqet e përdorura në grup për sektorët që nuk janë më në përdorim. Përdorimi i funksionit TRIM bën të mundur rritjen e efikasitetit të SSD-ve dhe parandalimin e degradimit të performancës së tyre. Është propozuar një veçori e re "autotrim" për të mundësuar procesin e vazhdueshëm të sfondit të transmetimit të komandave TRIM;
  • U shtua komanda "zpool inicialize" për të inicializuar të gjithë hapësirën e paalokuar të diskut, e cila lejon që ajo të jetë menjëherë e gatshme për përdorim, pa degradim të performancës në hyrjen e parë (për shembull, kur strehon hapësira të virtualizuara si VMware VMDK);
  • Mbështetje e shtuar për kontabilitetin dhe kuotat e nivelit të projektit, përveç kuotave të disponueshme më parë të përdoruesve dhe të nivelit të grupit. Në thelb, projektet janë një hapësirë ​​e veçantë e objekteve të lidhura me një identifikues të veçantë (ID-ja e projektit). Lidhja përcaktohet nëpërmjet operacionit 'chattr -p' ose nëpërmjet trashëgimisë së atributeve. Për menaxhimin e projektit, paraqiten komandat "project zfs" dhe "zfs projectspace", të cilat ju lejojnë të menaxhoni krijimin e projekteve dhe të vendosni kufijtë e hapësirës në disk për to;
  • U shtua aftësia për të krijuar skriptet Lua për të automatizuar punë të ndryshme me ZFS. Skriptet ekzekutohen në mjedise të veçanta të izoluara duke përdorur komandën "zpool program";
  • Zbatohet biblioteka e re pyzfs, i cili siguron një API të qëndrueshme për administrimin e ZFS nga aplikacionet Python. Biblioteka është një mbështjellës rreth libzfs_core dhe ofron një grup identik funksionesh, por përdor lloje më të afërta Python;
  • Shërbimet arcstat, arcsummary dhe dbufstat janë bërë të pajtueshme me Python 3. Shërbimet arcstat.py, arc_summary.py dhe dbufstat.py janë riemërtuar në versione pa shtesën ".py";
  • Mbështetje e shtuar për ndërfaqen e kernelit Linux Direct IO (O_DIRECT), e cila lejon aksesin e të dhënave pa bufer dhe anashkaluar cache;
  • Prezantohen optimizimet e performancës:
    • Puna e komandave "scrub" dhe "resilver" është përshpejtuar për shkak të ndarjes në dy faza (një fazë e veçantë është caktuar për skanimin e meta të dhënave dhe përcaktimin e vendndodhjes së blloqeve me të dhëna në disk, gjë që lejon verifikimin e mëtejshëm duke përdorur të dhëna sekuenciale lexim);
    • Mbështetje e shtuar për klasat e Alokimit,
      duke lejuar që SSD-të relativisht të vogla të grumbullohen dhe të përdoren për të ruajtur vetëm disa lloje të blloqeve të përdorura zakonisht, si metadatat, të dhënat DDT dhe blloqet e skedarëve të vegjël;

    • Performanca e përmirësuar e komandave të administratorit si p.sh
      "zfs list" dhe "zfs get", duke ruajtur meta të dhënat e nevojshme për funksionimin e tyre;

    • Mbështetje e shtuar për paralelizimin e operacioneve të alokimit të bllokut duke ekzekutuar procese të veçanta të alokuesit për çdo grup metaslab. Në sistemet konvencionale, ka një rritje të performancës prej 5-10%, por në ato të mëdha (8 128 GB SSD, 24 bërthama NUMA, 256 GB RAM), rritja e operacioneve të ndarjes së bllokut mund të arrijë 25%;
    • Shtuar mundësinë e ekzekutimit të vonuar të komandës "resilver" (rindërtimi i shpërndarjes së të dhënave duke marrë parasysh ndryshimet në konfigurimin e disqeve) - nëse e mëparshmja nuk ka përfunduar ende kur fillon një operacion të ri, atëherë mbajtësi i ri do të fillojë të ekzekutojë vetëm pasi e mëparshmja ka mbaruar;
    • Optimizimet janë shtuar në ZIL (ZFS Intent Log) për të lejuar krijimin dhe përpunimin e blloqeve në prani të blloqeve që janë ende duke u përpunuar nga ruajtja;
    • Koha e reduktuar e regjistrimit për ndarjet (zvol) në sistem. Kur një grup përmban një numër të madh ndarjesh, ato tani janë të disponueshme menjëherë pas kryerjes së "importit zpool";
    • Mbështetje e shtuar për llogaritjen e përshpejtuar të harduerit të hash-eve SHA256 dhe operacionet e enkriptimit AES-GSM duke përdorur çipat Intel QAT (Quick Assist Technology). Mbështetje e shtuar për përshpejtimin e harduerit të çipsetit Intel C62x dhe CPU Atom C3000.

Burimi: opennet.ru

Shto një koment