ZFS išleidimas Linux 0.8.0, ZFS diegimas Linux branduoliui

Po beveik dvejų metų plėtros pateiktas paleisti ZFS Linux 0.8.0, ZFS failų sistemos įgyvendinimas, supakuotas kaip Linux branduolio modulis. Modulis buvo išbandytas su Linux branduoliais nuo 2.6.32 iki 5.1. Netrukus bus paruošti diegimo paketai bus paruošta pagrindiniams Linux platinimams, įskaitant Debian, Ubuntu, Fedora, RHEL/CentOS. ZFS on Linux modulis jau įtrauktas į Debian, Ubuntu, Gentoo, Sabayon Linux ir ALT Linux platinimus.

Kaip ZFS Linux sistemoje dalis, buvo parengtas ZFS komponentų, susijusių tiek su failų sistemos, tiek su apimties tvarkyklės veikimu, diegimas. Visų pirma, yra įdiegti šie komponentai: SPA (Storage Pool Allocator), DMU (duomenų valdymo blokas), ZVOL (ZFS emuliuotas tūris) ir ZPL (ZFS POSIX sluoksnis). Be to, projektas suteikia galimybę naudoti ZFS kaip Luster klasterio failų sistemos užpakalinę programą. Projekto darbas pagrįstas originaliu ZFS kodu, importuotu iš OpenSolaris projekto ir patobulintu Illumos bendruomenės patobulinimais bei pataisymais. Projektas kuriamas dalyvaujant Livermoro nacionalinės laboratorijos darbuotojams pagal sutartį su JAV Energetikos departamentu.

Kodas platinamas pagal nemokamą CDDL licenciją, kuri nesuderinama su GPLv2, kuri neleidžia ZFS sistemoje Linux integruoti į pagrindinę Linux branduolio šaką, nes neleidžiama maišyti kodo pagal GPLv2 ir CDDL licencijas. Siekiant apeiti šį licencijos nesuderinamumą, buvo nuspręsta platinti visą produktą pagal CDDL licenciją kaip atskirai įkeliamą modulį, kuris tiekiamas atskirai nuo pagrindinio. ZFS stabilumas Linux kodų bazėje vertinamas kaip panašus į kitas Linux failų sistemas.

Pagrindiniai pakeitimai:

  • Pridėtas įtaisytas saugomų duomenų šifravimo palaikymas failų sistemos ir skaidinių lygiu. Numatytasis šifravimo algoritmas yra aes-256-ccm. Šifravimo raktams įkelti buvo pasiūlyta komanda „zfs load-key“;
  • Įdiegta galimybė perduoti užšifruotus duomenis vykdant komandas „zfs send“ ir „zfs Receive“. Nurodant parinktį „-w“, duomenys, jau užšifruoti telkinyje, perkeliami į kitą telkinį tokie, kokie yra, be tarpinio iššifravimo. Tokio kopijavimo metu duomenys išlieka apsaugoti siuntėjo raktu, kuris leidžia naudoti šį režimą atsarginėms kopijoms į nepatikimos sistemos (jeigu gavėjas bus pažeistas, užpuolikas negalės prieiti prie duomenų be rakto);
  • Pridėtas pirminių diskų pašalinimo iš saugyklos palaikymas, prijungtas tiek atskirai, tiek kaip veidrodžio dalis. Pašalinimas atliekamas naudojant komandą „zpool remove“. Ištrynimo procesas nukopijuoja duomenis iš neįtraukto disko į likusius pirminius diskus telkinyje;
  • Pridėta komanda „zpool checkpoint“, kad išsaugotų esamą telkinio būseną su galimybe atšaukti tolesnius išsaugoto taško pakeitimus (sukuriama viso telkinio momentinė nuotrauka). Ši funkcija gali būti naudinga atliekant potencialiai pavojingą sudėtingą administracinį darbą, kuris įprastomis sąlygomis sukelia negrįžtamus pokyčius (pavyzdžiui, suaktyvinamos naujos ZFS funkcijos vėliavėlės arba išvalomi duomenys);
  • Buvo pridėta komanda „zpool trim“, kad informuotų telkinyje naudojamus įrenginius apie nebenaudojamus sektorius. TRIM operacijos naudojimas leidžia padidinti SSD efektyvumą ir užkirsti kelią jų veikimo pablogėjimui. Pasiūlyta nauja „autotrim“ savybė, leidžianti įgalinti nenutrūkstamą foninį TRIM komandų perdavimo procesą;
  • Pridėta komanda „zpool inicializuoti“, kad inicijuotų visą nepaskirstytą vietą diske, kuri leidžia ją akimirksniu paruošti naudojimui, nesumažinant našumo pirmą kartą prisijungus (pavyzdžiui, kai talpinamos virtualizuotos saugyklos, tokios kaip VMware VMDK);
  • Pridėtas apskaitos ir projekto lygio kvotų palaikymas, be anksčiau galimų vartotojų ir grupės lygio kvotų. Iš esmės projektai yra atskira objektų erdvė, susieta su atskiru identifikatoriumi (projekto ID). Susiejimas apibrėžiamas naudojant „chattr -p“ operaciją arba per atributo paveldėjimą. Projektų valdymui pateikiamos komandos „zfs project“ ir „zfs projectspace“, kurios leidžia valdyti projektų kūrimą ir nustatyti jiems vietos diske limitus;
  • Pridėta galimybė kurti Lua scenarijus, kad būtų galima automatizuoti įvairius darbus su ZFS. Skriptai vykdomi specialiose izoliuotose aplinkose, naudojant komandą „zpool programa“;
  • Įdiegta nauja biblioteka pyzfas, kuri suteikia stabilią API, skirtą ZFS administruoti iš Python programų. Biblioteka yra libzfs_core įvynioklis ir pateikia identišką funkcijų rinkinį, tačiau naudoja artimesnius Python tipus;
  • Priemonės arcstat, arcsummary ir dbufstat buvo suderinamos su Python 3. Archstat.py, arc_summary.py ir dbufstat.py priemonės buvo pervadintos į versijas be plėtinio ".py";
  • Pridėtas Linux Direct IO (O_DIRECT) branduolio sąsajos palaikymas, leidžiantis pasiekti duomenis be buferio ir apeinant talpyklą;
  • Pristatyti našumo optimizavimai:
    • „Scrub“ ir „resilver“ komandų darbas paspartėjo dėl padalijimo į dvi fazes (skirta atskira fazė metaduomenų nuskaitymui ir blokų su duomenimis vietai nustatymui diske, kas leidžia toliau tikrinti naudojant nuoseklius duomenis skaitymas);
    • Pridėtas paskirstymo klasių palaikymas,
      leidžianti sujungti santykinai mažus SSD ir naudoti tik tam tikrų tipų dažniausiai naudojamų blokų, pvz., metaduomenų, DDT duomenų ir mažų failų blokų, saugojimui;

    • Pagerintas administratoriaus komandų, tokių kaip
      „zfs list“ ir „zfs get“, talpykloje išsaugodami metaduomenis, būtinus jų veikimui;

    • Pridėtas blokų paskirstymo operacijų lygiagretinimo palaikymas vykdant atskirus paskirstymo procesus kiekvienai metaslab grupei. Įprastose sistemose našumas padidėja 5–10%, tačiau didelėse (8 128 GB SSD, 24 branduolių NUMA, 256 GB RAM) blokų paskirstymo operacijų padidėjimas gali siekti 25%;
    • Pridėta galimybė uždelsti „resilver“ komandos vykdymą (atkuriamas duomenų paskirstymas, atsižvelgiant į diskų konfigūracijos pokyčius) - jei ankstesnė dar nebuvo baigta pradedant naują operaciją, tada naujasis tvarkytuvas pradės vykdyti tik po to, kai ankstesnis baigtas;
    • Prie ZIL (ZFS Intent Log) buvo pridėti optimizavimai, leidžiantys kurti ir apdoroti blokus, kai yra blokų, kurie vis dar apdorojami saugykloje;
    • Sutrumpintas skirsnių registravimo laikas (zvol) sistemoje. Kai telkinyje yra daug skaidinių, jie dabar pasiekiami iškart po „zpool importo“;
    • Pridėtas aparatinės įrangos pagreitinto SHA256 maišos skaičiavimo ir AES-GSM šifravimo operacijų palaikymas naudojant Intel QAT (Quick Assist Technology) lustus. Pridėtas „Intel C62x“ mikroschemų rinkinio ir „CPU Atom C3000“ procesoriaus palaikymas.

Šaltinis: opennet.ru

Добавить комментарий