Přejít na obsah

Btrfs pro začátečníky: co to je, jak funguje a kdy ho zvolit - LINUX PRO DOMÁCNOST

Přeskočit menu
Přeskočit menu
Přeskočit menu

Btrfs pro začátečníky: co to je, jak funguje a kdy ho zvolit

01.09.2025

Co je Btrfs
  • Btrfs je moderní souborový systém pro Linux s funkcemi, které ext4 nemá: snapshoty, copy-on-write (COW), kontrolní součty dat i metadat a nativní kompresi. Díky tomu se umí rychle vracet v čase, brání tichému poškození dat a šetří místo.

Klíčové vlastnosti Btrfs
  • COW (Copy-on-Write): při změně se zapisuje nová kopie bloků, původní zůstává beze změny.
  • Snapshoty: okamžité „zmražení“ stavu, zabírají minimum místa, dokud se data nemění.
  • Subvolumy: logické části uvnitř jednoho Btrfs oddílu, každou lze připojit (mountnout) zvlášť s vlastními volbami.
  • Checksummy: kontrolní součty dat i metadat chrání proti tichému poškození.
  • Komprese (např. zstd): ušetří 10–30 % místa, často zrychlí čtení na SSD.

Jak funguje Copy-on-Write (COW)
  • Způsob zápisu: Btrfs při úpravě souboru nepřepisuje původní bloky.
  • Vytvoří novou kopii změněných bloků: modifikovaná data zapíše na nové místo.
  • Aktualizuje metadata: ta začnou ukazovat na nové bloky.
  • Původní data zůstávají nedotčena: dokud není vše úspěšně zapsáno, stará verze je bezpečně k dispozici.

Výhody Copy-on-write v Btrfs:
  • Integrita dat: Zajišťuje, že původní data nejsou poškozena, protože jsou zachována, dokud není nová kopie dat úspěšně zapsána.
  • Efektivní snapshoty: Umožňuje vytvářet snapshoty souborového systému, které zabírají minimum místa, protože sdílejí stejné datové bloky s původním systémem, dokud nejsou modifikovány.
  • Deduplikace: Při klonování nebo při úpravách dat se díky COW mechanismu vytvářejí pouze kopie modifikovaných bloků, což přispívá k efektivní deduplikaci dat.

Jak funguje snapshot v Btrfs
  • Snapshot = nový seznam ukazatelů na stejné bloky dat.
  • Nic se nekopíruje, snapshot je hotový prakticky okamžitě a zabírá jen pár MB metadat.
  • Při pozdější změně se vytvoří nové bloky, takže starý snapshot zůstává nezměněný.
  • Díky tomu je obnova do předchozího stavu otázka sekund.

Subvolumy a „možnost mountu“
Subvolume je logická jednotka uvnitř Btrfs (není to zvláštní oddíl ani image). Lze ho připojit samostatně (mountnout) pod jiný adresář a s vlastními volbami (compress=zstd, noatime, ro…). To u obyčejné složky nejde.
Proč je to praktické:
  • / a /home můžete mít na jednom Btrfs oddílu, ale připojené odděleně s jinými volbami.
  • Můžete připojit snapshot jen pro čtení a vytáhnout z něj soubory.
  • Rollback a údržba jsou rychlé a čisté.
Jednovětá definice: „Subvolume s možností mountu“ = logická část Btrfs, kterou připojíte jako samostatný filesystém s vlastními volbami a mountpointem.

Doporučená struktura subvolumů (domácí PC)
  • @ → / (root)
  • @home → /home
  • @var → /var
  • @timeshift → /.snapshots (Timeshift)

Ukázkový /etc/fstab
# <device>   <mountpoint>   <fstype>  <options>                                            <dump> <pass>
UUID=xxxx-xxxx   /                btrfs        subvol=@,compress=zstd,ssd,noatime              0      0
UUID=xxxx-xxxx   /home         btrfs        subvol=@home,compress=zstd,ssd,noatime       0      0
UUID=xxxx-xxxx   /var            btrfs        subvol=@var,compress=zstd,ssd,noatime          0      0
UUID=xxxx-xxxx   /.snapshots  btrfs        subvol=@timeshift,compress=zstd,ssd,noatime   0      0
# /boot a swap dle potřeby
# UUID=yyyy-yyyy  /boot        ext4        defaults                                                       0      2
# UUID=zzzz-zzzz  none        swap       sw                                                              0      0
dump – historicky pro nástroj dump (zálohy).
    • 0 = nezahrnovat do dump záloh (běžné nastavení)
    • 1 = zahrnout (dnes se téměř nepoužívá)
pass – pořadí kontroly fsck při bootu.
    • 0 = Nekontrolovat při startu.
    • 1 = Zkontrolovat jako první (obvykle pouze /).
    • 2 = Zkontrolovat po rootu (paralelně u více oddílů).
Chybná hodnota pass (např. více oddílů s 1) může při bootu způsobit dlouhé čekání na fsck.
Poznámka:
ssd mount volbu použijte na SSD; na HDD můžete vynechat.
      • ssd je mount volba Btrfs, která zapne optimalizace pro disky typu SSD/NVMe (jiné rozvržení alokace, počítá se s nulovým seekem ap.).
      • Na SSD/NVMe: můžete ji uvést (ssd), ale Btrfs dnes SSD většinou rozpozná automaticky, takže je to spíš „pro jistotu“ – neuškodí.
      • Na HDD: tuhle volbu nedávejte (nemá přínos; na klasický rotační disk se nehodí).
Pro TRIM preferujte periodický fstrim.timer před discard on-line (nižší režie).
sudo systemctl enable --now fstrim.timer
Má nízkou režii a běží 1× týdně, dobrý kompromis mezi výkonem a údržbou. (OnCalendar je „weekly“.).
    • Efekt: jednorázově odešle seznam „uvolněných“ bloků na SSD. Disk si je pak smaže v klidu na pozadí.
    • Mount volba discard dělá TRIM průběžně při mazání – dříve měla vyšší režii. Novější discard=async je šetrnější, ale pro desktop je fstrim.timer pořád rozumná volba.
Co je TRIM
TRIM = příkaz, kterým OS oznámí SSD/NVMe, které bloky už nepotřebuje (byly smazané/přepsané).
    • Řadič SSD si je pak může na pozadí vymazat (nutné kvůli „erase-before-write“) a zařadit do over-provisioningu - (rezervovaný „skrytý“ prostor na SSD/NVMe, který není dostupný uživateli).
    • Přínosy: stabilnější rychlost zápisu, menší write-amplification, delší životnost.
Poznámky podle typu FS
  • ext4 / btrfs / xfs: TRIM podporují; s fstrim.timer není třeba mount discard.
  • HDD: TRIM nedává smysl (není flash).
  • Šifrování LUKS/dm-crypt: TRIM je ve výchozím stavu blokovaný. Pokud ho chceš propouštět (doporučeno pro SSD na desktopu), přidej do /etc/crypttab volbu discard (u novějších LUKS „allow-discards“). Poté znovu načti konfiguraci/boot.
    • Bez toho fstrim přes šifrovaný svazek neprojde.
    • Bezpečnostní nuance: prozradí, které bloky jsou prázdné; pro domácí PC obvykle akceptovatelné.

Timeshift / Snapper (rychlá obnova)
  • Timeshift (Btrfs mód): vytváří nativní snapshoty, přidá položku „Timeshift Snapshots“ do GRUB. Rollback je dostupný i když systém nenaběhne.
  • Snapper: pokročilejší správa (snapshot před/po aktualizaci, porovnávání změn).

Základní údržba
# Kontrola využití a přehled subvolumů/snapshotů
sudo btrfs filesystem usage /
sudo btrfs subvolume list /
# Pravidelná kontrola dat (doporučeno 1× měsíčně)
sudo btrfs scrub start -Bd /
# Rebalancování (jen pokud dlouhodobě varuje „balance recommended“)
sudo btrfs balance start -dlimit=1 -mlimit=1 /
# (Volitelné) Defragmentace – používejte opatrně, zvyšuje využití místa
# sudo btrfs filesystem defragment -r -czstd /home/uživatel
Vždy mějte zálohu mimo Btrfs, snapshot není záloha.

Omezení a na co si dát pozor
  • Vyšší režie než ext4 (typicky +10–20 % RAM, +5–10 % CPU při I/O zátěži).
  • Správa je složitější (subvolumy, snapshot politika, scrub/balance).
  • Snapshoty nenahrazují zálohu na jiný disk/úložiště.
  • Při agresivní defragmentaci/nevhodné konfiguraci může růst využití místa.

Kdy zvolit Btrfs
  • Chceš okamžité snapshoty a rychlý rollback (např. po aktualizaci).
  • Chceš kompresi a kontrolní součty proti tichému poškození dat.
  • Máš SSD a aspoň 8 GB RAM; nevadí ti naučit se základní správu.

Kdy raději ext4/XFS
  • Potřebuješ úplně nejjednodušší řešení (ext4).
  • Pracuješ hlavně s obřími soubory (video, render, databáze) a snapshoty nechceš (XFS).

Mini-FAQ
  • Poznám rozdíl ve výkonu proti ext4? Na běžném desktopu s SSD a 8+ GB RAM obvykle ne; při dlouhé I/O zátěži může být Btrfs o něco náročnější.
  • Je snapshot záloha? Ne. Je to rychlý návrat v čase na stejném disku. Zálohujte mimo něj.
  • Musím mít /boot na ext4? Není to nutnost, ale je to nejjednodušší a univerzálně kompatibilní.
  • Co když dojde místo? Smažte staré snapshoty, spusťte btrfs balance (s limity), zvažte zvětšení oddílu nebo úpravu politiky snapshotů.

Poznámka: GRUB menu se snapshoty
  • Položka „Timeshift Snapshots“ v GRUBu není funkcí Timeshiftu ani Btrfs. Zajišťuje ji nástroj grub-btrfs, který do konfigurace GRUBu doplní seznam snapshotů (z Timeshiftu/Snapperu).

Debian 12 / Zorin (Ubuntu-based):
sudo apt update
sudo apt install grub-btrfs
# zapnout sledování snapshotů (pokud je v systému dostupné)
systemctl enable --now grub-btrfsd.service 2>/dev/null || true
systemctl enable --now grub-btrfs.path 2>/dev/null || true
# přegenerovat menu
sudo update-grub
# ověření, že se položka objevila:
grep -q 'Timeshift Snapshots' /boot/grub/grub.cfg && echo "OK: položka v GRUBu je" || echo "Zatím není – zkontroluj nastavení"
Timeshift musí běžet v Btrfs režimu (nikoli rsync) a snapshoty musí být na Btrfs subvolume.

Další čtení (Btrfs)
  • Manuálové stránky v Linuxu: man btrfs, man btrfs-subvolume, man btrfs-scrub, man btrfs-balance
  • „Btrfs features / Wiki (kernel.org)“
  • „Timeshift (Linux Mint) – dokumentace“
  • „Snapper User Guide (openSUSE)“
  • „grub-btrfs – README (GitHub)“



PODPOŘTE OTEVŘENÉ NÁVODY A DALŠÍ ROZVOJ WEBU LINUX PRO DOMÁCNOST:

Věřím v otevřené znalosti. Každý návod = rešerše, testování na reálném nebo virtuálním počítači a různých Linux distribucích (např.: Rocky / Debian / Zorin / a další), psaní krok za krokem a finální kontrola — typicky několik hodin až několik dnů práce. Web držím bez reklam i trackingu a chci, aby tak zůstal.

Pokud vám jakýkoli článek ušetří čas nebo nervy, budu rád za dobrovolnou podporu (částku si určíte sami). Prosím, do zprávy pro příjemce napište: NA KAFE / Linux-doma.cz, pomůže mi to přehledně zaúčtovat měsíční souhrn. Děkuji!

A pokud se Vám web líbí a chcete se stát pravidelným sponzorem, podívejte se prosím na stránku "SPONZOŘI".

BITLIFI / QR PLATBA (bez částky)

QR platba (bez částky) – Bitlifi – Linux-doma.cz

  • Uživatel: +420607271333@bitlifi.com
  • Poznámka: NA KAFE / Linux-doma.cz
BANKOVNÍ PŘEVOD /
QR PLATBA (bez částky)

QR platba (bez částky) – bankovní převod – Linux-doma.cz

  • Číslo účtu (CZK): 2000197842 / 2010
  • IBAN: CZ41 2010 0000 0020 0019 7842
  • BIC/SWIFT: FIOBCZPPXXX
  • Zpráva pro příjemce: NA KAFE / Linux-doma.cz
© 2025–2026 Miroslav Zakřevský / LINUX PRO DOMÁCNOST (linux-doma.cz). Všechna práva vyhrazena. Citace povoleny s uvedením zdroje.
Návrat na obsah