Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

NFS vs SMB: какой сетевой протокол выбрать

Когда речь заходит о сетевых файловых системах в инфраструктуре, перед администратором неизбежно встаёт вопрос: NFS или SMB? Оба протокола решают одну задачу — предоставление общего доступа к файлам по сети — но делают это по-разному, и выбор напрямую зависит от вашего окружения.

NFS v4 vs SMB 3: ключевые отличия

NFS (Network File System) версии 4 — нативный протокол для Linux/Unix-систем. SMB 3 (Server Message Block) — протокол от Microsoft, который в современных реализациях через Samba отлично работает и на Linux.

Главные архитектурные отличия:

  • NFS v4 использует единый порт 2049/TCP, что упрощает работу с файрволом
  • SMB 3 работает на порту 445/TCP и поддерживает шифрование канала из коробки
  • NFS v4 поддерживает делегирование файлов — клиент может кэшировать данные без постоянных обращений к серверу
  • SMB 3 имеет Multichannel — агрегацию нескольких сетевых интерфейсов для роста пропускной способности

Производительность: Linux-Linux vs Linux-Windows

В связке Linux → Linux NFS v4 выигрывает: меньше накладных расходов, нативная интеграция с ядром, поддержка pNFS для параллельного доступа к данным. На гигабитной сети разница составляет 10–15% в пользу NFS при последовательном чтении крупных файлов.

В связке Linux → Windows (или смешанная среда) SMB 3 через Samba становится предпочтительным выбором: нативная поддержка Windows ACL, интеграция с Active Directory, корректная работа с приложениями, которые завязаны на семантику Windows-файловой системы.

Настройка NFS exports

Файл /etc/exports на сервере:

/data/shared  192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)
/data/readonly 192.168.10.50(ro,sync,all_squash,anonuid=65534,anongid=65534)

После изменений применяем:

exportfs -ra
systemctl reload nfs-server

На клиенте монтируем с опциями для производительности:

mount -t nfs4 -o rw,hard,intr,rsize=1048576,wsize=1048576,timeo=600 server:/data/shared /mnt/shared

Настройка SMB через smb.conf

Минимальная конфигурация Samba для файловой шары:

[global]
   workgroup = WORKGROUP
   server string = File Server
   security = user
   map to guest = bad user
   smb encrypt = required

[shared]
   path = /data/shared
   read only = no
   valid users = @fileusers
   create mask = 0664
   directory mask = 0775
   force group = fileusers

ACL и права доступа

NFS v4 поддерживает NFSv4 ACL, совместимые с POSIX и Windows ACL. Управление через nfs4_setfacl:

nfs4_setfacl -a A::username@domain:RWX /mnt/shared/dir

Для SMB ACL управляются стандартными средствами Linux (setfacl) или через Windows Explorer при наличии acl support = yes в smb.conf.

Kerberos-аутентификация

Для production-среды с Active Directory оба протокола поддерживают Kerberos:

  • NFS + Kerberos: настройка sec=krb5p в /etc/exports обеспечивает аутентификацию и шифрование данных
  • SMB + Kerberos: Samba в роли члена домена (security = ADS) автоматически использует Kerberos
# Присоединение Samba к домену
net ads join -U Administrator
systemctl restart smbd winbind

Когда что использовать

Сценарий Рекомендация
Linux-кластер, HPC, NAS для Linux-клиентов NFS v4
Смешанная среда Linux + Windows SMB 3 (Samba)
Docker volumes, Kubernetes PV NFS v4
1С, MS SQL, Windows-приложения SMB 3
Максимальная безопасность в AD SMB 3 с Kerberos

Оба протокола зрелые и надёжные. Ключевое правило: используйте NFS там, где всё Linux, и SMB там, где есть Windows. В смешанных средах Samba позволяет предоставлять одни и те же данные одновременно через оба протокола.

2 Ответа

  1. Использую NFS v4 с krb5p уже года три, ни разу не пожалел. Главное — не забыть про синхронизацию времени на всех узлах, иначе Kerberos перестаёт работать и начинается боль.

  1. Хорошая статья, но упустили момент с jumbo frames. Если включить MTU 9000 на сетевом оборудовании, производительность NFS на 10GbE вырастает очень заметно — особенно при последовательной работе с крупными файлами.