Сервер NFS в systemd: почему не поднимается
Сервер NFS зависит от нескольких вспомогательных служб и от файла описания ресурсов. Отказы обычно связаны с ошибкой в этом файле, отсутствием экспортируемого каталога или неработающими зависимостями.
О службе
Файл /etc/exports описывает, какие каталоги отдаются и кому. Проверяется он командой применения: она печатает предупреждения о несуществующих каталогах и неверных параметрах. Каталог обязан существовать: сервер не создаёт его сам.
Служба сервера работает в связке с несколькими вспомогательными: сопоставление портов, обслуживание блокировок, отображение имён. Их состояния стоит смотреть вместе — отказ любой ломает обслуживание клиентов.
Как устроена
| Файл описания ресурсов | /etc/exports; применение — exportfs -ra |
|---|---|
| Связанные unit | nfs-server.service, nfs-mountd.service, rpcbind.service, nfs-idmapd.service |
| Проверка отдаваемых каталогов | exportfs -v |
| Порты | 2049 для NFSv4; для NFSv3 дополнительно нужен сопоставитель портов |
Частые ошибки
7 записей базы отмечены за этой службой.
Коды выхода
- status=1/FAILURE в systemdКод 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
Зависимости и порядок
- Dependency failed for … и результат 'dependency'Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
Сообщения журнала
- No such file or directory в журнале службыСлужба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.
- Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- Connection refused в журнале службыСоединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
Ошибки служб
- NFS: Stale file handleОбращение к файлу на сетевом каталоге отказывает: устаревший идентификатор файла после переэкспорта.
- Клиенты не видят новый ресурс сетевой файловой системыОписание ресурсов правлено, клиенты получают отказ: список не перечитан или ресурс описан неверно.
Коды выхода этой службы
Числа в status=N ниже 200 назначает сама программа, 200 и выше — systemd, когда не смог подготовить запуск.
| status | Что означает у этой службы | Куда смотреть |
|---|---|---|
1/FAILURE |
ошибка в описании ресурсов или неработающая зависимость. | разбор |
Диагностика
Что сервер фактически отдаёт и с какими параметрами.
sudo exportfs -vПрименение описания ресурсов: печатает предупреждения об ошибках.
sudo exportfs -raСостояния всей связки служб.
systemctl status nfs-server rpcbind nfs-mountd --no-pager | head -20Слушает ли сервер свой порт.
sudo ss -tlnp | grep 2049Параметры unit, которые тут важны
- RequiresMountsFor=экспортируемые каталоги на отдельных разделах требуют зависимости
- After=порядок относительно вспомогательных служб
- ExecReload=применение нового описания ресурсов без перезапуска
Источники
- exports(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)