Сетевые протоколы для систем хранения: iSCSI, NFS и SMB, настройка и ускорение | AdminWiki

Сетевые протоколы для систем хранения: iSCSI, NFS и SMB, настройка и ускорение

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

В чем суть проекта

Для Linux-серверов с виртуальными машинами и базами данных обычно выбирают iSCSI. Он передает блочные устройства по сети, поэтому клиент видит LUN почти как локальный диск и самостоятельно создает на нем файловую систему. NFSv4 подходит для общих каталогов Linux и Unix, контейнеров, резервных копий и рабочих файлов. SMB3 удобнее в смешанной среде с Windows, Active Directory и пользователями, которым нужны сетевые папки.

Выбор протокола определяет способ блокировок, модель доступа, требования к резервированию и поведение при разрыве связи. Для одного сервера с базой данных iSCSI часто дает предсказуемую работу с блочным вводом-выводом. Для нескольких Linux-клиентов с общим каталогом удобнее NFS. Для офисных файлов и Windows ACL обычно выбирают SMB3.

При скорости 1 GbE полезная пропускная способность редко превышает 110 МБ/с. Сеть 10 GbE теоретически передает около 1,25 ГБ/с, а на практике результат зависит от дисков, ZFS, размера блока, CPU, очереди запросов и настроек коммутатора. Поэтому производительность сетевого хранилища нужно измерять отдельно для сети, дисков и конкретного протокола.

ПротоколМодель доступаПодходящие задачиОсновные ограничения
iSCSIБлочное устройствоВиртуальные машины, базы данных, файловая система одного узлаКлиенты не должны одновременно монтировать один обычный раздел
NFSv4Файловый экспортLinux, Unix, Kubernetes, общие каталоги, бэкапыЗависимость от сетевых задержек, UID/GID и модели блокировок
SMB3Файловая шараWindows, macOS, Linux, Active DirectoryACL, signing и encryption могут заметно увеличить нагрузку на CPU

Подробное сравнение блочного, файлового и объектного хранения помогает выбрать архитектуру до покупки дисков и настройки NAS: сравнение типов хранилищ и сценариев их использования.

Короткое правило выбора

  • iSCSI: приложение ожидает диск, а не сетевой каталог. Пример: PostgreSQL на отдельном LUN или хранилище виртуальных машин.
  • NFSv4: несколько Linux-серверов работают с общими файлами. Пример: каталог для исходников, образов, бэкапов или PersistentVolume в Kubernetes.
  • SMB3: пользователи открывают документы через сетевые папки и должны проходить проверку в домене.

Протокол не заменяет RAID, снапшоты и резервные копии. Снимок ZFS защищает от части логических ошибок и позволяет быстро вернуть состояние набора данных, но не спасает от потери всего пула, повреждения массива или удаления снимков злоумышленником.

Что умеет агент внутри вашей машины

Под агентом внутри сервера здесь следует понимать клиентскую часть протокола. В Linux это набор служб и утилит, которые подключают удаленное хранилище, восстанавливают сессию после перезагрузки и передают запросы приложениям.

iSCSI initiator Linux

Инициатор iSCSI подключается к target по TCP, проходит аутентификацию и получает LUN. После входа в сессию Linux создает устройство в каталоге /dev. Идентификатор инициатора хранится в /etc/iscsi/initiatorname.iscsi, а постоянные параметры подключения сохраняет iscsiadm.

Одна сессия использует TCP-порт 3260. Для отказоустойчивости применяют два сетевых пути и multipath, а не два независимых монтирования одного устройства. Файловую систему на обычном LUN монтирует один узел. Одновременная запись двух серверов без кластерной файловой системы приводит к повреждению метаданных.

Клиент NFS

Linux-клиент NFS обращается к удаленному экспорту как к каталогу. NFSv4 использует TCP-порт 2049, поддерживает состояние сессии, ACL и Kerberos. Права часто зависят от совпадения UID и GID на сервере и клиенте. В доменной среде для контроля пользователей применяют Kerberos, а не ручное копирование локальных идентификаторов.

Для обычного Linux-экспорта начните с NFSv4.1, параметра hard и синхронной записи. Параметр soft может вернуть приложению ошибку после тайм-аута и создать риск повреждения данных. Для базы данных это особенно опасно.

Клиент SMB3

SMB3 работает с файловыми шарами и хорошо интегрируется с Windows Server и Active Directory. В Linux подключение выполняет пакет cifs-utils. SMB 3.1.1 поддерживает signing, шифрование, durable handles и multichannel, если сервер, клиент и сеть поддерживают нужные функции.

Для Windows-пользователей права задаются через доменные группы и ACL. Для Linux-клиентов нужно отдельно проверить отображение владельца, режимов доступа и расширенных ACL. Гостевой доступ лучше отключить: он усложняет аудит и часто становится причиной случайной публикации данных.

Что проверить на клиенте

  1. Состояние сетевого интерфейса и скорость линка: ip -s link, ethtool eth0.
  2. Задержку и потери до NAS: ping с интервалом, подходящим для вашей сети.
  3. Доступность порта: проверка TCP 2049, 445 или 3260 с разрешенного узла.
  4. Состояние подключения: findmnt, nfsstat, smbstatus или iscsiadm -m session.
  5. Ошибки ядра и файловой системы: journalctl -k, dmesg, iostat -xz 1.

Архитектура и варианты запуска

Сетевая схема

NAS лучше подключать к отдельной VLAN хранения. На ней разрешают только адреса серверов-клиентов и нужные TCP-порты. Управление, пользовательский SMB-трафик, резервное копирование и iSCSI не стоит смешивать в одном широковещательном сегменте без причины.

MTU 9000 дает эффект только при одинаковом значении на сетевых картах, коммутаторах, LAG, виртуальных свитчах и NAS. Один узел с MTU 1500 способен вызвать фрагментацию или потерю пакетов. Если проверить весь маршрут нельзя, оставьте MTU 1500 и измерьте результат с помощью iperf3.

Для оценки сетевой части запускайте тест между двумя узлами хранения. Для оценки дисков используйте fio на тестовом наборе данных. Нагрузка fio на рабочем LUN может испортить данные, поэтому тестовый файл или отдельный том безопаснее.

При настройке сетевых буферов и планировщика дисков полезен отдельный чеклист диагностики Linux-сервера с vmstat и iostat. Меняйте параметры по результатам измерений, а не по универсальному списку sysctl.

TrueNAS и самосборный NAS

В TrueNAS сначала создают ZFS pool, затем dataset или zvol. NFS и SMB обычно получают dataset, а iSCSI работает с zvol, который экспортируется как блочное устройство. Для zvol заранее выбирают размер блока с учетом нагрузки. Случайное чтение базы данных и последовательная запись резервных копий предъявляют разные требования.

Для SMB dataset обычно настраивают с ACL, совместимыми с Windows. Для NFS проверяют владельца, группу, root squashing и способ аутентификации. Для iSCSI отдельно задают target, extent, portal и доступ инициатора. Названия пунктов в веб-интерфейсе TrueNAS Core и TrueNAS SCALE могут различаться, поэтому после сохранения нужно проверить фактические параметры подключением с клиента.

В Linux NAS на базе Debian или Ubuntu блоковый доступ предоставляет LIO через targetcli-fb, NFS обслуживает nfs-kernel-server, а SMB работает через Samba. Такая схема дает полный контроль над конфигурацией, но администратор сам отвечает за обновления, firewall, мониторинг и восстановление после сбоя.

Настройка iSCSI target Linux

Пример использует тестовый диск /dev/sdb, адрес хранилища 10.10.20.10 и инициатор iqn.1993-08.org.debian:client01. Не подставляйте рабочий диск вместо /dev/sdb без проверки через lsblk.

sudo apt install targetcli-fb
sudo targetcli
/backstores/block create vm01 /dev/sdb
/iscsi create iqn.2026-09.local.storage:storage01
/iscsi/iqn.2026-09.local.storage:storage01/tpg1/portals create 10.10.20.10 3260
/iscsi/iqn.2026-09.local.storage:storage01/tpg1/luns create /backstores/block/vm01
/iscsi/iqn.2026-09.local.storage:storage01/tpg1/acls create iqn.1993-08.org.debian:client01
/iscsi/iqn.2026-09.local.storage:storage01/tpg1 set attribute authentication=1
saveconfig
exit

Затем задайте CHAP для ACL через путь конкретного инициатора в targetcli. Пароль должен быть длинным, уникальным для этого target и храниться только на разрешенных узлах. Откройте TCP 3260 в firewall только для VLAN хранения. Название службы автозагрузки зависит от дистрибутива, поэтому проверьте его командами systemctl list-unit-files | grep -E 'target|lio' и systemctl status target.

Настройка iSCSI initiator Linux

На клиенте установите open-iSCSI, проверьте IQN и выполните обнаружение target.

sudo apt install open-iscsi
sudo systemctl enable --now iscsid open-iscsi
cat /etc/iscsi/initiatorname.iscsi
sudo iscsiadm -m discovery -t sendtargets -p 10.10.20.10
sudo iscsiadm -m node -T iqn.2026-09.local.storage:storage01 -p 10.10.20.10:3260 --login
lsblk
sudo iscsiadm -m session -P 3

Если target требует CHAP, сохраните имя пользователя и пароль в параметрах найденного node, затем повторите вход. После появления устройства создайте файловую систему только на правильном LUN. Для постоянного монтирования используйте UUID, параметр _netdev и зависимость systemd от сетевого сервиса. Для двух независимых путей настройте multipath-tools, проверьте вывод multipath -ll и только потом создавайте файловую систему.

Экспорт NFSv4

На Linux-сервере создайте каталог и ограничьте доступ сетью клиентов.

sudo apt install nfs-kernel-server
sudo mkdir -p /srv/nfs/projects
sudo chown root:storage /srv/nfs/projects
sudo chmod 2770 /srv/nfs/projects
printf '/srv/nfs/projects 10.10.20.0/24(rw,sync,root_squash,no_subtree_check,sec=sys)\n' | sudo tee /etc/exports.d/projects.exports
sudo exportfs -rav
sudo systemctl enable --now nfs-kernel-server

На клиенте подключите экспорт:

sudo apt install nfs-common
sudo mkdir -p /mnt/projects
sudo mount -t nfs4 -o vers=4.1,hard,timeo=600,retrans=2 10.10.20.10:/srv/nfs/projects /mnt/projects
findmnt /mnt/projects
nfsstat -m

Параметр nconnect=4 иногда ускоряет работу на многопоточном клиенте, но его поддержка зависит от ядра и сервера. Проверяйте его на отдельной нагрузке. rsize и wsize современные Linux-клиенты обычно согласуют автоматически. Принудительная установка больших значений без теста может ухудшить задержки.

Общая папка SMB3

Для автономного Samba-сервера создайте группу и каталог, затем добавьте пользователя.

sudo apt install samba smbclient
sudo groupadd storage
sudo usermod -aG storage storageuser
sudo smbpasswd -a storageuser
sudo mkdir -p /srv/samba/projects
sudo chown root:storage /srv/samba/projects
sudo chmod 2770 /srv/samba/projects

Добавьте в /etc/samba/smb.conf минимальную шару:

[global]
server min protocol = SMB3_00

[projects]
path = /srv/samba/projects
browseable = yes
read only = no
valid users = @storage
force group = storage
create mask = 0660
directory mask = 2770
sudo testparm
sudo systemctl enable --now smbd
sudo systemctl restart smbd
smbclient -L //10.10.20.10 -U storageuser

На Linux применяйте файл с учетными данными, доступный только root:

sudo sh -c 'printf "username=storageuser\npassword=CHANGE_ME\n" > /root/.smb-credentials'
sudo chmod 600 /root/.smb-credentials
sudo mount -t cifs //10.10.20.10/projects /mnt/projects -o vers=3.1.1,credentials=/root/.smb-credentials

В домене замените локального пользователя на доменную группу и проверьте наследование ACL. Параметры Samba вроде socket options и ручной фиксации буферов часто встречаются в старых руководствах. На современных системах сначала измерьте базовую конфигурацию, затем меняйте один параметр за раз.

Безопасность и Runtime Console

Runtime Console в этом сценарии означает набор команд, которыми администратор проверяет состояние служб и подключений: targetcli, iscsiadm, exportfs, mount, findmnt, testparm, smbstatus и системные журналы. Веб-интерфейс TrueNAS удобен для создания ресурсов, но итог нужно проверять с реального клиента.

Минимальная защита сети

СлужбаПортКому разрешить доступЧто проверить
iSCSITCP 3260Только IP инициаторовCHAP, ACL target, отсутствие публичного маршрута
NFSv4TCP 2049Только Linux-сети клиентовexports, root_squash, UID/GID или Kerberos
SMB3TCP 445Пользовательская и доменная сетьACL, signing, encryption при передаче чувствительных данных

Не публикуйте 3260, 2049 или 445 в интернет. Для удаленного доступа используйте VPN или выделенный защищенный канал, а правила firewall стройте по принципу минимально необходимого доступа.

Аутентификация и права

  • Для iSCSI задайте ACL на каждый IQN и отдельные CHAP-учетные данные. Один пароль для всех клиентов усложняет отзыв доступа.
  • Для NFS в доверенной внутренней сети допустим sec=sys с точным контролем адресов и UID/GID. Для требований к идентификации и шифрованию используйте Kerberos: sec=krb5, sec=krb5i или sec=krb5p.
  • Для SMB применяйте доменные группы, отключите гостевой доступ и не смешивайте POSIX-права с Windows ACL без проверки фактического результата.
  • Административный доступ к TrueNAS и Linux NAS ограничьте отдельной сетью, MFA и SSH-ключами, если платформа это поддерживает.

Надежность и восстановление

Синхронная запись NFS с параметром sync снижает риск потери подтвержденных данных при сбое питания, но увеличивает задержку. Для ZFS SLOG имеет смысл только при наличии устройства с защитой от потери питания и нагрузке, которая действительно использует синхронные записи.

Снимки iSCSI, NFS и SMB нужно согласовывать с приложением. Снимок виртуальной машины без заморозки файловой системы может сохранить неконсистентное состояние. Для PostgreSQL, MySQL и подобных систем используйте штатный backup или orchestration-процедуру, а снапшот оставляйте дополнительным быстрым способом отката.

Диагностика узких мест

  1. Проверьте ошибки интерфейса: ip -s link, ethtool -S eth0.
  2. Отделите сеть от дисков тестом iperf3.
  3. Проверьте задержки и очередь дисков через iostat -xz 1.
  4. Для iSCSI изучите сессии и ошибки: iscsiadm -m session -P 3, journalctl -u iscsid.
  5. Для NFS сравните mount-параметры через nfsstat -m и ошибки ядра.
  6. Для SMB проверьте активные подключения и версии диалектов через smbstatus и testparm.

Полезные шаблоны sysctl, диагностика с vmstat и iostat, а также подбор параметров под NVMe и HDD собраны в руководстве по ускорению Linux-серверов и хранилищ. Переносите оттуда только те изменения, которые подтверждаются тестом на вашей нагрузке.

Платформы и текущие ограничения

Совместимость клиентов

КлиентiSCSINFSv4SMB3
LinuxПолная поддержка через open-iscsiШтатный клиентcifs-utils и Samba
Windows ServerШтатный iSCSI InitiatorОграниченная применимость и отдельные ролиОсновной сценарий
TrueNASTarget через сервис iSCSIЭкспорт datasetSMB-шары и ACL
macOSПотребуется отдельный клиентСценарий зависит от версии ОС и клиентаШтатная поддержка SMB

Ограничения TrueNAS

TrueNAS упрощает создание ZFS-пулов, dataset, zvol, SMB-шар, NFS-экспортов и iSCSI target. При этом веб-интерфейс скрывает часть низкоуровневых параметров. Перед изменением advanced-настроек проверьте, как они влияют на обновления, поддержку и импорт конфигурации.

Для SMB используйте отдельный dataset с корректными ACL. Для NFS не выдавайте root-доступ всей подсети без необходимости. Для iSCSI следите за свободным местом в пуле: заполненный ZFS pool резко ухудшает задержки и оставляет меньше возможностей для служебных операций.

Ограничения Linux NAS

Самосборный Linux NAS удобен, когда нужны нестандартные targetcli-параметры, собственный мониторинг или интеграция с существующей системой автоматизации. Администратор самостоятельно поддерживает Samba, NFS, LIO, systemd, firewall и резервное копирование. Команды из этой статьи рассчитаны на Debian-подобную систему, но имена пакетов и служб в RHEL-подобных дистрибутивах могут отличаться.

Облачные и виртуальные стенды

VDS подходит для проверки конфигурации клиентов, firewall и автоматизации. Для нагрузочных тестов хранилища нужны гарантированные IOPS, низкая задержка и приватная сеть. Публичный интернет не подходит для производственного iSCSI, а NFS и SMB через нестабильный WAN требуют отдельной оценки блокировок, тайм-аутов и потери пакетов.

Для временного лабораторного стенда можно использовать облачные серверы и хранилища Timeweb Cloud, если выбранный тариф дает нужную приватную сеть и дисковую производительность. Не переносите рабочие данные в тестовую среду без проверки политики доступа и резервного копирования.

Финальный чеклист перед запуском

  • Протокол выбран по модели нагрузки: блоки для iSCSI, общий каталог для NFS, пользовательская шара для SMB.
  • Сеть хранения изолирована, MTU одинаков на всем маршруте, потери и ошибки интерфейса отсутствуют.
  • Для iSCSI настроены target ACL, CHAP и multipath при наличии двух путей.
  • Для NFS проверены exports, UID/GID, root_squash, hard и поведение при разрыве связи.
  • Для SMB проверены доменные группы, ACL, SMB3.1.1, signing и encryption согласно требованиям.
  • Производительность измерена отдельно через iperf3, fio и iostat.
  • Есть резервная копия и проверенный сценарий восстановления, а снапшоты не считаются единственной копией данных.

Практический выбор сводится к модели данных: iSCSI дает серверу удаленный диск, NFS предоставляет общий Unix-каталог, SMB3 связывает файловое хранилище с пользователями и доменными ACL. После выбора протокола настройте изоляцию сети, права, восстановление и измерения. Эти четыре проверки определяют надежность системы сильнее, чем отдельный параметр размера буфера.

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