Introduksjon til BTRFS -filsystem

Introduksjon til BTRFS -filsystem
BTRFS (B-Tree Filesystem) er et moderne kopiering (COW) filsystem for Linux. BTRFS har som mål å implementere mange avanserte filsystemfunksjoner mens de fokuserer på feiltoleranse, reparasjon og enkel administrering. BTRFS -filsystemet er designet for å støtte kravet til høy ytelse og store lagringsservere. Det er egnet for petabyte-skala datasentre så vel som mobiltelefoner.I denne artikkelen skal jeg diskutere BTRFS -filsystemet og dens funksjoner. Så la oss komme i gang.

Kopier på skriving - kufilsystem:

BTRFS er et Copy-on-Write (COW) -filsystem. I et kufilsystem, når du prøver å endre data om filsystemet, kopierer filsystemet dataene, endrer dataene og skriver deretter de endrede dataene tilbake til et annet gratis sted i Filsystem.

Den viktigste fordelen med det kopiering av kopiering (COW) er at dataomfanget den ønsker å endre blir kopiert til et annet sted, modifisert og lagret 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 datamodifisering, da de opprinnelige dataene holdes uendret.

Den største ulempen med kopiering av kopiering (COW) er at store filer har en tendens til å bli fragmentert når de er endret. Så defragmentering kreves innimellom. Heldigvis støtter BTRFS -filsystemet online defragmentering. Så du trenger ikke å demontere filsystemet for å defragmentere et BTRFS -filsystem.

Hovedfunksjonene i BTRFS Filsystem:

Hovedfunksjonene i BTRFS -filsystemet er:

i) omfang basert fillagring: I en gradbasert filsystem kalles lagringsenheten. En grad er et sammenhengende lagringsområde som er forbeholdt en fil. En fil krever en grad, uansett hvor liten filen er. For større filer (filstørrelse større enn omfangsstørrelsen) vil det være nødvendig med flere omfang. For større filer vil metadata bli brukt for å holde rede på den omfanget av filen bruker. I BTRFS -filsystemet er metadataene betydelig mindre i størrelse. Mindre metadata forbedrer lagringseffektiviteten og ytelsen til filsystemet.

ii) Stort størrelse på filstørrelsen: 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) Romeffektiv emballasje av små filer: Normalt, uansett hvor liten fil er, vil den kreve en blokk eller en grad for å lagre filen. Dette kaster bort mye diskplass. For å løse dette problemet, innebærer BTRFS -filsystemet 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 inodebasert nøkkelindeksering. To-nivå indeksering forbedrer katalog/filoppslagsytelse og reduserer lagringskravene for indeksene.

v) Dynamisk inodeallokering: Du trenger 1 inode for å referere 1 fil. Mange filsystemer (i.e., Ext4) har et fast antall inoder. Så hvis du oppretter for mange små filer, kan du ha mye plass igjen på disken din, men du vil ikke kunne opprette noen 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 når de er påkrevd. Så du kan opprette så mange filer du vil, så lenge du har gratis diskplass.

vi) Skriv frem øyeblikksbilder og skrivebeskyttede øyeblikksbilder: BTRFS -filsystemet støtter øyeblikksbilder. Du kan ta et øyeblikksbilde av det gjeldende 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-øyeblikksbilder 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 filer/kataloger etter at du har tatt et øyeblikksbilde av det eksisterende BTRFS-filsystemet, kan du endre det skrivebeskyttet øyeblikksbilde til et skrivbar øyeblikksbilde og endre alle filer/kataloger i det øyeblikksbildet.

vii) Subvolumes: Et BTRFS -filsystem kan ha mange undervolumer. Et subvolume er et navngitt binært tre (B-tre) (eller intern/logisk filsystemrot) av det eksisterende filsystemet rottreet (hoved) i BTRFS-filsystemet. Et subvolume er ikke en egen blokkeringsenhet. Men du kan montere BTRFS -subvolumes individuelt. Du kan tenke på undervolumer som navneområder.

viii) Subvolume Aware Quota Support: Du kan også tildele kvoter for undervolumer. Når kvoten er overskredet, vil du ikke kunne legge til nye data i undervolumet. Du trenger ikke noen separate programmer for å lage BTRFS Subvolume -kvoter.

ix) sjekker om data og metadata: For å unngå datakorrupsjon bruker BTRFS CRC32C Checksum -algoritmer for dataene og filsystemets metadata som standard. Kontrollene er lagret i filsystemet for automatisk å sjekke for filsystemfeil og datakorrupsjoner i bakgrunnen.

BTRFS har støtte for mange andre sjekksumalgoritmer: XXHASH, SHA256 og Blake2b.

x) Komprimering: BTRFS -filsystem støtter gjennomsiktig filkompresjon. Komprimering og dekompresjon av filene i et BTRFS -filsystem gjøres automatisk i bakgrunnen.

BTRFS støtter 3 kompresjonsalgoritmer: Zlib, LZO og ZSTD.

Zlib er standard komprimeringsmetode for BTRFS -filsystemet.

XI) Integrert flere enhetsstøtte: BTRFS Filsystems har innebygd logisk volumadministrator (LVM) -støtte. Du kan legge til flere lagringsenheter i et enkelt BTRFS -filsystem. Du kan også konfigurere RAID -matriser på BTRFS -filsystemet uten å trenge noe ekstra programvare.

BTRFS -filsystem støtter datastriping, dataspeiling, datastriping+speiling og enkelt- og dobbeltparitetsimplementeringer.

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.

Data speiling: Hvis du har lagt til flere lagringsenheter i samme BTRFS -filsystem, vil alle dataene som er skrevet 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 fjerne dataene på flere lagringsenheter og beregne og lagre paritetsblokker over lagringsenhetene. RAID-5 kan opprettholde en enkelt drivfeil.

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 fjerne dataene på flere lagringsenheter og beregne og lagre doble paritetsblokker over lagringsenhetene. RAID-6 kan opprettholde to drivfeil. 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 i samme størrelse blir lagt 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 brukes til å speile dataene fra første halvdel 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/kassestøtte for SSD -lagringsenhet.

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

Kastfunksjonen vil fjerne alle dataforlengelsene til SSD. Hvis du vil selge SSD -en din, kan denne funksjonen komme godt med.

xiii) effektiv trinnvis sikkerhetskopi: BTRFS støtter trinnvis sikkerhetskopi. Første gang du tar sikkerhetskopi av et BTRFS -filsystem, tar det et øyeblikksbilde av det gjeldende filsystemet. Deretter vil eventuelle påfølgende sikkerhetskopiering bli sammenlignet med det første øyeblikksbildet, og bare endringene vil bli lagret på disken. Så alle påfølgende sikkerhetskopier vil ta mindre diskplass, og sikkerhetskopier vil være raskere.

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

xv) online filsystem defragmentering: Jeg har forklart tidligere hvordan BTRFS kopiering-på-skriv filsystem fungerer. Larges -filer lagres i flere omfang av BTRFS -filsystemet. Når du endrer store filer, blir omfanget som skal endres til forskjellige gratis omfang av filsystemet og endres der. Så de umodifiserte dataomfangene holdes også i tilfelle det kreves for gjenoppretting av filsystemet. Dette forårsaker fragmentering (dataomtrengene til en stor fil vil ikke være kontinuerlige og vil bli spredt rundt hele lagringsenheten) på filsystemet, da store filer er endret. For mye fragmentering påvirker filsystemet negativt (gjør filsystemet til å lese/skrive operasjon tregere).

For å løse dette problemet støtter BTRFS -filsystemet online filsystem defragmentering. Med online defragmentering trenger du ikke å demontere filsystemet for å defragmentere filsystemet. Du kan holde filsystemet i gang og fremdeles defragment det. Defragmentering vil flytte fileomfattende rundt filsystemet for å holde omfanget av den samme store filen så kontinuerlig som mulig. Defragmentering forbedrer filsystemets ytelse.

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

xvii) på stedet konvertering 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 Filsystems til et BTRFS-filsystem.

BTRFS -filsystemkonverteringsprogrammet leser metadataene til et eksisterende Ext2/3/4 (eller Reiserfs) filsystem, oppretter BTRFS -metadata og lagrer dem på filsystemet. Filsystemet holder både BTRF -er og Ext2/3/4 (eller Reiserfs) metadata. BTRFS -filsystemet peker på de samme filblokkene som brukes av Ext2/3/4 (eller Reiserfs) filsystemfilene. Det eksisterende filsystemet og datablokgene holdes uberørt da BTRFS er et kopiering (COW-Filsystem (Copy-on-Write (COW). Når en fil er endret, kopierer BTRFS -filsystemet de originale datablokkene i nye gratis omfang og endrer dem der.

xviii) frøenheter: BTRFS -filsystemet støtter frøenheter. Du kan opprette et skrivebeskyttet filsystem og bruke det som en mal (frøenhet) for å lage andre BTRFS-filsystemer. Fordelen med å gjøre det er at bare de endrede dataene vil bli skrevet til det nye filsystemet. De opprinnelige dataene (på frøenhetene) vil bli holdt 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 subvolume. BTRFS -filsystemet kan sende de trinnvise endringene av et undervolum til et annet BTRFS -filsystem (kan også oppholde seg i en annen datamaskin) som kan motta subvolume -endringene. Denne funksjonen brukes til å ta inkrementelle sikkerhetskopier av BTRFS -filsystemet enten lokalt eller eksternt. Denne metoden er raskere og mer effektiv enn Rsync.

XX) Batch/Out of Band Deduplication: BTRFS-filsystemet støtter batch eller ut-av-band deduplication. Dupliseringen skjer etter at en fil er skrevet til filsystemet. BTRFS -filsystemet skanner aktivt hele filsystemet for identiske omfang og holder bare en kopi av hver grad (fjerner overflødig/duplikatekster). Det samme kopieringsprinsippet (Copy-on-Write (Cow) brukes til denne oppgaven. Deduplisering sparer mange diskplasser.

xxi) Swapfile Support: Hvis du bruker Linux Kernel 5.0 eller nyere, kan du lage swapfiles på BTRFS -filsystemet.

Det er noen begrensninger for swapfile i et BTRFS -filsystem:

- Swapfile må tildeles som Nocow (ikke kopiering)

- Swapfile må ikke ha noen kompresjon aktivert.

Stabilitet av BTRFS Filsystem:

BTRFS -filsystemet er aktivt utviklet av BTRFS -teamet. De fleste funksjonene i filsystemet er stabile på dette tidspunktet. 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 statusen - BTRFS Wiki -siden for å finne ut om filsystemet 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 å holde sikkerhetskopier av viktige data. Å holde sikkerhetskopi er alltid viktig for produksjonsmiljøer.

Fremtidig erstatning av ext4 -filsystem:

BTRFS -filsystem utvikles raskt. BTRFS -utviklingsteamet bryr seg også om stabiliteten i filsystemet. 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.kjerne.org/indeks.php/main_page
[2] BTRFS - Kerneltreedokumentasjonen - https: // www.kjerne.org/doc/html/siste/filsystemer/btrfs.html
[3] BTRFS - Ordliste - https: // btrfs.Wiki.kjerne.org/indeks.PHP/ordliste
[4] Funksjoner i “BTRFS” -filsystemet - https: // www.Thegeekdiary.com/funksjoner-of-the-btrfs-filesystem/
[5] Sammenligning av filsystemer - https: // no.Wikipedia.org/wiki/sammenligning_of_file_systems
[6] BTRFS Design - BTRFS WIKI - HTTPS: // BTRFS.Wiki.kjerne.org/indeks.PHP/BTRFS_DESIGN
[7] Kanskje å løpe tom for inoder kan tas "mer alvorlig"? - https: // lwn.nett/artikler/724522/
[8] Å lage en BTRFS -skrivebeskyttelsesbilder WRITABLE - HTTPS: // Markandruth.co.Storbritannia/2016/12/29/Making-A-BTRFS-Les-bare-Snapshot-Writable
[9] Datastriping - https: // no.Wikipedia.org/wiki/data_striping
[10] FAQ - BTRFS WIKI - HTTPS: // BTRFS.Wiki.kjerne.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.kjerne.org/indeks.PHP/BTRFSCK
[15] Konvertering fra ext3/4 og Reiserfs - Btrfs wiki - https: // btrfs.Wiki.kjerne.org/indeks.php/conversion_from_ext3
[16] Inkrementell sikkerhetskopi - BTRFS WIKI - HTTPS: // BTRFS.Wiki.kjerne.org/indeks.php/inkremental_backup
[17] Deduplication - Btrfs Wiki - Https: // BTRFS.Wiki.kjerne.org/indeks.PHP/deduplication
[18] Status - Btrfs Wiki - https: // btrfs.Wiki.kjerne.org/indeks.PHP/status