С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Сетевая файловая система NFS

4 мин Ubuntu 24.04 · NFSv4

Сетевые каталоги по NFS — экспорт на сервере, монтирование на клиенте, права.

Шпаргалка

5 команд Версия для печати
  • сервер:
  • /etc/exports → /srv/share 10.0.0.0/24(rw,sync,no_subtree_check)
  • sudo exportfs -ra
  • sudo exportfs -v
  • клиент:
  • showmount -e сервер
  • sudo mount -t nfs -o vers=4.2 сервер:/srv/share /mnt
  • fstab: сервер:/path /mnt nfs defaults,_netdev,nofail 0 0
  • nc -zv сервер 2049 доступен ли NFS-порт

Обзор

NFS даёт доступ к каталогам сервера по сети как к локальным. Сервер экспортирует каталог, клиент его монтирует (mount). Распространён между Linux-машинами.

  • сервер: пакет nfs-kernel-server, экспорты в /etc/exports;
  • клиент: пакет nfs-common, монтирование через mount -t nfs.

Рецепты

2

Сервер

bash
sudo apt install nfs-kernel-server
sudo mkdir -p /srv/share

/etc/exports (по строке на экспорт): путь сеть(опции):

/srv/share   10.0.0.0/24(rw,sync,no_subtree_check)
/srv/ro      10.0.0.0/24(ro,sync,no_subtree_check)
/srv/admin   10.0.0.5(rw,sync,no_root_squash)   # доверять root клиента (осторожно!)
bash
sudo exportfs -ra                 # перечитать /etc/exports (-r) без рестарта
sudo exportfs -v                  # показать активные экспорты с опциями
sudo systemctl status nfs-server

Опции: rw/ro, sync (надёжно)/async (быстро), root_squash (root клиента → nobody, по умолчанию), no_subtree_check (рекомендуется).

Клиент

bash
sudo apt install nfs-common
showmount -e 10.0.0.1             # что экспортирует сервер
sudo mount -t nfs 10.0.0.1:/srv/share /mnt/share
sudo mount -t nfs -o vers=4.2 10.0.0.1:/srv/share /mnt/share   # явная версия
sudo mount -t nfs -o ro,soft,timeo=50 10.0.0.1:/srv/ro /mnt/ro

# постоянно — в /etc/fstab:
#   10.0.0.1:/srv/share  /mnt/share  nfs  defaults,_netdev,nofail  0  0
nfsstat -m                        # параметры смонтированных NFS

Неполадки

5

mount.nfs: access denied by server

IP клиента не подходит под маску в /etc/exports, или после правки не сделали exportfs -ra. Проверь showmount -e сервер и саму строку экспорта.

Права/владельцы «не те» на смонтированном

NFS сопоставляет по UID/GID — у клиента и сервера они должны совпадать (или настрой idmapping для NFSv4). root клиента по умолчанию «сжимается» в nobody (root_squash).

Connection timed out / mount висит

Файрвол или служба. NFSv4 — порт 2049/tcp. Проверь ss -tlnp на сервере и доступность порта: nc -zv сервер 2049.

Зависание процессов при недоступном сервере (D-состояние)

«Жёсткое» (hard, по умолчанию) монтирование вешает процессы намертво. Для некритичных данных — soft,timeo=50,retrans=2; в fstab добавляй _netdev,nofail.

Stale file handle

Экспорт пересоздали/ФС перемонтировали на сервере. Перемонтируй на клиенте (umount/mount), при необходимости с -o remount.

См. также

  • mount — Подключение файловых систем, постоянное монтирование через /etc/fstab, UUID.
  • firewall — Фильтрация трафика — простой ufw и низкоуровневый nftables.
  • permissions — Модель прав Unix — чтение/запись/исполнение, владелец/группа/другие, спецбиты.
Загрузка…