NFS (Network File System) — це мережевий протокол і технологія, яка дозволяє підключати віддалені папки з одного сервера на інший через мережу так, ніби вони знаходяться на локальному диску вашого комп’ютера чи сервера. Завдяки NFS програми та користувачі можуть відкривати, редагувати й зберігати файли на віддаленому сховищі без необхідності вручну копіювати їх через мережеві утиліти.
Якщо говорити простими словами, що таке NFS у практичному IT-середовищі: це спосіб створити спільний дисковий простір для кількох машин.
Наприклад, якщо у вас працює група з п’яти вебсерверів, їм усім потрібен одночасний доступ до однієї папки із завантаженими картинками користувачів. Замість того щоб дублювати ці файли на кожен сервер, ви створюєте один NFS сервер, а решта машин підключаються до нього як клієнти.
Як працює NFS
В основі роботи протоколу лежить класична архітектура клієнт-сервер та механізм віддаленого виклику процедур — Remote Procedure Call.
Процес взаємодії виглядає так:
- Сервер обирає каталог на своєму локальному диску та робить його доступним для мережі (це називається експортом або шерингом папки). Також сервер задає правила — кому дозволено підключатися та які права є у клієнтів.
- Клієнт надсилає запит на підключення та монтує експортовану папку у свою файлову систему.
- Коли застосунок на клієнтській машині звертається до файлу в змонтованій папці, операційна система через RPC надсилає командний запит на NFS сервер. Сервер зчитує або записує дані на свій фізичний диск і повертає результат клієнту.
Історія версій NFS
З моменту створення в 1984 році протокол NFS пройшов довгий шлях розвитку. Хоча концепція віддаленого диска залишилася незмінною, механізми передачі даних, безпека та продуктивність суттєво трансформувалися.
- NFSv2 (1989)
Перший широкодоступний стандарт (RFC 1094). Працював виключно через UDP і мав жорстке обмеження на розмір файлу — не більше 2 ГБ. - NFSv3 (1995)
Легендарна версія (RFC 1813), яка використовується в деяких локальних мережах і досі. Додала підтримку великих файлів, асинхронного запису та роботи через TCP. - NFSv4 (2003)
Глобальна переробка протоколу (RFC 3530). Відмова від допоміжних сервісів, перехід на єдиний порт, вбудована авторизація через Kerberos та підтримка списків доступу (ACL). - NFSv4.1 / NFSv4.2 (2010 – дотепер)
Сучасний стандарт (RFC 5661, RFC 7862). Додано технологію Parallel NFS для розподілу навантаження та покращено роботу з розрідженими файлами.
Чому для нових проєктів варто обирати NFSv4
- Простота налаштування мережі: у версії NFSv3 підключення використовувало цілу низку додаткових сервісів (NLM, NSM, rpcbind), кожен з яких займав випадковий порт. Налаштувати фаєрвол для такої системи було справжнім головним болем. У NFSv4 усе комунікує через один порт 2049, що ідеально підходить для сучасних хмарних середовищ і корпоративних мереж.
- Безпека даних: NFSv3 довіряє UID/GID користувача, який той надсилає з клієнтської машини. У NFSv4 з’явився повноцінний механізм ідентифікації через Kerberos та шифрування трафіку.
- Паралельний доступ (pNFS): у версіях 4.1+ з’явилася підтримка pNFS, яка дозволяє клієнтам читати та писати дані одночасно з кількох фізичних серверів сховища, знімаючи вузькі місця продуктивності.
Сценарії використання NFS
Вибір протоколу сховища завжди залежить від специфіки вашого навантаження. Мережева файлова система NFS створювалася для забезпечення швидкого спільного доступу до файлових структур, проте вона не є універсальним рішенням для абсолютно всіх завдань.
| Спільні ресурси для вебсерверів | Висока | Ідеально для збереження медіафайлів, до яких потрібен одночасний доступ кількох вузлів балансувальника на читання й запис. |
| Сховище для Kubernetes (PV/PVC) | Висока | Одне з найпопулярніших рішень для забезпечення режиму доступу ReadWriteMany, коли багатьом подам потрібен спільний каталог. |
| Централізовані бекапи та логи | Висока | Зручний спосіб скидати дампи баз даних, архіви та системні логи з багатьох серверів на один потужний NFS сервер. |
| Високонавантажені бази даних (PostgreSQL, MySQL) | Низька | Мережева затримка та особливості блокування файлів суттєво знижують кількість IOPS. Для транзакційних БД краще обирати блокове сховище. |
| Передача файлів через відкритий інтернет | Низька | За відсутності шифрування трафік передається у відкритому вигляді. NFS призначений для локальних або ізольованих мереж. |
Порівняння NFS з альтернативними технологіями
Щоб краще зрозуміти місце NFS у сучасній інфраструктурі, порівняємо його з іншими популярними протоколами збереження даних:
NFS проти SMB / CIFS
Головна відмінність між цими протоколами полягає в екосистемі та обробці прав доступу. SMB (Server Message Block) — це стандарт для екосистеми Windows, який інтегрується з Active Directory та списковим розмежуванням доступу.
NFS розроблявся під Unix-подібні системи. Він працює з нативними POSIX-правами доступу і символьними посиланнями з мінімальними накладними витратами. Для інфраструктури, яка складається виключно з серверів Linux, NFS є більш природним і продуктивним вибором.
NFS проти iSCSI
Різниця між NFS та iSCSI полягає в рівні абстракції. Протокол iSCSI надає клієнту блоковий пристрій — неформатований віртуальний диск. ОС клієнта самостійно створює на ньому файлову систему, але підключити такий диск без спеціальних кластерних ФС можна лише до одного сервера.
Натомість NFS сервер надає доступ до вже сформованої файлової системи на рівні каталогів. Це дозволяє організувати спільний доступ на читання та запис для десятків клієнтських машин одночасно.
NFS проти S3 та об’єктних сховищ
Об’єктні сховища працюють через HTTP API за допомогою методів GET, PUT та DELETE. Для роботи з ними необхідно додавати відповідні бібліотеки (SDK) безпосередньо в код застосунку.
NFS виграє у простоті інтеграції з існуючим софтом. Папка монтується в операційну систему, і застосунки працюють із нею як з локальним диском за стандартними шляхами файлової системи, не вимагаючи змін у коді.
Покрокова інструкція з налаштування NFS
Розглянемо практичний процес конфігурації: розгорнемо сервер сховища та підключимо його каталог до клієнтської машини в мережі.
Крок 1. Налаштування NFS-сервера
Спочатку оновіть списки пакетів та встановіть серверний пакет:
sudo apt update
sudo apt install nfs-kernel-server -y
Створіть каталог, яким будете ділитися через мережу, та змініть його власника на системного анонімного користувача:
sudo mkdir -p /var/nfs/shared
sudo chown nobody:nogroup /var/nfs/shared
Відкрийте конфігураційний файл /etc/exports для налаштування правил доступу:
sudo nano /etc/exports
Додайте рядок з IP-адресою вашого клієнта (наприклад, 192.168.1.50) та потрібними параметрами:
/var/nfs/shared 192.168.1.50(rw,sync,no_subtree_check)
Застосуйте нову конфігурацію та перезапустіть службу:
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
Крок 2. Налаштування NFS-клієнта
Встановіть мінімальний набір клієнтських утиліт:
sudo apt update
sudo apt install nfs-common -y
Створіть локальну точку монтування та підключіть віддалений каталог (де 192.168.1.10 — IP-адреса NFS-сервера):
sudo mkdir -p /mnt/shared
sudo mount 192.168.1.10:/var/nfs/shared /mnt/shared
Перевірте, чи коректно змонтувалася мережева файлова система:
df -h /mnt/shared
Для верифікації запису створіть тестовий файл у монтованій папці за допомогою команди touch /mnt/shared/test.txt та перевірте його наявність на сервері.
Крок 3. Автоматичне монтування при завантаженні системи
Щоб зв’язок не зникав після перезавантаження клієнтського сервера, віддалений каталог потрібно зафіксувати в системному файлі /etc/fstab.
Відкрийте файл /etc/fstab на клієнті та додайте в кінець наступну конфігурацію:
192.168.1.10:/var/nfs/shared /mnt/shared nfs defaults,_netdev 0 0
Примітка: параметр _netdev є критично важливим — він вказує операційній системі відкласти моунтинг каталогу до моменту, поки мережевий інтерфейс не буде повністю піднятий та активний.
Висновки
Головне при розгортанні NFS пам’ятати про базові правила:
- обирати сучасніший та захищеніший протокол NFSv4;
- працювати лише всередині приватних мереж та закривати порт 2049 фаєрволом;
- не використовувати NFS для високонавантажених баз даних через мережеві затримки.
Якщо ви прагнете впевнено почуватися в командному рядку та навчитися розгортати мережеві сервіси з нуля — зверніть увагу на онлайн-курси з адміністрування Linux від ITEDU. Вони допоможуть системно розібратися з будовою ОС, протоколами та отримати готові хард скіли для роботи.

