BTRFS/Автоматизация обслуживания: различия между версиями
| Braumann (обсуждение | вклад)  Новая страница: «Если вы уже знаете, как проверять и обслуживать систему '''Btrfs''' вручную, то следующий логичный шаг — сделать это автоматически.   Linux умеет выполнять задания сам, по расписанию, и всё, что нужно — один небольшой скрипт и два конфигурационных файла.  = '''Авт...» | Braumann (обсуждение | вклад) мНет описания правки | ||
| Строка 192: | Строка 192: | ||
| Такое решение особенно полезно для ноутбуков и рабочих станций, которые часто остаются включёнными на ночь. | Такое решение особенно полезно для ноутбуков и рабочих станций, которые часто остаются включёнными на ночь. | ||
| {| style="width:100%; margin-top:1em; font-size:95%;" | |||
| | style="text-align:left;" | [[BTRFS/Обслуживание|← Назад: Обслуживание]] | |||
| |} | |||
Версия от 18:31, 30 октября 2025
Если вы уже знаете, как проверять и обслуживать систему 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 полностью автономна: она сама следит за своим здоровьем, проверяет и очищает диск, не требуя вашего участия. Такое решение особенно полезно для ноутбуков и рабочих станций, которые часто остаются включёнными на ночь.
| ← Назад: Обслуживание |