Настройка сетевого доступа к СХД: iSCSI, NFS и SMB на практике (TrueNAS) | AdminWiki

Настройка сетевого доступа к СХД: iSCSI, NFS и SMB на практике (TrueNAS)

11 сентября 2026 11 мин. чтения

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?

КритерийiSCSINFSSMB
Уровень доступаБлочный (LUN)ФайловыйФайловый
Что видит клиентДиск /dev/sdX без файловой системыСетевой каталогСетевая папка
Типичный клиентVMware ESXi, Proxmox, Windows, LinuxLinux/Unix, ESXi, macOSWindows, macOS, Linux
Одновременный доступНужна кластерная ФС (VMFS, GFS2)Да, с блокировкамиДа, с блокировками
Порт3260/TCP2049/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: конфигурацию можно менять под тест и удалить после проверки.

Типичные ошибки при настройке сетевого доступа к СХД

  1. MTU не совпадает на всём пути. Симптом: пинг проходит, копирование почти стоит. Решение: сверьте ping -M do -s 8972 с обеих сторон и MTU на коммутаторе.
  2. Bonding вместо multipath для iSCSI. Симптом: прирост есть при нескольких клиентах и его нет на одной виртуальной машине. Решение: перейдите на MPIO с двумя порталами.
  3. UID/GID на клиенте не совпадают с СХД. Симптом: чтение работает, запись падает с Permission denied. Решение: синхронизируйте идентификаторы или задайте mapall в экспорте.
  4. Сервис SMB не запущен или без автозагрузки. Симптом: \\10.10.10.5 не открывается, хотя настройки шары корректны. Решение: System → Services → SMB → Start и включите автозапуск.
  5. iSCSI без CHAP в общей сети. Симптом: LUN виден любому хосту, узнавшему IQN таргета. Решение: создайте CHAP-пользователя и привяжите его к группе инициаторов с конкретным IQN.
  6. Закрытые порты firewall. Симптом: discovery iSCSI не находит таргет, NFS висит на mount. Решение: откройте 3260/TCP для iSCSI, 2049/TCP для NFSv4, 445/TCP для SMB.
  7. Монтирование NFS с опцией soft. Симптом: ошибки ввода-вывода в dmesg и повреждённые файлы. Решение: hard с timeo=600,retrans=2.
  8. Один LUN на двух хостах без кластерной ФС. Симптом: файловая система уходит в read-only через минуты после подключения второго сервера. Решение: для общих данных используйте NFS или SMB, для кластера - VMFS или GFS2.

Чек-лист проверки сетевой подсистемы СХД

  1. Базовая связность: ping -c 4 10.10.10.5.
  2. MTU: ping -M do -s 8972 10.10.10.5, если включены jumbo frames.
  3. Пропускная способность: iperf3 -c 10.10.10.5 -P 4 -t 60.
  4. iSCSI: iscsiadm -m session -P 3 и multipath -ll, оба пути в состоянии active.
  5. NFS: showmount -e 10.10.10.5, затем findmnt | grep nfs и тест записи через dd.
  6. SMB: smbclient -L //10.10.10.5 -U smbuser, на стороне СХД smbstatus.
  7. Сервисы TrueNAS: System → Services, SMB, NFS и iSCSI в состоянии RUNNING с автозапуском.
  8. Логи: /var/log/messages, /var/log/samba4/log.smbd, journalctl -u iscsitarget.
  9. Firewall: открыты 3260, 2049 и 445 в нужных подсетях.
  10. Тест отказоустойчивости: отключите один кабель или один портал и убедитесь, что ввод-вывод продолжился без ошибок.
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 экономит часы разбора аварий, которые стоят дороже самого массива.

Поделиться:
Сохранить гайд? В закладки браузера