ZFS-ren kaleratzea Linux 0.8.0-n, ZFS-ren inplementazioak Linux kernelerako

Ia bi urteko garapenaren ondoren aurkeztu askatu ZFS Linux 0.8.0, ZFS fitxategi sistemaren inplementazioa, Linux nukleorako modulu gisa diseinatua. Modulua Linux kernelekin probatu da 2.6.32tik 5.1era. Laster prest egongo dira instalazio paketeak prestatuko da Linux banaketa nagusietarako Debian, Ubuntu, Fedora, RHEL/CentOS barne. ZFS on Linux modulua Debian, Ubuntu, Gentoo, Sabayon Linux eta ALT Linux banaketetan sartuta dago jada.

Linux-en ZFS-en zati gisa, fitxategi-sistemaren funtzionamenduarekin eta bolumen-kudeatzailearen funtzionamenduarekin lotutako ZFS osagaien inplementazioa prestatu da. Bereziki, osagai hauek ezartzen dira: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) eta ZPL (ZFS POSIX Layer). Gainera, proiektuak ZFS Luster cluster fitxategi sistemarako backend gisa erabiltzeko gaitasuna eskaintzen du. Proiektuaren lana jatorrizko ZFS kodean oinarritzen da, OpenSolaris proiektutik inportatua eta Illumos komunitatearen hobekuntza eta konponketekin zabalduta. Proiektua Livermore National Laboratory-ko langileen parte-hartzearekin garatzen ari da AEBetako Energia Sailarekin kontratu baten bidez.

Kodea doako CDDL lizentzia baten pean banatzen da, GPLv2-rekin bateraezina dena, eta horrek ez du onartzen Linux-en ZFS Linux kernelaren adar nagusian integratzea, GPLv2 eta CDDL lizentzien arabera kodea nahastea onartezina baita. Lizentzien bateraezintasun hori saihesteko, produktu osoa CDDL lizentziapean banatzea erabaki zen, bereizita deskarga daitekeen modulu gisa, nukleotik bereizita hornitzen dena. ZFS-ren egonkortasuna Linux kode-basearen beste fitxategi-sistemekin parekoa da.

Aldaketa nagusiak:

  • Fitxategi-sisteman eta partizio-mailetan gordetako datuak enkriptatzeko laguntza integratua gehitu da. Zifratze-algoritmo lehenetsia aes-256-ccm da. Zifratze-gakoak kargatzeko, "zfs load-key" komandoa proposatzen da;
  • "zfs send" eta "zfs receive" komandoak exekutatzen direnean enkriptatutako datuak transmititzeko gaitasuna ezarri da. β€œ-w” aukera zehaztean, igerilekuan jada enkriptatuta dauden datuak beste igerileku batera transferitzen dira, tarteko deszifratu gabe. Kopiatu bitartean, datuak bidaltzailearen gakoarekin babestuta geratzen dira, eta, horri esker, modu hau fidagarriak ez diren sistemetan babeskopia egiteko erabil daiteke (hartzailea arriskuan badago, gakorik gabe erasotzaileak ezin izango ditu datuak sartu);
  • Biltegiratze-igerileku batetik unitate nagusiak kentzeko laguntza gehitu da, banaka edo ispilu baten zati gisa konektatuta. Kentzea "zpool remove" komandoarekin egiten da. Ezabatze-prozesuan zehar, kendutako unitateko datuak igerilekuko gainerako unitate nagusietan kopiatzen dira;
  • "zpool checkpoint" komandoa gehitu da igerilekuaren uneko egoera gordetzeko, gordetako unean aldaketa gehiago atzera egiteko gaitasunarekin (igerileku osoaren argazki bat sortzen da). Aurkeztutako funtzioa erabilgarria izan daiteke arriskutsuak izan daitezkeen administrazio-lan konplexuak egiteko prozesuan, normalean aldaketa itzulezinak ekarriko lituzkeenak (adibidez, ZFS funtzionalitate berrietarako banderak aktibatzea edo datuak garbitzea);
  • "zpool trim" komandoa gehitu da igerileku batean erabiltzen diren unitateei jada erabiltzen ez diren sektoreei buruz informatzeko. TRIM eragiketa erabiltzeak SSD unitateen eraginkortasuna areagotzea eta haien errendimendua hondatzea ekiditen du. TRIM komandoak pasatzeko atzeko planoko prozesu etengabea gaitzeko, "autotrim" propietate berri bat proposatu da;
  • "zpool initialize" komandoa gehitu da esleitu gabeko diskoko espazio guztia hasieratzeko, berehala erabiltzeko prest dagoela ziurtatuz lehen sarbidean errendimenduan eragin gabe (adibidez, VMware VMDK bezalako biltegiratze birtualizatua ostatzerakoan);
  • Proiektu-mailako kontabilitate eta kuoten euskarria gehitu da, aurretik erabilgarri dauden erabiltzaile eta talde-mailako kuotak osatuz. Funtsean, proiektuak identifikatzaile bereizi batekin (proiektuaren ID) lotutako objektuen espazio bereizia dira. Lotura 'chattr -p' eragiketaren bidez edo atributuen herentziaren bidez zehazten da. Proiektuak kudeatzeko, "zfs project" eta "zfs projectspace" komandoak eskaintzen dira, proiektuen sorrera kudeatzeko eta haientzako disko-espazioaren mugak ezartzeko aukera ematen dutenak;
  • Lua script-ak sortzeko gaitasuna gehitu da ZFS-rekin hainbat lan automatizatzeko. Scriptak ingurune isolatu berezietan abiarazten dira "zpool program" komandoa erabiliz;
  • Liburutegi berria ezarri da pyzfs, Python aplikazioetatik ZFS administratzeko API egonkorra eskaintzen duena. Liburutegia libzfs_core-ren bilgarri bat da eta funtzio multzo berdina eskaintzen du, baina Pythonetik hurbilago dauden motak erabiltzen ditu;
  • Arcstat, arcsummary eta dbufstat utilitateak Python 3-rekin bateragarriak dira orain. Arcstat.py, arc_summary.py eta dbufstat.py utilitateak ".py" luzapenik gabeko bertsioetara aldatu dira;
  • Linux Direct IO (O_DIRECT) nukleoaren interfazearen euskarria gehitu da, eta horri esker datuak buffering gabe sartu eta cachea saihestu;
  • Aurkeztutako errendimenduaren optimizazioak:
    • "Scrub" eta "resilver" komandoen lana bi fasetan banatuz bizkortu egin da (fase bereizi bat esleitzen da metadatuak eskaneatzeko eta diskoan datu-blokeen kokapena zehazteko, datuen irakurketa sekuentziala erabiliz egiaztatze gehiago ahalbidetzen duena) ;
    • Esleipen klaseetarako laguntza gehitu da,
      SSD unitate txiki samarrak igerileku batean sartzea eta maiz erabiltzen diren bloke mota batzuk soilik gordetzeko aukera ematea, hala nola metadatuak, DDT datuak eta fitxategiak dituzten bloke txikiak;

    • Administraziorako komandoen errendimendua areagotu da, esaterako
      β€œzfs list” eta β€œzfs get”, beren funtzionamendurako beharrezkoak diren metadatuen cachean gordetzeagatik;

    • Blokeen esleipen eragiketak paralelizatzeko laguntza gehitu da metalauza talde bakoitzeko "esleitzaile" prozesu bereiziak abiaraziz. Sistema arruntetan, % 5-10eko errendimendua handitzen da, baina handietan (8 GB SSD, 128 core NUMA, 24 GB RAM), blokeen esleipen eragiketen igoera % 256era irits daiteke;
    • "resilver" komandoaren exekuzio atzeratzeko aukera gehitu da (datuen banaketa birsortzea diskoen konfigurazioan izandako aldaketak kontuan hartuta) - eragiketa berri bat abiaraztean aurrekoa oraindik amaitu ez bada, kudeatzaile berria bakarrik exekutatzen hasiko da. aurrekoa amaitu ondoren;
    • Optimizazioak egin dira ZIL (ZFS Intent Log) erregistroan, blokeak sortu eta prozesatu ahal izateko biltegiratzeak oraindik prozesatzen ari diren blokeak daudenean;
    • Sisteman partizioak erregistratzeko denbora (zvol) murriztu da. Igerileku batek partizio kopuru handia duenean, orain eskuragarri daude "zpool import" exekutatu ondoren;
    • SHA256 hash kalkuluen hardware azeleraziorako eta AES-GSM enkriptatzeko eragiketetarako laguntza gehitu da Intel QAT (Quick Assist Technology) onartzen duten txipak erabiliz. Intel C62x chipset eta Atom C3000 CPUrako hardware azelerazio tresnetarako laguntza gehitu da.

Iturria: opennet.ru

Gehitu iruzkin berria