stringtranslate.com

Сетевая файловая система

Сетевая файловая система ( NFS ) — это протокол распределенной файловой системы, первоначально разработанный компанией Sun Microsystems (Sun) в 1984 году [1], позволяющий пользователю на клиентском компьютере получать доступ к файлам через компьютерную сеть , подобно тому, как осуществляется доступ к локальному хранилищу. NFS, как и многие другие протоколы, построен на системе удаленного вызова процедур открытых сетевых вычислений (ONC RPC). NFS — это открытый стандарт IETF, определенный в запросе на комментарии (RFC), позволяющий любому человеку реализовать протокол.

Версии и вариации

Sun использовала версию 1 только для внутренних экспериментальных целей. Когда команда разработчиков внесла существенные изменения в версию NFS 1 и выпустила ее за пределами Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC. [2] [3]

НФСv2

Версия 2 протокола (определенная в RFC 1094, март 1989) изначально работала только через протокол пользовательских датаграмм (UDP). Его разработчики хотели сохранить серверную часть без состояния , с блокировкой (например), реализованной вне основного протокола. В создании NFS версии 2 участвовали Рассел Сэндберг, Боб Лион, Билл Джой , Стив Клейман и другие. [1] [4]

Интерфейс Virtual File System допускает модульную реализацию, отраженную в простом протоколе. К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V release 2, DOS и VAX/VMS с использованием Eunice . [4] NFSv2 позволяет читать только первые 2 ГБ файла из-за 32-битных ограничений.

NFSv3

Версия 3 (RFC 1813, июнь 1995 г.) добавлено:

Первое предложение NFS версии 3 в Sun Microsystems было создано вскоре после выпуска NFS версии 2. Главной мотивацией была попытка смягчить проблему производительности синхронной операции записи в NFS версии 2. [6] К июлю 1992 года практика внедрения устранила многие недостатки NFS версии 2, оставив только отсутствие поддержки больших файлов (64-битные размеры файлов и смещения) как насущную проблему. Во время внедрения версии 3 поддержка поставщиков TCP как протокола транспортного уровня начала увеличиваться. В то время как несколько поставщиков уже добавили поддержку NFS версии 2 с TCP в качестве транспорта, Sun Microsystems добавила поддержку TCP в качестве транспорта для NFS одновременно с добавлением поддержки версии 3. Использование TCP в качестве транспорта сделало использование NFS через WAN более осуществимым и позволило использовать большие размеры передачи чтения и записи сверх ограничения в 8 КБ, налагаемого протоколом пользовательских датаграмм .

WebNFS

WebNFS был расширением NFSv2 и NFSv3, что позволяло ему работать за ограничительными брандмауэрами без сложности протоколов Portmap и MOUNT. WebNFS имел фиксированный номер порта TCP/UDP (2049), и вместо того, чтобы требовать от клиента связываться со службой MOUNT RPC для определения начального дескриптора файла каждой файловой системы, он ввел концепцию публичного дескриптора файла (нулевой для NFSv2, нулевой длины для NFSv3), который можно было использовать в качестве отправной точки. Оба эти изменения позже были включены в NFSv4.

NFSv4

Версия 4 (RFC 3010, декабрь 2000 г.; пересмотрена в RFC 3530, апрель 2003 г. и снова в RFC 7530, март 2015 г.), на которую оказали влияние Andrew File System (AFS) и Server Message Block (SMB, также называемый CIFS), включает улучшения производительности, требует надежной безопасности и представляет протокол с отслеживанием состояния . [7] [8] Версия 4 стала первой версией, разработанной совместно с Internet Engineering Task Force (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 года [9] с новыми функциями, включая: клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложений, разреженные файлы, резервирование пространства, блок данных приложения (ADB), маркированный NFS с помощью sec_label, который поддерживает любую систему безопасности MAC, и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).

Одним из больших преимуществ NFSv4 перед его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры. [10]

Другие расширения

WebNFS , расширение для версии 2 и версии 3, позволяет NFS легче интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей клиентской реализации WebNFS. [11]

Различные протоколы боковой полосы стали ассоциироваться с NFS. Примечание:

Платформы

NFS часто используется с операционными системами Unix (такими как Solaris , AIX , HP-UX ), macOS от Apple и Unix-подобными операционными системами (такими как Linux и FreeBSD ). Он также доступен для таких операционных систем, как Acorn RISC OS , [16] AmigaOS , классическая Mac OS , OpenVMS , [3] MS-DOS , [17] Microsoft Windows , [18] OS/2 , [19] ArcaOS , [20] Novell NetWare , [21] и IBM i . [22] Альтернативные протоколы удаленного доступа к файлам включают Server Message Block (SMB, также называемый CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP) и файловую систему OS/400 File Server (QFileSvr.400).

SMB и NetWare Core Protocol (NCP) встречаются чаще, чем NFS в системах под управлением Microsoft Windows; AFP встречается чаще, чем NFS в системах Apple Macintosh ; а QFileSvr.400 встречается чаще в системах IBM i. В 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 ) только сетевая вычислительная система (NCS) Apollo предлагала сопоставимую функциональность. Две конкурирующие группы развивались на основе фундаментальных различий в двух системах удаленного вызова процедур. Аргументы были сосредоточены на методе кодирования данных — внешнее представление данных (XDR) ONC всегда отображало целые числа в порядке big-endian , даже если оба узла соединения имели архитектуру машин little-endian , тогда как метод NCS пытался избежать обмена байтами всякий раз, когда два узла имели общий порядок байтов в своих архитектурах машин. Отраслевая группа под названием Network Computing Forum была сформирована (март 1987 г.) в (в конечном итоге безуспешной) попытке примирить две среды сетевых вычислений.

В 1987 году Sun и AT&T объявили, что будут совместно разрабатывать UNIX System V Release 4 от AT&T. [23] Это вызвало беспокойство у многих других лицензиатов UNIX System от AT&T, что это поставит Sun в выгодное положение, и в конечном итоге привело к тому, что Digital Equipment, HP, IBM и другие сформировали Open Software Foundation (OSF) в 1988 году. По иронии судьбы, Sun и AT&T ранее конкурировали за NFS от Sun против Remote File System (RFS) от AT&T, и быстрое принятие NFS вместо RFS Digital Equipment, HP, IBM и многими другими поставщиками компьютеров склонило большинство пользователей в пользу NFS. Совместимости NFS способствовали мероприятия, называемые «Connectathons», начавшиеся в 1986 году, которые позволили проводить независимое от поставщика тестирование реализаций друг с другом. [24] OSF приняла распределенную вычислительную среду (DCE) и распределенную файловую систему DCE (DFS) вместо RPC и NFS Sun/ONC. DFS использовала DCE в качестве RPC, а DFS произошла от файловой системы Andrew File System (AFS); сама DCE произошла от набора технологий, включая NCS и Kerberos от Apollo . [ требуется ссылка ]

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 Application Program Interface (GSSAPI), RPCSEC GSS, чтобы соответствовать требованиям IETF о том, что стандарты протоколов должны иметь адекватную безопасность.

Позднее Sun и ISOC достигли аналогичного соглашения, предоставив ISOC контроль над изменениями в NFS, хотя контракт был тщательно прописан, чтобы исключить NFS версии 2 и версии 3. Вместо этого ISOC получила право добавлять новые версии в протокол NFS, что привело к тому, что в 2003 году IETF определила версию NFS 4.

2000-е

К 21 веку ни DFS, ни AFS не достигли какого-либо крупного коммерческого успеха по сравнению с SMB-CIFS или NFS. IBM, которая ранее приобрела основного коммерческого поставщика DFS и AFS, Transarc , пожертвовала большую часть исходного кода AFS сообществу свободного ПО в 2000 году . Проект OpenAFS продолжает жить. В начале 2005 года IBM объявила о прекращении продаж AFS и DFS.

В январе 2010 года Panasas предложила NFSv4.1 на основе своей технологии Parallel NFS (pNFS), заявив, что она улучшает параллелизм доступа к данным [25] . Протокол NFSv4.1 определяет метод разделения метаданных файловой системы от местоположения данных файла; он выходит за рамки простого разделения имени/данных, распределяя данные между набором серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под одной крышей сервера. Некоторые продукты представляют собой многоузловые серверы NFS, но участие клиента в разделении метаданных и данных ограничено.

Сервер NFSv4.1 pNFS представляет собой набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.

Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с него, он может напрямую взаимодействовать с набором серверов данных, принадлежащих коллекции серверов pNFS. Клиент NFSv4.1 может быть включен для прямого участия в точном местоположении данных файла и для избежания одиночного взаимодействия с одним сервером NFS при перемещении данных.

Помимо pNFS, NFSv4.1 обеспечивает:

Смотрите также

Ссылки

  1. ^ ab Рассел Сандберг; Дэвид Голдберг; Стив Клейман; Дэн Уолш; Боб Лион (11–14 июня 1985 г.). Проектирование и реализация сетевой файловой системы Sun (PDF) . Летняя конференция Ассоциации Usenix. Портленд, Орегон, США. CiteSeerX  10.1.1.14.473 .
  2. ^ NFS Illustrated (2000) Брента Каллагана – ISBN 0-201-32570-5 
  3. ^ ab "HP TCP/IP Services for OpenVMS Management". h41379.www4.hpe.com . HP. Архивировано из оригинала 2016-09-24 . Получено 24 сентября 2016 г. .
  4. ^ ab Рассел Сандберг. "Файловая система Sun Network: проектирование, реализация и опыт" (PDF) . Технический отчет . Sun Microsystems.
  5. ^ Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (март 2015 г.). Operating Systems: Three Easy Pieces (PDF) (.9 ed.). Arpaci-Dusseau Books. стр. 5 . Получено 8 ноября 2017 г. .
  6. ^ Брайан Павловски; Чет Ющак; Питер Штаубах; Карл Смит; Дайан Лебель; Дэвид Хитц (1994). «Проектирование и реализация NFS версии 3». USENIX .
  7. ^ "NFS Version 4". USENIX . 2005-04-14.
  8. ^ Брайан Павловски; Спенсер Шеплер; Карл Бим; Брент Каллаган; Майкл Эйслер; Дэвид Новек; Дэвид Робинсон; Роберт Терлоу (2000). «Протокол NFS версии 4» (PDF) . SANE.
  9. ^ Хейнс, Томас (01.11.2016). NFS версии 4, младшая версия 2. doi : 10.17487/RFC7862 .
  10. ^ Джастин Паризи; Эллиотт Эктон (июнь 2023 г.). NFS в NetApp ONTAP, руководство по передовой практике и внедрению (PDF) (технический отчет). NetApp.
  11. ^ "yanfs". Github.com .
  12. ^ Том Талпи (28 февраля 2006 г.). "Обновление реализации NFS/RDMA" (PDF) . Network Appliance, Inc. Архивировано из оригинала (PDF) 12 мая 2011 г.
  13. ^ Брент Каллаган (28 января 2002 г.). "NFS через RDMA" (PDF) . Sun Microsystems.
  14. ^ Сингх, Каран (2016). "4: Работа с файловой системой Ceph". Ceph Cookbook. Бирмингем: Packt Publishing Ltd. стр. 110. ISBN 978-1-78439-736-4. Получено 21.03.2017 . NFS-Ganesha — это сервер NFS, работающий в пользовательском пространстве и поддерживающий CephFS FSAL (File System Abstraction Layer) с помощью libcephfs.
  15. Гловер, Фред (28 мая 1994 г.). «Спецификация расширений протокола доверенной NFS (TNFS)». datatracker.ietf.org .
  16. ^ "Программы, связанные с сетевыми технологиями". cp15.org .
  17. ^ "Другое программное обеспечение SUN Microsystems". www.computinghistory.org.uk . Центр истории вычислений . Получено 24 сентября 2016 г. .
  18. ^ "Введение в службы Microsoft Windows для UNIX 3.5". technet.microsoft.com . Microsoft. 5 декабря 2007 г. Получено 24 сентября 2016 г.
  19. ^ "Плагин NTFS для NetDrive". ecsoft2.org . Получено 2020-09-22 .
  20. ^ "NetDrive для OS/2". arcanoae.com . Получено 2020-09-22 .
  21. ^ "NFS Gateway for NetWare 6.5". www.novell.com . Novell . Получено 24 сентября 2016 г. .
  22. ^ "OS/400 Network File System Support" (PDF) . IBM . Получено 23 мая 2024 г. .
  23. ^ Кэрол Паттон (1987-10-26). "AT&T лицензирует чип SPARC компании Sun Microsystems". InfoWorld . стр. 37. Получено 16 июля 2019 г.
  24. ^ "Что такое Connectathon?". Оригинальный веб-сайт Connectathon.Org . Архивировано из оригинала 28 января 1999 года.
  25. ^ "pNFS". Panasas . Получено 4 августа 2013 г. .

Внешние ссылки