Представь, что ты развернул мощный сервер хранения на TrueNAS. Диски отформатированы в ZFS, пулы созданы... но как теперь предоставить доступ к данным пользователям, виртуальным машинам или контейнерам? Именно здесь на сцену выходит TrueNAS Sharing — механизм, который превращает твое хранилище из "черного ящика" в полноценный сетевой ресурс. Давай разберем все протоколы, настройки и подводные камни, чтобы ты мог делиться файлами как профи.
Что такое Sharing в TrueNAS и зачем он нужен?
Sharing (общий доступ) — это функционал TrueNAS Core/SCALE, позволяющий "экспортировать" твои наборы данных (datasets) в сеть по различным сетевым протоколам. Без него твои данные будут заперты внутри системы. Основные цели:
- Доступ для пользователей: Пользователи Windows/Mac/Linux подключаются к общим папкам.
- Интеграция с инфраструктурой: Виртуальные машины (KVM, VMware) используют iSCSI LUN'ы как диски. Контейнеры монтируют NFS-шары.
- Удаленный доступ и синхронизация: WebDAV для доступа через веб или синхронизации календарей/контактов.
Сравнение протоколов общего доступа
Выбор протокола зависит от ОС клиентов и задач. Вот сравнительная таблица:
| Протокол | Основное применение | Клиенты | Производительность | Безопасность |
|---|---|---|---|---|
| SMB/CIFS | Общие папки для пользователей | Windows, macOS, Linux | Высокая | Аутентификация AD/LDAP, шифрование (SMB3) |
| NFS | Общий доступ для Linux/Unix, виртуализация | Linux, VMware, контейнеры | Очень высокая | IP-based, Kerberos (NFSv4) |
| iSCSI | Блочное хранилище для ВМ и БД | VMware, Hyper-V, Windows/Linux хосты | Максимальная (блочный доступ) | CHAP-аутентификация |
| WebDAV | Веб-доступ, CalDAV/CardDAV | Браузеры, macOS Finder, клиенты CalDAV | Средняя (HTTP-оверхед) | HTTPS, базовая аутентификация |
| AFP (устарел) | Для старых Mac OS (до 10.9) | macOS Legacy | Средняя | Базовая |
Пошаговая настройка SMB Sharing (для Windows и не только)
SMB — самый популярный протокол. Давай создадим общую папку для отдела разработки.
Шаг 1: Подготовка Dataset и разрешений (ACL)
Сначала создай Dataset. В веб-интерфейсе: Storage → Datasets → ADD → Dataset.
# Пример: Создание dataset через CLI (альтернатива GUI)
zfs create tank/data/dev_team
zfs set acltype=posixacl tank/data/dev_team # Для Windows-like ACL
zfs set casesensitivity=mixed tank/data/dev_team
Настрой ACL (Access Control List). В GUI: Нажми на Dataset → Edit Permissions. Выбери тип ACL "SMB" и настрой:
- Владелец (Owner): root (или специальный пользователь).
- Группа (Group): dev (предварительно создай группу в Credentials → Local Groups).
- Права для группы: Full Control (Read, Write, Execute).
- Примени рекурсивно ко всем файлам и подпапкам.
Шаг 2: Создание SMB Share
Иди в Sharing → Windows Shares (SMB) → ADD.
- Path: Выбери созданный dataset (например, /mnt/tank/data/dev_team).
- Name: dev_share (это имя папки в сети).
- Purpose: Выбери шаблон (например, "Multi-protocol (SMB + NFS)" для гибкости).
- Advanced Options:
- Enable ACL inheritance: Да.
- Enable SMB3 encryption: Да (для безопасности).
- Allow Guest Access: Нет (если не нужно анонимное подключение).
- Auxiliary Parameters: Здесь можно добавить тонкие настройки из smb.conf.
# Пример дополнительных параметров SMB (Auxiliary Parameters)
veto files = /.snapshot/.windows/.mac/.zfs/
delete veto files = yes
spotlight = yes # Для индексации поиска на Mac
vfs objects = catia fruit streams_xattr shadow_copy_zfs
fruit:encoding = native
Шаг 3: Подключение с клиента
На Windows: открой Проводник → \\IP_ВАШЕГО_TRUENAS\dev_share. Используй логин/пароль пользователя TrueNAS или доменные учетные данные, если настроена интеграция с Active Directory.
Настройка NFS Sharing для Linux и виртуализации
NFS идеален для монтирования в Linux-системы и гипервизоры типа VMware ESXi.
Шаг 1: Создание NFS Share
Sharing → Unix Shares (NFS) → ADD.
- Path: Укажи путь к dataset.
- Network: Укажи подсеть клиентов (например, 192.168.1.0/24).
- Advanced Options:
- Enabled NFSv4: Да (более безопасный и современный).
- Maproot User/Group: root/wheel (с осторожностью!). Лучше использовать Mapall User для привязки к конкретному непривилегированному пользователю.
- Security: sys (для Kerberos выбери krb5, krb5i, krb5p).
Шаг 2: Монтирование на клиенте Linux
# Установи NFS-клиент (если нет)
sudo apt install nfs-common # Debian/Ubuntu
sudo yum install nfs-utils # RHEL/CentOS
# Создай точку монтирования
sudo mkdir -p /mnt/nas/dev_team
# Смонтируй NFS-шару (NFSv4)
sudo mount -t nfs4 truenas.local:/mnt/tank/data/dev_team /mnt/nas/dev_team
# Для автоматического монтирования при загрузке добавь в /etc/fstab
truenas.local:/mnt/tank/data/dev_team /mnt/nas/dev_team nfs4 rw,hard,intr,noatime,timeo=300,retrans=3 0 0
Настройка iSCSI Sharing для блочного хранилища
iSCSI предоставляет не файловый, а блочный доступ, как будто к серверу подключен физический диск. Используется для ВМ и баз данных.
Шаг 1: Создание ZVOL (блочного устройства)
В Storage → Datasets нажми ADD, но выбери ZVOL (а не Dataset). Укажи размер (например, 100GiB).
Шаг 2: Настройка iSCSI Target
Иди в Sharing → Block Shares (iSCSI). Настройка состоит из нескольких вкладок:
- Target Global Configuration: Базовая конфигурация портала (IP и порт 3260).
- Portals: Создай портал, слушающий на IP твоего TrueNAS.
- Initiators Groups: Ограничь доступ по IP или имени инициатора (клиента). Можно оставить "ALL" для любого.
- Authorized Access: Настрой CHAP-аутентификацию (рекомендуется для безопасности).
- Targets: Создай сам Target (виртуальный SCSI-устройство).
- Extents: Создай Extent, указав путь к созданному ZVOL (например, /dev/zvol/tank/data/db_volume).
- Associated Targets: Свяжи Target и Extent.
# Пример: Подключение iSCSI Target с Linux-клиента (Ubuntu)
# Установи инициатор
sudo apt install open-iscsi
# Обнаружь Target
sudo iscsiadm -m discovery -t st -p TRUENAS_IP
# Подключись (с CHAP-аутентификацией, если настроена)
sudo iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:target_name -p TRUENAS_IP --login
# После подключения новый диск появится в системе (проверь lsblk)
lsblk
Настройка WebDAV Sharing для веб-доступа
WebDAV полезен для доступа к файлам через веб или как сетевая папка в macOS Finder.
Sharing → WebDAV Shares → ADD.
- Path: Укажи dataset.
- Name: webdav_share (будет частью URL).
- Authentication Type: BASIC (или DIGEST).
- Certificate: Выбери SSL-сертификат, если хочешь HTTPS (настоятельно рекомендуется!).
- Permit All Users: Нет (явно укажи пользователей, которым разрешен доступ).
После создания активируй службу WebDAV в Services → WebDAV.
Типичные проблемы и их решение
1. "Доступ запрещен" в SMB
Причина: Несоответствие разрешений Windows (ACL) и Unix. Решение:
- Убедись, что в ACL dataset'а пользователю или группе даны права на чтение/запись.
- Проверь, что служба SMB запущена (Services → SMB).
- В Advanced Options SMB-шары попробуй добавить: `ntlm auth = yes`.
2. Медленная скорость NFS
Причина: Неоптимальные настройки монтирования или сеть. Решение:
- Используй опции монтирования `rw,hard,intr,noatime,rsize=65536,wsize=65536`.
- Убедись, что сетевое соединение — гигабитное (1 Gbps) или выше.
- Проверь, не включен ли sync=always на dataset (это замедляет запись).
3. iSCSI Target не виден клиенту
Причина: Брандмауэр или неправильная настройка Initiator Group. Решение:
- Открой порт 3260/TCP на фаерволе TrueNAS и клиента.
- В Initiator Group укажи корректный IP-адрес клиента или "ALL".
- Перезапусти службу iSCSI: Services → iSCSI → Restart.
Часто задаваемые вопросы (FAQ)
Можно ли использовать один Dataset для нескольких типов Sharing (SMB и NFS одновременно)?
Да, это называется multi-protocol sharing. Но будь осторожен с разрешениями. Для лучшей совместимости:
- Используй тип ACL "SMB" на dataset.
- В настройках NFS используй опцию `Mapall User` и `Mapall Group`, указав непривилегированного пользователя (например, `nobody`).
- В SMB-шаре включи "Enable ACL inheritance".
Как организовать резервное копирование общих ресурсов?
Используй встроенные снапшоты ZFS и репликацию.
- Создай периодические снапшоты dataset'а (Storage → Snapshots).
- Настрой репликацию на другой TrueNAS или удаленный сервер.
- Для SMB можно включить теневое копирование (Previous Versions) через параметр `shadow:snapdir = .zfs/snapshot` в Auxiliary Parameters.
Как повысить безопасность Sharing?
- SMB: Включи SMB3 encryption, отключи SMB1, используйте аутентификацию через Active Directory.
- NFS: Ограничь доступ по IP (Network в настройках NFS share), рассмотри возможность использования NFSv4 с Kerberos (krb5p).
- iSCSI: Обязательно настрой двустороннюю CHAP-аутентификацию.
- WebDAV: Работай только через HTTPS (SSL), отключи BASIC-аутентификацию, если не используешь SSL.
- Общее: Выдели для сервисов отдельную VLAN, используй фаервол.
Почему не стоит использовать корневой dataset для Sharing?
Корневой dataset (например, `tank`) содержит системные данные и метаданные ZFS. Создавая общий доступ на нем, ты рискуешь:
- Случайно удалить или повредить критичные для работы пула структуры.
- Усложнить управление квотами и снапшотами.
- Снизить производительность из-за смешивания пользовательских и системных операций ввода-вывода.
Заключение
TrueNAS Sharing — это мощный и гибкий инструмент, который превращает твое ZFS-хранилище в универсальный сетевой ресурс. Ключ к успеху — понимание задачи: для пользовательских файлов выбирай SMB, для инфраструктуры Linux — NFS, для виртуальных машин — iSCSI. Всегда настраивай разрешения (ACL) до создания шары, используй отдельные dataset'ы под разные задачи и не забывай о безопасности (шифрование, аутентификация). Теперь у тебя есть полная картина — вперед, настраивать и делиться данными эффективно и безопасно!