Btrfs — что это, снимки, RAID, сжатие | Глоссарий | Глоссарий FREEHOSTING

Btrfs

B-Tree File System
Btrfs — Журналируемая файловая система Linux на B-деревьях. Поддерживает мгновенные снимки, копирование при записи (CoW), дедупликацию, программный RAID 0/1/10 и онлайн-изменение размера тома без размонтирования.

Определение простыми словами

Btrfs (произносится «баттер-эф-эс») — это файловая система для Linux, разработанная Oracle с 2007 года и включённая в ядро с версии 2.6.29. В её основе — структура данных B-tree, отсюда и название. Главное отличие от привычной ext4: Btrfs не перезаписывает блоки на диске, а копирует их в новое место и обновляет указатели — это и есть copy-on-write. Благодаря такой модели делать снимок состояния тома можно мгновенно: в новый каталог записываются только изменённые с момента снимка блоки.

Btrfs объединяет функции файловой системы и менеджера томов: создавать программный RAID, добавлять диски в пул и расширять тома можно без сторонних инструментов вроде LVM. По сравнению с ZFS Btrfs занимает меньше памяти и поставляется с ядром, но реализация RAID 5/6 до сих пор считается нестабильной.

Сравнение (таблица)

Параметр Btrfs ext4 XFS
Снимки Встроены, мгновенные Нет Только через LVM
CoW Да Нет Нет (есть reflinks)
Контрольные суммы Да, для данных и метаданных Только метаданные Только метаданные
Сжатие zlib, lzo, zstd Нет Нет
Программный RAID 0/1/10 (5/6 нестабильно) Только через mdadm Только через mdadm
Сокращение тома Онлайн Только offline Невозможно

Кейсы использования

  • Домашние и рабочие станции на openSUSE и Fedora — снимки конфигурации перед обновлением системы (snapper).
  • Файловые серверы, где нужны прозрачное сжатие и контрольные суммы.
  • Резервное копирование через btrfs send/receive между хостами без лишних копий.
  • Контейнеры: Docker умеет хранить слои образов как Btrfs subvolumes, что ускоряет запуск.
  • Негативный сценарий: базы данных PostgreSQL и MySQL с интенсивной записью — CoW порождает фрагментацию. Решение — отключить CoW для каталога с данными атрибутом chattr +C или выбрать XFS.

Технические детали

# Создание Btrfs на одном диске
mkfs.btrfs -L data /dev/sdb

# Монтирование с zstd-сжатием
mount -o compress=zstd:3,noatime /dev/sdb /mnt/data

# Создание subvolume и снимка
btrfs subvolume create /mnt/data/projects
btrfs subvolume snapshot -r /mnt/data/projects /mnt/data/snap-2026-05-11

# Программный RAID 1 на двух дисках
mkfs.btrfs -d raid1 -m raid1 /dev/sdb /dev/sdc

# Состояние тома и баланс данных
btrfs filesystem usage /mnt/data
btrfs balance start -dusage=50 /mnt/data

Перед миграцией продакшена с ext4 проверьте поведение под реальной нагрузкой: для нагруженных VPS с базами данных XFS часто остаётся предпочтительнее.

Частые вопросы

Стабильна ли Btrfs в продакшене?

Базовый функционал — снимки, RAID 1/10, сжатие — стабилен с 2014 года. RAID 5/6 до сих пор считается экспериментальным: для критичных данных используйте mdadm под Btrfs или ZFS.

Btrfs медленнее ext4?

На последовательной записи и чтении разница в пределах 5–10 %. На случайной записи в крупные файлы (БД, виртуальные диски) Btrfs проигрывает из-за CoW — отключайте CoW для таких каталогов.

Можно ли уменьшить том Btrfs без размонтирования?

Да: btrfs filesystem resize -10G /mnt/data. Это редкая возможность, недоступная XFS и большинству других ФС.