NFS — что это, как настроить Network File System в Linux | Глоссарий FREEHOSTING

NFS

Network File System
NFS — NFS (Network File System) — сетевой протокол доступа к файлам, разработанный Sun Microsystems. Позволяет монтировать удалённый каталог так, будто он лежит на локальном диске. Используется в Linux- и Unix-инфраструктурах для общего хранилища, бэкапов и кластеров.

Определение простыми словами

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 заставит вернуть ошибку клиенту вместо зависания, но в таком режиме возможна потеря данных при кратких сбоях сети.