Клиенты не видят новый ресурс сетевой файловой системы
Список ресурсов читается службой при запуске и по команде перечитывания. Правка файла без перечитывания ничего не меняет, а клиент получает отказ доступа — сообщение, по которому трудно догадаться, что дело в непрочитанном файле.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Список ресурсов не перечитан
Служба держит прежний список. Новый ресурс для клиентов не существует.
-
Ресурс описан с ограничением по адресу, не включающим клиента
Описание задаёт, кому разрешён доступ. Клиент вне списка получает отказ.
-
Служба не перезапущена после смены версий протокола
Изменение включённых версий протокола требует перезапуска службы, а не только перечитывания списка.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Действующий список ресурсов с ограничениями.
sudo exportfs -vСообщения службы об обращениях клиентов.
sudo journalctl -u nfs-server -n 30 --no-pagerЧто видят клиенты в списке ресурсов.
showmount -e localhost 2>/dev/nullРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Служба держит прежний список. Новый ресурс для клиентов не существует.
- Как проверить
-
Посмотрите действующий список и файл описания.
sudo exportfs -v 2>/dev/null | head sudo grep -vE "^#|^$" /etc/exports 2>/dev/null
- Как исправить
-
Перечитайте список ресурсов штатной командой. Перезапуск службы для этого не нужен и обрывает работу клиентов.
sudo exportfs -ra
- Почему происходит
- Описание задаёт, кому разрешён доступ. Клиент вне списка получает отказ.
- Как проверить
-
Сравните адрес клиента и ограничение в описании.
sudo exportfs -v 2>/dev/null sudo journalctl -u nfs-server -n 20 --no-pager | grep -i "refused"
- Как исправить
- Расширьте ограничение до нужной сети. Разрешать доступ всем нельзя: сетевая файловая система доверяет клиенту в вопросах прав.
- Почему происходит
- Изменение включённых версий протокола требует перезапуска службы, а не только перечитывания списка.
- Как проверить
-
Посмотрите включённые версии.
sudo cat /proc/fs/nfsd/versions 2>/dev/null sudo grep -iE "^RPCNFSDOPTS|vers" /etc/nfs.conf /etc/default/nfs-kernel-server 2>/dev/null | head
- Как исправить
- Перезапустите службу после смены версий протокола, предупредив клиентов: их монтирования на это время оборвутся.
Пример вывода
Новый ресурс описан, но список не перечитан. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ sudo grep -v "^#" /etc/exports
/srv/share 10.0.0.0/24(rw,sync,no_subtree_check)
/srv/new 10.0.0.0/24(rw,sync,no_subtree_check)
$ sudo exportfs -v
/srv/share 10.0.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw)
rpc.mountd[12700]: refused mount request from 10.0.0.9 for /srv/new: not exported
Связанные ошибки
- Сетевой каталог подвисает: жёсткое монтирование NFS Обращение к каталогу NFS блокируется намертво: жёсткое монтирование без таймаутов. Как настроить устойчиво.
- NFS: Stale file handle Обращение к файлу на сетевом каталоге отказывает: устаревший идентификатор файла после переэкспорта.
- Приложение не перечитывает настройки по сигналу Перезагрузка настроек не применяет изменения: приложение не поддерживает сигнал или читает файл только при старте.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Docker: unable to configure the Docker daemon with file daemon.json Демон Docker не запускается из-за ошибки в /etc/docker/daemon.json: неверный JSON или неизвестный ключ.
Где встречается чаще всего
Источники
-
exports(5)
Описание ресурсов и ограничения по адресам. -
exportfs(8)
Перечитывание списка ресурсов без перезапуска службы. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено правкой описания без перечитывания списка.