Network File System

Поделись знанием:
Перейти к: навигация, поиск

Network File System (NFS) — протокол сетевого доступа к файловым системам, первоначально разработан Sun Microsystems в 1984 году. Основан на протоколе вызова удалённых процедур (ONC RPC[1]). Позволяет подключать (монтировать) удалённые файловые системы через сеть.

NFS абстрагирован от типов файловых систем как сервера, так и клиента, существует множество реализаций NFS-серверов и клиентов для различных операционных систем и аппаратных архитектур. Наиболее зрелая версия NFS — v.4[2], поддерживающая различные средства аутентификации (в частности, Kerberos и LIPKEY с использованием протокола RPCSEC GSS) и списков контроля доступа (как POSIX, так и Windows-типов).

NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от FTP, протокол NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS файлом, без каких либо модификаций самой программы.

NFS-клиенты получают доступ к файлам на NFS-сервере путём отправки RPC-запросов на сервер. Это может быть реализовано с использованием обычных пользовательских процессов — а именно, NFS-клиент может быть пользовательским процессом, который осуществляет конкретные RPC-вызовы на сервер, который так же может быть пользовательским процессом.

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





Цели разработки

Изначальными требованиями при разработке NFS были:

  • потенциальная поддержка различных операционных систем (не только UNIX), чтобы серверы и клиенты NFS возможно было бы реализовать в разных операционных системах;
  • протокол не должен зависеть от каких-либо определённых аппаратных средств;
  • должны быть реализованы простые механизмы восстановления в случае отказов сервера или клиента;
  • приложения должны иметь прозрачный доступ к удаленным файлам без использования специальных путевых имен или библиотек и без перекомпиляции;
  • для UNIX-клиентов должна поддерживаться семантика UNIX;
  • производительность NFS должна быть сравнима с производительностью локальных дисков;
  • реализация не должна быть зависимой от транспортных средств.

Компоненты NFS

Реализация NFS состоит из нескольких компонентов. Некоторые из них локализованы либо на сервере, либо на клиенте, а некоторые используются и на обеих сторонах соединения. Некоторые компоненты не требуются для обеспечения основных функциональных возможностей, но составляют часть расширенного интерфейса NFS.

Протокол NFS определяет набор запросов (операций), которые могут быть направлены клиентом к серверу, а также набор аргументов и возвращаемые значения для каждого из этих запросов. Версия 1 этого протокола существовала только в недрах Sun Microsystems и никогда не была выпущена. Все реализации NFS (в том числе NFSv3) поддерживают версию 2 NFS (NFSv2), которая впервые была выпущена в 1985 году в SunOS 2.0. Версия 3 протокола была опубликована в 1993 году и реализована некоторыми фирмами-поставщиками.

Протокол удаленного вызова процедур (RPC) определяет формат всех взаимодействий между клиентом и сервером. Каждый запрос NFS посылается как пакет RPC.

Внешнее представление данных (XDR — External Data Representation) обеспечивает машинно-независимый метод кодирования данных для пересылки через сеть. Все запросы RPC используют кодирование XDR для передачи данных. Следует отметить, что XDR и RPC используются для реализации многих других сервисов, помимо NFS.

Программный код сервера NFS отвечает за обработку всех запросов клиента и обеспечивает доступ к экспортируемым файловым системам. Программный код клиента NFS реализует все обращения клиентской системы к удаленным файлам путём посылки серверу одного или нескольких запросов RPC.

Протокол монтирования определяет семантику монтирования и размонтирования файловых систем NFS. NFS использует несколько фоновых процессов-демонов. На сервере набор демонов nfsd ожидают запросы клиентов NFS и отвечают на них. Демон mountd обрабатывает запросы монтирования. На клиенте набор демонов biod обрабатывает асинхронный ввод-вывод блоков файлов NFS.

Менеджер блокировок сети (NLM — Network Lock Manager) и монитор состояния сети (NSM — Network Status Monitor) вместе обеспечивают средства для блокировки файлов в сети. Эти средства, хотя формально не связаны с NFS, можно найти в большинстве реализаций NFS. Они обеспечивают сервисы не возможные в базовом протоколе. NLM и NSM реализуют функционирование сервера с помощью демонов lockd и statd соответственно.

Версии

Первая версия[3] применялась только для внутреннего использования в Sun в экспериментальных целях.

Версия 2[3] выпущена в марте 1989 года, первоначально полностью работала по протоколу UDP. Разработчики решили не хранить данных о внутреннем состоянии внутри протокола, как пример, блокировка, реализованная вне базового протокола. Люди, вовлечённые в создание NFS версии 2 — Расти Сэндберг (Rusty Sandberg,) Боб Лайон (Bob Lyon), Билл Джой и Стив Клейман (Steve Kleiman).

NFSv3[4] вышла в июне 1995 года, в ней добавлена поддержка дескрипторов файлов переменного размера до 64 байт (в версии 2 — массив фиксированного размера 32 байта), снято ограничение на 8192 байта в RPC-вызовах чтения и записи (тем самым, размер передаваемого блока в вызовах ограничен только пределом для UDP-датаграммы — 65535 байт), реализована поддержка файлов больших размеров, поддержаны асинхронные вызовы операций записи, к процедурам READ и WRITE добавлены вызовы ACCESS (проверка прав доступа к файлу), MKNOD (создание специального файла Unix), READDIRPLUS (возвращает имена файлов в директории вместе с их атрибутами), FSINFO (возвращает статистическую информацию о файловой системе), FSSTAT (возвращает динамическую информацию о файловой системе), PATHCONF (возвращает POSIX.1-информацию о файле) и COMMIT (передает ранее сделанные асинхронные записи на постоянное хранение).

На момент введения версии 3 отмечен рост популярности в среде разработчиков протокола TCP. Некоторые независимые разработчики самостоятельно добавили поддержку протокола TCP для NFS версии 2 в качестве транспортного, Sun Microsystems добавили поддержку TCP в NFS в одном из дополнений к версии 3. С поддержкой TCP повысились практическая осуществимость использования NFS в глобальных сетях.

NFSv4[5] выпущена в декабре 2000 года под влиянием AFS и CIFS, в неё включены улучшения производительности и безопасности. Версия 4 стала первой версией, разработанной совместно с Internet Engineering Task Force (IETF). NFS версии v4.1[6] была одобрена IESG в январе 2010 года (новая спецификация, объёмом 612 страниц, стала известна как самый длинный документ, одобренный IETF). Важным нововведением версии 4.1 является спецификация pNFS — Parallel NFS, механизма параллельного доступа NFS-клиента к данным множества распределенных NFS-серверов. Наличие такого механизма в стандарте сетевой файловой системы поможет строить распределённые облачные хранилища и информационные системы.

Другие модули

WebNFS — это расширение для NFS версий 2 и 3, которое позволяют легче интегрироваться в веб-браузеры и дает возможность работы через брандмауэр. Различные сторонние протоколы стали ассоциироваться с NFS, в том числе:

Менеджер блокировок сети (NLM — Network Lock Manager) и монитор состояния сети (NSM — Network Status Monitor) вместе обеспечивают средства для блокировки файлов в сети. Эти средства, хотя формально не связаны с NFS, можно найти в большинстве реализаций NFS. Они обеспечивают сервисы, невозможные в базовом протоколе. NLM и NSM реализуют функционирование сервера с помощью демонов lockd и statd, соответственно.

Протокол удалённой информации о квотах (RQUOTAD) (NFS позволяет пользователям просматривать дисковую квоту на удалённом NFS сервере).

Платформы

Хотя NFS чаще всего используют в Unix-подобных системах, данный протокол можно также использовать и на других операционных системах, таких, как Mac OS Classic, OpenVMS, Microsoft Windows, Novell NetWare, и IBM AS/400. В число альтернативных протоколов удаленного доступа к файлам входят Server Message Block (SMB, также известный как CIFS) протокол, Apple Filing Protocol (AFP), NetWare Core Protocol (NCP). Под операционной системой Microsoft Windows SMB и NetWare Core Protocol (NCP) используется чаще, чем NFS; В системах Macintosh AFP встречается чаще, чем NFS.

Типичные настройки NFS-клиента и NFS-сервера

  • Для клиента одинаково представлены локальные и NFS-файлы, ядро определяет, когда файл открыт.
  • NFS-клиент отправляет RPC-запросы NFS-серверу через стек TCP/IP. NFS обычно использует UDP, однако более новые реализации могут использовать TCP.
  • NFS-сервер получает запросы от клиента в виде UDP-датаграмм на порт 2049. Несмотря на то, что NFS может работать с преобразователем портов, что позволяет серверу использовать динамически назначаемые порты, UDP-порт 2049 жёстко закреплен за NFS в большинстве реализаций.
  • Когда NFS-сервер получает запрос от клиента, он передается локальной подпрограмме доступа к файлу, которая обеспечивает доступ к локальному диску на сервере.
  • Серверу может потребоваться время, для того чтобы обработать запросы клиента. Даже доступ к локальной файловой системе может занять некоторое время. В течение этого времени сервер не хочет блокировать запросы от других клиентов, которые также должны быть обслужены. Чтобы справиться с подобной ситуацией, большинство NFS-серверов запускаются несколько раз, то есть внутри ядра существует несколько NFS-серверов. Конкретные методы решения зависят от операционной системы. В большинстве ядер Unix-систем не используется несколько NFS-серверов, вместо этого запускается несколько пользовательских процессов (которые обычно называются nfsd), которые осуществляют один системный вызов и остаются внутри ядра в качестве процесса ядра.
  • Точно так же, NFS-клиенту требуется время, чтобы обработать запрос от пользовательского процесса на узле клиента. RPC выдается на узел сервера, после чего ожидается отклик. Для того, чтобы пользовательские процессы на узле клиента могли в любой момент воспользоваться NFS, существует несколько NFS-клиентов, запущенных внутри ядра клиента. Конкретная реализация также зависит от операционной системы. Unix-система обычно использует технику, напоминающую NFS-сервер: пользовательский процесс, называемый biod, осуществляет один единственный системный вызов и остается внутри ядра как процесс ядра.
  • Большинство Unix-узлов может функционировать и как NFS-клиент, и как NFS-сервер. Большинство мейнфреймов IBM предоставляет только функции NFS-сервера.

См. также

Напишите отзыв о статье "Network File System"

Примечания

  1. Open Network Computing Remote Procedure Call, RFC 1057, RFC 1831
  2. RFC 3010, RFC 3530
  3. 1 2 RFC 1094
  4. RFC 1813
  5. RFC 3010, пересмотренная версия — RFC 3530, апрель 2003)
  6. RFC 5661

Ссылки

  • [www.ietf.org/html.charters/nfsv4-charter.html Network File System Version 4 // IETF]
  • [wiki.linux-nfs.org/wiki/index.php/Main_Page wiki.linux-nfs.org]
Стандарты
  • RFC 1094 NFS: Network File System Protocol Specification (March 1989)
  • RFC 1813 NFS Version 3 Protocol Specification (June 1995)
  • RFC 2224 NFS URL Scheme
  • RFC 2339 An Agreement Between the Internet Society, the IETF, and Sun Microsystems, Inc. in the matter of NFS V.4 Protocols
  • RFC 2623 NFS Version 2 and Version 3 Security Issues and the NFS Protocol’s Use of RPCSEC_GSS and Kerberos V5
  • RFC 2624 NFS Version 4 Design Considerations
  • RFC 3010 NFS version 4 Protocol
  • RFC 3530 Network File System (NFS) version 4 Protocol
  • RFC 5661 Network File System (NFS) Version 4 Minor Version 1 Protocol

Отрывок, характеризующий Network File System

На краю дороги стоял дуб. Вероятно в десять раз старше берез, составлявших лес, он был в десять раз толще и в два раза выше каждой березы. Это был огромный в два обхвата дуб с обломанными, давно видно, суками и с обломанной корой, заросшей старыми болячками. С огромными своими неуклюжими, несимметрично растопыренными, корявыми руками и пальцами, он старым, сердитым и презрительным уродом стоял между улыбающимися березами. Только он один не хотел подчиняться обаянию весны и не хотел видеть ни весны, ни солнца.
«Весна, и любовь, и счастие!» – как будто говорил этот дуб, – «и как не надоест вам всё один и тот же глупый и бессмысленный обман. Всё одно и то же, и всё обман! Нет ни весны, ни солнца, ни счастия. Вон смотрите, сидят задавленные мертвые ели, всегда одинакие, и вон и я растопырил свои обломанные, ободранные пальцы, где ни выросли они – из спины, из боков; как выросли – так и стою, и не верю вашим надеждам и обманам».
Князь Андрей несколько раз оглянулся на этот дуб, проезжая по лесу, как будто он чего то ждал от него. Цветы и трава были и под дубом, но он всё так же, хмурясь, неподвижно, уродливо и упорно, стоял посреди их.
«Да, он прав, тысячу раз прав этот дуб, думал князь Андрей, пускай другие, молодые, вновь поддаются на этот обман, а мы знаем жизнь, – наша жизнь кончена!» Целый новый ряд мыслей безнадежных, но грустно приятных в связи с этим дубом, возник в душе князя Андрея. Во время этого путешествия он как будто вновь обдумал всю свою жизнь, и пришел к тому же прежнему успокоительному и безнадежному заключению, что ему начинать ничего было не надо, что он должен доживать свою жизнь, не делая зла, не тревожась и ничего не желая.


По опекунским делам рязанского именья, князю Андрею надо было видеться с уездным предводителем. Предводителем был граф Илья Андреич Ростов, и князь Андрей в середине мая поехал к нему.
Был уже жаркий период весны. Лес уже весь оделся, была пыль и было так жарко, что проезжая мимо воды, хотелось купаться.
Князь Андрей, невеселый и озабоченный соображениями о том, что и что ему нужно о делах спросить у предводителя, подъезжал по аллее сада к отрадненскому дому Ростовых. Вправо из за деревьев он услыхал женский, веселый крик, и увидал бегущую на перерез его коляски толпу девушек. Впереди других ближе, подбегала к коляске черноволосая, очень тоненькая, странно тоненькая, черноглазая девушка в желтом ситцевом платье, повязанная белым носовым платком, из под которого выбивались пряди расчесавшихся волос. Девушка что то кричала, но узнав чужого, не взглянув на него, со смехом побежала назад.
Князю Андрею вдруг стало от чего то больно. День был так хорош, солнце так ярко, кругом всё так весело; а эта тоненькая и хорошенькая девушка не знала и не хотела знать про его существование и была довольна, и счастлива какой то своей отдельной, – верно глупой – но веселой и счастливой жизнию. «Чему она так рада? о чем она думает! Не об уставе военном, не об устройстве рязанских оброчных. О чем она думает? И чем она счастлива?» невольно с любопытством спрашивал себя князь Андрей.
Граф Илья Андреич в 1809 м году жил в Отрадном всё так же как и прежде, то есть принимая почти всю губернию, с охотами, театрами, обедами и музыкантами. Он, как всякому новому гостю, был рад князю Андрею, и почти насильно оставил его ночевать.
В продолжение скучного дня, во время которого князя Андрея занимали старшие хозяева и почетнейшие из гостей, которыми по случаю приближающихся именин был полон дом старого графа, Болконский несколько раз взглядывая на Наташу чему то смеявшуюся и веселившуюся между другой молодой половиной общества, всё спрашивал себя: «о чем она думает? Чему она так рада!».
Вечером оставшись один на новом месте, он долго не мог заснуть. Он читал, потом потушил свечу и опять зажег ее. В комнате с закрытыми изнутри ставнями было жарко. Он досадовал на этого глупого старика (так он называл Ростова), который задержал его, уверяя, что нужные бумаги в городе, не доставлены еще, досадовал на себя за то, что остался.
Князь Андрей встал и подошел к окну, чтобы отворить его. Как только он открыл ставни, лунный свет, как будто он настороже у окна давно ждал этого, ворвался в комнату. Он отворил окно. Ночь была свежая и неподвижно светлая. Перед самым окном был ряд подстриженных дерев, черных с одной и серебристо освещенных с другой стороны. Под деревами была какая то сочная, мокрая, кудрявая растительность с серебристыми кое где листьями и стеблями. Далее за черными деревами была какая то блестящая росой крыша, правее большое кудрявое дерево, с ярко белым стволом и сучьями, и выше его почти полная луна на светлом, почти беззвездном, весеннем небе. Князь Андрей облокотился на окно и глаза его остановились на этом небе.
Комната князя Андрея была в среднем этаже; в комнатах над ним тоже жили и не спали. Он услыхал сверху женский говор.
– Только еще один раз, – сказал сверху женский голос, который сейчас узнал князь Андрей.
– Да когда же ты спать будешь? – отвечал другой голос.
– Я не буду, я не могу спать, что ж мне делать! Ну, последний раз…
Два женские голоса запели какую то музыкальную фразу, составлявшую конец чего то.
– Ах какая прелесть! Ну теперь спать, и конец.
– Ты спи, а я не могу, – отвечал первый голос, приблизившийся к окну. Она видимо совсем высунулась в окно, потому что слышно было шуршанье ее платья и даже дыханье. Всё затихло и окаменело, как и луна и ее свет и тени. Князь Андрей тоже боялся пошевелиться, чтобы не выдать своего невольного присутствия.
– Соня! Соня! – послышался опять первый голос. – Ну как можно спать! Да ты посмотри, что за прелесть! Ах, какая прелесть! Да проснись же, Соня, – сказала она почти со слезами в голосе. – Ведь этакой прелестной ночи никогда, никогда не бывало.
Соня неохотно что то отвечала.
– Нет, ты посмотри, что за луна!… Ах, какая прелесть! Ты поди сюда. Душенька, голубушка, поди сюда. Ну, видишь? Так бы вот села на корточки, вот так, подхватила бы себя под коленки, – туже, как можно туже – натужиться надо. Вот так!
– Полно, ты упадешь.
Послышалась борьба и недовольный голос Сони: «Ведь второй час».
– Ах, ты только всё портишь мне. Ну, иди, иди.
Опять всё замолкло, но князь Андрей знал, что она всё еще сидит тут, он слышал иногда тихое шевеленье, иногда вздохи.
– Ах… Боже мой! Боже мой! что ж это такое! – вдруг вскрикнула она. – Спать так спать! – и захлопнула окно.
«И дела нет до моего существования!» подумал князь Андрей в то время, как он прислушивался к ее говору, почему то ожидая и боясь, что она скажет что нибудь про него. – «И опять она! И как нарочно!» думал он. В душе его вдруг поднялась такая неожиданная путаница молодых мыслей и надежд, противоречащих всей его жизни, что он, чувствуя себя не в силах уяснить себе свое состояние, тотчас же заснул.


На другой день простившись только с одним графом, не дождавшись выхода дам, князь Андрей поехал домой.
Уже было начало июня, когда князь Андрей, возвращаясь домой, въехал опять в ту березовую рощу, в которой этот старый, корявый дуб так странно и памятно поразил его. Бубенчики еще глуше звенели в лесу, чем полтора месяца тому назад; всё было полно, тенисто и густо; и молодые ели, рассыпанные по лесу, не нарушали общей красоты и, подделываясь под общий характер, нежно зеленели пушистыми молодыми побегами.
Целый день был жаркий, где то собиралась гроза, но только небольшая тучка брызнула на пыль дороги и на сочные листья. Левая сторона леса была темна, в тени; правая мокрая, глянцовитая блестела на солнце, чуть колыхаясь от ветра. Всё было в цвету; соловьи трещали и перекатывались то близко, то далеко.
«Да, здесь, в этом лесу был этот дуб, с которым мы были согласны», подумал князь Андрей. «Да где он», подумал опять князь Андрей, глядя на левую сторону дороги и сам того не зная, не узнавая его, любовался тем дубом, которого он искал. Старый дуб, весь преображенный, раскинувшись шатром сочной, темной зелени, млел, чуть колыхаясь в лучах вечернего солнца. Ни корявых пальцев, ни болячек, ни старого недоверия и горя, – ничего не было видно. Сквозь жесткую, столетнюю кору пробились без сучков сочные, молодые листья, так что верить нельзя было, что этот старик произвел их. «Да, это тот самый дуб», подумал князь Андрей, и на него вдруг нашло беспричинное, весеннее чувство радости и обновления. Все лучшие минуты его жизни вдруг в одно и то же время вспомнились ему. И Аустерлиц с высоким небом, и мертвое, укоризненное лицо жены, и Пьер на пароме, и девочка, взволнованная красотою ночи, и эта ночь, и луна, – и всё это вдруг вспомнилось ему.
«Нет, жизнь не кончена в 31 год, вдруг окончательно, беспеременно решил князь Андрей. Мало того, что я знаю всё то, что есть во мне, надо, чтобы и все знали это: и Пьер, и эта девочка, которая хотела улететь в небо, надо, чтобы все знали меня, чтобы не для одного меня шла моя жизнь, чтоб не жили они так независимо от моей жизни, чтоб на всех она отражалась и чтобы все они жили со мною вместе!»

Возвратившись из своей поездки, князь Андрей решился осенью ехать в Петербург и придумал разные причины этого решенья. Целый ряд разумных, логических доводов, почему ему необходимо ехать в Петербург и даже служить, ежеминутно был готов к его услугам. Он даже теперь не понимал, как мог он когда нибудь сомневаться в необходимости принять деятельное участие в жизни, точно так же как месяц тому назад он не понимал, как могла бы ему притти мысль уехать из деревни. Ему казалось ясно, что все его опыты жизни должны были пропасть даром и быть бессмыслицей, ежели бы он не приложил их к делу и не принял опять деятельного участия в жизни. Он даже не понимал того, как на основании таких же бедных разумных доводов прежде очевидно было, что он бы унизился, ежели бы теперь после своих уроков жизни опять бы поверил в возможность приносить пользу и в возможность счастия и любви. Теперь разум подсказывал совсем другое. После этой поездки князь Андрей стал скучать в деревне, прежние занятия не интересовали его, и часто, сидя один в своем кабинете, он вставал, подходил к зеркалу и долго смотрел на свое лицо. Потом он отворачивался и смотрел на портрет покойницы Лизы, которая с взбитыми a la grecque [по гречески] буклями нежно и весело смотрела на него из золотой рамки. Она уже не говорила мужу прежних страшных слов, она просто и весело с любопытством смотрела на него. И князь Андрей, заложив назад руки, долго ходил по комнате, то хмурясь, то улыбаясь, передумывая те неразумные, невыразимые словом, тайные как преступление мысли, связанные с Пьером, с славой, с девушкой на окне, с дубом, с женской красотой и любовью, которые изменили всю его жизнь. И в эти то минуты, когда кто входил к нему, он бывал особенно сух, строго решителен и в особенности неприятно логичен.