Что такое пул ZFS и зачем он нужен?
Представь, что пул в TrueNAS — это фундамент твоей системы хранения. Это не просто набор дисков, а интеллектуальная структура ZFS, которая объединяет физические накопители в логический том с продвинутыми функциями: снапшоты, дедупликация, самовосстановление данных. Без правильно созданного пула невозможна работа ни одной службы TrueNAS.
Подготовка к созданию пула
Перед тем как начать создание пула в TrueNAS, убедись, что:
- Все диски обнаружены системой (Storage → Disks)
- У тебя есть план резервного копирования существующих данных
- Ты определился с типом RAID (или vdev в терминах ZFS)
- Понимаешь разницу между типами данных (Metadata, Dedup, Cache)
Выбор типа vdev: сравнительная таблица
| Тип vdev | Минимум дисков | Отказоустойчивость | Эффективная ёмкость | Рекомендация |
|---|---|---|---|---|
| Stripe | 1 | Нет | 100% | Только для тестов |
| Mirror | 2 | Высокая | 50% | Важные данные |
| RAIDZ1 | 3 | 1 диск | N-1 | Баланс цена/надёжность |
| RAIDZ2 | 4 | 2 диска | N-2 | Производственные системы |
Пошаговое создание пула в TrueNAS
Давай разберем процесс создания пула через веб-интерфейс TrueNAS Scale или Core:
Шаг 1: Инициализация дисков
Если диски новые или содержат старые данные, их нужно очистить:
# Просмотр всех дисков в системе
lsblk
# Очистка диска (ВНИМАНИЕ: стирает все данные!)
# Замени sdX на твой диск
sgdisk --zap-all /dev/sdX
# Для NVMe дисков
nvme format /dev/nvme0n1 -s 1
Шаг 2: Создание пула через веб-интерфейс
1. Перейди в Storage → Pools
2. Нажми "Add" → "Create new pool"
3. Придумай имя пула (например, "tank", "storage", "data")
4. Добавь диски в vdev. Пример для RAIDZ2 из 6 дисков:
Конфигурация:
- Тип данных: Standard
- Ширина RAIDZ: RAIDZ2 (двойная четность)
- Диски: 6× 4TB (эффективная ёмкость ~16TB)
- Шифрование: По желанию (GELI или Native ZFS)
Шаг 3: Дополнительные настройки пула
После выбора дисков настрой расширенные параметры:
- Compression: LZ4 (рекомендуется всегда)
- Checksum: SHA256 (по умолчанию)
- Enable atime: Off (улучшает производительность)
- Sync: Standard (для файловых серверов)
# Проверка созданного пула из командной строки
zpool status
# Детальная информация
zpool list
zfs list
Создание сетевой папки в TrueNAS
Теперь, когда пул создан, давай настроим создание сетевой папки, чтобы твои данные были доступны по сети.
Шаг 1: Создание набора данных (Dataset)
Dataset — это аналог раздела внутри пула. Создадим его для нашей сетевой папки:
# Через командную строку (альтернатива веб-интерфейсу)
zfs create tank/shared
zfs set compression=lz4 tank/shared
zfs set atime=off tank/shared
# Настройка квоты (если нужно)
zfs set quota=100G tank/shared
Через веб-интерфейс: Storage → Pools → выбери пул → "Add Dataset"
Шаг 2: Настройка прав доступа
Правильная настройка ACL критически важна для безопасности:
# Рекурсивная смена владельца
chown -R root:wheel /mnt/tank/shared
# Настройка прав (пример для SMB)
chmod -R 755 /mnt/tank/shared
# Просмотр ACL
getfacl /mnt/tank/shared
Шаг 3: Настройка SMB-шары (Windows/Mac)
1. Перейди в Sharing → Windows Shares (SMB)
2. Нажми "Add"
3. Заполни параметры:
Пример конфигурации SMB:
- Path: /mnt/tank/shared
- Name: SharedFolder (имя в сети)
- Purpose: No presets (ручная настройка)
- Enable ACL: Yes
- Allow Guest: No (для безопасности)
- Auxiliary Parameters: (дополнительные настройки smb.conf)
# Дополнительные параметры SMB (aux parameters)
# В поле "Auxiliary Parameters" веб-интерфейса
vfs objects = acl_xattr streams_xattr
map acl inherit = yes
store dos attributes = yes
# Ограничение по IP (пример)
hosts allow = 192.168.1.0/24
hosts deny = 0.0.0.0/0
Шаг 4: Настройка NFS-шары (Linux)
Для Unix-систем используй NFS:
# Через веб-интерфейс: Sharing → Unix Shares (NFS)
# Пример конфигурации:
# На стороне TrueNAS (NFS сервер)
# Path: /mnt/tank/shared
# Authorized Networks: 192.168.1.0/24
# Mapall User: root
# Mapall Group: wheel
# На стороне клиента Linux
sudo mount -t n4 192.168.1.100:/mnt/tank/shared /mnt/nas_shared
# Для автоматического монтирования в /etc/fstab
192.168.1.100:/mnt/tank/shared /mnt/nas_shared nfs defaults,_netdev 0 0
Оптимизация производительности
После создания пула и сетевой папки настрой систему для максимальной производительности:
# Настройка кэша L2ARC (если есть SSD)
zpool add tank cache nvme0n1
# Настройка журнала SLOG (для синхронных операций)
zpool add tank log nvme1n1
# Оптимизация записи
zfs set primarycache=all tank/shared
zfs set secondarycache=all tank/shared
zfs set logbias=latency tank/shared
Мониторинг и обслуживание
Регулярно проверяй состояние пула:
# Ежедневные проверки
zpool status -x
zpool iostat -v 5 # Обновление каждые 5 секунд
# Проверка целостности данных (раз в месяц)
zpool scrub tank
# Просмотр ошибок
zpool events -v
# Статистика производительности
arc_summary # Для ARC кэша
Частые проблемы и решения
Проблема 1: Диски не отображаются при создании пула
Решение: Проверь, что диски не содержат старых разделов. Используй команды sgdisk --zap-all или wipefs -a.
Проблема 2: Медленная скорость сетевой папки
Решение:
- Проверь настройки сетевого интерфейса (MTU 9000 для Jumbo Frames)
- Отключи atime:
zfs set atime=off tank/shared - Настрой размер записи:
zfs set recordsize=1M tank/shared(для больших файлов)
Проблема 3: Ошибки доступа к сетевой папке
Решение: Проверь ACL и настройки SMB/NFS. Убедись, что пользователи существуют в TrueNAS и имеют правильные права.