Создание датасетов
# Создать файловую систему
# Создать zvol (виртуальный диск) размером 100 ГБ
# Создать zvol с блочным размером 16K (для ВМ часто лучше 16K)

Управление свойствами (квоты, резервы, размер)
# Квота для ФАЙЛОВОЙ СИСТЕМЫ (жёсткий лимит)
Код: Выделить всё
zfs set quota=200G ssd_big/backup-gitygg
# Refquota — лимит без учёта снапшотов и дочерних датасетов
zfs set refquota=200G ssd_big/backup-gitygg
# Резервирование места (гарантия, что место не заберут другие)
zfs set reservation=50G ssd_big/backup-gitygg
# Для ZVOL: изменить размер диска (volsize — это и есть лимит)
zfs set volsize=180G ssd_small/gitygg
# Для ZVOL: гарантировать место в пуле (защита от thin-provisioning)
zfs set refreservation=180G ssd_small/gitygg
# Убрать квоту/резерв
zfs set quota=none ssd_big/backup-gitygg
zfs set refreservation=none ssd_small/gitygg
# Узнать текущие лимиты
zfs get quota,refquota,reservation,refreservation ssd_big/backup-gitygg
Снапшоты (главный источник «неожиданного» роста)
Код: Выделить всё
# Создать снапшот
zfs snapshot ssd_small/gitygg@before-update
# Создать рекурсивно (снапшот + все дочерние)
zfs snapshot -r ssd_small@daily-2026-10-20
# Список снапшотов с размером
zfs list -t snapshot -o name,used,creation
# Удалить снапшот
zfs destroy ssd_small/gitygg@before-update
# Удалить все снапшоты датасета (осторожно!)
zfs destroy -r ssd_small/gitygg@%
# Откатить датасет к снапшоту (уничтожит изменения после него)
zfs rollback ssd_small/gitygg@before-update
# Клонировать снапшот в новый датасет
zfs clone ssd_small/gitygg@before-update ssd_small/gitygg-test
Переименование и удаление
Код: Выделить всё
# Переименовать датасет
zfs rename ssd_small/oldname ssd_small/newname
# Удалить датасет (осторожно — уничтожает данные!)
zfs destroy ssd_small/gitygg
# Удалить рекурсивно (с дочерними)
zfs destroy -r ssd_small/gitygg
Обслуживание пула
Код: Выделить всё
# Запустить scrub (проверка целостности, делать регулярно)
zpool scrub ssd_small
# Посмотреть прогресс scrub
zpool status ssd_small
# Остановить scrub
zpool scrub -s ssd_small
Диагностика проблем
Код: Выделить всё
# Кто съедает место в пуле (по датасетам, включая снапшоты)
zfs list -t all -o name,used,refer -s used
# Топ датасетов по занятому месту
zfs list -t all -o name,used -s used | tail -20
# Найти самые большие снапшоты
zfs list -t snapshot -o name,used -s used | tail -20
# Проверить, не заполнен ли пул критически
zpool list -o name,size,alloc,free,cap
# Проверить наличие ошибок на дисках
zpool status -x
Минимальный «дежурный» набор
Если запомнить только 10 команд, то это:
Код: Выделить всё
zpool list # состояние пулов
zpool status # здоровье пулов
zfs list -t all -o name,type,used,avail # все датасеты с типом
zfs get type,volsize <dataset> # что это и какой размер
zfs get quota,refquota,reservation <dataset> # лимиты
zfs set quota=... <filesystem> # квота для ФС
zfs set volsize=... <zvol> # размер для zvol
zfs list -t snapshot -o name,used # снапшоты и их вес
zfs snapshot <dataset>@<name> # создать снапшот
zfs destroy <dataset>@<name> # удалить снапшот
Опасные команды (использовать осознанно)
Команда Чем опасна
zfs destroy Уничтожает данные безвозвратно (без снапшота)
zfs set volsize=<меньше> Уменьшение zvol может повредить ФС внутри ВМ
zfs rollback Откатывает и удаляет все изменения после снапшота
zfs destroy -r Рекурсивно уничтожает всё, включая дочерние датасеты
zpool scrub -s Прерывает проверку целостности — лучше дождаться