Представь, что ты строишь многоэтажный дом данных. TrueNAS — это фундамент, а раздельные шары — разные квартиры для твоих файлов: одна для фильмов, другая для рабочих документов, третья для виртуальных машин. Давай разберем, как правильно спроектировать эту архитектуру, чтобы каждый "жилец" чувствовал себя комфортно и безопасно.
Что такое раздельные шары в TrueNAS и зачем они нужны?
В контексте TrueNAS шар (share) — это точка доступа к данным по сети. Раздельные шары позволяют:
- Изолировать данные — рабочие документы отдельно от медиатеки
- Настраивать разные права доступа — бухгалтерия видит только свои папки
- Применять различные политики — квоты, репликация, снапшоты
- Использовать разные протоколы — SMB для Windows, NFS для Linux, iSCSI для ВМ
Архитектура раздельных шаров: Планирование перед созданием
Типичная структура для домашнего использования
pool/
├── media/ # Dataset для медиа
│ ├── movies/ # Поддиректория
│ ├── music/
│ └── photos/
├── documents/ # Dataset для документов
│ ├── work/
│ ├── personal/
│ └── shared/
├── backups/ # Dataset для бэкапов
└── vm_storage/ # Dataset для виртуальных машин
Сравнение типов шаров
| Тип | Для чего | Преимущества | Недостатки |
|---|---|---|---|
| SMB/CIFS | Windows сети, мультимедиа | Поддержка ACL, интеграция с AD | Выше нагрузка на CPU |
| NFS | Linux/Unix системы, ВМ | Высокая скорость, низкие задержки | Сложнее настройка прав |
| iSCSI | Виртуальные машины, БД | Блочный доступ, высокая производительность | Нет общего доступа к файлам |
Пошаговое создание раздельных шаров в TrueNAS
Шаг 1: Создаем Dataset'ы для разделения данных
Сначала создадим структуру datasets. Заходим в Storage → Datasets:
# Создаем основной пул (если еще нет)
zpool create tank mirror /dev/ada0 /dev/ada1
# Создаем datasets для разных типов данных
zfs create tank/media
zfs create tank/documents
zfs create tank/backups
zfs create tank/vm_storage
# Настраиваем квоты (например, для документов)
zfs set quota=100G tank/documents
# Включаем компрессию для экономии места
zfs set compression=lz4 tank/documents
Шаг 2: Настраиваем SMB шар для Windows клиентов
Идем в Sharing → SMB Shares → Add:
[Media]
path = /mnt/tank/media
comment = Медиатека для всех
read only = no
guest ok = yes
force user = mediauser
force group = mediagroup
[Documents]
path = /mnt/tank/documents
comment = Рабочие документы
read only = no
valid users = @office
force group = officegroup
veto files = /*.exe/*.bat/*.cmd/
delete veto files = yes
Шаг 3: Создаем NFS шар для Linux систем
В Sharing → NFS Shares → Add указываем:
# TrueNAS автоматически генерирует этот файл
/mnt/tank/documents 192.168.1.0/24(rw,no_subtree_check,no_root_squash)
/mnt/tank/backups 192.168.1.50(ro,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
На клиенте Linux монтируем так:
# Временное монтирование
sudo mount -t nfs 192.168.1.10:/mnt/tank/documents /mnt/nas_docs
# Постоянное (в /etc/fstab)
192.168.1.10:/mnt/tank/documents /mnt/nas_docs nfs rw,hard,intr 0 0
Шаг 4: Настраиваем iSCSI для виртуальных машин
Для ВМ Hyper-V/VMware создаем iSCSI target:
- Sharing → iSCSI Targets → Add
- Создаем портал (Portal) с IP адресом
- Добавляем инициатор (Initiator) или разрешаем всем
- Создаем target с уникальным IQN
- Добавляем extent (файловый или устройство)
- Связываем target с extent через Associated Target
[target iqn.2005-10.org.freenas.ctl:vm-storage]
driver = zfs
portal-group = 1
initiator-group = 1
extent = vm-extent
[extent vm-extent]
type = disk
path = /mnt/tank/vm_storage/vmdisk0.img
blocksize = 512
pblocksize = yes
avail = thin
Продвинутые настройки раздельных шаров
Настройка квот и резервирования пространства
# Устанавливаем жесткую квоту (нельзя превысить)
zfs set quota=500G tank/documents/work
# Резервируем пространство (гарантированно доступно)
zfs set reservation=100G tank/documents/critical
# Мониторим использование
zfs list -o name,used,available,quota,reservation tank/documents/*
Снапшоты и репликация для разных шаров
Разные политики снапшотов для разных типов данных:
# Частые снапшоты для рабочих документов
zfs set com.sun:auto-snapshot=true tank/documents
zfs set com.sun:auto-snapshot:frequent=24 tank/documents
# Редкие снапшоты для медиа
zfs set com.sun:auto-snapshot:daily=7 tank/media
# Репликация критичных данных на удаленный TrueNAS
zfs send -R tank/documents@auto-20240101 | \
ssh backup-nas zfs receive backup/documents
Оптимизация производительности для разных нагрузок
| Тип нагрузки | Рекомендации по настройке | ZFS параметры |
|---|---|---|
| Видео поток | Большие блоки, отключение sync | recordsize=1M, sync=disabled |
| Виртуальные машины | Маленькие блоки, включение sync | recordsize=8K, sync=standard |
| Базы данных | Средние блоки, отдельный log device | recordsize=16K, logbias=latency |
Типичные проблемы и их решения
Решение: Проверьте настройки SMB:
server multi channel support = yes, socket options = TCP_NODELAY IPTOS_LOWDELAY
Решение: Проверьте mapping пользователей:
Services → NFS → Advanced Settings → Maproot User/Group
Решение: Убедитесь, что служба iSCSI запускается автоматически и extent файлы существуют
Часто задаваемые вопросы (FAQ)
Можно ли создать несколько SMB шаров из одного dataset?
Да, можно создать разные SMB шары для разных поддиректорий одного dataset. Например, /mnt/tank/documents/finance и /mnt/tank/documents/legal могут быть разными шарами с разными правами доступа.
Как мигрировать данные между шарами без копирования?
Используйте ZFS send/receive для эффективной миграции:
# Создаем снапшот
zfs snapshot tank/old_share@migrate
# Отправляем на новый dataset
zfs send tank/old_share@migrate | zfs receive tank/new_share
# Меняем точку монтирования шара
Как ограничить скорость доступа к определенному шарy?
Используйте Traffic Shaping в Network → Global Configuration или настройте ограничения на уровне SMB:
[LargeMedia]
path = /mnt/tank/media
# Ограничение 50 МБ/с на клиент
smb2 max read = 51200
smb2 max write = 51200
Заключение
Раздельные шары в TrueNAS — это не просто удобство, а необходимость для грамотной организации данных. Помни главные принципы:
- Разделяй по назначению — медиа, документы, бэкапы, ВМ
- Выбирай правильный протокол — SMB для Windows, NFS для Linux, iSCSI для блочных устройств
- Настраивай минимальные права — принцип наименьших привилегий
- Планируй квоты заранее — чтобы один шар не занял всё пространство
- Тестируй производительность — разные нагрузки требуют разных настроек ZFS
Начни с простой структуры из 3-4 шаров, поэкспериментируй с настройками, и постепенно выстроишь идеальную систему хранения данных под свои нужды.