Вики / Хранилище и ФС
NFS (сетевая ФС)
Сетевые каталоги по NFS — экспорт на сервере, монтирование на клиенте, права.
NFS даёт доступ к каталогам сервера по сети как к локальным. Сервер экспортирует каталог, клиент его монтирует (mount). Распространён между Linux-машинами.
- сервер: пакет
nfs-kernel-server, экспорты в/etc/exports; - клиент: пакет
nfs-common, монтирование черезmount -t nfs.
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 клиента (осторожно!)
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 (рекомендуется).
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
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.
# сервер:
# /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-порт
См. также
- Файрвол (nftables / ufw) — Сеть
- Права доступа (rwx, SUID, sticky) — Пользователи и права
- Монтирование и fstab — Хранилище и ФС