Определение простыми словами
NFS превращает каталог на одном сервере в общий «диск» для всей сети: клиент монтирует его в собственное дерево файловой системы и работает с файлами привычными командами cp, vim, rsync. В отличие от FTP или SFTP, здесь нет ручной загрузки файлов — операции происходят прозрачно через системные вызовы. Это базовый инструмент для общего хранилища между несколькими VPS или физическими серверами.
Современная версия NFSv4 объединила функции старых демонов (mountd, lockd, nfsd) в один порт 2049, добавила поддержку ACL, делегирование клиентам и шифрование через Kerberos. Это упрощает прохождение через firewall и работу в смешанных сетях.
Сравнение
| Протокол | Целевая среда | Аутентификация | Особенность |
|---|---|---|---|
| NFS v3 | Unix/Linux | UID/GID, AUTH_SYS | UDP/TCP, отдельные демоны, stateless |
| NFS v4 / 4.1 / 4.2 | Unix/Linux | Kerberos (sec=krb5) | Один порт 2049, ACL, делегирование, pNFS |
| SMB / CIFS | Windows + Linux через Samba | NTLM, Kerberos | Богатая работа с правами Windows |
| SSHFS | Любая ОС с OpenSSH | Ключи SSH | Простая настройка, но медленнее |
Кейсы использования
- Веб-кластер из 3 нод монтирует общий каталог /var/www с NFS-сервера, чтобы код и медиа были одинаковыми на всех узлах.
- Хранилище бэкапов: один сервер экспортирует /backups, остальные пишут туда снимки баз.
- Lab-окружение Kubernetes использует NFS-провайдер как backend для PersistentVolume.
- Видеомонтаж в студии — рабочие станции открывают исходники с центрального NAS по NFS, минуя копирование на локальный диск.
- Негативный сценарий: NFS чувствителен к задержкам сети и не подходит для интернета без VPN — повисшие mount-ы могут заморозить процессы и потребовать жёсткой перезагрузки.
Технические детали
# Сторона сервера (Debian/Ubuntu)
apt install nfs-kernel-server
mkdir -p /srv/share
echo '/srv/share 10.0.0.0/24(rw,sync,no_subtree_check)' >> /etc/exports
exportfs -ra
systemctl enable --now nfs-server
# Сторона клиента
apt install nfs-common
mkdir -p /mnt/share
mount -t nfs4 10.0.0.10:/srv/share /mnt/share
# Постоянное монтирование через /etc/fstab
echo '10.0.0.10:/srv/share /mnt/share nfs4 _netdev,soft,timeo=30 0 0' >> /etc/fstab
mount -a
🔥 Где это применяется
Частые вопросы
NFS или SMB — что выбрать?
NFS логичнее в чистой Linux-инфраструктуре: лучше работает с правами Unix, ниже накладные расходы. SMB обязателен, если в сети есть Windows-клиенты или нужны ACL в стиле Windows. В смешанных сетях часто поднимают оба сервиса.
Безопасно ли использовать NFS через интернет?
Без дополнительной защиты — нет. NFSv3 не шифрует трафик и доверяет UID клиента. В публичной сети используйте NFSv4 с Kerberos (sec=krb5p) или туннелируйте трафик через WireGuard/IPsec.
Почему сервер виснет при отвалившемся NFS-mount?
По умолчанию mount работает в режиме hard — ядро бесконечно ждёт ответа сервера. Опция soft с timeo=30 заставит вернуть ошибку клиенту вместо зависания, но в таком режиме возможна потеря данных при кратких сбоях сети.