Btrfs (czytane jako „Butter FS” albo „Better FS”, oficjalnie B-tree Filesystem) to system plików dla Linuksa zbudowany wokół mechanizmu copy-on-write (CoW). W praktyce oznacza to, że Btrfs nigdy nie nadpisuje danych w miejscu — przy każdej zmianie zapisuje nową wersję bloku, a stare dane zostają nietknięte, dopóki ktoś ich potrzebuje. Dzięki temu dostajesz w jednym kawałku to, na co kiedyś trzeba było składać kilka warstw: migawki (snapshoty), sumy kontrolne danych i metadanych, wbudowane zarządzanie woluminami oraz software’owy RAID. Funkcjonalnie celuje w to samo, co ZFS, ale jest częścią mainline kernela Linuksa od wersji 2.6.29 (2009 r.) i objęty licencją GPL.
Jak to działa i do czego się przydaje
Sercem Btrfs są drzewa typu B (stąd nazwa) trzymające metadane, oraz podział na subwolumeny — niezależne przestrzenie nazw w obrębie jednego systemu plików, które możesz osobno montować i osobno migawkować. Ponieważ CoW pozwala „zamrozić” stan w danej chwili praktycznie za darmo (kopiowane są tylko referencje, nie dane), snapshot powstaje w ułamku sekundy i zajmuje miejsce dopiero, gdy oryginał zaczyna się różnić.
Do tego dochodzą checksumy (domyślnie CRC32C) liczone dla każdego bloku — jeśli na talerzu pojawi się cichy bit-rot, Btrfs to wykryje, a przy konfiguracji RAID1 potrafi sam podmienić uszkodzoną kopię na zdrową. Masz też przezroczystą kompresję (zstd, lzo, zlib), którą włączasz opcją montowania compress=zstd.
Przykład z życia
Najpopularniejsze zastosowanie to migawka systemu tuż przed aktualizacją. Tworzysz snapshot roota:
sudo btrfs subvolume snapshot / /.snapshots/przed-update
Jeśli pakiety rozłożą system, wracasz do poprzedniego stanu zamiast reinstalować wszystko od zera. Dokładnie na tym opiera się Snapper w openSUSE i automatyczne rollbacki w Fedorze czy w dystrybucjach immutable. Stan puli sprawdzisz przez btrfs filesystem usage /, a integralność danych przejedziesz komendą btrfs scrub start /.
Częste błędy i mity
Mit numer jeden: „Btrfs jest niestabilny”. Tryb single, RAID0 i RAID1 są uznawane za produkcyjne od lat — ale RAID5/6 nadal ma znany problem z „write hole” i oficjalnie nie jest zalecany do ważnych danych. Po drugie: CoW kłóci się z bazami danych i obrazami maszyn wirtualnych (fragmentacja, spadek wydajności) — dla takich plików ustaw atrybut chattr +C albo montuj z nodatacow. I uwaga klasyk: df -h potrafi kłamać o wolnym miejscu, bo nie rozumie metadanych i kompresji — używaj btrfs filesystem df.
Pojęcia powiązane
copy-on-write, ZFS, LVM, software RAID, snapshot, subvolume, checksum (bit-rot), ext4, XFS, Snapper.