TrueNAS пулы: создание, настройка ZFS, RAIDZ, управление хранилищем | AdminWiki

TrueNAS пулы: Полное руководство по созданию, настройке и управлению ZFS-хранилищем

07 января 2026 8 мин. чтения #devops #raidz #truenas #vdev #zfs #настройка #пулы #хранилище

Представь, что ты строишь фундамент для своего цифрового дома — хранилища данных. В TrueNAS этот фундамент называется пулом (pool). Это не просто набор дисков, а интеллектуальная, самовосстанавливающаяся структура на базе файловой системы ZFS. Давай разберем, как правильно проектировать, создавать и управлять пулами в TrueNAS, чтобы твои данные были в безопасности, а производительность — на высоте.

Что такое TrueNAS пул и из чего он состоит?

Пул (ZFS pool) — это основная единица хранения в TrueNAS. Он объединяет физические диски в логические группы, называемые vdev (virtual device). Именно vdev определяют уровень отказоустойчивости и производительности всего пула.

Ключевая концепция: Пул = Сумма всех vdev. Если выйдет из строя один vdev — погибнет весь пул. Поэтому проектирование 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 при двух сломавшихся дисках в разных группах).
Рекомендация ментора: Для медиа-хранилища выбирай RAIDZ2 из 6 дисков. Надежность важнее, а производительности на чтение хватит с запасом.

Шаг 2: Создание через Web UI

  1. Зайди в Storage → Pools и нажми "Add" → "Create new pool".
  2. Присвой пулу имя (например, media_pool).
  3. В разделе "Data VDevs" нажми "Add VDev", выбери тип RAIDZ2.
  4. Перетащи все 6 дисков в слоты vdev. Убедись, что это не загрузочные диски!
  5. Важно: Оставь опцию "Metadata" пустой для обычного пула. Для специальных задач (кеширование) можно добавить отдельные vdev типа Special (для метаданных) или Cache (L2ARC).
  6. Нажми "Create". Система предупредит о потере данных на дисках — подтверди.

Шаг 3: Настройка параметров пула (опционально, но важно)

После создания зайди в свойства пула (кнопка ⋮ → Edit Options):

config
# Пример настроек для медиа-хранилища:
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. Это частая "боль" новичков.
bash
# CLI команда для добавления нового vdev к пулу 'media_pool'
# (делается через Web UI, но для понимания):
zpool add media_pool raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd

# Проверяем статус:
zpool status media_pool
Осторожно! Не добавляй single-disk vdev (без избыточности) к пулу с важными данными. Это создаст "точку отказа".

Мониторинг и обслуживание пулов

Создать пул — полдела. За ним нужно следить.

Ключевые команды мониторинга

bash
# 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, баз данных).
Важно: Special VDEV и SLOG должны быть избыточными (mirror)! Потеря такого vdev ведет к потере всего пула.

Частые ошибки и как их избежать

  • "Солянка" из дисков разного размера: В 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.

Итог от ментора: TrueNAS пулы — это мощный, но требовательный инструмент. Правильно спроектированный пул с RAIDZ2, регулярным скрабом и мониторингом будет служить годами. Начинай с простых конфигураций, тестируй восстановление на виртуальной машине, и только потом разворачивай на "боевом" железе. ZFS прощает многие ошибки, но не все.
Поделиться:
Сохранить гайд? В закладки браузера