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

22. 1. 2020
Doba čtení: 5 minut

Sdílet

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.

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.

Co se dozvíte v článku
  1. Predispozice systému
  2. Instalace nástrojů
  3. Vytvoření souborového systému Btrfs
  4. Konverze souborového systému EXT
  5. Stav souborového systému Btrfs
  6. První použití

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:

# 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:

ict ve školství 24

# 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.

Autor článku

Josef Jebavý je profesí linuxový admin a vývojář softwaru, ale zabývá se i hardwarem a elektronikou. Mimo dílnu a počítačové pracoviště se obvykle věnuje sportu.