Сетевая файловая система ( NFS ) - это протокол распределенной файловой системы , первоначально разработанный Sun Microsystems (Sun) в 1984 году [1], позволяющий пользователю на клиентском компьютере получать доступ к файлам через компьютерную сеть , подобно доступу к локальному хранилищу. NFS, как и многие другие протоколы, основан на системе вызова удаленных процедур открытых сетевых вычислений (ONC RPC). NFS - это открытый стандарт, определенный в запросе комментариев (RFC), позволяющий любому реализовать протокол.
Версии и вариации
Sun использовала версию 1 только для собственных экспериментальных целей. Когда группа разработчиков внесла существенные изменения в NFS версии 1 и выпустила ее вне Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC. [2] [3]
NFSv2
Версия 2 протокола (определенная в RFC 1094, март 1989 г.) первоначально работала только по протоколу дейтаграмм пользователя (UDP). Его разработчики хотели сохранить серверную часть без состояния , с блокировкой (например), реализованной вне основного протокола. К созданию NFS версии 2 причастны Рассел Сандберг , Боб Лайон , Билл Джой , Стив Клейман и другие. [1] [4]
Интерфейс виртуальной файловой системы допускает модульную реализацию, отраженную в простом протоколе. К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V выпуска 2, DOS и VAX / VMS с использованием Eunice . [4] NFSv2 позволяет читать только первые 2 ГБ файла из-за 32-разрядных ограничений.
NFSv3
Версия 3 (RFC 1813, июнь 1995 г.) добавлена:
- поддержка 64-битных размеров файлов и смещений для обработки файлов размером более 2 гигабайт (ГБ);
- поддержка асинхронной записи на сервере для повышения производительности записи;
- дополнительные атрибуты файлов во многих ответах, чтобы избежать их повторной загрузки;
- операция READDIRPLUS, чтобы получить дескрипторы файлов [5] и атрибуты вместе с именами файлов при сканировании каталога;
- разные другие улучшения.
Первое предложение NFS версии 3 в Sun Microsystems было создано вскоре после выпуска NFS версии 2. Основным мотивом была попытка смягчить проблему производительности операции синхронной записи в NFS версии 2. [6] К июлю 1992 года реализация Практика устранила многие недостатки NFS версии 2, оставив только отсутствие поддержки больших файлов (64-битные размеры файлов и смещения) насущной проблемой. Это стало острой проблемой для Digital Equipment Corporation с представлением 64-битной версии Ultrix для поддержки их недавно выпущенного 64-битного процессора RISC Alpha 21064 . Ко времени появления версии 3, производители начали расширять поддержку TCP как протокола транспортного уровня . В то время как несколько поставщиков уже добавили поддержку NFS версии 2 с TCP в качестве транспорта, Sun Microsystems добавила поддержку TCP в качестве транспорта для NFS, в то же время добавила поддержку версии 3. Использование TCP в качестве транспорта, созданного с использованием NFS через глобальную сеть. более выполнимо и позволяло использовать более крупные объемы передачи для чтения и записи, превышающие ограничение в 8 КБ, установленное протоколом пользовательских дейтаграмм .
NFSv4
Версия 4 (RFC 3010, декабрь 2000 г .; пересмотрена в RFC 3530, апрель 2003 г. и снова в RFC 7530, март 2015 г.) под влиянием файловой системы Andrew File System (AFS) и блока сообщений сервера (SMB, также называемого CIFS), включает улучшения производительности, требует строгой безопасности и вводит протокол с отслеживанием состояния . [7] Версия 4 стала первой версией, разработанной Инженерной группой Интернета (IETF) после того, как Sun Microsystems передала разработку протоколов NFS.
NFS версии 4.1 (RFC 5661, январь 2010 г .; пересмотренный в RFC 8881, август 2020 г.) нацелен на предоставление поддержки протокола для использования преимуществ кластерного развертывания серверов, включая возможность обеспечения масштабируемого параллельного доступа к файлам, распределенным между несколькими серверами (расширение pNFS). Версия 4.1 включает механизм транкинга сеансов (также известный как NFS Multipathing) и доступен в некоторых корпоративных решениях как VMware ESXi .
Версия NFS 4.2 (RFC 7862) была опубликована в ноябре 2016 года [8] с новыми функциями, включая: клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы, резервирование места, блок данных приложения (ADB), помеченный NFS с помощью sec_label который поддерживает любую систему безопасности MAC, и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
Одним из больших преимуществ NFSv4 перед его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры.
Прочие расширения
WebNFS , расширение для версий 2 и 3, позволяет NFS более легко интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей клиентской реализации WebNFS. [9]
С NFS стали ассоциироваться различные протоколы боковой полосы. Примечание:
- протокол Network Lock Manager (NLM) с рекомендациями по диапазону байтов (добавлен для поддержки API-интерфейсов блокировки файлов UNIX System V )
- протокол удаленной отчетности о квотах (RQUOTAD), который позволяет пользователям NFS просматривать свои квоты хранения данных на серверах NFS
- NFS поверх RDMA , адаптация NFS, которая использует удаленный прямой доступ к памяти (RDMA) в качестве транспорта [10] [11]
- NFS-Ganesha, сервер NFS, работающий в пользовательском пространстве и поддерживающий различные файловые системы, такие как GPFS / Spectrum Scale, CephFS через соответствующие модули FSAL (уровень абстракции файловой системы). CephFS FSAL поддерживается с помощью libcephfs [12]
- Надежная NFS (TNFS) [13]
Платформы
NFS часто используется с операционными системами Unix (такими как Solaris , AIX , HP-UX ), MacOS от Apple и Unix-подобными операционными системами (такими как Linux и FreeBSD ). Он также доступен для таких операционных систем, как Acorn RISC OS , [14] AmigaOS , классическая Mac OS , OpenVMS , [3] MS-DOS , [15] Microsoft Windows , [16] OS / 2 , [17] ArcaOS , [18] Novell NetWare , [19] и IBM AS / 400 . [20] Альтернативные протоколы удаленного доступа к файлам включают в себя блок сообщений сервера (SMB, также называемый CIFS), протокол Apple Filing Protocol (AFP), протокол ядра NetWare (NCP) и файловую систему файлового сервера OS / 400 (QFileSvr.400).
SMB и NetWare Core Protocol (NCP) встречаются чаще, чем NFS в системах под управлением Microsoft Windows; AFP встречается чаще, чем NFS в системах Apple Macintosh ; а QFileSvr.400 чаще встречается в системах AS / 400 . В 2012 году Haiku добавила поддержку NFSv4 в рамках проекта Google Summer of Code.
Типовая реализация
Предполагая сценарий в стиле Unix, в котором одной машине ( клиенту ) требуется доступ к данным, хранящимся на другой машине ( сервере NFS ):
- Сервер реализует процессы демона NFS , запущенные по умолчанию как
nfsd
, чтобы сделать свои данные общедоступными для клиентов. - Администратор сервера определяет, что сделать доступным, экспортируя имена и параметры каталогов , обычно используя
/etc/exports
файл конфигурации иexportfs
команду. - Администрация безопасности сервера гарантирует, что она может распознавать и утверждать проверенных клиентов.
- Конфигурация сети сервера гарантирует, что соответствующие клиенты могут договариваться с ним через любую систему межсетевого экрана .
- Клиентский компьютер запрашивает доступ к экспортированным данным, как правило, с помощью
mount
команды. (Клиент спрашивает сервер (rpcbind), какой порт использует сервер NFS, клиент подключается к серверу NFS (nfsd), nfsd передает запрос на mountd) - Если все пойдет хорошо, пользователи на клиентской машине смогут просматривать смонтированные файловые системы на сервере и взаимодействовать с ними в рамках разрешенных параметров.
Обратите внимание, что автоматизация процесса монтирования NFS может иметь место - возможно, с использованием /etc/fstab
и / или средств автоматического монтирования .
Разработка протокола
Во время разработки протокола ONC ( в то время называемого SunRPC ) только Network Computing System (NCS) Apollo предлагала сопоставимые функции. Две конкурирующие группы возникли из-за фундаментальных различий в двух системах удаленного вызова процедур. Аргументы были сосредоточены на методе кодирования данных - внешнее представление данных (XDR) ONC всегда отображало целые числа в обратном порядке, даже если оба одноранговых узла соединения имели машинную архитектуру с прямым порядком байтов , тогда как метод NCS пытался избежать обмена байтами. всякий раз, когда два одноранговых узла разделяют общий порядок байтов в своих машинных архитектурах. Отраслевая группа под названием Network Computing Forum образовалась (март 1987 г.) в (в конечном итоге безуспешной) попытке примирить две среды сетевых вычислений.
В 1987 году Sun и AT&T объявили, что они будут совместно разрабатывать UNIX System V Release 4 для AT&T. [21] Это заставило многих других лицензиатов AT&T на UNIX System обеспокоиться тем, что это поставит Sun в выгодное положение, и в конечном итоге привело к созданию цифрового оборудования. , HP, IBM и другие, сформировавшие Open Software Foundation (OSF) в 1988 году. По иронии судьбы, Sun и AT&T раньше конкурировали за NFS Sun с удаленной файловой системой AT&T (RFS), а также за быстрое внедрение NFS поверх RFS со стороны Digital Equipment, HP, IBM и многие другие производители компьютеров склоняли большинство пользователей в пользу NFS. Совместимости NFS способствовали события под названием «Connectathons», начавшиеся в 1986 году, которые позволили провести независимое от поставщика тестирование реализаций друг с другом. [22] OSF приняла Распределенную вычислительную среду (DCE) и Распределенную файловую систему DCE (DFS) поверх Sun / ONC RPC и NFS. DFS использовала DCE в качестве RPC, а DFS - производную от файловой системы Andrew File System (AFS); Сам DCE является производным от набора технологий, включая NCS Apollo и Kerberos . [ необходима цитата ]
1990-е
Sun Microsystems и Internet Society (ISOC) достигли соглашения о передаче «управления изменениями» ONC RPC, с тем чтобы организация ISOC по инженерным стандартам, Internet Engineering Task Force (IETF), могла публиковать документы по стандартам (RFC), связанные с ONC RPC. протоколы и могут расширять ONC RPC. OSF попыталась сделать DCE RPC стандартом IETF, но в конечном итоге оказалась не желающей отказываться от контроля изменений. Позже IETF решила расширить ONC RPC, добавив новый вариант аутентификации, основанный на прикладном программном интерфейсе общих служб безопасности (GSSAPI), RPCSEC GSS , чтобы удовлетворить требования IETF о том, что стандарты протокола имеют адекватную безопасность.
Позже Sun и ISOC достигли аналогичного соглашения о предоставлении ISOC контроля над изменением NFS, хотя при написании контракта тщательно исключали NFS версии 2 и версии 3. Вместо этого ISOC получила право добавлять новые версии в протокол NFS, что привело к созданию IETF. указав NFS версии 4 в 2003 году.
2000-е
К 21 веку ни DFS, ни AFS не достигли большого коммерческого успеха по сравнению с SMB-CIFS или NFS. IBM, которая ранее приобрела Transarc , основного коммерческого поставщика DFS и AFS, пожертвовала большую часть исходного кода AFS сообществу свободного программного обеспечения в 2000 году. Проект OpenAFS продолжается . В начале 2005 года IBM объявила о прекращении продаж AFS и DFS.
В январе 2010 года Panasas предложил NFSv4.1 на основе своей технологии Parallel NFS (pNFS), утверждая, что она улучшает возможности параллелизма доступа к данным [23] . Протокол NFSv4.1 определяет метод отделения метаданных файловой системы от местоположения файловых данных; он выходит за рамки простого разделения имени и данных, распределяя данные между набором серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под единым зонтиком сервера. Некоторые продукты представляют собой многоузловые NFS-серверы, но участие клиента в разделении метаданных и данных ограничено.
Сервер NFSv4.1 pNFS - это набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.
Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с сервера, он может напрямую взаимодействовать с набором серверов данных, принадлежащих к коллекции серверов pNFS. Клиент NFSv4.1 может быть включен для непосредственного участия в точном расположении файловых данных и во избежание одиночного взаимодействия с одним сервером NFS при перемещении данных.
Помимо pNFS, NFSv4.1 предоставляет:
- Сессии
- Делегирование каталога и уведомления
- Многосерверное пространство имен
- списки контроля доступа и дискреционный контроль доступа
- Атрибуция удержания
- SECINFO_NO_NAME
Смотрите также
- 9P (протокол) - Plan 9 Filesystem Protocol
- Alluxio
- Файловая система Andrew
- BeeGFS , параллельная файловая система
- CacheFS - механизм кеширования для клиентов Linux NFS
- Распределенная файловая система Hadoop ( HDFS )
- Kerberos (протокол)
- Сетевая информационная служба
- Удаленная файловая система
- Корневая тыква
- Samba (программное обеспечение)
- Файловая система Secure Shell - смонтируйте удаленный каталог, используя только ssh-логин на удаленном компьютере.
- Блок сообщений сервера
- Общий ресурс
- TCP Wrapper
Рекомендации
- ^ a b Рассел Сандберг; Дэвид Голдберг; Стив Клейман; Дэн Уолш; Боб Лайон (1985). «Дизайн и реализация сетевой файловой системы Sun». USENIX . CiteSeerX 10.1.1.14.473 . Цитировать журнал требует
|journal=
( помощь ) - ^ NFS Illustrated (2000) Брентом Каллаганом - ISBN 0-201-32570-5
- ^ а б «Службы HP TCP / IP для управления OpenVMS» . h41379.www4.hpe.com . HP . Проверено 24 сентября 2016 года .
- ^ а б Рассел Сандберг. «Сетевая файловая система Sun: дизайн, реализация и опыт» (PDF) . Технический отчет . Sun Microsystems.
- ^ Арпачи-Дюссо, Ремзи; Арпачи-Дюссо, Андреа (март 2015 г.). Операционные системы: Три простых элемента (PDF) (.9 изд.). Книги Арпачи-Дюссо. п. 5 . Проверено 8 ноября 2017 года .
- ^ Брайан Павловски; Чет Ющак; Петер Штаубах; Карл Смит; Дайан Лебель; Дэвид Хитц (1994). «Разработка и реализация NFS версии 3» . USENIX .
- ^ «Версия 4 NFS» . USENIX . 2005-04-14.
- ^ Хейнс, Томас (2016-11-01). «NFS версии 4, второстепенной версии 2» .
- ^ yanfs.dev.java.net [ постоянная мертвая ссылка ]
- ^ Том Талпи (28 февраля 2006 г.). «Обновление реализации NFS / RDMA» (PDF) . Network Appliance, Inc. Архивировано из оригинального (PDF) 12 мая 2011 года.
- ^ Брент Каллаган (28 января 2002 г.). «NFS поверх RDMA» (PDF) . Sun Microsystems.
- ^ Сингх, Каран (2016). «4: Работа с файловой системой Ceph». Поваренная книга Ceph . Бирмингем: Packt Publishing Ltd. стр. 110. ISBN 9781784397364. Проверено 21 марта 2017 .
NFS-Ganesha - это сервер NFS, который работает в пространстве пользователя и поддерживает CephFS FSAL (уровень абстракции файловой системы) с использованием libcephfs.
- ^ Гловер
, Фред. @zk3.dec.com>«Спецификация расширений доверенного протокола NFS (TNFS)» . tools.ietf.org . - ^ [1]
- ^ «Другое программное обеспечение от SUN Microsystems» . www.computinghistory.org.uk . Центр истории вычислений . Проверено 24 сентября 2016 года .
- ^ «Введение в службы Microsoft Windows для UNIX 3.5» . technet.microsoft.com . Microsoft . Проверено 24 сентября 2016 года .
- ^ «Плагин NTFS для NetDrive» . ecsoft2.org . Проверено 22 сентября 2020 .
- ^ «NetDrive для OS / 2» . arcanoae.com . Проверено 22 сентября 2020 .
- ^ «Шлюз NFS для NetWare 6.5» . www.novell.com . Novell . Проверено 24 сентября 2016 года .
- ^ «Поддержка сетевой файловой системы OS / 400» (PDF) . publib.boulder.ibm.com . IBM . Проверено 24 сентября 2016 года .[ постоянная мертвая ссылка ]
- ^ Кэрол Паттон (1987-10-26). «AT&T лицензирует чип SPARC Sun Microsystems» . InfoWorld . п. 37 . Проверено 16 июля 2019 .
- ^ "Что такое Коннектатон?" . Оригинальный сайт Connectathon.Org . Архивировано из оригинала 28 января 1999 года.
- ^ «pNFS» . Панасас . Проверено 4 августа 2013 года .
Внешние ссылки
- RFC :
- RFC 5661 - протокол сетевой файловой системы (NFS) версии 4, второстепенной версии 1
- RFC 5403 - RPCSEC_GSS версии 2
- RFC 3530 - Спецификация протокола NFS версии 4
- RFC 2054 - Спецификация WebNFS
- RFC 2339 - Соглашение о контроле за изменениями Sun / ISOC NFS
- RFC 2203 - Спецификация RPCSEC_GSS
- RFC 1813 - Спецификация протокола NFS версии 3
- RFC 1790 - Соглашение об управлении изменениями Sun / ISOC ONC RPC
- RFC 1094 - спецификация протокола NFS версии 2
- Различные ресурсы:
- IETF: Устав сетевой файловой системы версии 4 (nfsv4)
- Обзор Linux NFS, часто задаваемые вопросы и документация HOWTO
- Работа NFS объяснена с помощью диаграмм последовательности. Архивировано 22 сентября 2020 г. на Wayback Machine.
- Обзор статьи Майка Эйслера «Почему NFS - отстой» на симпозиуме по Linux 2006 г., 27 октября 2006 г.