Network File System
- 1 year ago
- 0
- 0
Network File System ( NFS ) — протокол сетевого доступа к файловым системам , первоначально разработан Sun Microsystems в 1984 году . За основу взят протокол вызова удалённых процедур ( ONC RPC , англ. Open Network Computing Remote Procedure Call ). Позволяет монтировать (подключать) удалённые файловые системы через сеть.
NFS абстрагирован от типов файловых систем как сервера , так и клиента. Существует множество реализаций серверов и клиентов NFS для различных операционных систем и аппаратных архитектур. Наиболее зрелая версия NFS — v.4 , поддерживающая различные средства аутентификации (в частности, Kerberos и с использованием протокола ) и списки контроля доступа (как POSIX , так и Windows -типов).
NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от FTP , протокол NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS-файлом, без каких-либо модификаций самой программы.
NFS-клиенты получают доступ к файлам на NFS-сервере путём отправки RPC -запросов на сервер. Это может быть реализовано с использованием обычных пользовательских процессов, а именно, NFS-клиент может быть пользовательским процессом, который осуществляет конкретные RPC-вызовы на сервер, который также может быть пользовательским процессом.
Важной частью последней версии стандарта NFS (v4.1) стала спецификация pNFS , нацеленная на обеспечение распараллеленной реализации общего доступа к файлам, увеличивающая скорость передачи данных пропорционально размерам и степени параллелизма системы.
Изначальными требованиями при разработке NFS были:
Реализация NFS состоит из нескольких компонентов. Некоторые из них локализованы либо на сервере, либо на клиенте, а некоторые используются и на обеих сторонах соединения. Некоторые компоненты не требуются для обеспечения основных функциональных возможностей, но составляют часть расширенного интерфейса NFS.
Протокол NFS определяет набор запросов (операций), которые могут быть направлены клиентом к серверу, а также набор аргументов и возвращаемые значения для каждого из этих запросов. Версия 1 этого протокола существовала только в недрах Sun Microsystems и никогда не была выпущена. Все реализации NFS (в том числе NFSv3) поддерживают версию 2 NFS (NFSv2), которая впервые была выпущена в 1985 году в SunOS 2.0. Версия 3 протокола была опубликована в 1993 году и реализована некоторыми фирмами-поставщиками.
Протокол удаленного вызова процедур ( RPC ) определяет формат всех взаимодействий между клиентом и сервером. Каждый запрос NFS посылается как пакет RPC.
Внешнее представление данных (XDR — External Data Representation ) обеспечивает машинно-независимый метод кодирования данных для пересылки через сеть. Все запросы RPC используют кодирование XDR для передачи данных. XDR и RPC используются для реализации многих других сервисов, помимо NFS.
Программный код сервера NFS отвечает за обработку всех запросов клиента и обеспечивает доступ к экспортируемым файловым системам. Программный код клиента NFS реализует все обращения клиентской системы к удаленным файлам путём посылки серверу одного или нескольких запросов RPC.
Протокол монтирования определяет семантику монтирования и размонтирования файловых систем NFS. NFS использует несколько фоновых процессов- демонов . На сервере набор демонов nfsd ожидает запросы от клиентов NFS и отвечает на них. Демон mountd обрабатывает запросы монтирования. На клиенте набор демонов biod обрабатывает асинхронный ввод-вывод блоков файлов NFS.
Менеджер блокировок сети (NLM — Network Lock Manager) и монитор состояния сети (NSM — Network Status Monitor) вместе обеспечивают средства для блокировки файлов в сети. Эти средства, хотя формально не связаны с NFS, можно найти в большинстве реализаций NFS. Они обеспечивают сервисы, не возможные в базовом протоколе. NLM и NSM реализуют функционирование сервера с помощью демонов lockd и statd, соответственно.
Первая версия применялась только для внутреннего использования в Sun в экспериментальных целях.
Версия 2 (NFSv2) выпущена в марте 1989 года, первоначально полностью работала по протоколу UDP . Разработчики решили не хранить данных о внутреннем состоянии внутри протокола, как пример, блокировка, реализованная вне базового протокола. Люди, вовлечённые в создание NFS версии 2 — Расти Сэндберг ( Rusty Sandberg ,) Боб Лайон ( Bob Lyon ), Билл Джой и Стив Клейман ( Steve Kleiman ).
NFSv3 вышла в июне 1995 года, в ней добавлена поддержка дескрипторов файлов переменного размера до 64 байт (в версии 2 — массив фиксированного размера 32 байта), снято ограничение на 8192 байта в RPC-вызовах чтения и записи (тем самым, размер передаваемого блока в вызовах ограничен только пределом для UDP-датаграммы — 65535 байт), реализована поддержка файлов больших размеров, поддержаны асинхронные вызовы операций записи, к процедурам READ и WRITE добавлены вызовы ACCESS (проверка прав доступа к файлу), MKNOD (создание специального файла Unix), READDIRPLUS (возвращает имена файлов в каталоге вместе с их атрибутами), FSINFO (возвращает статистическую информацию о файловой системе), FSSTAT (возвращает динамическую информацию о файловой системе), PATHCONF (возвращает POSIX.1-информацию о файле) и COMMIT (передает ранее сделанные асинхронные записи на постоянное хранение).
На момент введения версии 3 отмечен рост популярности в среде разработчиков протокола TCP . Некоторые независимые разработчики самостоятельно добавили поддержку протокола TCP для NFS версии 2 в качестве транспортного, Sun Microsystems добавили поддержку TCP в NFS в одном из дополнений к версии 3. С поддержкой TCP появилась возможность использования NFS в глобальных сетях .
NFSv4 выпущена в декабре 2000 года под влиянием AFS и CIFS , в неё включены улучшения производительности и безопасности. Версия 4 стала первой версией, разработанной совместно с Internet Engineering Task Force ( IETF ). NFS версии v4.1 была одобрена IESG в январе 2010 года (новая спецификация объёмом 612 страниц стала известна как самый длинный документ, одобренный IETF). Важным нововведением версии 4.1 является спецификация pNFS — Parallel NFS, механизма параллельного доступа NFS-клиента к данным множества распределенных NFS-серверов. Наличие такого механизма в стандарте сетевой файловой системы поможет строить распределённые облачные хранилища и информационные системы.
NFS версии 4.2 была опубликована в ноябре 2016 и включает новые особенности: клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы , резервирование места, блок данных приложения (ADB), помеченный NFS с атрибутом sec_label, который адаптируется к любой системе безопасности MAC и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
WebNFS — это расширение для NFS версий 2 и 3, которое позволяют легче интегрироваться в веб-браузеры и дает возможность работы через брандмауэр . Различные сторонние протоколы стали ассоциироваться с NFS, в том числе:
Менеджер блокировок сети (NLM — Network Lock Manager) и монитор состояния сети (NSM — Network Status Monitor) вместе обеспечивают средства для блокировки файлов в сети. Эти средства, хотя формально не связаны с NFS, можно найти в большинстве реализаций NFS. Они обеспечивают сервисы, невозможные в базовом протоколе. NLM и NSM реализуют функционирование сервера с помощью демонов lockd и statd, соответственно.
Протокол удалённой информации о квотах (RQUOTAD) (NFS позволяет пользователям просматривать дисковую квоту на удалённом NFS сервере).
Хотя NFS чаще всего используют в Unix-подобных системах, данный протокол можно также использовать и на других операционных системах, таких, как , OpenVMS , Microsoft Windows , Novell NetWare , и IBM i .
В число альтернативных протоколов удаленного доступа к файлам входят протокол SMB ( Server Message Block , также известный как Samba и CIFS ), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP). Под операционной системой Microsoft Windows SMB и NetWare Core Protocol (NCP) используется чаще, чем NFS. В системах Macintosh AFP встречается чаще, чем NFS.