NFS или SMB/CIFS: сравнение и выбор сетевого файлового протокола для инфраструктуры | AdminWiki

NFS или SMB/CIFS: сравнение и выбор сетевого файлового протокола для инфраструктуры

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

Выбор между NFS и SMB/CIFS определяется тремя факторами: составом парка операционных систем, требованиями к правам доступа и профилем нагрузки. Для Linux-инфраструктуры и гипервизоров обычно берут NFSv4.1 или NFSv4.2: меньше оверхед, POSIX-семантика, предсказуемая пропускная способность на крупных файлах. Для Windows-домена и смешанного парка с богатой моделью прав берут SMB 3.1.1: NTFS ACL, Kerberos, шифрование канала и Multichannel.

Практическое правило для быстрого старта: Linux-клиенты плюс Linux-сервер - это NFS, Windows-клиенты - SMB, смешанный парк - SMB3 с POSIX extensions либо NFS с компонентом Services for NFS. Git-репозитории, бэкапы, видеомонтаж и диски виртуальных машин чаще живут на NFS, а общие документы, домашние каталоги и сетевые принтеры на SMB.

Дальше - сравнение по версиям, производительности, правам и диагностике, с готовыми конфигурациями и предупреждениями о рисках.

NFS и SMB/CIFS: ключевые различия и области применения

NFS (Network File System) появился в Sun Microsystems для Unix-систем и работает поверх TCP/IP на порту 2049. SMB (Server Message Block) вырос из протокола Microsoft для Windows и слушает порт 445. CIFS (Common Internet File System) - это коммерческое имя SMB1, версии, которую Microsoft продвигала как открытый стандарт в конце 1990-х. Термин CIFS живёт до сих пор, хотя сам SMB1 отключён по умолчанию в Windows Server и в Samba: нормального шифрования в нём нет, он уязвим к relay-атакам и не умеет Multichannel.

Области применения разошлись исторически. NFS - это Linux-кластеры, HPC, датасторы VMware, постоянные тома Kubernetes, бэкапы и медиаархивы. SMB - домен Active Directory, файловые серверы общего доступа, NAS для офиса, macOS и печать.

История и эволюция протоколов

NFS v2 работал по UDP и оперировал 32-битными смещениями. NFSv3 добавил 64-битные операции, асинхронную запись и отдельные процедуры листинга, что заметно ускорило работу с большими каталогами. NFSv4 собрал в один протокол монтирование, блокировки, ACL и строковые идентификаторы владельцев; NFSv4.1 принёс pNFS и сессии, NFSv4.2 - серверное копирование, разреженные файлы и маркировку данных.

SMB прошёл путь от SMB1/CIFS к SMB2 (меньше round-trip'ов), SMB2.1 (leasings и крупные операции чтения), SMB3.0 (Multichannel, шифрование AES-128-CCM, scale-out) и SMB3.1.1 (AES-128-GCM, целостность, предварительная аутентификация). В современных системах рабочая версия - SMB 3.1.1, а SMB1 держат только для legacy-оборудования вроде старых сканеров.

Основные технические отличия

КритерийNFSSMB/CIFS
АутентификацияAUTH_SYS в v3, Kerberos в NFSv4NTLM или Kerberos
ПраваPOSIX ACL, привязка к UID/GIDNTFS ACL, привязка к SID
Блокировкиadvisory, приложение само вызывает fcntlmandatory, плюс oplocks и leases
Порты2049 TCP/UDP, вспомогательный rpcbind 111445 TCP, NetBIOS 137-139 для legacy
Согласованностьclose-to-openoplocks, leases, durability handles
Имена файловрегистрозависимыерегистронезависимые по умолчанию
Мультиплексированиесессии NFSv4.1, опция nconnectSMB Multichannel

Разница в блокировках объясняет половину инцидентов с «битыми» файлами. NFSv3 выдаёт advisory-блокировки, и если хотя бы одно приложение не запрашивает блокировку через fcntl, конфликт записи не будет предотвращён. SMB работает с mandatory-блокировками и разрывает oplock, когда второй клиент открывает файл на запись.

Права в NFS опираются на числа UID/GID, и по умолчанию экспорт сжимает root клиента в анонимного пользователя (root_squash). NFSv4 требует nfs-idmapd (idmapd) для сопоставления строковых владельцев вида user@domain с локальными идентификаторами. В SMB права привязаны к SID и переживают переименование учётной записи.

Производительность и настройка: NFS против SMB

На гигабитном канале оба протокола упираются в сеть: практический предел - 110-115 МБ/с. Разница проявляется на 10/25/100 GbE, где на первый план выходят оверхед на операцию, размер блока и число параллельных потоков. В Linux-средах NFS обычно даёт меньший CPU-оверхед на клиенте и выше пропускную способность на последовательных операциях, а SMB 3.1.1 выигрывает в Windows за счёт Multichannel, RSS и крупных операций чтения.

Задержка определяется сетью и диском, реже протоколом: локальный NVMe отвечает за 0,1-0,3 мс, доступ по 10 GbE добавляет 0,5-1,5 мс, синхронная запись на HDD-массив легко даёт 5-10 мс. IOPS на мелких блоках сильнее зависят от типа хранилища и наличия sync на сервере, чем от выбора NFS или SMB.

Параметры монтирования и их влияние на скорость

NFS: rsize и wsize до 1048576 (1 МБ); nconnect=4 или 8 на NFSv4.1 и выше создаёт несколько TCP-соединений к одному серверу и снимает ограничение одного потока; noatime и nodiratime убирают лишние записи; actimeo задаёт срок жизни кэша атрибутов; hard вместе с timeo=600,retrans=2 определяет поведение при обрывах. NFS over RDMA (NFSoRDMA) поверх RoCE или InfiniBand снижает задержку и нагрузку на CPU, но требует совместимых адаптеров.

SMB: vers=3.1.1 оставляет только современные диалекты; cache=strict даёт согласованность, cache=loose - скорость; actimeo управляет кэшем атрибутов; SMB Multichannel включает несколько TCP-соединений при двух и более NIC либо через RSS. Jumbo frames (MTU 9000) уменьшают число прерываний, но требуют одинакового MTU на клиенте, коммутаторе и сервере. Отключение signing (signing=off) экономит CPU и добавляет риск подмены трафика, поэтому допустимо только в доверенном сегменте.

На сервере ключевой выбор - async или sync. Режим sync подтверждает запись после попадания на диск, async отвечает сразу, и при отключении питания последние данные теряются. Для бэкапов и баз данных берите sync, для медиатеки и временных данных async приемлем.

Предупреждение: async на экспорте NFS и nconnect дают заметный прирост, но проверяйте их на стенде. Поднять отдельный облачный сервер с нужным числом vCPU и сетевым лимитом проще, чем рисковать production: Timeweb Cloud даёт VDS, хранилище и Kubernetes для тестового контура за несколько минут.

Тестирование производительности: инструменты и метрики

Метрики: пропускная способность (МБ/с), IOPS, задержка (мс), загрузка CPU сервера и клиента, число TCP-ретрансмиссий. Инструменты: fio для профилей randread, randwrite и seqwrite, iperf3 для чистой сети, dd с oflag=direct для грубой оценки последовательной записи, diskspd для Windows, nfsiostat и smbclient для протокольного уровня.

Профиль fio под базу данных: 16 потоков, block size 8k, randrw 70/30, iodepth 32, runtime 300. Запускайте один и тот же профиль на NFS и на SMB с одного клиента в одно время суток, иначе тест сравнит нагрузку, а не протоколы. Фиксируйте в отчёте версию протокола, MTU и число TCP-потоков: расхождение между NFSv3 и NFSv4.2 меняет цифры на десятки процентов.

Совместимость с операционными системами и сценарии использования

Встроенная поддержка выглядит так: Linux-клиенты работают с NFS и SMB (cifs-utils), Windows - с SMB нативно и с NFS через компонент Services for NFS, доступный в редакциях Pro и Enterprise и в Windows Server, macOS - с SMB нативно и с NFS через nfs:// или automount. Android и iOS читают SMB через сторонние файловые менеджеры.

Смешанный парк Windows и Linux

SMB 3.1.1 с POSIX extensions позволяет Linux-клиентам видеть POSIX-права на SMB-шаре, но расширение поддерживают не все клиенты: Linux CIFS и macOS его понимают, Windows игнорирует POSIX-атрибуты. Обратный вариант - Services for NFS на Windows-клиентах с маппингом UID/GID - работает, но требует ручных таблиц сопоставления, а на мелких файлах проигрывает SMB.

Для смешанного парка на практике выбирают Samba или Windows Server со SMB3: idmap в Samba (backends rid, ad, autorid) сопоставляет SID домена и локальные UID/GID. Грабли: без SSSD или winbind владельцы файлов превращаются в nobody, а новые файлы получают права 0777 из-за ошибки в маппинге.

Виртуализация и гипервизоры

VMware ESXi монтирует NFSv3 и NFSv4.1 как датасторы; SMB-датасторы требуют отдельного VIB и покрывают не все сценарии. Для NFS-датастора критичны sync на массиве и стабильная задержка: десятки виртуальных машин генерируют много мелких операций. Proxmox VE поддерживает NFS и CIFS как типы хранилищ; NFS чаще берут для дисков VM, CIFS - для ISO-образов и бэкапов. vMotion на NFS работает без общей VMFS, а Hyper-V поверх SMB 3.0 требует SMB Multichannel и постоянно доступной шары.

Если сравниваете файловые протоколы с блочными, смотрите разбор протоколов доступа к СХД: iSCSI, Fibre Channel, NFS и SMB, где разобраны задержки, multipath и типовые ошибки с MTU.

Медиахранилище и домашние NAS

TrueNAS отдаёт данные по SMB и NFS одновременно из одного датасета ZFS. Для Windows-клиентов и macOS (SMB у неё нативный) берут SMB, для Linux-медиасерверов (Plex, Jellyfin) - NFS: меньше оверхед на открытие и чтение крупных файлов. Поток 4K HDR требует 50-100 Мбит/с, то есть 6-12 МБ/с, поэтому даже 1 GbE держит несколько одновременных зрителей, а для remux-файлов на 80-100 Мбит/с стоит перейти на 2.5 или 10 GbE. Файлы по 40-90 ГБ на HDD читаются стабильнее, когда включены крупные rsize/wsize и readahead на сервере.

Модели прав доступа и безопасность

NFSv3 доверяет клиенту: сервер принимает присланные UID/GID как есть (AUTH_SYS). Пользователь с root на клиенте может представиться любым UID, поэтому NFSv3 без Kerberos уместен только в доверенной сети. NFSv4 с sec=krb5 и выше проверяет билет Kerberos, и подмена UID становится невозможной.

Права доступа в NFS: POSIX ACL и UID/GID

Права в NFS - это POSIX-биты и POSIX ACL, привязанные к числам UID/GID. Если на клиенте пользователь имеет UID 1001, а на сервере под этим номером числится другой человек, доступ получит не тот. Решения: общий LDAP или Active Directory с SSSD, NIS для старых стендов либо единые UID/GID в файлах passwd на всех узлах.

Экспорт по умолчанию включает root_squash: root клиента превращается в анонимного пользователя, обычно nobody или 65534, поэтому записать файл с владельцем root он не может. Опция no_root_squash отключает эту защиту и даёт клиенту права root на сервере, так делать не стоит. Дополнительно all_squash сводит всех к анонимному пользователю, а anonuid и anongid задают его UID/GID. Для NFSv4 работает nfs-idmapd, сопоставляющий строковые владельцы user@domain с локальными идентификаторами; при разном NFSv4 domain на клиенте и сервере владельцы показываются как nobody.

Права доступа в SMB: NTFS ACL и SID

SMB оперирует SID (Security Identifier) и списками NTFS ACL с наследованием. Права не зависят от числового UID: переименование пользователя или перенос шары на другой сервер сохраняет доступ. В Windows действуют два слоя - share permissions и NTFS permissions, и при конфликте побеждает более строгий.

В Samba права хранят в расширенных атрибутах через vfs objects = acl_xattr, тогда Windows-клиент видит привычный редактор ACL. Без acl_xattr права берутся напрямую из POSIX-битов, и Windows показывает упрощённую картину. Наследование настраивайте явно: без соответствующего флага новые каталоги получают права родителя, а файлы от чужих приложений могут выпадать из схемы.

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

NFSv4 поддерживает три уровня защиты: sec=krb5 (аутентификация), sec=krb5i (плюс проверка целостности), sec=krb5p (плюс шифрование трафика). Шифрование krb5p заметно нагружает CPU, поэтому на 25 и 100 GbE чаще берут krb5i.

SMB 3.1.1 шифрует канал алгоритмами AES-128-CCM и AES-128-GCM, signing защищает от подмены, а SMB1 отключён в современных системах и нужен только для legacy-оборудования в изолированном сегменте. Требования к инфраструктуре одинаковы для обоих протоколов: синхронное время (NTP) и корректный DNS, иначе Kerberos не выдаст билет. Подробный разбор причин отказа доступа к NAS, включая DNS, NTP, Kerberos и Active Directory, собран в статье об ошибке аутентификации в NAS и файловых сервисах.

Диагностика проблем с доступом: NFS и SMB

Порядок разбора одинаков для обоих протоколов: сеть, затем порт и транспорт, затем аутентификация, затем права, и только после этого приложение. Пропуск шага «сеть» даёт самые долгие простои, потому что для пользователя ошибки прав и ошибки маршрутизации выглядят одинаково.

  1. ping и проверка порта: 2049 для NFS, 445 для SMB.
  2. Логи сервера: journalctl -u nfs-server, journalctl -u smbd, /var/log/samba/log.smbd, а на клиенте dmesg.
  3. Конфигурация: showmount -e для NFS, testparm -s для Samba.
  4. Права: ls -l и getfacl в Linux, вкладка безопасности или icacls в Windows.
  5. Трафик: tcpdump на 2049 и 445 при непонятных зависаниях.

Типичные ошибки и их причины

Permission denied при монтировании NFS чаще всего означает несовпадение UID/GID или срабатывание root_squash. Сообщение access denied by server приходит, когда клиент не попал в /etc/exports или указан не тот CIDR. Ошибка RPC: Timed out указывает на rpcbind, mountd или закрытые порты в firewall: нужны 111 и либо фиксированные порты, либо открытый динамический диапазон. Stale file handle возникает после пересоздания экспорта или перезагрузки сервера без сохранения состояния, помогает размонтирование с последующим монтированием.

В SMB Access denied и STATUS_ACCESS_DENIED указывают на ACL или неверные учётные данные, STATUS_LOGON_FAILURE - на пароль и домен, mount error(13) в Linux - на файл credentials или неподходящий sec. Ошибка mount error(112) host is down часто означает попытку договориться по SMB1, который отключён на сервере: добавьте vers=3.0 или 3.1.1. Сообщение STATUS_BAD_NETWORK_NAME появляется при опечатке в имени шары.

Инструменты диагностики

NFS: showmount -e server, rpcinfo -p server, nfsstat -s и nfsstat -c для статистики вызовов, nfsiostat для задержек операций, содержимое /proc/self/mountstats, rpcdebug для включения отладочных сообщений ядра. SMB: smbclient -L //server -U user для перечисления шар, smbstatus для активных сессий и блокировок, testparm для проверки smb.conf, wbinfo -t и net ads testjoin для проверки доверия к домену.

Пошаговые сценарии для зависаний, просадок скорости и ошибок NFS разобраны в материале про диагностику NFS: nfsstat, nfsiostat, mountstats и журналы. Для разбора больших логов удобно подключить LLM через агрегатор API: AiTunnel даёт доступ к GPT, Gemini и Claude через один интерфейс с оплатой в рублях, что ускоряет поиск аномалий в выводе nfsstat и smbstatus.

Практические рекомендации по настройке

Настройка NFS-сервера и клиента

На сервере ставят пакет nfs-kernel-server в Debian и Ubuntu либо nfs-utils в RHEL-семействе. В /etc/exports добавляют строку вида: /srv/data 10.10.0.0/24(rw,sync,no_subtree_check,root_squash,fsid=0). Для NFSv4 задают псевдокорень через fsid=0 и монтируют как server:/ или server:/export. Изменения применяют командой exportfs -ra и включают службу: systemctl enable --now nfs-server. В firewall открывают 2049/tcp и 111.

На клиенте нужен пакет nfs-common, монтирование выполняется командой mount -t nfs4 -o rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,nconnect=4 server:/export /mnt. В /etc/fstab добавляют опцию _netdev, чтобы монтирование ждало сеть. Для парка серверов и быстрых переподключений удобен autofs с таймаутом 60-120 секунд.

Готовые параметры для видео, логов и баз данных с разбором vers, async, wsize, rsize, timeo и nohide собраны в руководстве по практической настройке NFS для максимальной скорости и стабильности.

Настройка SMB-сервера и клиента

На сервере ставят пакет samba. В smb.conf создают секцию шары: [data] path = /srv/data, valid users = @smbusers, read only = no, browseable = yes, vfs objects = acl_xattr, create mask = 0660. Пользователя добавляют командой smbpasswd -a user, службы включают так: systemctl enable --now smbd nmbd. Конфигурацию проверяют через testparm -s. В Windows достаточно открыть \\server\data или подключить диск командой net use Z: \\server\data /user:domain\user.

На Linux-клиенте нужен пакет cifs-utils, монтирование: mount -t cifs //server/data /mnt -o vers=3.1.1,credentials=/etc/smb.cred,uid=1000,gid=1000,file_mode=0660,dir_mode=0770,_netdev,nofail. Файл credentials держите с правами 600. Любые правки ACL проверяйте на копии данных или на отдельном стенде: ошибка в valid users способна закрыть доступ всей группе.

Разграничение прав для инструментов и служебных каталогов, включая сравнение NFSv4.2 и SMB 3.1.1 и проверку монтирования на Linux и Windows, разобрано в статье о настройке NFS и SMB шар для хранилища инструментов.

Итоговое сравнение и рекомендации по выбору

КритерийNFSSMB/CIFS
Windows-клиентыServices for NFS, нужна настройка маппингаНативно, без дополнений
Linux-клиентыНативно, лучшая поддержка POSIXcifs-utils, POSIX extensions поддерживаются частично
macOSnfs:// или automountНативно, протокол по умолчанию
ПроизводительностьМеньше оверхед в Linux, ровный throughput на крупных файлахMultichannel и крупные операции, лучше в Windows
ПраваPOSIX ACL, UID/GIDNTFS ACL, SID, наследование
БезопасностьKerberos krb5i и krb5pAES-128-GCM, signing, Kerberos
АдминистрированиеЭкспорт из нескольких строк, но UID нужно синхронизироватьБольше настроек, зато интеграция с AD из коробки
ГипервизорыVMware, Proxmox, KVMHyper-V, часть NAS-платформ
Диагностикаnfsstat, nfsiostat, showmount, mountstatssmbclient, smbstatus, testparm
  • Linux-only, HPC, Kubernetes, бэкапы, диски VM: NFSv4.1 или NFSv4.2 с Kerberos, nconnect и jumbo frames.
  • Windows-домен, офисные документы, домашние каталоги: SMB 3.1.1 с signing и Multichannel.
  • Смешанный парк: SMB3 с POSIX extensions там, где Linux-клиенты их поддерживают, либо NFS плюс Services for NFS на Windows; UID/GID ведите через Active Directory или LDAP.
  • Виртуализация: NFS для дисков VM на VMware и Proxmox, SMB 3.0 и выше для Hyper-V и бэкапов.
  • Медиахранилище: NFS для Linux-медиасерверов, SMB для Windows и macOS, переход на 2.5 или 10 GbE при битрейте выше 200 Мбит/с.
  • Любую конфигурацию проверяйте на стенде через fio и iperf3, фиксируя версию протокола, MTU и число потоков.

Начните с инвентаризации клиентов. Если 80 процентов рабочих станций работают под Windows, ставьте SMB 3.1.1 и не тратьте время на NFS-клиент в Windows. Если основная нагрузка приходится на Linux-серверы и гипервизоры, NFSv4.2 с nconnect и Kerberos даёт меньше точек отказа и проще масштабируется. Оба протокола умеют шифрование и проверку целостности, поэтому итоговое решение сводится к парку операционных систем и модели прав, а не к теоретической скорости передачи.

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