Что такое снимки ZFS и зачем они нужны
Снимки (snapshots) в TrueNAS — это не просто резервные копии файлов. Это копии метаданных файловой системы ZFS на конкретный момент времени. Они работают по принципу copy-on-write: когда ты изменяешь файл, система сохраняет оригинальные блоки данных, а не перезаписывает их.
Ключевые преимущества снимков TrueNAS:
- Мгновенное создание — снимок делается за секунды
- Экономия места — хранятся только изменения
- Восстановление файлов — можно откатить отдельные файлы или весь dataset
- Автоматизация — настраиваются по расписанию через задачи (Tasks)
- Клонирование — создание работающих копий из снимков
Создание снимков через веб-интерфейс TrueNAS
Самый простой способ создать моментальный снимок — через графический интерфейс. Давай пройдем по шагам:
1. Откройте Storage → Snapshots
2. Нажмите "ADD" в правом верхнем углу
3. Выберите dataset или zvol из выпадающего списка
4. Укажите имя снимка (можно добавить дату)
5. Нажмите "SUBMIT"
Автоматизация снимков через задачи (Tasks)
Ручное создание snapshots — не наш метод. Настроим автоматические снимки по расписанию:
1. Перейдите в Tasks → Periodic Snapshot Tasks
2. Нажмите "ADD"
3. Настройте параметры:
- Dataset: выбери целевой dataset
- Schedule: настрой расписание (ежечасно, ежедневно и т.д.)
- Lifetime: сколько хранить снимок (например, 2 недели)
- Naming Schema: автоматическое именование
Работа со снимками через командную строку
Как Senior DevOps, ты должен уметь работать через CLI. Вот основные команды для управления снимками:
# Создание снимка
zfs snapshot pool/dataset@snapshot_name
# Просмотр всех снимков
zfs list -t snapshot
# Удаление снимка
zfs destroy pool/dataset@snapshot_name
# Клонирование снимка в новый dataset
zfs clone pool/dataset@snapshot_name pool/new_dataset
# Восстановление dataset из снимка
zfs rollback pool/dataset@snapshot_name
Восстановление данных из снимков
Есть несколько способов восстановления данных. Выбирай подходящий для твоей ситуации:
| Метод | Когда использовать | Команда/Действие |
|---|---|---|
| Восстановление файлов через .zfs | Нужно вернуть несколько файлов | Скопировать из /.zfs/snapshot/snapshot_name/ |
| Клонирование снимка | Тестирование или безопасное восстановление | zfs clone pool/dataset@snapshot pool/clone |
| Полный откат (rollback) | Серьезные повреждения системы | zfs rollback pool/dataset@snapshot |
Практические примеры и сценарии
Пример 1: Защита от ransomware
Настрой частые снимки с долгим сроком хранения:
Периодичность: Каждый час
Хранение: 30 дней
Имя: auto-%Y-%m-%d_%H-%M
Рекурсивно: Да (включая все дочерние datasets)
Пример 2: Снимки перед обновлением ПО
Создай ручной снимок перед критическими изменениями:
# Перед обновлением TrueNAS
zfs snapshot pool/system@before-update-$(date +%Y%m%d)
# Если что-то пошло не так
zfs rollback pool/system@before-update-20231215
Оптимизация и лучшие практики
- Используй рекурсивные снимки для консистентности связанных datasets
- Настрой квоты чтобы снимки не заполнили весь пул
- Экспортируй снимки на другой сервер для дополнительной защиты
- Мониторь использование пространства командой
zfs list -o space - Тестируй восстановление регулярно — снимки бесполезны, если ты не умеешь их использовать
Частые вопросы (FAQ)
Как удалить старые снимки?
Через веб-интерфейс: Storage → Snapshots → выбери снимки → Delete. Через CLI: zfs destroy pool/dataset@old_snapshot
Можно ли перемещать снимки между системами?
Да, через команду zfs send и zfs receive. Это основа репликации данных между серверами.
Снимки влияют на производительность?
Минимально. Создание — почти мгновенно. Чтение из снимков может быть немного медленнее при большом количестве изменений.
Как восстановить удаленный файл через .zfs?
Включи отображение скрытой папки .zfs в настройках SMB/NFS, или подключись по SSH и скопируй файл: cp /.zfs/snapshot/snapshot_name/path/to/file ./