Представь, что твоя система хранения — это большой шкаф с ящиками. TrueNAS Dataset — это умный, настраиваемый ящик в этом шкафу (пуле ZFS), где ты хранишь данные с особыми правилами: сжатие, снапшоты, квоты. Давай разберем, как создавать и управлять этими ящиками профессионально.
Что такое Dataset в TrueNAS и ZFS?
В иерархии ZFS Dataset — это файловая система или том (zvol), созданный внутри пула (zpool). Это не просто папка, а самостоятельный объект с собственными свойствами ZFS. Основные типы:
- Файловая система (Filesystem) — для хранения файлов и папок (SMB/NFS).
- Том (ZVOL) — блочное устройство для iSCSI или виртуальных машин.
- Дочерний Dataset (Child) — наследует свойства родителя, но может их переопределить.
Создание Dataset: Пошаговое руководство
Давай создадим Dataset через веб-интерфейс TrueNAS SCALE/CORE и разберем каждую настройку.
Шаг 1: Навигация и базовое создание
- Зайди в Datasets в боковом меню.
- Выбери существующий пул или родительский Dataset.
- Нажми Add Dataset или Create Dataset.
- Заполни имя (например,
mediaилиvm_storage).
Шаг 2: Критичные настройки ZFS
Вот где начинается магия. Обрати внимание на эти параметры:
# Пример настроек для продвинутого Dataset
Тип: Filesystem
Имя: projects
Комментарий: Git репозитории и исходный код
--- Секция настроек ---
Case Sensitivity: Sensitive (для Linux)
Синхронные записи: Standard (для общего назначения)
Компрессия: lz4 (обязательно! экономит место и ускоряет)
Размер блока (Recordsize): 128K (для медиафайлов) или 16K (для БД)
Наследование ACL: Вкл
Квота: 500G (ограничение сверху)
Резервное пространство (Reservation): 100G (гарантированное место)
| Параметр | Рекомендация | Объяснение |
|---|---|---|
| Recordsize | 128K для медиа, 16K для VM/БД | Размер блока ZFS. Больше = лучше для последовательного чтения. |
| Compression | lz4 (всегда!) | Быстро, почти без нагрузки. Экономит место на тексте, логах. |
| Atime | Off | Не обновлять время доступа. Уменьшает нагрузку. |
| Quota | По необходимости | Жесткий лимит на Dataset. Refquota — лимит без учета снапшотов. |
Практика: Создаем Dataset для разных задач
Пример 1: Dataset для резервных копий (Backups)
Имя: backup
Тип: Filesystem
Компрессия: gzip-9 (максимальное сжатие, скорость не критична)
Recordsize: 128K
Квота (Quota): 2T
Включить снапшоты: Да
Периодичность снапшотов: ежедневно, хранение 30 дней
ACL Type: POSIX
Пример 2: Dataset для виртуальных машин (ZVOL)
Имя: proxmox_vms
Тип: Volume (ZVOL)
Размер тома: 500G
Блочный размер (Volblocksize): 16K (совпадает с блоком VM)
Синхронные записи: Always (data integrity для VM)
Компрессия: lz4
Резервирование (Reservation): 500G (гарантирует место)
Управление Dataset через CLI (продвинутый уровень)
Иногда веб-интерфейса недостаточно. Вот основные команды:
# Просмотр всех Dataset в пуле tank
zfs list -r tank
# Создание Dataset с параметрами
zfs create -o compression=lz4 -o recordsize=128K tank/media
# Установка квоты
zfs set quota=500G tank/projects
# Создание снапшота
zfs snapshot tank/media@$(date +%Y%m%d_%H%M)
# Клонирование Dataset из снапшота
zfs clone tank/media@snapshot_name tank/media_restored
# Просмотр свойств
zfs get all tank/media
# Изменение recordsize (только для пустых Dataset!)
zfs set recordsize=1M tank/media
Снапшоты и репликация Dataset
Снапшоты — суперсила ZFS. Они создаются моментально и занимают место только при изменении данных.
Настройка периодических снапшотов
- В веб-интерфейсе иди в Data Protection → Periodic Snapshot Tasks.
- Выбери целевой Dataset (например,
tank/media). - Настрой расписание: ежечасно, ежедневно, еженедельно.
- Укажи время жизни: 24 часа, 7 дней, 4 недели и т.д.
Репликация Dataset на другой TrueNAS
# Ручная репликация через zfs send/receive
zfs send -R tank/media@snapshot_name | \
ssh backup_nas "zfs receive backup_tank/media"
# В веб-интерфейсе:
# Data Protection → Replication Tasks
# Источник: tank/media
# Назначение: ssh://user@backup_nas/backup_tank/media
# Расписание: ежедневно в 02:00
Вопросы и ответы (FAQ)
В чем разница между Dataset и папкой?
Dataset — это отдельная файловая система ZFS со своими свойствами (компрессия, квоты, снапшоты). Папка — просто директория внутри Dataset. Dataset можно монтировать отдельно, реплицировать и настраивать независимо.
Как перенести данные между Dataset?
Используй rsync или mv в оболочке TrueNAS. Для больших объемов лучше создать снапшот, клонировать его, а затем перенести данные, чтобы сохранить историю изменений.
Можно ли изменить размер блока (recordsize) после создания?
Технически — да, командой zfs set recordsize=.... Но изменения коснутся только новых данных. Существующие блоки останутся прежнего размера. Для равномерной производительности лучше задавать правильный recordsize при создании.
Почему занято больше места, чем показывают квоты?
Скорее всего, не учитываются снапшоты. Quota ограничивает только «живые» данные. Используй refquota для ограничения без учета снапшотов. Или регулярно чисти старые снапшоты.
Какой тип ACL выбрать: POSIX или NFSv4?
POSIX — проще, совместим с Linux. NFSv4 — богаче (наследование, deny ACE), лучше для Windows (SMB) и сложных корпоративных сред. Для домашнего использования обычно хватает POSIX.
Заключение и лучшие практики
Давай закрепим главное:
- Создавай отдельные Dataset под разные типы данных: media, backups, VMs, appdata.
- Всегда включай компрессию lz4 — это бесплатный выигрыш.
- Настраивай recordsize/volblocksize под workload при создании.
- Используй квоты (quota/refquota) чтобы один Dataset не заполнил весь пул.
- Настрой автоматические снапшоты для важных данных.
- Планируй иерархию (родительские/дочерние Dataset) для удобного управления.
Помни: грамотно настроенный Dataset — это фундамент надежной и производительной системы хранения. Не бойся экспериментировать в тестовой среде, используй снапшоты перед крупными изменениями, и твоя TrueNAS будет работать как швейцарские часы.