Открыть сервис

NFS

NFS (Network File System, сетевая файловая система) — протокол сетевого доступа к файловым системам, разработанный компанией Sun Microsystems в 1984 году. NFS позволяет клиентским компьютерам монтировать удалённые файловые системы и работать с ними так, как если бы они находились на локальном диске. Протокол работает поверх стека TCP/IP и широко применяется в корпоративных и серверных средах, особенно в UNIX-подобных операционных системах.

История

Разработка и первые версии

NFS был создан инженером Sun Microsystems Биллом Джойем (Bill Joy) в 1984 году. Первоначально протокол предназначался для обеспечения совместного доступа к файлам в локальных сетях рабочих станций Sun. В 1985 году Sun опубликовала спецификацию NFS как открытый стандарт, что позволило другим производителям реализовывать поддержку протокола в своих системах. Версия 2 (NFSv2) была стандартизирована в 1989 году в RFC 1094 и поддерживала только протокол UDP, работая поверх 32-битных файловых указателей, что ограничивало размер файлов 4 ГБ.

Версия 3

В 1995 году вышла версия NFSv3, описанная в RFC 1813. Основные нововведения включали:

NFSv3 стала самой распространённой версией протокола на протяжении 2000-х годов.

Версия 4

В 2000 году был опубликован стандарт NFSv4 (RFC 3010, обновлён в 2003 году RFC 3530). Эта версия кардинально переработала протокол:

В 2010 году вышло обновление NFSv4.1 (RFC 5661), добавившее поддержку параллельного доступа через pNFS (Parallel NFS) и улучшенную работу с кластерами. В 2016 году была стандартизирована версия NFSv4.2 (RFC 7862), которая расширила возможности сжатия, дедупликации и пространственных операций.

Архитектура и принцип работы

Модель клиент-сервер

NFS работает по классической модели «клиент-сервер». Сервер экспортирует (делает доступными) одну или несколько файловых систем. Клиент монтирует эти экспортированные ресурсы, после чего может выполнять стандартные файловые операции: чтение, запись, создание, удаление, переименование файлов и каталогов. Протокол не имеет состояния (stateless) в версиях 2 и 3, то есть сервер не хранит информацию о состоянии открытых файлов клиента — каждый запрос содержит всю необходимую информацию. В NFSv4 протокол стал stateful, что позволило реализовать блокировки и делегирование.

Протоколы и порты

Традиционно NFS использует следующие сетевые протоколы и порты:

В NFSv4 все операции выполняются через один порт (2049), что упрощает настройку межсетевых экранов.

Формат данных

NFS использует протокол удалённого вызова процедур (RPC) для передачи запросов. Данные сериализуются с помощью External Data Representation (XDR). В NFSv4 применяется расширенный формат, поддерживающий составные операции (compound operations), что позволяет объединять несколько запросов в один пакет.

Классификация и версии

NFSv2

NFSv3

NFSv4

pNFS (Parallel NFS)

Расширение NFSv4.1, позволяющее распределять данные по нескольким серверам хранения. Клиент может обращаться к разным серверам параллельно, что значительно повышает производительность в кластерных и высоконагруженных системах. pNFS поддерживает три типа метаданных: файловые (file), блочные (block) и объектные (object).

Применение

Корпоративные и серверные среды

NFS является стандартом де-факто для организации сетевого хранения в UNIX-подобных системах. Он используется для:

Кластерные вычисления

В высокопроизводительных вычислительных кластерах (HPC) NFS применяется для организации общей файловой системы, доступной всем узлам. Однако для критически высоких нагрузок часто используются более производительные решения, такие как Lustre или GPFS, хотя pNFS частично решает эту проблему.

Встраиваемые системы и IoT

NFSv4 используется в некоторых встраиваемых системах и устройствах интернета вещей (IoT) для доступа к удалённым данным при ограниченных ресурсах.

Альтернативы

Основными конкурентами NFS являются:

Безопасность

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

В NFSv2 и v3 безопасность минимальна: аутентификация основана на UID/GID клиента, передаваемых в открытом виде. Для защиты применяются внешние средства (VPN, Kerberos). В NFSv4 встроена поддержка RPCSEC_GSS, позволяющая использовать Kerberos 5, LIPKEY и другие механизмы. Шифрование трафика возможно через туннелирование (IPsec, SSH-туннели) или через использование Kerberos с шифрованием.

Экспорт и монтирование

На сервере экспорт файловых систем настраивается в файле /etc/exports (Linux) или аналогичных конфигурациях. Для каждого экспорта можно задать:

Уязвимости

Исторически NFS был подвержен ряду атак, включая:

Современные версии NFSv4 с Kerberos и использованием файрволов считаются достаточно безопасными для корпоративного использования.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →