Гид по технологиям

Btrfs: создаём пул дисков и включаем зеркалирование в Linux

7 min read Linux Обновлено 02 Jan 2026
Btrfs: пул дисков и зеркалирование в Linux
Btrfs: пул дисков и зеркалирование в Linux

Пул дисков и зеркалирование на Btrfs

Btrfs упрощает использование нескольких жёстких дисков: вместо восприятия каждого диска как отдельного устройства вы создаёте единый логический пул, в который можно класть файлы свободно. Кроме компактного управления, Btrfs поддерживает профили распределения данных и метаданных (аналог RAID), снапшоты, проверку контрольных сумм и онлайн-операции по добавлению/удалению устройств.

Что мы разберём

  • Как создать файловую систему Btrfs и объединить несколько дисков в пул
  • Какие профили данных выбирать (single, raid0, raid1, raid10) и чем они отличаются
  • Как конвертировать профиль (например single → raid1)
  • Что делать при отказе диска: удаление, замена, восстановление
  • Настройка автоматического монтирования в /etc/fstab и оптимальные опции для HDD/SSD
  • Практические чеклисты, сценарии отказа, командами для диагностики и обслуживания

Кому это полезно

  • Домашним пользователям с несколькими дисками, желающим объединить простое хранилище
  • Администраторам, которые хотят гибкие профили данных без внешнего RAID
  • Любым, кто ценит онлайн-управление дисками и снимки (snapshots)

Important: если нужен максимально проверенный и простой вариант для одного диска, ext4 остаётся практичным выбором. Btrfs подходит для персонального и лабораторного использования, а также для production-систем при внимательном подходе к резервированию и мониторингу.

Введение в Btrfs — коротко

Btrfs (B‑tree filesystem) — современная файловая система с поддержкой: объединения дисков, снапшотов, сжатия, контрольных сумм и онлайн-операций. Термины:

  • Пул (pool): логическое пространство, созданное из нескольких устройств.
  • Профиль (-d, -m): способ размещения данных и метаданных (single, raid0, raid1, raid10 и др.).
  • Балансировка (balance): перераспределение данных после добавления/удаления устройства.

Исходная конфигурация примера

В примерах ниже используется конфигурация из четырёх дисков:

  • /dev/sdb — 1 TB
  • /dev/sdc — 1 TB
  • /dev/sdd — 500 GB
  • /dev/sde — 500 GB

Дополнительно предполагается /dev/sda с ОС и загрузчиком — он остаётся отдельным и не участвует в пуле.

Создание файловой системы Btrfs и объединение дисков

Если вы хотите создать Btrfs на одном диске:

sudo mkfs.btrfs /dev/sdb

Монтируем первый диск:

sudo mount /dev/sdb /mnt

Форматируем остальные диски (если ещё не отформатированы):

sudo mkfs.btrfs /dev/sdc
sudo mkfs.btrfs /dev/sdd
sudo mkfs.btrfs /dev/sde

Добавляем устройства в пул, монтированный в /mnt:

sudo btrfs device add /dev/sdc /mnt
sudo btrfs device add /dev/sdd /mnt
sudo btrfs device add /dev/sde /mnt

После добавления полезно выполнить балансировку, чтобы равномерно распределить данные по новым устройствам:

sudo btrfs filesystem balance /mnt

Если вы заранее хотите создать пул из всех дисков одним шагом, можно указать устройства в mkfs.btrfs и профиль данных сразу:

sudo mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd /dev/sde

Флаги и профили — кратко:

  • -d single: данные хранятся как в одном пространстве (полезно для дисков разного размера), аналог RAID0 по распределению, но не зеркалирование.
  • -d raid0: полосование данных по дискам (повышение скорости и ёмкости, нет избыточности).
  • -d raid1: зеркалирование каждой кусочной единицы данных на двух устройствах (двойная копия). Требует как минимум 2 устройств.
  • -d raid10: комбинация полос и зеркал, требует ≥4 устройств.

Примечание по расчёту полезной ёмкости: при raid1 полезная ёмкость примерно равна сумме размеров устройств, делённой на 2 (при одинаковых дисках — ровно половина). Для примера с 1+1+0.5+0.5 TB (итого 3 TB) режим raid1 даст около 1.5 TB доступного пространства. Режим raid10 в данном наборе даст 1.5 TB (1 TB из двух 1 TB в зеркале + 0.5 TB из двух 0.5 TB в зеркале). Режим single выдаст суммарные 3 TB, но без защиты данных.

Конвертация профиля файловой системы на рабочем пуле

Можно изменить профиль данных и/или метаданных без переформатирования, если конфигурация допускает новую схему. Например, перевод в RAID1:

Сначала смонтируйте файловую систему (если нужно):

sudo mount /dev/sdb1 /mnt

Потом запустите баланс с конверсией:

sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
  • -dconvert меняет профиль размещения данных;
  • -mconvert меняет профиль метаданных;
  • Можно конвертировать только данные или только метаданные по одной опции.

Ограничения: некоторые конверсии требуют минимального числа устройств (например raid10 — ≥4 устройств). Если не хватает места для выполнения перетасовки данных, команда может завершиться с ошибкой.

Диагностика и базовые команды обслуживания

Полезные команды для проверки состояния пула и устройств:

sudo btrfs filesystem show /mnt     # показывает устройства, UUID и профили
sudo btrfs filesystem df /mnt       # показывает использование пространства по профилям
sudo btrfs device stats /mnt        # статистика ошибок устройств
sudo btrfs scrub start -B -R /mnt   # запускает scrub и ждёт результата (-B), повторяет ошибки (-R)

Scrub — фоновая проверка контрольных сумм, полезна для своевременного обнаружения проблем на дисках.

Что делать при отказе диска (пошагово)

Если диск в пуле вышел из строя, выполните следующие шаги:

  1. Временный монтируем с опцией degraded (если требуется):
sudo mount -o degraded /dev/sdb /mnt
  1. Удаляем отсутствующее устройство из пула:
sudo btrfs device delete missing /mnt
  1. После удаления запустите баланс и scrub, чтобы перераспределить данные и проверить целостность:
sudo btrfs filesystem balance start /mnt
sudo btrfs scrub start /mnt
  1. Если диск подлежит замене, вставьте новый диск и добавьте его:
sudo btrfs device add /dev/sdf /mnt
sudo btrfs filesystem balance /mnt
  1. Для замены конкретного устройства используйте replace (он выполняет копирование с минимальным простоя):
sudo btrfs replace start -B /dev/sdc /dev/sdf /mnt

Important: если у вас не было зеркалирования (raid1/raid10) или другой избыточности, данные, находившиеся исключительно на отказавшем диске, будут потеряны.

Удаление устройства из пула

Чтобы убрать устройство, когда файловая система смонтирована в /mnt:

sudo btrfs device delete /dev/sdc /mnt

Команда перемещает данные с удаляемого устройства на остальные. Операция может занять продолжительное время и завершиться неудачей, если на оставшихся устройствах недостаточно свободного места.

Автоматическое монтирование через /etc/fstab

Простой пример строки в /etc/fstab, чтобы монтировать пул автоматически:

/dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0 0

Важно: использование явных device= в fstab фиксирует список устройств, но при отказе диска и монтировании с опцией degraded потребуется ручная правка или mtab-опции. Альтернативный подход — монтировать по UUID или использовать systemd mount unit с опцией AllowDegraded=true.

Рекомендованные параметры монтирования

Для больших HDD-русов (архивного хранения):

compress-force=zlib,autodefrag,nospace_cache

Пояснения:

  • compress-force=zlib — принудительное сжатие (zlib даёт хорошее сжатие, но нагрузку на CPU);
  • autodefrag — автоматическая дефрагментация мелких изменяемых файлов;
  • nospace_cache/space_cache — управление внутренним кэшем распределения свободного места (в новых ядрах используется space_cache).

Для SSD обычно подходят другие опции:

noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache
  • noatime уменьшает записи при чтении файлов;
  • compress=lzo — быстрое сжатие с низкой нагрузкой CPU;
  • discard — включение TRIM (проверьте поддержку контроллера/диска);
  • space_cache / inode_cache — ускоряют резервирование и работу с метаданными.

Пример полной строки для SSD в /etc/fstab:

/dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde,noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache 0 0

Практические рекомендации и чеклист перед развёртыванием

Чеклист перед созданием пула на реальной системе:

  • Сделайте резервную копию критичных данных (backup). Btrfs удобен, но ошибки конфигурации и аппаратные отказы возможны.
  • Проверяйте совместимость ядра / дистрибутива: используйте актуальные ядра и утилиты btrfs-progs.
  • Планируйте мониторинг: настроить cron/ systemd-timers для регулярного scrub и проверки ‘btrfs device stats’.
  • Тестируйте процедуру восстановления (замена диска) в тестовой среде.
  • Не используйте btrfs в production без стратегии резервирования и восстановления.

Когда Btrfs не подходит или бывает проблемным

  • Если у вас один диск и нужен максимально простой и проверенный FS — ext4 чаще предпочтителен.
  • Если ожидается высокий уровень I/O с низкой задержкой на специфичных конфигурациях — профиль и опции надо тщательно тестировать.
  • Для некоторых особых enterprise-решений с аппаратным RAID или с требованием специфических сертификаций возможно предпочтительнее использовать ПО/аппаратные решения с длительной историей эксплуатации.

Альтернативы и сравнение (кратко)

  • mdadm + LVM + ext4/xfs: классический стек программного RAID + логический том + проверенные файловые системы. Даёт предсказуемость и широкую совместимость.
  • ZFS: продвинутая файловая система с встроенным RAIDZ, снапшотами и самовосстановлением; требует дополнительных ресурсов и иногда лицензий/пакетов.
  • Btrfs: гибкость, онлайн-операции, интеграция снапшотов и Pool/Volume без LVM.

Выбор зависит от приоритетов: гибкость и функциональность vs зрелость и стабильность в специфичных сценариях.

Методика безопасной замены диска (SOP)

  1. Убедитесь, что имеете резервную копию.
  2. Проверяйте логи и btrfs device stats: sudo btrfs device stats /mnt.
  3. Если диск деградировал, смонтируйте с degraded при необходимости:
sudo mount -o degraded /dev/sdb /mnt
  1. Замените физический диск, подключите новый /dev/sdf.
  2. Замену в пуле можно выполнить командой replace:
sudo btrfs replace start -B /dev/sdc /dev/sdf /mnt
  1. Дождитесь окончания и проверьте результат btrfs filesystem df /mnt и btrfs filesystem show /mnt.
  2. Запустите scrub и баланс:
sudo btrfs scrub start /mnt
sudo btrfs filesystem balance start /mnt

Практические примеры команд проверки и восстановления

Проверка состояния:

sudo btrfs filesystem show
sudo btrfs filesystem df /mnt
sudo btrfs device stats /mnt

Восстановление при «missing» устройстве:

sudo mount -o degraded /dev/sdb /mnt
sudo btrfs device delete missing /mnt
sudo btrfs filesystem balance start /mnt

Риски и способы смягчения

Риск: потеря данных при отсутствии зеркалирования. Митигирование: регулярные внешние резервные копии.

Риск: несовместимость старых версий btrfs-progs/ядра с новыми возможностями. Митигирование: обновление ПО/тестирование в staging.

Риск: длительная операция балансировки и высокая нагрузка. Митигирование: планирование окон обслуживания и мониторинг нагрузок.

Краткая шпаргалка по наиболее важным командам

  • mkfs.btrfs — форматирование
  • mount /dev/sdX /mnt — монтирование
  • btrfs device add/delete — добавление/удаление устройств
  • btrfs replace — замена устройства
  • btrfs balance — перераспределение данных
  • btrfs scrub — проверка контрольных сумм
  • btrfs filesystem df/show — диагностика использования и состояния

Критерии приёмки

  • Файловая система успешно монтируется автоматически после перезагрузки.
  • При удалении/замене устройства данные не теряются в режиме с зеркалированием.
  • Scrub проходит без необработанных ошибок в течение запланированного окна.
  • Мониторинг оповещает о проблемах устройств (SMART, btrfs device stats).

Сводка

Btrfs — мощный инструмент для объединения дисков в единый пул с опциями зеркалирования и онлайн-управлением. Он удобен для домашних серверов и гибких конфигураций, но требует внимания к резервированию, мониторингу и совместимости со стэком системы. Используйте chk-lists и тестовые сценарии перед применением в критичных средах.

Image Credit: William Hook

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Резервная копия и восстановление Windows Terminal
Windows

Резервная копия и восстановление Windows Terminal

Отключить звук запуска Windows
Windows

Отключить звук запуска Windows

Как удалить профиль пользователя в Windows 11
Windows 11

Как удалить профиль пользователя в Windows 11

Писк и щелчки в Sony WH-1000XM4 — исправление
Аудио

Писк и щелчки в Sony WH-1000XM4 — исправление

Не запускается служба WLAN AutoConfig — решение
Windows

Не запускается служба WLAN AutoConfig — решение

Исправить ошибку .NET Framework 4: 0x800c0006
Техподдержка

Исправить ошибку .NET Framework 4: 0x800c0006