TrueNAS отдаёт данные тремя способами, и от выбора способа зависит всё остальное: сеть, права, способ монтирования и даже размер блока в ZFS. iSCSI предоставляет клиенту блочное устройство (LUN), NFS - сетевой каталог, SMB - сетевую папку с Windows-совместимыми ACL. Ошибка на этом шаге обходится дороже всего: переделывать приходится пул, разметку и резервные копии.
Короткий ответ для тех, кто выбирает прямо сейчас. Диски виртуальных машин, кластерные файловые системы и СУБД - iSCSI. Общие каталоги между Linux-серверами, бэкапы и домашние директории - NFS. Офисный обмен файлами и среда Windows - SMB. TrueNAS SCALE (актуальная ветка 25.04) держит все три сервиса включёнными одновременно, конфликтуют они только на уровне прав доступа к одной и той же папке.
Ниже - пошаговая настройка каждого протокола, тюнинг сети (MTU 9000, MPIO, LACP) и чек-лист проверки перед вводом СХД в работу. Если пул ещё не создан, начните с развёртывания: Полная настройка TrueNAS Scale в 2026 году: от установки до мониторинга.
Выбор протокола: iSCSI, NFS или SMB?
| Критерий | iSCSI | NFS | SMB |
|---|---|---|---|
| Уровень доступа | Блочный (LUN) | Файловый | Файловый |
| Что видит клиент | Диск /dev/sdX без файловой системы | Сетевой каталог | Сетевая папка |
| Типичный клиент | VMware ESXi, Proxmox, Windows, Linux | Linux/Unix, ESXi, macOS | Windows, macOS, Linux |
| Одновременный доступ | Нужна кластерная ФС (VMFS, GFS2) | Да, с блокировками | Да, с блокировками |
| Порт | 3260/TCP | 2049/TCP (NFSv4) | 445/TCP |
| Типовая задача | Диск ВМ, кластер, СУБД | Бэкапы, логи, каталоги Linux | Офисные файлы, обмен |
Блочный доступ (iSCSI) vs файловый (NFS/SMB)
iSCSI передаёт SCSI-команды поверх TCP и отдаёт клиенту LUN: устройство без файловой системы. Файловую систему создаёт клиент: ext4 или XFS в Linux, NTFS в Windows, VMFS в ESXi. Сервер хранения не знает, что лежит внутри, и не может выдать один и тот же LUN двум хостам без кластерной ФС. Попытка смонтировать один LUN с ext4 на двух серверах повреждает метаданные за минуты.
NFS и SMB работают на файловом уровне. Сервер сам управляет файловой системой (в TrueNAS это ZFS), а клиент видит каталог. Блокировки поддерживаются протоколом, поэтому одну папку спокойно отдают десяткам клиентов. Рабочий пример: iSCSI-диск на 100 GiB для виртуальной машины в Proxmox, NFS-каталог с логами приложений и SMB-шара с документами отдела на одном и том же TrueNAS.
Когда NFS предпочтительнее SMB и наоборот
NFS выигрывает в Linux-инфраструктуре: нет накладных расходов на SMB-стек, выше скорость на мелких файлах при большом числе операций, есть монтирование прямо в fstab. Плата за это - права на основе UID/GID. Чтобы клиент писал в каталог, числовые идентификаторы пользователей на СХД и на клиенте должны совпадать либо нужно задать maproot или mapall в экспорте.
SMB выбирают в смешанной среде: Windows-клиенты подключаются к шаре без установки чего-либо, права описываются привычными ACL, поддерживаются теневые копии VSS и шифрование SMB3. В Linux SMB работает через cifs-utils и уступает NFS на каталогах с тысячами мелких файлов.
Отдать одну папку по NFS и SMB одновременно TrueNAS позволяет, но делать это стоит только при полном понимании модели прав. NFSv4 ACL и режимы POSIX конвертируются друг в друга неоднозначно, и пользователь, у которого есть доступ по SMB, легко получит отказ по NFS.
Различия протоколов на уровне настроек и тюнинга разобраны в материале Сетевые протоколы для систем хранения: iSCSI, NFS и SMB - настройка и ускорение.
Настройка iSCSI target в TrueNAS: пошаговая инструкция
Порядок действий жёсткий: сначала блочное устройство и портал, затем инициаторы, таргет, экстент и связка между ними. Если поменять порядок, часть полей в форме таргета останется пустой.
Создание zvol и настройка portal
Storage → Datasets → Add Zvol. Имя iscsi_vm01, размер 100 GiB, volblocksize 16 KiB для виртуальных машин общего профиля. Для MS SQL и PostgreSQL чаще берут 8-16 KiB под размер кластера СУБД. Compression оставьте LZ4, Sync - Standard.
Shares → Block (iSCSI) Shares → Portals → Add. Укажите IP-адрес СХД в storage-сети, например 10.10.10.5, и порт 3260. Портал должен ссылаться на адрес, который реально настроен на интерфейсе, иначе таргет не поднимется.
Создание target и extents
Initiators → Add. Самый безопасный вариант: вписать IQN клиента, он виден в /etc/iscsi/initiatorname.iscsi, тогда подключиться сможет только этот хост. Группа ALL годится для отладки, в продакшене её не оставляют. В этом же разделе создаётся CHAP-пользователь, если нужна аутентификация.
Targets → Add: имя target_vm01, alias, портал и группу инициаторов. Extents → Add: тип Device, устройство zvol/iscsi_vm01, LUN ID 0. Затем Associated Targets: свяжите таргет с экстентом. Проверить итог можно через midclt call iscsi.target.query, конфигурация хранится в базе middleware, а не в текстовом файле.
Подключение с Linux и Windows
sudo apt install open-iscsi multipath-tools sudo iscsiadm -m discovery -t sendtargets -p 10.10.10.5:3260 sudo iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:target_vm01 -p 10.10.10.5:3260 -l lsblk sudo mkfs.xfs /dev/sdb sudo mount /dev/sdb /mnt/vmdisk
В Windows запустите iSCSI Initiator, на вкладке Discovery → Discover Portal добавьте адрес СХД, затем Targets → Connect. Диск появится в диспетчере устройств, разметьте его в оснастке управления дисками.
Перед mkfs всегда смотрите вывод lsblk и blkid. Ошибка в выборе устройства стирает данные без предупреждения, а LUN, выданный двум хостам без кластерной ФС, разрушает файловую систему при первой одновременной записи. Отключать диск тоже нужно правильно: umount, затем iscsiadm -m node -T ... -u, иначе при следующей загрузке появится таймаут ожидания устройства.
Настройка NFS export в TrueNAS: пошаговая инструкция
Создание датасета и настройка прав
Storage → Datasets → Add Dataset, имя nfs_share, родительский пул tank. Дальше Edit → Permissions: владелец nfsuser (UID 1001), группа nfsgroup (GID 1001), режим 775. Клиентские пользователи должны иметь те же UID/GID, иначе запись в каталог будет запрещена, хотя чтение останется доступным.
Если синхронизировать идентификаторы между всеми клиентами не получается, в параметрах экспорта задайте maproot User/Group или используйте all_squash с анонимным UID. Простой рабочий вариант: отдельный каталог для бэкапов с mapall на служебного пользователя backup.
Экспорт NFS и параметры монтирования
Shares → Unix (NFS) Shares → Add. Укажите путь /mnt/tank/nfs_share, в Authorized Networks добавьте подсеть клиента 192.168.1.0/24, включите NFSv4. Maproot оставьте пустым, если root на клиенте должен сохранять права. Kerberos включайте только при настроенном домене, иначе монтирование начнёт падать по таймауту.
Клиент Linux:
sudo apt install nfs-common showmount -e 10.10.10.5 sudo mkdir -p /mnt/data sudo mount -t nfs4 -o rw,hard,timeo=600,retrans=2 10.10.10.5:/mnt/tank/nfs_share /mnt/data
В fstab добавляют строку с _netdev, чтобы монтирование не блокировало загрузку системы:
10.10.10.5:/mnt/tank/nfs_share /mnt/data nfs4 rw,hard,timeo=600,retrans=2,_netdev 0 0
Опция soft возвращает ошибку ввода-вывода при таймауте и позволяет приложению продолжить работу с «дырой» в данных. Для баз данных и бэкапов берите hard, а зависшие процессы снимайте вручную. NFSv4 держит всё на одном порту 2049, тогда как NFSv3 требует rpcbind на порту 111 и динамические порты mountd, что усложняет правила firewall.
Настройка SMB share в TrueNAS: пошаговая инструкция
Создание датасета и настройка ACL
Storage → Datasets → Add Dataset, имя smb_share. Для SMB выбирайте ACL Type NFSv4 и пресет Windows: владелец получает полный доступ, группа - чтение и запись, остальные - ничего. Пользователей создайте в Credentials → Local Users, задав пароль SMB, без него аутентификация не пройдёт.
ACL правьте через Edit → Permissions с готовым пресетом, а не вручную. TrueNAS хранит наследуемые записи, и случайное удаление такой записи ломает доступ всей группе, при этом в логах остаётся только NT_STATUS_ACCESS_DENIED без пояснений.
Создание SMB share и подключение клиентов
Shares → Windows (SMB) Shares → Add: путь /mnt/tank/smb_share, имя office, Purpose «Default share parameters», Browsable включён. Сервис SMB должен быть запущен: System → Services → SMB → Start, галочка автозапуска обязательна, иначе после перезагрузки шара исчезнет из сети.
Windows: Проводник → \\10.10.10.5\office, ввод логина и пароля SMB-пользователя. Linux:
smbclient //10.10.10.5/office -U smbuser sudo mount -t cifs -o username=smbuser,uid=1000,gid=1000,vers=3.1.1,_netdev //10.10.10.5/office /mnt/office
Если подключение не проходит, проверьте firewall: нужны порты 445/TCP и 139/TCP, последний только для legacy-клиентов. Гостевой доступ в TrueNAS выключен по умолчанию, и это правильная настройка: включённый guest открывает данные всем без пароля.
Пошаговые сценарии с ACL, монтированием и разбором ошибок собраны в руководстве Настройка общего доступа TrueNAS: SMB, NFS и FTP для Windows, Linux, macOS.
Оптимизация производительности сети: jumbo frames, multipath, bonding
Пропускную способность СХД ограничивает не пул, а сеть и процессор при обработке пакетов. Основной эффект дают три настройки: увеличенный MTU, несколько путей iSCSI и агрегация каналов.
Jumbo frames: когда включать и как избежать проблем
MTU 9000 снижает число пакетов и прерываний на гигабитных и особенно на 10-гигабитных линках. На 1 GbE выигрыш заметен только на больших последовательных операциях, а риск выше: любое устройство в пути с MTU 1500 приводит к фрагментации и падению скорости.
В TrueNAS: Network → Interfaces → Edit → MTU 9000. На клиенте: ip link set dev enp1s0 mtu 9000, способ закрепления зависит от дистрибутива (nmcli, netplan, /etc/network/interfaces). Коммутатор и все промежуточные устройства должны поддерживать кадры 9000 байт.
ping -M do -s 8972 10.10.10.5 ethtool -S enp1s0 | grep -i -E 'err|drop'
Если ping с 8972 байтами не проходит, а с 1472 проходит, jumbo frames где-то не включены. Держите MTU 9000 только в storage-сети и не распространяйте его на пользовательский трафик и VPN.
Multipath для iSCSI: настройка и подводные камни
MPIO требует двух независимых путей: два портала в TrueNAS в разных подсетях, две сетевые карты у клиента, раздельные коммутаторы или отдельные VLAN. Таргет привязывают к обоим порталам, клиент обнаруживает сессию через оба IP.
sudo iscsiadm -m discovery -t sendtargets -p 10.10.10.5:3260 sudo iscsiadm -m discovery -t sendtargets -p 10.20.20.5:3260 sudo iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:target_vm01 -l multipath -ll
В /etc/multipath.conf укажите find_multipaths yes, path_grouping_policy multibus, path_checker tur, failover immediate, no_path_retry 5. Опция queue_if_no_path без no_path_retry подвешивает ввод-вывод навсегда при обрыве одного пути, и виртуальная машина перестаёт отвечать.
Главный риск - сборка одного LUN как двух отдельных дисков. В выводе multipath -ll должно быть два path в одной группе и один map-диск. Если вместо этого lsblk показывает sdb и sdc, пути не сгруппировались, и запись на второй диск разрушит данные первого.
Bonding (LACP): агрегация каналов
Network → Interfaces → Add → тип LAGG, protocol LACP, выбрать два физических интерфейса. Коммутатор настраивается под 802.3ad с теми же портами. Агрегация даёт суммарную полосу и переживает отказ одного линка.
Алгоритм хеширования распределяет по линкам потоки, а не пакеты. Одно TCP-соединение всегда идёт по одному линку, поэтому скорость копирования одного файла не вырастет. Для iSCSI честнее MPIO: два пути, два потока, реальная сумма скоростей. LACP помогает там, где много клиентов, и для SMB Multichannel, который поднимает несколько TCP-соединений внутри одной сессии.
Пример тонкой настройки ZFS и сети под высокие нагрузки: Настройка производительности TrueNAS в 2026: ZFS и сетевое взаимодействие. Если нужен стенд для проверки MTU и multipath до переезда продакшена, подойдут облачные серверы и хранилище Timeweb Cloud: конфигурацию можно менять под тест и удалить после проверки.
Типичные ошибки при настройке сетевого доступа к СХД
- MTU не совпадает на всём пути. Симптом: пинг проходит, копирование почти стоит. Решение: сверьте ping -M do -s 8972 с обеих сторон и MTU на коммутаторе.
- Bonding вместо multipath для iSCSI. Симптом: прирост есть при нескольких клиентах и его нет на одной виртуальной машине. Решение: перейдите на MPIO с двумя порталами.
- UID/GID на клиенте не совпадают с СХД. Симптом: чтение работает, запись падает с Permission denied. Решение: синхронизируйте идентификаторы или задайте mapall в экспорте.
- Сервис SMB не запущен или без автозагрузки. Симптом: \\10.10.10.5 не открывается, хотя настройки шары корректны. Решение: System → Services → SMB → Start и включите автозапуск.
- iSCSI без CHAP в общей сети. Симптом: LUN виден любому хосту, узнавшему IQN таргета. Решение: создайте CHAP-пользователя и привяжите его к группе инициаторов с конкретным IQN.
- Закрытые порты firewall. Симптом: discovery iSCSI не находит таргет, NFS висит на mount. Решение: откройте 3260/TCP для iSCSI, 2049/TCP для NFSv4, 445/TCP для SMB.
- Монтирование NFS с опцией soft. Симптом: ошибки ввода-вывода в dmesg и повреждённые файлы. Решение: hard с timeo=600,retrans=2.
- Один LUN на двух хостах без кластерной ФС. Симптом: файловая система уходит в read-only через минуты после подключения второго сервера. Решение: для общих данных используйте NFS или SMB, для кластера - VMFS или GFS2.
Чек-лист проверки сетевой подсистемы СХД
- Базовая связность: ping -c 4 10.10.10.5.
- MTU: ping -M do -s 8972 10.10.10.5, если включены jumbo frames.
- Пропускная способность: iperf3 -c 10.10.10.5 -P 4 -t 60.
- iSCSI: iscsiadm -m session -P 3 и multipath -ll, оба пути в состоянии active.
- NFS: showmount -e 10.10.10.5, затем findmnt | grep nfs и тест записи через dd.
- SMB: smbclient -L //10.10.10.5 -U smbuser, на стороне СХД smbstatus.
- Сервисы TrueNAS: System → Services, SMB, NFS и iSCSI в состоянии RUNNING с автозапуском.
- Логи: /var/log/messages, /var/log/samba4/log.smbd, journalctl -u iscsitarget.
- Firewall: открыты 3260, 2049 и 445 в нужных подсетях.
- Тест отказоустойчивости: отключите один кабель или один портал и убедитесь, что ввод-вывод продолжился без ошибок.
ping -M do -s 8972 10.10.10.5 iperf3 -c 10.10.10.5 -P 4 -t 60 iscsiadm -m session -P 3 multipath -ll showmount -e 10.10.10.5 smbclient -L //10.10.10.5 -U smbuser
Пункт 8 часто пропускают: SMB пишет ошибки в /var/log/samba4, а не в /var/log/messages, и без проверки этого файла причину отказа в доступе найти сложно. Массовые логи удобно разбирать через LLM: AiTunnel даёт единый API более чем к 200 моделям с оплатой в рублях, что упрощает регулярную сверку конфигураций.
Начните с одного протокола на тестовом датасете, пройдите чек-лист и только потом переносите шаблон на боевые пулы. Проверенный стенд с работающим MPIO и MTU 9000 экономит часы разбора аварий, которые стоят дороже самого массива.