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

Дивись також ред.

Посилання ред.