Jump to content

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

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

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

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

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

Для начала стоит посмотреть, всё ли хорошо с диском и нет ли ошибок ввода-вывода.

sudo btrfs device stats /

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

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

"Scrub" в Btrfs — это полная проверка данных на диске с исправлением обнаруженных несоответствий. Она проверяет контрольные суммы и, при возможности, восстанавливает повреждённые блоки.

Чтобы запустить scrub вручную:

sudo btrfs scrub start -Bd /

Расшифровка:

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

Проверка может занять от нескольких минут до часа, в зависимости от объёма данных и скорости диска.

Чтобы узнать прогресс во время выполнения, можно выполнить:

sudo btrfs scrub status /

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

Со временем распределение данных на Btrfs может стать неравномерным. Это снижает эффективность и может приводить к ошибкам “недостаточно места”, даже если место есть. Для исправления этого используется балансировка:

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

Пояснение:

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

Эта операция безопасна и не требует перезагрузки. Выполнять её достаточно раз в пару месяцев.

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

Снимки Btrfs — отличная вещь, но они занимают место. Если вы используете, например, Timeshift, то старые снимки можно удалить вручную:

Сначала посмотрите список подтомов:

sudo btrfs subvolume list /

Найдите ненужный снимок (обычно что-то вроде `.snapshots/2024-10-10_18-00-00/snapshot`) и удалите его:

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

После удаления освободившееся место можно вернуть в систему командой балансировки.

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

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

sudo btrfs filesystem df /

Команда показывает, сколько места занято данными, метаданными и резервами. Если метаданные занимают больше 20–30 % — это сигнал, что стоит выполнить балансировку.

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

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

sudo btrfs check --readonly /dev/sda2

Эта команда выполняет "сухую" проверку, не изменяя данные. Используйте её, если хотите убедиться, что файловая система в порядке, но не готовы вносить правки.

Важно: если вы хотите исправить ошибки, не используйте `--readonly`, но только в режиме Live-системы, чтобы диск не был смонтирован.

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

  • Запускайте scrub примерно раз в месяц. Это помогает находить ошибки до того, как они станут проблемой.
  • Балансировку можно делать раз в 2–3 месяца.
  • Проверку `btrfs check` стоит проводить только при подозрении на сбои или после аварийного выключения.
  • Не злоупотребляйте “полной” балансировкой — это тяжёлая операция, лучше ограничиваться параметрами `-dusage` и `-musage`.

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

Если вы не хотите автоматизировать процессы (об этом — в следующей статье), можно просто выполнять три команды вручную:

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

Заключение

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

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