
Ko izide nova različica OpenZFS, se mnogi skrbniki sprašujejo, ali se splača posodobiti zdaj ali počakati, da se prah polege. OpenZFS 2.4 Vprašanje je še bolj zanimivo, ker Prihaja z globokimi spremembami pri zmogljivosti, novih orodjih za upravljanje in nekaterih razpravah skupnosti o uporabi kandidatov za izdajo v produkcijskih sistemih.
Splošne značilnosti OpenZFS 2.4
OpenZFS 2.4 je predstavljen kot različica stabilen in precej ambiciozen značaj Projekt, zasnovan tako za okolja Linux kot FreeBSD, je že ob končni označbi poudarjal, da je cilj nadaljnje spodbujanje zrelosti datotečnega sistema in upravljalnika nosilcev podatkov, hkrati pa ohranjanje združljivosti z novejšimi jedri in zagotavljanje varnosti podatkov.
Ta različica združuje številne funkcije, ki so bile v razvoju že od podružnica 2.3 in njegove vmesne revizije: izboljšave delovanja v šifrirni slojnova orodja za upravljanje, kot so prepisovanje zfs-ovPrilagodljivejše zmogljivosti kvot in notranje spremembe, namenjene zmanjšanju fragmentacije, optimizaciji deduplikacije in izboljšanju kompleksnih vidikov, kot sta upravljanje skupinskih blokov ali vedenje pri problematičnih diskih.
Skupnost je posebno pozornost namenila tudi integracija s sodobnimi jedriV Linuxu je podpora deklarirana od različice 4.18 do novejših vej LTS (vključno z jedrom 6.18 v času stabilne izdaje 2.4), medtem ko so v FreeBSD zajete različice od različice 13.3 naprej, vključno z različico 14.0 in novejšimi vejami, ki so v pripravi, kot je 15.0.
Podpora za platformo in združljivost jedra z OpenZFS 2.4
Eden od stebrov OpenZFS 2.4 je njegov široka združljivost s platformamiZa mnoge skrbnike je to ključnega pomena, saj jim omogoča nadgradnjo različic operacijskega sistema, ne da bi pri tem izgubili pričakovane funkcije ZFS.
Na strani Linuxa OpenZFS 2.4 kaže na združljivost z jedri od različice 4.18 do serije ... 6.18 stabilnoTo zajema vse od konzervativnih distribucij za podjetja do zelo posodobljenih okolij, ki ostajajo posodobljena z najnovejšim jedrom. Vmes se nahaja celoten spekter običajnih izdaj: različice LTS, ki se uporabljajo na strežnikih, jedra po meri in različice, ki jih uporabljajo projekti, kot je CentOS Stream ali podobni.
V FreeBSD nova različica podpira od FreeBSD 13.3 Od zdaj naprej, vključno z različico 14.0 in novejšimi, ki so že na obzorju, kot je prihajajoča 15.0. Ta široka paleta zagotavlja, da lahko tako sistemi, ki so že v produkciji, kot tudi sistemi naslednje generacije še naprej uporabljajo OpenZFS brez potrebe po nenavadnih popravkih ali rešitvah po meri.
Za to združljivostjo se skriva nenehen trud, ki je bil očiten že v seriji OpenZFS 2.3.xPrejšnje posodobitve, kot je 2.3.4, so razširile podporo za jedra do različice 6.16 in združile popravke, ki so se začeli pojavljati v prejšnjih RC-jih. OpenZFS 2.4 nadaljuje in gre še korak dlje, saj se usklajuje z novejšimi jedri in izboljšuje izkušnjo za tiste, ki relativno pogosto posodabljajo svoj osnovni sklad.
Kvote in nove zmogljivosti upravljanja prostora
Med najbolj praktičnimi novimi funkcijami za administratorja so izboljšave sistema vnaprej določene kvoteOpenZFS 2.4 uvaja možnost definiranja privzetih kvot za uporabnike, skupine in projekte, tako da je mogoče porabo prostora bolj enotno nadzorovati, ne da bi bilo treba vsak primer posebej konfigurirati ročno.
Ta funkcija omogoča na primer nastavitev osnovna pristojbina za vse uporabnike ki so ustvarjeni v določenem naboru podatkov ali za nastavitev omejitev projekta, ki se samodejno uporabijo, ko so dodeljeni novi viri. To je zelo uporabno orodje v večuporabniških okoljih, gostovanju, laboratorijih in vseh scenarijih, kjer želite preprečiti, da bi celoten bazen zapolnil nadzor.
Podpora za privzete kvote ne nadomešča obstoječih specifičnih kvot, temveč jih dopolnjuje. Skrbnik lahko določi globalna politika in ga nato izboljšati z izjemami za določene uporabnike ali skupine, ki potrebujejo več (ali manj) prostora. Vse to se upravlja s standardnimi orodji ZFS, pri čemer se ohranja isti model lastnosti, ki je že znan.
Neposredni V/I, V/I brez predpomnilnika in neporavnano pisanje
Kar zadeva zmogljivost, OpenZFS 2.4 prinaša zelo zanimivo spremembo v upravljanju neposredni vhod/izhodDo sedaj je lahko uporaba neposrednega V/I v nekaterih situacijah povzročila konflikt s poravnavo pisanja in neoptimalne poti kode. Nova različica uvaja mehanizem, ki v primeru, ko neposrednega V/I ni mogoče idealno implementirati, uporabi alternativni način. lahek V/I brez predpomnilnika posebej zasnovan za tovrstni scenarij.
Kaj to pomeni v praksi? Da zapisi, ki se ne ujemajo dobro s pričakovanimi poravnavami, prenehajo biti patološki primer in se namesto tega obravnavajo z optimizirana pot znotraj ZFS-ja. Zmanjšajo se režijski stroški, izognejo se nekaterim ozkim grlom in dosežejo se bolj predvidljive funkcije, zlasti v okoljih, kjer aplikacije, ki uporabljajo neposredni V/I, sobivajo z drugimi, ki jih ne.
Ta sprememba je še posebej uporabna pri zahtevnih delovnih obremenitvah, kjer je cilj iztisniti predstavo shranjevanje brez žrtvovanja garancij za integriteto, ki jih ponuja ZFS. Z posebej zasnovanim rezervnim sistemom je OpenZFS bolj primeren za realnost številnih aplikacij, ki se ne držijo vedno idealne poravnave operacij.
Poenoteno dušenje dodeljevanja in zmanjšanje fragmentacije v OpenZFS 2.4
Druga večja sprememba, ki jo prinaša OpenZFS 2.4, je uvedba novega algoritma za enotno omejevanje dodeljevanjaZa tem imenom se skriva mehanizem, katerega cilj je zmanjšati fragmentacijo virtualnih naprav (vdevs) in izboljšati porazdelitev zapisov, ko je sistem pod pritiskom.
Do sedaj je lahko dodeljevanje blokov v situacijah z veliko obremenitvijo povzročilo vzorce porazdelitve, ki so sčasoma dajali prednost fragmentacija vdevPoenoten algoritem si prizadeva uskladiti stopnjo dodeljevanja, tako da skupina ohrani bolj urejeno strukturo in se zmanjšajo kazni za zmogljivost, ko začne zmanjkovati prostora ali ko je mešanica velikosti blokov zelo raznolika.
Te vrste sprememb so manj opazne kot nov ukaz, vendar so zelo dragocene pri dolgoročnih uvajanjih, kjer se bazen širi, ponovno uravnoteži, dodajo nova virtualna razvojna okolja (vdevs) in se izvajajo vzdrževalna dela skozi leta. Z izboljšanjem nadzora dodeljevanja OpenZFS 2.4 pomaga vzdrževati bolj stabilno vedenje skozi častudi če se sistem intenzivno uporablja.
Izboljšave šifriranja z AVX2 in AES-GCM
Kar zadeva varnost in zmogljivost, OpenZFS 2.4 vključuje vrsto optimizacij pri uporabi AVX2 za AES-GCMPreprosteje povedano: izvedba šifriranja je bila izpopolnjena, da bi bolje izkoristila zmogljivosti sodobnih procesorjev, ki imajo te napredne vektorske ukaze.
Rezultat je hitrejše šifriranje brez žrtvovanja kriptografskih jamstev, kar je še posebej opazno v sistemih, ki obdelujejo velike količine šifriranih podatkov ali v okoljih, kjer se na zaščitenih naborih podatkov izvaja veliko hkratnih operacij. zmanjšajte stroške procesorja povezane s šifriranjem, je mogoče obdelati več zahtev ali nameniti več virov drugim sistemskim nalogam.
V praksi se lahko administratorji še naprej zanašajo na funkcije Izvorno šifriranje ZFS za zaščito občutljivih podatkov brez znatnega vpliva na zmogljivost prejšnjih generacij. Šifriranje ne postane "brezplačno", vendar postane bolj obvladljivo pri delovnih obremenitvah, kjer je bilo prej očitno ozko grlo.
ZIL v posebnih vdev-jih in izboljšave v special_small_blocks
OpenZFS 2.4 prinaša tudi nove funkcije v zvezi z posebni vdevs, tiste naprave, namenjene shranjevanju določenih vrst podatkov (kot so metapodatki, majhni bloki ali tabele za deduplikacijo) na hitrejših medijih, običajno SSD ali NVMe.
Po eni strani je zdaj mogoče dovoliti ZIL (dnevnik namenov ZFS) Ko so na voljo, se namesti na namenske vdev-je. To olajša koncentracijo sinhronega pisanja na naprave z nizko zakasnitvijo, kar izboljša odzivni čas aplikacij, ki so odvisne od sinhronizacijsko intenzivnih operacij, kot so baze podatkov ali sistemi za sporočanje z močno obstojnostjo.
Po drugi strani pa se obnašanje lastnosti razširi special_small_blocks tako da ZVOL-ovi spisi Pristanejo lahko tudi v posebnih vdev-jih, ne le v določenih običajnih blokih datotek. Poleg tega je omejitev, da mora biti vrednost potenca dveh, sproščena, tako da lahko skrbnik izbere natančnejše velikosti, prilagojene svoji dejanski delovni obremenitvi, namesto da bi bil omejen na toge možnosti.
Te izboljšave skupaj omogočajo načrtovanje arhitektur shranjevanja, kjer najpomembnejši podatki (Metapodatki, majhni bloki, ZIL-i, tabele za deduplikacijo itd.) so shranjeni na hitrejših medijih, medtem ko večina podatkov ostane na cenejših diskih. Vse to prinaša veliko večjo fleksibilnost pri določanju, kaj se šteje za "majhno" in kaj ne.
zfs rewrite in zfs rewrite -P: učinkovito premeščanje podatkov
Serija 2.3 je že prinesla eno najbolj presenetljivih lastnosti zadnjega časa: podukaz prepisovanje zfs-ovOpenZFS 2.4 to orodje popelje še korak dlje z vključitvijo različice zfs rewrite -Pkar doda nove možnosti pri premeščanju podatkov znotraj skupine.
Ukaz zfs rewrite dovoljuje "prepisati"Vsebina datoteke ali nabora podatkov se kopira brez spreminjanja njenega logičnega pomena, vendar se fizično preseli na druga območja z drugačnimi notranjimi lastnostmi. To omogoča modifikacije, kot so algoritem stiskanja, vrsta kontrolne vsote, ali se uporablja deduplikacija, število kopij ali celo prednostna naprava, ne da bi bilo treba podatke kopirati v uporabniški prostor in jih prepisati."
To ima več očitnih prednosti: zmanjša vhodno/izhodni promet v primerjavi s klasično metodo »kopiraj in preimenuj«, zmanjša vpliv na predpomnilnik in se izogne dolgim časovnim obdobjem, v katerih se podatki premikajo prek zunanjih orodij. Poleg tega, ker ni logične spremembe vsebine, Čas m se ne spremeni niti drugih lastnosti, vidnih z uporabnikovega vidika, kar pomeni, da se številne aplikacije sploh ne zavedajo delovanja.
Možnost zfs rewrite -P dodaja možnost ohranite logičen čas rojstva blokov, kadar koli je to mogoče, kar pomaga zmanjšati velikost inkrementalnih tokov replikacije. Z ohranjanjem stabilnosti teh informacij lahko nadaljnje operacije pošiljanja/prejemanja bolje prepoznajo, kaj se je dejansko spremenilo in kaj ne, s čimer se zmanjša količina podatkov, ki jih je treba premikati med sistemi.
Druga pomembna prednost je, da je postopek prepisovanja zaščiten z ključavnice na območju normalno, zato lahko deluje vzporedno z dejanskimi delovnimi obremenitvami, ne da bi pri tem nepotrebno blokiral sistem. V naborih podatkov z sync=always Prednost je še večja, saj zaradi odsotnosti logične modifikacije podatkov v ZIL ni prisiljenih dodatnih zapisov, s čimer se izognemo dodatnim stroškom pri sinhronih operacijah.
Nove možnosti upravljanja v OpenZFS 2.4: -a|–all, čiščenje obsega in prednalaganje BRT
OpenZFS 2.4 prav tako izboljšuje in razširja arzenal orodij za upravljanje z več zelo uporabnimi možnostmi za vsakodnevno uporabo. Ena od teh je dodatek možnosti -a|–vsi v ukazih, ki izvajajo vzdrževalna opravila na bazenih, kot so čiščenje, obrezovanje ali inicializacija.
Ta možnost omogoča začetek operacije, ki vpliva na vsi uvoženi bazeni vse naenkrat, namesto da bi morali ročno iterirati skozi vsakega posebej. To močno poenostavi stvari na strežnikih, ki upravljajo več bazenov, saj zmanjša človeške napake in olajša avtomatizacijo.
Poleg tega je možnost uvedbe zpool scrub omejeno na določenih časovnih obdobij skozi možnosti -S -ETa funkcionalnost je zelo cenjena, kadar želite pregledati le časovno obdobje, v katerem sumite na težave, ali kadar želite stroške čiščenja razdeliti na več delnih izvedb, da ne bi preveč vplivali na splošno učinkovitost delovanja.
Druga pomembna nova funkcija je dodatek zpool prefetch -t brt za predhodno nalaganje v pomnilnik Tabela referenc blokov (tabela kloniranja blokov)To omogoča boljše izkoriščanje funkcionalnosti kloniranja blokov, uvedene v prejšnjih različicah, in zmanjšuje zakasnitev pri dostopu do notranjih struktur, vključenih v to funkcijo.
Dovoljenja, preimenovana orodja in izboljšave za odstranjevanje podvojenih podatkov in blokiranje kloniranja
Med majhnimi, a pomembnimi izboljšavami, ki izboljšujejo izkušnjo, OpenZFS 2.4 dodaja novo dovoljenje. pošlji:šifriranoZasnovan je tako, da zagotavlja bolj natančen nadzor nad tem, kdo lahko pošilja šifrirane podatke, in dobro deluje v ekipah, ki imajo ločene odgovornosti med tistimi, ki upravljajo posnetke, tistimi, ki upravljajo replikacijo, in tistimi, ki imajo dostop do šifrirnih ključev.
Preimenovana so bila tudi tradicionalna komunalna podjetja, kot npr. arc_summary y arcstat, ki nato postanejo znani zarcsummary y zarcstatTa sprememba pomaga preprečiti konflikte imen in pojasnjuje, da gre za orodja, povezana z ZFS, kar je uporabno v sistemih z več komponentami, ki izpostavljajo podobne ukaze.
Serija 2.4 se interno kopiči Nove optimizacije in popravki To velja tako za deduplikacijo kot za kloniranje blokov. Podatkovne strukture se izpopolnijo, robni primeri se popravijo in iščejo se boljši vzorci dostopa, da bi bil vpliv na pomnilnik in CPU bolj obvladljiv. Te spremembe niso neposredno vidne uporabniku, vendar povzročijo stabilnejše delovanje in manj presenečenj pri kompleksnih delovnih obremenitvah.
Skupinski bloki, ashift, počasni podrejeni vdevi in posebne topologije
OpenZFS 2.4 vključuje tudi vrsto izboljšav in popravkov v primerjavi z ... bloki tolpTo je notranja sistemska funkcija, zasnovana za obravnavo blokov, ki jih ni mogoče namestiti na običajen način. Čeprav večina uporabnikov z njimi ne komunicira neposredno, ima lahko vsaka napaka v tem delu kode resne posledice, zato so številni popravki in optimizacije dobra novica za splošno robustnost sistema.
Vzporedno z obravnavanjem premikParameter, ki določa minimalno enoto za dodelitev, usklajeno s fizično velikostjo sektorjev naprave. Boljše upravljanje premikov zmanjša možnost zapisovanja več podatkov, kot je potrebno, na diske z velikimi sektorji in pomaga ohranjati sprejemljivo raven zmogljivosti skozi celotno življenjsko dobo področja.
Druga zanimiva nova funkcija je možnost, da se podrejeni vdev-ji obnašajo na nenavadno počasen Začasno jih je mogoče »izklopiti«. Namesto da bi zmanjševali zmogljivost celotnega sistema, jih je mogoče za nekaj časa izklopiti, kar je zelo koristno, ko diski začnejo odpovedovati, ko se pojavljajo občasne težave s pogoni ali ko imajo okolja nedosledno strojno opremo.
Končno imajo sproščene topološke omejitve V posebnih in deduplikacijskih VDEV to omogoča večjo prilagodljivost pri načrtovanju skupin z naprednimi konfiguracijami. To omogoča boljšo integracijo hitrih naprav za metapodatke, deduplikirane tabele, ZIL-e in druge občutljive elemente, ne da bi pri tem prišlo do preveč togih omejitev v definiciji postavitve.
OpenZFS 2.3.4: Vzdrževanje, začetno prepisovanje in konsolidacija zfs-ja
Da bi popolnoma razumeli preskok, ki ga predstavlja 2.4, si je vredno na hitro ogledati OpenZFS 2.3.4, vzdrževalna različica, ki se je pojavila malo prej in je postavila nekaj temeljev za tisto, kar je bilo kasneje konsolidirano v novi glavni veji.
Različica 2.3.4 je prišla dva meseca po različici 2.3.3 z zelo močnim poudarkom na robustnost in združljivostPodporo za jedro Linuxa je razširil do različice 6.16, pri čemer je ohranil minimalno različico 4.18, in potrdil združljivost s FreeBSD od različice 13.3 naprej, vključno s prihajajočo 15.0. Z drugimi besedami, že je pripravljal temelje za sobivanje s sodobnimi osnovnimi sistemi brez žrtvovanja stabilnosti.
V tem posebnem pregledu je bila predstavljena začetna različica ukaza zfs rewritezasnovano prav za premestiti podatke brez spreminjanja njihove logične vsebine in brez zatekanja k bolj okornim strategijam, kot sta kopiranje/preimenovanje ali pošiljanje/prejemanje s preimenovanjem nabora podatkov. Cilj je bil ponuditi orodje, ki je sposobno ponovno uravnotežiti skupino po dodajanju vdevs, zmanjšati fragmentacijo naključno zapisanih datotek ali uporabiti nove lastnosti shranjevanja za obstoječe podatke.
V primerjavi s tradicionalnimi alternativami, zfs rewrite Hitrejši je, ker se izognemo prenosu podatkov v uporabniški prostor. V naborih podatkov z sync=alwaysPoleg tega izboljša zmogljivost, saj se podatki logično ne spreminjajo, zato se v ZIL ne sprožijo nobeni dodatni zapisi. Vse to brez dotikanja česar koli. mtime ali drugi metapodatki vidna aplikacijam, kar zmanjša vpliv na programsko opremo, ki se izvaja na njej.
Različica 2.3.4 je nudila tudi različne Nastavitve, specifične za FreeBSDVključevala je izboljšave pakiranja in niz manjših popravkov, ki so izpilili nekatere kotičke kode. Ni bila različica, namenjena uvajanju motečih sprememb, temveč izboljšanju stabilnosti pred prehodom na vejo 2.4 z večjim paketom novih funkcij.
OpenZFS 2.4 RC1, RC2, RC4: testiranje, povratne informacije in razprava skupnosti
Preden je bila serija 2.4 razglašena za stabilno, je projekt izdal več izpustite kandidate (RC1, RC2, RC4) s ciljem, da bi naprednim uporabnikom in razvijalcem omogočili njihovo testiranje in poročanje o težavah. Ti kandidati za izdajo so že vključevali praktično vse funkcije, o katerih smo razpravljali: privzete kvote, vhodno/izhodne operacije brez predpomnilnika kot rezervno možnost, enotno omejevanje dodeljevanja, izboljšave šifriranja, ZIL v posebnih vdev-jih, razširitve special_small_blocks, nova dovoljenja, preimenovanje orodij in še veliko več.
V opombah RC1 in RC2 je bil poudarjen pomen skupnosti Preizkusil bom gradnje in pošljite povratne informacije prek GitHuba, vključno z ukazi za enostavno naštevanje sprememb glede na referenčno vejo (s kombinacijami git cherry primerjava zfs-2.3-release z različnimi RC-ji). Sporočilo je bilo jasno: cilj je bil preizkusiti kodo v resničnih okoljih, preden jo označimo kot "stabilno".
Vendar pa pojav specifičnega RC (na primer 2.4.0-RC4Vključitev ogrodja .NET Framework (RF) v različico FreeBSD z oznako RELEASE, kot je na primer 15.0, je vzbudila nekaj začudenja. Nekateri uporabniki so se spraševali, zakaj so se odločili za njegovo vključitev. Kandidat za izdajo OpenZFS v različici operacijskega sistema, ki velja za stabilno, namesto da bi se zatekli k prejšnji, že uveljavljeni veji. Ta izbira je povzročila nekaj nezadovoljstva med tistimi, ki imajo raje, da datotečni sistem, na katerem ležijo njihovi podatki, temelji izključno na končnih različicah.
Dvomi so se vrteli okoli trajnosti te odločitve: če nekdo namesti FreeBSD 15.0 z OpenZFS 2.4.0-RC4 in nato ne sledi veji -CURRENT, obstaja skrb, da bo več mesecev "obtičal" pri kandidatu za izdajo, dokler ne pride manjša revizija ali nova točka v seriji. Prav tako je obstajala skrb, da bodo prihodnje izdaje, kot so 15.1 bi namesto končne različice integriral še en RC (na primer hipotetični 2.4.1-RC3).
Za to razpravo se skrivajo različni načini razumevanja tega, kaj "kandidat za javnost"V tako občutljivem kontekstu, kot je datotečni sistem. Za nekatere ljudi je kandidat za izdajo (RC) praktično stabilna različica, ki potrebuje le manjše popravke. Za druge pa je to koda, ki se ne bi smela uporabljati kot osnova sistema z oznako RELEASE in bi morala biti rezervirana za tiste, ki pozorno spremljajo razvojne veje."
Kakorkoli že, RC-ji so izpolnili svoje poslanstvo poligonTe izboljšave so omogočile odkrivanje hroščev, prilagoditve podrobnosti in veliko bolj samozavesten prihod na stabilno različico "2.4". Tisti, ki dajejo prednost varnosti, imajo še vedno možnost, da ostanejo pri prejšnjih vejah, kot je 2.3.x, dokler ne ocenijo, da je 2.4 dovolj zrela v produkciji.
Vse, kar prinaša OpenZFS 2.4, temelji na robustnosti, ki jo je projekt pridobil s serijo 2.3 in njenimi vzdrževalnimi posodobitvami, ki združujejo izboljšave združljivosti jedra, nova orodja, kot so prepisovanje zfs-ovIzdaja vključuje prilagoditve deduplikacije in kloniranja blokov, optimizacije šifriranja, notranje spremembe skupinskih blokov in ashift ter vrsto novih možnosti upravljanja. Čeprav se je pojavilo nekaj polemik glede uporabe kandidatov za izdajo v določenih operacijskih sistemih, stabilna različica 2.4 ponuja pomemben korak naprej za tiste, ki želijo iz ZFS v Linuxu in FreeBSD izvleči več, ne da bi pri tem žrtvovali uveljavljena jamstva za integriteto in odpornost.