Что такое сетевая файловая система
Сетевая файловая система (NFS ) - это протокол распределенной файловой системы , первоначально разработанный Sun Microsystems (Sun) в 1984 году, позволяющий пользователю на клиентском компьютере для доступа к файлам через компьютерную сеть аналогично доступу к локальному хранилищу. NFS, как и многие другие протоколы, основан на системе удаленного вызова процедур открытых сетевых вычислений (ONC RPC). NFS - это открытый стандарт, определенный в запросе комментариев (RFC), позволяющий любому реализовать протокол.
Содержание
Версии и вариации
Sun использовала версию 1 только для собственных экспериментальных целей. Когда группа разработчиков внесла существенные изменения в NFS версии 1 и выпустила ее вне Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC.
NFSv2
Версия 2 протокола (определенная в RFC 1094 , март 1989 г.) первоначально работала только по протоколу дейтаграмм пользователя (UDP). Его разработчики хотели сохранить серверную часть без состояния , при этом блокировка (например) реализована вне основного протокола. Люди, участвовавшие в создании NFS версии 2, включают, Билл Джой и другие.
Интерфейс Virtual File System допускает модульную реализацию, отраженную в простом протоколе . К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V выпуска 2, DOS и VAX / VMS с использованием Eunice . NFSv2 позволяет читать только первые 2 ГБ файла из-за ограничений 32-бит .
NFSv3
Версия 3 (RFC 1813 , июнь 1995) добавлено:
- поддержка 64-битных размеров файлов и смещений для обработки файлов размером более 2 гигабайт. (ГБ);
- поддержка асинхронной записи на сервере для повышения производительности записи;
- дополнительные атрибуты файлов во многих ответах, чтобы избежать их повторной выборки;
- операция READDIRPLUS, чтобы получить дескрипторы и атрибуты файлов вместе с именами файлов при сканировании каталога;
- внесены другие улучшения.
Первое предложение NFS версии 3 в Sun Microsystems было создано вскоре после выпуска NFS версии 2. Основным мотивом была попытка смягчить проблему производительности синхронной операции записи в NFS версии 2. К июлю 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 через WAN более осуществим и позволял использовать более крупные объемы передачи для чтения и записи, превышающие ограничение в 8 КБ, установленное Протоколом дейтаграмм пользователя .
NFSv4
NFS версии 4.1 (RFC 5661 , январь 2010 г .; пересмотренный в RFC 8881 , август 2020 г.) нацелен на обеспечение поддержки протокола для использования преимуществ развертывания кластерных серверов, включая возможность обеспечения масштабируемого параллельного доступа к файлам, распределенным между несколькими серверами (расширение pNFS). Версия 4.1 включает механизм транкинга сеансов (также известный как NFS Multipathing) и доступный в некоторых корпоративных решениях как VMware ESXi .
NFS версии 4.2 (RFC 7862 ) был опубликован в ноябре 2016 года с новыми функциями, включая : клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы, резервирование места, блок данных приложения (ADB), NFS с меткой sec_label, которая соответствует любой системе безопасности MAC, и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
Одним из больших преимуществ NFSv4 перед его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры.
Другие расширения
WebNFS , расширение для версий 2 и 3, позволяет NFS более легко интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей реализации WebNFS на стороне клиента.
Различные протоколы побочного канала стали ассоциироваться с NFS. Примечание:
- протокол рекомендаций по диапазону байтов (NLM) (добавлен для поддержки UNIX System Vблокировки файлов API-интерфейсов)
- удаленных отчетов о квотах (RQUOTAD ) протокол, который позволяет пользователям NFS просматривать свои квоты хранения данных на серверах NFS
- , адаптация NFS, которая использует удаленный прямой доступ к памяти (RDMA) в качестве транспорта
- NFS-Ganesha, сервер NFS, работающий в пользовательском пространстве и поддерживающий различные файловые системы, такие как GPFS / Spectrum Scale, CephFS через соответствующие модули FSAL (уровень абстракции файловой системы). CephFS FSAL, поддерживаемая с использованием libcephfs
- Trusted NFS (TNFS)
Platforms
NFS часто используется с операционными системами Unix (такими как Solaris , AIX , HP-UX ), операционные системы Apple macOS и Unix-подобные (например, Linux и FreeBSD ). Он также доступен для таких операционных систем, как Acorn RISC OS , AmigaOS , классическая Mac OS , OpenVMS , MS. -DOS , Microsoft Windows , OS / 2 , ArcaOS , Novell NetWare и IBM AS / 400 . Альтернативные протоколы удаленного доступа к файлам включают Server Message Block (SMB, также называемый CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP), и файловая система файлового сервера OS / 400 (QFileSvr.400).
SMB и NetWare Core Protocol (NCP) встречаются чаще, чем NFS в системах под управлением Microsoft Windows; AFP встречается чаще, чем NFS в системах Apple Macintosh ; а QFileSvr.400 чаще встречается в системах AS / 400 . Haiku в 2012 году добавила поддержку NFSv4 в рамках проекта Google Summer of Code.
Типичная реализация
Предполагая сценарий в стиле Unix, в котором одной машине (клиент ) требуется доступ к данным, хранящимся на другая машина (сервер NFS ):
- Сервер реализует процессы NFS daemon , работающие по умолчанию как nfsd , чтобы сделать свои данные общедоступными для клиентов .
- Администратор сервера определяет, что сделать доступным, экспортируя имена и параметры каталогов , обычно используя файл конфигурации / etc / exports и Команда exportfs .
- Администрация сервера security гарантирует, что он может распознавать и утверждать проверенных клиентов.
- Конфигурация сети сервера гарантирует, что соответствующие клиенты могут вести переговоры с это через любую firewallсистему .
- Клиентский компьютер запрашивает доступ к экспортированным данным, обычно с помощью команды mount . (Клиент спрашивает сервер (rpcbind), какой порт использует сервер NFS, клиент подключается к серверу NFS (nfsd), nfsd передает запрос на mountd)
- Если все идет хорошо, пользователи на клиенте машина может затем просматривать и взаимодействовать с смонтированными файловыми системами на сервере в рамках разрешенных параметров.
Обратите внимание, что автоматизация процесса монтирования NFS может иметь место - возможно, с использованием / etc / fstab и / или автомонтаж объектов.
Разработка протокола
Во время разработки протокола ONC (называвшегося SunRPC в то время) только Apollo Network Computing System (NCS) предлагала сопоставимая функциональность. Две конкурирующие группы возникли из-за фундаментальных различий в двух системах удаленного вызова процедур. Аргументы были сосредоточены на методе кодирования данных - ONC Внешнее представление данных (XDR) всегда отображало целые числа в порядке big-endian , даже если оба одноранговых узла соединения имели мало -endian машинные архитектуры, тогда как метод NCS пытался избежать байтовой перестановки, когда два одноранговых узла разделяли общую endianness в своих машинных архитектурах. Отраслевая группа, названная созданной (март 1987 г.), предприняла (в конечном счете неудачную) попытку примирить две среды сетевых вычислений.
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), чтобы удовлетворить требованиям IETF, что стандарты протокола имеют адекватную безопасность.
Позже Sun и ISOC достигли аналогичного соглашения о предоставлении ISOC контроля над изменением NFS, хотя при написании контракта тщательно исключали NFS версии 2 и версии 3. Вместо этого ISOC получила право добавлять новые версии в NFS. протокол, в результате чего IETF определил NFS версии 4 в 2003 году.
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) с целью улучшения возможностей параллелизма доступа к данным. Протокол NFSv4.1 определяет метод отделения метаданных файловой системы от местоположения данных файла; он выходит за рамки простого разделения имен и данных, распределяя данные между набором серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под единым зонтиком сервера. Некоторые продукты представляют собой многоузловые NFS-серверы, но участие клиента в разделении метаданных и данных ограничено.
Сервер NFSv4.1 pNFS - это набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.
Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с сервера, он может напрямую взаимодействовать с набором серверов данных, принадлежащих коллекции серверов pNFS. Клиент NFSv4.1 может быть включен для непосредственного участия в точном расположении файловых данных и во избежание одиночного взаимодействия с одним сервером NFS при перемещении данных.
в этом разделе описывается служба роли сетевой файловой системы и компоненты, входящие в состав роли сервера "файл и служба хранилища служб" на сервере Windows. сетевая файловая система (NFS) предоставляет решение для совместного использования файлов для предприятий, которые имеют разнородные среды, включающие как Windows, так и компьютеры, не являющиеся Windows.
Описание компонента
с помощью протокола NFS можно передавать файлы между компьютерами, на которых выполняется Windows, и другими операционными системами, не являющимися Windows, такими как Linux или UNIX.
nfs в Windows server включает server для nfs и Client для nfs. компьютер, на котором работает Windows server, может использовать сервер для nfs в качестве файлового сервера nfs для других клиентских компьютеров, не являющихся Windows. клиент для NFS позволяет компьютеру с Windows, на котором работает Windows server, получать доступ к файлам, хранящимся на сервере NFS, отличном от Windows.
версии Windows и Windows Server
Windows поддерживает несколько версий клиента NFS и сервера в зависимости от версии операционной системы и семейства.
Операционные системы | Версии NFS Server | Версии клиента NFS |
---|---|---|
Windows 7, Windows 8.1, Windows 10 | Н/Д | NFSv2, NFSv3 |
Windows Server 2008, Windows Server 2008 R2 | NFSv2, NFSv3 | NFSv2, NFSv3 |
Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 | NFSv2, NFSv3, Нфсв 4.1 | NFSv2, NFSv3 |
Практическое применение
Ниже приведены некоторые способы использования NFS.
- используйте файловый сервер Windows NFS для предоставления многопротокольного доступа к одному и тому же файловому ресурсу по протоколам SMB и NFS с многоплатформенных клиентов.
- развертывание файлового сервера Windows NFS в предварительно не Windows среде операционной системы, чтобы предоставить клиентским компьютерам, не являющимся Windows, доступ к файловым ресурсам NFS.
- Перенос приложений из одной операционной системы в другую путем хранения данных в общих файловых ресурсах, доступных через протоколы SMB и NFS.
Новые и измененные функции
Новые и измененные функциональные возможности в сетевой файловой системе включают поддержку NFS версии 4,1 и Улучшенное развертывание и управляемость. дополнительные сведения о новых или измененных функциональных возможностях Windows Server 2012 см. в следующей таблице.
Компонент или функция | Новинка или обновление | Описание |
---|---|---|
NFS версии 4,1 | Создать | Повышенная безопасность, производительность и совместимость по сравнению с NFS версии 3. |
Инфраструктура NFS | Обновленные возможности | Улучшает развертывание и управляемость и повышает безопасность. |
Постоянная доступность NFS версии 3 | Обновленные возможности | Повышает постоянную доступность на клиентах NFS версии 3. |
Улучшения развертывания и управляемости | Обновленные возможности | позволяет легко развертывать NFS и управлять ими с помощью новых командлетов Windows PowerShell и нового поставщика WMI. |
NFS версии 4,1
NFS версии 4,1 реализует все необходимые аспекты в дополнение к некоторым дополнительным аспектам RFC 5661:
- Файловая система, которая разделяет физическое и логическое пространство имен и СОВМЕСТИМА с NFS версии 3 и NFS версии 2. Для экспортированной файловой системы, которая является частью псевдо-файловой системы, предоставляется псевдоним.
- Составные удаленные вызовы процедур объединяют соответствующие операции и сокращают число бесед.
- Сеансы и многосеансовая коммутация сеансов обеспечивают только одну семантику и обеспечивают постоянную доступность и лучшую производительность при использовании нескольких сетей между клиентами NFS 4,1 и сервером NFS.
Инфраструктура NFS
улучшения в общей инфраструктуре NFS в Windows Server 2012 описаны ниже.
- Инфраструктура транспорта /External (RPC) , используемая сетевым протоколом Winsock, доступна как для сервера NFS, так и для клиента для NFS. Это заменяет интерфейс TDI, обеспечивает лучшую поддержку и обеспечивает лучшую масштабируемость и масштабирование на стороне приема (RSS).
- Функция мультиплексора RPC-портов является удобной для брандмауэра (меньше портов для управления) и УПРОЩАЕТ развертывание NFS.
- Автоматически настроенные кэши и пулы потоков являются возможностями управления ресурсами в новой инфраструктуре RPC/XDR, которая является динамической, автоматически настраивает кэши и пулы потоков на основе рабочей нагрузки. Это полностью удаляет предоставляя, который участвует во время настройки параметров, обеспечивая оптимальную производительность сразу после развертывания NFS.
- Новые варианты реализации и проверки подлинности Kerberos с добавлением поддержки Kerberos (Krb5p) и существующих параметров проверки подлинности krb5 и krb5i.
- сопоставление удостоверений Windows PowerShell командлеты модуля упрощают управление сопоставлением удостоверений, настройку службы Active Directory облегченного доступа к каталогам (AD LDS) и настройку UNIX, а также и неструктурированных файлов Linux.
- Точка подключения тома позволяет получить доступ к томам, подключенным к общему ресурсу NFS, с помощью nfs версии 4,1.
- Функция мультиплексирования портов поддерживает МУЛЬТИПЛЕКСОР порта RPC (порт 2049), который является удобным для брандмауэра и УПРОЩАЕТ развертывание NFS.
Постоянная доступность NFS версии 3
Клиенты NFS версии 3 могут использовать быстрые и прозрачные плановые отработки отказа с большей доступностью и сокращением времени простоя. Процесс отработки отказа выполняется быстрее для клиентов NFS версии 3, поскольку:
Обратите внимание, что сервер для NFS поддерживает прозрачную отработку отказа только при запуске вручную, обычно во время планового обслуживания. При незапланированной отработке отказа клиенты NFS теряют свои подключения. Сервер для NFS также не имеет интеграции с фильтром ключей возобновления. Это означает, что если локальное приложение или сеанс SMB пытается получить доступ к тому же файлу, что и клиент NFS, сразу после плановой отработки отказа, то клиент NFS может потерять свои подключения (прозрачная отработка отказа не будет выполнена).
Улучшения развертывания и управляемости
Развертывание и управление NFS улучшены следующими способами.
- более 40 новых командлетов Windows PowerShell упрощают настройку файловых ресурсов NFS и управление ими. Дополнительные сведения см. в разделе командлеты NFS в Windows PowerShell.
- сопоставление удостоверений улучшено с помощью локального хранилища сопоставления неструктурированных файлов и новых командлетов Windows PowerShell для настройки сопоставления удостоверений.
- Диспетчер сервера графический пользовательский интерфейс проще в использовании.
- Новый поставщик WMI версии 2 доступен для упрощения управления.
- Мультиплексор портов RPC (порт 2049) является удобным для брандмауэра и упрощает развертывание NFS.
Сведения о диспетчере сервера
в диспетчер сервера или более поздней версии центра администрирования Windows — используйте мастер добавления ролей и компонентов, чтобы добавить службу роли сервера для NFS (в файле и роли служб iSCSI). Общую информацию об установке компонентов см. в разделе Установка и удаление ролей, служб ролей или компонентов. Средства сервера для NFS включают оснастку "службы для сетевой файловой системы" MMC для управления сервером для NFS и клиентом для компонентов NFS. С помощью оснастки можно управлять компонентами сервера для NFS, установленными на компьютере. сервер для NFS также содержит несколько Windows средств администрирования командной строки:
- подключение подключает удаленный общий ресурс NFS (также известный как экспорт) локально и сопоставляет его с буквой локального диска на клиентском компьютере Windows.
- Nfsadmin управляет параметрами конфигурации сервера для NFS и клиента для компонентов NFS.
- Нфсшаре настраивает параметры общего ресурса NFS для общих папок с помощью сервера для NFS.
- Нфсстат отображает или сбрасывает статистику вызовов, полученных сервером для NFS.
- Шовмаунт Отображает подключенные файловые системы, экспортированные сервером для NFS.
- Umount удаляет диски, подключенные к NFS.
nfs в Windows Server 2012 представляет модуль nfs для Windows PowerShell с несколькими новыми командлетами специально для NFS. Эти командлеты предоставляют простой способ автоматизации задач управления NFS. Дополнительные сведения см. в разделе командлеты NFS в Windows PowerShell.
Сетевая файловая система ( NFS ) - это протокол распределенной файловой системы , первоначально разработанный Sun Microsystems (Sun) в 1984 году, позволяющий пользователю на клиентском компьютере получать доступ к файлам через компьютерную сеть так же, как доступ к локальному хранилищу. NFS, как и многие другие протоколы, основан на системе вызова удаленных процедур открытых сетевых вычислений (ONC RPC). NFS является открытым стандартом IETF определен в запросе для комментариев (RFC), что позволяет любому реализовать протокол.
СОДЕРЖАНИЕ
Версии и вариации
Sun использовала версию 1 только для собственных экспериментальных целей. Когда группа разработчиков внесла существенные изменения в NFS версии 1 и выпустила ее вне Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC.
NFSv2
Версия 2 протокола (определенная в RFC 1094, март 1989 г.) первоначально работала только по протоколу дейтаграмм пользователя (UDP). Его разработчики хотели сохранить серверную часть без состояния , с блокировкой (например), реализованной вне основного протокола. К созданию NFS версии 2 причастны Рассел Сандберг , Боб Лайон , Билл Джой , Стив Клейман и другие.
Интерфейс виртуальной файловой системы допускает модульную реализацию, отраженную в простом протоколе. К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V выпуска 2, DOS и VAX / VMS с использованием Eunice . NFSv2 позволяет читать только первые 2 ГБ файла из-за 32-разрядных ограничений.
NFSv3
Версия 3 (RFC 1813, июнь 1995 г.) добавлена:
- поддержка 64-битных размеров файлов и смещений для обработки файлов размером более 2 гигабайт (ГБ);
- поддержка асинхронной записи на сервере для повышения производительности записи;
- дополнительные атрибуты файлов во многих ответах, чтобы избежать их повторной загрузки;
- операция READDIRPLUS, чтобы получить дескрипторы файлов и атрибуты вместе с именами файлов при сканировании каталога;
- разные другие улучшения.
Первое предложение по NFS версии 3 в Sun Microsystems было создано вскоре после выпуска NFS версии 2. Основной мотивацией была попытка смягчить проблему производительности операции синхронной записи в NFS версии 2. К июлю 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
NFS версии 4.1 (RFC 5661, январь 2010 г .; пересмотренный в RFC 8881, август 2020 г.) нацелен на обеспечение поддержки протокола для использования преимуществ кластерного развертывания серверов, включая возможность предоставления масштабируемого параллельного доступа к файлам, распределенным между несколькими серверами (расширение pNFS). Версия 4.1 включает механизм транкинга сеансов (также известный как NFS Multipathing) и доступен в некоторых корпоративных решениях как VMware ESXi .
Версия NFS 4.2 (RFC 7862) была опубликована в ноябре 2016 года с новыми функциями, включая: клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы, резервирование места, блок данных приложения (ADB), помеченный NFS с sec_label, который позволяет Система безопасности MAC и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
Одним из больших преимуществ NFSv4 перед его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры.
Прочие расширения
WebNFS , расширение для версий 2 и 3, позволяет NFS более легко интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей клиентской реализации WebNFS.
С NFS стали ассоциироваться различные протоколы боковой полосы. Примечание:
- протокол Network Lock Manager (NLM) с рекомендациями по диапазону байтов (добавлен для поддержки API-интерфейсов блокировки файловUNIX System V )
- протокол удаленной отчетности о квотах (RQUOTAD), который позволяет пользователям NFS просматривать свои квоты хранения данных на серверах NFS
- NFS через RDMA , адаптация NFS, которая использует удаленный прямой доступ к памяти (RDMA) в качестве транспорта
- NFS-Ganesha, сервер NFS, работающий в пользовательском пространстве и поддерживающий различные файловые системы, такие как GPFS / Spectrum Scale, CephFS через соответствующие модули FSAL (уровень абстракции файловой системы). CephFS FSAL поддерживается с помощью libcephfs
- Надежный NFS (TNFS)
Платформы
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 пытался избежать обмена байтами. всякий раз, когда два одноранговых узла разделяют общий порядок байтов в своих машинных архитектурах. Отраслевая группа под названием Network Computing Forum образовалась (март 1987 г.) в (в конечном итоге безуспешной) попытке примирить две среды сетевых вычислений.
В 1987 году Sun и AT&T объявили, что совместно разработают UNIX System V Release 4 для AT&T. Это заставило многих других лицензиатов AT&T системы UNIX обеспокоиться тем, что это поставит Sun в выгодное положение, и в конечном итоге привело к созданию Digital Equipment, HP, IBM и другие, сформировавшие Open Software Foundation (OSF) в 1988 году. По иронии судьбы, Sun и AT&T ранее конкурировали за NFS Sun с удаленной файловой системой (RFS) AT&T , а также за быстрое внедрение NFS поверх RFS Digital Equipment, HP, IBM , и многие другие производители компьютеров склоняли большинство пользователей в пользу NFS. Совместимости NFS способствовали события, названные «Connectathons», начавшиеся в 1986 году, которые позволили провести независимое от поставщика тестирование реализаций друг с другом. 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, добавив новый вариант аутентификации на основе прикладного программного интерфейса 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), утверждая, что она улучшает возможности параллелизма доступа к данным. Протокол NFSv4.1 определяет метод отделения метаданных файловой системы от местоположения файловых данных; он выходит за рамки простого разделения имени и данных, распределяя данные между набором серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под единым зонтиком сервера. Некоторые продукты представляют собой многоузловые NFS-серверы, но участие клиента в разделении метаданных и данных ограничено.
Сервер NFSv4.1 pNFS - это набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.
Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с сервера, он может напрямую взаимодействовать с набором серверов данных, принадлежащих коллекции серверов pNFS. Клиент NFSv4.1 может быть включен для непосредственного участия в точном расположении файловых данных и во избежание одиночного взаимодействия с одним сервером NFS при перемещении данных.
Система NFS (Network File System) - одна из наиболее распространенных сетевых файловых систем, разработанная фирмой Sun Microsystems и используемая в системе Solaris.
NFS – это спецификация и реализация программной системы для доступа к удаленным файлам через локальную (или глобальную) сеть .
Данная реализация является частью операционных систем Solaris и SunOS, использующих быстрый, но менее надежный асинхронный сетевой протокол , основанный на датаграммах (UDP/IP), и сеть Ethernet (сетевые протоколы подробно рассматриваются далее в соответствующих лекциях курса).
В реализации NFS используются процессы- демоны nfsd (обработка NFS -запросов клиентов) и mountd (обработка запросов монтирования), а также biod ( асинхронный ввод-вывод блоков удаленных файлов на клиенте).
Взаимодействующие рабочие станции рассматриваются в NFS как набор независимых машин с независимыми файловыми системами, что позволяет совместно использовать файловые системы прозрачным образом.
Удаленная директория монтируется на локальную директорию. Смонтированная директория трактуется как полное поддерево локальной файловой системы, заменяя поддерево локальной файловой системы.
Спецификация удаленной директории для операции монтирования не является прозрачной; необходимо указать имя машины с удаленной директорией. После этого файлы в удаленной директории могут быть доступны прозрачным образом, т.е. операции над локальными и удаленными файлами программируются одинаково. При этом выполняется доступ только к тем блокам файла, к которым реально происходит обращение, а не ко всему файлу.
С учетом назначения полномочий доступа, потенциально любая файловая система (или директория внутри файловой системы), может быть смонтирована удаленно поверх локальной директории.
NFS спроектирована для работы в неоднородном окружении различных машин, ОС и сетевых архитектур; спецификация NFS от них не зависит.
Эта независимость достигнута благодаря использованию примитивов RPC (Remote Procedure Call – удаленный вызов процедуры),реализованных поверх External Data Representation (XDR) – протокола – машинно-независимого представления данных для их передачи через сеть .
Спецификация NFS различает сервисы, обеспечиваемые механизмом монтирования, и фактические удаленные файловые системы .
Протокол монтирования в NFS устанавливает первоначальную логическую связь между сервером и клиентом.
Операция монтирования включает имя удаленной директории, подлежащей монтированию, и имя машины-сервера, на которой она хранится.
Запрос на монтирование отображается на соответствующий RPC и передается на mount - сервер , исполняемый на серверной машине.
Список экспорта (export list) указывает список файловых систем, которые сервер экспортирует для монтирования, а также имена машин, на которых разрешено их монтировать.
Исполняя запрос на монтирование, соответствующий этому списку, сервер возвращает обработчик файла (file handle)— ключ к дальнейшему доступу. File handle содержит идентификатор файловой системы и номер inode (индексного узла), идентифицирующий монтируемую директорию внутри экспортируемой файловой системы.
Операция монтирования изменяет только точку зрения клиента и не влияет на серверную часть.
Монтирование в NFS иллюстрируется рис. 20.11 и рис. 20.12: на рис. 20.11 изображены три независимых файловых системы, а на рис. 20.12 – результат монтирования в NFS одной из них ( директория dir1 смонтировалась как поддиректория удаленной файловой системы /usr/local.
Протокол NFS предоставляет набор RPC для удаленных операций над файлами. Процедуры поддерживают следующие операции :
- Поиск файла в директории
- Чтение набора элементов директории
- Управление ссылками и директориями
- Доступ к атрибутам файлов
- Чтение и запись файлов
NFS – серверы не имеют состояния ( stateless ); каждый запрос должен иметь полный набор аргументов.
Модифицированные данные должны быть направлены на диск сервера до того, как результаты вернутся к клиенту (теряется возможность кэширования).
NFS – протокол не поддерживает механизмы управления параллельным доступом.
Система NFS имеет три основных уровня архитектуры:
- UNIX – интерфейс файловой системы (основан на вызовах open , read , write и close calls и на дескрипторах файлов ).
- Уровень Virtual File System (VFS) – различает локальные и удаленные файлы , и в дальнейшем локальные файлы обрабатываются в соответствии с типами их файловых систем. VFS активизирует операции, специфичные для конкретной файловой системы, для обработки локальных запросов в соответствии с типами файловых систем. Уровень VFS вызывает процедуры NFS – протокола для удаленных запросов.
- NFS – сервисный уровень – нижний уровень архитектуры; реализует NFS – протокол.
Схема архитектуры NFS приведена на рис. 20.13.
Трансляция имен путей в NFS выполняется путем разбивки имени пути на последовательность имен компонент и выполнения отдельного NFS - поиска для каждой пары (компонента, vnode директории).
Для ускорения поиска на клиентской машине организуется кэш имен удаленных директорий.
Удаленные операции NFS обеспечивают почти взаимно-однозначное соответствие между обычными системными вызовами UNIX и удаленными вызовами процедур протокола NFS (за исключением открытия и закрытия файлов ).
NFS основана на парадигме удаленных сервисов, но поддерживает буферизацию и кэширование для повышения эффективности.
NFS организует кэш блоков файлов: когда файл открывается, ядро проверяет у удаленного сервера, необходимо ли обновить кэшируемые атрибуты. Кэшируемые блоки используются, только если соответствующие кэшированные атрибуты самые свежие. Кэш атрибутов файлов обновляется по мере передачи обновленных атрибутов с сервера.
Клиенты не освобождают задерживаемые блоки до тех пор, пока сервер не подтвердит, что они записаны на диск .
Выражаясь менее формально, впечатления от многолетней работы автора в локальной сети с использованием NFS достаточно благоприятные. Система обеспечивает монтирование удаленных файловых систем и работу с ними, как если бы они были расположены на локальной машине (только, разумеется, с некоторым замедлением). Она достаточно удобна и надежна. При каких-либо сбоях характерной чертой NFS является то, что она оставляет в локальных директориях временные файлы – копии удаленных файлов – с именами вида .N0035 и т.д. В таком случае рекомендуется удалить эти файлы обычным образом и продолжить работу.
Сетевая файловая система (NFS ) - это протокол распределенной файловой системы , первоначально разработанный Sun Microsystems (Sun) в 1984 году, позволяющий пользователю на клиентском компьютере для доступа к файлам через компьютерную сеть аналогично доступу к локальному хранилищу. NFS, как и многие другие протоколы, основан на системе удаленного вызова процедур открытых сетевых вычислений (ONC RPC). NFS - это открытый стандарт, определенный в запросе комментариев (RFC), позволяющий любому реализовать протокол.
Содержание
Версии и вариации
Sun использовала версию 1 только для собственных экспериментальных целей. Когда группа разработчиков внесла существенные изменения в NFS версии 1 и выпустила ее вне Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC.
NFSv2
Версия 2 протокола (определенная в RFC 1094 , март 1989 г.) первоначально работала только по протоколу дейтаграмм пользователя (UDP). Его разработчики хотели сохранить серверную часть без состояния , при этом блокировка (например) реализована вне основного протокола. Люди, участвовавшие в создании NFS версии 2, включают, Билл Джой и другие.
Интерфейс Virtual File System допускает модульную реализацию, отраженную в простом протоколе . К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V выпуска 2, DOS и VAX / VMS с использованием Eunice . NFSv2 позволяет читать только первые 2 ГБ файла из-за ограничений 32-бит .
NFSv3
Версия 3 (RFC 1813 , июнь 1995) добавлено:
- поддержка 64-битных размеров файлов и смещений для обработки файлов размером более 2 гигабайт. (ГБ);
- поддержка асинхронной записи на сервере для повышения производительности записи;
- дополнительные атрибуты файлов во многих ответах, чтобы избежать их повторной выборки;
- операция READDIRPLUS, чтобы получить дескрипторы и атрибуты файлов вместе с именами файлов при сканировании каталога;
- внесены другие улучшения.
Первое предложение NFS версии 3 в Sun Microsystems было создано вскоре после выпуска NFS версии 2. Основным мотивом была попытка смягчить проблему производительности синхронной операции записи в NFS версии 2. К июлю 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 через WAN более осуществим и позволял использовать более крупные объемы передачи для чтения и записи, превышающие ограничение в 8 КБ, установленное Протоколом дейтаграмм пользователя .
NFSv4
NFS версии 4.1 (RFC 5661 , январь 2010 г .; пересмотренный в RFC 8881 , август 2020 г.) нацелен на обеспечение поддержки протокола для использования преимуществ развертывания кластерных серверов, включая возможность обеспечения масштабируемого параллельного доступа к файлам, распределенным между несколькими серверами (расширение pNFS). Версия 4.1 включает механизм транкинга сеансов (также известный как NFS Multipathing) и доступный в некоторых корпоративных решениях как VMware ESXi .
NFS версии 4.2 (RFC 7862 ) был опубликован в ноябре 2016 года с новыми функциями, включая : клонирование и копирование на стороне сервера, рекомендации по вводу-выводу приложения, разреженные файлы, резервирование места, блок данных приложения (ADB), NFS с меткой sec_label, которая соответствует любой системе безопасности MAC, и две новые операции для pNFS (LAYOUTERROR и LAYOUTSTATS).
Одним из больших преимуществ NFSv4 перед его предшественниками является то, что для запуска службы используется только один порт UDP или TCP, 2049, что упрощает использование протокола через брандмауэры.
Другие расширения
WebNFS , расширение для версий 2 и 3, позволяет NFS более легко интегрироваться в веб-браузеры и обеспечивать работу через брандмауэры. В 2007 году Sun Microsystems открыла исходный код своей реализации WebNFS на стороне клиента.
Различные протоколы побочного канала стали ассоциироваться с NFS. Примечание:
- протокол рекомендаций по диапазону байтов (NLM) (добавлен для поддержки UNIX System Vблокировки файлов API-интерфейсов)
- удаленных отчетов о квотах (RQUOTAD ) протокол, который позволяет пользователям NFS просматривать свои квоты хранения данных на серверах NFS
- , адаптация NFS, которая использует удаленный прямой доступ к памяти (RDMA) в качестве транспорта
- NFS-Ganesha, сервер NFS, работающий в пользовательском пространстве и поддерживающий различные файловые системы, такие как GPFS / Spectrum Scale, CephFS через соответствующие модули FSAL (уровень абстракции файловой системы). CephFS FSAL, поддерживаемая с использованием libcephfs
- Trusted NFS (TNFS)
Platforms
NFS часто используется с операционными системами Unix (такими как Solaris , AIX , HP-UX ), операционные системы Apple macOS и Unix-подобные (например, Linux и FreeBSD ). Он также доступен для таких операционных систем, как Acorn RISC OS , AmigaOS , классическая Mac OS , OpenVMS , MS. -DOS , Microsoft Windows , OS / 2 , ArcaOS , Novell NetWare и IBM AS / 400 . Альтернативные протоколы удаленного доступа к файлам включают Server Message Block (SMB, также называемый CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP), и файловая система файлового сервера OS / 400 (QFileSvr.400).
SMB и NetWare Core Protocol (NCP) встречаются чаще, чем NFS в системах под управлением Microsoft Windows; AFP встречается чаще, чем NFS в системах Apple Macintosh ; а QFileSvr.400 чаще встречается в системах AS / 400 . Haiku в 2012 году добавила поддержку NFSv4 в рамках проекта Google Summer of Code.
Типичная реализация
Предполагая сценарий в стиле Unix, в котором одной машине (клиент ) требуется доступ к данным, хранящимся на другая машина (сервер NFS ):
- Сервер реализует процессы NFS daemon , работающие по умолчанию как nfsd , чтобы сделать свои данные общедоступными для клиентов .
- Администратор сервера определяет, что сделать доступным, экспортируя имена и параметры каталогов , обычно используя файл конфигурации / etc / exports и Команда exportfs .
- Администрация сервера security гарантирует, что он может распознавать и утверждать проверенных клиентов.
- Конфигурация сети сервера гарантирует, что соответствующие клиенты могут вести переговоры с это через любую firewallсистему .
- Клиентский компьютер запрашивает доступ к экспортированным данным, обычно с помощью команды mount . (Клиент спрашивает сервер (rpcbind), какой порт использует сервер NFS, клиент подключается к серверу NFS (nfsd), nfsd передает запрос на mountd)
- Если все идет хорошо, пользователи на клиенте машина может затем просматривать и взаимодействовать с смонтированными файловыми системами на сервере в рамках разрешенных параметров.
Обратите внимание, что автоматизация процесса монтирования NFS может иметь место - возможно, с использованием / etc / fstab и / или автомонтаж объектов.
Разработка протокола
Во время разработки протокола ONC (называвшегося SunRPC в то время) только Apollo Network Computing System (NCS) предлагала сопоставимая функциональность. Две конкурирующие группы возникли из-за фундаментальных различий в двух системах удаленного вызова процедур. Аргументы были сосредоточены на методе кодирования данных - ONC Внешнее представление данных (XDR) всегда отображало целые числа в порядке big-endian , даже если оба одноранговых узла соединения имели мало -endian машинные архитектуры, тогда как метод NCS пытался избежать байтовой перестановки, когда два одноранговых узла разделяли общую endianness в своих машинных архитектурах. Отраслевая группа, названная созданной (март 1987 г.), предприняла (в конечном счете неудачную) попытку примирить две среды сетевых вычислений.
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), чтобы удовлетворить требованиям IETF, что стандарты протокола имеют адекватную безопасность.
Позже Sun и ISOC достигли аналогичного соглашения о предоставлении ISOC контроля над изменением NFS, хотя при написании контракта тщательно исключали NFS версии 2 и версии 3. Вместо этого ISOC получила право добавлять новые версии в NFS. протокол, в результате чего IETF определил NFS версии 4 в 2003 году.
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) с целью улучшения возможностей параллелизма доступа к данным. Протокол NFSv4.1 определяет метод отделения метаданных файловой системы от местоположения данных файла; он выходит за рамки простого разделения имен и данных, распределяя данные между набором серверов данных. Это отличается от традиционного сервера NFS, который хранит имена файлов и их данные под единым зонтиком сервера. Некоторые продукты представляют собой многоузловые NFS-серверы, но участие клиента в разделении метаданных и данных ограничено.
Сервер NFSv4.1 pNFS - это набор серверных ресурсов или компонентов; предполагается, что они контролируются сервером метаданных.
Клиент pNFS по-прежнему обращается к одному серверу метаданных для обхода или взаимодействия с пространством имен; когда клиент перемещает данные на сервер и с сервера, он может напрямую взаимодействовать с набором серверов данных, принадлежащих коллекции серверов pNFS. Клиент NFSv4.1 может быть включен для непосредственного участия в точном расположении файловых данных и во избежание одиночного взаимодействия с одним сервером NFS при перемещении данных.
Читайте также: