hostprofi.ru
Подобрать хостинг
Термин·буква N

NFS

краткое определение

NFS (Network File System) — протокол распределённой файловой системы, позволяющий монтировать удалённые директории как локальные. Разработан Sun Microsystems в 1984 году. Широко используется в Linux-инфраструктуре для общего доступа к файлам между серверами.

NFS (Network File System) — протокол для монтирования файловых систем с удалённых серверов как локальных директорий. Сервер NFS экспортирует директорию, клиенты монтируют её и работают с файлами прозрачно, как если бы они находились на локальном диске. Операции создания, чтения, записи и удаления файлов передаются по сети через RPC (Remote Procedure Call).

Как работает NFS

NFS использует клиент-серверную модель. Сервер настраивает список экспортируемых директорий в файле /etc/exports:

/data 192.168.1.0/24(rw,sync,no_subtree_check)
/media 10.0.0.0/8(ro,async)

Параметр rw разрешает запись, sync гарантирует синхронную запись на диск перед подтверждением (безопаснее, медленнее), async — асинхронная запись (быстрее, риск потери при сбое питания). Клиент монтирует удалённый каталог: mount -t nfs4 server:/data /mnt/data. После монтирования /mnt/data ведёт себя как обычная директория — ls, cp, mv работают без изменений.

NFS использует порт 2049 (TCP/UDP) для основного трафика. NFSv4 работает только через TCP и требует только этого единственного порта, упрощая настройку файрволла.

Версии NFS

  • NFSv2 (RFC 1094, 1989) — первая публичная спецификация. Stateless, UDP, ограничения на размер файла (2 ГБ). Устаревший.
  • NFSv3 (RFC 1813, 1995) — stateless, поддерживает TCP и UDP, файлы более 2 ГБ. Широко используется в legacy-инсталляциях.
  • NFSv4 (RFC 3530, 2003) — stateful, только TCP, встроенная аутентификация через Kerberos, делегирование файлов, именованные атрибуты. Единственный порт 2049. Рекомендуется для новых инсталляций.
  • NFSv4.1 (RFC 5661, 2010) — параллельный NFS (pNFS): данные и метаданные могут храниться на разных серверах для параллельного доступа. Поддержка сессий и мультипатхинга.
  • NFSv4.2 (RFC 7862, 2016) — Server-side copy (копирование файлов без передачи через клиент), sparse files, application I/O hints.

NFS vs SMB vs SSHFS

ПараметрNFSSMB/CIFSSSHFS
Основная платформаLinux/UnixWindows, LinuxLinux/macOS
ПроизводительностьВысокаяСредняяНизкая (накладные расходы SSH)
ШифрованиеНет (нужен Kerberos или VPN)SMB 3.0+ (AES-128)Встроено (SSH)
Простота настройкиСредняяВысокая для Windows-средВысокая
Максимальная скорость≈ скорость сети80–90% скорости сети50–70% скорости сети

История

NFS разработала Sun Microsystems в 1984 году. Sun сознательно опубликовала протокол как открытый стандарт — это позволило реализовать NFS на всех Unix-системах. RFC 1094 вышел в 1989 году. NFSv4, стандартизированный в RFC 3530 (2003), значительно упростил работу через файрволлы и добавил security. Сегодня NFS — де-факто стандарт сетевых файловых систем в Linux-среде для внутрисетевого использования.

NFS в хостинге

NFS применяется в серверной инфраструктуре для нескольких задач. Общее хранилище для кластера веб-серверов: пользовательские загрузки (фото, документы) монтируются со всех узлов через NFS — файл, загруженный на один сервер, доступен со всех. Kubernetes Persistent Volumes: NFS используется как backend для PersistentVolumeClaim, когда нужен ReadWriteMany (несколько Pod читают/пишут одновременно). CI/CD-окружения: общие артефакты сборки монтируются через NFS для ускорения пайплайнов.

Ограничения NFS: высокая задержка при операциях с большим количеством мелких файлов — каждый вызов stat(), open(), close() идёт по сети. Для кода приложения (тысячи мелких PHP/Python файлов) NFS замедляет старт в 5–20 раз относительно локального SSD. Отсутствие встроенного шифрования в NFSv3/v4 без Kerberos: NFS рекомендуется только в защищённой внутренней сети (VLAN или приватной сети), никогда не в публичном интернете.

Другие термины