Btrfs

Introduksjon til Btrfs Filesystem

Introduksjon til Btrfs Filesystem
Btrfs (B-Tree Filesystem) er et moderne copy-on-write (CoW) filsystem for Linux. Btrfs har som mål å implementere mange avanserte filsystemfunksjoner mens du fokuserer på feiltoleranse, reparasjon og enkel administrasjon. Btrfs-filsystemet er designet for å støtte kravene til høytytende og store lagringsservere. Den er egnet for datasentre i petabyte skala samt mobiltelefoner.I denne artikkelen skal jeg diskutere Btrfs-filsystemet og dets funksjoner. Så la oss komme i gang.

Kopier på skriv - CoW-filsystem:

Btrfs er et copy-on-write (CoW) filsystem. Når du prøver å endre data på filsystemet i et CoW-filsystem, kopierer filsystemet dataene, endrer dataene og skriver de modifiserte dataene tilbake til en annen ledig plassering av filsystemet.

Den viktigste fordelen med Copy-on-Write (CoW) -filsystemet er at dataomfanget det vil endre, kopieres til et annet sted, endres og lagres i en annen grad av filsystemet. Den opprinnelige dataomfanget er ikke endret. Så btrfs-filsystemet kan eliminere risikoen for datakorrupsjon eller delvis oppdatering i tilfelle strømbrudd under modifisering av data, da de originale dataene holdes uendret.

Den største ulempen med Copy-on-Write (CoW) -filsystemet er at store filer har en tendens til å bli fragmentert når de endres. Så, defragmentering kreves en gang i blant. Heldigvis støtter btrfs-filsystemet online defragmentering. Så du trenger ikke å demontere filsystemet for å defragmentere et btrfs-filsystem.

Hovedtrekk ved Btrfs Filesystem:

Hovedfunksjonene i Btrfs-filsystemet er:

i) Omfattet basert lagring av filer: I et omfangsbasert filsystem kalles lagringsenheten et omfang. Et omfang er et sammenhengende lagringsområde som er reservert for en fil. Én fil krever en grad, uansett hvor liten filen er. For større filer (filstørrelse større enn omfangsstørrelsen), kreves det flere utvidelser. For større filer vil metadata brukes til å holde rede på omfanget filen bruker. I Btrfs-filsystemet er metadataene betydelig mindre i størrelse. Mindre metadata forbedrer lagringseffektiviteten og ytelsen til filsystemet.

ii) Stor støtte for filstørrelse: I et Btrfs-filsystem kan en enkelt fil være omtrent 264 byte eller 16 EiB (exbibytes) i størrelse. Uansett hvor stor filen din blir, kan Btrfs støtte den.

iii) Plasseffektiv emballasje av små filer: Normalt, uansett hvor liten en fil er, vil det kreve en blokk eller en grad å lagre filen. Dette kaster bort mye diskplass. For å løse dette problemet legger Btrfs-filsystemet inn mindre filer i metadataene for å lagre mindre filer effektivt.

iv) Romeffektive indekserte kataloger: Btrfs-filsystemkatalogene indekseres på to forskjellige måter. For oppslag av filnavn brukes nøkkelbasert indeksering. For å referere til data brukes inode-basert nøkkelindeksering. To-nivå indeksering forbedrer katalog- / filoppslagsytelsen og reduserer lagringskravene til indeksene.

v) Dynamisk inodetildeling: Du trenger 1 kode for å kunne referere til en fil. Mange filsystemer (i.e., Ext4) har et fast antall inoder. Så hvis du oppretter for mange små filer, kan det være at du har mye plass igjen på disken, men du kan ikke opprette nye filer. Du kan heller ikke øke det maksimale antallet inoder når filsystemet er opprettet.

Btrfs løser dette problemet ved å tildele inoder dynamisk etter behov. Så du kan opprette så mange filer du vil så lenge du har ledig diskplass.

vi) Skrivbare øyeblikksbilder og skrivebeskyttede øyeblikksbilder: Btrfs-filsystemet støtter øyeblikksbilder. Du kan ta et øyeblikksbilde av det nåværende filsystemet, som du kan bruke til å gjenopprette dataene dine hvis du ved et uhell har fjernet noen filer eller ødelagt noen data.

Som standard er btrfs-øyeblikksbildene skrivebeskyttet. Når du har tatt et skrivebeskyttet øyeblikksbilde, kan du ikke endre noen filer / kataloger i det øyeblikksbildet. I alle fall, hvis du vil endre noen filer / kataloger etter at du har tatt et øyeblikksbilde av ditt eksisterende Btrfs-filsystem, kan du endre det skrivebeskyttede øyeblikksbildet til et skrivbart øyeblikksbilde og endre eventuelle filer / kataloger i det øyeblikksbildet.

vii) Delvolumer: Et Btrfs-filsystem kan ha mange undervolumer. Et undervolum er et navngitt binært tre (B-tre) (eller intern / logisk filsystemrot) til det eksisterende filsystemets rottrær (hoved) til btrfs-filsystemet. En delvolum er ikke en egen blokkanordning. Men du kan montere Btrfs-delvolumer individuelt. Du kan tenke på undervolumer som navnerom.

viii) Kvotestøtte for delvolum: Du kan også tildele kvoter for delvolumer. Når kvoten er overskredet, vil du ikke kunne legge til nye data i undervolumet. Du trenger ikke noen separate programmer for å lage Btrfs-delvolumkvoter.

ix) Kontrollsummer for data og metadata: For å unngå datakorrupsjon bruker Btrfs som standard crc32c sjekksumalgoritmer for dataene og filsystemets metadata. Kontrollsummen er lagret i filsystemet for automatisk å se etter filsystemfeil og datakorrupsjoner i bakgrunnen.

Btrfs har støtte for mange andre sjekksumalgoritmer: xxhash, sha256 og blake2b.

x) Kompresjon: Btrfs filsystem støtter gjennomsiktig filkomprimering. Komprimering og dekompresjon av filene i et btrfs-filsystem gjøres automatisk i bakgrunnen.

Btrfs støtter 3 komprimeringsalgoritmer: ZLIB, LZO og ZSTD.

ZLIB er standard komprimeringsmetode for btrfs-filsystemet.

xi) Integrert støtte for flere enheter: Btrfs filsystemer har innebygd støtte for logisk volumbehandling (LVM). Du kan legge til flere lagringsenheter i et enkelt btrfs-filsystem. Du kan også konfigurere RAID-arrays på btrfs-filsystemet uten å trenge noe ekstra programvare.

Btrfs filsystem støtter datastriping, dataspeiling, datastriping + speiling og implementering av enkelt- og dobbeltparitet.

Datastriping: Hvis du har lagt til flere lagringsenheter i samme btrfs-filsystem, kan btrfs lagre den samme filen på forskjellige fysiske enheter / partisjoner. Dette kalles datastriping. Datastriping forbedrer lese- / skriveytelsen til filsystemet. RAID-0 bruker datastripingfunksjonen mye.

Dataspeiling: Hvis du har lagt til flere lagringsenheter i samme btrfs-filsystem, vil alle dataene som skrives til en lagringsenhet bli skrevet til alle de andre lagringsenhetene. Dette kalles dataspeiling. RAID-1 bruker dataspeilingsfunksjonen mye.

Datastriping + enkeltparitet: RAID-5 bruker datastriping og enkelt distribuert paritet. Hvis du har lagt til flere lagringsenheter i et btrfs-filsystem, vil RAID-5 strippe dataene på flere lagringsenheter og beregne og lagre paritetsblokker på tvers av lagringsenhetene. RAID-5 kan opprettholde en enkelt stasjonsfeil.

Datastriping + dobbel paritet: RAID-6 bruker datastriping og dobbel distribuert paritet. Hvis du har lagt til flere lagringsenheter i et btrfs-filsystem, vil RAID-6 strippe dataene på flere lagringsenheter og beregne og lagre dobbeltparitetsblokker på tvers av lagringsenhetene. RAID-6 kan opprettholde to stasjonsfeil. Annet enn det, er det det samme som RAID-5 (datastriping + enkeltparitet).

Datastriping + speiling: RAID-10 bruker datastriping og dataspeiling samtidig. RAID-10 krever at et jevnt antall lagringsenheter av samme størrelse legges til et enkelt btrfs-filsystem. Minimum antall lagringsenheter du kan legge til på et RAID-10 btrfs-filsystem er 4. Halvparten av lagringsenheten vil bli brukt til datastriping, og den andre halvparten skal brukes til å speile dataene til den første halvdelen av lagringsenhetene (der data er stripete).

xii) SSD-bevissthet og optimaliseringer: Btrfs-filsystemet er SSD-bevisst og har noen SSD-optimaliseringsfunksjoner. Btrfs-filsystemet har også TRIM / Discard-støtte for SSD-lagringsenheter.

TRIM-funksjonen kan oppdage og merke datautvidelser som ikke lenger brukes. Når utvidelsene er merket, kan btrfs-filsystemet tørke dem automatisk slik at de andre filene kan bruke disse datautvidelsene.

Forkast-funksjonen vil fjerne alle datautvidelsene til SSD-en. Hvis du vil selge SSD-en din, kan denne funksjonen komme til nytte.

xiii) Effektiv trinnvis sikkerhetskopiering: Btrfs støtter trinnvis sikkerhetskopiering. Første gang du sikkerhetskopierer et btrfs-filsystem, tar det et øyeblikksbilde av det nåværende filsystemet. Deretter vil eventuelle påfølgende sikkerhetskopier bli sammenlignet med det første øyeblikksbildet, og bare endringene blir lagret på disken. Så eventuelle påfølgende sikkerhetskopier vil ta mindre diskplass, og sikkerhetskopier vil bli raskere.

xiv) Bakgrunnsskrubb: Det er en Btrfs-filsystemprosess som brukes til å finne og fikse feil på filene som har overflødige kopier (flere kopier) lagret i Btrfs-filsystemet.

xv) Online filsystemdefragmentering: Jeg har tidligere forklart hvordan Btrfs Copy-on-Write-filsystemet fungerer. Større filer lagres i flere deler av Btrfs-filsystemet. Når du endrer store filer, kopieres utvidelsene som skal endres til forskjellige ledige deler av filsystemet og endres der. Så, de umodifiserte datautvidelsene oppbevares også i tilfelle det er nødvendig for filsystemgjenoppretting. Dette forårsaker fragmentering (datautvidelsen til en stor fil vil ikke være kontinuerlig og vil bli spredt rundt hele lagringsenheten) på filsystemet når store filer endres. For mye fragmentering påvirker filsystemet negativt (gjør at lesesystemet leses / skrives langsommere).

For å løse dette problemet støtter btrfs-filsystemet online filsystemdefragmentering. Med online defragmentering trenger du ikke å demontere filsystemet for å defragmentere filsystemet. Du kan holde filsystemet i gang og fortsatt defragmentere det. Defragmentering vil flytte filforlengelser rundt filsystemet for å holde omfanget av den samme store filen så kontinuerlig som mulig. Defragmentering forbedrer ytelsen til filsystemet.

xvi) Offline filsystemkontroll: Btrfs-filsystemet har mange innebygde verktøy som du kan bruke til å se etter filsystemfeil og fikse dem. Du kan også fikse et ødelagt Btrfs-filsystem (som ikke kan monteres) med disse verktøyene.

xvii) Konvertering på stedet av eksisterende Ext2 / 3/4 og ReiserFS filsystemer: Btrfs-filsystemet har et innebygd verktøy btrfs-convert, som du kan bruke til å konvertere et eksisterende Ext2 / 3 / 4- og ReiserFS-filsystem til et Btrfs-filsystem.

Konverteringsprogrammet for Btrfs-filsystem leser metadataene til et eksisterende Ext2 / 3/4 (eller ReiserFS) -filsystem, oppretter Btrfs-metadata og lagrer dem på filsystemet. Filsystemet beholder både Btrfs og Ext2 / 3/4 (eller ReiserFS) metadata. Btrfs-filsystemet peker på de samme filblokkene som brukes av Ext2 / 3/4 (eller ReiserFS) filsystemfiler. Det eksisterende filsystemet og datablokkene holdes urørt da Btrfs er et Copy-on-Write (CoW) filsystem. Når en fil blir endret, kopierer Btrfs-filsystemet de originale datablokkene til nye gratisstørrelser og endrer dem der.

xviii) Frøenheter: Btrfs-filsystemet støtter seed-enheter. Du kan opprette et skrivebeskyttet filsystem og bruke det som en mal (seed-enhet) for å lage andre Btrfs-filsystemer. Fordelen med å gjøre det er at bare de modifiserte dataene blir skrevet til det nye filsystemet. Originaldataene (på frøenhetene) blir beholdt som de er. Denne funksjonen kan brukes til å spare mye diskplass og dataredundans.

xix) Send / motta endringer i undervolum: Btrfs-filsystemet kan sende / motta endringer i delvolum. Btrfs-filsystemet kan sende trinnvise endringer av et undervolum til et annet Btrfs-filsystem (kan også ligge i en annen datamaskin) som kan motta undervolumendringene. Denne funksjonen brukes til å ta inkrementelle sikkerhetskopier av Btrfs-filsystemet enten lokalt eller eksternt. Denne metoden er raskere og mer effektiv enn rsync.

xx) Deduplisering av gruppe / utenfor bånd: Btrfs-filsystemet støtter deduplisering av batch eller utenfor bandet. Kopieringen skjer etter at en fil er skrevet til filsystemet. Btrfs-filsystemet skanner aktivt hele filsystemet for identiske størrelser og beholder bare en kopi av hvert omfang (fjerner overflødige / dupliserte utvidelser). Det samme copy-on-write (CoW) -prinsippet brukes til denne oppgaven. Deduplisering sparer mye diskplass.

xxi) Byttefilstøtte: Hvis du bruker Linux Kernel 5.0 eller nyere, kan du opprette byttefiler på Btrfs-filsystemet.

Det er noen begrensninger i Swapfile i et Btrfs-filsystem:

- Byttefilen må tildeles som NoCoW (ikke copy-on-write)

- Byttefilen må ikke ha noen komprimering aktivert.

Stabilitet for Btrfs-filsystem:

Btrfs-filsystemet er aktivt utviklet av Btrfs-teamet. De fleste av funksjonene i filsystemet er stabile i skrivende stund. Noen av de avanserte funksjonene er ennå ikke stabile nok for et produksjonsmiljø. Btrfs-teamet jobber hardt for å løse disse stabilitetsproblemene.

Hvis du vil bruke Btrfs-filsystemet på produksjonsserveren din, kan du sjekke den offisielle Status - btrfs Wiki-siden for å finne ut om filsystemfunksjonene du trenger er stabile nok for deg eller ikke. Sørg også for å kjøre noen tester før den endelige distribusjonen av Btrfs-filsystemet ditt, og husk å ta sikkerhetskopier av viktige data. Å ha sikkerhetskopi er alltid viktig for produksjonsmiljøer.

Fremtidig erstatning av Ext4-filsystem:

Btrfs filsystem utvikles raskt. Btrfs-utviklingsteamet bryr seg også om filsystemets stabilitet. Så de prøver sitt beste for å gjøre det så stabilt som mulig mens de utvikler btrfs-filsystemet. Når btrfs-filsystemet er fullt utviklet, og alle funksjonene er stabile nok, kan det erstatte Ext4-filsystemet.

Referanser:

[1] btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Main_Page
[2] BTRFS - The Kernel Tree Documentation - https: // www.kjernen.org / doc / html / latest / filesystems / btrfs.html
[3] BTRFS - Ordliste - https: // btrfs.wiki.kjernen.org / indeks.php / Ordliste
[4] Funksjoner i "Btrfs" -filsystemet - https: // www.thegeekdiary.no / features-of-the-btrfs-filesystem /
[5] Sammenligning av filsystemer - https: // no.wikipedia.org / wiki / Comparison_of_file_systems
[6] Btrfs design - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Btrfs_design
[7] kanskje å gå tom for inoder kan tas "mer seriøst"? - https: // lwn.nett / Artikler / 724522 /
[8] Gjør et Btrfs skrivebeskyttet øyeblikksbilde skrivbart - https: // markandruth.co.uk / 2016/12/29 / making-a-btrfs-read-only-snapshot-writable
[9] Datastriping - https: // no.wikipedia.org / wiki / Data_striping
[10] FAQ - btrfs wiki - https: // btrfs.wiki.kjernen.org / indeks.php / FAQ
[11] Standard RAID-nivåer - https: // no.wikipedia.org / wiki / Standard_RAID_levels
[12] Trim (databehandling) - https: // no.wikipedia.org / wiki / Trim_ (databehandling)
[13] Solid state drive - ArchWiki - https: // wiki.archlinux.org / indeks.php / Solid_state_drive # TRIM
[14] Btrfsck - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Btrfsck
[15] Konvertering fra Ext3 / 4 og ReiserFS - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Conversion_from_Ext3
[16] Inkrementell sikkerhetskopi - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Incremental_Backup
[17] Deduplisering - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / deduplisering
[18] Status - btrfs Wiki - https: // btrfs.wiki.kjernen.org / indeks.php / Status

Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...
Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...