Jump to content

BTRFS/Обслуживание

← Назад: Оптимизация Вперёд: Автоматизация обслуживания →

⚠️ Эта статья находится в разработке. Содержание может измениться в ближайшее время.

Файловая система BTRFS может сама проверять свои данные, исправлять ошибки и сохранять стабильность, если ей немного помочь. Этот раздел рассказывает, как выполнять обслуживание — без риска и без “танцев с бубном”.

Зачем нужно обслуживание BTRFS

BTRFS — "живая" файловая система: она отслеживает состояние своих блоков, умеет восстанавливаться при ошибках и эффективно использовать пространство. Но даже такой системе полезно периодически проверять состояние, балансировать блоки и корректировать распределение данных, чтобы избежать проблем с доступом и потерей свободного места.

Проверка статистики устройств

Чтобы посмотреть, есть ли ошибки ввода-вывода или другие проблемы с устройствами, выполните:

sudo btrfs device stats /

Команда выводит счётчики ошибок чтения и записи по каждому устройству; если вы видите только нули — всё в порядке. Если есть ошибки, стоит изучить их глубже (например, с помощью `smartctl` или `smartmontools`).

Проверка и восстановление данных (scrub)

Scrub — это проверка целостности всех блоков данных и метаданных с проверкой контрольных сумм на лету. Если файловая система настроена с избыточным хранением (например, RAID1 или DUP), BTRFS может автоматически попытаться восстановить повреждённые блоки из реплик.

Чтобы запустить проверку:

sudo btrfs scrub start -Bd /

Пояснение:

  • start — начать операцию scrub
  • -B — выполнить в блокирующем режиме (ожидать завершения)
  • -d — детальный вывод статистики по ошибкам

Для просмотра статуса scrub:

sudo btrfs scrub status /

Если ошибок нет — вывод покажет нули в соответствующих счётчиках. Регулярная проверка (например, раз в месяц) помогает выявлять проблемы на ранних стадиях.

Балансировка пространства

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

Пример команды:

sudo btrfs balance start -dusage=50 -musage=50 /

Пояснение:

  • -dusage=50 — обрабатывать только данные, занятые менее чем на 50 %
  • -musage=50 — аналогично для метаданных
  • / — корневой подтом

Эту операцию можно выполнять, например, раз в пару месяцев, или когда метаданные занимают слишком много места.

Удаление старых снимков (snapshots)

Снимки занимают пространство, и если их много — свободное место может уменьшиться. Сначала получите список подтомов:

sudo btrfs subvolume list /

Затем удалите ненужный:

sudo btrfs subvolume delete /.snapshots/2024-10-10_18-00-00/snapshot

После удаления снимка стоит выполнить балансировку, чтобы освободившееся пространство эффективно перераспределилось.

Проверка использования места

Чтобы увидеть текущее использование пространства:

sudo btrfs filesystem df /

Команда покажет, сколько места занято данными, метаданными и зарезервировано системой. Если доля метаданных велика (например, выше 20–30 %), имеет смысл провести балансировку.

Проверка общей целостности файловой системы

Для “сухой” проверки без исправлений можно использовать:

sudo btrfs check --readonly /dev/sda2

Эта команда проверяет структуру файловой системы без внесения изменений. Если вы хотите исправить серьёзные ошибки, делать это стоит только в режиме Live-системы, когда раздел не смонтирован.

Практические советы

  • Запускайте scrub примерно раз в месяц — это помогает находить ошибки до того, как они станут проблемой.
  • Балансировку можно делать раз в 2–3 месяца или при необходимости.
  • Scrub не заменяет `fsck` — это проверка контрольных сумм, а не глубокая реставрация структуры.
  • Всегда проверяйте статус после выполнения операций (`scrub status`, `balance status`).

Ежемесячное обслуживание (вручную)

Если вы не автоматизируете обслуживание, достаточно выполнить три команды вручную:

sudo btrfs scrub start -Bd /
sudo btrfs balance start -dusage=50 -musage=50 /
sudo fstrim -av
  • `scrub` — проверяет целостность данных;
  • `balance` — перераспределяет данные;
  • `fstrim` — сообщает SSD/NVMe о неиспользуемых блоках, освобождая их для внутреннего управления.

Такая последовательность обеспечивает базовый уровень ухода за BTRFS.

Заключение

Регулярное обслуживание BTRFS похоже на плановое ТО автомобиля — немного внимания сейчас позволяет значительно снизить риск проблем и сохранить производительность системы. После нескольких таких циклов вы заметите, что файловая система остаётся “лёгкой” и устойчивой даже после месяцев активной работы.

← Назад: Оптимизация Вперёд: Автоматизация обслуживания →