Pro většinu uživatelům je tím nejcennějším na počítači disk. Jsou na něm totiž uložena data, která jsou unikátní a jejich vytvoření stálo jistě mnoho času. Nezřídka se jedná již o neopakovatelný záznam událostí. Proto je potřeba řešit, jak máte data uložena, tedy na jakých mediích jsou, jakým způsobem jsou organizována a jak jsou zajištěna.
Co se dozvíte v článku
Médií pro uložení dat máme mnoho typů. Hlavními typy jsou:
- Rotační disky
- SSD disky
- CD/DVD
- Pásky
Každé médium má typické vlastnosti a dle nich a typu použití se vybírá konkretní medium, často i jejich kombinace.
Organizaci dat na uloženém médiu pak řeší souborový systém, což bude hlavní téma této série článků. Nebudu opakovat, co je již sepsané, a s podrobnějšími informace o tom, co je souborový systém, vás proto odkáži na Wikipedii.
Souborových systémů máme mnoho, některé jsou určeny na konkrétní typ media, některý souborový systém je svázán s určitým operačním systémem. Některé jsou díky otevřenosti podporovány napříč operačními systémy.
Porovnání s konkurencí
Každý souborový systém má díky svým specifikům i různé výhody. Zde je seznam těch nejběžněji používaných variant:
- Windows: FAT32, NTFS (1993)
- Linux: ext3 (2001), ext4 (2008), RaiserFS, JFS
- macOS: HFS (1985), HFS+ (1998, b-trees)
- ZFS (2005)
- JFFS, UBIFS
- Btrfs (2009)
NTFS byl na svou dobu pokrokový. Škoda, že jeho možnosti málokdo využíval. Ovšem kvůli uzavřenosti byl problém ho používat jako univerzální úložiště dat. I na Linuxu trvalo několik let, než se reverzním inženýrstvím vyvinul modul pro kernel, který uměl souborový systém NTFS aspoň číst.
Linux podporuje mnoho typů souborových systémů, hodně z nich je možno použít i pro systémový oddíl. Nejpoužívanější je EXT (v současnosti EXT4). Jedná se o stabilní souborový systém, který krom očekávaných funkcí je možno například i bez rizika zvětšovat.
JFFS a UBIFS jsou linuxové souborové systémy, které byly vyvinuty pro flashové paměti umístěné v embedded zařízeních. Proto jsou optimalizované pro šetrnější přepisovaní téhož datového bloku a mají další specifické vlastnosti. Byly používány i v legendárním otevřeném telefonu OpenMoko Neo FreeRunner.
ZFS byl vyvinut firmou Sun Microsystems a tento souborový systém se díky novým zajímavým funkcím stal jedním z taháků jejich operačního systému Solaris.
Licence ZFS však není s Linuxem kompatibilní. Nové možnosti, které přinášel ZFS, jsou však neodolatelné. Proto firma Oracle (ještě než koupila firmu Sun Microsystem) zahájila práci na obdobném souborovém systému, který byl nazván Btrfs.
Vlastnosti Btrfs
Právě některé podstatné vlastnosti souborového systému Btrfs, jsou důvody, proč jej začít používat.
- B-tree souborový systém
- vývoj od roku 2007
- copy-on-write
- kontrolní součty
- RAID
- komprese
- snapshoty
- send/receive
- změny za chodu
- obdoba ZFS
- TRIM
- kvóty
Praktické výhody
TRIM
Moderní souborový systém samozřejmě podporuje příkaz TRIM, který se automaticky používá, pokud Btrfs provozujete na SSD.
B-tree
Už název napovídá, že Btrfs využívá koncept tzv. B-tree (B-strom), což je způsob organizace dat. Podrobnosti naleznete na Wikipedii.
Snapshoty
Snapshoty je možné použít k zálohování, mohou se posílat na jiné úložiště a mohou šetřit místo. Snapshoty jsou způsob, jak udržet stav dat k určitému okamžiku.
COW
Copy-on-write (COW) mimo jiné umožňuje zaručení konzistence dat, protože dokud není operace dokončena, vždy existují původní data. Toto jinde (třeba u EXT3) řeší žurnál. Díky COW umí souborový systém dělat i jednoduše a velmi rychle snapshoty.
RAID
Sám souborový systém Btrfs umí zajistit RAID. Díky tomu, že RAID je implementován už na úrovni souborového systému, je použití v mnohém jednodušší a efektivnější.
Stabilní podpora je zatím pro RAID 1. RAID typ 1, neboli mirror, dovoluje mít redundantně data na více discích a tak zajistit větší odolnost proti výpadku. Pozor ovšem na to, že RAID není zálohování.
Komprese
Souborový systém Btrfs umí data před jejich uložením zkomprimovat, takže pokud máte na kompresi vhodné soubory, vejde se vám jich na disk více, aniž byste je museli nějak ručně komprimovat.
Změny za chodu
Veškeré změny je možné dělat za chodu operačního systému a používání daného oddílu, na kterém je souborový systém Btrfs. Můžete tedy přidat disk a zvětšit tak úložný prostor bez restartu serveru. Můžete úložiště ze single módu převést na RAID 1. Můžete disk také odebrat. Za chodu lze dělat snapshoty, odesílat snapshoty na jiný disk i počítač a podobně.
Kontrola integrity dat
Úložné medium je dneska složité a jemné zařízení. V rotačních i SSD discích je mnoho elektroniky a softwaru, který data zpracovává. U softwaru nebo hardwaru včetně disků se však mnohokrát vyskytly i problémy.
Například na disk uložíte data a při čtení vám disk vrátil data jiná. Některé modely disků přitom ani neposílají chybu čtení. Kontrolní součty na úrovni souborového systému vám umožní ověří, že co jste na disk uložili, jste pak i přečetli. V případě výpadku se tak jistě dozvíte o chybě.
V případě RAID 1 se dokonce správná data načtou z druhého disku a následně na prvním opraví.
Kvóty
Souborový systém Btrfs má kvóty řešeny pomocí subvolumes. Každý souborový systém má nastavování kvót trochu jinak, je tedy potřeba to vždy konzultovat s dokumentací.
Řada nástrojů (jako populární ISPconfig) zatím s kvótami nad Btrfs pracovat neumí.
Funkce ve vývoji
Některé schopnosti jsou zatím v plánech a nebo ve vývoji.
RAID
RAID 5 a 6 je stále ve vývoji, ale již ho můžete zkoušet na svých počítačích. Předpokládá se ovšem, že pravidelně zálohujete. Stav implementace se pomalu, ale úspěšně dostává do produkčního stavu.
Šifrování
Šifrování je zatím v plánech. Aktuální řešení proto je použít např. linuxovou šifrovací technologii LUKS a až nad touto vrstvou vytvořit Btrfs.
Swap
Z důvodu technologické implementace Btrfs neumožňuje vytvářet swapové soubory. Ovšem sám jsem takovou možnost stejně využíval pouze výjimečně.
Kernel, platformy
Btrfs je možné použít na všech architekturách, kde běží Linux. Osobně Btrfs provozuji na x86_64 a ARM, je součástí linuxového jádra od verze 2.6.29-rc1.
Kdo Btrfs používá
Některé lidi zajímá, jestli to vlastně v produkci vůbec někdo používá. Za všechny zmiňme Facebook, SUSE, Debian a Ubuntu.
Red Hat se rozhodl vyvíjet nový souborový systém, který pojmenoval Stratis. Zatím je však vývoj stále v plenkách a jde to asi ještě pomaleji než Btrfs, přestože se má stavět na hotových technologiích. Btrfs je však samozřejmě v linuxovém jádře, které najdete i v distribucích od Red Hatu.
Ostatní distribuce souborový systém Btrfs podporují a například firma SUSE se velmi aktivně podílí na jeho vývoji.
ZFS vs. Btrfs
Někdo by řekl, že použije ZFS a někteří ho i používají. Ať už na BSD systémech nebo dokonce i na Linuxu. Licenčně je však ZFS s Linuxem nekompatibilní, takže se zřejmě nikdy nestane součástí jádra. Průběžně se objevují i nové licenční problémy se ZFS na Linuxu.
ZFS má výrazně větší požadavky na paměť než Btrfs. Pokud máte omezené množství paměti, není pro vás ZFS vhodný. Velká výhoda ZFS je arc cache, díky které je čtení a hlavně i zápis výrazně rychlejší.
Zajímavé je, že za původním vývojem ZFS i Btrfs stojí Oracle. Přitom původně vývoj Btrfs začal kvůli získání alternativy k licenčně problematickému ZFS.
Sedm let zkušeností
Důležitá je osobní a dlouhodobá zkušenost. Já souborový systém Btrfs provozuji od roku 2013, tenkrát se jednalo o verze: Btrfs v0.20-rc1 a Btrfs-progs v4.4.1.
Btrfs je hodně odlišný, jak z pohledu použití, tak i po koncepční stránce. Poskytuje nové možnosti, kterých není málo.Je možno jej jednoduše nasadit a používat ho. Dokonce rovnou budete automaticky využívat některé jeho funkce.
Je však dobré se s ním seznámit podrobněji, aby linuxový admin věděl, jak s ním zacházet v případě potřeby. A pokud se Btrfs naučíte používat, rozhodně postupně začnete používat i jeho další funkce.
Základem je dokumentace
Na začátku vždy rozhodně prostudujte dokumentaci. V případě souborového systému Btrfs se můžete podívat, jaké funkce jsou v jakém vývojovém stavu.
Základem pro seznámení je dokumentace, ať už na internetu nebo manuálové stránky. Tento seriál vás však s většinou funkcí a jejich použitím u Btrfs seznámí.