Коротко о главном
Btrfs объединяет файловую систему и управление томами: субтомы, снапшоты, сжатие, контрольные суммы и RAID-подобные профили. Для домашнего сервера это гибкий инструмент, но он требует понимания, как расходуется место и как работают снапшоты.
Снапшоты позволяют откатить систему после неудачного обновления, а сжатие экономит место на диске. Btrfs хорошо подходит для корневого раздела и домашних данных, если не использовать неподдерживаемые конфигурации RAID5/6.
Большинство проблем с Btrfs сводится к нескольким повторяющимся ошибкам. Ниже — что проверить в первую очередь и как не усугубить ситуацию.
Почему это происходит
Ошибки почти всегда связаны с контекстом: другая версия пакета, не тот пользователь, устаревший конфиг или команда из руководства для другой системы. Btrfs не исключение. Поэтому сначала фиксируем исходное состояние, затем меняем одну вещь за раз.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. No space left, хотя место есть
Проверьте btrfs filesystem usage: могли закончиться метаданные или место в конкретном профиле. Удалите старые снапшоты и выполните balance.
2. Scrub находит ошибки
Посмотрите btrfs device stats и dmesg. При наличии копии данных Btrfs может восстановить блок; при ошибках записи диск нужно заменить.
3. После отката снапшота пропали новые файлы
Откат возвращает состояние на момент снапшота. Это ожидаемое поведение — заранее сохраняйте новые данные отдельно.
Как настроить правильно
Правильная последовательность проста: проверить версию и зависимости, сделать резервную копию конфигурации, внести минимальное изменение, проверить логи и только потом двигаться дальше.
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install btrfs-progs
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install btrfs-progs
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S btrfs-progs
1. Создайте файловую систему
Разметка уничтожает данные. Проверьте устройство через lsblk и создайте Btrfs только на пустом разделе.
lsblk -o NAME,SIZE,FSTYPE
sudo mkfs.btrfs -L data /dev/sdb1
2. Создайте субтомы
Субтомы позволяют отдельно монтировать систему и данные, а также делать независимые снапшоты.
sudo mount /dev/sdb1 /mnt
sudo btrfs subvolume create /mnt/@
sudo btrfs subvolume create /mnt/@home
sudo umount /mnt
3. Смонтируйте с нужными опциями
Сжатие zstd экономит место и часто ускоряет чтение. noatime снижает число записей.
sudo mount -o compress=zstd:3,noatime,subvol=@ /dev/sdb1 /mnt
btrfs filesystem df /mnt
4. Делайте снапшоты
Снапшот занимает место только при изменении данных. Храните их в отдельном субтоме и не забывайте удалять старые.
sudo btrfs subvolume snapshot -r /mnt/@ /mnt/snapshots/@-$(date +%F)
sudo btrfs subvolume list /mnt
Рабочий конфиг
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
# /etc/fstab
UUID=xxxx / btrfs defaults,noatime,compress=zstd:3,subvol=@ 0 0
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Не используйте RAID5/6 в Btrfs для важных данных: у профиля есть извес
Не используйте RAID5/6 в Btrfs для важных данных: у профиля есть известные ограничения.
Совет 2. Следите за свободным местом: при заполнении могут закончиться метаданн
Следите за свободным местом: при заполнении могут закончиться метаданные.
Совет 3. Для образов виртуальных машин и баз данных рассмотрите nodatacow.
Для образов виртуальных машин и баз данных рассмотрите nodatacow.
Совет 4. Удаляйте старые снапшоты: они не занимают место только до изменения да
Удаляйте старые снапшоты: они не занимают место только до изменения данных.
Профилактика
Большинство повторяющихся сбоев с Btrfs связано не с ошибкой в самой программе, а с окружением: обновились зависимости, изменился путь, закончилось место или другой администратор поправил конфиг. Поэтому профилактика начинается с фиксации исходного состояния.
Сохраните рабочий конфиг в систему контроля версий, добавьте короткий комментарий о том, зачем нужен каждый нестандартный параметр, и запишите команду проверки. Через месяц вы скажете себе спасибо: восстановить логику по чужому файлу без пояснений почти невозможно.
Чек-лист
- Версия пакета и конфигурация зафиксированы и доступны для сравнения.
- Есть автоматическая проверка синтаксиса перед перезапуском службы.
- Журналы ротуются, а диск не заполняется ими за неделю.
- Изменения проходят через тестовый стенд, а не сразу на рабочий сервер.
Итог
Большинство ошибок с Btrfs лечится не переустановкой, а проверкой конфигурации, логов и прав доступа. Действуйте по одному изменению за раз — и причина быстро найдётся.