Представь, что ты строишь фундамент для своего цифрового дома — хранилища данных. В TrueNAS этот фундамент называется пулом (pool). Это не просто набор дисков, а интеллектуальная, самовосстанавливающаяся структура на базе файловой системы ZFS. Давай разберем, как правильно проектировать, создавать и управлять пулами в TrueNAS, чтобы твои данные были в безопасности, а производительность — на высоте.
Что такое TrueNAS пул и из чего он состоит?
Пул (ZFS pool) — это основная единица хранения в TrueNAS. Он объединяет физические диски в логические группы, называемые vdev (virtual device). Именно vdev определяют уровень отказоустойчивости и производительности всего пула.
Типы vdev для пулов TrueNAS
Выбор типа vdev — это выбор компромисса между объемом, производительностью и надежностью.
| Тип vdev | Минимум дисков | Отказоустойчивость | Эффективный объем | Использование |
|---|---|---|---|---|
| RAIDZ1 (аналог RAID 5) | 3 | 1 диск | N-1 | Домашнее использование, не критичные данные |
| RAIDZ2 (аналог RAID 6) | 4 | 2 диска | N-2 | Производство, важные данные, медиа-хранилища |
| RAIDZ3 | 5 | 3 диска | N-3 | Архивы, максимальная надежность |
| Mirror (аналог RAID 1) | 2 | N-1 (в группе) | 1/N | Высокая производительность, малые пулы, загрузочные диски |
| Stripe (без избыточности) | 1 | 0 (опасно!) | N | Временные данные, кэш (L2ARC, SLOG) |
Пошаговое создание пула в TrueNAS
Давай создадим пул через веб-интерфейс TrueNAS Scale (принципы одинаковы для Core). Представим, у нас есть 6 дисков по 4 ТБ для медиа-хранилища.
Шаг 1: Планирование структуры
Для 6 дисков оптимально:
- Вариант A: Один vdev типа RAIDZ2 из 6 дисков. Эффективный объем: (6-2)*4ТБ = 16 ТБ. Переживет отказ любых 2 дисков.
- Вариант B: Два vdev по 3 диска в RAIDZ1. Эффективный объем: 2*(3-1)*4ТБ = 16 ТБ. Выше производительность на запись, но отказоустойчивость хуже (потеря одного vdev при двух сломавшихся дисках в разных группах).
Шаг 2: Создание через Web UI
- Зайди в Storage → Pools и нажми "Add" → "Create new pool".
- Присвой пулу имя (например,
media_pool). - В разделе "Data VDevs" нажми "Add VDev", выбери тип RAIDZ2.
- Перетащи все 6 дисков в слоты vdev. Убедись, что это не загрузочные диски!
- Важно: Оставь опцию "Metadata" пустой для обычного пула. Для специальных задач (кеширование) можно добавить отдельные vdev типа Special (для метаданных) или Cache (L2ARC).
- Нажми "Create". Система предупредит о потере данных на дисках — подтверди.
Шаг 3: Настройка параметров пула (опционально, но важно)
После создания зайди в свойства пула (кнопка ⋮ → Edit Options):
# Пример настроек для медиа-хранилища:
Compression: lz4 # Включаем сжатие (почти бесплатно по CPU)
Record Size: 1M # Для больших файлов (видео)
Sync: Standard # Для производительности
Deduplication: Off # Включай ТОЛЬКО если точно знаешь зачем (ест RAM)
Read-only: Off
Spare disks: None # Горячие spare-диски можно добавить позже
Расширение пула: как добавить диски правильно
В ZFS есть два основных способа расширения:
- Добавление нового vdev в существующий пул — самый частый и безопасный способ. Купил 4 новых диска → создал из них RAIDZ2 vdev → добавил к пулу. Объём пула увеличится на объём нового vdev.
- Расширение существующего vdev — НЕВОЗМОЖНО в классическом ZFS. Нельзя добавить диск в уже созданный RAIDZ1/2/3. Это частая "боль" новичков.
# CLI команда для добавления нового vdev к пулу 'media_pool'
# (делается через Web UI, но для понимания):
zpool add media_pool raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd
# Проверяем статус:
zpool status media_pool
Мониторинг и обслуживание пулов
Создать пул — полдела. За ним нужно следить.
Ключевые команды мониторинга
# 1. Статус пула и vdev (первая команда при любых проблемах)
zpool status -x
# 2. Проверка целостности данных (scrub)
# Запускается автоматически по расписанию, но можно вручную:
zpool scrub media_pool
# 3. Статистика в реальном времени
iostat -x 1
# 4. Просмотр использования дискового пространства
zpool list
# 5. Детальная информация о пуле
zpool get all media_pool
Настройка автоматического скраба (Scrub)
Scrub — это профилактическая проверка всех данных на целостность. В TrueNAS по умолчанию настроен на воскресенье. Проверь:
- Storage → Pools → Scrub Tasks
- Рекомендуемая частота: раз в 1-2 недели
- Лучше ставить на время минимальной нагрузки (ночь)
Продвинутые сценарии: Special VDEV и кэширование
Для оптимизации производительности в пулы можно добавлять специальные vdev:
- Special VDEV (метаданные): Размещается на быстрых SSD (NVMe). Ускоряет операции с метаданными (поиск файлов, список директорий). Добавляется при создании пула или позже командой
zpool add pool special mirror /dev/nvme0n1 /dev/nvme0n2. - Cache (L2ARC): Кэш второго уровня на SSD для "горячих" данных. Добавляется динамически:
zpool add pool cache /dev/ssd1. - SLOG (ZIL): Separate Intent Log — быстрый SSD для синхронных записов (важно для NFS, iSCSI, баз данных).
Частые ошибки и как их избежать
- "Солянка" из дисков разного размера: В RAIDZ используется размер наименьшего диска. Диск 4ТБ + 6ТБ = 4ТБ эффективно с каждого.
- Отсутствие регулярных скрабов: Тихая порча данных (bit rot) может накапливаться месяцами.
- Игнорирование SMART-тестов: Настрой еженедельные SMART-тесты для предсказания выхода дисков из строя.
- Заполнение пула под завязку (>80%): Производительность ZFS падает экспоненциально при заполнении. Держи запас 15-20%.
FAQ: Ответы на частые вопросы о TrueNAS пулах
Можно ли изменить тип RAIDZ1 на RAIDZ2 без потери данных?
Нет, напрямую нельзя. Но есть обходной путь: создать новый пул с нужной конфигурацией, перенести данные (через репликацию ZFS или rsync), затем переключиться на новый пул. Требует дополнительных дисков.
Сколько RAM нужно для пула с дедупликацией?
Очень много. Примерное правило: 5 ГБ RAM на 1 ТБ данных + запас. Для 20 ТБ с дедупликацией может потребоваться 100+ ГБ RAM. Для большинства случаев достаточно сжатия (lz4).
Что делать, если диск в vdev вышел из строя?
1. Замени физический диск. 2. В веб-интерфейсе зайди в Storage → Pools → Status. 3. Найди неисправный диск и выбери "Replace". 4. Укажи новый диск. ZFS автоматически перестроит данные. Если это RAIDZ1 и сломался второй диск до окончания восстановления — данные потеряны.
Можно ли использовать пулы TrueNAS с Docker/Kubernetes?
Да, особенно в TrueNAS Scale. Создай Dataset в пуле, затем настрой его как storage class в Kubernetes через TrueNAS CSI driver или как bind mount в Docker. Прямой доступ из контейнеров к данным на ZFS.