Network File System

Network File System (NFS) — протокол мережевого доступу до файлових систем, спочатку розроблений Sun Microsystems в 1984 році. Заснований на протоколі (ONC RPC, Open Network Computing Remote Procedure Call, RFC 1057, RFC 1831). Дозволяє підключати (монтувати) віддалені файлові системи через мережу, описаний в RFC 1094, RFC 1813, RFC 3530 і RFC 5661.

Загальні відомості

NFS абстрагована від типів файлових систем як сервера, так і клієнта, існує безліч реалізацій NFS-серверів і клієнтів для різних операційних систем і апаратних архітектур. У цей час (2007) використовується найзріліша версія NFS v.4 (RFC 3010), що підтримує різні засоби аутентифікації (зокрема, Kerberos і LIPKEY з використанням протоколу RPCSEC_GSS) і списків контролю доступу (як POSIX, так і Windows-Типів).

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

NFS надає клієнтам прозорий доступ до файлів і файлової системи сервера. На відміну від FTP протокол NFS здійснює доступ тільки до тих частин файлу, до яких звернувся процес, і основна перевага його в тому, що він робить цей доступ прозорим. Це означає, що будь-який застосунок клієнта, що може працювати з локальним файлом, з таким же успіхом може працювати й з NFS файлом, без будь-яких модифікацій самої програми.

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

Цілі розробки

Першочергова розробка NFS мала наступні цілі:

  • 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 відповідно.

Дивись також

Посилання

  • Network File System Version 4 // IETF
  • wiki.linux-nfs.org [Архівовано 7 червня 2010 у Wayback Machine.]
  • Блог Mike Eisler, участника разработки спецификации NFS4/4.1/pNFS


Інформаційні технології Це незавершена стаття про інформаційні технології.
Ви можете допомогти проєкту, виправивши або дописавши її.
Цю статтю треба вікіфікувати для відповідності стандартам якості Вікіпедії. Будь ласка, допоможіть додаванням доречних внутрішніх посилань або вдосконаленням розмітки статті. (Липень 2010)
  • п
  • о
  • р
Дискові
NAS
Спеціалізовані
Псевдо- і віртуальні
  • configfs
  • devfs[en]
  • procfs
  • specfs
  • sysfs
  • tmpfs
  • WinFS
Шифровані
  • п
  • о
  • р
Схеми URI
Офіційні
aaa: • aaas: • acap[en]: • cap: • cid: • crid[en]: • data[en]: • dav: • dict: • dns: • fax: • file[en]: • ftp: • go: • gopher: • h323: • http: • https: • im: • imap: • ldap: • mailto: • mid: • news: • nfs: • nntp: • pop: • pres: • rtsp: • sip: • sips: • snmp: • tel: • telnet: • urn: • wais: • xmpp:
Неофіційні
about:[en] • aim: • bolo: • btc: • bzr: • callto: • chrome: • cvs: • daap: • ed2k: • ed2kftp: • feed[en]: • fish: • git: • gizmoproject: • iax2: • irc: • ircs: • itms: • lastfm: • ldaps: • magnet: • mms: • msnim: • psyc: • rsync: • secondlife: • skype: • ssh: • svn: • sftp: • smb: • sms: • soldat: • steam: • unreal: • ut2004: • view-source[en]: • webcal: • xfire: • ymsgr: