openSUSE openSUSE

openSUSE: диск заполнен снимками Btrfs (snapper)

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

openSUSE по умолчанию создаёт снимки Btrfs, и они занимают место. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Очистка
  6. Балансировка и профилактика

#Что означает ошибка

Сообщение
No space left on device на Btrfs при свободных гигабайтах

В openSUSE корневой раздел на Btrfs хранит снимки Snapper, поэтому диск может заполняться, хотя df показывает странные цифры. Накопленные снимки (особенно после обновлений zypper dup) и данные в @/var приводят к ошибке No space left on device. Ключевая проблема — метаданные и снимки, а не обычные файлы.

Сначала узнайте реальное распределение места Btrfs.

Затем удалите ненужные снимки.

openSUSE по умолчанию создаёт снимки Btrfs, и они занимают место. Удалите старые снимки и настройте лимиты snapper.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Много снимковSnapper.Удалите старые.
Не сбалансирован BtrfsМетаданные.btrfs balance.
КвотыЛимиты.Проверьте.
Заполнен /varЖурналы.Очистите.

#Пошаговое решение

  1. Проверьте btrfs filesystem usage /В терминале openSUSE запустите sudo btrfs filesystem usage / и прочитайте строки «Device size», «Device allocated», «Used» и «Free (estimated)». Если отдельный корневой раздел использует Btrfs и свободное место почти исчерпано, снимки Snapper могут влиять на занятую ёмкость, но не обязательно являются единственной причиной. Дополнительно выполните df -h / и проверьте журналы и домашние каталоги. Перед удалением снимков сделайте резервную копию нужных данных.
  2. Посмотрите список снимковОткройте терминал и выполните sudo snapper list. Посмотрите номера, даты, типы (single/pre/post) и описания снимков. Запишите номера, которые потенциально устарели, и убедитесь, что для отката после последнего обновления остаются подходящие снимки. Нельзя удалять снимок по одному лишь размеру или номеру: некоторые снимки связаны парами и могут быть нужны для восстановления.
  3. Удалите старые снимкиЕсли используется Btrfs со Snapper, сначала выполните sudo snapper list и проверьте, какой каталог/.snapshots занимает место через btrfs filesystem usage /. Не удаляйте текущий или загрузочный снимок и не запускайте массовое удаление: сначала убедитесь в резервной копии и правилах автоматической очистки. При необходимости удаляйте только точно выбранные старые снимки по инструкции именно вашей конфигурации Snapper.
  4. Запустите cleanupПроверьте расписание очистки sudo systemctl status snapper-cleanup.timer и настройки Snapper sudo snapper get-config. Если автоматическая очистка предусмотрена, администратор может инициировать sudo snapper cleanup number и затем sudo snapper cleanup timeline, но только после просмотра списка и резервной копии. Дождитесь завершения и снова выполните sudo btrfs filesystem usage /. Не запускайте массовое удаление всех снимков: система может потерять точки отката.
  5. Выполните balance с малым usageBtrfs balance изменяет размещение блоков и при недостатке места или ошибках диска может усугубить ситуацию. Сначала сделайте резервную копию, проверьте sudo btrfs filesystem usage / и журнал ошибок. Только при подтверждённом перекосе метаданных используйте ограниченную балансировку с низким -dusage/-musage по инструкции Btrfs; если диск выдаёт I/O errors, балансировку не запускайте.
  6. Снимки и распределение места Btrfs
    Linux · Терминал (Bash)КомандаНужен sudo
    Снимки и распределение места Btrfs.
    sudo snapper list
    sudo btrfs filesystem df /

#Диагностика

Для Btrfs используйте свои команды: sudo btrfs filesystem usage / (показывает Data, Metadata, Unallocated), sudo btrfs filesystem df /. Список снимков: sudo snapper list. Занятое место: sudo btrfs filesystem du -s /.snapshots (медленно) или sudo btrfs qgroup show -pcre /, если квоты включены. Если Unallocated почти нет, а метаданные заполнены, нужна балансировка.

#Очистка

Удалите старые снимки: sudo snapper delete 120-150 (диапазон номеров) или sudo snapper delete НОМЕР. Принудительно запустите очистку по правилам: sudo snapper cleanup number и sudo snapper cleanup timeline. Настройте лимиты в /etc/snapper/configs/root: NUMBER_LIMIT="5", NUMBER_LIMIT_IMPORTANT="3", TIMELINE_LIMIT_DAILY="3". Очистите кэш и журналы: sudo zypper clean -a, sudo journalctl --vacuum-size=200M.

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

Освободите выделенные, но почти пустые блоки: sudo btrfs balance start -dusage=10 / (затем -dusage=50) и -musage=20. Операция может идти долго, не прерывайте. Включите сервис регулярной балансировки: sudo systemctl enable --now btrfs-balance.timer (если есть) или используйте btrfsmaintenance. Выделите достаточный размер: корень 40 ГБ и больше. Отключите снимки для каталогов с частыми изменениями (виртуальные машины): chattr +C для новых файлов.

Linux · Терминал (Bash)КомандаНужен sudo
Только диагностика Btrfs и снимков Snapper. snapper cleanup number удаляет снимки, а btrfs balance перемещает экстенты: не запускайте их в составе общего блока без резервной копии, свободного пространства и выбора правильного раздела.
sudo btrfs filesystem usage /
sudo snapper list
sudo snapper get-config

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.