Weekend Prosjekt: Kom i gang med Btrfs


B-tree filsystemet Btrfs er en neste-generasjons filsystem for Linux, og selv om det fortsatt er i rivende utvikling, kan du bruke det for dag-til- dag oppgaver. Selv om du ikke er forberedt på å overføre produksjonsservere over til Btrfs, bør du ta deg tid til å utforske hva den kan gjøre. Det gir betydelige tids- og plass effektivisering enn ext3 /ext4 – for ikke å nevne betydelig enklere volumstyring.

For de som ikke kjenner, er Btrfs en ren pause fra tilnærmingen som brukes i Linux er ext filsystemer i år tidligere. Den bruker B-trær til å lagre generisk " eks " av varierende datatyper i en enkelt, enhetlig datastruktur. Elementene er sortert etter deres 136-biters nøkkel, hvilke grupper relaterte elementer sammen via en delt nøkkel prefiks (og dermed automatisk optimerer filsystemet for store lese- og skriveoperasjoner). Små filer kan lagres direkte i tre bladene, mens store filer er skrevet i omfang –. Som senker overhead og reduserer fragmentering

noder i treet er også innsjekking summeres, og inkluderer både referanse teller og back-referanser, noe som gjør sjekker for korrekthet og flytte eller endre størrelse filsystemet enklere. Til slutt, bruker systemet en copy-on-write strategi som skriver endrede data til disk først, deretter oppdaterer referanser i treet. Dette crash-korrekturer filsystemet, men uten overhead av å opprettholde en journal.

Det er fortsatt flere fordeler ved filsystem verktøy nivå. Btrfs inkluderer innebygd støtte for RAID, inkludert balansere flere enheter og utvinne fra korrupsjon, og den støtter on-line resizing, enhet tillegg og fjerning enhet. Dette ruller vesentlig mye av funksjonaliteten til Linux multi-enhet (MD) og logisk volum manager (LVM) verktøy inn i filsystemet selv. Btrfs kan også bruke gjennomsiktig komprimering, lage filsystem snapshots, og skape subvolumes –. Som gjør unna med mye av behovet for å ha separate partisjoner

Komme i gang

De fleste av de store Linux-distribusjonene har aktivert minst eksperimentell støtte for Btrfs i sine siste utgivelser. Fordi utviklingen på filsystemet er rask, men det anbefales at du kjører minst kernel 2.6.33 hvis mulig. Du kan også ha å installere Btrfs userspace verktøy i en egen pakke, slik som btrfs-progs.

File skapelse er utført med mkfs.btrfs kommandoen. Den viktigste kontrollprogram (brukes for å manipulere øyeblikksbilder, subvolumes, og for å inspisere filsystemet) kalles btrfs. Du kan fortsatt finne referanser til en eldre versjon av dette verktøyet som ble kalt btrfsctl; hvis så, sørg for å konsultere dokumentasjonen Btrfs før du følger eldre tutorials, som alternativer eller syntaks kan ha endret seg.

Det er også en btrfsck som kan kjøre filsystem sjekker på umonterte Btrfs filsystemer, og noen få andre verktøy som brukes for feilsøking og feilretting. For eksempel kan btrfs-image dumpe et bilde av ditt filsystem med de faktiske dataene nulles ut; Du kan sende denne til Btrfs utviklere når du ber om hjelp feilretting en problema filsystem.

Btrfs har er egne mount-spesifikke alternativer også, men du trenger ikke å installere en annen versjon av mount for å kunne bruke dem .

Grunnleggende operasjoner: Lage Filsystemer, Multi-Device Arrays, og endre størrelsen

Den grunnleggende kommandoen for å opprette en Btrfs filsystem på en enhet er rett og slett mkfs.btrfs DEVICE_NAME
. Dette skaper et nytt filsystem på enheten, ved maksimal kapasitet. Du kan angi en mindre størrelse med -b size_in_bytes
. Du kan også angi en ikke-standard blad størrelse ved å legge l size_in_bytes
til slutten av kommandoen, eller en sektorstørrelse med -s size_in_bytes
.

virkelige moroa, men kommer når du oppretter et RAID-oppsett. Syntaksen er mkfs.btrfs one_device_name
another_device_name
yet_another_device_name
. Det er riktig; å opprette et RAID array, du bare gi alle de blokk enhetene i en enkelt kommando; Btrfs gjør resten. Som standard vil denne stripe alle data jevnt mellom diskene (som i RAID 0), og speile metadata på hver disk (som i RAID 1). Du kan angi en annen profil ved å legge en -m profil
argument for å mkfs.btrfs for metadata atferd, eller en -d profil
for dataene. Foreløpig RAID0, RAID1, RAID10, og singel (dvs. ingen RAID) er de eneste aksepterte verdier.

Du montere en Btrfs filsystem med mount -t btrfs enhet monteringspunkt
. For RAID arrays, trenger du bare å angi en
til utstyret som brukes i rekken; Btrfs vil finne resten og montere dem sammen automatisk. For eksempel, hvis du opprettet en to-disk array med mkfs.btrfs /dev /sda /dev /sdb, kan du montere den med mount -t btrfs /dev /sda /mnt /bigarray.

Dette er spesielt nyttig hvis du ønsker å legge til flere stasjoner til rekken — du kan holde den aktuelle linjen i /etc /fstab det samme. For å legge til en tredje disk til array, kjører btrfs enhet add /dev /SDC /mnt /bigarray. Dette må kjøres på en montert
filsystem. Når du legger den nye disken, kan du fortelle Btrfs å omfordele tabellens data på tvers av alle tre disker med btrfs filsystem balanse /mnt /bigarray. Selvfølgelig kan dette ta litt tid, hvis tabellen er stor.

I tilfelle at en disk i RAID array blir ødelagt, kan du montere den disken med degradert
alternativ til " montere, " f.eks mount -t btrfs -o degradert /dev /sdb /mnt /bigarray, som vil undertrykke feilmeldinger fra den defekte disken. Deretter kan du fjerne disken fra tabellen med btrfs enhet slette /dev /sdb /mnt /bigarray, som vil flytte alle fildata off på de resterende diskene (forutsatt at det er plass, hvis ikke må du legge til en annen stasjon først) .

Et filsystem kan bli endret med btrfs filsystem resize filesystem_name størrelse
. Du har tre alternativer for størrelsen argument: en bestemt størrelse (for eksempel 1024M eller 7G), en øke eller minske verdien (for eksempel + 200M eller -2G), eller " max, " som vil utvide filsystemet til å fylle all tilgjengelig plass på den underliggende enhet eller partisjon

I hovedsak alt dette grunnleggende filsystem manipulasjon kommandoer er selvforklarende —. Btrfs gjør rett og slett gode standardvalg og kvalifiserte gjetninger til spare deg bryet med å måtte gi ekstra parametere. Det er fordi plain vanilla filsystemer (selv RAID arrays) ikke bortkommen mye fra tiden testet modellen som brukes i de fleste andre kjente Linux-filsystemer. For virkelig å se noe nytt, vil vi ta en titt på Btrfs subvolumes.

Subvolumes, Snapshots, og konvertering

Subvolumes i Btrfs er under trærne i primær Btrfs filsystemtreet. De er laget på stedet i det eksisterende filsystem, men kan bli behandlet som separate filsystemer, med sin egen monteringspunkt, opsjoner, og politikk. I motsetning til å opprette flere partisjoner, men subvolumes ikke krever tildeling av ekstra plass på disken; de er bare tomme kataloger før du begynner å legge filer til dem, noe som medførte at de vokser til å passe. Ikke bare er det plassbesparende, betyr det også at du kan lage alle de subvolumes du trenger i en enkelt filsystem, og legge til ekstra lagringsplass til det når det fylles opp, uavhengig av hvilken subvolumes tar opp mest plass. Anmeldelser

I hovedsak, da, du kan tenke på en subvolume som en katalog som kan monteres som om det var en enhet, eller en virtuell disk image i et VM. Du oppretter en med btrfs subvolume skape sti /hvis /neccesary /volume_name
. Hvis du lar utenfor banen, vil det bli opprettet i gjeldende katalog. Du kan deretter montere subvolume hvor du vil ved å levere det subvolume muligheten til mount kommandoen. For eksempel, hvis du opprettet en subvolume heter " mysubvolume " i /mnt /bigarray, kan du montere den med mount -t btrfs -o subvol = mysubvolume /dev /sda /mnt /notsobig. Dersom du har glemt nøyaktig hvor du har opprettet ulike subvolumes, btrfs subvolume liste /mnt /bigarray vil liste dem for deg. For å slette en, subvolume kjøre btrfs slett subvolume_name
.

I praksis så kan du lage så mange subvolumes som du trenger, alt innen en Btrfs filsystem. Men rett og slett å opprette separate monteringspunkter er ikke alle som subvolumes er bra for; Btrfs støtter en bestemt type subvolume nyttig for systemvedlikehold, snapshot

Syntaksen er nesten identiske.; bare legge " snapshot " til btrfs kommando i stedet for " opprette, " f.eks
btrfs subvolume snapshot /mnt /bigarray /mnt /backup /October15. Dette skaper en subvolume i /mnt /backup /October15 som er et øyeblikksbilde av /mnt /bigarray, som du deretter kan skrive til fjerning lagringsplass og plass i brannsikker (eller hva din backup strategi tilsier).

Det fine er at Btrfs skaper dette snapshot ikke ved å kopiere filen data, men ved å opprette et duplikat b-treet peker til samme data. Hvis du ikke endre noen av filene i /mnt /bigarray, forbruker eksistensen av snapshot ingen ekstra plass. Hvis du gjør
endre noen av filene i /mnt /bigarray imidlertid først da Btrfs skrive endringene til disk, ved å bevare den opprinnelige kopien i snapshot, og skrive de nye dataene i hoved filsystemet.

Dette er essensen av copy-on-write. Mesteparten av tiden, vil de fleste av filene ikke bli berørt, slik at øyeblikksbilder er svært plassbesparende. Det er en annen interessant sak som gjør bruk av denne egenskapen, men: konvertere en eksisterende ext3 (eller ext4) filsystemet til Btrfs

De btrfs-konvertere verktøyet kan skape en Btrfs filsystem på plass
. på toppen av en eksisterende ext3 /4 filsystem, ved å lese ext filsystem og skape de nødvendige B-trær i den ledige plassen. Mye som gjør et snapshot, dette tar andre filsystem opp noe ekstra plass hvis ingen filer endret. Når en fil er endret, blir den opprinnelige versjonen av ext filsystemet bevart, slik at du kan selv rulle tilbake hele konverteringsprosessen og gjenopprette filsystemet til sin pre-Btrfs tilstand.

Du bør først kjøre fsck på ext filsystem for å sjekke for korrupsjon. Når du er fornøyd, kjører btrfs-konvertere enhet
å konvertere enheten og deretter montere -t btrfs enhet
the_btrfs_mountpoint
å montere den nylig preget Btrfs filsystem. Den opprinnelige ext filsystem er bevart i et øyeblikksbilde som heter " ext2_saved " (selv om det var ext3 eller ext4 format). Du kan til og med montere snapshot med mount -t btrfs -o subvol = ext2_saved enhet Twitter /mnt /ext2_saved. Hvis nyheten slites av, kan du rulle tilbake til den opprinnelige ext filsystemet snapshot (inkludert angre alle endringer) med btrfs-konvertere -r enhet

Extra Credit:. Mount alternativer Anmeldelser

komprimere Hotell og komprimere-force
alternativer lar gjennomsiktig datakomprimering i filsystemet; med kraft alternativet forsøker å komprimere og med filer som vanligvis ikke komprimere godt (som komprimert lyd og videoformater). ssd
alternativet er nyttig for brukere med solid-state disker; det viser på flere optimaliseringer som øker ytelsen for disse allerede raske enheter

Btrfs er fortsatt under rask utvikling.; støtte for flere RAID-konfigurasjoner, deduplisering, og online filsystem sjekker fortsatt planlagt. I mellomtiden, kan du vurdere hvordan sammenslåing av partisjoner, matriser og logiske volumer i ett filsystem kunne forenkle systemadministrasjon, og hvordan snapshots kunne endre backup plan – du kanskje ikke har lyst til å vente. Anmeldelser