Jump to content

BTRFS/Автоматизация обслуживания

← Назад: Обслуживание

Опубликовано: 30.10.2025 • Обновлено: 11.01.2026

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

Если вы уже знаете, как обслуживать файловую систему BTRFS вручную, следующий логичный шаг — автоматизировать эти процессы. Linux умеет выполнять задачи по расписанию, и с помощью systemd это делается надёжно и прозрачно.

Автоматизация обслуживания

Автоматизация позволяет системе самостоятельно:

  • проверять целостность данных (scrub);
  • периодически перераспределять пространство (balance);
  • выполнять TRIM для SSD/NVMe (fstrim).

Пользователю больше не нужно помнить о регулярном обслуживании — всё выполняется в фоновом режиме.

Подготовка скрипта обслуживания

Создадим безопасный скрипт для регулярной проверки BTRFS.

sudo nano /usr/local/bin/btrfs-maintain.sh

Содержимое файла:

#!/bin/bash
set -e

# Проверка, что корень — BTRFS
if ! findmnt -n -o FSTYPE / | grep -q btrfs; then
    echo "Корневая файловая система не BTRFS, выход."
    exit 0
fi

# Проверка целостности данных
btrfs scrub start /

# TRIM (если не используется fstrim.timer)
fstrim -av || true

Сделайте файл исполняемым:

sudo chmod +x /usr/local/bin/btrfs-maintain.sh

systemd-сервис для scrub

Создайте сервис:

sudo nano /etc/systemd/system/btrfs-maintain.service

Содержимое:

[Unit]
Description=Регулярная проверка BTRFS (scrub)
Documentation=man:btrfs-scrub(8)

[Service]
Type=oneshot
ExecStart=/usr/local/bin/btrfs-maintain.sh

Таймер systemd (еженедельно)

sudo nano /etc/systemd/system/btrfs-maintain.timer
[Unit]
Description=Еженедельный scrub BTRFS

[Timer]
OnCalendar=weekly
Persistent=true

[Install]
WantedBy=timers.target

Активация:

sudo systemctl enable --now btrfs-maintain.timer

Проверка:

systemctl list-timers | grep btrfs

Балансировка (раз в месяц)

Балансировка — ресурсоёмкая операция, поэтому не должна выполняться часто.

Создайте отдельный сервис:

sudo nano /etc/systemd/system/btrfs-balance.service
[Unit]
Description=Месячная балансировка BTRFS
Documentation=man:btrfs-balance(8)

[Service]
Type=oneshot
ExecStart=/usr/bin/btrfs balance start -dusage=50 -musage=50 /

Таймер:

sudo nano /etc/systemd/system/btrfs-balance.timer
[Unit]
Description=Месячная балансировка BTRFS

[Timer]
OnCalendar=monthly
Persistent=true

[Install]
WantedBy=timers.target

Активация:

sudo systemctl enable --now btrfs-balance.timer

Проверка журналов

sudo journalctl -u btrfs-maintain.service
sudo journalctl -u btrfs-balance.service

Альтернатива: cron (для старых систем)

Если systemd недоступен, можно использовать cron:

sudo crontab -e
@weekly  /usr/local/bin/btrfs-maintain.sh
@monthly /usr/bin/btrfs balance start -dusage=50 -musage=50 /

Практические рекомендации

  • Scrub — раз в неделю или месяц.
  • Balance — не чаще одного раза в 1–2 месяца.
  • Если включён `fstrim.timer`, запуск `fstrim` из скрипта не требуется.
  • Не запускайте баланс без параметров `dusage/musage`.

Заключение

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

← Назад: Обслуживание