"Feltåligt" system baserat på Ubuntu och btrfs. Btrfs filsystem Sparar lagringsutrymme

Som en nörd har jag fortfarande för vana att ständigt experimentera med systemet: bygga om, installera instabila RC-kärnor, inklusive experimentella uppdateringsgrenar. Ofta, jag skulle till och med säga för ofta, slår jag systemet (mitt personliga rekord, 2 veckor utan ominstallation).

Vad menar du att jag bryter? När något fungerar extremt dåligt, till exempel LibreOffice och Compiz som ofta kraschar och gillar att frysa, försöker jag antingen konfigurera om systemet, men det här är ganska långt och tråkigt.

Egentligen vad jag menar.

Om någon, som jag, gillar att experimentera med systemet och är trött på att återställa det varje gång, så är här ett alternativ för hur jag löste det här problemet för mig själv. Vänligen hitta under katt.

How-to eller en annan cykel.

Punkt 1: LiveCD

Efter det antar vi att disken är uppdelad i 2 partitioner: /boot formaterad i ext4 och / formaterad i btrfs.
MBR innehåller grub 2 på disken.
Följaktligen den första punkten:
På grund av personliga vanor och överväganden är det mycket lättare att återställa systemet från GUI snarare än att beundra en svart skärm och ibland utan tillgång till Internet, komma ihåg och skriva kommandon. Nej, jag tycker inte att konsolen är ond, jag älskar konsolen, men på ett eller annat sätt är det grafiska gränssnittet trevligare.
Akt ett
Idén är inte ny, jag erkänner att den dök upp någonstans på Habré, men jag hittade inte länken, så jag ber om ursäkt till källan till publikationen.
Kopiera bilden av önskad Live-distro till mappen /boot
sudo cp /media/timofey/boot/grub/ISO/Linux/Ubuntu/ubuntu-12.10-desktop-amd64.iso /boot/ubuntu-12.10-desktop-amd64.iso
/boot placeras på en separat partition, inte för att det är bättre, utan för att LiveCD-skivor som spelats in på btrfs från under grub 2 inte startar av för mig okända skäl.
Nu korrigerar vi standardinställningarna för grub 2 så att vi inte förlorar bilden när vi uppdaterar grub"a.
sudo nano /etc/grub.d/40_custom

Och vi lägger in något sånt här efter kommentarerna:
menypost "Ubuntu 12.10 amd64" (set isofile=/ubuntu-12.10-desktop-amd64.iso loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofil noeject noprompt -- initrd (loop )/casper/initrd.lz )

Egentligen var det konfigurerat på samma sätt (officiell wiki ubuntu):
/Grub2/ISOBoot
Nu "nästan" det viktigaste, låt oss återskapa konfigurationen:

Sudo update-grub

Det var allt, nu efter omstart, genom att hålla nere shift-tangenten, kan vi starta ett minisystem med Internet och ett grafiskt gränssnitt, oavsett huvudsystemets tillstånd.

Punkt 2: Bilder

Jag tror att alla som har varit bekanta med Linux länge har åtminstone hört talas om btrfs, och kanske redan har bildat sig en egen uppfattning. När du installerar ubuntu på en partition med btrfs som standard görs det mycket klokt, underpartitionsmekanismen används och 2 underpartitioner skapas: @ och home (som jag ersätter / respektive /home) med en ordentlig ominstallation i systemet kommer vi inte att förlora konfigurationerna. Men det handlar inte om det nu. Hur kan vi utnyttja denna oro för slutanvändarna? Väldigt enkelt.

Lite bakgrund:
Från början var det planerat att köra skriptet genom rc.local, men det kördes inte, sedan implementerades det via cron dagligen, senare besegrade jag rc.local och inaktiverade ögonblicksbilder i cron.

Skriptkod:

#!/bin/bash #Detta skript för att automatiskt skapa ögonblicksbild vid start #Version 1.2.9 set -e DATA="$(datum +%g%m%d%k%M%S)" VOLUME=/dev/sda1 [ ! -d "/tmp/$DATA/" ] && sudo mkdir "/tmp/$DATA/" montera $VOLUME "/tmp/$DATA/" && ( [ ! -d "/tmp/$DATA/snapshots/" ] && sudo mkdir "/tmp/$DATA/snapshots/" mkdir "/tmp/$DATA/snapshots/$DATA/" && cd "/tmp/$DATA/" btrfs undervolym ögonblicksbild ./@ ."/snapshots/$DATA /@_$(DATA)/" btrfs undervolym ögonblicksbild ./@home ."/snapshots/$DATA/@home_$(DATA)/" [ ! -f ./snapshots/snapshots.log ] && peka på ./snapshots/ snapshots.log chmod 777 ./snapshots/snapshots.log echo on_startup_$(datum +%X_%x) >> ./snapshots/snapshots.log umount -l "/tmp/$DATA/" && sudo rmdir "/tmp/ $DATA/" )

Den finns på /etc/btrfs_snapshot_onstartup
Lägg till den i /etc/rc.local och ge körrättigheter till båda filerna via sudo chmod +x "sökväg till fil"
Att logga körningen till filen ./snapshots/snapshots.log kanske inte fungerar, då måste du skapa den manuellt under roträttigheter. Efter omstarten kommer den att få de nödvändiga rättigheterna.

Vi kan när som helst se status för systemögonblicksbilder genom att skriva:
cat /var/log/snapshots.log

Alla ögonblicksbilder lagras i systempartitionen i mappen ögonblicksbilder, där en mapp skapas för varje framgångsrik systemstart.
Vissa kanske säger att det inte lönar sig att ta ögonblicksbilder under uppstart. Inte alls, det motiverar, på en dag kan jag göra en massa ändringar i systemet och starta om det hundra gånger, och i alternativa fall kommer jag inte att kunna återgå till ögonblicket för framgångsrik lansering (nuvarande), men bara För en dag sen.

Möjlighet att starta manuellt:
#!/bin/bash #Detta skript för att automatiskt skapa ögonblicksbild #Version 1.2.8 set -e DATA=$(datum +%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 undervolym ögonblicksbild ./@ . /snapshots/$DATA/@_$(DATA)/ sudo btrfs undervolym ögonblicksbild ./@home ./snapshots/$DATA/@home_$(DATA)/ ############### ############################################### ### sudo chmod 777 ./snapshots/snapshots.log sudo echo this.hands_$(datum +%X_%x) >> ./snapshots/snapshots.log sudo cat ./snapshots/snapshots.log vila 1 sudo umount - l /tmp/$DATA/ && sudo rmdir /tmp/$DATA/ ################################ ################################ sudo btrfs filsystem df / #information om fs ) read exit 0

Punkt 3: Återhämtning

Det var det de försökte, de dödade systemet, vad ska man göra?
Starta från LiveCD, montera systempartition, till en mapp som är lämplig för oss.
Sedan, om det behövs, gömmer eller tar vi bort standard @ och hemundervolymerna.
och ersätt den saknade med den önskade ögonblicksbilden.
I de flesta fall räcker det att ersätta @.
nazarpc
Snapshots låter dig också inte bara rulla tillbaka till ett visst tillstånd av systemet, utan också att dra dig ur det nödvändig fil eller config, vilket också ger en viss frihet vid radering av filer av okänt ursprung.

Punkt 4: Städning

Snapshots tar inte upp mycket plats, men med tiden kan de samla en stor mängd skräp på skivan. Här är ett skript för automatisk rengöring av ögonblicksbildsmappar. Detta tar bort alla ögonblicksbilder av systemet

#!/bin/bash #Version 0.0.9 set -e DATA=$(datum +%g%m%d%k%M%S) [ ! -d "/tmp/$DATA" ] && sudo mkdir "/tmp/$DATA" sudo mount /dev/sda1 "/tmp/$DATA" && ( cd "/tmp/$DATA/snapshots/" för i in * /* do sudo btrfs undervolym radera "$i" gjort för i in * do sudo rmdir -v "$i" klar echo cleanup_$(datum +%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

Slutsats

Vi har skapat ett relativt feltåligt system där vi har möjlighet att snabbt återställa systemet efter ett fel. Samtidigt, spendera ett minimum av tid och ansträngning på att bygga ett skyddssystem.
Mina egna tankar om detta
Jag tror att en sådan lösning är osannolikt att vara användbar i stora IT-strukturer, men för små hemmabruk borde den vara idealisk.

Dessutom skulle det vara coolt att avsluta rengöringsskriptet så att det rensar alla äldre ögonblicksbilder, till exempel veckor, och inte alla befintliga, jag försökte ärligt talat, men det gick aldrig. Då skulle den också kunna köras till exempel till cron som standard, att köras en gång om dagen, och sedan inkluderas i det officiella installationsskriptet för btrfs. Jag tror att med mindre modifieringar är detta en ganska universell lösning baserad på standardmöjligheterna för btrfs.

Ja, jag vet lvm, men jag behöver inte ett extra lager av abstraktion från hårdvaran och att sätta bilder på en separat sektion är inte heller comme il faut.

UPD 1:
Tack vare användarna

Ingen av oss är immun från misstag. Ibland leder krokhandssyndrom till mycket tråkiga konsekvenser. Ibland är det mycket svårt att motstå att utföra "ovetenskapliga" experiment med systemet eller att starta ett skript/applikation som laddats ner från en overifierad källa. Det är här olika verktyg för att köra applikationer i en isolerad miljö och avancerade filsystemsfunktioner kommer till undsättning.

Introduktion

*nix-system har alltid varit relativt motståndskraftiga mot felaktigt skrivna applikationer (om de naturligtvis inte lanserades som en superanvändare). Men ibland finns det en önskan att experimentera med systemet - att leka med konfigurationer, av vilka några kan vara livsnödvändiga, att köra ett misstänkt skript, att installera ett program som erhållits från en opålitlig källa... Eller ibland blir man helt enkelt övervunnen av paranoia, och man vill sätta upp så många barriärer som möjligt för att skydda mot potentiell skadlig kod. Artikeln kommer att beskriva några verktyg som låter dig undvika konsekvenserna av optvingade fel genom att rulla tillbaka till en förskapad returpunkt (Btrfs-ögonblicksbilder), köra ett misstänkt program i en begränsad miljö och tillfredsställa din paranoia (Arkose och chroot).

Chroot

Chroot har funnits länge. Den har en enorm fördel gentemot andra verktyg - den fungerar överallt, även på mycket gamla distributioner. Alla dessa nymodiga sandlådor är inget annat än dess vidareutveckling. Men det finns också nackdelar. Till exempel finns det inget sätt att begränsa arbetet med nätverket, root kan lämna det med viss ansträngning, och viktigast av allt är det ganska svårt att konfigurera. Trots detta, för vissa ändamål, till exempel att installera paket från källor, är det idealiskt.

Det finns minst tre sätt att skapa en chroot-miljö:

  1. Du definierar själv alla applikationer och bibliotek som behövs för driften av det startade programmet. Detta är den mest flexibla metoden, men också den mest förvirrande.
  2. Chrootmiljön bildas dynamiskt. En gång fanns det ett projekt som hette Isolate, som gjorde just det, men nu har det av okända anledningar sjunkit i glömska.
  3. Att distribuera bassystemet i den angivna katalogen och chroota till det - jag kommer att beskriva det.

Grub och Btrfs

Troligtvis, när du startar från Btrfs-partitionen, kommer Grub att svära på att glesa filer är oacceptabla och ber dig att trycka på valfri tangent. För att förhindra att det här meddelandet dyker upp, öppna det i dina favoriter textredigerare fil /etc/grub.d/00.header och kommentera följande rad där:

Om [ -n "\$(have_grubenv)" ]; sedan om [ -z "\$(boot_once)" ]; sedan save_env recordfail; fi; fi

Egentligen är recordfail-variabeln nödvändig för att förhindra cyklisk omstart, för vilken den ställs in vid uppstart, och sedan, i händelse av lyckad laddning, sätts till 0. Även om det är oönskat att kommentera koden som är ansvarig för denna procedur, tror jag att på ett stationärt system är det ganska du kan klara dig utan det.

Ognelis i sandlådan - titeln säger det

Låt oss först installera debootstrap-paketet, som används just för detta ändamål.

$ sudo apt-get install debootstrap

Sedan kommer vi att skapa en katalog där chroot kommer att finnas och distribuera baskvantala systemet i den. I allmänhet kan den skapas var som helst, men den traditionella platsen är /var/chroot. Eftersom de flesta av följande kommandon kräver roträttigheter, är det vettigt att byta till superanvändarkontot:

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

Låt oss titta på det sista kommandot. Hon distribuerar Quantal Ubuntu-utgåvan i en separat katalog quantal-chr1 (man vet aldrig, kanske behöver du en annan chroot) från närmaste spegel. När distributionen är klar måste du mappa filsystemen procfs, sysfs och (om nödvändigt) /dev till underträdet. Om chroot endast kommer att användas för textapplikationer tills en omstart, bör följande kommandon räcka:

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

Om du vill att det här underträdet ska fungera efter en omstart, lägg till lämpliga rader i /etc/fstab. Tja, för att vissa grafiska applikationer ska fungera bör du också visa katalogerna /tmp och /var/run/dbus. Efter detta kan du ange följande kommando, som faktiskt gör chroot:

# chroot /var/chroot/quantal-chr1/

Och du är redan låst i det. För att inte förväxla chroot med ett riktigt system rekommenderar jag att du ändrar skalprompten. Låt oss till exempel installera och köra Skype i chroot. För att göra detta måste du installera schroot-paketet på värdsystemet, vilket gör det enklare att köra program i en chroot-miljö:


Distribuera till ett chrootat bassystem med debootstrap # apt-get install schroot

Sedan lägger vi till en post i filen /etc/schroot/schroot.conf. I mitt fall lade jag till följande:

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

Vi vidarebefordrar /dev, /proc, /sys, /tmp och /var/run/dbus - se ovan för hur du gör detta. Låt oss lägga till skype-användaren och gruppen till chroot - det är önskvärt att uid och gid sammanfaller med uid/gid för huvudanvändaren av det verkliga systemet (i mitt fall - rom), för vilken vi skriver följande kommandon:

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

Därefter installerar du nyladdade Skype - igen i chroot - och tillfredsställer dess beroenden:

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

På huvudsystemet tillåter vi anslutningar till X-servern från localhost och går in i chroot som en vanlig användare:

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

Ställ in DISPLAY-variabeln (som måste visas i huvudsystemet) och starta Skype:

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

Skype installerades och lanserades framgångsrikt i en chroot-miljö.

Du kan skriva ett manus för att göra det lättare att starta, men du kan göra detta själv.


Använder Arkose

Arkose fungerar på samma sätt som Windows-sandlådor, som Sandboxie. Det är praktiskt taget ett bekvämt omslag för LXC-behållare. Men som du vet är bekvämlighet och flexibilitet ibland oförenliga - att finjustera de skapade behållarna är svårt. Bland fördelarna skulle jag vilja notera det intuitiva gränssnittet (detta är om du använder GUI - dock startar från kommandoradär också väldigt enkelt), men nackdelen är att det som standard kräver ganska mycket ledigt utrymme på din hårddisk och det finns några möjliga lösningar; men om du använder Arkose som ett extra omslag för potentiella sökvägar för skadlig injektion (webbläsare) eller till och med bara för att experimentera med något intressant program, kommer det inte att skada alls.

Seccomp och seccomp-bpf

Seccomp är en föga känd mekanism som introducerats tillbaka i kärnan 2.6.12 som tillåter en process att göra en enkelriktad övergång till ett "säkert" tillstånd, där endast fyra systemanrop kommer att vara tillgängliga för den - exit(), sigreturn() , read() och write(). och de två sista är endast tillgängliga för redan öppna filer. Om processen försöker anropa någon annan syscall, kommer den att dödas omedelbart.

Uppenbarligen är denna lösning inte särskilt flexibel. I detta avseende introducerade 3.5-kärnan seccomp-bpf, som låter dig finjustera, med hjälp av BPF-regler, vilka systemanrop (och deras argument) som är tillåtna och vilka inte. Seccomp-bpf används i Google Chrome, Chrome OS och även backporterad till Ubuntu 12.04.

Innan du kan använda Arkose måste du installera det. Förfarandet är standard:

$ sudo apt-get installera arkose-gui

Både GUI (arkose-gui) och kommandoradsverktyget (arkose) kommer att installeras. Det grafiska gränssnittet är så enkelt att jag inte ser någon mening med att beskriva det; det är bättre att börja träna direkt.


Manuellt skapande
skrivskyddad ögonblicksbild-
det i Btrfs

Jag ska titta på kommandoradsalternativen:

  • -n (ingen, direkt, filtrerad) - mappar nätverket till sandlådan. Alternativen ingen och direkt är självförklarande; filtrerat skapar sitt eget gränssnitt för varje sandlåda. I praktiken är det bättre att använda antingen ingen eller direkt, eftersom filtrering tar lång tid att konfigurera.
  • -d (inget,system,session,båda) - åtkomst till D-Bus från sandlådan.
  • -s storlek - ställer in lagringsstorleken i megabyte. Standard är 2000 MB för ext4 eller halvt minne för tmpfs. Efter att programmet som körs i sandlådan avslutas förstörs lagringen.
  • -t - typ av lagringsfilsystem. Som standard används ext4.
  • --root katalog - anger katalogen som är mappad till sandlådan som rot.
  • --root-type (ko, bind) - exakt hur man visar roten. Om du använder ko kommer alla ändringar efter att du har stängt sandlådan att gå förlorade, men om du använder bind kommer de att sparas.
  • --base-path - anger lagringsplatsen för sandlådan. Standard är ~/.arkose.
  • --bind katalog och --cow katalog - Visar katalogen antingen i ko-läge eller direkt. Naturligtvis beror användningen av ett eller annat alternativ på typen av rotmappning - det är ingen mening att använda alternativet --cow på en katalog som redan är kopiera-på-skriva.
  • -h - använd riktig hemkatalog. Fungerar på samma sätt som --bind $HOME.
  • -p - tillåter användning av PulseAudio.

Låt oss till exempel starta Firefox:

$ sudo arkose -n direkt -p firefox

Detta kommando kommer att starta Firefox med tillgång till nätverket och PulseAudio. Eftersom för varje nyskapad behållare, som standard, en egen hemkatalog skapas, kommer Ognolis-profilen att vara ny, utan installerade tillägg, om du har några.

"Men vänta! Varför sudo? - en rimlig fråga kan uppstå. Faktum är att vissa förberedande operationer endast är tillgängliga från roten. Men jag skyndar mig att försäkra dig - det lanserade programmet kommer att fungera med rättigheterna för den nuvarande användaren.


Lägga till en användare för att köra Skype i chroot

Kort om BTRFS

Det händer att systemet kraschar efter installation av uppdateringar. Det är här verktyg som liknar Windows Systemåterställning skulle komma till nytta. Jag är stolt över att kunna säga att vi har dem! Och ett av dessa verktyg är Btrfs. Bland fördelarna med det nya filsystemet från Oracle är det värt att notera följande:

  • Copy-on-Write. Denna teknik används för att skapa ögonblicksbilder - ögonblicksbilder av systemtillståndet. När du skapar en ögonblicksbild kopierar FS-drivrutinen metadata till den och börjar övervaka den faktiska inspelningen. Om det upptäcks placeras de ursprungliga datablocken i ögonblicksbilden och nya skrivs i deras ställe.
  • Dynamisk allokering av inoder. Till skillnad från den gamla generationens FS har Btrfs ingen gräns för antalet filer.
  • Filkomprimering.
  • Möjlighet att placera FS på flera fysiska medier. I själva verket är detta samma RAID, bara på en högre nivå. I skrivande stund stöds RAID 0, RAID 1 och RAID 10, medan stöd för RAID 5 är i de tidiga utvecklingsstadierna.

Skapa och ta bort ögonblicksbilder

För att utföra operationer på en ny generations filsystem, som att skapa ögonblicksbilder, defragmentera en volym och många andra, använd kommandot btrfs. I allmänhet är dess syntax följande:

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

Vilken typ av operationer kan utföras på Btrfs? Nedan är de kommandon som jag tyckte var intressanta.

  • btrfs subvol skapa [<путь>/]<имя>- skapar en undervolym (se sidofältet). Om sökvägen inte anges skapas den i den aktuella katalogen.
  • btrfs subvol radera<имя>- tar därför bort undervolymen.
  • btrfs subvol hitta-ny<путь> <поколение>- en lista över de senast ändrade filerna i den angivna sökvägen, med början från den angivna generationen. Tyvärr är det inte möjligt ännu på ett enkelt sätt ta reda på den aktuella generationen av en viss fil, så att använda detta kommando kan åtföljas av dans med en tamburin.
  • btrfs subvol ögonblicksbild [-r]<подтом> <путь к снапшоту>- programmets höjdpunkt. Skapar en ögonblicksbild av den angivna undervolymen med den angivna sökvägen till den. Alternativet -r gör det omöjligt att skriva till ögonblicksbilder.
  • btrfs subvol lista<путь>- visar en lista över undervolymer och ögonblicksbilder längs den angivna vägen.
  • btrfs filesys df - utrymmesanvändning för den angivna monteringspunkten.
  • btrfs filesys ändra storlek [+/-]<новый размер> <путь>- ja, ja, i Btrfs är det möjligt att ändra storleken på ett "live"-system, och inte bara öka det, utan också minska det! Med argumenten tycker jag att allt är mer eller mindre tydligt, men förutom att specificera storleken kan du använda max-argumentet som utökar filsystemet till maximal storlek.

De återstående kommandona, även om de är intressanta, är relevanta för artikelns ämne endast i den mån de är, och vi kommer inte att överväga dem. Så, för att skapa en ögonblicksbild av en undervolym med det aktuella datumet, till exempel rotkatalogen, skriv följande kommando:

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

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

Btrfs delvolymer

Btrfs-undervolymen kan agera i två skepnader: som en katalog och som ett VFS-objekt - något som kan monteras. Till exempel när installera Ubuntu två undervolymer skapas - @ och @home. Den första innehåller systemfiler, den andra är användardata. Detta liknar att partitionera en disk, bara om tidigare en partition kunde innehålla, som regel, bara ett VFS-objekt, nu kan en partition innehålla flera objekt samtidigt, och de kan kapslas.

Automatisering

Jag ser ingen mening med att skapa ögonblicksbilder manuellt - du kan helt enkelt glömma att göra det. Tre automatiseringsscenarier kommer att tänka på:

  • skriv ett manus och placera det i rc.local;
  • skriv ett manus och placera det i cron;
  • använd kommandot btrfs autosnap.

Tyvärr, i Ubuntu 12.10 är den senare metoden inte tillgänglig av någon anledning, så det finns praktiskt taget inget val som sådant. Personligen föredrog jag att skriva ett cron-skript, men låt oss först skapa en undervolym där våra ögonblicksbilder kommer att lagras. För vad? Åtminstone för att inte täppa till rotmappen.

# mkdir /mnt/sda11 # montera /dev/sda11 /mnt/sda11 # btrfs subvol skapa /mnt/sda11/@snapshots # umount /mnt/sda11

Låt oss titta på vad dessa kommandon gör. Eftersom själva roten av filsystemet för närvarande inte är tillgänglig (istället används undervolymen @ som rot i Ubuntu), är vi tvungna att montera den manuellt. I mitt fall ligger den på /dev/sda11. Med det tredje kommandot skapar vi en undervolym @snapshots - på detta sätt, om vi inte monterar den eller den verkliga roten, kommer dess innehåll inte att vara tillgängligt. Och nu själva manuset:

Autosnap.sh #!/bin/bash set -e VOLUME=/dev/sda11 TMP_PATH=/tmp/snapshots MOUNT_OPTS="subvol=@snapshots" # Aktuellt datum och tid - krävs för att skapa mappnamn med ögonblicksbilder NOW="$( datum +%Y%m%d%H%M)" NOW_SEC="$(datum +%s)" if [ $# -ne 1 ]; sedan # Om skriptet startas utan argument, ställ in standard till en dag sedan OLDER_SEC="$(datum --datum "1 dag sedan" +%s)" annars # Om vi ​​har ett argument specificerat, antar vi att detta är ett datum i valfritt format som kommandot datum förstår, med alla konsekvenser OLDER_SEC="$(datum --datum "$1" +%s)" fi # Subtrahera det önskade datumet från det aktuella datumet och omvandla det till minuter OLDER= $(($NOW_SEC-$OLDER_SEC)) OLDER_MIN=$(($OLDER/60)) [ ! -d "$(TMP_PATH)/" ] && mkdir "$(TMP_PATH)/" [ -z "`grep "$(TMP_PATH)" /proc/mounts`" ] && montera "$(VOLYM)" "$(TMP_PATH) )/" -o "$(MOUNT_OPTS)" && ( # Montera mkdir "$(TMP_PATH)/$(NU)/" # Skapa ögonblicksbilder btrfs subvol snap / "$(TMP_PATH)/$(NOW)/rootsnap" > / dev/null 2>&1 btrfs subvol snap /home "$(TMP_PATH)/$(NOW)/homesnap" > /dev/null 2>&1 ) && ( # Letar efter mappar med ögonblicksbilder äldre än det angivna datumet för f i ` hitta "$ (TMP_PATH)" -mindepth 1 -maxdepth 1 -typ d -cmin +"$OLDER_MIN" -print0 |xargs -0`; gör btrfs subvol del "$(f)/rootsnap" > /dev/null 2> &1 && btrfs subvol del "$(f)/homesnap" > /dev/null 2>&1 && # och ta bort ögonblicksbilder och mappar som innehåller dem rmdir "$f" done ) umount -l "$(TMP_PATH)" && rmdir "$ (TMP_PATH) )"

Det här skriptet kan placeras varhelst det är lämpligt (personligen föredrar jag att placera sådana saker i /usr/local/bin, men detta är en smaksak), och köra det antingen från cron eller från rc.local. Som standard roterar skriptet ögonblicksbilder som är äldre än en dag, men du kan ange vilket nummer som helst i formatet för datumkommandot - kom bara ihåg att omge det inom citattecken.

Använda en ISO-bild

För att undvika att behöva dra tomten med den inspelade Ubuntu varje gång om några viktiga filer skadas, är det möjligt att lägga till en boot från ISO-bildalternativet i Grub-menyn, vilket är vad jag föreslår att göra. För att göra detta behöver du en icke-Btrfs-partition (eftersom, av okända anledningar, standardinitramfs för Ubuntu och Isoka inte vill se bilden om den finns på partitionen med den beskrivna FS) och direkta händer. Lägg till följande rader i filen /etc/grub.d/40_custom:

Menypost "Ubuntu 12.10 i386 iso" ( insmod part_msdos insmod fat # Installera roten där vi får ISO från set root="hd0,msdos7" # Sökväg till bilden i förhållande till ovanstående rotuppsättning isofile=/ubuntu-12.10-desktop- i386.iso # Montera som en loopback-enhet direkt i Grub loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop)/casper/initrd.lz )

och kör kommandot för att uppdatera huvudkonfigurationen för Grub:

$sudo update-grub

Nu, även om systemet är allvarligt skadat - såvida inte starthanteraren och dess filer påverkas, kan du alltid starta från ISO-avbildningen och ändra de skadade filerna eller återgå till ett tidigare systemtillstånd.


INFO

Om du arbetar i en chroot-miljö som root, så går det att bryta sig därifrån. Ett sätt är att använda systemanropet mknod() och sedan montera den riktiga roten. Att installera grsecurity patchset kan lösa detta problem.

Btrfs-kommandon har standard- och förkortade former. Till exempel kan kommandot "btrfs undervolym ögonblicksbild" skrivas som "btrfs su sn".

Så låt oss säga att du tappade systemet och du måste återställa det från en Btrfs-ögonblicksbild. För att göra detta, starta från denna ISO-avbild, montera partitionen som du tappade systemet på - den partitionen, inte den! - och skriv in följande kommandon (naturligtvis justerat för dina ögonblicksbilder och sektioner):

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

Vid behov gör vi samma sak med @home och startar om. Om allt gick bra kan du ta bort @_badroot:

$ sudo btrfs subvol del @_badroot

Slutsats

På *nix-system finns det många sätt att skydda dig från misslyckade experiment eller mildra deras konsekvenser. Jag har tittat på några av dem. Det är dock värt att notera att alla dessa metoder främst är avsedda för experimenterande som gillar att mixtra med systemet. De är inte lämpliga för att fånga skadlig programvara – de är ganska lätta att upptäcka, även om de naturligtvis ger en viss säkerhetsnivå.

Original: Hur man skapar och använder BTRFS ögonblicksbilder - Handledning
Författare: Igor Ljubuncic
Publiceringsdatum: 25 februari 2012
Översättning: A. Krivoshey
Översättningsdatum: april 2012

BTRFS är ett relativt nytt filsystem baserat på Suns ZFS, som tillförde mest innovation till Unix under de senaste 25 åren innan det förvärvades av Oracle. BTRFS anses fortfarande vara instabilt och därför inte lämpligt för produktionsanvändning. Det här filsystemet har dock många användbara funktioner som är värda att utforska. En av dem är att skapa ögonblicksbilder av systemet.
Låt mig förtydliga. Ögonblicksbilder är ögonblicksbilder av systemets tillstånd. På sätt och vis, om du kopierar en fil och gör en säkerhetskopia, tar du en ögonblicksbild av den från när du kopierade den. Detta kan göras var som helst och när som helst. Tänk på ett filsystem som faktiskt kan hantera flera kopior av dina filer inom sin struktur och låter dig använda dem hur du vill. Låter intressant, vi ska utforska det.

BTRFS introduktion

Innan vi börjar gräva djupare vill jag kort beskriva funktionerna i detta filsystem. BTRFS måste hantera alla systemoperationer relaterade till diskar och filhantering, vilket vanligtvis kräver ytterligare verktyg. BTRFS tillhandahåller defragmentering, lastbalansering, krympning, tillväxt, hot swapping, RAID, ögonblicksbilder, komprimering, kloning och många andra funktioner, allt inbyggt i filsystemdrivrutinen. Med andra filsystem behöver du sannolikt en mängd andra drivrutiner och anpassade verktyg för att hantera alla dessa typer av operationer, såsom en filsystemsdefragmenterare, RAID- och LVM-drivrutiner och så vidare.
Inbyggd funktionalitet betyder prestanda och användarvänlighet. BTRFS är dock ännu inte fullt användbar på grund av instabilitet samt minskad prestanda jämfört med andra filsystem som Ext4. Men den har en enorm potential, så den kan inte ignoreras, utan måste studeras.
I den här handledningen kommer jag att visa dig hur du hanterar ögonblicksbilder. Det här är en superrelevant möjlighet som gör att du kan skapa säkerhetskopior viktiga filer innan du gör några ändringar i dem och återställ dem vid behov. På vissa sätt liknar detta systemåterställning i Windows plus en återställningsdrivrutin på filsystemnivå. Förresten, förutom ögonblicksbilder, kan du i den här artikeln också hitta användbar information om vardagligt arbete med filsystemet BTRFS. Testning utfördes på Fedora 16 Verne med KDE-skrivbordet.

Hur man hanterar BTRFS

Du kan använda BTRFS för rotfilsystemet förutom /boot, som måste formateras som ett traditionellt journaliserat filsystem. För enkelhetens skull kommer vi i denna handledning att arbeta med en separat enhet /dev/sdb1, formaterad i BTRFS och använd vid behov. I praktiken kan detta vara /home eller /data eller något annat.

Vad ska vi göra?

Vi tar /dev/sdb1 och monterar den. Sedan kommer vi att skapa flera underavdelningar. Tänk på underpartitioner som virtuella rotträd, eftersom var och en av dem representerar en separat, oberoende trädstruktur av data, även om data är densamma.
Nedan är sekvensen av kommandon som krävs för detta. Var inte orolig, vi kommer att förklara hur de fungerar.

$ btrfs undervolym skapa /mnt/data $ btrfs undervolym skapa /mnt/data/orig $ echo "Dedoimedo är l33t" > /mnt/data/orig/fil $ btrfs undervolym ögonblicksbild /mnt/data/orig /mnt/data/backup

/dev/sdb1 är monterad på /mnt. Vi skapar ett underavsnitt som heter data. Inuti den skapar vi ett annat underavsnitt som heter orig. Och våra filer kommer att skapas inuti den. Ur användarens synvinkel ser undersektioner ut som vanliga kataloger. Data och data/orig är med andra ord kataloger.
Därefter skapar vi textfil i ursprung kallas fil som innehåller lite text. Och i slutet skapar vi en ögonblicksbild av den ursprungliga undernyckeln och kallar den backup. Vi har nu en identisk kopia av den ursprungliga undernyckeln. Här är beviset:

Dessutom kommer vi att använda kommandot för att kontrollera btrfs undervolymlista för att se alla underavsnitt:

$ btrfs undervolymlista

Observera att varje underavdelning har sitt eget ID-nummer. Som vi snart kommer att se är detta viktigt.

Standardläget

För närvarande visar /mnt både original och backup som standard (allt i data). Vi kan ändra detta. Kommer du ihåg tidigare när jag nämnde virtuella rotträdstrukturer? BTRFS låter dig ändra den virtuella rotkatalogen till någon av underpartitionerna.
Så att använda underpartitioner och ögonblicksbilder innebär helt enkelt att växla mellan olika datahierarkier. Du behöver inte ta bort, skriva över filer eller göra något annat. Du byter helt enkelt till en annan underavdelning. Nu får vi se hur detta går till.
Team btrfs undervolym set-standard ID- det är allt vi behöver. Vi ställer in standardvyn till en annan partition, avmonterar sedan enheten och monterar den igen. Det är viktigt!
Nu, om du arbetar på ett filsystem som inte kan avmonteras eftersom det används, såsom /usr eller /etc, måste du starta om din dator för att ändringarna ska träda i kraft. Nu kommer ett annat underavsnitt att visas i det givna katalogträdet. Användaren kommer inte att märka skillnaden, men data i katalogerna kommer att ändras.
För att verkligen se hur det här fungerar kommer vi att redigera filen i säkerhetskopian. Låt oss ersätta texten Dedoimedo är l33t med Dedoimedo är INTE l33t.

$ echo "Dedoimedo är INTE l33t" > /mnt/data/backup/file

Okej, vi känner till ID för alla underavdelningar. Därför kommer vi att montera ID:t som standardvy. Detta betyder att när du har monterat om /mnt kommer vi att se en fil med detta innehåll här.

$ btrfs undervolym set-default 257 /mnt $ umount /mnt $ mount /dev/sdb1 /mnt

Låt oss nu lägga tillbaka allt:

Detta kan göras så många gånger som behövs:

Ovan ändrade vi vyn mellan 257 och 260, det vill säga mellan original och backup, som ett resultat av detta kunde vi se innehållet i den ändrade filen. Vi visade helt enkelt användaren olika underavdelningar.
Som ett resultat, om vi vill se både ursprung och säkerhetskopia i datakatalogen, måste vi återställa standardvyn för undersektionen på översta nivån, det vill säga data. Lägg märke till att all data visas i /mnt-katalogen eftersom vi valde den som monteringspunkt. Du kan dock använda vilken annan katalog som helst istället.

Slutsats

Snapshot-funktionen i BTRFS är implementerad ganska snyggt och är lätt att använda. Naturligtvis måste du vara noga med att använda rätt dataträd och inte blanda ihop något. Men nu känner du redan till de grundläggande BTRFS-kommandona och kan agera mer självsäkert. Därefter kommer vi att testa Snapper, ett gränssnitt för BTRFS tillgängligt i openSUSE som låter dig implementera samma funktionalitet med hjälp av ett GUI för de som inte gillar kommandoraden.

Att byta till ett nytt filsystem är alltid en svår uppgift. Vi litar redan på det gamla, beprövade filsystemet. Det kan till och med ha vissa begränsningar i funktionalitet och prestanda, men det har aldrig svikit oss. Nya filsystem erbjuder mycket funktionalitet, men frågan uppstår: kan de lita på dem?

Ett sådant filsystem är Btrfs. Detta är ett relativt nytt filsystem som dök upp 2007 och utvecklades av Oracle. Det erbjuder ett mycket brett utbud av nya funktioner och är därför av stort intresse för användare, men det finns fortfarande rykten på Internet om att detta filsystem ännu inte är lämpligt för permanent användning. I den här artikeln ska vi försöka ta reda på vilka möjligheter Btrfs ger oss, och om det verkligen kan användas.

Btrfs utvecklades som sagt av Oracle 2007. Det finns ingen enskild avkodning av namnet, vissa säger att det betyder B-träd FS, andra bättre Fs. Precis som i andra filsystem lagras all data på disken på specifika adresser. Dessa adresser lagras i metadata. Och det är här skillnaderna börjar. All metadata är organiserad i form av b-träd. Detta ger bättre prestanda när du arbetar med filsystemet, och låter dig även lägga till ett obegränsat antal filer.

Men även det är inte allt. När du skriver över en fil skrivs inte data över, bara den modifierade delen kopieras till en ny plats, sedan uppdateras metadatan helt enkelt. Detta gör att du kan skapa ögonblicksbilder av filsystemet som inte tar upp diskutrymme förrän många ändringar har gjorts. Om det gamla blocket inte längre behövs eftersom det inte är en del av någon ögonblicksbild, så raderas det automatiskt.

På grund av sin struktur har Btrfs enorma möjligheter, till exempel kan den hantera dagens mycket stora lagringsmedia. Den maximala filsystemets storlek är 16 exabyte. Allt detta är möjligt tack vare korrekt användning av diskutrymme. Andra filsystem använder HDD helt, från början till slut, för att registrera dess struktur.

Btrfs gör saker annorlunda. Varje disk, oavsett dess storlek, är uppdelad i block om 1 GB för data och 256 MB för metadata. Dessa block samlas sedan in i grupper, som var och en kan lagras på olika enheter, antalet sådana block i en grupp kan bero på RAID-nivån för gruppen. Volymhanteraren är redan integrerad i filsystemet, så ingen ytterligare programvara behövs.

Dataskydd och komprimering stöds också på filsystemnivå, så du behöver inte ytterligare program här heller. Filsystemet btrfs stöder även dataspegling över flera medier. Här är andra btrfs-funktioner som kan nämnas:

  • Stöder ögonblicksbilder av filsystemet, skrivskyddat eller skrivskyddat;
  • Kontrollsummor för data och metadata med hjälp av crc32-algoritmen. På så sätt kan eventuella skador på blocket identifieras mycket snabbt;
  • Komprimering med Zlib och Lzo;
  • Filsystemet är optimerat för att arbeta med SSD:er och upptäcker automatiskt ssd:n och börjar bete sig annorlunda;
  • Bakgrundsprocess för feldetektering och korrigering, samt defragmentering och deduplicering i realtid;
  • Konvertering från ext4 och ext3 och vice versa stöds.

Det här är mycket bra, men är det här filsystemet redan användbart? Låt oss försöka reda ut detta också.

Är Btrfs redo att användas?

Det finns fortfarande många missuppfattningar kring Btrfs. Många av dessa härrör från verkliga problem som fanns tidigt i filsystemutvecklingen. Men folk, när de tittar på denna information, tittar inte på dess datum. Ja Btrfs var verkligen instabil och instabil. Det fanns många problem med dataförlust och många användare skrev om det, men det här var tillbaka 2010.

Den viktigaste delen av ett filsystem är dess disklagringsformat. Men Btrfs filsystemsformat har redan fixats, detta hände redan 2012 och det ändras inte längre om det inte är absolut nödvändigt. Detta i sig är tillräckligt för att erkänna stabiliteten hos btrfs.

Men varför anses Btrfs av många vara instabila? Det finns flera anledningar till detta. För det första är detta användarnas rädsla för ny teknik. Detta hände inte bara i Linux, utan också i Microsoft, när de bytte till NTFS, och i Apple. Men det finns en viss paradox här, XFS-filsystemet har gått igenom 20 år av stabil utveckling, men ext4, som utvecklades från en gaffel av ext3 2006, anses vara det mest stabila filsystemet. Faktum är att den är ett år äldre än Btrfs.

Det andra skälet är aktiv utveckling, även om datalagringsformatet är fruset, utvecklas huvudkodbasen fortfarande aktivt och det finns fortfarande mycket utrymme för att förbättra prestanda och introducera nya funktioner.

Men det finns redan många bevis för att filsystemet är klart. Detta filsystem används på Facebook-servrar där företaget lagrar sin viktiga data. Och detta är i sig en viktig faktor. Företag som Facebook, SuSE, RedHat, Oracle, Intel och andra arbetar med att förbättra filsystemet. Det här filsystemet har använts som standard i SUSE Linux Enterprise sedan release 12. Alla dessa faktorer tillsammans bevisar att filsystemet är ganska redo att användas. Och med tanke på funktionaliteten och funktionerna hos btrfs kan den redan användas.

Använder Btrfs

Varför är det värt att använda Btrfs och är det överhuvudtaget värt det?Vi kom på det. Nu skulle jag vilja visa lite övning så att du kan utvärdera detta filsystem i aktion. Jag kommer att ge exempel baserade på Ubuntu. Låt oss först installera verktyg för att hantera filsystemet:

sudo apt installera btrfs-tools

Skapa ett btrfs-filsystem

Först måste du skapa ett filsystem. Låt oss säga att vi har två hårddiskar /dev/sdb och /dev/sdc, vi vill skapa ett enda filsystem på dem med dataspegling. För att göra detta, gör bara:

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

Som standard kommer den att använda RAID0 för data (ingen duplicering) och RAID1 för metadata (duplicera till en disk).När du använder en enda disk dupliceras även metadata, om du vill inaktivera detta beteende kan du använda det enda alternativet -m :

sudo mkfs.btrfs -m singel /dev/sdb

Men genom att göra detta ökar du risken för dataförlust, för om metadatan går förlorad så är även datan det.

Du kan visa information om det nyskapade filsystemet med kommandot:

sudo btrfs filsystem visa /dev/sdb

Eller om alla monterade filsystem:

sudo btrfs filsystem show

Montera btrfs

För att montera, använd det vanliga kommandot:

sudo mount /dev/sdb /mnt

Du kan montera vilken som helst av skivorna, det kommer att leda till samma effekt. Raden i /etc/fstab kommer att se ut så här:

/dev/sdb /mnt btrfs standardvärden 0 1

Nu tittar vi på informationen om det upptagna diskutrymmet:

sudo btrfs filsystem df /mnt

Kompression i btrfs

För att aktivera komprimering, lägg bara till komprimeringsalternativet vid montering. Du kan skicka lzo- eller zlib-algoritmen till den:

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

Btrfs återhämtning

För att återställa en skadad Btrfs, använd alternativet för återställningsmontering:

sudo mount -o återställning /dev/sdb /mnt

Ändring av storlek

Du kan ändra storlek på en volym i realtid med kommandot resize:

sudo btrfs filsystem ändra storlek -2g /mnt

Kommer att minska storleken med 2 gigabyte. Öka sedan den med 1 Gigabyte:

sudo btrfs filsystem ändra storlek +1g /mnt

Skapa delvolymer

Du kan skapa logiska partitioner, undervolymer inuti huvudpartitionen med Btrfs. De kan monteras inuti huvudpartitionen:

sudo btrfs undervolym skapa /mnt/sv1
$ sudo btrfs undervolym skapa /mnt/sv2
$ sudo btrfs undervolymlista /mnt

Montering av undervolymer

Du kan montera undervolymen med det id som erhålls med det senaste kommandot:

sudo umount /dev/sdb

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

Eller så kan du använda namnet:

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

Ta bort undervolymer

Montera först btrfs-roten istället för undervolymen:

sudo umount /mnt

sudo mount /dev/sdb /mnt/

För att ta bort en undervolym kan du använda monteringsvägen, till exempel:

sudo btrfs undervolym radera /mnt/sv1/

Ta ögonblicksbilder

Filsystem Btrfs låter dig skapa ögonblicksbilder av ändringar. För att göra detta, använd kommandot ögonblicksbild. Låt oss till exempel skapa en fil och sedan ta ett foto:

tryck på /mnt/sv1/test1 /mnt/sv1/test2

Skapa ett foto:

sudo btrfs undervolym ögonblicksbild /mnt/sv1 /mnt/sv1_snapshot

Btrfs(ibland uttalas smör fs) är ett nytt gratis filsystem utvecklat med stöd av Oracle. Distribueras under GPL-licens. Även om dess utveckling fortfarande är långt ifrån färdig, den 9 januari 2009, integrerades filsystemet i Linux-kärnan och är tillgängligt i Debian Squueze.

Även om Btrfs ingick i kärnan 2.6.29, uppger utvecklarna att "från och med kärnan 2.6.31 planerar vi bara att göra diskändringsformatet kompatibelt från och med nu." Utvecklarna vill fortfarande förbättra användar-/hanteringsverktygen för att göra dem enklare att använda. För att få ytterligare information om Btrfs, följ länken i avsnittet.

Ext2/3/4 kan omvandlas till Btrfs (men inte vice versa).

Status

Debian Squeeze och nyare versioner stöder Btrfs.

FAQ

Vilket paket innehåller verktyg för btrfs?

btrfs-tools (i DebianSqueeze och högre)

Se även: Btrfs wiki FAQ

Exempel på kommandon för att arbeta med btrfs

Skapa ett filsystem:

mkfs.btrfs

Hantera volymer, delvolymer, ögonblicksbilder; kontroll av filsystemets integritet:

btrfsctl

Skanna efter btrfs-filsystem:

btrfsctl -a btrfsctl -A /dev/sda2

Skapa ögonblicksbilder och undervolymer:

montera -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_of_new_subvol_name btrfsctn_of_a_snapshot_ofn_s_snapshot_ofn_spicture subvol ls /mnt

Kontrollera filsystemets utbredningsträd:

btrfsck

Mata ut metadata i textform:

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

Visa btrfs-filsystem på hårddisken:

btrfs-show /dev/sda*

Defragmentering (krävs inte som standard):

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

Konvertera ext3 filsystem till btrfs

Ext3-filsystemet kan konverteras till btrfs och fortsätta att arbeta med det som ett nytt filsystem. Dessutom kommer tillståndet för det ursprungliga ext3-filsystemet att bli tillgängligt senare.

# Kör alltid fsck först %# fsck.ext3 -f /dev/xxx # Konvertera från Ext3->Btrfs %# btrfs-convert /dev/xxx # Montera det resulterande Btrfs-filsystemet %# mount -t btrfs /dev/xxx /btrfs # Montera ext3-ögonblicksbilden %# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # Loopback-montera bildfilen %# mount -t ext3 -o loop,ro /ext2_saved/image /ext3

Katalogen /ext3 visar nu tillståndet för det ursprungliga filsystemet.

Avmontering sker i omvänd ordning:

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

Du kan återgå till ett ext3-filsystem och förlora dina ändringar:

% # btrfs-convert -r /dev/xxx

Eller så kan du stanna på btrfs och ta bort den sparade ext3 filsystembilden:

% # rm /ext2_saved/image

Notera: ett nytt filsystem efter konvertering har ibland mycket stor storlek metadata.

Visa metadatastorlek:

# btrfs filsystem df /mnt/data1tb/

Normalisera deras storlek:

btrfs fi balans /mnt/btrfs

Läs mer: Konvertering från ext3 (engelska) och Konvertering av ext3fs till btrfs (ryska)

Ändra storlek på filsystemet och partitionerna

För btrfs, online (on-the-fly) storleksändring av filsystemet är tillgänglig. Först måste du montera erforderligt avsnitt:

# mount -t btrfs /dev/xxx /mnt

Lägger till 2 GB:

# btrfs filsystem ändra storlek +2G /mnt eller # btrfsctl -r +2g /mnt

Minskning med 4 GB:

# btrfs filsystem ändra storlek -4g /mnt eller # btrfsctl -r -4g /mnt

Ställ in storleken i ett 20GB filsystem:

# btrfsctl -r 20g /mnt eller # btrfs filsystem ändra storlek 20g /mnt

Använder allt ledigt utrymme:

# btrfs filsystem ändra storlek max /mnt eller # btrfsctl -r max /mnt

Ovanstående kommandon är endast giltiga för filsystemet. För att ändra storlek på en partition måste du använda andra verktyg, till exempel fdisk. Låt oss titta på ett exempel för att minska en partition med 4 GB. Montera och krympa partitionen:

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

Låt oss nu avmontera partitionen och använda fdisk:

# umount /mnt fdisk /dev/xxx # där dev/xxx är hårddisken med den partition vi behöver

Topp