Btrfs je pro Linux k dispozici již několik let, takže jej možná již znáte. Pokud ne, můžete mít otázky ohledně toho, zvláště pokud používáte Fedora Workstation (Btrfs je nyní jejím výchozím souborovým systémem). Cílem tohoto článku je pomoci vám seznámit se s ním a jeho pokročilými funkcemi, jako je kopírování při zápisu a kontrolní součty.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Btrfs, zkratka pro B-Tree Filesystem, je ve skutečnosti souborový systém a správce svazků sloučený do jednoho. Často je vnímáno jako odpověď na ZFS, představený v Solaris OS Sun Microsystem již v roce 2005, nyní z velké části nahrazený open source implementací nazvanou OpenZFS. Ubuntu Linux a FreeBSD často obsahují OpenZFS. Další příklady s podobnými funkcemi jsou Stratis společnosti Red Hat a Linux Logical Volume Manager (LVM).
Nastavení
Pro vyzkoušení Btrfs jsem si stáhl soubor ISO Fedora 33 Workstation a nainstaloval jej do nového virtuálního stroje (VM). Proces instalace se oproti předchozím verzím nezměnil. Neupravoval jsem žádná nastavení, včetně rozdělení disku a formátování, abych zachoval přesné nastavení tohoto návodu. Jakmile byl virtuální počítač v provozu, nainstaloval jsem a spustil GNOME Partition Editor (GParted) pro pěkný, z výroby čerstvý pohled na rozložení disku.
Od tohoto okamžiku se to příliš neliší od toho, na co jste zvyklí. ve skutečnosti můžete systém normálně používat a možná si ani nevšimnete, že souborovým systémem je Btrfs. Toto nové výchozí nastavení vám však umožňuje využít několik skvělých funkcí.
Prozkoumat souborový systém Btrfs
Nevím o žádných grafických nástrojích specifických pro Btrfs, ačkoli některé jeho funkce byly začleněny do existujících nástrojů pro správu disků.
Z příkazového řádku se můžete blíže podívat na formát Btrfs:
# btrfs filesystem show
Label: 'fedora_localhost-live' uuid: f2bb02f9-5c41-4c91-8eae-827a801ee58a
Total devices 1 FS bytes used 6.36GiB
devid 1 size 10.41GiB used 8.02GiB path /dev/vda3
Změnit štítky Btrfs
První věc, které jsem si všiml, byl štítek souborového systému nastavený instalačním programem:fedora_localhost-live
. To je nepřesné, protože se nyní jedná o nainstalovaný systém a již nejde o živé CD. Tak jsem to změnil pomocí btrfs filesystem label
příkaz.
Změna štítku souborového systému Btrfs je jednoduchá:
# btrfs filesystem label /
fedora_localhost-live
# btrfs filesystem label / fedora33workstation
# btrfs filesystem label /
fedora33workstation
Správa dílčích svazků Btrfs
Zdá se, že podsvazek je standardní adresář, který lze spravovat pomocí Btrfs. Na mé nové pracovní stanici Fedora 33 je několik podsvazků:
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
Vytvořte nový subvolume pomocí btrfs subvolume create
nebo odstraňte dílčí svazek pomocí btrfs subvolume delete
:
# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 top level 5 path home
ID 258 gen 2888 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 276 gen 2888 top level 258 path opt/foo
# btrfs subvolume delete /opt/foo
Delete subvolume (no-commit): '/opt/foo'
Dílčí svazky umožňují akce, jako je nastavení kvóty, pořízení snímku a replikace do jiných umístění a hostitelů. Jak mohou správci systému využít těchto možností? A co domovské adresáře uživatelů?
Přidat uživatele
Jak tomu bylo od dávných dob, přidáním nového uživatelského účtu se vytvoří domovský adresář, který bude účet používat:
# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 student1 student1 80 Oct 29 00:21 student1
Tradičně je domovským adresářem uživatele podadresář /home
. Vlastnictví a privilegia jsou přizpůsobeny vlastníkovi, ale neexistují žádné speciální funkce pro jejich správu. Dalším scénářem je prostředí podnikového serveru. Často je adresář vyhrazen pro použití konkrétní aplikací a jejím uživatelem. Ke správě a aplikaci omezení na tyto adresáře můžete využít Btrfs.
Aby bylo možné přizpůsobit podsvazky Btrfs jako domovy uživatelů, existuje nová možnost useradd
příkaz:--btrfs-subvolume-home
. Přestože manuálové stránky nebyly aktualizovány (v době psaní tohoto článku), můžete tuto možnost zobrazit spuštěním useradd --help
. Předáním této možnosti při přidávání nového uživatele se vytvoří nový podsvazek Btrfs. Funguje stejně jako -d
volba dělá pro vytvoření běžného adresáře:
# useradd --btrfs-subvolume-home student2
Create subvolume '/home/student2'
Ověřte uživatele pomocí getent passwd student2
a bude vypadat normálně. Spusťte však btrfs subvolume
příkaz k výpisu podsvazků a uvidíte něco zajímavého:domovský adresář nového uživatele!
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 272 gen 2459 top level 256 path home/student2
Prozkoumejte druhý scénář prostředí podnikového serveru. Předpokládejme, že potřebujete nainstalovat server WildFly v /opt
a nasadit webovou aplikaci Java. Často je vaším prvním krokem vytvoření wildfly
uživatel. Udělejte to pomocí nového --btrfs-subvolume-home
spolu s -b
možnost zadat /opt
jako základní adresář:
# useradd -b /opt --btrfs-subvolume-home wildfly
Create subvolume '/opt/wildfly'
Nyní wildfly
uživatel se může přihlásit a dokončit instalaci v /opt/wildfly
.
Smazat uživatele
Když odstraníte uživatele, někdy budete chtít smazat soubory tohoto uživatele a domovský adresář současně. userdel
příkaz má -r
a také odstraní dílčí svazky Btrfs:
# userdel -r student2
Delete subvolume (commit): '/home/student2'
Nastavte kvóty využití disku
V jedné z mých hodin informatiky student spustil program v jazyce C, který se vymkl kontrole a zapisoval na disk, dokud nebyl celý /home
byl vyplněn na unixovém systému oddělení! Server se stal nedostupným, dokud admin nezabil ubíhající proces a neuvolnil nějaké místo. Totéž platí pro scénář výše; že podniková aplikace Wildfly bude mít pro své uživatele rostoucí počet souborů protokolů a úložišť obsahu. Jak můžete zabránit tomu, aby se server zastavil, protože se disk zaplnil? Nastavení omezení využití disku je dobrý nápad. Naštěstí to Btrfs podporuje prostřednictvím kvót.
Konfigurace kvót vyžaduje několik kroků. Prvním krokem je povolení quota
na souborovém systému Btrfs:
# btrfs quota enable /
Ujistěte se, že znáte ID číslo skupiny kvót (qgroup) každého podsvazku, které se zobrazuje v btrfs subvolume list
příkaz. Každý podsvazek potřebuje přidruženou skupinu qgroup na základě svého ID. To lze provést individuálně pomocí btrfs qgroup create
, ale wiki Btrfs pohodlně poskytuje následující příkaz pro urychlení vytváření qgroups pro subvolume na souborovém systému:
>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>
V čerstvě nainstalovaném systému pracovní stanice Fedora 33 pracujete na kořenové cestě souborového systému, /
. Nahraďte \<path>
s kořenovou cestou:
# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /
Poté spusťte btrfs quota rescan
a podívejte se na nové qgroups:
# btrfs quota rescan /
quota rescan started
# btrfs qgroup show /
qgroupid rfer excl
-------- ---- ----
0/5 16.00KiB 16.00KiB
0/256 272.04MiB 272.04MiB
0/258 6.08GiB 6.08GiB
0/265 16.00KiB 16.00KiB
0/271 16.00KiB 16.00KiB
0/273 16.00KiB 16.00KiB
Nyní můžete přiřadit kvótu jedné ze skupin qgroups, která se naopak použije na příslušný podsvazek. Pokud tedy chcete omezit využití domovského adresáře studenta3 na 1 GB, použijte btrfs qgroup limit
příkaz:
# btrfs qgroup limit 1G /home/student3
Potvrďte kvótu pro konkrétní podsvazek:
# btrfs qgroup show -reF /home/student3
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/271 16.00KiB 16.00KiB 1.00GiB none
Mírně odlišné možnosti zobrazí všechny qgroups a všechny nastavené kvóty:
# btrfs qgroup show -re /
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/5 16.00KiB 16.00KiB none none
0/256 272.04MiB 272.04MiB none none
0/258 6.08GiB 6.08GiB none none
0/265 16.00KiB 16.00KiB none none
0/271 16.00KiB 16.00KiB 1.00GiB none
0/273 16.00KiB 16.00KiB none none
Další funkce
Tyto příklady poskytují určitou představu o funkcích Btrfs. Spusťte btrfs --help
zobrazíte úplný seznam příkazů. Existuje mnoho dalších pozoruhodných schopností; například snímky a odesílání a přijímání stojí za to se naučit.
Poslední myšlenky
Btrfs nabízí mnoho příslibů pro poskytování pokročilé sady funkcí souborového systému pro Linux. Nebylo to první; Vděčím ZFS za to, že jsem před 15 lety představil tento typ souborového systému, ale Btrfs je plně open source a nezatížené patenty.
Pokud chcete prozkoumat tento souborový systém, doporučuji začít s virtuálním počítačem nebo náhradním systémem.
Rád bych viděl nějaké grafické nástroje pro správu vytvořené pro systémové administrátory, kteří rádi operují ve světě GUI. Naštěstí má Btrfs silnou vývojovou aktivitu, o čemž svědčí rozhodnutí projektu Fedora nastavit jej jako výchozí na Workstation 33.