Souborový systém Btrfs na systémovém oddíle

4. 3. 2020
Doba čtení: 5 minut

Sdílet

Jakmile začnete používat souborový systém Btrfs, budete chtít využit jeho výhody a funkce všude, tedy i na systémovém oddíle. Jak mít systémový oddíl s Btrfs a jak přímo z něj i bootovat, si nyní ukážeme.

Jakmile budete mít souborový systém Btrfs na systémovém oddíle, budete mít data operačního systému uložena včetně kontrolních součtů, budete moci pomocí snapshotů zálohovat soubory operačního systém a díky snapshotům budete moci i bootovat i starší verzi systému.

Co se dozvíte v článku
  1. Diskové oddíly
  2. Zavaděč
  3. Instalace
  4. Boot operačního systému
  5. GRUB2
  6. Fstab
  7. Boot ze subvolume
  8. Btrfs je budoucnost

Systémové aplikace budou automaticky využívat funkcí souborového systému Btrfs – například Docker bude vytvářet Btrfs snapshoty.Také můžete mít systém i redundantně na dvou discích v RAID 1. Přechod na RAID je velmi jednoduchý, tak jak jsme si ukázali v dřívějším článku o změnách Btrfs za chodu a RAIDu.

Diskové oddíly

Ano souborový systém Btrfs můžete mít všude. Nejen na datovém oddíle, ale i na systémovém, a když říkám všude, myslím tím i adresář /boot. Tedy můžete ze souborového systému Btrfs bootovat.

Ideální je mít pouze jeden diskový oddíl, protože pak nebudete muset neřešit dilema rozdělení disku, problém s nedostatkem místa nebo změny rozdělení disku.  Další linuxové distribuce můžete mít také na tomto oddíle a jejich root oddíl připojovat ze subvolume.

Pokud používáte EFI/UEFI boot (což by měl být dnes už standard), samozřejmě budete potřebovat jeden malý oddíl pro data UEFI bootu.

Zavaděč

Já již léta používám zavaděč GRUB, a to z toho důvodu, že hlavní část konfigurace je v textovém souboru. Pouze úpravou tohoto konfiguračního souboru lze jednoduše ovlivnit zavedení operačního systému. Naproti tomu původní zavaděč LILO je potřeba při každé změně přegenerovat a zapsat znovu na disk. Dnes je dávno snad ve všech distribucích ve výchozím stavu nasazen zavaděč GRUB ve verzi 2.

Kde je operační systém bootován pomocí BIOSu, je použít grub-pc. Pokud se používá UEFI boot, je použit grub-efi. Jestli bude nainstalováno jedno či druhé, volí instalátor, podle toho, jak byl sám nabootován. Lze to samozřejmě změnit, není to však běžné a vzhledem k tomu, že si tím můžete rozbít systém, by to měl dělat pouze zkušený linuxový odborník.

UEFI boot rozhodně volte v případě, že budete chtít mít na disku větší oddíl než 2 TB, protože takto velké oddíly je možné vytvářet pouze pomocí GPT a řešit boot pomocí BIOSu s GPT je zbytečně složité. Navíc třeba Windows 7 takové atypické kombinace nepodporuje.

Instalace

Nejjednodušší způsob, jak mít systémový oddíl se souborovým systémem BTFS, je zvolit tento souborový systém při instalaci operačního systému. Všechny hlavní linuxové distribuce podporují instalaci na souborový systém Btrfs, takže než provádět pracnou riskantní migraci, doporučuji vyčkat na obměnu hardwaru a pak instalovat systém rovnou na oddíl s Btrfs.

Mezitím, když budete Btrfs provozovat alespoň na datovém oddíle, tak se s tímto novým moderním souborový systémem dobře naučíte. Migrace kompletního systému na jiný disk je také možná, ale to tu nebudu popisovat. Zkušení vědí jak na to, ostatní od toho chci spíše odradit.

Boot operačního systému

Po načtení zavaděče, ať už pomoci BIOSu nebo UEFI, je následný průběh stejný. Grub se pouští v několika fázích, postupně nabíhají jednotlivé mezistavy, až naběhne Grub v plném rozsahu.

BIOS boot

Pokud počítač bootuje pomocí BIOSu, je zavaděč zapsán v prvním sektoru disku – takzvaném MBR (Master Boot Record). První sektor disku má tradičně 512 bajtů, i když dnešní rotační i SSD disky mají sektory často větší. Zavaděč je v prvních 446 bajtech, zbytek obsahuje tabulku rozdělení disků tzv. PAT (Partition Allocation Table).

UEFI boot

UEFI boot probíhá tak, že na disku je speciální malý oddíl se souborovým systémem FAT. Na něm jsou soubory, které umí UEFI přímo načíst. Například pro zavedení GRUB na PC s architekturou x86_64 je to konkrétně soubor grubx64.efi.

Pokud je to možné, preferujte určitě UEFI boot a použijte rozdělení disků pomocí GPT. U disků nad 2 TB je kombinace GPT a UEFI lepší, pokud nechcete řešit složitě BIOS boot s GPT nebo disk rozdělovat na menší oddíly, což by se souborovým systémem Btrfs bylo úplně zbytečné.

Pro odvážné je zde návod jak přejít z BIOS bootu na UEFI a jak na rozdělení disku pomocí GPT.

Zavedení a start OS

Zavaděč dle konfigurace zavede do operační paměti kernel s uvedenými parametry a dále initrd, což je disk v paměti operačního systému, který obsahuje moduly (ovladače), které nejsou zakompilované v jádře, ale jsou potřeba pro boot operačního systému. Typicky modul pro SATA řadič a modul souborového systému. Bez nich kernel nedokáže načíst další data z disku.

Následně je spuštěn první proces, nazývaný init, který spouští postupně vše, co je potřeba dále pro start operačního systému.

GRUB2

Parametry pro zavedení operačního systému z Btrfs mohou být stejné nebo podobné jako v případě použití jakéhokoli jiného souborového systému.

Pokud budete mít root oddíl na nějaké subvolume, budete potřebovat předat informaci, která subvolume se má použít.

Zde je příklad konfigurace s uvedením kořenové subvolume:

title linux
kernel (hd0,0)/vmlinuz BOOT IMAGE=linux
root=UUID=91408a14-3e5e-4252-a8c2-d38646f68192 splash=silent rootflags=subvol=ROOT
root (hd0,0)
initrd /initrd.img

V případě potřeby je možno tyto parametry jednorázově změnit na začátku bootu. Stačí po zavedení GRUBu zmáčknete klávesu e.

Fstab

Soubor /etc/fstab obsahuje konfiguraci o tom, jaké diskové oddíly se mají kam připojit, včetně kořenového (root) oddílu. V následujícím příkladu můžete vidět, jak může obsah tohoto souboru, pokud je použít na kořenovém oddíle souborový systém Btrfs a je připojována jeho subvolume:

UUID=86D2-C8BD /boot/efi vfat defaults 1 1
UUID=525820fd-b8a6-4927-b943-4dca26452333 / btrfs subvol=ROOT 1 1
UUID=525820fd-b8a6-4927-b943-4dca26452333 /mnt/systembtrfs btrfs defaults 0 0

Z prvního řádku je poznat, že systém bootuje pomocí UEFI a právě v adresáři /boot/efi/ budou soubory pro UEFI boot.Na druhém řádku je kořenový oddíl, který je připojován s parametrem subvol=ROOT. Tento parametr říká, že právě na této subvolume se nachází kořenový oddíl operačního systému.

Třetí řádek připojuje stejný diskový oddíl, s tím rozdílem, že připojuje přímo jeho kořen do adresáře /mnt/systembtrfs.  V tomto adresáři je pak možno si prohlédnout kompletní obsah disku.

Poznámka: Vřele doporučuji používat jako identifikátory disku UUID, protože je to přehledné a hlavně unikátní

Boot ze subvolume

Pokud úspěšně bootujete do systému, který má Btrfs na kořenovém oddíle a chcete bootovat ze subvolume, úprava je jednoduchá stačí se držet následujícího postupu:

  1. Vytvořte subvolume pro root oddíl
  2. V souboru /etc/fstab zapište parametr subvol
  3. Do konfigurace GRUB zapište parametr subvol

Změnou hodnoty subvolume pak můžete nabootovat například jiný snapshoot se zálohou operačního systému.

bitcoin_skoleni

Btrfs je budoucnost

Nyní máte systém připraven tak, že můžete využívat všech výhod souborového systému Btrfs. Gratuluji vám k tomu, že jste technologicky připraveni na budoucnost. Btrfs se jistě díky svým vlastnostem a zařazením do standardního linuxového jádra stane mainstreamem a firmy jej budou používat jako výchozí.

Pokud se chcete seznámit rychle a prakticky se souborovým systémem Btrfs, ve spolupráci s Root.cz jsem připravil školení, jak začít používat souborový systémem Btrfs.

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.