Jump to content

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

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

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

Автоматизация — это когда система сама:

  • проверяет файловую систему (scrub),
  • балансирует данные (balance),
  • очищает свободное место на SSD (fstrim).

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

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

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

Откройте терминал и создайте файл:

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

Вставьте туда следующий код:

#!/bin/bash
# Еженедельное обслуживание Btrfs
btrfs scrub start -Bd /
btrfs balance start -dusage=50 -musage=50 /
fstrim -av

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

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

Пояснение:

  • #!/bin/bash — сообщает системе, что это скрипт Bash.
  • btrfs scrub start -Bd / — проверяет целостность данных.
  • btrfs balance start -dusage=50 -musage=50 / — перераспределяет данные и метаданные.
  • fstrim -av — очищает неиспользуемые блоки SSD (аналог TRIM).

Теперь у нас есть готовый инструмент обслуживания.

Создание systemd-сервиса

Чтобы Linux понимал, как запускать наш скрипт, нужно создать сервис.

Создайте файл:

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

Добавьте в него:

[Unit]
Description=Еженедельное обслуживание Btrfs
Documentation=man:btrfs(8)

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

Что это значит:

  • `[Unit]` — описание задачи, которое видит systemd.
  • `[Service]` — сам сервис.
 Тип `oneshot` означает, что команда запускается один раз и завершается.

Создание таймера systemd

Теперь создадим "будильник", который будет запускать сервис каждую неделю.

Откройте новый файл:

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

Вставьте туда:

[Unit]
Description=Таймер для еженедельного обслуживания Btrfs

[Timer]
OnCalendar=weekly
Persistent=true

[Install]
WantedBy=timers.target

Объяснение параметров:

  • `OnCalendar=weekly` — запускать каждую неделю (по умолчанию — по понедельникам).
  • `Persistent=true` — если компьютер был выключен в момент запуска, задание выполнится при следующем включении.

Активация таймера

Включаем наш таймер:

sudo systemctl enable --now btrfs-maintain.timer

Теперь система будет автоматически запускать обслуживание каждую неделю.

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

systemctl list-timers | grep btrfs

Вы увидите строчку примерно такую:

btrfs-maintain.timer  loaded active waiting  Mon 2025-11-03 00:00:00 MSK  Mon 2025-10-27 00:00:00 MSK

Это значит, что всё настроено, и таймер запланирован.

Проверка работы вручную

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

sudo systemctl start btrfs-maintain.service

После завершения команд можно просмотреть журнал:

sudo journalctl -u btrfs-maintain.service

Отключение или изменение расписания

Если вы хотите изменить расписание, откройте файл `/etc/systemd/system/btrfs-maintain.timer` и замените строку:

OnCalendar=weekly

на, например:

  • `OnCalendar=daily` — ежедневно;
  • `OnCalendar=monthly` — раз в месяц;
  • `OnCalendar=Sun 03:00` — каждое воскресенье в 3 утра.

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

sudo systemctl daemon-reload
sudo systemctl restart btrfs-maintain.timer

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

Если по какой-то причине systemd-таймеры недоступны, можно использовать старый способ — cron.

Создайте задачу:

sudo crontab -e

Добавьте строку:

@weekly /usr/local/bin/btrfs-maintain.sh

Это даст тот же эффект, но без systemd.

Проверка результата

Через неделю можно посмотреть, как прошла последняя операция scrub:

sudo btrfs scrub status /

Если видите "no errors found", всё отлично — автоматическое обслуживание работает.

Заключение

Теперь ваша система Btrfs полностью автономна: она сама следит за своим здоровьем, проверяет и очищает диск, не требуя вашего участия. Такое решение особенно полезно для ноутбуков и рабочих станций, которые часто остаются включёнными на ночь.

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