Дата публикации: 27 апреля 2026 г.
Ниже приведён подробный гайд по «рун-тюнингу» (runtime tuning) NFS-сервера и клиента в Ubuntu 18.04/20.04/22.04 и выше.
Мы разберёмся, почему может падать nfs-mountd.service, как избежать ошибок «failed», а также как выжать максимальную скорость и стабильность из вашей NFS-сети.
Оглавление
- Почему падает nfs-mountd.service и что делать
- Быстрая диагностика
- Рун-тюнинг: параметры rpc, mountd и ядра
- Продвинутое конфигурирование /etc/exports
- Оптимизация на стороне клиента
- Автозапуск и юниты systemd
- Чек-лист по устранению ошибок
Почему падает nfs-mountd.service и что делать
Сервис nfs-mountd.service является частью пакета nfs-kernel-server. Он отвечает за обработку
запросов mount от клиентов. Ошибка «nfs-mountd.service failed» обычно возникает по одной из причин:
- Не запущен rpcbind (NFS зависит от RPC-портов).
- Порт, который пытается занять rpc.mountd, уже используется (конфликт).
- Ошибки в /etc/exports (синтаксис, несуществующие директории).
- Файл /var/lib/nfs/etab повреждён или имеет неправильные права.
- SELinux/AppArmor блокирует доступ (редко в Ubuntu, но возможно).
Быстрая диагностика
2.1 Проверяем статус сервисов
sudo systemctl status rpcbind
sudo systemctl status nfs-kernel-server
sudo systemctl status nfs-mountd.service
2.2 Смотрим логи
sudo journalctl -u nfs-mountd.service -n 50
sudo journalctl -u nfs-kernel-server -n 50
2.3 Проверяем доступность экспортов
sudo exportfs -rav # перезагружаем экспорты
showmount -e localhost
Рун-тюнинг: параметры rpc, mountd и ядра
«Рун-тюнинг» — это изменение параметров «на лету», без перезагрузки. Ниже приведены ключевые параметры.
3.1 Переменные /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="--manage-gids --port 4002 --num-threads 16"
NFSDOPTS="-N 2 -N 3 -V 4.2"
- —port 4002, фиксируем порт mountd, чтобы не было коллизий.
- —num-threads 16 — увеличиваем потоки mountd (актуально при >100 клиентов).
- -N 2 -N 3 -V 4.2, отключаем NFSv2/v3, оставляем только NFSv4.2.
3;2 Настройка sysctl (высокая пропускная способность)
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
sunrpc.tcp_slot_table_entries = 128
sunrpc.udp_slot_table_entries = 128
Применяем:
sudo sysctl -p /etc/sysctl.d/99-nfs-tuning.conf 3.3 Параметры модуля nfsd
echo 128 | sudo tee /sys/module/nfsd/parameters/max_block_size
echo 32768 | sudo tee /proc/sys/fs/nfsd/max_block_size
Продвинутое конфигурирование /etc/exports
4.1 Базовый пример
/srv/nfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
4.2 Экспорт с тюнингом для высокой нагрузки
/srv/cephfs 10.0.0.0/8(rw,sync,no_subtree_check,no_root_squash,insecure,fsid=1,nohide,crossmnt)
- fsid=1 — нужен для корневой точки экспорта.
- nohide + crossmnt — прозрачный экспорт подмонтированных томов (например, CephFS).
Оптимизация на стороне клиента
5.1 Монтирование с оптимальными опциями
sudo mount -t nfs4 -o vers=4.2,proto=tcp,hard,intr,rsize=1048576,wsize=1048576,timeo=600,retrans=2
192.168.1.10:/srv/nfs /mnt/nfs
- vers=4.2, последняя стабильная версия.
- rsize/wsize=1M — увеличение размеров пакетов.
- hard,intr, «жёсткое» монтирование, но с возможностью прерывания.
5.2 fstab для постоянного монтирования
192.168.1.10:/srv/nfs /mnt/nfs nfs4 _netdev,vers=4.2,proto=tcp,rsize=1048576,wsize=1048576,timeo=600 0 0
Автозапуск и юниты systemd
В Ubuntu 18.04+ юниты nfs-server.service и nfs-mountd.service зависят от rpcbind.service.
При изменении конфигурации лучше перезапускать всю цепочку:
sudo systemctl restart rpcbind
sudo systemctl restart nfs-kernel-server
sudo systemctl restart nfs-mountd.service
6.1 Включаем автозапуск
sudo systemctl enable rpcbind nfs-kernel-server nfs-mountd
Чек-лист по устранению ошибок
- Всегда запускайте rpcbind до nfs-kernel-server.
- Проверьте, что порты rpc.mountd и rpc.nfsd указаны в /etc/services или зафиксированы в /etc/default/nfs-kernel-server.
- Убедитесь, что каталоги из /etc/exports реально существуют и доступны.
- Очистите кэши и перезапустите:
sudo exportfs -fav && sudo systemctl restart nfs-kernel-server - Проверьте файрвол (UFW):
sudo ufw allow from 192.168.1.0/24 to any port 2049 sudo ufw allow from 192.168.1.0/24 to any port 4002 - Используйте tcpdump или Wireshark для анализа трафика, если клиент не может подключиться.
Следуя вышеописанным шагам, вы не только избавитесь от ошибок nfs-mountd.service failed,
но и добьётесь стабильной высокой производительности NFS в сетях до 10 GbE и выше.
Ключевые правила: фиксируйте порты, тюните sysctl, используйте NFSv4.2 и отключайте устаревшие версии протокола.
Дополнительно: если ваше хранилище основано на CephFS, то экспорт его через NFS-Ganesha
даст ещё более гибкие сценарии, но это тема отдельной статьи.