Visar inlägg med etikett btrfs. Visa alla inlägg
Visar inlägg med etikett btrfs. Visa alla inlägg

måndag 7 maj 2012

Backup med hjälp av btrfs snapshots

En stark fördel med btrfs är möjligheten att på ett mycket effektivt sätt göra backup med hjälp av snapshots. De flesta oroar sig för dataförlust på grund av hårdvarufel men det är faktiskt (rent statistiskt sett) viktigare att skydda sig mot användarmisstag. Och här är btrfs snapshot ett mycket bra verktyg!

Det går till så att en kopia av filsystemet sparas, på ett sätt så att originalet och kopian i bakgrunden använder samma utrymme, ända till dess att en fil ändras. På detta sätt tar kopian inte särskilt stor plats. På btrfs går detta sekundsnabbt, och man har då en kopia att gå tillbaka till.
Jag har nu lagt upp ett cronjobb som åstadkommer just detta.

Min filstruktur har de subvolymer som används i katalogen /btrfs-stuff/subvolumes/
För att detta ska fungera som avsett har jag följande i /etc/fstab:
$tail /etc/fstab
/dev/mapper/sda2_crypt /root/btrfs-roots/sda2_crypt btrfs noauto,noatime,compress,subvolid=0 0 0
/dev/mapper/sdb2_crypt /root/btrfs-roots/sdb2_crypt btrfs noauto,noatime,compress,subvolid=0 0 0
och sen cron-jobbet:
$cat /etc/cron.daily/btrfs-snapshots
#!/bin/sh
#Av Paul Dreik 20120506
set -e
for t in /root/btrfs-roots/* ; do
    if [ ! -d "$t/btrfs-stuff" ] ; then
        mount "$t"
    fi
    /root/btrfs-snapshot.sh "$t/btrfs-stuff"
    umount "$t"
done
 och så har vi filen som gör själva snapshoten:
$cat /root/btrfs-snapshot.sh
#!/bin/sh
#gör snapshot. Scriptet antar att du har en struktur
# /some/path/subvolumes/
# /some/path/snapshots/
# där du anger /some/path som argument till scriptet.
#
# Scriptet gör sedan ett snapshot av varje subvolym och placerar det i
# snapshots.

#Paul Dreik 20120506

#bail out on error
set -e

#assume a directory structure where the subvolumes and snapshots are
#in subdirs of a specific directory. This directory should be given as
#the first argument to the script.
if [ $# -ne 1 ]; then
    echo "please give the btrfs root directory as the first argument."
    exit 1
fi
if [ ! -d "$1" ] ; then
    echo "directory $1 does not exist."
    exit 1
fi
cd "$1"

#make sure subvolumes exist, as well as snapshots.
for d in subvolumes snapshots ; do
    if [ ! -d "$d" ] ; then
    echo "directory $d does not exist"
    exit 1
    fi
done

for sv in subvolumes/* ; do
    echo "looking at subvolume $sv"
    #make sure the snapshot directory exists
    svname=$(basename $sv)
    mkdir -p "snapshots/$svname"
    #now make the snapshot
    datestamp=$(date --rfc-3339=s)
    btrfs subvolume snapshot -r "$sv" "snapshots/$svname/$datestamp"
done

echo all ok
Detta åstadkommer nu ett snapshot av varje volym, en gång per dygn. För att komma åt en gammal version är det bara att montera det snapshottet. Fungerar otroligt bra!

En liten fotnot:
backup måste naturligtvis ske "ordentligt" också, dvs på en annan fysisk plats. Att lagra gamla versioner lokalt är dock ett väldigt bra sätt att skydda sig mot att oavsiktligt råka ta bort eller ändra filer. Bra för oss med barn som "hjälper till" ibland....

söndag 29 april 2012

kompression i btrfs

Mina experiment med btrfs fortsätter. Har nu slagit på kompression, vilket fungerar fantastiskt bra. Tänk att inte behöva hålla på att komprimera filer för att inte slösa på utrymmet! Eftersom jag använder ssd resp en högvarvig SATA-disk för att få höga prestanda är det viktigt att hålla ner storleken om det går.

Att slå på kompression är så enkelt som att lägga till compress som option i fstab, dvs att den btrfsrelaterade raden i /etc/fstab är
UUID=xxxx / btrfs noatime,compress 0 0
Jag är inte så modig att jag slår på lzo, utan jag håller mig till gzip än så länge...

btrfs som rotfilsystem på Debian Wheezy

Nu har turen kommit till att använda btrfs som rotfilsystem på en Debian Wheezy-installation. Efter att installationen blivit klar efter en evighet (läs förra inlägget, om prestandaproblem med fsync) stannade booten på att fsck fallerade. Detta är något missvisande och verkar ha att göra med att "reparation/kontroll-verktyget" för btrfs inte är klart. I väntan på att det är klart returnerar det att allt är ok, om jag förstått saken rätt.
Workaround: ta bort filsystemkontrollen från fstab, dvs ändra sista kolumnen till noll för btrfsvolymerna. Detaljer finns här.

Nu håller jag på att sätta upp subvolymer och snapshots, så att jag får lite ordning och reda. Time machine-funktionalitet på filsystemnivå är en helt annan femma än rsync+hårdlänkar som "alla" använder för backup!

lördag 28 april 2012

experiment med btrfs

Nu har jag använt btrfs på en partition för backup - funkar perfekt. Det jag framförallt vill åt är checksummekontrollen, dvs att man vet att data är korrekta.

Glad över hur lätt det var att komma igång med btrfs satte jag igång en nyinstallation av debian, med btrfs lagt ovanpå en krypterad partition. Vilken pina! Det visar sig att btrfs i sin nuvarande version är riktigt kass när det gäller fsync(), vilket installationsprogrammet för Debian gör väldigt, väldigt ofta. (Läs mer här, debian bugg #635993). Det verkar tack och lov finnas workarounds när man väl installerat systemet, men just nu har jag tröttnat på att höra hårddisken knattra sedan två timmar för något som brukar gå på under en halvtimme.

måndag 16 april 2012

Intressant föredrag om btrfs

Det "nya heta" vad gäller filsystem är btrfs. Chris Mason från Oracle, huvudutvecklaren, håller här ett väldigt intressant föredrag som berättar lite om vad filsystemet kan och hur det fungerar. Det är inte en reklamfilm som maler på hur förträffligt det är utan sakligt och visar på intressanta skillnader jämfört med arbetshästen ext4 och xfs. Speciellt animationerna för diskaccess för de olika filsystemen är väldigt intressanta.

Efter att tidigare ha insett hur allt mer sannolikt det är att råka ut för "bit rot" så väntar jag på att börja använda ett filsystem med redundans och checksummor. Suns zfs som verkar riktigt bra fungerar inte i linux pga licensskäl (nej, jag vill inte köra via fuse så det räknas inte...).
Utvecklingen av btrfs har ssd i åtanke och det är väldigt viktigt prestandamässigt.

Nu väntar jag på att "de sista" buggarna åtgärdas så att jag slipper vara försökskanin. Min nuvarande setup med det förträffliga lvm kommer då att ryka.