Вопрос или проблема
После обновления на Ubuntu я получаю предупреждение о своей файловой системе ZFS. Есть ли утилита или скрипт, которые я могу использовать для удаления старых снимков? Вот сообщение:
ОШИБКА не удалось сохранить состояние системы: Минимальное свободное место для создания снимка и поддержания производительности ZFS составляет 20%.
Свободное место в пуле "rpool" составляет 10%.
Пожалуйста, удалите некоторое состояние вручную, чтобы освободить место.
Используйте zfs-prune-snapshots,
описанный как:
Удаляет снимки из одного или нескольких zpools, которые соответствуют заданным критериям
Пример из документации:
Удалить снимки старше недели для всех zpools
zfs-prune-snapshots 1w
То же самое, но с увеличенной подробностью и без фактического
удаления каких-либо снимков (пробный запуск)zfs-prune-snapshots -vn 1w
Вы можете найти больше методов в посте
Как удалить все, кроме последних [n] ZFS снимков?
Если вы хотите сделать это без оболочных скриптов, таких как zfs-prune-snapshots
, зная, что вы можете сделать следующее, может быть достаточно в зависимости от вашего варианта использования:
“Удалить snapshot
и все предыдущие снимки”
zfs destroy mypool/data@%snapshot
“Удалить snapshot
и все поздние снимки”
zfs destroy mypool/data@snapshot%
“Удалить все снимки”
zfs destroy mypool/data@%
Используйте флаг -n
и -v
для пробного запуска сначала. Пример:
zfs destroy -nv zroot/home@2024-10-16%
удалит zroot/home@2024-10-16
удалит zroot/home@2024-10-21
освободит 272M
Чтобы еще раз прояснить: целевой снимок также будет удален. Внимательно прочитайте вывод пробного запуска.
Ответ или решение
Для решения проблемы с заполнением пространства на файловой системе ZFS и ошибкой, связанной с недостатком свободного места, необходимо удалить старые снимки. Существуют несколько способов достижения этой цели с использованием различных инструментов и команд. Ниже приведены наиболее эффективные методы.
1. Утилита zfs-prune-snapshots
Одним из лучших подходов является использование утилиты zfs-prune-snapshots. Эта утилита предназначена для удаления снимков, соответствующих заданным критериям, и позволяет удобно управлять вашим хранилищем ZFS.
Пример использования:
-
Удаление снимков старше одной недели:
zfs-prune-snapshots 1w
-
Выполнение симуляции (dry-run) для проверки, какие снимки будут удалены:
zfs-prune-snapshots -vn 1w
2. Удаление снимков с помощью команды zfs
Если вы предпочитаете не использовать сторонние утилиты, вы можете воспользоваться встроенными командами ZFS для удаления снимков. Ниже приведены основные команды:
-
Удаление конкретного снимка и всех более старых снимков:
zfs destroy mypool/data@%snapshot
-
Удаление конкретного снимка и всех более новых снимков:
zfs destroy mypool/data@snapshot%
-
Удаление всех снимков для определённого пула:
zfs destroy mypool/data@%
Рекомендации перед удалением:
Перед выполнением удаления снимков рекомендуется выполнять команду с опциями -n
(симуляция) и -v
(подробный вывод), чтобы удостовериться в том, какие именно снимки будут удалены. Например:
zfs destroy -nv zroot/home@2024-10-16%
Вывод этой команды предоставит вам информацию о том, какие снимки будут удалены, и сколько пространства будет освобождено.
3. ЧисткаSnapshots
Для более глубокой настройки удаления старых снимков можете обратиться к рекомендациям и скриптам, доступным в других источниках. Данный подход позволяет вам детально настраивать условия удаления снимков, основываясь на времени или других параметрах.
Заключение
Очистка старых снимков ZFS – важный процесс для поддержания работоспособности вашей системы и избегания ошибок, связанных с недостатком пространства. Независимо от выбранного вами метода, уверенно проверяйте выводы команд перед фактическим удалением, чтобы избежать потери необходимых снимков. Со временем, регулярное управление снимками поможет поддерживать систему в оптимальном состоянии и повысит общую производительность.
Соблюдайте эти рекомендации, и ваша файловая система ZFS будет оставаться продуктивной и эффективной.