ZFS

Konfiguriranje predpomnilnika ZFS za IO visoke hitrosti

Konfiguriranje predpomnilnika ZFS za IO visoke hitrosti

Konfiguriranje predpomnilnika v vašem področju ZFS

Če ste že prebrali naše prejšnje prispevke o osnovah ZFS, že zdaj veste, da gre za zanesljiv datotečni sistem. Izvaja kontrolne vsote na vsakem bloku podatkov, ki so zapisani na disk, pomembni metapodatki, kot so kontrolne vsote, pa so zapisani na več različnih mestih. ZFS lahko izgubi vaše podatke, vendar vam zagotovo nikoli ne bo vrnil napačnih podatkov, kot da bi bili pravi.

Večina presežkov za področje ZFS prihaja iz osnovnih VDEV. Enako velja za delovanje pomnilniškega bazena. Z dodajanjem hitrih SSD-jev ali naprav NVMe se lahko zmogljivost branja in pisanja močno izboljša. Če ste uporabili hibridne diske, kjer sta SSD in predilni disk združena kot en sam kos strojne opreme, potem veste, kako slabi so mehanizmi predpomnjenja na ravni strojne opreme. ZFS ni nič takega zaradi različnih dejavnikov, ki jih bomo raziskali tukaj.

Obstajata dva različna predpomnilnika, ki jih bazen lahko uporabi:

  1. ZFS Intent Log ali ZIL za medpomnjenje operacij WRITE.
  2. ARC in L2ARC, ki sta namenjena READ operacijam.

Sinhroni vs asinhroni zapisi

ZFS, tako kot večina drugih datotečnih sistemov, poskuša ohraniti medpomnilnik pisalnih operacij v pomnilnik in ga nato zapisati na diske, namesto da bi ga neposredno zapisal na diske. To je znano kot asinhrono pisanje in omogoča dostojno povečanje zmogljivosti za aplikacije, ki so odporne na napake ali kjer izguba podatkov ne povzroči velike škode. OS preprosto shrani podatke v pomnilnik in aplikaciji, ki je zahtevala pisanje, sporoči, da je zapisovanje končano. To je privzeto vedenje številnih operacijskih sistemov, tudi če se izvaja ZFS.

Vendar ostaja dejstvo, da se v primeru izpada sistema ali izgube električne energije izgubijo vsi medpomnjeni zapisi v glavni pomnilnik. Tako lahko aplikacije, ki želijo doslednost glede zmogljivosti, odprejo datoteke v sinhrono način in potem se šteje, da so podatki zapisani šele, ko so dejansko na disku. Večina baz podatkov in aplikacij, kot je NFS, se ves čas zanaša na sinhrono zapisovanje.

Zastavico lahko nastavite: sinhronizacija = vedno da sinhrono zapiše privzeto vedenje za kateri koli nabor podatkov.

$ zfs nastavi sinhronizacijo = vedno mypool / nabor podatkov1

Seveda boste morda želeli dobro delovanje, ne glede na to, ali so datoteke v sinhronem načinu ali ne. Tu nastopi ZIL.


Naprave ZFS Intent Log (ZIL) in SLOG

ZFS Intent Log se nanaša na del vašega pomnilniškega področja, ki ga ZFS najprej uporabi za shranjevanje novih ali spremenjenih podatkov, preden jih razširi po celotnem glavnem pomnilniškem področju in odstrani po vseh VDEV.

Privzeto je iz bazena vedno izrezano nekaj majhne količine pomnilnika, ki deluje kot ZIL, tudi če za shranjevanje uporabljate le kup predilnih diskov. Vendar lahko to storite bolje, če imate na voljo majhen NVMe ali katero koli drugo vrsto SSD-ja.

Majhen in hiter pomnilnik je mogoče uporabiti kot ločen dnevnik namenov (ali SLOG), kjer bi se novo prispeli podatki začasno shranili, preden bi se spustili v večji glavni pomnilnik bazena. Če želite dodati napravo s slogom, zaženite ukaz:

$ zpool dodaj dnevnik rezervoarja ada3

Kje rezervoar je ime vašega bazena, log je ključna beseda, ki ZFS govori o ravnanju z napravo ada3 kot SLOG naprava. Vozlišče naprave SSD morda ni nujno ada3, uporabite pravilno ime vozlišča.

Zdaj lahko preverite naprave v svojem bazenu, kot je prikazano spodaj:

Morda vas še vedno skrbi, da podatki v nehlapnem pomnilniku ne bodo uspeli, če SSD ne bo uspel. V tem primeru lahko uporabite več SSD-jev, ki se medsebojno zrcalijo ali v kateri koli konfiguraciji RAIDZ.

$ zpool dodaj ogledalo dnevnika rezervoarja ada3 ada4

Za večino primerov je majhnih 16 GB do 64 GB res hitrega in trajnega pomnilnika Flash najprimernejši kandidati za SLOG napravo.


Prilagodljivi nadomestni predpomnilnik (ARC) in L2ARC

Pri poskusu predpomnjenja operacij branja se naš cilj spremeni. Namesto da bi zagotovili dobro uspešnost in zanesljive transakcije, se zdaj motiv ZFS preusmerja k napovedovanju prihodnosti. To pomeni, da predpomnite informacije, ki bi jih aplikacija potrebovala v bližnji prihodnosti, hkrati pa zavržete tiste, ki bodo potrebne pravočasno.

V ta namen se del glavnega pomnilnika uporablja za predpomnjenje podatkov, ki so bili nedavno uporabljeni ali pa so podatki najpogosteje dostopni. Od tod izvira izraz Adaptive Replacement Cache (ARC). Poleg tradicionalnega predpomnjenja branja, kjer se predpomnijo le pred kratkim uporabljeni predmeti, je ARC pozoren tudi na to, kako pogosto so dostopali do podatkov.

L2ARC ali stopnja 2 ARC je razširitev ARC. Če imate namensko pomnilniško napravo, ki bo delovala kot vaš L2ARC, bo shranila vse podatke, ki niso preveč pomembni, da ostanejo v ARC, hkrati pa so ti podatki dovolj koristni, da si zaslužijo mesto v počasnejšem od pomnilnika Naprava NVMe.

Če želite v svoj bazen ZFS dodati napravo kot L2ARC, zaženite ukaz:

$ zpool dodaj predpomnilnik rezervoarja ada3

Kje rezervoar je ime vašega bazena in ada3 je ime vozlišča naprave za vašo shrambo L2ARC.


Povzetek

Skratka, operacijski sistem pogosto medpomni operacije pisanja v glavni pomnilnik, če se datoteke odprejo v asinhronem načinu. Tega ne gre zamenjati z dejanskim predpomnilnikom pisanja ZIL, ZIL.

ZIL je privzeto del trajnega pomnilnika bazena, kjer gredo podatki v začasno hrambo, preden se pravilno razširijo po vseh VDEV. Če SSD uporabljate kot namensko napravo ZIL, je znan kot SLOG. Kot vsak VDEV je tudi SLOG lahko v zrcalni ali raidz konfiguraciji.

Predpomnilnik, shranjen v glavnem pomnilniku, je znan kot ARC. Zaradi omejene velikosti RAM-a pa lahko SSD vedno dodate kot L2ARC, kjer se stvari, ki ne morejo v RAM, shranijo v predpomnilnik.

Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...
0 A.D. Vadnica
Od številnih strateških iger tam 0 A.D. uspe izstopati kot izčrpen naslov in zelo globoka, taktična igra, čeprav je odprtokodna. Razvoj igre deluje ze...
Vadnica za Unity3D
Uvod v Unity 3D Unity 3D je močan motor za razvoj iger. Navzkrižna platforma vam omogoča ustvarjanje iger za mobilne naprave, splet, namizje in konzol...