Hlavní navigace

Souborový systém Btrfs: zprovoznění na počítači

Josef Jebavý

Navnadil vás minulý článek a rozhodli jste se začít používat souborový systém Btrfs? Dostáváme se k praktické části našeho povídání a ukážeme si, jak Btrfs zprovoznit a začít skutečně používat.

Doba čtení: 5 minut

Sdílet

Souborový systém Btrfs můžete používat jak na desktopu, tak serveru nebo i jinde. Všude ale můžete těžit z jeho výhod. Pro začátek je však dobré Btrfs začít používat například na desktopu nebo pokusném serveru. Tam se s ním naučit pracovat.

Predispozice systému

Předpokládám, že používáte operační systém na bázi GNU/Linuxu. Nejspíše nějakou distribuci a pokud je aktuální (rok 2019), tak základní podporu souborového systému Btrfs máte již v jádře. Ideální je samozřejmě používat aktuální verzi. V tomto případně zvlášť, protože Btrfs se průběžně vyvíjí a tak na starších systémech nemusí být dostupné všechny funkce. Obecně vzato je přibližně od roku 2014 Btrfs považováno za stabilní.

Instalace nástrojů

V distribucích debianího typu nainstalujete potřebné nástroje pro Btrfs příkazem:

# apt-get install btrfs-tools btrfs-progs

V distribuci Mageia použijeme následující instalační příkaz:

# urpmi btrfs-progs

Na ostatních distribucích obdobně. Název balíčku s nástroji pro práci s souborový systémem Btrfs bude mít určitě v názvu btrfs.

Vytvoření souborového systému Btrfs

Následujícím příkazem, vytvoříte na daném oddíle souborový systém Btrfs:

# mkfs.btrfs /dev/diskX

Pozor příkazem přijdete o data na daném oddíle! Buďte proto opatrní a dvakrát zkontrolujte, že nový souborový systém vytváříte na oddíle, kde žádná živá data nemáte.

Nyní můžete oddíl připojit do adresářové struktury příkazem:

MIF20_tip3

# mount /dev/diskX /mnt/btrfsbackup

Následně již můžete začít oddíl používat jako jakýkoli jiný souborový systém a ukládat data, aniž byste věděli, že je použit souborový systém Btrfs. Ten vám bude v operačním systému fungovat stejně jako jakýkoli jiný unixový souborový systém.

Samozřejmě pro automatické připojení po startu operačního systému zapište do souboru /etc/fstab, kam se má v adresářové struktuře tento oddíl připojit. Nový řádek může vypadat například takto:

/dev/diskX            /mnt/btrfsbackup     btrfs  defaults      0  0

Možno je uvést i různé parametry připojení. Některých se zmíním v dalších článcích. Kompletní výčet s popisem je v dokumentaci souborového systému Btrfs.

Konverze souborového systému EXT

Kdo nemá volný disk/oddíl, pro toho asi bude zajímavou volbou možnost konverze existujícího souborového systému. Je možné konvertovat souborový systémy EXT2/3/4 a ReiserFS. Doporučený postup je však vytvářet souborový systém nový.

Předpokládejme, že oddíl, který chcete konvertovat, je v tomto stavu:

# df -hP /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        9.8G   37M  9.2G   1% /data
  1. Je potřeba odpojit existující souborový systém, který chcete konvertovat. Příkazem:
    # umount /data
  2. Použijte utilitu fsck pro kontrolu integrity souborového systému. Příkazem:
    # fsck /dev/sda1

    Úspěšná bezproblémová kontrola integrity může vypadat např. takto:

    # fsck from util-linux 2.23.2
    e2fsck 1.42.9 (28-Dec-2013)
    /dev/sda: clean, 11/655360 files, 83137/2621440 blocks
  3. Použijete utilitu btrfs-convert, která váš EXT souborový systém konvertuje na souborový systém Btrfs.
    # btrfs-convert /dev/sda1

    Úspěšné konvertování a informace o provedení může vypadat např. takto:

    create btrfs filesystem:
        blocksize: 4096
        nodesize:  16384
        features:  extref, skinny-metadata (default)
    creating ext2 image file
    creating btrfs metadatacopy inodes [o] [         2/        11]
    conversion complete
  4. Upravte soubor /etc/fstab, kde změníte typ souborového systému z původního EXT na Btrfs.
    /dev/sda1 /data           btrfs   defaults      0  0
  5. Nyní můžete připojit oddíl, na kterém již je souborový systém Btrfs. Následujícím příkazem ho připojíte do původního místa:
    # mount /dev/sda1
  6. Informace o připojených souborových systémech můžete vypsat příkazem mount a zkontrolovat tak parametry připojení.

Stav souborového systému Btrfs

Standardní příkazem df můžete zjistit základní informace, které se týkají všech aktuálně používaných souborových systémů. Konkrétně: jaký oddíl je kam připojen, jak je velký a kolik místa na něm již je zabráno.

Poznámka: Dříve příkaz df ukazoval obsazení místa na souborovém systému Btrfs nesprávně, ale dneska už zabrané místo souhlasí.

Vzhledem ke specifikům souborového systému Btrfs se vám bude občas hodit nahlédnout i na podrobnější informace o stavu vašeho oddílu, k čemuž existují další příkazy.

Pro zjištění podobnějších informací slouží následující příkaz:

# btrfs filesystem df /mnt/btrfsbackup/

Zkrácená verze:

# btrfs fi df  /mnt/btrfsbackup/

Výpis informací pak může vypadat například takto:

Data, single: total=203.34GiB, used=183.37GiB
System, single: total=4.00MiB, used=48.00KiB
Metadata, single: total=3.01GiB, used=1.48GiB
GlobalReserve, single: total=275.30MiB, used=0.00B

Z výpisu je vidět, kolik místa zabírají data, metadata a systémové informace. Všechny tyto informace jsou na disku uloženy v módu single, což znamená, že nejsou nijak zdvojené.

Další podrobnosti k tomuto tématu si řekneme v pokračování seriálu.

Kvůli komplikovanosti souborový systému Btrfs v počátcích příkaz df neukazoval pravdivé informace o volném/zaplněném místě, což bylo matoucí. Dneska tomu je už jinak, ale tenkrát se pro získaní informací o kompletním obsazeném (volném) místě dal použít pro výpis smysluplných údajů pouze následující příkaz.Jako parametr je potřeba uvést cestu k disku:

# btrfs filesystem show /dev/sda2
Label: 'systembtrfs'  uuid: 525820fd-b8a6-4927-b943-4dca26452333
        Total devices 1 FS bytes used 368.79GiB
        devid    1 size 441.41GiB used 441.41GiB path /dev/sda2

Krom zaplnění jsou vidět i další podrobnosti úložiště. Vidíme pojmenovávání disku, jeho UUID a cestu k zařízení. Pokud by byl souborový systém roztažen přes více disků, byly by vypsány také.

Následujícím příkazem můžete zjistit, zdali při práci se souborovým systémem nebyly zaznamenány nějaké chyby:

# btrfs device stats /

Výstup může vypadat takto:

[/dev/sda2].write_io_errs    0
[/dev/sda2].read_io_errs     0
[/dev/sda2].flush_io_errs    0
[/dev/sda2].corruption_errs  0
[/dev/sda2].generation_errs  0

Pokud by například na disku docházelo ke skryté degradaci dat, tak právě zde byste se to dozvěděli. Podrobnosti o konkrétním  problému pak můžete dohledat v systémovém logu.

Pro pravidelné zasílání tohoto výpisu si můžete vytvořit cronjob, který vám bude tyto informace pravidelně zasílat na e-mail. Konfigurace pro cron:

MAILTO=admin@example.com
@hourly /sbin/btrfs device stats /data | grep -vE ' 0$'

Takovéto automatické zasílání využijete nejvíce na linuxovém serveru, kde chce mít disky a stav souborového systému pod automatickým dohledem.

První použití

Právě díky tomu, že Btrfs souborový systém je Copy On Write, dostal do vínku i efektivní kopírování souborů. Soubory mezi sebou totiž mohou sdílet bloky. Tímto příkazem provedete kopii souboru, takže nový a původní soubor sdílí datové bloky:

# cp -ar --reflink soubor souborCopy

Toto chování příkazu cp už je nastaveno jako výchozí. Takže bez jakékoli vaší snahy už automaticky dochází k využívaní této funkce. Výhoda je, že kopírování je pak rychlé a zároveň šetříte místo.

Používáte nebo jste začali používat souborový systém Btrfs? Napište svoje zkušenosti do diskuze. V pokračování se dozvíte, jak používat snapshoty.