Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Сетевая файловая система ( 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 File Server (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.

Сравнение производительности NFS SPECsfs2008, по состоянию на 22 ноября 2013 г.

Типовая реализация [ править ]

Предполагая сценарий в стиле Unix, в котором одному компьютеру ( клиенту ) требуется доступ к данным, хранящимся на другом компьютере ( сервере NFS ):

  1. Сервер реализует процессы демона NFS , запущенные по умолчанию как nfsd, чтобы сделать свои данные общедоступными для клиентов.
  2. Администратор сервера определяет, что сделать доступным, экспортируя имена и параметры каталогов , обычно используя /etc/exportsфайл конфигурации и exportfsкоманду.
  3. Администрация безопасности сервера гарантирует, что она может распознавать и утверждать проверенных клиентов.
  4. Конфигурация сети сервера гарантирует, что соответствующие клиенты могут договариваться с ним через любую систему межсетевого экрана .
  5. Клиентский компьютер запрашивает доступ к экспортированным данным, как правило, с помощью mountкоманды. (Клиент спрашивает сервер (rpcbind), какой порт использует сервер NFS, клиент подключается к серверу NFS (nfsd), nfsd передает запрос на mountd)
  6. Если все пойдет хорошо, пользователи на клиентской машине смогут просматривать смонтированные файловые системы на сервере и взаимодействовать с ними в рамках разрешенных параметров.

Обратите внимание, что автоматизация процесса монтирования 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 (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, добавив новый вариант аутентификации на основе прикладного программного интерфейса Generic Security Services (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-оболочка

Ссылки [ править ]

  1. ^ a b Рассел Сандберг; Дэвид Голдберг; Стив Клейман; Дэн Уолш; Боб Лайон (1985). «Дизайн и реализация сетевой файловой системы Sun». USENIX . CiteSeerX  10.1.1.14.473 . Цитировать журнал требует |journal=( помощь )
  2. ^ NFS Illustrated (2000) Брентом Каллаганом - ISBN 0-201-32570-5 
  3. ^ a b «Службы HP TCP / IP для управления OpenVMS» . h41379.www4.hpe.com . HP . Проверено 24 сентября 2016 года .
  4. ^ a b Рассел Сандберг. «Сетевая файловая система Sun: дизайн, реализация и опыт» (PDF) . Технический отчет . Sun Microsystems.
  5. ^ Arpaci-Dusseau, Ремзи; Арпачи-Дюссо, Андреа (март 2015 г.). Операционные системы: Три простых элемента (PDF) (0,9 изд.). Книги Арпачи-Дюссо. п. 5 . Проверено 8 ноября 2017 года .
  6. ^ Брайан Павловски; Чет Ющак; Петер Штаубах; Карл Смит; Дайан Лебель; Дэвид Хитц (1994). «Разработка и реализация NFS версии 3» . USENIX .
  7. ^ "NFS версии 4" . USENIX . 2005-04-14.
  8. ^ Хейнс, Томас (2016-11-01). «NFS Version 4 Minor Version 2» .
  9. ^ yanfs.dev.java.net [ постоянная мертвая ссылка ]
  10. ^ Том Talpey (28 февраля 2006). «Обновление реализации NFS / RDMA» (PDF) . Network Appliance, Inc. Архивировано из оригинального (PDF) 12 мая 2011 года.
  11. Брент Каллаган (28 января 2002 г.). «NFS поверх RDMA» (PDF) . Sun Microsystems.
  12. ^ Сингх, Каран (2016). «4: Работа с файловой системой Ceph». Поваренная книга Ceph . Бирмингем: Packt Publishing Ltd. стр. 110. ISBN 9781784397364. Проверено 21 марта 2017 . NFS-Ganesha - это сервер NFS, который работает в пространстве пользователя и поддерживает CephFS FSAL (уровень абстракции файловой системы) с использованием libcephfs.
  13. ^ Гловер <[email protected]>, Фред. «Спецификация расширений доверенного протокола NFS (TNFS)» . tools.ietf.org .
  14. ^ [1]
  15. ^ «Другое программное обеспечение от SUN Microsystems» . www.computinghistory.org.uk . Центр истории вычислений . Проверено 24 сентября 2016 года .
  16. ^ «Введение в службы Microsoft Windows для UNIX 3.5» . technet.microsoft.com . Microsoft . Проверено 24 сентября 2016 года .
  17. ^ "Плагин NTFS для NetDrive" . ecsoft2.org . Проверено 22 сентября 2020 .
  18. ^ "NetDrive для OS / 2" . arcanoae.com . Проверено 22 сентября 2020 .
  19. ^ «Шлюз NFS для NetWare 6.5» . www.novell.com . Novell . Проверено 24 сентября 2016 года .
  20. ^ «Поддержка сетевой файловой системы OS / 400» (PDF) . publib.boulder.ibm.com . IBM . Проверено 24 сентября 2016 года . [ постоянная мертвая ссылка ]
  21. ^ Кэрол Паттон (1987-10-26). «AT&T лицензирует чип SPARC Sun Microsystems» . InfoWorld . п. 37 . Проверено 16 июля 2019 .
  22. ^ "Что такое Connectathon?" . Оригинальный сайт Connectathon.Org . Архивировано из оригинала 28 января 1999 года.
  23. ^ "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, FAQ и HOWTO документы
    • Работа NFS, объясненная с помощью диаграмм последовательности
  • Обзор статьи Майка Эйслера «Почему NFS - отстой» на симпозиуме по Linux 2006 г., 27 октября 2006 г.