Сетевая файловая система
Набор интернет-протоколов |
---|
Прикладной уровень |
Транспортный уровень |
Интернет-слой |
Слой связи |
Сетевая файловая система ( 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 ]
Интерфейс виртуальной файловой системы допускает модульную реализацию, отраженную в простом протоколе. К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V Release 2, DOS и VAX/VMS с использованием Eunice . [ 4 ] NFSv2 позволяет читать только первые 2 ГБ файла из-за 32-битных ограничений.
НФСv3
[ редактировать ]Версия 3 (RFC 1813, июнь 1995 г.) добавлена:
- поддержка 64-битных размеров и смещений файлов для обработки файлов размером более 2 гигабайт (ГБ);
- поддержка асинхронной записи на сервере для повышения производительности записи;
- дополнительные атрибуты файлов во многих ответах, чтобы избежать необходимости их повторной загрузки;
- операция REDDIRPLUS для получения дескрипторов файлов [ 5 ] и атрибуты вместе с именами файлов при сканировании каталога;
- различные другие улучшения.
Первое предложение 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 через глобальную сеть. более осуществимо и позволяло использовать большие размеры передачи для чтения и записи, превышающие предел в 8 КБ, установленный протоколом пользовательских дейтаграмм .
ВебНФС
[ редактировать ]WebNFS был расширением NFSv2 и NFSv3, позволяющим ему работать за ограничительными брандмауэрами без сложностей протоколов Portmap и MOUNT. WebNFS имел фиксированный номер порта TCP/UDP (2049), и вместо того, чтобы требовать от клиента связываться со службой MOUNT RPC для определения начального дескриптора файла каждой файловой системы, он ввел концепцию общедоступного дескриптора файла (нулевой для NFSv2, нулевой длины). для NFSv3), который можно использовать в качестве отправной точки. Оба эти изменения позже были включены в NFSv4.
НФСv4
[ редактировать ]Версия 4 (RFC 3010, декабрь 2000 г.; пересмотрена в RFC 3530, апрель 2003 г. и снова в RFC 7530, март 2015 г.), под влиянием файловой системы Эндрю (AFS) и блока сообщений сервера (SMB, также называемого CIFS), включает улучшения производительности, требует строгой безопасности и вводит протокол с отслеживанием состояния . [ 7 ] [ 8 ] Версия 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 г. [ 9 ] с новыми функциями, включая: клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы, резервирование пространства, блок данных приложения (ADB), помеченный NFS с помощью sec_label, который подходит для любой системы безопасности MAC, и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
Одним из больших преимуществ NFSv4 по сравнению с его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры. [ 10 ]
Другие расширения
[ редактировать ]WebNFS , расширение версий 2 и 3, позволяет NFS более легко интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей клиентской реализации WebNFS. [ 11 ]
С NFS стали ассоциироваться различные протоколы боковой полосы. Примечание:
- протокол Network Lock Manager (NLM) с рекомендациями по диапазону байтов (добавлен для поддержки UNIX System V API-интерфейсов блокировки файлов )
- протокол удаленной отчетности о квотах (RQUOTAD), который позволяет пользователям NFS просматривать свои квоты хранения данных на серверах NFS.
- NFS через RDMA, адаптация NFS, которая использует удаленный прямой доступ к памяти (RDMA) в качестве транспорта. [ 12 ] [ 13 ]
- NFS-Ganesha, NFS-сервер, работающий в пользовательском пространстве и поддерживающий различные файловые системы, такие как GPFS/Spectrum Scale , CephFS, через соответствующие модули FSAL (уровень абстракции файловой системы). CephFS . FSAL поддерживается с использованием libcephfs [ 14 ]
- Доверенная NFS (TNFS) [ 15 ]
Платформы
[ редактировать ]NFS часто используется с операционными системами Unix (такими как Solaris , AIX , HP-UX от Apple ), macOS и Unix-подобными операционными системами (такими как Linux и FreeBSD ). Он также доступен для таких операционных систем, как Acorn RISC OS , [ 16 ] AmigaOS , классическая Mac OS , OpenVMS , [ 3 ] MS-DOS , [ 17 ] Microsoft Windows , [ 18 ] ОС/2 , [ 19 ] АркаОС , [ 20 ] Новелл НетВаре , [ 21 ] и IBM i . [ 22 ] Альтернативные протоколы удаленного доступа к файлам включают блок сообщений сервера (SMB, также называемый CIFS), файловый протокол Apple (AFP), базовый протокол NetWare (NCP) и файловую систему файлового сервера OS/400 (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.
Типичная реализация
[ редактировать ]Предполагая сценарий в стиле 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 пытался избежать замены байтов. всякий раз, когда два одноранговых узла имеют общий порядок байтов в своих машинных архитектурах. Промышленная группа под названием « Форум сетевых вычислений» сформировалась (март 1987 г.) в попытке (в конечном итоге безуспешной) согласовать две среды сетевых вычислений.
В 1987 году Sun и AT&T объявили о совместной разработке UNIX System V Release 4 компании AT&T. [ 23 ] Это заставило многих других лицензиатов UNIX-системы AT&T забеспокоиться, что это поставит Sun в более выгодное положение, и в конечном итоге привело к тому, что Digital Equipment, HP, IBM и другие сформировали в 1988 году Фонд открытого программного обеспечения (OSF). По иронии судьбы, Sun и AT&T раньше конкурировала за NFS от Sun с удаленной файловой системой AT&T (RFS), а быстрое внедрение NFS вместо RFS компаниями Digital Equipment, HP, IBM и многими другими поставщиками компьютеров склонило большинство пользователей в пользу NFS. NFS Функциональной совместимости способствовали мероприятия под названием «Connectathons», начавшиеся в 1986 году, которые позволили независимо от поставщика тестировать реализации друг с другом. [ 24 ] OSF внедрила распределенную вычислительную среду (DCE) и распределенную файловую систему DCE (DFS) поверх Sun/ONC RPC и NFS. DFS использовала DCE в качестве RPC, а DFS производна от файловой системы Эндрю (AFS); Сама система DCE основана на наборе технологий, включая NCS Apollo и Kerberos . [ нужна ссылка ]
1990-е годы
[ редактировать ]Sun Microsystems и Internet Society (ISOC) достигли соглашения о передаче «контроля за изменениями» ONC RPC, чтобы орган ISOC по инженерным стандартам, Рабочая группа по инженерным разработкам Интернета (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 передала большую часть исходного кода AFS сообществу свободного программного обеспечения. , основного коммерческого поставщика DFS и AFS, в 2000 году Проект OpenAFS продолжает жить. В начале 2005 года IBM объявила о прекращении продаж AFS и DFS.
В январе 2010 года Panasas предложила NFSv4.1 на основе своей технологии Parallel NFS (pNFS), утверждая, что она улучшает параллелизм доступа к данным. [ 25 ] возможности. Протокол NFSv4.1 определяет метод отделения метаданных файловой системы от местоположения данных файла; он выходит за рамки простого разделения имени и данных, распределяя данные по набору серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под единым сервером. Некоторые продукты представляют собой многоузловые NFS-серверы, но участие клиента в разделении метаданных и данных ограничено.
Сервер pNFS NFSv4.1 представляет собой набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.
Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с него, он может напрямую взаимодействовать с набором серверов данных, принадлежащих коллекции серверов pNFS. Клиенту NFSv4.1 можно разрешить напрямую участвовать в точном местоположении файловых данных и избежать одиночного взаимодействия с одним сервером NFS при перемещении данных.
Помимо pNFS, NFSv4.1 предоставляет:
- Сессии
- Делегирование каталогов и уведомления
- Многосерверное пространство имен
- списки контроля доступа и дискреционный контроль доступа
- Атрибуция удержания
- SECINFO_NO_NAME
См. также
[ редактировать ]- 9P (протокол) - протокол файловой системы Plan 9
- Аллюксио
- Эндрю Файловая система
- BeeGFS — параллельная файловая система.
- CacheFS — механизм кэширования для клиентов Linux NFS.
- Распределенная файловая система Hadoop ( HDFS )
- Керберос (протокол)
- Сетевая информационная служба
- Удаленная файловая система
- Корневая тыква
- Самба (программное обеспечение)
- Файловая система Secure Shell — монтируйте удаленный каталог, используя только вход по ssh на удаленном компьютере.
- Блок сообщений сервера
- Общий ресурс
- TCP-оболочка
Ссылки
[ редактировать ]- ^ Jump up to: а б Рассел Сэндберг; Дэвид Голдберг; Стив Клейман; Дэн Уолш; Боб Лайон (11–14 июня 1985 г.). Проектирование и реализация файловой системы Sun Network (PDF) . Летняя конференция Ассоциации Usenix. Портленд, Орегон, США. CiteSeerX 10.1.1.14.473 .
- ^ NFS Illustrated (2000) Брента Каллагана - ISBN 0-201-32570-5
- ^ Jump up to: а б «Службы HP TCP/IP для управления OpenVMS» . h41379.www4.hpe.com . ХП. Архивировано из оригинала 24 сентября 2016 г. Проверено 24 сентября 2016 г.
- ^ Jump up to: а б Рассел Сэндберг. «Файловая система Sun Network: проектирование, реализация и опыт» (PDF) . Технический отчет . Сан Микросистемс.
- ^ Арпачи-Дюссо, Ремзи; Арпачи-Дюссо, Андреа (март 2015 г.). Операционные системы: три простых части (PDF) (9-е изд.). Книги Арпачи-Дюссо. п. 5 . Проверено 8 ноября 2017 г.
- ^ Брайан Павловски; Чет Ющак; Питер Штаубах; Карл Смит; Диана Лебель; Дэвид Хитц (1994). «Проектирование и реализация NFS версии 3» . УСЕНИКС .
- ^ «НФС версии 4» . УСЕНИКС . 14 апреля 2005 г.
- ^ Брайан Павловски; Спенсер Шеплер; Карл Бим; Брент Каллаган; Майкл Эйслер; Дэвид Новек; Дэвид Робинсон; Роберт Терлоу (2000). «Протокол NFS версии 4» (PDF) . РАЗУМНЫЙ .
- ^ Хейнс, Томас (01 ноября 2016 г.). NFS версии 4, дополнительная версия 2 . дои : 10.17487/RFC7862 .
- ^ Джастин Паризи; Эллиот Эктон (июнь 2023 г.). NFS в NetApp ONTAP, Руководство по передовому опыту и внедрению (PDF) (Технический отчет). НетАпп.
- ^ «янфс» . Гитхаб.com .
- ^ Том Талпи (28 февраля 2006 г.). «Обновление реализации NFS/RDMA» (PDF) . Network Appliance, Inc. Архивировано из оригинала (PDF) 12 мая 2011 года.
- ^ Брент Каллаган (28 января 2002 г.). «NFS через RDMA» (PDF) . Сан Микросистемс.
- ^
Сингх, Каран (2016). «4: Работа с файловой системой Ceph». Поваренная книга цефов . Бирмингем: Packt Publishing Ltd., с. 110. ИСБН 978-1-78439-736-4 . Проверено 21 марта 2017 г.
NFS-Ganesha — это сервер NFS, работающий в пространстве пользователя и поддерживающий CephFS FSAL (уровень абстракции файловой системы) с использованием libcephs.
- ^ Гловер, Фред (28 мая 1994 г.). «Спецификация доверенных расширений протокола NFS (TNFS)» . datatracker.ietf.org .
- ^ «Сетевые программы» . cp15.org .
- ^ «Другое программное обеспечение от SUN Microsystems» . www.computinghistory.org.uk . Центр истории вычислений . Проверено 24 сентября 2016 г.
- ^ «Введение в службы Microsoft Windows для UNIX 3.5» . technet.microsoft.com . Майкрософт. 5 декабря 2007 года . Проверено 24 сентября 2016 г.
- ^ «Плагин NTFS для NetDrive» . ecsoft2.org . Проверено 22 сентября 2020 г.
- ^ «NetDrive для OS/2» . arcanoae.com . Проверено 22 сентября 2020 г.
- ^ «Шлюз NFS для NetWare 6.5» . www.novell.com . Новелл . Проверено 24 сентября 2016 г.
- ^ «Поддержка сетевой файловой системы OS/400» (PDF) . ИБМ . Проверено 23 мая 2024 г.
- ^ Кэрол Паттон (26 октября 1987 г.). «AT&T лицензирует чип SPARC компании Sun Microsystems» . Инфомир . п. 37 . Проверено 16 июля 2019 г.
- ^ «Что такое Коннектатон?» . Оригинальный веб-сайт Connectathon.Org . Архивировано из оригинала 28 января 1999 года.
- ^ «пНФС» . Панасас . Проверено 4 августа 2013 г.
Внешние ссылки
[ редактировать ]- RFC :
- RFC 8881 - Спецификация протокола NFS версии 4.1
- RFC 8434 – Параллельная NFS – спецификация гибкой структуры файлов
- RFC 8276 — расширение Xattrs для NFSv4.
- RFC 8275 — расширение атрибута Umask для NFS версии 4.2.
- RFC 8154 - Параллельная NFS - спецификация макета SCSI
- RFC 7863 — Описание протокола NFS версии 4.2 XDR
- RFC 7862 - Спецификация протокола NFS версии 4.2
- RFC 7531 — Описание протокола XDR NFS версии 4
- RFC 7530 - Спецификация протокола NFS версии 4
- RFC 5664 – Параллельная NFS – спецификация объектно-ориентированных операций
- RFC 5663 – Параллельная NFS – спецификация структуры блоков/томов
- RFC 5662 — Описание протокола NFS версии 4.1 XDR
- RFC 5661 - Спецификация протокола NFS версии 4.1 (устарело из-за RFC 8881)
- RFC 5403 – RPCSEC_GSS Версия 2
- RFC 3530 - Спецификация протокола NFS версии 4 (устарела из-за RFC 7530 и RFC 7531)
- RFC 3010 - Спецификация протокола NFS версии 4 (устарела из-за RFC 3530)
- RFC 2339 – Соглашение Sun/ISOC NFS о контроле за изменениями
- RFC 2224 – Спецификация схемы URL-адресов NFS
- RFC 2203 – Спецификация RPCSEC_GSS
- RFC 2055 – Спецификация сервера WebNFS
- RFC 2054 – Спецификация клиента WebNFS
- RFC 1813 - Спецификация протокола NFS версии 3
- RFC 1790 – Соглашение о контроле за изменениями Sun/ISOC ONC RPC
- RFC 1094 - Спецификация протокола NFS версии 2
- Технические стандарты открытой группы:
- Протоколы взаимодействия: XNFS, версия 3W — спецификация открытой группы NFS2, NFS3 и протоколы боковой полосы MNT, NSM и NLM для блокировки файлов, которые не описаны в документах RFC.
- Различные ресурсы:
- Обзор статьи Майка Эйслера «Почему NFS отстой» на симпозиуме Linux 2006 г., 27 октября 2006 г.