Opprette og bruke øyeblikksbilder i BTRFS. "Feiltolerant" system basert på Ubuntu og btrfs Btrfs-kommandoer

Som en geek har jeg fortsatt for vane å eksperimentere med systemet: gjenoppbygge, installere ustabile RC-kjerner, inkludert eksperimentelle oppdateringsgrener. Ofte vil jeg til og med si at jeg bryter systemet for ofte (min personlige beste, 2 uker uten å installere på nytt).

Hva betyr pause? Når noe fungerer ekstremt dårlig, for eksempel LibreOffice og Compiz som ofte krasjer og liker å fryse, prøver jeg enten å rekonfigurere systemet, men dette er ganske langt og kjedelig.

Akkurat det jeg kommer til.

Hvis noen, som meg, liker å eksperimentere med systemet og er lei av å gjenopprette det hver gang, så er her et alternativ for deg hvordan jeg løste dette problemet for meg selv. Jeg går under katten.

How-to eller vanlig sykkel.

Punkt 1: LiveCD

Post factum går vi ut fra det faktum at disken er delt inn i 2 partisjoner: /boot formatert i ext4 og / formatert i btrfs.
Grub 2 er skrevet i MBR på disken.
Følgelig første ledd:
Fra personlige vaner og hensyn er det mye lettere å gjenopprette systemet fra det grafiske grensesnittet enn å beundre den svarte skjermen og noen ganger uten tilgang til Internett, huske og foreskrive kommandoer. Nei, jeg synes ikke at konsollen er ond, jeg elsker konsollen, men uansett er den mer behagelig fra det grafiske grensesnittet.
Akt én
Ideen er ikke ny, jeg innrømmer at den dukket opp et sted på Habré, men jeg fant ikke linken, så jeg beklager kilden til publikasjonen.
Kopier bildet av ønsket Live-distro til /boot-mappen
sudo cp /media/timofey/boot/grub/ISO/Linux/Ubuntu/ubuntu-12.10-desktop-amd64.iso /boot/ubuntu-12.10-desktop-amd64.iso
/boot flyttes til en egen partisjon, ikke fordi den er bedre, men fordi av årsaker ukjente for meg, blir ikke LiveCDer skrevet til btrfs fra under grub 2 lastet.
Nå retter vi standard grub 2-innstillingene slik at vi ikke mister bildet når vi oppdaterer grub "a".
sudo nano /etc/grub.d/40_custom

Og lim inn noe slikt der, etter kommentarene:
menyoppføring "Ubuntu 12.10 amd64" (sett isofile=/ubuntu-12.10-desktop-amd64.iso loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop )/casper/initrd.lz )

Faktisk ble det konfigurert i bildet og likheten (offisiell ubuntu-wiki):
/Grub2/ISOBoot
Nå "nesten" det viktigste, vi re-genererer konfigurasjonen:

sudo update-grub

Det er det, nå etter omstart, ved å holde nede shift-tasten, kan vi starte et minisystem med Internett og et grafisk grensesnitt, uavhengig av tilstanden til hovedsystemet.

Punkt 2: Bilder

Jeg tror at enhver person som har vært kjent med Linux i lang tid, i det minste har hørt om btrfs, kanskje til og med at han allerede har dannet seg sin egen mening. Når du installerer ubuntu på en partisjon med btrfs, gjøres det som standard veldig klokt, underpartisjonsmekanismen brukes, og det opprettes 2 underpartisjoner, disse er henholdsvis @ og home (som jeg erstatter / og / home) , når vi installerer systemet riktig på nytt, mister vi ikke konfigurasjonene. Men nå handler det ikke om det. Hvordan bruke denne bekymringen for sluttbrukere? Veldig enkelt.

Litt bakgrunn:
Det var opprinnelig planlagt å kjøre scriptet gjennom rc.local, men det ble ikke utført, så ble det implementert gjennom daglig cron, senere beseiret jeg rc.local og slo av snapshots til helvete i cron.

Skriptkode:

#!/bin/bash #Dette skriptet for å automatisk lage øyeblikksbilde ved oppstart #Versjon 1.2.9 sett -e DATA="$(dato +%g%m%d%k%M%S)" VOLUME=/dev/sda1 [ ! -d "/tmp/$DATA/" ] && sudo mkdir "/tmp/$DATA/" mount $VOLUME "/tmp/$DATA/" && ( [ ! -d "/tmp/$DATA/snapshots/" ] && sudo mkdir "/tmp/$DATA/snapshots/" mkdir "/tmp/$DATA/snapshots/$DATA/" && cd "/tmp/$DATA/" btrfs undervolum øyeblikksbilde ./@ ."/snapshots/$DATA /@_$(DATA)/" btrfs undervolum øyeblikksbilde ./@home ."/snapshots/$DATA/@home_$(DATA)/" [ ! -f ./snapshots/snapshots.log ] && trykk på ./snapshots/ snapshots.log chmod 777 ./snapshots/snapshots.log echo on_startup_$(dato +%X_%x) >> ./snapshots/snapshots.log umount -l "/tmp/$DATA/" && sudo rmdir "/tmp/ $DATA/" )

Den ligger på /etc/btrfs_snapshot_onstartup
Legg den til /etc/rc.local og gi utføringstillatelser til begge filene via sudo chmod +x "filbane"
Utførelsesloggingen til ./snapshots/snapshots.log-filen fungerer kanskje ikke, da må du opprette den manuelt under rotrettigheter. Etter omstart vil han selv motta de nødvendige rettighetene.

Vi kan når som helst se statusen til systemets øyeblikksbilder ved å skrive:
cat /var/log/snapshots.log

Alle øyeblikksbilder legges til partisjonen med systemet i øyeblikksbilder-mappen, hvor det opprettes en mappe for hver vellykket systemoppstart.
Noen vil kanskje si at det ikke lønner seg å ta øyeblikksbilder ved oppstart. Ikke i det hele tatt, det rettferdiggjør, på en dag kan jeg gjøre en haug med endringer i systemet og starte det på nytt hundre ganger, og i alternative tilfeller vil jeg ikke kunne gå tilbake til øyeblikket for en vellykket lansering (faktisk), men bare en dag siden.

Mulighet for å starte manuelt:
#!/bin/bash #Dette skriptet for automatisk å lage øyeblikksbilde #Versjon 1.2.8 sett -e DATA=$(dato +%g%m%d%k%M%S) ########### ######################## [ ! -d /tmp/$DATA/ ] && sudo mkdir /tmp/$DATA/ sudo mount /dev/sda2 /tmp/$DATA/ && ( ################## ############################################### # [ ! -d /tmp/$DATA/snapshots/ ] && mkdir /tmp/$DATA/snapshots/ mkdir /tmp/$DATA/snapshots/$DATA/ cd /tmp/$DATA/ sudo btrfs undervolum øyeblikksbilde ./@ . /snapshots/$DATA/@_$(DATA)/ sudo btrfs undervolum øyeblikksbilde ./@home ./snapshots/$DATA/@home_$(DATA)/ ############### # ############################################## ## ### sudo chmod 777 ./snapshots/snapshots.log sudo echo this.hands_$(date +%X_%x) >> ./snapshots/snapshots.log sudo cat ./snapshots/snapshots.log sleep 1 sudo umount - l /tmp/$DATA/ && sudo rmdir /tmp/$DATA/ ############################## # ############################### sudo btrfs filsystem df / #informasjon om fs ) les exit 0

Punkt 3: Gjenoppretting

Det var det de prøvde på, de drepte systemet, hva skulle de gjøre?
Vi starter opp fra LiveCD, monterer systempartisjonen til en mappe som er praktisk for oss.
Skjul eller fjern deretter standard @- og hjemmeundervolumene om nødvendig.
og erstatte den manglende med det nødvendige øyeblikksbildet.
I de fleste tilfeller er det nok å erstatte @.
nazarpc
Snapshots lar også ikke bare rulle tilbake til en viss tilstand av systemet, men også å trekke ut den nødvendige filen eller konfigurasjonen fra den, noe som også gir en viss frihet når du sletter filer av ukjent opprinnelse.

Punkt 4: Rengjøring

Øyeblikksbilder tar ikke mye plass, men over tid kan det samle seg en stor mengde søppel på disken på grunn av dem. Her er et skript for automatisk å rydde opp i øyeblikksbildemapper. Dette fjerner alle øyeblikksbilder av systemet

#!/bin/bash #Versjon 0.0.9 sett -e DATA=$(dato +%g%m%d%k%M%S) [ ! -d "/tmp/$DATA" ] && sudo mkdir "/tmp/$DATA" sudo mount /dev/sda1 "/tmp/$DATA" && ( cd "/tmp/$DATA/snapshots/" for i in * /* do sudo btrfs undervolum slett "$i" gjort for i in * do sudo rmdir -v "$i" ferdig echo cleanup_$(dato +%g%m%d%k%M%S) > "./snapshots .log" sudo cp "./snapshots.log" "/var/log/snapshots.log" sudo umount -l "/tmp/$DATA" && sudo rmdir "/tmp/$DATA" ) read exit 0

Utfall

Vi har laget et relativt feiltolerant system der vi har mulighet til raskt å gjenopprette systemet etter en feil. Samtidig bruker du et minimum av tid og krefter på å bygge et beskyttelsessystem.
Mine egne tanker om dette
Jeg tror at en slik løsning neppe vil være nyttig i store IT-strukturer, men for lite hjemmebruk burde den være ideell.

Det ville også vært kult å fullføre renseskriptet slik at det rydder opp i alle øyeblikksbilder som er eldre enn for eksempel uker, og ikke alle tilgjengelige, jeg prøvde ærlig talt, men det fungerte ikke for meg. Da kan den også kjøres for eksempel inn i cron som standard, for å kjøre en gang om dagen, og deretter inkluderes i det offisielle installasjonsskriptet for btrfs, tror jeg med mindre modifikasjoner er en ganske universell løsning basert på standard btrfs-funksjoner.

Ja, jeg vet lvm, men jeg trenger ikke et ekstra lag med abstraksjon fra maskinvare og å sette bilder på en egen seksjon er heller ikke comme il faut.

UPD 1:
Takk til brukerne

Å flytte til et nytt filsystem er alltid en vanskelig oppgave. Vi stoler allerede på det gamle, velprøvde filsystemet. Det kan til og med ha noen begrensninger i funksjonalitet og ytelse, men det har aldri sviktet oss. De nye filsystemene tilbyr mange funksjoner, men spørsmålet er om de kan stole på?

Et slikt filsystem er Btrfs. Dette er et relativt nytt filsystem som dukket opp i 2007 og ble utviklet av Oracle. Det tilbyr et veldig bredt spekter av nye funksjoner og er derfor av stor interesse for brukere, men det går fortsatt rykter på nettet om at dette filsystemet ennå ikke er egnet for permanent bruk. I denne artikkelen skal vi prøve å finne ut hvilke muligheter Btrfs gir oss, og også om det allerede kan brukes.

Som jeg sa, Btrfs ble utviklet av Oracle i 2007. Det er ingen dekoding av navnet, noen sier at det betyr B-tre FS, andre Bedre Fs. Akkurat som i andre filsystemer, lagres alle data på disk på bestemte adresser. Disse adressene lagres i metadata. Og det er her forskjellene begynner. Alle metadata er organisert som b-trær. Dette gir større ytelse når du arbeider med filsystemet, og lar deg også legge til et ubegrenset antall filer.

Men selv det er ikke alt. Når du overskriver en fil, overskrives ikke dataene, men kun den modifiserte delen kopieres til den nye plasseringen.Deretter oppdateres metadataene ganske enkelt. Dette lar deg lage øyeblikksbilder av filsystemet som ikke tar opp diskplass før mange endringer er gjort. Hvis den gamle blokken ikke lenger er nødvendig fordi den ikke er en del av et øyeblikksbilde, slettes den automatisk.

Btrfs har på grunn av sin struktur mange muligheter, for eksempel kan den håndtere dagens svært store lagringsmedier. Maksimal filsystemstørrelse er 16 exabyte. Dette er alt mulig takket være riktig bruk av diskplass. Andre filsystemer bruker hele harddisken, ende til ende, for å registrere strukturen deres.

Btrfs gjør ting annerledes. Hver disk, uavhengig av størrelsen, er delt inn i blokker på 1 GB for data og 256 MB for metadata. Deretter settes disse blokkene sammen i grupper, som hver kan lagres på forskjellige enheter, antallet slike blokker i en gruppe kan avhenge av RAID-nivået for gruppen. Volumbehandleren er allerede integrert i filsystemet, så ingen ekstra programvare trenger å brukes.

Databeskyttelse og komprimering støttes også på filsystemnivå, så her trenger du heller ikke tilleggsprogrammer. btrfs-filsystemet støtter også dataspeiling på tvers av flere medier. Her er andre funksjoner i btrfs som kan nevnes:

  • Støtte for øyeblikksbilder av filsystemet, skrivebeskyttet eller skrivebeskyttet;
  • Sjekksummer for data og metadata ved hjelp av crc32-algoritmen. På denne måten kan eventuelle skader på blokken fastslås veldig raskt;
  • Komprimering med Zlib og Lzo;
  • Optimalisert for arbeid med SSD, filsystemet oppdager automatisk ssd og begynner å oppføre seg annerledes;
  • Bakgrunnsprosess for feildeteksjon og korrigering, samt sanntidsdefragmentering og deduplisering;
  • Støtter konvertering fra ext4 og ext3 og omvendt.

Alt dette er veldig bra, men er det mulig å bruke dette filsystemet allerede? La oss prøve å håndtere dette.

Er btrfs klar til bruk?

Det er fortsatt mange misoppfatninger rundt Btrfs. Mange av dem stammer fra reelle problemer som var i begynnelsen av utviklingen av filsystemet. Men folk som ser på denne informasjonen, ser ikke på datoen. Ja Btrfs var virkelig ustabil og ustabil. Det var mange problemer med tap av data og mange brukere som skrev om det, men det var tilbake i 2010.

Den viktigste delen av et filsystem er lagringsformatet på disk. Men formatet til Btrfs-filsystemet er allerede fikset, det skjedde tilbake i 2012, og det endres ikke lenger med mindre det er absolutt nødvendig. Dette alene er tilstrekkelig til å gjenkjenne stabiliteten til btrfs.

Men hvorfor anses Btrfs som ustabile av mange? Det er flere grunner til dette. For det første er det brukernes frykt for ny teknologi. Dette var ikke bare i Linux, men også i Microsoft, med deres overgang til NTFS, og i Apple. Men det er et paradoks her, XFS-filsystemet har gått gjennom 20 år med stabil utvikling, men det mest stabile filsystemet er ext4, som ble utviklet fra en gaffel av ext3 i 2006. Faktisk er den ett år eldre enn Btrfs.

Den andre grunnen er i aktiv utvikling, selv om datalagringsformatet er frosset, er hovedkodebasen fortsatt aktivt utviklet og det er fortsatt mye rom for ytelsesforbedringer og nye funksjoner.

Men det er allerede mange bekreftelser på at filsystemet er klart. Dette filsystemet brukes på Facebooks servere, hvor selskapet lagrer sine sensitive data. Og det i seg selv er en viktig faktor. Selskaper som Facebook, SuSE, RedHat, Oracle, Intel og andre jobber med å forbedre filsystemet. Dette filsystemet har blitt brukt som standard i SUSE Linux Enterprise siden utgivelse 12. Alle disse faktorene sammen beviser at filsystemet er ganske klart til bruk. Og gitt funksjonaliteten og funksjonene til btrfs, kan den allerede brukes.

Btrfs-bruk

Hvorfor det er verdt å bruke Btrfs og om det er verdt det i det hele tatt, skjønte det. Nå vil jeg gjerne vise litt praksis slik at du kan evaluere dette filsystemet i aksjon. Jeg vil gi eksempler basert på Ubuntu. Installer først filsystemadministrasjonsverktøyene:

sudo apt installer btrfs-tools

Opprette et btrfs-filsystem

Først må du lage et filsystem. La oss si at vi har to harddisker /dev/sdb og /dev/sdc, vi ønsker å lage et enkelt filsystem på dem med dataspeiling. For å gjøre dette, gjør du bare:

sudo mkfs.btrfs /dev/sdb /dev/sdc

Standard vil være RAID0 for data (ingen duplisering), og RAID1 for metadata (duplisering til en enkelt stasjon) Når du bruker en enkelt stasjon, dupliseres metadataene også, hvis du vil deaktivere denne virkemåten kan du bruke -m singelen alternativ:

sudo mkfs.btrfs -m singel /dev/sdb

Men ved å gjøre dette øker du risikoen for tap av data, for hvis metadataene går tapt, så er dataene det også.

Du kan se informasjon om det nyopprettede filsystemet med kommandoen:

sudo btrfs filsystem vis /dev/sdb

Eller om alle monterte filsystemer:

sudo btrfs filsystem show

btrfs-feste

For å montere, bruk den vanlige kommandoen:

sudo mount /dev/sdb /mnt

Du kan montere hvilken som helst av stasjonene, det vil ha samme effekt. Linjen i /etc/fstab vil se slik ut:

/dev/sdb /mnt btrfs standardinnstillinger 0 1

Nå ser vi på informasjon om diskplassen som er opptatt:

sudo btrfs filsystem df /mnt

Komprimering i btrfs

For å aktivere komprimering, legg til komprimeringsalternativet ved montering. Du kan sende lzo- eller zlib-algoritmen til den:

sudo mount -o compress=lzo /dev/sdb /mnt
$ sudo mount -o compress=zlib /dev/sdb /mnt

Gjenoppretter btrfs

For å gjenopprette en ødelagt Btrfs, bruktivet:

sudo mount -o gjenoppretting /dev/sdb /mnt

Endring av størrelse

Du kan endre størrelse på et volum i sanntid ved å bruke resize-kommandoen:

sudo btrfs filsystem endre størrelse -2g /mnt

Reduser størrelsen med 2 gigabyte. Øk deretter med 1 gigabyte:

sudo btrfs filsystem endre størrelse +1g /mnt

Opprette undervolumer

Du kan lage logiske partisjoner, undervolumer inne i hovedpartisjonen ved å bruke Btrfs. De kan monteres inne i hovedpartisjonen:

sudo btrfs undervolum opprette /mnt/sv1
$ sudo btrfs undervolum opprette /mnt/sv2
$ sudo btrfs undervolumliste /mnt

Montering av undervolumer

Du kan montere undervolumet med ID-en du fikk med den siste kommandoen:

sudo umount /dev/sdb

sudo mount -o subvolid=258 /dev/sdb /mnt

Eller du kan bruke navnet:

sudo mount -o subvol=sv1 /dev/sdb /mnt

Fjerner undervolumer

Monter først btrfs-roten i stedet for undervolumet:

sudo umount /mnt

sudo mount /dev/sdb /mnt/

For å fjerne et undervolum kan du bruke monteringsbanen, for eksempel:

sudo btrfs undervolum slett /mnt/sv1/

Tar øyeblikksbilder

Btrfs-filsystemet lar deg lage øyeblikksbilder av endringer. Snapshot-kommandoen brukes til dette. La oss for eksempel lage en fil og deretter ta et øyeblikksbilde:

trykk på /mnt/sv1/test1 /mnt/sv1/test2

Lag et øyeblikksbilde:

sudo btrfs undervolum øyeblikksbilde /mnt/sv1 /mnt/sv1_snapshot

Original: Hvordan lage og bruke BTRFS-øyeblikksbilder - Opplæring
Forfatter: Igor Ljubuncic
Publiseringsdato: 25. februar 2012
Oversettelse: A. Krivoshey
Overføringsdato: april 2012

BTRFS er et relativt nytt filsystem basert på Suns ZFS, som brakte mest innovasjon til Unix de siste 25 årene før det ble overtatt av Oracle. BTRFS anses fortsatt som ustabil og derfor ikke egnet for produksjonsapplikasjoner. Imidlertid har dette filsystemet mange nyttige funksjoner som er verdt å utforske. En av dem er å lage øyeblikksbilder av systemet.
La meg avklare. Øyeblikksbilder er øyeblikksbilder av tilstanden til et system. På en måte, hvis du kopierer en fil og tar en sikkerhetskopi, tar du et øyeblikksbilde av den på tidspunktet for kopieringen. Dette kan gjøres hvor som helst og når som helst. Tenk på et filsystem som faktisk kan administrere flere kopier av filene dine innenfor sin struktur, og lar deg bruke dem slik du vil. Høres interessant ut, la oss undersøke.

BTRFS introduksjon

Før vi begynner å grave dypere, vil jeg kort skissere egenskapene til dette filsystemet. BTRFS skal håndtere alle systemoperasjoner relatert til disker og filbehandling, som vanligvis krever ekstra verktøy. BTRFS gir defragmentering, lastbalansering, krymping, vekst, hot swapping, RAID, øyeblikksbilder, komprimering, kloning og mer, alt innebygd i filsystemdriveren. Med andre filsystemer vil du sannsynligvis trenge en rekke andre drivere og brukerverktøy for å administrere alle disse typer operasjoner, for eksempel en filsystemdefragmentering, RAID- og LVM-drivere, og så videre.
Innebygd funksjonalitet betyr ytelse og brukervennlighet. For øyeblikket er imidlertid BTRFS ennå ikke fullt ut brukbar på grunn av ustabilitet samt ytelsesforringelse sammenlignet med andre filsystemer som Ext4. Men det har et enormt potensial, så det kan ikke ignoreres, men må studeres.
I denne veiledningen vil jeg vise deg hvordan du administrerer øyeblikksbilder. Dette er en superrelevant funksjon som lar deg sikkerhetskopiere viktige filer før du gjør endringer i dem og deretter gjenopprette dem om nødvendig. På en måte er det som Windows Systemgjenoppretting pluss en tilbakerullingsdriver på filsystemnivå. Forresten, i tillegg til øyeblikksbilder, kan du i denne artikkelen også finne nyttig informasjon om hverdagsarbeid med BTRFS-filsystemet. Testing ble utført på et Fedora 16 Verne-system med et KDE-skrivebord.

Hvordan administrere BTRFS

Du kan bruke BTRFS for rotfilsystemet, med unntak av /boot, som må formateres med et tradisjonelt journalfilsystem. For enkelhets skyld vil vi i denne veiledningen jobbe med en egen enhet /dev/sdb1 formatert i BTRFS og brukt når det er nødvendig. I praksis kan dette være /home eller /data, eller hva som helst.

Så hva skal vi gjøre?

Vi tar /dev/sdb1 og monterer den. Deretter vil vi lage noen underseksjoner. Tenk på underseksjoner som virtuelle rotede trær, siden hver av dem er en separat, uavhengig tredatastruktur, selv om dataene er de samme.
Nedenfor er sekvensen av kommandoer som kreves for dette. Ikke vær redd, vi forklarer hvordan de fungerer.

$ btrfs undervolum opprette /mnt/data $ btrfs undervolum opprette /mnt/data/orig $ echo "Dedoimedo er l33t" > /mnt/data/orig/fil $ btrfs undervolum øyeblikksbilde /mnt/data/orig /mnt/data/backup

/dev/sdb1 er montert på /mnt. Vi lager en undernøkkel kalt data. Inne i den lager vi en annen underseksjon kalt orig. Og allerede inne i den vil filene våre bli opprettet. Fra brukerens synspunkt ser underseksjoner ut som vanlige kataloger. Data og data/orig er med andre ord kataloger.
Deretter lager vi en tekstfil i opprinnelsen kalt fil som inneholder litt tekst. Til slutt lager vi et øyeblikksbilde av den opprinnelige undernøkkelen og kaller den backup. Vi har nå en identisk kopi av den opprinnelige underseksjonen. Her er beviset:

I tillegg, for å sjekke, bruker vi kommandoen btrfs undervolumliste for å se alle underseksjoner:

$ btrfs undervolumliste

Merk at hver underseksjon har sitt eget ID-nummer. Som vi snart skal se er dette viktig.

Standardvisning

For øyeblikket viser /mnt både original og backup som standard (alt i data). Vi kan endre det. Husker du at jeg tidligere nevnte virtuelle rottrestrukturer? BTRFS lar deg endre den virtuelle rotkatalogen til en av undernøklene.
Dermed betyr bruk av underseksjoner og øyeblikksbilder ganske enkelt å bytte mellom ulike datahierarkier. Du trenger ikke å slette, overskrive filer eller gjøre noe annet. Du bytter bare til en annen underseksjon. Vi vil nå se hvordan dette gjøres.
Team btrfs undervolum sett-standard ID er alt vi trenger. Vi vil sette standardvisningen til en annen partisjon, deretter demontere enheten og montere den på nytt. Det er viktig!
Nå, hvis du jobber med et filsystem som ikke kan demonteres fordi det er i bruk, for eksempel /usr eller /etc, må du starte datamaskinen på nytt for at endringene skal tre i kraft. Nå vil en annen underseksjon vises i det gitte katalogtreet. Brukeren vil ikke merke forskjellen, men dataene i katalogene vil endre seg.
For å virkelig se hvordan dette fungerer, vil vi redigere filfilen i sikkerhetskopi. Bytt ut teksten Dedoimedo er l33t med Dedoimedo er IKKE l33t.

$ echo "Dedoimedo er IKKE l33t" > /mnt/data/backup/file

Ok, vi kjenner ID-en for alle underseksjoner. Derfor vil vi montere ID-en som standardvisning. Dette betyr at så snart du remonterer /mnt, vil vi se en fil med dette innholdet her.

$ btrfs undervolum sett-standard 257 /mnt $ umount /mnt $ mount /dev/sdb1 /mnt

La oss nå sette alt tilbake:

Dette kan gjøres så mange ganger som nødvendig:

Ovenfor endret vi visningen mellom 257 og 260, det vil si mellom original og sikkerhetskopi, som et resultat av dette kunne vi se innholdet i den modifiserte filen. Vi viste ganske enkelt brukeren forskjellige underseksjoner.
Som et resultat, hvis vi ønsker å se både original og sikkerhetskopi i datakatalogen, må vi gjenopprette standardvisningen for underseksjonen på øverste nivå, det vil si data. Merk at alle data vises i /mnt-katalogen, siden vi valgte den som monteringspunkt. Du kan imidlertid bruke en hvilken som helst annen katalog i stedet.

Konklusjon

Snapshot-funksjonen i BTRFS er implementert ganske pent, og bruken er ikke vanskelig. Selvfølgelig må du være forsiktig med å bruke riktig datatre og ikke blande ting. Men nå kjenner du allerede de grunnleggende BTRFS-kommandoene og kan handle mer selvsikkert. I fremtiden vil vi teste Snapper, en BTRFS-grensesnitt tilgjengelig fra openSUSE som lar den samme funksjonaliteten implementeres via et grafisk brukergrensesnitt for de som ikke liker kommandolinjen.

Ingen av oss er immune mot feil. Noen ganger fører syndromet til skjeve hender til veldig triste konsekvenser. Noen ganger er det veldig vanskelig å motstå og ikke utføre "antivitenskapelige" eksperimenter med systemet eller kjøre et skript/applikasjon lastet ned fra en ubekreftet kilde. Og her kommer ulike verktøy for å kjøre applikasjoner i et isolert miljø og utvidede filsystemfunksjoner til unnsetning.

Introduksjon

*nix-systemer har alltid vært relativt motstandsdyktige mot dårlige applikasjoner (forutsatt, selvfølgelig, at de ikke ble kjørt som root). Noen ganger er det imidlertid et ønske om å eksperimentere med systemet - å boltre seg med konfigurasjoner, hvorav noen kan være avgjørende, kjøre et mistenkelig skript, installere et program hentet fra en upålitelig kilde ... Ellers overvinner paranoia ganske enkelt, og jeg vil å bygge så mange barrierer som mulig for å beskytte mot potensiell skadelig programvare. Artikkelen vil beskrive noen måter å unngå konsekvensene av utvungne feil ved å rulle tilbake til et tidligere opprettet returpunkt (Btrfs-øyeblikksbilder), kjøre et mistenkelig program i et begrenset miljø og underholde paranoiaen din (Arkose og chroot).

chroot

Chroot har vært kjent i lang tid. Den har en enorm fordel i forhold til andre verktøy – den fungerer overalt, selv på svært gamle distribusjoner. Alle disse nymotens sandkassene er ikke noe annet enn dens videre utvikling. Men det er også ulemper. For eksempel er det ingen måte å begrense nettverk, root kan komme ut av det med litt innsats, og viktigst av alt, det er ganske vanskelig å konfigurere det. Til tross for dette, for noen formål, for eksempel å installere pakker fra kilden, er det ideelt.

Det er minst tre måter å lage et chroot-miljø på:

  1. Du definerer alle applikasjonene og bibliotekene som er nødvendige for at arbeidet til det lanserte programmet skal fungere. Dette er den mest fleksible måten, men også den mest forvirrende.
  2. Chroot-miljøet dannes dynamisk. En gang var det Isolate-prosjektet som gjorde dette, men nå har det av ukjente årsaker sunket inn i glemselen.
  3. Å distribuere basissystemet i den angitte katalogen og rote til det - jeg vil beskrive det.

grub og btrfs

Mest sannsynlig, når du starter opp fra Btrfs-partisjonen, vil Grub sverge på at sparsomme filer ikke er tillatt og be deg om å trykke på hvilken som helst tast. For å forhindre at denne meldingen dukker opp, åpne /etc/grub.d/00.header-filen i din favoritt tekstredigerer og kommenter ut følgende linje der:

If [ -n "\$(have_grubenv)" ]; deretter hvis [ -z "\$(boot_once)" ]; deretter save_env recordfail; fi; fi

Faktisk er recordfail-variabelen nødvendig for å forhindre en syklisk omstart, som den er sperret for ved oppstart, og deretter, i tilfelle vellykket lasting, settes den til 0. Selv om det er uønsket å kommentere koden som er ansvarlig for denne prosedyren, Jeg tror at på et skrivebordssystem er det ganske du kan klare deg uten det.

Ognelis i sandkassen - dette er hva tittelen sier

La oss først installere debootstrap-pakken, som bare brukes til dette formålet.

$ sudo apt-get install debootstrap

Deretter vil vi lage en katalog der chrooten vil være plassert, og distribuere det kvantebasesystemet i den. Generelt kan den opprettes hvor som helst, men dens tradisjonelle plassering er /var/chroot. Siden de fleste av følgende kommandoer krever root-tilgang, er det fornuftig å bytte til superbrukerkontoen:

$ sudo su - # mkdir /var/chroot && cd /var/chroot # debootstrap quantal ./quantal-chr1 http://mirror.yandex.ru/ubuntu

La oss ta en titt på den siste kommandoen. Den distribuerer Quantal Ubuntu-utgivelsen i en separat quantal-chr1-katalog (du vet aldri, du trenger plutselig en annen chroot) fra nærmeste speil. Etter at distribusjonen er fullført, må du tilordne procfs, sysfs-filsystemene og (hvis aktuelt) /dev-katalogen til dette undertreet. I tilfelle chroot bare vil bli brukt for tekstapplikasjoner til en omstart, bør følgende kommandoer være tilstrekkelig:

# mount --bind /proc /var/chroot/quantal-chr1/proc # mount --bind /sys /var/chroot/quantal-chr1/sys # mount --bind /dev /var/chroot/quantal-chr1/ dev

Hvis du vil at dette undertreet skal fungere etter en omstart, legg til de riktige linjene i /etc/fstab. Vel, for at noen grafiske applikasjoner skal fungere, bør katalogene /tmp og /var/run/dbus også vises. Etter det kan du allerede skrive inn følgende kommando, som faktisk gjør chroot:

# chroot /var/chroot/quantal-chr1/

Og du er allerede låst i det. For ikke å forveksle chroot med et ekte system, anbefaler jeg å endre shell-prompten. La oss for eksempel installere og kjøre Skype i chroot. For å gjøre dette må du installere schroot-pakken på vertssystemet, noe som gjør det enklere å kjøre programmer i et chroot-miljø:


Distribuere til basissystemet chroot ved å bruke debootstrap # apt-get install schroot

Deretter legger vi til en oppføring i filen /etc/schroot/schroot.conf. I mitt tilfelle la jeg til følgende:

/etc/schroot/schroot.conf description=Quantal Skype-katalog=/var/chroot/quantal-chr1 priority=3 users=rom groups=rom root-groups=root,rom

Vi videresender /dev, /proc, /sys, /tmp og /var/run/dbus - se ovenfor for hvordan du gjør dette. Legg til en skype-bruker og -gruppe til chroot - det er ønskelig at uid og gid samsvarer med uid / gid til hovedbrukeren av det virkelige systemet (i mitt tilfelle, rom), som vi skriver inn følgende kommandoer for:

# schroot -c quantal-skype -u root # addgroup --gid 1000 skype # adduser --disabled-password --force --uid 1000 --gid 1000 skype

Etter det legger vi den nylastede Skype - igjen i chroot - og tilfredsstiller dens avhengigheter:

# dpkg --force-all -i skype-ubuntu-precise_4.1.0.20-1_i386.deb # apt-get -f install # exit

På hovedsystemet tillater vi tilkoblinger til X-serveren fra localhost og skriver inn chroot som en vanlig bruker:

$ xhost +localhost $ cd / && schroot -c quantal-skype -u rom /bin/bash

Still inn DISPLAY-variabelen (som du må se på i hovedsystemet) og start Skype:

$ eksport DISPLAY=":0.0" $ skype --dbpath=/home/skype/.Skype &

Skype ble vellykket installert og lansert i et chroot-miljø.

Det ville være mulig å skrive et skript for å lette lanseringen, men du kan gjøre det selv.


Bruker Arkose

Arkose fungerer på samme måte som Windows-sandkasser, for eksempel Sandboxie. I praksis er dette en praktisk innpakning for LXC-beholdere. Men, som du vet, er bekvemmelighet og fleksibilitet noen ganger uforenlige - finjustering av de opprettede beholderne er vanskelig. Av plussene vil jeg legge merke til et intuitivt grensesnitt (dette er hvis du bruker GUI - men å starte fra kommandolinjen er også veldig enkelt), av minusene - som standard krever det ganske mye ledig harddiskplass og det er noen mulige løsninger; men hvis du bruker Arkose som en ekstra innpakning for potensielle malware-injeksjonsbaner (nettleser) eller til og med bare for å eksperimentere med et interessant program, skader det ikke.

seccomp og seccomp-bpf

Secomp er en lite kjent mekanisme introdusert i 2.6.12-kjernen som lar en prosess foreta en enveis overgang til en "sikker" tilstand, der bare fire systemanrop er tilgjengelige for den - exit(), sigreturn(), read() og write(), og de to siste er kun tilgjengelige for allerede åpnede filer. Hvis prosessen prøver å kalle en annen syscall, vil den bli drept umiddelbart.

Denne løsningen er åpenbart ikke særlig fleksibel. I denne forbindelse dukket seccomp-bpf opp i 3.5-kjernen, som lar deg finjustere, ved hjelp av BPF-regler, hvilke systemanrop (og deres argumenter) som er tillatt og hvilke ikke. Seccomp-bpf brukes i Google Chrome, Chrome OS, og er også backportert i Ubuntu 12.04.

Før du bruker Arkose, må den installeres. Prosedyren er standard:

$ sudo apt-get install arkose-gui

Både GUI (arkose-gui) og kommandolinjeverktøyet (arkose) vil bli installert. Det grafiske grensesnittet er så enkelt at jeg ikke ser poenget med å beskrive det, det er bedre å umiddelbart gå videre til praksis.


Manuell opprettelse
skrivebeskyttet øyeblikksbilde-
ta i btrfs

Kommandolinjealternativer vil vurdere:

  • -n (ingen, direkte, filtrert) - kartlegg nettverket til sandkassen. Alternativene ingen og direkte er selvforklarende, filtrert skaper sitt eget grensesnitt for hver sandkasse. I praksis er det bedre å bruke enten ingen eller direkte, siden filtrering tar lang tid å sette opp.
  • -d (ingen,system,session,begge) - tilgang til D-Bus busser fra sandkassen.
  • -s størrelse - setter lagringsstørrelsen i megabyte. Standard er 2000 MB for ext4, eller halvparten av minnet for tmpfs. Etter at programmet som kjører i sandkassen avsluttes, blir depotet ødelagt.
  • -t - lagringsfilsystemtype. Standard er ext4.
  • --root directory - Spesifiserer katalogen som er tilordnet sandkassen som roten.
  • --root-type (ku, bind) - nøyaktig hvordan du viser roten. Hvis du bruker ku, vil eventuelle endringer etter lukking av sandkassen gå tapt, og hvis du binder, vil de bli lagret.
  • --base-path - spesifiserer plasseringen der sandkassen er lagret. Standard er ~/.arkose.
  • --bind katalog og --cow katalog - viser en katalog enten i kumodus eller direkte. Naturligvis avhenger bruken av et eller annet alternativ av typen rottilordning - det gir ingen mening å bruke --cow-alternativet på en katalog som allerede er kopiert-på-skriv.
  • -h - bruk ekte hjemmekatalog. Ligner på --bind $HOME.
  • -p - tillater bruk av PulseAudio.

La oss starte Firefox som et eksempel:

$ sudo arkose -n direkte -p firefox

Denne kommandoen vil starte Firefox med nettilgang og PulseAudio. Siden hver nyopprettede container har sin egen hjemmekatalog som standard, vil firelis-profilen også være ny, uten installerte tillegg, hvis du har noen.

"Men vent! Hvorfor sudo? - et rimelig spørsmål kan dukke opp. Faktum er at noen forberedende operasjoner bare er tilgjengelige fra under roten. Imidlertid skynder jeg meg å forsikre deg - det lanserte programmet vil fungere med rettighetene til den nåværende brukeren.


Legger til en bruker for å kjøre Skype i chroot

Kort om BTRFS

Det hender at systemet kollapser etter å ha installert oppdateringer. Verktøy som ligner på Windows System Restore-komponenten vil være nyttige her. Jeg er stolt over å si at vi har dem! Og et av disse verktøyene er Btrfs. Av fordelene med det nye filsystemet fra Oracle er det verdt å merke seg følgende:

  • Kopier-på-skriv. Denne teknologien brukes til å lage øyeblikksbilder – øyeblikksbilder av systemtilstanden. Når du oppretter et øyeblikksbilde, kopierer FS-driveren metadataene inn i det og begynner å overvåke det faktiske opptaket. Hvis det blir funnet, plasseres de originale datablokkene i øyeblikksbildet, og nye skrives i stedet.
  • Dynamisk tildeling av inoder. I motsetning til den gamle generasjonen FS, har ikke Btrfs en begrensning på antall filer.
  • Filkomprimering.
  • Mulighet for å hoste et filsystem på flere fysiske medier. Faktisk er dette samme RAID, bare et høyere nivå. I skrivende stund støttes RAID 0, RAID 1 og RAID 10, mens støtte for RAID 5 er i de tidlige utviklingsstadiene.

Opprette og slette øyeblikksbilder

For å utføre operasjoner på en ny generasjons filsystem, som å lage øyeblikksbilder, defragmentere et volum og mange andre, brukes btrfs-kommandoen. Syntaksen er generelt som følger:

btrfs<команда> <аргументы>

Hva slags operasjoner kan utføres på Btrfs? Nedenfor er kommandoene som jeg fant interessante.

  • btrfs subvol create [<путь>/]<имя>- oppretter et undervolum (se sidefelt). Hvis ingen bane er spesifisert, opprettes den i gjeldende katalog.
  • btrfs subvol slett<имя>- henholdsvis sletter undervolumet.
  • btrfs subvol finn-ny<путь> <поколение>- liste over sist endrede filer i den angitte banen, fra den angitte generasjonen. Dessverre er det så langt ingen måte å finne ut den nåværende generasjonen av en bestemt fil på en enkel måte, så bruken av denne kommandoen kan være ledsaget av dans med en tamburin.
  • btrfs subvol øyeblikksbilde [-r]<подтом> <путь к снапшоту>- høydepunktet i programmet. Oppretter et øyeblikksbilde av det angitte undervolumet med den angitte banen til det. Alternativet -r deaktiverer skriving til øyeblikksbilder.
  • btrfs subvol liste<путь>- viser en liste over undervolumer og øyeblikksbilder i den angitte banen.
  • btrfs filesys df - plassbruk for det angitte monteringspunktet.
  • btrfs filesys endre størrelse [+/-]<новый размер> <путь>- ja, ja, Btrfs har muligheten til å endre størrelse på et "live" system, og ikke bare øke, men også redusere! Med argumentene tror jeg alt er mer eller mindre klart, men i tillegg til å spesifisere størrelsen kan du bruke max-argumentet, som utvider filsystemet til størst mulig størrelse.

De resterende kommandoene, selv om de er interessante, er bare relatert til emnet for artikkelen, og vi vil ikke vurdere dem. Så for å lage et øyeblikksbilde av et undervolum med gjeldende dato, for eksempel rotkatalogen, skriver vi følgende kommando:

$ sudo btrfs subvol snap -r / /snapshot-2013-01-16

$ sudo btrfs subvol del /snapshot-2013-01-16

Btrfs undervolum

Et Btrfs-undervolum kan fungere på to måter: som en katalog og som et VFS-objekt - noe som kan monteres. For eksempel, når du installerer Ubuntu, opprettes to undervolumer - @ og @home. Den første inneholder systemfiler, den andre - brukerdata. Dette ligner på å partisjonere en disk, bare hvis tidligere en partisjon kunne inneholde, som regel, bare ett VFS-objekt, nå kan det være flere objekter på en partisjon samtidig, og de kan nestes.

Automasjon

Jeg ser ikke mye poeng i å lage øyeblikksbilder manuelt - du kan ganske enkelt glemme å gjøre dette. Tre automasjonsscenarier kommer til tankene:

  • skriv et skript og legg det inn i rc.local;
  • skriv et manus og legg det i cron;
  • bruk btrfs autosnap-kommandoen.

Dessverre, i Ubuntu 12.10 er den siste metoden ikke tilgjengelig av en eller annen grunn, så det er praktisk talt ikke noe valg som sådan. Personlig foretrakk jeg å skrive et cron-skript, men først, la oss lage et undervolum der øyeblikksbildene våre vil bli lagret. For hva? I hvert fall for ikke å forsøple rotmappen.

# mkdir /mnt/sda11 # mount /dev/sda11 /mnt/sda11 # btrfs subvol create /mnt/sda11/@snapshots # umount /mnt/sda11

La oss se hva disse kommandoene gjør. Siden selve filsystemroten ikke er tilgjengelig for øyeblikket (ubuntu bruker @-subvolumet som rot i stedet), er vi tvunget til å montere den manuelt. I mitt tilfelle er det på /dev/sda11. Med den tredje kommandoen lager vi @snapshots-undervolumet - så hvis vi ikke monterer det eller den virkelige roten, vil innholdet være utilgjengelig. Og nå selve manuset:

Autosnap.sh #!/bin/bash set -e VOLUME=/dev/sda11 TMP_PATH=/tmp/snapshots MOUNT_OPTS=" [e-postbeskyttet]" # Gjeldende dato og klokkeslett - nødvendig for å navngi øyeblikksbildemapper NOW="$(date +%Y%m%d%H%M)" NOW_SEC="$(date +%s)" if [ $# -ne 1 ] ; deretter # Hvis skriptet kjøres uten argumenter, sett standard til én dag siden OLDER_SEC="$(dato --dato "1 dag siden" +%s)" ellers # Hvis vi har et argument, antar vi at dette er en dato i et hvilket som helst format som datokommandoen forstår, med alle konsekvensene OLDER_SEC="$(date --date "$1" +%s)" fi # Trekk ønsket dato fra gjeldende dato og konverter den til minutter OLDER=$ (($NOW_SEC-$ OLDER_SEC)) OLDER_MIN=$(($OLDER/60)) [ ! -d "$(TMP_PATH)/" ] && mkdir "$(TMP_PATH)/" [ -z "`grep "$( TMP_PATH)" /proc/ mounts`" ] && monter "$(VOLUME)" "$(TMP_PATH)/" -o "$(MOUNT_OPTS)" && ( # Mount mkdir "$(TMP_PATH)/$(NOW)/" # Lag øyeblikksbilder btrfs subvol snap / "$(TMP_PATH)/$(NOW)/rootsnap" > /dev/null 2>&1 btrfs subvol snap /home "$(TMP_PATH)/$(NOW)/homesnap" > /dev/ null 2>&1 ) && ( # Se etter mapper med øyeblikksbilder eldre enn den angitte datoen for f i `finn "$(TMP_PATH)" -mindepth 1 - maxdepth 1 -type d -cmin +"$OLDER_MIN" -print0 |xargs -0`; gjør btrfs subvol del "$(f)/rootsnap" > /dev/null 2>&1 && btrfs subvol del "$(f)/homesnap" > /dev/null 2>&1 && # og slett øyeblikksbilder og mapper som inneholder dem rmdir "$f" ferdig ) umount -l "$(TMP_PATH)" && rmdir "$(TMP_PATH)"

Dette skriptet kan plasseres der det passer (jeg personlig foretrekker å plassere slike ting i /usr/local/bin, men dette er en smakssak), og kjøre det enten fra cron eller fra rc.local. Som standard roterer skriptet øyeblikksbilder som er eldre enn én dag, men du kan spesifisere et hvilket som helst ønsket tall i formatet til datokommandoen - viktigst av alt, ikke glem å legge ved anførselstegn.

Bruke et ISO-bilde

For ikke å trekke platen med den innspilte ubunten hver gang noen vitale filer er skadet, er det mulig å legge til oppstartselementet fra ISO-bildet i Grub-menyen, som jeg foreslår å gjøre. For å gjøre dette trenger du en partisjon som ikke er Btrfs (fordi av ukjente årsaker vil ikke standard initramfs til Ubuntu ISO se bildet hvis det er plassert på partisjonen med den beskrevne FS) og direkte hender. Legg til følgende linjer i filen /etc/grub.d/40_custom:

Menyoppføring "Ubuntu 12.10 i386 iso" ( insmod part_msdos insmod fat # Installer roten fra der vi henter ISO-settet root="hd0,msdos7" # Bane til bildet i forhold til rotsettet ovenfor isofile=/ubuntu-12.10-desktop- i386.iso # Monter som en loopback-enhet direkte i Grub loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop)/casper/initrd.lz )

og kjør kommandoen for å oppdatere hovedkonfigurasjonen for Grub:

$ sudo update grub

Nå, selv i tilfelle alvorlig skade på systemet - med mindre, selvfølgelig, oppstartslasteren og dens filer er berørt - kan du alltid starte opp fra et ISO-bilde og endre skadede filer eller rulle tilbake til en tidligere systemtilstand.


INFO

Hvis du jobber i et chroot-miljø som root, så er det en mulighet for å rømme derfra. En måte er å bruke mknod() systemkallet og deretter montere den virkelige roten. Installering av grsecurity patchset løser dette problemet.

Btrfs-kommandoer har standard og forkortet form. For eksempel kan kommandoen "btrfs subvolume snapshot" skrives som "btrfs su sn".

Så la oss si at du droppet systemet og at du må gjenopprette det fra et Btrfs-øyeblikksbilde. For å gjøre dette, start opp fra dette ISO-bildet, monter partisjonen du slapp systemet på - akkurat partisjonen, ikke undervolumet! - og skriv inn følgende kommandoer (selvfølgelig justert for dine øyeblikksbilder og partisjoner):

# cd /mnt/sda11 # mv @ @_badroot # mv @snapshots/201302011434/rootsnap @

Det samme, om nødvendig, gjør vi med @home og starter på nytt. Hvis alt gikk bra, kan du fjerne @_badroot:

$ sudo btrfs subvol del @_badroot

Konklusjon

På *nix-systemer er det mange måter å beskytte deg mot eller redusere dårlige eksperimenter på. Jeg har anmeldt noen av dem. Det er imidlertid verdt å merke seg at alle disse metodene hovedsakelig er beregnet på eksperimentere som liker å grave dypere inn i systemet. De er ikke egnet for å fange skadelig programvare – de er enkle nok å oppdage, selv om de absolutt gir et visst nivå av sikkerhet.

btrfs(noen ganger uttales butter fs) er et nytt gratis filsystem som utvikles med støtte fra Oracle. Distribuert under GPL-lisensen. Selv om utviklingen langt fra er fullført, ble filsystemet den 9. januar 2009 integrert i Linux-kjernen, og er tilgjengelig i Debian Squueze.

Selv om Btrfs var inkludert i 2.6.29-kjernen, uttaler utviklerne at "fra og med 2.6.31-kjernen, planlegger vi bare å gjøre diskendringens format kompatibel heretter." Utviklerne ønsker fortsatt å forbedre bruker/administrasjonsverktøyene for å gjøre dem mer brukervennlige. For mer informasjon om Btrfs, se lenken i avsnittet.

Ext2/3/4 kan gjøres om til Btrfs (men ikke omvendt).

Status

Debian Squeeze og nyere versjoner støtter Btrfs.

FAQ

Hvilken pakke inneholder verktøy for btrfs?

btrfs-tools (i DebianSqueeze og over)

Se også: Btrfs wiki FAQ

Eksempelkommandoer for arbeid med btrfs

Opprette et filsystem:

mkfs.btrfs

Administrer volumer, undervolumer, øyeblikksbilder; kontrollere integriteten til filsystemet:

btrfsctl

Skanning etter btrfs-filsystemer:

btrfsctl -a btrfsctl -A /dev/sda2

Lage øyeblikksbilder og undervolumer:

mount -t btrfs -o subvol=. /dev/sda2 /mnt btrfsctl -s new_subvol_name /mnt btrfsctl -s snapshot_of_default /mnt/default btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name btrfsctl_s snapshot_of_default /mnt/default btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name btrfsctl_snapshot_of_default /snapshot_ofn

Sjekke utstrekningstrene til filsystemet:

btrfsck

Utdata metadata i tekstform:

debug-tree debug-tree /dev/sda2 >& big_output_file

Vis btrfs-filsystemer på harddisken:

btrfs-show /dev/sda*

Defrag (ikke nødvendig som standard):

# btrfs filsystem defragmenter /mnt eller # btrfs filsystem defragmenter /mnt/file.iso

Konvertering av et ext3-filsystem til btrfs

Ext3-filsystemet kan gjøres om til btrfs, og jobbe videre med det som et nytt filsystem. Dessuten vil tilstanden til det originale ext3-filsystemet være tilgjengelig senere.

# Kjør alltid fsck først %# fsck.ext3 -f /dev/xxx # Konverter fra Ext3->Btrfs %# btrfs-convert /dev/xxx # Monter det resulterende Btrfs-filsystemet %# mount -t btrfs /dev/xxx /btrfs # Monter ext3-øyeblikksbildet %# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # Loopback-monter bildefilen %# mount -t ext3 -o loop,ro /ext2_saved/image /ext3

/ext3-katalogen viser nå tilstanden til det originale filsystemet.

Avmontering skjer i omvendt rekkefølge:

% # umount /ext3 % # umount /ext2_saved % # umount /btrfs

Du kan gå tilbake til et ext3-filsystem og miste endringene:

% # btrfs-convert -r /dev/xxx

Eller du kan bli på btrfs og slette det lagrede ext3-filsystembildet:

% # rm /ext2_saved/image

Merk: det nye filsystemet har noen ganger en veldig stor metadatastørrelse etter konvertering.

Vis metadatastørrelse:

# btrfs filsystem df /mnt/data1tb/

Normaliser størrelsen deres:

btrfs fi balanse /mnt/btrfs

Les mer: Konvertering fra ext3 (engelsk) og Konvertering av ext3fs til btrfs (russisk)

Endre størrelsen på filsystemet og partisjonene

For btrfs, online (on the fly) endring av størrelse på filsystemet er tilgjengelig. Først må du montere ønsket partisjon:

# mount -t btrfs /dev/xxx /mnt

Legger til 2 GB:

# btrfs filsystem endre størrelse +2G /mnt eller # btrfsctl -r +2g /mnt

Nedbemanning med 4 GB:

# btrfs filsystem endre størrelse -4g /mnt eller # btrfsctl -r -4g /mnt

Sett størrelse til 20 GB filsystem:

# btrfsctl -r 20g /mnt eller # btrfs filsystem endre størrelse 20g /mnt

Bruker all ledig plass:

# btrfs filsystem endre størrelse maks /mnt eller # btrfsctl -r max /mnt

Kommandoene ovenfor er kun gyldige for filsystemet. For å endre størrelse på en partisjon, må du bruke andre verktøy som fdisk. Tenk på et eksempel for å redusere en partisjon med 4 GB. Monter og reduser partisjonen:

# mount -t btrfs /dev/xxx /mnt # btrfsctl -r -4g /mnt

Avmonter nå partisjonen og bruk fdisk:

# umount / mnt fdisk / dev / xxx # der dev / xxx er harddisken med partisjonen vi trenger