Hlavní navigace

Btrfs: zajímavý, ale nekompletní souborový systém

Adam Štrauch

Btrfs (Butter FS) je souborový systém, který minulý rok začala vyvíjet firma Oracle. Obsahuje spousty zajímavých vlastností a na Linuxu je brán jako náhrada ext3. Jeho vývoj je zatím velmi bouřlivý, to nám ale nebrání se podívat na to, co je už hotové a zhodnotit dosavadní snažení vývojářů.

Btrfs je, když…

Na desktopové souborové systémy se s klesajícími cenami disků kladou čím dál větší nároky. Uživatelé si přejí vytvářet zálohy, testovat distribuce Linuxu, provozovat RAID pole, ukládat spousty dat (multimédia, obrazy CD/DVD, …) a pokud možno tak, aby byl disk „nafukovací“. Nejen desktopy volají po nových vlastnostech souborových systémů, ale ani servery se zatím nedočkaly toho, co by opravdu chtěly. LVM2 není pro mnoho uživatelů ani administrátorů to pravé řešení. Zatímco ZFS se potácí v licenčních problémech, Oracle pomalu protlačuje vývoj svého vlastního souborového systému, který nazval btrfs. Ten přichází s velmi vyspělými vlastnostmi:

  • Maximální velikost souboru 264
  • Efektivní způsob ukládání malých souborů
  • Efektivní způsob indexování adresářů
  • Dynamicky alokované inody
  • Zapisovatelné snapshoty
  • Podsvazky
  • RAID 0 (striping), 1 (mirroring) a 10 (1+0)
  • Kontrolní součet dat a metadat
  • Kontrola souborového systému za běhu
  • Velmi rychlá kontrola souborového systému offline
  • Efektivní inkrementální zálohy
  • Nové vlastnosti se doplňují
  • CRFS

O několika vlastnostech bych se rád zmínil více. Maximální velikost nové souborové systémy ženou opravdu vysoko. Btrfs má ale i jiné výhody. Například efektivně ukládá malé soubory a index pro adresáře. Malé soubory, které jsou menší než jeden blok, mohou být zabaleny do jednoho bloku k sobě a tím zabírat méně místa. Adresáře jsou indexovány dvěma rozdílnými způsoby. Jeden používá TEA hash, druhý způsob je využíván u funkce readdir(), která vrací data seřazena podle čísla inodu. To se mnohem více podobná skutečnému rozprostření dat na disku a dočkáme se tak většího výkonu. Pro testování nových verzí programů nebo rovnou celé aktualizace linuxového systému se mohou hodit zapisovatelné snapshoty. Díky nim můžeme vytvořit oddíl podobný již existujícímu a využít ho pro zálohování nebo testování, změny v něm uskutečněné se nedostanou do původního oddílu. Snapshoty se po vytvoření nemění (neprojevují se změny provedené v původním oddílu) a jsou to tedy takové „časové obrazy“ disku. Ty se pak dají jednoduše překopírovat na jiné místo.

Historie

Btrfs je velmi mladý souborový systém. V roce 2007 jeho vývoj oznámil Oracle a poslední stabilní vydání je z 15. května 2008. Tento souborový systém má být náhradou zastarávajícího ext3, u kterého ani jeho vylepšená verze ext4 nepřináší vlastnosti, po kterých občas uživatelé volají. Oracle se rozhodlo přijít s něčím novým. S něčím co se dokáže postavit do ringu i s velikány jako je ZFS. Jako licence byla vybrána GPL z důvodu kompatibility s jádrem. Od začátku je tento systém navrhován pro linuxový kernel a je spjat s linuxovým device-mapperem. Ten využívá například i LVM nebo linuxový softwarový RAID. Je to tedy odladěná technologie dostupná na jádrech řad 2.4 i 2.6. Btrfs stále ještě není připraveno pro ostré nasazení, protože vývojáři nezaručují, že se ještě během vývoje nezmění struktura některých součástí.

Anketa

Vítáte příchod nového souborového systému do Linuxu?

CRFS

Spolu s btrfs byl navržen CRFS, protokol pro zpřístupnění dat klientům v síti. CRFS je úzce spjato s btrfs a skládá se z user-space daemonu crfsd a linuxového modulu. Vývoj je ve velmi rané alpha verzi, která zahrnuje navržení základního designu a implementaci základních vlastností. Nebylo zatím vypuštěno ani jedno vydání a zdrojové kódy je možné stáhnout z mercurial repozitáře. Některé vlastnosti se do alpha verze nedostanou, přece jen práce na něm začaly později než na btrfs.

Použití v praxi

Brtfs pokročilo za ten rok o velký kus a vyzkoušet si ho dnes může bez problémů každý. Rád bych tedy ukázal, jak souborový systém dostat do Linuxu a jak použít jeho základní vlastnosti.

Instalace

Instalace je jednoduchá. Stačí si stáhnout ze stránek btrfs zdrojové kódy posledního vydání, rozbalit a zkompilovat. Pozor na to, abyste stáhli jak btrfs, tak btrfs-progs. V době psaní tohoto článku je dispozici btrfs ve verzi 0.15 a další verze se v postupu mohou mírně lišit.

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/btrfs-0.15.tar.bz2
wget http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/btrfs-progs-0.15.tar.bz2
tar xf btrfs-0.15.tar.bz2
tar xf btrfs-progs-0.15.tar.bz2
cd btrfs-0.15
make
insmod btrfs
cd ../btrfs-progs-0.15
make
make install 

Soubory pro práci s btrfs se nainstalují do /usr/local/bin. Některé distribuce nemají nastavenou proměnnou $PATH na tento adresář, a proto je v takovém případě ještě potřeba doplnit do ~/.bashrc u uživatele root jeden řádek.

export PATH=/usr/local/bin:"${PATH}" 

Naformátování oddílu

Práce s btrfs je pohodlná a formátování je stejné jako u jiných souborových systémů. Používá se k tomu nástroj mkfs.btrfs. Vytvořil jsem si pro testování, za pomoci LVM2, 4 oddíly.

mkfs.btrfs /dev/mydisks/btrfs1
mkfs.btrfs /dev/mydisks/btrfs2
mkfs.btrfs /dev/mydisks/btrfs3
mkfs.btrfs /dev/mydisks/btrfs4 

Tímto vytvoříme 4 oddíly stejně jako například u ext3. Btrfs umí však fyzické oddíly spojovat.

mkfs.btrfs /dev/mydisks/btrfs1 /dev/mydisks/btrfs2 /dev/mydisks/btrfs3 /dev/mydisks/btrfs4
nebo
mkfs.btrfs /dev/mydisks/btrfs* 

Pokud jako parametr programu mkfs.btrfs napíšeme 4 předchozí oddíly, tak se nám vytvoří jeden virtuální oddíl o velikosti součtu všech čtyř oddílů. Mountovat je pak můžeme pomocí kteréhokoli z nich.

mount /dev/mydisks/btrfs3 /mnt/p1 

Vytvoření RAID 0 a 1

Vytvoření RAID pole na úrovni souborového systému není o moc těžší než vytvoření normálního souborového systému. V dalším postupu budeme potřebovat program btrfs-vol.

mkfs.btrfs -m raid0 -d raid0 /dev/mydisks/btrfs1 /dev/mydisks/btrfs2
mkfs.btrfs -m raid1 /dev/mydisks/btrfs1 /dev/mydisks/btrfs2
mkfs.btrfs -m raid10 -d raid10 /dev/mydisks/btrfs* 

RAID můžeme vytvořit zvlášť pro data a zvlášť pro metadata. První řádek vytvoří pro data i metadata raid0 (striping). Druhý řádek vytvoří RAID 1 (mirroring) pro metadata. Třetí řádek vytvoří nad všemi čtyřmi oddíly jeden raid 10 oddíl.

Pokud některý z disků havaruje, btrfs nabízí možnost jednoduché výměny v běžícím stavu. Mějme RAID 1 složený ze dvou disků.

mkfs.btrfs -m raid1 -d raid1 /dev/mydisks/btrfs1 /dev/mydisks/btrfs2
mount /dev/mydisks/btrfs1 / 

Pokud jeden z disků havaruje, stačí přimountovaný oddíl přepnout do degradovaného stavu, špatný disk odpojit a dát nový.

mount -o degraded /dev/mydisks/btrfs2 /
btrfs-vol -r missing /mnt 

Klíčové slovo „missing“ je speciální slovo nahrazující chybějící disk. Tímto ho odstraníme z našeho RAIDu.

Pokud chceme z nějakého disku vytvořit RAID nebo doplnit chybějící disk z existujícího RAID pole, použijeme program btrfs-vol a nový disk jednoduše přidáme.

mkfs.btrfs /dev/mydisks/btrfs3
btrfs-vol -a /dev/mydisks/btrfs3 / 

Rozložení dat po obou discích dosáhneme opět pomocí programu btrfs-vol.

btrfs-vol -b / 

Stejně jako u přidávání oddílů můžeme oddíly odstraňovat.

btrfs-vol -r /dev/mydisks/btrfs1 / 

Pokud se rozhodneme s btrfs používat více zařízení, bude potřeba spustit program btrfsctl s parametrem -a hned po zavedení modulu, který prohledá všechny disky v /dev a pokusí se najít btrfs oddíly. O to by se v budoucnu měly postarat linuxové distribuce samy.

btrfsctl -a 

Zobrazení informací

Pokud máme disků hodně a nemáme o nich přehled, program „btrfs-show“ nám ukáže, co za oddíly s btrfs máme v našem systému.

Porovnávací testy

Pro srovnávací test jsem se rozhodl za protivníka vybrat ext3, kterému má být btrfs konkurencí. Jako testovací nástroj jsem použil bonnie++.

Btrfs

Sekvenční zápis Sekvenční čtení Náhodné čtení
Po znaku Blok Přepis Po znaku Blok Skoků
MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU
100 46813 87.8% 57984 17.7% 42466 5.1% 55964 86.3% 2141497 96.2% 107443.1 99.4%

Ext3

Sekvenční zápis Sekvenční čtení Náhodné čtení
Po znaku Blok Přepis Po znaku Blok Skoků
MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU
100 46174 88.3% 58130 19.4% 39165 4.9% 40445 63.2% 2024635 89.0% 107207.0 96.5%

Zhodnocení výsledků

Z tabulek lze vyčíst, že v zatěžování CPU jsou na tom oba filesystémy podobně i přes to, že ext3 mírně vede při čtení. Při zápisu „po znacích“ je btrfs pomalejší v obou testech. Ve čtení dat a stejně tak v náhodném přístupu (toto spíše závisí na samotném HDD) jsou si opět oba souborové systémy podobné. Výsledky testů nemají velkou vypovídající hodnotu o výkonu btrfs a uvádím je jen pro zajímavost. Btrfs se bude ještě hodně měnit a za půl roku se můžeme dočkat úplně jiných čísel.

Závěr

Brtfs se mi opravdu zamlouvá, ale vývoj je na něm ještě znát. Měl jsem problémy s RAIDem, které se mi nepodařilo vyřešit. Stejný problém jsem měl se snapshoty, které se mi vůbec nechtěly vytvořit. Správa oddílů v LVM je mnohem přehlednější, ale btrfs bych tuto vlastnost nezazlíval, protože funguje jinak, má jiné cíle a hlavně LVM2 už tu je s námi několik let a tak je vývoj mnohem dále. Tento souborový systém obsahuje opravdu spousty vlastností, které se dají využít jak na desktopu tak na serveru, takže si svoje místo v linuxových distribucích určitě najde. Oracle trefil s btrfs do černého.

Našli jste v článku chybu?

7. 7. 2008 8:13

No spis bych rekl, ze VFAT nebo FAT vzhledem k fotakum etc. No jinak na ext2/3 mam vsechna data cca 13 let a nikdy nebyl nejmensi problem. A to jsem zazil nekolik odchodu disku a to v dobach co jeste ani RAID nebyl. A vzdy jsem vse dostal. Coz naopak nemohu rict o NTFS ze ktereho jsem nedostal nikdy nic. Ale me produkty M$ nemaji radi :-)

7. 7. 2008 12:52

A nebo: clovek P s krevni skupinou A nutne potrebuje krevni infuzi, ale pobliz je jen darce D s krevni skupinou B. Proste darce D ma nevhodnou krevni skupinu na to, aby se jeho krev stala soucasti prijemce P. A to je problem opravdu darce D a ne prijemce P.
Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

Lupa.cz: Levný tarif pro Brno nebude, je to kartel

Levný tarif pro Brno nebude, je to kartel

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte