ZFS

Konfigurere ZFS-hurtigbuffer for høyhastighets IO

Konfigurere ZFS-hurtigbuffer for høyhastighets IO

Konfigurere hurtigbuffer på ZFS-bassenget

Hvis du har vært gjennom våre tidligere innlegg om grunnleggende om ZFS, vet du nå at dette er et robust filsystem. Den utfører kontrollsummer på hver blokk med data som skrives på disken, og viktige metadata, som selve kontrollsummen, er skrevet flere forskjellige steder. ZFS kan miste dataene dine, men det vil garantert aldri gi deg feil data tilbake, som om det var den rette.

Det meste av redundansen for et ZFS-basseng kommer fra de underliggende VDEV-ene. Det samme gjelder lagringsbassengets ytelse. Både lese- og skriveytelsen kan forbedres kraftig ved å legge til høyhastighets SSD-er eller NVMe-enheter. Hvis du har brukt hybriddisker der en SSD og en spinnende disk er samlet som et enkelt stykke maskinvare, vet du hvor ille cache-mekanismene på maskinvarenivået er. ZFS er ingenting som dette på grunn av forskjellige faktorer som vi vil utforske her.

Det er to forskjellige cacher som et basseng kan bruke:

  1. ZFS Intent Log, eller ZIL, for å buffere WRITE-operasjoner.
  2. ARC og L2ARC som er ment for LES-operasjoner.

Synkron mot asynkron skriving

ZFS, som de fleste andre filsystemer, prøver å opprettholde en buffer med skriveoperasjoner i minnet og deretter skrive den ut til diskene i stedet for å skrive den direkte til diskene. Dette er kjent som asynkron skrive og det gir anstendige ytelsesgevinster for applikasjoner som er feiltolerante eller hvor datatap ikke gjør mye skade. Operativsystemet lagrer ganske enkelt dataene i minnet og forteller applikasjonen, som ba om skrivingen, at skrivingen er fullført. Dette er standardoppførselen til mange operativsystemer, selv når du kjører ZFS.

Imidlertid forblir faktum at i tilfelle systemfeil eller strømbrudd, går alle bufrede skrivinger i hovedminnet tapt. Så applikasjoner som ønsker konsistens i forhold til ytelse, kan åpne filer i synkron modus og da anses dataene bare å være skrevet når de faktisk er på disken. De fleste databaser, og applikasjoner som NFS, stole på synkrone skrivinger hele tiden.

Du kan sette flagget: synkronisering = alltid for å lage synkron skriver standardadferd for et gitt datasett.

$ zfs sett synkronisering = alltid mypool / datasett1

Selvfølgelig kan det være lurt å ha god ytelse, uansett om filene er i synkron modus eller ikke. Det er der ZIL kommer inn i bildet.


ZFS Intent Log (ZIL) og SLOG-enheter

ZFS Intent Log refererer til en del av lagringsbassenget ditt som ZFS bruker til å lagre nye eller modifiserte data først, før du sprer det ut i hovedlagringsbassenget og fjerner alle VDEV-ene.

Som standard blir det alltid skåret ut litt lagringsplass fra bassenget for å fungere som ZIL, selv når du bare bruker en haug med spinnende disker til lagring. Du kan imidlertid gjøre det bedre hvis du har en liten NVMe eller annen type SSD til din disposisjon.

Den lille og raske lagringen kan brukes som en separat hensiktslogg (eller SLOG), hvor de nylig ankomne dataene vil bli lagret midlertidig før de skylles til den større hovedlagringen i bassenget. For å legge til en slog-enhet, kjør kommandoen:

$ zpool legg til tanklogg ada3

Hvor tank er navnet på bassenget ditt, Logg er nøkkelordet som forteller ZFS å behandle enheten ada3 som en SLOG-enhet. SSD-enhetens enhetsnode er ikke nødvendigvis det ada3, bruk riktig nodenavn.

Nå kan du sjekke enhetene i bassenget ditt som vist nedenfor:

Du kan fortsatt være bekymret for at dataene i et ikke-flyktig minne vil mislykkes hvis SSD mislykkes. I så fall kan du bruke flere SSD-er som speiler hverandre eller i hvilken som helst RAIDZ-konfigurasjon.

$ zpool legg til tank logg speil ada3 ada4

For de fleste brukstilfeller er de små 16 GB til 64 GB veldig rask og holdbar flash-lagring de mest passende kandidatene for en SLOG-enhet.


Adaptiv erstatningsbuffer (ARC) og L2ARC

Når vi prøver å cache leseoperasjonene, endres vårt mål. I stedet for å sørge for at vi får god ytelse, samt pålitelige transaksjoner, skifter nå ZFSs motiv til å forutsi fremtiden. Dette betyr å lagre informasjonen som en applikasjon vil kreve i nær fremtid, mens du kaster informasjonen som vil være nødvendig lengst frem i tid.

For å gjøre dette brukes en del av hovedminnet til hurtigbufring av data som enten nylig ble brukt, eller ofte blir tilgang til dataene. Det er her begrepet Adaptive Replacement Cache (ARC) kommer fra. I tillegg til tradisjonell lesebuffer, der bare de sist brukte objektene blir bufret, tar ARC også oppmerksomhet til hvor ofte dataene er tilgjengelige.

L2ARC, eller nivå 2 ARC, er en utvidelse av ARC. Hvis du har en dedikert lagringsenhet til å fungere som din L2ARC, vil den lagre alle dataene som ikke er for viktige for å være i ARC, men samtidig er data nyttige nok til å fortjene et sted i tregere enn minne NVMe-enhet.

For å legge til en enhet som L2ARC i ZFS-bassenget, kjør kommandoen:

$ zpool legg til tankbuffer ada3

Hvor tank er bassengets navn og ada3 er enhetsnodenavnet for din L2ARC-lagring.


Sammendrag

For å kutte en lang historie kort, buffrer et operativsystem ofte skriveoperasjoner i hovedminnet, hvis filene åpnes i asynkron modus. Dette må ikke forveksles med ZFS 'faktiske skrivebuffer, ZIL.

ZIL er som standard en del av ikke-flyktig lagring av bassenget der data går til midlertidig lagring før de spres ordentlig gjennom alle VDEV-ene. Hvis du bruker en SSD som en dedikert ZIL-enhet, er den kjent som SLOG. Som enhver VDEV kan SLOG være i speil- eller raidz-konfigurasjon.

Lesecache, lagret i hovedminnet, er kjent som ARC. På grunn av den begrensede størrelsen på RAM, kan du imidlertid alltid legge til en SSD som en L2ARC, der ting som ikke kan passe i RAM-en blir lagret.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...
Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...