Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Що таке NFS: як працює мережева файлова система

NFS (Network File System) — це мережевий протокол і технологія, яка дозволяє підключати віддалені папки з одного сервера на інший через мережу так, ніби вони знаходяться на локальному диску вашого комп’ютера чи сервера. Завдяки NFS програми та користувачі можуть відкривати, редагувати й зберігати файли на віддаленому сховищі без необхідності вручну копіювати їх через мережеві утиліти.

Якщо говорити простими словами, що таке NFS у практичному IT-середовищі: це спосіб створити спільний дисковий простір для кількох машин. 

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

Як працює NFS 

В основі роботи протоколу лежить класична архітектура клієнт-сервер та механізм віддаленого виклику процедур — Remote Procedure Call.

Процес взаємодії виглядає так:

  1. Сервер обирає каталог на своєму локальному диску та робить його доступним для мережі (це називається експортом або шерингом папки). Також сервер задає правила — кому дозволено підключатися та які права є у клієнтів.
  2. Клієнт надсилає запит на підключення та монтує експортовану папку у свою файлову систему.
  3. Коли застосунок на клієнтській машині звертається до файлу в змонтованій папці, операційна система через RPC надсилає командний запит на NFS сервер. Сервер зчитує або записує дані на свій фізичний диск і повертає результат клієнту.

Історія версій NFS

З моменту створення в 1984 році протокол NFS пройшов довгий шлях розвитку. Хоча концепція віддаленого диска залишилася незмінною, механізми передачі даних, безпека та продуктивність суттєво трансформувалися.

Чому для нових проєктів варто обирати NFSv4

  1. Простота налаштування мережі: у версії NFSv3 підключення використовувало цілу низку додаткових сервісів (NLM, NSM, rpcbind), кожен з яких займав випадковий порт. Налаштувати фаєрвол для такої системи було справжнім головним болем. У NFSv4 усе комунікує через один порт 2049, що ідеально підходить для сучасних хмарних середовищ і корпоративних мереж.
  2. Безпека даних: NFSv3 довіряє UID/GID користувача, який той надсилає з клієнтської машини. У NFSv4 з’явився повноцінний механізм ідентифікації через Kerberos та шифрування трафіку.
  3. Паралельний доступ (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 пам’ятати про базові правила:

Якщо ви прагнете впевнено почуватися в командному рядку та навчитися розгортати мережеві сервіси з нуля — зверніть увагу на онлайн-курси з адміністрування Linux від ITEDU. Вони допоможуть системно розібратися з будовою ОС, протоколами та отримати готові хард скіли для роботи.

Exit mobile version