Btrfs

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Btrfs (B-tree file system, vyslovováno "Butter F S" či "B-tree F S") je copy-on-write souborový systém pro Linux vyvíjený od roku 2007 společností Oracle. Je šířen pod licencí GNU GPL.

Má na poli linuxových souborových systémů přinést některé vlastnosti ZFS od Sunu (nyní Oraclu), který nelze začlenit do zdrojových kódů linuxového jádra, neboť je uvolněn pod licencí CDDL (Common Development and Distribution License) nekompatibilní s GPL (licence jádra).

V linuxovém jádře je zařazen od verze 2.6.29-rc1. V roce 2014 byl uvolněn v produkční kvalitě.

Historie

Datová struktura, na které je Btrfs založen - copy on write B-strom - byla původně navrhnuta Ohadem Rodehem, výzkumníkem z IBM, na prezentaci USENIX v roce 2007. [url=https://www. +moreusenix. org/legacy/events/lsf07/tech/rodeh. pdf]]Chris Mason, inženýr pracující na [[ReiserFS[/url]] pro SUSEse později toho roku přidal do společnosti Oracle a začal pracovat na novém souborovém systému založeném na B-stromech.

Theodore Ts’o, jeden z předních vývojářů ext3 a ext4 souborových systémů, v roce 2008 prohlásil, že i přesto, že má ext4 pokročilé funkcionality, nejedná se o zásadní pokrok. Stále používá starou technologii, která se již významně neposune. +more Ts’o prohlásil, že Btrfs se pohybuje lepším směrem, protože „nabízí vylepšení ve škálovatelnosti, spolehlivosti a jednoduchosti spravování“. [https://web. archive. org/web/20120617204105/http://arstechnica. com/information-technology/2009/04/linux-collaboration-summit-the-kernel-panel/].

Btrfs 1. 0, s hotovým diskovým formátem bylo původně naplánované na konec roku 2008,[url=https://web. +morearchive. org/web/20081220083235/http://btrfs. wiki. kernel. org/index. php/Development_timeline]]a bylo přijato do jádra [[Linuxu[/url]] v roce 2009. [url=https://www. linux-magazine. com/Online/News/Kernel-2. 6. 29-Corbet-Says-Btrfs-Next-Generation-Filesystem]]Několik Linuxových distribucí[url=https://en. wikipedia. org/wiki/Linux_distribution[/url]]začalo nabízet Btrfs jako experimentální volbu při instalaci. [https://web. archive. org/web/20110528160211/http://docs. redhat. com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/storage. html[/url][https://fedoraproject. org/wiki/FWN/Issue296. rd=FWN/LatestIssue#What. 27s_new_in_Fedora_15_. 28Lovelock. 29. 3F][https://www. debian. org/News/2011/20110205a. en. html].

V červnu 2011 byly do verze 3. 0 Linuxového jádra přidány nové funkcionality Btrfs. +more Mezi nimi automatická defragmentace a nová metoda automatické opravy dat. [https://kernelnewbies. org/Linux_3. 0#head-3e596e03408e1d32a7cc381d6f54e87feee22ee4].

V roce 2012, dvě Linuxové distribuce prohlásili Btrfs jako stabilní a změnili jeho stav z experimentálního na produkční. Oracle Linux v březnu,[url=https://blogs. +moreoracle. com/linux/unbreakable-enterprise-kernel-release-2-has-been-released]]následován [[SUSE Linux Enterprise Server|SUSE Linux Enterprise[/url]] v srpnu. [http://www. novell. com/linux/releasenotes/x86_64/SUSE-SLES/11-SP2/#fate-306585].

V roce 2015 bylo Btrfs nastaveno jako výchozí souborový systém v operačním systému SUSE Linux Enterprise Server 12.[https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/#fate-317221]

V roce 2020 se Btrfs stalo výchozím souborovým systém ve Fedoře 33.

Funkcionality

Klonování

Btrfs nabízí klonovací operace, které automaticky vytvoří copy-on-write záznam souboru. Takto naklonované soubory nezabírají žádné dodatečně místo na disku, dokud jejich obsah není modifikován. +more Při modifikaci jsou zkopírovány (copy-on-write) a změna je uložena do kopie a původní soubor zachován nedotčen.

Na pozadí Btrfs nevytváří odkazy ukazující na již existující inody. Místo toho, Btrfs vytváří nové inody, které z počátku sídlí na stejném místě na disku jako originální soubor. +more Díky tomuto faktu, klonování funguje pouze v rozmezí jednoho Btrfs souborového systému. Od Linuxové verze 3. 6 je možné toto omezení obejít za jistých okolností.

Klonování by nemělo být zaměňováno s pevnými odkazy, což jsou adresářové záznamy asociují více názvů s reálnými soubory na disku. Zatímco pevné odkazy jsou více méně různé názvy pro stejné soubory, klonování v Btrfs nabízí nezávislé soubory, které pouze zpočátku sdílí stejné místo na disku.

Dílčí svazky a snímky

Dílčí svazky mohou být vytvořeny kdekoliv v hierarchii souborového systému a mohou být i zanořené. Zanořené dílčí svazky se tváří jako podadresáře uvnitř jejich rodičovských dílčích svazků. +more Nápodobně kořenový dílčí svazek prezentuje svoje dílčí svazky jako podadresáře. Odstranění dílčích svazků není možné, dokud všechny dílčí svazky níže v hierarchii nejsou odstraněny. Jako následek, kořenový dílčí svazek nemůže být nikdy smazán.

Každý Btrfs souborový systém má vždy výchozí dílčí adresář, který je nastaven jako kořenový.

Btrfs snímek je dílčí svazek, který sdílí data (a metadata) s jiným dílčím svazkem. Je zde využit copy-on-write mechanismus, a tak modifikace snímku se neprojeví v původním dílčím svazku. +more Jakmile je vytvořen zapisovatelný snímek, je možné se k němu stavit jako alternativní verzi originálního souborového systému.

Copy-on-write mechanismus Btrfs garantuje, že vytváření snímků je velmi rychlé a z počátku zabírá zanedbatelné místo na disku. Jelikož snímek je dílčí svazek, vytváření zanořených snímků je také možné. +more Vytváření snímků není rekurzivní proces.

Vytvoření snímku adresáře není možné, protože mohou být pořízeny snímky pouze dílčích svazků. Tato limitace se ale dá obejít.

Dílčí svazek Btrfs se značně liší od tradičních logických svazků LVM. Zatímco s LVM, logický svazek je oddělené blokové zařízení, u Btrfs nemůže být s dílčími svazky takto nakládáno.

Send-receive

Pokud máme dva dílčí svazky (nebo snímky), můžeme spočítat jejich rozdíl (za použití btrfs send příkazu), který může být později aplikován (pomocí btrfs receive příkazu), potenciálně i na úplně jiném Btrfs souborovém systému. Send-receive operace obecně vytváří (a aplikuje) sadu operací, které je nutné provést k tomu abychom konvertovali jeden dílčí svazek do druhého.

Toto může být využito například jako jednoduchý mechanizmus inkrementálního zálohování nebo způsob replikace souborového systému.

Kontrola o zotavení

Unixové systémy tradičně používají program fsck na kontrolu a opravu souborových systémů. Pro Btrfs je tato funkcionalita implementována příkazem btrfs check. +more Od verze 4. 0 je tato funkcionalita považována za stabilní. Od srpna 2017 ovšem oficiální dokumentace Btrfs doporučuje její použití teprve až po vyzkoušení ostatních metod.

Existuje i další nástroj, btrfs-restore, který může být použit pro získání souborů z poškozeného souborového systému, který se nedaří zavést. Tento nástroj souborový systém nemodifikuje a je tudíž nedestruktivní.

Během normálního používání je Btrfs většinou samo opravující se a je schopno se zotavit z chyb díky pravidelnému ukládání dat na pevná úložiště. Ve výchozím nastavení toto Btrfs provádí každých 30 sekund, ale je možné tento interval změnit. +more V nejhorším případě by tak mělo dojít maximálně ke ztrátě dat vytvořených v posledních třiceti sekundách.

Návrh

Původní návrh Ohada Rodeha na USENIXu v roce 2007 obsahoval poznámku, že B+ stromy, které jsou často používány jako struktury dat na pevných úložištích u databází, by nemohli efektivně umožňovat copy-on-write mechanismus založený na snímkách, protože jejich listy jsou propojeny. Kdyby jeden list byl zkopírován při zápisu, jeho rodiče a sourozenci by také museli být zkopírovány stejně tak jako jejich rodiče a sourozenci a tak dále dokud by nebyla zkopírována celá struktura. +more Místo toho navrhl upravený B-strom (který neobsahuje provázané listy) s počtem referencí asociovaným s každým vrcholem, ale uloženým v jiné datové struktuře. Mezi další změny patřila i úprava balancovacího algoritmu stromu, aby se více kamarádil s copy-on-write mechanismem. Výsledkem je struktura s vysokým výkonem, která je schopná provádět copy-on-write a zachovat konkurenci.

Btrfs je strukturováno do vrstev několika takovýchto stromů. Stromy ukládají generické prvky uložené jako 136bitové klíče. +more Nejvyšších 64 bitů reprezentuje unikátní identifikátor. Prostředních osm bitů je rezervováno pro typ. Posledních 64 bitů jsou využívány typ od typu. Tudíž prvky stejného objektu skončí ve struktuře vedle sebe.

Vnitřní prvky stromů jsou reprezentovány jako obyčejné seznamy párů klíč-ukazatel, kde ukazatel je logické blokové číslo potomka. Listy obsahují klíče uložené vpředu vrcholu a data na konci, kde se rozdíl mezi nimi postupně zmenšuje jak se vrchol zaplňuje daty.

Související články

ZFS * ext4 * ext3

Reference

Externí odkazy

[url=https://btrfs. wiki. +morekernel. org/]Oficiální stránky projektu[/url] * [url=https://lwn. net/Articles/358940/]JLS2009: A Btrfs update[/url] (LWN. net) * [url=https://www. abclinuxu. cz/clanky/jaderne-noviny/kratka-historie-btrfs]Krátká historie Btrfs[/url] (AbcLinuxu. cz) * [url=https://www. root. cz/clanky/btrfs-zajimavy-ale-nekompletni/]Btrfs: zajímavý, ale nekompletní souborový systém[/url] (Root. cz) * [url=https://www. phoronix. com/scan. php. page=article&item=btrfs_lzo_2638&num=1/]Porovnání výkonu Btrfs bez/včetně Zlib a LZO komprese[/url].

Kategorie:Linux Kategorie:Souborové systémy

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top